@charset "utf-8";
/* ============================================================
   広尾プレミアムメディカルクリニック — TOP
   reference: by-kin.com (see _design/by-kin-decomp.md)
   継承: 実測 ease / rem10px 基準 / 2書体で階層 / 400・500の2ウェイト /
         ゼロ埋め連番 / ヘアライン罫 / 文字だけのローダー / 横スリット縦展開 /
         マーキー帯 / 慣性スクロール
   ============================================================ */

:root{
  --ivory:#F3F0EA;
  --ivory-2:#E9E4D9;
  --ivory-3:#DED8CA;
  --ink:#16150F;
  --ink-2:#1E1C15;
  --ink-soft:#3E3A2F;
  --gray:#6F6A5E;
  --gold:#A8895A;
  --gold-lt:#C4A87A;

  --rule:rgba(22,21,15,.16);
  --rule-w:rgba(22,21,15,.09);
  --rule-i:rgba(243,240,234,.22);
  --rule-iw:rgba(243,240,234,.12);

  --f:"Noto Serif JP",'Hiragino Mincho ProN','Yu Mincho',serif;
  --m:"JetBrains Mono",ui-monospace,SFMono-Regular,monospace;

  /* by-kin 実測 easing */
  --eOutQuart:cubic-bezier(.165,.84,.44,1);
  --eInOutQuart:cubic-bezier(.76,0,.24,1);
  --eInOutCubic:cubic-bezier(.65,0,.35,1);

  --pad:clamp(2rem,5vw,8rem);
  --hd-h:7.2rem;
}

*,*::before,*::after{box-sizing:border-box}
html{font-size:10px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--ivory);color:var(--ink);
  font-family:var(--f);font-weight:400;font-size:1.5rem;line-height:2.05;
  letter-spacing:.045em;-webkit-font-smoothing:antialiased;
  font-feature-settings:"palt" 1;overflow-x:hidden;
}
body.is-lock{overflow:hidden;height:100vh}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
ul,ol,dl,dd{margin:0;padding:0;list-style:none}
h1,h2,h3,p,figure{margin:0}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
b,u,em,i,s{font-style:normal;font-weight:inherit;text-decoration:none}
::selection{background:var(--gold);color:var(--ivory)}
:focus-visible{outline:1px solid var(--gold);outline-offset:3px}

.skip{
  position:fixed;left:1rem;top:-6rem;z-index:300;background:var(--ink);color:var(--ivory);
  padding:1.2rem 2rem;font-family:var(--m);font-size:1.1rem;letter-spacing:.16em;
  transition:top .3s var(--eOutQuart);
}
.skip:focus{top:1rem}

/* ── ラベル: 書体そのもので階層を作る (SM-04) ────────────────── */
.lbl{
  font-family:var(--m);font-weight:400;font-size:1.1rem;line-height:1.4;
  letter-spacing:.22em;text-transform:uppercase;color:var(--gray);
  display:flex;align-items:center;gap:1.2rem;
}
.lbl i{color:var(--ink);letter-spacing:.14em}
.lbl--gold{color:var(--gold)}

.h2{
  font-weight:500;font-size:clamp(2.6rem,4.2vw,5.2rem);line-height:1.42;
  letter-spacing:.02em;margin-top:2.6rem;
}

/* ══ LOADER (SM-01) ═════════════════════════════════════════ */
.loader{
  position:fixed;inset:0;z-index:200;background:var(--ivory);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .7s var(--eOutQuart),visibility .7s;
}
.loader.is-done{opacity:0;visibility:hidden}
.loader__inner{text-align:center}
.loader__jp{
  font-size:1.4rem;letter-spacing:.34em;color:var(--ink);
  opacity:0;animation:fadeUp .9s var(--eOutQuart) .15s forwards;
}
.loader__num{
  margin-top:1.8rem;font-family:var(--m);font-weight:300;
  font-size:1.2rem;letter-spacing:.28em;color:var(--gold);
}
.loader__pct{margin-left:.4rem}
@keyframes fadeUp{from{opacity:0;transform:translateY(.8rem)}to{opacity:1;transform:none}}

/* ══ カスタムカーソル ═══════════════════════════════════════ */
.cursor{position:fixed;left:0;top:0;z-index:190;pointer-events:none;opacity:0;
  transition:opacity .4s var(--eOutQuart);mix-blend-mode:difference}
.cursor.is-on{opacity:1}
.cursor i{
  position:absolute;left:-1.6rem;top:-1.6rem;width:3.2rem;height:3.2rem;
  border:1px solid rgba(243,240,234,.75);border-radius:50%;
  transition:transform .5s var(--eOutQuart),border-color .4s,opacity .4s;
}
.cursor b{position:absolute;left:-.2rem;top:-.2rem;width:.4rem;height:.4rem;border-radius:50%;
  background:rgba(243,240,234,.9)}
