/* =======================================
共通
======================================== */
.sec-ttl-box {
  margin-bottom: 86px;
}

.sec-ttl-box .sec-en {
  letter-spacing: 0;
  font-size: 96px;
  line-height: 1;
  color: #fff;
  font-family: "Plus Jakarta Sans", sans-serif;
}

.about .sec-en {
  font-size: 96px;
  line-height: 1;
  font-weight: 400;
  font-family: "Plus Jakarta Sans", sans-serif;
  color: #ececec !important;
}

.sec-ttl {
  margin-top: 20px;
  font-size: 16px;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 20px;
}

.sec-ttl::before {
  content: '';
  display: inline-block;
  width: 28px;
  height: 1px;
  background-color: #fff;
}

.more-btn {
  color: #fff;
  padding: 23px 40px;
  font-size: 16px;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  gap: 56px;
  letter-spacing: 0.025em;
  margin-top: 70px;
  transition: background 0.7s ease;
  cursor: pointer;
  position: relative;
  font-family: "Noto Sans JP", sans-serif;
  z-index: 2;
}


/* 通常グラデ */
.more-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(-45deg, #fd6f11, #fd3d11);
  z-index: -1;
}

/* hover用（色逆） */
.more-btn::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(-45deg, #fd3d11, #fd6f11);
  z-index: -1;
  opacity: 0;
  transition: opacity 0.5s ease;
}

.more-btn:hover::after {
  opacity: 1;
}

.more-btn .linkbtn__icon {
  line-height: 1;
  width: 17px;
  height: 16px;
  font-size: 0;
  position: relative;
  transform: rotate(-45deg);
  overflow: hidden;
}

.arrow {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transition: transform .3s ease;
}

.more-btn:hover .arrow--old {
  transform: translate(100%, -50%);
  /* 右外へスライドアウト */
}

.arrow--new {
  transform: translate(-200%, -50%);
  /* 初期：左外 */
}

.more-btn:hover .arrow--new {
  transform: translate(-50%, -50%);
  /* 中央にスライドイン */
}


@media (max-width: 991px) {
  .sec-ttl-box .sec-en {
    font-size: 70px;
  }

  .more-btn {
    margin-top: 50px;
  }
}

@media (max-width: 480px) {
  .sec-ttl-box .sec-en {
    font-size: 55px;
  }

  .more-btn {
    background: linear-gradient(90deg, #fd3d11, #fd6f11);
    color: #fff;
    padding: 20px 30px;
  }
}

/* =======================================
メインビジュアル
======================================== */

.slider {
  position: relative;
  height: 100vh;
  overflow: hidden;
}

.slider .swiper,
.slider .swiper-wrapper,
.slider .swiper-slide {
  height: 100%;
}

.slider img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.fv-copy {
  position: absolute;
  right: 80px;
  bottom: 80px;
  z-index: 2;
  color: #fff;
  text-align: left;
}

.fv-copy h2 {
  font-size: 96px;
  line-height: 1.1;
  letter-spacing: -0.04em;
  margin-bottom: 16px;
  font-weight: 700;
  font-family: "Zen Old Mincho", serif;
}

.fv-copy p {
  display: inline-flex;
  align-items: center;
  font-size: 16px;
  letter-spacing: .08em;
  gap: 20px;
}

.fv-copy p::before {
  content: '';
  display: inline-block;
  height: 1px;
  width: 28px;
  background-color: #fff;
}

.slider {
  height: 100svh;
  height: 100vh;
}

.slider {
  position: relative;
  overflow: hidden;
}

@media (max-width: 768px) {
  .slider img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }

  .slider {
    position: relative;
  }

  .slider::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;

    background: linear-gradient(to top,
        rgba(0, 0, 0, 0.7) 0%,
        rgba(0, 0, 0, 0.45) 40%,
        rgba(0, 0, 0, 0.15) 70%,
        rgba(0, 0, 0, 0) 100%);
  }

}

/* =======================================
ABOUT
======================================== */

