/* ============================================================
   BACK TO 30 - Clinical Editorial Luxury
   Concept mockup by WorldTech Miami
   ============================================================ */

/* Self-hosted fonts - Cormorant Garamond (display) + Roboto (body, their site font) + Inter (section labels) */




@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url('../fonts/inter-var.woff2') format('woff2-variations')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url('../fonts/inter-var.woff2') format('woff2')}
@font-face{font-family:'Roboto';font-style:normal;font-weight:100 900;font-display:swap;src:url('../fonts/roboto-var.woff2') format('woff2-variations')}
@font-face{font-family:'Roboto';font-style:normal;font-weight:100 900;font-display:swap;src:url('../fonts/roboto-var.woff2') format('woff2')}



:root{
  /* Palette (locked brief) */
  --ink:#061722;          /* ink navy - primary dark */
  --ink-2:#0B1F2E;        /* lifted navy - dark cards */
  --ink-3:#04111A;        /* darkest - footer */
  --porcelain:#FBFBF9;    /* primary light bg - clean neutral near-white */
  --ivory:#F2F2EF;        /* neutral light - alt section */
  --white:#FFFFFF;
  --champagne:#b81c2c;    /* brand red (Erica kit 2026-07-15) */
  --champagne-2:#9e1724;  /* gold deep - hover */
  --champagne-soft:rgba(184,28,44,.12);
  --clay:#CDBBA8;
  --mist:#D9E0E1;
  --cocoa:#62584F;

  /* Text */
  --ink-head:#061722;
  --ink-body:#4C463E;
  --ink-mute:#6B6359;
  --paper-head:#F7FAFC;
  --paper-body:rgba(247,250,252,.74);
  --paper-mute:rgba(247,250,252,.52);

  /* Lines */
  --line-light:rgba(33,42,49,.12);
  --line-dark:rgba(247,250,252,.16);

  /* Type */
  --serif:"Cormorant Garamond","Cormorant Fallback","Cormorant Fallback T","Cormorant Fallback R",Georgia,"Times New Roman",serif;
  --sans:"Roboto",system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;
  --mono:"Inter",-apple-system,system-ui,Segoe UI,Helvetica,Arial,sans-serif;
  --t-eyebrow:clamp(11px,.78vw,12.5px);
  --t-sm:clamp(13.5px,.95vw,15px);
  --t-base:clamp(16px,1.05vw,17.5px);
  --t-lg:clamp(18px,1.3vw,21px);
  --t-h4:clamp(21px,1.7vw,26px);
  --t-h3:clamp(26px,2.4vw,38px);
  --t-h2:clamp(34px,4.2vw,60px);
  --t-h1:clamp(46px,6.6vw,104px);
  --t-display:clamp(64px,12vw,190px);  /* big section numerals */

  /* Space */
  --section:clamp(72px,7.2vw,112px);
  --gut:clamp(20px,4.5vw,40px);
  --maxw:1280px;

  /* Radius / shadow / motion */
  --r-s:6px; --r:14px; --r-l:22px; --r-pill:999px;
  --sh-1:0 1px 2px rgba(33,42,49,.06),0 6px 18px rgba(33,42,49,.06);
  --sh-2:0 2px 6px rgba(33,42,49,.08),0 18px 44px rgba(33,42,49,.10);
  --sh-3:0 30px 80px rgba(33,42,49,.18);
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-bounce:cubic-bezier(.34,1.4,.64,1);
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:84px;
  overflow-x:clip;
}
#top{scroll-margin-top:120px}
body{
  margin:0;
  background:var(--porcelain);
  color:var(--ink-body);
  font-family:var(--sans);
  font-size:var(--t-base);
  line-height:1.62;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-synthesis:none;
  font-feature-settings:"kern" 1,"liga" 1;
  overflow-x:clip;
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
h1,h2,h3,h4{margin:0;font-family:var(--serif);font-weight:500;line-height:.98;letter-spacing:-.022em;color:var(--ink-head);text-wrap:balance;font-feature-settings:"kern" 1,"liga" 1}
h1{font-size:var(--t-h1);line-height:.92;letter-spacing:-.032em} h2{font-size:var(--t-h2);letter-spacing:-.028em} h3{font-size:var(--t-h3);line-height:1.04;letter-spacing:-.014em} h4{font-size:var(--t-h4);line-height:1.1}
p{margin:0;text-wrap:pretty}
::selection{background:var(--champagne);color:var(--ink)}

.wrap{width:min(100% - (var(--gut)*2),var(--maxw));margin-inline:auto}
.section{padding-block:var(--section);position:relative}
.dark{background:var(--ink);color:var(--paper-body)}
.dark h1,.dark h2,.dark h3,.dark h4{color:var(--paper-head)}
.ivory{background:var(--porcelain)}
.porcelain{background:var(--porcelain)}

/* ---------- Shared bits ---------- */
.eyebrow{
  font-family:var(--mono);font-size:11px;font-weight:500;
  text-transform:uppercase;letter-spacing:.14em;color:var(--champagne-2);
  display:inline-flex;align-items:center;gap:.7em;margin:0 0 22px
}
.dark .eyebrow{color:var(--champagne)}
.eyebrow::before{content:"";width:22px;height:1px;background:currentColor;opacity:.7}
.lede{font-size:var(--t-lg);line-height:1.6;color:var(--ink-mute);max-width:46ch}
.dark .lede{color:var(--paper-body)}
.hr-gold{height:1px;background:linear-gradient(90deg,var(--champagne),transparent);border:0;margin:0}

/* Buttons */
.btn{
  --bg:var(--champagne);--fg:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  padding:16px 30px;min-height:52px;border-radius:0;
  background:var(--bg);color:var(--fg);border:1px solid var(--bg);
  font-family:var(--sans);font-size:var(--t-sm);font-weight:600;letter-spacing:.02em;
  cursor:pointer;transition:transform .35s var(--ease),background .3s var(--ease),box-shadow .3s var(--ease);
  white-space:nowrap;will-change:transform
}
.btn:hover{background:var(--champagne-2);border-color:var(--champagne-2);transform:translateY(-2px);box-shadow:0 14px 30px rgba(184,28,44,.3)}
.btn-ghost{--bg:transparent;--fg:var(--paper-head);border:1px solid rgba(247,250,252,.4)}
.btn-ghost:hover{--bg:rgba(247,250,252,.08);background:rgba(247,250,252,.08);border-color:rgba(247,250,252,.7);box-shadow:none}
.btn-lg{padding:18px 38px;min-height:58px;font-size:var(--t-base)}
.cta-row{display:flex;flex-wrap:wrap;gap:14px}

.txtlink{display:inline-flex;align-items:center;gap:.5em;font-weight:600;font-size:var(--t-sm);color:var(--ink-head);letter-spacing:.02em}
.dark .txtlink{color:var(--paper-head)}
.txtlink .arw{transition:transform .35s var(--ease)}
.txtlink:hover .arw{transform:translateX(5px)}
.txtlink::after{content:"";display:block;height:1px;width:0;background:var(--champagne);transition:width .35s var(--ease);position:absolute}

/* ---------- Reveal (default VISIBLE; hide only when JS confirms it can animate) ---------- */
.reveal{opacity:1;transform:none}
html.anim-on .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
html.anim-on .reveal.is-in{opacity:1;transform:none}
html.anim-on .reveal.d1{transition-delay:.08s}
html.anim-on .reveal.d2{transition-delay:.16s}
html.anim-on .reveal.d3{transition-delay:.24s}
html.anim-on .reveal.d4{transition-delay:.32s}
html.reveal-all .reveal{opacity:1!important;transform:none!important}
@media (prefers-reduced-motion:reduce){
  html.anim-on .reveal{opacity:1!important;transform:none!important;transition:none!important}
}

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  gap:20px;padding:18px var(--gut);
  transition:background .4s var(--ease),padding .4s var(--ease),box-shadow .4s var(--ease);
}
.nav.stuck{background:rgba(255,255,255,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding-block:13px;box-shadow:0 1px 0 rgba(33,42,49,.07)}
.nav__logo{display:flex;align-items:center}
.nav__logo img{height:30px;width:auto;filter:brightness(0) invert(1)}
.nav__logo .wordmark{font-family:var(--serif);font-weight:600;font-size:25px;letter-spacing:.36em;color:var(--paper-head);text-indent:.36em;transition:color .4s var(--ease)}
.nav__links{display:flex;align-items:center;gap:30px}
.nav__links a:not(.btn){
  font-size:var(--t-sm);font-weight:500;color:rgba(247,250,252,.92);letter-spacing:.01em;
  position:relative;padding:6px 0;transition:color .25s
}
.nav__links a:not(.btn)::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--champagne);transition:width .3s var(--ease)}
.nav__links a:not(.btn):hover{color:#fff}
.nav__links a:not(.btn):hover::after{width:100%}
.nav .btn{min-height:44px;padding:12px 24px}
.nav__burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:10px;z-index:70}
.nav__burger span{width:24px;height:1.5px;background:var(--paper-head);transition:transform .35s var(--ease),opacity .25s,background .4s}
.nav.open .nav__burger span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.nav.open .nav__burger span:nth-child(2){opacity:0}
.nav.open .nav__burger span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
/* stuck = scrolled onto the light page → dark text/marks */
.nav.stuck .nav__logo .wordmark{color:var(--ink-head)}
.nav.stuck .nav__links a:not(.btn){color:rgba(33,42,49,.82)}
.nav.stuck .nav__links a:not(.btn):hover{color:var(--ink-head)}
.nav.stuck .nav__burger span{background:var(--ink-head)}
.nav.stuck .btn{color:var(--ink-head);border-color:rgba(33,42,49,.32)}
.nav.stuck .btn:hover{background:var(--ink);color:var(--porcelain);border-color:var(--ink)}
/* menu open (dark overlay) → always light burger/X (wins over stuck) */
.nav.open .nav__burger span{background:var(--paper-head)}

.mobnav{
  position:fixed;inset:0;z-index:65;background:var(--ink);
  display:flex;flex-direction:column;justify-content:center;gap:6px;
  padding:90px var(--gut) 40px;
  opacity:0;visibility:hidden;transform:translateY(-12px);
  transition:opacity .4s var(--ease),transform .4s var(--ease),visibility .4s
}
.nav.open + .mobnav,.mobnav.open{opacity:1;visibility:visible;transform:none}
.mobnav a:not(.btn){font-family:var(--serif);font-size:clamp(30px,9vw,46px);color:var(--paper-head);padding:9px 0;border-bottom:1px solid var(--line-dark)}
.mobnav .btn{margin-top:26px;align-self:flex-start}

/* ============================================================
   HERO
   ============================================================ */

/* ============================================================
   SECTION HEAD
   ============================================================ */
.shead{max-width:62ch}
.shead.center{margin-inline:auto;text-align:center}
.shead.center .eyebrow{justify-content:center}
.shead h2{margin-bottom:18px}

/* ============================================================
   2 - Elevated dark plaque + drawing spine
   ============================================================ */

.chip{
  padding:12px 20px;min-height:46px;border-radius:var(--r-pill);
  border:1px solid var(--line-light);background:transparent;color:var(--ink-head);
  font-size:var(--t-sm);font-weight:500;cursor:pointer;
  transition:all .28s var(--ease)
}
.chip:hover{border-color:var(--champagne);color:var(--champagne-2)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper-head)}

/* ============================================================
   7 - LOCATIONS
   ============================================================ */
.loc__head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:24px;margin-bottom:34px}
.loc__filters{display:flex;flex-wrap:wrap;gap:10px}
.loc__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.lc{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r);padding:26px 24px;transition:transform .4s var(--ease),box-shadow .4s var(--ease),border-color .4s}
.lc:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:transparent}
.lc__state{font-size:var(--t-eyebrow);text-transform:uppercase;letter-spacing:.2em;color:var(--champagne-2);font-weight:600;margin-bottom:10px}
.lc h4{font-size:var(--t-h4);margin-bottom:10px}
.lc__addr{font-size:13.5px;color:var(--ink-mute);line-height:1.55;margin-bottom:6px}
.lc__ph{font-size:13.5px;color:var(--ink-body);font-weight:500;margin-bottom:18px}
.lc__row{display:flex;align-items:center;gap:18px}
.lc[hidden]{display:none}
.loc__empty{grid-column:1/-1;text-align:center;color:var(--ink-mute);padding:40px 0;display:none}
.geo-near{outline:2px solid var(--champagne);outline-offset:-2px}

/* ============================================================
   8 - JOURNEY (dark)
   ============================================================ */
.jrn__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:clamp(34px,4vw,56px);counter-reset:step}
.jstep{padding:0 28px 0 0;position:relative}
.jstep:not(:last-child){border-right:1px solid var(--line-dark);padding-right:28px}
.jstep .jn{font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.2em;color:var(--champagne);margin-bottom:22px}
.jstep .dot{width:9px;height:9px;border-radius:50%;background:var(--champagne);margin-bottom:22px;box-shadow:0 0 0 5px rgba(184,28,44,.16)}
.jstep h4{color:var(--paper-head);margin-bottom:10px}
.jstep p{font-size:var(--t-sm);color:var(--paper-body)}

/* ============================================================
   9 - SOCIAL PROOF
   ============================================================ */
.proof__grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:clamp(30px,4vw,52px)}
.qcard{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(30px,3vw,46px);position:relative}
.qcard .qmark{font-family:var(--serif);font-size:90px;line-height:.6;color:var(--champagne);opacity:.45;height:42px;display:block}
.qcard blockquote{margin:0 0 22px;font-family:var(--serif);font-size:var(--t-h4);line-height:1.42;color:var(--ink-head);font-weight:500}
.qcard .who{display:flex;align-items:center;gap:12px;font-size:var(--t-sm)}
.qcard .who .nm{font-weight:600;color:var(--ink-head)}
.qcard .who .st{color:var(--champagne-2)}
.qcard .stars{color:var(--champagne);letter-spacing:3px;font-size:13px;margin-bottom:16px}

/* ============================================================
   10 - PAYMENT
   ============================================================ */
.pay__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,4vw,64px);align-items:center}
.pay__panel{background:linear-gradient(150deg,var(--champagne) 0%,#b8923f 100%);border-radius:var(--r-l);padding:clamp(34px,4vw,52px);color:var(--ink);box-shadow:var(--sh-3)}
.pay__panel .pe{font-size:var(--t-eyebrow);text-transform:uppercase;letter-spacing:.24em;font-weight:700;color:rgba(33,42,49,.62);margin-bottom:18px}
.pay__panel h3{color:var(--ink);margin-bottom:18px}
.pay__facts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:26px}
.pay__facts .f{background:rgba(255,255,255,.42);border:1px solid rgba(33,42,49,.1);border-radius:var(--r);padding:16px 18px}
.pay__facts .f b{display:block;font-family:var(--serif);font-size:var(--t-h4);color:var(--ink);line-height:1}
.pay__facts .f span{font-size:12.5px;color:rgba(33,42,49,.66)}
.pay__note{font-size:12px;color:rgba(33,42,49,.6);margin-top:22px}
.pay__copy h2{margin-bottom:18px}
.pay__copy .cherry{display:inline-flex;align-items:center;gap:10px;margin-top:8px;font-size:var(--t-sm);color:var(--ink-mute)}
.pay__copy .cherry .cdot{width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}

/* ============================================================
   11 - FINAL CTA
   ============================================================ */
.fcta{position:relative;text-align:center;overflow:hidden}
.fcta .wrap{position:relative;z-index:2}
.fcta h2{max-width:18ch;margin:0 auto 22px}
.fcta .lede{margin:0 auto 32px;text-align:center}
.fcta .cta-row{justify-content:center}

/* ============================================================
   FOOTER
   ============================================================ */
.foot{background:var(--ink-3);color:var(--paper-body);padding-block:clamp(56px,6vw,84px) 30px}
.foot__top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1.05fr;gap:32px;padding-bottom:46px;border-bottom:1px solid var(--line-dark)}
.foot__brand .wordmark{font-family:var(--serif);font-weight:600;font-size:26px;letter-spacing:.34em;color:var(--paper-head);display:inline-block;margin-bottom:18px;text-indent:.34em}
.foot__brand p{font-size:var(--t-sm);color:var(--paper-mute);max-width:34ch;margin-bottom:22px}
.foot__soc{display:flex;gap:12px}
.foot__soc a{width:40px;height:40px;border:1px solid var(--line-dark);border-radius:50%;display:grid;place-items:center;transition:all .3s var(--ease)}
.foot__soc a:hover{border-color:var(--champagne);background:var(--champagne-soft)}
.foot__soc svg{width:17px;height:17px;fill:var(--paper-head)}
.foot__col h2{font-family:var(--sans);font-size:var(--t-eyebrow);text-transform:uppercase;letter-spacing:.2em;color:var(--accent-on-dark);font-weight:600;margin:0 0 18px}
.foot__col a{display:block;font-size:var(--t-sm);color:var(--paper-body);padding:6px 0;transition:color .25s}
.foot__col a:hover{color:var(--paper-head)}
.foot__bot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;padding-top:24px;font-size:12.5px;color:var(--paper-mute)}
.foot__bot a{color:var(--paper-mute)}.foot__bot a:hover{color:var(--paper-head)}
.foot__rating{display:flex;align-items:center;gap:7px;margin:18px 0 0;font-size:var(--t-sm);font-weight:600;color:var(--paper-body)}
.foot__rating strong{color:var(--paper-head);font-weight:700}
.foot__rating .foot__star{color:var(--champagne);font-size:15px;line-height:1}
.foot__util{display:flex;flex-wrap:wrap;gap:6px 16px}
.foot__util a{padding:0}

/* ============================================================
   STICKY MOBILE BOOK CTA
   ============================================================ */
.mcta{
  position:fixed;left:0;right:0;bottom:0;z-index:55;
  padding:12px var(--gut) calc(12px + env(safe-area-inset-bottom));
  background:rgba(33,42,49,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-top:1px solid var(--line-dark);
  transform:translateY(120%);opacity:0;visibility:hidden;pointer-events:none;
  transition:transform .45s var(--ease),opacity .35s var(--ease),visibility .45s;display:none
}
.mcta.show{transform:none;opacity:1;visibility:visible;pointer-events:auto}
.mcta .btn{width:100%}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .std__grid,.cat__grid,.prov__grid,.jrn__grid{grid-template-columns:repeat(2,1fr)}
  .std__card:nth-child(2){border-right:0}
  .std__card:nth-child(1),.std__card:nth-child(2){border-bottom:1px solid var(--line-light)}
  .loc__grid{grid-template-columns:repeat(2,1fr)}
  .jstep:nth-child(2){border-right:0}
  .jstep{padding-bottom:30px}
}
@media (max-width:860px){
  .nav__links{display:none}
  .nav__burger{display:flex}
  .finder__grid,.pay__grid{grid-template-columns:1fr;gap:34px}
  .proof__grid{grid-template-columns:1fr}
  .hero__trust{grid-template-columns:1fr 1fr;gap:22px}
  .mcta{display:block}
}
@media (max-width:560px){
  :root{--gut:20px}
  .std__grid,.cat__grid,.prov__grid,.jrn__grid,.loc__grid{grid-template-columns:1fr}
  .std__card{border-right:0;border-bottom:1px solid var(--line-light)}
  .std__card:last-child{border-bottom:0}
  .jstep{border-right:0!important;border-bottom:1px solid var(--line-dark);padding:0 0 26px}
  .jstep:last-child{border-bottom:0}
  .pay__facts{grid-template-columns:1fr 1fr}
  .foot__top{grid-template-columns:1fr 1fr;gap:30px}
  .foot__brand{grid-column:1/-1}
  .hero__inner{padding-top:120px}
  .cta-row .btn{flex:1 1 auto}
}
@media (max-width:380px){
  .hero__trust{grid-template-columns:1fr}
  .foot__top{grid-template-columns:1fr}
}

/* ============================================================
   EDITORIAL ELEVATION (custom art direction)
   ============================================================ */
/* Brand marquee */
.mq{background:var(--ink);overflow:hidden;border-block:1px solid var(--line-dark)}
.mq__t{display:flex;width:max-content;animation:mq 38s linear infinite;will-change:transform}
.mq__t>span{font-family:var(--serif);font-size:clamp(22px,2.5vw,36px);font-weight:500;color:var(--paper-head);padding:15px 0;display:inline-flex;align-items:center;white-space:nowrap}
.mq__t>span::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--champagne);margin:0 clamp(26px,4vw,46px);flex:none}
@keyframes mq{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.mq__t{animation:none}}

/* Editorial kicker */
.kx{display:inline-flex;align-items:center;gap:13px;margin-bottom:16px}
.kx b{font-family:var(--serif);font-weight:600;font-size:21px;color:var(--champagne-2);line-height:1}
.kx span{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.3em;color:var(--ink-mute)}
.dark .kx span{color:var(--paper-mute)}


/* Bolder editorial headlines on mobile */
@media (max-width:560px){
  h2{font-size:clamp(33px,8.6vw,46px);letter-spacing:-.02em}
  .hero h1{letter-spacing:-.022em}
}

/* Paper grain - softens the AI-perfect smoothness */
body::after{content:"";position:fixed;inset:0;z-index:9000;pointer-events:none;opacity:.05;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:150px 150px}

/* Touch devices: remove per-frame fixed-compositing cost that stutters iOS momentum scroll
   (fixed full-screen mix-blend grain + backdrop blur on the fixed nav/CTA). Visuals stay
   near-identical: grain is opacity .05, and the nav/CTA backgrounds are already ~.92-.94 opaque. */
@media (pointer:coarse){
  body::after{display:none}
  .nav.stuck{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.97)}
  /* Inner-page fixed nav: body.page-inner .nav (later in the sheet, specificity 0,2,1) re-applies a
     live blur that would win over .nav.stuck here and stutter iOS momentum scroll. Beat it with
     html-prefixed specificity (0,2,2) so touch devices get an opaque, un-blurred fixed nav. */
  html body.page-inner .nav{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.97)}
  .mcta{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(41,54,62,.98)}
}

/* Manifesto - editorial magazine spread */
.mani__grid{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(30px,5vw,80px);align-items:center}
.mani__media{margin:0;position:relative}
.mani__media img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:18px;display:block}
.mani__media figcaption{display:flex;align-items:center;gap:9px;margin-top:14px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute);font-weight:600}
.mani__media .tick{width:18px;height:1px;background:var(--champagne)}
.mani__body h2{font-size:clamp(40px,5.2vw,82px);margin:8px 0 24px;letter-spacing:-.02em}
.mani__lede{font-size:clamp(18px,1.45vw,23px);line-height:1.55;color:var(--ink-body);max-width:44ch}
.mani__quote{margin-top:30px;font-family:var(--serif);font-style:italic;font-size:clamp(22px,2vw,31px);color:var(--champagne-2);line-height:1.32;max-width:24ch}
@media (max-width:860px){
  .mani__grid{grid-template-columns:1fr;gap:26px}
  .mani__media img{aspect-ratio:5/4}
}

/* Payment - quiet ivory card */
.pay2{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(28px,4vw,64px);align-items:center;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(34px,4vw,60px);box-shadow:var(--sh-1)}
.pay2__l h2{font-size:clamp(28px,3vw,44px);margin-bottom:18px;max-width:16ch}
.pay2__copy{color:var(--ink-mute);font-size:var(--t-base);margin-bottom:22px;max-width:46ch}
.pay2__cherry{display:inline-flex;align-items:center;gap:10px;font-family:var(--serif);font-size:25px;color:var(--ink-head);margin-bottom:22px}
.pay2__cherry .cdot{width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--sans);font-weight:700;font-size:14px}
.pay2__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}
.pay2__list li{position:relative;padding-left:24px;font-size:var(--t-sm);color:var(--ink-body)}
.pay2__list li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border:1px solid var(--champagne);border-radius:50%}
.pay2__note{font-size:12px;color:var(--ink-faint);margin-top:20px}
@media (max-width:860px){.pay2{grid-template-columns:1fr;gap:24px}}

/* Locations - editorial state directory */
.locw{display:flex;flex-direction:column;gap:clamp(34px,4.5vw,58px)}
.locg__h{display:flex;align-items:baseline;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line-light);margin-bottom:22px}
.locg__h h3{font-family:var(--serif);font-size:clamp(26px,2.8vw,42px);color:var(--ink-head);font-weight:600}
.locg__h span{font-size:11.5px;text-transform:uppercase;letter-spacing:.22em;color:var(--champagne-2);font-weight:600}
.locg__cards{display:block}
.locg[hidden]{display:none}
.locg .lc__state{display:none}


/* Reviews - editorial pull-quote */
.rev{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,5vw,72px);align-items:start}
.rev__head{margin-bottom:clamp(28px,4vw,52px)}
.rev__lead{margin:0}
.rev__qm{font-family:var(--serif);font-size:120px;line-height:.5;color:var(--champagne);opacity:.5;display:block;height:56px}
.rev__lead blockquote{margin:0 0 22px;font-family:var(--serif);font-size:clamp(25px,2.5vw,40px);line-height:1.32;color:var(--ink-head);font-weight:500}
.rev figcaption{display:flex;flex-direction:column;gap:2px}
.rev .nm{font-weight:600;color:var(--ink-head);font-size:var(--t-sm)}
.rev .st{font-size:12px;color:var(--champagne-2);letter-spacing:.06em;text-transform:uppercase}
.rev__side{margin:0;padding-top:26px;border-top:1px solid var(--line-light)}
.rev__side blockquote{margin:0 0 16px;font-family:var(--serif);font-style:italic;font-size:clamp(18px,1.5vw,23px);line-height:1.45;color:var(--ink-body)}
@media (max-width:860px){.rev{grid-template-columns:1fr;gap:30px}}

/* Final CTA - full-bleed cinematic closer */
.fcta{padding-block:clamp(110px,12vw,184px)}
.fcta__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.03) contrast(1.02);z-index:0}
.fcta__scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(rgba(4,17,26,.6) 0%,rgba(4,17,26,.74) 45%,rgba(4,17,26,.86) 100%)}

/* ============================================================
   ELEVATION PASS - per-section refinement
   ============================================================ */
/* HERO - cinematic vignette + editorial trust bar */
.hero__scrim{background:
  linear-gradient(to top,rgba(4,17,26,.9) 0%,rgba(4,17,26,.34) 42%,rgba(4,17,26,.52) 100%),
  radial-gradient(130% 100% at 50% 42%,transparent 52%,rgba(4,17,26,.62) 100%)}
.hero__trust .ts b{font-size:clamp(20px,2vw,28px)}
.hero__trust .ts span{font-size:12px;color:rgba(247,250,252,.58);letter-spacing:.05em}
@media (min-width:861px){
  .hero__trust{gap:0}
  .hero__trust .ts{padding-left:clamp(18px,2.2vw,36px);border-left:1px solid rgba(247,250,252,.14)}
  .hero__trust .ts:first-child{padding-left:0;border-left:0}
}

/* MARQUEE - italic editorial */
.mq__t>span{font-style:italic;font-size:clamp(24px,2.7vw,40px)}

/* PAYMENT - elevated card w/ gold accent edge */
.pay2{border:0;box-shadow:0 34px 84px rgba(33,42,49,.13);position:relative;overflow:hidden}
.pay2::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(180deg,var(--champagne),rgba(184,28,44,.25))}
.pay2__cherry{font-size:27px}
.pay2__list li{padding:11px 0 11px 26px;border-bottom:1px solid var(--line-light)}
.pay2__list li:last-child{border-bottom:0}
.pay2__list li::before{top:18px}

/* FOOTER - wordmark as design element */
.foot__brand .wordmark{font-size:clamp(30px,3.6vw,48px);letter-spacing:.28em}
.foot__top{border-top:1px solid var(--line-dark);padding-top:clamp(42px,4.5vw,64px)}

/* NAV - refined gold hairline when stuck */
.nav.stuck{box-shadow:0 1px 0 rgba(184,28,44,.16)}

/* ============================================================
   CINEMATIC VIDEO - scroll-expand film + treatment-room feature
   ============================================================ */

.roomx__grid{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(30px,5vw,76px);align-items:center}
.roomx__media{margin:0;border-radius:20px;overflow:hidden;aspect-ratio:3/4;position:relative;box-shadow:var(--sh-2)}
.roomx__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.roomx__body h2{margin:6px 0 18px}
.roomx__body .lede{margin-bottom:22px}
@media (max-width:860px){
  .roomx__grid{grid-template-columns:1fr;gap:24px}
  .roomx__media{aspect-ratio:4/5;width:100%;max-width:500px;margin-inline:auto}
}

/* ===== MOTION 2.0 - choreographed, 21st.dev-caliber (vanilla) ===== */
html.anim-on .reveal{filter:blur(7px);transform:translateY(30px) scale(.985);transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease)}
html.anim-on .reveal.is-in{filter:none;transform:none}
html.reveal-all .reveal{filter:none!important}
@media (prefers-reduced-motion:reduce){html.anim-on .reveal{filter:none!important;transform:none!important}}
@media (max-width:767px){html.anim-on .reveal{filter:none!important}}
/* CWV/LCP: the above-the-fold hero contains the LCP element (hero__h) - it must paint immediately,
   never hidden behind the reveal animation. Below-the-fold reveals are unaffected. */