.cursor.is-hot i{transform:scale(1.7);border-color:rgba(196,168,122,.95)}
.cursor.is-down i{transform:scale(.75)}
body.has-cursor,body.has-cursor a,body.has-cursor button{cursor:none}

/* ══ 進捗バー ═══════════════════════════════════════════════ */
.prog{position:fixed;left:0;top:0;width:100%;height:2px;z-index:130;pointer-events:none}
.prog s{display:block;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:0 50%}

/* ══ HEADER ════════════════════════════════════════════════ */
.hd{
  position:fixed;top:0;left:0;width:100%;z-index:120;height:var(--hd-h);
  display:flex;align-items:center;gap:2rem;
  padding:0 var(--pad);color:var(--ivory);
  transition:background .5s var(--eOutQuart),color .5s var(--eOutQuart),
             border-color .5s,height .5s var(--eOutQuart);
  border-bottom:1px solid transparent;
}
.hd.is-solid{background:rgba(243,240,234,.94);backdrop-filter:saturate(1.1);color:var(--ink);border-bottom-color:var(--rule);height:6.4rem}
.hd__logo{display:flex;flex-direction:column;gap:.3rem;margin-right:auto;line-height:1.2}
.hd__logo-jp{font-size:1.4rem;font-weight:500;letter-spacing:.14em}
.hd__logo-en{font-family:var(--m);font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;opacity:.62}

.hd__nav{display:flex;gap:2rem}
.hd__nav a{
  font-family:var(--m);font-size:1.05rem;letter-spacing:.16em;
  display:flex;align-items:baseline;gap:.5rem;position:relative;padding:.4rem 0;
  transition:opacity .4s;
}
.hd__nav a i{font-size:.8rem;opacity:.45}
.hd__nav a::after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;
  background:currentColor;transform:scaleX(0);transform-origin:100% 50%;
  transition:transform .5s var(--eOutQuart);
}
.hd__nav a:hover::after,.hd__nav a.is-cur::after{transform:scaleX(1);transform-origin:0 50%}
.hd__nav a.is-cur i{opacity:1;color:var(--gold)}

.hd__cta{display:flex;align-items:center;gap:1.8rem}
.hd__tel{font-family:var(--m);font-size:1.25rem;letter-spacing:.1em}

.btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--m);font-size:1.1rem;letter-spacing:.16em;text-transform:uppercase;
  padding:1.15rem 2.2rem;border:1px solid currentColor;position:relative;overflow:hidden;
  transition:color .5s var(--eOutQuart);z-index:0;
}
.btn::before{
  content:"";position:absolute;inset:0;background:var(--btn-fill,currentColor);z-index:-1;
  transform:scaleY(0);transform-origin:50% 100%;transition:transform .55s var(--eInOutQuart);
}
.btn:hover::before{transform:scaleY(1)}
.btn--gold{color:var(--gold);border-color:var(--gold);--btn-fill:var(--gold)}
.hd:not(.is-solid) .btn--gold{color:var(--gold-lt);border-color:var(--gold-lt);--btn-fill:var(--gold-lt)}
.btn--gold:hover{color:var(--ink)}
.hd:not(.is-solid) .btn--gold:hover{color:var(--ink)}
.hd.is-solid .btn--gold:hover{color:var(--ink)}
.btn--line{--btn-fill:var(--ink)}
.btn--line:hover{color:var(--ivory)}
.hd .btn--gold{font-size:1.1rem;padding:1rem 1.9rem}
.btn--lg{font-size:1.25rem;padding:1.7rem 3.4rem;letter-spacing:.2em}

.hd__burger{display:none;width:3.4rem;height:3.4rem;position:relative}
.hd__burger span{position:absolute;left:.5rem;width:2.4rem;height:1px;background:currentColor;transition:transform .5s var(--eInOutQuart)}
.hd__burger span:nth-child(1){top:1.4rem}
.hd__burger span:nth-child(2){top:2rem}
.hd__burger[aria-expanded="true"] span:nth-child(1){transform:translateY(.3rem) rotate(45deg)}
.hd__burger[aria-expanded="true"] span:nth-child(2){transform:translateY(-.3rem) rotate(-45deg)}

/* ══ HERO (SM-02 / SM-03) ══════════════════════════════════ */
/* 背景をインクに。スリットが開き切るまでの間もヘッダーの白文字が読める */
.hero{position:relative;height:100svh;min-height:60rem;overflow:hidden;color:var(--ivory);isolation:isolate;background:var(--ink)}
.hero__media{position:absolute;inset:0;z-index:-2;clip-path:inset(calc(50% - 3rem) 0 calc(50% - 3rem) 0)}
.hero.is-open .hero__media{clip-path:inset(0 0 0 0);transition:clip-path 1.5s var(--eInOutQuart)}
.hero__media img{width:100%;height:100%;object-fit:cover;transform:scale(1.12)}
.hero.is-open .hero__media img{transform:scale(1);transition:transform 14s var(--eOutQuart)}
.hero__scrim{
  position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(180deg,rgba(22,21,15,.72) 0%,rgba(22,21,15,.34) 12%,rgba(22,21,15,.06) 30%,rgba(22,21,15,.20) 58%,rgba(22,21,15,.84) 100%),
    linear-gradient(90deg,rgba(22,21,15,.62) 0%,rgba(22,21,15,.14) 46%,rgba(22,21,15,0) 72%);
  opacity:0;transition:opacity 1.2s var(--eOutQuart) .5s;
}
.hero.is-open .hero__scrim{opacity:1}

