*, *::before, *::after { box-sizing: border-box; }

:root {
  --navy: #1f3f66;
  --btn-grad: linear-gradient(90deg, #af8246 0%, #9b6025 50%, #c99a52 100%);
  --brown-grad: conic-gradient(from 90deg, #af8246 -9.6%, #9b6025 26.9%, #af8246 90.4%, #9b6025 126.9%);
  --font-serif: "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;
}

html { scroll-behavior: smooth; scroll-padding-top: 86px; }

body {
  margin: 0;
  color: var(--navy);
  font-family: var(--font-serif);
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }

/* ---------- Header ---------- */
.header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: 86px;
  background: rgba(255, 255, 255, 0);
  transition: background-color .3s, box-shadow .3s;
}
/* スクロール後・メニュー展開時は白背景 */
.header.is-scrolled,
.header.is-open {
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 2px 12px rgba(31, 63, 102, .12);
}

.header__logo {
  position: absolute;
  top: -2px; left: 32px;
  width: 259px;
}

.header__nav {
  position: absolute;
  top: 0; right: 13px;
  height: 81px;
  display: flex;
  align-items: center;
  gap: 40px;
}

.header__list { display: flex; gap: 43px; }
.header__list a {
  position: relative;
  display: inline-block;
  padding-bottom: 6px;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}
.header__list a::after { /* 中央から線が伸びる */
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 100%; height: 2px;
  background: var(--navy);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .3s;
}
.header__list a:hover::after,
.header__list a:focus-visible::after { transform: scaleX(1); }

.btn-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  color: #fff;
  background: var(--btn-grad);
  background-size: 200% 100%;
  border: 3px solid #fff;
  border-radius: 14px;
  font-weight: 700;
  white-space: nowrap;
  transition: background-position .4s;
}
.btn-cta:hover,
.btn-cta:focus-visible,
.icon-btn:hover,
.icon-btn:focus-visible { background-position: 100% 0; }

.header__cta {
  width: 284px; height: 57px;
  font-size: 16px;
  font-weight: 500;
  margin-top: -12px;
}

.header__sp-buttons { display: none; }
.sp-only { display: none; }

/* ---------- Hero ---------- */
.hero {
  position: relative;
  height: 900px;
  background: #fff url("../images/hero-bg.jpg") center / cover no-repeat;
  overflow: hidden;
}
.hero::before { /* 画像の opacity 70% 相当 */
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 65% 70% at 30% 55%, rgba(255, 255, 255, .45), rgba(255, 255, 255, 0) 100%),
    rgba(255, 255, 255, .3);
}

.hero__inner {
  position: relative;
  width: 100%;
  height: 100%;
  padding: 202px 0 0 155px;
}

.hero__title {
  margin: 0;
  font-size: 74px;
  font-weight: 500;
  line-height: 1.43;
  white-space: nowrap;
}

.hero__catch {
  width: 496px;
  margin: 4px 0 0 -1px;
  /* 左から筆でなぞるように表示 */
  animation: catch-reveal 1.4s cubic-bezier(.22, .61, .36, 1) .6s both;
}

