/* Vearitea Wellness Spa — "Thermal Glass" design system for build/build.js; no framework. Coral = warm, ice = cold,
   a faint grain on the hero and dark bands, and one coral→blush→ice hairline (the seam) edging every important object.
   Contrast (WCAG AA): text 14:1 on ivory · --text-dim 5.8:1 · --coral-deep 5.1:1 on ivory, 5.4:1 on white · white on the
   .btn-primary gradient >= 4.8:1 · --sage-deep 4.7:1 · --on-dark 12.8:1, blush links 11:1, --ink-deep on --coral 5.1:1;
   --ice-deep is decorative only. Focus rings: --coral-deep on light, --coral on the plain charcoal bars (4.4:1), --blush
   on the tinted dark surfaces (>= 5.7:1 over the coolest glow, where coral drops below 3:1).
   Effect budget: transitions <= 300 ms; stagger --i x 60 ms (app.js); Ken Burns 14 s at >= 1001 px, glow drift 22 s and the
   two parallaxes only with a fine pointer at >= 1001 px, all with motion allowed; backdrop-filter only on the header, ledges,
   hero chips and #request; parallax behind @supports. */
/* Metric-matched fallbacks (no layout shift while Google Fonts load): until the web fonts arrive, Georgia is scaled to
   Cormorant Garamond's widths and Arial to Lato's, so a headline wraps to the same lines before and after the swap.
   Measured in Chrome: Cormorant/Georgia 0.895 (H1, prose and alphabet alike); Lato/Arial 0.97 regular, 0.93 bold;
   ascent/descent = the web font's own (0.92/0.29 and 0.99/0.21) divided by size-adjust, so baselines sit where they will. */
