@charset "UTF-8";
/* ==============================================================
*  reset
* ============================================================ */
*,::before,::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
:where(html) {
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
}
:where(p, h1, h2, h3, h4, h5, h6) {
  overflow-wrap: break-word;
}
:where(a) {
  text-decoration: none;
}
:where(svg, video, canvas, audio, iframe, embed, object) {
	display: block;
}
:where(img, svg, video) {
  block-size: auto;
  max-inline-size: 100%;
  vertical-align: bottom;
}
:where(svg) {
  fill: currentColor;
  stroke: none;
}
:where(ul, ol) {
  list-style: none;
}
:where(table) {
  border-collapse: collapse;
}
:where(hr) {
  block-size: 0;
  border: none;
  border-block-start: 1px solid;
  color: inherit;
  overflow: visible;
}
:where(input) {
  border-radius: 0;
}
:where(input[type="text"], textarea) {
  padding: 0 2px;
}
:where(button, label, select, summary) {
  cursor: pointer;
}
:where(button, input, textarea, select) {
  border: 1px solid;
  font: inherit;
}
:where(button) {
  padding: 0;
  border: none;
  outline: none;
  background-color: transparent;
  appearance: none;
}
:where(textarea) {
  overflow: auto;
  resize: vertical;
  user-select: auto;
}
:where([disabled]) {
  cursor: default;
}
:where([hidden]) {
  display: none;
}

/* ==============================================================
*  base
* ============================================================ */
:root {
  --bg-black: #141529;
  --txt-color-white: #F0F0F0;
  --txt-color-white2: #C0C0C0;
  --txt-color-black: #303030;
  --txt-color-black2: #707070;
  --header-height-pc: 80px;
  --contents-width: 1120px;
}

html {
  line-height: 1.5;
  box-sizing: border-box;
}

body {
  color: var(--txt-color-main);
  font-family: "Noto Sans JP", "游ゴシック", YuGothic, "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  -webkit-font-smoothing: subpixel-antialiased;
  -moz-osx-font-smoothing: auto;
  font-kerning: normal;
  font-size: 16px;
}
@media screen and (width <= 768px) {
  body {
    font-size: 4.26vw,16px;
  }
}


/* ==============================================================
*  common
* ============================================================ */
/* ---------- header ---------- */
.header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1;
}

.header-inner {
  position: relative;
  padding: 24px 22px 10px;
}
@media screen and (width <= 768px) {
  .header-inner {
  }
}

.header-logo {
  display: flex;
  align-items: center;
  line-height: 1;
}
@media screen and (width <= 768px) {
  .header-logo {
    font-size: 1px;
    line-height: 1;
    width: min(75%, 256px);
  }
}


/* ---------- container ---------- */
.container {}

.main {}


/* ---------- section common ---------- */
.section {}

.section-inner {
  width: 100%;
  max-width: var(--contents-width);
  margin: 0 auto;
  padding: 0 20px;
}
@media screen and (width <= 768px) {
  .section-inner {
    padding: 0 4vw;
  }
}


/* ---------- Main Visual ---------- */
.kv {
  height: 100dvh;
  padding: 50px 0;
  background: url(../img/bg_kv.webp) no-repeat center right/cover #141529;
  display: flex;
  align-items: center;
}
@media screen and (width <= 768px) {
  .kv {
    position: relative;
    aspect-ratio: 15 / 36;
    height: auto;
    padding-bottom: 0;
    background-image: url(../img/bg_kv_sp.webp);
    display: block;
  }
}

.kv-inner {
  width: 100%;
}

.kv-ttl {
  & h1 {
  }
  & p.kv-en {
    padding: 40px 0 95px max(calc(20px + 70px), calc(50% - 540px - 11vw + 70px));
    line-height: 1.4;
    & span {
      position: relative;
      display: inline-block;
      &::after {
        position: absolute;
        content: "";
        bottom: 0;
        left: 0;
        width: 0;
        height: 5px;
        background-color: #fff;
        transition: all .9s .3s;
      }
    }
  }
}
@media screen and (width <= 1120px) {
  .kv-ttl {
    & p.kv-en {
      padding: 4vw 4vw 8vw;
    }
  }
}

.kv.is-animated p.kv-en {
  & span::after {
    width: 100%;
  }
}


@media screen and (width <= 768px) {
  .kv-ttl {
    margin-top: 6vw;
  }
}