html.anim-on .hero .reveal{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
.mani__media{overflow:hidden}
.mani__media img{transform:scale(1.14);will-change:transform}
.hero__inner{will-change:transform}
@keyframes aurora{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-5%,4%) scale(1.18)}}
@media (prefers-reduced-motion:no-preference){.std__panel::before{animation:aurora 16s ease-in-out infinite}}

/* Treatments gallery - bigger cinematic cards + slow Ken Burns */
@media (min-width:861px){.tg{grid-template-columns:224px 1fr}}
.tg__panel figure{overflow:hidden;border-radius:14px}
.tg__panel img{border-radius:0;aspect-ratio:3/4}
@keyframes kenburns{from{transform:scale(1.02)}to{transform:scale(1.09)}}
@media (min-width:861px) and (prefers-reduced-motion:no-preference){
  .tg__panel.is-active img{animation:kenburns 17s ease-in-out infinite alternate}
}


.ig{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:clamp(230px,26vw,344px);gap:14px}
.ig figure{margin:0;position:relative;overflow:hidden;border-radius:16px}
.ig figure img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s var(--ease)}
.ig figure:hover img{transform:scale(1.05)}
.ig figure::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(4,17,26,.62),transparent 48%)}
.ig figcaption{position:absolute;left:0;bottom:0;z-index:2;padding:16px 20px;color:#fff;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:600}
.ig .w{grid-column:span 2}
@media (max-width:760px){
  .ig{grid-template-columns:1fr;grid-auto-rows:auto}
  .ig .w{grid-column:span 1}
  .ig figure{aspect-ratio:4/3}
}

/* ============================================================
   AWARD PASS - bolder type, italic accents, custom cursor
   ============================================================ */
:root{--t-h1:clamp(50px,7.4vw,118px);--t-h2:clamp(36px,4.7vw,70px)}
h1 em,h2 em,.mani__quote{font-style:italic}
h1 em,h2 em{font-weight:500;color:var(--champagne-2)}
.dark h2 em{color:var(--champagne)}

/* ===== Signature kinetic statement + cinematic hero entrance ===== */
.stmt{padding-block:clamp(96px,13vw,190px)}
.stmt .eyebrow{margin-bottom:26px}
.stmt__h{font-family:var(--serif);font-weight:500;font-size:clamp(46px,9.2vw,152px);line-height:.97;letter-spacing:-.025em;color:var(--ink-head);margin:0;max-width:16ch}
.stmt__h em{font-style:italic;color:var(--champagne-2)}
.stmt__h .ln{display:block;overflow:hidden;padding-bottom:.04em}
.stmt__h .li{display:block}
html.anim-on .stmt__h.reveal{opacity:1!important;filter:none!important;transform:none!important}
html.anim-on .stmt__h .li{transform:translateY(114%);transition:transform 1.05s var(--ease)}
html.anim-on .stmt__h.is-in .li{transform:translateY(0)}
html.anim-on .stmt__h.is-in .ln:nth-child(2) .li{transition-delay:.13s}
html.anim-on .stmt__h.is-in .ln:nth-child(3) .li{transition-delay:.26s}
html.reveal-all .stmt__h .li{transform:none!important}
@keyframes heroIn{from{transform:scale(1.09)}to{transform:scale(1)}}
@media (prefers-reduced-motion:no-preference){.hero__video{animation:heroIn 2.6s var(--ease) both}}


.ighz{position:relative;background:var(--ink);color:var(--paper-body)}
.ighz__sticky{padding-block:clamp(60px,8vw,104px)}
.ighz__bar{margin-bottom:clamp(26px,3.5vw,46px)}
.ighz__bar h2{color:var(--paper-head)}
.ighz__bar .eyebrow{color:var(--champagne)}
.ighz__track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:var(--gut);-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ighz__track::-webkit-scrollbar{display:none}
.ighz__c{flex:0 0 clamp(282px,32vw,440px);scroll-snap-align:center;margin:0;position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3/4}
.ighz__c img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s var(--ease)}
.ighz__c:hover img{transform:scale(1.05)}
.ighz__c::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(4,17,26,.62),transparent 52%)}
.ighz__c figcaption{position:absolute;left:0;bottom:0;z-index:2;padding:16px 20px;color:#fff;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:600}
.ighz--pin{height:220vh}
.ighz--pin .ighz__sticky{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-block:0}
.ighz--pin .ighz__track{overflow:visible;scroll-snap-type:none;will-change:transform}

/* ===== Hero: calmer, less covered, more breathing room ===== */
:root{--t-h1:clamp(44px,6.5vw,100px)}
.hero__scrim{background:linear-gradient(to top,rgba(4,17,26,.86) 0%,rgba(4,17,26,.44) 32%,rgba(4,17,26,.12) 62%,rgba(4,17,26,.03) 100%)}
.hero__sub{max-width:42ch}
.hero__meta{margin-top:clamp(26px,4vw,42px);padding-top:20px;border-top:1px solid var(--line-dark);font-size:13.5px;letter-spacing:.03em;color:rgba(247,250,252,.72);line-height:1.7;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.55em;row-gap:3px}
.hero__meta .hm{white-space:nowrap}
.hero__meta b{color:var(--paper-head);font-weight:600;font-style:normal}
.hero__meta i{color:var(--champagne);font-style:normal}
@media (max-width:560px){
  .hero__sub{font-size:var(--t-base)}
  .hero__meta{column-gap:1.05em;font-size:12.5px}
  .hero__meta i{display:none}
  .scrollcue{display:none}
}

/* ===================== MOBILE AWARD PASS (2026-06-17) - editorial presence ===================== */
@media (max-width:600px){
  /* Refined editorial hero: restraint over shout - luxury reads in the whitespace */
  .hero h1{font-size:clamp(35px,9vw,46px);line-height:1.02;letter-spacing:-.026em;margin-top:clamp(22px,3.4vw,30px)}
  h2{font-size:clamp(38px,10.2vw,50px);line-height:1.0;letter-spacing:-.026em}
  .mani__body h2{font-size:clamp(44px,12vw,60px);line-height:.98}
  .stmt__h{letter-spacing:-.03em}
  .eyebrow{font-size:11.5px;letter-spacing:.2em}
  .lede{font-size:16.5px;line-height:1.62}
  /* A touch more editorial air (within the beauty-mockup 80-100px sweet spot) */
  .section{padding-block:clamp(88px,15vw,104px)}
  .hero__inner{padding-bottom:clamp(46px,9vw,76px)}

  /* Providers → editorial portrait spread: identity set OVER the portrait, not a card below */
  .prov{position:relative;background:transparent;border:0;border-radius:20px;overflow:hidden}
  .prov__img{aspect-ratio:3/4;object-position:50% 11%}
  .prov::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(to top,rgba(4,17,26,.95) 2%,rgba(4,17,26,.74) 24%,rgba(4,17,26,.10) 52%,transparent 72%)}
  .prov__b{position:absolute;inset:auto 0 0 0;z-index:2;padding:0 24px 26px}
  .prov__b h4{font-size:26px;line-height:1.04;margin-bottom:6px}
  .prov__cred{margin-bottom:10px}
  .prov__spec{font-size:13.5px;margin-bottom:16px;max-width:32ch}
  .prov__grid{gap:18px;margin-top:clamp(30px,7vw,56px)}
}



/* --- Editorial primitives --- */
.elabel{display:inline-flex;align-items:center;gap:.85em;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);line-height:1}
.elabel::before{content:"";width:32px;height:1px;background:currentColor;opacity:.85}
.elabel--gold{color:var(--champagne)}
.elabel--light{color:rgba(247,250,252,.82)}

.ebtn{display:inline-flex;align-items:center;justify-content:center;padding:15px 30px;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--ink);background:var(--ink);color:var(--porcelain);cursor:pointer;transition:background .35s var(--ease),color .35s var(--ease)}
.ebtn:hover{background:transparent;color:var(--ink)}
.ebtn--light{background:var(--porcelain);color:var(--ink);border-color:var(--porcelain)}
.ebtn--light:hover{background:transparent;color:var(--porcelain)}

.elink{position:relative;display:inline-flex;align-items:center;gap:.55em;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-head);padding-bottom:5px}
.elink .arw{transition:transform .4s var(--ease)}
.elink::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.elink:hover .arw{transform:translateX(6px)}
.elink:hover::after{transform:scaleX(1)}
.elink--light{color:var(--paper-head)}

/* --- TREATMENTS (editorial index, alternating asymmetric spreads) --- */
.atr__head{margin-bottom:clamp(46px,6vw,84px)}
.atr__head .elabel{margin-bottom:24px}
.atr__h{font-family:var(--serif);font-weight:600;font-size:clamp(36px,4.6vw,76px);line-height:.99;letter-spacing:-.02em}
.atr__lede{margin-top:22px;max-width:42ch}
.atr__list{display:flex;flex-direction:column}
.atr__row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,88px);align-items:center;padding:clamp(38px,4.6vw,68px) 0;border-top:1px solid var(--line-light)}
.atr__row:last-child{border-bottom:1px solid var(--line-light)}
.atr__row--rev .atr__img{order:2}
.atr__img{margin:0;overflow:hidden;aspect-ratio:5/4;border-radius:3px}
.atr__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.atr__row:hover .atr__img img{transform:scale(1.045)}
.atr__num{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(38px,4vw,74px);line-height:.8;color:transparent;-webkit-text-stroke:1px var(--champagne);text-stroke:1px var(--champagne);margin-bottom:18px}
.atr__cat{font-family:var(--serif);font-weight:600;font-size:clamp(30px,3.6vw,56px);line-height:1.0;letter-spacing:-.015em;margin-bottom:16px;color:var(--ink-head)}
.atr__benefit{font-size:var(--t-lg);color:var(--ink-mute);line-height:1.55;max-width:42ch;margin-bottom:22px}
.atr__pop{font-size:var(--t-sm);color:var(--cocoa);margin-bottom:26px;line-height:1.7;max-width:40ch}
.atr__poplabel{display:block;font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--champagne-2);font-weight:600;margin-bottom:8px}

/* --- PROVIDERS (editorial portraiture) --- */
.aprov__head{max-width:62ch;margin-bottom:clamp(44px,6vw,82px)}
.aprov__h{color:var(--paper-head);font-family:var(--serif);font-weight:600;font-size:clamp(36px,4.6vw,78px);line-height:1.0;letter-spacing:-.02em;margin-top:24px}
.aprov__h em{font-style:italic;color:var(--champagne)}
.aprov__lede{margin-top:24px;max-width:48ch}
.aprov__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,2.4vw,36px)}
.aprov__img{margin:0;overflow:hidden;aspect-ratio:4/5;border-radius:3px;background:var(--ink-2)}
.aprov__img img{width:100%;height:100%;object-fit:cover;object-position:50% 13%;filter:saturate(1.02);transition:transform 1.1s var(--ease)}
.aprov__card:hover .aprov__img img{transform:scale(1.045)}
.aprov__b{padding-top:20px;margin-top:20px;border-top:1px solid rgba(247,250,252,.22)}
.aprov__name{color:var(--paper-head);font-family:var(--serif);font-weight:600;font-size:clamp(21px,1.7vw,28px);line-height:1.04;margin-bottom:9px}
.aprov__cred{display:block;font-family:var(--sans);font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne);margin-bottom:13px}
.aprov__spec{color:var(--paper-body);font-size:13.5px;line-height:1.55;margin-bottom:17px;max-width:34ch}

@media (max-width:900px){
  .aprov__grid{grid-template-columns:repeat(2,1fr);gap:34px 24px}
}
@media (max-width:760px){
  .atr__row{grid-template-columns:1fr;gap:22px;padding:34px 0}
  .atr__row--rev .atr__img{order:0}
  .atr__img{aspect-ratio:4/3}
  .atr__num{margin-bottom:14px}
}
@media (max-width:520px){
  .aprov__grid{grid-template-columns:1fr;max-width:400px;margin-inline:auto;gap:40px}
  .aprov__img{aspect-ratio:5/6}
}

/* --- LOCATIONS (editorial directory / index) --- */
.loc__head{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;flex-wrap:wrap;margin-bottom:clamp(38px,4.6vw,62px)}
.loc__filters{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:none;border:1px solid var(--line-light);border-radius:0;padding:9px 17px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--porcelain);border-color:var(--ink)}
.chip:hover{border-color:var(--ink)}
.locw{counter-reset:loc}
.locg{margin-top:clamp(34px,4vw,58px)}
.locg:first-child{margin-top:0}
.locg__h{display:flex;align-items:baseline;gap:15px;padding-bottom:13px;border-bottom:1px solid rgba(33,42,49,.24);margin:0}
.locg__h h3{font-family:var(--serif);font-weight:600;font-size:clamp(26px,2.8vw,44px);color:var(--ink-head);margin:0;line-height:1}
.locg__h span{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--champagne-2)}
.locg__cards{display:block}
.lc{display:grid;grid-template-columns:38px 1.1fr 1.5fr auto;column-gap:clamp(14px,2vw,30px);align-items:center;padding:21px 0;border:0;border-bottom:1px solid var(--line-light);border-radius:0;background:none;box-shadow:none;transition:none}
.lc::before{counter-increment:loc;content:counter(loc,decimal-leading-zero);grid-column:1;grid-row:1/3;align-self:center;font-family:var(--serif);font-style:italic;font-size:16px;color:var(--champagne-2)}
.lc:hover{transform:none;box-shadow:none;border-color:var(--line-light)}
.lc__state{display:none}
.lc h4{grid-column:2;grid-row:1/3;align-self:center;font-family:var(--serif);font-weight:600;font-size:clamp(19px,1.8vw,28px);color:var(--ink-head);margin:0;line-height:1.08}
.lc__addr{grid-column:3;grid-row:1;align-self:end;font-size:13px;color:var(--ink-mute);margin:0;line-height:1.45}
.lc__ph{grid-column:3;grid-row:2;align-self:start;font-size:12.5px;color:var(--cocoa);margin:3px 0 0;letter-spacing:.01em}
.lc__row{grid-column:4;grid-row:1/3;align-self:center;display:flex;align-items:center;gap:18px;justify-content:flex-end}
.lc .btn{background:var(--ink);color:var(--porcelain);border-color:var(--ink);border-radius:0;box-shadow:none;font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;will-change:auto}
.lc .btn:hover{background:transparent;color:var(--ink);transform:none;box-shadow:none}
.loc__empty{padding:30px 0;color:var(--ink-mute)}

/* --- REVIEWS (oversized editorial pull-quote) --- */
.rev__lead blockquote{font-family:var(--serif);font-weight:500;font-size:clamp(25px,2.9vw,46px);line-height:1.26;letter-spacing:-.012em;color:var(--ink-head)}
.rev__qm{font-family:var(--serif);font-size:clamp(84px,11vw,168px);line-height:.55;color:var(--champagne);opacity:.42}
.rev__side blockquote{font-size:var(--t-lg);line-height:1.5;color:var(--ink-body)}
.rev .nm{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-head)}
.rev .st{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2)}

/* --- Button cohesion: editorial rectangles, not pills --- */
.nav .btn{border-radius:0;background:transparent;color:var(--paper-head);border:1px solid rgba(247,250,252,.5);font-size:11px;letter-spacing:.12em;text-transform:uppercase;will-change:auto}
.nav .btn:hover{background:var(--porcelain);color:var(--ink);border-color:var(--porcelain);transform:none;box-shadow:none}
.mcta .btn{border-radius:0;letter-spacing:.1em;text-transform:uppercase;font-size:12.5px}
.mcta .btn:hover{transform:none;box-shadow:none}
.mobnav .btn{border-radius:0;letter-spacing:.1em;text-transform:uppercase}

@media (max-width:720px){
  .lc{display:block;position:relative;padding:19px 0 19px 32px}
  .lc::before{position:absolute;left:0;top:21px;font-size:14px}
  .lc h4{margin:0 0 5px}
  .lc__addr,.lc__ph{margin:0}
  .lc__ph{margin-top:3px}
  .lc__row{margin-top:13px;justify-content:flex-start}
}

/* ============================================================
   CINEMATIC SCROLL-TOLD OPENING (2026-06-17) - pinned brand film
   ============================================================ */
/* ===== HERO - full-bleed brand film (fal-generated luxe interior) ===== */
.hero{position:relative;height:100svh;min-height:600px;overflow:hidden;display:flex;background:var(--ink)}
.hero__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media (min-width:861px){.hero__v{object-position:50% 40%}.hero__h{text-shadow:0 2px 12px rgba(33,42,49,.55),0 2px 34px rgba(4,17,26,.42)}}
.hero__scrim{position:absolute;inset:0;background:linear-gradient(to top,rgba(33,42,49,.82) 0%,rgba(33,42,49,.36) 32%,rgba(33,42,49,.05) 56%,rgba(33,42,49,.10) 78%,rgba(33,42,49,.40) 100%)}
.hero__inner{position:relative;z-index:2;align-self:flex-end;width:min(100% - (var(--gut)*2),var(--maxw));margin-inline:auto;padding:120px 0 clamp(52px,8vh,104px)}
.hero .eyebrow{color:var(--paper-head);text-shadow:0 0 3px rgba(4,17,26,.92),0 1px 2px rgba(4,17,26,.99),0 1px 10px rgba(4,17,26,.94),0 2px 30px rgba(4,17,26,.72)}
.hero .eyebrow::before{background:var(--champagne);opacity:.95}
.hero__h{font-family:var(--serif);font-weight:500;font-size:clamp(44px,6.6vw,104px);line-height:.96;letter-spacing:-.032em;color:var(--paper-head);margin:20px 0 0;max-width:17ch;text-shadow:0 2px 34px rgba(4,17,26,.42)}
.hero__sub{font-size:var(--t-lg);line-height:1.55;color:#f7fafc;max-width:48ch;margin-top:clamp(18px,2vw,28px);text-shadow:0 1px 20px rgba(4,17,26,.4)}
.hero__cta{display:flex;align-items:center;gap:clamp(20px,2.4vw,34px);margin-top:clamp(28px,3.4vw,40px);flex-wrap:wrap}
.hero__cta .btn{border-radius:0}
.hero .txtlink{color:var(--paper-head)}
.hero__tags{list-style:none;display:flex;flex-wrap:wrap;gap:10px 24px;margin:clamp(28px,3.2vw,40px) 0 0;padding:clamp(20px,2.4vw,26px) 0 0;border-top:1px solid rgba(247,250,252,.22)}
.hero__tags li{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:rgba(247,250,252,.74);display:inline-flex;align-items:center;gap:.8em}
.hero__tags li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--champagne);flex:none}
@media (max-width:860px){
  .hero{height:92svh;min-height:540px}
  .hero__scrim{background:linear-gradient(to top,rgba(33,42,49,.88) 0%,rgba(33,42,49,.56) 44%,rgba(33,42,49,.34) 72%,rgba(33,42,49,.46) 100%)}
  .hero__h{font-size:clamp(38px,9.5vw,58px);max-width:none}
  .hero__sub{font-size:var(--t-base)}
  .hero__inner{padding:100px 0 clamp(40px,7vh,72px)}
}

/* --- LOCATIONS: "One Standard" Atlas map centerpiece --- */
.aloc__top{display:block;max-width:760px;margin-bottom:clamp(40px,5vw,66px)}
.atlas{display:block;max-width:400px;margin:34px auto 0}
.aloc__intro .elabel{margin-bottom:24px}
.aloc__h{font-family:var(--serif);font-weight:600;font-size:clamp(33px,3.9vw,66px);line-height:1.0;letter-spacing:-.02em;margin-bottom:22px}
.aloc__h em{font-style:italic;color:var(--champagne-2)}
.aloc__tools{margin-top:clamp(26px,3vw,40px);display:flex;flex-direction:column;gap:18px;align-items:flex-start}
.aloc__geo{display:flex;align-items:center;gap:16px;flex-wrap:wrap;min-height:18px}
.aloc__geobtn{display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;min-height:24px;cursor:pointer;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--champagne-2);transition:color .3s}
.aloc__geobtn:hover{color:var(--ink-head)}
.aloc__geoout{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--ink-head);opacity:0;transition:opacity .4s}
.aloc__geoout.show{opacity:1}

.atlas{margin:0;position:relative}
.atlas__svg{width:100%;height:auto;display:block;overflow:visible}
.atlas__grid line{stroke:rgba(33,42,49,.09)}
.atlas__net{fill:none;stroke:var(--champagne);stroke-width:1.7;opacity:.62;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2.6s var(--ease)}
.atlas.is-in .atlas__net{stroke-dashoffset:0}
html.reveal-all .atlas__net{stroke-dashoffset:0}
.atlas__labels text{font-family:var(--sans);font-size:23px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;fill:var(--champagne-2)}
.atlas__pt circle{fill:var(--ink);transition:fill .3s var(--ease)}
.atlas__pt .atlas__halo{fill:none;stroke:var(--champagne);stroke-width:1.6;opacity:0;transform-box:fill-box;transform-origin:center}
.atlas__pt text{font-family:var(--sans);font-size:27px;font-weight:600;fill:var(--ink-head);text-anchor:middle;opacity:0;transition:opacity .25s var(--ease);pointer-events:none}
.atlas__pt:hover circle:not(.atlas__halo){fill:var(--champagne-2)}
.atlas__pt:hover text{opacity:1}
.atlas__pt.is-on circle:not(.atlas__halo){fill:var(--champagne-2)}
.atlas__pt.is-dim{opacity:.18}
.atlas__pt.is-near circle:not(.atlas__halo){fill:var(--champagne-2)}
.atlas__pt.is-near text{opacity:1}
.atlas__pt.is-near .atlas__halo{opacity:.75;animation:atlasPulse 1.9s var(--ease) infinite}
@keyframes atlasPulse{0%{transform:scale(1);opacity:.7}70%{transform:scale(3.4);opacity:0}100%{transform:scale(3.4);opacity:0}}
@media (prefers-reduced-motion:reduce){.atlas__net{transition:none;stroke-dashoffset:0}.atlas__pt.is-near .atlas__halo{animation:none}}

@media (max-width:860px){
  .aloc__top{grid-template-columns:1fr;gap:30px}
  .atlas{order:2;max-width:540px;margin-inline:auto;width:100%}
  .atlas__labels text{font-size:30px}
  .atlas__pt text{font-size:34px}
}

/* --- Concierge booking drawer --- */
.bd[hidden]{display:none}
.bd{position:fixed;inset:0;z-index:200;display:flex;justify-content:flex-end}
.bd__scrim{position:absolute;inset:0;background:rgba(4,17,26,.5);opacity:0;transition:opacity .4s var(--ease);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.bd.open .bd__scrim{opacity:1}
.bd__panel{position:relative;width:min(460px,100%);background:var(--porcelain);height:100%;overflow-y:auto;transform:translateX(101%);transition:transform .42s var(--ease);box-shadow:-30px 0 80px rgba(33,42,49,.22)}
.bd.open .bd__panel{transform:none}
.bd__x{position:absolute;top:20px;right:22px;background:none;border:0;font-size:30px;line-height:1;color:var(--ink-mute);cursor:pointer;font-family:var(--serif);z-index:2}
.bd__x:hover{color:var(--ink-head)}
.bd__inner{padding:clamp(34px,5vw,54px) clamp(26px,4vw,42px)}
.bd__inner .elabel{margin-bottom:18px}
.bd__h{font-family:var(--serif);font-weight:600;font-size:clamp(29px,3.6vw,40px);line-height:1.0;letter-spacing:-.02em;margin-bottom:12px;color:var(--ink-head)}
.bd__sub{font-size:13.5px;color:var(--ink-mute);line-height:1.55;margin-bottom:28px;max-width:34ch}
.bd__step{margin-bottom:26px;padding-top:24px;border-top:1px solid var(--line-light)}
.bd__q{display:flex;align-items:baseline;gap:10px;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-head);margin-bottom:16px}
.bd__n{font-family:var(--serif);font-style:italic;font-size:15px;color:var(--champagne-2)}
.bd__locs{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:264px;overflow-y:auto}
.bd__loc{text-align:left;background:none;border:1px solid var(--line-light);padding:11px 13px;cursor:pointer;transition:border-color .25s,background .25s;display:flex;flex-direction:column;gap:3px}
.bd__loc:hover{border-color:var(--ink)}
.bd__loc.is-sel{border-color:var(--ink);background:var(--ink)}
.bd__loc.is-sel .bd__loccity{color:var(--porcelain)}
.bd__loc.is-sel .bd__locstate{color:var(--champagne)}
.bd__loccity{font-family:var(--serif);font-size:17px;color:var(--ink-head);line-height:1.1}
.bd__locstate{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2)}
.bd__goals{display:flex;flex-wrap:wrap;gap:8px}
.bd__chip{background:none;border:1px solid var(--line-light);padding:9px 15px;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.05em;cursor:pointer;color:var(--ink-mute);transition:background .25s,color .25s,border-color .25s}
.bd__chip:hover{border-color:var(--ink)}
.bd__chip.is-sel{background:var(--ink);color:var(--porcelain);border-color:var(--ink)}
.bd__go{width:100%;margin-top:6px}
.bd__go[aria-disabled="true"]{opacity:.38;pointer-events:none}
.bd__note{font-size:11px;color:var(--ink-mute);margin-top:14px;text-align:center;letter-spacing:.02em;line-height:1.5}
@media (max-width:520px){.bd__locs{grid-template-columns:1fr 1fr}.bd__panel{width:100%}}

/* --- Accessibility: visible focus --- */
a:focus-visible,button:focus-visible,.chip:focus-visible,.bd__loc:focus-visible{outline:2px solid var(--champagne-2);outline-offset:3px}

/* Marquee → quiet small-caps proof strip (Codex: cut or quiet) */
.mq__t>span{font-family:var(--sans);font-style:normal;font-weight:600;font-size:clamp(12.5px,1.3vw,16px);letter-spacing:.18em;text-transform:uppercase;color:var(--paper-mute);padding:14px 0}
.mq__t>span::after{width:4px;height:4px;margin:0 clamp(18px,2.6vw,32px)}

/* Providers - clinical hover micro-interaction (hairline draws under the name) */
.aprov__name{position:relative;display:inline-block}
.aprov__name::after{content:"";position:absolute;left:0;bottom:-7px;width:32px;height:1px;background:var(--champagne);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.aprov__card:hover .aprov__name::after{transform:scaleX(1)}


.bigpic{position:relative;height:clamp(440px,74vh,780px);overflow:hidden;background:var(--ink)}
.bigpic__img{width:100%;height:100%;object-fit:cover;object-position:50% 44%;will-change:transform}
.bigpic::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(4,17,26,.55),transparent 42%);pointer-events:none}
.bigpic__cap{position:absolute;left:clamp(20px,5vw,64px);bottom:clamp(22px,4vw,46px);z-index:2;font-family:var(--sans);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:rgba(247,250,252,.82);display:flex;align-items:baseline;gap:.55em}
.bigpic__cap i{font-family:var(--serif);font-style:italic;text-transform:none;font-size:clamp(20px,2.2vw,30px);letter-spacing:0;color:var(--champagne)}

/* Manifesto - larger image */
.mani__grid{grid-template-columns:1.06fr 1fr}
@media (max-width:860px){.mani__grid{grid-template-columns:1fr}}

/* Treatments - bigger editorial images (Ray: more big pics) */
@media (min-width:761px){
  .atr__row{grid-template-columns:1.16fr .84fr;gap:clamp(36px,5vw,92px)}
  .atr__img{aspect-ratio:4/5}
}

