@charset "UTF-8";
/* ==========================================================================
   凪空はりきゅう院 - index.css
   トップページ（LP）専用スタイル
   構成は sample.png に準拠
     01 ヒーロー
     02 こんな気持ちを、一人で抱えていませんか？
     03 大丈夫です。あなたは、一人ではありません。
     04 私も、妊活を経験しました。
     05 あなたを変えたいわけではありません。
     06 身体を整えるという選択肢。
     07 選ばれる理由
     08 CTAバンド
     09 お客様の声（HTMLでコメントアウト中）
     10 よくあるご質問
     11 フッターCTA
     12 アクセス・院のご案内
   ========================================================================== */

section[id], .anchor { scroll-margin-top: calc(var(--header-h) + 14px); }

/* 欧文数字 */
.num {
  font-family: var(--f-en);
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1;
  font-weight: 400;
  letter-spacing: .02em;
}

/* --------------------------------------------------------------------------
   01 ヒーロー
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  overflow: hidden;
  padding: calc(var(--header-h) + clamp(52px, 6.5vw, 94px)) 0 clamp(170px, 20vw, 265px);
  background:
    radial-gradient(118% 76% at 80% 6%, rgba(255, 255, 255, .92) 0%, rgba(255, 255, 255, 0) 56%),
    linear-gradient(168deg, var(--sky-300) 0%, var(--sky-100) 44%, var(--sky-50) 100%);
}

.hero__sky { position: absolute; inset: 0; pointer-events: none; }
.hero__sky .cloud--a { top: 11%; left: -12%; width: 172px; animation-duration: 52s; opacity: .96; }
.hero__sky .cloud--b { top: 40%; left: -22%; width: 112px; animation-duration: 68s; animation-delay: -14s; opacity: .72; }
.hero__sky .cloud--c { top: 5%;  left: 33%;  width: 86px;  animation-duration: 82s; animation-delay: -34s; opacity: .55; }
.hero__sky .cloud--d { top: 62%; left: 10%;  width: 136px; animation-duration: 60s; animation-delay: -24s; opacity: .5; }

.hero__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 48px, var(--container));
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1.04fr .96fr;
  align-items: center;
  gap: 56px;
}

.hero__lead {
  font-family: var(--f-serif);
  font-size: clamp(15px, 1.5vw, 18px);
  line-height: 1.95;
  letter-spacing: .1em;
  color: var(--sky-700);
  margin-bottom: 22px;
  position: relative;
  padding-left: 30px;
}
.hero__lead::before {
  content: "";
  position: absolute;
  left: 0;
  top: 15px;
  width: 20px;
  height: 1px;
  background: var(--gold-400);
}

.hero__title {
  font-family: var(--f-serif);
  font-weight: 700;
  font-size: clamp(38px, 4.9vw, 62px);
  line-height: 1.38;
  letter-spacing: .09em;
  color: var(--sky-900);
  margin-bottom: 28px;
}
.hero__title .line { padding-bottom: .06em; }
.hero__title .line__in { white-space: nowrap; }
.hero__title .num { font-size: 1.16em; letter-spacing: .04em; }
.hero__title .line:nth-child(2) .line__in {
  background: linear-gradient(transparent 63%, rgba(224, 201, 147, .55) 63%);
}

.hero__text {
  font-size: clamp(14px, 1.4vw, 16px);
  line-height: 2.05;
  letter-spacing: .07em;
  color: var(--ink);
  margin-bottom: 34px;
}

.hero__tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.hero__tags li {
  font-size: 12px;
  letter-spacing: .09em;
  color: var(--sky-800);
  background: rgba(255, 255, 255, .82);
  border: 1px solid rgba(140, 199, 230, .6);
  border-radius: 999px;
  padding: 6px 17px;
  line-height: 1.6;
}

.hero__visual { position: relative; }
.hero__ring {
  position: absolute;
  inset: -22px;
  border-radius: 50%;
  border: 1px solid rgba(189, 157, 89, .34);
  pointer-events: none;
}
.hero__ring::after {
  content: "";
  position: absolute;
  inset: 11px;
  border-radius: 50%;
  border: 1px dashed rgba(140, 199, 230, .5);
  animation: ringSpin 68s linear infinite;
}
@keyframes ringSpin { from { transform: rotate(0); } to { transform: rotate(360deg); } }

.hero__circle {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  border: 8px solid rgba(255, 255, 255, .78);
  transform: translateY(var(--py, 0px));
}
.hero__circle::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: linear-gradient(200deg, rgba(255, 255, 255, .06) 0%, rgba(75, 145, 187, .07) 100%);
}
.hero__circle img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; }

.hero__badge {
  position: absolute;
  left: -16px;
  bottom: 12px;
  width: 182px;
  height: 182px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: linear-gradient(142deg, var(--sky-500) 0%, var(--sky-700) 100%);
  color: #fff;
  box-shadow: 0 18px 40px rgba(39, 85, 116, .32);
  animation: softFloat 7s ease-in-out .6s infinite;
}
.hero__badge::after {
  content: "";
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(255, 255, 255, .48);
  border-radius: 50%;
}
.hero__badge p {
  font-family: var(--f-serif);
  font-size: 12.5px;
  line-height: 1.86;
  letter-spacing: .04em;
  text-align: center;
}
.hero__badge strong { font-size: 14.5px; color: var(--gold-300); }

.hero__scroll {
  position: absolute;
  left: 50%;
  bottom: clamp(96px, 12vw, 152px);
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-left: -20px;
}
.hero__scroll-txt {
  font-family: var(--f-en);
  font-size: 10px;
  letter-spacing: .34em;
  text-indent: .34em;
  color: var(--sky-700);
}
.hero__scroll-line {
  display: block;
  width: 1px;
  height: 54px;
  background: rgba(50, 109, 146, .2);
  overflow: hidden;
  position: relative;
}
.hero__scroll-line::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--gold-500);
  animation: scrollLine 2.4s var(--ease) infinite;
}
@keyframes scrollLine {
  0% { transform: translateY(-100%); }
  55% { transform: translateY(0); }
  100% { transform: translateY(100%); }
}

.hero__waves {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: clamp(120px, 15vw, 220px);
  z-index: 1;
  overflow: hidden;
}

@media (max-width: 1040px) {
  .hero__inner { grid-template-columns: 1fr; gap: 46px; text-align: center; }
  .hero__lead { padding-left: 0; display: inline-block; }
  .hero__lead::before { display: none; }
  .hero__tags { justify-content: center; }
  .hero__visual { width: min(100%, 420px); margin-inline: auto; }
  .hero__badge { width: 154px; height: 154px; left: -4px; }
  .hero__badge p { font-size: 11.5px; }
  .hero__scroll { display: none; }
}
@media (max-width: 600px) {
  .hero__title { margin-bottom: 24px; }
  .hero__ring { inset: -14px; }
  .hero__badge { width: 130px; height: 130px; left: -2px; bottom: 2px; }
  .hero__badge p { font-size: 10px; line-height: 1.76; }
  .hero__badge strong { font-size: 11.5px; }
}

/* --------------------------------------------------------------------------
   02 こんな気持ちを、一人で抱えていませんか？
   -------------------------------------------------------------------------- */