@font-face{font-family:"Cormorant Fallback";src:local("Georgia");size-adjust:89.5%;ascent-override:103%;descent-override:32%;line-gap-override:0%}
@font-face{font-family:"Lato Fallback";font-weight:400;src:local("Arial");size-adjust:97%;ascent-override:102%;descent-override:22%;line-gap-override:0%}
@font-face{font-family:"Lato Fallback";font-weight:700;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:93%;ascent-override:106%;descent-override:23%;line-gap-override:0%}
:root{
  --ink:#2B2420;--ink-2:#352825;--ink-deep:#1C1714;
  --ivory:#FBF8F5;--ivory-2:#F4EDE7;--white:#fff;
  --coral:#E25F5A;--coral-deep:#B8413C;--blush:#FFD2D0;--blush-2:#FCE9E3;
  --taupe:#A89F92;--field:#8C8177;--sage:#91A69A;--sage-deep:#5F7A69;
  --ice:#D9E6E2;--ice-deep:#7E9D95;--ice-ink:#4F6E66;
  --seam:linear-gradient(90deg,#B8413C,#E25F5A 35%,#FFD2D0 55%,#D9E6E2 80%,#91A69A);
  --seam-v:linear-gradient(180deg,#B8413C,#E25F5A 35%,#FFD2D0 55%,#D9E6E2 80%,#91A69A);
  --glass:rgba(251,248,245,.72);--glass-line:rgba(255,255,255,.65);--glass-solid:rgba(251,248,245,.94);
  --warm-wash:linear-gradient(180deg,#FCE9E3,#FBF8F5);--cool-wash:linear-gradient(180deg,#E8F0ED,#FBF8F5);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23g)'/%3E%3C/svg%3E");
  --text:#2B2420;--text-dim:#6B5F58;--line:rgba(168,159,146,.32);
  --on-dark:#F3E9E2;--on-dark-dim:#CDBFB6;--danger:#B3261E;
  --tile:#FF8986;                                              /* the emblem's own coral */
  --product:linear-gradient(135deg,#FDF6F4,#FAE9E3);           /* backdrop of the product shots */
  --r:18px;--r-sm:12px;--r-lg:26px;--r-arch:999px 999px 26px 26px;
  --shadow:0 24px 60px -34px rgba(43,36,32,.36);--shadow-sm:0 12px 30px -24px rgba(43,36,32,.4);
  --shadow-card:inset 0 1px 0 rgba(255,255,255,.7),0 28px 60px -34px rgba(43,36,32,.35);
  --band-s:clamp(40px,5vw,64px);--band-l:clamp(80px,10vw,140px);
  --ease:cubic-bezier(.16,1,.3,1);--max:1240px;--hd:76px;
  --tint:var(--ivory-2);--tint-ink:var(--text-dim);--glow:rgba(255,210,208,.16);--outline:var(--coral-deep);
  --serif:"Cormorant Garamond","Cormorant Fallback",Georgia,"Times New Roman",serif;
  --sans:Lato,"Lato Fallback",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
/* temperature: coral means warm, ice means cold */
[data-temp="warm"]{--tint:var(--blush-2);--tint-ink:var(--coral-deep);--glow:rgba(226,95,90,.32)}
[data-temp="cool"]{--tint:var(--ice);--tint-ink:var(--ice-ink);--glow:rgba(126,157,149,.4)}
[data-temp="neutral"]{--tint:var(--ivory-2);--tint-ink:var(--text-dim);--glow:rgba(255,210,208,.16)}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:96px}
body{margin:0;background:var(--ivory);color:var(--text);font:400 17px/1.7 var(--sans);-webkit-font-smoothing:antialiased;overflow-wrap:break-word}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;color:var(--ink);line-height:1.12;letter-spacing:-.005em;margin:0 0 .5em}
h1{font-size:clamp(2.9rem,6.6vw,5.4rem);font-weight:500;line-height:1.02;letter-spacing:-.01em}
h2{font-size:clamp(1.8rem,3.4vw,2.65rem);font-weight:500}
h3{font-size:1.45rem}
h4{font-size:1.2rem}
.accent{font-style:italic;font-weight:500;color:var(--coral-deep)}
p{margin:0 0 1em}
strong,b{font-weight:700}
a{color:var(--coral-deep);text-decoration-thickness:1px;text-underline-offset:.18em}
a:hover{color:var(--ink)}
img{display:block;max-width:100%;height:auto}
ul,ol{padding-left:1.2em}
table{border-collapse:collapse}
:focus-visible{outline:3px solid var(--coral-deep);outline-offset:2px;border-radius:4px}
.arctic :focus-visible,.topbar :focus-visible,.callbar :focus-visible,.inside :focus-visible{outline-color:var(--coral)}
.page-hero :focus-visible,.arc-band :focus-visible,.cta-band :focus-visible{outline-color:var(--blush)}
.inside .loc-glass :focus-visible{outline-color:var(--coral-deep)}
main:focus{outline:none}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:12px;top:-80px;z-index:200;background:var(--ink);color:var(--white);padding:12px 18px;border-radius:var(--r-sm);font-weight:700;text-decoration:none}
.skip-link:focus{top:12px;color:var(--white)}
.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 20px}
.i{width:1.2em;height:1.2em;flex:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.2em}
.small{font-size:.9rem}.muted{color:var(--text-dim)}
.price-serif{font:500 2.4rem/1 var(--serif);font-variant-numeric:oldstyle-nums;color:var(--ink)}

/* glass: blur only where the budget allows (header, ledges, hero chips, #request); everything else is frosted-solid */
.glass{background:var(--glass);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
.glass-solid{background:var(--glass-solid);border:1px solid var(--glass-line)}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.glass{background:var(--glass-solid)}}
/* the seam: a 1px ring around arches, a 2px top edge on ledges and featured cards, a 34px rule before band eyebrows */
.seam-ring{padding:1px;background:var(--seam)}
.seam-rule{display:inline-block;width:34px;height:2px;margin-right:12px;vertical-align:middle;background:var(--seam)}

/* dark surfaces: warm charcoal with a soft coral glow; grain on the dark bands and the hero only */
.arctic{position:relative;color:var(--on-dark);background:radial-gradient(1100px 520px at 88% -12%,rgba(226,95,90,.24),transparent 62%),radial-gradient(800px 460px at -8% 112%,rgba(255,210,208,.09),transparent 60%),linear-gradient(180deg,var(--ink),var(--ink-2))}
.arctic h1,.arctic h2,.arctic h3,.arctic h4{color:var(--white)}
.arctic a:not(.btn){color:var(--blush)}
.arctic a:not(.btn):hover{color:var(--white)}
.hero::before,.page-hero::before,.arc-band::before,.cta-band::before{content:"";position:absolute;inset:0;z-index:0;background:var(--grain) 0 0/220px 220px;opacity:.26;mix-blend-mode:soft-light;pointer-events:none}
.arc-band>.wrap,.cta-band>.wrap,.hero>.wrap{position:relative;z-index:1}
/* small uppercase labels */
.eyebrow,.eyebrow-rule,.dd-h,.s-sub,.qc-h,.f-h,.t-cat,.fact dt,.ledge-item span,.route span,.price-table thead th,.disclaimer h2,.tier-badge,.drive-badge,.pick-note,.fig figcaption{font:700 .72rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 14px;padding:6px 12px;border:1px solid rgba(184,65,60,.22);border-radius:999px;background:var(--white);color:var(--coral-deep)}
.arctic .eyebrow{background:rgba(226,95,90,.14);border-color:rgba(255,210,208,.34);color:var(--blush)}
.eyebrow .i{width:15px;height:15px}
.eyebrow-seam{position:relative;margin-left:46px}
.eyebrow-seam::before{content:"";position:absolute;left:-46px;top:50%;width:34px;height:1px;background:var(--seam)}
.eyebrow-rule{display:flex;align-items:center;gap:12px;margin:0 0 14px;color:var(--coral-deep)}
.eyebrow-rule::before{content:"";flex:none;width:34px;height:2px;background:var(--seam)}
.arctic .eyebrow-rule,.inside .eyebrow-rule{color:var(--blush)}
.inside .loc-glass .eyebrow-rule{color:var(--coral-deep)}
.lead{max-width:62ch;color:var(--text-dim);font-size:clamp(1.05rem,1.6vw,1.2rem)}
.arctic .lead{color:var(--on-dark)}

/* buttons: gradient coral with an inset highlight and a sheen sweep on hover; coral on dark */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border:1.5px solid transparent;border-radius:999px;font:700 .97rem/1.2 var(--sans);letter-spacing:.01em;text-decoration:none;white-space:nowrap;cursor:pointer;overflow:hidden;transition:transform .2s var(--ease),background-color .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:scale(.98)}
.btn-primary{background:linear-gradient(180deg,#C4463F,var(--coral-deep));color:var(--white);box-shadow:inset 0 1px 0 rgba(255,255,255,.32),0 12px 26px -16px rgba(184,65,60,.85)}
.btn-primary:hover{background:var(--ink);color:var(--white)}
.btn-primary::after{content:"";position:absolute;top:0;bottom:0;left:-70%;width:45%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.34),transparent);transform:skewX(-20deg);transition:left .3s var(--ease);pointer-events:none}
.btn-primary:hover::after{left:125%}
.btn-glacier{background:linear-gradient(180deg,#E8706B,var(--coral));color:var(--ink-deep);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 14px 32px -16px rgba(226,95,90,.75)}
.btn-glacier:hover{background:var(--blush);color:var(--ink-deep)}
.btn-ghost{background:transparent;border-color:currentColor;color:var(--coral-deep)}
.btn-ghost:hover{background:var(--coral-deep);border-color:var(--coral-deep);color:var(--white)}
.btn-lg{min-height:54px;padding:0 28px;font-size:1.02rem}
.btn-xl{min-height:60px;padding:0 34px;font-size:1.06rem}
.btn-block{width:100%}
.btn[disabled]{opacity:.7;cursor:progress;transform:none}
.btn-note{margin:10px 0 0;color:var(--text-dim);font-size:.9rem}
.link-arrow{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:700;text-decoration:none}
.link-arrow .i{transition:transform .2s var(--ease)}
.link-arrow:hover .i{transform:translateX(3px)}
.cta-phone{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;font-weight:700;text-decoration:none;color:var(--blush)}
.cta-phone:hover{color:var(--white);text-decoration:underline}

/* promo seam (CONFIG.promo only), top bar + header */
.promo-seam{height:36px;background:var(--seam);color:var(--ink-deep);font-size:.84rem;font-weight:700}
.promo-seam p{display:flex;align-items:center;justify-content:center;height:36px;margin:0}
.promo-seam a{color:inherit}
.topbar{background:var(--ink);color:var(--on-dark-dim);font-size:.84rem}
.tb-in{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px}
.tb-in p{display:flex;align-items:center;gap:8px;margin:0}
.tb-phones{gap:20px!important}
.tb-loc{display:inline-flex;align-items:center;gap:6px;color:var(--on-dark)}
.tb-phones a{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--on-dark);text-decoration:none}
.tb-phones strong{color:var(--white);font-weight:700}
.tb-phones a:hover strong{color:var(--blush)}
.topbar .i{color:var(--coral);width:15px;height:15px}
.site-header{position:sticky;top:0;z-index:50;background:rgba(251,248,245,.88);-webkit-backdrop-filter:saturate(160%) blur(16px);backdrop-filter:saturate(160%) blur(16px);border-bottom:1px solid var(--line);transition:border-color .3s var(--ease)}
.site-header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--seam);opacity:0;transition:opacity .3s var(--ease)}
.site-header.is-scrolled{--hd:64px;border-bottom-color:transparent}
.site-header.is-scrolled::after{opacity:1}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.site-header{background:var(--ivory)}}
.hd-in{display:flex;align-items:center;gap:14px;min-height:var(--hd);transition:min-height .3s var(--ease)}
.brand{flex:none;display:inline-flex;align-items:center;gap:11px;min-height:44px;margin-right:auto;color:var(--ink);text-decoration:none}
.brand:hover{color:var(--ink)}
/* the emblem tile: its transparent margin is cropped and backed by the tile coral, so it reads as one rounded square */
.brand-mark{display:inline-grid;place-items:center;flex:none;width:46px;height:46px;border-radius:10px;background:var(--tile);overflow:hidden;transition:width .3s var(--ease),height .3s var(--ease),transform .25s var(--ease)}
.brand-mark img{width:58px;max-width:none;height:auto}
.is-scrolled .brand-mark{width:40px;height:40px;border-radius:9px}
.is-scrolled .brand-mark img{width:50px}
.wordmark{display:inline-flex;flex-direction:column;justify-content:center;line-height:1}
.wordmark b{font:700 1.62rem/.95 var(--serif);letter-spacing:.01em;color:var(--ink)}
.wordmark small{margin-top:4px;font:600 .8rem/1 var(--serif);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim)}
.wordmark-light b,.wordmark-light{color:var(--on-dark)}
/* dropdown panels hang from the nav itself, right-aligned, so a hidden panel never pushes the page wider than the viewport */
.site-nav{position:relative;display:flex;align-items:center}
.nav-list{display:flex;align-items:center;gap:2px;margin:0;padding:0;list-style:none}
.nav-item{position:relative}
.nav-item.dd{position:static}
.dd-head{display:flex;align-items:center}
.nav-link{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 10px;color:var(--ink);font:400 .95rem/1 var(--sans);text-decoration:none;white-space:nowrap}
.nav-link:hover,.nav-link.is-active{color:var(--coral-deep)}
.nav-link.is-active::after{content:"";position:absolute;left:10px;right:10px;bottom:8px;height:2px;border-radius:2px;background:var(--seam)}
.dd-toggle{display:inline-grid;place-items:center;width:44px;height:44px;margin-left:-12px;padding:0;border:0;border-radius:8px;background:none;color:var(--ink);cursor:pointer}
.dd-toggle .i{width:16px;height:16px;transition:transform .2s var(--ease)}
.dd.open .dd-toggle .i{transform:rotate(180deg)}
.dd-panel{position:absolute;top:calc(100% + 8px);left:auto;right:0;z-index:60;padding:20px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 30px 70px -30px rgba(43,36,32,.4);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s var(--ease),transform .18s var(--ease),visibility 0s linear .18s}
.dd-panel::before{content:"";position:absolute;left:0;right:0;top:-14px;height:14px}
.dd.open .dd-panel,html:not(.js) .dd:hover .dd-panel,html:not(.js) .dd:focus-within .dd-panel{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.dd-mega{width:min(660px,calc(100vw - 40px))}
.dd-loc{width:420px}
.dd-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 22px}
.dd-col ul,.dd-cities{margin:0;padding:0;list-style:none}
.dd-cities{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.dd-h{margin:0 0 8px;color:var(--sage-deep)}
.dd-panel a{display:flex;align-items:center;gap:10px;min-height:44px;margin:0 -10px;padding:6px 10px;border-radius:10px;color:var(--text);font-size:.94rem;line-height:1.3;text-decoration:none}
.dd-panel a:hover{background:var(--ivory-2);color:var(--coral-deep)}
.dd-panel .i{color:var(--tint-ink)}
.dd-panel a:not([data-temp]) .i{color:var(--coral-deep)}
.dd-foot{display:flex;flex-wrap:wrap;gap:0 20px;margin:14px 0 0;padding-top:4px;border-top:1px solid var(--line)}
.dd-panel .dd-foot a{margin:0;padding:0;color:var(--coral-deep);font-weight:700}
.dd-panel .dd-foot a:hover{background:none;color:var(--ink)}
.nav-extra,.nav-toggle,.hd-phone{display:none}
.hd-phone{align-items:center;gap:7px;min-height:44px;padding:0 4px;color:var(--ink);font-weight:700;font-size:.95rem;text-decoration:none;white-space:nowrap}
.hd-phone .i{color:var(--coral-deep)}
.hd-phone:hover{color:var(--coral-deep)}
.btn-book{min-height:44px;margin-left:6px;padding:0 18px}
@media (min-width:1280px){.hd-phone{display:inline-flex}}
@media (min-width:1001px) and (max-width:1199px){
.brand{gap:9px}
.brand-mark{width:40px;height:40px;border-radius:9px}
.brand-mark img{width:50px}
.wordmark b{font-size:1.4rem}
.wordmark small{font-size:.7rem;letter-spacing:.16em}
.nav-link{padding:0 7px;font-size:.88rem}
.nav-link.is-active::after{left:7px;right:7px}
.dd-toggle{margin-left:-14px}
.btn-book{padding:0 14px}
.btn-book .i{display:none}
}

/* home hero: light, the portrait in an arch with a seam ring (no blend mode), the glass first-visit chip on it */
.hero{position:relative;isolation:isolate;overflow:hidden;display:grid;align-items:center;min-height:min(86vh,860px);background:radial-gradient(900px 640px at 104% -6%,var(--blush-2),transparent 66%),radial-gradient(700px 480px at -10% 110%,rgba(217,230,226,.75),transparent 62%),linear-gradient(180deg,var(--ivory),var(--ivory-2))}
.hero::after{content:"";position:absolute;z-index:-1;top:-20%;right:-10%;width:min(60vw,760px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,210,208,.6),rgba(255,210,208,0) 62%);pointer-events:none;transition:opacity 1.5s var(--ease)}
.hero-in{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);align-items:center;gap:clamp(24px,5vw,72px);padding-top:clamp(36px,5vw,64px);padding-bottom:clamp(96px,10vw,132px)}
.hero h1{max-width:6.7em;margin-bottom:.35em}   /* 14ch of Cormorant (0 = .477em), in em so the measure survives the font swap */
.hero .lead{max-width:50ch}
.hero-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin:26px 0 0}
.hero-hours{display:flex;align-items:center;gap:8px;margin:18px 0 0;color:var(--text-dim);font-size:.9rem}
.hero-hours .i{color:var(--coral-deep)}
.hero-media{position:relative;isolation:isolate;justify-self:center;width:min(100%,440px)}
.arch,.ph-arch{position:relative;overflow:hidden;border-radius:var(--r-arch);box-shadow:var(--shadow)}
.arch img,.ph-arch img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 0;border-radius:var(--r-arch);background:linear-gradient(180deg,var(--white),var(--blush-2))}
.hero-chip,.ph-chip{position:absolute;z-index:2;margin:0;padding:9px 16px;border-radius:999px;color:var(--ink);font:500 1.1rem/1.2 var(--serif);font-variant-numeric:oldstyle-nums;white-space:nowrap;box-shadow:var(--shadow-sm)}
.hero-chip{left:-14px;bottom:44px;opacity:0;transition:opacity .8s var(--ease)}   /* one chip per frame; app.js moves .is-on with the photo */
.hero-chip.is-on{opacity:1}
.hero-chip[hidden]{display:none}
/* living photo (motion spec 1): stacked frames cross-fade (app.js moves .is-on); glows behind the arch follow data-temp */
.slides{display:grid}
.slides>img{grid-area:1/1;opacity:0;transition:opacity 1.2s var(--ease)}
.slides>img.is-on{opacity:1;z-index:1}
.slides>[hidden]{display:none}
.slides-pause,.mq-pause{position:absolute;right:12px;bottom:12px;z-index:3;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--glass-line);border-radius:50%;background:var(--glass-solid);color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm)}
.slides-pause[hidden],.mq-pause[hidden],.slides-pause[aria-pressed="true"] .i-pause,.mq-pause[aria-pressed="true"] .i-pause,.slides-pause[aria-pressed="false"] .i-play,.mq-pause[aria-pressed="false"] .i-play{display:none}
.slides-pause:focus-visible,.mq-pause:focus-visible{box-shadow:0 0 0 2px var(--white),var(--shadow-sm)}   /* white halo: the ring stays >= 3:1 over any photo */
.hero-media::before,.hero-media::after{content:"";position:absolute;z-index:-1;inset:-10% -14%;border-radius:50%;opacity:0;transition:opacity 1.5s var(--ease);pointer-events:none}
.hero-media::before{background:radial-gradient(circle,rgba(217,230,226,.95),rgba(217,230,226,0) 62%)}
.hero-media::after{background:radial-gradient(circle,rgba(250,196,186,.85),rgba(250,196,186,0) 62%)}
.hero[data-temp="cool"] .hero-media::before,.hero[data-temp="warm"] .hero-media::after{opacity:1}
.hero[data-temp="cool"]::after{opacity:.35}
.ph-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin:26px 0 0}
/* stats ledge: glass, seam top edge, overlapping the hero by 56px */
.ledge-wrap{position:relative;z-index:2;margin-top:-56px}
.ledge,.facts{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;overflow:hidden;border-radius:var(--r);box-shadow:var(--shadow-card)}
.ledge::before,.facts::before,.route::before,.tier.is-featured::before,.pick-card::before,.loc-glass::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--seam)}
.ledge-item,.fact{display:flex;flex-direction:column;padding:20px 22px;border-left:1px solid var(--glass-line)}
.ledge-item:first-child,.fact:first-child{border-left:0}
.ledge-item strong{font:500 2.4rem/1 var(--serif);font-variant-numeric:oldstyle-nums;color:var(--ink)}
.ledge-item span,.fact dt{margin-top:6px;color:var(--text-dim)}
@keyframes vt-rise{from{transform:translateY(10px) scale(1.02);opacity:.6}to{transform:none;opacity:1}}
@keyframes vt-kb{from{transform:scale(1)}to{transform:scale(1.06)}}
@keyframes vt-drift{from{transform:translate(0,0)}to{transform:translate(-6%,10%)}}
@media (prefers-reduced-motion:no-preference){
.hero-media{animation:vt-rise .9s var(--ease) both}html{scroll-behavior:smooth}
/* a frame rests at 1.06 and zooms to it while on show, so a fading frame never snaps back */
.slides>img{transform:scale(1.06);transform-origin:50% 30%}
.slides>img.is-on{animation:vt-kb 6s linear both}
}
@media (prefers-reduced-motion:no-preference) and (pointer:fine) and (min-width:1001px){
.hero::after{animation:vt-drift 22s ease-in-out infinite alternate}
}
@supports (animation-timeline:view()){
@media (prefers-reduced-motion:no-preference) and (pointer:fine) and (min-width:1001px){
@keyframes vt-par{from{translate:0 18px}to{translate:0 -18px}}
.hero-media{animation:vt-rise .9s var(--ease) both,vt-par linear both;animation-timeline:auto,view();animation-range:normal,entry 0% exit 100%}
}}

