@charset "UTF-8";

@media (width > 768px) {
  :root {
    --header-height: 99.38px;
  }
}

/* =====================
  header-color
===================== */
.header-color {
  .header {
    .inner {
      color: var(--color-text-primary);
      background: white;
      border-block-end: 1px solid rgb(0 0 0 / 20%);

      .contact {
        color: var(--color-text-primary);
        border-inline-start: 1px solid rgb(0 0 0 / 20%);

        &::before {
          background: var(--primary);
        }
      }
    }
  }
}

/* =====================
  wrap
===================== */
.wrap[data-id='1'] {
  position: relative;
  overflow: clip;

  >article {
    position: relative;
    z-index: 2;
    overflow: clip;
  }

  &::before {
    position: absolute;
    inset-block-start: 200px;
    inset-inline: 0;
    z-index: 1;
    block-size: 100%;
    content: '';
    background-image: url('../img/top/bg.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;

    @media (width > 1441px) {
      background-image: url('../img/top/bg_wide.webp');
    }

    @media (width <=768px) {
      inset-block-start: calc((100 / 390) * 100 * 1vw);
      background-image: url('../img/top/bg_sp.webp');
    }
  }
}

/* =====================
  mv
===================== */
.mv {
  --_block-size: 900px;

  @media (width <=768px) {
    --_block-size: calc((100 / 390) * 647 * 1vw);
  }

  block-size: var(--_block-size);

  .swiper-wrapper {
    position: absolute;
    inset: 0;
    margin-inline-start: 80px;

    @media (width <=768px) {
      margin-inline-start: calc((100 / 390) * 32 * 1vw);
    }
  }

  .marquee {
    position: absolute;
    inset-block: 0;
    inset-inline-start: 182px;
    z-index: 3;
    display: block flex;
    pointer-events: none;
    opacity: 0.2;

    @media (width <=768px) {
      inset-inline-start: 14.4vw;
    }

    span {
      display: block flex;
      flex-direction: column;
      gap: 1em;

      &::before,
      &::after {
        display: block flow;
        flex-shrink: 0;
        content: '';
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
      }

      &:first-child::before,
      &:first-child::after {
        inline-size: 155px;
        block-size: 4236px;
        background-image: url('../img/top/mv/text-01.svg');

        @media (width <=768px) {
          inline-size: calc((100 / 390) * 72 * 1vw);
          block-size: calc((100 / 390) * 1970 * 1vw);
        }
      }

      &:first-child {
        animation: marquee-y 30s linear infinite;
      }

      &:last-child {
        translate: -18px 0;
        animation: marquee-y 30s linear infinite reverse;

        @media (width <=768px) {
          translate: -2.6vw 0;
        }
      }

      &:last-child::before,
      &:last-child::after {
        inline-size: 160px;
        block-size: 4239px;
        background-image: url('../img/top/mv/text-02.svg');

        @media (width <=768px) {
          inline-size: calc((100 / 390) * 77 * 1vw);
          block-size: calc((100 / 390) * 1972 * 1vw);
        }
      }
    }
  }

  /* ==== inner ==== */
  .inner {
    position: relative;
    block-size: var(--_block-size);

    /* ==== h1 ==== */
    h1 {
      position: absolute;
      inset-block-end: 30px;
      inset-inline: 0;
      font-size: 14px;
      font-weight: 400;
      color: #a8a8a8;
      text-align: center;
      letter-spacing: 2.7px;
      writing-mode: vertical-rl;
      translate: -2.6px 99px;

      @media (width <=768px) {
        font-size: calc((100 / 390) * 13 * 1vw);
        letter-spacing: 0.8vw;
        translate: -6.9vw 13.1vw;
      }
    }

    /* ==== catch ==== */
    .catch-en {
      position: absolute;
      inset-block-start: 305px;
      inset-inline-start: 130px;
      z-index: 3;
      align-self: flex-start;
      font-size: 130px;
      font-weight: 400;
      color: white;
      letter-spacing: 2.7px;

      @media (width <=768px) {
        inset-block-start: 60.6vw;
        inset-inline-start: 16.3vw;
        font-size: calc((100 / 390) * 54 * 1vw);
        letter-spacing: calc((100 / 390) * -4.62 * 1vw);
      }

      span {
        display: block flow;
        margin-block: calc((1em - 1lh) / 2);
        font-weight: 500;
        line-height: 1;
        text-transform: uppercase;
        letter-spacing: -3.9px;

        @media (width <=768px) {
          letter-spacing: calc((100 / 390) * -1.62 * 1vw);
        }

        @media (width > 768px) {
          .wrap {
            display: inline;
          }
        }

        &:first-child {
          translate: 36px 0;

          @media (width <=768px) {
            translate: 0 0;
          }
        }

        &:nth-child(2) {
          margin-block-start: -26px;
          translate: 106px 0;

          @media (width <=768px) {
            margin-block-start: -2.9vw;
            translate: 3.5vw 0;
          }
        }

        &:last-child {
          margin-block-start: -26px;
          translate: 0 0;

          @media (width <=768px) {
            margin-block-start: -2.8vw;
            line-height: 0;
            translate: 11vw 0;

            .wrap {
              margin-block-start: -2.8vw;
              translate: 3.9vw 0;
            }
          }
        }
      }
    }

    .show-up-text .char {
      display: inline-block;
      opacity: 0;
    }

    .show-up-text.on .char {
      animation: show-up-text var(--easeOutExpo) 0.5s forwards;
    }

    /* ==== catch ==== */
    .catch {
      position: absolute;
      inset-block-start: 344px;
      inset-inline-start: 644px;
      z-index: 3;
      font-size: 27px;
      font-weight: 600;
      color: white;

      @media (width <=768px) {
        inset-block-start: 48.4vw;
        inset-inline-start: 12.1vw;
        font-size: calc((100 / 390) * 19 * 1vw);
      }
    }

    /* ==== body ==== */
    .body {
      position: absolute;
      inset-block-start: 663px;
      inset-inline-start: 131px;
      z-index: 3;
      color: white;

      @media (width <=768px) {
        inset-block-start: 113vw;
        inset-inline-start: 12.1vw;
        font-size: calc((100 / 390) * 12 * 1vw);
        font-weight: 400;
        line-height: 1.8;
      }
    }
  }
}

/* =====================
  message
===================== */
.message {
  position: relative;
  padding-block: 241px 332px;
  overflow: clip;

  @media (width <=768px) {
    padding-block: 37.1vw 53.1vw;
  }

  /* ==== u-inner ==== */
  .u-inner {
    position: relative;
    z-index: 2;
  }

  /* ==== body ==== */
  .body p {
    position: relative;
    z-index: 2;
    font-size: 18px;
    font-weight: 400;
    line-height: 2.4;
    text-align: center;

    @media (width <=768px) {
      font-size: calc((100 / 390) * 15 * 1vw);
      line-height: 2;
    }

    &+p {
      margin-block-start: 42px;

      @media (width <=768px) {
        margin-block-start: 7.7vw;
      }
    }
  }

  /* ==== img ==== */
  .img {
    pointer-events: none;

    picture {
      position: absolute;

      &[data-id='1'] {
        inset-block-start: -353px;
        inset-inline-start: -113px;

        @media (width <=768px) {
          inset-block-start: -37.2vw;
          inset-inline-start: 0;
          inline-size: calc((100 / 390) * 374 / 2 * 1vw);
          block-size: calc((100 / 390) * 392 / 2 * 1vw);
        }
      }

      &[data-id='2'] {
        inset-block-start: -10px;
        inset-inline-start: 212px;
        z-index: 2;

        @media (width <=768px) {
          inset-block-start: -27.1vw;
          inset-inline-start: 4vw;
          inline-size: calc((100 / 390) * 53 * 1vw);
          block-size: calc((100 / 390) * 53 * 1vw);
        }
      }

      &[data-id='3'] {
        inset-block-start: 185px;
        inset-inline-start: -123px;

        @media (width <=768px) {
          inset-block-start: 31vw;
          inset-inline-start: 0;
          inline-size: calc((100 / 390) * 128 * 1vw);
          block-size: calc((100 / 390) * 244 * 1vw);
        }
      }

      &[data-id='4'] {
        inset-block-start: 597px;
        inset-inline-start: 321px;

        @media (width <=768px) {
          inset-block-start: 145.4vw;
          inset-inline-start: 8vw;
          inline-size: calc((100 / 390) * 143 * 1vw);
          block-size: calc((100 / 390) * 82 * 1vw);
        }
      }

      &[data-id='5'] {
        inset-block-start: -47px;
        inset-inline-end: -124px;
        z-index: 2;

        @media (width <=768px) {
          inset-block-start: -17.5vw;
          inset-inline-end: 0;
          inline-size: calc((100 / 390) * 48 * 1vw);
          block-size: calc((100 / 390) * 97 * 1vw);
        }
      }

      &[data-id='6'] {
        inset-block-start: 98px;
        inset-inline-end: -129px;

        @media (width <=768px) {
          inset-block-start: 77vw;
          inset-inline-end: 0;
          inline-size: calc((100 / 390) * 173 / 2 * 1vw);
          block-size: calc((100 / 390) * 406 / 2 * 1vw);
        }
      }

      &[data-id='7'] {
        inset-block-start: 417px;
        inset-inline-end: -39px;
        z-index: 2;

        @media (width <=768px) {
          inset-block-start: 127vw;
          inset-inline-end: 4.1vw;
          inline-size: calc((100 / 390) * 120 * 1vw);
          block-size: calc((100 / 390) * 105 * 1vw);
        }
      }
    }
  }

  /* ==== u-marquee ==== */
  .u-marquee {
    position: absolute;
    inset-block-end: 48px;
    inset-inline: 0;
    z-index: 2;
    display: block flex;
    gap: 1em;
    inline-size: 100vw;
    margin-inline: calc(50% - 50vw);
    pointer-events: none;

    @media (width <=768px) {
      inset-block-end: 19vw;
    }

    &::before,
    &::after {
      display: block flow;
      flex-shrink: 0;
      inline-size: 2506px;
      block-size: 99px;
      content: '';
      background-image: url('../img/top/message/text.svg');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      animation: marquee 200s linear infinite;

      @media (width <=768px) {
        inline-size: calc((100 / 390) * 964 * 1vw);
        block-size: calc((100 / 390) * 38 * 1vw);
      }
    }
  }
}

/* =====================
  about
===================== */
.about {
  position: relative;
  padding-block: 179px 80px;
  overflow: clip;

  @media (width <=768px) {
    padding-block: 9.1vw 15.1vw;
  }

  &::after {
    position: absolute;
    inset-block-end: 0;
    inset-inline: 0;
    z-index: 1;
    inline-size: 100%;
    block-size: 487px;
    content: '';
    background-image: url('../img/top/about/bg.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;

    @media (width > 1441px) {
      background-image: url('../img/top/about/bg_wide.webp');
    }

    @media (width <=768px) {
      block-size: calc((100 / 390) * 511 * 1vw);
      background-image: url('../img/top/about/bg_sp.webp');
    }
  }

  /* ==== .u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: 1fr 600px;
    gap: 0 80px;
    align-items: flex-start;
    justify-content: inherit;

    @media (width <=768px) {
      display: block flex;
      flex-direction: column;
      gap: 0;
    }
  }

  /* ==== picture ==== */
  .picture {
    position: relative;
    z-index: 2;
    grid-row: 1 / 3;
    grid-column: 1 / 2;
    block-size: 450px;
    margin-inline: calc(50% - 50cqi) 0;

    @media (width <=768px) {
      order: 2;
      inline-size: 100vw;
      block-size: calc((100 / 390) * 210 * 1vw);
      margin-block-start: 6.7vw;
      margin-inline: calc(50% - 50cqi);
    }

    img {
      position: absolute;
      inset-block-start: 50%;
      inset-inline-start: 50%;
      z-index: -1;
      inline-size: 100%;
      block-size: 100%;
      pointer-events: none;
      object-fit: cover;
      object-position: top right;
      translate: -50% -50%;
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    position: relative;
    z-index: 2;
    grid-row: 1 / 2;
    grid-column: 2 / 3;
    margin-block-start: -4px;

    @media (width <=768px) {
      order: 1;
    }
  }

  /* ==== text ==== */
  .text {
    position: relative;
    z-index: 2;
    display: block grid;
    grid-row: 2 / 3;
    grid-column: 2 / 3;
    gap: 25px;
    margin-block-start: 114px;
    color: white;

    @media (width <=768px) {
      gap: 5.2vw;
      order: 3;
      padding-block-start: 12.5vw;
      margin-block-start: 0;
    }

    .catch {
      font-size: 34px;
      font-weight: 500;
      line-height: 1.6;
      color: #fff;
      letter-spacing: 1.7px;

      @media (width <=768px) {
        font-size: calc((100 / 390) * 24 * 1vw);
        letter-spacing: calc((100 / 390) * 1.2 * 1vw);
      }
    }

    .body {
      max-inline-size: 470px;
      font-size: 15px;
      font-weight: 400;

      @media (width <=768px) {
        font-size: calc((100 / 390) * 15 * 1vw);
      }
    }

    .anchor {
      display: block flex;
      gap: 21px;
      margin-block-start: 15px;

      @media (width <=768px) {
        display: block flex;
        flex-direction: column;
        gap: 5.2vw;
        max-inline-size: calc((100 / 390) * 240 * 1vw);
        margin-block-start: 2.3vw;
        margin-inline: auto;

        a {
          min-inline-size: 100%;
          max-inline-size: 100%;
        }
      }
    }
  }
}

/* =====================
  product
===================== */
.product {
  padding-block: 96px 30px;
  overflow: clip;

  @media (width <=768px) {
    padding-block: 33.1vw 12.1vw;
  }

  /* ==== .u-inner ==== */
  .u-inner {
    position: relative;
    display: block grid;

    @media (width > 768px) {
      padding-inline-start: 81px;
    }

    &::before {
      position: absolute;
      inset-block-start: 57px;
      inset-inline-end: -80px;
      z-index: -1;
      inline-size: 820px;
      block-size: 274px;
      pointer-events: none;
      content: '';
      background-image: url('../img/top/product/text.svg');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;

      @media (width <=768px) {
        inset-block-start: -12.9vw;
        inset-inline-end: 0;
        inline-size: calc((100 / 390) * 277 * 1vw);
        block-size: calc((100 / 390) * 90 * 1vw);
      }
    }
  }

  /* ==== body ==== */
  .body {
    max-inline-size: 564px;
    margin-block-start: 59px;
    font-size: 15px;

    @media (width <=768px) {
      max-inline-size: 100%;
      margin-block-start: 10.5vw;
      font-size: calc((100 / 390) * 15 * 1vw);
    }
  }

  /* ==== u-marquee ==== */
  .u-marquee {
    display: block flex;
    gap: 10px;
    align-items: center;
    inline-size: 100vw;
    margin-block-start: 61px;
    margin-inline: calc(50% - 50cqi);
    animation: marquee 200s linear infinite;

    @media (width <=768px) {
      gap: calc((100 / 390) * 5 * 1vw);
      margin-block-start: 10.2vw;
      animation-duration: 50s;
    }

    img {
      flex-shrink: 0;
      translate: -80px 0;

      @media (width <=768px) {
        inline-size: calc((100 / 390) * 185 * 1vw);
        translate: calc((100 / 390) * -80 * 1vw) 0;
      }
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    margin-block-start: 59px;
    translate: -40px 0;

    @media (width <=768px) {
      min-inline-size: calc((100 / 390) * 240 * 1vw);
      margin-block-start: 10vw;
      translate: unset;
    }
  }
}

/* =====================
  recruit
===================== */
.recruit {
  padding-block: 100px;

  @media (width <=768px) {
    padding-block: 8.5vw;
    padding-inline: calc((100 / 390) * 16 * 1vw);
  }

  /* ==== .u-inner ==== */
  .u-inner {
    position: relative;
    display: block grid;
    gap: 0;
    align-items: flex-start;
    max-inline-size: 1360px;
    min-block-size: 594px;
    padding-block: 104px;
    padding-inline: 120px;
    overflow: clip;
    color: white;
    background-image: url('../img/top/recruit/bg.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    border-radius: 20px;

    @media (width <=768px) {
      max-inline-size: 100%;
      min-block-size: 100%;
      padding-block: 11vw 82vw;
      padding-inline: calc((100 / 390) * 16 * 1vw) calc((100 / 390) * 5 * 1vw);
      background-image: url('../img/top/recruit/bg_sp.webp');
      border-radius: calc((100 / 390) * 20 * 1vw);
    }

    &::before {
      position: absolute;
      inset-block-start: 40px;
      inset-inline-end: 123px;
      z-index: 1;
      inline-size: 640px;
      block-size: 164px;
      content: '';
      background-image: url('../img/top/recruit/text.svg');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;

      @media (width <=768px) {
        position: relative;
        inset: unset;
        inline-size: calc((100 / 390) * 303 * 1vw);
        block-size: calc((100 / 390) * 95 * 1vw);
        margin-inline: auto;
        background-image: url('../img/top/recruit/text_sp.svg');
        translate: -2.4vw 0;
      }
    }
  }

  /* ==== catch ==== */
  .catch {
    font-size: 34px;
    font-weight: 500;
    line-height: 1.6;
    letter-spacing: 1.7px;

    @media (width <=768px) {
      margin-block-start: 7.2vw;
      font-size: calc((100 / 390) * 24 * 1vw);
      letter-spacing: calc((100 / 390) * 1.2 * 1vw);
    }
  }

  /* ==== body ==== */
  .body {
    max-inline-size: 517px;
    margin-block-start: 10px;
    font-size: 15px;
    font-weight: 400;

    @media (width <=768px) {
      max-inline-size: 100%;
      margin-block-start: 7.8vw;
      font-size: calc((100 / 390) * 15 * 1vw);
    }
  }

  /* ==== anchor ==== */
  .u-anchor {
    margin-block-start: 23px;

    @media (width <=768px) {
      min-inline-size: calc((100 / 390) * 240 * 1vw);
      max-inline-size: calc((100 / 390) * 240 * 1vw);
      margin-block-start: 10.2vw;
      margin-inline: auto;
      translate: 0.6vw 0;
    }
  }
}

/* =====================
  news
===================== */
.news {
  padding-block: 46px 111.3px;

  @media (width <=768px) {
    padding-block: calc((100 / 390) * 46 * 1vw) 23.1vw;
  }

  /* ==== inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: 1fr auto;
    gap: 0;
    align-items: center;
    max-inline-size: 1083px;
    translate: -20px 0;

    @media (width <=768px) {
      display: block flex;
      flex-direction: column;
      max-inline-size: 100%;
      translate: unset;
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-row: 1 / 2;
    grid-column: 1 / 2;
  }

  /* ==== u-news ==== */
  .u-news {
    grid-row: 1 / 4;
    grid-column: 2 / 3;
    inline-size: 740px;
    margin-block-start: -33px;

    @media (width <=768px) {
      inline-size: 100%;
      margin-block-start: 0.3vw;
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    grid-row: 2 / 3;
    grid-column: 1 / 2;
    margin-block-start: 90px;

    @media (width <=768px) {
      margin-block-start: -0.4vw;
    }
  }
}

/* =====================
  animation
===================== */
[data-parallax='fade'] {
  opacity: 0;
  filter: blur(1rem);
  transition: all 1000ms var(--slideInBezier) var(--_delay, 0ms);

  &.on {
    opacity: 1;
    filter: blur(0);
  }
}

[data-parallax='slideUp'] {
  --_transition: transform 1s var(--slideInBezier), opacity 0.4s var(--slideInBezier);

  opacity: 0;
  transform: translateY(1.5rem);
  transition: var(--_transition);
  transition-delay: var(--_delay, 200ms), var(--_delay, 200ms);
  will-change: transform, opacity;

  &.on {
    opacity: 1;
    transform: translateY(0);
  }
}
