:root{
  --ground:#FDFCFA; --paper:#FFFFFF; --veil:#F7F3EC;
  --ink:#16130F; --muted:#565046; --faint:#7B7264;
  --line:#EAE3D8; --line-2:#DED4C4;
  --gold:#D49B2A; --gold-ink:#8A6318; --gold-wash:#FAF2E0;
  --display:"Cormorant Garamond",Garamond,"Times New Roman",serif;
  --sans:"Jost",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,sans-serif;
  --max:1240px; --pad:clamp(20px,4.5vw,64px);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);
  font-weight:300;font-size:16.5px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
p{margin:0}
h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:300;text-wrap:balance;
  letter-spacing:-.012em;line-height:1.06}
a{color:inherit;text-decoration:none}
:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.lbl{font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-ink);font-weight:500}
#hero .lbl{color:#6F4E10;font-weight:600;text-shadow:0 0 16px rgba(253,252,250,.95)}
#hero .pill:not(.gold){background:color-mix(in srgb,var(--ground) 78%,transparent);
  backdrop-filter:blur(5px);border-color:#6A6156}
#hero .pill.gold span{color:#14110E}
.pill.gold:hover span,#hero .pill.gold:hover span,
.pill.gold:focus-visible span,#hero .pill.gold:focus-visible span{color:var(--ground)}
.lbl-q{font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--faint)}
#prog{position:fixed;top:0;left:0;height:2px;width:100%;transform:scaleX(0);transform-origin:0 50%;
  background:var(--gold);z-index:120}

/* nav */
#nav{position:fixed;top:0;left:0;right:0;z-index:100;border-bottom:1px solid transparent;
  transition:background .5s,border-color .5s}
#nav.solid{background:color-mix(in srgb,var(--ground) 90%,transparent);backdrop-filter:blur(14px);
  border-bottom-color:var(--line)}
.nav-in{display:flex;align-items:center;gap:28px;padding-block:14px}
.mark{display:flex;align-items:center;gap:13px;flex:1;min-width:0}
/* The logo is a fine gold line-mark on transparency: at 40px over the hero video
   it read as a smudge. A pale disc plus a gold ring gives it a fixed ground and
   an edge, so it holds up on the video, on paper, and in dark surroundings. */
.mark .badge{flex:none;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 50% 42%,#FFFEFC 0%,var(--paper) 72%,#F4EEE2 100%);
  border:1px solid color-mix(in srgb,var(--gold) 52%,transparent);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--gold) 11%,transparent),
             0 4px 14px -5px rgba(26,23,20,.34);
  transition:transform .5s cubic-bezier(.19,1,.22,1),box-shadow .5s ease,border-color .5s ease}
.mark img{width:38px;height:38px;display:block}
.mark:hover .badge,.mark:focus-visible .badge{transform:scale(1.06) rotate(-3deg);
  border-color:var(--gold);
  box-shadow:0 0 0 5px color-mix(in srgb,var(--gold) 20%,transparent),
             0 7px 20px -6px rgba(26,23,20,.4)}
.mark:focus-visible{outline:none}
@media(max-width:560px){
  .mark{gap:10px}
  .mark .badge{width:44px;height:44px;box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 11%,transparent),
             0 3px 10px -4px rgba(26,23,20,.32)}
  .mark img{width:32px;height:32px}
}
@media(prefers-reduced-motion:reduce){.mark .badge{transition:none}
  .mark:hover .badge,.mark:focus-visible .badge{transform:none}}
.mark b{font-family:var(--display);font-size:19px;font-weight:400;display:block;line-height:1.1}
.mark i{font-style:normal;font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:#4A443B}
.nav-links{display:flex;gap:28px}
.nav-links a{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#3A332B;
  font-weight:400;position:relative;padding-block:6px}
#nav:not(.solid) .nav-links a,#nav:not(.solid) .mark b,#nav:not(.solid) .mark i{
  text-shadow:0 0 16px rgba(253,252,250,.96),0 1px 0 rgba(253,252,250,.9)}
#nav:not(.solid) .nav-links a{color:#2B251E}
#nav:not(.solid) .mark i{color:#4A443B}
#nav:not(.solid)::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;
  background:linear-gradient(180deg,rgba(253,252,250,.82) 0%,rgba(253,252,250,.42) 62%,
    rgba(253,252,250,0) 100%)}
#nav:not(.solid) .pill{border-color:#3A332B;
  background:color-mix(in srgb,var(--ground) 72%,transparent);backdrop-filter:blur(5px)}
.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--gold);
  transition:right .45s cubic-bezier(.19,1,.22,1)}
.nav-links a:hover{color:var(--ink)}.nav-links a:hover::after{right:0}
@media(max-width:1000px){.nav-links{display:none}}
.pill{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--ink);padding:11px 22px;
  font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;position:relative;overflow:hidden;
  isolation:isolate;flex:none;font-family:var(--sans);cursor:pointer;background:transparent;color:var(--ink)}
.pill span{position:relative;z-index:2;transition:color .5s}
.pill::before{content:"";position:absolute;inset:0;background:var(--ink);z-index:1;transform:translateY(101%);
  transition:transform .55s cubic-bezier(.19,1,.22,1)}
.pill:hover::before{transform:translateY(0)}
.pill:hover span{color:var(--ground)}
.pill.gold{border-color:var(--gold);background:var(--gold)}

/* hero */
#hero{position:relative;min-height:clamp(560px,88vh,940px);display:flex;align-items:center;
  overflow:hidden;background:var(--veil)}