/* 縦積み日本語ラベル (SM-07変換)。writing-mode はフォント依存で崩れるため使わない */
.hero__vert{
  position:absolute;top:calc(var(--hd-h) + 5rem);z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:.85rem;
  font-family:var(--f);font-size:1.2rem;line-height:1;
  opacity:0;transition:opacity 1s var(--eOutQuart) 1.1s;
}
.hero.is-open .hero__vert{opacity:.75}
.hero__vert span{display:block}
.hero__vert s{display:block;width:1px;height:2.2rem;background:currentColor;opacity:.45;margin:.4rem 0}
.hero__vert--l{left:calc(var(--pad) * .38)}
.hero__vert--r{right:calc(var(--pad) * .38);color:var(--gold-lt)}

.hero__body{position:absolute;left:var(--pad);bottom:19rem;z-index:2;max-width:min(88rem,72vw)}
.hero__body .lbl{opacity:0}
.hero.is-open .hero__body .lbl{animation:fadeUp .9s var(--eOutQuart) 1.15s forwards}
.hero__h{font-weight:500;font-size:clamp(3.4rem,6.4vw,8.4rem);line-height:1.3;letter-spacing:.015em;margin-top:2.4rem}
.hero__lead{margin-top:3rem;font-size:1.45rem;line-height:2.2;letter-spacing:.09em;color:rgba(243,240,234,.84)}
.hero.is-open .hero__lead{transition-delay:1.7s}

.hero__meta{
  position:absolute;left:var(--pad);right:var(--pad);bottom:0;z-index:2;
  display:flex;align-items:stretch;border-top:1px solid var(--rule-iw);
  opacity:0;transition:opacity 1s var(--eOutQuart) 1.5s;
}
.hero.is-open .hero__meta{opacity:1}
.hero__meta-i{flex:1;padding:2.2rem 0 2.6rem;display:flex;flex-direction:column;gap:.9rem;border-right:1px solid var(--rule-iw)}
.hero__meta-i>*:not(.lbl){font-size:1.5rem;letter-spacing:.08em}
.hero__meta-i .lbl{color:rgba(243,240,234,.62)}
.hero__meta-i em{display:block;font-size:1.15rem;opacity:.6;margin-top:.4rem}
.hero__meta-i:not(:first-child){padding-left:2.4rem}
.hero__meta-i--end{flex:0 0 14rem;border-right:0;justify-content:flex-end;align-items:flex-end}
.scrollcue{display:flex;align-items:center;gap:1rem;font-family:var(--m);font-size:1rem;letter-spacing:.24em}
.scrollcue s{display:block;width:5rem;height:1px;background:currentColor;position:relative;overflow:hidden}
.scrollcue s::after{content:"";position:absolute;inset:0;background:var(--gold-lt);animation:cue 2.6s var(--eInOutCubic) infinite}
@keyframes cue{0%{transform:translateX(-100%)}55%,100%{transform:translateX(100%)}}

/* ══ マーキー帯 ═════════════════════════════════════════════ */
.mq{background:var(--ink);color:var(--ivory);overflow:hidden;padding:1.9rem 0;border-block:1px solid var(--rule-iw)}
.mq__row{display:flex;width:max-content}
.mq__row.is-on{animation:mq var(--mq-d,40s) linear infinite}
.mq:hover .mq__row{animation-play-state:paused}
@keyframes mq{to{transform:translate3d(calc(var(--mq-w) * -1),0,0)}}
.mq__set{display:flex;align-items:center;flex:none}
.mq__set em{font-family:var(--f);font-size:1.3rem;letter-spacing:.2em;opacity:.72;white-space:nowrap}
.mq__set s{display:block;width:.4rem;height:.4rem;background:var(--gold);border-radius:50%;margin:0 2.6rem;flex:none;opacity:.85}

/* ══ 固定インデックス (SM-05) ══════════════════════════════ */
.idx{
  position:fixed;right:calc(var(--pad) * .42);bottom:3.4rem;z-index:110;
  font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;color:var(--gray);
  opacity:0;transition:opacity .6s var(--eOutQuart),color .5s;pointer-events:none;
}
.idx.is-on{opacity:1}
.idx span{color:var(--ink);display:inline-block}
.idx.is-dark{color:rgba(243,240,234,.55)}
.idx.is-dark span{color:var(--ivory)}
.idx span.roll{animation:roll .55s var(--eOutQuart)}
@keyframes roll{0%{opacity:0;transform:translateY(.7rem)}100%{opacity:1;transform:none}}