/* page hero: charcoal slab, glow by temperature, emblem watermark, the arch hanging 48px over the facts ledge */
.page-hero{position:relative;padding:clamp(24px,4vw,40px) 0 clamp(52px,7vw,84px);background:radial-gradient(820px 560px at 84% 6%,var(--glow),transparent 64%),linear-gradient(180deg,#2B2420,#352825)}
.page-hero::after{content:"";position:absolute;right:2%;bottom:0;z-index:0;width:min(40vw,440px);height:82%;background:var(--mark) center bottom/contain no-repeat;opacity:.05;pointer-events:none}
.page-hero>.wrap{position:relative;z-index:3}
.page-hero.has-media{padding-bottom:0}
.page-hero h1{font-size:clamp(2.3rem,4.6vw,3.9rem)}
.ph-grid{display:grid;gap:32px;align-items:center}
.has-media .ph-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:end}
.has-media .ph-text{padding-bottom:clamp(84px,9vw,124px)}
.ph-text h1{margin-bottom:.35em}
.h1-sub{display:block;margin-top:.2em;color:var(--blush);font-size:.5em;font-weight:600;letter-spacing:0}
.ph-media{position:relative;z-index:3;justify-self:end;width:min(100%,420px);margin-bottom:-48px}
.ph-arch{box-shadow:0 40px 80px -40px rgba(0,0,0,.7)}
.ph-chip{right:-10px;top:14%}
.ph-detail{position:absolute;left:-12%;bottom:11%;z-index:2;width:38%;overflow:hidden;border:6px solid var(--ivory);border-radius:14px;box-shadow:0 30px 60px -30px rgba(0,0,0,.85);transform:rotate(-4deg)}
.ph-detail img{width:100%;aspect-ratio:1;object-fit:cover}
/* transparent cutouts (flagged by build.js): whole, on a light panel */
.is-cutout img,.t-media.is-cutout,.b-media.is-cutout{background:radial-gradient(120% 90% at 50% 40%,var(--white),var(--blush-2))}
.is-cutout img{object-fit:contain!important;padding:7%}
.t-media.is-cutout>img{background:none;padding:6% 8% 30%}
.b-media.is-cutout>img{background:none;padding:6% 10% 26%}
/* product shots on their own blush backdrop: whole, on the same backdrop */
.is-product img,.t-media.is-product,.b-media.is-product{background:var(--product)}
.is-product img{object-fit:contain!important}
.t-media.is-product>img{background:none;padding:4% 8% 28%}
.b-media.is-product>img{background:none;padding:4% 8% 24%}
.crumbs{margin:0 0 10px;font-size:.86rem}
.crumbs ol{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}
.crumbs li{display:inline-flex;align-items:center;min-height:44px;color:var(--on-dark-dim)}
.crumbs li+li::before{content:"/";margin:0 10px;color:rgba(255,210,208,.45)}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.crumbs [aria-current]{color:var(--white)}

/* facts ledge + layout */
.facts-wrap{position:relative;z-index:2;margin-top:-56px}
.facts-wrap.has-arch{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:32px}
/* the ledge overlaps the charcoal slab by 56px from 1001px: the solid-glass fill keeps the dt labels at 5.2:1 on that edge */
.facts.glass{background:var(--glass-solid);-webkit-backdrop-filter:blur(12px) saturate(140%);backdrop-filter:blur(12px) saturate(140%)}
.fact{padding:18px 18px}
.fact dt{order:2}
.fact dd{margin:0;color:var(--ink);font:500 1.35rem/1.25 var(--serif);font-variant-numeric:oldstyle-nums}
/* article + sidebar: explicit grid placement, so the aside may come first in the DOM (phones: the #request form right
   under the facts ledge); the aside stretches to the article's height so the sidebar of a long page (.side-first) can
   follow the scroll. It is sticky only with .can-stick, which app.js sets when the whole card fits under the 64px
   scrolled header (72px top + 16px below): never an inner scrollbar, never a cut-off button or a trapped wheel */
.layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:48px;align-items:stretch;padding-top:clamp(40px,6vw,72px);padding-bottom:clamp(40px,6vw,72px)}
.layout-main{grid-column:1;grid-row:1;min-width:0}
.layout-side{grid-column:2;grid-row:1}
.side-sticky{display:grid;gap:18px;align-content:start}
@media (min-width:1001px){.side-first .side-sticky.can-stick{position:sticky;top:72px}}
.block{margin:0 0 clamp(40px,5vw,60px)}
.block:last-child{margin-bottom:0}
.block>h2{margin-bottom:.6em}
/* article typography: 68ch prose, a 34px seam rule above every h2, a coral drop cap on the opening paragraph */
.article .block>p,.article .block>.ticks,.article .prose{max-width:68ch}
.article .block>h2{position:relative;padding-top:16px}
.article .block>h2::before{content:"";position:absolute;left:0;top:0;width:34px;height:2px;background:var(--seam)}
.article .intro>p:first-of-type::first-letter{float:left;margin:.1em .14em 0 0;font:500 3.4em/.82 var(--serif);color:var(--coral-deep)}

/* bands, grids, cards */
.band{padding:var(--band-l) 0}
.band+.band:not(.band-alt):not(.band-warm):not(.band-cool){padding-top:var(--band-s)}
.band-alt{background:var(--ivory-2)}
.band-warm{background:var(--warm-wash)}
.band-cool{background:var(--cool-wash)}
.band-head{max-width:760px;margin:0 0 var(--band-s)}
.band-head p{color:var(--text-dim)}
.band-head p:last-child{margin-bottom:0}
.band-more{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:var(--band-s) 0 0}
.h-sub{margin:44px 0 18px;font-size:clamp(1.45rem,2.6vw,1.95rem)}
.prose{max-width:760px}
.card{background:var(--white);border:0;border-radius:var(--r);box-shadow:var(--shadow-card);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.card:hover,.t-card:hover,.s-card:hover{transform:scale(1.02);box-shadow:var(--shadow)}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,272px),1fr));gap:22px}
.card-grid-2{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}
.series-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.near-grid{align-items:start}
.feature,.benefit,.why{padding:24px}
.feature>.i,.benefit>.i,.why>.i{width:42px;height:42px;margin-bottom:14px;padding:10px;border-radius:12px;background:var(--blush-2);color:var(--coral-deep)}
.benefit>.i{background:rgba(145,166,154,.16);color:var(--sage-deep)}
.feature h3,.benefit h3,.why h3{margin-bottom:.35em;font-size:1.35rem}
.feature p,.benefit p,.why p{margin:0;color:var(--text-dim);font-size:.98rem}
.pkg-teaser .feature p{margin:0 0 4px;color:var(--ink);font-weight:700}
.pkg-teaser .ticks{margin-top:10px;font-size:.94rem}
.benefits,.why-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.t-card,.s-card{position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--white);border:0;border-radius:var(--r);box-shadow:var(--shadow-card);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.t-media{display:grid;grid-template:minmax(0,1fr)/minmax(0,1fr);aspect-ratio:4/3;overflow:hidden;background:var(--ink)}
.t-media>img,.t-cap{grid-area:1/1}
.t-media>img{width:100%;height:100%;object-fit:cover;transition:transform .3s var(--ease)}
.t-card:hover .t-media>img{transform:scale(1.08) translateX(-3.7%)}
/* caption scrims reach .9 / .82 where the text starts, so the blush label stays >= 4.5:1 over the brightest spa photos */
.t-cap{z-index:1;align-self:end;padding:56px 18px 16px;background:linear-gradient(180deg,rgba(43,36,32,0),rgba(43,36,32,.9) 44%)}
.t-cat{display:inline-block;margin-bottom:6px;color:var(--blush)}
.t-title{margin:0;color:var(--white);font-size:1.55rem}
.t-title a,.s-card h3 a{color:inherit;text-decoration:none}
.t-title a::after,.s-card h3 a::after{content:"";position:absolute;inset:0;z-index:2}
.t-card:focus-within,.s-card:focus-within,.bento-card:focus-within{outline:3px solid var(--coral-deep);outline-offset:2px}
.t-card a:focus-visible,.s-card a:focus-visible,.bento-card a:focus-visible{outline:none}
.t-body{display:flex;flex:1;flex-direction:column;padding:16px 18px 18px}
.t-body>p:first-child{margin-bottom:14px;color:var(--text-dim);font-size:.96rem}
.t-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:auto 0 0}
.chip-price{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;border:1px solid rgba(184,65,60,.16);border-radius:999px;background:var(--tint);color:var(--ink);font:700 .84rem/1.2 var(--sans);transition:transform .2s var(--ease)}
.t-card:hover .chip-price,.bento-card:hover .b-price{transform:translateY(-3px)}
.t-only{color:var(--sage-deep);font-size:.8rem;font-weight:700}
.t-go{display:inline-grid;place-items:center;width:36px;height:36px;margin-left:auto;border-radius:50%;background:var(--coral-deep);color:var(--white)}
.s-media img{width:100%;aspect-ratio:16/9;object-fit:cover}
.s-body{padding:16px 18px 18px}
.s-sub{margin:0 0 6px;color:var(--sage-deep)}
.s-body h3{margin:0 0 .3em;font-size:1.55rem}
.s-body p:last-child{margin:0;color:var(--text-dim);font-size:.95rem}
/* store product cards (when every product has a picture) */
.p-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:16px;margin:0 0 18px;padding:0;list-style:none}
.p-card{display:flex;flex-direction:column;overflow:hidden}
.p-media img{width:100%;aspect-ratio:1;object-fit:cover}
.p-body{display:flex;flex:1;flex-direction:column;padding:12px 14px 14px}
.p-body h3{margin:0 0 4px;font-size:1.2rem}
.p-note{margin:0 0 6px;color:var(--text-dim);font-size:.88rem}
.p-price{margin:auto 0 0;color:var(--ink);font-weight:700}

