@charset "utf-8";

/* =====================
  keyframes
===================== */
:root {
  --scale: 0.9;
  --scale-small: 0.72;
}

@media not all and (width >=768px) {
  :root {
    --scale: 0.7;
    --scale-small: 0.4;
  }
}

/* 上へスクロールした時、上から出てくる */
@keyframes from-top {
  0% {
    transform: translateY(-50%);
    scale: var(--scale);
  }

  100% {
    transform: translateY(0);
    scale: 1;
  }
}

/* 上へスクロールした時、下へ抜けていく */
@keyframes to-bottom {
  100% {
    scale: var(--scale);
  }
}

/* 下へスクロールした時、下から出てくる */
@keyframes from-bottom {
  0% {
    scale: var(--scale-small);
  }

  100% {
    scale: 1;
  }
}

/* 下へスクロールした時、上へ抜けていく */
@keyframes to-top {
  100% {
    scale: var(--scale);
  }
}

/* ==== ロゴ ==== */
@keyframes logo {
  0% {
    opacity: 0;
    filter: blur(1em);
  }

  100% {
    opacity: 1;
    filter: blur(0);
  }
}

/* ==== scroll ==== */
@keyframes scroll {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(calc(-100% - (40px * 2))); /* 全体の幅 + gap分を移動 */
  }
}