.about {
  position: relative;
  padding-top: 60px;
  background-color: #fff;
  padding-bottom: 200px;
}

.fv-copy {
  z-index: 3;
  position: fixed;
  bottom: 60px;
  right: 120px;
  max-width: 490px;
  width: 100%;
  z-index: 11;
  height: auto;
  mix-blend-mode: difference;
}


.about-text-list {
  padding-left: 125px;
  font-weight: 400;
  letter-spacing: -0.04em;
  line-height: 2;
}

/*====== ABOUT ループテキスト ======*/

.loop-txt {
  position: absolute;
  bottom: -80px;
  width: 100%;
  overflow: hidden;
  z-index: 10;
}

/* セット自体を横並び */
.loop-set{
  display: flex;
}

/* 画像 */
.loop-set img{
  padding-left: 42px;
  height: 180px;
  width: auto;
  flex-shrink: 0;
  display: block;
}

.loop-track{
  display: flex;
  width: max-content;
  will-change: transform;
  animation-name: loop;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}

@keyframes loop {
  0%   { transform: translate3d(0,0,0); }
  100% { transform: translate3d(-50%,0,0); }
}
/* ユーザー環境配慮（任意） */
@media (prefers-reduced-motion: reduce){
  .loop-track{ animation: none; }
}

@media (max-width:1600px) {
  .fv-copy {
    right: 120px;
    max-width: 380px;
  }
}

@media (max-width:1280px) {
  .fv-copy {
    right: 60px;
    max-width: 350px;
  }

  .fv-copy.is-absolute {
    right: 60px;
    padding-right: 0;
  }

  .about-text-list {
    padding-right: 100px;
    padding-left: 30px;

  }

}

@media (min-width: 992px) {
  .fv-copy.is-absolute {
    position: absolute;
    bottom: 340px;
  }
}

@media (max-width: 991px) {
  .about {
    position: relative;
    padding-top: 60px;
    background-color: #fff;
  }

  .fv-copy {
    right: 30px;
    max-width: 300px;
  }

  .fv-copy.is-absolute {
    position: absolute;
    right: 30px;
  }

  .js-fv-stop {
    display: block;
    height: 1px;
  }

  .loop-track img {
    height: 140px;
  }

  .about-text-list {
    padding-right: 0;
    padding-left: 60px;
  }

  .about .sec-ttl-box {
    margin-bottom: 80px;
  }
}

@media (max-width: 768px) {
  .about {
    position: relative;
    padding-bottom: 120px;
  }

  .about .sec-ttl-box {
    padding-top: 160px;
    margin-bottom: 40px;
  }

  .fv-copy {
    right: 30px;
    max-width: 260px;
  }

  .loop-track img {
    height: 120px;
  }
}

@media (max-width: 480px) {
  .about .sec-ttl-box {
    margin-bottom: 60px;
  }

  .about-text-list {
    padding-right: 0;
    padding-left: 30px;
  }

  .fv-copy {
    right: 30px;
    max-width: 220px;
  }

  .loop-txt {
    bottom: -50px;
  }

  .loop-track img {
    height: 100px;
  }
}

/* =======================================
  Works
======================================== */
.works-area {
  overflow: visible;
  padding-bottom: 155px;
}

.works-top {
  background: linear-gradient(-45deg, #1b1a1a 0%, #3e3c3c 100%);
  padding-top: 200px;
  overflow: visible;
}

.works-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: auto auto;
  column-gap: 30px;
  overflow: visible;
}

.works-grid__head {
  grid-column: 1 / -1;
  margin-bottom: 86px;
}

.works-grid__img {
  grid-column: 1;
}

.works-grid__txt {
  grid-column: 2;
}

.works-grid__img {
  margin-left: calc(50% - 50vw);
  /* これが超定番テク */
  width: calc(100% + (50vw - 50%));
  /* 相殺分だけ広げる */
  height: 630px;
  margin-bottom: -62px;
}

.works-grid__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.works-text {
  max-width: 627px;
  margin-left: auto;
  color: #fff;
  letter-spacing: -0.04em;
  font-size: 16px;
  line-height: 2;
}