/* ══ SECTION 共通 ═══════════════════════════════════════════ */
.sec{padding:clamp(9rem,13vw,18rem) var(--pad);border-top:1px solid var(--rule)}
.sec--concept{border-top:0}
.sec__head{max-width:96rem}
.sec__head--row{display:flex;flex-wrap:wrap;align-items:baseline;gap:2rem 6rem;max-width:none}
.sec__head--row .h2,.sec__head--row .legal__h{margin-top:0}

.rv{opacity:0;transform:translateY(2.4rem);transition:opacity .95s var(--eOutQuart),transform .95s var(--eOutQuart)}
.rv.is-in{opacity:1;transform:none}
.split .w{display:inline-block;opacity:0;transform:translateY(1.6rem);transition:opacity .9s var(--eOutQuart),transform .9s var(--eOutQuart)}
.split.is-in .w{opacity:1;transform:none}

/* ── CONCEPT ── */
.concept{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,6vw,9rem);margin-top:clamp(5rem,7vw,9rem);align-items:start}
.concept__txt p{font-size:1.55rem;line-height:2.4;letter-spacing:.07em}
.concept__txt p+p{margin-top:2.4rem}
.concept__fig{overflow:hidden}
.concept__fig img{width:100%;aspect-ratio:4/3;object-fit:cover;transform:scale(1.06)}

.pillars{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(6rem,9vw,13rem);border-top:1px solid var(--rule)}
.pillar{padding:4.4rem 3.2rem 0 0;border-right:1px solid var(--rule)}
.pillar:last-child{border-right:0}
.pillar:not(:first-child){padding-left:3.2rem}
.pillar i{display:block;font-family:var(--m);font-size:1.1rem;letter-spacing:.2em;color:var(--gold)}
.pillar h3{margin-top:2.2rem;font-size:1.9rem;font-weight:500;line-height:1.72;letter-spacing:.03em}
.pillar p{margin-top:1.8rem;font-size:1.4rem;line-height:2.15;color:var(--ink-soft)}

/* ── CONCERNS ── */
.concerns{margin-top:clamp(5rem,7vw,8rem);border-top:1px solid var(--rule);display:grid;grid-template-columns:repeat(5,1fr)}
.concerns li{border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}
.concerns li:nth-child(5n){border-right:0}
.concerns li a{
  display:flex;flex-direction:column;gap:1.6rem;padding:3.2rem 2rem 3.4rem 0;height:100%;
  transition:background .5s var(--eOutQuart);
}
.concerns li:not(:nth-child(5n+1)) a{padding-left:2rem}
.concerns li a:hover{background:var(--ivory-2)}
.concerns li i{font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;color:var(--gold)}
.concerns li span{font-size:1.7rem;font-weight:500;letter-spacing:.04em}
.concerns li b{
  font-size:.95rem;letter-spacing:.16em;color:var(--gray);margin-top:auto;
  opacity:0;transform:translateX(-.6rem);transition:opacity .45s var(--eOutQuart),transform .45s var(--eOutQuart);
}
.concerns li a:hover b{opacity:1;transform:none}
.concerns__end{margin-top:4.4rem;font-size:clamp(1.7rem,2.3vw,2.4rem);font-weight:500;letter-spacing:.06em}

/* ── SERVICE ── */
.svc{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(2.4rem,4vw,5.6rem);margin-top:clamp(5rem,7vw,9rem)}
.svc__i figure{overflow:hidden;margin-bottom:2.8rem}
.svc__i img{width:100%;aspect-ratio:4/5;object-fit:cover;transform:scale(1.06)}
.svc__i i{font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;color:var(--gold);display:block}
.svc__i h3{margin-top:1.6rem;font-size:2.4rem;font-weight:500;letter-spacing:.08em}
.svc__i p{margin-top:1.6rem;font-size:1.4rem;line-height:2.15;color:var(--ink-soft)}
.svc__l{display:inline-flex;margin-top:2.4rem;padding-bottom:.6rem;border-bottom:1px solid var(--rule);color:var(--ink);
  transition:border-color .4s,gap .4s}
.svc__l::after{content:"→";margin-left:.9rem;transition:transform .5s var(--eOutQuart)}
.svc__l:hover{border-bottom-color:var(--gold)}
.svc__l:hover::after{transform:translateX(.5rem)}

/* ── MEMBERSHIP ── */
.mem{display:grid;grid-template-columns:1.35fr .65fr;gap:clamp(3rem,6vw,8rem);margin-top:clamp(5rem,7vw,9rem);align-items:start}
.mem__l{border-top:1px solid var(--rule)}
.mem__l li{display:grid;grid-template-columns:8rem 1fr;gap:0 2rem;padding:3.4rem 0;border-bottom:1px solid var(--rule)}
.mem__l li i{grid-row:1 / span 2;padding-top:.7rem;align-items:flex-start}
.mem__l h3{grid-column:2;font-size:2.1rem;font-weight:500;letter-spacing:.12em}
.mem__l p{grid-column:2;margin-top:1.4rem;font-size:1.4rem;line-height:2.15;color:var(--ink-soft);max-width:56rem}
.mem__note{border-left:1px solid var(--gold);padding:.6rem 0 .6rem 2.8rem}
.mem__note .lbl{color:var(--gold)}
.mem__note p:last-child{margin-top:1.8rem;font-size:1.3rem;line-height:2.1;color:var(--ink-soft)}

