@charset "UTF-8";

/* =====================
  animation
===================== */
@keyframes show-up-text {
  0% {
    opacity: 0;
    translate: 0 100%;
  }

  100% {
    opacity: 1;
    translate: 0 0%;
  }
}

@keyframes scroll {
  0% {
    opacity: 0;
    translate: 0 -20%;
  }

  10% {
    opacity: 1;
    translate: 0 2%;
  }

  20% {
    opacity: 1;
    translate: 0 3%;
  }

  30% {
    opacity: 1;
    translate: 0 4%;
  }

  40% {
    opacity: 1;
    translate: 0 5%;
  }

  50% {
    opacity: 1;
    translate: 0 6%;
  }

  60% {
    opacity: 1;
    translate: 0 7%;
  }

  70% {
    opacity: 1;
    translate: 0 8%;
  }

  80% {
    opacity: 1;
    translate: 0 9%;
  }

  90% {
    opacity: 0;
    translate: 0 20%;
  }

  100% {
    opacity: 0;
    translate: 0 20%;
  }
}

@keyframes rotate {
  0% {
    rotate: 0deg;
  }

  100% {
    rotate: 360deg;
  }
}

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

  @media only screen and (width <= 768px) {
    --_block-size: 100svh;
  }

  position: relative;
  inline-size: 100%;
  block-size: 100vh;
  min-block-size: var(--_block-size);
  overflow: clip;

  @media only screen and (width <= 768px) {
    block-size: 100svh;
  }

  /* ==== グラデーション ==== */
  &::before {
    position: absolute;
    inset-block-end: 0;
    inset-inline: 0;
    z-index: 2;
    block-size: 471px;
    pointer-events: none;
    content: '';
    background: linear-gradient(180deg, rgb(25 89 142 / 0%) 0%, #19598e 100%);
  }

  @media only screen and (width <= 768px) {
    &::before {
      block-size: calc((100 / 390) * 552 * 1vw);
    }
  }

  /* ==== swiper ==== */
  .swiper {
    position: absolute;
    inset: auto;
    z-index: 1;
    inline-size: 100%;
    block-size: inherit;
    min-block-size: inherit;

    .swiper-wrapper {
      block-size: inherit;
      min-block-size: inherit;
    }

    .swiper-slide {
      block-size: inherit;
      min-block-size: inherit;

      & picture {
        block-size: inherit;
        min-block-size: inherit;
      }
    }

    & img {
      position: absolute;
      inset-block-start: 50%;
      inset-inline-start: 50%;
      inline-size: 100%;
      block-size: 100%;
      pointer-events: none;
      object-fit: cover;
      translate: -50% -50%;
    }
  }

  /* ==== inner ==== */
  .inner {
    position: relative;
    z-index: 2;
    display: block grid;
    grid-template-rows: 1fr auto auto;
    gap: 19px 0;
    align-items: flex-end;
    max-inline-size: 1280px;
    block-size: 100%;
    margin-inline: auto;
    color: var(--white);

    @media (width > 768px) {
      padding-block-end: 104px;
    }

    @media (width > 1910px) {
      max-inline-size: 1288px;
    }

    @media only screen and (width <= 768px) {
      gap: calc((100 / 390) * 19 * 1vw) 0;
      max-inline-size: 100%;
      padding-block-end: calc((100 / 390) * 64 * 1vw);
      padding-inline: calc((100 / 390) * 16 * 1vw);
    }

    /* ==== catch ==== */
    .catch {
      align-self: flex-end;
      inline-size: fit-content;
    }

    /* ==== Solution ==== */
    .catch[data-id='1'] {
      display: block flex;
      grid-row: 1 / 2;
      grid-column: 1 / 6;
      gap: 16px;
      align-items: baseline;
      font-weight: 400;

      @media only screen and (width <= 768px) {
        flex-wrap: wrap;
        grid-row: 1 / 2;
        grid-column: 1 / 2;
        gap: calc((100 / 390) * 5 * 1vw) calc((100 / 390) * 16 * 1vw);
      }

      & span {
        margin-block: calc((1em - 1lh) / 2);
        line-height: 1;
      }

      & :where([data-id='1'], [data-id='3']) {
        font-size: 72px;
        line-height: 1.2;

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

      & :where([data-id='2']) {
        font-size: 48px;
        color: var(--gray100, #d1d1d1);

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

    /* ==== Supporting Growth. ==== */
    .catch[data-id='2'] {
      grid-row: 2 / 3;
      grid-column: 1 / 2;
      margin-block: calc((1em - 1lh) / 2);
      font-size: 54px;
      font-weight: 300;
      line-height: 1;

      @media only screen and (width <= 768px) {
        grid-row: 2 / 3;
        grid-column: 1 / 2;
        font-size: calc((100 / 390) * 32 * 1vw);
      }
    }

    /* ==== 課題解決力と技術力で、発展を支える。 ==== */
    .catch[data-id='3'] {
      grid-row: 2 / 3;
      grid-column: 2 / 3;
      justify-self: flex-start;
      margin-block: calc((1em - 1lh) / 2);
      font-size: 22px;
      font-weight: 500;
      line-height: 1;
      translate: -5px -19px;

      @media only screen and (width <= 768px) {
        grid-row: 3 / 4;
        grid-column: 1 / 2;
        inline-size: 58vw;
        margin-block-start: 0;
        font-size: calc((100 / 390) * 19 * 1vw);
        line-height: 1.8;
        translate: 0 2.9vw;
      }
    }
  }

  /* ==== scroll ==== */
  .scroll {
    position: absolute;
    inset-block-end: -28px;
    inset-inline-end: 0;
    z-index: 2;
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    gap: 11px;
    justify-content: center;
    inline-size: 120px;
    aspect-ratio: 1 / 1;
    padding-block-start: 34px;
    pointer-events: none;
    border: 1px solid var(--white);
    border-radius: calc(infinity * 1px);

    @media (width > 768px) {
      inset-block-end: 64px;
    }

    @media only screen and (width <= 768px) {
      inset-block-end: 10.3vw;
      inset-inline-end: calc((100 / 390) * 16 * 1vw);
      gap: 1.3vw;
      inline-size: calc((100 / 390) * 80 * 1vw);
      padding-block-start: 5.6vw;
    }

    &::before,
    &::after {
      display: block flow;
      margin-inline: auto;
      content: '';
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
    }

    /* ==== scroll ==== */
    &::before {
      inline-size: 33px;
      block-size: 11px;
      background-image: url('../img/top/mv/scroll.svg');
    }

    @media only screen and (width <= 768px) {
      &::before {
        inline-size: calc((100 / 390) * 28.23 * 1vw);
        block-size: calc((100 / 390) * 8.75 * 1vw);
      }
    }

    /* ==== ↓ ==== */
    &::after {
      inline-size: 17px;
      block-size: 30px;
      background-image: url('../img/top/mv/arrow.svg');
      animation: scroll 3000ms linear 0ms infinite normal none running;
    }

    @media only screen and (width <= 768px) {
      &::after {
        inline-size: calc((100 / 390) * 11 * 1vw);
        block-size: calc((100 / 390) * 20.21 * 1vw);
      }
    }
  }
}

/* =====================
  news
===================== */
.news {
  padding-block: 16px 0;
  color: var(--white);

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

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: auto 1fr;
    gap: 81px;
    align-items: center;
    padding-inline: 40px;
    border-block: 1px solid var(--gray100);

    @media only screen and (width <= 768px) {
      position: relative;
      display: block flex;
      flex-direction: column;
      gap: 3.4vw;
      align-items: flex-start;
      padding-block: 6.1vw;
      padding-inline: calc((100 / 390) * 16 * 1vw);
    }
  }

  /* ==== News ==== */
  & [lang='en'] {
    grid-row: 1 / 2;
    grid-column: 1 / 2;
    font-size: 24px;
    line-height: 1;

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

  /* ==== a ==== */
  .anchor {
    position: relative;
    display: block flex;
    grid-row: 1 / 2;
    grid-column: 2 / 3;
    gap: 30px;
    align-items: center;
    padding-block: 30px;
    font-weight: 400;
    transition: all 250ms ease 0s;

    @media only screen and (width <= 768px) {
      position: unset;
      display: block flow;
      display: block grid;
      grid-auto-flow: row;
      gap: 0.7vw;
      align-items: flex-start;
      align-items: center;
      justify-content: flex-start;
      padding-block: 0;

      &::before {
        position: absolute;
        inset: 0;
        content: '';
      }
    }

    @media (any-hover: hover) {
      &:hover {
        opacity: 0.7;
      }
    }

    & time {
      font-family: var(--en);
    }

    .title {
      font-size: 15px;

      @media only screen and (width <= 768px) {
        margin-block: calc((1em - 1lh) / 2);
        font-size: calc((100 / 390) * 15 * 1vw);
      }
    }

    .u-arrow {
      position: absolute;
      inset-block: auto;
      inset-inline-end: 0;

      @media only screen and (width <= 768px) {
        inset-block-start: 6vw;
        inset-inline-end: 4vw;
        align-items: flex-start;
        align-self: flex-start;
        block-size: auto;
      }
    }
  }
}

/* =====================
  company
===================== */
.company {
  padding-block: 120px 107px;
  overflow: clip;
  color: var(--white);

  @media only screen and (width <= 768px) {
    padding-block: 13.4vw 19vw;
  }

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    grid-template-columns: 480px auto;
    gap: 27px 120px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: 12.3vw;
    }
  }

  /* ==== picture ==== */
  .picture {
    grid-row: 1 / span 5;
    grid-column: 1 / 2;

    & img {
      border-radius: 20px;

      @media only screen and (width <= 768px) {
        margin-block: calc((1em - 1lh) / 2);
        border-radius: calc((100 / 390) * 20 * 1vw);
      }
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-row: 1 / 2;
    grid-column: 2 / 3;
    margin-block: -5px calc((1em - 1lh) / 2);

    @media only screen and (width <= 768px) {
      padding-inline-start: calc((100 / 390) * 20 * 1vw);
      margin-block: 2.4vw calc((1em - 1lh) / 2);
    }
  }

  /* ==== catch ==== */
  .catch {
    grid-row: 2 / 3;
    grid-column: 2 / 3;
    margin-block-start: 27px;
    font-size: 26px;
    font-weight: 500;
    line-height: 1.8;

    @media only screen and (width <= 768px) {
      margin-block: calc((1em - 1lh) / 2);
      margin-block-start: 0;
      font-size: calc((100 / 390) * 23 * 1vw);
    }
  }

  /* ==== body ==== */
  .body {
    grid-row: 3 / 4;
    grid-column: 2 / 3;
    margin-block-start: 5px;
    font-weight: 400;
    line-height: 2;

    @media only screen and (width <= 768px) {
      margin-block: -3vw calc((1em - 1lh) / 2);
      font-size: calc((100 / 390) * 15 * 1vw);
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    grid-row: 4 / 5;
    grid-column: 2 / 3;
    margin-block-start: 27px;

    @media only screen and (width <= 768px) {
      margin-block: -1vw calc((1em - 1lh) / 2);
    }
  }

  /* ==== marquee ==== */
  .marquee {
    display: block flex;
    grid-area: 3 / 1 / 5 / 3;
    gap: 16px;
    inline-size: 100vw;
    margin-inline: calc(50% - 50vw);

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

    &[data-id='1'] {
      margin-block-start: 62px;

      @media only screen and (width <= 768px) {
        gap: calc((100 / 390) * 16 * 1vw);
        margin-block-start: 13vw;
      }
    }

    &[data-id='2'] {
      margin-block-start: 31px;

      @media only screen and (width <= 768px) {
        margin-block-start: 5.9vw;
      }
    }

    &[data-id='1']::before,
    &[data-id='1']::after {
      inline-size: 3835px;
      block-size: 60px;
      background-image: url('../img/top/company/loop-a.webp');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      animation: marquee 400s linear 0s infinite normal none running;
    }

    @media only screen and (width <= 768px) {
      &[data-id='1']::before,
      &[data-id='1']::after {
        inline-size: calc((100 / 390) * 1982 / 2 * 1vw);
        block-size: calc((100 / 390) * 97 / 2 * 1vw);
        background-image: url('../img/top/company/loop-a_sp.png');
        animation: marquee 200s linear 0s infinite normal none running;
      }
    }

    &[data-id='2']::before,
    &[data-id='2']::after {
      inline-size: 2074px;
      block-size: 57px;
      background-image: url('../img/top/company/loop-b.webp');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      animation: marquee-reverse 400s linear 0s infinite normal none running;
    }

    @media only screen and (width <= 768px) {
      &[data-id='2']::before,
      &[data-id='2']::after {
        inline-size: calc((100 / 390) * 1566 / 2 * 1vw);
        block-size: calc((100 / 390) * 97 / 2 * 1vw);
        background-image: url('../img/top/company/loop-b_sp.png');
        animation: marquee-reverse 200s linear 0s infinite normal none running;
      }
    }
  }
}

/* =====================
  business
===================== */
.business {
  position: relative;
  padding-block: 124px 120px;
  overflow: clip;

  @media only screen and (width <= 768px) {
    padding-block: 16.9vw 20.2vw;
  }

  /* ==== deco ==== */
  &::before {
    position: absolute;
    inset-block-start: 57px;
    inset-inline-start: -80px;
    z-index: 1;
    inline-size: 356px;
    block-size: 307px;
    pointer-events: none;
    content: '';
    background-image: url('../img/top/business/deco-l.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    animation: rotate 100s linear 0s infinite normal none running;
  }

  @media only screen and (width <= 768px) {
    &::before {
      inset-block-start: 7vw;
      inset-inline-start: -16.8vw;
      z-index: 1;
      inline-size: calc((100 / 390) * 449 / 2 * 1vw);
      block-size: calc((100 / 390) * 419 / 2 * 1vw);
      background-image: url('../img/top/business/deco-l_sp.png');
      animation: rotate 50s linear 0s infinite normal none running;
    }
  }

  /* ==== u-inner ==== */
  .u-inner {
    position: relative;
    z-index: 2;
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    grid-template-columns: auto 1fr;
    gap: 32px 200px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: calc((100 / 390) * 41 * 1vw);
    }

    /* ==== deco ==== */
    &::after {
      position: absolute;
      inset-block-start: 52px;
      inset-inline-end: -32px;
      inline-size: 257px;
      block-size: 256px;
      content: '';
      background-image: url('../img/top/business/deco-r.webp');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      animation: rotate 10s linear 0s infinite normal none running;
    }

    @media (width > 1910px) {
      &::after {
        inset-inline-end: 214px;
      }
    }

    @media only screen and (width <= 768px) {
      &::after {
        display: none;
      }
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-row: 1 / 3;
    grid-column: 1 / 2;
    margin-block-start: 11px;
  }

  /* ==== catch ==== */
  .catch {
    grid-row: 1 / 2;
    grid-column: 2 / 3;
    font-size: 26px;
    font-weight: 500;

    @media only screen and (width <= 768px) {
      padding-inline-end: 16vw;
      margin-block: calc((1em - 1lh) / 2);
      margin-block-start: 0;
      font-size: calc((100 / 390) * 23 * 1vw);
    }
  }

  /* ==== body ==== */
  .body {
    grid-row: 2 / 3;
    grid-column: 2 / 3;
    font-weight: 400;
    line-height: 2;

    @media only screen and (width <= 768px) {
      position: relative;
      margin-block: -1.5vw calc((1em - 1lh) / 2);
      font-size: calc((100 / 390) * 15 * 1vw);

      &::after {
        position: absolute;
        inset-block-end: -15.6vw;
        inset-inline-end: 2.8vw;
        inline-size: calc((100 / 390) * 240 / 2 * 1vw);
        block-size: calc((100 / 390) * 238 / 2 * 1vw);
        content: '';
        background-image: url('../img/top/business/deco-r_sp.png');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        animation: rotate 5s linear 0s infinite normal none running;
      }
    }
  }

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

    @media only screen and (width <= 768px) {
      margin-block: 1vw calc((1em - 1lh) / 2);
    }
  }

  /* ==== list ==== */
  .list {
    display: block grid;
    grid-template-columns: repeat(4, 1fr);
    grid-row: 4 / 5;
    grid-column: 1 / 3;
    gap: 24px;
    margin-block-start: 40px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: 5vw;
      margin-block-start: 5vw;
    }

    @media (any-hover: hover) {
      &:hover {
        & li {
          filter: brightness(0.7);
        }
      }
    }

    & li {
      position: relative;
      display: block grid;
      gap: 10px;
      padding-block: 32px 19px;
      padding-inline: 24px;
      background: var(--white);
      border-radius: 20px;
      transition: filter 600ms ease 0s;

      @media only screen and (width <= 768px) {
        gap: 3.4vw;
        padding-block: 6.4vw 4.8vw;
        padding-inline: calc((100 / 390) * 24 * 1vw);
        border-radius: calc((100 / 390) * 20 * 1vw);
      }

      /* ==== picture ==== */
      .picture {
        display: block flow;
        overflow: clip;
        border-radius: 10px;

        @media only screen and (width <= 768px) {
          border-radius: calc((100 / 390) * 10 * 1vw);
        }

        & img {
          transition: all 300ms var(--easeOutQuart) 0s;

          @media only screen and (width <= 768px) {
            inline-size: 100%;
          }
        }
      }

      @media (any-hover: hover) {
        &:hover {
          filter: brightness(1);

          & img {
            scale: 1.05;
            transition: all 500ms var(--easeOutQuart) 0s;
          }
        }
      }

      /* ==== h2 ==== */
      & h2 {
        display: block flex;
        gap: 8px;
        align-items: center;
        font-weight: 400;

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

        &::before {
          font-family: var(--en);
          font-size: 24px;
          font-weight: 400;
          color: var(--lightblue);
          content: attr(data-text);
        }

        @media only screen and (width <= 768px) {
          &::before {
            font-size: calc((100 / 390) * 22 * 1vw);
            line-height: 1;
            translate: 0 0.7vw;
          }
        }
      }

      /* ==== a ==== */
      & a::before {
        position: absolute;
        inset: 0;
        display: block flow;
        inline-size: 100%;
        block-size: 100%;
        content: '';
      }
    }
  }
}

/* =====================
  wrapper
===================== */
.wrapper[data-id='1'] {
  padding-block: 96px 120px;

  @media only screen and (width <= 768px) {
    padding-block: 16.4vw 20.5vw;
  }

  /* ==== u-inner ==== */
  .u-inner {
    display: block flex;
    gap: 64px;
    justify-content: center;
    margin-inline: auto;

    @media only screen and (width <= 768px) {
      flex-direction: column;
      gap: 10.2vw;
    }
  }

  /* ==== article ==== */
  & article {
    position: relative;
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    grid-template-columns: 1fr auto;
    gap: 37px 0;
    align-items: center;
    max-inline-size: 608px;
    padding-block: 59px 65px;
    padding-inline: 47.9px;
    background: var(--bg_blue, #e2eaf2);
    border-radius: 20px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: 7.7vw;
      align-items: flex-start;
      max-inline-size: 100%;
      padding-block: 11.4vw 12.3vw;
      padding-inline: 6.2vw;
      border-radius: calc((100 / 390) * 20 * 1vw);
    }

    @media (any-hover: hover) {
      &:hover {
        & img {
          scale: 1.05;
          transition: all 500ms var(--easeOutQuart) 0s;
        }
      }
    }
  }

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

  /* ==== u-arrow ==== */
  .u-arrow {
    grid-row: 1 / 2;
    grid-column: 2 / 3;
    min-inline-size: 61px;
    padding-block: 13.32px;
    translate: 0 1px;

    @media only screen and (width <= 768px) {
      position: absolute;
      inset-block-start: 15vw;
      inset-inline-end: calc((100 / 390) * 24 * 1vw);
      min-inline-size: 14.6vw;
      padding-block: 2.9vw;
      translate: unset;
    }

    &::after {
      inline-size: 16px;
    }
  }

  /* ==== body ==== */
  .body {
    grid-row: 2 / 3;
    grid-column: 1 / span 2;
    line-height: 2;

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

  /* ==== picture ==== */
  .picture {
    grid-row: 3 / 4;
    grid-column: 1 / span 2;
    overflow: clip;
    border-radius: 10px;

    @media only screen and (width <= 768px) {
      border-radius: calc((100 / 390) * 10 * 1vw);
    }

    & img {
      transition: all 300ms var(--easeOutQuart) 0s;
    }
  }

  /* ==== a ==== */
  & a {
    position: absolute;
    inset: 0;
    display: block flow;
    inline-size: 100%;
    block-size: 100%;
    content: '';
  }
}

/* =====================
  recruit
===================== */
.recruit {
  padding-block: 91px 120px;
  background-image: url('../img/top/recruit/bg.webp');
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;

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

  @media only screen and (width <= 768px) {
    padding-block: 15.5vw 20.7vw;
    background-image: url('../img/top/recruit/bg_sp.webp');
  }

  /* ==== u-inner ==== */
  .u-inner {
    position: relative;
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    grid-template-columns: 440px 512px;
    gap: 0 63px;
    align-items: flex-start;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: 3.2vw;
    }
  }

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

  /* ==== picture ==== */
  .picture {
    grid-row: 2 / 6;
    grid-column: 1 / 2;

    @media only screen and (width <= 768px) {
      inline-size: calc((100 / 390) * 280 * 1vw);
      margin-block: -9.6vw calc((1em - 1lh) / 2);
      margin-inline: auto 0;
    }
  }

  /* ==== catch ==== */
  .catch {
    grid-row: 2 / 3;
    grid-column: 2 / 3;
    padding-block-start: 23px;
    font-size: 26px;
    font-weight: 500;

    @media only screen and (width <= 768px) {
      padding-block-start: 9.3vw;
      margin-block: calc((1em - 1lh) / 2);
      font-size: calc((100 / 390) * 23 * 1vw);
    }
  }

  /* ==== body ==== */
  .body {
    grid-row: 3 / 4;
    grid-column: 2 / 3;
    padding-block-start: 32px;
    line-height: 2;

    @media only screen and (width <= 768px) {
      padding-block-start: 8.1vw;
      margin-block: calc((1em - 1lh) / 2);
      font-size: calc((100 / 390) * 15 * 1vw);
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    grid-row: 4 / 5;
    grid-column: 2 / 3;
    margin-block-start: 54px;

    @media only screen and (width <= 768px) {
      margin-block-start: 8.4vw;
    }
  }

  /* ==== deco ==== */
  .deco {
    position: absolute;

    @media only screen and (width <= 768px) {
      position: relative;
    }

    &[data-id='1'] {
      inset-block-end: -2px;
      inset-inline-end: 0;

      @media only screen and (width <= 768px) {
        inset: unset;
        inline-size: calc((100 / 390) * 188 * 1vw);
        margin-block-start: -3.2vw;
        margin-inline: auto 0;
      }
    }

    &[data-id='2'] {
      inset-block-start: 5px;
      inset-inline-end: 102px;

      @media only screen and (width <= 768px) {
        inset: unset;
        inline-size: calc((100 / 390) * 144 * 1vw);
        margin-block-start: -30.2vw;
        translate: -1vw 0;
      }
    }
  }
}

/* =====================
  parallax
===================== */
:root {
  --_transition: transform 1s ease, opacity 0.4s ease;
}

.js-parallax {
  opacity: 0;
  transform: translateY(1.75em);
  transition: var(--_transition);
  transition-delay: var(--_delay, 200ms), var(--_delay, 200ms);
  will-change: transform, opacity;

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

.mv {
  .js-parallax {
    --_transition: filter 1s ease, opacity 0.4s ease;

    opacity: 0;
    filter: blur(1em);
    transform: translateY(0);
    transition: var(--_transition);
    transition-delay: var(--_delay, 200ms), var(--_delay, 200ms);

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