/* ===== Why Back to 30 - credibility (real team photo, spec-style facts) ===== */
.prac{padding-block:var(--section)}
.prac__grid{display:grid;grid-template-columns:.9fr 1fr;gap:clamp(36px,5.5vw,92px);align-items:center}
.prac__media{position:relative;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-2);background:var(--ivory)}
.prac__media img{width:100%;height:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 26%}
.prac__media figcaption{position:absolute;left:20px;bottom:18px;display:flex;align-items:center;gap:10px;color:#fff;font-family:var(--sans);font-size:13px;letter-spacing:.005em;text-shadow:0 1px 16px rgba(0,0,0,.6)}
.prac__media .tick{width:20px;height:1px;background:var(--champagne);flex:none}
.prac__h{font-family:var(--serif);font-weight:500;font-size:clamp(32px,3.6vw,56px);line-height:1.0;letter-spacing:-.026em;color:var(--ink-head);margin:20px 0 0;text-wrap:balance}
.prac__lede{font-size:var(--t-lg);line-height:1.6;color:var(--ink-body);max-width:48ch;margin-top:24px}
.prac__facts{margin:clamp(30px,3.4vw,46px) 0 0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-light);border:1px solid var(--line-light);border-radius:var(--r);overflow:hidden}
.prac__facts>div{background:var(--white);padding:clamp(18px,1.9vw,26px)}
.prac__facts dt{font-family:var(--mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.13em;color:var(--champagne-2);margin-bottom:9px}
.prac__facts dd{margin:0;font-family:var(--serif);font-weight:500;font-size:clamp(15px,1.15vw,18.5px);line-height:1.3;color:var(--ink-head)}
@media (max-width:860px){
  .prac__grid{grid-template-columns:1fr;gap:clamp(26px,6vw,34px)}
  .prac__media img{aspect-ratio:3/4;max-height:64vh}
  .prac__h{font-size:clamp(30px,8.5vw,42px)}
}
@media (max-width:460px){
  .prac__facts{grid-template-columns:1fr}
}


.atr__spec{display:grid;grid-template-columns:repeat(3,1fr);margin:26px 0 24px;border-top:1px solid var(--line-light)}
.atr__spec>div{padding:14px 14px 13px 0;border-bottom:1px solid var(--line-light)}
.atr__spec dt{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin:0 0 8px}
.atr__spec dd{font-family:var(--serif);font-weight:500;font-size:clamp(16px,1.35vw,22px);color:var(--ink-head);margin:0;line-height:1;letter-spacing:-.01em}
.atr__pop{margin-top:2px}
@media (max-width:560px){.atr__spec dd{font-size:15px}.atr__spec dt{font-size:8.5px;letter-spacing:.1em}}

/* ===== Providers - lead + portrait wall (rebuild, kills 4-up card grid) ===== */
.aprov__head{max-width:60ch;margin-bottom:clamp(40px,5vw,68px)}
.aprov__h{color:var(--ink-head);font-size:clamp(34px,4.2vw,72px);line-height:1.0;margin-top:22px}
.aprov__wall{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(30px,4.5vw,76px);align-items:stretch}
.aprov__feat{margin:0;display:flex;flex-direction:column}
.aprov__featimg{margin:0;overflow:hidden;aspect-ratio:4/5;border-radius:var(--r);background:var(--ivory)}
.aprov__featimg img{width:100%;height:100%;object-fit:cover;object-position:50% 11%}
.aprov__featcap{margin-top:22px;padding-top:20px;border-top:1px solid var(--line-light)}
.aprov__role{font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2)}
.aprov__name{color:var(--ink-head);font-family:var(--serif);font-weight:500;font-size:clamp(24px,2.4vw,38px);line-height:1.02;margin:12px 0 9px}
.aprov__cred{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--ink-mute);text-transform:uppercase}
.aprov__spec{color:var(--ink-body);font-size:var(--t-base);line-height:1.55;margin-top:16px;max-width:42ch}
.aprov__rest{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;justify-content:flex-end}
.aprov__mini{display:grid;grid-template-columns:auto 1fr;gap:clamp(16px,1.6vw,24px);align-items:center;padding:clamp(18px,2vw,28px) 0;border-top:1px solid var(--line-light)}
.aprov__mini:last-child{border-bottom:1px solid var(--line-light)}
.aprov__mini figure{margin:0;width:clamp(66px,7vw,96px);aspect-ratio:1/1;overflow:hidden;border-radius:3px;flex:none;background:var(--ivory)}
.aprov__mini img{width:100%;height:100%;object-fit:cover;object-position:50% 11%}
.aprov__minib h4{color:var(--ink-head);font-family:var(--serif);font-weight:500;font-size:clamp(18px,1.5vw,25px);line-height:1.04;margin-bottom:6px}
.aprov__minib span{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute)}
.aprov__seeall{margin-top:clamp(30px,4vw,52px)}
@media (max-width:860px){.aprov__wall{grid-template-columns:1fr;gap:34px}}

/* ===== Journey - mono-indexed steps (rebuild, no big serif numerals) ===== */
.jrn2{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(34px,5vw,84px);align-items:start}
.jrn2__head .elabel{margin-bottom:24px}
.jrn2__h{color:var(--ink-head);font-size:clamp(34px,4vw,64px);line-height:1.0;margin:0}
.jrn2__lede{color:var(--ink-body);font-size:var(--t-lg);line-height:1.5;max-width:32ch;margin-top:24px}
.jrn2__steps{list-style:none;margin:0;padding:0}
.jstep2{display:grid;grid-template-columns:auto 1fr;gap:clamp(18px,2.4vw,40px);align-items:baseline;padding:clamp(22px,2.4vw,32px) 0;border-top:1px solid var(--line-light)}
.jstep2:last-child{border-bottom:1px solid var(--line-light)}
.jstep2__idx{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--champagne-2);font-variant-numeric:tabular-nums}
.jstep2__t{color:var(--ink-head);font-family:var(--serif);font-weight:500;font-size:clamp(20px,1.9vw,28px);line-height:1.05;margin-bottom:9px}
.jstep2__d{color:var(--ink-body);font-size:var(--t-base);line-height:1.5;max-width:40ch}
@media (max-width:860px){.jrn2{grid-template-columns:1fr;gap:30px}}

/* ===== Payment - quiet compact band (rebuild, no SaaS card) ===== */
.apay{padding-block:clamp(60px,7vw,108px);background:var(--porcelain);border-top:1px solid var(--line-light)}
.apay__wrap{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:center}
.apay__l .elabel{margin-bottom:18px}
.apay__h{font-size:clamp(28px,3vw,48px);line-height:1.0;margin-bottom:16px}
.apay__copy{font-size:var(--t-lg);color:var(--ink-mute);line-height:1.55;max-width:44ch}
.apay__facts{display:grid;grid-template-columns:repeat(3,1fr);margin:0;border-top:1px solid var(--line-light)}
.apay__facts>div{padding:18px 14px 18px 0;border-bottom:1px solid var(--line-light)}
.apay__facts dt{font-family:var(--serif);font-weight:500;font-size:clamp(17px,1.4vw,23px);color:var(--ink-head);margin:0 0 7px;line-height:1.05;letter-spacing:-.01em}
.apay__facts dd{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);margin:0}
@media (max-width:760px){.apay__wrap{grid-template-columns:1fr;gap:26px}}

/* Reviews - hanging punctuation, no decorative quote mark */
.rev__lead blockquote{hanging-punctuation:first}

/* ===== Treatment room - full-bleed cinematic (differentiates from manifesto split) ===== */
.aroom{position:relative;min-height:clamp(520px,82vh,820px);display:flex;align-items:flex-end;overflow:hidden;background:var(--ink)}
.aroom__v{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.aroom__scrim{position:absolute;inset:0;background:linear-gradient(to top,rgba(4,17,26,.84),rgba(4,17,26,.28) 50%,rgba(4,17,26,.42));pointer-events:none}
.aroom__cap{position:relative;z-index:2;padding-bottom:clamp(40px,6vw,82px);padding-top:clamp(60px,8vw,120px)}
.aroom__cap .elabel{margin-bottom:20px}
.aroom__h{color:var(--paper-head);font-family:var(--serif);font-weight:500;font-size:clamp(38px,5vw,84px);line-height:.98;max-width:15ch}
.aroom__h em{font-style:italic;color:var(--champagne)}
.aroom__lede{color:var(--paper-body);font-size:var(--t-lg);line-height:1.5;max-width:42ch;margin-top:22px}


@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/cormorant-500.woff2') format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/cormorant-500.woff2') format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/cormorant-600.woff2') format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/cormorant-700.woff2') format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:500;font-display:swap;src:url('../fonts/cormorant-500i.woff2') format('woff2')}
/* Metric-compatible serif fallbacks (CLS fix, R2 fix pass): before Cormorant arrives, text renders in a
   local serif size-adjusted to Cormorant's advance widths, so the swap reflows nothing (the hero H1 was
   wrapping 2 lines in fallback vs 1 line in Cormorant = a 0.17 layout shift). Values computed with
   fonttools from cormorant-500.woff2 vs each local font (freq-weighted a-z+space avg advance / upm), and
   verified against the live hero: fonts-blocked + fallback == fonts-loaded geometry. Three twins because
   Georgia is absent on Android and in the PageSpeed lab (Roboto covers both). */
@font-face{font-family:'Cormorant Fallback';src:local('Georgia');size-adjust:88.21%;ascent-override:104.75%;descent-override:32.54%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback T';src:local('Times New Roman');size-adjust:97.07%;ascent-override:95.19%;descent-override:29.57%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback R';src:local('Roboto');size-adjust:87.57%;ascent-override:105.52%;descent-override:32.77%;line-gap-override:0%}

:root{
  /* Brand kit exact (Erica/Canva 2026-07-15): dark #25363f, red #b81c2c, slate #7795a4,
     pale blue #dde9ef, whites #ffffff/#f6f6f6. Non-kit values below are tints/shades of these. */
  --ink:#25363f; --ink-2:#2f3f4a; --ink-3:#17232b;
  --porcelain:#fdfdfb; --ivory:#ecf3f6; --white:#ffffff;
  --champagne:#b81c2c; --champagne-2:#9e1724; --champagne-soft:rgba(184,28,44,.13);
  --clay:#dde9ef; --mist:#dde9ef; --cocoa:#7795a4;
  --ink-head:#25363f; --ink-body:#3d4e59; --ink-mute:#5b6e7a;
  --paper-head:#f7fafc; --paper-body:rgba(247,250,252,.78); --paper-mute:rgba(247,250,252,.55);
  --line-light:rgba(37,54,63,.12); --line-dark:rgba(247,250,252,.16);
  --serif:"Cormorant Garamond","Cormorant Fallback","Cormorant Fallback T","Cormorant Fallback R",Georgia,"Times New Roman",serif;
  --slate:#7795a4; --slate-2:#5a798b; --accent-on-dark:var(--clay); /* dark-section accents (footer headers, wordmark, dark eyebrows) = brand pale blue; the brand's --champagne token is crimson, reserved for CTAs/accents */
}
/* Cormorant runs lighter than Sentient at display sizes - add presence */
.hero__h,.prac__h,.atr__h,.aprov__h,.aloc__h,.jrn2__h,.stmt__h,.aroom__h,.apay__h,.mani__body h2,.rev__head h2,.fcta h2{font-weight:600;letter-spacing:-.012em}
/* crimson accent reads muddy on espresso - lift kickers/labels on dark sections */
.dark .elabel,.aroom .elabel,.fcta .eyebrow,.ighz.dark .eyebrow{color:var(--accent-on-dark)}

/* ============================================================
   BACK TO 30 - component styles (nav logo, team, proof, quiz)
   ============================================================ */
/* Nav logo swap: white over dark hero, full-color when stuck */
.nav__logo{display:inline-flex;align-items:center}
.nav__logoimg{height:30px;width:auto;display:block}
.nav__logoimg--dark{display:none}
.nav.stuck .nav__logoimg--light{display:none}
.nav.stuck .nav__logoimg--dark{display:block}
.foot__logo{height:34px;width:auto;aspect-ratio:5/1;display:block;margin-bottom:18px}

/* Italic serif accent */
.hero__h .serif-i{font-style:italic;font-weight:500}
.quiz__title .serif-i,.aroom__h .serif-i,.mani__body .serif-i{font-style:italic;font-weight:500;color:var(--champagne)}

/* Team: intro + credentials wall (no fabricated faces) */
.aprov__intro{max-width:74ch;margin:16px 0 0;color:var(--ink-body);font-size:var(--t-lg);line-height:1.55}
.aprov__wall{display:grid;grid-template-columns:0.92fr 1.08fr;gap:36px;align-items:start;margin-top:40px}
.aprov__rest--creds{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.aprov__credcard{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r);padding:16px 18px}
.aprov__credcard h4{margin:0 0 4px;font-family:var(--sans);font-size:var(--t-base);font-weight:600;color:var(--ink-head);letter-spacing:-.01em;line-height:1.2}
.aprov__credcard span{font-family:var(--mono);font-size:11px;letter-spacing:.02em;color:var(--ink-mute);text-transform:uppercase}
@media(max-width:860px){.aprov__wall{grid-template-columns:1fr;gap:28px}}
@media(max-width:520px){.aprov__rest--creds{grid-template-columns:1fr}}

/* Proof stat band (real, verifiable) */
.proofstats{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-content:start}
.pstat{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:26px 24px}
.pstat__n{display:block;font-family:var(--serif);font-weight:600;font-size:clamp(34px,4.2vw,54px);line-height:1;color:var(--champagne);letter-spacing:-.02em}
.pstat__n--sm{font-size:clamp(20px,2.3vw,28px);color:var(--ink-head)}
.pstat__l{display:block;margin-top:10px;color:var(--ink-body);font-size:var(--t-sm);line-height:1.45}
.pstat--wide{grid-column:1/-1}
.rev__intro{margin:16px 0 0;color:var(--ink-body);font-size:var(--t-base);line-height:1.55;max-width:46ch}
@media(max-width:520px){.proofstats{grid-template-columns:1fr}}

/* Location hours + static city chips */
.lc__hrs{margin:6px 0 0;font-family:var(--mono);font-size:10.5px;letter-spacing:.01em;color:var(--ink-mute);text-transform:uppercase}
.loc__filters--static{display:flex;flex-wrap:wrap;gap:8px}
.chip--static{display:inline-flex;align-items:center;padding:8px 15px;border-radius:var(--r-pill);background:var(--champagne-soft);color:var(--champagne-2);font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}

/* Footer disclaimer */
.foot__disc{margin:30px 0 0;padding-top:22px;border-top:1px solid var(--line-dark);color:var(--paper-mute);font-size:12px;line-height:1.6;max-width:780px}

/* ---------- Self-qualifier quiz ---------- */
.quiz__head{text-align:center;max-width:700px;margin:0 auto 42px}
.quiz__title{font-family:var(--serif);font-weight:600;font-size:var(--t-h2);line-height:1.06;letter-spacing:-.015em;color:var(--ink-head);margin:14px 0 0}
.quiz__sub{margin:16px auto 0;max-width:54ch;color:var(--ink-body);font-size:var(--t-lg);line-height:1.5}
.quiz__card{max-width:780px;margin:0 auto;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);box-shadow:var(--sh-2);padding:clamp(24px,4vw,44px);position:relative;min-height:330px}
.quiz__top{display:flex;align-items:center;gap:16px;margin-bottom:30px}
.quiz__steplab{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute);white-space:nowrap}
.quiz__progress{flex:1;height:4px;background:var(--ivory);border-radius:var(--r-pill);overflow:hidden}
.quiz__bar{display:block;height:100%;background:var(--champagne);border-radius:var(--r-pill);transition:width .5s var(--ease)}
.quiz__q{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:0 0 22px;line-height:1.2}
.quiz__opts{display:grid;gap:12px}
.quiz__opt{display:block;width:100%;text-align:left;padding:17px 22px;border:1px solid var(--line-light);border-radius:var(--r);background:var(--porcelain);color:var(--ink-head);font-family:var(--sans);font-size:var(--t-base);font-weight:500;cursor:pointer;transition:border-color .2s var(--ease),background .2s var(--ease),transform .2s var(--ease)}
.quiz__opt:hover{border-color:var(--champagne);background:var(--champagne-soft);transform:translateY(-1px)}
.quiz__back{position:absolute;left:clamp(24px,4vw,44px);bottom:16px;background:none;border:none;color:var(--ink-mute);font-family:var(--mono);font-size:12px;cursor:pointer;padding:6px 0}
.quiz__back:hover{color:var(--champagne)}
.quiz__result-lab{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--champagne-2)}
.quiz__result-h{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);margin:8px 0 24px;line-height:1.1}
.quiz__result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.quiz__result-grid--one{grid-template-columns:1fr;max-width:360px}
.quiz__optcard{display:flex;flex-direction:column;border:1px solid var(--line-light);border-radius:var(--r);overflow:hidden;text-decoration:none;background:var(--porcelain);transition:box-shadow .2s var(--ease),transform .2s var(--ease),border-color .2s var(--ease)}
.quiz__optcard:hover{box-shadow:var(--sh-2);transform:translateY(-2px);border-color:var(--champagne)}
.quiz__optcard-media{display:block;aspect-ratio:4/3;overflow:hidden}
.quiz__optcard-media img{width:100%;height:100%;object-fit:cover}
.quiz__optcard-body{padding:16px 18px;display:flex;flex-direction:column;gap:7px}
.quiz__optcard-name{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);line-height:1.1}
.quiz__optcard-blurb{font-size:var(--t-sm);color:var(--ink-body);line-height:1.45;flex:1}
.quiz__optcard .text-link{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--champagne-2);margin-top:2px}
.quiz__result-foot{margin-top:30px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px}
.quiz__disclaimer{font-size:12px;color:var(--ink-mute);max-width:48ch;line-height:1.5;margin:0}
.quiz__restart{margin-top:12px;background:none;border:none;color:var(--ink-mute);font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}
.quiz__restart:hover{color:var(--champagne)}
.quiz__browse{text-align:center;margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:14px}
.quiz__browse>span{font-size:var(--t-sm);color:var(--ink-mute)}
.quiz__browse-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.quiz__browse-pills a{padding:9px 18px;border-radius:var(--r-pill);border:1px solid var(--line-light);background:var(--white);color:var(--ink-head);text-decoration:none;font-size:var(--t-sm);font-weight:500;transition:border-color .2s var(--ease),color .2s var(--ease)}
.quiz__browse-pills a:hover{border-color:var(--champagne);color:var(--champagne)}
.quiz__browse-all{background:var(--ink)!important;color:var(--paper-head)!important;border-color:var(--ink)!important}
@media(max-width:680px){.quiz__result-grid{grid-template-columns:1fr;max-width:380px;margin:0 auto}.quiz__back{position:static;margin-top:18px}}

/* ---------- Library (editorial content hub) ---------- */
.lib__head{display:flex;justify-content:space-between;align-items:flex-end;gap:28px;flex-wrap:wrap;margin-bottom:42px}
.lib__h{font-family:var(--serif);font-weight:600;font-size:var(--t-h2);color:var(--ink-head);margin:12px 0 0;letter-spacing:-.015em}
.lib__lede{margin:14px 0 0;max-width:54ch;color:var(--ink-body);font-size:var(--t-lg);line-height:1.5}
.lib__all{white-space:nowrap;padding-bottom:6px}
.lib__grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;gap:20px}
.libcard{border-radius:var(--r-l)}
.libcard a{display:flex;flex-direction:column;height:100%;text-decoration:none;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);overflow:hidden;transition:box-shadow .25s var(--ease),transform .25s var(--ease)}
.libcard a:hover{box-shadow:var(--sh-2);transform:translateY(-3px)}
.libcard__media{display:block;aspect-ratio:16/10;overflow:hidden}
.libcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.libcard a:hover .libcard__media img{transform:scale(1.05)}
.libcard__body{padding:20px 22px;display:flex;flex-direction:column;gap:8px;flex:1}
.libcard__cat{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--champagne-2)}
.libcard__title{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);line-height:1.16}
.libcard__excerpt{font-size:var(--t-sm);color:var(--ink-body);line-height:1.5;flex:1}
.libcard .text-link{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--champagne-2);margin-top:auto;padding-top:4px}
.libcard--feat{grid-column:span 2;grid-row:span 2}
.libcard--feat .libcard__media{aspect-ratio:auto;height:100%;min-height:300px}
.libcard--feat .libcard__title{font-size:var(--t-h3)}
@media(max-width:980px){.lib__grid{grid-template-columns:repeat(2,1fr)}.libcard--feat{grid-column:span 2;grid-row:auto}.libcard--feat .libcard__media{aspect-ratio:16/10;min-height:0}}
@media(max-width:560px){.lib__grid{grid-template-columns:1fr}.libcard--feat{grid-column:span 1}}

/* Ensure the Upstate-SC atlas map renders (force visible grid at desktop) */
@media(min-width:861px){
  #locations .aloc__top{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,4vw,56px);align-items:center;max-width:none}
  #locations .aloc__intro{order:0}
  #locations .atlas{display:block;order:0;max-width:560px;width:100%;margin-inline:0}
}
.atlas__svg{min-height:300px}

/* Static hero/media (video removed for fast LCP) */
.hero__pic{position:absolute;inset:0;display:block;margin:0}
.hero .hero__v,.aroom .aroom__v,.fcta .fcta__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* Deferred hero loop fade-in (over the LCP poster image) */
.hero__loop{opacity:0;transition:opacity 1.3s var(--ease);z-index:1;pointer-events:none}
.hero__loop.is-playing{opacity:1}
.hero .hero__scrim{z-index:2}
.hero .hero__inner{position:relative;z-index:3}

/* Luxury hero: full-height, bottom-anchored, minimal, cream eyebrow */
.hero{height:100svh;min-height:640px;align-items:flex-end}
.hero__inner{padding-top:0;padding-bottom:clamp(56px,9vh,116px)}
.hero .eyebrow{color:var(--paper-head);letter-spacing:.22em;margin-bottom:10px}
.hero__h{margin-top:20px}
.hero__cta{margin-top:clamp(26px,4vh,40px)}
@media(max-width:760px){ .hero{height:100svh} .hero__inner{padding-bottom:clamp(46px,7vh,84px)} .hero__h{margin-top:14px} }

/* ---------- Before/After slider ---------- */
.ba-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:900px){.ba-grid{grid-template-columns:1fr;max-width:440px;margin:0 auto}}
.ba-grid figure{margin:0}
.ba-grid figcaption{margin-top:12px;text-align:center;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute)}
.ba{position:relative;width:100%;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-2);background:var(--ink)}
.ba__pair{position:relative;aspect-ratio:4/5;overflow:hidden;--ba-pos:50%}
.ba__after,.ba__before-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ba__before-wrap{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--ba-pos)) 0 0)}
.ba__handle{position:absolute;top:0;bottom:0;left:var(--ba-pos);transform:translateX(-50%);width:44px;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:3}
.ba__line{position:absolute;top:0;bottom:0;left:50%;width:2px;background:#fff;transform:translateX(-50%);box-shadow:0 0 0 1px rgba(0,0,0,.18)}
.ba__knob{width:42px;height:42px;border-radius:50%;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-2);font-size:15px}
.ba__tag{position:absolute;bottom:14px;padding:6px 13px;border-radius:var(--r-pill);background:rgba(20,16,14,.55);color:#fff;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;z-index:2;backdrop-filter:blur(3px)}
.ba__tag--before{left:14px}.ba__tag--after{right:14px}
.ba__range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;z-index:4}

/* Hero v2: centered, video pops (minimal overlay), full face */
.hero{justify-content:center;align-items:flex-end}
.hero__inner{text-align:center;max-width:780px;margin-inline:auto;padding-bottom:clamp(44px,7vh,92px)}
.hero__cta{justify-content:center;flex-wrap:wrap}
.hero .eyebrow{justify-content:center;width:100%}
.hero__h{margin-inline:auto;max-width:20ch}
.hero__v{object-position:center 32%}
.hero__scrim{background:linear-gradient(to top,rgba(20,16,14,.55) 0%,rgba(20,16,14,.18) 24%,rgba(20,16,14,0) 46%)}

/* hero face position: shift left + up so full face shows */
.hero__v{object-position:36% 28%}

/* Real Results - solo centered slider */
.ba-solo{max-width:460px;margin:0 auto}
.ba-solo figure{margin:0}
.ba-solo figcaption{margin-top:14px;text-align:center;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute)}
.ba__pair--sq{aspect-ratio:1/1}

/* Real Results 2-up grid */
.ba-grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;max-width:740px;margin:0 auto}
.ba-grid2 figure{margin:0}
.ba-grid2 figcaption{margin-top:12px;text-align:center;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-mute)}
.ba__pair--por{aspect-ratio:4/5}
@media(max-width:680px){.ba-grid2{grid-template-columns:1fr;max-width:420px}}

/* Static editorial portrait hero */
.hero__v{object-position:center 24%}
.hero__scrim{background:linear-gradient(to top,rgba(20,16,14,.62) 0%,rgba(20,16,14,.24) 27%,rgba(20,16,14,.02) 54%)}
/* WCAG 1.4.3: the eyebrow + subhead sit over the model's bright skin, where the base scrim alone
   leaves them well under 4.5:1. A soft, feathered dark plate behind ONLY the text block (not the whole
   face) lifts every line clear of 4.5:1 while the eyes/brows/hair stay lit. Sits above the base scrim,
   below the text (hero__inner is position:relative;z-index:3). */
.hero__inner::before{content:"";position:absolute;z-index:-1;pointer-events:none;
  left:50%;bottom:0;transform:translateX(-50%);
  width:min(1120px,140vw);height:min(96%,760px);
  background:radial-gradient(105% 68% at 50% 100%,rgba(8,6,5,.66) 0%,rgba(8,6,5,.44) 40%,rgba(8,6,5,.2) 64%,rgba(8,6,5,.06) 82%,transparent 94%)}
/* Kicker chip: a near-opaque frosted backing behind ONLY the overline, so its contrast is a clean,
   determinable 4.5:1+ over the bright hero photo (WCAG 2.2 AA) without darkening the models. A crisp
   rounded chip reads as an intentional kicker, not the smear a feathered pill created. */
.hero .eyebrow{display:inline-flex;align-items:center;width:auto;max-width:calc(100% - 28px);
  padding:7px 19px;border-radius:100px;background:rgba(10,8,7,.58);
  border:1px solid rgba(247,250,252,.18);-webkit-backdrop-filter:blur(10px) saturate(1.1);backdrop-filter:blur(10px) saturate(1.1);
  box-shadow:0 1px 20px rgba(4,17,26,.28);text-shadow:0 1px 2px rgba(4,17,26,.6);margin-inline:auto}


.locg__cards{display:grid !important;grid-template-columns:repeat(2,1fr);gap:18px}
.lc{display:flex !important;flex-direction:column;gap:3px;position:relative;padding:24px !important;background:var(--white) !important;border:1px solid var(--line-light) !important;border-radius:var(--r-l) !important;box-shadow:var(--sh-1) !important;transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.lc::before{display:none !important}
.lc:hover{transform:translateY(-3px);box-shadow:var(--sh-2) !important;border-color:rgba(184,28,44,.3) !important}
.lc__state{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--champagne-2)}
.lc h4{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:2px 0 5px;line-height:1.1}
.lc__addr{color:var(--ink-body);font-size:var(--t-sm);line-height:1.5;margin:0}
.lc__ph{color:var(--ink-body);font-size:var(--t-sm);margin:2px 0 0}
.lc__hrs{margin:8px 0 0}
.lc__row{margin-top:16px;display:flex;align-items:center;gap:16px}
@media(max-width:680px){.locg__cards{grid-template-columns:1fr !important}}

/* ===== Consultation journey: cards that sticky-stack on mobile ===== */
.jrn2__steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.jstep2{display:flex !important;gap:18px;align-items:flex-start;padding:24px 26px !important;background:var(--white);border:1px solid var(--line-light) !important;border-radius:var(--r-l);box-shadow:var(--sh-1)}
.jstep2__idx{font-family:var(--mono);font-size:13px;color:var(--champagne-2);padding-top:4px;flex:none}
.jstep2__t{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:0 0 4px;line-height:1.15}
.jstep2__d{color:var(--ink-body);font-size:var(--t-sm);line-height:1.5}
#journey,#journey .wrap,.jrn2{overflow:visible}
@media(max-width:760px){
  .jrn2__steps{display:block}
  .jstep2{position:sticky;margin-bottom:16px;box-shadow:0 -2px 0 var(--ivory),var(--sh-2)}
  .jstep2:nth-child(1){top:84px}
  .jstep2:nth-child(2){top:100px}
  .jstep2:nth-child(3){top:116px}
  .jstep2:nth-child(4){top:132px}
}

/* ===== Inner pages (memberships / library / shop) ===== */
body.page-inner{background:var(--porcelain)}
body.page-inner .nav{position:fixed;background:rgba(255,255,255,.9);backdrop-filter:saturate(1.2) blur(10px);box-shadow:0 1px 0 var(--line-light)}
body.page-inner .nav__logoimg--light{display:none}
body.page-inner .nav__logoimg--dark{display:block}
.phead{padding:clamp(120px,16vh,180px) 0 clamp(40px,6vw,72px);text-align:center}
.phead .eyebrow{justify-content:center}
.phead h1{font-family:var(--serif);font-weight:600;font-size:var(--t-h1);line-height:1.02;letter-spacing:-.02em;color:var(--ink-head);margin:14px 0 0}
.phead p{max-width:56ch;margin:18px auto 0;color:var(--ink-body);font-size:var(--t-lg);line-height:1.55}
.pwrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut) clamp(70px,9vw,120px)}
/* membership tier cards */
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media(max-width:860px){.tiers{grid-template-columns:1fr;max-width:440px;margin:0 auto}}
.tier{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:34px 30px;display:flex;flex-direction:column;box-shadow:var(--sh-1);position:relative}
.tier--best{border-color:var(--champagne);box-shadow:var(--sh-2)}
.tier__flag{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--champagne);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:5px 14px;border-radius:var(--r-pill)}
.tier__name{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2)}
.tier__price{font-family:var(--serif);font-weight:600;font-size:clamp(40px,5vw,58px);color:var(--ink-head);line-height:1;margin:12px 0 2px}
.tier__price span{font-family:var(--sans);font-size:15px;color:var(--ink-mute);font-weight:500}
.tier__list{list-style:none;margin:22px 0 26px;padding:18px 0 0;border-top:1px solid var(--line-light);display:flex;flex-direction:column;gap:12px;flex:1}
/* Block flow (not flex) so an inline link inside a bullet (e.g. "2% loyalty points back...") stays
   in the running text instead of being blockified into its own narrow flex column that wraps badly. */