/* "What brings you in?" chips: radio inputs, CSS :has reveals the matching card (every card shows without :has) */
.pick-chips{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 24px;padding:0;border:0;min-width:0}
.pick-in{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);opacity:0}
.pick-chip{display:inline-flex;align-items:center;min-height:46px;padding:0 20px;border:1px solid var(--line);border-radius:999px;background:var(--white);color:var(--ink);font-weight:700;font-size:.95rem;cursor:pointer;transition:background-color .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.pick-chip:hover{background:var(--blush-2);border-color:var(--coral-deep);color:var(--coral-deep)}
.pick-in:checked+.pick-chip{background:var(--ink);border-color:var(--ink);color:var(--white)}
.pick-in:focus-visible+.pick-chip{outline:3px solid var(--coral-deep);outline-offset:2px}
.pick-cards{display:grid;gap:18px}
.pick-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:30px 32px 28px;overflow:hidden}
.pick-card .t-cat{margin:0;color:var(--tint-ink)}
.pick-card h3{margin:0 0 .2em;font-size:clamp(1.6rem,2.6vw,2.1rem);font-weight:500}
.pick-note{margin:0 0 6px;color:var(--coral-deep)}
.pick-why{max-width:60ch;margin:0 0 10px;color:var(--text-dim)}
.pick-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin:0}
.pick-foot .price-serif{margin-right:8px}
@supports selector(:has(a)){
.pick-card{display:none}
.pick:has(.pick-in:nth-of-type(1):checked) .pick-card:nth-child(1),.pick:has(.pick-in:nth-of-type(2):checked) .pick-card:nth-child(2),.pick:has(.pick-in:nth-of-type(3):checked) .pick-card:nth-child(3),.pick:has(.pick-in:nth-of-type(4):checked) .pick-card:nth-child(4),.pick:has(.pick-in:nth-of-type(5):checked) .pick-card:nth-child(5),.pick:has(.pick-in:nth-of-type(6):checked) .pick-card:nth-child(6){display:flex}
}

/* treatments bento: 6 columns, the lead tile spans 4 x 2, serif price badge in frosted glass top-right */
.bento{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:minmax(240px,auto);gap:18px}
.bento.is-plain{grid-template-columns:repeat(auto-fill,minmax(min(100%,272px),1fr))}
.bento-card{position:relative;display:grid;grid-column:span 2;min-height:240px;overflow:hidden;border-radius:var(--r);background:var(--ink);color:var(--white);box-shadow:var(--shadow-card);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.bento.is-plain .bento-card{grid-column:auto;aspect-ratio:4/3}
.bento-card.is-lead{grid-column:span 4;grid-row:span 2}
.bento-card.span-3{grid-column:span 3}
.bento-card:hover{transform:scale(1.02);box-shadow:var(--shadow)}
/* one track capped at the card: an auto track would grow to the photo's intrinsic height and object-position would never apply */
.b-media{position:absolute;inset:0;z-index:0;display:grid;grid-template:minmax(0,1fr)/minmax(0,1fr)}
.b-media img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;transition:transform .3s var(--ease)}
/* the lead tile is landscape over a portrait photo: 52% puts the client's face in the clear zone above the caption */
.bento-card.is-lead .b-media img{object-position:50% 52%}
.bento-card:hover .b-media img{transform:scale(1.03)}
.b-price{position:absolute;top:14px;right:14px;z-index:2;margin:0;padding:8px 16px;border-radius:999px;color:var(--ink);transition:transform .2s var(--ease)}
.b-price .price-serif{font-size:1.45rem}
.b-cap{position:relative;z-index:1;align-self:end;padding:130px 22px 22px;background:linear-gradient(180deg,rgba(43,36,32,0),rgba(43,36,32,.82) 42%,rgba(43,36,32,.96))}
.b-cap .t-cat{margin:0 0 6px}
.b-title{margin:0 0 6px;color:var(--white);font-size:1.55rem;font-weight:500}
.is-lead .b-title{font-size:clamp(1.8rem,3vw,2.5rem)}
.b-title a{color:inherit;text-decoration:none}
.b-title a::after{content:"";position:absolute;inset:0;z-index:3}
.b-text{max-width:52ch;margin:0;color:var(--on-dark);font-size:.95rem}
.bento-card:not(.is-lead) .b-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* "Cold that wakes, warmth that lifts": coral glow left, ice glow right, outline numerals, rimmed device figures */
.arc-band{padding:var(--band-l) 0;isolation:isolate;background:radial-gradient(760px 560px at 0% 24%,rgba(226,95,90,.3),transparent 60%),radial-gradient(820px 600px at 100% 76%,rgba(126,157,149,.36),transparent 62%),linear-gradient(180deg,var(--ink),var(--ink-2))}
.arc-in{display:grid;grid-template-columns:5fr 7fr;gap:clamp(32px,6vw,88px);align-items:center}
.arc-text h2{max-width:14ch}
.arc-rows{display:grid;gap:4px;margin:28px 0 0;padding:0;list-style:none}
.arc-row{display:grid;grid-template-columns:68px minmax(0,1fr);gap:18px;padding:22px 0;border-top:1px solid rgba(255,210,208,.16)}
.arc-row:last-child{border-bottom:1px solid rgba(255,210,208,.16)}
.arc-row h3{margin:0 0 .3em;font-size:1.4rem;font-weight:500}
.arc-row p{margin:0;color:var(--on-dark-dim);font-size:.97rem}
.arc-row[data-temp="cool"]{--outline:var(--ice)}
.arc-row[data-temp="warm"]{--outline:var(--coral)}
.num-outline{display:block;font:500 2.7rem/1 var(--serif);font-variant-numeric:oldstyle-nums;color:var(--outline)}
@supports (-webkit-text-stroke:1px #000){.num-outline{-webkit-text-fill-color:transparent;-webkit-text-stroke:1px var(--outline)}}
.arc-figs{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:end}
.fig{margin:0;text-align:center}
.fig:nth-child(2){margin-bottom:48px}
.fig-img{overflow:hidden;border-radius:var(--r-arch);background:var(--product);box-shadow:0 0 0 1px rgba(226,95,90,.5),0 0 48px -8px rgba(226,95,90,.55),0 44px 70px -40px rgba(0,0,0,.85)}
.fig-img img{width:100%;aspect-ratio:3/4;object-fit:contain;padding:9% 10% 6%;background:var(--product)}
.fig figcaption{margin:14px 0 0;color:var(--blush)}
.fig-note{grid-column:1/-1;margin:0;color:var(--on-dark-dim);font-size:.86rem;text-align:center}

/* your visit: vertical timeline on the cool wash */
.timeline{position:relative;display:grid;gap:34px;max-width:760px;margin:0;padding:0;list-style:none}
.timeline::before{content:"";position:absolute;left:31px;top:20px;bottom:20px;width:2px;background:var(--seam-v)}
.tl-step{display:grid;grid-template-columns:64px minmax(0,1fr);gap:22px;align-items:start}
.tl-step .num-outline{position:relative;z-index:1;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;border:1px solid var(--line);background:var(--ivory);font-size:1.6rem;box-shadow:var(--shadow-sm)}
.tl-body h3{margin:10px 0 .3em;font-size:1.45rem;font-weight:500}
.tl-body p{max-width:60ch;margin:0;color:var(--text-dim)}

/* steps, FAQ, ticks */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none}
.step{padding:24px}
.step-n{display:block;margin-bottom:10px;font-size:2.3rem}
.step h3{font-size:1.35rem}
.step p{margin:0;color:var(--text-dim);font-size:.97rem}
.faq-list{display:grid;gap:0;max-width:900px;border-top:1px solid var(--line)}
.faq-item{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;padding:16px 4px;cursor:pointer;list-style:none}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary h3{margin:0;color:var(--ink);font:700 1.02rem/1.45 var(--sans);letter-spacing:0}
.faq-item summary:hover h3{color:var(--coral-deep)}
.faq-ic{width:34px!important;height:34px!important;padding:7px;border-radius:50%;background:var(--blush-2);color:var(--coral-deep);transition:transform .3s var(--ease),background-color .3s var(--ease),color .3s var(--ease)}
.faq-item[open] .faq-ic{transform:rotate(180deg);background:var(--coral-deep);color:var(--white)}
.faq-a{padding:0 4px 20px;color:var(--text-dim)}
.faq-a p{max-width:68ch;margin:0}
.ticks{display:grid;gap:10px;margin:16px 0 0;padding:0;list-style:none}
.ticks li{display:flex;align-items:flex-start;gap:10px}
.ticks .i{margin-top:4px;color:var(--coral-deep)}
/* folds: the route ledger's directions and the "Good to know" accordion */
.fold{background:var(--white);border:1px solid var(--line);border-radius:var(--r-sm)}
.fold>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;padding:12px 18px;cursor:pointer;list-style:none;color:var(--ink);font-weight:700}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary h2{margin:0;padding:0;font-size:1.5rem}
.fold>summary:hover{color:var(--coral-deep)}
.fold-ic{width:30px!important;height:30px!important;flex:none;padding:6px;border-radius:50%;background:var(--blush-2);color:var(--coral-deep);transition:transform .3s var(--ease)}
.fold[open]>summary .fold-ic{transform:rotate(180deg)}
.fold-body{padding:4px 18px 20px}
.fold-body .ticks{margin-top:4px}
.gtk-lead{margin:18px 0 6px;color:var(--ink);font-weight:700}
.fold-gtk .contra{margin-bottom:16px}
.route{position:relative;display:flex;flex-wrap:wrap;margin:0 0 14px;padding:0;list-style:none;overflow:hidden;border-radius:var(--r-sm);box-shadow:var(--shadow-sm)}
.route li{flex:1 1 150px;padding:16px 18px 14px;border-left:1px solid var(--glass-line)}
.route li:first-child{border-left:0}
.route strong{display:block;font:500 1.6rem/1.15 var(--serif);font-variant-numeric:oldstyle-nums;color:var(--ink)}
.route span{display:block;margin-top:4px;color:var(--text-dim)}