.works-text p {
  font-size: 16px;
  line-height: 2;
}

.works-g-item {
  max-width: 578px;
  width: 100%;
}

.works-gallery {
  position: relative;
  width: 100%;
  z-index: 2;
}

.works-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.works-g-float {
  z-index: 2;
}

.works-g-right {
  margin-top: -80px;
  right: 0;
  margin-left: auto;
  width: 320px;
  height: 220px;
}

.works-g-center-wrap {
  max-width: 470px;
  width: 100%;
  margin: 0 auto 50px;
}

.works-g-center {
  left: 50%;
  width: 344px;
}

.works-swiper {
  width: 100%;
  overflow: hidden;
}

.works-swiper .swiper-wrapper {
  align-items: stretch;
}

.works-swiper .swiper-slide {
  width: 30%;
  flex-shrink: 0;
}

.works-swiper .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.works-gallery .container-fluid {
  margin-top: 160px;
}

/* 注釈：1470基準で右寄せ */
.works-g-note {
  margin: 10px 0 0;
  font-size: 12px;
  color: #666;
  text-align: right;
}

.insta-link {
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-top: 30px;
  margin-right: -94px;

  border-bottom: 1px solid #000;
  font-size: 14px;
  padding-bottom: 3px;

  display: flex;
  gap: 12px;
  align-items: flex-end;
  line-height: 1;
  text-decoration: none;
  /* 任意 */
  color: inherit;
  /* 任意 */
}

@media (max-width: 1700px) {
  .insta-link {
    margin-right: 0;
  }
}

@media (max-width: 991px) {
  .works-area {
    overflow: visible;
    padding-bottom: 120px;
  }

  .works-top {
    padding-top: 120px;
  }

  .works-grid {
    grid-template-columns: 1fr;
    row-gap: 16px;
    padding-bottom: 80px;
  }

  .works-grid__head {
    margin-bottom: 16px;
  }

  .works-grid__img {
    margin-left: 0;
    width: 100%;
  }

  .works-grid__txt {
    grid-column: 1;
  }

  .works-text {
    max-width: none;
    margin-left: 0;
  }

  .works-gallery {
    margin-top: 0;
    padding-top: 16px;
  }

  .works-g-center-wrap {
    max-width: 350px;
    width: 100%;
    margin: 25px auto 50px;
  }

  .works-g-float {
    position: static;
    transform: none;
    width: 100%;
    max-width: 350px;
    margin-top: 0;
  }

  .works-g-right {
    margin-top: -50px;
    margin-bottom: 50px;
  }

  .works-gallery .container-fluid {
    margin-top: 80px;
  }

  .works-grid__img {
    margin-left: calc(50% - 50vw);
    width: calc(100% + (50vw - 50%));
    height: 630px;
    margin-bottom: 0;
  }

  .works-grid__img {
    height: 530px;
  }
}

@media (max-width: 480px) {
  .works-area {
    overflow: visible;
    padding-bottom: 80px;
  }

  .works-grid__img {
    height: 330px;
  }

  .works-swiper .swiper-slide {
    width: 45%;
    flex-shrink: 0;
  }

  .works-g-float {
    max-width: 280px;
  }
  
  .works-g-center-wrap {
    display: none;
  }
}

/* =======================================
  Recruit
======================================== */
.recruit-sec {
  position: relative;
  background: #fff;
  padding: 0 0 160px;
  overflow: visible;
  z-index: 2;
}

