@charset "UTF-8";

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

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

    @media (orientation: landscape) {
      --_block-size: calc((100 / 390) * 636 * 1vw);
    }
  }

  position: relative;
  block-size: var(--_block-size);
  color: white;

  /* ==== inner ==== */
  .inner {
    position: relative;
    z-index: 2;
    display: block grid;
    grid-template-rows: repeat(auto-fit, minmax(0, min-content));
    gap: 25px;
    block-size: inherit;
    min-block-size: inherit;
    padding-block-start: 555px;
    padding-inline-start: 40px;

    @media (width <=768px) {
      gap: 3vw;
      padding-block-start: 93vw;
      padding-inline: var(--nudge-2);
    }

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

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

    /* ==== catch ==== */
    .catch {
      position: relative;
      inset-inline-start: 80px;
      align-self: flex-start;
      inline-size: fit-content;
      block-size: fit-content;
      font-size: 40px;
      font-weight: 600;
      line-height: 1.9;

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

      &::before {
        position: absolute;
        inset-block-start: -175px;
        inset-inline-start: -80px;
        z-index: -1;
        inline-size: 309px;
        block-size: 309px;
        pointer-events: none;
        content: '';
        background-image: url('../img/top/mv/mark.webp');
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        isolation: isolate;

        @media (width <=768px) {
          inset-block-start: -23vw;
          inset-inline-start: -9vw;
          inline-size: 40vw;
          block-size: 44vw;
        }
      }
    }

    /* ==== en ==== */
    .en {
      align-self: flex-start;
      padding-inline-start: 40px;
      font-family: var(--title);
      font-size: 20px;
      font-weight: 400;
      line-height: 1.4;

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

  /* ==== banner ==== */
  .banner {
    position: absolute;
    inset-block-start: 652px;
    inset-inline-end: 40px;
    z-index: 20;
    transition: all 250ms ease 0s;

    @media (width <=768px) {
      inset-block-start: unset;
      inset-block-end: 6.3vw;
      inset-inline-end: 0;
    }

    .wrap {
      position: relative;
      display: block grid;
      gap: 0 32px;
      align-items: center;
      padding-inline-end: 49px;
      overflow: clip;
      background: var(--gold);

      @media (width <=768px) {
        gap: 3.1vw 4vw;
        padding-inline-end: calc((100 / 390) * 28 * 1vw);
      }

      img {
        grid-row: 1 / 3;
        grid-column: 1 / 2;
        object-fit: cover;
        transition: all 250ms ease 0s;

        @media (width > 768px) {
          inline-size: 179px;
          block-size: 135px;
        }

        @media (width <=768px) {
          inline-size: calc((100 / 390) * 127 * 1vw);
          aspect-ratio: 179 / 135;
        }
      }

      [lang='en'] {
        position: relative;
        display: block flex;
        grid-row: 1 / 2;
        grid-column: 2 / 3;
        align-items: center;
        align-self: flex-end;
        margin-block: calc((1em - 1lh) / 2);
        font-family: var(--title);
        font-size: 26px;
        font-weight: 400;

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

        &::before {
          position: absolute;
          inset-block: auto;
          inset-inline-end: -17px;
          inline-size: 28px;
          aspect-ratio: 1 / 1;
          content: '';
          border: 1px solid white;
          border-radius: calc(infinity * 1px);
          transition: all 250ms ease 0s;

          @media (width <=768px) {
            inset-inline-end: -4.5vw;
            inline-size: calc((100 / 390) * 25 * 1vw);
          }
        }

        &::after {
          position: absolute;
          inset-block: auto;
          inset-inline-end: -6px;
          display: block flow;
          inline-size: 7px;
          aspect-ratio: 7 / 5;
          content: '';
          background-color: currentcolor;
          mask-image: var(--icon-arrow);
          mask-repeat: no-repeat;
          mask-position: center;
          mask-size: contain;
          transition: all 250ms ease 0s;

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

      p {
        font-size: 14px;
        font-weight: 500;
        line-height: 1.9;
        translate: 0 -2px;

        @media (width <=768px) {
          align-self: flex-start;
          margin-block: calc((1em - 1lh) / 2);
          font-size: calc((100 / 390) * 12 * 1vw);
          line-height: 1.5;
          translate: 0 0;
        }

        span {
          font-family: 'Noto Serif JP', serif;
        }
      }

      a {
        position: absolute;
        inset-block-start: 0;
        inset-inline-start: 0;
        display: block;
        inline-size: 100%;
        block-size: 100%;
        background: transparent;
      }
    }

    @media (any-hover: hover) {
      &:hover {
        background: color-mix(in hsl, hsl(42.94deg 100.36% 43.14%), var(--gold));
        filter: drop-shadow(0 0 8px var(--gold));

        img {
          scale: 1.01;
        }

        [lang='en']::before {
          background: white;
        }

        [lang='en']::after {
          color: var(--gold);
        }
      }
    }
  }
}

/* =====================
  company
===================== */
.company {
  padding-block: 106px 166px;
  overflow: clip;
  background-image: url('../img/top/company/bg.webp');
  background-size: cover;

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

  /* ==== .u-inner ==== */
  .u-inner {
    display: block grid;
    gap: 52px 77px;

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

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

  /* ==== catch ==== */
  .catch {
    grid-row: 2 / 3;
    grid-column: 1 / 2;
    align-self: flex-start;
    margin-block-start: 3px;
    font-size: 26px;
    font-weight: 600;

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

  /* ==== body ==== */
  .body {
    grid-row: 2/ 3;
    grid-column: 2 / 3;
    margin-block-start: 2px;
    line-height: 1.9;

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

  /* ==== ul ==== */
  .gallery {
    position: relative;
    grid-row: 4 / 5;
    grid-column: 1 / 3;
    margin-block-start: 31px;

    @media (width <=768px) {
      margin-block-start: var(--nudge-4);
    }

    &::before {
      position: relative;
      z-index: 2;
      display: block flow;
      inline-size: fit-content;
      margin-block: calc((1em - 1lh) / 2);
      margin-inline: auto 0;
      font-family: var(--title);
      font-size: 96px;
      content: 'Creating an eternal bond.';
      background: var(--gradation2);
      background-clip: text;
      translate: 40px 0;
      -webkit-text-fill-color: transparent;

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

    ul {
      position: relative;
      z-index: 1;
      display: block flex;
      gap: 20px;
      inline-size: 100vw;
      margin-block-start: -63px;
      margin-inline: calc(50% - 50cqi);
      animation: marquee 40s linear infinite;

      @media (width <=768px) {
        gap: calc((100 / 390) * 8 * 1vw);
        margin-block-start: -4.7vw;
      }

      li {
        flex-shrink: 0;

        @media (width <=768px) {
          img {
            inline-size: calc((100 / 390) * 120 * 1vw);
            block-size: calc((100 / 390) * 120 * 1vw);
            object-fit: cover;
          }
        }
      }
    }
  }

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

    @media (width <=768px) {
      margin-block-start: var(--nudge-3);
      margin-inline: auto;
    }
  }
}

/* =====================
  business
===================== */
.business {
  padding-block: 105px 148px;

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

  /* =====================
    .business-list
  ===================== */
  .business-list {
    .u-inner {
      display: block grid;
      grid-template-columns: 1fr 568px;
      gap: 0 117px;

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

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

    /* ==== body ==== */
    .body {
      grid-row: 2 / 3;
      grid-column: 1 / 2;
      margin-block-start: -33px;
      line-height: 1.9;

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

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

      @media (width <=768px) {
        margin-block-start: var(--nudge-5);
      }
    }

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

      @media (width <=768px) {
        margin-block-start: var(--nudge-4);
        margin-inline: auto;
      }
    }

    /* ==== ul ==== */
    ul {
      display: block grid;
      grid-row: 4 / 5;
      grid-column: 1 / 3;
      gap: 48px;
      margin-block-start: 96px;
      counter-reset: number;

      @media (width <=768px) {
        gap: var(--nudge-5);
        margin-block-start: var(--nudge-5);
      }

      li {
        position: relative;
        display: block flex;

        &::before {
          position: absolute;
          inset-block-start: 38px;
          inset-inline-end: 51px;
          z-index: 2;
          display: block flow;
          font-size: 48px;
          line-height: 1;
          color: white;
          content: '0' counter(number);
          counter-increment: number;

          @media (width <=768px) {
            inset-block-start: 43vw;
            inset-inline-end: 4vw;
            font-size: calc((100 / 390) * 33 * 1vw);
            opacity: 0.7;
          }
        }

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

        img {
          flex-shrink: 0;
          object-fit: cover;

          @media (width <=768px) {
            align-self: flex-start;
            inline-size: 100%;
            block-size: calc((100 / 390) * 160 * 1vw);
          }
        }

        .text {
          position: relative;
          display: block grid;
          flex-grow: 1;
          grid-template-rows: repeat(auto-fit, minmax(0, min-content));
          gap: 16px;
          padding-block: 49px;
          padding-inline: 48px;
          color: white;
          background: var(--gradation2);

          @media (width <=768px) {
            gap: 5.6vw;
            align-self: flex-start;
            padding-block: calc((100 / 390) * 49 * 1vw) 9vw;
            padding-inline: calc((100 / 390) * 16 * 1vw);
          }
        }

        hgroup {
          display: block grid;

          @media (width <=768px) {
            grid-template-rows: repeat(auto-fit, minmax(0, min-content));
            gap: 2.7vw;
          }

          [lang='en'] {
            font-family: var(--title);
            font-size: 16px;
            line-height: 1.5;

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

          h3 {
            font-size: 20px;
            font-weight: 600;
            line-height: 1.9;

            @media (width <=768px) {
              align-self: flex-start;
              margin-block: calc((1em - 1lh) / 2);
              font-size: calc((100 / 390) * 20 * 1vw);
            }
          }
        }

        p {
          font-size: 16px;
          font-weight: 500;

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

  /* =====================
    counselling
  ===================== */
  .counselling {
    padding-block: 79px 20px;

    @media (width <=768px) {
      max-inline-size: calc(100vw - calc((100 / 390) * 32 * 1vw));
      padding-block: var(--nudge-8) 0;
      margin-inline: auto;
    }

    /* ==== u-inner ==== */
    .u-inner {
      position: relative;
      display: block grid;
      /* grid-template-rows: repeat(auto-fit, minmax(0, min-content)); */
      grid-template-columns: 1fr 505px;
      padding-block: 64px 15px;
      padding-inline: 79px;
      border: 1px solid #b7b7b7;

      @media (width <=768px) {
        position: relative;
        display: block flex;
        flex-direction: column;
        padding-block: var(--nudge-5) var(--nudge-5);
        padding-inline: var(--nudge-2);
      }

      .anchor {
        position: absolute;
        inset-block-start: 0;
        inset-inline-end: 0;
        z-index: 2;
        inline-size: 100%;
        block-size: 100%;
      }

      @media (any-hover: hover) {
        &:hover {
          .arrow {
            background: var(--gradation2);
            border: 0 solid transparent;

            &::before {
              background: white;
            }
          }
        }
      }
    }

    /* ==== h3 ==== */
    h3 {
      grid-row: 1 / 2;
      grid-column: 1 / 2;
      align-self: flex-start;
      padding-block-start: 34px;
      font-size: 20px;
      font-weight: 600;

      @media (width <=768px) {
        inline-size: fit-content;
        padding-block-start: 0;
        margin-inline: auto;
        font-size: calc((100 / 390) * 20 * 1vw);
      }
    }

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

      @media (width <=768px) {
        block-size: calc((100 / 390) * 200 * 1vw);
        margin-block-start: var(--nudge-3);
      }
    }

    /* ==== p ==== */
    p {
      grid-row: 2 / 3;
      grid-column: 1 / 2;
      margin-block-start: 0;
      font-weight: 500;
      line-height: 1.9;

      @media (width <=768px) {
        padding-inline: var(--nudge-1);
        margin-block-start: var(--nudge-4);
        font-size: calc((100 / 390) * 14 * 1vw);
      }
    }

    /* ==== arrow ==== */
    .arrow {
      display: block grid;
      grid-row: 3 / 4;
      grid-column: 1 / 2;
      place-content: center;
      inline-size: 56px;
      aspect-ratio: 1 / 1;
      /* margin-block-start: -63px; */
      border: 1px solid var(--primary);
      border-radius: calc(infinity * 1px);
      transition: background-color 250ms ease 0s;

      @media (width <=768px) {
        inline-size: calc((100 / 390) * 56 * 1vw);
        margin-block-start: var(--nudge-2);
        margin-inline: auto;
      }

      &::before {
        inline-size: 12px;
        aspect-ratio: 12 / 8;
        content: '';
        background-color: var(--primary);
        mask-image: var(--icon-arrow);
        mask-repeat: no-repeat;
        mask-position: center;
        mask-size: contain;
        transition: background-color 250ms ease 0s;
      }
    }

    /* ==== decoration ==== */
    .decoration {
      grid-row: 5 / 6;
      grid-column: 1 / 3;
      margin-block-start: -58px;
      margin-inline: auto 0;
      font-size: 72px;
      translate: 32px 0;

      @media (width <=768px) {
        position: absolute;
        inset-block-start: 73vw;
        inset-inline-start: 7vw;
        margin-block-start: 0;
        margin-inline: auto;
        font-size: calc((100 / 390) * 23 * 1vw);
        translate: unset;
      }
    }
  }
}

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

  @media (width > 768px) {
    background-attachment: fixed;
  }

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

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

    @media (width <=768px) {
      gap: var(--nudge-3);
    }
  }

  /* ==== catch ==== */
  .catch {
    font-size: 26px;
    font-weight: 600;
    line-height: 1.9;
    text-align: center;

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

  /* ==== body ==== */
  .body {
    margin-block-start: -32px;
    line-height: 1.9;
    text-align: center;

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

  /* ==== u-anchor ==== */
  .u-anchor {
    margin-block-start: -25px;
    margin-inline: auto;

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

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

  @media (width > 768px) {
    .picture[data-id='1'] {
      inset-block-start: 31px;
      inset-inline-start: 40px;
    }

    .picture[data-id='2'] {
      inset-block-end: -40px;
      inset-inline-start: -40px;
    }

    .picture[data-id='3'] {
      inset-block-start: 7px;
      inset-inline-end: 0;
    }

    .picture[data-id='4'] {
      inset-block-end: -63px;
      inset-inline-end: -40px;
    }
  }

  @media (width <=768px) {
    .picture[data-id='1'] {
      inset-block-start: -20vw;
      inset-inline-start: -7vw;
      inline-size: 35vw;
    }

    .picture[data-id='2'] {
      inset-block-end: -40vw;
      inset-inline-start: 7vw;
      inline-size: 30vw;
    }

    .picture[data-id='3'] {
      inset-block-start: -34vw;
      inset-inline-end: 0;
      inline-size: 28vw;
    }

    .picture[data-id='4'] {
      inset-block-end: -49vw;
      inset-inline-end: 6vw;
      inline-size: 34vw;
    }
  }
}

/* =====================
  news
===================== */
.news {
  padding-block: 105px 165px;

  @media (width <=768px) {
    padding-block: var(--nudge-8);
  }

  /* ==== u-inner ==== */
  .u-inner {
    display: block grid;
    grid-template-columns: 1fr 828px;

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

  /* ==== u-hgroup ==== */
  .u-hgroup {
    grid-row: 1 / 2;
    grid-column: 1 / 2;
    /* margin-block-end: 56px; */

    @media (width <=768px) {
      margin-inline: auto;
      text-align: center;
    }
  }

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

    @media (width <=768px) {
      margin-block-start: var(--nudge-4);
      margin-inline: auto;
    }
  }

  /* ==== ul ==== */
  ul {
    display: block grid;
    grid-row: 1 / 4;
    grid-column: 2 / 3;
    gap: 16px 0;
    align-self: flex-start;

    @media (width <=768px) {
      grid-template-columns: unset;
      inline-size: 100%;
      margin-block-start: var(--nudge-3);
    }

    li {
      position: relative;
      display: block grid;
      grid-template-columns: auto 1fr;

      @media (width <=768px) {
        grid-template-columns: 100%;
      }

      a {
        position: relative;
        display: block grid;
        grid-template-columns: subgrid;
        grid-column: span 2;
        gap: 40px;
        inline-size: 100%;
        padding-block: 24px;
        padding-inline: 40px;
        background: white;
        border-block: 1px dashed transparent;

        @media (width <=768px) {
          grid-column: auto;
          grid-auto-flow: row;
          gap: 0;
          inline-size: 100%;
          padding-block: var(--nudge-2);
          padding-inline: var(--nudge-2);
        }
      }
    }

    time {
      font-size: 15px;
      color: var(--gray_text);

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

    li+li {
      border-block-start-color: var(--bg);
    }

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

/* =====================
  animation
===================== */
[data-parallax='fade'] {
  --_transition: transform 1s var(--slideInBezier), opacity 0.4s var(--slideInBezier);
  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);
  }
}