/* ── PRICE (dark) ── */
.sec--price{background:var(--ink);color:var(--ivory);border-top-color:transparent}
.sec--price .lbl{color:rgba(243,240,234,.62)}
.sec--price .lbl i{color:var(--gold-lt)}
.price{display:grid;grid-template-columns:minmax(28rem,.85fr) 1.15fr;gap:clamp(3rem,6vw,9rem);margin-top:clamp(5rem,7vw,9rem);align-items:start}
.price__idx{border-top:1px solid var(--rule-i)}
.price__idx button{
  width:100%;display:flex;align-items:baseline;gap:1.8rem;
  padding:2.1rem .8rem;border-bottom:1px solid var(--rule-iw);text-align:left;
  transition:padding-left .5s var(--eOutQuart),color .4s;color:rgba(243,240,234,.72);
}
.price__idx button i{font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;opacity:.6}
.price__idx button span{font-size:1.7rem;font-weight:500;letter-spacing:.06em}
.price__idx button:hover,.price__idx button.is-on{color:var(--ivory);padding-left:1.8rem}
.price__idx button.is-on i{color:var(--gold-lt);opacity:1}

.price__panel{position:relative}
.price__panel .pp{animation:ppIn .7s var(--eOutQuart) both}
@keyframes ppIn{from{opacity:0;transform:translateY(1.4rem)}to{opacity:1;transform:none}}
.pp__h{display:flex;align-items:baseline;gap:1.6rem;padding-bottom:2.4rem;border-bottom:1px solid var(--rule-i)}
.pp__h b{font-size:2.4rem;font-weight:500;letter-spacing:.08em}
.pp__h i{font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;color:var(--gold-lt)}
.pp__h u{margin-left:auto;font-family:var(--m);font-size:1rem;letter-spacing:.18em;opacity:.42}
.pp__note{margin-top:1.8rem;font-family:var(--m);font-size:1.05rem;letter-spacing:.1em;color:var(--gold-lt)}
.pp__note a{border-bottom:1px solid currentColor}
.pp__l li{display:flex;align-items:baseline;justify-content:space-between;gap:2rem;padding:1.85rem 0;border-bottom:1px solid var(--rule-iw)}
.pp__l .n{font-size:1.45rem;letter-spacing:.05em}
.pp__l .p{font-family:var(--m);font-size:1.45rem;letter-spacing:.06em;color:var(--gold-lt);white-space:nowrap}
.price__note{margin-top:4.4rem;font-size:1.2rem;line-height:2.1;color:rgba(243,240,234,.56);max-width:78rem}
.price__note b{color:var(--ivory)}
.price__note a{color:var(--gold-lt);border-bottom:1px solid currentColor}

/* ── FLOW ── */
.flow{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(5rem,7vw,9rem);border-top:1px solid var(--rule)}
.flow li{padding:3.6rem 3rem 4rem 0;border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}
.flow li:nth-child(3n){border-right:0}
.flow li:not(:nth-child(3n+1)){padding-left:3rem}
.flow li i{font-family:var(--m);font-size:1.1rem;letter-spacing:.2em;color:var(--gold)}
.flow li h3{margin-top:1.6rem;font-size:2rem;font-weight:500;letter-spacing:.1em}
.flow li p{margin-top:1.6rem;font-size:1.35rem;line-height:2.1;color:var(--ink-soft)}

/* ── DOCTOR ── */
.doc{display:grid;grid-template-columns:minmax(26rem,.7fr) 1.3fr;gap:clamp(3rem,6vw,9rem);margin-top:clamp(5rem,7vw,9rem);align-items:start}
.doc__fig{overflow:hidden;background:var(--ink)}
.doc__fig img{width:100%;aspect-ratio:4/5;object-fit:cover;transform:scale(1.06)}
.doc__name{display:flex;flex-direction:column-reverse;align-items:flex-start;gap:1.6rem;padding-bottom:3rem;border-bottom:1px solid var(--rule)}
.doc__name-jp{font-size:clamp(2.4rem,3.4vw,3.6rem);font-weight:500;letter-spacing:.14em;color:var(--gray)}
.doc__name-img{display:block;height:clamp(3rem,4.2vw,4.4rem);width:auto;color:var(--gray)}
.doc__dl{margin-top:3.4rem;display:grid;grid-template-columns:14rem 1fr;gap:3.4rem 3rem}
.doc__dl dt{padding-top:.6rem;align-self:start;align-items:flex-start}
.doc__dl dd p{display:grid;grid-template-columns:9rem 1fr;gap:2rem;font-size:1.4rem;line-height:2.1}
.doc__dl dd p+p{margin-top:1.6rem}
.doc__dl dd p i{font-family:var(--m);font-size:1.15rem;letter-spacing:.1em;color:var(--gold);padding-top:.35rem}
.doc__soc{display:flex;flex-wrap:wrap;gap:.9rem}
.doc__soc span{font-size:1.25rem;letter-spacing:.05em;padding:.7rem 1.4rem;border:1px solid var(--rule);color:var(--ink-soft)}