/* 斜め背景：右端スタート / 最大1445px / 下に320px突き出し / 最背面 */
.recruit-slant {
  position: absolute;
  top: 0;
  right: 0;

  width: 100%;
  max-width: 1445px;
  height: calc(100% + 320px);

  background: linear-gradient(-45deg, #1b1a1a 0%, #3e3c3c 100%);
  pointer-events: none;

  /* 最背面（recruit-secの背面に敷く） */
  z-index: 0;

  clip-path: polygon(100% 0,
      100% 100%,
      0% 100%);
}

/* 中身は斜めより前 */
.recruit-sec .container {
  position: relative;
  z-index: 2;
}

/* 2カラム（左テキスト / 右画像） */
.recruit-grid {
  display: grid;
  grid-template-columns: minmax(0, 720px) minmax(0, 1fr);
  column-gap: 30px;
}

.recruit-sec .sec-ttl-box {
  margin-bottom: 120px;
}

.recruit-sec .sec-en {
  color: #000;
}

.recruit-sec .sec-ttl {
  color: #000;
}

.recruit-sec .sec-ttl::before {
  content: '';
  display: inline-block;
  width: 28px;
  height: 1px;
  background-color: #000;
}

.recruit-en {
  font-size: 64px;
  margin: 0 0 10px;
  line-height: 1;
}

.recruit-sub {
  margin: 0 0 26px;
  font-size: 14px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.recruit-sub .line {
  width: 32px;
  height: 1px;
  background: #000;
  display: inline-block;
}

.recruit-ttl {
  margin: 0 0 20px;
  font-size: 48px;
  font-weight: 700;
  font-family: "Zen Old Mincho", serif;
  line-height: 1.2;
}

.recruit-lead {
  margin: 0 0 50px;
  font-size: 16px;
  line-height: 2;
  letter-spacing: -0.04em;
}

.recruit-btn {
  margin-top: 0;
}

.recruit-media {
  margin-top: 230px;
  height: 630px;
  position: relative;
  z-index: 2;
  overflow: hidden;
  margin-right: calc(50% - 50vw);
  width: calc(100% + (50vw - 50%));
  max-width: none;
  /* 念のため */
}

.recruit-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.recruit-media.sp {
  display: none;
}

@media (max-width: 1400px) {
  .recruit-grid {
    grid-template-columns: minmax(0, 550px) minmax(0, 1fr);
  }

  .recruit-media {
    height: auto;
  }
}

@media (max-width: 1100px) {
  .recruit-grid {
    grid-template-columns: minmax(0, 450px) minmax(0, 1fr);
  }

  .recruit-media {
    margin-right: calc(-1 * var(--c-pad)) !important;
    /* ✅ 右へ押し出す */
    width: calc(100% + var(--c-pad)) !important;
    /* ✅ 押し出した分だけ幅も足す */
    height: auto !important;
    overflow: visible;
  }

  .recruit-media img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
    object-position: right center;
  }
}

@media (max-width: 991px) {
  .recruit-sec {
    padding: 0 0 120px;
  }

  .recruit-grid {
    grid-template-columns: 1fr;
    row-gap: 24px;
  }

  .recruit-media {
    margin-right: 0;
    width: 100%;
    height: 240px;
  }

  .recruit-media.pc {
    display: none;
  }

  .recruit-media.sp {
    margin-bottom: 40px;
    margin-top: 40px;
    display: block;
  }

  .recruit-en {
    font-size: 44px;
  }

  .recruit-ttl {
    font-size: 32px;
  }

  .recruit-sec .sec-ttl-box {
    margin-bottom: 40px;
  }

  .recruit-slant {
    position: absolute;
    top: auto;
    bottom: 0;
    right: 0;
    width: 50%;
    max-width: 800px;
    height: 50%;
    background: linear-gradient(-45deg, #1b1a1a 0%, #3e3c3c 100%);
    pointer-events: none;
    z-index: 0;
    clip-path: polygon(100% 0, 100% 100%, 0% 100%);
  }
}

@media (max-width: 991px) {
  .recruit-lead {
    padding-right: 150px;
  }
}

@media (max-width: 680px) {
  .recruit-slant {
    height: 30%;
  }

  .recruit-lead {
    padding-right: 100px;
  }

}

@media (max-width: 480px) {
  .recruit-sec {
    padding: 0 0 80px;
  }

  .recruit-slant {
    height: 30%;
  }

  .recruit-lead {
    padding-right: 20px;
  }

  .recruit-ttl {
    font-size: 26px;
  }
}