@charset "UTF-8";
/* CSS Document */

.sp-only {
  display: none;
}
.fade-pc-only {
  opacity: 0;
  transition: opacity .9s ease-in-out .1s;
}
.fade-pc-only.start {
  opacity: 1;
  transition-delay: calc(var(--el-delayed) * .1s);
}

.header-set {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000;

  .header-frame {
    display: flex;
    justify-content: space-between;
    width: 100%;
    height: 66px;
    z-index: +1;

    @media (width < 1280px) {
      height: calc(66 / 1280 * 100vw);
    }
  }
  .logo-title {
    display: flex;
    align-items: center;
    column-gap: 20px;
    padding-left: 40px;
    height: 36px;
    margin-top: auto;
    line-height: 1;

    .logo {
      display: block;
      width: 120px;
      margin: 0;

      a {
        display: block;
        width: 100%;
        height: 100%;

        img {
          display: block;
          width: 100%;
          height: 100%;
          object-fit: contain;
        }

        @media (hover: hover) {
          opacity: 1;
          transition: opacity .3s ease;

          &:hover {
            opacity: .5;
          }
        }
      }
    }
    .main-title {
      font-size: 14px;
      letter-spacing: .08em;
      color: #fff;
      margin: 0;
    }

    @media (width < 1280px) {
      column-gap: calc(20 / 1280 * 100vw);
      padding-left: calc(40 / 1280 * 100vw);
      height: calc(36 / 1280 * 100vw);

      .logo {
        width: calc(120 / 1280 * 100vw);
      }
      .main-title {
        font-size: calc(14 / 1280 * 100vw);
      }
    }
  }
  .bttn-set {
    display: flex;
    width: 230px;
    height: 60px;

    @media (width < 1280px) {
      width: calc(230 / 1280 * 100vw);
      height: calc(60/ 1280 * 100vw);
    }

    .entry-bttn {
      display: block;
      width: 170px;
      height: 100%;
      background: url(../images/entry_bttn_bg-1-pc.jpg) no-repeat center center / contain;

      a {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        font-weight: 500;
        font-size: 17px;
        letter-spacing: .04em;
        line-height: 1;
        color: #fff;
        text-decoration: none;
        z-index: +1;

        @media (hover: hover) {
          position: relative;
          
          &::after {
            content: '';
            display: block;
            width: 100%;
            height: 100%;
            background: url(../images/entry_bttn_bg-2-pc.jpg) no-repeat center center / contain;
            position: absolute;
            z-index: -1;
            opacity: 0;
            transition: opacity .3s ease;
          }
          &:hover::after {
            opacity: 1
          }
        }
      }
      @media (width < 1280px) {
        width: calc(170 / 1280 * 100vw);

        a {
          font-size: calc(17 / 1280 * 100vw);
        }
      }
    }
    .hamburger {
      all: unset;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 60px;
      height: 100%;
      background-color: #fff;

      .bttn-inner {
        display: flex;
        flex-direction: column;
        justify-content: center;
        row-gap: 4px;
        width: 20px;
        height: 11px;
        transition: .4s ease;
        overflow: hidden;

        .open & {
          rotate: y -180deg;
          row-gap: 0;
          overflow: visible;
        }
        .bar {
          display: block;
          width: 100%;
          height: 1px;
          background-color: #000;
          transform-origin: center;
          opacity: 1;
          transition: .3s ease;

          .open &:nth-child(1) {
            rotate: -45deg;
            translate: 0 1px;
          }
          .open &:nth-child(3) {
            translate: 0 -1px;
            rotate: 45deg;
          }
          .open &:nth-child(2) {
            opacity: 0;
          }
        }
      }
      @media (hover: hover) {
        cursor: pointer;

        html:not(.open) &:hover .bttn-inner .bar:nth-child(1) {
          animation: tracking-bars 1.4s linear -.9s 1
        }
        html:not(.open) &:hover .bttn-inner .bar:nth-child(2) {
          animation: tracking-bars 1.4s linear -.75s 1
        }
        html:not(.open) &:hover .bttn-inner .bar:nth-child(3) {
          animation: tracking-bars 1.4s linear -.6s 1
        }
      }
      @media (width < 1280px) {
        width: calc(60 / 1280 * 100vw);

        .bttn-inner {
          width: calc(20 / 1280 * 100vw);
        }
      }
    }
  }
}