.worries {
  position: relative;
  padding: clamp(24px, 3.4vw, 46px) 0 clamp(64px, 7.4vw, 108px);
  background: var(--c-white);
  overflow: hidden;
}
.worries .deco-cloud--a { top: 22%; left: -36px; width: 132px; opacity: .2; }

.worries__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(21px, 3.2vw, 33px);
  line-height: 1.6;
  letter-spacing: .09em;
  color: var(--sky-900);
  text-align: center;
  margin-bottom: clamp(32px, 3.6vw, 50px);
}

.worries__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(14px, 1.8vw, 22px) clamp(28px, 5vw, 78px);
  max-width: 880px;
  margin-inline: auto;
}
.worries__list li {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: clamp(14.5px, 1.4vw, 16px);
  line-height: 1.75;
  letter-spacing: .04em;
  color: var(--ink);
}

.check {
  flex-shrink: 0;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: linear-gradient(140deg, var(--sky-400), var(--sky-600));
  position: relative;
  box-shadow: 0 3px 8px rgba(75, 145, 187, .26);
}
.check::after {
  content: "";
  position: absolute;
  left: 8.5px;
  top: 7px;
  width: 6px;
  height: 10px;
  border-right: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(42deg);
}

@media (max-width: 700px) {
  .worries__list { grid-template-columns: 1fr; gap: 13px; max-width: 460px; }
}

/* --------------------------------------------------------------------------
   03 大丈夫です。あなたは、一人ではありません。
   -------------------------------------------------------------------------- */