#heroVideo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.86) contrast(1.03);transform:scale(1.02)}
#glcanvas{position:absolute;inset:0;width:100%;height:100%;mix-blend-mode:soft-light;opacity:.78}
#hero .scrim{position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(100deg,rgba(253,252,250,.94) 0%,rgba(253,252,250,.84) 32%,
      rgba(253,252,250,.34) 60%,rgba(250,242,224,.16) 100%),
    linear-gradient(180deg,rgba(253,252,250,.72) 0%,rgba(253,252,250,0) 26%,
      rgba(253,252,250,0) 62%,rgba(253,252,250,.88) 100%)}
@media(max-width:900px){
  #heroPhoto{object-position:42% 62%}
  #hero .scrim{background:linear-gradient(180deg,rgba(253,252,250,.90) 0%,rgba(253,252,250,.80) 46%,
    rgba(253,252,250,.94) 100%)}
}
.hero-in{position:relative;z-index:3;width:100%;padding-top:clamp(112px,15vh,150px);
  padding-bottom:clamp(36px,5vh,64px);display:grid;grid-template-columns:minmax(0,1fr) clamp(280px,31vw,420px);
  gap:clamp(28px,5vw,70px);align-items:center}
.hero-in{grid-template-columns:minmax(0,1fr)}
.hero-copy{max-width:min(100%,760px);position:relative}
.hero-copy::before{content:"";position:absolute;inset:-46px -90px -34px -44px;z-index:-1;
  pointer-events:none;filter:blur(3px);
  background:radial-gradient(118% 104% at 20% 52%,rgba(253,252,250,.95) 0%,
    rgba(253,252,250,.86) 42%,rgba(253,252,250,.46) 68%,rgba(253,252,250,0) 84%)}
@media(max-width:900px){.hero-in{grid-template-columns:1fr;gap:34px}}
.hero-in h1{font-size:clamp(48px,8.6vw,112px);line-height:1.02;letter-spacing:-.03em;max-width:11ch;
  color:#14110E;text-shadow:0 0 34px rgba(253,252,250,.92),0 1px 0 rgba(253,252,250,.9)}
.hero-in h1 em{color:#6F4E10}
.hero-in h1 em{font-style:italic;color:var(--gold-ink)}
.hero-lede{max-width:42ch;font-size:16.5px;color:#3A332B;font-weight:400;margin-top:26px;
  line-height:1.72;text-shadow:0 0 18px rgba(253,252,250,.95)}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.hero-credit{margin-top:30px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:#6A6156;font-weight:500;text-shadow:0 0 14px rgba(253,252,250,.95)}
.rating-line{margin-top:12px;font-size:13.5px;color:#463E34;font-weight:400;
  text-shadow:0 0 14px rgba(253,252,250,.95)}
.rating-line>span{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rating-line b{font-family:var(--display);font-size:26px;font-weight:400;color:var(--ink);line-height:1}
.rating-line a{border-bottom:1px solid var(--line-2);padding-bottom:1px}
.rating-line a:hover{border-bottom-color:var(--gold)}
.rv{display:block;overflow:hidden;padding-bottom:.34em;margin-bottom:-.34em}
.rv>*{display:block}

/* trust image — the two consultants */
.trust{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.4vw,18px);align-items:start}
.trust figure{margin:0;background:var(--paper);border:1px solid var(--line);padding:7px;
  box-shadow:0 18px 46px -28px rgba(26,23,20,.45)}
.trust figure img{width:100%;aspect-ratio:4/5;object-fit:cover}
.trust .f1 img{object-position:34% 16%}
.trust .f2 img{object-position:50% 14%}
.trust .f2{margin-top:26%}
.trust figcaption{padding:9px 3px 2px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);line-height:1.5}
.trust figcaption b{display:block;font-family:var(--display);font-size:15px;font-weight:400;
  letter-spacing:.01em;text-transform:none;color:var(--ink)}
@media(max-width:900px){.trust{max-width:480px}}

/* sections */
section{padding-block:clamp(64px,10vh,124px)}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:40px;align-items:end;
  margin-bottom:clamp(36px,6vh,70px)}
@media(max-width:860px){.sec-head{grid-template-columns:1fr;gap:16px}}
.sec-head h2{font-size:clamp(30px,5vw,68px);letter-spacing:-.025em;max-width:14ch}
.sec-head .note{font-size:15.5px;color:#4A443B;max-width:46ch;line-height:1.72}
.big{font-size:clamp(28px,4.6vw,60px);line-height:1.12;letter-spacing:-.02em;max-width:19ch}
.big em{font-style:italic;color:var(--gold-ink)}
.word{display:inline-block}
.sp{display:inline;white-space:pre-wrap}
.meta-row{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;margin-top:clamp(40px,6vh,72px);
  padding-top:32px;border-top:1px solid var(--line)}
@media(max-width:760px){.meta-row{grid-template-columns:1fr;gap:24px}}
.meta-row h4{font-size:22px;margin-bottom:8px}
.meta-row p{font-size:14.5px;color:#4A443B;line-height:1.62;max-width:34ch}

/* doctors */
.docs{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,60px)}
@media(max-width:860px){.docs{grid-template-columns:1fr;gap:48px}}
.doc-photo{background:var(--paper);border:1px solid var(--line);padding:9px}
.doc-photo img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 32%}
.doc-body{padding-top:24px;border-top:1px solid var(--line);margin-top:24px}
.doc-body h3{font-size:clamp(27px,3.3vw,40px)}
.doc-body .q{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-ink);
  margin-top:10px;font-weight:500}