.kv-jp {
  color: var(--txt-color-white);
  font-size: 28px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.025em;
  & > span {
    position: relative;
    z-index: 1;
    display: inline-block;
    /* padding: 16px 30px 16px max(20px, calc(50% - 540px)); */
    padding: 16px 30px 16px 70px;
    margin-left: max(20px, calc(50% - 540px - 11vw));
    &::before {
      background: transparent linear-gradient(270deg, #283769 0%, #141C35 85%, #121327 100%);
      position: absolute;
      top: 0;
      left: 0;
      z-index: -1;
      width: 100%;
      height: 100%;
      clip-path: inset(0 100% 0 0);
      transition: clip-path .6s cubic-bezier(0.37, 0, 0.63, 1);
      content: "";
    }
    & span {
      display: inline-block;
      clip-path: inset(0 100% 0 0);
      transition: clip-path .6s cubic-bezier(0.37, 0, 0.63, 1);
      transition-delay: .6s;
    }
  }
}
@media screen and (width <= 1120px) {
  .kv-jp {
    & > span {
      padding-left: 4vw;
      margin-left: 0;
    }
  }
}
@media screen and (width <= 768px) {
  .kv-jp {
    font-size: 5.06vw;
    & > span {
      padding: 4vw 8vw 4vw 4vw;
      margin-left: 0;
    }
  }
}

.kv.is-animated .kv-jp {
  & > span {
    &::before {
      clip-path: inset(0);
    }
    & span {
      clip-path: inset(0);
    }
  }
}

.kv-inner .intro-ttl.barSlideIn {
  & > span {
    &:nth-of-type(1) {
      &::before {
        transition-delay: .3s;
      }
      & span {
        transition-delay: .9s;
      }
    }
    &:nth-of-type(2) {
      &::before {
        transition-delay: .6s;
      }
      & span {
        transition-delay: .9s;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .kv-inner .intro-ttl.barSlideIn {
    position: absolute;
    bottom: 0;
    left: 0;
  }
}



/* ---------- intro section ---------- */
.intro {
  position: relative;
  padding: 70px 0 135px;
  background-color: #141529;
}
@media screen and (width <= 768px) {
  .intro {
    padding: 8vw 0 0;
    padding-bottom: 0;
  }
  .introBox01Wrap {
    padding-bottom: 20vw;
  }
}

.intro-ttl {
  color: var(--txt-color-white);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.025em;
  & > span {
    /* padding: 13px 50px 13px max(20px,calc(50% - 540px)); */
    padding: 13px 70px;
    margin-left: max(20px,calc(50% - 540px - 11vw));
    &::before {
      background: transparent linear-gradient(270deg, #283769 0%, #141C35 85%, #121327 100%);
    }
  }
  div + & {
    margin-top: 95px;
  }
}
.section.intro .intro-ttl {
  & > span {
    margin-left: max(20px,calc(50% - 540px - 70px));
    &::before {
      background: transparent linear-gradient(270deg, #283769 0%, #141C35 85%, #141529 100%);
    }
  }
}
@media screen and (width <= 1120px) {
  .intro-ttl,
  .section.intro .intro-ttl {
    & > span {
      padding-left: 4vw;
      margin-left: 0;
    }
  }
}
@media screen and (width <= 768px) {
  .intro-ttl {
    font-size: 4.8vw;
    & > span {
      padding: 4vw 8vw 4vw 4vw;
      margin-left: 0;
    }
  }
  .intro-ttl2 {
    font-size: 4.1vw;
    & > span {
      padding-right: 2vw;
    }
  }
}

#introBox01 {
  display: flex;
  gap: 63px;
}
@media screen and (width <= 1120px) {
  #introBox01 {
    gap: 4vw;
  }
}
@media screen and (width <= 768px) {
  #introBox01 {
    flex-direction: column;
    gap: 8vw;
  }
}

.introBox01-img {
  display: flex;
  gap: 14px;
  & img {
    border-radius: 3px;
    box-shadow: 0 0 10px rgba(0,0,0,.4);
  }
}
@media screen and (width <= 1120px) {
  .introBox01-img {
    width: 60%;
  }
}
@media screen and (width <= 768px) {
  .introBox01-img {
    width: 100%;
    gap: 1.5vw;
    & img {
      width: 100%;
    }
  }
}

.introBox01-txt {
  align-self: center;
  & p {
    color: var(--txt-color-white);
    font-size: 16px;
    font-weight: 400;
    line-height: 2;
    & + p {
      margin-top: 1em;
    }
  }
}
@media screen and (width <= 1120px) {
  .introBox01-txt {
    width: calc(40% - 4vw);
  }
}
@media screen and (width <= 768px) {
  .introBox01-txt {
    font-size: 4.26vw;
    width: 100%;
    & p {
      font-size: 4.26vw;
    }
    & br {
      display: none;
    }
  }
}

.introBox02Wrap {
  position: relative;
  z-index: 5;
}

#introBox02 {
  display: flex;
  margin-top: 15px;
  & > div {
    width: calc(50% + 20px);
  }
  & span {
    display: inline-block;
  }
}
@media screen and (width <= 1120px) {
  #introBox02 {
    & > div {
      align-self: center;
    }
  }
}
@media screen and (width <= 768px) {
  #introBox02 {
    flex-direction: column;
    margin-top: 8vw;
    & > div {
      width: 100%;
    }
    & span {
      display: block;
    }
  }
}

.introBox02-img {
  margin-left: -20px;
  & img {
    border-radius: 6px;
    box-shadow: 0 3px 20px rgba(0,0,0,.92);
  }
}
@media screen and (width <= 768px) {
  .introBox02-img {
    margin-left: 0;
    margin-top: 24vw;
    & img {
      width: 100%;
    }
  }
}

.introBox02-txt {
  position: relative;
  z-index: 1;
  align-self: center;
  margin-right: -20px;
  padding: 60px 60px 55px 0;
  background-color: var(--bg-black);
  & p {
    color: var(--txt-color-white);
    font-size: 16px;
    font-weight: 400;
    line-height: 2;
    & + p {
      margin-top: 1em;
    }
  }
}
@media screen and (width <= 1120px) {
  .introBox02-txt {
    padding: 4vw;
    padding-left: 0;
  }
}
@media screen and (width <= 768px) {
  .introBox02-txt {
    margin-right: 0;
    padding: 0;
    & p {
      font-size: 4.26vw;
    }
  }
}

.intro-notice {
  margin-top: 15px;
  color: var(--txt-color-white);
  font-size: 11px;
  font-weight: 400;
  line-height: 2.54;
}
@media screen and (width <= 768px) {
  .intro-notice {
    margin-top: 8vw;
    font-size: 2.93vw;
    line-height: 1.5;
  }
}

.pageNavBox {
  margin-top: -60px;
}
@media screen and (width <= 768px) {
  .pageNavBox {
    position: static;
    translate: 0;
    margin-top: 0;
  }
}