.fv-area {
  display: block;
  width: 100%;
  height: 100svh;
  position: relative;

  .fv-title-set {
    position: absolute;
    left: calc(100 / 1430 * 100vw);
    bottom: calc(55 / 1430 * 100vw);
    display: flex;
    flex-direction: column-reverse;
    row-gap: calc(8 / 1430 * 100vw);
    color: #fff;
    z-index: +1;

    .jp {
      font-size: calc(25 / 1430 * 100vw);
      letter-spacing: .2em;
    }
    .en {
      font-size: calc(80 / 1430 * 100vw);
      letter-spacing: .025em;
      line-height: 1.25;

      .small {
        font-size: 75%;
      }
    }
  }
  .visual-area {
    display: block;
    width: 100%;
    height: 100%;
    position: relative;

    video {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      z-index: 0;
    }
  }
}

.mv-area {
  display: block;
  width: 100%;
  min-height: calc(700 / 1430 * 100vw);
  height: 100svh;
  position: relative;

  .mv-title-set {
    position: absolute;
    left: calc(100 / 1430 * 100vw);
    bottom: calc(55 / 1430 * 100vw);
    display: flex;
    flex-direction: column-reverse;
    row-gap: calc(8 / 1430 * 100vw);
    color: #fff;
    z-index: +1;

    .jp {
      font-size: calc(25 / 1430 * 100vw);
      letter-spacing: .2em;
    }
    .en {
      font-size: calc(80 / 1430 * 100vw);
      letter-spacing: .025em;
      line-height: 1.25;

      .small {
        font-size: 75%;
      }
    }
  }
  .visual-area {
    display: block;
    width: 100%;
    height: 100%;
    position: relative;

    &::after {
      content: '';
      display: block;
      width: 100%;
      height: 64.285714285%;
      position: absolute;
      bottom: 0;
      left: 0;
      background: linear-gradient(0deg, rgba(46, 36, 18, 1) 0%, rgba(40, 34, 26, 0.55) 45.15%, rgba(28, 31, 42, 0) 100%);
      opacity: 0.6;
    }
  }
}