.message {
  position: relative;
  padding: clamp(34px, 4vw, 52px) 24px;
  background: linear-gradient(100deg, var(--sky-50) 0%, var(--sky-100) 52%, var(--sky-50) 100%);
  text-align: center;
  overflow: hidden;
}
.message__text {
  position: relative;
  z-index: 2;
  font-family: var(--f-serif);
  font-size: clamp(18px, 2.7vw, 28px);
  font-weight: 600;
  line-height: 1.7;
  letter-spacing: .08em;
  color: var(--sky-800);
}
.message__text em {
  display: inline-block;
  color: var(--sky-900);
  background: linear-gradient(transparent 56%, rgba(224, 201, 147, .5) 56%);
}

.message__leaf {
  position: absolute;
  top: 50%;
  width: clamp(38px, 5vw, 62px);
  transform: translateY(-50%);
  opacity: .5;
  pointer-events: none;
}
.message__leaf svg { width: 100%; height: auto; fill: var(--sky-300); }
.message__leaf--l { left: clamp(12px, 5vw, 84px); transform: translateY(-50%) rotate(-16deg); }
.message__leaf--r { right: clamp(12px, 5vw, 84px); transform: translateY(-50%) rotate(16deg) scaleX(-1); }

@media (max-width: 760px) {
  .message__leaf { display: none; }
}

/* --------------------------------------------------------------------------
   04 私も、妊活を経験しました。
   -------------------------------------------------------------------------- */
.story {
  position: relative;
  padding: clamp(58px, 7vw, 104px) 0 clamp(58px, 7vw, 100px);
  background: var(--c-white);
}

.story__inner {
  display: grid;
  grid-template-columns: 330px 1fr;
  gap: clamp(32px, 4.4vw, 64px);
  align-items: start;
}

.story__photo { position: relative; }
.story__photo::before {
  content: "";
  position: absolute;
  left: -14px;
  top: 16px;
  width: 100%;
  aspect-ratio: 3 / 4;
  border: 1px solid var(--gold-300);
  border-radius: 18px;
  pointer-events: none;
}
.story__photo-frame {
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.story__photo-frame img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: 50% 20%;
}
.story__caption {
  margin-top: 18px;
  text-align: center;
  font-family: var(--f-serif);
  font-size: 16px;
  letter-spacing: .16em;
  color: var(--sky-800);
}
.story__caption span {
  display: block;
  font-family: var(--f-sans);
  font-size: 11px;
  letter-spacing: .22em;
  text-indent: .22em;
  color: var(--gold-500);
  margin-bottom: 3px;
}

.story__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(23px, 3.2vw, 34px);
  line-height: 1.6;
  letter-spacing: .08em;
  color: var(--sky-900);
  margin-bottom: 26px;
  padding-bottom: 22px;
  position: relative;
}
.story__title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 58px;
  height: 1px;
  background: var(--gold-400);
}

.story__lead p {
  font-family: var(--f-serif);
  font-size: clamp(15.5px, 1.7vw, 18px);
  line-height: 2.1;
  letter-spacing: .06em;
  color: var(--sky-800);
}
.story__lead p + p { margin-top: 16px; }

.story__detail { margin-top: 30px; }
.story__detail p {
  font-size: 15.5px;
  line-height: 2.15;
  letter-spacing: .05em;
  color: var(--ink);
}
.story__detail p + p { margin-top: 16px; }

.story__sign {
  margin-top: 26px;
  text-align: right;
  font-family: var(--f-serif);
  letter-spacing: .12em;
  color: var(--sky-800);
}

/* 実績カード */
.stat-card {
  margin-top: 30px;
  display: flex;
  align-items: center;
  gap: clamp(18px, 2.6vw, 34px);
  padding: 22px clamp(20px, 3vw, 34px);
  border-radius: 18px;
  background: linear-gradient(120deg, var(--sky-50) 0%, var(--sky-100) 100%);
  border: 1px solid rgba(168, 214, 238, .7);
}
.stat-card__num {
  flex-shrink: 0;
  font-family: var(--f-en);
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1;
  font-size: 56px;
  font-weight: 300;
  line-height: 1;
  color: var(--sky-700);
}
.stat-card__unit {
  font-family: var(--f-serif);
  font-size: 19px;
  margin-left: 4px;
  color: var(--sky-800);
}
.stat-card__label {
  font-family: var(--f-serif);
  font-size: 16px;
  letter-spacing: .1em;
  color: var(--sky-900);
  white-space: nowrap;
}
.stat-card__note {
  font-size: 12.5px;
  line-height: 1.8;
  letter-spacing: .03em;
  color: var(--ink-soft);
  padding-left: clamp(16px, 2.4vw, 30px);
  border-left: 1px dashed rgba(75, 145, 187, .35);
}