.tier__list li{position:relative;padding-left:18px;font-size:var(--t-sm);color:var(--ink-body);line-height:1.45}
.tier__list li::before{content:"";position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:50%;background:var(--champagne)}
.tier__list li a{overflow-wrap:anywhere}
/* shop product cards */
.shopgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
@media(max-width:980px){.shopgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.shopgrid{grid-template-columns:1fr;max-width:340px;margin:0 auto}}
.product{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);overflow:hidden;display:flex;flex-direction:column;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.product:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.product__img{aspect-ratio:1/1;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.product__img img{width:100%;height:100%;object-fit:contain;padding:18px}
.product__b{padding:18px 20px 22px;display:flex;flex-direction:column;gap:5px;flex:1}
.product__brand{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--champagne-2)}
.product__name{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);line-height:1.15;flex:1}
.product__row{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.product__price{font-family:var(--sans);font-weight:600;color:var(--ink-head)}

/* ============================================================
   b30l  ·  logo legibility + Specials floating CTA + WOW modal
   ============================================================ */

/* 1. Kill the leftover white-filter on the COLOR logo (showed when nav is
   stuck past the hero, and on every inner page). White stays white over hero. */
.nav__logo img.nav__logoimg--light{filter:brightness(0) invert(1)}
.nav__logo img.nav__logoimg--dark{filter:none}

/* 2. Floating bar: Specials + Book side by side (mobile) */
@media (max-width:860px){ .mcta{display:flex;gap:9px;align-items:stretch} }
.mcta .btn{width:auto;margin:0;font-size:11px;letter-spacing:.03em;padding-left:10px;padding-right:10px}
.mcta a[data-specials-open]{flex:0 0 33%;background:transparent;color:var(--porcelain);border-color:var(--champagne)}
.mcta a[data-specials-open]:hover{background:var(--champagne);border-color:var(--champagne);color:#fff}
.mcta a[data-book]{flex:1 1 auto;background:var(--porcelain);color:var(--ink);border-color:var(--porcelain)}
.mcta a[data-book]:hover{background:#fff;border-color:#fff;color:var(--ink)}

/* 3. THE SPECIALS MODAL */
.spm[hidden]{display:none}
.spm{position:fixed;inset:0;z-index:220;display:flex;align-items:center;justify-content:center;padding:18px}
.spm__scrim{position:absolute;inset:0;background:rgba(4,12,18,.62);opacity:0;transition:opacity .5s var(--ease);backdrop-filter:blur(6px) saturate(1.1);-webkit-backdrop-filter:blur(6px) saturate(1.1)}
.spm.open .spm__scrim{opacity:1}
.spm__panel{position:relative;width:min(560px,100%);max-height:90vh;display:flex;flex-direction:column;background:var(--porcelain);border-radius:20px;overflow:hidden;box-shadow:0 50px 130px rgba(4,12,18,.5);transform:translateY(30px) scale(.955);opacity:0;transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .45s ease;will-change:transform}
.spm.open .spm__panel{transform:none;opacity:1}
.spm__x{position:absolute;top:15px;right:18px;z-index:3;background:none;border:0;width:34px;height:34px;font-size:30px;line-height:1;color:rgba(255,255,255,.66);cursor:pointer;font-family:var(--serif)}
.spm__x:hover{color:#fff}

/* dark editorial header with crimson glow + gold rule */
.spm__hd{position:relative;padding:36px 34px 28px;background:radial-gradient(130% 150% at 82% -20%,rgba(184,28,44,.40),transparent 58%),linear-gradient(158deg,#2c211d 0%,#150e0c 100%);overflow:hidden}
.spm__hd::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(184,28,44,.9),transparent);opacity:.7}
.spm__eye{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--champagne)}
.spm__hd h3{font-family:var(--serif);font-weight:600;font-size:clamp(31px,4.4vw,43px);line-height:.98;letter-spacing:-.02em;color:#fff;margin:13px 0 14px}
.spm__valid{display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.03em;color:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.2);border-radius:100px;padding:5px 14px}
.spm__valid::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--champagne);box-shadow:0 0 0 3px rgba(184,28,44,.3)}

/* body list, staggered reveal */
.spm__bd{padding:4px 34px 6px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch}
.spm__item{display:flex;align-items:center;gap:16px;padding:17px 0;border-top:1px solid var(--line-light);opacity:0;transform:translateY(15px);transition:opacity .55s ease,transform .55s cubic-bezier(.16,1,.3,1)}
.spm__item:first-child{border-top:0}
.spm.open .spm__item{opacity:1;transform:none}
.spm.open .spm__item:nth-child(1){transition-delay:.10s}
.spm.open .spm__item:nth-child(2){transition-delay:.155s}
.spm.open .spm__item:nth-child(3){transition-delay:.21s}
.spm.open .spm__item:nth-child(4){transition-delay:.265s}
.spm.open .spm__item:nth-child(5){transition-delay:.32s}
.spm.open .spm__item:nth-child(6){transition-delay:.375s}
.spm.open .spm__item:nth-child(7){transition-delay:.43s}
.spm.open .spm__item:nth-child(8){transition-delay:.485s}
.spm__main{flex:1;min-width:0}
.spm__cat{font-family:var(--sans);font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2)}
.spm__t{font-family:var(--serif);font-weight:600;font-size:20px;line-height:1.12;color:var(--ink-head);margin:3px 0 4px}
.spm__o{font-size:12.5px;color:var(--ink-mute);line-height:1.45;margin:0}
.spm__more{display:inline-block;margin-top:6px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--champagne-2);text-decoration:underline;text-underline-offset:3px}
.spm__more:hover{color:var(--ink-head)}
.spm__val{flex:0 0 auto;text-align:right;font-family:var(--serif);font-weight:600;font-size:24px;line-height:1;color:var(--champagne);white-space:nowrap}
.spm__val small{display:block;font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-mute);margin-top:6px}

/* sticky footer CTA */
.spm__ft{padding:18px 34px 24px;border-top:1px solid var(--line-light);background:var(--porcelain)}
.spm__go{display:flex;width:100%;justify-content:center}
.spm__note{font-size:10.5px;color:var(--ink-mute);line-height:1.5;margin:12px 0 0;text-align:center}
@media (max-width:480px){
  .spm{padding:0;align-items:flex-end}
  .spm__panel{max-height:94vh;border-radius:20px 20px 0 0;width:100%}
  .spm__hd,.spm__bd,.spm__ft{padding-left:24px;padding-right:24px}
  .spm__val{font-size:21px}
  .spm__t{font-size:18px}
}

/* b30m · Hero headline: heavier + more legible over bright skin (esp. the "any age" accent) */
.hero__h{font-weight:700;text-shadow:0 1px 3px rgba(4,17,26,.5),0 2px 30px rgba(4,17,26,.48)}
.hero__h .serif-i{font-weight:700;color:var(--champagne);text-shadow:0 1px 3px rgba(4,17,26,.72),0 1px 14px rgba(4,17,26,.5)}

/* b30n · SC silhouette for the locations atlas */
.atlas__state{fill:rgba(184,28,44,.05);stroke:rgba(33,42,49,.26);stroke-width:1.6;stroke-linejoin:round}
/* b30r7 · SF-2: the b30n/b30o centered-card era rules are removed. The premium .lcard treatment
   (end of this sheet) is the single card design on BOTH surfaces, and Ray's spec is a LEFT-ALIGNED
   hierarchy, so homepage cards must compute text-align:start exactly like /locations/. The section
   heading (.shead.center), filter chips, and atlas keep their own centering, untouched. */

/* b30p · before/after sliders: smooth drag, no scroll-hijack on iOS (vertical swipe still scrolls) */
.ba{touch-action:pan-y;cursor:ew-resize;-webkit-user-select:none;user-select:none}
.ba__after,.ba__before-wrap img{pointer-events:none;-webkit-user-drag:none;-webkit-touch-callout:none}
.ba__before-wrap{will-change:clip-path}

/* b30q · Brand marquee under hero (authorized-provider trust strip) */
.mq{background:var(--porcelain);border-block:1px solid var(--line-light);padding:clamp(18px,2.4vw,26px) 0;overflow:hidden;position:relative}
.mq__eye{text-align:center;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 clamp(13px,1.6vw,18px)}
.mq__row{display:flex;overflow:hidden;position:relative}
.mq__row::before,.mq__row::after{content:"";position:absolute;top:0;bottom:0;width:clamp(40px,8vw,100px);z-index:2;pointer-events:none}
.mq__row::before{left:0;background:linear-gradient(90deg,var(--porcelain),rgba(255,255,255,0))}
.mq__row::after{right:0;background:linear-gradient(270deg,var(--porcelain),rgba(255,255,255,0))}
.mq__track{display:flex;align-items:center;width:max-content;margin:0;padding:0;list-style:none}
.mq:hover .mq__track{animation-play-state:paused}
.mq__track li{flex:0 0 auto;display:flex;align-items:center;font-family:var(--sans);font-weight:600;font-size:clamp(12.5px,1.4vw,15px);letter-spacing:.14em;text-transform:uppercase;color:rgba(41,54,62,.46);white-space:nowrap;transition:color .3s var(--ease)}
.mq__track li:hover{color:var(--ink-head)}
.mq__track li::after{content:"";width:4px;height:4px;margin:0 clamp(26px,3.6vw,52px);transform:rotate(45deg);background:var(--champagne);opacity:.6;flex:0 0 auto}
@keyframes mqScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.mq__track{animation:none}}

/* b30r · Mobile menu: in-menu logo (home) + close, top-anchored; team "+more" card */
.mobnav{justify-content:flex-start;padding-top:clamp(16px,2.4vh,24px)}
.mobnav__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:clamp(22px,5vh,46px)}
.mobnav__logo{display:inline-flex;align-items:center;border-bottom:0!important;padding:0!important}
.mobnav__logo img{height:30px;width:auto;filter:none}
.mobnav__close{background:none;border:0;color:var(--paper-head);font-family:var(--serif);font-size:38px;line-height:.6;cursor:pointer;padding:0 6px}
.nav.open .nav__burger{opacity:0;pointer-events:none}
.aprov__credcard--more{display:flex;align-items:center;justify-content:center;background:transparent;border-style:dashed}
.aprov__credcard--more a{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:600;font-size:var(--t-base);color:var(--champagne-2);letter-spacing:.01em}
.aprov__credcard--more a:hover{color:var(--ink-head)}
.aprov__credcard--more .arw{transition:transform .3s var(--ease)}
.aprov__credcard--more a:hover .arw{transform:translateX(4px)}

/* b30s · Brand marquee uses real (ink-recolored) brand logos */
.mq__track{gap:clamp(42px,6vw,84px)}
.mq__track li{padding:0}
.mq__track li::after{display:none}
.mq__track img{height:clamp(21px,2.7vw,29px);width:auto;display:block;opacity:.5;transition:opacity .3s var(--ease)}
.mq__track li:hover img{opacity:.9}
@media(prefers-reduced-motion:reduce){.mq__track{animation:none}}

/* b30t · marquee scrolls faster on mobile (felt too slow) */
@media (max-width:760px){ .mq__track{animation-duration:24s} }
@media (max-width:430px){ .mq__track{animation-duration:18s} }

/* b30u · marquee faster still on mobile */
@media (max-width:760px){ .mq__track{animation-duration:14s} }
@media (max-width:430px){ .mq__track{animation-duration:10s} }

/* b30v · inner pages always render the light nav (burger/links were white-on-light = invisible at top) */
body.page-inner .nav__burger span{background:var(--ink-head)}
body.page-inner .nav__links a:not(.btn){color:rgba(33,42,49,.82)}
body.page-inner .nav__links a:not(.btn):hover{color:var(--ink-head)}
body.page-inner .nav .btn{background:var(--champagne);color:#fff;border-color:var(--champagne)}
body.page-inner .nav .btn:hover{background:var(--champagne-2);color:#fff;border-color:var(--champagne-2)}

/* b30w · mobile tap targets >=44px (burger + secondary text links) */
.nav__burger{min-width:44px;min-height:44px;justify-content:center;align-items:center}
@media (hover:none){
  .txtlink,.elink{position:relative}
  .txtlink::before,.elink::before{content:"";position:absolute;top:-13px;bottom:-13px;left:-6px;right:-6px}
}

/* b30x · mobile-menu close (×) tap target >=44px */
.mobnav__close{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1}

/* b30y · Specials modal: scrollable body + iOS-safe height (header + items 5-8 were clipped; body wasn't scrolling) */
.spm__hd,.spm__ft{flex-shrink:0}
.spm__bd{min-height:0}                       /* lets the flex body shrink so overflow-y:auto engages */
.spm__panel{max-height:88vh;max-height:88dvh}
@media (max-width:480px){ .spm__panel{max-height:92vh;max-height:92dvh} }

/* ============================================================
   b30z · Cookie consent + Accessibility widget (site-wide, JS-injected)
   ============================================================ */
.ckb{position:fixed;left:clamp(14px,3vw,26px);bottom:clamp(14px,3vw,26px);z-index:160;max-width:430px;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);box-shadow:0 24px 70px rgba(33,42,49,.22);padding:20px 22px;opacity:0;transform:translateY(16px);transition:opacity .45s var(--ease),transform .45s var(--ease);visibility:hidden}
.ckb.show{opacity:1;transform:none;visibility:visible}
.ckb__t{font-size:13px;line-height:1.55;color:var(--ink-body);margin:0 0 16px}
.ckb__t a{color:var(--champagne-2);text-decoration:underline}
.ckb__btns{display:flex;gap:10px}
.ckb__b{flex:1;border-radius:0;padding:11px 14px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border:1px solid var(--ink);transition:background .25s,color .25s}
.ckb__b--ghost{background:transparent;color:var(--ink-head)}
.ckb__b--ghost:hover{background:var(--porcelain)}
.ckb__b--ok{background:var(--champagne);color:#fff;border-color:var(--champagne)}
.ckb__b--ok:hover{background:var(--champagne-2);border-color:var(--champagne-2)}
@media(max-width:560px){.ckb{left:12px;right:12px;bottom:12px;max-width:none}}

/* b87: accessibility widget = left-edge pull-out drawer tab, lower placement (Morgan call want,
   was a bottom-right circular fab). Tab rests tucked 14px off-screen; slides fully out on hover,
   keyboard focus, or while the panel is open. While the cookie banner (.ckb, bottom-left z160)
   is visible the tab tucks fully away so the two never stack; it returns on consent. */
.a11y-fab{position:fixed;left:0;bottom:clamp(120px,16vh,200px);z-index:150;width:46px;height:48px;border-radius:0 999px 999px 0;background:var(--ink);color:var(--porcelain);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 26px rgba(33,42,49,.28);transform:translateX(-14px);transition:transform .25s,background .25s}
.a11y-fab:hover,.a11y-fab:focus-visible{transform:translateX(0);background:var(--champagne)}
.a11y-fab[aria-expanded=true]{transform:translateX(0)}
body:has(.ckb.show) .a11y-fab{transform:translateX(-48px)}
.a11y-fab svg{width:23px;height:23px}
.a11y-panel{position:fixed;left:clamp(10px,2vw,20px);bottom:calc(clamp(120px,16vh,200px) + 58px);z-index:151;width:min(300px,calc(100vw - 28px));background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);box-shadow:0 28px 80px rgba(33,42,49,.26);padding:20px;opacity:0;transform:translateY(12px) scale(.97);transform-origin:bottom left;visibility:hidden;transition:opacity .3s var(--ease),transform .3s var(--ease)}
.a11y-panel.open{opacity:1;transform:none;visibility:visible}
.a11y-panel h3{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 14px;line-height:1.2}
.a11y-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--line-light);font-size:13px;color:var(--ink-body)}
.a11y-opt:first-of-type{border-top:0}
.a11y-opt button{position:relative;width:40px;height:22px;border-radius:22px;background:var(--line-light);border:0;cursor:pointer;transition:background .25s;flex:0 0 auto}
.a11y-opt button::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.a11y-opt button[aria-pressed=true]{background:var(--champagne)}
.a11y-opt button[aria-pressed=true]::after{transform:translateX(18px)}
.a11y-reset{margin-top:14px;width:100%;background:none;border:0;color:var(--ink-mute);font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding:6px}
.a11y-reset:hover{color:var(--ink-head)}
body:has(.mcta.show) .ckb{bottom:calc(clamp(14px,3vw,24px) + 72px)}
/* b30r7 · M1: the consent banner (z-index 160) sat over the open mobile menu (z-index 65) and
   intercepted the menu's "Book a Consultation" tap at 390. While the menu is open the banner yields
   entirely (same body:has pattern as the .mcta offset above); it returns, still undismissed, when
   the menu closes. pointer-events:none guarantees no click interception even mid-transition. */
body:has(.mobnav.open) .ckb{opacity:0;visibility:hidden;pointer-events:none}

html.a11y-text1{zoom:1.08}
html.a11y-text2{zoom:1.16}
html.a11y-contrast{--ink-body:#10161b;--ink-mute:#2f3b44}
html.a11y-readable{--serif:var(--sans)}
html.a11y-readable h1,html.a11y-readable h2,html.a11y-readable h3{letter-spacing:0}
html.a11y-motion *,html.a11y-motion *::before,html.a11y-motion *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
html.a11y-links a{text-decoration:underline!important}

/* b30aa · skip link + generated-page prose (services/categories/locations/legal) */
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;top:0;left:0;z-index:300;background:var(--ink);color:var(--porcelain);padding:0;font-size:13px}
.skip:focus{width:auto;height:auto;overflow:visible;clip:auto;clip-path:none;padding:12px 20px;border-radius:0 0 8px 0}
body.page-inner{overflow-x:clip}
.prose{max-width:74ch;margin:0 auto}
.prose h2{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);line-height:1.1;margin:clamp(38px,5vw,58px) 0 16px}
.prose h3{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:32px 0 12px}
.prose h4{font-family:var(--sans);font-weight:600;font-size:var(--t-base);letter-spacing:-.01em;color:var(--ink-head);margin:26px 0 10px}
.prose p{color:var(--ink-body);font-size:var(--t-base);line-height:1.7;margin:0 0 18px}
.prose ul,.prose ol{color:var(--ink-body);font-size:var(--t-base);line-height:1.7;margin:0 0 20px;padding-left:1.3em}
.prose li{margin:0 0 9px}
.prose a{color:var(--champagne-2);text-decoration:underline;text-underline-offset:2px}
.prose a.btn{color:var(--fg);text-decoration:none}
.prose h2 a,.prose h3 a{color:inherit;text-decoration:none}
.prose h2 a:hover,.prose h3 a:hover{color:var(--champagne-2)}
.prose strong{color:var(--ink-head);font-weight:600}
.prose>:first-child{margin-top:0}
/* Legal prose can contain long unbroken URLs (e.g. a GA opt-out support link) that overflow the
   column at 390. Let long tokens wrap so nothing clips. */
.prose p,.prose li,.prose a{overflow-wrap:anywhere}
.svc-hero{text-align:center}
.svc-cat-link{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2);margin-bottom:6px}
.svc-cta{margin-top:clamp(44px,6vw,72px);text-align:center;padding:clamp(34px,5vw,54px) 28px;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);max-width:680px;margin-inline:auto}
.svc-cta h2{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);margin:8px 0 14px}
.svc-cta p{color:var(--ink-body);margin:0 auto 22px;max-width:46ch}
.svc-related{margin-top:clamp(40px,5vw,64px)}
.svc-related h2{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2);text-align:center;margin-bottom:22px}
.svc-related__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;max-width:var(--maxw);margin:0 auto}
.svc-chip{display:block;padding:14px 18px;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r);color:var(--ink-head);text-decoration:none;font-family:var(--serif);font-size:18px;transition:border-color .25s,transform .25s}
.svc-chip:hover{border-color:var(--champagne);transform:translateY(-2px)}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:16px;margin-top:clamp(34px,5vw,56px)}
.cat-card{display:flex;flex-direction:column;padding:24px;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);text-decoration:none;transition:border-color .25s,transform .25s,box-shadow .25s}
.cat-card:hover{border-color:var(--champagne);transform:translateY(-3px);box-shadow:var(--sh-1)}
.cat-card h3{font-family:var(--serif);font-weight:600;font-size:21px;color:var(--ink-head);margin:0 0 6px}
.cat-card p{color:var(--ink-mute);font-size:15px;line-height:1.55;margin:0}
.cat-card .arw{color:var(--champagne-2);margin-top:14px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;font-weight:600}

/* b30ac · service hero image (real imagery pulled from live page) */
.svc-hero-img{margin:0 auto clamp(28px,4vw,48px);max-width:880px;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-1)}
.svc-hero-img img{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover}
.svc-hero{padding-bottom:clamp(24px,3vw,36px)}

/* b30ad · category grid section heading (heading-hierarchy fix h1->h2->h3) */
.cat-grid__h{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:clamp(28px,4vw,44px) 0 4px;text-align:center}

/* b30af · visible breadcrumbs (matches BreadcrumbList schema, restores parity w/ original) */
.crumbs{max-width:var(--maxw);margin:0 auto;padding:clamp(96px,12vh,128px) var(--gut) 0;font-family:var(--sans);font-size:12px;letter-spacing:.02em;color:var(--ink-mute);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.crumbs a{color:var(--ink-mute);text-decoration:none;transition:color .2s}
.crumbs a:hover{color:var(--champagne-2)}
.crumbs__sep{color:var(--line-dark);opacity:.6}
.crumbs [aria-current="page"]{color:var(--ink-head)}
.crumbs + .phead{padding-top:clamp(20px,3vw,34px)}

/* Locations map renders unconditionally (critical content, never gated behind scroll-reveal) */
.atlas{opacity:1 !important;transform:none !important;filter:none !important}
.atlas__net{stroke-dashoffset:0 !important}

/* b30s · Concern marquee (the full range): counter-scrolling verbatim concern/treatment belts behind a floating consult card */
.cmq{padding-block:var(--section) clamp(56px,6.5vw,104px);overflow:hidden}
.cmq__head{text-align:center;margin-bottom:clamp(30px,4vw,54px)}
.cmq__h{font-size:var(--t-h2);letter-spacing:-.02em}
.cmq__h .serif-i{font-style:italic;font-weight:500;color:var(--champagne)}
.cmq__belt{position:relative;display:flex;flex-direction:column;gap:clamp(20px,3vw,34px);padding-block:clamp(56px,7vw,96px)}
.cmq__row{display:flex;overflow:hidden;position:relative}
.cmq__row::before,.cmq__row::after{content:"";position:absolute;top:0;bottom:0;width:clamp(48px,10vw,140px);z-index:2;pointer-events:none}
.cmq__row::before{left:0;background:linear-gradient(90deg,var(--porcelain),rgba(255,255,255,0))}
.cmq__row::after{right:0;background:linear-gradient(270deg,var(--porcelain),rgba(255,255,255,0))}
.cmq__track{display:flex;align-items:center;width:max-content;margin:0;padding:0;list-style:none}
html.anim-on .cmq__track{animation:cmqL 84s linear infinite}
html.anim-on .cmq__row--rev .cmq__track{animation:cmqR 96s linear infinite}
.cmq:hover .cmq__track{animation-play-state:paused}
.cmq__track li{flex:0 0 auto;display:flex;align-items:center;white-space:nowrap;font-family:var(--serif);font-weight:500;font-size:clamp(22px,2.6vw,34px);letter-spacing:-.01em;color:var(--ink-head)}
.cmq__row--rev .cmq__track li{color:var(--ink-mute)}
.cmq__track li::after{content:"";width:5px;height:5px;margin:0 clamp(20px,2.6vw,38px);transform:rotate(45deg);background:var(--champagne);opacity:.55;flex:0 0 auto}
.cmq__card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;width:min(430px,calc(100vw - 2*var(--gut)));background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);box-shadow:var(--sh-2);padding:clamp(24px,3vw,36px);text-align:center}
.cmq__eyebrow{display:block;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--champagne-2);margin-bottom:12px}
.cmq__copy{margin:0 0 18px;color:var(--ink-body);font-size:var(--t-base);line-height:1.55}
@keyframes cmqL{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes cmqR{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.cmq__track{animation:none!important}}
@media(max-width:719px){
  .cmq__belt{padding-block:clamp(10px,3vw,20px)}
  .cmq__card{position:static;transform:none;margin:26px auto 0}
}

/* b30t · Giant closing wordmark, cropped at the footer's bottom edge */
.foot{overflow:hidden}
.foot__mark{font-family:var(--serif);font-weight:600;font-size:clamp(56px,10vw,160px);line-height:.9;letter-spacing:-.03em;text-align:center;white-space:nowrap;color:var(--paper-head);margin:clamp(44px,6.5vw,96px) 0 0;user-select:none;-webkit-user-select:none;pointer-events:none}
.foot__mark em{font-style:italic;font-weight:500;color:var(--accent-on-dark)}

/* b30u · Rotating studio line under the closing wordmark */
.foot__city{display:block;margin-top:clamp(10px,1.4vw,20px);font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(17px,2vw,28px);letter-spacing:.04em;color:var(--accent-on-dark);white-space:nowrap}
.foot__city [data-foot-city]{display:inline-block;transition:opacity .34s var(--ease),transform .34s var(--ease)}
.foot__city .is-out{opacity:0;transform:translateY(8px)}

/* b30v · Hero choreography (anim-on gated; static for no-JS, headless, reduced-motion) */
.hero__h .hw{display:inline-block;overflow:hidden;vertical-align:top;padding:.02em .1em .16em 0;margin:-.02em -.1em -.16em 0}
.hero__h .hwi{display:inline-block}
html.anim-on .hero__h .hwi{animation:heroWord 1.15s cubic-bezier(.19,1,.22,1) both}
html.anim-on .hero__h .hw:nth-child(1) .hwi{animation-delay:.18s}
html.anim-on .hero__h .hw:nth-child(2) .hwi{animation-delay:.28s}
html.anim-on .hero__h .hw:nth-child(3) .hwi{animation-delay:.38s}
html.anim-on .hero__h .hw:nth-child(4) .hwi{animation-delay:.5s}
@keyframes heroWord{from{transform:translateY(118%)}to{transform:translateY(0)}}
html.anim-on .hero .eyebrow{animation:heroEye 1.35s .08s cubic-bezier(.22,1,.36,1) both}
@keyframes heroEye{from{opacity:0;letter-spacing:.46em}}
html.anim-on .hero__cta{animation:heroFade 1s .95s cubic-bezier(.22,1,.36,1) both}
@keyframes heroFade{from{transform:translateY(16px)}}/* R2: transform-only entrance (no opacity fade) so the crimson CTA stays opaque and never trips a mid-animation contrast snapshot */
html.anim-on .hero__v{animation:heroSettle 2.8s cubic-bezier(.22,1,.36,1) both}
@keyframes heroSettle{from{transform:scale(1.07)}to{transform:scale(1.02)}}
@media(min-width:861px){html.anim-on .hero__v{animation:heroSettle 2.8s cubic-bezier(.22,1,.36,1) both,heroDrift 30s 2.8s linear infinite alternate}}
@keyframes heroDrift{from{transform:scale(1.02)}to{transform:scale(1.05)}}
html.reveal-all .hero__h .hwi,html.reveal-all .hero .eyebrow,html.reveal-all .hero__cta,html.reveal-all .hero__v{animation:none}

/* b30w · The Face, Mapped */
.fmap{padding-block:var(--section)}
.fmap__head{max-width:640px;margin-bottom:clamp(26px,3.6vw,48px)}
.fmap__h{font-size:var(--t-h2);letter-spacing:-.02em;margin-bottom:14px}
.fmap__h .serif-i{font-style:italic;font-weight:500;color:var(--champagne)}
.fmap__stage{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(28px,5vw,76px);align-items:center}
.fmap__stage>*{min-width:0}
.fmap__fig{margin:0}
.fmap__svg{width:100%;max-width:400px;height:auto;display:block;margin-inline:auto}
.fmap__line{fill:none;stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 2.1s cubic-bezier(.4,0,.2,1)}
.fmap__line--jaw{transition-delay:.75s;transition-duration:1.2s}
.fmap__line--throat{transition-delay:1.15s;transition-duration:1s}
.fmap__line--soft{stroke:var(--ink-head);stroke-width:1.5;opacity:.7;transition-delay:1.5s;transition-duration:.8s}
html.anim-on .fmap:not(.fmap-draw) .fmap__line{stroke-dashoffset:1;transition:none}
.fmap__pt{cursor:pointer}
.fmap__pt .fmap__hit{fill:transparent}
.fmap__pt .fmap__dot{fill:var(--champagne);transform-box:fill-box;transform-origin:center;transition:transform .55s cubic-bezier(.34,1.56,.64,1) 1.9s,opacity .4s 1.9s}
html.anim-on .fmap:not(.fmap-draw) .fmap__pt .fmap__dot{transform:scale(0);opacity:0;transition:none}
.fmap__pt .fmap__halo{fill:none;stroke:var(--champagne);stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
.fmap__pt.is-on .fmap__halo{animation:fmapPulse 2.2s ease-out infinite}
@keyframes fmapPulse{0%{transform:scale(.45);opacity:.55}70%{transform:scale(1.2);opacity:0}100%{transform:scale(1.2);opacity:0}}
html.reveal-all .fmap__line{stroke-dashoffset:0 !important;transition:none !important}
html.reveal-all .fmap__pt .fmap__dot{transform:none !important;opacity:1 !important;transition:none !important}
.fmap__tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:clamp(20px,2.6vw,30px)}
.fmap__tab{font-family:var(--mono);font-size:11.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute);background:none;border:1px solid var(--line-light);border-radius:var(--r-pill);padding:10px 16px;cursor:pointer;transition:color .25s var(--ease),border-color .25s var(--ease),background .25s var(--ease)}
.fmap__tab:hover{color:var(--ink-head);border-color:rgba(41,54,62,.34)}
.fmap__tab.is-on{color:var(--champagne-2);border-color:var(--champagne);background:var(--champagne-soft)}
.fmap__panels{min-height:170px}
.fmap__region{font-family:var(--serif);font-weight:500;font-size:var(--t-h3);margin:0 0 8px;color:var(--ink-head)}
.fmap__concerns{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 20px}
.fmap__tx{display:flex;flex-wrap:wrap;gap:10px}
.fmap__pill{display:inline-flex;align-items:center;gap:.5em;font-size:var(--t-sm);font-weight:600;color:var(--ink-head);text-decoration:none;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-pill);padding:13px 20px;box-shadow:var(--sh-1);transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.fmap__pill:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:rgba(184,28,44,.4)}
.fmap__pill .arw{transition:transform .35s var(--ease)}
.fmap__pill:hover .arw{transform:translateX(4px)}
.fmap-pop{animation:fmapPop .5s cubic-bezier(.22,1,.36,1)}
@keyframes fmapPop{from{opacity:0;transform:translateY(10px)}}
.fmap__cta{display:flex;align-items:center;gap:clamp(18px,2.4vw,30px);flex-wrap:wrap;margin-top:clamp(24px,3vw,36px)}
@media(max-width:860px){
  .fmap__stage{grid-template-columns:1fr;gap:14px}
  .fmap__svg{max-width:270px}
  .fmap__tabs{flex-wrap:nowrap;overflow-x:auto;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .fmap__tabs::-webkit-scrollbar{display:none}
  .fmap__tab{flex:0 0 auto}
  .fmap__panels{min-height:0}
}
@media(prefers-reduced-motion:reduce){.fmap__pt.is-on .fmap__halo{animation:none;opacity:.4}.fmap-pop{animation:none}}

/* b30x · Cross-page transitions (View Transitions API; no-op where unsupported) */
@view-transition{navigation:auto}
@media(prefers-reduced-motion:no-preference){
  ::view-transition-old(root){animation:vtOut .2s ease both}
  ::view-transition-new(root){animation:vtIn .3s ease-out both}
}
@keyframes vtOut{to{opacity:0}}
@keyframes vtIn{from{opacity:0}}

/* b30y · Micro-interactions */
.btn:active{transform:translateY(0) scale(.98)}
:where(a,button):focus-visible{outline:2px solid var(--champagne);outline-offset:3px}

/* b30z · Face map enrichment: blush disc, ring, crimson echo line */
.fmap__blush{transition:opacity 1.4s ease .2s}
.fmap__ring{fill:none;stroke:var(--champagne);stroke-width:1;opacity:.16;transition:opacity 1.2s ease 1.1s}
.fmap__echo{stroke:var(--champagne);stroke-width:1.6;opacity:.16;transition-delay:.35s}
html.anim-on .fmap:not(.fmap-draw) .fmap__blush{opacity:0;transition:none}
html.anim-on .fmap:not(.fmap-draw) .fmap__ring{opacity:0;transition:none}
html.reveal-all .fmap__blush{opacity:1 !important}
html.reveal-all .fmap__ring{opacity:.16 !important}

/* b31a · Face map photo mode (real portrait + positioned hotspots) */
.fmap__photo{position:relative;max-width:400px;margin-inline:auto;border-radius:999px 999px var(--r-l) var(--r-l);overflow:hidden;box-shadow:var(--sh-2)}
.fmap__photo img{width:100%;height:auto;display:block}
.fmap__photo .fmap__pt{position:absolute;left:var(--x);top:var(--y);width:44px;height:44px;margin:-22px 0 0 -22px;background:none;border:0;padding:0;cursor:pointer}
.fmap__photo .fmap__dot{position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--champagne);box-shadow:0 0 0 3px rgba(255,255,255,.9);transition:transform .3s var(--ease)}
.fmap__photo .fmap__pt:hover .fmap__dot{transform:scale(1.25)}
.fmap__photo .fmap__halo{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:1.5px solid var(--champagne);opacity:0}
.fmap__photo .fmap__pt.is-on .fmap__halo{animation:fmapPulse 2.2s ease-out infinite}
.fmap__photo{transition:opacity 1s var(--ease),transform 1s var(--ease)}
html.anim-on .fmap:not(.fmap-draw) .fmap__photo{opacity:0;transform:translateY(26px)}
.fmap__photo .fmap__pt{transition:opacity .5s var(--ease),transform .55s cubic-bezier(.34,1.56,.64,1)}
.fmap__photo .fmap__pt:nth-of-type(1){transition-delay:.5s}
.fmap__photo .fmap__pt:nth-of-type(2){transition-delay:.58s}
.fmap__photo .fmap__pt:nth-of-type(3){transition-delay:.66s}
.fmap__photo .fmap__pt:nth-of-type(4){transition-delay:.74s}
.fmap__photo .fmap__pt:nth-of-type(5){transition-delay:.82s}
.fmap__photo .fmap__pt:nth-of-type(6){transition-delay:.9s}
html.anim-on .fmap:not(.fmap-draw) .fmap__photo .fmap__pt{opacity:0;transform:scale(.4)}
html.reveal-all .fmap__photo{opacity:1 !important;transform:none !important}
html.reveal-all .fmap__photo .fmap__pt{opacity:1 !important;transform:none !important}
@media(max-width:860px){.fmap__photo{max-width:300px}}
@media(prefers-reduced-motion:reduce){.fmap__photo,.fmap__photo .fmap__pt{transition:none}}