/* prices: menu-card styling (the <table> stays; its head is read by screen readers only) */
.table-wrap{overflow-x:auto;margin:0 0 18px;background:none;border:0;border-radius:0}
.price-table{width:100%;font-size:.98rem}
.price-table thead{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.price-table th,.price-table td{padding:14px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.price-table th:first-child,.price-table td:first-child{padding-left:0}
.price-table th:last-child,.price-table td:last-child{padding-right:0}
.price-table .pt-price{text-align:right}
.pt-time{white-space:nowrap;color:var(--text-dim)}
.price-table tbody tr:last-child>*{border-bottom:0}
.price-table tbody th{font-weight:400}
.pt-name{display:block;color:var(--ink);font-weight:700}
a.pt-name{color:var(--coral-deep)}
.pt-note{display:block;margin-top:2px;color:var(--text-dim);font-size:.86rem}
.pt-price{color:var(--ink);font:500 1.35rem/1.2 var(--serif);font-variant-numeric:oldstyle-nums;white-space:nowrap}
.pt-price.is-text{min-width:7.5em;white-space:normal;font:700 .95rem/1.4 var(--sans)}
@media (min-width:601px){
.pt-name{display:flex;align-items:baseline;gap:10px}
.pt-name::after{content:"";flex:1 1 28px;min-width:28px;border-bottom:1px dotted var(--taupe);transform:translateY(-.32em)}
}
.menu-group+.menu-group{margin-top:34px}
.menu-group h3{margin-bottom:12px}
.price-callout{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:16px 18px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-sm);font-size:1.05rem}
.price-callout .i{width:24px;height:24px;color:var(--coral-deep)}
.price-callout a{font-weight:700}
.pkg-more{margin:-4px 0 6px}
.member-line{display:flex;align-items:flex-start;gap:12px;margin:0 0 4px;padding:14px 18px;border:1px solid rgba(184,65,60,.22);border-radius:var(--r-sm);background:linear-gradient(135deg,var(--blush-2),rgba(145,166,154,.14))}
.member-line .i{margin-top:3px;color:var(--coral-deep)}
.cost h3{margin-top:26px}
.cost-cta{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 0}
/* package tiers: Silver featured with the seam top edge, a per-facial line and the Affirm chip */
.tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:stretch}
.tier{position:relative;display:flex;flex-direction:column;padding:30px 26px 26px;overflow:hidden}
.tier.is-featured{background:linear-gradient(180deg,var(--white),var(--ivory));box-shadow:var(--shadow)}
.tier-badge{display:inline-block;align-self:flex-start;margin:0 0 14px;padding:5px 12px;border-radius:999px;background:var(--coral-deep);color:var(--white)}
.tier-name{margin:0 0 6px;font-size:1.9rem;font-weight:500}
.tier-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin:0 0 6px}
.tier-price strong{color:var(--ink);font:500 2.4rem/1 var(--serif);font-variant-numeric:oldstyle-nums}
.tier-price span,.tier-price s{color:var(--text-dim);font-size:.95rem}
.tier-per{margin:0 0 16px;color:var(--coral-deep);font-size:.95rem;font-weight:700}
.tier-list{display:grid;flex:1;gap:10px;margin:0 0 20px;padding:0;list-style:none}
.tier-list li{display:flex;gap:10px;font-size:.95rem}
.tier-list .i{margin-top:3px;color:var(--coral-deep)}
.tier>p:last-child{margin:0}
.chip-affirm{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;margin:auto 0 0;padding:8px 14px;border-radius:999px;background:var(--ivory-2);color:var(--text-dim);font-size:.85rem;font-weight:700}
.chip-affirm .i{color:var(--coral-deep)}
.tiers-compact .tier{padding:26px 22px 20px}
.tiers-compact .tier-list{margin-bottom:0}
.note-line{display:flex;gap:10px;max-width:780px;margin:26px 0 0;color:var(--text-dim);font-size:.95rem}
.note-line .i{margin-top:4px;color:var(--coral-deep)}
/* pull quote (real reviews only) */
.band-quote{background:var(--warm-wash)}
.pullquote{max-width:900px;margin:0 auto;text-align:center}
.pullquote blockquote{margin:0 0 14px}
.pullquote blockquote p{margin:0;font:500 clamp(1.5rem,3vw,2.3rem)/1.35 var(--serif);font-style:italic;color:var(--ink)}
.pullquote figcaption{color:var(--text-dim);font-size:.95rem}

/* inside the spa: the red-light bed full bleed with a frosted location card */
.inside{position:relative;isolation:isolate;display:grid;align-items:center;min-height:580px;overflow:hidden;padding:var(--band-l) 0;background:var(--ink);color:var(--text)}
.inside-media{position:absolute;inset:0;z-index:0}
.inside-media img{width:100%;height:100%;object-fit:cover}
.inside-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(28,23,20,.55),rgba(28,23,20,.1) 60%)}
.inside-in{position:relative;z-index:1}
.loc-glass{position:relative;max-width:540px;padding:34px 36px 32px;overflow:hidden;border-radius:var(--r);box-shadow:var(--shadow-card)}
.loc-glass h2{margin-bottom:.4em}
.loc-glass .hours{margin:4px 0 16px}
.loc-glass .loc-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 6px}
.loc-more{margin:0}

/* locations */
.loc-card{display:flex;flex-direction:column;overflow:hidden}
.loc-card.is-wide{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
.loc-card.is-wide .map{aspect-ratio:auto;min-height:340px}
.map{aspect-ratio:16/9;background:linear-gradient(135deg,var(--ivory-2),var(--blush-2))}
.map iframe{display:block;width:100%;height:100%;border:0}
.loc-body{padding:22px 24px 24px}
.loc-body h2,.loc-body h3{font-size:1.55rem}
.loc-addr{display:flex;gap:10px;color:var(--ink);font-weight:700}
.loc-addr .i,.drive-note .i{margin-top:3px;color:var(--coral-deep)}
.loc-dir,.loc-social{color:var(--text-dim);font-size:.95rem}
.loc-contact{display:flex;flex-wrap:wrap;gap:0 20px}
.loc-contact a,.qc-loc a,.drive a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:700;text-decoration:none;overflow-wrap:anywhere}
.hours{width:100%;margin:4px 0 18px;font-size:.94rem}
.hours th,.hours td{padding:8px 0;border-bottom:1px dashed var(--line);font-weight:400;text-align:left}
.hours th{color:var(--text-dim)}
.hours td{color:var(--ink);font-weight:700;text-align:right}
.loc-actions{margin:0}
.loc-stack{display:grid;gap:24px}
.getthere{padding:24px;background:var(--white);border-radius:var(--r);box-shadow:var(--shadow-card)}
.near-grid .getthere{margin:0}
.drive-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:0 0 14px;padding:0;list-style:none}
.drive-list.is-single{grid-template-columns:1fr}
.drive{padding:18px;background:var(--ivory);border:1px solid var(--line);border-radius:var(--r-sm)}
.drive.is-nearest{background:linear-gradient(160deg,var(--white),var(--blush-2));border-color:rgba(184,65,60,.3)}
/* one spa: the drive card and the parking/hours note read as a single card */
.drive-list.is-single .drive{padding:0;background:none;border:0}
.drive-list.is-single+.drive-note{padding-top:14px;border-top:1px dashed var(--line)}
.drive h3,.drive h4{margin:0 0 6px;font-size:1.35rem}
.drive p{margin:0 0 4px;color:var(--text-dim);font-size:.94rem}
.drive-badge{display:inline-block;margin-bottom:10px;padding:4px 10px;border-radius:999px;background:var(--coral-deep);color:var(--white)}
.drive-stats{display:flex;align-items:baseline;gap:10px}
.drive-stats strong{color:var(--ink);font:500 1.8rem/1 var(--serif);font-variant-numeric:oldstyle-nums}
.drive .drive-na{margin-top:6px;color:var(--text);font-size:.88rem;font-weight:700}
.drive-note{display:flex;gap:10px;margin:0;color:var(--text-dim);font-size:.94rem}
.fold-body .drive-list{margin-top:8px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.chip{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;background:var(--white);border:1px solid var(--line);border-radius:999px;color:var(--ink);font-size:.92rem;text-decoration:none;transition:border-color .2s var(--ease),color .2s var(--ease),background-color .2s var(--ease)}
.chip:hover,.chip:focus-visible{background:var(--blush-2);border-color:var(--coral-deep);color:var(--coral-deep)}
.county-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:26px}
.county h3{margin-bottom:12px;font-size:1.35rem}
.county-grid-wide .county{padding:22px}
.county-list{margin:0;padding:0;list-style:none}
.county-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--line)}
.county-list li:last-child{border-bottom:0}
.county-list a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;text-decoration:none}
.ct-drive{color:var(--text-dim);font-size:.85rem;text-align:right}
/* link tiles, tinted by temperature */
.link-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:12px;margin:0;padding:0;list-style:none}
.link-tile{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:12px;min-height:64px;height:100%;padding:12px 16px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);text-decoration:none;transition:transform .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}
.link-tile>.i{grid-row:span 2;width:38px;height:38px;padding:9px;border-radius:10px;background:var(--tint);color:var(--tint-ink)}
.link-tile:not([data-temp])>.i{background:var(--blush-2);color:var(--coral-deep)}
.link-tile:hover{transform:translateY(-2px);border-color:var(--tint-ink);box-shadow:var(--shadow-sm);color:var(--ink)}
.link-tile:not([data-temp]):hover{border-color:var(--coral-deep)}
.lt-name{font-weight:700;line-height:1.3}
.lt-sub{color:var(--text-dim);font-size:.85rem}
.more-links{margin-top:44px}
.note-card{display:flex;align-items:flex-start;gap:18px;margin:0 0 clamp(40px,5vw,60px);padding:24px 26px}
.band .note-card{margin:0}
.note-card>.i{width:46px;height:46px;padding:11px;border-radius:12px;background:var(--blush-2);color:var(--coral-deep)}
.note-card h2{margin:0 0 .3em}
.note-card p{margin:0;color:var(--text-dim)}
.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,64px);align-items:center;margin:0 0 clamp(48px,7vw,88px)}
.split:last-child{margin-bottom:0}
.split.is-rev .split-media{order:-1}
.split-media img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-lg);box-shadow:var(--shadow)}
.legal h2{margin-top:1.6em;font-size:1.7rem}
.legal h3{margin-top:1.4em;font-size:1.35rem}
.review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:18px}
.review{margin:0;padding:22px}
.review blockquote{margin:0 0 10px;color:var(--ink);font:500 1.25rem/1.5 var(--serif)}
.review figcaption{color:var(--text-dim);font-size:.9rem}