@media (max-width: 960px) {
  .story__inner { grid-template-columns: 1fr; gap: 40px; }
  .story__photo { width: min(100%, 282px); margin-inline: auto; }
  .story__title { text-align: center; padding-bottom: 20px; }
  .story__title::after { left: 50%; transform: translateX(-50%); }
  .story__lead { text-align: center; }
}
@media (max-width: 640px) {
  .stat-card { flex-wrap: wrap; justify-content: center; text-align: center; gap: 12px 18px; }
  .stat-card__note { padding-left: 0; border-left: 0; border-top: 1px dashed rgba(75, 145, 187, .35); padding-top: 12px; width: 100%; }
}

/* --------------------------------------------------------------------------
   05 あなたを変えたいわけではありません。
   -------------------------------------------------------------------------- */
.change {
  padding: clamp(58px, 7vw, 100px) 0;
  background: linear-gradient(180deg, var(--c-white) 0%, var(--sky-50) 100%);
}
.change__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(30px, 4.4vw, 62px);
  align-items: center;
}

.change__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(23px, 3.2vw, 34px);
  line-height: 1.62;
  letter-spacing: .08em;
  color: var(--sky-700);
  margin-bottom: 24px;
}
.change__lead {
  font-family: var(--f-serif);
  font-size: clamp(15.5px, 1.7vw, 18px);
  line-height: 2.1;
  letter-spacing: .06em;
  color: var(--sky-900);
  margin-bottom: 28px;
}
.change__detail p {
  font-size: 15.5px;
  line-height: 2.15;
  letter-spacing: .05em;
  color: var(--ink);
}
.change__detail p + p { margin-top: 16px; }

/* 写真パネル */
.change__visual { border-radius: 20px; }
.change__photo {
  position: relative;
  margin: 0;
  border-radius: 20px;
  overflow: hidden;
  background: var(--sky-100);
  box-shadow: var(--shadow-md);
}
.change__photo img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 11;
  object-fit: cover;
  object-position: 50% 45%;
}
.change__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(170deg, rgba(255, 255, 255, .12) 0%, rgba(255, 255, 255, 0) 46%, rgba(75, 145, 187, .12) 100%);
  pointer-events: none;
}

@media (max-width: 900px) {
  .change__inner { grid-template-columns: 1fr; gap: 34px; }
  .change__body { text-align: center; }
  .change__visual { order: -1; }
}

/* --------------------------------------------------------------------------
   06 身体を整えるという選択肢。
   -------------------------------------------------------------------------- */
.care {
  position: relative;
  padding: clamp(92px, 10.5vw, 150px) 0;
  background: linear-gradient(168deg, var(--sky-100) 0%, var(--sky-200) 100%);
  overflow: hidden;
}
.care__waves {
  position: absolute;
  left: 0;
  right: 0;
  height: clamp(70px, 8vw, 120px);
  overflow: hidden;
  z-index: 1;
}
.care__waves--top { top: -1px; transform: rotate(180deg); }
.care__waves--bottom { bottom: -1px; }
.care__waves .wave--1 { color: var(--c-white); opacity: 1; }
.care__waves .wave--2 { color: var(--sky-50); opacity: .5; }

.care__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 288px;
  gap: clamp(28px, 4vw, 56px);
  align-items: center;
}

.care__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(22px, 3.2vw, 34px);
  line-height: 1.6;
  letter-spacing: .09em;
  color: var(--sky-900);
  text-align: center;
  margin-bottom: 14px;
}
.care__lead {
  text-align: center;
  font-size: 15px;
  line-height: 2;
  letter-spacing: .06em;
  color: var(--sky-800);
  margin-bottom: clamp(30px, 3.6vw, 46px);
}

.care-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(14px, 2vw, 26px);
}
.care-list li { width: clamp(96px, 11vw, 124px); text-align: center; }