@keyframes catch-reveal {
  from {
    opacity: 0;
    clip-path: inset(0 100% 0 0);
    transform: translateX(-12px);
  }
  30% { opacity: 1; }
  to {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero__catch { animation: none; }
}

.hero__lead {
  margin: 0;
  padding-left: 5px;
  font-size: 28px;
  font-weight: 700;
  line-height: 46px;
  letter-spacing: .1em;
  white-space: nowrap;
}

/* 992〜1200px: ナビが収まるよう縮小 */
@media (max-width: 1200px) and (min-width: 992px) {
  .header__logo { width: 200px; left: 24px; }
  .header__list { gap: 20px; }
  .header__list a { font-size: 15px; }
  .header__nav { gap: 16px; right: 16px; }
  .header__cta { width: 232px; font-size: 14px; }
}

/* 1200px以下: ヒーロー文字を可変に */
@media (max-width: 1200px) and (min-width: 768px) {
  .hero__inner { padding-left: 8vw; }
  .hero__title { font-size: 6vw; }
  .hero__catch { width: 40vw; }
  .hero__lead { font-size: 2.3vw; line-height: 1.65; }
}

/* 768〜991px: 右側の女性が見切れないよう背景位置を右寄せ */
@media (max-width: 991px) and (min-width: 768px) {
  .hero { background-position: 80% center; }
}

/* ---------- 991px以下: ハンバーガーメニュー ---------- */
@media (max-width: 991px) {
  .header { height: 81px; }
  .header__logo { top: 0; left: 6px; width: 243px; }

  .header__sp-buttons {
    position: absolute;
    top: 12px; right: 11px;
    display: flex;
    gap: 7px;
  }
  .icon-btn {
    width: 59px; height: 57px;
    padding: 0;
    display: flex; align-items: center; justify-content: center;
    color: #fff;
    background: var(--btn-grad);
    background-size: 200% 100%;
    border: 3px solid #fff;
    border-radius: 14px;
    cursor: pointer;
    transition: background-position .4s;
  }
  .header__toggle { flex-direction: column; gap: 11px; }
  .header__toggle span {
    display: block;
    width: 28px; height: 2px;
    background: #fff;
    transition: transform .25s, opacity .25s;
  }
  .header.is-open .header__toggle span:nth-child(1) { transform: translateY(13px) rotate(45deg); }
  .header.is-open .header__toggle span:nth-child(2) { opacity: 0; }
  .header.is-open .header__toggle span:nth-child(3) { transform: translateY(-13px) rotate(-45deg); }

  /* ドロワーメニュー */
  .header__nav {
    position: fixed;
    top: 81px; left: 0; right: 0;
    height: auto;
    padding: 24px 24px 32px;
    flex-direction: column;
    align-items: stretch;
    gap: 24px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 8px 20px rgba(31, 63, 102, .15);
    transform: translateY(-120%);
    visibility: hidden;
    transition: transform .3s, visibility .3s;
  }
  .header.is-open .header__nav { transform: none; visibility: visible; }
  .header__list { flex-direction: column; gap: 0; }
  .header__list a {
    display: block;
    padding: 14px 4px;
    font-size: 16px;
    border-bottom: 1px solid rgba(31, 63, 102, .15);
  }
  .header__cta { width: 100%; margin-top: 0; }
}

/* ---------- SP ---------- */
@media (max-width: 767px) {
  .sp-only { display: block; }

  .hero {
    height: 730px;
    background-size: auto 100%;
    background-position: 75.6% center;
  }
  .hero__inner { padding: 183px 0 0 20px; }
  .hero__title {
    font-size: 40px;
    line-height: 62px;
    white-space: normal;
  }
  .hero__catch {
    width: 327px;
    margin: 0 0 0 -6px;
  }
  .hero__lead {
    margin-top: 17px;
    padding-left: 0;
    font-size: 17px;
    line-height: 33px;
    letter-spacing: .12em;
  }
}

/* ---------- 375px以下: ロゴがボタンと被らないよう縮小 ---------- */
@media (max-width: 375px) {
  /* ボタン2つ分(136px)+余白を引いた幅 */
  .header__logo { width: calc(100% - 148px); }
}

/* ---------- 共通: セクション見出し ---------- */
.section-label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin: 0;
  font-family: "Amethysta", var(--font-serif);
  font-size: 20px;
  line-height: 33px;
}
.section-label::before,
.section-label::after {
  content: "";
  width: 34px; height: 1px;
  background: currentColor;
}
.section-label--light { color: #fff; }

.section-title {
  margin: 22px 0 0;
  font-size: 48px;
  font-weight: 500;
  line-height: 1.45;
  text-align: center;
}
.section-title--light { color: #fff; }

/* ---------- QUESTION ---------- */
.question {
  position: relative;
  background: #f6f5f2;
  overflow: hidden;
}
.question::before { /* 墨のテクスチャ */
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 533px;
  background: url("../images/question-texture.png") center bottom / cover no-repeat;
  opacity: .49;
  pointer-events: none;
}
.question__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 88px 0 85px;
  text-align: center;
}

.question__list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0 64px;
  min-height: 226px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.q-item { display: flex; align-items: flex-start; }
.q-item__num {
  flex: 0 0 115px;
  height: 115px;
  background: url("../images/number-line.svg") no-repeat left bottom / 115px 49px;
}
.q-item__num span {
  display: block;
  color: #c4a788;
  font-size: 80px;
  font-style: italic;
  font-weight: 500;
  line-height: 112px;
}
.q-item__text {
  flex: 1;
  max-width: 262px;
  margin: 76px 0 0 11px;
  padding-top: 12px;
  border-top: 2px solid #d9d9d9;
  font-size: 20px;
  font-weight: 500;
  line-height: 33px;
}

.question__bar {
  display: block;
  width: 1px; height: 49px;
  margin: 0 auto;
  background: var(--navy);
}
.question__lead {
  margin: 39px 0 0;
  font-size: 20px;
  font-weight: 500;
  line-height: 29px;
}
.question__conclusion {
  margin: 12px 0 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 52px;
}
.question__conclusion strong {
  display: inline-block;
  color: #c4a788;
  font-size: 36px;
  font-weight: 700;
  line-height: 1.4;
  border-bottom: 1px solid #c4a788;
}

/* ---------- PROBLEM ---------- */
.problem {
  position: relative;
  color: #fff;
  background: #081c2c url("../images/problem-bg.jpg") right center / cover no-repeat;
}
.problem::before {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #081c2c 0%, rgba(27, 43, 56, .83) 53.846%, rgba(115, 115, 115, 0) 100%);
}
.problem__inner {
  position: relative;
  max-width: 1600px;
  margin: 0 auto;
  padding: 90px 0 96px;
  text-align: center;
}

.problem__list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  margin: 43px 0 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.p-item {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 23px;
}
.p-item img { flex: none; width: 78px; height: 75px; object-fit: contain; }
.p-item p { margin: 0; font-size: 20px; font-weight: 500; line-height: 33px; }
.p-item:first-child { justify-content: flex-end; padding-right: clamp(24px, 5.7vw, 91px); }
.p-item:last-child  { padding-left: clamp(24px, 2.75vw, 44px); }
.p-item:last-child::before { /* 中央の縦線 */
  content: "";
  position: absolute;
  left: 0; top: 0;
  width: 1px; height: 74px;
  background: #fff;
}

.problem__lead {
  margin: 30px 0 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 43px;
}

/* ---------- 〜1200px ---------- */
@media (max-width: 1200px) {
  .question__inner, .problem__inner { padding-inline: 24px; }
  .section-title { font-size: clamp(32px, 4vw, 48px); }
  .question__conclusion strong { font-size: clamp(26px, 3vw, 36px); }
}

/* ---------- 〜991px: 縦積みレイアウト ---------- */
@media (max-width: 991px) {
  .question__inner { padding: 61px 0 70px; }
  .question__inner > :not(.question__list):not(.question__bar) { padding-inline: 24px; }
  .section-title { margin-top: 9px; font-size: clamp(30px, 4.2vw, 40px); line-height: 1.65; }

  .question__list {
    display: block;
    max-width: 402px;
    min-height: 0;
    margin: 15px auto 0;
    padding-left: 30px;
  }
  .q-item { min-height: 110px; }
  .q-item__num { height: 78px; flex-basis: 102px; }
  .q-item__num span { font-size: 60px; line-height: 78px; }
  .q-item__text {
    max-width: none;
    margin: 25px 0 0 9px;
    padding-top: 0;
    border-top: 0;
    font-size: 18px;
    line-height: 29px;
  }
  .question__bar { height: 29px; margin-top: 0; }
  .question__lead { margin-top: 23px; font-size: 16px; line-height: 24px; }
  .question__conclusion { margin-top: 6px; font-size: 20px; line-height: 26px; }
  .question__conclusion strong { font-size: 20px; line-height: 26px; border-bottom: 0; }

  .problem::before {
    background: linear-gradient(90deg, #081c2c 0%, rgba(27, 43, 56, .83) 53.846%, rgba(115, 115, 115, 0) 100%);
  }
  .problem__inner { padding: 69px 24px 71px; }
  .problem .section-title { margin-top: 13px; line-height: 1.45; }
  .problem__list { display: block; margin-top: 53px; text-align: center; }
  .p-item {
    flex-direction: column;
    align-items: center;
    gap: 7px;
    padding: 0 !important;
  }
  .p-item:first-child { margin-bottom: 35px; }
  .p-item:first-child::after { /* 区切り線 */
    content: "";
    order: 3;
    width: 74px; height: 1px;
    margin-top: 25px;
    background: #fff;
  }
  .p-item:last-child::before { display: none; }
  .p-item img { width: 52px; height: 50px; }
  .problem__lead { margin-top: 32px; }
}

/* ---------- SP ---------- */
@media (max-width: 767px) {
  .question::before { height: 134px; }
  .section-title { font-size: 30px; line-height: 1.65; }
  .problem__lead { display: none; }
  .problem { background-size: auto 100%; }
}

/* ---------- SOLUTION ---------- */
.section-label--left { justify-content: flex-start; }
.section-label--left::before { display: none; }

.solution {
  position: relative;
  background:
    linear-gradient(rgba(255, 255, 255, .65), rgba(255, 255, 255, .65)),
    url("../images/solution-bg.jpg") center / cover no-repeat;
  overflow: hidden;
}
.solution::before { /* 文字の背後のやわらかい白 */
  content: "";
  position: absolute;
  left: 102px; right: 99px;
  top: 188px; height: 549px;
  border-radius: 200px;
  background: rgba(255, 255, 255, .72);
  filter: blur(50px);
  pointer-events: none;
}
.solution__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 90px 0 0;
  height: 859px;
}

.solution__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--navy);
}
.solution__title {
  margin: 9px 0 0;
  font-size: 48px;
  font-weight: 500;
  line-height: 1.45;
  white-space: nowrap;
}
.solution__desc {
  margin: 0;
  padding: 0 70px 2px 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 39px;
  white-space: nowrap;
}

