@charset "UTF-8";

/* =====================
  animation
===================== */
@keyframes zoom {
  0% {
    scale: 1;
  }

  100% {
    scale: 1.15;
  }
}

/* 線のアニメーション */
@keyframes scroll {
  0% {
    transform: scale(1, 0);
    transform-origin: 0 0;
  }

  50% {
    transform: scale(1, 1);
    transform-origin: 0 0;
  }

  50.1% {
    transform: scale(1, 1);
    transform-origin: 0 100%;
  }

  100% {
    transform: scale(1, 0);
    transform-origin: 0 100%;
  }
}

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

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

  position: relative;
  inline-size: 100%;
  block-size: calc(100lvh + 0px);
  min-block-size: var(--_block-size);
  overflow: clip;

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

  /* ==== triangle ==== */
  &::before,
  &::after {
    position: absolute;
    z-index: 20;
    display: block flow;
    pointer-events: none;
    content: '';
    background: color-mix(in srgb, #44bade 80%, transparent);
  }

  &::before {
    inset-block-start: 0;
    inset-inline-start: 0;
    inline-size: 427px;
    block-size: 277px;
    clip-path: polygon(0 0, 0% 100%, 100% 0);
  }

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

  &::after {
    inset-block-end: 0;
    inset-inline-end: 0;
    inline-size: 427px;
    block-size: 277px;
    clip-path: polygon(100% 0, 0% 100%, 100% 100%);
  }

  @media only screen and (width <= 768px) {
    &::after {
      inline-size: calc((100 / 390) * 334 * 1vw);
      block-size: calc((100 / 390) * 188 * 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%;
    }

    .zoom img {
      animation: zoom 15s linear 0ms 1 normal both running;
    }
  }

  /* ==== inner ==== */
  .inner {
    position: relative;
    z-index: 20;
    min-block-size: var(--_block-size);
    padding-block: 278px 80px;
    padding-inline: 120px;
    margin-inline: auto;

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

    /* ==== catch-en ==== */
    .catch-en {
      padding-inline-start: 0.9px;
      margin-block: calc((1em - 1lh) / 2);
      font-size: 64px;
      font-weight: 500;
      color: var(--white);
      text-shadow: 0 0 7px rgb(44 49 59 / 25%);

      @media only screen and (width <= 768px) {
        padding-inline: 0 6vw;
        font-size: calc((100 / 390) * 32 * 1vw);
        line-height: 1.3;
        letter-spacing: calc((100 / 390) * 0.96 * 1vw);
        text-shadow: 0 0 calc((100 / 390) * 7 * 1vw) rgb(44 49 59 / 25%);
      }
    }

    /* ==== catch ==== */
    .catch {
      margin-block: 18px;
      font-size: 24px;
      font-weight: 600;
      line-height: 1.5;
      color: var(--white);
      text-shadow: 0 0 7px rgb(44 49 59 / 25%);

      @media only screen and (width <= 768px) {
        margin-block: calc((100 / 390) * 14 * 1vw);
        font-size: calc((100 / 390) * 15 * 1vw);
        text-shadow: 0 0 calc((100 / 390) * 7 * 1vw) rgb(44 49 59 / 25%);
      }
    }

    /* ==== show-up-text ==== */
    .show-up-text {
      position: relative;
      display: block flow;
      overflow: hidden;

      span.char {
        opacity: 0;
      }

      &.on {
        span.char {
          display: inline-block;
          overflow: clip;
          white-space: nowrap;
          opacity: 0;
          translate: 0 100%;
          animation: show-up-text 350ms cubic-bezier(0, 0.6, 0.4, 1) 2500ms 1 alternate forwards running;
        }
      }
    }
  }

  /* ==== pagination ==== */
  .pagination {
    position: absolute;
    inset: unset;
    inset-block-end: 40px;
    inset-inline-start: 50%;
    z-index: 21;
    display: block flex;
    gap: 24px;
    inline-size: fit-content;
    width: unset;
    pointer-events: none;
    translate: -50% 0;

    @media only screen and (width <= 768px) {
      inset-block-end: calc((100 / 390) * 142 * 1vw);
      inset-inline-start: 20.5vw;
      gap: calc((100 / 390) * 15 * 1vw);
      translate: unset;
    }

    .swiper-pagination-bullet {
      inline-size: 20px;
      block-size: 10px;
      margin: unset;
      pointer-events: none;
      background: rgb(255 255 255 / 60%);
      border-radius: 10px;
      opacity: unset;

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

      &.swiper-pagination-bullet-active {
        background: var(--white);
      }
    }
  }

  /* ==== banner ==== */
  .banner {
    position: absolute;
    inset-block-end: 40px;
    inset-inline-end: 40px;
    z-index: 21;

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

      & img {
        inline-size: calc((100 / 390) * 200 * 1vw);
      }
    }
  }

  /* ==== news ==== */
  .news {
    position: absolute;
    inset-block-end: 41px;
    inset-inline-start: 0;
    z-index: 21;

    @media only screen and (width <= 768px) {
      inset-block-end: calc((100 / 390) * 14.1 * 1vw);
      inline-size: 100%;
    }

    &::before {
      position: absolute;
      inset-block-start: 50%;
      inset-inline-start: 50%;
      inline-size: 100%;
      block-size: 100%;
      content: '';
      background: rgb(255 255 255 / 60%);
      border-radius: 0 10px 10px 0;
      backdrop-filter: blur(3px);
      translate: -50% -50%;
    }

    @media only screen and (width <= 768px) {
      &::before {
        border-radius: unset;
      }
    }

    .contents {
      position: relative;
      z-index: 2;
      display: block grid;
      padding-block: 14px 16px;
      padding-inline: 40px 39px;
      color: var(--black);

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

      & [lang='en'] {
        display: block flow;
        inline-size: 100%;
        padding-block-end: 13px;
        font-size: 24px;
        font-weight: 600;
        line-height: 1;
        border-block-end: 1px solid #282828;

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

      & a {
        display: block grid;
        gap: 1px;
        align-items: center;
        padding-inline-end: 24px;
        margin-block-start: 12px;

        @media only screen and (width <= 768px) {
          gap: 2.25vw;
          padding-inline-end: 0;
          margin-block-start: 2.4vw;
        }

        & time {
          grid-area: 1 / 1 / 2 / 2;
          font-size: 15px;
          font-weight: 400;

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

        .title {
          grid-area: 2 / 1 / 3 / 2;
          inline-size: 493px;
          margin-block: calc((1em - 1lh) / 2);

          @media (width > 768px) {
            overflow: hidden;
            text-overflow: ellipsis;
            font-weight: 500;
            white-space: nowrap;
          }

          @media only screen and (width <= 768px) {
            inline-size: calc((100 / 390) * 264 * 1vw);
            font-size: calc((100 / 390) * 12 * 1vw);
            line-height: normal;
          }
        }

        &::after {
          grid-area: 1 / 2 / 3 / 3;
          inline-size: 12px;
          aspect-ratio: 12 / 26;
          content: '';
          background-color: currentcolor;
          mask-image: var(--icon-arrow-thin-small);
          mask-repeat: no-repeat;
          mask-position: center;
          mask-size: contain;
          translate: 0 3px;
        }

        @media only screen and (width <= 768px) {
          &::after {
            justify-self: flex-end;
            inline-size: calc((100 / 390) * 9 * 1vw);
            translate: 0.1vw -0.4vw;
          }
        }
      }
    }
  }

  /* ==== scroll ==== */
  .scroll {
    position: absolute;
    inset-block-end: 207px;
    inset-inline-start: 40px;
    z-index: 20;
    display: block grid;
    gap: 19px;
    pointer-events: none;

    @media only screen and (width <= 768px) {
      inset-block-end: 36.7vw;
      inset-inline-start: 4.3vw;
      gap: calc((100 / 390) * 8 * 1vw);
    }

    &::before {
      inline-size: 55px;
      block-size: 12px;
      content: '';
      background-image: url('../img/top/mv/scroll.svg');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
    }

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

    &::after {
      display: block flow;
      inline-size: 2px;
      block-size: 82px;
      margin-inline: auto;
      content: '';
      background: var(--white);
      border-radius: calc(infinity * 1px);
      animation: scroll 2s cubic-bezier(1, 0, 0, 1) infinite;
    }

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

/* =====================
  company
===================== */
.company {
  padding-block: 85px 104px;
  overflow: clip;

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

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

  /* ==== img ==== */
  .img {
    position: absolute;
    inset-block-start: 43px;
    display: block grid;
    gap: 60px;
    pointer-events: none;

    @media only screen and (width <= 768px) {
      position: absolute;
      inset-block-start: unset;
      inset-inline-start: 50%;
      display: block flex;
      gap: calc((100 / 390) * 14 * 1vw);
      inline-size: 100%;
      padding-inline: calc((100 / 390) * 16 * 1vw);
      translate: -50% 0;
    }

    &[data-id='1'] {
      @media (width > 768px) {
        inset-inline-start: -40px;
        translate: 0;

        & img:nth-child(even) {
          translate: 40px 0;
        }
      }

      @media only screen and (width <= 768px) {
        inset-block-start: calc((100 / 390) * 119 * -1 * 1vw);

        & img {
          inline-size: calc((100 / 390) * 110 * 2 * 1vw);

          &:nth-child(even) {
            translate: 0 -5.1vw;
          }
        }
      }
    }

    &[data-id='2'] {
      @media (width > 768px) {
        inset-inline-end: -40px;

        & img:nth-child(even) {
          translate: -40px 0;
        }
      }

      @media only screen and (width <= 768px) {
        inset-block-end: calc((100 / 390) * -133 * 1vw);

        & img {
          inline-size: calc((100 / 390) * 110 * 2 * 1vw);

          &:nth-child(even) {
            translate: 0 5.1vw;
          }
        }
      }
    }
  }

  /* ==== contents ==== */
  .contents {
    position: relative;
    z-index: 2;
    display: block grid;
    gap: 32px;
    inline-size: fit-content;
    margin-inline: auto;
    text-align: center;

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

    &::before {
      position: absolute;
      inset-block-start: -18px;
      inset-inline-start: 50%;
      z-index: 1;
      inline-size: 636px;
      block-size: 820px;
      pointer-events: none;
      content: '';
      background-image: url('../img/top/company/bg.webp');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      translate: -50% 0;
    }

    @media only screen and (width <= 768px) {
      &::before {
        inset-block-start: 44.5vw;
        inset-inline-start: 50%;
        inline-size: calc((100 / 390) * 720 / 2 * 1vw);
        block-size: calc((100 / 390) * 874 / 2 * 1vw);
        background-image: url('../img/top/company/bg_sp.webp');
      }
    }

    .head {
      position: relative;
      z-index: 2;
      font-size: 32px;
      font-weight: 500;

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

    .body {
      position: relative;
      z-index: 2;
      font-size: 18px;

      @media only screen and (width <= 768px) {
        padding-inline: 0.6vw 0.7vw;
        font-size: calc((100 / 390) * 15 * 1vw);
        line-height: 1.8;
        text-align: left;
      }

      & p {
        line-height: 2;
        color: var(--black);

        @media only screen and (width <= 768px) {
          line-height: 1.8;
          word-break: break-all;
        }

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

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

    /* ==== u-anchor ==== */
    .u-anchor {
      position: relative;
      z-index: 2;
      margin-block-start: 18px;
      margin-inline: auto;

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

/* =====================
  business
===================== */
.business {
  padding-block: 107px 120px;
  background: #f2fcff;

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

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: auto 723px auto;
    align-items: center;
    padding-inline: 15px;

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

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-area: 1 / 1 / 2 / 2;

    @media only screen and (width <= 768px) {
      translate: -3.8vw 0;
    }
  }

  /* ==== .body ==== */
  .body {
    grid-area: 1 / 2 / 2 / 3;
    padding-inline-end: 10px;
    font-size: 18px;
    line-height: 2;
    color: var(--black);

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

  /* ==== .anchor ==== */
  .u-anchor {
    grid-area: 1 / 3 / 2 / 4;
    place-self: flex-end flex-end;

    @media (width > 768px) {
      translate: -25px -10px;
    }
  }

  /* ==== list ==== */
  .list {
    display: grid;
    grid-area: 2 / 1 / 3 / 4;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px;
    padding-inline: 25px;
    margin-block-start: 38px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: calc((100 / 390) * 16 * 1vw);
      inline-size: 100%;
      padding-inline: calc((100 / 390) * 0 * 1vw);
      margin-block-start: calc((100 / 390) * 26 * 1vw);
    }

    & li {
      position: relative;
      block-size: 301px;
      overflow: clip;
      border-radius: 20px;

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

      & a::before {
        position: absolute;
        inset-block-start: 0;
        inset-inline-start: 0;
        z-index: 3;
        inline-size: 100%;
        block-size: 100%;
        content: '';
      }

      & .picture {
        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%;
        transition: scale 300ms ease 0s;
        will-change: scale;
      }

      @media (any-hover: hover) {
        &:hover {
          & .picture {
            scale: 1.05;
          }
        }
      }

      .text {
        position: absolute;
        inset-inline-start: 50%;
        z-index: 2;
        display: block grid;
        gap: 13px;
        inline-size: 100%;
        padding-block: 15px 18px;
        color: var(--white);
        translate: -50% 0;

        @media only screen and (width <= 768px) {
          inset-block-end: 0;
          gap: calc((100 / 390) * 6 * 1vw);
          padding-block: calc((100 / 390) * 6.3 * 1vw) calc((100 / 390) * 11 * 1vw);
          padding-inline: 19.8vw calc((100 / 390) * 16 * 1vw);
        }

        .catch {
          inline-size: fit-content;
          margin-block: calc((1em - 1lh) / 2);
          margin-inline: auto;

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

        .title {
          display: block flex;
          gap: 16px;
          inline-size: fit-content;
          padding-inline-start: 16px;
          margin-block: calc((1em - 1lh) / 2);
          margin-inline: auto;
          font-size: 24px;
          font-weight: 700;
          translate: -8px 0;

          @media only screen and (width <= 768px) {
            gap: calc((100 / 390) * 8 * 1vw);
            padding-inline-start: 0;
            margin-inline: 0;
            font-size: calc((100 / 390) * 16 * 1vw);
            translate: calc((100 / 390) * 0 * 1vw) 0;
          }

          &::after {
            inline-size: 32px;
            aspect-ratio: 1 / 1;
            content: '';
            background-image: url('../img/_common/icon/arrow-circle-transparent.svg');
            background-repeat: no-repeat;
            background-position: center;
            background-size: contain;
          }

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

        &::before {
          position: absolute;
          z-index: 2;
          display: block flow;
          inline-size: 110px;
          aspect-ratio: 1 / 1;
          content: '';
          border-radius: calc(infinity * 1px);
        }

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

        &::after {
          position: absolute;
          z-index: 3;
          display: block flow;
          content: '';
          background-repeat: no-repeat;
          background-position: center;
          background-size: contain;
        }

        @media only screen and (width <= 768px) {
          &::after {
            inset-block-end: 6.2vw;
            inset-inline-start: 6.3vw;
          }
        }
      }

      &[data-id='01'] {
        .text {
          inset-block-end: 0;
          background: rgb(17 123 48 / 80%);

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

          @media (width > 768px) {
            padding-inline: 0 90px;

            &::before {
              inset-block-end: 16px;
              inset-inline-end: 16px;
            }
          }

          &::after {
            inline-size: 50px;
            block-size: 52px;
            background-image: url('../img/_common/icon/recycle.svg');
          }

          @media (width > 768px) {
            &::after {
              inset-block-end: 45px;
              inset-inline-end: 46px;
            }
          }

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

      &[data-id='02'] {
        .text {
          inset-block-end: 0;
          background: rgb(156 132 0 / 80%);

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

          @media (width > 768px) {
            padding-inline: 90px 0;

            &::before {
              inset-block-end: 16px;
              inset-inline-start: 16px;
            }
          }

          &::after {
            inline-size: 50px;
            block-size: 43px;
            background-image: url('../img/_common/icon/box.svg');
          }

          @media (width > 768px) {
            &::after {
              inset-block-end: 50px;
              inset-inline-start: 46px;
            }
          }

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

      &[data-id='03'] {
        .text {
          background: rgb(7 110 154 / 80%);

          @media (width > 768px) {
            inset-block-start: 0;
            padding-inline: 0 90px;
          }

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

          @media (width > 768px) {
            &::before {
              inset-block-start: 16px;
              inset-inline-end: 16px;
            }
          }

          &::after {
            inline-size: 65px;
            block-size: 35px;
            background-image: url('../img/_common/icon/ship.svg');
          }

          @media (width > 768px) {
            &::after {
              inset-block-end: -1px;
              inset-inline-end: 38px;
            }
          }

          @media only screen and (width <= 768px) {
            &::after {
              inset-block-end: 7.1vw;
              inset-inline-start: calc((100 / 390) * 19 * 1vw);
              inline-size: calc((100 / 390) * 33 * 1vw);
              block-size: calc((100 / 390) * 17 * 1vw);
            }
          }
        }
      }

      &[data-id='04'] {
        .text {
          background: rgb(158 24 30 / 80%);

          @media (width > 768px) {
            inset-block-start: 0;
            padding-inline: 90px 0;
          }

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

          @media (width > 768px) {
            &::before {
              inset-block-start: 16px;
              inset-inline-start: 16px;
            }
          }

          &::after {
            inline-size: 61px;
            block-size: 45px;
            background-image: url('../img/_common/icon/hammer.svg');
          }

          @media (width > 768px) {
            &::after {
              inset-block-start: 48px;
              inset-inline-start: 40px;
            }
          }

          @media only screen and (width <= 768px) {
            &::after {
              inset-block-end: 6.4vw;
              inset-inline-start: calc((100 / 390) * 21 * 1vw);
              inline-size: calc((100 / 390) * 31 * 1vw);
              block-size: calc((100 / 390) * 23 * 1vw);
            }
          }
        }
      }
    }
  }
}

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

  @media only screen and (width <= 768px) {
    padding-block: calc((100 / 390) * 64 * 1vw);
    background-image: url('../img/top/merchandise/bg_sp.webp');
  }

  /* ==== img ==== */
  .img {
    display: block flex;
    gap: 16px;
    inline-size: 100vw;
    margin-inline: calc(50% - 50vw);

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

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

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

    &[data-id='1'] {
      &::before,
      &::after {
        background-image: url('../img/top/merchandise/01.webp?c3733d86-1fd5-5116-807b-b8d1b479c4dd');
        animation: marquee 200s linear 0s infinite normal none running;
      }
    }

    &[data-id='2'] {
      &::before,
      &::after {
        background-image: url('../img/top/merchandise/02.webp?c3733d86-1fd5-5116-807b-b8d1b479c4dd');
        animation: marquee-reverse 200s linear 0s infinite normal none running;
      }
    }
  }

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    gap: 36px 65px;
    justify-content: center;
    padding-block: 59px;

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

    .u-hgroup {
      grid-area: 1 / 1 / 2 / 3;
    }

    .body {
      grid-area: 2 / 1 / 3 / 2;
      font-size: 18px;
      line-height: 2;
      color: var(--black);

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

    .u-anchor {
      grid-area: 2 / 2 / 3 / 3;
      align-self: center;
    }
  }
}

/* =====================
  sdgs
===================== */
.sdgs {
  position: relative;
  padding-block: 152px 122px;

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

  /* ==== u-inner ==== */
  .u-inner {
    position: relative;
    z-index: 2;
    display: block grid;
    grid-template-columns: 418px auto;
    gap: 40px 70px;
    justify-content: flex-start;
    padding-inline: 16px;

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

    .u-hgroup {
      @media only screen and (width <= 768px) {
        translate: -3.8vw 0;
      }
    }

    /* ==== triangle ==== */
    &::before,
    &::after {
      position: absolute;
      z-index: 1;
      display: block flow;
      inline-size: 427px;
      block-size: 277px;
      pointer-events: none;
      content: '';
      background: color-mix(in srgb, #44bade 10%, transparent);
    }

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

    &::before {
      inset-block-end: -50px;
      inset-inline-start: -39px;
      clip-path: polygon(0 0, 0% 100%, 100% 100%);
    }

    @media only screen and (width <= 768px) {
      &::before {
        inset-block-end: calc((100 / 390) * -39 * 1vw);
        inset-inline-start: calc((100 / 390) * 16 * 1vw);
      }
    }

    &::after {
      inset-block-start: -32px;
      inset-inline-end: -41px;
      clip-path: polygon(100% 0, 0 0, 100% 100%);
    }

    @media only screen and (width <= 768px) {
      &::after {
        inset-block-start: 0;
        inset-inline-end: calc((100 / 390) * 16 * 1vw);
      }
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-area: 1 / 1 / 2 / 2;
    margin-block-start: 17px;

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

  /* ==== body ==== */
  .body {
    grid-area: 2 / 1 / 3 / 2;
    padding-inline-start: 25px;
    font-size: 18px;
    line-height: 2;
    color: var(--black);

    @media only screen and (width <= 768px) {
      padding-inline-start: 0;
      font-size: calc((100 / 390) * 15 * 1vw);
      line-height: 1.8;
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    grid-area: 3 / 1 / 4 / 2;
    margin-inline-start: 25px;

    @media only screen and (width <= 768px) {
      margin-inline-start: 0;
    }
  }

  /* ==== picture ==== */
  .picture {
    grid-area: 1 / 2 / span 3 / 3;

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

      & img {
        inline-size: calc((100 / 390) * 326 * 2 * 1vw);
      }
    }
  }
}

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

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

  .wrap {
    inline-size: 94.5%;
    min-inline-size: 1360px;
    max-inline-size: 1680px;
    margin-inline: auto;
    background-image: url('../img/top/recruit/bg.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    border-radius: 295px;

    @media only screen and (width <= 768px) {
      inline-size: calc((100 / 390) * 716 / 2 * 1vw);
      min-inline-size: unset;
      max-inline-size: unset;
      background-image: url('../img/top/recruit/bg_sp.webp');

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

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: 527px auto;
    gap: 22px 39px;
    align-items: center;
    max-inline-size: 1040px;
    padding-block: 54px 59px;

    @media only screen and (width <= 768px) {
      display: block flex;
      flex-direction: column;
      gap: 8vw;
      max-inline-size: unset;
      padding-block: calc((100 / 390) * 89 * 1vw) calc((100 / 390) * 104 * 1vw);
    }
  }

  /* ==== picture ==== */
  .picture {
    grid-area: 1 / 1 / 5 / 2;
    margin-block-start: 4px;

    @media only screen and (width <= 768px) {
      inline-size: calc((100 / 390) * 294 * 1vw);
      margin-block-start: 1.2vw;
    }
  }

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-area: 1 / 2 / 2 / 3;

    @media only screen and (width <= 768px) {
      translate: -1.8vw 0;
    }

    @media only screen and (width <= 768px) {
      & span[lang='en'] {
        padding-inline-start: 13px;
      }

      &::before {
        inset-inline-start: -1.3vw;
      }
    }
  }

  /* ==== catch ==== */
  .catch {
    grid-area: 2 / 2 / 3 / 3;
    padding-inline-start: 25px;
    font-size: 32px;
    font-weight: 500;
    color: var(--black);

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

  /* ==== body ==== */
  .body {
    grid-area: 3 / 2 / 4 / 3;
    padding-inline-start: 25px;
    margin-block: calc((1em - 1lh) / 2);
    font-size: 18px;
    color: var(--black);

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

  /* ==== u-anchor ==== */
  .u-anchor {
    grid-area: 4 / 2 / 5 / 3;
    margin-block-start: 24px;
    margin-inline-start: 25px;

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

/* =====================
  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);
  }
}