.care-list__icon {
  display: grid;
  place-items: center;
  width: clamp(76px, 8.4vw, 100px);
  aspect-ratio: 1;
  margin: 0 auto 12px;
  border-radius: 50%;
  background: linear-gradient(150deg, #fff 0%, var(--sky-50) 100%);
  box-shadow: 0 10px 26px rgba(39, 85, 116, .1);
  position: relative;
  transition: transform .5s var(--ease-out), box-shadow .5s var(--ease);
}
.care-list__icon::after {
  content: "";
  position: absolute;
  inset: 7px;
  border-radius: 50%;
  border: 1px solid rgba(168, 214, 238, .6);
  transition: inset .5s var(--ease), border-color .5s var(--ease);
}
.care-list li:hover .care-list__icon { transform: translateY(-7px); box-shadow: 0 18px 34px rgba(39, 85, 116, .16); }
.care-list li:hover .care-list__icon::after { inset: 4px; border-color: var(--gold-300); }
.care-list__icon svg {
  width: 42%;
  height: auto;
  fill: none;
  stroke: var(--sky-700);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke .4s var(--ease);
}
.care-list li:hover .care-list__icon svg { stroke: var(--gold-600); }
.care-list__label {
  display: block;
  font-family: var(--f-serif);
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 1.55;
  letter-spacing: .05em;
  color: var(--sky-900);
}

.care__figure {
  margin: 0;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.care__figure img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  transition: transform 1.1s var(--ease-out);
}
.care__figure:hover img { transform: scale(1.05); }

@media (max-width: 900px) {
  .care__inner { grid-template-columns: 1fr; }
  .care__figure { width: min(100%, 320px); margin-inline: auto; order: -1; }
  .care__figure img { aspect-ratio: 4 / 3; }
}
@media (max-width: 560px) {
  .care-list li { width: calc(33.333% - 10px); }
}

/* --------------------------------------------------------------------------
   07 選ばれる理由
   -------------------------------------------------------------------------- */
.reasons {
  padding: clamp(58px, 7vw, 104px) 0;
  background: var(--c-white);
}

.reasons__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(23px, 3.2vw, 34px);
  line-height: 1.6;
  letter-spacing: .12em;
  text-indent: .12em;
  color: var(--sky-900);
  text-align: center;
  margin-bottom: clamp(34px, 4vw, 54px);
}

.reasons__list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

.reason {
  position: relative;
  text-align: center;
  padding: 8px clamp(14px, 2vw, 28px) 6px;
  transition: transform .5s var(--ease-out), opacity .95s var(--ease);
}
.reason + .reason { border-left: 1px solid var(--sky-100); }
.reason:hover { transform: translateY(-6px); }

.reason__icon {
  display: grid;
  place-items: center;
  width: 76px;
  height: 76px;
  margin: 0 auto 14px;
  border-radius: 50%;
  background: linear-gradient(150deg, var(--sky-50) 0%, var(--sky-100) 100%);
  transition: transform .5s var(--ease-out), background .5s var(--ease);
}
.reason:hover .reason__icon { transform: scale(1.07); background: linear-gradient(150deg, var(--gold-100) 0%, var(--gold-200) 100%); }
.reason__icon svg {
  width: 38px;
  height: 38px;
  fill: none;
  stroke: var(--sky-600);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke .5s var(--ease);
}
.reason:hover .reason__icon svg { stroke: var(--gold-600); }

.reason__num {
  display: block;
  font-family: var(--f-en);
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1;
  font-size: 14px;
  letter-spacing: .26em;
  text-indent: .26em;
  color: var(--gold-500);
  margin-bottom: 8px;
}
.reason h3 {
  font-family: var(--f-serif);
  font-size: clamp(15.5px, 1.6vw, 18px);
  font-weight: 600;
  line-height: 1.62;
  letter-spacing: .05em;
  color: var(--sky-900);
  margin-bottom: 12px;
}
.reason p {
  font-size: 13px;
  line-height: 1.9;
  letter-spacing: .02em;
  color: var(--ink-soft);
}

.reasons__note {
  max-width: 820px;
  margin: clamp(34px, 4vw, 52px) auto 0;
  padding-top: clamp(26px, 3vw, 38px);
  border-top: 1px solid var(--sky-100);
  text-align: center;
  font-size: 14.5px;
  line-height: 2;
  letter-spacing: .04em;
  color: var(--ink);
}
.tag-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 18px;
}
.tag-list span {
  font-size: 13px;
  letter-spacing: .06em;
  line-height: 1.6;
  color: var(--sky-800);
  background: var(--sky-50);
  border: 1px solid var(--sky-200);
  border-radius: 999px;
  padding: 6px 18px;
}