.solution__sub {
  margin: 54px 0 0;
  font-size: 32px;
  font-weight: 500;
  line-height: 39px;
  text-align: center;
}

.elements {
  display: grid;
  grid-template-columns: repeat(4, 246px);
  justify-content: center;
  gap: 0 31px;
  margin: 26px 0 50px;
  padding: 0;
  list-style: none;
  text-align: center;
}
.element img { width: 246px; height: 164px; object-fit: cover; }
.element__name {
  margin: 18px 0 0;
  font-size: 24px;
  font-weight: 700;
  line-height: 39px;
}
.element__desc {
  margin: 0;
  color: #232323;
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
}

.solution__lead {
  margin: 26px 0 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 39px;
  text-align: center;
}
.solution__name {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 12px;
  margin: 12px 0 0;
  color: var(--navy);
  font-weight: 700;
}
.solution__name-pre, .solution__name-post { font-size: 20px; line-height: 39px; }
.solution__name strong {
  color: #bf7b37;
  font-size: 32px;
  line-height: 39px;
  text-shadow: 0 0 8px #fff, 0 0 16px #fff;
}
.pc-only { display: inline; }

@media (max-width: 1200px) {
  .solution__inner { padding-inline: 24px; height: auto; padding-bottom: 80px; }
  .solution__title { font-size: clamp(32px, 4vw, 48px); }
  .solution__desc { font-size: clamp(18px, 2vw, 24px); white-space: normal; }
  .elements { grid-template-columns: repeat(4, minmax(0, 246px)); gap: 0 clamp(12px, 2.5vw, 31px); }
  .element img { width: 100%; height: auto; aspect-ratio: 3 / 2; }
}

/* ---------- 〜991px ---------- */
@media (max-width: 991px) {
  .solution::before { left: -40px; right: -40px; top: 120px; height: 700px; }
  .solution__inner { max-width: 640px; padding: 70px 30px 70px; }
  .solution__head { flex-direction: column; align-items: center; gap: 0; padding-bottom: 0; border-bottom: 0; text-align: center; }
  .section-label--left { justify-content: center; }
  .section-label--left::before { display: block; }
  .solution__title { margin-top: 7px; font-size: clamp(28px, 4.2vw, 40px); line-height: 48px; white-space: normal; }
  .solution__head-main::after { /* タイトル下の短い線 */
    content: "";
    display: block;
    width: 50px; height: 1px;
    margin: 18px auto 0;
    background: var(--navy);
  }
  .solution__desc { margin-top: 15px; padding: 0; font-size: 16px; line-height: 29px; white-space: normal; }
  .solution__sub { margin-top: 50px; font-size: 24px; line-height: 39px; }
  .elements { grid-template-columns: repeat(2, 1fr); gap: 0 15px; margin: 13px 0 0; }
  .element { margin-bottom: 0; }
  .element:nth-child(n+3) { margin-top: 0; }
  .element__name { margin-top: 6px; font-size: 18px; line-height: 28px; }
  .element__desc { font-size: 14px; line-height: 22px; margin-bottom: 20px; }
  .solution__lead { margin-top: 34px; font-size: 20px; line-height: 33px; }
  .solution__name { flex-direction: column; align-items: center; gap: 0; margin-top: 23px; }
  .solution__name strong { font-size: 20px; line-height: 36px; }
  .pc-only { display: none; }
}

/* ---------- NAVIGATOR ---------- */
.navigator {
  position: relative;
  background: #fcfbfa url("../images/navigator-bg.jpg") center / cover no-repeat;
}
.navigator::before {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, #fcfbfa 0%, rgba(232, 231, 231, .86) 59.135%, rgba(115, 115, 115, 0) 100%);
}
.navigator__inner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 375px;
  gap: 64px;
  max-width: 1280px;
  margin: 0 auto;
  padding: 109px 73px 94px 0;
}
.navigator__body { max-width: 704px; }