/* ==== toScroll ==== */
@keyframes loop {
  0% {
    bottom: calc((100 / 750) * 80 * 1vw);
    opacity: 1;
    filter: alpha(opacity=100);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  15% {
    bottom: calc((100 / 750) * 20 * 1vw);
    opacity: 0;
    filter: alpha(opacity=0);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  30% {
    bottom: calc((100 / 750) * 100 * 1vw);
    opacity: 0;
    filter: alpha(opacity=0);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  30.001% {
    bottom: calc((100 / 750) * 100 * 1vw);
    opacity: 0;
    filter: alpha(opacity=0);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  45% {
    bottom: calc((100 / 750) * 80 * 1vw);
    opacity: 1;
    filter: alpha(opacity=100);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  46% {
    bottom: calc((100 / 750) * 80 * 1vw);
    opacity: 1;
    filter: alpha(opacity=100);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }

  100% {
    bottom: calc((100 / 750) * 80 * 1vw);
    opacity: 1;
    filter: alpha(opacity=0);
    transition-timing-function: cubic-bezier(0.77, 0.01, 0.7, 1);
  }
}

/* =====================
  common
===================== */
body {
  overflow: hidden;
  scrollbar-width: none;
  background: var(--navy);
}

body::-webkit-scrollbar {
  display: none;
}

/* ==== article ==== */
.article {
  --_duration: 1600ms;

  position: relative;
  min-block-size: 100dvh;
  overflow: hidden;

  /* ==== inner ==== */
  .inner {
    position: relative;
    z-index: 2;
    display: grid;
    min-block-size: inherit;
    padding-block: 121px 0;
    padding-inline: 160px 90px;

    @media not all and (width >=768px) {
      padding-block: 0;
      padding-inline: calc((100 / 750) * 40 * 1vw);
    }
  }

  /* ==== bg ==== */
  .bg {
    position: absolute;
    top: 50%;
    left: 50%;
    inline-size: 100%;
    block-size: 100%;
    pointer-events: none;
    user-select: none;
    transform-origin: top center;
    translate: -50% -50%;

    & img {
      display: block;
      inline-size: 100%;
      block-size: 100%;
      margin-inline: auto;
      object-fit: cover;
      animation-duration: var(--_duration);
      animation-timing-function: var(--easeOutSine);
      animation-delay: 400ms;
      animation-iteration-count: 1;
      animation-direction: normal;
      animation-fill-mode: forwards;
      animation-play-state: running;
    }

    .mv {
      block-size: 100%;
    }
  }
}

/* ==== animation ==== */
.article.from-top .bg {
  animation-name: from-top;
}

.article.from-bottom .bg {
  animation-name: from-bottom;
}

.article.to-top .bg {
  animation-name: to-top;
}

.article.to-bottom .bg {
  animation-name: to-bottom;
}

/* =====================
  home
===================== */
.article[data-id='home'] {
  /* ==== scroll ==== */
  @media not all and (width >=768px) {
    &::after {
      position: absolute;
      inset-inline-start: 50%;
      bottom: calc((100 / 750) * 80 * 1vw);
      inline-size: calc((100 / 750) * 72 * 1vw);
      block-size: calc((100 / 750) * 69 * 1vw);
      content: '';
      background-image: url('../img/common/scroll.svg');
      background-repeat: no-repeat;
      background-position: center;
      background-size: contain;
      translate: -32% 46.1%;
      animation: loop 4s infinite;
    }
  }

  /* ==== nav ==== */
  .nav {
    position: absolute;
    top: 16px;
    right: 137px;
    z-index: 20;

    @media not all and (width >=768px) {
      display: none;
    }

    & ul {
      display: grid;
      grid-auto-flow: column;
      gap: 34px;
      justify-content: flex-end;
      padding-block: 18px;
    }
  }

  /* ==== inner ==== */
  .inner {
    align-items: flex-end;
    justify-content: flex-end;
    padding-block-end: 110px;

    @media not all and (width >=768px) {
      padding-block-end: 22.6vw;
    }
  }

  /* ==== bg ==== */
  .bg {
    & img {
      object-position: top center;
    }
  }

  .catch {
    display: block grid;
    gap: 21.5px;
    font-size: 22px;
    font-style: normal;
    font-weight: 500;
    font-feature-settings: 'vert' on;
    line-height: 1.2;
    text-shadow: 1px 1px 3px rgb(0 0 0 / 60%);
    translate: 0 0;

    @media only screen and (width <= 768px) {
      gap: calc((100 / 750) * 21.5 * 1vw);
      font-size: calc((100 / 750) * 40 * 1vw);
      letter-spacing: calc((100 / 750) * 5.8 * 1vw);
    }

    & span + span {
      translate: 0 23px;

      @media only screen and (width <= 768px) {
        translate: 0 calc((100 / 750) * 39 * 1vw);
      }
    }
  }

  /* ==== logo ==== */
  .logo {
    inline-size: 316px;
    opacity: 0;
    filter: blur(1em);
    translate: 0 0;

    @media not all and (width >=768px) {
      inline-size: calc((100 / 750) * 399 * 1vw);
    }

    &.on {
      animation: logo 1500ms ease 200ms 1 normal forwards running;
    }
  }
}

/* =====================
  concept
===================== */
.article[data-id='concept'] {
  position: relative;

  /* ==== inner ==== */
  .inner {
    @media not all and (width >=768px) {
      padding-block: 25vw;

      .u-head {
        inset: unset;
        top: 25.4vw;
        right: 5vw;
      }
    }
  }

  /* ==== contents ==== */
  .contents {
    display: block grid;
    gap: 11px;
    justify-content: center;
    padding-block-start: 0;
    padding-inline-end: 137px;

    @media only screen and (width <= 768px) {
      gap: 19.3vw;
      padding-inline-end: unset;
    }

    /* ==== p ==== */
    & p {
      font-size: 16px;
      font-weight: 500;
      line-height: 3;
      letter-spacing: 2.1px;
      clip-path: inset(0 0 0 100%);
      transition: clip-path 900ms ease 900ms, opacity 900ms ease 900ms;

      @media only screen and (width <= 768px) {
        block-size: calc((100 / 750) * 485 * 1vw);
        padding-top: 1vw;
        padding-right: 0;
        padding-left: 4vw;
        margin-right: 8vw;
        margin-left: auto;
        overflow-x: scroll;
        font-size: calc((100 / 750) * 26 * 1vw);
        font-weight: 500;
        line-height: 2.73;
        text-align: left;
        letter-spacing: calc((100 / 750) * 3 * 1vw);
      }
    }
  }

  /* ==== gallery ==== */
  .gallery {
    position: relative;
    width: 100vw;
    block-size: 192px;
    margin-inline: calc(50% - 50vw);

    @media not all and (width >=768px) {
      block-size: calc((100 / 750) * 222 * 1vw);
    }

    /* ==== wrap ==== */
    .item {
      position: absolute;
      top: 0;
      left: 0;
      display: flex;
      gap: 32px;
      inline-size: max-content;
      block-size: 192px;
      animation: scroll 300s linear infinite;

      @media not all and (width >=768px) {
        gap: calc((100 / 750) * 32 * 1vw);
        block-size: calc((100 / 750) * 222 * 1vw);
        animation-duration: 300s;
      }
    }

    /* ==== img ==== */
    .img {
      position: relative;

      &::before {
        position: absolute;
        inset: 0;
        inline-size: 0%;
        block-size: 100%;
        content: '';
        background: var(--black);
        transition: all 900ms ease 0s;
      }

      & img {
        object-fit: cover;
        clip-path: inset(0 100% 0 0);
        transition: all 900ms ease 900ms;

        @media print, screen and (width >=768px) {
          inline-size: 264px;
          block-size: 192px;
        }

        @media not all and (width >=768px) {
          inline-size: calc((100 / 750) * 305 * 1vw);
          block-size: calc((100 / 750) * 222 * 1vw);
        }
      }
    }
  }

  /* ==== active ==== */
  &.active {
    /* ==== contents ==== */
    .contents p {
      clip-path: inset(0 0 0 0);
    }

    /* ==== gallery ==== */
    .item .img {
      &::before {
        inset: 0;
        inline-size: 100%;
      }

      & img {
        clip-path: inset(0 0 0 0);
      }
    }
  }
}

/* =====================
  about
===================== */
.article[data-id='philosophy'] {
  /* ==== .u-head ==== */
  .u-head {
    position: absolute;
    inset-inline-start: 50%;
    inset-inline-end: unset;
    translate: -36% 2px;

    @media only screen and (width <= 768px) {
      inset: unset;
      top: calc((100 / 750) * 183 * 1vw);
      right: calc((100 / 750) * 38 * 1vw);
      translate: unset;
    }
  }

  /* ==== contents ==== */
  .contents {
    padding-block-start: 10.5%;

    @media only screen and (width <= 768px) {
      padding-block-start: 24.9vw;
    }

    /* ==== picture ==== */
    & picture {
      display: block flow;
      inline-size: fit-content;
      margin-inline: auto;
      opacity: 0;
      filter: blur(2em);
      translate: -44px 0;
      transition: filter 900ms ease 400ms, opacity 400ms ease 900ms;
      
      

      @media only screen and (width <= 768px) {
        inline-size: calc((100 / 750) * 546 * 1vw);
        translate: unset;
      }
    }

    /* ==== p ==== */
    & p {
      display: block flex;
      gap: 24px;
      align-items: center;
      justify-content: center;
      margin-block-start: 59px;
      margin-inline: auto;
      font-size: 20px;
      font-weight: 500;
      clip-path: inset(0 100% 0 0);
      translate: -35px 0;
      transition: clip-path 900ms ease 400ms;
      
      

      @media only screen and (width <= 768px) {
        position: relative;
        gap: 4vw;
        align-items: center;
        justify-content: center;
        justify-self: center;
        inline-size: 100%;
        padding-inline: 0;
        margin-block-start: 7.5vw;
        margin-inline: auto;
        font-size: calc((100 / 750) * 26 * 1vw);
        translate: unset;
      }

      &::before {
        inline-size: 120px;
        block-size: 1px;
        content: '';
        background: currentcolor;
      }

      @media only screen and (width <= 768px) {
        &::before {
          flex-shrink: 0;
          inline-size: calc((100 / 750) * 96 * 1vw);
          block-size: calc((100 / 750) * 2 * 1vw);
          translate: 0 -4vw;
        }
      }
    }
  }

  /* ==== active ==== */
  &.active {
    /* ==== contents ==== */
    .contents {
      & picture {
        opacity: 1;
        filter: blur(0);
      }

      & p {
        clip-path: inset(0 0 0 0);
      }
    }
  }
}

/* =====================
  story
===================== */
.article[data-id='story'] {
  /* ==== bg ==== */
  .bg {
    @media only screen and (width <= 768px) {
      position: relative;
      inset: unset;
      block-size: calc((100 / 750) * 465 * 1vw);
      translate: unset;
    }
  }

  /* ==== inner ==== */
  .inner {
    position: relative;
    grid-auto-rows: min-content;
    inline-size: 50vw;
    padding-block: 294px 0;
    padding-inline: 89px 0;
    margin-inline: auto 0;
    background: color-mix(in srgb, #202020 90%, transparent);

    @media not all and (width >=768px) {
      position: relative;
      inline-size: 100%;
      padding-block: 0;
      padding-inline: 0;
      margin-top: calc((100 / 750) * 55 * 1vw);
    }
  }

  .u-head {
    right: unset;
    left: 122px;
    translate: 0 1px;

    @media only screen and (width <= 768px) {
      position: absolute;
      inset: unset;
      left: 50%;
      translate: -50% 0;
    }
  }

  /* ==== contents ==== */
  .contents {
    display: grid;
    gap: 64px;
    justify-content: flex-start;
    inline-size: 500px;
    padding-inline: 36px 0;
    font-size: 16px;
    font-weight: 500;
    
    
    
    
    
    
    
    
    
    
    
    
    

    @media not all and (width >=768px) {
      
      
      
      
      
      gap: 8vw;
      inline-size: 100%;
      padding-block-start: 0;
      justify-content: center;
      padding-inline: 0;
      padding-inline-start: 0;
      margin-block-start: 25.7vw;
      margin-inline: auto;
      font-size: calc((100 / 750) * 26 * 1vw);
      text-align: center;
      
      
      
      
      
    }

    /* ==== p ==== */
    & p {
      line-height: 2.31;
      opacity: 0;
      clip-path: inset(0 0 100% 0);
      transition: clip-path 600ms var(--easeOutSine) 400ms;

      @media not all and (width >=768px) {
        font-size: calc((100 / 750) * 26 * 1vw);
        line-height: 2.26;
        letter-spacing: calc((100 / 750) * 0.7 * 1vw);
      }
    }

    .u-anchor {
      opacity: 0;
      transform: translateY(0.5em);
      transition: all 600ms var(--easeOutSine) 1400ms;

      @media not all and (width >=768px) {
        margin-top: 0;
        transform: translateY(0);
      }
    }
  }

  &.active .contents {
    & h3 {
      opacity: 1;
      clip-path: inset(0 0 0 0);
    }

    & p {
      opacity: 1;
      clip-path: inset(0 0 0 0);
    }

    .u-anchor {
      opacity: 1;
      transform: translateY(0);
    }
  }

  &.to-top .contents {
    & h3 {
      opacity: 0;
      transform: translateY(-0.5em);
      transition: all 300ms ease 0;
    }

    & p {
      opacity: 0;
      transform: translateY(-0.5em);
      transition: all 300ms ease 0;
    }

    .u-anchor {
      opacity: 0;
      transform: translateY(-0.5em);
      transition: all 300ms ease 0;
    }
  }

  &.to-bottom .contents {
    & h3 {
      opacity: 0;
      transform: translateY(0.5em);
      transition: all 300ms ease 0;
    }

    & p {
      opacity: 0;
      transform: translateY(0.5em);
      transition: all 300ms ease 0;
    }

    .u-anchor {
      opacity: 0;
      transform: translateY(0.5em);
      transition: all 300ms ease 0;
    }
  }
}

/* =====================
  outline-popup
===================== */
body.outline-on .outline-popup {
  z-index: 101;
  pointer-events: auto;
  opacity: 1;
}

.outline-popup {
  position: fixed;
  inset: 0;
  z-index: -1;
  inline-size: 100%;
  block-size: 100lvh;
  pointer-events: none;
  background: var(--navy);
  opacity: 0;
  transition: opacity 600ms ease 0s;
  

  /* ==== close-menu ==== */
  .close-menu {
    position: absolute;
    top: 40px;
    right: 40.1px;
    z-index: 20;
    display: block;
    margin-inline: auto 0;

    @media not all and (width >=768px) {
      top: 61vw;
      right: 5vw;
      inline-size: calc((100 / 750) * 46.67 * 1vw);
    }
  }

  /* ==== outline-inner ==== */
  .outline-inner {
    position: relative;
    display: grid;
    grid-template-columns: minmax(50%, 650px) auto;
    gap: 80px;
    align-items: center;
    block-size: 100lvh;
    overflow-y: scroll;
    

    @media not all and (width >=768px) {
      
      
      
      
      
      
      
      
      
      
      
      
      grid-template-columns: 100%;
      gap: 5vw;
      align-items: flex-start;
      padding-block: 0;
      grid-auto-rows: min-content;
      
      
      
      
      
      
      
      
      
      
      
      
    }
  }

  /* ==== img ==== */
  .img {
    display: grid;
    block-size: 100%;

    @media only screen and (width <= 768px) {
      block-size: calc((100 / 750) * 423 * 1vw);
    }

    & img {
      inline-size: 100%;
      block-size: 100%;
      max-block-size: 100vh;
      object-fit: cover;

      @media only screen and (width <= 768px) {
        block-size: calc((100 / 750) * 423 * 1vw);
        max-block-size: calc((100 / 750) * 423 * 1vw);
      }
    }
  }

  /* ==== body ==== */
  .body {
    position: relative;
    display: block grid;
    grid-auto-rows: min-content;
    gap: 60px;
    padding-inline: 0 80px;

    @media only screen and (width <= 768px) {
      gap: calc((100 / 750) * 56 * 1vw);
      padding-inline: calc((100 / 750) * 40 * 1vw);
      padding-top: calc((100 / 750) * 0 * 1vw);
    }

    /* ==== u-head ==== */
    .u-head {
      position: unset;
      inset: unset;
      justify-content: flex-start;
      translate: unset;

      & > * {
        translate: unset;
      }

      @media only screen and (width <= 768px) {
        margin-inline: auto;
      }
    }

    /* ==== dl ==== */
    & dl {
      display: block grid;
      grid-template-columns: auto;
      grid-auto-rows: min-content;

      @media not all and (width >=768px) {
        font-size: calc((100 / 750) * 26 * 1vw);
      }

      .tr {
        display: block grid;
        grid-template-columns: 150px auto;
        align-self: flex-start;
        justify-content: flex-start;
        border-top: 1px dashed white;
        border-bottom: 1px dashed transparent;

        &:last-child {
          border-bottom: 1px dashed white;
        }

        @media not all and (width >=768px) {
          grid-template-columns: 28.3vw 1fr;
        }
      }

      & :where(dt, dd) {
        padding-block: 28px;
        line-height: 1.9;

        @media only screen and (width <= 768px) {
          padding-block: calc((100 / 750) * 28.9 * 1vw);
          font-size: calc((100 / 750) * 26 * 1vw);
        }
      }

      & dt {
        font-weight: 700;
      }

      & dd {
        font-weight: 500;

        & a[href^='tel'] {
          @media only screen and (width <= 768px) {
            text-decoration: underline;
          }
        }
      }
    }
  }
}

/* =====================
  commitment
===================== */
.article[data-id='commitment'] {
  position: relative;

  /* ==== u-head ==== */
  .u-head {
    @media only screen and (width <= 768px) {
      position: absolute;
      inset-inline-start: 50%;
      top: calc((100 / 750) * 188 * 1vw);
      translate: -50% 0;
    }
  }

  /* ==== contents ==== */
  .contents {
    inline-size: 949px;
    padding-block: 38px 0;
    padding-inline: 0 104px;

    @media (width > 1301px) {
      margin-inline: auto;
    }

    @media only screen and (width <= 768px) {
      inline-size: calc((100 / 750) * 564 * 1vw);
      padding-block: 66vw 0;
      padding-inline: 0;
      margin-inline: auto;
    }

    /* ==== img ==== */
    & img {
      @media only screen and (width <= 768px) {
        display: block flow;
        inline-size: calc((100 / 750) * 418 * 1vw);
        margin-inline: auto;
      }
    }
  }

  /* ==== h3 ==== */
  & h3 {
    font-size: 20px;
    font-weight: 600;
    opacity: 0;
    clip-path: inset(0 0 100% 0);
    transition: clip-path 900ms ease 0ms, opacity 900ms ease 0ms;
    
    
    
    

    @media only screen and (width <= 768px) {
      margin-block-start: calc((100 / 750) * 40 * 1vw);
      font-size: calc((100 / 750) * 30 * 1vw);
      text-align: center;
    }
  }

  /* ==== p ==== */
  & p {
    font-size: 16px;
    font-style: normal;
    font-weight: 500;
    line-height: 2.3;
    opacity: 0;
    clip-path: inset(0 0 100% 0);
    transition: clip-path 900ms ease 0ms, opacity 900ms ease 0ms;
    
    
    
    
    
    
    

    @media only screen and (width <= 768px) {
      padding-inline: calc((100 / 750) * 9 * 1vw);
      margin-block-start: calc((100 / 750) * 24 * 1vw);
      font-size: calc((100 / 750) * 26 * 1vw);
    }
  }

  /* ==== swiper-pagination ==== */
  .swiper-pagination {
    @media only screen and (width <= 768px) {
      all: unset;
      display: block flow;
      display: block flex;
      inline-size: calc((100 / 750) * 546 * 1vw);
      block-size: calc((100 / 750) * 2 * 1vw);
      margin-block-start: calc((100 / 750) * 55 * 1vw);
      margin-inline: auto;
      background: color-mix(in srgb, white 30%, transparent);

      & > span {
        all: unset;
      }

      .swiper-pagination-bullet {
        inline-size: 50%;
        block-size: inherit;

        &.swiper-pagination-bullet-active {
          background: white;
        }
      }
    }
  }

  &.active {
    /* ==== h3 ==== */
    & h3 {
      opacity: 1;
      clip-path: inset(0 0 0 0);
    }

    /* ==== p ==== */
    & p {
      opacity: 1;
      clip-path: inset(0 0 0 0);
    }
  }

  .swiper-wrapper .swiper-slide:not(:last-child) {
    @media (width > 768px) {
      border-block-end: 1px solid white;
    }
  }

  /* ==== PC swiper reset ==== */
  @media (width > 768px) {
    .swiper {
      all: unset;
    }

    .swiper-wrapper {
      all: unset;
      display: block grid;
      gap: 56px;
    }

    .swiper-slide {
      all: unset;

      & section {
        display: block grid;
        grid-template-columns: auto 319px;
        grid-auto-rows: min-content;
        gap: 14px 62px;
        align-items: center;
        padding-block-end: 55px;
      }

      & h3 {
        grid-row: 1 / 2;
        grid-column: 1 / 2;
        align-self: flex-end;
      }

      & p {
        grid-row: 2 / 3;
        grid-column: 1 / 2;
        align-self: flex-start;
        translate: 0 5px;
      }

      & img {
        grid-row: 1 / span 2;
        grid-column-start: 2;
        block-size: 210px;
      }
    }

    .swiper-pagination {
      display: none;
    }
  }
}