/* b31b · Homepage overture: wordmark curtain lifts to reveal the hero (once per session) */
.curtain{display:none}
html.overture .curtain{display:flex;position:fixed;inset:0;z-index:9998;background:var(--porcelain);align-items:center;justify-content:center;pointer-events:none;animation:curtainLift 1s cubic-bezier(.76,0,.24,1) 1.35s both}
html.overture .curtain__inner{text-align:center;animation:curtainMark 1.1s cubic-bezier(.22,1,.36,1) .12s both}
.curtain__eyebrow{display:block;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.34em;text-transform:uppercase;color:var(--champagne-2);margin-bottom:14px}
.curtain__mark{font-family:var(--serif);font-weight:600;font-size:clamp(56px,10vw,150px);line-height:1;letter-spacing:-.02em;color:var(--ink-head)}
.curtain__mark em{font-style:italic;font-weight:500;color:var(--champagne)}
@keyframes curtainMark{from{opacity:0;transform:translateY(26px)}}
@keyframes curtainLift{to{transform:translateY(-101%);visibility:hidden}}
html.reveal-all .curtain{display:none !important}
html.overture .hero .eyebrow{animation-delay:1.42s}
html.overture .hero__h .hw:nth-child(1) .hwi{animation-delay:1.5s}
html.overture .hero__h .hw:nth-child(2) .hwi{animation-delay:1.6s}
html.overture .hero__h .hw:nth-child(3) .hwi{animation-delay:1.7s}
html.overture .hero__h .hw:nth-child(4) .hwi{animation-delay:1.82s}
html.overture .hero__cta{animation-delay:2.3s}

/* b31c · One-time shimmer sweep across the hero italic after it lands */
html.anim-on .hero__h .serif-i{background:linear-gradient(105deg,var(--champagne) 45%,#ffdfe2 50%,var(--champagne) 55%) no-repeat;background-size:260% 100%;background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;animation:heroShimmer 1.5s ease 1.85s both}
html.overture .hero__h .serif-i{animation-delay:3.15s}
@keyframes heroShimmer{from{background-position:0 0}to{background-position:100% 0}}
html.reveal-all .hero__h .serif-i{animation:none;background:none;-webkit-text-fill-color:currentColor;color:var(--champagne)}

/* b31d · Inner-page entrance: page header rises with a hairline draw (CSS-only, all pages) */
html.anim-on body.page-inner .phead .eyebrow{animation:pheadIn .9s cubic-bezier(.22,1,.36,1) .1s both}
html.anim-on body.page-inner .phead h1{animation:pheadIn 1.05s cubic-bezier(.22,1,.36,1) .22s both}
html.anim-on body.page-inner .phead p{animation:pheadIn 1s cubic-bezier(.22,1,.36,1) .38s both}
html.anim-on body.page-inner .crumbs{animation:pheadFade .8s ease .5s both}
@keyframes pheadIn{from{opacity:0;transform:translateY(22px)}}
@keyframes pheadFade{from{opacity:0}}
html.reveal-all body.page-inner .phead .eyebrow,html.reveal-all body.page-inner .phead h1,html.reveal-all body.page-inner .phead p,html.reveal-all body.page-inner .crumbs{animation:none}

/* b31e · Locations atlas v2: upstate constellation with labels, inset, card sync */
.atlas__blush{opacity:.6}
.atlas__ring{fill:none;stroke:var(--champagne);stroke-width:1;opacity:.13}
.atlas__names text{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.1em;fill:var(--ink-head);text-anchor:middle}
.atlas__inset .atlas__state{fill:rgba(184,28,44,.05);stroke:rgba(41,54,62,.3);stroke-width:6}
.atlas__zoom{fill:none;stroke:var(--champagne);stroke-width:9;opacity:.55}
.atlas__pt.is-on .atlas__halo{opacity:1;animation:fmapPulse 2.2s ease-out infinite}
.chip--static{cursor:pointer}
.lc.lc--flash{outline:2px solid var(--champagne);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.atlas__pt.is-on .atlas__halo{animation:none;opacity:.4}}
@media(max-width:860px){.atlas__names text{font-size:18px;letter-spacing:.08em}}

/* b32a · Recognition award panel (homepage "The Receipts" band). Replaces the duplicated
   counter grid; the award is the one proof element unique to this section. */
.award{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(30px,4.2vw,58px);box-shadow:var(--sh-1)}
.award__kick{margin:0 0 16px;font-family:var(--mono);font-size:var(--t-eyebrow);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2)}
.award__h{margin:0;font-family:var(--serif);font-weight:600;font-size:clamp(38px,4.6vw,72px);line-height:1.05;letter-spacing:-.015em;color:var(--ink-head)}
.award__h em{font-style:italic;color:var(--champagne)}
.award__rule{height:1px;background:var(--line-light);margin:clamp(22px,3vw,36px) 0}
.award__first{margin:0;font-size:var(--t-base);line-height:1.55;color:var(--ink-body);max-width:52ch}
.award__first strong{color:var(--ink-head)}

/* b32b · iOS marquee hardening (cmq). Real-device Safari lazily rasterizes the huge animated
   tracks and can scroll an unpainted hole into view; promote + pre-rasterize each belt.
   Also widen the phone edge fade so belt items fade out instead of hard-clipping mid-word. */
.cmq__row{transform:translateZ(0)}
.cmq__track{will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}
@media(max-width:719px){
  .cmq__row::before,.cmq__row::after{width:64px}
}
/* Brand marquee (.mq) gets the SAME iOS GPU hardening as .cmq above: promote the row and
   pre-rasterize the track so the authorized-provider belt never flickers on real iPhones. */
.mq__row{transform:translateZ(0)}
.mq__track{will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}

/* b32c · Mobile readability pass (Ray, 2026-07-06): raise every micro-type floor on phones.
   Token floors first, then the hardcoded px sizes that sit below them. Sitewide via inline_css. */
@media(max-width:719px){
  :root{--t-eyebrow:13px;--t-sm:15px;--t-base:17px}
  .eyebrow{font-size:13px}
  .elabel{font-size:12.5px}
  .nav .btn,.mcta .btn{font-size:12.5px}
  .mq__eye{font-size:12px}
  .prac__facts dt{font-size:12.5px}
  .prac__media figcaption,.mani__media figcaption{font-size:14px}
  .rev .nm,.rev .st{font-size:12.5px}
  .quiz__steplab,.quiz__result-lab,.quiz__restart,.quiz__optcard .text-link{font-size:12.5px}
  .quiz__back,.quiz__disclaimer{font-size:13.5px}
  .pay__note,.pay2__note,.pay__facts .f span{font-size:13.5px}
  .apay__facts dd{font-size:12px}
  .cmq__eyebrow{font-size:12.5px}
  .aprov__cred{font-size:12.5px}
  .lc__state,.locg__h span,.libcard__cat,.libcard .text-link,.product__brand{font-size:12.5px}
  .bigpic__cap{font-size:12px}
  .hero__tags li{font-size:12.5px}
  .hero__trust .ts span{font-size:13px}
  .hero__meta{font-size:14.5px}
  .foot__bot{font-size:13.5px}
  .qcard .stars{font-size:14px}
  .prov__spec{font-size:15px}
  .svc-related h2,.svc-cat-link{font-size:12.5px}
  .tier__name{font-size:13px}
  .tier__flag{font-size:11.5px}
  .spm__eye,.spm__valid,.spm__note{font-size:12px}
  .spm__cat{font-size:11px}
  .spm__o{font-size:13px}
  .spm__val small{font-size:11px}
}

/* b32d · Mobile readability pass 2 (Ray, 2026-07-06): the b32c sweep was hand-picked and
   missed several sub-floor selectors (homepage card labels, credential microcaps, B/A and IG
   captions, filter chips, breadcrumbs, contact-card, face-map tabs, cookie + a11y panel,
   specials microcaps). Floors: mono microcaps 12.5px, captions/labels 13.5px, small links/notes 13px. */
@media(max-width:719px){
  /* mono uppercase microcaps -> 12.5 */
  .atr__poplabel,.aprov__role,.aprov__minib span,.aprov__credcard span,.chip,.chip--static,
  .ba__tag,.curtain__eyebrow,.fmap__tab,.lc .btn,.bd__chip,.mq__eye,.tier__flag,.spm__cat,
  .spm__eye,.spm__valid,.spm__note,.lc__hrs,.kx span,.apay__facts dd{font-size:12.5px}
  /* price superscript: nudge up but keep unit hierarchy */
  .spm__val small{font-size:12px}
  /* small interactive links, notes, legal fine print -> 13 */
  .elink,.ebtn,.a11y-panel h3,.a11y-reset,.foot__disc,.bd__note{font-size:13px}
  /* captions, contact labels, notices, reading labels -> 13.5 */
  .ig figcaption,.ighz__c figcaption,.ba-grid figcaption,.ba-solo figcaption,.ba-grid2 figcaption,
  .crumbs,.fmap__concerns,.lc__addr,.lc__ph,.aloc__geobtn,.a11y-opt,.ckb__t,.ckb__b,
  .bigpic__cap,.bd__q{font-size:13.5px}
}

/* b32e · Fact-grid value weight (Ray, 2026-07-06, all viewports): Cormorant Garamond runs
   light at text sizes; the "Why Back to 30" fact values (.prac__facts dd) and the payment
   band fact values (.apay__facts dt, same mono-label + serif-value pattern) read too thin
   at 500. Match the display-heading compensation weight (600). Color already var(--ink-head). */
.prac__facts dd{font-weight:600}
.apay__facts dt{font-weight:600}

/* b32f · Brand marquee speed (Ray, 2026-07-06). The earlier mobile overrides (b30t/b30u) target
   bare .mq__track (specificity 0,1,0) and lose to html.anim-on .mq__track (0,2,1), so they were
   inert and the belt ran 58s at every width (glacial on a phone over a short visible track).
   Re-set duration at matching specificity so the cascade actually wins: desktop ~30% brisker,
   mobile (max-width:719px) about half of desktop. Keyframes unchanged (still translateX -50%
   over duplicated content, seamless). This selector also finally makes reduced-motion win. */

/* b32g · CookieYes owns consent when it actually renders; hide the built-in .ckb fallback so two
   banners never stack. Keyed off CookieYes's rendered container (any .cky-* element), NOT the
   script tag, so if CookieYes fails to load the built-in banner still appears (degrade-safe). */
html:has([class*="cky-"]) .ckb{display:none!important}

/* b32h · /specials/ page. Native monthly-offers page (replaces the old off-site promos page the
   homepage used to link out to). Reuses the ivory/crimson palette, Cormorant headings + Satoshi body. Offer cards
   are VISIBLE by default (no JS reveal), unlike the .spm__* modal items which start at opacity:0.
   Per-offer markup is uniform (.offer > .offer__main + .offer__val) so a later CMS phase can loop it. */
.sp-valid{display:inline-flex;align-items:center;gap:9px;margin-top:22px;font-family:var(--sans);font-size:13px;font-weight:500;letter-spacing:.02em;color:var(--ink-body);border:1px solid var(--line-light);border-radius:100px;padding:7px 18px;background:var(--white)}
.sp-valid::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--champagne);box-shadow:0 0 0 3px rgba(184,28,44,.22)}
.sp-wrap{max-width:940px}
.offers__group{margin-top:clamp(42px,6vw,68px)}
.offers__group:first-of-type{margin-top:clamp(18px,3vw,30px)}
.offers__gh{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);line-height:1.1;margin:0 0 clamp(16px,2.2vw,24px);padding-bottom:14px;border-bottom:1px solid var(--line-light)}
.offers__grid{display:grid;gap:16px}
.offer{display:flex;align-items:center;gap:24px;padding:clamp(22px,3vw,30px);background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);transition:border-color .25s,box-shadow .25s,transform .25s}
.offer:hover{border-color:var(--champagne);box-shadow:var(--sh-1);transform:translateY(-2px)}
.offer__main{flex:1;min-width:0}
.offer__cat{display:block;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--champagne-2)}
.offer__t{font-family:var(--serif);font-weight:600;font-size:clamp(22px,2.2vw,27px);line-height:1.14;color:var(--ink-head);margin:9px 0 8px}
.offer__o{font-size:15px;color:var(--ink-body);line-height:1.6;margin:0}
.offer__val{flex:0 0 auto;text-align:right;font-family:var(--serif);font-weight:600;font-size:clamp(27px,3vw,34px);line-height:1;color:var(--champagne);white-space:nowrap}
.offer__val small{display:block;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-mute);margin-top:8px}
.sp-fine{max-width:68ch;margin:clamp(34px,5vw,50px) auto 0;font-size:13px;color:var(--ink-mute);line-height:1.6;text-align:center}
.sp-cta-alt{margin:16px 0 0;font-size:15px;color:var(--ink-mute)}
.sp-cta-alt a{color:var(--champagne-2);text-decoration:underline;text-underline-offset:2px}
@media (max-width:640px){
  .offer{gap:14px;padding:20px 17px}
  .offer__val{font-size:24px}
  .offer__t{font-size:20px}
}

/* b32i · "Real care. Real results." gallery (.ighz__track): center the cards when the full
   set fits the viewport (wide screens) so the left and right end spacing is equal. `safe`
   falls back to flex-start when the cards overflow (narrower screens / pinned scroll), so
   the scroll still starts at the first card and nothing gets clipped off the left edge. */
.ighz__track{justify-content:safe center}

/* ============================================================
   R2 · CLIENT REVISION ROUND (conversion + copy fixes, 2026-07-07)
   ============================================================ */

/* R1/R3 · Hero TRUST BAR (self-contained; supersedes earlier scattered .hero__trust rules). */
.hero__trust{display:grid;grid-template-columns:repeat(4,minmax(0,auto));justify-content:start;gap:0;margin:clamp(24px,3vw,40px) 0 0;padding:0}
.hero__trust .ts{display:flex;flex-direction:column;gap:2px;min-width:0;padding-left:clamp(16px,2.1vw,32px);border-left:1px solid rgba(247,250,252,.18)}
.hero__trust .ts:first-child{padding-left:0;border-left:0}
.hero__trust .ts b{font-family:var(--serif);font-weight:600;color:var(--paper-head);line-height:1;font-size:clamp(21px,2vw,30px);letter-spacing:-.01em}
.hero__trust .ts span{color:rgba(247,250,252,.64);letter-spacing:.02em;font-size:clamp(10.5px,.95vw,12.5px);text-transform:uppercase;margin-top:5px;line-height:1.25}
@media (max-width:640px){
  .hero__trust{grid-template-columns:1fr 1fr;gap:16px 22px}
  .hero__trust .ts{padding-left:0;border-left:0}
}

/* R10 · Nav legibility over LIGHT hero imagery: soft top scrim while transparent (non-stuck) only. */
.nav:not(.stuck)::after{content:"";position:absolute;left:0;right:0;top:0;height:230%;background:linear-gradient(to bottom,rgba(4,17,26,.52),rgba(4,17,26,0));z-index:-1;pointer-events:none}