.main-nav-set {
  display: block;
  width: 700px;
  height: 100vh;
  overflow: hidden;
  overflow-y: auto;
  position: absolute;
  top: 0;
  right: 0;
  background-color: rgba(255, 255, 255, .85);
  z-index: -1;
  translate: 100% 0;
  opacity: 0;
  transition: translate .5s ease, opacity .4s .1s linear;

  .open & {
    translate: 0 0;
    opacity: 1;
  }
  .main-nav-inner {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 750px;
    padding-block: 70px 60px;
    padding-inline: 90px 110px;
    position: relative;

    &::after {
      content: '';
      display: block;
      width: 100%;
      height: 100%;
      background: url(../images/nav_bg-pc.png) center top;
      mix-blend-mode: soft-light;
      position: absolute;
      top: 0;
      left: 0;
      opacity: .5;
      z-index: -1;
    }
    ul {
      margin: 0;
      padding: 0;
      list-style: none;

      &.main-menu {
        margin-bottom: 70px;
      }
    }
  }
  @media (width < 1280px) {
    width: calc(700 / 1280 * 100vw);

    .main-nav-inner {
      min-height: calc(750/ 1280 * 100vw);
      padding-block: calc(70 / 1280 * 100vw) calc(60 / 1280 * 100vw);
      padding-inline: calc(90 / 1280 * 100vw) calc(110 / 1280 * 100vw);

      ul.main-menu {
        margin-bottom: calc(70/ 1280 * 100vw);
      }
    }
  }
  .main-menu {
    display: grid;
    grid-template-columns: 1fr;
    grid-auto-rows: minmax(70px, auto);

    @media (width < 1280px) {
      grid-auto-rows: minmax(calc(70 / 1280 * 100vw), auto);
    }

    .outer {
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      width: 100%;
      overflow: hidden;
      position: relative;
      padding-bottom: 14px;
      padding-top: 32px;

      @media (width < 1280px) {
        padding-bottom: calc(14 / 1280 * 100vw);
        padding-top: calc(32 / 1280 * 100vw);
      }

      &::after {
        content: '';
        display: block;
        width: 250%;
        height: 1px;
        background-image: linear-gradient(to right, var(--color-blue), var(--color-blue) 40%, transparent 40%, transparent 60%, var(--color-blue) 60%, var(--color-blue) 100%);
        position: absolute;
        left: -150%;
        bottom: 0;
      }

      @media (hover: hover) {
        &::after {
          translate: 0 0;
          transition: translate .45s ease-in-out;
        }
        &:hover::after {
          translate: 60% 0
        }
      }

      a {
        display: inline-block;
        width: 100%;
        text-decoration: none;
        overflow: hidden;
        position: relative;

        .inner {
          display: flex;
          align-items: flex-end;
          height: 100%;
          width: 100%;
          position: relative;

          @media (hover: hover) {
            translate: 0 0;
            transition: translate .45s cubic-bezier(0.19, 1, 0.22, 1);

            a:hover & {
              translate: 12% 0;
            }
          }

          &::before,
          &::after {
            content: '';
            display: inline-block;
            width: 8px;
            height: 1.1em;
            mask-image: url(../images/arrow-0.svg);
            mask-repeat: no-repeat;
            mask-position: center;
            mask-size: 100% 100%;
            background-color: var(--color-blue);
          }
          &::after {
            margin-left: auto;
          }
          &::before {
            position: absolute;
            left: -2em;
          }
        }
        .en {
          font-weight: 500;
          font-size: 24px;
          letter-spacing: .04em;
          line-height: 1;
          margin-right: 20px;

          .small {
            font-size: 75%;
            margin-inline: .15em;
          }
        }
        .jp {
          font-size: 12px;
          letter-spacing: .05em;
        }

        @media (width < 1280px) {
          .inner::before,
          .inner::after {
            width: calc(8 / 1280 * 100vw);
          }
          .en {
            font-size: calc(24 / 1280 * 100vw);
            margin-right: calc(20 / 1280 * 100vw);
          }
          .jp {
            font-size: calc(12 / 1280 * 100vw);
          }
        }
      }
    }

    .coming-soon-menu & > li:nth-child(3) {
      grid-row: 5;
      pointer-events: none;
      opacity: .2;
    }
    .coming-soon-menu & > li:nth-child(4) {
      grid-row: 6;
      pointer-events: none;
      opacity: .2;
    }

    .sub-menu {
      margin-top: 14px;
      display: grid;
      grid-template-columns: 1fr;
      grid-auto-rows: minmax(38px, auto);

      li {
        display: flex;
        align-items: center;
        height: 100%;
        width: 100%;
      }
      a {
        text-decoration: none;
        line-height: 1;

        &::before {
          content: '';
          display: inline-block;
          width: 8px;
          height: 1.1em;
          mask-image: url(../images/arrow-0.svg);
          mask-repeat: no-repeat;
          mask-position: center;
          mask-size: 100% 100%;
          background-color: var(--color-blue);
          vertical-align: bottom;
          margin-right: .75em;
        }
        .en {
          font-weight: 600;
          font-size: 17px;
          letter-spacing: .04em;
        }
        .jp {
          font-size: 12px;
          margin-left: 30px;
        }
        @media (hover: hover) {
          opacity: 1;
          transition: opacity .3s ease;

          &:hover {
            opacity: .4;
          }
          &::before {
            translate: 0 0;
            transition: translate .3s ease;
          }
          &:hover::before {
            translate: .25em;
          }
        }
      }
      @media (width < 1280px) {
        margin-top: calc(14 / 1280 * 100vw);
        grid-auto-rows: minmax(calc(38 / 1280 * 100vw), auto);

        a::before {
          width: calc(8 / 1280 * 100vw);
        }
        a .en {
          font-size: calc(17 / 1280 * 100vw);
        }
        a .jp {
          font-size: calc(12 / 1280 * 100vw);
        }
      }
    }
  }
}


.coming-soon-section {
  .coming-soon {
    display: block;
    width: min(calc(1070 / 1430 * 100vw), 1070px);
    height: auto;
    margin-inline: auto;
    padding-block: min(calc(100 / 1430 * 100vw), 100px);
    position: relative;

    .attn {
      position: absolute;
      top: 0;
      left: 0;
      display: flex;
      justify-content: center;
      align-items: center;
      width: 100%;
      height: 100%;
      padding: 0;
      margin: 0;
      font-size: min(calc(80 / 1430 * 100vw), 80px);
      line-height: 1;
      color: #fff;
    }
  }
}