/* CTA band + disclaimer */
.cta-band{position:relative;isolation:isolate;padding:var(--band-l) 0}
.cta-in{display:grid;grid-template-columns:minmax(0,1.2fr) auto;align-items:center;gap:28px 48px}
.cta-copy h2{margin-bottom:.3em}
.cta-copy p{max-width:60ch;margin:0;color:var(--on-dark)}
.cta-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin:0}
.disclaimer{padding:40px 0;background:var(--ivory);border-top:1px solid var(--line);color:var(--text-dim);font-size:.9rem}
.disclaimer h2{margin-bottom:10px;color:var(--text-dim)}
.contra{display:flex;flex-wrap:wrap;gap:4px 26px;margin:0;padding-left:1.1em}

/* forms (#request is glass: the one card that keeps a blur) */
.form-card{padding:26px;background:var(--white);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-card)}
#request{position:relative;overflow:hidden;background:var(--glass);border-color:var(--glass-line);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
#request::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--seam)}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){#request{background:var(--white)}}
.fc-h{margin-bottom:.2em;font-size:1.8rem}
.fc-sub{margin-bottom:18px;color:var(--text-dim);font-size:.95rem}
.lead-form{position:relative;display:grid;gap:14px}
.f-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.layout-side .f-row-loc{grid-template-columns:1fr}
.field{display:grid;gap:6px;min-width:0;align-content:start}
.field label{color:var(--ink);font-size:.9rem;font-weight:700}
.req{color:var(--danger)}
.opt{color:var(--text-dim);font-weight:400}
.field input,.field select,.field textarea{width:100%;min-height:48px;padding:11px 14px;background:var(--white);border:1px solid var(--field);border-radius:var(--r-sm);color:var(--text);font:400 1rem/1.4 var(--sans);transition:border-color .2s var(--ease)}
.field textarea{min-height:96px;resize:vertical}
.field select{appearance:none;-webkit-appearance:none;padding-right:42px;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B8413C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center/18px}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid var(--coral-deep);outline-offset:1px;border-color:var(--coral-deep)}
.field .is-invalid{border-color:var(--danger)}
.f-err{margin:0;color:var(--danger);font-size:.85rem}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-note{margin:0;color:var(--text-dim);font-size:.86rem}
/* compact #request form: email, date and message fold under "Add details" (folded fields are still submitted) */
.f-fold>summary{font-size:.95rem}
.f-fold .fold-body{display:grid;gap:14px;padding:2px 18px 18px}
.form-error{margin:0;padding:12px 14px;border-radius:var(--r-sm);background:#FDECEA;color:#8C1D18;font-size:.92rem}
.form-error a{color:inherit;font-weight:700}
.form-success{padding:26px;background:linear-gradient(160deg,var(--white),var(--blush-2));border:1px solid rgba(184,65,60,.3);border-radius:var(--r)}
.form-success .i{width:46px;height:46px;margin-bottom:12px;padding:11px;border-radius:50%;background:var(--coral-deep);color:var(--white)}
.fs-title{margin:0 0 6px;color:var(--ink);font:700 1.65rem/1.2 var(--serif)}
.form-success p:last-child{margin:0}
.form-band{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,.8fr);align-items:start;gap:28px;max-width:1060px}
.side-card{padding:20px 22px;background:var(--white);border:0;border-radius:var(--r);box-shadow:var(--shadow-card)}
.qc-h{margin:0 0 10px;color:var(--sage-deep)}
.qc-loc{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 10px;margin:0;border-bottom:1px dashed var(--line);font-size:.94rem}
.qc-loc a{white-space:nowrap}
.qc-hours{display:flex;gap:8px;margin:12px 0 0;color:var(--text-dim);font-size:.88rem}
.qc-hours .i{margin-top:3px}
.mini-steps{display:grid;gap:12px;margin:0;padding-left:1.2em}
.mini-steps strong{display:block;color:var(--ink)}
.mini-steps span{color:var(--text-dim);font-size:.93rem}

/* footer + call bar */
.site-footer{padding:clamp(56px,7vw,80px) 0 0;font-size:.94rem}
.f-grid{display:grid;grid-template-columns:1.25fr 1fr .9fr 1.25fr;gap:36px 40px}
.f-brand{grid-area:1/1/3/2}
.f-locs{grid-column:2/5;grid-row:2;display:grid;grid-template-columns:1fr 1fr;align-content:start;gap:16px 28px}
.f-locs .f-h{grid-column:1/-1;margin-bottom:0}
.f-locs.is-single{grid-template-columns:1fr}
.f-locs.is-single .f-loc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:4px 28px}
.f-locs.is-single .f-loc h3{grid-column:1/-1}
.f-logo img{width:140px;height:auto}
.f-tag{margin:16px 0 8px;color:var(--white);font:600 1.35rem/1.3 var(--serif)}
.f-brand p{color:var(--on-dark-dim)}
.f-h{margin:0 0 10px;color:var(--blush)}
.site-footer ul{margin:0;padding:0;list-style:none}
.site-footer a:not(.btn){display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--on-dark);text-decoration:none}
.site-footer a:not(.btn):hover{color:var(--white);text-decoration:underline}
.site-footer .f-logo{min-height:0}
.f-cities ul{columns:2;column-gap:18px}
.f-all{font-weight:700}
.f-loc h3{margin-bottom:8px;font-size:1.2rem}
.f-loc p{display:flex;align-items:center;gap:8px;margin:0 0 4px;color:var(--on-dark)}
.f-loc-a p:first-child{align-items:flex-start}
.f-loc .i,.f-pay .i{margin-top:3px;color:var(--coral)}
.f-hours{margin:0 0 4px!important;color:var(--on-dark-dim);font-size:.86rem}
.f-hours li{display:flex;justify-content:space-between;gap:10px;padding:3px 0}
.f-pay{display:flex;gap:8px}
.f-bottom{display:grid;gap:6px;margin-top:44px;padding-top:22px;padding-bottom:28px;border-top:1px solid rgba(255,210,208,.14);color:var(--on-dark-dim);font-size:.86rem}
.f-bottom p{margin:0}
.f-legal{display:flex;flex-wrap:wrap;gap:0 20px}
.callbar{display:none}

/* reveal (motion <= 300ms; app.js staggers siblings by --i x 60ms) */
.js .reveal{transition:opacity .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}
.js .reveal:not(.in){opacity:0;transform:translateY(14px)}

/* ---- funnel components (docs/ideas-2026-10-08.md §2): request strip, time chips, consent, Book Sheet, live hours,
   call-bar Text button, combo-bundle row, success screen, /now/ ----
   Base rules only: they MUST stay above "responsive", because their phone overrides (.book-sheet, .bs-in, .combo-row,
   .now-row in the max-width blocks) share their specificity and only win by coming later. qa.js R17 checks this. */
.consent{margin:-4px 0 0;color:var(--text-dim);font-size:.8rem;line-height:1.45}
.rs-what{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:8px 14px;border-radius:999px;background:var(--tint);color:var(--ink);font:500 1.02rem/1.3 var(--serif);font-variant-numeric:oldstyle-nums}
.rs-what[hidden]{display:none}
.rs-what .i{flex:none;color:var(--coral-deep)}
.request-strip .fc-h{font-size:1.6rem}
.time-chips{margin:0;padding:0;border:0;min-width:0}
.time-chips legend{padding:0;margin:0 0 8px;color:var(--ink);font-size:.9rem;font-weight:700}
.time-chips .pick-chips{margin:0;gap:8px}
.time-chips .pick-chip{min-height:44px;padding:0 14px;font-size:.88rem}
.form-band .request-strip{max-width:none}
/* Book Sheet: a centred card on desktop, a bottom sheet that slides up on phones; the seam edges its top. The box (.bs-in)
   is the scroller, not the dialog, so a drag on its scrollbar is never a backdrop click that closes the sheet */
.book-sheet{width:min(100% - 32px,540px);max-width:none;max-height:none;margin:auto;padding:0;border:0;border-radius:var(--r-lg);background:var(--ivory);color:var(--text);box-shadow:0 40px 90px -30px rgba(28,23,20,.6);overflow:hidden}
.book-sheet::backdrop{background:rgba(43,36,32,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.book-sheet[open]{max-height:none;animation:vt-sheet-in .3s var(--ease) both}  /* beats the UA dialog:modal cap; .bs-in sets the height */
.bs-in{position:relative;max-height:min(92vh,92dvh);padding:28px 28px 26px;overflow:auto;overscroll-behavior:contain}
.bs-in::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--seam)}
.bs-in .eyebrow-rule{margin-bottom:10px;padding-right:52px}
.bs-in .fc-h{padding-right:52px;font-size:1.8rem}
.bs-close{position:absolute;top:14px;right:14px;z-index:1;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--white);color:var(--ink);cursor:pointer;transition:background-color .2s var(--ease),color .2s var(--ease)}
.bs-close:hover{background:var(--ink);color:var(--white)}
.bs-close .i{width:20px;height:20px}
html.sheet-open{overflow:hidden}
@keyframes vt-sheet-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes vt-sheet-up{from{transform:translateY(100%)}to{transform:none}}
/* live hours line under a page H1 (dark hero) and on /now/ */
.ph-hours{display:flex;align-items:center;gap:8px;margin:0 0 6px;color:var(--on-dark-dim);font-size:.9rem}
.ph-hours .i,.now-hours .i{flex:none;width:16px;height:16px;color:var(--coral)}
.now-hours{display:flex;align-items:center;gap:8px;margin:0 0 22px;color:var(--text-dim);font-size:.95rem}
.now-hours .i{color:var(--coral-deep)}
/* cavitation + cryo bundles: 1 / 6 / 10 / 12 sessions with the price per session */
.combo-row{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 18px;padding:0;list-style:none;overflow:hidden;border-radius:var(--r);box-shadow:var(--shadow-card)}
.combo-row::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--seam)}
.combo-row li{display:flex;flex-direction:column;gap:4px;padding:20px 22px;border-left:1px solid var(--glass-line)}
.combo-row li:first-child{border-left:0}
.cr-n{font:700 .72rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim)}
.combo-row .price-serif{font-size:2rem;white-space:nowrap;overflow-wrap:normal}  /* a price never breaks mid-number */
.cr-per{color:var(--text-dim);font-size:.9rem}
/* success screen: "Got it, Maria — Cryo Facial", the reply line, the parking tip, one Save our number button */
.fs-tip{color:var(--text-dim);font-size:.92rem}
.form-success .fs-act{margin:18px 0 0}
/* /now/: the storefront-QR page, no header or call bar */
.now-page{padding-bottom:0}
.now.wrap{max-width:760px;padding-top:24px;padding-bottom:56px}  /* .now.wrap: survives the 480px .wrap padding reset */
.now-brand{display:inline-flex;align-items:center;gap:12px;margin:0 0 30px;text-decoration:none}
.now h1{margin-bottom:.3em;font-size:clamp(2.2rem,7vw,3.4rem)}
.now .lead{margin-bottom:14px}
.now-rows{display:grid;gap:14px;margin:0 0 22px;padding:0;list-style:none;counter-reset:now}
.now-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 22px;align-items:center;padding:20px 22px;border-left:4px solid var(--tint-ink)}
.now-row h2{margin:0 0 .15em;font-size:1.5rem;font-weight:500}
.now-body .t-cat{margin:0 0 4px;color:var(--tint-ink)}
.now-body p:last-child{margin:0;color:var(--text-dim);font-size:.95rem}
.now-act{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0}
.now-act .price-serif{margin-right:8px;font-size:1.9rem}
.now-call{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin:0 0 22px}
html.is-closed .now a[href^="sms:"]{display:none}