.navigator__intro {
  margin: 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 39px;
  white-space: nowrap;
}
.navigator__label { margin-top: 33px; padding-left: 2px; }
.navigator__person {
  display: flex;
  align-items: center;
  gap: 29px;
  margin-top: 6px;
  padding-left: 7px;
}
.navigator__role { margin: 0; color: #bf7b37; font-size: 20px; line-height: 39px; }
.navigator__name { margin: 0; font-size: 38px; font-weight: 500; line-height: 55px; }

.navigator__bio {
  margin-top: 27px;
  padding-left: 7px;
  color: #232323;
  font-size: 18px;
  font-weight: 500;
  line-height: 34px;
}
.navigator__bio p { margin: 0; }
.navigator__bio p + p { margin-top: 34px; }

.navigator__photo { display: block; object-fit: cover; }
.navigator__photo--pc { width: 375px; height: 473px; margin-top: 60px; }
.navigator__photo--sp { display: none; }

@media (max-width: 1200px) {
  .navigator__inner { padding-left: 24px; padding-right: 24px; gap: 40px; }
  .navigator__intro { font-size: clamp(18px, 2vw, 24px); white-space: normal; }
}

/* ---------- 〜991px: 縦積み ---------- */
@media (max-width: 991px) {
  .navigator::before { background: linear-gradient(90deg, #fcfbfa 0%, rgba(232, 231, 231, .86) 76.799%, rgba(115, 115, 115, 0) 100%); }
  .navigator__inner { display: block; max-width: 520px; padding: 90px 30px 70px; }
  .navigator__intro { font-size: 18px; padding-left: 0; }
  .navigator__label { margin-top: 32px; padding-left: 0; justify-content: flex-start; }
  .navigator__label::before { display: none; }
  .navigator__person { margin-top: -6px; gap: 25px; padding-left: 1px; }
  .navigator__role { font-size: 14px; }
  .navigator__name { font-size: 28px; line-height: 40px; }
  .navigator__photo--pc { display: none; }
  .navigator__photo--sp { display: block; width: 177px; height: 224px; margin: 29px auto 0; }
  .navigator__bio { margin-top: 34px; padding-left: 2px; font-size: 15px; }
  .navigator__bio p + p { margin-top: 0; }
}

/* ---------- CTA ---------- */
.cta {
  position: relative;
  background: #081c2c url("../images/cta-bg.jpg") center / cover no-repeat;
  color: #fff;
  text-align: center;
}
.cta::before { /* 下に向かって濃紺になるグラデーション */
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(8, 28, 44, 0) 0%, #081c2c 100%);
  pointer-events: none;
}
.cta__inner { position: relative; padding: 56px 24px 69px; }
.cta__title {
  margin: 0;
  font-size: 36px;
  font-weight: 500;
  line-height: 52px;
}
.btn-cta--lg {
  position: relative;
  width: 547px; max-width: 100%;
  height: 86px;
  margin-top: 30px;
  font-size: 26px;
  font-weight: 600;
}
.btn-cta--lg .btn-cta__arrow { position: absolute; right: 27px; top: 50%; margin-top: -7px; }

@media (max-width: 767px) {
  .cta { background-size: 1600px auto; background-position: right center; }
  .cta__inner { padding: 64px 24px 70px; }
  .cta__title { font-size: 28px; line-height: 46px; }
  .btn-cta--lg { width: 320px; height: 63px; margin-top: 39px; font-size: 18px; }
  .btn-cta--lg .btn-cta__arrow { right: 17px; margin-top: -7px; }
}

/* ---------- BENEFIT ---------- */
.benefit {
  background: #f3f1ed url("../images/benefit-bg.jpg") center / cover no-repeat;
  overflow: hidden;
}
.benefit__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 83px 0 90px;
  text-align: center;
}
.benefit__lead {
  margin: 27px 0 0;
  font-size: 24px;
  font-weight: 500;
  line-height: 35px;
}
.benefit__sp { display: none; }
.benefit__title {
  margin: 0;
  font-size: 48px;
  font-weight: 500;
  line-height: 92px;
}
.benefit__num { font-size: 64px; line-height: 0; }

.benefit .slider { position: relative; margin-top: 42px; }
.benefit__list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 20px;
  align-items: start;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.b-card:nth-child(even) { margin-top: 50px; }
.b-card__img { display: block; width: 100%; aspect-ratio: 305 / 203; object-fit: cover; }
.b-card__body {
  position: relative;
  min-height: 398px;
  margin-top: -50px;
  padding: 95px 23px 32px 22px;
  background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .88) 21.918%, #fff 100%);
}
.b-card__num {
  position: absolute;
  top: 48px; right: 21px;
  color: #c4a788;
  font-size: 42px;
  font-style: italic;
  font-weight: 500;
  line-height: 1.2;
}
.b-card__title { margin: 0; font-size: 32px; font-weight: 500; line-height: 46px; }
.b-card__tag {
  display: flex;
  align-items: center;
  gap: 2px;
  margin-top: 8px;
  padding-bottom: 10px;
  color: #bf7b37;
  font-size: 20px;
  line-height: 29px;
  background: url("../images/benefit-line.svg") no-repeat left bottom / 100% 1px;
}
.b-card__tag img { flex: none; width: 71px; height: 47px; margin-left: -13px; object-fit: contain; }
.b-card__text { margin: 24px 0 0; color: #232323; font-size: 16px; line-height: 34px; }

.slider__btn, .slider__dots { display: none; }

@media (max-width: 1200px) {
  .benefit__inner { padding-inline: 24px; }
  .benefit__title { font-size: clamp(30px, 4vw, 48px); line-height: 1.5; }
  .benefit__num { font-size: clamp(40px, 5.3vw, 64px); line-height: 0; }
  .b-card__body { padding-inline: 16px; }
  .b-card__title { font-size: clamp(24px, 2.7vw, 32px); }
  .b-card__tag { font-size: clamp(16px, 1.7vw, 20px); }
}

/* ---------- 〜991px: スライダー ---------- */
@media (max-width: 991px) {
  .benefit__inner { padding: 64px 0 71px; }
  .benefit__pc { display: none; }
  .benefit__sp { display: inline; }
  .benefit__lead { margin: 7px 24px 0; font-size: 16px; line-height: 29px; }
  .benefit__title { margin: 12px 24px 0; font-size: 29px; line-height: 2.1; }
  .benefit__num { font-size: 56px; line-height: 0; }
  .benefit .slider { margin-top: 38px; }

  .slider { --slide-w: min(305px, calc(100% - 56px)); --arrow-off: 29px; --arrow-top: 80px; }
  .slider__track {
    position: relative;
    display: flex;
    gap: 14px;
    width: auto;
    margin: 0;
    padding: 0;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .slider__track::-webkit-scrollbar { display: none; }
  /* 先頭・末尾のカードも中央に止まるよう、両端にスペーサーを置く（gap分を引く） */
  .slider__track::before,
  .slider__track::after {
    content: "";
    flex: none;
    width: calc(50% - var(--slide-w) / 2 - 14px);
  }
  .slider__track > li { flex: none; width: var(--slide-w); margin-top: 0 !important; scroll-snap-align: center; }

  .slider__btn {
    position: absolute;
    top: var(--arrow-top);
    z-index: 2;
    display: flex;
    align-items: center; justify-content: center;
    width: 42px; height: 42px;
    padding: 0;
    color: #fff;
    background: var(--navy);
    border: 2px solid #fff;
    border-radius: 50%;
    cursor: pointer;
    transition: opacity .2s;
  }
  .slider__btn--prev { left: max(8px, calc(50% - var(--slide-w) / 2 - var(--arrow-off))); }
  .slider__btn--next { right: max(8px, calc(50% - var(--slide-w) / 2 - var(--arrow-off))); }

  .slider__dots { display: flex; justify-content: center; gap: 10px; margin-top: 30px; }
  .slider__dots button {
    width: 10px; height: 10px;
    padding: 0;
    background: #999;
    border: 0;
    border-radius: 50%;
    cursor: pointer;
  }
  .slider__dots button.is-active { background: var(--navy); }
}

@media (max-width: 767px) {
  .benefit { background-size: auto 100%; background-position: 77% top; }
}

/* ---------- SERVICE ---------- */
.service {
  background: #fff url("../images/service-bg.jpg") right center / cover no-repeat;
  overflow: hidden;
}
.service__inner { max-width: 1280px; margin: 0 auto; padding: 81px 0 84px; text-align: center; }
.service__title { margin: 5px 0 0; font-size: 48px; font-weight: 500; line-height: 69px; }

.service__body {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px 40px;
  margin-top: 46px;
  text-align: center;
}
.service__body .slider { display: contents; }
.service__list { display: contents; margin: 0; padding: 0; list-style: none; }

.s-card__img { position: relative; }
.s-card__img img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.s-card__num {
  position: absolute;
  right: 20px; bottom: 6px;
  color: #fff;
  font-size: 56px;
  font-style: italic;
  font-weight: 500;
  line-height: 78px;
}
.s-card__title { margin: 14px 0 0; color: #bf7b37; font-size: 24px; font-weight: 500; line-height: 34px; }
.s-card__text { margin: 8px 0 0; color: #232323; font-size: 16px; font-weight: 500; line-height: 28px; }

.service__more {
  padding: 35px 26px 0;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 4px 4px rgba(0, 0, 0, .25);
  text-align: left;
}
.service__more-lead { margin: 0; color: var(--navy); font-size: 20px; font-weight: 500; line-height: 29px; }
.service__more-list { margin: 32px 0 0; padding: 0; list-style: none; color: var(--navy); font-size: 20px; font-weight: 500; line-height: 48px; }
.service__more-list li {
  padding-left: 34px;
  background: url("../images/icon-check.png") no-repeat left center / 33px auto;
  margin-left: -4px;
  padding-left: 38px;
}
.service__more-etc { margin: 0; padding-left: 34px; color: var(--navy); font-size: 20px; font-weight: 500; line-height: 48px; }

@media (max-width: 1200px) {
  .service__inner { padding-inline: 24px; }
  .service__title { font-size: clamp(32px, 4vw, 48px); }
  .service__body { gap: 24px 24px; }
  .s-card__title { font-size: clamp(18px, 2vw, 24px); }
  .s-card__text { font-size: clamp(14px, 1.4vw, 16px); }
  .service__more { padding-inline: 20px; }
  .service__more-lead, .service__more-list, .service__more-etc { font-size: clamp(16px, 1.7vw, 20px); }
}

/* ---------- 〜991px: スライダー ---------- */
@media (max-width: 991px) {
  .service__inner { padding: 70px 0 67px; }
  .service__title { margin-top: 7px; font-size: 30px; line-height: 48px; }
  .service__body { display: block; margin-top: 27px; }
  .service__body .slider { display: block; position: relative; --slide-w: min(345px, calc(100% - 56px)); --arrow-off: 20px; --arrow-top: 94px; }
  .service__list { display: flex; }
  .s-card__num { right: 22px; bottom: 6px; }
  .s-card__title { margin-top: 14px; }
  .service__body .slider__dots { margin-top: 22px; }

  .service__more {
    width: 310px;
    margin: 32px auto 0;
    padding: 32px 17px 18px;
  }
  .service__more-lead { font-size: 16px; line-height: 23px; }
  .service__more-list { margin-top: 18px; font-size: 16px; line-height: 36px; }
  .service__more-list li { background-size: 24px auto; padding-left: 30px; margin-left: 0; }
  .service__more-etc { font-size: 16px; line-height: 36px; padding-left: 30px; }
}

@media (max-width: 767px) {
  .service { background-position: right center; }
}

/* ---------- VOICE ---------- */
.v-sp { display: none; }
.voice { position: relative; background: #f5f1ec; overflow: hidden; }
.voice::before {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 533px;
  background: url("../images/question-texture.png") center bottom / cover no-repeat;
  opacity: .49;
  pointer-events: none;
}
.voice__inner { position: relative; max-width: 1280px; margin: 0 auto; padding: 89px 0 107px; text-align: center; }
.voice__title { margin: 5px 0 0; font-size: 48px; font-weight: 500; line-height: 69px; }
.voice__lead { margin: 32px 0 0; font-size: 20px; font-weight: 500; line-height: 34px; }

.voice__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 35px;
  margin: 35px 5px 0 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.v-card {
  display: flex;
  gap: 24px;
  padding: 22px 43px 19px 18px;
  background: #fff;
  box-shadow: 0 0 21px rgba(204, 204, 204, .25);
}
.v-card__photo {
  display: block;
  flex: none;
  width: 215px; height: 322px;
  object-fit: cover;
  background: #d9d9d9;
}
.v-card__body { flex: 1; min-width: 0; }
.v-card__title { margin: 0; margin-top: -8px; font-size: 24px; font-weight: 700; line-height: 40px; }
.v-card__text { margin: 12px 0 0; color: #232323; font-size: 16px; font-weight: 500; line-height: 29px; }
.v-card__name { display: flex; gap: 18px; margin: 20px 0 0; font-size: 16px; font-weight: 500; line-height: 27px; }
.v-card__name::before { content: ""; flex: none; width: 29px; height: 1px; margin-top: 13px; background: var(--navy); }
.v-card__btn {
  display: flex; align-items: center; justify-content: center;
  width: 240px; max-width: 100%; height: 53px;
  margin: 24px auto 0;
  color: #fff;
  font-size: 16px;
  font-weight: 500;
  background: var(--btn-grad);
  border: 3px solid #fff;
  border-radius: 14px;
}

@media (max-width: 1200px) {
  .voice__inner { padding-inline: 24px; }
  .voice__title { font-size: clamp(32px, 4vw, 48px); }
  .voice__list { gap: 0 20px; }
  .v-card { gap: 16px; padding-right: 20px; }
  .v-card__photo { width: 160px; }
  .v-card__title { font-size: clamp(18px, 2vw, 24px); line-height: 1.6; }
}

/* ---------- 〜991px: 縦積み ---------- */
@media (max-width: 991px) {
  .voice__inner { padding: 70px 29px; }
  .voice__title { margin-top: 10px; font-size: 30px; line-height: 48px; }
  .voice__lead { margin-top: 12px; font-size: 16px; line-height: 29px; }
  .voice__list { display: block; max-width: 400px; margin: 24px auto 0; }
  .v-card { display: block; padding: 16px 13px 23px; }
  .v-card + .v-card { margin-top: 25px; }
  .v-card__photo { width: calc(100% - 3px); height: 201px; margin: 0 0 0 3px; }
  .v-card__title { margin-top: 14px; font-size: 20px; line-height: 34px; text-align: center; }
  .v-card__text { margin-top: 23px; }
  .v-card__name { margin-top: 23px; }
  .v-card__name::before { margin-top: 13px; }
  .v-card__btn { margin-top: 24px; }
}

@media (max-width: 767px) {
  .voice::before { display: none; }
  .voice__lead { display: none; }
  .voice__list { margin-top: 22px; }
  .v-pc { display: none; }
  .v-sp { display: inline; }
}

/* ---------- PLAN ---------- */
.plan {
  background:
    linear-gradient(rgba(255, 255, 255, .2), rgba(255, 255, 255, .2)),
    #fff url("../images/plan-bg.jpg") center / cover no-repeat;
}
.plan__inner { max-width: 1280px; margin: 0 auto; padding: 93px 0 121px; text-align: center; }
.plan__title { margin: 5px 0 0; font-size: 48px; font-weight: 500; line-height: 69px; }
.plan__lead { margin: 9px 0 0; font-size: 20px; font-weight: 500; line-height: 34px; }

.plan__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 40px;
  margin: 31px 0 0;
  padding: 0;
  list-style: none;
  text-align: left;
}
.plan-card {
  position: relative;
  min-height: 412px;
  padding: 14px 42px 0;
  background: #fff;
  box-shadow: 0 0 21px rgba(0, 0, 0, .2);
  overflow: hidden;
}
.plan-card::before { /* うっすら写真を重ねる */
  content: "";
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  opacity: .2;
  -webkit-mask-image: linear-gradient(235deg, #000 5%, transparent 90%);
  mask-image: linear-gradient(235deg, #000 5%, transparent 90%);
  pointer-events: none;
}
.plan-card--1::before { background-image: url("../images/plan-photo-1.jpg"); }
.plan-card--2::before { background-image: url("../images/plan-photo-2.jpg"); }
.plan-card > * { position: relative; }
.plan-card__num {
  display: block;
  color: #c4a788;
  font-size: 81px;
  font-style: italic;
  font-weight: 500;
  line-height: 113px;
}
.plan-card__title { margin: 0; font-size: 44px; font-weight: 500; line-height: 63px; }
.plan-card__sub { margin: 13px 0 0; font-size: 28px; font-weight: 500; line-height: 40px; }
.plan-card__text { margin: 36px 0 0; font-size: 18px; font-weight: 500; line-height: 34px; }

.plan__box {
  margin-top: 42px;
  padding: 28px 24px 0;
  height: 274px;
  background: linear-gradient(to bottom, #f7f1e6 0%, #fff 48.558%, #f5ecd9 100%);
  text-align: center;
}
.plan__box img { display: block; width: 122px; height: 81px; margin: 0 auto; object-fit: contain; }
.plan__box-title { margin: 9px 0 0; font-size: 36px; font-weight: 700; line-height: 52px; }
.plan__box-text { margin: 16px 0 0; font-size: 24px; font-weight: 500; line-height: 34px; }

@media (max-width: 1200px) {
  .plan__inner { padding-inline: 24px; }
  .plan__title { font-size: clamp(32px, 4vw, 48px); }
  .plan__list { gap: 0 20px; }
  .plan-card { padding-inline: 28px; }
  .plan-card__num { font-size: clamp(56px, 6.7vw, 81px); }
  .plan-card__title { font-size: clamp(28px, 3.6vw, 44px); line-height: 1.45; }
  .plan-card__sub { font-size: clamp(20px, 2.3vw, 28px); }
  .plan-card__text { font-size: clamp(15px, 1.5vw, 18px); }
  .plan__box-title { font-size: clamp(26px, 3vw, 36px); }
}

/* ---------- 〜991px: 縦積み ---------- */
@media (max-width: 991px) {
  .plan__inner { max-width: 480px; padding: 70px 28px 68px; }
  .plan__title { margin-top: 10px; font-size: 30px; line-height: 48px; }
  .plan__lead { margin-top: 12px; font-size: 16px; line-height: 29px; }
  .plan__list { display: block; margin-top: 30px; }
  .plan-card { min-height: 0; padding: 16px 22px 19px; }
  .plan-card + .plan-card { margin-top: 15px; }
  .plan-card__num { font-size: 40px; line-height: 55px; padding-left: 6px; }
  .plan-card__title { font-size: 27px; line-height: 39px; }
  .plan-card__sub { margin-top: 5px; font-size: 20px; line-height: 29px; padding-left: 0; }
  .plan-card__text { margin-top: 40px; font-size: 15px; line-height: 31px; }
  .plan__box { height: 288px; margin-top: 32px; padding: 36px 20px 0; }
  .plan__box img { width: 76px; height: 51px; }
  .plan__box-title { margin-top: 17px; font-size: 20px; line-height: 33px; }
  .plan__box-text { margin-top: 23px; font-size: 16px; line-height: 23px; }
}

@media (max-width: 767px) {
  .plan-card::before { display: none; }
}

/* ---------- BRIEFING ---------- */
.briefing {
  background: #fff url("../images/service-bg.jpg") right center / cover no-repeat;
  overflow: hidden;
}
.briefing__inner { max-width: 1280px; margin: 0 auto; padding: 90px 0 110px; text-align: center; }
.briefing__title { margin: 13px 0 0; font-size: 48px; font-weight: 500; line-height: 69px; }
.briefing__lead { margin: 6px 0 0; font-size: 18px; font-weight: 500; line-height: 36px; }

.briefing__list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 27px;
  margin: 46px 0 0;
  padding: 0;
  list-style: none;
}
.info-card {
  height: 191px;
  padding-top: 22px;
  background: #fff;
  border: 1px solid #aaa;
  box-shadow: 0 0 21px rgba(204, 204, 204, .25);
}
.info-card img { display: block; width: 54px; height: 54px; margin: 0 auto; object-fit: contain; }
.info-card p { margin: 9px 0 0; font-size: 24px; font-weight: 500; line-height: 37px; }

.briefing__box {
  margin-top: 54px;
  padding-top: 40px;
  height: 301px;
  background: linear-gradient(to bottom, #f7f1e6 0%, #fff 48.558%, #f5ecd9 100%);
}
.briefing__box img { display: block; width: 125px; height: 83px; margin: 0 auto; object-fit: contain; }
.briefing__box p { margin: 14px 0 0; font-size: 36px; font-weight: 700; line-height: 52px; }

@media (max-width: 1200px) {
  .briefing__inner { padding-inline: 24px; }
  .briefing__title { font-size: clamp(32px, 4vw, 48px); }
  .briefing__list { gap: 0 16px; }
  .info-card p { font-size: clamp(16px, 1.9vw, 24px); line-height: 1.55; padding-inline: 8px; }
  .briefing__box p { font-size: clamp(24px, 3vw, 36px); }
}

/* ---------- 〜991px: 2列 ---------- */
@media (max-width: 991px) {
  .briefing__inner { max-width: 480px; padding: 70px 30px 111px; }
  .briefing__title { margin-top: 17px; font-size: 30px; line-height: 44px; }
  .briefing__lead { margin-top: 22px; font-size: 16px; line-height: 29px; }
  .briefing__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px 16px; margin-top: 33px; }
  .info-card { padding-top: 33px; }
  .info-card img { width: 50px; height: 50px; }
  .info-card p { margin-top: 13px; padding-inline: 0; font-size: 16px; line-height: 26px; }
  .briefing__box { height: 288px; margin: 21px -1px 0; padding-top: 45px; }
  .briefing__box img { width: 63px; height: 42px; }
  .briefing__box p { margin-top: 15px; font-size: 20px; line-height: 33px; }
}

/* ---------- Q&A ---------- */
.faq { background: #fff; }
.faq__inner { max-width: 1280px; margin: 0 auto; padding: 90px 24px 97px; text-align: center; }
.faq__title { margin: 17px 0 0; font-size: 48px; font-weight: 500; line-height: 69px; }
.faq__lead { margin: 21px 0 0; font-size: 18px; font-weight: 500; line-height: 36px; }

.faq__list { max-width: 1000px; margin: 34px auto 0; padding: 0; list-style: none; text-align: left; }
.faq__item + .faq__item { margin-top: 10px; }

.faq__q { margin: 0; }
.faq__q button {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 86px;
  padding: 0 80px 0 35px;
  color: var(--navy);
  font: inherit;
  text-align: left;
  background: #fff;
  border: 1px solid #aaa;
  box-shadow: 0 0 21px rgba(204, 204, 204, .25);
  cursor: pointer;
}
.faq__q button:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; }
.faq__num { flex: none; width: 74px; color: #c4a788; font-size: 42px; font-style: italic; font-weight: 500; line-height: 1.2; }
.faq__text { font-size: 24px; font-weight: 500; line-height: 1.5; }
.faq__icon {
  position: absolute;
  right: 20px; top: 50%;
  width: 43px; height: 43px;
  margin-top: -21px;
  background: url("../images/icon-chevron.svg") center / contain no-repeat;
  transition: transform .3s;
}
.faq__item.is-open .faq__icon { transform: rotate(180deg); }

.faq__a {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition: grid-template-rows .3s ease, visibility 0s .3s;
}
.faq__item.is-open .faq__a { grid-template-rows: 1fr; visibility: visible; transition: grid-template-rows .3s ease, visibility 0s; }
.faq__a-inner { min-height: 0; overflow: hidden; }
.faq__a-body { margin: 1px 0 19px; padding: 26px 111px 41px; background: #f5f1ec; }
.faq__a-body p { margin: 0; color: var(--navy); font-size: 18px; font-weight: 500; line-height: 36px; }

@media (max-width: 991px) {
  .faq__inner { padding: 61px 28px 70px; }
  .faq__title { margin-top: 17px; font-size: 30px; line-height: 44px; }
  .faq__lead { margin-top: 16px; font-size: 16px; line-height: 29px; }
  .faq__list { max-width: 345px; margin-top: 33px; }
  .faq__q button { min-height: 65px; padding: 8px 40px 8px 11px; }
  .faq__num { width: 46px; font-size: 24px; line-height: 1.5; }
  .faq__text { font-size: 16px; line-height: 1.45; }
  .faq__icon { right: 12px; width: 22px; height: 22px; margin-top: -11px; }
  .faq__a-body { margin: 0; padding: 22px 17px; }
  .faq__a-body p { font-size: 15px; line-height: 30px; }
}

/* ---------- CLOSING ---------- */
.closing {
  position: relative;
  background: #081c2c url("../images/cta-bg.jpg") center / cover no-repeat; /* 画面いっぱいに */
  color: #fff;
  height: 713px;
  overflow: hidden;
}
.closing::before { /* 下に向かって濃紺（フッター色）へ */
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(8, 28, 44, 0) 0%, #081c2c 100%);
  pointer-events: none;
}
.closing__inner { position: relative; max-width: 1280px; height: 100%; margin: 0 auto; padding: 106px 0 0 6px; }
.closing__title { margin: 0; font-weight: 500; }
.closing__line1 { display: block; height: 99px; color: #e4c699; font-size: 56px; line-height: 104px; white-space: nowrap; text-shadow: 0 0 18px rgba(228, 198, 153, .35); }
.closing__line1 .l { font-size: 72px; }
.closing__line2 { display: block; height: 104px; font-size: 42px; line-height: 104px; white-space: nowrap; text-shadow: 0 0 14px rgba(255, 255, 255, .25); }
.closing__line2 .l2 { font-size: 72px; }
.closing__text { margin: 29px 0 0 3px; font-size: 24px; font-weight: 500; line-height: 41px; }
.closing .btn-cta--lg { display: flex; margin-top: 26px; }
.closing__text + .btn-cta--lg { margin-top: 45px; }
.closing .btn-cta--lg + .btn-cta--lg { margin-top: 28px; }
.closing__sp { display: none; }

/* ---------- FOOTER ---------- */
.footer { position: relative; height: 137px; background: #081c2c; color: #fff; }
.footer__logo { position: absolute; top: 0; right: 42px; width: 236px; height: 79px; object-fit: contain; filter: brightness(0) invert(1); } /* 通常ロゴを白に反転 */
.footer__copy { position: absolute; top: 85px; right: 52px; margin: 0; font-family: "Noto Sans JP", "Hiragino Sans", sans-serif; font-size: 16px; line-height: 33px; }

@media (max-width: 1200px) {
  .closing__inner { padding-left: 24px; }
  .closing__line1 { font-size: clamp(32px, 4.6vw, 56px); }
  .closing__line1 .l { font-size: 1.286em; }
  .closing__line2 { font-size: clamp(24px, 3.4vw, 42px); line-height: 1.8; }
  .closing__line2 .l2 { font-size: clamp(41px, 5.9vw, 72px); }
}

@media (max-width: 991px) {
  .closing { height: 771px; background-position: 67% center; }
  .closing__inner { padding: 143px 24px 0; text-align: center; }
  .closing__line1 { height: 57px; font-size: 28px; line-height: 57px; }
  .closing__line1 .l { font-size: 36px; }
  .closing__line2 { height: auto; font-size: 21px; line-height: 44px; }
  .closing__line2 .l2 { font-size: 36px; }
  .closing__text { margin: 45px 0 0; font-size: 16px; line-height: 35px; }
  .closing__text + .btn-cta--lg { margin-top: 39px; }
  .closing .btn-cta--lg { margin-left: auto; margin-right: auto; }
  .closing .btn-cta--lg + .btn-cta--lg { margin-top: 13px; }
  .pc-only.closing__pc, .closing .pc-only { display: none; }
  .closing__sp { display: inline; }
  .footer { height: 153px; }
  .footer__logo { left: 50%; right: auto; margin-left: -118px; top: 8px; }
  .footer__copy { left: 0; right: 0; top: 100px; text-align: center; }
}

/* ---------- スクロールアニメーション ---------- */
.js .reveal {
  opacity: 0;
  transform: translateY(26px);
}
.js .reveal.is-inview {
  opacity: 1;
  transform: none;
  transition: opacity .9s cubic-bezier(.22, .61, .36, 1) var(--d, 0s), transform .9s cubic-bezier(.22, .61, .36, 1) var(--d, 0s);
}

/* 見出しラベルの線：中央から外へ伸びる */
.js .section-label::before,
.js .section-label::after {
  transform: scaleX(0);
  transition: transform .9s cubic-bezier(.22, .61, .36, 1) .35s;
}
.js .section-label::before { transform-origin: right center; }
.js .section-label::after { transform-origin: left center; }
.js .section-label.is-inview::before,
.js .section-label.is-inview::after { transform: scaleX(1); }

/* ヒーロー：読み込み時に順番に表示 */
.hero__title { animation: hero-rise 1s cubic-bezier(.22, .61, .36, 1) .15s both; }
.hero__lead { animation: hero-rise 1s cubic-bezier(.22, .61, .36, 1) 1.6s both; }
@keyframes hero-rise {
  from { opacity: 0; transform: translateY(22px); }
  to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .js .reveal,
  .js .section-label::before,
  .js .section-label::after { opacity: 1; transform: none; transition: none; }
  .hero__title, .hero__lead { animation: none; }
}

/* ---------- 背景の視差（背景を画面に固定し、セクションで切り抜く） ---------- */
.parallax { position: relative; isolation: isolate; clip-path: inset(0); }
.parallax__bg {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100vh;
  height: 100lvh; /* スマホのアドレスバーの伸び縮みで揺れないよう最大の高さに */
  z-index: -1;
  background: center / cover no-repeat;
  pointer-events: none;
}
