/* reset */
#contents section {
  padding: 0;
}

:root {
  --typo-fz-xxs: 10px;
  --typo-fz-xs: 12px;
  --typo-fz-sm: 14px;
  --typo-fz-md: 16px;
  --typo-fz-lg: 18px;
  --typo-fz-xl: 20px;
  --typo-fz-xxl: 24px;
  --typo-fz-3xl: 32px;
  --typo-fz-4xl: 40px;
  --typo-fz-5xl: 42px;
  --typo-fz-6xl: 56px;
}

.sec-large {
  padding: 80px 0;
}

.sec-medium {
  padding: 64px 0;
}

.sec-small {
  padding: 40px 0;
}

.mt-40 {
  margin-top: 40px;
}

.mt-24 {
  margin-top: 24px;
}

.heading {
  line-height: 1.4;
  font-weight: 700;
  text-align: center;
  margin-bottom: 0;

  span.br {
    display: inline-block;
  }

  &._h2 {
    font-size: var(--typo-fz-4xl);
  }

  &._h3 {
    font-size: var(--typo-fz-xxl);
  }

  @media screen and (max-width:640px) {
    &._h2 {
      font-size: var(--typo-fz-xxl);
    }

    &._h3 {
      font-size: var(--typo-fz-lg);
    }
  }
}

.list {
  padding-left: 1.5rem;
  margin-bottom: 0;

  li {
    list-style-type: disc;
  }
}

.lead {
  font-size: var(--typo-fz-xxl);
  line-height: 1.4;
  text-align: center;
  margin-bottom: 0;

  @media screen and (max-width:640px) {
    font-size: var(--typo-fz-lg);
  }
}

.card-wrap {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;

  @media screen and (max-width:640px) {
    grid-template-columns: repeat(1, 1fr);
  }
}

.card {
  background-color: #fff;
  padding: 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  row-gap: 16px;
  margin-bottom: 0;

  h3 {
    font-weight: 700;
    line-height: 1;
    color: #0F319280;
    text-align: center;
    display: grid;
    row-gap: 8px;
    margin-bottom: 0;

    span {
      font-size: var(--typo-fz-xl);
      color: #333333;
      display: block;
    }
  }
}

.kv {
  background-image: url(img/kv-bg_pc.png);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  position: relative;

  .kv-inner {
    padding: 40px .6rem 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    row-gap: 24px;

    .kv-logo {
      position: absolute;
      top: 0;
      right: 0;
      width: 152px;
      height: auto;
    }

    h1 {
      display: flex;
      flex-direction: column;
      align-items: center;
      row-gap: 40px;

      >img {
        width: 100%;
        max-width: 466px;
        height: auto;

        +img {
          width: 100%;
          max-width: 1079px;
          height: auto;
        }
      }
    }

    .kv-comment {
      font-size: var(--typo-fz-sm);
      color: #fff;
      line-height: 1.4;
      text-align: center;
    }

  }

  @media screen and (max-width:640px) {
    background-image: url(img/kv-bg_sp.png);

    .kv-inner {
      .kv-logo {
        display: none;
      }

      h1 {
        row-gap: 25px;
      }
    }
  }
}