/* ---- guides (build/guides/*.json): the card, the /guides/ index chips, the article page (byline, 3-fact ledge, 68ch
   sections, prev/next), the related-treatment card, and the leave-by line app.js adds under a city page's route ledger.
   Base rules only, above "responsive" (qa.js R17); their phone overrides sit in the guides media block below. ---- */
.g-media{aspect-ratio:16/10;background:var(--ivory-2)}
.g-media.is-cutout>img,.g-media.is-product>img{padding:6% 8%}
.g-cat{position:absolute;left:14px;top:14px;z-index:2;padding:6px 12px;border:1px solid var(--glass-line);border-radius:999px;background:var(--glass-solid);color:var(--tint-ink);font:700 .72rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;box-shadow:var(--shadow-sm)}
.g-card .t-body{padding:18px 20px 20px}
.g-card .t-body>.g-meta{margin:0 0 8px;color:var(--text-dim);font-size:.84rem}
.g-title{margin:0 0 .45em;font-size:1.32rem;font-weight:600;line-height:1.22}
.g-title a{color:var(--ink);text-decoration:none}
.g-title a:hover{color:var(--coral-deep)}
.g-title a::after{content:"";position:absolute;inset:0;z-index:2}
.g-ex{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:0 0 16px;color:var(--text-dim);font-size:.95rem}
.g-more{color:var(--coral-deep);font-size:.9rem;font-weight:700}
.g-grid-2{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.g-filter{margin:26px 0 0}
.chip-n{margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--ivory-2);color:var(--text-dim);font-size:.8rem;font-weight:700}
.ph-byline{margin:-6px 0 16px;color:var(--on-dark-dim);font-size:.92rem}
.ph-byline time{color:var(--blush)}
.facts.facts-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-sec>p:last-child{margin-bottom:0}
.g-disc{padding-top:18px;border-top:1px solid var(--line)}
.g-disc p{max-width:68ch;margin:0}
.g-pn{margin-top:clamp(28px,4vw,44px)}
.g-pn .is-prev>.i{transform:scaleX(-1)}
.rel-card{position:relative;overflow:hidden}
.rel-card::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--seam)}
.rel-name{margin:0 0 .3em;font-size:1.6rem;font-weight:500}
.rel-name a{color:var(--ink);text-decoration:none}
.rel-name a:hover{color:var(--coral-deep)}
.rel-tile{margin:0 0 12px;color:var(--text-dim);font-size:.95rem}
.rel-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 16px}
.rel-min{color:var(--text-dim);font-size:.9rem}
.rel-act{margin:0 0 6px}
.rel-more{margin:0}
.leave-by{display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding:12px 16px;border-left:3px solid var(--coral);border-radius:0 var(--r-sm) var(--r-sm) 0;background:var(--white);color:var(--text);font-size:.95rem;box-shadow:var(--shadow-sm)}
.leave-by .i{flex:none;margin-top:3px;color:var(--coral-deep)}

/* ---- motion module (docs/motion-spec-2026-10-08.md; the living photo is in the hero block): transform, opacity,
   filter and background-size only; loops need .is-live (app.js: on screen, tab visible); all off under reduced motion ---- */
/* 2. thermometer: fills with the scroll (scroll timeline, else app.js --p); the drop marks #request (--at) */
.thermo{position:fixed;left:0;right:0;top:0;z-index:70;height:3px;pointer-events:none}
.thermo-fill{display:block;height:100%;background:var(--seam);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.thermo-drop{position:absolute;top:0;left:var(--at,-20px);width:8px;height:8px;margin-left:-4px;border-radius:0 50% 50% 50%;background:var(--coral-deep);transform:rotate(45deg)}
@supports (animation-timeline:scroll()){.thermo-fill{animation:vt-fill linear both;animation-timeline:scroll()}}
@keyframes vt-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
/* 3. count-up settle bounce */
@keyframes vt-settle{40%{transform:translateY(-4px)}to{transform:none}}
.is-settled{animation:vt-settle .3s var(--ease)}
/* 4. seam draw-in on reveal (600 ms) */
.js .reveal .eyebrow-rule::before,.js .reveal>h2::before{background-size:0 100%;background-repeat:no-repeat;transition:background-size .6s var(--ease) .1s}
.js .reveal.in .eyebrow-rule::before,.js .reveal.in>h2::before{background-size:100% 100%}
/* 6. device halos breathe (6 s), brighten on hover; a slow red pulse over the red-light bed */
.fig{position:relative;isolation:isolate}
.fig::before{content:"";position:absolute;z-index:-1;left:-10%;right:-10%;top:-6%;aspect-ratio:3/4;border-radius:50%;background:radial-gradient(closest-side,rgba(226,95,90,.5),rgba(226,95,90,0));opacity:.45;animation:vt-breathe 6s ease-in-out infinite alternate;animation-play-state:paused}
.fig.is-live::before{animation-play-state:running}
.fig-img{transition:filter .3s var(--ease)}
.fig:hover .fig-img{filter:brightness(1.08)}
.inside-media::before{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(55% 65% at 68% 50%,rgba(226,95,90,.45),transparent 70%);mix-blend-mode:screen;opacity:.35;animation:vt-pulse 8s ease-in-out infinite alternate;animation-play-state:paused;pointer-events:none}
.inside-media.is-live::before{animation-play-state:running}
@keyframes vt-breathe{to{opacity:1}}
@keyframes vt-pulse{to{opacity:.85}}
/* 7. emblem drip (app.js adds .is-drip once per session) */
@keyframes vt-drip{from{transform:translateY(-6px)}70%{transform:translateY(1px)}to{transform:none}}
.is-drip img{animation:vt-drip .7s var(--ease) .15s both}
/* 8. bento lead pan on phones (rule in the responsive section) */
@keyframes vt-pan{from{transform:scale(1.08) translateX(-3%)}to{transform:scale(1.08) translateX(3%)}}
/* 9. hours dot: grey, then sage (two beats per 6 s) while open, coral when closed; one call-bar sheen (app.js .sheen) */
.live-dot{position:relative;flex:none;width:10px;height:10px;border-radius:50%;background:var(--taupe)}
.live-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;opacity:0}
html.is-open .live-dot{background:var(--sage)}
html.is-closed .live-dot{background:var(--coral)}
html.is-open .live-dot.is-live::after{animation:vt-ping 6s ease-out infinite}
@keyframes vt-ping{0%,50%{transform:none;opacity:.8}28%,78%{transform:scale(2.6);opacity:0}28.1%,78.1%,100%{transform:none;opacity:0}}
.cb-btn{position:relative;overflow:hidden}
.cb-btn::after{content:"";position:absolute;top:0;bottom:0;left:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);transform:translateX(-160%) skewX(-20deg);pointer-events:none}
.callbar.sheen:not(.after-hours) .cb-book::after,.callbar.sheen.after-hours .cb-text::after{animation:vt-sheen 2s var(--ease) .3s both}
@keyframes vt-sheen{to{transform:translateX(360%) skewX(-20deg)}}
/* 10. menu marquee: a wrapping list until app.js clones it and adds .is-run (40 s loop). It pauses on hover, on focus and
   with the Pause button (WCAG 2.2.2); a focused link is shown by seeking the loop (app.js), and overflow:clip means focus can
   never scroll the strip out of sync. */
.marquee{position:relative;overflow:hidden;overflow:clip;padding:14px 0;background:var(--ivory-2);border-top:1px solid var(--line)}
.mq-track{display:flex;flex-wrap:wrap;max-width:var(--max);margin:0 auto;padding:0 20px}
.mq-list{display:flex;flex-wrap:wrap;gap:0 28px;margin:0;padding:0;list-style:none}
.mq-list a{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--ink);font:500 1.2rem/1 var(--serif);text-decoration:none;white-space:nowrap}
.mq-list a::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--tint-ink)}
.mq-list a:hover{color:var(--coral-deep)}
.mq-price{color:var(--coral-deep);font-variant-numeric:oldstyle-nums}
.is-run .mq-track{flex-wrap:nowrap;width:max-content;max-width:none;padding:0}
.is-run .mq-list{flex:none;flex-wrap:nowrap;gap:0 44px;padding-right:44px}
.is-run.is-live .mq-track{animation:vt-marquee 40s linear infinite}
.marquee.is-run:hover .mq-track,.marquee.is-run:focus-within .mq-track,.marquee.is-paused .mq-track{animation-play-state:paused}
.marquee.is-seek .mq-track{animation:none;transform:translateX(var(--mq-x,0px))}   /* focus arrived before the loop started: placed by hand */
.mq-pause{right:16px;bottom:auto;top:50%;transform:translateY(-50%)}
@keyframes vt-marquee{to{transform:translateX(-50%)}}
/* 5 + 7. desktop only: the cursor glow (app.js moves it with transform, colour = the section at the viewport centre), emblem tilt */
@media (pointer:fine) and (min-width:1001px){
.cursor-glow{position:fixed;left:0;top:0;z-index:1;width:420px;height:420px;margin:-210px 0 0 -210px;border-radius:50%;background:radial-gradient(circle,var(--glow-c,rgba(255,210,208,.55)),transparent 62%);opacity:0;mix-blend-mode:soft-light;pointer-events:none;transition:opacity .3s var(--ease);will-change:transform}
.cursor-glow.is-on{opacity:1}
.cursor-glow[data-temp="warm"]{--glow-c:rgba(226,95,90,.6)}
.cursor-glow[data-temp="cool"]{--glow-c:rgba(126,157,149,.65)}
.brand:hover .brand-mark{transform:rotate(6deg)}
}
/* 12. arch parallax (slower than the page) */
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference) and (pointer:fine) and (min-width:1001px){
@keyframes vt-par2{from{translate:0 -24px}to{translate:0 40px}}
.ph-media{animation:vt-par2 linear both;animation-timeline:view();animation-range:cover 0% cover 100%}
}}

