@charset "UTF-8";

/* =====================
  header
===================== */
.header {
  --_border-color: rgb(255 255 255 / 30%);
  --_color: white;

  background: transparent;

  img {
    filter: brightness(0) invert(1);
  }
}

.sp-menu {
  color: white;
  border-inline-start: 1px solid rgb(255 255 255 / 30%);
}

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

  >* {
    position: relative;
    z-index: 2;
  }

  &::after {
    position: absolute;
    inset-block-end: 129px;
    inset-inline-start: 50%;
    inline-size: 2000px;
    block-size: 1000px;
    margin-inline: auto;
    pointer-events: none;
    content: '';
    background-image: url('../img/_common/u-bg.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    translate: -50% 0;

    @media (width <=768px) {
      inset-block-end: 90.6vw;
      inline-size: 100%;
      block-size: calc((100 / 390) * 898 * 1vw);
      background-image: url('../img/_common/u-bg_sp.webp');
    }

    @media (width > 1980px) {
      inline-size: 100%;
      block-size: auto;
      aspect-ratio: 2 / 1;
      background-size: cover;
    }
  }
}

/* =====================
  mv
===================== */
.mv {
  --_block-size: 100svh;

  block-size: var(--_block-size);
  min-block-size: 900px;

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

  /* ==== inner ==== */
  .inner {
    position: relative;
    z-index: 2;
    max-inline-size: 1280px;
    padding-block-start: 250px;
    margin-inline: auto;
    color: white;

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

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

  /* ==== catch ==== */
  .catch {
    inline-size: fit-content;
    overflow: clip;
    font-size: 36px;
    font-weight: 600;

    &.on .char {
      transform: translate3d(0, 0, 0);
    }

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

  /* ==== .catch-en ==== */
  .catch-en {
    display: block grid;
    inline-size: fit-content;
    margin-block-start: 23px;
    overflow: clip;
    font-size: 120px;
    font-weight: 500;
    text-transform: uppercase;

    @media (width <=768px) {
      margin-block-start: 2.6vw;
      font-size: calc((100 / 390) * 70 * 1vw);
    }

    span {
      display: inline-block;
      margin-block: calc((1em - 1lh) / 2);
      overflow: clip;
      line-height: 1;
      letter-spacing: -3.6px;

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

      &.on .char {
        transform: translate3d(0, 0, 0);
      }

      &+span {
        margin-block-start: -24px;

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

  /* ==== char ==== */
  .char {
    display: inline-block;
    transform: translate3d(0, 120%, 0);
    transition: transform 0.8s cubic-bezier(0, 0.6, 0.4, 1);
  }

  /* ==== .pagination ==== */
  .pagination {
    inset-block-end: 40px;
    inset-inline-end: 40px;

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

  /* ==== link ==== */
  .link {
    display: block flex;
    gap: 20px;
    align-items: center;
    inline-size: fit-content;
    margin-block-start: 21px;

    @media (width <=768px) {
      display: block grid;
      gap: calc((100 / 390) * 12 * 1vw);
      align-items: flex-start;
      margin-block-start: 2.5vw;
    }

    a {
      position: relative;
      display: block grid;
      grid-template-columns: auto 40px;
      gap: 0 50px;
      align-items: center;
      padding-block: 9px;
      padding-inline: 47px 19px;
      font-family: var(--serif);
      font-weight: 700;
      border: 1px solid white;
      border-radius: 8px;
      transition: background-color 250ms ease 0s;
      will-change: background-color;

      @media (width <=768px) {
        grid-template-columns: 1fr calc((100 / 390) * 28 * 1vw);
        gap: 0 9vw;
        padding-block: 1.5vw;
        padding-inline: 8.9vw 1.6vw;
        font-size: calc((100 / 390) * 12 * 1vw);
        border: calc((100 / 390) * 0.7 * 1vw) solid white;
        border-radius: calc((100 / 390) * 5.6 * 1vw);
      }

      &::before {
        position: absolute;
        inset-block-start: 50%;
        inset-inline-start: 19px;
        content: '';
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        translate: 0 -50%;

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

      &::after {
        aspect-ratio: 1 / 1;
        content: '';
        background-color: white;
        background-image: url('../img/_common/arrow-blue.svg');
        background-repeat: no-repeat;
        background-position: center;
        background-size: 12px 10px;
        border-radius: calc(infinity * 1px);
        transition:
          background-position 250ms ease 0s,
          background-image 250ms ease 0s,
          background-color 250ms ease 0s;

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

      @media (any-hover: hover) {
        &:hover {
          &::after {
            background-position: 55% center;
          }
        }
      }
    }

    .contact-button {
      background: rgb(236 102 0 / 50%);

      &::before {
        inline-size: 18px;
        block-size: 15px;
        background-image: url('../img/top/mv/contact.svg');

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

      @media (any-hover: hover) {
        &:hover {
          background: rgb(236 102 0 / 100%);
        }
      }
    }

    .recruit-button {
      background: rgb(8 44 96 / 50%);

      &::before {
        inline-size: 20px;
        block-size: 22px;
        background-image: url('../img/top/mv/recruit.svg');

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

      @media (any-hover: hover) {
        &:hover {
          background: rgb(8 44 96 / 100%);
        }
      }
    }
  }

  /* ==== body ==== */
  .body {
    display: block grid;
    gap: 1px;
    inline-size: fit-content;
    margin-block-start: 42px;

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

    p {
      font-size: 22px;
      font-weight: 600;

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

    span[lang='en'] {
      font-family: var(--sanserif);
      font-size: 13px;

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

/* =====================
  company
===================== */
.company {
  padding-block: 143px 161px;

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

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: 439px 596px;
    gap: 0 85px;
    align-content: start;

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

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

  /* ==== hgroup ==== */
  hgroup {
    position: relative;
    display: grid;
    grid-row: 1 / 2;
    grid-column: 1 / 2;
    gap: 2px;
    inline-size: fit-content;

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

    [lang='en'] {
      display: block grid;

      span {
        margin-block: calc((1em - 1lh) / 2);
        font-size: 110px;
        font-weight: 500;
        line-height: 1;
        letter-spacing: -3.3px;

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

        &:first-child {
          color: #3c6baf;
        }

        &:last-child {
          margin-block-start: -22px;

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

    h2 {
      position: absolute;
      inset-block-start: 40px;
      inset-inline-end: 30px;
      font-size: 22px;
      font-weight: 600;

      @media (width <=768px) {
        inset-block-start: 6.5vw;
        inset-inline-end: -0.6vw;
        font-size: calc((100 / 390) * 15 * 1vw);
      }
    }
  }

  /* ==== p ==== */
  p {
    grid-row: 2 / 3;
    grid-column: 1 / 2;
    margin-block-start: 43px;

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

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

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

  /* ==== picture ==== */
  .picture {
    grid-row: 1 / 5;
    grid-column: 2 / 3;
    margin-block-start: 16px;

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

/* =====================
  service
===================== */
.service {
  padding-block: 149px 159px;
  background: var(--bg2);

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

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

    @media (width > 768px) {
      max-inline-size: 1380px;
    }
  }

  /* ==== ul ==== */
  ul {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 60px;
    margin-block-start: 52px;

    @media (width <=768px) {
      display: block flex;
      flex-direction: column;
      gap: 10.3vw;
      margin-block-start: 8.3vw;
    }
  }

  li {
    position: relative;
    display: block grid;
    gap: 12px;

    @media (width <=768px) {
      gap: 1.3vw;
    }

    &+li {
      &::before {
        position: absolute;
        inset-block-start: 0;
        inset-inline-start: -30px;
        inline-size: 1px;
        block-size: 100%;
        content: '';
        background: #d3d3d3;
      }
    }
  }

  /* ==== picture ==== */
  .picture {
    img {
      border-radius: 8px;

      @media (width <=768px) {
        inline-size: 100%;
        border-radius: calc((100 / 390) * 8 * 1vw);
      }
    }
  }

  /* ==== h3 ==== */
  h3 {
    font-family: var(--serif);
    font-size: 22px;
    font-weight: 600;
    color: var(--primary);
    text-align: center;

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

  /* ==== p ==== */
  p {
    font-size: 15px;
    font-weight: 400;
    color: var(--form-form-optional);
    text-align: center;

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

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

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

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

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

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

    @media (width > 768px) {
      block-size: 550px;
      padding-inline: 80px;
    }

    @media (width <=768px) {
      padding-inline: 0;
    }
  }

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

    @media (width > 768px) {
      position: absolute;
      inset-block-end: 0;
      inset-inline-end: 80px;
    }

    img {
      border-radius: 0 10px 10px 0;

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

  /* ==== wrap ==== */
  .wrap {
    position: relative;
    z-index: 2;
    inline-size: 504px;
    padding-block: 92px 0;
    padding-inline: 80px;
    color: white;
    background: var(--primary);
    border-radius: 10px 0 0 10px;

    @media (width > 768px) {
      clip-path: ellipse(100% 120% at 0% 50%);
    }

    @media (width <=768px) {
      inline-size: 100%;
      padding-block: 17.6vw 15.5vw;
      padding-inline: calc((100 / 390) * 32 * 1vw);
      margin-block-start: -8.5vw;
      border-radius: 0 0 calc((100 / 390) * 10 * 1vw) calc((100 / 390) * 10 * 1vw);
      clip-path: ellipse(116% 60% at 50% 60%);
    }

    .u-anchor {
      margin-block-start: 10.3vw;
      margin-inline: auto;

      --_color: var(--primary);
      --_background-color: #edf1f7;
      --_border-color: #edf1f7;
      --_after-bg-color: var(--primary);
      --_after-bg-image: url('../img/_common/arrow-white.svg');

      @media (width > 768px) {
        display: none;
      }
    }
  }

  .u-hgroup {
    @media (width <=768px) {
      margin-inline: auto;

      .title {
        justify-content: center;
        text-align: center;
      }

      .title::after {
        content: '';
      }
    }
  }

  .catch {
    margin-block-start: 53px;
    font-size: 34px;
    font-weight: 600;
    line-height: 1.4;

    @media (width <=768px) {
      margin-block-start: 8.3vw;
      font-size: calc((100 / 390) * 26 * 1vw);
    }
  }

  .body {
    margin-block-start: 29px;

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

  .wrap+.u-anchor {
    position: absolute;
    inset-block-end: 40px;
    inset-inline-end: 121px;
    z-index: 2;

    @media (width <=768px) {
      display: none;
    }
  }
}

/* =====================
  news
===================== */
.news {
  padding-block: 70px 110px;

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

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

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: auto 740px;
    gap: 0 85px;
    align-items: flex-start;

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

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

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

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

    @media (width <=768px) {
      grid-row: 1 / 2;
      grid-column: 2 / 3;
      margin-block-start: 0;
    }
  }

  /* ==== ul ==== */
  ul {
    display: block grid;
    grid-template-columns: auto 1fr;
    grid-row: 1 / 4;
    grid-column: 2 / 3;
    align-items: start;
    margin-block-start: -37px;

    @media (width <=768px) {
      grid-row: 2 / 3;
      grid-column: 1 / 3;
      margin-block-start: 1.5vw;
    }

    li {
      position: relative;
      display: block grid;
      grid-template-columns: subgrid;
      grid-column: span 2;
      gap: 50px;
      align-items: center;
      padding-block: 49.4px;
      padding-inline: 0;
      border-block-end: 1px solid var(--form-form-border);
      transition: all 250ms ease 0s;

      @media (width <=768px) {
        display: block flex;
        flex-direction: column;
        gap: 2.4vw;
        align-items: start;
        justify-content: start;
        padding-block: 49.4px;
        padding-block: 7.5vw;
      }

      &:last-child {
        border-block-end-color: transparent;
      }

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

          &::after {
            transform: translateX(25%);
          }
        }
      }

      time {
        font-size: 14px;
        font-weight: 700;
        color: #979797;

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

      p {
        font-size: 15px;
        font-weight: 350;
        line-height: 1.8;
        word-break: break-all;

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

      a {
        position: absolute;
        inset: 0;
        z-index: 2;
      }
    }
  }

  /* ==== u-anchor ==== */
  .u-anchor {
    @media (width <=768px) {
      margin-block-start: 10vw;
      margin-inline: auto;
    }
  }
}

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