.doc-body .r{font-size:15px;color:var(--muted);margin-top:3px}
.doc-body .s{font-size:14.5px;color:#4A443B;margin-top:14px;line-height:1.7;max-width:42ch}
/* one qualification per row, institution in its own column, so a long college name
   wraps underneath itself instead of falling back to the left margin */
.doc-body .train{font-size:12.5px;color:var(--gold-ink);margin-top:12px;line-height:1.6;
  max-width:40ch;padding-top:12px;border-top:1px solid var(--line);
  display:grid;grid-template-columns:auto 1fr;column-gap:14px;row-gap:2px;margin-bottom:0}
.doc-body .train dt{font-weight:500;letter-spacing:.06em;color:var(--gold-ink);
  font-variant-numeric:tabular-nums}
.doc-body .train dd{margin:0;color:var(--gold-ink)}
@media(max-width:420px){.doc-body .train{column-gap:10px}}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px;padding:0;list-style:none}
.chips li{font-size:11.5px;border:1px solid var(--line-2);padding:5px 11px;color:var(--muted)}

/* treatments */
#services{background:var(--veil);border-block:1px solid var(--line)}
.svc-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,6vw,86px)}
@media(max-width:900px){.svc-grid{grid-template-columns:1fr;gap:36px}}
@media(min-width:901px){.svc-sticky{position:sticky;top:clamp(96px,15vh,170px);align-self:start}}
.svc-sticky h2{font-size:clamp(30px,4.4vw,58px);letter-spacing:-.025em;max-width:11ch}
.svc-sticky .note{font-size:15px;color:var(--muted);margin-top:18px;max-width:36ch;line-height:1.72}
.svc-count{margin-top:26px;font-family:var(--display);font-size:58px;line-height:1;color:var(--gold);
  font-variant-numeric:tabular-nums}
.svc-count+span{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.hint{margin-top:22px;font-size:12.5px;color:var(--faint);display:flex;align-items:center;gap:9px}
.hint::before{content:"";width:22px;height:1px;background:var(--gold)}
.svc-block{padding-block:26px;border-bottom:1px solid var(--line-2)}
.svc-block:first-child{border-top:1px solid var(--line-2)}
.svc-block .top{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:10px}
.svc-block h3{font-size:clamp(23px,2.8vw,32px)}
.svc-block .who{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);flex:none}
.svc-list{margin:0;padding:0;list-style:none;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));column-gap:24px}
.tx{appearance:none;background:none;border:0;font:inherit;color:#4A443B;text-align:left;
  padding:6px 0 6px 15px;position:relative;cursor:pointer;width:100%;transition:color .25s}
.tx::before{content:"";position:absolute;left:0;top:15px;width:5px;height:1px;background:var(--gold);
  transition:width .3s,left .3s}
.tx:hover,.tx[aria-expanded="true"]{color:var(--ink)}
.tx:hover::before,.tx[aria-expanded="true"]::before{width:10px}
@keyframes txSweep{
  0%,86%,100%{width:5px;background:var(--gold);opacity:.75}
  90%{width:16px;background:var(--gold);opacity:1}
  94%{width:9px;opacity:.9}}
@keyframes txSweepText{
  0%,86%,100%{color:#4A443B}
  90%{color:var(--ink)}
  94%{color:#3C362E}}
.tx::before{animation:txSweep 9s ease-in-out infinite}
.tx{animation:txSweepText 9s ease-in-out infinite}
.tx:hover,.tx:hover::before,.tx[aria-expanded="true"],.tx[aria-expanded="true"]::before{
  animation:none}
.hint{position:relative}
.hint::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;
  background:linear-gradient(90deg,var(--gold),transparent);transform-origin:0 50%;
  animation:hintSweep 9s ease-in-out infinite}
@keyframes hintSweep{0%,84%,100%{transform:scaleX(0);opacity:0}
  90%{transform:scaleX(1);opacity:.9}97%{transform:scaleX(1);opacity:0}}
/* mini card */
/* Position lives in --mx/--my and is folded into the same transform as the
   entrance, so sliding between labels animates on the compositor rather than
   jumping through left/top. */
#mini{position:fixed;left:0;top:0;--mx:0px;--my:0px;
  z-index:200;width:336px;background:var(--paper);border:1px solid var(--line-2);
  box-shadow:0 30px 70px -30px rgba(26,23,20,.5);opacity:0;visibility:hidden;pointer-events:none;
  will-change:transform,opacity;
  transform:translate3d(var(--mx),var(--my),0) translateY(14px) scale(.965);
  clip-path:inset(0 0 100% 0);
  transition:opacity .28s ease,
    transform .46s cubic-bezier(.22,1,.28,1),
    clip-path .5s cubic-bezier(.22,1,.28,1),
    visibility .28s}
#mini.on{opacity:1;visibility:visible;pointer-events:auto;
  transform:translate3d(var(--mx),var(--my),0);clip-path:inset(0 0 0% 0)}
#mini::before{content:'';position:absolute;top:0;left:0;height:2px;width:100%;background:var(--gold);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .62s cubic-bezier(.19,1,.22,1) .06s;z-index:3}
#mini.on::before{transform:scaleX(1)}
@keyframes miniZoom{from{transform:scale(1.14)}to{transform:scale(1)}}
@keyframes miniRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
#mini.on .ph img{animation:miniZoom .95s cubic-bezier(.19,1,.22,1) both}
#mini.on h5{animation:miniRise .5s cubic-bezier(.19,1,.22,1) .10s both}
#mini.on p{animation:miniRise .5s cubic-bezier(.19,1,.22,1) .17s both}
#mini.on .tag{animation:miniRise .5s cubic-bezier(.19,1,.22,1) .24s both}
/* label-to-label swap: shorter, no stagger, so it reads as a content change */
#mini.on.swap .ph img{animation:miniZoom .5s cubic-bezier(.22,1,.28,1) both}
#mini.on.swap h5{animation:miniRise .3s ease both}
#mini.on.swap p{animation:miniRise .3s ease .04s both}
#mini.on.swap .tag{animation:miniRise .3s ease .08s both}
#mini.on.swap::before{transition:none}
@media(prefers-reduced-motion:reduce){
  #mini,#mini.on{transition:opacity .15s ease}
  #mini.on .ph img,#mini.on h5,#mini.on p,#mini.on .tag,
  #mini.on.swap .ph img,#mini.on.swap h5,#mini.on.swap p,#mini.on.swap .tag{animation:none}
}
#mini .ph{aspect-ratio:4/3;background:var(--veil);overflow:hidden;position:relative}
#mini .ph img{width:100%;height:100%;object-fit:cover}
#mini .ph .none{position:absolute;inset:0;display:grid;place-items:center;text-align:center;
  font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);padding:16px;line-height:1.8}