@media (max-width: 1040px) {
  .reasons__list { grid-template-columns: repeat(2, 1fr); gap: 34px 0; }
  .reason:nth-child(3) { border-left: 0; }
}
@media (max-width: 560px) {
  .reasons__list { grid-template-columns: 1fr; gap: 30px; }
  .reason + .reason { border-left: 0; border-top: 1px solid var(--sky-100); padding-top: 30px; }
}

/* --------------------------------------------------------------------------
   08 CTAバンド
   -------------------------------------------------------------------------- */
.cta-band {
  position: relative;
  padding: clamp(104px, 12vw, 156px) 0 clamp(70px, 8vw, 104px);
  background: linear-gradient(146deg, var(--sky-600) 0%, var(--sky-800) 58%, var(--sky-900) 100%);
  color: #fff;
  overflow: hidden;
}
.cta-band__waves {
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: clamp(80px, 9vw, 132px);
  transform: rotate(180deg);
  overflow: hidden;
  z-index: 1;
}
.cta-band__waves .wave--1 { color: var(--c-white); opacity: 1; }
.cta-band__waves .wave--2 { color: var(--sky-100); opacity: .3; }

.cta-band__sky { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.cta-band__sky .cloud { fill: rgba(255, 255, 255, .035); }
.cta-band__sky .cloud--a { top: 34%; left: -16%; width: 228px; animation-duration: 78s; }
.cta-band__sky .cloud--b { top: 68%; left: 56%;  width: 152px; animation-duration: 96s; animation-delay: -40s; }

.cta-band__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(20px, 3.4vw, 48px);
}

.cta-band__badge {
  width: clamp(126px, 13vw, 164px);
  aspect-ratio: 1;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .5);
  background: rgba(255, 255, 255, .1);
  display: grid;
  place-content: center;
  text-align: center;
  font-family: var(--f-serif);
  animation: softFloat 6.5s ease-in-out infinite;
}
.cta-band__badge-sm { display: block; font-size: clamp(11px, 1.1vw, 13px); letter-spacing: .08em; }
.cta-band__badge-num {
  display: block;
  font-family: var(--f-en);
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1;
  font-size: clamp(42px, 4.6vw, 58px);
  font-weight: 300;
  line-height: 1.14;
  color: var(--gold-300);
}
.cta-band__badge-num span:last-child { font-family: var(--f-serif); font-size: .35em; margin-left: 3px; }

.cta-band__body { text-align: center; }
.cta-band__lead {
  font-size: clamp(13px, 1.4vw, 15.5px);
  letter-spacing: .08em;
  color: rgba(255, 255, 255, .92);
  margin-bottom: 14px;
}
.cta-band__link {
  display: inline-flex;
  align-items: center;
  gap: clamp(12px, 1.6vw, 22px);
  font-family: var(--f-serif);
  font-size: clamp(19.5px, 3.5vw, 42px);
  font-weight: 600;
  letter-spacing: .07em;
  line-height: 1.4;
  color: #fff;
  padding-bottom: 6px;
  border-bottom: 1px solid transparent;
  transition: border-color .4s var(--ease);
}
.cta-band__link::after {
  content: "";
  flex-shrink: 0;
  width: clamp(11px, 1.2vw, 15px);
  height: clamp(11px, 1.2vw, 15px);
  border-top: 2px solid var(--gold-300);
  border-right: 2px solid var(--gold-300);
  transform: rotate(45deg);
  transition: transform .4s var(--ease);
}
.cta-band__link:hover { border-bottom-color: var(--gold-300); }
.cta-band__link:hover::after { transform: rotate(45deg) translate(4px, -4px); }

.cta-band__note {
  margin-top: 18px;
  font-size: 13px;
  letter-spacing: .05em;
  color: rgba(255, 255, 255, .78);
}

.cta-band__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.phone {
  width: clamp(56px, 6vw, 76px);
  height: auto;
  fill: none;
  stroke: rgba(255, 255, 255, .6);
  stroke-width: 2;
}
.phone__check { stroke: var(--gold-300); stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; }
.cta-band__phone-txt {
  font-family: var(--f-serif);
  font-size: clamp(11px, 1.2vw, 13px);
  line-height: 1.7;
  letter-spacing: .06em;
  text-align: center;
  color: rgba(255, 255, 255, .92);
}

