@charset "UTF-8";

.main {
  /* =====================
    mv
  ===================== */
  .mv {
    position: relative;
    width: 100%;
    height: 840px;

    @media (width <= 768px) {
      height: calc((100 / 750) * 1280 * 1vw);
    }
    /* ==== 背景スライダー ==== */
    .mv-slider {
      position: absolute;
      overflow: hidden;
      width: 100%;
      min-height: 840px;

      @media (width <= 768px) {
        min-height: calc((100 / 750) * 1280 * 1vw);
      }
      .mv-swiper-container {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        min-height: inherit;

        .swiper-slide {
          position: relative;

          & picture {
            display: block flow;
            & img {
              block-size: 100%;
              aspect-ratio: 1920/840;
              min-height: 840px;
              object-fit: cover;
              object-position: center;

              @media (width <= 768px) {
                aspect-ratio: 750/1280;
                min-height: calc((100 / 750) * 1280 * 1vw);
              }
            }
          }
        }
      }
    }
    .mv-slider .zoom img {
      animation-name: zoom;
      animation-duration: 15s;
      animation-delay: 0ms;
      animation-timing-function: linear; /* ease/ease-in/ease-out/ease-in-out/linear/cubic-bezier()/steps(1, jump-end) */
      animation-iteration-count: 1; /* {num}/infinite */
      animation-direction: normal; /* normal/reverse/alternate/alternate-reverse */
      animation-fill-mode: both; /* none/backwards(0%)/forwards(100%)/both(0%->100%) */
      animation-play-state: running; /* running/paused */
    }
  }
  .content {
    position: relative;
    padding-block-start: 71px;
    padding-inline: 70px;
    padding-block-end: 80px;
    min-height: 840px;
    display: block grid;
    grid-template-columns: repeat(2, auto);
    grid-template-rows: max-content auto;
    align-items: end;
    z-index: 10;

    @media (width <= 768px) {
      padding-top: calc((100 / 750) * 144 * 1vw);
      padding-inline: calc((100 / 750) * 40 * 1vw);
      display: block flow;
    }

    /* =====================
        英字　キャッチ
    ===================== */
    .en-catch {
      grid-column: 2/3;
      grid-row: 1/2;
      font-family: var(--tajawal);
      font-size: 96px;
      font-weight: 200;
      line-height: 1;
      color: #fff;
      margin-block-start: 134px;
      margin-inline: auto 0;

      @media (width <= 768px) {
        font-size: calc((100 / 750) * 96 * 1vw);
        margin-block-start: calc((100 / 750) * 81 * 1vw);
        margin-inline-start: calc((100 / 750) * 19 * 1vw);
      }
    }

    /* =====================
        日本語　キャッチ
    ===================== */
    .ja-catch_wrap {
      grid-column: 1/2;
      grid-row: 2/3;
      position: relative;
      margin-inline-start: 34px;
      margin-block-end: 8px;

      @media (width <= 768px) {
        margin-inline-start: calc((100 / 750) * 34 * 1vw);
        margin-block-end: 0;
        margin-block-start: calc((100 / 750) * 268 * 1vw);
      }

      .ja-catch {
        position: relative;
        font-size: 32px;
        font-weight: 500;
        line-height: 1;
        letter-spacing: 1.92px;
        color: #fff;
        z-index: 11;

        @media (width <= 768px) {
          font-size: calc((100 / 750) * 42 * 1vw);
          letter-spacing: calc((100 / 750) * 2.52 * 1vw);
        }

        .box {
          margin-inline-end: 20px;

          @media (width <= 768px) {
            margin-inline-end: calc((100 / 750) * 24 * 1vw);
          }
        }

        .br {
          display: block flow;
          margin-block-start: 36px;

          @media (width <= 768px) {
            margin-block-start: calc((100 / 750) * 44 * 1vw);
          }
        }
      }

      .left-in-catch {
        font-size: 30px;
        position: absolute;
        top: 69px;
        left: -29px;

        @media (width <= 768px) {
          font-size: calc((100 / 750) * 42 * 1vw);
          top: calc((100 / 750) * 94 * 1vw);
          left: calc((100 / 750) * -48 * 1vw);
        }
      }

      & > ul {
        display: block flex;
        gap: 14px;
        margin-block-start: 32px;

        @media (width <= 768px) {
          gap: calc((100 / 750) * 24 * 1vw);
          margin-block-start: calc((100 / 750) * 36 * 1vw);
        }

        & li {
          font-family: var(--tajawal);
          font-size: 15px;
          line-height: 1;
          color: #fff;
          background-color: #61d7db;
          padding-block: 8px;
          padding-inline: 10px;

          @media (width <= 768px) {
            font-size: calc((100 / 750) * 27 * 1vw);
            padding-block: calc((100 / 750) * 14 * 1vw);
            padding-inline: calc((100 / 750) * 20 * 1vw);
          }
        }
      }
    }

    /* =====================
      News
    ===================== */
    .news_wrap {
      grid-column: 2/3;
      grid-row: 2/3;
      position: relative;
      inline-size: 566px;
      border-block-start: 1px solid #fff;
      margin-inline: auto 0;

      @media (width <= 768px) {
        inline-size: 100%;
        margin-block-start: calc((100 / 750) * 40 * 1vw);
      }

      .u-hover {
        display: block flow;
        padding-block-start: 24px;

        @media (width <= 768px) {
          padding-block-start: calc((100 / 750) * 88 * 1vw);
        }

        .title {
          font-family: var(--tajawal);
          font-size: 22px;
          line-height: 1;
          color: #fff;

          @media (width <= 768px) {
            font-size: calc((100 / 750) * 34 * 1vw);
          }
        }
        .news_unit {
          position: relative;
          display: block flex;
          align-items: baseline;
          gap: 24px;
          margin-block-start: 1em;

          @media (width <= 768px) {
            display: block grid;
            gap: calc((100 / 750) * 12 * 1vw);
            margin-block-start: calc((100 / 750) * 24 * 1vw);
          }

          .date {
            font-family: var(--tajawal);
            line-height: 1;
            color: #fff;
            flex-shrink: 0;
          }
          .news-title {
            position: relative;
            line-height: 1;
            color: #fff;
            inline-size: 100%;

            &::after {
              content: '';
              inline-size: 18px;
              aspect-ratio: 18 / 13;
              mask-image: var(--icon-arrow);
              mask-repeat: no-repeat;
              mask-size: contain;
              mask-position: center;
              background-color: #fff;
              position: absolute;
              top: 50%;
              right: 0;
              transform: translateY(-50%);
            }

            @media (width <= 768px) {
              &::after {
                inline-size: calc((100 / 750) * 27 * 1vw);
                aspect-ratio: 27/20;
              }
            }
          }
        }
      }
    }
  }
  /* =====================
    Scroll
  ===================== */
  /* スクロールダウンの位置 */
  .scroll {
    position: absolute;
    right: 70px;
    bottom: 285px;
    z-index: 12;

    @media (width <= 768px) {
      right: calc((100 / 750) * 40 * 1vw);
      bottom: calc((100 / 750) * 580 * 1vw);
    }

    /* 線のアニメーション部分 */
    &::before {
      animation: scroll 2s cubic-bezier(1, 0, 0, 1) infinite;
      background-color: #61d7db;
      bottom: -70px;
      border-radius: 50rem;
      content: '';
      height: 56px;
      left: 0;
      margin: auto;
      position: absolute;
      right: 0;
      width: 2px;
      z-index: 2;
    }
    /* 線の背景色 */
    &::after {
      background-color: #fff;
      bottom: -70px;
      border-radius: 50rem;
      content: '';
      height: 56px;
      left: 0;
      margin: auto;
      position: absolute;
      right: 0;
      width: 2px;
    }
    & > span {
      font-family: var(--tajawal);
      font-size: 15px;
      line-height: 1;
      color: #fff;
    }

    @media (width <= 768px) {
      &::before {
        bottom: calc((100 / 750) * -96 * 1vw);
        height: calc((100 / 750) * 80 * 1vw);
        width: calc((100 / 750) * 4 * 1vw);
      }
      &::after {
        bottom: calc((100 / 750) * -96 * 1vw);
        height: calc((100 / 750) * 80 * 1vw);
        width: calc((100 / 750) * 4 * 1vw);
      }
      & > span {
        font-size: calc((100 / 750) * 26 * 1vw);
      }
    }
  }

  /* =====================
    Company
  ===================== */
  .company {
    position: relative;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    background-image: url('../img/top/about_bg.png');
    inline-size: 100%;
    block-size: 970px;
    padding-block: 88px 104px;

    @media (width <= 768px) {
      background-image: url('../img/top/about_bg_sp.png');
      block-size: calc((100 / 750) * 2351 * 1vw);
      padding-block: calc((100 / 750) * 104 * 1vw);
    }

    .inner {
      inline-size: 1300px;
      margin-inline: auto;

      @media (width <= 768px) {
        inline-size: 100%;
      }

      .catch_wrap {
        position: relative;
        padding-inline: 70px;
        display: block flex;
        justify-content: space-between;

        @media (width <= 768px) {
          padding-inline: calc((100 / 750) * 40 * 1vw);
          flex-direction: column-reverse;
        }

        .catch_unit {
          .en-catch {
            font-family: var(--tajawal);
            font-size: 80px;
            font-weight: 200;
            line-height: 1.1;
            color: #666;
            margin-block-start: 24px;

            @media (width <= 768px) {
              font-size: calc((100 / 750) * 88 * 1vw);
              margin-block-start: calc((100 / 750) * 62 * 1vw);
            }
          }

          .ja-catch {
            font-size: 24px;
            font-weight: 500;
            line-height: 1;
            margin-block-start: 60px;
            margin-inline-start: 40px;

            @media (width <= 768px) {
              font-size: calc((100 / 750) * 36 * 1vw);
              margin-block-start: calc((100 / 750) * 60 * 1vw);
              margin-inline-start: 0;
            }

            .box {
              margin-right: 12px;

              @media (width <= 768px) {
                margin-right: calc((100 / 750) * 12 * 1vw);
              }
            }
          }
        }
        .picture {
          display: block flow;
          flex-shrink: 0;

          @media (width <= 768px) {
            margin-inline: auto 0;

            & > img {
              width: calc((100 / 750) * 550 * 1vw);
            }
          }
        }
        .left-in-catch {
          position: absolute;
          bottom: 19px;
          left: 612px;

          @media (width <= 768px) {
            left: calc((100 / 750) * 20 * 1vw);
            bottom: unset;
            top: calc((100 / 750) * 276 * 1vw);
          }
        }
      }

      .content_wrap {
        padding-right: 123px;
        margin-block-start: 73px;
        display: block flex;
        align-items: flex-end;
        gap: 120px;

        @media (width <= 768px) {
          padding-right: 0;
          flex-direction: column-reverse;
          align-items: start;
          gap: calc((100 / 750) * 88 * 1vw);
          margin-block-start: calc((100 / 750) * 44 * 1vw);
        }

        .picture {
          display: block flow;
          flex-shrink: 0;

          @media (width <= 768px) {
            & > img {
              width: calc((100 / 750) * 620 * 1vw);
            }
          }
        }

        .content_unit {
          .description {
            line-height: 1.9;
            & + .description {
              margin-block-start: 1.8em;
            }

            @media (width <= 768px) {
              padding-inline: calc((100 / 750) * 40 * 1vw);

              & + .description {
                margin-block-start: 1.85em;
              }
            }
          }
          .u-anchor {
            margin-block-start: 48px;

            @media (width <= 768px) {
              margin-block-start: calc((100 / 750) * 56 * 1vw);
              margin-inline-start: calc((100 / 750) * 40 * 1vw);
            }
          }
        }
      }
    }
  }

  /* =====================
    Facility
  ===================== */
  .facility {
    position: relative;
    overflow: hidden;

    .facility-slider {
      position: relative;
      background-repeat: no-repeat;
      background-size: cover;
      background-position: center;
      inline-size: 100%;
      block-size: 662px;
      transition: all 0.5s ease-in-out 0s;

      &:has(.swiper-slide-active[data-id='1']) {
        background-image: url('../img/top/facility_01_bg.png');
      }
      &:has(.swiper-slide-active[data-id='2']) {
        background-image: url('../img/top/facility_02_bg.png');
      }
      &:has(.swiper-slide-active[data-id='3']) {
        background-image: url('../img/top/facility_03_bg.png');
      }

      @media (width <= 768px) {
        block-size: calc((100 / 750) * 1532 * 1vw);

        &:has(.swiper-slide-active[data-id='1']) {
          background-image: url('../img/top/facility_01_bg_sp.png');
        }
        &:has(.swiper-slide-active[data-id='2']) {
          background-image: url('../img/top/facility_02_bg_sp.png');
        }
        &:has(.swiper-slide-active[data-id='3']) {
          background-image: url('../img/top/facility_03_bg_sp.png');
        }
      }

      .u-inner {
        position: relative;
        min-block-size: 662px;
        padding-block: 88px 104px;
        display: block grid;
        grid-template-columns: 434px 1fr;
        grid-template-rows: repeat(3, max-content);
        column-gap: 200px;

        @media (width <= 768px) {
          min-block-size: calc((100 / 750) * 1532 * 1vw);
          padding-block: calc((100 / 750) * 94 * 1vw);
          grid-template-columns: 1fr;
          grid-template-rows: repeat(4, max-content);
          column-gap: 0;
        }

        .u-h2-title {
          grid-column: 1/2;
          grid-row: 1/2;
          margin-block-start: 20px;
          height: fit-content;

          @media (width <= 768px) {
            grid-column: 1/2;
            grid-row: 1/2;
            margin-block-start: 0;
          }
        }
        .description {
          grid-column: 1/2;
          grid-row: 2/3;
          line-height: 1.9;
          color: #fff;
          height: fit-content;

          @media (width <= 768px) {
            grid-column: 1/2;
            grid-row: 3/4;
            margin-block-start: calc((100 / 750) * 70 * 1vw);
          }
        }
        .u-anchor {
          grid-column: 1/2;
          grid-row: 3/4;
          height: fit-content;

          @media (width <= 768px) {
            grid-column: 1/2;
            grid-row: 4/5;
            margin-block-start: calc((100 / 750) * 57 * 1vw);
          }
        }
        .swiper {
          position: relative;
          inline-size: 100%;
          grid-column: 2/3;
          grid-row: 1/4;

          @media (width <= 768px) {
            grid-column: 1/2;
            grid-row: 2/3;
            margin-block-start: calc((100 / 750) * 88 * 1vw);

            .swiper-wrapper {
              .swiper-slide {
                & picture {
                  display: block flow;
                  text-align: center;
                  img {
                    inline-size: calc((100 / 750) * 493.4 * 1vw);
                    block-size: calc((100 / 750) * 570 * 1vw);
                  }
                }
              }
            }
          }
        }
      }
      .controll-btn {
        position: absolute;
        display: flex;
        align-items: center;
        width: fit-content;
        gap: 494px;
        top: 50%;
        right: 0;
        transform: translateY(-50%);
        z-index: 10;

        @media (width <= 768px) {
          top: calc((100 / 750) * 528 * 1vw);
          left: calc((100 / 750) * 40 * 1vw);
          transform: unset;
          gap: calc((100 / 750) * 446 * 1vw);
        }

        .swiper-button-prev,
        .swiper-button-next {
          width: 64px;
          height: 64px;
          display: block;
          border: 1px solid #fff;
          border-radius: calc(infinity * 1px);
          cursor: pointer;
          position: relative;
          left: unset;
          right: unset;
          margin-top: 0;
          &::after {
            content: '';
            display: block;
            width: 18px;
            aspect-ratio: 18 / 13;
            mask-repeat: no-repeat;
            mask-size: contain;
            mask-position: center;
            mask-image: var(--icon-arrow);
            background-color: #fff;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
          }

          @media (width <= 768px) {
            width: calc((100 / 750) * 112 * 1vw);
            height: calc((100 / 750) * 112 * 1vw);
            &::after {
              width: calc((100 / 750) * 32 * 1vw);
              aspect-ratio: 32 / 23;
            }
          }
        }
        .swiper-button-prev {
          &::after {
            transform: translate(-50%, -50%) scale(-1, 1);
          }
        }
      }
    }
  }

  /* =====================
    Business
  ===================== */
  .business {
    padding-block: 88px 95px;
    overflow: hidden;

    @media (width <= 768px) {
      padding-block: calc((100 / 750) * 94 * 1vw) calc((100 / 750) * 120 * 1vw);
    }

    .u-inner {
      display: block grid;
      grid-template-columns: max-content 1fr max-content;
      grid-template-rows: max-content auto;
      align-items: center;
      gap: 57px 50px;

      @media (width <= 768px) {
        grid-template-columns: 1fr;
        grid-template-rows: repeat(2, max-content);
        gap: 0;
      }
      .u-h2-title {
        grid-column: 1/2;
        grid-row: 1/2;
        height: fit-content;

        @media (width <= 768px) {
          grid-column: 1/2;
          grid-row: 1/2;
        }
      }
      .description {
        grid-column: 2/3;
        grid-row: 1/2;
        line-height: 1.9;
        margin-block-end: 12px;

        @media (width <= 768px) {
          grid-column: 1/2;
          grid-row: 2/3;
          margin-block-end: 0;
          margin-block-start: calc((100 / 750) * 39 * 1vw);
        }
      }
      .u-anchor {
        grid-column: 3/4;
        grid-row: 1/2;
        height: fit-content;
        margin-block-end: 12px;

        @media (width <= 768px) {
          grid-column: 1/2;
          grid-row: 4/5;
          margin-block-end: 0;
          margin-inline: auto;
          margin-block-start: calc((100 / 750) * 72 * 1vw);
        }
      }
      .business-list {
        grid-column: 1/4;
        grid-row: 2/3;
        position: relative;
        display: block grid;
        grid-template-columns: repeat(3, max-content);
        justify-content: center;
        gap: 64px;
        padding-block: 77px;

        &::before,
        &::after {
          content: '';
          position: absolute;
          left: 0;
          inline-size: 100vw;
          block-size: 1px;
          background-color: #cfcfcf;
          margin-inline: calc(50% - 50vw);
        }
        &::before {
          top: 0;
        }
        &::after {
          bottom: 0;
        }

        @media (width <= 768px) {
          grid-column: 1/2;
          grid-row: 3/4;
          grid-template-columns: 1fr;
          gap: calc((100 / 750) * 112 * 1vw);
          padding-block: calc((100 / 750) * 55 * 1vw);
          margin-block-start: calc((100 / 750) * 106 * 1vw);

          & li {
            & picture {
              display: block flow;
              img {
                inline-size: calc((100 / 750) * 670 * 1vw);
              }
            }
          }
        }
      }
    }
  }

  /* =====================
    Recruit
  ===================== */
  .recruit {
    position: relative;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center top;
    background-image: url('../img/top/recruit_bg.png');
    inline-size: 100%;
    block-size: 664px;
    padding-block: 79px 104px;

    @media (width <= 768px) {
      background-image: none;
      block-size: unset;
      padding-block: calc((100 / 750) * 94 * 1vw) calc((100 / 750) * 47 * 1vw);

      &::before {
        content: '';
        background-size: cover;
        background-position: center top;
        background-repeat: no-repeat;
        background-image: url('../img/top/recruit_bg_sp.png');
        inline-size: 100%;
        block-size: calc((100 / 750) * 499 * 1vw);
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
        pointer-events: none;
      }
    }

    .u-h2-title {
      @media (width <= 768px) {
        margin-inline-start: calc((100 / 750) * 51 * 1vw);
      }
    }
    .ja-catch {
      font-size: 24px;
      font-weight: 500;
      line-height: 1;
      color: #61d7db;
      margin-inline-start: 72px;
      margin-block-start: 56px;

      .box {
        margin-right: 12px;
      }

      @media (width <= 768px) {
        font-size: calc((100 / 750) * 36 * 1vw);
        margin-inline-start: 0;
        margin-block-start: calc((100 / 750) * 55 * 1vw);

        .br {
          display: block flow;
          margin-block-start: calc((100 / 750) * 30 * 1vw);
        }
        .box {
          margin-right: calc((100 / 750) * 12 * 1vw);
        }
      }
    }
    .left-in-catch {
      position: absolute;
      top: 195px;
      left: 282px;

      @media (width <= 768px) {
        font-size: calc((100 / 750) * 40 * 1vw);
        top: calc((100 / 750) * 403 * 1vw);
        left: unset;
        right: calc((100 / 750) * 40 * 1vw);
      }
    }

    .description {
      margin-inline-start: 72px;
      line-height: 1.9;
      margin-block-start: 42px;

      @media (width <= 768px) {
        margin-inline-start: 0;
        margin-block-start: calc((100 / 750) * 155 * 1vw);
      }
    }

    .u-anchor {
      margin-inline-start: 72px;
      margin-block-start: 48px;

      @media (width <= 768px) {
        margin-inline-start: 0;
        margin-block-start: calc((100 / 750) * 56 * 1vw);
      }
    }
  }
}

/* =====================
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%;
  }
}

/* ==== js-parallax ==== */
.company {
  .picture.js-parallax {
    opacity: 0;
    transition: all 0.5s ease-in-out 0s;
    transform: translateY(0.5em);
    &.on {
      opacity: 1;
      transform: translateY(0);
    }
  }
}

.business {
  .business-list {
    .js-parallax[data-id='1'] {
      opacity: 0;
      transition: all 0.5s ease-in-out 0s;
      transform: translateY(0.5em);
    }
    .js-parallax[data-id='2'] {
      opacity: 0;
      transition: all 0.5s ease-in-out 0.2s;
      transform: translateY(0.5em);

      @media (width <= 768px) {
        transition: all 0.5s ease-in-out 0s;
      }
    }
    .js-parallax[data-id='3'] {
      opacity: 0;
      transition: all 0.5s ease-in-out 0.4s;
      transform: translateY(0.5em);

      @media (width <= 768px) {
        transition: all 0.5s ease-in-out 0s;
      }
    }
    .js-parallax.on {
      opacity: 1;
      transform: translateY(0);
    }
  }
}