#mini .tx-body{padding:17px 20px 19px}
#mini h5{margin:0 0 7px;font-family:var(--display);font-size:24px;font-weight:400;line-height:1.12}
#mini p{font-size:14px;line-height:1.62;color:#4A443B}
#mini .tag{display:inline-block;margin-top:10px;font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold-ink)}
#mini .tag.soft{color:var(--faint);letter-spacing:.16em;text-transform:none;font-size:10.5px;
  font-style:italic}
#mini.illus .ph img{object-fit:contain;padding:6px}
#mini.illus .ph{background:var(--veil)}

/* quote */
#approach{text-align:center;padding-block:clamp(48px,6.5vh,88px) clamp(30px,3.6vh,52px)}
#approach blockquote{margin:0 auto;max-width:22ch;font-family:var(--display);
  font-size:clamp(32px,6.2vw,86px);line-height:1.04;letter-spacing:-.03em}
#approach blockquote em{font-style:italic;color:var(--gold-ink)}
#approach .src{margin-top:24px;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--faint)}

/* results gallery */
.gal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,26px);
  align-items:start}
@media(max-width:980px){.gal{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.gal{grid-template-columns:minmax(0,1fr);max-width:420px;margin-inline:auto}}
.flip{perspective:1500px;outline-offset:6px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.flip-in{position:relative;aspect-ratio:1/1;transform-style:preserve-3d;
  transition:transform .9s cubic-bezier(.19,1,.22,1)}
@keyframes flipHint{0%,82%,100%{rotate:y 0deg}88%{rotate:y -15deg}94%{rotate:y -4deg}}
@keyframes cornerPulse{0%,70%,100%{opacity:.30;transform:translateY(0)}
  80%{opacity:.95;transform:translateY(-2px)}}
.flip-in{animation:flipHint 8s ease-in-out infinite}
.gal .flip:nth-child(2) .flip-in{animation-delay:1.1s}
.gal .flip:nth-child(3) .flip-in{animation-delay:2.2s}
.gal .flip:nth-child(4) .flip-in{animation-delay:3.3s}
.gal .flip:nth-child(5) .flip-in{animation-delay:4.4s}
.gal .flip:nth-child(6) .flip-in{animation-delay:5.5s}
.flip:hover .flip-in,.flip:focus-visible .flip-in,.flip:focus-within .flip-in,
.flip.tapped .flip-in{animation:none;rotate:y 0deg;transform:rotateY(180deg)}
.face.front .corner{position:absolute;top:14px;right:14px;width:28px;height:28px;
  border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;
  animation:cornerPulse 8s ease-in-out infinite;color:var(--gold-ink);font-size:13px;line-height:1}
.flip:hover .face.front .corner{animation:none;opacity:1}
.gal .flip:nth-child(2) .corner{animation-delay:1.1s}
.gal .flip:nth-child(3) .corner{animation-delay:2.2s}
.gal .flip:nth-child(4) .corner{animation-delay:3.3s}
.gal .flip:nth-child(5) .corner{animation-delay:4.4s}
.gal .flip:nth-child(6) .corner{animation-delay:5.5s}
.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:var(--paper);border:1px solid var(--line);overflow:hidden}
.face.front{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  background:var(--veil);text-align:center;padding:26px;transition:border-color .5s}
.flip:hover .face.front{border-color:var(--line-2)}
.face.front .ring{width:54px;height:54px;border:1px solid var(--gold);border-radius:50%;
  position:relative;margin-bottom:6px;transition:transform .7s cubic-bezier(.19,1,.22,1)}
.face.front .ring::after{content:"";position:absolute;inset:8px;border:1px solid var(--line-2);
  border-radius:50%}
.face.front .ring::before{content:"";position:absolute;left:50%;top:50%;width:13px;height:1px;
  background:var(--gold-ink);transform:translate(-50%,-50%)}
.flip:hover .face.front .ring{transform:rotate(90deg) scale(1.08)}
.face.front h4{font-family:var(--display);font-size:clamp(21px,2.4vw,27px);font-weight:400;
  line-height:1.12;color:var(--ink)}
.face.front .site{font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--faint)}
.face.front .hint{margin-top:14px;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold-ink);border-bottom:1px solid var(--gold);padding-bottom:3px}
.face.back{transform:rotateY(180deg);padding:0}
/* grid-template-rows:1fr gives the row a definite height. Without it the figures
   size to content, height:100% on the img resolves to auto, and each photo renders
   at its own aspect ratio instead of filling the card. */
.ba{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;gap:1px;height:100%;
  background:var(--line-2)}   /* the 1px gap is the divider */
.ba figure{margin:0;position:relative;overflow:hidden;background:var(--veil);min-height:0;min-width:0}
.ba figure img{display:block;width:100%;height:100%;object-fit:cover}
.ba figcaption{position:absolute;left:7px;bottom:7px;font-size:8.5px;letter-spacing:.18em;
  text-transform:uppercase;padding:4px 8px;background:color-mix(in srgb,var(--paper) 86%,transparent);
  backdrop-filter:blur(6px);color:var(--ink);border:1px solid var(--line-2)}