/* R5/R9 · Nav Book button: solid champagne + white in BOTH nav states (was faded when stuck). */
.nav .btn,.nav.stuck .btn{background:var(--champagne);color:#fff;border-color:var(--champagne)}
.nav .btn:hover,.nav.stuck .btn:hover{background:var(--champagne-2);color:#fff;border-color:var(--champagne-2)}

/* R10 · Nav treatment quick-links dropdown (desktop; pure CSS hover/focus-within, no-JS safe). */
.nav__drop{position:relative;display:inline-flex;align-items:center}
.nav__menu{position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(6px);min-width:210px;background:var(--porcelain);border:1px solid var(--line-light);border-radius:14px;box-shadow:0 24px 58px rgba(33,42,49,.20);padding:9px;display:flex;flex-direction:column;gap:2px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s var(--ease),transform .22s var(--ease);z-index:90}
.nav__menu::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}
.nav__drop:hover .nav__menu,.nav__drop:focus-within .nav__menu{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.nav__menu a{display:block;padding:9px 15px;border-radius:9px;font-size:14px;font-weight:500;color:var(--ink-body)!important;letter-spacing:.01em;white-space:nowrap;transition:background .18s,color .18s}
.nav__menu a::after{display:none!important}
.nav__menu a:hover{background:var(--champagne-soft);color:var(--ink-head)!important}

/* R10 · Mobile menu quick-treatment chips. */
.mobnav .mobnav__quick{display:flex;flex-wrap:wrap;gap:9px;margin:4px 0 10px;border:0}
.mobnav .mobnav__quick a{font-family:var(--sans);font-size:14px;font-weight:500;color:var(--paper-body);border:1px solid var(--line-dark);border-radius:100px;padding:8px 15px;letter-spacing:.02em}
.mobnav .mobnav__quick a:hover{border-color:var(--champagne);color:#fff}

/* R20 · Treatment card "Best for:" line (mirrors the Popular line). */
.atr__best{font-size:var(--t-sm);color:var(--ink-mute);margin:0 0 22px;line-height:1.7;max-width:42ch}
.atr__best .atr__poplabel{color:var(--champagne-2)}

/* R12 · Before/after compliance disclaimer. */
.ba-disc{text-align:center;font-size:12.5px;color:var(--ink-mute);letter-spacing:.01em;margin:clamp(20px,2.6vw,30px) auto 0;max-width:54ch}

/* R25/R17 · Payment band: memberships + financing as two distinct cards. */
.apay__head{text-align:center;max-width:640px;margin:0 auto clamp(30px,4vw,50px)}
.apay__head .elabel{justify-content:center;margin-bottom:14px}
.apay__split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,30px);align-items:stretch}
.apay__card{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(28px,3.2vw,42px);box-shadow:0 22px 56px rgba(33,42,49,.08)}
.apay__ct{font-family:var(--serif);font-weight:600;font-size:clamp(23px,2vw,31px);color:var(--ink-head);margin:0 0 13px;letter-spacing:-.01em}
.apay__card .apay__copy{margin:0 0 22px;max-width:none;font-size:var(--t-base)}
.apay__card .apay__copy a{color:var(--ink-head);text-decoration:underline;text-decoration-color:var(--champagne);text-underline-offset:3px;font-weight:600}
.apay__card .apay__copy a:hover{color:var(--champagne-2)}
.apay__card .apay__facts{display:block;border-top:1px solid var(--line-light);margin:0 0 24px}
.apay__card .apay__facts>div{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:12px 0;border-bottom:1px solid var(--line-light)}
.apay__card .apay__facts dt{margin:0}
.apay__card .apay__facts dd{margin:0;text-align:right;white-space:nowrap}
.apay__card .btn,.apay__card .btn-line{align-self:flex-start;margin-top:auto}
.btn-line{--bg:transparent;--fg:var(--ink-head);background:transparent;color:var(--ink-head);border:1px solid rgba(33,42,49,.28)}
.btn-line:hover{background:var(--ink);color:var(--porcelain);border-color:var(--ink);box-shadow:none}
@media (max-width:760px){.apay__split{grid-template-columns:1fr;gap:16px}}
/* b30r7 · SF-3: on narrow phones the facts rows collapse to label-over-annotation. The nowrap
   right-aligned dd overflowed a 390 viewport (clipped "CHECKS, EVE" / "APPLICANT" / "MINUTE") and,
   via grid min-content, pushed the card past the right edge; min-width:0 stops the blowout and the
   stacked rows keep every word visible. Desktop (row layout) untouched. */
@media (max-width:640px){
  .apay__card{min-width:0}
  .apay__card .apay__facts>div{flex-direction:column;align-items:flex-start;gap:4px}
  .apay__card .apay__facts dd{text-align:left;white-space:normal}
}

/* R19 · Recognition credentials under the award (since 2012 + CoolSculpting scale). */
.award__creds{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.award__creds li{position:relative;padding-left:20px;font-size:14px;line-height:1.5;color:var(--ink-body)}
.award__creds li::before{content:"";position:absolute;left:0;top:.5em;width:7px;height:7px;border-radius:50%;background:var(--champagne)}

/* R14 · Footer: per-clinic phone + reviews, Book button (pink retired to champagne via token). */
.foot__book{margin-top:22px;min-height:46px;padding:12px 26px}
.foot__col--clinics .foot__clinic{margin-bottom:13px}
.foot__col--clinics .foot__clinicname{display:block;font-size:var(--t-sm);font-weight:500;padding:0;color:var(--paper-body)}
.foot__col--clinics .foot__clinicname:hover{color:var(--paper-head)}
.foot__col--clinics .foot__clinicmeta{display:block;font-size:12.5px;color:var(--paper-mute);margin-top:2px}
.foot__col--clinics .foot__clinicmeta a{display:inline;color:var(--paper-mute);padding:0}
.foot__col--clinics .foot__clinicmeta a:hover{color:var(--champagne)}

/* R24 · Category (/face/ /skin/ /body/) + /service/ card elevation. */
.cat-card{position:relative;overflow:hidden;padding:26px 24px 22px;box-shadow:0 3px 16px rgba(33,42,49,.05)}
.cat-card::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--champagne),rgba(184,28,44,.22));transform:scaleX(1);transform-origin:left;opacity:.5;transition:opacity .4s var(--ease),height .4s var(--ease)}
.cat-card:hover::before{opacity:1;height:3px}
.cat-card:hover{border-color:var(--champagne);box-shadow:0 26px 60px rgba(33,42,49,.13)}
.cat-card .arw{display:inline-flex;align-items:center;gap:7px;margin-top:16px;color:var(--champagne-2);font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
.cat-card:hover .arw{color:var(--ink-head)}

/* R23 · /service/ index intro (centered). */
.svc-index__intro{max-width:66ch;margin:14px auto 0;text-align:center}
.svc-index__intro p{color:var(--ink-body)}

/* R22 · Inner/location pages: guaranteed closing space so options never run into the footer. */
.pwrap{padding-bottom:clamp(88px,10vw,132px)}
.pwrap>.svc-cta:last-child{margin-bottom:clamp(4px,1vw,14px)}

/* ================= R3 FEATURES: discovery strip, new-here, forms, reviews, FAQ, locations index ================= */
/* --- Discovery strip (interest + popular quick links) --- */
.disc{padding:clamp(26px,3.4vw,40px) 0;background:var(--ivory);border-top:1px solid var(--line-light);border-bottom:1px solid var(--line-light)}
.disc__inner{display:flex;flex-direction:column;gap:clamp(16px,2.2vw,24px)}
.disc__group{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.disc__eye{flex:0 0 auto;font-family:var(--mono);font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute);margin:0;min-width:130px}
.disc__chips{display:flex;flex-wrap:wrap;gap:9px}
.dchip{display:inline-flex;align-items:center;min-height:38px;padding:8px 16px;border:1px solid var(--line-light);border-radius:var(--r-pill);background:var(--white);color:var(--ink-head);font-size:var(--t-sm);font-weight:600;text-decoration:none;transition:border-color .2s,color .2s,background .2s,transform .2s}
.dchip:hover{border-color:var(--champagne);color:var(--champagne);transform:translateY(-1px)}
.dchip--accent{background:var(--champagne);border-color:var(--champagne);color:#fff}
.dchip--accent:hover{background:var(--champagne-2);border-color:var(--champagne-2);color:#fff}
/* --- New here? three entry paths --- */
.newhere{padding:clamp(30px,4vw,50px) 0;background:var(--porcelain)}
.newhere__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(16px,3vw,44px);text-align:center}
.newhere__eye{font-family:var(--mono);font-size:var(--t-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 4px}
.newhere__text{font-family:var(--serif);font-size:var(--t-h4);color:var(--ink-head);margin:0}
.newhere__paths{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.npath{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:11px 20px;border:1px solid var(--line-light);border-radius:var(--r);background:var(--white);color:var(--ink-head);text-decoration:none;font-weight:600;font-size:var(--t-sm);transition:border-color .2s,transform .2s,box-shadow .2s}
.npath:hover{border-color:var(--champagne);transform:translateY(-2px);box-shadow:var(--sh-1)}
.npath__n{font-family:var(--mono);font-size:11px;color:var(--champagne);letter-spacing:.1em}
.npath .arw{color:var(--champagne)}
/* --- Consultation form section --- */
.cform-sec__inner{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,72px);align-items:start}
.cform-sec__h{font-family:var(--serif);font-weight:600;font-size:var(--t-h2);line-height:1.05;color:var(--ink-head);margin:12px 0 14px}
.cform-sec__sub{font-size:var(--t-lg);line-height:1.6;color:var(--ink-body);margin:0 0 22px;max-width:46ch}
.cform-sec__pts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.cform-sec__pts li{position:relative;padding-left:30px;font-size:var(--t-base);color:var(--ink-body)}
.cform-sec__pts li::before{content:"";position:absolute;left:2px;top:.32em;width:13px;height:7px;border-left:2px solid var(--champagne);border-bottom:2px solid var(--champagne);transform:rotate(-45deg)}
.cform-sec__formwrap{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(22px,3vw,36px);box-shadow:var(--sh-1)}
/* --- Form (shared: consult + subscribe) --- */
.cform{display:flex;flex-direction:column;gap:15px}
.cform__hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.cform__row{display:flex;gap:14px}
.cform__row .cform__field{flex:1 1 0;min-width:0}
.cform__field{display:flex;flex-direction:column;gap:6px}
.cform__field>span{font-size:var(--t-sm);font-weight:600;color:var(--ink-head)}
.cform__field>span em{font-style:normal;font-weight:400;color:var(--ink-mute)}
.cform input,.cform select,.cform textarea{width:100%;box-sizing:border-box;min-height:46px;padding:11px 14px;border:1px solid var(--line-light);border-radius:var(--r);background:var(--porcelain);font-family:var(--sans);font-size:16px;color:var(--ink-head);transition:border-color .2s,box-shadow .2s}
.cform textarea{min-height:88px;resize:vertical;line-height:1.5}
.cform input:focus,.cform select:focus,.cform textarea:focus{outline:none;border-color:var(--champagne);box-shadow:0 0 0 3px rgba(184,28,44,.12)}
.cform__submit{margin-top:4px;justify-content:center;text-align:center}
.cform__submit.is-loading{opacity:.7;pointer-events:none}
.cform__status{margin:0;font-size:var(--t-sm);color:var(--ink-body)}
.cform__status.is-err{color:var(--champagne)}
.cform__fallback{margin:2px 0 0;font-size:var(--t-sm);color:var(--ink-mute)}
.cform__fallback a{color:var(--champagne);text-decoration:underline}
.cform__done{text-align:center;padding:clamp(12px,2vw,26px) 4px}
.cform__optins{border:1px solid var(--line-light);border-radius:var(--r);padding:12px 14px;margin:0;display:flex;flex-wrap:wrap;gap:8px 22px}
.cform__optins legend{padding:0 6px;font-size:var(--t-sm);font-weight:600;color:var(--ink-head)}
.cform__check,.cform__consent{display:flex;align-items:flex-start;gap:10px;font-size:var(--t-sm);color:var(--ink-body);line-height:1.5}
.cform__check input,.cform__consent input{width:auto;min-height:0;flex:0 0 auto;margin-top:3px}
.cform__consent a{color:var(--champagne);text-decoration:underline}
.cform-wrap{max-width:640px}
/* --- Review stat (location pages + cards) --- */
.review-stat{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:var(--t-sm);color:var(--ink-body);margin:10px 0 0}
.review-stat__star{color:var(--champagne);font-size:1.1em;line-height:1}
.review-stat strong{color:var(--ink-head)}
.review-stat a{color:var(--ink-body);text-decoration:underline;text-underline-offset:2px}
.review-stat a:hover{color:var(--champagne)}
.review-stat--card{margin:8px 0 0}
.phead .review-stat{justify-content:flex-start;margin-top:14px}
/* --- Location card landmark note --- */
.lc__near{font-size:var(--t-sm);color:var(--ink-mute);margin:8px 0 0;line-height:1.5}
/* --- Locations index cards (/locations/) --- */
.locidx{margin:0 0 clamp(30px,4vw,50px)}
.locidx__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:clamp(16px,2vw,24px)}
.lcx{display:flex;flex-direction:column;justify-content:space-between;gap:16px;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:clamp(20px,2.4vw,28px);box-shadow:var(--sh-1)}
.lcx__name{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:0 0 8px}
.lcx__addr{font-size:var(--t-sm);color:var(--ink-body);margin:0 0 4px;line-height:1.5}
.lcx__ph{font-size:var(--t-sm);margin:0}
.lcx__ph a{color:var(--ink-head);text-decoration:none;font-weight:600}
.lcx__row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.lcx__book{justify-content:center}
/* --- FAQ page --- */
.faq{max-width:900px}
.faq__sec{margin:0 0 clamp(30px,4vw,48px)}
.faq__cat{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line-light)}
.faq__list{display:flex;flex-direction:column;gap:10px}
.faq__item{border:1px solid var(--line-light);border-radius:var(--r);background:var(--white);overflow:hidden;transition:border-color .2s}
.faq__item[open]{border-color:var(--champagne)}
.faq__q{list-style:none;cursor:pointer;padding:16px 50px 16px 20px;position:relative;font-weight:600;font-size:var(--t-base);color:var(--ink-head)}
.faq__q::-webkit-details-marker{display:none}
.faq__q::after{content:"+";position:absolute;right:20px;top:50%;margin-top:-.55em;font-size:22px;font-weight:400;color:var(--champagne);transition:transform .2s;line-height:1}
.faq__item[open] .faq__q::after{transform:rotate(45deg)}
.faq__q:hover{color:var(--champagne)}
.faq__a{padding:0 20px 18px;color:var(--ink-body);line-height:1.65}
.faq__a p{margin:0;font-size:var(--t-base)}
/* b30r7 · SF-1: reference links inside an FAQ answer read as links (base `a` resets decoration) */
.faq__a a{color:var(--champagne-2);text-decoration:underline;text-underline-offset:2px}
.faq__a a:hover{color:var(--champagne)}
/* Homepage compact FAQ accordion (#home-faq): curated cross-section, reuses .faq__item rows from /faq/ */
.hfaq__inner{max-width:820px;margin-inline:auto}
.hfaq__head{text-align:center;margin:0 0 clamp(24px,3.4vw,40px)}
.hfaq__h{font-family:var(--serif);font-weight:600;font-size:clamp(28px,3.2vw,44px);line-height:1.03;letter-spacing:-.01em;color:var(--ink-head);margin:8px 0 0}
.hfaq__sub{color:var(--ink-body);font-size:var(--t-lg);margin:14px 0 0}
.hfaq__list{text-align:left}
.hfaq__more{text-align:center;margin:clamp(22px,3vw,34px) 0 0}
.hfaq__all{display:inline-flex;align-items:center;gap:.45em;color:var(--champagne);font-weight:600;font-size:var(--t-base);text-decoration:none;border-bottom:1px solid rgba(184,28,44,.35);padding-bottom:2px}
.hfaq__all .arw{transition:transform .2s}
.hfaq__all:hover{color:var(--champagne-2)}
.hfaq__all:hover .arw{transform:translateX(4px)}
/* --- Journey FAQ teaser --- */
.jrn2__faq{margin:clamp(24px,3vw,36px) 0 0;font-size:var(--t-base);color:var(--ink-body);text-align:center}
.jrn2__faq a{color:var(--champagne);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(184,28,44,.35)}
.jrn2__faq .arw{color:var(--champagne)}
/* --- Mobile --- */
@media (max-width:760px){
  .cform-sec__inner{grid-template-columns:1fr;gap:26px}
  .cform__row{flex-direction:column;gap:15px}
  .disc__group{flex-direction:column;align-items:flex-start;gap:9px}
  .disc__eye{min-width:0}
  .newhere__inner{flex-direction:column}
  .newhere__paths{width:100%}
  .npath{width:100%;justify-content:space-between}
}
/* R3: location-card primary CTA must be solid crimson (A13a). The base .btn is dark ink and crimson
   is context-specific for nav/hero, so force crimson here (cascade has several competing .btn rules). */
.lc .lc__book,.lcx .lcx__book{background:var(--champagne)!important;border-color:var(--champagne)!important;color:#fff!important;box-shadow:none!important}
.lc .lc__book:hover,.lcx .lcx__book:hover{background:var(--champagne-2)!important;border-color:var(--champagne-2)!important;color:#fff!important}

/* RAY ADDITION 2 (2026-07-07) -- premium clinic cards, identical on the homepage locations section
   and the /locations/ index. Photo band + left-aligned hierarchy + refined small-caps hours + review
   badge + bottom-pinned CTA row. Homepage cards keep .lc + data-* + h4 + .lc__state for the atlas
   map / filter / geo JS; .lcard drives all the visual styling on both surfaces (appended last so it
   wins the legacy .lc row layout). */
.locg__cards,.locidx__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,22px);margin-top:clamp(30px,3.4vw,46px)}
.lcard{display:flex;flex-direction:column;padding:0;background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);overflow:hidden;box-shadow:0 4px 20px rgba(33,42,49,.06);transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease)}
.lcard::before{content:none}
.lcard:hover{transform:translateY(-4px);box-shadow:0 24px 54px rgba(33,42,49,.14);border-color:rgba(184,28,44,.28)}
.lcard__media{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--porcelain)}
.lcard__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease)}
.lcard:hover .lcard__media img{transform:scale(1.045)}
.lcard__body{display:flex;flex-direction:column;flex:1;padding:clamp(18px,1.7vw,24px)}
.lcard .lc__state{display:block;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 8px}
.lcard__name{font-family:var(--serif);font-weight:600;font-size:clamp(21px,1.6vw,26px);color:var(--ink-head);margin:0 0 12px;line-height:1.08}
/* b30r7 · SF-2 root cause 2: the homepage name is an h4 (atlas JS contract) and /locations/ uses an
   h2, so element-level rules diverged the two surfaces: the legacy row-era ".lc h4{align-self:center}"
   shrink-centered the homepage name box even with text-align:start, and ".lc h4{font-size:var(--t-h4)}"
   + the h4/h2 base letter-spacings gave the two names different metrics. Pin the full name treatment at
   design-of-record specificity so BOTH surfaces compute identical left-aligned type. */
.lcard .lcard__name{align-self:auto;font-size:clamp(21px,1.6vw,26px);letter-spacing:-.028em;line-height:1.08;margin:0 0 12px}
.lcard__addr{font-style:normal;font-size:14px;line-height:1.5;color:var(--ink-mute);margin:0 0 9px}
.lcard__addr span{display:block}
.lcard__tel{display:inline-block;font-size:14px;font-weight:600;color:var(--ink-head);text-decoration:none;letter-spacing:.01em}
.lcard__tel:hover{color:var(--champagne)}
.lcard__hours{margin:13px 0 0;border-top:1px solid var(--line-light);padding-top:12px}
.lcard__hours span{display:block;font-size:13.5px;color:var(--ink-body);line-height:1.7}
.lcard__hours b{font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--cocoa);margin-right:7px}
.lcard__near{font-family:var(--serif);font-style:italic;font-size:15px;line-height:1.5;color:var(--ink-mute);margin:13px 0 0}
.lcard__rev{display:flex;align-items:center;flex-wrap:wrap;gap:5px;row-gap:3px;font-size:14.5px;color:var(--ink-body);margin:14px 0 0}
/* Review badge is a deliberate two-line unit on every card (rating line, then the linked count), so a
   near-tie text width can never wrap one card differently from its siblings (Highway 14 at 1440). */
.lcard__rev a{flex-basis:100%}
.lcard__rev .lcard__star{color:var(--champagne);font-size:16px;line-height:1}
.lcard__rev strong{color:var(--ink-head);font-weight:700}
.lcard__rev a{color:var(--ink-mute);text-decoration:underline;text-decoration-color:var(--line-light);text-underline-offset:2px}
.lcard__rev a:hover{color:var(--champagne);text-decoration-color:var(--champagne)}
.lcard__cta{display:flex;align-items:center;gap:16px;margin-top:auto;padding-top:20px}
.lcard .lcard__book{min-height:44px;padding:11px 20px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;will-change:auto}
.lcard__view{white-space:nowrap;color:var(--ink-head)}
@media(max-width:1080px){.locg__cards,.locidx__grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.locg__cards,.locidx__grid{grid-template-columns:1fr}}

/* ===================== b33 · CLIENT FEEDBACK ROUND (2026-07-10) =====================
   Thursday review call: compact the page, consolidate the treatment rows into one
   section, tighten the team block, elevate the interest strip, make the face map and
   quiz pop (contrast), move the quiz up with a lead-capture step before results.
   Appended last so these rules win equal-specificity ties sitewide. */

/* b33-1 · Sitewide rhythm: tighter section padding (desktop compacts hardest). */
:root{--section:clamp(72px,7vw,112px)}
.stmt{padding-block:clamp(84px,10vw,140px)}
.cmq__belt{padding-block:clamp(40px,5vw,72px)}
@media (max-width:600px){
  .section{padding-block:clamp(76px,13vw,92px)}
}

/* b33-2 · Discovery strip: editorial label column + confident chips. */
.disc{background:var(--ivory);padding:clamp(30px,3.6vw,48px) 0}
.disc__inner{gap:0}
.disc__group{display:grid;grid-template-columns:minmax(150px,190px) 1fr;align-items:center;gap:14px 26px;padding-block:clamp(14px,1.8vw,20px)}
.disc__group+.disc__group{border-top:1px solid var(--line-light)}
.disc__eye{font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(17px,1.35vw,21px);letter-spacing:0;text-transform:none;color:var(--ink-head);display:flex;align-items:center;gap:.7em;min-width:0}
.disc__eye::before{content:"";width:22px;height:1px;background:var(--champagne);flex:none}
.disc__chips{gap:8px 8px}
.dchip{min-height:44px;padding:10px 20px;font-size:15px;background:transparent;border-color:rgba(41,54,62,.24);transition:border-color .25s var(--ease),color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.dchip:hover{background:var(--ink);border-color:var(--ink);color:var(--porcelain);transform:translateY(-1px)}
.dchip--accent{background:var(--champagne);border-color:var(--champagne);color:#fff;box-shadow:0 8px 20px rgba(184,28,44,.22)}
.dchip--accent:hover{background:var(--champagne-2);border-color:var(--champagne-2);color:#fff}
@media (max-width:680px){
  .disc__group{grid-template-columns:1fr;gap:12px}
}

/* b33-3 · Treatments consolidated: the four stacked full-height rows become one
   compact card grid (client: "small cards in one section instead of stacked scroll"). */
.atr__head{margin-bottom:clamp(28px,3.4vw,46px)}
.atr__list{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,1.8vw,26px)}
.atr__row,.atr__row--rev{display:grid;grid-template-columns:minmax(150px,215px) 1fr;gap:0;align-items:stretch;padding:0;border:1px solid var(--line-light);border-top:1px solid var(--line-light);border-radius:var(--r-l);background:var(--white);overflow:hidden;box-shadow:var(--sh-1);transition:box-shadow .35s var(--ease),transform .35s var(--ease)}
.atr__row:last-child{border-bottom:1px solid var(--line-light)}
.atr__row:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.atr__row--rev .atr__img{order:0}
.atr__img{aspect-ratio:auto;height:100%;min-height:100%;border-radius:0}
.atr__txt{padding:clamp(20px,2.2vw,30px)}
.atr__num{font-size:clamp(24px,2vw,32px);margin-bottom:12px}
.atr__cat{font-size:clamp(24px,2vw,33px);margin-bottom:10px}
.atr__benefit{font-size:var(--t-base);margin-bottom:14px;line-height:1.5}
.atr__best{margin-bottom:0;line-height:1.6}
.atr__spec{margin:16px 0 2px}
.atr__spec>div{padding:11px 10px 10px 0}
.atr__spec dd{font-size:clamp(15px,1.15vw,18px)}
.atr__pop{margin:14px 0 18px;line-height:1.6}
@media (max-width:1080px){
  .atr__list{grid-template-columns:1fr}
  .atr__row,.atr__row--rev{grid-template-columns:minmax(170px,240px) 1fr}
}
@media (max-width:640px){
  .atr__row,.atr__row--rev{grid-template-columns:1fr}
  .atr__img{aspect-ratio:4/5;height:auto;min-height:0}
  .atr__txt{padding:22px 20px 24px}
}

/* b33-4 · Quiz: espresso card that pops on the ivory band + lead-capture gate. */
.quiz__head{margin-bottom:clamp(28px,3.4vw,38px)}
.quiz__card{background:var(--ink-2);border-color:rgba(247,250,252,.12);box-shadow:0 24px 70px rgba(21,27,32,.35);color-scheme:dark}
.quiz__steplab{color:var(--paper-mute)}
.quiz__progress{background:rgba(247,250,252,.14)}
.quiz__q{color:var(--paper-head)}
.quiz__opt{background:rgba(247,250,252,.05);border-color:rgba(247,250,252,.2);color:var(--paper-head)}
.quiz__opt:hover{background:var(--porcelain);border-color:var(--porcelain);color:var(--ink-head)}
.quiz__back{color:var(--paper-mute)}
.quiz__back:hover{color:var(--paper-head)}
.quiz__result-lab{color:var(--clay)}
.quiz__result-h{color:var(--paper-head)}
.quiz__disclaimer{color:var(--paper-mute)}
.quiz__restart{color:var(--paper-mute)}
.quiz__restart:hover{color:var(--paper-head)}
.quiz__gate-eyebrow{display:block;font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--clay);margin-bottom:12px}
.quiz__gate-sub{color:var(--paper-body);font-size:var(--t-sm);line-height:1.55;max-width:52ch;margin:-8px 0 22px}
.quiz__gate-form{display:grid;gap:14px}
.quiz__grow{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.quiz__gfield{display:grid;gap:7px}
.quiz__gfield span{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-mute)}
.quiz__gfield input,.quiz__gfield select{width:100%;min-height:50px;padding:12px 16px;font-family:var(--sans);font-size:16px;color:var(--paper-head);background:rgba(247,250,252,.07);border:1px solid rgba(247,250,252,.24);border-radius:var(--r);transition:border-color .25s var(--ease),background .25s var(--ease)}
.quiz__gfield input:focus,.quiz__gfield select:focus{outline:2px solid var(--clay);outline-offset:2px;border-color:rgba(247,250,252,.4)}
.quiz__gate-submit{margin-top:6px;justify-self:start}
.quiz__gate-submit.is-loading{opacity:.7;pointer-events:none}
.quiz__gate-status{margin:2px 0 0;font-size:13.5px;line-height:1.5;color:var(--paper-body)}
.quiz__gate-status.is-err{color:#e6b0b5}
@media (max-width:560px){
  .quiz__grow{grid-template-columns:1fr}
  .quiz__gate-submit{justify-self:stretch}
}

/* b33-5 · Face map goes espresso: the section the client loves now owns the scroll. */
.fmap--dark{background:var(--ink);color:var(--paper-body)}
.fmap--dark .elabel{color:rgba(247,250,252,.82)}
.fmap--dark .fmap__h{color:var(--paper-head)}
.fmap--dark .fmap__h .serif-i{color:var(--clay)}
.fmap--dark .lede{color:var(--paper-body)}
.fmap--dark .fmap__region{color:var(--paper-head)}
.fmap--dark .fmap__concerns{color:var(--clay)}
.fmap--dark .fmap__tab{color:var(--paper-mute);border-color:var(--line-dark)}
.fmap--dark .fmap__tab:hover{color:var(--paper-head);border-color:rgba(247,250,252,.44)}
.fmap--dark .fmap__tab.is-on{color:var(--ink-head);border-color:var(--porcelain);background:var(--porcelain)}
.fmap--dark .fmap__photo{box-shadow:0 26px 80px rgba(0,0,0,.5)}
.fmap--dark .elink{color:var(--paper-head)}
.fmap--dark .fmap__pill:hover{border-color:rgba(247,250,252,.5)}

/* b33-6 · Team compact: square featured portrait, cred cards stretch to fill the
   column (kills the dead zone), tighter head. */
.aprov__head{margin-bottom:clamp(28px,3.4vw,46px)}
.aprov__featimg{aspect-ratio:1/1}
.aprov__rest--creds{grid-template-columns:1fr;grid-template-rows:repeat(4,1fr);gap:12px;align-content:stretch}
.aprov__credcard{display:flex;flex-direction:column;justify-content:center;padding:18px 24px}
.aprov__credcard h4{font-family:var(--serif);font-weight:500;font-size:clamp(19px,1.6vw,25px);line-height:1.08;color:var(--ink-head);margin:0 0 6px}
.aprov__credcard span{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute)}
.aprov__credcard--more{justify-content:center}
.aprov__seeall{margin-top:clamp(22px,2.6vw,36px)}
@media (max-width:860px){
  .aprov__rest--creds{grid-template-rows:none;grid-template-columns:1fr 1fr}
  .aprov__featimg{aspect-ratio:4/3}
}
@media (max-width:520px){
  .aprov__rest--creds{grid-template-columns:1fr}
}
/* b33-6b · Make the cred column actually fill the featured card's height. */
.aprov__wall{align-items:stretch}
.aprov__rest--creds{height:100%}
/* b33-5b · The fmap CTA text link is .txtlink (not .elink): lift it for the dark band. */
.fmap--dark .txtlink{color:var(--paper-head)}
.fmap--dark .txtlink:hover{color:var(--clay)}
/* b33-3b · Mobile card crops: bias toward the top of the frame so faces survive 16/9. */
@media (max-width:640px){
  .atr__img img{object-position:50% 22%}
}

/* b34 · WHY + BELIEF combined into one section (client feedback 2026-07-10).
   Reuses .eyebrow, global h2, .mani__lede/.mani__quote, .prac__facts; adds the
   two-photo editorial stack. Every CMS marker from both old sections lives here. */
.wb__grid{display:grid;grid-template-columns:1.04fr .96fr;gap:clamp(34px,4.5vw,84px);align-items:center}
.wb__grid>*{min-width:0}
.wb__text h2{margin-top:20px}
.wb__text .mani__lede{margin-top:22px}
.wb__rule{height:1px;background:var(--line-light);margin:clamp(26px,3vw,40px) 0 clamp(20px,2.4vw,30px)}
.wb__kicker{font-family:var(--mono);font-size:var(--t-eyebrow);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 12px}
.wb__h3{font-family:var(--serif);font-weight:500;font-size:clamp(24px,2.2vw,34px);line-height:1.1;letter-spacing:-.015em;color:var(--ink-head);margin:0 0 12px}
.wb__lede{font-size:var(--t-base);line-height:1.55;color:var(--ink-body);max-width:52ch}
.wb__text .prac__facts{margin-top:clamp(22px,2.6vw,32px)}
.wb__media{position:relative}
.wb__photo{margin:0;position:relative;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-2);background:var(--ivory)}
.wb__photo img{width:100%;height:100%;object-fit:cover;display:block}
.wb__photo--main img{aspect-ratio:4/5;object-position:50% 26%}
.wb__photo--inset{width:46%;margin:-24% clamp(10px,1.4vw,22px) 0 auto;border:5px solid var(--porcelain)}
.wb__photo--inset img{aspect-ratio:4/5;object-position:50% 30%}
.wb__photo figcaption{position:absolute;left:16px;bottom:14px;display:flex;align-items:center;gap:9px;color:#fff;font-family:var(--sans);font-size:12.5px;letter-spacing:.005em;text-shadow:0 1px 14px rgba(0,0,0,.6)}
.wb__photo .tick{width:18px;height:1px;background:var(--champagne);flex:none}
.wb__photo--inset figcaption{left:12px;bottom:10px;font-size:11px}
@media (max-width:860px){
  .wb__grid{grid-template-columns:1fr;gap:30px}
  .wb__photo--main img{aspect-ratio:4/5;max-height:64vh}
  .wb__photo--inset{width:52%;margin:-22% var(--gut) 0 auto}
}

/* b34-2 · WHY+BELIEF section goes espresso (Ray 2026-07-10: "same contrast as the map,
   I like that darker brown"). Facts cells stay white so the proof pops on dark. */
.wb--dark{background:var(--ink)}
.wb--dark .eyebrow{color:rgba(247,250,252,.82)}
.wb--dark h2{color:var(--paper-head)}
.wb--dark .mani__lede{color:var(--paper-body)}
.wb--dark .mani__quote{color:var(--clay)}
.wb--dark .wb__rule{background:var(--line-dark)}
.wb--dark .wb__kicker{color:var(--clay)}
.wb--dark .wb__h3{color:var(--paper-head)}
.wb--dark .wb__lede{color:var(--paper-body)}
.wb--dark .prac__facts{background:rgba(247,250,252,.16);border-color:rgba(247,250,252,.16)}
.wb--dark .wb__photo{box-shadow:0 26px 80px rgba(0,0,0,.5)}
.wb--dark .wb__photo--inset{border-color:var(--ink)}
/* The small inset gets no parallax: the transform slid the image inside its frame and
   exposed the figure background under the caption (visible in full-page captures). */
.wb__photo--inset img{transform:none !important}

/* b35 · Pointer-following highlight + press ripple on primary CTAs. Adapted natively from
   the highlight-button pattern Ray picked on 21st.dev: pure CSS + a few lines of JS,
   no backdrop-filter (iOS burn list), fine-pointer devices only, reduced-motion safe. */
@media (hover:hover) and (pointer:fine){
  .btn{position:relative;overflow:hidden}
  .btn::after{content:"";position:absolute;inset:0;border-radius:inherit;opacity:0;pointer-events:none;
    background:radial-gradient(130px circle at var(--hx,50%) var(--hy,50%),rgba(255,255,255,.30),transparent 65%);
    transition:opacity .35s var(--ease)}
  .btn:hover::after{opacity:1}
  .btn .rip{position:absolute;width:14px;height:14px;border-radius:50%;background:rgba(255,255,255,.38);
    transform:translate(-50%,-50%) scale(0);pointer-events:none;animation:btnRip .65s ease-out forwards}
  @keyframes btnRip{to{transform:translate(-50%,-50%) scale(20);opacity:0}}
}
@media (prefers-reduced-motion:reduce){
  .btn::after{display:none}
  .btn .rip{display:none}
}

/* b34-3 · Ray clarified: the espresso background belongs on the DISCOVERY STRIP, not the
   combined why+belief section (that section reverts to porcelain; .wb--dark rules stay
   dormant). Chips invert to porcelain on hover; Specials stays crimson and pops. */
.disc--dark{background:var(--ink);border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.disc--dark .disc__group+.disc__group{border-top:1px solid var(--line-dark)}
.disc--dark .disc__eye{color:var(--paper-head)}
.disc--dark .disc__eye::before{background:var(--clay)}
.disc--dark .dchip{border-color:rgba(247,250,252,.28);color:var(--paper-head)}
.disc--dark .dchip:hover{background:var(--porcelain);border-color:var(--porcelain);color:var(--ink-head)}
.disc--dark .dchip--accent{background:var(--champagne);border-color:var(--champagne);color:#fff;box-shadow:0 8px 22px rgba(0,0,0,.35)}
.disc--dark .dchip--accent:hover{background:var(--champagne-2);border-color:var(--champagne-2);color:#fff}

/* b36 · Discovery strip -> typographic index with cursor photo reveal (Ray: "Awwwards
   site of the year vibe"). Large Cormorant links on espresso; a small photo card of the
   REAL treatment (assets already in the build) follows the cursor and crossfades per
   link. Fine-pointer only; touch/no-JS get the clean type wall. */
.disc--dark{padding:clamp(44px,5vw,72px) 0}
.disc--dark .disc__group{grid-template-columns:minmax(150px,190px) 1fr;align-items:baseline;padding-block:clamp(18px,2.2vw,28px)}
.tix{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px clamp(22px,2.6vw,40px)}
.tix__a{font-family:var(--serif);font-weight:500;font-size:clamp(25px,2.6vw,42px);line-height:1.25;letter-spacing:-.01em;color:var(--paper-head);text-decoration:none;padding-block:6px;position:relative;transition:color .3s var(--ease)}
.tix__a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:var(--clay);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.tix__a:hover{color:var(--clay)}
.tix__a:hover::after{transform:scaleX(1)}
.tix--lead .tix__a{font-size:clamp(28px,3.2vw,52px)}
.tix__a--accent{color:var(--champagne);font-style:italic}
.tix__a--accent::after{background:var(--champagne)}
.tix__a--accent:hover{color:#ca5561}
.disc--dark .disc__eye{font-size:clamp(15px,1.1vw,17px);color:var(--paper-mute)}
.disc--dark .disc__eye::before{background:var(--clay)}
.tix__float{display:none}
@media (hover:hover) and (pointer:fine){
  .tix__float{display:block;position:fixed;left:0;top:0;width:clamp(150px,13vw,200px);aspect-ratio:4/5;border-radius:var(--r-l);overflow:hidden;pointer-events:none;z-index:60;box-shadow:0 24px 70px rgba(0,0,0,.5);opacity:0;transform:translate3d(-50%,-58%,0) scale(.85);transition:opacity .3s var(--ease)}
  .tix__float.is-on{opacity:1}
  .tix__float img{width:100%;height:100%;object-fit:cover;display:block}
  .tix__float[hidden]{display:none}
}
@media (prefers-reduced-motion:reduce){
  .tix__float{display:none !important}
  .tix__a::after{transition:none}
}
@media (max-width:680px){
  .disc--dark .disc__group{grid-template-columns:1fr;gap:10px}
  .tix{gap:0 22px}
  .tix--lead .tix__a{font-size:clamp(26px,7.5vw,32px)}
  .tix__a{font-size:clamp(22px,6vw,27px);padding-block:8px}
}

/* ===================== b38 · STRUCTURE + NAVIGATION ROUND (Ray, 2026-07-10 PM) =====================
   Cuts (aroom/ethos/newhere) + reorder are markup-side. Below: chapter numbers,
   sticky sub-nav, anchor offsets, and the REVERTIBLE mobile rails experiment. */

/* b38-1 · Chapter numbers on section eyebrows (wayfinding: "where am I on the page"). */
.chap{font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.1em;color:currentColor;transform:translateY(-.35em);font-variant-numeric:tabular-nums}

/* b38-2 · Sticky sub-nav: an anchor row that appears with the stuck header (desktop).
   Lives INSIDE the existing fixed header, so no new sticky element (iOS burn list). */

@media (min-width:861px){
  
  
  
  
  
}

/* Anchor landings clear the taller stuck header. */
#standard,#results,#reviews,#quiz,#treatments,#face-map,#journey,#team,#inside,#payment,#locations,#consult,#home-faq{scroll-margin-top:122px}

/* b38-3 · Mobile menu "On this page" group label. */
.mobnav__onlabel{margin:18px 0 0;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-mute)}

/* b38-mB · MOBILE RAILS EXPERIMENT (Ray: "lets see how it looks, we can revert").
   Treatments + locations become horizontal snap rails under 640px. Native scroll only
   (iOS-safe), nothing hidden. REVERT = delete this block. */
@media (max-width:640px){
  .atr__list{display:flex;flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .atr__list::-webkit-scrollbar{display:none}
  .atr__row,.atr__row--rev{flex:0 0 86%;scroll-snap-align:center;display:flex;flex-direction:column;grid-template-columns:none}
  .atr__img{aspect-ratio:4/5;height:auto;min-height:0}
  .atr__txt{display:flex;flex-direction:column;flex:1}
  .locg__cards{display:flex !important;flex-direction:row;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .locg__cards::-webkit-scrollbar{display:none}
  .locg__cards .lc{flex:0 0 86%;scroll-snap-align:center}
  /* swipe affordance: let the next card peek (86% width does this inherently) */
}

/* b39 · Locations atlas -> real rendered map (Ray: "like Apple or Google maps").
   One-time OSM tile render baked as a static asset (fast-map-facade doctrine: zero
   runtime third-party requests, no consent or PSI impact). Pins keep the same
   data-atlas-pt/data-city hooks so the geo "is-near" JS works unchanged. */
.atlas--map{position:relative;margin:0}
.atlas--map .atlas__frame{position:relative;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--sh-2);border:1px solid var(--line-light)}
.atlas__mapimg{width:100%;height:auto;display:block}
.atlas--map .atlas__pt{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;z-index:2;transition:opacity .3s var(--ease)}
.atlas--map .atlas__dot{width:14px;height:14px;border-radius:50%;background:var(--champagne);border:2.5px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35);flex:none}
.atlas--map .atlas__lbl{position:absolute;bottom:calc(100% + 7px);white-space:nowrap;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-head);background:rgba(255,255,255,.95);padding:4px 10px;border-radius:var(--r-pill);box-shadow:0 2px 10px rgba(33,42,49,.2)}
.atlas--map .atlas__pt--below .atlas__lbl{bottom:auto;top:calc(100% + 7px)}
.atlas--map .atlas__pt.is-dim{opacity:.35}
.atlas--map .atlas__pt.is-near .atlas__dot{animation:atlasNear 2.2s ease-out infinite;background:var(--champagne-2)}
@keyframes atlasNear{0%{box-shadow:0 2px 8px rgba(0,0,0,.35),0 0 0 0 rgba(184,28,44,.5)}70%{box-shadow:0 2px 8px rgba(0,0,0,.35),0 0 0 14px rgba(184,28,44,0)}100%{box-shadow:0 2px 8px rgba(0,0,0,.35),0 0 0 14px rgba(184,28,44,0)}}
@media (prefers-reduced-motion:reduce){.atlas--map .atlas__pt.is-near .atlas__dot{animation:none}}
.atlas__attr{margin-top:7px;font-size:10.5px;color:var(--ink-mute);text-align:right}
@media (max-width:640px){
  .atlas--map .atlas__lbl{font-size:9px;padding:3px 8px;letter-spacing:.06em}
  .atlas--map .atlas__dot{width:12px;height:12px}
}

/* b40 · Palette hygiene + rhythm (Ray: "do the colors match / award vibes").
   Gold-era literals that survived the crimson retune, unified to the brand accent;
   selection made readable. (Ivory deepening tried and REVERTED per Ray: light sections
   stay the flat near-white.) */
.btn:hover{box-shadow:0 14px 30px rgba(184,28,44,.22)}
.jstep .dot{box-shadow:0 0 0 5px rgba(184,28,44,.13)}
.pay2::before{background:linear-gradient(180deg,var(--champagne),rgba(184,28,44,.25))}
.nav.stuck{box-shadow:0 1px 0 rgba(41,54,62,.10)}
::selection{background:var(--champagne);color:#fff}
/* b40-3 · "See all FAQs" link: crimson on the restored ivory is 4.37:1; use the deep crimson. */
.hfaq__all{color:var(--champagne-2)}
/* b40-4 · Mobile sticky CTA bar was still the pre-retune ink NAVY (rgba(33,42,49,...));
   it floats over espresso sections and read blue-black. Now brand espresso. */
.mcta{background:rgba(41,54,62,.94)}
@media (hover:none){.mcta{background:rgba(41,54,62,.98)}}
/* b41 · "A white that pops" (Ray): base goes true gallery white. Porcelain #fdfdfb ->
   #ffffff so the espresso bands, crimson accents, and photography sit on a crisp field. */
:root{--porcelain:#ffffff}

/* b42 · Conversion round: verbatim review quotes in the award band + the live-special
   card on the quiz results (both real content: Google reviews via their Birdeye profiles,
   specials read from the CMS-driven modal). */
.rev__quotes{list-style:none;margin:clamp(34px,4vw,54px) 0 0;padding:clamp(24px,3vw,36px) 0 0;border-top:1px solid var(--line-light);display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.6vw,40px);grid-column:1/-1}
.rq__q{margin:0;font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(17px,1.35vw,21px);line-height:1.45;color:var(--ink-head)}
.rq__a{margin:12px 0 0;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute)}
@media (max-width:760px){.rev__quotes{grid-template-columns:1fr;gap:22px}}

.quiz__offer{display:flex;align-items:center;gap:clamp(16px,2vw,28px);margin-top:22px;padding:clamp(16px,2vw,22px) clamp(18px,2.2vw,26px);background:var(--white);border:1px solid var(--line-light);border-radius:var(--r);text-align:left}
.quiz__offer[hidden]{display:none}
.quiz__offer-txt{flex:1 1 auto;min-width:0}
.quiz__offer-eye{display:block;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);margin-bottom:6px}
.quiz__offer-t{margin:0;font-family:var(--serif);font-weight:600;font-size:clamp(17px,1.4vw,21px);line-height:1.15;color:var(--ink-head)}
.quiz__offer-o{margin:6px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-body)}
.quiz__offer-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.quiz__offer-val{font-family:var(--serif);font-weight:600;font-size:clamp(20px,1.8vw,26px);color:var(--champagne)}
.quiz__offer-btn{background:none;border:none;padding:4px 0;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-head);cursor:pointer;border-bottom:1px solid var(--slate)}
.quiz__offer-btn:hover{color:var(--champagne-2)}
@media (max-width:560px){
  .quiz__offer{flex-direction:column;align-items:flex-start}
  .quiz__offer-side{flex-direction:row;align-items:center;gap:16px}
}