/* responsive */
@media (max-width:1100px){
.f-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.f-brand{grid-area:auto;grid-column:1/-1}
.f-locs{grid-column:1/-1;grid-row:auto}
.arc-in{grid-template-columns:1fr 1fr}
}
@media (max-width:1000px){
:root{--hd:68px}
.site-header.is-scrolled{--hd:60px}
.topbar{display:none}
.brand-mark{width:42px;height:42px}
.brand-mark img{width:53px}
.wordmark b{font-size:1.5rem}
.nav-toggle{display:inline-grid;place-items:center;width:46px;height:46px;padding:0;background:var(--white);border:1px solid var(--line);border-radius:12px;color:var(--ink);cursor:pointer}
.nav-toggle .i{width:22px;height:22px}
.nav-toggle .i-close,.nav-open .nav-toggle .i-open{display:none}
.nav-open .nav-toggle .i-close{display:block}
.site-nav{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;align-items:stretch;max-height:calc(100vh - var(--hd));max-height:calc(100dvh - var(--hd));overflow-y:auto;overscroll-behavior:contain;padding:6px 20px 24px;background:var(--white);border-bottom:1px solid var(--line);box-shadow:0 30px 60px -30px rgba(43,36,32,.45)}
.nav-open .site-nav{display:flex}
html.nav-lock{overflow:hidden}
.nav-list{flex-direction:column;align-items:stretch;gap:0}
.nav-item{border-bottom:1px solid var(--line)}
.dd-head{justify-content:space-between}
.nav-link{flex:1;min-height:52px;padding:0 4px;font-size:1.02rem}
.nav-link.is-active::after{left:4px;right:auto;width:28px;bottom:10px}
.dd-toggle{width:52px;height:52px;margin:0}
.dd-panel{position:static;display:none;width:auto;padding:0 0 14px;border:0;border-radius:0;box-shadow:none;opacity:1;visibility:visible;transform:none;transition:none}
.dd-panel::before{display:none}
.dd.open .dd-panel{display:block}
.dd-cols{grid-template-columns:1fr}
.nav-extra{display:grid;gap:10px;padding-top:18px}
.nav-phone{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;border:1px solid var(--line);border-radius:12px;color:var(--ink);text-decoration:none}
.nav-phone span{flex:1;color:var(--text-dim)}
.nav-phone strong{color:var(--coral-deep)}
.has-media .ph-grid,.layout,.cta-in,.form-band,.split,.facts-wrap.has-arch{grid-template-columns:1fr}
.layout-main,.layout-side{grid-column:auto;grid-row:auto}
.split.is-rev .split-media{order:0}
.has-media .ph-text{padding-bottom:0}
.ph-media{justify-self:center;width:min(100%,420px);margin:8px 0 -48px}
.facts-wrap{margin-top:64px}
.facts-wrap.has-arch{gap:0}
.page-hero::after{height:60%;width:50vw}
.layout{gap:32px}
.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
.steps{grid-template-columns:1fr}
.arc-in{grid-template-columns:1fr}
.arc-figs{max-width:560px}
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));background:rgba(43,36,32,.96);border-top:1px solid rgba(255,210,208,.18);transform:translateY(110%);visibility:hidden;transition:transform .3s var(--ease),visibility 0s linear .3s}
.callbar.is-on{transform:none;visibility:visible;transition:transform .3s var(--ease),visibility 0s}
html:not(.js) .callbar{transform:none;visibility:visible}
.cb-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:999px;font-weight:700;text-decoration:none}
.cb-call{border:1.5px solid rgba(255,255,255,.55);color:var(--white)}
.cb-book{background:var(--coral);color:var(--ink-deep)}
.callbar.has-text{grid-template-columns:1fr 1fr 1fr}
.cb-text{border:1.5px solid rgba(255,255,255,.55);color:var(--white)}
.callbar.after-hours .cb-text{background:var(--coral);border-color:var(--coral);color:var(--ink-deep)}
.callbar.after-hours .cb-book{background:transparent;border:1.5px solid rgba(255,255,255,.55);color:var(--white)}
body{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:900px){
.tiers{grid-template-columns:1fr}
.loc-card.is-wide{grid-template-columns:1fr}
.loc-card.is-wide .map{aspect-ratio:16/9;min-height:0}
.bento{grid-template-columns:1fr 1fr;grid-auto-rows:minmax(220px,auto)}
.bento-card,.bento-card.span-3{grid-column:span 1}
.bento-card.is-lead{grid-column:span 2;grid-row:span 1;min-height:360px}
}
@media (max-width:760px){
/* mobile: text first, one 54px button, the portrait as a 4:5 arch at 72% width on a blush panel */
.btn-book{display:inline-flex;min-width:90px;margin-left:0;padding:0 14px}
.btn-book .i,.btn-book .bn-more{display:none}
.hd-in{gap:10px}
.hero{min-height:0;align-items:start}
.hero-in{grid-template-columns:1fr;gap:0;padding-top:24px;padding-bottom:0}
.hero h1{max-width:none;font-size:clamp(2.4rem,11vw,3.2rem)}
.hero-ctas{gap:10px 20px}
.hero-ctas .btn{width:100%;min-height:54px}
.hero-text{padding:0 0 28px}
.hero-media{order:1;justify-self:stretch;width:auto;margin:0 calc(50% - 50vw);padding:28px 0 104px;background:var(--blush-2)}
.hero-media .arch{width:72%;margin:0 auto}
.hero-chip{left:50%;bottom:76px;transform:translateX(-50%)}
.ledge-wrap{margin-top:-56px}
.ledge{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ledge::-webkit-scrollbar{display:none}
.ledge-item{flex:0 0 46%;scroll-snap-align:start;padding:18px 18px}
.ledge-item strong{font-size:2rem}
.ph-media{width:72%;margin:8px auto -48px}
.ph-chip{right:auto;left:50%;top:auto;bottom:-22px;transform:translateX(-50%)}
.ph-detail{left:-10%;bottom:8%;width:38%;border-width:4px}
.facts-wrap{margin-top:72px}
.facts{grid-template-columns:1fr 1fr}
.fact:nth-child(3){border-left:0}
.fact:nth-child(n+3){border-top:1px solid var(--glass-line)}
.grid-2,.grid-3,.grid-4,.benefits,.why-grid{grid-template-columns:1fr}
.bento{grid-template-columns:1fr}
.bento-card,.bento-card.is-lead,.bento-card.span-3{grid-column:span 1;grid-row:span 1;min-height:0;aspect-ratio:4/3}
.b-cap{padding-top:90px}
.bento-card.is-lead .b-media img{object-position:50% 60%}
.bento-card.is-lead.is-live .b-media img{animation:vt-pan 12s ease-in-out infinite alternate}
.pick-card{padding:24px 22px}
.pick-foot .btn{width:100%}
.arc-figs{grid-template-columns:1fr 1fr;gap:16px}
.fig:nth-child(2){margin-bottom:24px}
.timeline::before{left:23px}
.tl-step{grid-template-columns:48px minmax(0,1fr);gap:16px}
.tl-step .num-outline{width:48px;height:48px;font-size:1.3rem}
.inside{min-height:0}
.loc-glass{padding:26px 22px}
.cta-actions .btn{width:100%}
.f-grid{grid-template-columns:1fr 1fr}
.f-cities{grid-column:1/-1}
.f-cities ul{columns:3}
.book-sheet{width:100%;margin:auto 0 0;border-radius:var(--r-lg) var(--r-lg) 0 0}
.book-sheet[open]{animation-name:vt-sheet-up}
.bs-in{max-height:min(96vh,96dvh);padding:22px 18px calc(20px + env(safe-area-inset-bottom,0px))}
.bs-in .fc-sub{margin-bottom:12px}
.bs-in .rs-what{margin-bottom:10px}
.callbar.has-text .cb-num{display:none}
}
@media (max-width:600px){
.drive-list,.f-locs{grid-template-columns:1fr}
/* bundles 2 x 2 on phones (name, price and per-session stacked), /now/ rows as one column */
.combo-row{grid-template-columns:1fr 1fr}
.combo-row li{padding:16px 18px}
.combo-row li:nth-child(3){border-left:0}
.combo-row li:nth-child(n+3){border-top:1px solid var(--glass-line)}
.now-row{grid-template-columns:1fr;padding:18px}
.now-act .btn{flex:1 1 auto}
.f-locs.is-single .f-loc{grid-template-columns:1fr}
.f-cities ul{columns:2}
/* menu card on phones: name on its own line, time and price beneath */
.price-table,.price-table tbody{display:block}
.price-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 14px;padding:12px 0;border-bottom:1px solid var(--line)}
.price-table tbody tr:last-child{border-bottom:0}
.price-table th,.price-table td{display:block;padding:0;border:0}
.price-table th{grid-column:1/-1}
.price-table .pt-price{text-align:right}
.route li{flex:1 1 42%}
}
@media (max-width:480px){
.wrap{padding:0 16px}
.f-row{grid-template-columns:1fr}
.form-card{padding:20px 18px}
.cb-num{display:none}
.f-grid{grid-template-columns:1fr}
.note-card{flex-direction:column}
.wordmark b{font-size:1.38rem}
.wordmark small{font-size:.68rem;letter-spacing:.16em}
.hero-media{margin:0 -16px}
.ledge-item{flex-basis:60%}
.arc-figs{grid-template-columns:1fr 1fr}
.fig figcaption{letter-spacing:.08em}
}
@media (max-width:360px){
/* bundles as a single menu column on the narrowest phones: keeps a 2rem "$3,095" clear of the cell padding at 320px */
.combo-row{grid-template-columns:1fr}
.combo-row li{border-left:0}
.combo-row li:nth-child(n+2){border-top:1px solid var(--glass-line)}
}
/* guides on phones: the 3-fact ledge as 2 + 1 (the third fact full width), the article picture like every page hero */
@media (max-width:760px){
.facts.facts-3{grid-template-columns:1fr 1fr}
.facts-3 .fact:nth-child(3){grid-column:1/-1}
.g-title{font-size:1.25rem}
}
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
.js .reveal:not(.in){opacity:1;transform:none}
.hero-media,.hero .arch img,.hero::after,.thermo-fill,.mq-track,.ph-media{animation:none!important}
.slides>img{transform:none!important}
}
/* ?motion=off (app.js sets <html data-motion="off">): reduced motion for testing */
[data-motion="off"],[data-motion="off"] *,[data-motion="off"] *::before,[data-motion="off"] *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
[data-motion="off"] .slides>img{transform:none!important}
@media print{
.topbar,.promo-seam,.site-header,.callbar,.skip-link,.cta-band,.map,.form-card,.lead-form,.hero-media,.facts-wrap,.ledge-wrap,.more-links,.t-go,.inside-media,.arc-figs,.b-price{display:none!important}
body{padding:0;background:var(--white);color:#000}
.arctic,.hero,.arc-band,.inside,.band-warm,.band-cool{background:var(--white)!important;color:#000}
.arctic h1,.arctic h2,.arctic h3,.arctic .lead,.arctic a:not(.btn),.arc-row p,.fig figcaption{color:#000!important}
.js .reveal{opacity:1!important;transform:none!important}
a{color:#000}
.hero::before,.page-hero::before,.arc-band::before,.cta-band::before,.page-hero::after{display:none}
  /* white-on-colour text loses its background in print */
.t-cap,.b-cap{background:none!important;padding:10px 18px 0}
.t-title,.t-title a,.t-cat,.b-title,.b-title a,.b-text{color:#000!important}
.bento-card{background:none;color:#000}
.b-media{position:static}
.num-outline{-webkit-text-fill-color:#000;-webkit-text-stroke:0;color:#000}
.pick-card{display:flex!important}
.drive-badge,.tier-badge,.btn-primary,.form-success .i{background:none!important;color:#000!important;border:1px solid #000;box-shadow:none}
}