@media (max-width: 900px) {
  .cta-band__inner { grid-template-columns: 1fr; justify-items: center; gap: 24px; }
  .cta-band__badge { order: 1; }
  .cta-band__body { order: 2; }
  .cta-band__phone { order: 3; flex-direction: row; gap: 14px; }
  .cta-band__phone-txt { text-align: left; }
  .cta-band__phone-txt br { display: none; }
}

/* --------------------------------------------------------------------------
   09 お客様の声（HTMLでコメントアウト中／お声が揃い次第そのまま使えます）
   -------------------------------------------------------------------------- */
.voice { padding: clamp(58px, 7vw, 104px) 0; background: linear-gradient(180deg, var(--sky-50) 0%, var(--c-white) 100%); }
.voice__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(23px, 3.2vw, 34px);
  letter-spacing: .12em;
  text-indent: .12em;
  color: var(--sky-900);
  text-align: center;
  margin-bottom: clamp(30px, 3.6vw, 46px);
}
.voice__list { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(16px, 2vw, 26px); }
.voice__item {
  display: flex;
  gap: 16px;
  padding: 24px 22px;
  border-radius: 16px;
  background: var(--c-white);
  border: 1px solid rgba(230, 243, 250, .9);
  box-shadow: var(--shadow-sm);
}
.voice__avatar {
  flex-shrink: 0;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: var(--sky-50);
}
.voice__avatar svg { width: 30px; height: 30px; fill: none; stroke: var(--sky-400); stroke-width: 1.6; }
.voice__body p { font-size: 14px; line-height: 1.95; letter-spacing: .03em; color: var(--ink); }
.voice__name { margin-top: 8px; text-align: right; font-size: 12.5px; color: var(--ink-pale); }
@media (max-width: 900px) { .voice__list { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   10 よくあるご質問
   -------------------------------------------------------------------------- */
.faq {
  padding: clamp(58px, 7vw, 104px) 0;
  background: linear-gradient(180deg, var(--sky-50) 0%, var(--c-white) 62%);
}
.faq__title {
  font-family: var(--f-serif);
  font-weight: 600;
  font-size: clamp(21px, 2.8vw, 30px);
  letter-spacing: .1em;
  color: var(--sky-900);
  margin: 0 auto clamp(22px, 2.6vw, 32px);
  padding-left: 18px;
  position: relative;
  max-width: 880px;
}
.faq__title::before {
  content: "";
  position: absolute;
  left: 0;
  top: .34em;
  width: 4px;
  height: 1.05em;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--sky-400), var(--gold-400));
}

.faq__list { max-width: 880px; margin-inline: auto; }
.faq__item { border-bottom: 1px solid var(--sky-200); }
.faq__item:first-child { border-top: 1px solid var(--sky-200); }

.faq__q {
  width: 100%;
  display: block;
  padding: 18px 44px 18px 4px;
  position: relative;
  text-align: left;
}
.faq__qtext {
  display: block;
  font-size: clamp(14.5px, 1.5vw, 16px);
  font-weight: 500;
  line-height: 1.75;
  letter-spacing: .04em;
  color: var(--sky-900);
  transition: color .35s var(--ease);
}
.faq__q:hover .faq__qtext { color: var(--gold-600); }

.faq__icon {
  position: absolute;
  right: 6px;
  top: 50%;
  width: 15px;
  height: 15px;
  transform: translateY(-50%);
}
.faq__icon::before,
.faq__icon::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  background: var(--sky-600);
  transition: transform .45s var(--ease);
}
.faq__icon::before { width: 15px; height: 1.5px; transform: translate(-50%, -50%); }
.faq__icon::after  { width: 1.5px; height: 15px; transform: translate(-50%, -50%); }
.faq__item.is-open .faq__icon::after { transform: translate(-50%, -50%) rotate(90deg); }

.faq__a { height: 0; overflow: hidden; transition: height .5s var(--ease-out); }
.faq__a-inner {
  padding: 2px 44px 24px 18px;
  margin-bottom: 4px;
  border-left: 2px solid var(--sky-100);
}
.faq__a-inner p {
  font-size: 14.5px;
  line-height: 2.05;
  letter-spacing: .04em;
  color: var(--ink);
}
.faq__a-inner p + p { margin-top: 12px; }

/* --------------------------------------------------------------------------
   11 フッターCTA
   -------------------------------------------------------------------------- */