/* ── FAQ ── */
.faq{margin-top:clamp(4rem,6vw,7rem);border-top:1px solid var(--rule)}
.faq li{border-bottom:1px solid var(--rule)}
.faq__q{width:100%;display:flex;align-items:center;gap:2.4rem;padding:3rem 0;text-align:left;
  transition:color .4s}
.faq__q i{font-family:var(--m);font-size:1.2rem;letter-spacing:.1em;color:var(--gold)}
.faq__q span{font-size:1.75rem;font-weight:500;letter-spacing:.05em}
.faq__q s{margin-left:auto;position:relative;width:1.6rem;height:1.6rem;flex:none}
.faq__q s::before,.faq__q s::after{content:"";position:absolute;left:0;top:50%;width:100%;height:1px;background:var(--ink);
  transition:transform .5s var(--eInOutQuart)}
.faq__q s::after{transform:rotate(90deg)}
.faq__q[aria-expanded="true"] s::after{transform:rotate(0)}
.faq__a{max-height:0;overflow:hidden;transition:max-height .6s var(--eInOutQuart)}
.faq__a p{padding:0 0 3rem calc(1.2rem + 2.4rem);font-size:1.4rem;line-height:2.2;color:var(--ink-soft);max-width:86rem}
.faq__a a{border-bottom:1px solid var(--rule);color:var(--ink)}
.faq__todo{color:var(--gold)!important}

/* ── NEWS ── */
.news{margin-top:clamp(4rem,6vw,7rem);border-top:1px solid var(--rule)}
.news li{border-bottom:1px solid var(--rule);padding:3rem 0}
.news li a{display:flex;align-items:center;gap:2.6rem}
.news li a .tag{font-family:var(--m);font-size:1rem;letter-spacing:.18em;padding:.5rem 1.1rem;border:1px solid var(--rule);color:var(--gray)}
.news__t{font-size:1.9rem;font-weight:500;letter-spacing:.06em}
.news__ar{margin-left:auto;width:4.4rem;height:1px;background:var(--ink);transition:width .5s var(--eOutQuart)}
.news li a:hover .news__ar{width:7rem}
.news__x{margin-top:1.6rem;font-size:1.35rem;line-height:2.1;color:var(--ink-soft);max-width:80rem}

/* ── ACCESS (dark) ── */
.sec--access{background:var(--ink);color:var(--ivory);border-top-color:transparent}
.sec--access .lbl{color:rgba(243,240,234,.62)}
.sec--access .lbl i{color:var(--gold-lt)}
.acc{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(3rem,6vw,9rem);margin-top:clamp(5rem,7vw,9rem);align-items:start}
.acc__dl{display:grid;grid-template-columns:13rem 1fr;gap:0 3rem;border-top:1px solid var(--rule-i)}
.acc__dl dt{padding:3.2rem 0;border-bottom:1px solid var(--rule-iw);align-self:stretch;align-items:flex-start}
.acc__dl dd{padding:3.2rem 0;border-bottom:1px solid var(--rule-iw);font-size:1.5rem;line-height:2.05;letter-spacing:.06em}
.acc__dl dd p{display:flex;align-items:baseline;justify-content:space-between;gap:2rem}
.acc__dl dd p+p{margin-top:1.2rem}
.acc__dl dd p i{font-family:var(--m);font-size:1.25rem;letter-spacing:.08em;color:var(--gold-lt);white-space:nowrap}
.acc__tel{font-family:var(--m);font-size:2.4rem;letter-spacing:.08em;display:block}
.acc__dl dd small{display:block;margin-top:.8rem;font-size:1.15rem;opacity:.55}
.acc__map-l{display:inline-flex;margin-top:3rem;color:var(--gold-lt);padding-bottom:.6rem;border-bottom:1px solid currentColor}
.acc__map-l::after{content:"↗";margin-left:.9rem}
.acc__fig{overflow:hidden}
.acc__fig img{width:100%;aspect-ratio:4/3;object-fit:cover;transform:scale(1.06)}
.acc__map{margin-top:2.4rem;height:30rem;border:1px solid var(--rule-i);overflow:hidden;filter:grayscale(1) contrast(.9) brightness(.85)}
.acc__map iframe{width:100%;height:100%;border:0;display:block}