/* ===================== b43 · SMALL-TEXT OVERHAUL (Ray, 2026-07-10 PM) =====================
   Programmatic sweep of computed sizes found 9.5px-12.5px functional text on desktop and
   8.5px-13px on mobile. Floors: desktop micro-labels >=12px (tiny decorative >=11px),
   buttons/captions/disclaimers >=13.5px; mobile micro-labels >=13px, buttons >=13.5px.
   The mono-microcap look stays; nothing squints. */

/* Token lever: eyebrow scale (elabels, footer column heads, kickers that use it). */
:root{--t-eyebrow:clamp(12px,.85vw,13px)}

/* Desktop + all viewports: fixed-px offenders from the sweep. */
.atr__spec dt{font-size:11px}
.apay__facts dd{font-size:11.5px}
.mq__eye{font-size:11.5px}
.chap{font-size:11px}
.ba__tag{font-size:11px}
.aprov__role{font-size:11.5px}
.lc__state,.lcard__state{font-size:11px}
.rq__a{font-size:11.5px}
.atr__poplabel{font-size:11.5px}
.aprov__cred{font-size:11.5px}
.chip--static{font-size:11.5px}
.atlas--map .atlas__lbl{font-size:11px}
.atlas__attr{font-size:11.5px}
.eyebrow{font-size:12px}
.elabel{font-size:var(--t-eyebrow)}
.cmq__eyebrow{font-size:12px}
.prac__facts dt{font-size:12px}
.quiz__steplab{font-size:12px}
.quiz__result-lab{font-size:12px}
.aprov__credcard span{font-size:12px}
.bigpic__cap{font-size:12.5px}
.wb__kicker{font-size:var(--t-eyebrow)}
.award__kick{font-size:var(--t-eyebrow)}
.fmap__tab{font-size:12.5px}
.fmap__concerns{font-size:13px}
.wb__photo figcaption{font-size:13px}
.wb__photo--inset figcaption{font-size:11.5px}
.prac__media figcaption{font-size:13px}
.ighz__card figcaption,.ighz figcaption{font-size:12.5px}
.elink{font-size:13px}
.txtlink{font-size:clamp(14px,1vw,15px)}
.foot__disc{font-size:13px}
.ba-disc{font-size:13.5px}
.quiz__disclaimer{font-size:13px}
.quiz__restart{font-size:12px}
.quiz__back{font-size:13px}
.lc__hrs{font-size:11.5px}
.ckb__b{font-size:13px}
.ckb__t{font-size:14px}
.aloc__geobtn{font-size:12.5px}

/* Buttons: never below 13.5px anywhere. */
.nav .btn,.mcta .btn,.lc__book{font-size:13.5px}
.foot a{font-size:14px}
.award__creds li{font-size:14.5px}

/* Mobile floors on top (sweep at 390px). */
@media (max-width:719px){
  .atr__spec dt{font-size:11px}
  .atlas--map .atlas__lbl{font-size:10.5px;padding:3px 9px}
  .chap{font-size:11px}
  .lc__state,.lcard__state{font-size:11.5px}
  .rq__a{font-size:12px}
  .aprov__credcard span{font-size:12.5px}
  .aprov__role,.aprov__cred{font-size:12px}
  .elabel,.eyebrow,.wb__kicker,.award__kick{font-size:13px}
  .quiz__steplab,.quiz__result-lab{font-size:12.5px}
  .atr__poplabel,.prac__facts dt{font-size:12.5px}
  .fmap__tab{font-size:13px}
  .elink{font-size:13.5px}
  .foot__disc{font-size:13.5px}
  .lc__hrs{font-size:12.5px}
  .lc__hrs b,.lcard__hours b{font-size:12.5px}
  .btn{font-size:14px}
  .nav .btn,.mcta .btn,.lc__book{font-size:13.5px}
  .foot a{font-size:14.5px}
  .figcap,figcaption{font-size:13.5px}
  .atlas__attr{font-size:11.5px}
  .mq__eye{font-size:12.5px}
}

/* b43-2 · Full-range belt goes espresso (Ray: "this section should have our brown accent
   pop"). Same treatment family as the face map; the white conversation card now glows on
   dark. Edge fades re-derived from the espresso rgb (they hardcoded the light bg). */
.cmq--dark{background:var(--ink)}
.cmq--dark .elabel{color:rgba(247,250,252,.82)}
.cmq--dark .cmq__h{color:var(--paper-head)}
.cmq--dark .cmq__h .serif-i{color:var(--clay)}
.cmq--dark .cmq__track li{color:var(--paper-head)}
.cmq--dark .cmq__row--rev .cmq__track li{color:var(--paper-mute)}
.cmq--dark .cmq__track li::after{background:var(--clay);opacity:.6}
.cmq--dark .cmq__row::before{background:linear-gradient(90deg,var(--ink),rgba(37,54,63,0))}
.cmq--dark .cmq__row::after{background:linear-gradient(270deg,var(--ink),rgba(37,54,63,0))}
.cmq--dark .cmq__card{box-shadow:0 26px 80px rgba(0,0,0,.5)}

/* b43-3 · Small-text stragglers that lost specificity battles in the first pass. */
div.lc__state{font-size:11px}
.locg__h span{font-size:11.5px}
.ba__cap,.ba figcaption{font-size:12.5px}
.rev__side .nm,.rev__side .st{font-size:12px}
a.btn.lc__book,a.btn.lcard__book{font-size:13px}
a.ebtn{font-size:13.5px}
.lc__hrs b,.lcard__hours b{font-size:12.5px}
@media (max-width:719px){
  div.lc__state{font-size:11.5px}
  a.btn.lc__book,a.btn.lcard__book{font-size:13px}
}
/* b43-4 · Final two stragglers (specificity). */
.lcard .lc__state{font-size:11.5px}
#results figure figcaption{font-size:12.5px}
/* b43-5 · Hero trust-strip labels on mobile. */
@media (max-width:719px){ .ts span{font-size:12px} }
/* b43-6 · Serif-size pass on mobile (Ray screenshots): Cormorant reads visually smaller
   than its px size, so serif quotes/values get their own mobile floors. */
@media (max-width:719px){
  .rq__q{font-size:19px;line-height:1.5}
  .rq__a{font-size:12.5px}
  .prac__facts dd{font-size:18px;line-height:1.35}
  .atr__spec dd{font-size:16.5px}
  .apay__facts dt{font-size:18px}
  .lc__near,.lcard__near{font-size:15.5px;line-height:1.55}
  .rev__side blockquote{font-size:17.5px;line-height:1.55}
  .quiz__offer-t{font-size:18px}
  .aprov__credcard h4{font-size:20px}
}

/* ===================== b44 · TASTE-SKILL ROUND (Ray: "do all, lets see") =====================
   All CSS-toggle where possible; revert = delete this block (plus restore the two CTA labels). */
/* 1) b118: the b44 static-wall rules are GONE (they hid the cloned half of the track, so the
   b90 mqloop ran into blank after the last logo). The brand wall scrolls again per Pastel 42. */
/* 2) Eyebrow restraint: chapter numbers off; eyebrows stay only on the six sub-nav
   sections (Results, Quiz, Treatments, Team, Locations, FAQ). CMS fields untouched. */
.chap{display:none}
.cmq--dark .cmq__head .elabel{display:none}
.wb__text>.eyebrow{display:none}
#reviews .rev__head .eyebrow{display:none}
.fmap--dark .fmap__head .elabel{display:none}
#journey .jrn2__head .elabel{display:none}
#inside .eyebrow{display:none}
#payment .elabel{display:none}
#consult .cform-sec__lead .elabel{display:none}
/* 3) Decorative dots off the award credentials. */
.award__creds li{padding-left:0}
.award__creds li::before{display:none}
.fcta .eyebrow{display:none}
/* b44-2 · Hero trust counters centered under the CTAs (Ray). */
.hero__trust{justify-content:center}
.hero__trust .ts{text-align:center;padding-right:clamp(18px,2.2vw,36px)}

/* ===================== b45 · TASTE ROUND 2 (Ray approved 1-5) ===================== */
/* 1) Sub-nav scrollspy: the active section gets a crimson underline (JS sets .is-on). */
@media (min-width:861px){
  
  
  
  
}
/* 2) Double-bezel on the two jewel cards (machined nested frame; Calta pattern). */
.bezel{padding:7px;border-radius:calc(var(--r-l) + 7px);background:rgba(41,54,62,.045);border:1px solid rgba(41,54,62,.09)}
.bezel--dark{background:rgba(41,54,62,.07);border-color:rgba(41,54,62,.12)}
.bezel>.quiz__card,.bezel>.award{box-shadow:inset 0 1px 0 rgba(255,255,255,.06),var(--sh-2)}
.bezel>.award{box-shadow:inset 0 1px 0 rgba(255,255,255,.9),var(--sh-1)}
.quiz__card{max-width:none}
.bezel--dark{max-width:794px;margin:0 auto}
/* 3) Grain on the espresso bands (inline SVG turbulence; static bg layer, zero requests). */
.cmq--dark,.fmap--dark{background-color:var(--ink);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E")}
.quiz__card{background-color:var(--ink-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E")}
/* 4) Typographic hygiene: no orphaned last words in display headings. */
h1,h2,.quiz__title,.aprov__h,.jrn2__h,.fmap__h,.cmq__h,.award__h,.aloc__h,.cform-sec__h{text-wrap:balance}
/* 5) Micro spacing: belt headline breathing room; award band left column fills its height. */
.cmq--dark .cmq__head{padding-top:clamp(6px,1vw,18px)}
.rev__l{display:flex;flex-direction:column;justify-content:space-between;gap:28px}

/* ===================== b46 · MOBILE FLOATING PILL NAV (Ray: "only for mobile") =====================
   Under 861px, the stuck header becomes a detached espresso capsule (near-solid, NO
   backdrop-filter: iOS burn list). Over the hero it stays the current transparent bar.
   Same element, same burger, same focus trap; pure state reskin. Desktop unchanged. */
/* ===================== b52b - HERO TOP CAP (mobile) =====================
   iOS renders the status-bar strip as translucent glass over a blur of the page top; a bare
   photo blurs to muddy gray no matter the theme-color. Near-solid espresso across the hero's
   first ~96px gives the glass a uniform color to blur, so the strip reads clean espresso at the
   top (then site.js b52 flips the chrome white once the pill engages). Sits above the photo and
   scrim, below the hero copy (z2) and the fixed nav. Mobile-scoped: the phone strip is the issue;
   desktop hero art untouched. */
@media (max-width:860px){
  .hero::before{content:"";position:absolute;left:0;right:0;top:0;height:64px;z-index:1;pointer-events:none;
    background:linear-gradient(to bottom,var(--ink) 0%,rgba(37,54,63,.55) 45%,rgba(37,54,63,0) 100%)}
}

@media (max-width:860px){
  .nav.stuck{
    top:2px;left:12px;right:12px;
    padding:4px 10px 4px 18px;
    background:rgba(41,54,62,.96);
    border:1px solid rgba(247,250,252,.22);
    border-radius:999px;
    box-shadow:0 14px 40px rgba(10,15,19,.35);
  }
  /* keep the white wordmark on the espresso capsule */
  .nav.stuck .nav__logoimg--dark{display:none}
  .nav.stuck .nav__logoimg--light{display:block}
  .nav.stuck .nav__burger span{background:var(--paper-head)}
  .nav.stuck .nav__logoimg{height:26px;width:auto}
}

/* ============================================================
   b47 (2026-07-10): Apple-pill buttons sitewide + floating
   bottom CTA capsule on mobile (pairs with the b46 pill nav)
   + bottom CTA yields to the quiz and to the keyboard.
   Revert = delete this block (+ restore site.js mcta guard).
   ============================================================ */
.btn,.ebtn,.ckb__b,.chip,
.nav .btn,.hero__cta .btn,.lc .btn,.mcta .btn,.mobnav .btn{border-radius:999px}
.quiz__opt{border-radius:999px;padding-left:26px;padding-right:26px}
.quiz__browse-pills .quiz__opt{border-radius:999px}

/* Bottom CTA = floating capsule on mobile, same recipe as the pill nav */
@media (max-width:860px){
  .mcta{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));
    padding:8px;background:rgba(41,54,62,.96);
    border:1px solid rgba(247,250,252,.22);border-top:1px solid rgba(247,250,252,.22);
    border-radius:999px;box-shadow:0 14px 40px rgba(10,15,19,.35);
    transform:translateY(calc(120% + 44px))}
  .mcta.show{transform:none}
  .mcta .btn{min-height:46px}
  body:has(.mcta.show) .ckb{bottom:calc(clamp(14px,3vw,24px) + 78px)}
}

/* b47b (2026-07-10): inner pages' mobile nav pill was WHITE (html body.page-inner
   .nav at 0,2,2 beat the b46 espresso) while b46 swapped in the white logo =
   invisible brand on every inner page phone nav. Tie the specificity here (later
   in file wins) so the espresso capsule applies sitewide. */
@media (max-width:860px){
  html body .nav.stuck{background:rgba(41,54,62,.96)}
}

/* b49a (2026-07-12): mobile nav container 6px shorter at page top per Ray (Email Review Feedback).
   Mobile only; the scrolled .stuck pill and desktop are untouched. */
@media (max-width:860px){
  .nav:not(.stuck){padding-block:6px}
}

/* ---------- b58: floating side pill (desktop on-this-page nav; replaces .subnav) ---------- */
/* b88: the side pill is a right-edge pull-out drawer (Erica: match the a11y tab). At rest only
   the dot rail peeks (--tuck strip); hover or keyboard focus slides the full pill out. The
   scroll-hide state composes through the same --tuck var so both behaviors stack cleanly. */
.spill{--tuck:calc(100% - 36px);position:fixed;right:0;top:50%;transform:translate(var(--tuck),-50%);z-index:60;display:flex;flex-direction:column;gap:2px;padding:16px 18px;background:rgba(251,251,249,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line-light);border-right:0;border-radius:24px 0 0 24px;box-shadow:0 18px 50px rgba(33,42,49,.14);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.spill:hover,.spill:focus-within{--tuck:0px}
.spill a{display:flex;align-items:center;gap:10px;padding:7px 2px;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);transition:color .25s}
.spill a:hover{color:var(--ink-head)}
.spill__dot{flex:none;width:6px;height:6px;border-radius:50%;border:1px solid currentColor;background:transparent;transition:background .25s,border-color .25s}
.spill a.is-on{color:var(--champagne)}
.spill a.is-on .spill__dot{background:var(--champagne);border-color:var(--champagne)}
.spill .spill__fyt .spill__dot{border-color:var(--champagne)}
html.spill-armed .spill:not(.show){opacity:0;transform:translate(calc(var(--tuck) + 12px),-50%);pointer-events:none}
@media (max-width:1279px){.spill{right:0}}
@media (max-width:860px){.spill{display:none}}
@media (prefers-reduced-motion:reduce){.spill{transition:none}}
.nav__menugrp{display:block;padding:10px 2px 4px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute);opacity:.75}
.nav__menu .nav__menugrp:first-child{padding-top:2px}
.mobnav{overflow-y:auto;-webkit-overflow-scrolling:touch}


/* b58c: nested Shop flyout (Skincare / Gift Cards), mirrors the client's current-site submenu */
.nav__sub{position:relative;display:block}
.nav__subtop{display:flex!important;align-items:center;justify-content:space-between;gap:18px}
.nav__caret{font-size:15px;line-height:1;color:var(--ink-mute);transition:transform .18s,color .18s}
.nav__sub:hover .nav__caret{transform:translateX(2px);color:var(--ink-head)}
.nav__submenu{position:absolute;left:calc(100% + 6px);top:-9px;min-width:206px;background:var(--porcelain);border:1px solid var(--line-light);border-radius:14px;box-shadow:0 24px 58px rgba(33,42,49,.2);padding:9px;display:flex;flex-direction:column;gap:2px;opacity:0;visibility:hidden;pointer-events:none;transform:translateX(4px);transition:opacity .2s var(--ease),transform .2s var(--ease);z-index:91}
.nav__submenu::before{content:"";position:absolute;left:-8px;top:0;bottom:0;width:8px}
.nav__sub:hover .nav__submenu,.nav__sub:focus-within .nav__submenu{opacity:1;visibility:visible;pointer-events:auto;transform:none}
@media (max-width:1279px){.nav__submenu{left:auto;right:calc(100% + 6px);transform:translateX(-4px)}.nav__submenu::before{left:auto;right:-8px}}

/* b59: homepage restructure */
.tintcool{background:#eef2f5}
.tcar__rail{position:relative;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;padding:16px 0 10px;scrollbar-width:none}
.tcar__rail::-webkit-scrollbar{display:none}
.tcar__track{list-style:none;display:flex;gap:clamp(18px,2.4vw,34px);margin:0;padding:0 max(24px,calc((100vw - 1240px)/2))}
.tcar__card{flex:none;width:132px;text-align:center;scroll-snap-align:start}
.tcar__card img{width:96px;height:96px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 10px;border:2px solid var(--white);box-shadow:0 8px 22px rgba(41,54,62,.16)}
.tcar__card h4{font-family:var(--sans);font-weight:600;font-size:13.5px;color:var(--ink-head);margin:0 0 2px;line-height:1.25}
.tcar__card span{font-size:11.5px;color:var(--ink-mute);line-height:1.3;display:block}
.tcar__ctas{display:flex;gap:28px;align-items:center;margin-top:18px}
.apay__card--members{background:#eef2f5}
/* rail arrows */
.railwrap{position:relative}
.railbtn{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:40px;height:40px;border-radius:50%;border:1px solid var(--line-light);background:rgba(251,251,249,.94);color:var(--ink-mute);font-size:17px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 26px rgba(41,54,62,.14);transition:color .2s,opacity .2s}
.railbtn:hover{color:var(--ink-head)}
.railbtn--prev{left:10px}.railbtn--next{right:10px}
.railbtn[disabled]{opacity:0;pointer-events:none}
html:not(.spill-armed) .railbtn{display:none}
@media (max-width:860px){.railbtn{width:34px;height:34px}}

/* b59: treatments showcase renders as a compact 4-card band on DESKTOP ONLY (mobile keeps the full showcase) */
@media (min-width:861px){
  .atr .atr__list{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.6vw,22px);margin-top:34px}
  .atr .atr__row,.atr .atr__row--rev{display:flex;flex-direction:column;gap:0;background:var(--white);border:1px solid var(--line-light);border-radius:16px;overflow:hidden;align-items:stretch;margin:0}
  .atr .atr__img{width:100%;max-width:none;aspect-ratio:4/5;height:auto;min-height:0;margin:0;border-radius:0}
  .atr .atr__img img{width:100%;height:100%;object-fit:cover;display:block}
  .atr .atr__txt{padding:16px 18px 20px;display:flex;flex-direction:column;gap:8px;width:auto;max-width:none}
  .atr .atr__num,.atr .atr__spec,.atr .atr__pop{display:none}
  .atr .atr__cat{font-size:var(--t-h4);margin:0}
  .atr .atr__benefit{font-size:var(--t-sm);margin:0}
  .atr .atr__best{font-size:12.5px;margin:0}
  .atr .atr__txt .elink{margin-top:auto}
  .atr__all{margin-top:26px}
}
@media (max-width:1100px) and (min-width:861px){.atr .atr__list{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){.atr__all{display:none}}

/* b59c: Treatments mega menu (Face / Skin / Body), mirrors the client's current-site menu tree */
.nav__drop--mega{position:relative}
.nav__menu--mega{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:2px 26px;left:0;transform:translateY(6px);top:calc(100% + 8px);min-width:min(780px,calc(100vw - 48px));max-height:calc(100vh - 130px);overflow:auto;padding:18px 24px 22px}
.nav__drop--mega:hover .nav__menu--mega,.nav__drop--mega:focus-within .nav__menu--mega{transform:translateY(0)}
@media (max-width:1200px){.nav__menu--mega{min-width:620px;gap:2px 18px}.nav__menu--mega a{font-size:12.5px;padding:6px 12px}.nav__menu--mega a.mega__sub{font-size:12px;padding-left:26px}}
.nav__menu--mega .mega__col{display:flex;flex-direction:column;gap:1px}
.mega__head{display:block;padding:6px 15px 5px;font-size:10.5px;font-weight:700!important;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute)!important}
.mega__head:hover{color:var(--ink-head)!important}
.nav__menu--mega a{padding:6.5px 15px;font-size:13.5px}
.nav__menu--mega a.mega__sub{padding-left:30px;font-size:12.5px;color:var(--ink-mute)!important}
.nav__menu--mega a.mega__sub:hover{color:var(--ink-head)!important}

/* b62: memberships / financing as two distinct half-bands (full-bleed split, no added length) */
.apay--split{padding:0;background:var(--porcelain)}
.apay__kicker{display:flex;align-items:center;justify-content:center;gap:12px;margin:0;padding:clamp(30px,3.4vw,44px) var(--gut) clamp(20px,2.4vw,30px);font-family:var(--sans);font-size:var(--t-eyebrow);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-mute)}
.apay__kicker .chap{font-family:var(--mono);color:var(--champagne)}
.apay__halves{display:grid;grid-template-columns:1fr 1fr}
.apay__half{padding:clamp(38px,4.2vw,60px) clamp(24px,4.4vw,84px) clamp(44px,4.6vw,66px)}
.apay__half--members{background:#e7edf2}
.apay__half--fin{background:var(--white);border-left:1px solid var(--line-light)}
.apay__half--members .apay__inner{margin-left:auto}
.apay__half--fin .apay__inner{margin-right:auto}
.apay__inner{max-width:560px;display:flex;flex-direction:column;gap:16px}
.apay__ht{font-family:var(--serif);font-weight:600;font-size:var(--t-h3);color:var(--ink-head);margin:0}
.apay__inner .apay__copy{margin:0}
.apay__inner .btn{align-self:flex-start;margin-top:6px}
.apay__inner .apay__facts{margin:4px 0 0}
@media (max-width:860px){.apay__halves{grid-template-columns:1fr}.apay__half{padding:34px var(--gut) 40px}.apay__inner{max-width:none}.apay__half--fin{border-left:0;border-top:1px solid var(--line-light)}}

/* b62c: mega hover stability: generous bridge + close-grace so micro-exits don't slam it shut */
.nav__drop--mega .nav__droptop{position:relative}
.nav__drop--mega .nav__droptop::before{content:"";position:absolute;left:-16px;right:-16px;top:100%;height:34px}
.nav__menu--mega::before{top:-30px;height:30px}
.nav__menu--mega{transition:opacity .18s var(--ease) .14s,transform .18s var(--ease) .14s,visibility 0s .32s}
.nav__drop--mega:hover .nav__menu--mega,.nav__drop--mega:focus-within .nav__menu--mega{transition:opacity .16s var(--ease),transform .16s var(--ease),visibility 0s}

/* b64: financing pills + loyalty weave + mobile accordion drawer (desktop-parity nav tree) */
.finpills{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 22px}
.lweave{margin:18px 0 26px;border-radius:14px;overflow:hidden}
.lweave img{width:100%;height:auto;display:block}
.mobnav details.macc{border-bottom:1px solid var(--line-dark)}
.mobnav details.macc>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;font-family:var(--serif);font-size:clamp(30px,9vw,46px);color:var(--paper-head);padding:9px 0}
.mobnav details.macc>summary::-webkit-details-marker{display:none}
.mobnav .mcar{font-family:var(--sans);font-weight:400;font-size:.6em;color:var(--paper-mute);transition:transform .25s var(--ease);line-height:1}
.mobnav details[open]>summary .mcar{transform:rotate(45deg)}
.mobnav .macc__body{padding:2px 0 16px}
.mobnav details.macc--sub{border-bottom:0}
.mobnav details.macc--sub>summary{font-size:clamp(21px,5.6vw,26px);padding:8px 0}
.mobnav .macc__links{padding:2px 0 8px}
.mobnav .macc__links a,.mobnav a.mall{display:block;font-family:var(--sans);font-size:16px;color:rgba(247,250,252,.85);padding:11px 0 11px 16px;border-bottom:0!important}
.mobnav .macc__links a.msub{padding-left:34px;font-size:14.5px;color:rgba(247,250,252,.62)}
.mobnav .macc__links a.mall{color:var(--paper-head);font-weight:600}
.mobnav a.macc__browse{padding-left:0;font-weight:600;color:var(--paper-head)}