.last-cta {
  position: relative;
  overflow: hidden;
  padding-top: clamp(56px, 6.4vw, 88px);
  padding-bottom: clamp(130px, 14vw, 180px);
  background: linear-gradient(176deg, var(--sky-50) 0%, var(--sky-100) 52%, var(--sky-200) 100%);
}

.last-cta__sky { position: absolute; inset: 0; pointer-events: none; }
.last-cta__sky .cloud--a { top: 10%; left: -14%; width: 148px; animation-duration: 64s; opacity: .9; }
.last-cta__sky .cloud--b { top: 40%; left: 34%;  width: 96px;  animation-duration: 82s; animation-delay: -30s; opacity: .5; }

.last-cta__inner {
  position: relative;
  z-index: 2;
  width: min(100% - 48px, 1260px);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 218px minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(24px, 3.6vw, 52px);
}

.last-cta__photo {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.last-cta__photo img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: 50% 18%;
}

.last-cta__msg-main {
  font-family: var(--f-serif);
  font-size: clamp(16px, 1.9vw, 21px);
  font-weight: 600;
  line-height: 1.85;
  letter-spacing: .07em;
  color: var(--sky-900);
  margin-bottom: 16px;
}
.last-cta__msg-sub {
  font-size: 14.5px;
  line-height: 2;
  letter-spacing: .05em;
  color: var(--ink);
}

.last-cta__action { text-align: center; }
.last-cta__title {
  font-family: var(--f-serif);
  font-size: clamp(25px, 3.2vw, 38px);
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: .07em;
  color: var(--sky-900);
  margin-bottom: 14px;
}
.last-cta__title .num { font-size: 1.16em; }
.last-cta__text {
  font-size: 14px;
  line-height: 1.9;
  letter-spacing: .06em;
  color: var(--sky-700);
  margin-bottom: 24px;
}

.last-cta__waves {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: clamp(120px, 14vw, 190px);
  z-index: 1;
  overflow: hidden;
}
.last-cta__waves .wave--1 { color: var(--sky-300); opacity: .5; }
.last-cta__waves .wave--2 { color: var(--sky-400); opacity: .45; }
.last-cta__waves .wave--3 { color: var(--sky-600); opacity: .32; }

@media (max-width: 1040px) {
  .last-cta__inner { grid-template-columns: 200px 1fr; gap: 28px 34px; }
  .last-cta__action { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
  .last-cta__inner { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .last-cta__photo { width: min(100%, 210px); }
  .last-cta__action { width: 100%; }
}

/* --------------------------------------------------------------------------
   12 アクセス・院のご案内
   -------------------------------------------------------------------------- */
.access {
  padding: clamp(52px, 6.4vw, 92px) 0;
  background: var(--c-white);
}
.access__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 52px);
  align-items: start;
}

.access__table { border-top: 1px solid var(--sky-100); }
.access__row {
  display: grid;
  grid-template-columns: 112px 1fr;
  gap: 18px;
  padding: 17px 4px;
  border-bottom: 1px solid var(--sky-100);
}
.access__row dt {
  font-family: var(--f-serif);
  font-size: 14.5px;
  font-weight: 600;
  letter-spacing: .1em;
  color: var(--sky-700);
  line-height: 1.9;
}
.access__row dd {
  font-size: 14.5px;
  line-height: 1.9;
  letter-spacing: .04em;
  color: var(--ink);
}
.access__row dd a {
  color: var(--sky-700);
  border-bottom: 1px solid var(--sky-200);
  transition: border-color .35s var(--ease), color .35s var(--ease);
}
.access__row dd a:hover { color: var(--gold-600); border-bottom-color: var(--gold-400); }
.access__sub {
  display: block;
  font-size: 12.5px;
  letter-spacing: .05em;
  color: var(--ink-pale);
  line-height: 1.8;
}
.access__sub + .access__sub { margin-top: 4px; }

.access__map {
  border-radius: 20px;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--sky-100);
}
.access__map iframe {
  width: 100%;
  height: 100%;
  min-height: 404px;
  border: 0;
}

@media (max-width: 900px) {
  .access__inner { grid-template-columns: 1fr; }
  .access__map iframe { min-height: 290px; }
}
@media (max-width: 560px) {
  .access__row { grid-template-columns: 88px 1fr; gap: 12px; padding: 14px 2px; }
  .access__row dt, .access__row dd { font-size: 14px; }
}