/* ── CONTACT ── */
.sec--contact{text-align:center;padding-block:clamp(10rem,15vw,20rem);background:var(--ivory-2);border-top-color:transparent}
.sec--contact .lbl{justify-content:center}
.contact__h{margin-top:3rem;font-size:clamp(2.6rem,4.6vw,5.6rem);font-weight:500;line-height:1.46;letter-spacing:.03em}
.contact__btns{margin-top:5.4rem;display:flex;gap:1.6rem;justify-content:center;flex-wrap:wrap}
.contact__note{margin-top:3.4rem;font-size:1.25rem;line-height:2.1;color:var(--gray);letter-spacing:.06em}

/* ── 医療広告に関する表示 ── */
.sec--legal{background:var(--ivory-3)}
.legal__h{font-weight:500;font-size:clamp(2.2rem,3vw,3.4rem);line-height:1.5;letter-spacing:.04em;margin-top:2.6rem}
.legal{display:grid;grid-template-columns:repeat(2,1fr);gap:0;margin-top:clamp(4rem,6vw,7rem);border-top:1px solid var(--rule)}
.legal__b{padding:3.4rem 3.4rem 3.8rem 0;border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}
.legal__b:nth-child(2n){border-right:0;padding-left:3.4rem}
.legal__b--wide{grid-column:1/-1;border-right:0;padding-left:0}
.legal__b .lbl{color:var(--gray)}
.legal__b p:not(.lbl){margin-top:1.8rem;font-size:1.35rem;line-height:2.2;color:var(--ink-soft);max-width:84rem}
.legal__b b{font-weight:500;color:var(--ink)}
.legal__b a{color:var(--ink);border-bottom:1px solid var(--rule)}
.legal__todo{color:var(--gold)!important}
.legal__ol{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:2.4rem;border-top:1px solid var(--rule)}
.legal__ol li{padding:2rem 1.6rem 2.2rem 0;border-right:1px solid var(--rule);display:flex;flex-direction:column;gap:1rem}
.legal__ol li:last-child{border-right:0}
.legal__ol li:not(:first-child){padding-left:1.6rem}
.legal__ol i{font-family:var(--m);font-size:1.05rem;letter-spacing:.2em;color:var(--gold);text-transform:uppercase}
.legal__ol span{font-size:1.3rem;line-height:1.9}