.bg-gradient {
  display: block;
  width: 100%;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
  z-index: -2;
  pointer-events: none;

  .overlayed-noise {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    width: 100%;
    height: 100%;
    background-image: url(../images/noise-s.png);
    background-size: calc(100 / 1430 * 100vw) calc(100 / 1430 * 100vw);
    background-repeat: repeat;
    mix-blend-mode: soft-light;
    position: relative;
    z-index: +1;
  }
  .bg-gradient-base,
  .bg-gradient-parts {
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
  }
  .bg-gradient-base {
    background-color: #003876;
  }
  .bg-gradient-parts {
    overflow: hidden;

    .bg-gradient-parts-item {
      display: block;
      width: 50%;
      height: 50%;
      position: absolute;
      animation-name: the-rotation;
      animation-timing-function: linear;
      animation-iteration-count: infinite;

      &:nth-of-type(1) {
        top: -30%;
        left: -30%;
        transform-origin: right bottom;
        animation-duration: 25s;
        will-change: transform;
        position: relative;
        z-index: 0;

        .inner-item {
          position: absolute;
          top: 0;
          width: 80vw;
          height: 120vw;
          background-image: radial-gradient(rgba(191, 250, 206, 1) 0%, rgba(12, 193, 206, 1) 39.38%, rgba(0, 101, 183, 1) 76.92%, rgba(0, 101, 183, 0) 100%);
          box-shadow: 25vw 50px 25vw 20vw #0061b6;
          border-radius: 70% 70% 70% 60% / 30% 50% 70% 70%;
          filter: blur(110px);
          animation: waver 15s linear infinite;
          will-change: opacity
        }
      }
      &:nth-of-type(2) {
        bottom: -25%;
        right: -20%;
        transform-origin: right bottom;
        animation-duration: 30s;
        will-change: transform;

        .inner-item {
          position: absolute;
          top: 0;
          width: 70vw;
          height: 90vw;
          background-color: #A9D4FD;
          box-shadow: 25vw 50px 21vw 14vw #8F97F8;
          border-radius: 40% 40%;
          filter: blur(100px);
          animation: waver 12s linear infinite;
          will-change: opacity
        }
      }
      &:nth-of-type(3) {
        top: 0;
        right: 0;
        width: 15%;
        height: 10%;
        transform-origin: center;
        animation-duration: 20s;
        will-change: transform;

        .inner-item {
          position: absolute;
          top: 0;
          width: 10vw;
          height: 12vw;
          background-color: #205CE5;
          box-shadow: 7vw 3.5vw 7vw 7vw #0040C5;
          border-radius: 60% 60%;
          filter: blur(50px);
          animation: waver 5s linear infinite;
          will-change: opacity
        }
      }
    }
  }
}
@keyframes the-rotation {
  0% {
    rotate: 0deg;
  }
  to {
    rotate: 360deg;
  }
}
@keyframes waver {
  0%,
  100% {
    opacity: 1
  }
  50% {
    opacity: .7
  }
}

.view-more-bttn {
  display: block;
  overflow: hidden;
  position: relative;

  &::after {
    content: '';
    display: block;
    width: 250%;
    height: 1px;
    background-color: transparent;
    position: absolute;
    left: -150%;
    bottom: 0;
  }

  @media (hover: hover) {
    &::after {
      translate: 0 0;
      transition: translate .45s ease-in-out;
    }
    &:hover::after {
      translate: 60% 0
    }
  }

  a {
    display: block;
    align-items: flex-end;
    height: 100%;
    width: 100%;
    text-decoration: none;
    overflow: hidden;
    position: relative;

    .inner {
      display: flex;
      align-items: center;
      height: 100%;
      width: 100%;
      padding-bottom: inherit;
      position: relative;

      @media (hover: hover) {
        translate: 0 0;
        transition: translate .45s cubic-bezier(0.19, 1, 0.22, 1);

        a:hover & {
          translate: 20% 0;
        }
      }
      &::before,
      &::after {
        content: '';
        display: inline-block;
        width: min(calc(8 / 1430 * 100vw), 8px);
        height: 1.1em;
        mask-image: url(../images/arrow-0.svg);
        mask-repeat: no-repeat;
        mask-position: center;
        mask-size: 100% 100%;
        background-color: transparent;
      }
      &::after {
        margin-left: auto;
      }
      &::before {
        position: absolute;
        left: -2em;
      }
      .pop &::before,
      .pop &::after {
        width: min(calc(14 / 1430 * 100vw), 14px);
        height: min(calc(14 / 1430 * 100vw), 14px);
        mask-image: url(../images/ico-pop.svg);
      }
    }
  }
}