.ba figure:last-child figcaption{background:color-mix(in srgb,var(--ink) 84%,transparent);
  color:var(--ground);border-color:transparent}
.flip-cap{padding:13px 4px 3px;font-size:12.5px;color:var(--muted);display:flex;
  justify-content:space-between;gap:12px;align-items:center;min-height:48px}
.flip-cap b{font-weight:400;color:var(--ink);font-family:var(--display);font-size:18px}
.flip-cap span{font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);flex:none}
@media(hover:none){.face.front .hint::after{content:" · tap"}}

/* video */
.filmstage{position:relative;aspect-ratio:16/9;min-height:360px;max-height:72vh;overflow:hidden;
  border:1px solid var(--line);background:var(--veil);display:grid;place-items:center}
.filmstage .ambient{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.8) contrast(1.02)}
.film-scrim{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 50%,rgba(253,252,250,.30) 0%,rgba(253,252,250,.72) 62%,
    rgba(253,252,250,.90) 100%)}
.film{position:relative;z-index:2;margin:0;width:min(260px,54vw)}
.film video{width:100%;aspect-ratio:404/718;object-fit:cover;background:var(--ink);
  border:7px solid var(--paper);box-shadow:0 30px 70px -28px rgba(26,23,20,.55);display:block}
.film figcaption{margin-top:14px;text-align:center;font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink);display:inline-block;padding:7px 14px;
  background:color-mix(in srgb,var(--paper) 84%,transparent);backdrop-filter:blur(6px);
  border:1px solid var(--line-2);width:100%;box-sizing:border-box}
@media(max-width:640px){.filmstage{aspect-ratio:4/5;min-height:0}.film{width:min(230px,62vw)}}

/* journey */
.jrn{border-top:1px solid var(--line)}
.jrn-row{display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,1.15fr);gap:clamp(14px,3vw,40px);
  padding-block:24px;border-bottom:1px solid var(--line);align-items:baseline;transition:background .4s}
.jrn-row:hover{background:var(--veil)}
@media(max-width:760px){.jrn-row{grid-template-columns:48px 1fr}.jrn-row p{grid-column:2}}
.jrn-row .n{font-family:var(--display);font-size:15px;color:var(--gold-ink);font-variant-numeric:tabular-nums;
  letter-spacing:.1em}
.jrn-row h4{font-size:clamp(20px,2.3vw,28px)}
.jrn-row p{font-size:14.5px;color:#4A443B;line-height:1.68;max-width:44ch}

/* reviews */
.stars{display:flex;gap:4px;color:var(--gold);font-size:17px;letter-spacing:.1em}
/* ---- review ring ----
   Cards sit on a circle: the middle three are upright and readable, the rest recede
   in depth and blur. Everything is driven by one transform per card so moving
   around the ring is a single compositor animation. */
.revring{position:relative;display:flex;align-items:center;justify-content:center;
  gap:10px;margin-top:4px;
  /* clip the far side of the ring. The clip lives here, not on .ring-stage:
     any overflow value on the stage would flatten its preserve-3d. Vertical
     padding keeps the spotlight card's shadow from being cut. */
  overflow:hidden;padding-block:34px;margin-block:-30px 0}
.ring-stage{position:relative;flex:1;min-width:0;perspective:1700px;
  transform-style:preserve-3d;height:var(--ring-h,318px);outline-offset:8px}
.ring-stage:focus-visible{outline:2px solid var(--gold)}
.rev{position:absolute;left:50%;top:0;width:var(--ring-cw,332px);height:100%;
  margin-left:calc(var(--ring-cw,332px) / -2);
  background:var(--paper);border:1px solid var(--line);
  padding:26px 24px;display:flex;flex-direction:column;gap:12px;
  transform-origin:50% 50%;backface-visibility:hidden;
  transition:transform .72s cubic-bezier(.22,1,.28,1),
             opacity .52s ease,
             filter .52s ease,
             box-shadow .52s ease;
  will-change:transform,opacity}
.rev.spot{box-shadow:0 26px 54px -34px rgba(26,23,20,.44)}
.rev:not(.spot){pointer-events:none}
.rev.lead{border-color:var(--line-2)}
/* No -webkit-line-clamp here: as a flex item the display value is blockified, so
   the clamp inserted an ellipsis mid-card without actually clipping. The card has
   a fixed height, so overflow:hidden does the clipping and a short mask fades the
   cut instead of slicing a line in half. */
.rev .body{font-size:14.5px;color:#433D35;line-height:1.7;flex:1;min-height:0;font-style:italic;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 26px),transparent 100%);
          mask-image:linear-gradient(to bottom,#000 calc(100% - 26px),transparent 100%)}
.rev .who{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
  line-height:1.55;text-wrap:balance}

.ring-nav{flex:none;width:44px;height:44px;border:1px solid var(--line-2);background:var(--paper);
  color:var(--ink);font-size:23px;line-height:1;cursor:pointer;display:grid;place-items:center;
  border-radius:50%;transition:background .25s,border-color .25s,transform .25s;z-index:60}
.ring-nav:hover{background:var(--veil);border-color:var(--gold);transform:scale(1.06)}
.ring-nav:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

.ring-foot{display:flex;flex-direction:column;align-items:center;gap:9px;margin-top:22px}
/* The dot is 7px but the control is 24px: WCAG 2.2 asks for a 24x24 target and
   a 7px tap area is genuinely hard to hit on a phone. */
.ring-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:0}
.ring-dots button{width:24px;height:24px;border:0;background:none;padding:0;cursor:pointer;
  display:grid;place-items:center;border-radius:50%}
.ring-dots button::before{content:"";width:7px;height:7px;border-radius:50%;
  border:1px solid var(--line-2);
  transition:background .25s,border-color .25s,transform .25s}
.ring-dots button[aria-selected="true"]::before{background:var(--gold);border-color:var(--gold);
  transform:scale(1.25)}
.ring-dots button:hover::before{border-color:var(--gold)}
.ring-dots button:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.ring-live{margin:0;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}

@media(max-width:1100px){.ring-stage{--ring-cw:300px}}
@media(max-width:860px){.revring{gap:6px}.ring-stage{--ring-cw:264px;--ring-h:340px}}
@media(max-width:560px){.ring-nav{width:38px;height:38px;font-size:20px}
  .ring-stage{--ring-cw:216px;--ring-h:368px}.rev{padding:22px 18px}
  .rev .body{font-size:13.5px}}

/* no JS: fall back to a plain readable column, nothing hidden */
.no-ring .ring-stage{height:auto;perspective:none}
.no-ring .rev{position:static;width:auto;margin:0 0 1px;height:auto;opacity:1;filter:none;transform:none}
.no-ring .ring-nav,.no-ring .ring-foot{display:none}

@media(prefers-reduced-motion:reduce){
  .rev{transition:opacity .2s ease}
}
.rev .who{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
  line-height:1.55;text-wrap:balance}
.rev-top{display:flex;align-items:center;gap:20px;margin-bottom:26px}
.rev-score{font-family:var(--display);font-size:clamp(46px,6vw,70px);line-height:.9;color:var(--gold)}
.rev-meta{font-size:12.5px;color:var(--muted);margin-top:4px}

/* flags */
.consent{margin-top:18px;font-size:11.5px;line-height:1.65;color:var(--faint);max-width:78ch;
  letter-spacing:.01em}
.flagbox{border:1px dashed var(--gold);background:var(--gold-wash);padding:clamp(22px,3.4vw,38px)}
.flagbox p{font-size:14.5px;line-height:1.72;color:var(--gold-ink);max-width:66ch}
.flagbox p+p{margin-top:11px}
.flagbox strong{font-weight:500}
.flagbox code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;background:color-mix(in srgb,var(--gold) 16%,transparent);padding:1px 5px}
.flag{display:inline-flex;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-ink);
  border:1px dashed var(--gold);padding:3px 8px;background:var(--gold-wash)}