/* ── FOOTER ── */
.ft{background:var(--ink);color:var(--ivory);padding:clamp(6rem,9vw,11rem) var(--pad) 3.4rem}
.ft__top{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4rem;padding-bottom:6rem;border-bottom:1px solid var(--rule-iw)}
.ft__logo{font-size:1.9rem;font-weight:500;line-height:1.8;letter-spacing:.14em}
.ft__nav{display:flex;flex-direction:column;gap:1.3rem;align-items:flex-start}
.ft__nav a{font-family:var(--m);font-size:1.1rem;letter-spacing:.2em;opacity:.72;transition:opacity .4s}
.ft__nav a:hover{opacity:1}
.ft__info p{font-size:1.3rem;line-height:2.1;opacity:.72;letter-spacing:.05em}
.ft__jiyu{margin-top:1.6rem;color:var(--gold-lt);opacity:1!important}
.ft__btm{margin-top:3rem;display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
.ft__btm .lbl{color:rgba(243,240,234,.4)}
.ft__legal{display:flex;gap:2.4rem}
.ft__legal a{font-size:1.2rem;opacity:.55;transition:opacity .4s}
.ft__legal a:hover{opacity:1}

/* ══ RESPONSIVE ════════════════════════════════════════════ */
@media (max-width:1360px){
  .hd__nav{gap:1.5rem}
  .hd__nav a{font-size:1rem;letter-spacing:.12em}
  .hd__tel{display:none}
}
@media (max-width:1180px){
  .hd__nav{display:none}
  .hd__burger{display:block}
  .hd__nav.is-open{
    display:flex;flex-direction:column;gap:0;position:fixed;inset:var(--hd-h) 0 0;
    background:var(--ivory);color:var(--ink);padding:2rem var(--pad) 6rem;overflow:auto;
  }
  .hd__nav.is-open a{font-size:1.6rem;padding:2.4rem 0;border-bottom:1px solid var(--rule)}
  .concerns{grid-template-columns:repeat(3,1fr)}
  .concerns li:nth-child(5n){border-right:1px solid var(--rule)}
  .concerns li:not(:nth-child(5n+1)) a{padding-left:0}
  .concerns li:nth-child(3n){border-right:0}
  .concerns li:not(:nth-child(3n+1)) a{padding-left:2rem}
  .legal__ol{grid-template-columns:repeat(2,1fr)}
  .legal__ol li:nth-child(2n){border-right:0}
  .legal__ol li:not(:first-child){padding-left:0}
  .legal__ol li:nth-child(2n){padding-left:1.6rem}
}
@media (max-width:900px){
  :root{--hd-h:5.8rem;--pad:2.2rem}
  .hd{gap:1.2rem}
  .hd__logo-jp{font-size:1.25rem;letter-spacing:.06em;white-space:nowrap}
  .hd__logo-en{display:none}
  .hd .btn--gold{font-size:.95rem;padding:.9rem 1.2rem;white-space:nowrap;letter-spacing:.1em}

  .hero{height:auto;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding-top:calc(var(--hd-h) + 4rem)}
  .hero__vert{display:none}
  .hero__body{position:static;max-width:none;padding:0 var(--pad);margin-top:auto;margin-bottom:3.4rem}
  .hero__h{margin-top:1.8rem}
  .hero__lead{margin-top:2.2rem;font-size:1.35rem;line-height:2.05}
  .hero__meta{position:static;margin:0 var(--pad);flex-wrap:wrap}
  .hero__meta-i{flex:0 0 50%;border-right:0;padding:1.6rem 0}
  .hero__meta-i:not(:first-child){padding-left:0}
  .hero__meta-i>*:not(.lbl){font-size:1.35rem}
  .hero__meta-i--end{flex:0 0 100%;align-items:flex-start;padding:.6rem 0 2.6rem}

  .concept,.price,.doc,.acc,.svc,.mem,.legal{grid-template-columns:1fr}
  .pillars,.flow{grid-template-columns:1fr}
  .pillar,.flow li{border-right:0;padding-right:0}
  .pillar:not(:first-child),.flow li:not(:nth-child(3n+1)){padding-left:0}
  .pillar{border-bottom:1px solid var(--rule);padding-bottom:4rem}
  .legal__b,.legal__b:nth-child(2n){border-right:0;padding-left:0;padding-right:0}
  .concerns{grid-template-columns:repeat(2,1fr)}
  .concerns li:nth-child(3n){border-right:1px solid var(--rule)}
  .concerns li:not(:nth-child(3n+1)) a{padding-left:0}
  .concerns li:nth-child(2n){border-right:0}
  .concerns li:nth-child(2n) a{padding-left:2rem}
  .doc__dl,.acc__dl{grid-template-columns:1fr;gap:1rem}
  .acc__dl dt{padding-bottom:0;border-bottom:0}
  .doc__dl dd p{grid-template-columns:7rem 1fr;gap:1.2rem}
  .mem__l li{grid-template-columns:4.8rem 1fr;gap:0 1.4rem;padding:2.8rem 0}
  .mem__note{padding-left:2rem;margin-top:1rem}
  .ft__top{grid-template-columns:1fr;gap:4rem}
  .ft__nav{flex-direction:row;flex-wrap:wrap;gap:1.4rem 2.4rem}
  .idx{display:none}
  .price__idx li .price__panel{padding:0 0 3rem}
  .price__idx li .price__panel .pp__h{padding-bottom:1.8rem}
  .price__idx li .price__panel .pp__h b{font-size:1.6rem}
  .price__idx li .price__panel .pp__h u{display:none}
  .price__idx li .price__panel .pp__l li{padding:1.4rem 0}
  .price__idx li .price__panel .pp__l .n{font-size:1.3rem}
  .price__idx li .price__panel .pp__l .p{font-size:1.25rem}
}
@media (max-width:560px){
  .sec__head--row{gap:1.4rem}
  .concerns{grid-template-columns:1fr}
  .concerns li{border-right:0!important}
  .concerns li a{padding-left:0!important;padding-block:2.4rem}
  .concerns li b{opacity:1;transform:none}
  .contact__btns{flex-direction:column}
  .btn--lg{width:100%}
  .news li a{flex-wrap:wrap;gap:1.2rem 1.6rem}
  .news__t{flex:0 0 100%;font-size:1.7rem}
  .news__ar{display:none}
  .doc__dl dd p{grid-template-columns:1fr;gap:.4rem}
  .acc__dl dd p{flex-direction:column;align-items:flex-start;gap:.4rem}
  .faq__q{gap:1.4rem}
  .faq__q span{font-size:1.5rem}
  .faq__a p{padding-left:calc(1.2rem + 1.4rem)}
  .legal__ol{grid-template-columns:1fr}
  .legal__ol li{border-right:0!important;padding-left:0!important;border-bottom:1px solid var(--rule)}
  .legal__ol li:last-child{border-bottom:0}
  .acc__map{height:24rem}
  .ft__btm{flex-direction:column;gap:1.6rem}
  .ft__legal{flex-direction:column;gap:1rem}
}

/* ══ MOTION 配慮 ════════════════════════════════════════════ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .hero__media{clip-path:none!important}
  .hero__media img,.concept__fig img,.svc__i img,.doc__fig img,.acc__fig img{transform:none!important}
  .rv,.split .w{opacity:1!important;transform:none!important}
  .hero__body .lbl,.hero__vert,.hero__meta,.hero__scrim{opacity:1!important}
  .mq__row{animation:none!important}
  .cursor{display:none!important}
}
@media print{
  .hd,.idx,.prog,.cursor,.mq,.loader,.acc__map{display:none!important}
  .rv,.split .w{opacity:1!important;transform:none!important}
  body{background:#fff;color:#000}
}