.pageNavBox-ttl {
  margin-bottom: -96px;
  text-align: center;
  & h2 {
    filter: drop-shadow(0 0 40px #00000066);
    translate: 0 30px;
    opacity: 0;
    transition: all 1s 1s ease-out;
    &.is-animated {
      opacity: 1;
      translate: 0 0;
    }
    & img {
      margin: 56px 0 48px;
      filter: drop-shadow(0 0 40px #00000066);
      -webkit-filter: drop-shadow(0 0 49px #00000066);
    }
  }
  & p {
    color: var(--txt-color-white);
    font-size: 20px;
    font-weight: 600;
    letter-spacing: 0.025em;
    line-height: 1;
  }
}
@media screen and (width <= 1120px) {
  .pageNavBox-ttl {
    margin-bottom: -9vw;
    & h2 {
      & img {
        width: 75%;
        margin: 6vw 1vw 4vw;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .pageNavBox-ttl {
    margin-bottom: 0;
    & h2 {
      & img {
        width: 100%;
        margin: 1vw 0 12vw;
      }
    }
    & p {
      font-size: 4.8vw;
    }
  }
}

.pageNav {
  padding: 120px 65px 60px;
  background-color: #21213C;
  box-shadow: 0 0 5px #00000080;
  & ul {
    display: grid;
    gap: 50px;
    grid-template-columns: repeat(3,1fr);
  }
  & dl {
    position: relative;
    display: grid;
    gap: 20px;
    grid-template-areas: 'a' 'b' 'c';
    padding-bottom: 30px;
    &::after {
      position: absolute;
      bottom: 0;
      left: 50%;
      rotate: 45deg;
      translate: -50% 0;
      transform-origin: right bottom;
      width: 15px;
      height: auto;
      aspect-ratio: 1;
      border-right: 1px solid #FFF;
      border-bottom: 1px solid #FFF;
      content: "";
    }
  }
  & dt {
    grid-area: b;
    color: var(--txt-color-white);
    font-size: 20px;
    font-weight: 600;
    line-height: 1.55;
    text-align: center;
  }
  & dd:nth-child(2) {
    grid-area: a;
    width: 150px;
    height: auto;
    aspect-ratio: 1;
    margin: 0 auto;
    background-color: #8FC33C;
    border-radius: 50%;
  }
  & dd:nth-child(3) {
    grid-area: c;
    color: var(--txt-color-white);
    font-size: 16px;
    font-weight: 400;
    letter-spacing: 0.015em;
    line-height: 1.85;
  }
}
@media screen and (width <= 1120px) {
  .pageNav {
    padding: 12vw 4vw 6vw 4vw;
    & ul {
      gap: 4vw;
    }
  }
}
@media screen and (width <= 768px) {
  .pageNav {
    padding-right: 0;
    padding-left: 0;
    padding: 10.66vw 0 12vw 0;
    background-color: transparent;
    box-shadow: none;
    & ul {
      grid-template-columns: 100%;
      gap: 12vw;
    }
    & dl {
      gap: 5.33vw 6vw;
      grid-template-areas:
      'a b'
      'a c';
      grid-template-columns: 22.66vw 1fr;
    }
    & dt {
      font-size: 4.26vw;
      text-align: left;
    }
    & dd:nth-child(2) {
      align-self: center;
      width: 100%;
      & img {
        width: 100%;
      }
    }
    & dd:nth-child(3) {
      font-size: 3.73vw;
    }
  }
}

/* ---------- feature section common ---------- */
.feature01,
.feature02,
.feature03 {
  position: relative;
  z-index: 1;
  padding: 90px 0 100px;
  background: linear-gradient(180deg, #F0F0F0 0%, #FFFFFF 51%, #E0E0E0 100%);
}
@media screen and (width <= 1120px) {
  .feature01,.feature02,.feature03 {
    padding: 8vw 0 9vw;
  }
}
@media screen and (width <= 768px) {
  .feature01 {
    padding-top: 13.33vw;
    padding-bottom: 17.33vw;
  }
}

@media screen and (width <= 768px) {
  .feature02 {
    padding-top: 13.33vw;
    padding-bottom: 13.33vw;
  }
}

@media screen and (width <= 768px) {
  .feature03 {
    padding-top: 13.33vw;
    padding-bottom: 26.13vw;
  }
}

.featureBg {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  overflow: hidden;
  z-index: -1;
  background-size: contain;
  background-position: 50%;
  background-repeat: no-repeat;
  background-image: url(../img/bg_feature01_diag.svg);
  .feature01 & {
    background-position: calc(50% + 15px) 50%;
  }
  .feature02 & {
    background-position: calc(50% + 613px) 50%;
  }
}
@media screen and (width <= 1540px) {
  .featureBg {
    background-size: cover;
    .feature02 & {
      background-size: contain;
    }
  }
}
@media screen and (width <= 768px) {
  .featureBg {
    display: none;
  }
}

.featureBox-icn {
  align-self: center;
  & span {
    position: relative;
    &::before {
      content: "";
      position: absolute;
      bottom: -45px;
      left: calc(50% - 100px);
      width: 200px;
      height: 48px;
      border-radius: 50%;
      background-color: #0000004D;
      filter: blur(20px);
      z-index: -1;
    }
    &::after {
      content: "";
      position: absolute;
      bottom: -30px;
      left: calc(50% - 50px);
      width: 100px;
      height: 12px;
      border-radius: 50%;
      background-color: #000000CC;
      filter: blur(15px);
      z-index: -1;
    }
  }
}
@media screen and (width <= 768px) {
  .featureBox-icn {
    width: 53.33vw;
    margin: 0 auto;
    padding-bottom: 18vw;
    & span {
      display: block !important;
      & img {
        width: 100%;
      }
    }
  }
}

.function {
  display: grid;
  gap: 20px;
  grid-template-columns: 70px minmax(auto,600px);
  align-items: center;
}
@media screen and (width <= 768px) {
  .function {
    margin-top: 6.66vw;
    gap: 5.33vw;
    grid-template-columns: 18.66vw 1fr;
    & img {
      width: 100%;
    }
  }
}

.function-txt {
  font-size: 14px;
  line-height: 1.7;
  color: var(--txt-color-black);
  align-self: center;
}
@media screen and (width <= 768px) {
  .function-txt {
    width: 100%;
    & p {
      font-size: 3.73vw;
    }
  }
}

/* ---------- feature01 section ---------- */
.feature01Box {
  display: grid;
  gap: 74px;
  grid-template-columns: 320px 1fr;
}
@media screen and (width <= 1120px) {
  .feature01Box {
    gap: 5vw;
    grid-template-columns: 30vw 1fr;
  }
}
@media screen and (width <= 768px) {
  .feature01Box {
    gap: 0;
    grid-template-columns: 100%;
  }
}

.feature01Box-img {
  margin-top: 45px;
}
@media screen and (width <= 768px) {
  .feature01Box-img {
    margin-top: 16vw;
  }
}

.feature01Box-img-sp {
  display: none;
}
@media screen and (width <= 768px) {
  .feature01Box-img-sp {
    display: block;
    margin-top: 8vw;
    & img {
      width: 100%;
    }
  }
}


.feature01Box-contents {
  & h2 {
    font-size: 30px;
    font-weight: 600;
    line-height: 1.68;
    & > span {
      &::before {
        background-color: #FFF;
      }
      & span {
        display: inline-block;
        padding: 5px 20px;
        transition-delay: .3s;
        &:not(:first-child) {
          margin-top: 5px;
        }
      }
    }
    & b {
      font-weight: 600;
    }
  }
  & p {
    max-width: 390px;
    margin-top: 50px;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.87;
    color: var(--txt-color-black);
  }
}
@media screen and (width <= 1120px) {
  .feature01Box-contents {
    & h2 {
      font-size: min(3.5vw,30px);
    }
  }
  }
@media screen and (width <= 768px) {
  .feature01Box-contents {
    & h2 {
      font-size: 10.13vw;
      margin-left: -4vw;
      & > span {
        margin-bottom: 0.1em;
        & span {
          padding: 1.33vw 8vw 1.33vw 4vw;
        }
      }
    }
    & p {
      max-width: 100%;
      margin-top: 10.66vw;
      font-size: 4.26vw;
    }
  }
}

/* ---------- feature02 section ---------- */
.feature02Box {
  display: grid;
  gap: 57px;
  grid-template-areas: 'a b c';
  grid-template-columns: 338px 1fr 320px;
}
@media screen and (width <= 1120px) {
  .feature02Box {
    gap: 5vw;
    grid-template-areas: 'b c';
    grid-template-columns: 1fr 30vw;
  }
}
@media screen and (width <= 768px) {
  .feature02Box {
    gap: 0;
    grid-template-areas: 'c' 'b';
    grid-template-columns: 100%;
  }
}

.feature02Box-img {
  grid-area: a;
}
@media screen and (width <= 1120px) {
  .feature02Box-img {
    display: none;
  }
}
@media screen and (width <= 768px) {
  .feature02Box-img {
    display: block;
    margin-top: 10.66vw;
    & img {
      border-radius: 5px;
      width: 100%;
    }
  }
}

.feature02Box-contents {
  grid-area: b;
  & h2 {
    font-size: 30px;
    font-weight: 600;
    line-height: 1.68;
    & > span {
      margin-bottom: 0.1em;
      &::before {
        background-color: #FFF;
      }
      & span {
        display: inline-block;
        padding: 5px 20px;
        transition-delay: .3s;
        &:not(:first-child) {
          margin-top: 5px;
        }
      }
    }
  }
  & > p {
    margin-top: 40px;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.87;
    color: var(--txt-color-black);
  }
  & .function {
    margin-top: 45px;
  }
  & .function-txt {
    width: min(100% , 150px);
  }
}
@media screen and (width <= 768px) {
  .feature02Box-contents {
    & h2 {
      font-size: 10.13vw;
      margin-left: -4vw;
      & > span {
        & span {
          padding: 1.33vw 8vw 1.33vw 4vw;
        }
      }
    }
    & p {
      max-width: 100%;
      margin-top: 6.66vw;
      font-size: 4.26vw;
    }
    & .function {
      margin-top: 10.66vw;
      gap: 5.33vw;
      grid-template-columns: 18.66vw 1fr;
      & img {
        width: 100%;
      }
    }
    & .function-txt {
      width: 100%;
      & p {
        margin-top: 0;
        font-size: 3.73vw;
      }
    }
  }
}



.feature02Box-icn {
  grid-area: c;
  align-self: center;
  margin-left: 18px;
}
@media screen and (width <= 768px) {
  .feature02Box-icn {
    /* width: min(53.33vw,320px); */
    margin: 0 auto;
  }
}

/* ---------- feature03 section ---------- */
.feature03Box {
  display: grid;
  gap: 74px;
  grid-template-columns: 320px 1fr;
}
@media screen and (width <= 1120px) {
  .feature03Box {
    gap: 5vw;
    grid-template-columns: 30vw 1fr;
  }
}
@media screen and (width <= 768px) {
  .feature03Box {
    gap: 0;
    grid-template-columns: 100%;
  }
}

.feature03Box-icn {
  align-self: center;
}
@media screen and (width <= 768px) {
  .feature03Box-icn {
    /* width: min(53.33vw,320px); */
    margin: 0 auto;
  }
}

.feature03Box-contents {
  & h2 {
    font-size: 30px;
    font-weight: 600;
    line-height: 1.68;
    & > span {
      &::before {
        background-color: #FFF;
      }
      & span {
        display: inline-block;
        padding: 5px 20px;
        transition-delay: .3s;
        &:not(:first-child) {
          margin-top: 5px;
        }
      }
    }
  }
  & > div {
    margin-top: 45px;
  }
}
@media screen and (width <= 1120px) {
  .feature03Box-contents {
    & > div {
      margin-top: 3vw;
    }
  }
}
@media screen and (width <= 768px) {
  .feature03Box-contents {
    & h2 {
      font-size: 10.13vw;
      margin-left: -4vw;
      & > span {
        margin-bottom: 0.1em;
        & span {
          padding: 1.33vw 8vw 1.33vw 4vw;
        }
      }
    }
    & > div {
      margin-top: 10.66vw;
    }
  }
}

.feature03Box-row {
  display: grid;
  gap: 40px;
  grid-template-columns: 1fr 350px;
}
@media screen and (width <= 1120px) {
  .feature03Box-row {
    gap: 4vw;
    grid-template-columns: 100%;
  }
}
@media screen and (width <= 768px) {
  .feature03Box-row {
    gap: 12vw;
    grid-template-columns: 100%;
  }
}

.feature03Box-col {
  color: var(--txt-color-black);
  & .function:first-of-type {
    margin-bottom: 25px;
  }
  &:first-of-type {
    line-height: 1.89;
  }
}
@media screen and (width <= 768px) {
  .feature03Box-col {
    & .function:first-of-type {
      margin-bottom: 25px;
    }
    &:first-of-type {
      font-size: 4.26vw;
    }
  }
}


.feature03Box-img {
  margin-top: 30px;
  & figcaption {
    margin-bottom: 15px;
    padding: 4px 15px;
    border: 1px solid #A0A0A0;
    color: var(--txt-color-black);
    font-size: 15px;
  }
}
@media screen and (width <= 768px) {
  .feature03Box-img {
    margin-top: 12vw;
    & figcaption {
      margin-bottom: 8vw;
      padding: 2vw 4vw;
      font-size: 4vw;
    }
  }
}

.feature03Box-notice {
  margin-top: 5px;
  color: var(--txt-color-black);
  font-size: 11px;
  font-weight: 400;
  line-height: 2.54;
}
@media screen and (width <= 768px) {
  .feature03Box-notice {
    margin-top: 4vw;
    font-size: 2.93vw;
    line-height: 1.5;
  }
}


/* ---------- solution section ---------- */
.solution {
  position: relative;
  z-index: 1;
  padding: 0 0 100px;
  background: #F0F0F0;
}

.solution-ttl {
  text-align: center;
  & h2 {
    margin-top: 40px;
    padding: 7px;
    border-radius: 9999px;
    background-color: #1A8900;
    color: #FFF;
    font-size: 24px;
    font-weight: 600;
  }
  & p {
    translate: 0 0;
    color: #1A8900;
    font-size: 40px;
    font-weight: 500;
    opacity: 0;
    transition: all 1s ease-out;
    &.is-animated {
      opacity: 1;
      translate: 0 -40px;
    }
  }
}
@media screen and (width <= 768px) {
  .solution-ttl {
    & h2 {
      margin-top: 8vw;
      padding: 1.5vw 2vw;
      font-size: 4vw;
    }
    & p {
      margin: 0 -4vw;
      &.is-animated {
        opacity: 1;
        translate: 0 -7vw;
      }
      & img {
        width: 100%;
      }
    }
  }
}

.solution-txt {
  margin-top: 60px;
  font-size: 30px;
  font-weight: 700;
  line-height: 1.8;
  text-align: center;
  & span {
    position: relative;
    display: inline-block;
    margin: 0 10px;
    padding: 2px 15px;
    background-color: #FFF;
    color: #1A8900;
  }
}
@media screen and (width <= 1120px) {
  .solution-txt {
    font-size: min(3.3vw,30px);
  }
}
@media screen and (width <= 768px) {
  .solution-txt {
    margin-top: 12.8vw;
    font-size: 5.33vw;
  }
}

.caseList {
  margin-top: 75px;
  & li {
    &:nth-child(n+2) {
      margin-top: 60px;
    }
  }
}
@media screen and (width <= 768px) {
  .caseList {
    margin-top: 13.33vw;
    & li {
      &:nth-child(n+2) {
        margin-top: 16vw;
      }
    }
  }
}

.caseBoxWrap {
  display: grid;
  grid-template-areas: 'a b c';
  grid-template-columns: 485px 110px  485px;
}
@media screen and (width <= 1120px) {
  .caseBoxWrap {
    grid-template-columns: 46% 8% 46%;
  }
}
@media screen and (width <= 768px) {
  .caseBoxWrap {
    grid-template-areas: 'a''b''c';
    grid-template-columns: 100%;
    grid-template-rows: auto 27vw auto;
  }
}

.caseBox {
  grid-area: a;
}

.caseBox-header {
  display: flex;
  align-items: center;
  gap: 34px;
  & span {
    padding-bottom: 5px;
    border-bottom: 2px solid #1A8900;
  }
  & img {
    
  }
  & h3 {
    font-size: 20px;
    font-weight: 700;
    line-height: 1.6;
  }
}
@media screen and (width <= 1120px) {
  .caseBox-header {
    gap: 3vw;
    & span {
      width: min(80px,40%);
      flex-shrink: 0;
    }
    & h3 {
      & br {
        display: none;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .caseBox-header {
    align-items: flex-start;
    flex-direction: column;
    gap: 4.8vw;
    & span {
      width: 23vw;
      & img {
        width: 100%;
      }
    }
    & h3 {
      font-size: 4.8vw;
      & br {
        display: inline;
      }
    }
  }
}

.caseBox-body {
  position: relative;
  margin-top: 30px;
  &::after {
    position: absolute;
    top: 50%;
    right: -70px;
    rotate: 45deg;
    translate: 0 -50%;
    display: block;
    width: 58px;
    height: auto;
    aspect-ratio: 1;
    border-top: 3px solid #C0C0C0;
    border-right: 3px solid #C0C0C0;
    content: "";
  }
  & p {
    padding: 10px 20px;
    background-color: #FFF;
    color: var(--txt-color-black);
    font-size: 15px;
    line-height: 1.86;
    & + p {
      margin-top: 5px;
    }
  }
}
@media screen and (width <= 1120px) {
  .caseBox-body {
    margin-top: 3vw;
    &::after {
      right: -5vw;
      width: 5vw;
    }
    & p {
      & br {
        display: none;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .caseBox-body {
    margin-top: 4.8vw;
    &::after {
      top: auto;
      right: 50%;
      bottom: -16vw;
      width: 16vw;
      rotate: 135deg;
      translate: 50% 0;
    }
    & p {
      padding: 5vw;
      font-size: 4vw;
      & + p {
        margin-top: .5em;
      }
    }
  }
}

.solutionBox {
  position: relative;
  grid-area: c;
  align-self: start;
  margin-top: 14px;
  padding: 30px;
  border: 3px solid #1A8900;
  background-color: #FFF;
  & strong {
    color: #1A8900;
    font-size: 20px;
    line-height: 1.6;
  }
  & p:first-child {
    position: absolute;
    top: 0;
    left: -3px;
    translate: 0 -50%;
    display: inline-block;
    padding: 7px 16px;
    border-radius: 9999px;
    background-color: #1A8900;
    color: #FFF;
    font-size: 12px;
  }
  & p:last-child {
    margin-top: 30px;
    font-size: 15px;
    line-height: 1.86;
    color: var(--txt-color-black);
  }
}
@media screen and (width <= 1120px) {
  .solutionBox {
    align-self: center;
    padding: 2.5vw;
    & p {
      & br {
        display: none;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .solutionBox {
    padding: 7vw;
    & strong {
      font-size: 4.5vw;
    }
    & p:first-child {
      font-size: 3.2vw;
      padding: 2vw 4vw;
    }
    & p:last-child {
      margin-top: 8vw;
      font-size: 4vw;
    }
  }
}


/* ---------- kv2 ---------- */
.kv2 {
  & img {
    width: 100%;
  }
}


/* ---------- choose section ---------- */
.choose {
  border-radius: 0 0 20px 20px;
  background-color: #141529;
  & hgroup + p {
    max-width: 455px;
    margin: 35px auto 0;
    color: var(--txt-color-white);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.87;
  }
}
@media screen and (width <= 768px) {
  .choose {
    & hgroup + p {
      max-width: 100%;
      margin: 6.66vw auto 0;
      font-size: 4.27vw;
    }
  }
}

.choose-ttl {
  text-align: center;
  & h2 {
    margin-top: 30px;
    color: #FFF;
    font-size: 40px;
    font-weight: 500;
    text-align: center;
  }
  & p {
    translate: 0 0;
    opacity: 0;
    transition: all 1s ease-out;
    &.is-animated {
      opacity: 1;
      translate: 0 -50%;
    }
  }
}
@media screen and (width <= 768px) {
  .choose-ttl {
    & h2 {
      margin-top: 6vw;
      font-size: 8vw;
    }
  }
}

.chooseBox {
  display: grid;
  align-items: start;
  gap: 0 20px;
  grid-template-areas:
  'a b d'
  'e b f'
  'g b h'
  'i b j';
  grid-template-columns: 320px 1fr 320px;
  grid-template-rows: auto;
  margin-top: 70px;
  padding-bottom: 90px;
}
@media screen and (width <= 1081px) {
  .chooseBox {
    display: block;
  }
}
@media screen and (width <= 768px) {
  .chooseBox {
    margin-top: 15vw;
    padding-bottom: 20vw;
  }
}

.chooseBox-details {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 6;
  padding: 20px 25px 44px;
  border: 2px solid #283769;
  border-radius: 5px;
  background-color: #F0F0F0;
  & h3 {
    display: flex;
    align-items: center;
    gap: 17px;
    justify-content: center;
    margin-top: 30px;
    color: var(--txt-color-black);
    font-size: 24px;
    font-weight: 700;
    line-height: 1.16;
    ._01 & {
      grid-area: e;
    }
    ._02 & {
      grid-area: f;
    }
    & span {
      display: inline-block;
      padding: 2px 12px;
      border: 1px solid #303030;
      border-radius: 3px;
      font-size: 12px;
      line-height: 1.5;
    }
  }
  & > div:first-child {
    align-self: flex-end;
    text-align: center;
    ._01 & {
      grid-area: a;
      margin-top: 30px;
    }
    ._02 & {
      grid-area: d;
      margin-top: 45px;
    }
  }
  & p {
    margin-top: 25px;
    color: var(--txt-color-black);
    font-size: 15px;
    line-height: 1.86;
    ._01 & {
      grid-area: g;
    }
    ._02 & {
      grid-area: h;
    }
  }
  & dl {
    position: relative;
    margin-top: 30px;
    ._01 & {
      grid-area: i;
    }
    ._02 & {
      grid-area: j;
    }
  }
  & dt {
    padding: 2px;
    background-color: #2E436F;
    color: #FFF;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
  }
  & dd {
    margin-top: 17px;
    color: var(--txt-color-black);
    font-size: 15px;
    line-height: 1.73;
    text-align: center;
  }
}
@media screen and (width <= 1081px) {
  .chooseBox-details {
    display: block;
    padding: 3vw;
    & > div:first-child {
      ._01 & {
        margin-top: 0;
      }
      ._02 & {
        margin-top: 0;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .chooseBox-details {
    margin: 0 4vw;
    padding: 15vw 12vw;
    border-radius: 1.33vw;
    & h3 {
      gap: 2vw;
      margin-top: 8vw;
      font-size: 6.4vw;
      & span {
        font-size: 3.2vw;
        padding: .5vw 2vw;
      }
    }
    & > div:first-child {
      & img {
        width: 13.33vw;
      }
    }
    & p {
      margin-top: 7.46vw;
      font-size: 4vw;
    }
    & dl {
      margin-top: 8vw;
    }
    & dt {
      padding: 1vw;
      font-size: 3.46vw;
    }
    & dd {
      margin-top: 4vw;
      font-size: 3.2vw;
    }
  }
}

.chooseBox-img1 {
  position: relative;
  grid-area: b;
  align-self: flex-end;
  height: 100%;
  text-align: center;
  & span {
    position: absolute;
    top: 0;
    left: 50%;
    translate: -50% 0;
    display: inline-block;
    width: 160%;
    height: auto;
    opacity: 0;
    transition: all 1s ease-out;
    &.is-animated {
      top: -40px;
      opacity: 1;
    }
    & img {
      margin-left: -6%;
    }
  }
}
@media screen and (width <= 1081px) {
  .chooseBox-img1 {
    width: min(60%, 500px);
    margin: 0 auto;
    & span {
      position: static;
      translate: 0;
      width: auto;
      & img {
        margin-left: 0;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .chooseBox-img1 {
    width: 100%;
  }
}

.chooseBox-img2 {
  grid-area: c;
  align-self: flex-end;
  text-align: center;
}

.option {
  translate: 0 232px;
  display: grid;
  grid-template-columns: 594px 1fr;
  gap: 0;
  margin-top: -232px;
  padding: 40px 50px 0 0;
  border-radius: 5px;
  background-color: #2F426F;
  box-shadow: 0 4px 6px rgba(0,0,0,.3);
}
@media screen and (width <= 1081px) {
  .option {
    grid-template-columns: 100%;
    padding: 20px 30px 70px;
  }
}
@media screen and (width <= 768px) {
  .option {
    translate: 0 50vw;
    padding: 5.88vw 0 13.33vw;
    margin-top: -50vw;
    border-radius: 1.33vw;
  }
}

.option-img {
  opacity: 0;
  translate: 0 30px;
  transition: all 1s ease-out;
  &.is-animated {
    opacity: 1;
    translate: 0 0;
  }
}

@media screen and (width <= 1081px) {
  .option-img {
    width: 70%;
    margin: 0 auto;
  }
}
@media screen and (width <= 768px) {
  .option-img {
    width: 100%;
  }
}

.option-txt {
  margin-top: 10px;
  & h3 {
    color: #FFF;
    font-size: 20px;
    font-weight: 500;
    line-height: 1.4;
  }
  & p {
    margin-top: 20px;
    color: var(--txt-color-white);
    font-size: 15px;
    font-weight: 400;
    line-height: 1.86;
  }
}
@media screen and (width <= 768px) {
  .option-txt {
    margin-top: 4vw;
    padding: 0 6.66vw;
    & h3 {
      font-size: 4.4vw;
    }
    & p {
      margin-top: 6.66vw;
      font-size: 3.8vw;
    }
  }
}

.option-table {
  margin-top: 40px;
  font-size: 13px;
  font-weight: 400;
  color: var(--txt-color-white);
  & h4 {
    font-weight: 400;
  }
  & table {
    margin-top: 10px;
    border-spacing: 0;
    & th {
      padding: 9px 15px;
      border: 1px solid;
      border-color: var(--txt-color-black2);
      border-left: none;
      font-weight: 400;
      text-align: left;
    }
    & td {
      padding: 9px 15px;
      border-bottom: 1px solid;
      border-color: var(--txt-color-black2);
      &:first-of-type {
        border-top: 1px solid;
        border-color: var(--txt-color-black2);
      }
    }
  }
}
@media screen and (width <= 768px) {
  .option-table {
    margin-top: 16vw;
    font-size: 3.44vw;
    & table {
      margin-top: 2.66vw;
      width: 100%;
      & tr {
        display: flex;
        flex-flow: column;
        width: 100%;
      }
      & th {
        width: 100%;
        padding: 2vw 4vw;
        border-right: none;
      }
      & td {
        width: 100%;
        padding: 2vw 4vw;
        border: none;
        &:first-of-type {
          border-top: none;
        }
        &:last-of-type {
          border-bottom: 1px solid;
        border-color: var(--txt-color-black2);
        }
      }
    }
  }
}

.option-table-note {
  margin-top: 20px;
  & li:first-of-type {
    margin-top: 0.5em;
  }
  & li::before {
    content: "・";
  }
}
@media screen and (width <= 768px) {
  .option-table-note {
    margin-top: 5.33vw;
    font-size: 2.93vw;
  }
}

/* ---------- specs section ---------- */
.specs {
  padding: 325px 0 85px;
  background-color: #E8E8E8;
}
@media screen and (width <= 768px) {
  .specs {
    padding: 60vw 0 13.33vw;
  }
}

.specsTableWrap {
  border-top: 1px solid var(--txt-color-white2);
  overflow-x: auto;
  & h2 {
    padding: 16px 0;
    color: var(--txt-color-black);
    font-size: 13px;
    font-weight: 400;
    text-align: center;
  }
  & table {
    width: 100%;
  }
  & thead {
    & th {
      width: calc(100% / 6);
      padding: 4px;
      background-color: #2E436F;
      color: #FFF;
      font-size: 14px;
      font-weight: 400;
      text-align: center;
      &:not(:last-child) {
        border-right: 1px solid var(--txt-color-white2);
      }
    }
  }
  & tbody {
    & th, & td {
      padding: 9px 12px;
      border-right: 1px solid var(--txt-color-white2);
      border-bottom: 1px solid var(--txt-color-white2);
      color: var(--txt-color-black);
      font-size: 13px;
      font-weight: 400;
      line-height: 1.4;
      white-space: nowrap;
    }
    & th {
      background-color: #E0E0E0;
      text-align: left;
    }
    & td {
      text-align: center;
      &:last-child {
        border-right: none;
      }
    }
    & .specsTable-img {
      & td {
        padding: 0;
        background-color: #E0E0E0;
        vertical-align: bottom;
        &:nth-child(n+4){
          & span {
            &::before {
              left: 59%;
            }
          }
        }
      }
      & span {
        position: relative;
        z-index: 1;
      }
    }
  }
}
@media screen and (width <= 768px) {
  .specsTableWrap {
    & h2 {
      padding: 4vw 0;
      font-size: 3.46vw;
    }
    & table {
      table-layout: fixed;
      & + table {
        margin-top: 7.19vw;
      }
    }
    & thead {
      & th {
        width: 50%;
        padding: 1vw;
        font-size: 3.5vw;
      }
    }
    & tbody {
      & th, & td {
        padding: 2vw;
        font-size: 3vw;
        white-space: normal;
      }
      & .specsTable-img {
        & span img {
          width: 100%;
        }
      }
    }
  }
}

@media screen and (width <= 768px) {
  .specsTablePcWrap {
    display: none;
  }
}

.specsTableSpWrap {
  display: none;
}
@media screen and (width <= 768px) {
  .specsTableSpWrap {
    display: block;
  }
}

.download {
  margin-top: 83px;
  & a {
    display: block;
    width: 100%;
    max-width: 700px;
    margin: 0 auto;
    padding: 36px 46px;
    border-radius: 5px;
    background-color: #FFF;
    color: var(--txt-color-black);
    font-size: 24px;
    font-weight: 500;
    transition: background .3s, color .3s;
    & span {
      position: relative;
      display: flex;
      justify-content: center;
      align-items: center;
      gap: 20px;
      width: 100%;
      &::before {
        /* position: absolute;
        top: 50%;
        right: 0;
        translate: 0 -50%; */
        display: block;
        width: 23px;
        height: 23px;
        aspect-ratio: 1;
        background-color: #303030;
        mask: url(../img/icn_download.svg) no-repeat center/cover;
        transition: background .3s;
        content: "";
      }
    }
    &:hover {
      background-color: #2F426F;
      color: #FFF;
      & span {
        &::before {
          background-color: #FFF;
        }
      }
    }
  }
}
@media screen and (width <= 768px) {
  .download {
    & a {
      font-size: 4.26vw;
    }
  }
}


/* ---------- footer ---------- */
.footer {
  background-color: #FFF;
}
.footer-inner {
  display: flex;
  justify-content: space-between;
  width: 100%;
  margin: 0 auto;
  padding: 10px 20px;
  border-top: 1px solid #E0E0E0;
}
@media screen and (width < 768px) {
  .footer-inner {
    display: block;
    padding: 10vw 4vw;
  }
}

.footerLogo {
  padding: 35px 20px;
  text-align: center;
}
@media screen and (width <= 768px) {
  .footerLogo {
    padding: 12vw;
  }
}

.footerUtilityNav-list {
  display: flex;
  gap: 20px;
  justify-content: center;
  & a {
    position: relative;
    color: #333;
    &:hover {
      text-decoration: underline;
    }
  }
}
@media screen and (width <= 768px) {
  .footerUtilityNav-list {
    gap: 5vw;
    justify-content: space-around;
    font-size: 3.46vw;
    & a {
      &::before {
        position: absolute;
        bottom: -3px;
        left: 50%;
        transform: translateX(-50%);
        display: block;
        width: 0;
        height: 1px;
        background-color: #333;
        transition: all .3s;
        content: "";
      }
      &:hover {
        &::before {
          width: 100%;
        }
      }
    }
  }
}

.footerCopy {
  & small {
    color: var(--txt-color-black2);
    font-size: 12px;
    font-weight: 500;
  }
}
@media screen and (width <= 768px) {
  .footerCopy {
    margin-top: 4vw;
    text-align: center;
    & small {
      font-size: 3vw;
    }
  }
}



.pageTopWrap {
  position: fixed;
  right: max(calc(50% - 44vw), calc(50% - 600px));
  bottom: 100px;
  translate: 50% 0;
  z-index: 10;
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s, visibility .3s;
  &.is-show {
    opacity: 1;
    visibility: visible;
  }
  &.is-absolute {
    position: absolute;
    top: 112px;
    bottom: auto;
  }
}
@media screen and (width < 768px) {
  .pageTopWrap {
    right: 40px;
    bottom: 16px;
    &.is-absolute {
      top: 270px;
    }
  }
}

.pageTop {
  position: relative;
  display: block;
  width: 65px;
  border-radius: 100%;
  background: #2F426F;
  aspect-ratio: 1;
  transition: background .3s;
  &:hover {
    background-color: #141529;
  }
  &::after {
    position: absolute;
    top: calc(50% + 3px);
    left: 50%;
    transform: translate(-50%,-50%) rotate(-45deg);
    width: 18px;
    border-top: 3px solid #FFF;
    border-right: 3px solid #FFF;
    aspect-ratio: 1;
    content: "";
  }
}
@media screen and (width < 768px) {
  .pageTop {
    width: 50px;
    &::after {
      width: 14px;
    }
  }
}


/* ==============================================================
*  animation
* ============================================================ */
.barSlideIn {
  & > span {
    position: relative;
    z-index: 1;
    display: inline-block;
    &::before {
      position: absolute;
      top: 0;
      left: 0;
      z-index: -1;
      width: 100%;
      height: 100%;
      clip-path: inset(0 100% 0 0);
      transition: clip-path .6s cubic-bezier(0.37, 0, 0.63, 1);
      content: "";
    }
    & span {
      display: inline-block;
      clip-path: inset(0 100% 0 0);
      transition: clip-path .6s cubic-bezier(0.37, 0, 0.63, 1);
    }
    &:nth-of-type(1) {
      & span {
        transition-delay: .6s;
      }
    }
    &:nth-of-type(2) {
      &::before {
        transition-delay: .3s;
      }
      & span {
        transition-delay: .9s;
      }
    }
    &:nth-of-type(3) {
      &::before {
        transition-delay: .6s;
      }
      & span {
        transition-delay: 1.5s;
      }
    }
  }
  &.is-animated {
    & > span {
      &::before {
        clip-path: inset(0);
      }
      & span {
        clip-path: inset(0);
      }
    }
  }
}

.slideUp {
  & > span {
    translate: 0 100px;
    display: inline-block;
    opacity: 0;
    transition: translate 1s .5s ease-out, opacity 1s .5s ease-out;
    &:nth-of-type(2) {
      transition-delay: .8s;
    }
  }
  &.is-animated {
    & > span {
      translate: 0 0;
      opacity: 1;
    }
  }
}




/* ==============================================================
*  utility
* ============================================================ */
.visuallyHidden {
  position: absolute!important;
  width: 1px!important;
  height: 1px!important;
  margin: -1px!important;
  padding: 0!important;
  border: 0!important;
  clip: rect(0,0,0,0)!important;
  overflow: hidden!important;
  white-space: nowrap!important;
}

@media screen and (width > 768px) {
  .hiddenPc {
    display: none !important;
  }
}

@media screen and (width <= 768px) {
  .hiddenSp {
    display: none !important;
  }
}


@media screen and (width <= 1120px) {
  .uMdHidden {
    display: none !important;
  }
}