/* find/book */
#find{background:var(--veil);border-block:1px solid var(--line)}
.find-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,66px)}
@media(max-width:860px){.find-grid{grid-template-columns:1fr;gap:40px}}
.dl{display:grid;grid-template-columns:108px 1fr;gap:12px 18px;margin:0;font-size:15px}
.dl dt{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);padding-top:5px}
.dl dd{margin:0;line-height:1.55}
.hours{width:100%;border-collapse:collapse;margin-top:28px;font-size:14.5px}
.hours caption{text-align:left;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);padding-bottom:10px}
.hours th{text-align:left;font-weight:400;color:var(--muted);padding:9px 0;
  border-top:1px solid var(--line)}
.hours td{text-align:right;padding:9px 0;border-top:1px solid var(--line);
  font-variant-numeric:tabular-nums;color:var(--ink)}
.hours td span{display:block;color:var(--muted)}
.hours .shut td{color:var(--faint)}
.hours-note{margin-top:12px;font-size:11.5px;color:var(--faint)}
.dl .ln{border-bottom:1px solid var(--line-2)}
.dl .ln:hover{border-bottom-color:var(--gold)}
.field{display:grid;gap:6px;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}
.field input,.field select,.field textarea{font:inherit;font-family:var(--sans);font-size:15px;
  font-weight:300;letter-spacing:normal;text-transform:none;color:var(--ink);padding:11px 0;
  border:0;border-bottom:1px solid var(--line-2);background:transparent;
  transition:border-color .35s;min-height:47px;box-sizing:border-box}
.field textarea{min-height:0}
.field input:focus,.field select:focus,.field textarea:focus{border-bottom-color:var(--gold);outline:none}
.form{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.form .actions{grid-column:1/-1;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.f-hint{grid-column:1/-1;font-size:12.5px;color:var(--faint);line-height:1.6;max-width:52ch}
.f-warn{grid-column:1/-1;font-size:13px;color:var(--gold-ink);background:var(--gold-wash);
  border:1px solid var(--gold);padding:11px 14px;line-height:1.55}
#waSend[aria-disabled="true"]{opacity:.45;pointer-events:none}
.datefield{position:relative;display:grid;gap:6px;font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--faint);align-content:start}
.field{align-content:start}
.daterow{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line-2);
  transition:border-color .35s;min-height:47px}
.daterow:focus-within{border-bottom-color:var(--gold)}
.daterow input{flex:1;font:inherit;font-family:var(--sans);font-size:15px;font-weight:300;
  letter-spacing:normal;text-transform:none;color:var(--ink);padding:11px 0;border:0;
  background:transparent;min-height:45px;box-sizing:border-box}
.daterow input:focus{outline:none}
.daterow button{background:none;border:0;cursor:pointer;font-size:16px;line-height:1;
  padding:6px;color:var(--gold-ink);opacity:.8}
.daterow button:hover{opacity:1}
.daterow-help{font-size:10px;letter-spacing:.12em;color:var(--faint);text-transform:none;
  position:absolute;top:100%;margin-top:5px}
.cal{position:absolute;z-index:60;top:calc(100% + 8px);left:0;width:min(320px,90vw);
  background:var(--paper);border:1px solid var(--line-2);padding:16px;
  box-shadow:0 28px 64px -30px rgba(26,23,20,.5);text-transform:none;letter-spacing:normal}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-head span{font-family:var(--display);font-size:18px;color:var(--ink)}