/* b64b: hover bridge + close-grace generalized to EVERY nav dropdown (Shop, About, Locations; Treatments already had it) and the Shop nested flyouts */
.nav__drop .nav__droptop{position:relative}
.nav__drop .nav__droptop::before{content:"";position:absolute;left:-16px;right:-16px;top:100%;height:34px}
.nav__menu{transition:opacity .18s var(--ease) .14s,transform .18s var(--ease) .14s,visibility 0s .32s}
.nav__drop:hover .nav__menu,.nav__drop:focus-within .nav__menu{transition:opacity .16s var(--ease),transform .16s var(--ease),visibility 0s}
.nav__submenu{transition:opacity .16s var(--ease) .12s,transform .16s var(--ease) .12s,visibility 0s .28s}
.nav__sub:hover .nav__submenu,.nav__sub:focus-within .nav__submenu{transition:opacity .14s var(--ease),transform .14s var(--ease),visibility 0s}

.mobnav summary{touch-action:manipulation;-webkit-tap-highlight-color:rgba(0,0,0,0)}

/* b65: booking drawer premium restyle (light tinted selection, no dark fills) */
.bd__loc{border-radius:12px;background:var(--white);padding:13px 34px 13px 15px}
.bd__loc:hover{border-color:var(--cocoa);background:var(--white)}
.bd__loc.is-sel{background:#e7edf2;border-color:var(--cocoa);box-shadow:0 10px 26px rgba(41,54,62,.10)}
.bd__loc.is-sel .bd__loccity{color:var(--ink-head)}
.bd__loc.is-sel .bd__locstate{color:var(--ink-mute)}
.bd__locstate{color:var(--ink-mute)}
.bd__loc{position:relative}
.bd__loc.is-sel::after{content:"";position:absolute;top:12px;right:12px;width:16px;height:16px;border-radius:50%;background:var(--cocoa) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M4 8.4l2.6 2.6L12 5.6" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') center/10px 10px no-repeat}
.bd__chip{border-radius:999px;padding:10px 16px}
.bd__chip:hover{border-color:var(--cocoa);color:var(--ink-head)}
.bd__chip.is-sel{background:#e7edf2;color:var(--ink-head);border-color:var(--cocoa)}
.bd__go[aria-disabled="true"]{opacity:1;pointer-events:none;background:var(--ivory);border-color:var(--ivory);color:var(--ink-mute);box-shadow:none}
.bd__n{color:var(--champagne)}
/* b65: carried-over polish */
#results{--section:clamp(40px,4.2vw,64px)}
#results .shead{margin-bottom:6px}
#results .shead h2{margin-bottom:10px}
#results .ba-disc,#results .rev-disc,#results p[class*=disc]{margin-top:12px}
#results .elink{margin-top:12px!important}
.rev__l{gap:20px}
.rev__l blockquote{margin:0}
.cta-row{gap:clamp(20px,2.4vw,34px)}
.cat-card p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#locations .lc__city,#locations .lc__name{font-size:0.92em}
#locations{font-size:15px}
#consult .cform__row{gap:18px}
#consult .cform{row-gap:18px}
.mq{background:#eef2f5}
.tier{border-radius:16px;border:1px solid var(--line-light);box-shadow:0 18px 44px rgba(41,54,62,.08)}
.baw__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.8vw,24px)}
.baw__grid figure{margin:0;border-radius:14px;overflow:hidden;border:1px solid var(--line-light)}
.baw__grid img{width:100%;height:auto;display:block}
.baw__grid figcaption{padding:10px 14px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);background:var(--white)}
@media (max-width:860px){.baw__grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.baw__grid{grid-template-columns:1fr}}

/* b67: auditor-round fixes */
/* 3. hero top scrim: white nav always passes contrast over light imagery */
@media (min-width:861px){.nav:not(.stuck)::before{content:"";position:absolute;inset:0 0 -22px 0;z-index:-1;pointer-events:none;background:linear-gradient(to bottom,rgba(10,13,16,.26),rgba(10,13,16,.10) 58%,rgba(10,13,16,0))}.nav:not(.stuck) .nav__links a:not(.btn),.nav:not(.stuck) .nav__logo .wordmark{text-shadow:0 1px 8px rgba(10,13,16,.25)}}
/* 4. reviews: rating-led panel, award demoted */
.award__rating{display:flex;align-items:center;gap:16px;margin-bottom:4px}
.award__score{font-family:var(--serif);font-weight:600;font-size:clamp(52px,5vw,72px);line-height:1;color:var(--ink-head)}
.award__ratlab{font-family:var(--sans);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);line-height:1.5}
.award__won{margin-top:14px;font-family:var(--sans);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute)}
.award__won em{font-style:normal}
/* 6. concern ticker: words fade before passing under the floating card (was a hard mid-word slice) */

/* 7. treatment page modules */
.svc-facts{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--white);border:1px solid var(--line-light);border-radius:14px;padding:18px 20px 22px;margin:0 0 26px;max-width:680px;margin-inline:auto}
.svc-facts div{display:flex;flex-direction:column;gap:4px;text-align:center}
.svc-facts dt{font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute)}
.svc-facts dd{margin:0;font-family:var(--serif);font-weight:600;font-size:clamp(17px,1.6vw,21px);color:var(--ink-head)}
.svc-facts__lab{position:absolute;top:-9px;left:50%;transform:translateX(-50%);background:var(--porcelain);padding:0 10px;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--champagne-2);white-space:nowrap}
@media (max-width:560px){.svc-facts{grid-template-columns:1fr;gap:12px}}
.svc-ba{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;background:#e7edf2;border-radius:16px;padding:clamp(22px,3vw,34px) clamp(22px,3.4vw,40px);margin:30px auto 0;max-width:680px}
.svc-ba h2{font-family:var(--serif);font-weight:600;font-size:var(--t-h4);color:var(--ink-head);margin:6px 0 8px}
.svc-ba p{color:var(--ink-body);margin:0;font-size:var(--t-sm)}
.svc-bookbar{display:none}
@media (min-width:861px){.svc-bookbar{display:inline-flex;position:fixed;right:92px;bottom:26px;z-index:55;box-shadow:0 18px 44px rgba(41,54,62,.28)}}
/* 8. registered marks in display headings */
sup.reg{font-size:.48em;line-height:0;vertical-align:super;letter-spacing:0}
/* 8c. side pill book item */
.spill__bk{margin-top:8px;padding-top:12px!important;border-top:1px solid var(--line-light);color:var(--champagne)!important;font-weight:700!important}
.spill__bk .spill__dot{background:var(--champagne);border-color:var(--champagne)}
.spill__bk:hover{color:var(--champagne-2)!important}
/* 9. category cards with imagery */
.cat-card--img{padding:0;overflow:hidden}
.cat-card__img{margin:0;aspect-ratio:16/9;overflow:hidden}
.cat-card__img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s var(--ease)}
.cat-card--img:hover .cat-card__img img{transform:scale(1.04)}
.cat-card__b{padding:18px 20px 22px;display:flex;flex-direction:column;flex:1}
.cat-card__b .arw{margin-top:auto}
/* 10. our-team cards restyled b87 (SkinSpirit-pattern portrait cards); the design now lives
   entirely in gen_team.py CSS, so the old small-circle overrides are gone on purpose. */
/* "team member small scroll": roomier carousel cards */
.tcar__card{width:150px}
.tcar__card img{width:110px;height:110px;object-position:50% 22%}
/* 11. location contact row icons */
.loc-ic{display:inline-block;width:15px;height:15px;vertical-align:-2px;margin-right:7px;color:var(--champagne-2)}

/* b68: mobile compaction (floating chrome leaves ~700px usable; cards + form fit a screen) */




@media (min-width:861px){}
@media (max-width:860px){
  /* location cards: tighter rhythm; hours collapsed by default. Media keeps the storefront
     photos' native 3/2: the b68 21/9 strip predates the real b83 exteriors and cropped their
     signage; the rail shows one card at a time so the taller media costs no fold space. */
  .lcard__media img{aspect-ratio:3/2;height:auto}
  .lcard__body{padding:13px 13px 14px}
  .lcard__name{font-size:16.5px;margin-bottom:4px;line-height:1.15}
  .lc__state{font-size:9px;margin-bottom:3px}
  .lcard__addr{font-size:11.5px;margin-bottom:4px;line-height:1.4}
  .lcard__tel{font-size:12.5px}
  .lcard__near{display:none}
  .lcard__hours{margin:7px 0 0;padding-top:6px}
  
  .lcard__cta{margin-top:9px;gap:8px}
  .lcard__book{min-height:44px;padding:11px 12px;font-size:11px;width:100%}
  .lcard__view{font-size:11px}
  /* category service cards: horizontal thumb rows, ~4 per screen */
  .cat-card--img{flex-direction:row;align-items:stretch;min-height:0}
  .cat-card--img .cat-card__img{aspect-ratio:auto;width:104px;flex:none}
  .cat-card--img .cat-card__b{padding:12px 14px}
  .cat-card h3{font-size:17px;margin:0 0 4px}
  .cat-card p{font-size:12.5px;line-height:1.45;-webkit-line-clamp:2}
  .cat-card .arw{font-size:12px;margin-top:6px}
  .cat-grid{gap:10px;margin-top:22px}
  /* homepage treatments showcase rows: tighter media + specs */
  .atr__img{aspect-ratio:4/5}
  .atr__row{padding:18px 0;gap:12px}
  .atr__spec,.atr__pop{display:none}
  .atr__txt{gap:6px}
  .atr__num{display:none}
  .atr__cat{font-size:22px;margin:0}
  .atr__benefit{font-size:14px;margin:0}
  .atr__best{font-size:12px;margin:0}
  /* consult form: one-screen fit */
  #consult{--section:clamp(48px,7vw,70px)}
  #consult .cform__row{gap:10px}
  #consult .cform{row-gap:10px}
  #consult input,#consult select,#consult textarea{padding:11px 13px;font-size:16px}
  #consult textarea{min-height:74px}
  #consult .shead{margin-bottom:10px}
  #consult .shead h2{margin-bottom:8px}
  #consult .btn{min-height:46px}
}

/* b68: mobile whitespace sweep (Ray: shorter page) */
@media (max-width:860px){
  :root{--section:clamp(44px,9vw,60px)}
  .section{padding-block:clamp(48px,11vw,62px)}
  .shead{margin-bottom:4px}
  .shead h2{margin-bottom:10px}
  #standard .wb__photo--inset{display:none}
  #standard .wb__photo--main{margin:0}
  #standard .wb__photo--main img{aspect-ratio:16/9;height:auto}
  #standard .wb__grid{gap:14px}
  #standard .wb__text h2{margin-bottom:8px;font-size:clamp(28px,7.4vw,34px)}
  #standard .wb__text h3{margin-bottom:8px}
  #standard .wb__text p{margin-bottom:9px;font-size:15px;line-height:1.55}
  #standard .eyebrow{margin-bottom:6px}
  #standard .tick{margin-top:8px;gap:4px}
  #standard .tick li{padding:4px 0;font-size:13.5px}
  #standard blockquote,#standard [class*=quote]{margin:10px 0;font-size:17px}
  #reviews .rq{padding:10px 0}
  #reviews .rev__quotes{margin-top:12px}
  #reviews .bezel{padding:18px}
  #reviews .award{gap:8px}
  #reviews .rev__l{gap:14px}
  #journey .wrap>ol li,#journey [class*=step]{padding:10px 0}
  #results .ba-disc{margin-top:8px}
  #results figure{margin-bottom:10px}
  .apay__half{padding:26px var(--gut) 30px}
  #home-faq details{padding:10px 0}
  .bigpic,section[class*=bigpic]{max-height:340px;overflow:hidden}
  .atr__head{margin-bottom:4px}
  .fmap__head{margin-bottom:10px}
}

/* b71: carousel cards must not scale/fade individually (weird grow on swipe); the section reveals once */
html.js-ready .locg__cards .reveal{opacity:1 !important;transform:none !important;transition:none !important}

/* b71: payment kicker true center */
.apay__kicker{display:block;text-align:center}
.apay__kicker .chap{margin-right:10px}
/* b71: face-map mobile trim (rhythm only; figure + dots untouched) */
@media (max-width:860px){
  .fmap{padding-block:clamp(40px,8vw,54px)}
  .fmap__head{margin-bottom:8px}
  .fmap__head h2{margin-bottom:8px}
  .fmap__tabs{margin-top:10px;gap:6px}
  .fmap__chips,.fmap__list{margin-top:10px;gap:7px}
  .fmap__cta,.fmap__actions{margin-top:14px}
}

/* b71: the conversation card sits BELOW the three concern rows (Ray), centered in flow; rows fully visible */
/* b90: card floats over the ticker again (Pastel 43); the mobile static fallback lives in the 860 block */
/* b71: face-map mobile trim, real selectors */
@media (max-width:860px){
  .fmap__head{margin-bottom:12px}
  .fmap__h{margin-bottom:8px}
  .fmap__stage{gap:16px}
  .fmap{--section:clamp(40px,8.5vw,56px)}
}

/* b72: Ray's mobile compression batch (mobile only; desktop untouched) */
@media (max-width:860px){
  /* 1. standard: belief block out, Why stays and tightens */
  #standard .wb__text > .eyebrow,#standard .wb__text > h2,#standard .mani__lede,#standard .mani__quote,#standard .wb__rule{display:none}
  #standard .wb__kicker{margin:0 0 6px;font-size:12px}
  #standard .wb__h3{font-size:clamp(26px,6.8vw,32px);margin:0 0 10px}
  #standard .wb__lede{font-size:15px;line-height:1.55;margin:0 0 10px}
  #standard .prac__facts{gap:7px}
  #standard .prac__facts dd{font-size:13.5px}
  #standard .prac__facts dt{font-size:10px}
  /* 2+4. reviews: head compressed, quotes = horizontal carousel */
  #reviews .rev__head h2{font-size:clamp(28px,7.4vw,34px);margin-bottom:8px}
  #reviews .rev__intro{font-size:14.5px;margin:0}
  #reviews .rev__side{margin:10px 0 0}
  #reviews .rev__side blockquote{font-size:15px;line-height:1.55}
  #reviews .rev__quotes{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:12px;margin-inline:0;padding-inline:0;scrollbar-width:none}
  #reviews .rev__quotes::-webkit-scrollbar{display:none}
  #reviews .rq{flex:0 0 82%;scroll-snap-align:center;padding:16px;border:1px solid var(--line-light);border-radius:14px;background:var(--white)}
  /* 5. results: two B/A sliders = horizontal carousel */
  #results .ba-grid2{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:14px;margin-inline:0;padding-inline:0;scrollbar-width:none}
  #results .ba-grid2::-webkit-scrollbar{display:none}
  #results .ba-grid2>figure{flex:0 0 86%;scroll-snap-align:center;margin:0}
  /* 3. team shorter */
  #team .aprov__head{margin-bottom:6px}
  #team .aprov__intro{font-size:14.5px;margin-top:8px}
  #team .tcar__rail{padding:12px 0 4px}
  #team .tcar__ctas{margin-top:8px}
  /* 6. locations page: stacked cards -> carousel (homepage already is) */
  .locidx__grid{display:flex !important;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:14px;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);scrollbar-width:none}
  .locidx__grid::-webkit-scrollbar{display:none}
  .locidx__grid>.lcard{flex:0 0 86%;scroll-snap-align:center}
  /* 7. faq compressed */
  #home-faq .faq__item{padding:0}
  #home-faq .faq__q{padding:12px 0;font-size:15px}
  #home-faq .faq__a{padding:0 0 10px}
  #home-faq .faq__a p{font-size:14px;line-height:1.5;margin:0 0 8px}
  #home-faq .hfaq__more{margin-top:10px}
}

/* b72a: clinic chip pills hidden on phones (the cards sit right below the map) */
@media (max-width:860px){#locations .aloc__tools{display:none}}

/* b72a: the B/A drag handle owns horizontal touches (carousel moves via arrows/edges) */
.ba__range{touch-action:none}

/* b73: every horizontal rail is LOCKED to horizontal panning on touch (Ray); no vertical wiggle,
   no accidental card dragging; page scrolls from outside the rails */
@media (max-width:860px){
  .atr__list,.locg__cards,.locidx__grid,#reviews .rev__quotes,#results .ba-grid2,.tcar__rail,.ighz__track{touch-action:pan-x pan-y;overscroll-behavior-x:contain}
}
html.js-ready .atr__list .reveal,html.js-ready .rev__quotes .reveal,html.js-ready .ba-grid2 .reveal{opacity:1 !important;transform:none !important;transition:none !important}
/* b73: six faces on the desktop team row */
/* b89: rail left-aligned (Morgan, Pastel 119); centering removed with the full-roster rail */

/* b74: grid min-content blowout guard on the reviews column (carousel child) */
@media (max-width:860px){#reviews .rev__l,#reviews .rev__quotes,#reviews .rq{min-width:0}#reviews .rev,#reviews .rev__l{max-width:100%}}

@media (max-width:860px){#reviews{overflow-x:hidden;overflow-x:clip}}

/* Gallery service filters (b84). Pills derive from figure[data-svc] at runtime; bar stays hidden without JS. */
.bawf{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 6px}
.bawf__b{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:10px 18px;border-radius:var(--r-pill);border:1px solid var(--line-light);background:var(--white);color:var(--ink-body);cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease}
.bawf__b:hover{border-color:var(--ink)}
.bawf__b:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.bawf__b[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.baw__grid figure[hidden]{display:none}
.baw__grid img{aspect-ratio:4/5;height:auto;object-fit:contain;background:var(--ivory)}

/* b90 wave 2 (Pastel): treatment-card CTAs never wrap; the browse-all link reads as a button */
.atr .elink{white-space:nowrap}
.atr__all{color:var(--champagne);border:1px solid var(--champagne);padding:12px 22px;border-radius:999px}
.atr__all:hover{background:var(--champagne);color:#fff}
/* quote line holds one row on desktop (Pastel 45) */
@media (min-width:861px){.mani__quote{white-space:nowrap}}
/* b90: brand wall motion restored (Pastel 42). JS clones the logo track once (aria-hidden) and
   adds mq--live; the pair then drifts in a seamless loop. Static without JS or reduced motion. */
.mq--live .mq__row{overflow:hidden}
.mq--live .mq__track{animation:mqloop 46s linear infinite;width:max-content}
.mq--live .mq__row:hover .mq__track{animation-play-state:paused}
@keyframes mqloop{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.mq--live .mq__track{animation:none}}

/* b90 (Pastel 46/49/55): trim the deepest section-to-section gaps flagged in review */
#quiz{padding-bottom:clamp(48px,5vw,72px)}
#reviews{padding-top:clamp(48px,5vw,72px)}
#journey .jrn2__head{margin-bottom:clamp(18px,2.4vw,30px)}
.fmap{padding-block:clamp(56px,6vw,88px)}

/* ================= b93: Pastel no-gaps round ================= */
/* (48) the rail-arrow wrapper broke the reviews grid span; wrapper inherits the placement */
#reviews .railwrap{grid-column:1/-1}
/* (53) the results gallery link centers under the sliders */
#results .elink{display:table;margin-left:auto;margin-right:auto}
/* (75) landscape slider variant for the CoolSculpting pair + roomier 3-up grid */
.ba__pair--land{aspect-ratio:44/28}
.ba-grid2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));max-width:1100px}
/* (41) hero line break: the slogan starts its own line at every width; without it phones
   wrapped mid-phrase ("Feel 30 again. Or / for the first time.") */
.hw-br{display:block}
/* (29) journey: the provider photo fills the head column's empty space under the lede */
.jrn2__photo{margin:clamp(22px,3vw,34px) 0 0}
.jrn2__photo img{width:100%;height:auto;border-radius:var(--r-l);box-shadow:var(--sh-2);display:block}
/* (65) locations cards: type rhythm retune (b93) */
.lc__addr,.lc__ph{font-size:13px;line-height:1.5}
.lc h4{letter-spacing:-.01em}
.lc__hours,.lc__hrs{font-size:12.5px}
/* (94) prose pages read more designed: kicker rule above each section heading */
.prose h2::before{content:"";display:block;width:26px;height:2px;background:var(--champagne);margin-bottom:10px}
/* (82/84) guide pages: content + right rail on desktop */
@media (min-width:1080px){
  .guide-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(32px,4vw,72px);align-items:start}
  .guide-rail{position:sticky;top:96px}
}
.guide-rail{display:flex;flex-direction:column;gap:18px}
.grail__box{background:var(--white);border:1px solid var(--line-light);border-radius:var(--r-l);padding:20px 22px}
.grail__box h3{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 12px}
.grail__box ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.grail__box a{font-size:13.5px;color:var(--ink-body)}
.grail__box a:hover{color:var(--champagne-2)}
.grail__cta{background:var(--ink);color:var(--paper-head)}
.grail__cta h3{color:var(--champagne)}
.grail__cta p{font-size:13px;color:var(--paper-body);margin:0 0 14px;line-height:1.5}
/* related-reading block on service pages (84) */
.svc-reading{max-width:var(--maxw);margin:clamp(30px,4vw,52px) auto 0}
.svc-reading h2{font-size:var(--t-h4);margin-bottom:14px}
.svc-reading ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.svc-reading a{display:inline-block;border:1px solid var(--line-light);border-radius:999px;padding:9px 16px;font-size:13px;color:var(--ink-body);background:var(--white)}
.svc-reading a:hover{border-color:var(--champagne);color:var(--champagne-2)}

/* b95 (Pastel 116, Morgan): the homepage team h2 holds one row on desktop; the 62ch head cap
   was wrapping it at 1440 (909px needed, 1280px available). Intro keeps its measure. */
#team .aprov__head{max-width:none}
#team .aprov__intro{max-width:62ch}

/* b95b: scoped anchor rules (.prose a, .grail__box a) kept out-specifying .btn (0,1,0) and
   repainting button text (loyalty Join champagne-on-champagne, guide-rail Book slate-on-red).
   This last-in-cascade guard ties every scoped `x a` rule at (0,1,1) and wins by order, while
   var(--fg) keeps each variant's own text color (.btn-ghost) and higher-specificity states
   (.nav.stuck .btn) still override. */
a.btn{color:var(--fg);text-decoration:none}

/* b100: mobile-audit + Pastel decisions batch (Ray 2026-07-17) */
/* (tap-target guard removed 2026-07-17: the negative-margin trick shifted adjacent layout,
   Ray catch on the Browse-all pill. Text links keep their designed geometry.) */
/* (55) the FAQ line lives in the journey head column under the provider photo */
.jrn2__head .jrn2__faq{text-align:left;margin:clamp(16px,2vw,24px) 0 0}
/* (21) brands band trial: the brand kit pale blue behind the logo loop */
.mq{background:#dde9ef}
.mq__row::before{background:linear-gradient(90deg,#dde9ef,rgba(221,233,239,0))}
.mq__row::after{background:linear-gradient(270deg,#dde9ef,rgba(221,233,239,0))}
/* about polish: credential folded into the role line + jump chips */
.prose .abio__role{font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--champagne-2);margin:2px 0 12px}
.ajump{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:clamp(18px,2.4vw,28px) auto 0}
.ajump a{display:inline-flex;align-items:center;border:1px solid var(--line-light);border-radius:999px;padding:9px 18px;font-size:13px;font-weight:600;color:var(--ink-body);background:var(--white)}
.ajump a:hover{border-color:var(--champagne);color:var(--champagne-2)}

/* b110: location page contact + hours info card (client sheet ask 2026-07-20). Verbatim CMS
   text, presentation only: iconed contact rows + tabular hours grid, plain-paragraph fallback. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.prose .linfo{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,34px);border:1px solid var(--line-light);border-radius:var(--r);background:var(--white);padding:clamp(20px,3vw,30px);margin:26px 0}
.prose .linfo__row{display:flex;align-items:flex-start;gap:12px;margin:0 0 14px;font-size:15.5px;line-height:1.5}
.prose .linfo__row:last-child{margin-bottom:0}
.linfo__ic{flex:0 0 auto;width:18px;height:18px;margin-top:2px;color:var(--champagne-2)}
.linfo__ic svg{display:block;width:18px;height:18px}
.prose .linfo__h{font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--champagne-2);margin:0 0 12px}
.linfo__grid{display:grid;grid-template-columns:auto 1fr;column-gap:18px;row-gap:7px}
.linfo__day{font-weight:600;font-size:14.5px;color:var(--ink);white-space:nowrap}
.linfo__time{font-size:14.5px;color:var(--ink-body)}
@media (max-width:719px){
  .prose .linfo{grid-template-columns:1fr;gap:20px;padding:20px 18px}
  .prose .linfo__row{font-size:15px}
  .linfo__day,.linfo__time{font-size:14px}
}

/* b111: slim footer newsletter strip (Ray ask 2026-07-20). One row on desktop: label left,
   email + Subscribe pill right, consent microcopy under. Posts type=subscribe to /api/consult. */
.foot__nl{display:flex;align-items:center;flex-wrap:wrap;gap:12px 26px;margin-top:10px;padding-top:6px}
.foot__nl-h{font-family:var(--serif);font-size:18px;color:var(--porcelain);margin:0;flex:1 1 240px}
.foot__nl-f{display:flex;flex:0 1 430px;min-width:0;position:relative}
.foot__nl-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.foot__nl-in{flex:1 1 auto;min-width:0;background:rgba(253,253,251,.06);border:1px solid rgba(253,253,251,.22);border-right:0;border-radius:999px 0 0 999px;padding:11px 18px;font-size:16px;color:var(--porcelain)}
.foot__nl-in::placeholder{color:rgba(253,253,251,.55)}
.foot__nl-in:focus{outline:none;border-color:rgba(253,253,251,.45)}
.foot__nl-btn{flex:0 0 auto;border:1px solid var(--porcelain);background:var(--porcelain);color:var(--ink);border-radius:0 999px 999px 0;padding:11px 22px;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.foot__nl-btn:hover{background:#fff}
.foot__nl-btn.is-loading{opacity:.6;pointer-events:none}
.foot__nl-status{flex-basis:100%;font-size:13.5px;color:var(--porcelain)}
.foot__nl-status.is-err{color:#f2b8bd}
.foot__nl-done{margin:0;flex:1 1 300px;font-size:15.5px;color:var(--porcelain)}
.foot__nl-note{flex-basis:100%;font-size:12.5px;color:rgba(253,253,251,.5);margin:0}
.foot__nl-note a{color:rgba(253,253,251,.72);text-decoration:underline}
@media (max-width:719px){.foot__nl{margin-top:26px;padding-top:22px}.foot__nl-h{flex-basis:100%}.foot__nl-f{flex:1 1 100%}}

/* b115: WCAG contrast + focusability (axe findings 2026-07-20). Hours microcaps darken from brand
   slate to a passing slate; guide CTA label follows the accent-on-dark convention; reviews rail
   is keyboard scrollable (tabindex set in markup) with a visible focus ring. */
.lc__hrs b,.lcard__hours b{color:#445d6e}
.grail__cta h3{color:var(--accent-on-dark)}
.rev__quotes:focus-visible{outline:2px solid var(--champagne);outline-offset:4px}
.tcar__rail:focus-visible{outline:2px solid var(--champagne);outline-offset:4px}