.footer-area {
  display: block;
  width: 100%;
  height: min(calc(1030 / 1430 * 100vw), 1030px);
  padding-top: min(calc(170 / 1430 * 100vw), 170px);
  background: url(../images/footer_bg-pc.jpg) no-repeat center bottom / cover;
  position: relative;

  .entry-bttn-area {
    display: block;
    width: 100%;
    padding-bottom: min(calc(100 / 1430 * 100vw), 100px);

    a {
      display: block;
      width: min(calc(1170 / 1430 * 100vw), 1170px);
      height: min(calc(240 / 1430 * 100vw), 240px);
      margin: 0 auto;
      color: #fff;
      line-height: 1;
      text-decoration: none;
      position: relative;

      &::after {
        content: '';
        display: block;
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        left: 0;
        background: url(../images/footer-entry-bg.jpg) no-repeat center center / cover;
        opacity: 0;
      }
      .bttn-inner {
        display: flex;
        justify-content: space-between;
        align-items: center;
        width: 100%;
        height: 100%;
        padding-left: min(calc(50 / 1430 * 100vw), 50px);
        border: 2px solid #fff;
        background-color: rgba(255, 255, 255, .3);
        position: relative;
        z-index: +1;

        &::before,
        &::after {
          content: '';
          display: block;
          width: min(calc(52 / 1430 * 100vw), 52px);
          height: min(calc(52 / 1430 * 100vw), 52px);
          position: absolute;
          right: min(calc(40 / 1430 * 100vw), 40px);
          top: 50%;
          translate: 0 -50%;
        }
        &::after {
          background: url(../../assets/images/arrow-1.svg) no-repeat center center / contain;
          opacity: 1;
        }
        &::before {
          background-image: url(../../assets/images/arrow-2.svg);
          opacity: 0;
        }
        .en {
          font-size: min(calc(100 / 1430 * 100vw), 100px);
        }
        .jp {
          font-size: min(calc(18 / 1430 * 100vw), 18px);
          letter-spacing: .05em;
          margin-left: .5em;
        }
      }

      @media (hover: hover) {
        &::after {
          transition: opacity .3s ease;
        }
        & .bttn-inner {
          transition: background-color .3s ease;

          &::after,
          &::before {
            transition: .3s ease;
          }
          &:hover::after {
            opacity: 0;
          }
          &:hover::before {
            opacity: 1;
          }
          & + .img-box img {
            transition: opacity .3s ease;
          }
          &:hover + .img-box img {
            opacity: 1;
          }
        }
        &:hover::after {
          opacity: 1;
        }
        &:hover .bttn-inner {
          background-color: rgba(255, 255, 255, 0);
        }
      }
    }
  }
}
.footer-nav-area {
  display: flex;
  justify-content: space-between;
  width: min(calc(1170 / 1430 * 100vw), 1170px);
  margin: 0 auto;

  .logo-title {
    margin: 0;

    .logo {
      display: block;
      width: min(calc(150 / 1430 * 100vw), 150px);
      height: auto;

      a {
        display: block;
        width: 100%;
        height: 100%;

        @media (hover: hover) {
          opacity: 1;
          transition: opacity .3s ease;

          &:hover {
            opacity: .5
          }
        }
        img {
          display: block;
          width: 100%;
          height: auto;
        }
      }
    }
    .main-title {
      margin: min(calc(32 / 1430 * 100vw), 32px) 0 0;
      font-size: min(calc(20 / 1430 * 100vw), 20px);
      letter-spacing: .08em;
      color: #fff;
    }
  }
}
.footer-nav a {
  text-decoration: none;
  color: #fff;
  line-height: 1em;

  @media (hover: hover) {
    opacity: 1;
    transition: opacity .3s ease;

    &:hover {
      opacity: .5;
    }
  }
}
.footer-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;

  &.footer-menu {
    margin-right: max(calc(-80 / 1430 * 100vw), -80px);
  }
  &.footer-other-links {
    margin-top: min(calc(40 / 1430 * 100vw), 40px);
  }
}
.footer-menu {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: min(calc(60 / 1430 * 100vw), 60px);
  place-items: center;
  width: min(calc(780 / 1430 * 100vw), 780px);

  .coming-soon-menu & li:nth-child(3),
  .coming-soon-menu & li:nth-child(4) {
    pointer-events: none;
    opacity: .4;
  }

  a {
    font-weight: 500;
    font-size: min(calc(18 / 1430 * 100vw), 18px);
    letter-spacing: .05em;
  }
}
.footer-other-links {
  text-align: right;

  li {
    display: block;
    line-height: 1em;
    margin-bottom: min(calc(25 / 1430 * 100vw), 25px);

    a {
      font-size: min(calc(12 / 1430 * 100vw), 12px);
      letter-spacing: .12em;
    }
  }
}
.copyright {
  width: min(calc(1170 / 1430 * 100vw), 1170px);
  margin: 0 auto;

  p {
    margin: 0;
    text-align: right;
    font-size: min(calc(10 / 1430 * 100vw), 10px);
    letter-spacing: .08em;
    line-height: 1;
    color: #fff;
  }
}