.cal-nav{background:none;border:1px solid var(--line-2);width:28px;height:28px;cursor:pointer;
  color:var(--ink);font-size:15px;line-height:1}
.cal-nav:hover{border-color:var(--gold);color:var(--gold-ink)}
.cal-nav[disabled]{opacity:.3;cursor:default}
.cal-dow,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-dow span{text-align:center;font-size:9.5px;letter-spacing:.1em;color:var(--faint);
  padding-bottom:6px;text-transform:uppercase}
.cal-grid button{aspect-ratio:1;border:1px solid transparent;background:var(--veil);
  font:inherit;font-size:13px;color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums}
.cal-grid button:hover{border-color:var(--gold);background:var(--gold-wash)}
.cal-grid button[disabled]{background:transparent;color:var(--faint);cursor:not-allowed;
  text-decoration:line-through;text-decoration-color:var(--line-2)}
.cal-grid button[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:#14110E}
.cal-grid .pad{visibility:hidden}
.cal-legend{margin-top:12px;font-size:10.5px;color:var(--faint);display:flex;gap:14px;
  align-items:center;text-transform:none;letter-spacing:.02em}
.cal-legend i{width:11px;height:11px;display:inline-block;margin-right:5px;vertical-align:-1px}
.cal-legend .ok{background:var(--veil);border:1px solid var(--line-2)}
.cal-legend .no{background:transparent;border:1px dashed var(--line-2)}
@media(max-width:560px){.form{grid-template-columns:1fr}}

footer{padding-block:clamp(56px,8vh,104px) 32px}
.foot{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:40px}
@media(max-width:760px){.foot{grid-template-columns:1fr;gap:28px}}
.foot h5{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--faint);margin:0 0 14px;font-weight:400}
.foot ul{margin:0;padding:0;list-style:none;display:grid;gap:9px;font-size:14.5px;color:var(--muted)}
.foot a:hover{color:var(--gold-ink)}
.disc{margin-top:40px;padding-top:22px;border-top:1px solid var(--line);font-size:12px;color:var(--faint);
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- hero all-ages emphasis ---- */
/* typographic emphasis rather than a highlight box, which read as a link artifact */
.hero-lede .allages{font-weight:500;color:var(--ink);font-style:normal;
  font-variant:all-small-caps;letter-spacing:.07em}

/* ---- highlighted expertise chip ---- */
.chips li.hi{border-color:color-mix(in srgb,var(--gold) 55%,var(--line-2));
  color:var(--ink);background:color-mix(in srgb,var(--gold) 9%,transparent)}

/* ---- wordmark ---- */
.mark b{font-size:24px;font-weight:500;letter-spacing:.005em}
.mark i{font-size:10px;letter-spacing:.235em}
@media(max-width:560px){.mark b{font-size:21px}.mark i{font-size:9px;letter-spacing:.2em}}

/* ---- "more cases" button on a flipped card ---- */
.more-btn{position:absolute;right:8px;top:8px;transform:translateY(-4px);
  display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:0;cursor:pointer;
  font-family:var(--sans);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
  color:#14110E;background:var(--gold);opacity:0;pointer-events:none;
  transition:opacity .3s ease .12s,transform .38s cubic-bezier(.19,1,.22,1) .12s;z-index:3}
.more-btn span{font-size:12px;line-height:1;transition:transform .3s ease}
.more-btn:hover span{transform:translateX(3px)}
.flip:hover .more-btn,.flip:focus-within .more-btn,.flip.tapped .more-btn{
  opacity:1;pointer-events:auto;transform:translateY(0)}
.more-btn:focus-visible{outline:2px solid #14110E;outline-offset:2px}

/* ---- hair gallery overlay ---- */
#hairgal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px}
#hairgal[hidden]{display:none}
.hg-scrim{position:absolute;inset:0;background:color-mix(in srgb,#14110E 72%,transparent);
  backdrop-filter:blur(3px);animation:hgFade .3s ease both}
@keyframes hgFade{from{opacity:0}to{opacity:1}}
.hg-box{position:relative;width:min(640px,100%);max-width:100%;min-width:0;
  max-height:calc(100dvh - 40px);
  background:var(--paper);border:1px solid var(--line-2);display:flex;flex-direction:column;
  animation:hgRise .42s cubic-bezier(.19,1,.22,1) both}
@keyframes hgRise{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.hg-head{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:15px 16px 13px;border-bottom:1px solid var(--line)}
.hg-head b{font-family:var(--display);font-size:20px;font-weight:400;color:var(--ink)}
.hg-count{display:block;font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--faint);margin-top:3px}
.hg-x{border:0;background:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer;
  padding:0 4px;transition:color .2s}
.hg-x:hover{color:var(--ink)}
.hg-track{display:flex;min-width:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
  -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.hg-track::-webkit-scrollbar{display:none}
.hg-track:focus-visible{outline:none}
.hg-box:focus{outline:none}
.hg-x:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.hg-slide{flex:0 0 100%;min-width:0;scroll-snap-align:center;padding:16px;
  overflow-y:auto;scrollbar-width:thin}   /* nothing clips on a short viewport */
.hg-pair{display:grid;gap:8px;grid-template-columns:1fr 1fr;min-width:0}
.hg-pair.single{grid-template-columns:1fr;max-width:calc(50% - 4px);margin:0 auto}
.hg-pair figure{margin:0;display:flex;flex-direction:column;min-width:0}
.hg-pair .imgbox{display:block;aspect-ratio:31/50;background:var(--veil);overflow:hidden}
.hg-pair img{width:100%;height:100%;object-fit:cover;display:block}
/* every case image is exported at 31/50, so cover crops nothing at all.
   The watermark is centred along the bottom because the flip card's narrower
   figures do crop ~12% off each side. */
/* the caption sits BELOW the frame, so it never covers the watermark */
.hg-pair figcaption{padding:6px 8px;overflow-wrap:anywhere;min-height:2.9em;
  display:flex;align-items:center;font-size:8.5px;letter-spacing:.13em;line-height:1.45;
  text-transform:uppercase;color:#FBF8F2;background:var(--ink)}
.hg-meta{margin:13px 2px 0}
.hg-meta h5{font-family:var(--display);font-size:19px;font-weight:400;color:var(--ink);margin:0}
.hg-meta p{font-size:13.5px;color:var(--muted);margin:5px 0 0;line-height:1.55}
.hg-tag{display:inline-block;margin-top:9px;font-size:9.5px;letter-spacing:.17em;
  text-transform:uppercase;color:var(--faint);border:1px solid var(--line-2);padding:4px 9px}
.hg-nav{position:absolute;top:132px;transform:none;width:38px;height:38px;
  border:1px solid var(--line-2);background:var(--paper);color:var(--ink);font-size:21px;
  line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .2s,opacity .2s}
.hg-nav:hover{background:var(--veil)}
.hg-nav.prev{left:-19px}.hg-nav.next{right:-19px}
.hg-nav[disabled]{opacity:.28;cursor:default}
.hg-dots{display:flex;justify-content:center;gap:0;padding:0 0 8px}
.hg-dots button{width:24px;height:24px;border:0;background:none;padding:0;cursor:pointer;
  display:grid;place-items:center;border-radius:50%}
.hg-dots button::before{content:"";width:7px;height:7px;border-radius:50%;
  border:1px solid var(--line-2);transition:background .2s,border-color .2s}
.hg-dots button[aria-selected="true"]::before{background:var(--gold);border-color:var(--gold)}
.hg-dots button:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.hg-foot{margin:0;padding:0 16px 15px;font-size:11px;color:var(--faint);line-height:1.5;
  text-align:center;border-top:1px solid var(--line);padding-top:12px}
/* the pair is width-driven, so on a short viewport the only way to keep the
   whole slide on screen is to narrow the modal */
@media(max-height:830px){ .hg-box{width:min(560px,100%)} }
@media(max-height:710px){ .hg-box{width:min(470px,100%)} }
@media(max-height:610px){ .hg-box{width:min(400px,100%)} }
@media(max-width:620px){
  #hairgal{padding:12px}
  .hg-nav{display:none}  /* swipe + dots carry navigation on phone */
  .hg-head b{font-size:18px}
}
@media(prefers-reduced-motion:reduce){
  .hg-scrim,.hg-box{animation:none}
  .hg-track{scroll-behavior:auto}
}

/* ---- phone number popover ----
   A tel: link does nothing on most desktops, so the "Call the clinic" buttons
   looked broken there. On a touch device the link still dials natively; on a
   desktop this panel opens instead so the number can be read and copied. */
#callpop{position:fixed;z-index:210;width:252px;padding:16px 16px 14px;
  background:var(--paper);border:1px solid var(--line-2);
  box-shadow:0 26px 60px -28px rgba(26,23,20,.5);
  opacity:0;transform:translateY(8px) scale(.97);transform-origin:50% 0;
  transition:opacity .26s ease,transform .38s cubic-bezier(.19,1,.22,1);
  pointer-events:none}
#callpop[hidden]{display:none}
#callpop.on{opacity:1;transform:none;pointer-events:auto}
#callpop::before{content:"";position:absolute;top:0;left:0;height:2px;width:100%;
  background:var(--gold);transform:scaleX(0);transform-origin:0 50%;
  transition:transform .5s cubic-bezier(.19,1,.22,1) .05s}
#callpop.on::before{transform:scaleX(1)}
#callpop .cp-lbl{margin:0;font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--faint)}
#callpop .cp-num{margin:7px 0 0;font-family:var(--display);font-size:25px;line-height:1.1}
#callpop .cp-num a{color:var(--ink);border-bottom:1px solid var(--line-2)}
#callpop .cp-num a:hover{border-bottom-color:var(--gold)}
#callpop .cp-row{display:flex;gap:8px;margin-top:14px}
#callpop .cp-copy,#callpop .cp-wa{flex:1;text-align:center;cursor:pointer;
  font-family:var(--sans);font-size:10px;letter-spacing:.15em;text-transform:uppercase;
  padding:9px 6px;border:1px solid var(--line-2);background:none;color:var(--ink);
  transition:background .25s,border-color .25s,color .25s}
#callpop .cp-copy:hover,#callpop .cp-wa:hover{background:var(--veil);border-color:var(--gold)}
#callpop .cp-copy.done{background:var(--gold);border-color:var(--gold);color:#14110E}
#callpop .cp-copy:focus-visible,#callpop .cp-wa:focus-visible,#callpop .cp-x:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px}
#callpop .cp-x{position:absolute;top:6px;right:8px;border:0;background:none;cursor:pointer;
  font-size:19px;line-height:1;color:var(--faint);padding:2px 4px}
#callpop .cp-x:hover{color:var(--ink)}
@media(prefers-reduced-motion:reduce){#callpop{transition:opacity .15s ease}
  #callpop::before{transition:none}}


/* ---- tap targets ----
   Footer list links and the inline phone/WhatsApp links rendered 16-18px tall,
   under the 24px minimum. Padding gives them a real target without moving
   anything visually. */
footer ul a{display:inline-block;padding-block:5px}
.ln{display:inline-block;padding-block:4px}
