/* ==========================================================================
   Oxyderm Laser Clinic — "Bright Clinical Blue" design system
   Brand blue from the logo (#1870B0 → #00B2FF) on white/sky surfaces,
   with a bright sky accent (#05ADF5). Plus Jakarta Sans display + Figtree body.
   The --peach-* token names are historical: they now hold the blue accent scale.
   ========================================================================== */
:root {
  --blue-50: #EEF6FC; --blue-100: #DCEBF8; --blue-200: #B7D6F0; --blue-300: #7FB6E3;
  --blue-500: #1B7FCB; --blue-600: #1870B0; --blue-700: #125A8F; --blue-800: #0E4570; --blue-900: #0B2D4F;
  --cyan: #00B2FF;
  --peach-50: #EFF7FD; --peach-100: #DCECF8; --peach-200: #B3DCF7; --peach-500: #05ADF5; --peach-700: #084864;
  --ink: #10233A; --slate: #4A5B70; --mist: #5D6E82; --line: #E2E9F0; --line-2: #CBD6E2;
  --paper: #FFFFFF; --cloud: #F5F8FB; --sand: #FBF7F3;
  --success: #17805A; --success-bg: #E6F6EE; --warn: #B45309; --warn-bg: #FFF4E5;
  --grad-brand: linear-gradient(135deg, #1870B0 0%, #00B2FF 100%);
  --grad-warm: linear-gradient(135deg, #DCECF8 0%, #EFF7FD 100%);
  --font-display: "Plus Jakarta Sans", "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: "Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --r-sm: 10px; --r-md: 16px; --r-lg: 24px; --r-xl: 32px; --r-pill: 999px;
  --sh-1: 0 1px 2px rgba(16,35,58,.06), 0 1px 3px rgba(16,35,58,.08);
  --sh-2: 0 4px 14px rgba(16,35,58,.08), 0 1px 3px rgba(16,35,58,.06);
  --sh-3: 0 18px 40px rgba(16,35,58,.14), 0 4px 10px rgba(16,35,58,.06);
  --sh-blue: 0 10px 24px rgba(24,112,176,.28);
  --ease: cubic-bezier(.2,.7,.2,1); --dur: 220ms;
  --container: 1200px; --gutter: clamp(16px, 4vw, 40px);
  --header-h: 76px;
  color-scheme: light;
}
@media (prefers-reduced-motion: reduce) { :root { --dur: 0ms; } }

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; font-family: var(--font-body); font-size: 1.0625rem; line-height: 1.65; color: var(--ink); background: var(--paper); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: clip; }
img, picture, video, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: var(--blue-600); text-decoration-thickness: 1px; text-underline-offset: .15em; }
a:hover { color: var(--blue-700); }
button { font: inherit; cursor: pointer; }
h1, h2, h3, h4, h5 { font-family: var(--font-display); font-weight: 700; line-height: 1.12; letter-spacing: -.025em; margin: 0 0 .5em; color: var(--ink); text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 4.2vw, 3.5rem); letter-spacing: -.03em; }
h2 { font-size: clamp(1.6rem, 2.8vw, 2.35rem); }
h3 { font-size: clamp(1.2rem, 1.7vw, 1.45rem); font-weight: 700; letter-spacing: -.015em; line-height: 1.3; }
h4 { font-size: 1.1rem; font-weight: 700; letter-spacing: -.01em; line-height: 1.35; }
p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.25em; }
strong { font-weight: 600; }
em.hi, .hi { font-style: normal; font-weight: 800; color: var(--blue-600); }
.lede { font-size: clamp(1.1rem, 1.5vw, 1.3rem); line-height: 1.55; color: var(--slate); max-width: 62ch; text-wrap: pretty; }
.small { font-size: .9375rem; } .muted { color: var(--slate); } .tiny { font-size: .8125rem; color: var(--mist); }
.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; }
:focus-visible { outline: 3px solid var(--cyan); outline-offset: 3px; border-radius: 4px; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 2000; background: var(--ink); color: #fff; padding: 10px 14px; border-radius: var(--r-sm); }
.skip:focus { top: 12px; }
::selection { background: var(--blue-100); color: var(--ink); }

/* ---------- layout ---------- */
.wrap { width: min(var(--container), 100% - 2 * var(--gutter)); margin-inline: auto; }
.wrap-narrow { width: min(820px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.wrap-wide { width: min(1400px, 100% - 2 * var(--gutter)); margin-inline: auto; }
.section { padding-block: clamp(56px, 8vw, 104px); }
.section-tight { padding-block: clamp(36px, 5vw, 64px); }
.bg-cloud { background: var(--cloud); } .bg-sky { background: var(--blue-50); } .bg-sand { background: var(--sand); }
.bg-warm { background: var(--grad-warm); }
.bg-navy { background: var(--blue-900); color: #DCE8F3; }
.bg-navy h1, .bg-navy h2, .bg-navy h3, .bg-navy h4 { color: #fff; }
.bg-navy a { color: #A6D5F5; }
/* .lede/.muted/.tiny are light-surface greys (--slate/--mist). Unscoped they land on navy at ~2:1,
   which is how the "Why Count on Us?" lede shipped invisible. Dim-on-dark lives here, as one list. */
.bg-navy .lede, .bg-navy .muted, .bg-navy .tiny, .calc .lede, .calc .muted, .calc .tiny { color: #C9DDEE; }
.grid { display: grid; gap: clamp(16px, 2.5vw, 28px); }
.g2 { grid-template-columns: repeat(2, minmax(0,1fr)); } .g3 { grid-template-columns: repeat(3, minmax(0,1fr)); } .g4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.split { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: clamp(28px, 5vw, 72px); align-items: center; }
.split.rev > :first-child { order: 2; }
@media (max-width: 960px) { .g4 { grid-template-columns: repeat(2, minmax(0,1fr)); } .g3 { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 720px) { .g2, .g3, .g4, .split { grid-template-columns: 1fr; } .split.rev > :first-child { order: 0; } }
.section-head { max-width: 760px; margin-bottom: clamp(28px, 4vw, 48px); }
.section-head.center { margin-inline: auto; text-align: center; }
.kicker { display: inline-flex; align-items: center; gap: 8px; font-size: .8125rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--blue-600); margin-bottom: 14px; }
.kicker::before { content: ""; width: 22px; height: 2px; background: var(--grad-brand); border-radius: 2px; }
.center .kicker::before { display: none; }
.kicker.warm { color: var(--peach-700); } .kicker.warm::before { background: var(--peach-500); }
/* every navy surface, as one list: .calc paints --blue-900 through its own component class, so a
   rule scoped to .bg-navy alone left its kicker at --blue-600 on navy = 2.65:1 */
.bg-navy .kicker, .calc .kicker { color: #7FCBF2; }
.flow > * + * { margin-top: 1em; }
.prose { max-width: 70ch; }
.wrap.prose, .wrap-narrow.prose { max-width: min(var(--container), 100% - 2 * var(--gutter)); }
.wrap.prose > * { max-width: 72ch; }
.wrap-narrow.prose { max-width: min(820px, 100% - 2 * var(--gutter)); }
.prose p, .prose li { color: var(--slate); }
.prose h2 { margin-top: 1.6em; } .prose h3 { margin-top: 1.4em; }
.prose a { font-weight: 600; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.25em 0; font-size: .95rem; }
.prose th, .prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.prose thead td, .prose th { font-weight: 700; color: var(--ink); background: var(--cloud); }
.prose blockquote { margin: 1.5em 0; padding: 18px 24px; border-left: 4px solid var(--peach-500); background: var(--sand); border-radius: 0 var(--r-md) var(--r-md) 0; font-size: 1.08rem; color: var(--ink); }
.prose img { border-radius: var(--r-md); margin: 1.5em 0; }
.checklist { list-style: none; padding: 0; margin: 0 0 1em; display: grid; gap: 10px; }
.checklist li { position: relative; padding-left: 32px; color: var(--slate); }
.checklist li::before { content: ""; position: absolute; left: 0; top: .2em; width: 20px; height: 20px; border-radius: 50%; background: var(--blue-50) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M6 10.5l2.6 2.6L14.5 7' fill='none' stroke='%231870B0' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat; }
.checklist.warm li::before { background-color: var(--peach-100); }
.checklist li strong { color: var(--ink); }

/* ---------- buttons ---------- */
.btn { --bg: var(--blue-600); --fg: #fff; display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 12px 24px; border-radius: var(--r-pill); background: var(--bg); color: var(--fg); font-weight: 600; font-size: 1rem; line-height: 1.2; text-decoration: none; border: 2px solid transparent; transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), background-color var(--dur) var(--ease), color var(--dur) var(--ease); white-space: nowrap; cursor: pointer; touch-action: manipulation; }
.btn:hover { --bg: var(--blue-700); color: #fff; box-shadow: var(--sh-blue); transform: translateY(-1px); }
.btn:active { transform: translateY(0); box-shadow: none; }
.btn svg { width: 18px; height: 18px; flex: none; }
.btn-lg { min-height: 56px; padding: 14px 30px; font-size: 1.0625rem; }
.btn-sm { min-height: 40px; padding: 8px 16px; font-size: .9rem; }
.btn-warm { --bg: var(--peach-500); --fg: #fff; } .btn-warm:hover { --bg: var(--peach-700); box-shadow: 0 10px 24px rgba(5,173,245,.35); }
.btn-ghost { --bg: transparent; --fg: var(--blue-700); border-color: var(--blue-200); } .btn-ghost:hover { --bg: var(--blue-50); color: var(--blue-700); box-shadow: none; }
.btn-white { --bg: #fff; --fg: var(--blue-700); } .btn-white:hover { --bg: var(--blue-50); color: var(--blue-800); }
.btn-outline-white { --bg: transparent; --fg: #fff; border-color: rgba(255,255,255,.55); } .btn-outline-white:hover { --bg: rgba(255,255,255,.14); color: #fff; box-shadow: none; }
.btn-link { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--blue-600); text-decoration: none; }
.btn-link svg { width: 18px; height: 18px; transition: transform var(--dur) var(--ease); }
.btn-link:hover svg { transform: translateX(3px); }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.btn-row.center { justify-content: center; }
@media (max-width: 520px) { .btn-row .btn { flex: 1 1 100%; } }

/* ---------- pills, badges ---------- */
.pill { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: var(--r-pill); font-size: .8125rem; font-weight: 600; background: var(--blue-50); color: var(--blue-700); border: 1px solid var(--blue-100); line-height: 1.2; }
.pill.warm { background: var(--peach-100); color: var(--peach-700); border-color: var(--peach-200); }
.pill.success { background: var(--success-bg); color: var(--success); border-color: #C6E9D6; }
.pill.dark { background: rgba(255,255,255,.12); color: #fff; border-color: rgba(255,255,255,.2); }
.pill svg { width: 14px; height: 14px; }
.stars { display: inline-flex; gap: 2px; color: #F5A623; }
.stars svg { width: 16px; height: 16px; fill: currentColor; }

/* ---------- header ---------- */
.topbar { background: var(--blue-900); color: #C9DDEE; font-size: .875rem; }
.topbar .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 38px; }
.topbar a { color: #fff; text-decoration: none; font-weight: 600; }
.topbar .status { display: inline-flex; align-items: center; gap: 8px; }
.status .dot { width: 8px; height: 8px; border-radius: 50%; background: #3DDC97; box-shadow: 0 0 0 3px rgba(61,220,151,.25); flex: none; }
.status .dot.closed { background: #F7B267; box-shadow: 0 0 0 3px rgba(247,178,103,.25); }
.hero .proof .status .txt { color: #fff; font-weight: 600; }
.topbar .gift { display: inline-flex; gap: 8px; align-items: center; }
.topbar .gift svg { width: 16px; height: 16px; }
@media (max-width: 720px) { .topbar .hide-m { display: none; } }
.header { position: sticky; top: 0; z-index: 900; background: rgba(255,255,255,.86); backdrop-filter: saturate(160%) blur(12px); -webkit-backdrop-filter: saturate(160%) blur(12px); border-bottom: 1px solid transparent; transition: box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.header.scrolled { border-color: var(--line); box-shadow: 0 6px 24px rgba(16,35,58,.06); }
.header .wrap-wide { display: flex; align-items: center; gap: 20px; min-height: var(--header-h); position: relative; }
.logo { display: inline-flex; align-items: center; flex: none; }
.logo img { height: 46px; width: auto; }
.nav { display: flex; align-items: center; gap: 4px; padding: 0; margin: 0 0 0 8px; list-style: none; }
.nav > li { position: relative; }
.nav > li.wide { position: static; }
.nav-link { display: inline-flex; align-items: center; gap: 6px; padding: 10px 12px; border-radius: var(--r-sm); font-weight: 600; font-size: .95rem; color: var(--ink); text-decoration: none; background: none; border: 0; }
.nav-link:hover, .nav-link[aria-expanded="true"] { background: var(--blue-50); color: var(--blue-700); }
.nav-link.active { color: var(--blue-600); }
.nav-link svg { width: 14px; height: 14px; transition: transform var(--dur) var(--ease); }
.nav-link[aria-expanded="true"] svg { transform: rotate(180deg); }
.header-cta { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.header-cta .phone { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--ink); text-decoration: none; padding: 8px 12px; border-radius: var(--r-pill); }
.header-cta .phone:hover { background: var(--blue-50); color: var(--blue-700); }
.header-cta .phone svg { width: 18px; height: 18px; color: var(--blue-600); }
.burger { display: none; width: 48px; height: 48px; border-radius: var(--r-sm); border: 1px solid var(--line); background: #fff; align-items: center; justify-content: center; }
.burger svg { width: 22px; height: 22px; }
/* mega menu */
.mega { position: absolute; top: calc(100% + 8px); left: 0; min-width: 320px; background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-3); padding: 22px; opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility var(--dur); z-index: 950; }
.mega.open { opacity: 1; visibility: visible; transform: translateY(0); }
.mega.wide { width: min(1080px, 100%); left: 50%; transform: translate(-50%, 6px); top: calc(var(--header-h) - 6px); max-height: calc(100vh - var(--header-h) - 60px); overflow: auto; }
.mega.wide.open { transform: translate(-50%, 0); }
.mega-cols { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 22px; }
.mega-cols.c3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.mega h4, .mega .mh { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); margin: 0 0 10px; font-weight: 700; }
.mega ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 2px; }
.mega li a { display: block; padding: 5px 10px; border-radius: 8px; color: var(--ink); text-decoration: none; font-size: .92rem; font-weight: 500; }
.mega li a:hover { background: var(--blue-50); color: var(--blue-700); }
.mega li a .n { display: block; }
.mega li a .d { display: block; font-size: .8125rem; color: var(--mist); font-weight: 400; }
.mega li a.hub { font-weight: 700; color: var(--blue-700); }
.mega-feature { background: var(--grad-warm); border-radius: var(--r-md); padding: 18px; display: flex; flex-direction: column; gap: 10px; }
.mega-feature p { margin: 0; font-size: .95rem; color: var(--slate); }
.mega-feature strong { font-family: var(--font-display); font-weight: 700; font-size: 1.1rem; color: var(--ink); }
/* mobile drawer */
.drawer { position: fixed; inset: 0; z-index: 1000; display: none; }
.drawer.open { display: block; }
.drawer .scrim { position: absolute; inset: 0; background: rgba(11,45,79,.55); backdrop-filter: blur(3px); }
.drawer .panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(420px, 92vw); background: #fff; overflow: auto; padding: 18px 20px 120px; transform: translateX(100%); animation: slideIn var(--dur) var(--ease) forwards; }
@keyframes slideIn { to { transform: translateX(0); } }
.drawer .panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.drawer .close { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--line); background: #fff; display: inline-flex; align-items: center; justify-content: center; }
.drawer .close svg { width: 20px; height: 20px; }
.drawer details { border-top: 1px solid var(--line); }
.drawer summary { list-style: none; display: flex; align-items: center; justify-content: space-between; padding: 14px 4px; font-weight: 600; font-size: 1.05rem; cursor: pointer; }
.drawer summary::-webkit-details-marker { display: none; }
.drawer summary svg { width: 18px; height: 18px; transition: transform var(--dur) var(--ease); }
.drawer details[open] summary svg { transform: rotate(180deg); }
.drawer .dl { list-style: none; padding: 0 0 12px; margin: 0; display: grid; gap: 2px; }
.drawer .dl a { display: block; padding: 9px 12px; border-radius: 8px; color: var(--slate); text-decoration: none; font-size: .975rem; }
.drawer .dl a:hover { background: var(--blue-50); color: var(--blue-700); }
.drawer .dl .grp { padding: 10px 12px 4px; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); font-weight: 700; }
.drawer .plain { display: block; padding: 14px 4px; border-top: 1px solid var(--line); font-weight: 600; font-size: 1.05rem; color: var(--ink); text-decoration: none; }
.drawer .drawer-cta { display: grid; gap: 10px; margin-top: 18px; }
@media (max-width: 1080px) { .nav, .header-cta .phone { display: none; } .burger { display: inline-flex; } }
@media (max-width: 520px) { .header-cta .btn { min-height: 42px; padding: 8px 16px; font-size: .9rem; } .logo img { height: 40px; } }
@media (max-width: 360px) { .header .wrap-wide { gap: 10px; } .header-cta { gap: 6px; } .header-cta .btn-cta { padding: 8px 12px 8px 10px; } .header-cta .btn-cta .ic { display: none; } .logo img { height: 34px; } .burger { width: 42px; height: 42px; } }

/* ---------- mobile sticky bar & side tab ---------- */
.mbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 800; display: none; grid-template-columns: 1fr 1.3fr 1.15fr; gap: 6px; padding: 6px 10px calc(6px + env(safe-area-inset-bottom)); background: rgba(255,255,255,.94); backdrop-filter: blur(10px); border-top: 1px solid var(--line); box-shadow: 0 -8px 24px rgba(16,35,58,.08); }
.mbar a { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 40px; border-radius: var(--r-pill); font-weight: 600; font-size: .9375rem; white-space: nowrap; text-decoration: none; color: var(--blue-700); background: var(--blue-50); }
.mbar a.primary { background: var(--blue-600); color: #fff; }
.mbar svg { width: 16px; height: 16px; flex: none; }
@media (max-width: 860px) { .mbar { display: grid; } body { padding-bottom: calc(92px + env(safe-area-inset-bottom)); } }
/* the bar steps aside for anything the visitor is actively using (client review, 2026-09-22) */
.mbar.quiet { transform: translateY(110%); pointer-events: none; }
@media (max-width: 860px) { .form-wizard-wrap, .wrap-narrow form, .frame-hold, #finder { scroll-margin-bottom: 96px; } }
.sidetab { position: fixed; right: 0; top: 50%; transform: translateY(-50%) rotate(180deg); writing-mode: vertical-rl; z-index: 700; background: var(--blue-600); color: #fff; text-decoration: none; font-weight: 700; letter-spacing: .06em; padding: 16px 12px; border-radius: 0 var(--r-md) var(--r-md) 0; box-shadow: var(--sh-2); font-size: .9375rem; }
.sidetab:hover { background: var(--blue-700); color: #fff; }
@media (max-width: 860px) { .sidetab { display: none; } }

/* ---------- hero ---------- */
.hero { position: relative; overflow: hidden; background: var(--blue-900); color: #fff; min-height: 100vh; display: grid; align-items: end; isolation: isolate; } /* the video fills the first viewport top to bottom; the treatment ticker starts below the fold */
@supports (height: 100svh) { .hero { min-height: 100svh; } }
.hero .media { position: absolute; inset: 0; z-index: -2; }
.hero .media img, .hero .media video, .hero .media iframe { width: 100%; height: 100%; object-fit: cover; }
.hero .media img { transition: opacity 900ms var(--ease); }
.hero .media iframe { opacity: 0; transition: opacity 900ms var(--ease); }
.hero.video-on .media img { opacity: 0; }
.hero.video-on .media iframe { opacity: 1; }
.hero .media iframe { position: absolute; top: 50%; left: 50%; width: max(100%, 177.78vh); height: max(100%, 56.25vw); transform: translate(-50%, -50%) scale(1.16); pointer-events: none; }
.hero .veil { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0,0,0,.20) 0%, rgba(0,0,0,.26) 45%, rgba(0,0,0,.72) 100%); }
.hero .wrap { padding-block: clamp(110px, 12vw, 150px) clamp(28px, 4vh, 44px); }
.hero .kicker { color: #C4E6F8; } .hero .kicker::before { background: #C4E6F8; }
.hero h1 { color: #fff; max-width: none; white-space: nowrap; font-size: min(clamp(2.3rem, min(5.2vw, 8.5vh), 4.4rem), calc((100vw - 2 * var(--gutter)) / 11.2)); margin-bottom: .35em; letter-spacing: -.035em; } /* one line on every device: 11.2 = the title's width in em (measured 10.8) + margin */
.hero h1 .hi { color: #BFE6FB; font-weight: 800; }
.hero .lede { color: #DCE8F3; max-width: 56ch; font-size: clamp(1.05rem, min(1.5vw, 2.6vh), 1.3rem); margin-bottom: .6em; }
.hero .proof { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; margin-top: clamp(14px, 2.6vh, 26px); font-size: .92rem; color: #E6F0F8; }
.hero .proof .item { display: inline-flex; align-items: center; gap: 8px; }
.hero .proof svg { width: 18px; height: 18px; color: #7FCBF2; }
.hero .scroll-hint { position: absolute; right: var(--gutter); bottom: 28px; display: inline-flex; flex-direction: column; align-items: center; gap: 6px; color: #C9DDEE; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; }
.hero .scroll-hint span { width: 1px; height: 36px; background: linear-gradient(180deg, #7FCBF2, transparent); animation: drop 1.8s infinite; }
@keyframes drop { 0% { transform: scaleY(0); transform-origin: top; } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
@media (prefers-reduced-motion: reduce) { .hero .scroll-hint span { animation: none; } }
@media (max-width: 860px) { .hero .scroll-hint { display: none; } .hero .wrap { padding-bottom: 24px; } }
@media (max-width: 520px) { .hero .lede { font-size: 1rem; line-height: 1.5; } .hero .btn-lg { min-height: 50px; padding: 12px 22px; } .hero .proof { gap: 6px 16px; font-size: .875rem; } .hero .proof .item:nth-child(n+4) { display: none; } .hero h1 { font-size: calc((100vw - 2 * var(--gutter)) / 11.2); } }
/* page hero (inner pages) */
.phero { position: relative; overflow: hidden; background: var(--blue-50); }
.phero .wrap { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(24px, 4vw, 56px); align-items: center; padding-block: clamp(40px, 6vw, 80px) clamp(36px, 5vw, 64px); }
.phero .copy { position: relative; z-index: 1; }
.phero h1 { max-width: 16ch; }
.phero .lede { margin-top: 8px; }
.phero .visual { position: relative; }
.phero .visual .frame { border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--sh-3); aspect-ratio: 4/3; background: var(--blue-100); }
.phero .visual img { width: 100%; height: 100%; object-fit: cover; }
.phero .visual .float { position: absolute; left: -18px; bottom: 18px; background: #fff; border-radius: var(--r-md); box-shadow: var(--sh-2); padding: 12px 16px; display: flex; align-items: center; gap: 12px; font-size: .9rem; }
.phero .visual .float strong { display: block; font-size: 1.1rem; }
.phero .visual .float > span:first-child { display: inline-flex; width: 40px; height: 40px; flex: none; align-items: center; justify-content: center; border-radius: 12px; background: var(--blue-50); color: var(--blue-700); }
.phero .visual .float > span:first-child svg { width: 22px; height: 22px; }
.phero .blob { position: absolute; width: 520px; height: 520px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, rgba(0,178,255,.18), transparent 60%); right: -160px; top: -200px; pointer-events: none; }
.phero.warm { background: var(--grad-warm); }
.phero.warm .blob { background: radial-gradient(circle at 30% 30%, rgba(5,173,245,.22), transparent 60%); }
.phero.simple .wrap { grid-template-columns: 1fr; padding-block: clamp(36px, 5vw, 64px); }
.phero.simple h1 { max-width: 24ch; }
@media (max-width: 860px) { .phero .wrap { grid-template-columns: 1fr; } .phero .visual .float { left: 12px; } }
.breadcrumbs { font-size: .9375rem; color: var(--mist); margin-bottom: 18px; }
.breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 0; }
.breadcrumbs li + li::before { content: "›"; margin-right: 6px; color: var(--line-2); }
.breadcrumbs a { color: var(--slate); text-decoration: none; }
.breadcrumbs a:hover { color: var(--blue-600); }

/* ---------- facts strip ---------- */
.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(118px, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; margin-top: 28px; }
.facts > div { background: #fff; padding: 14px 16px; }
.facts .l { font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--mist); font-weight: 700; display: block; margin-bottom: 4px; }
.facts .v { font-weight: 600; color: var(--ink); font-size: .975rem; }
@media (max-width: 860px) { .facts { grid-template-columns: repeat(2, minmax(0,1fr)); } .facts > div:last-child:nth-child(odd) { grid-column: span 2; } }
.quick { background: #fff; border: 1px solid var(--blue-100); border-left: 4px solid var(--blue-500); border-radius: var(--r-md); padding: 18px 22px; margin-top: 22px; box-shadow: var(--sh-1); }
.quick .l { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--blue-600); font-weight: 700; display: flex; align-items: center; gap: 6px; margin-bottom: 6px; }
.quick .l svg { width: 14px; height: 14px; }
.quick p { margin: 0; color: var(--ink); font-size: 1rem; }

/* ---------- cards ---------- */
.card { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-1); transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); position: relative; }
.card:hover { transform: translateY(-3px); box-shadow: var(--sh-2); border-color: var(--blue-100); }
a.card, .card a.cover { text-decoration: none; color: inherit; }
.card .cover::after { content: ""; position: absolute; inset: 0; }
.card .body { padding: 20px 22px 22px; }
.card .thumb { aspect-ratio: 4/3; overflow: hidden; border-radius: var(--r-lg) var(--r-lg) 0 0; background: var(--blue-50); }
.card .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--ease); }
.card:hover .thumb img { transform: scale(1.04); }
.card h3 { margin: 0 0 6px; font-size: 1.15rem; }
.card p { margin: 0; color: var(--slate); font-size: 1rem; }
.card .meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.card .flag { position: absolute; top: 14px; left: 14px; z-index: 1; }
.tcard .thumb { aspect-ratio: 5/4; }
.tcard .facts-mini { display: flex; gap: 14px; margin-top: 12px; font-size: .8125rem; color: var(--mist); flex-wrap: wrap; }
.tcard .facts-mini b { color: var(--ink); font-weight: 600; }
.hubcard { display: grid; grid-template-rows: auto 1fr; min-height: 100%; overflow: hidden; }
.hubcard .thumb { aspect-ratio: 16/10; border-radius: 0; }
.hubcard .body { display: flex; flex-direction: column; gap: 8px; }
.hubcard .count { margin-top: auto; padding-top: 10px; font-size: .9375rem; color: var(--blue-600); font-weight: 600; display: inline-flex; gap: 6px; align-items: center; }
.hubcard .count svg { width: 16px; height: 16px; }
.feature { padding: 24px; border-radius: var(--r-lg); background: #fff; border: 1px solid var(--line); }
.feature .ico { width: 48px; height: 48px; border-radius: 14px; background: var(--blue-50); color: var(--blue-600); display: inline-flex; align-items: center; justify-content: center; margin-bottom: 14px; }
.feature .ico svg { width: 24px; height: 24px; }
.feature.warm .ico { background: var(--peach-100); color: var(--peach-700); }
.feature h3 { font-size: 1.1rem; margin-bottom: 6px; }
.feature p { margin: 0; color: var(--slate); font-size: .95rem; }
.bg-navy .feature { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.bg-navy .feature .ico { background: rgba(255,255,255,.12); color: #7FCBF2; }
.bg-navy .feature p { color: #C9DDEE; }
.concern-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; }
.concern { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-radius: var(--r-md); background: #fff; border: 1px solid var(--line); text-decoration: none; color: var(--ink); font-weight: 600; transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.concern:hover { transform: translateY(-2px); box-shadow: var(--sh-2); border-color: var(--peach-200); color: var(--ink); }
.concern .ico { width: 42px; height: 42px; border-radius: 12px; background: var(--peach-100); color: var(--peach-700); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.concern .ico svg { width: 22px; height: 22px; }
.concern small { display: block; font-weight: 400; color: var(--mist); font-size: .8125rem; }
@media (max-width: 960px) { .concern-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 480px) {
  /* stay 2-up and drop to a compact chip: one column made the 16 tiles ~1,300px tall (client review, 2026-09-22) */
  .concern-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .concern { gap: 10px; padding: 10px 12px; font-size: .92rem; line-height: 1.2; }
  .concern .ico { width: 30px; height: 30px; border-radius: 9px; }
  .concern .ico svg { width: 17px; height: 17px; }
  .concern small { display: none; }   /* the “N treatment options” line repeats on every tile at this size */
}

/* ---------- steps / timeline ---------- */
.steps { counter-reset: step; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 18px; position: relative; }
.steps::before { content: ""; position: absolute; left: 6%; right: 6%; top: 28px; height: 2px; background: linear-gradient(90deg, var(--blue-200), var(--peach-200)); }
.step { position: relative; background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px 20px 20px; }
.step .n { counter-increment: step; width: 56px; height: 56px; border-radius: 50%; background: var(--grad-brand); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 1.25rem; display: inline-flex; align-items: center; justify-content: center; margin: -50px 0 14px; box-shadow: var(--sh-blue); border: 4px solid #fff; }
.step .n::before { content: counter(step); }
.step h3 { font-size: 1.05rem; margin-bottom: 6px; }
.step p { margin: 0; color: var(--slate); font-size: .95rem; }
.steps-wrap { padding-top: 40px; }
@media (max-width: 960px) { .steps { grid-template-columns: repeat(2, minmax(0,1fr)); } .steps::before { display: none; } }
@media (max-width: 520px) { .steps { grid-template-columns: 1fr; } }
.timeline { list-style: none; padding: 0; margin: 0; display: grid; gap: 0; }
.timeline li { position: relative; padding: 0 0 26px 40px; }
.timeline li::before { content: ""; position: absolute; left: 11px; top: 26px; bottom: -4px; width: 2px; background: var(--line-2); }
.timeline li:last-child::before { display: none; }
.timeline .dot { position: absolute; left: 0; top: 2px; width: 24px; height: 24px; border-radius: 50%; background: #fff; border: 3px solid var(--blue-500); }
.timeline .dot.warm { border-color: var(--peach-500); }
.timeline .t { font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--blue-600); font-weight: 700; }
.timeline h3 { font-size: 1.05rem; margin: 2px 0 4px; }
.timeline p { margin: 0; color: var(--slate); font-size: .95rem; }

/* ---------- accordion / FAQ ---------- */
.acc { border-top: 1px solid var(--line); }
.acc details { border-bottom: 1px solid var(--line); }
.acc summary { list-style: none; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 18px 4px; cursor: pointer; font-weight: 600; font-size: 1.05rem; color: var(--ink); }
.acc summary::-webkit-details-marker { display: none; }
.acc summary:hover { color: var(--blue-700); }
.acc summary .ic { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--blue-50); color: var(--blue-600); display: inline-flex; align-items: center; justify-content: center; transition: transform var(--dur) var(--ease), background var(--dur) var(--ease); margin-top: -2px; }
.acc summary .ic svg { width: 16px; height: 16px; }
.acc details[open] summary .ic { transform: rotate(45deg); background: var(--blue-600); color: #fff; }
.acc .a { padding: 0 44px 20px 4px; color: var(--slate); }
.acc .a p:last-child { margin-bottom: 0; }
.acc .a ul { margin-top: .5em; }
.helpful { display: flex; align-items: center; gap: 8px; font-size: .8125rem; color: var(--mist); margin-top: 12px; }
.helpful button { border: 1px solid var(--line); background: #fff; border-radius: var(--r-pill); padding: 4px 12px; font-size: .8125rem; color: var(--slate); }
.helpful button:hover, .helpful button.on { background: var(--blue-50); border-color: var(--blue-200); color: var(--blue-700); }
.faq-layout { display: grid; grid-template-columns: .9fr 1.4fr; gap: clamp(24px, 4vw, 64px); align-items: start; }
.faq-layout .sticky { position: sticky; top: calc(var(--header-h) + 24px); }
@media (max-width: 860px) { .faq-layout { grid-template-columns: 1fr; } .faq-layout .sticky { position: static; } }
.faq-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.faq-nav a { text-decoration: none; }
.faq-nav a.pill.on { background: var(--blue-600); color: #fff; border-color: var(--blue-600); }
.faq-search { position: relative; margin-bottom: 18px; }
.faq-search input { width: 100%; min-height: 52px; padding: 12px 16px 12px 46px; border: 1px solid var(--line-2); border-radius: var(--r-pill); font: inherit; font-size: 1rem; background: #fff; }
.faq-search input:focus { border-color: var(--blue-500); outline: none; box-shadow: 0 0 0 4px var(--blue-100); }
.faq-search svg { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; color: var(--mist); }
.faq-group { margin-bottom: 36px; }
.faq-group h2 { font-size: 1.6rem; margin-bottom: 8px; }
.faq-empty { display: none; padding: 24px; text-align: center; color: var(--slate); background: var(--cloud); border-radius: var(--r-md); }

/* ---------- reviews ---------- */
.rev-head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 28px; }
.rating-big { display: flex; align-items: center; gap: 16px; }
.rating-big .num { font-family: var(--font-display); font-weight: 800; font-size: 3rem; line-height: 1; color: var(--ink); letter-spacing: -.03em; }
.rating-big .stars svg { width: 20px; height: 20px; }
.rating-big small { display: block; color: var(--slate); font-size: .9rem; margin-top: 4px; }
.reviews { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.review { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; display: flex; flex-direction: column; gap: 12px; }
.review .who { display: flex; align-items: center; gap: 12px; }
.review .who img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; background: var(--blue-50); }
.review .who .av { width: 44px; height: 44px; border-radius: 50%; background: var(--grad-brand); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; }
.review .who strong { display: block; font-size: .95rem; }
.review .who small { color: var(--mist); font-size: .8125rem; }
.review q { quotes: none; color: var(--slate); font-size: .975rem; }
.review .more { display: none; }
.review.open .more { display: inline; }
.review .toggle { align-self: flex-start; background: none; border: 0; color: var(--blue-600); font-weight: 600; padding: 0; font-size: .875rem; }
.bg-navy .review { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.bg-navy .review q { color: #DCE8F3; }
.bg-navy .review .who strong { color: #fff; }
@media (max-width: 960px) { .reviews { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 640px) { .reviews { grid-template-columns: 1fr; } }
.scroller { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px 4px 18px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.scroller > * { flex: 0 0 min(360px, 84vw); scroll-snap-align: start; }
.scroller-nav { display: flex; gap: 8px; }
.scroller-nav button { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--line-2); background: #fff; display: inline-flex; align-items: center; justify-content: center; color: var(--ink); }
.scroller-nav button:hover { background: var(--blue-50); border-color: var(--blue-200); color: var(--blue-700); }
.scroller-nav svg { width: 18px; height: 18px; }
.gbadge { display: inline-flex; align-items: center; gap: 10px; background: #fff; border: 1px solid var(--line); border-radius: var(--r-pill); padding: 8px 16px 8px 10px; box-shadow: var(--sh-1); text-decoration: none; color: var(--ink); font-size: .9rem; }
.gbadge img, .gbadge svg { width: 22px; height: 22px; }
.gbadge b { font-weight: 700; }
.gbadge:hover { border-color: var(--blue-200); }

/* ---------- before / after ---------- */
.ba { position: relative; aspect-ratio: 1/1; border-radius: var(--r-lg); overflow: hidden; background: var(--blue-50); user-select: none; touch-action: pan-y; }
.ba img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ba .after { clip-path: inset(0 0 0 50%); }
.ba .handle { 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,.15); }
.ba .knob { position: absolute; top: 50%; left: 50%; width: 44px; height: 44px; transform: translate(-50%, -50%); border-radius: 50%; background: #fff; box-shadow: var(--sh-2); display: flex; align-items: center; justify-content: center; color: var(--blue-700); }
.ba .knob svg { width: 22px; height: 22px; }
.ba input[type=range] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; margin: 0; cursor: ew-resize; }
.ba .lbl { position: absolute; bottom: 12px; padding: 4px 10px; border-radius: var(--r-pill); background: rgba(16,35,58,.7); color: #fff; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; pointer-events: none; }
.ba .lbl.b { left: 12px; } .ba .lbl.a { right: 12px; }
.ba-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; }
.ba-fig { margin: 0; }
@media (max-width: 720px) { .ba-grid { grid-template-columns: 1fr !important; } }
.gallery { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; }
.gallery figure { margin: 0; border-radius: var(--r-md); overflow: hidden; background: var(--blue-50); aspect-ratio: 4/3; position: relative; }
.gallery figure img { width: 100%; height: 100%; object-fit: cover; transition: transform 600ms var(--ease); }
.gallery figure:hover img { transform: scale(1.03); }
.gallery figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 12px; background: linear-gradient(0deg, rgba(16,35,58,.75), transparent); color: #fff; font-size: .9375rem; }
.gallery.tall figure { aspect-ratio: 3/4; }
@media (max-width: 720px) { .gallery { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* ---------- video ---------- */
.vgrid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
.vcard { position: relative; aspect-ratio: 9/16; border-radius: var(--r-lg); overflow: hidden; background: var(--blue-900); }
.vcard video, .vcard img { width: 100%; height: 100%; object-fit: cover; }
.vcard video { display: none; }
.vcard.playing video { display: block; } .vcard.playing img, .vcard.playing .play { display: none; }
.vcard .play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: linear-gradient(0deg, rgba(11,45,79,.6), transparent 55%); border: 0; color: #fff; padding: 0; }
.vcard .play span { width: 64px; height: 64px; border-radius: 50%; background: rgba(255,255,255,.92); color: var(--blue-700); display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--sh-2); transition: transform var(--dur) var(--ease); }
.vcard .play:hover span { transform: scale(1.06); }
.vcard .play svg { width: 26px; height: 26px; margin-left: 3px; }
.vcard .cap { position: absolute; left: 12px; right: 12px; bottom: 12px; color: #fff; font-size: .9375rem; font-weight: 600; text-shadow: 0 1px 3px rgba(0,0,0,.4); pointer-events: none; }
.vcard.landscape { aspect-ratio: 16/10; }
.vcard.square { aspect-ratio: 1/1; }
@media (max-width: 960px) { .vgrid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.vwall { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 14px; }
@media (max-width: 960px) { .vwall { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 520px) { .vwall, .vgrid { grid-template-columns: 1fr 1fr; } }

/* ---------- finder quiz ---------- */
.finder { background: #fff; border-radius: var(--r-xl); box-shadow: var(--sh-3); border: 1px solid var(--line); overflow: hidden; }
.finder .head { padding: 26px 28px 0; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.finder .prog { display: flex; gap: 6px; }
.finder .prog i { width: 34px; height: 6px; border-radius: 3px; background: var(--line); }
.finder .prog i.on { background: var(--grad-brand); }
.finder .pane { padding: 20px 28px 28px; display: none; }
.finder .pane.on { display: block; }
.finder h3 { font-family: var(--font-display); font-weight: 700; font-size: 1.4rem; margin-bottom: 14px; }
.chips { display: flex; flex-wrap: wrap; gap: 10px; }
.chip { display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; border-radius: var(--r-pill); border: 1.5px solid var(--line-2); background: #fff; color: var(--ink); font-weight: 600; font-size: .95rem; transition: all var(--dur) var(--ease); min-height: 44px; }
.chip:hover { border-color: var(--blue-300); background: var(--blue-50); }
.chip.on, .chip[aria-pressed="true"] { border-color: var(--blue-600); background: var(--blue-600); color: #fff; }
.chip svg { width: 18px; height: 18px; }
.finder .foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 22px; flex-wrap: wrap; }
.finder .result { display: grid; gap: 12px; }
.finder .rcard { display: grid; grid-template-columns: 96px 1fr auto; gap: 16px; align-items: center; padding: 14px; border: 1px solid var(--line); border-radius: var(--r-md); text-decoration: none; color: inherit; transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.finder .rcard:hover { border-color: var(--blue-200); box-shadow: var(--sh-2); }
.finder .rcard img { width: 96px; height: 76px; object-fit: cover; border-radius: 10px; }
.finder .rcard strong { display: block; font-size: 1.05rem; }
.finder .rcard small { color: var(--slate); }
.finder .rcard .go { color: var(--blue-600); font-weight: 600; white-space: nowrap; }
@media (max-width: 560px) { .finder .rcard { grid-template-columns: 72px 1fr; } .finder .rcard img { width: 72px; height: 60px; } .finder .rcard .go { display: none; } }

/* ---------- calculator ---------- */
.calc { background: var(--blue-900); color: #fff; border-radius: var(--r-xl); padding: clamp(24px, 4vw, 44px); display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(24px, 4vw, 48px); align-items: center; }
.calc h2, .calc h3 { color: #fff; }
.calc p { color: #C9DDEE; }
.calc label { display: block; font-weight: 600; margin: 14px 0 8px; font-size: .95rem; color: #E6F0F8; }
.calc .seg { display: flex; flex-wrap: wrap; gap: 8px; }
.calc .seg button { padding: 9px 14px; border-radius: var(--r-pill); border: 1.5px solid rgba(255,255,255,.3); background: transparent; color: #fff; font-weight: 600; font-size: .9rem; min-height: 42px; }
.calc .seg button.on { background: #fff; color: var(--blue-800); border-color: #fff; }
.calc input[type=range] { width: 100%; accent-color: var(--cyan); }
.calc .out { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); border-radius: var(--r-lg); padding: 24px; }
.calc .out .row { display: flex; justify-content: space-between; align-items: baseline; padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.12); gap: 12px; }
.calc .out .row:last-of-type { border-bottom: 0; }
.calc .out .k { color: #C9DDEE; font-size: .95rem; }
.calc .out .v { font-family: var(--font-display); font-weight: 700; font-size: 1.45rem; letter-spacing: -.02em; }
.calc .out .v.big { font-size: 2.4rem; color: #BFE6FB; }
.calc .note { font-size: .8125rem; color: #9DB8D1; margin-top: 12px; }
@media (max-width: 860px) { .calc { grid-template-columns: 1fr; } }
.planner { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; box-shadow: var(--sh-1); }
.planner .row { display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; }
.planner .date { font-family: var(--font-display); font-weight: 800; font-size: 1.35rem; color: var(--blue-700); letter-spacing: -.02em; }
.planner input[type=range] { width: 100%; accent-color: var(--blue-600); }

/* ---------- promos / pricing ---------- */
.price-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; }
.price { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px; display: flex; flex-direction: column; gap: 10px; position: relative; }
.price.hot { border-color: var(--peach-300); box-shadow: 0 0 0 4px var(--peach-50), var(--sh-2); }
.price .tag { position: absolute; top: -12px; left: 20px; }
.price h3 { font-size: 1.2rem; margin: 0; }
.price .amt { font-family: var(--font-display); font-weight: 800; font-size: 2.2rem; line-height: 1; color: var(--ink); letter-spacing: -.03em; }
.price .amt small { font-family: var(--font-body); font-size: .9rem; color: var(--mist); }
.price ul { list-style: none; padding: 0; margin: 4px 0 0; display: grid; gap: 8px; }
.price li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 10px; font-size: .95rem; color: var(--slate); border-bottom: 1px dashed var(--line); padding-bottom: 8px; }
/* a long membership tier label beside a nowrap price pushed the card past the viewport at 768px */
.price li > :first-child, .price li { min-width: 0; }
.price li:not(:has(b)) { display: block; }
.price li b { color: var(--ink); white-space: nowrap; }
.price .btn { margin-top: auto; }
@media (max-width: 860px) { .price-grid { grid-template-columns: 1fr; } }
.tiers { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; align-items: stretch; }
.tier { background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl); overflow: hidden; display: flex; flex-direction: column; }
.tier.hot { border-color: var(--blue-300); box-shadow: var(--sh-3); transform: translateY(-6px); }
.tier .thumb { aspect-ratio: 16/9; overflow: hidden; }
.tier .thumb img { width: 100%; height: 100%; object-fit: cover; }
.tier .body { padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.tier .amt { font-family: var(--font-display); font-weight: 800; font-size: 2rem; letter-spacing: -.03em; }
.tier .amt small { font-family: var(--font-body); font-size: .9rem; color: var(--mist); }
.tier .btn { margin-top: auto; }
@media (max-width: 960px) { .tiers { grid-template-columns: 1fr; } .tier.hot { transform: none; } }
.countdown { display: inline-flex; gap: 8px; align-items: center; }
.countdown b { display: inline-flex; flex-direction: column; align-items: center; min-width: 52px; padding: 8px 6px; border-radius: 10px; background: var(--blue-900); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 1.25rem; line-height: 1; }
.countdown b small { font-family: var(--font-body); font-size: .65rem; letter-spacing: .08em; text-transform: uppercase; color: #9DB8D1; margin-top: 4px; }

/* ---------- CTA bands ---------- */
.cta-band { position: relative; overflow: hidden; border-radius: var(--r-xl); background: var(--grad-brand); color: #fff; padding: clamp(32px, 5vw, 64px); display: grid; grid-template-columns: 1.3fr .7fr; gap: 32px; align-items: center; }
.cta-band h2 { color: #fff; margin-bottom: 8px; }
.cta-band p { color: #E6F0F8; max-width: 52ch; }
.cta-band .btn-row { justify-content: flex-end; }
.cta-band::after { content: ""; position: absolute; width: 380px; height: 380px; right: -120px; bottom: -200px; border-radius: 50%; background: rgba(255,255,255,.12); }
.cta-band.warm { background: var(--grad-warm); color: var(--ink); }
.cta-band.warm h2 { color: var(--ink); } .cta-band.warm p { color: var(--slate); }
.cta-band.warm::after { background: rgba(5,173,245,.14); }
@media (max-width: 860px) { .cta-band { grid-template-columns: 1fr; } .cta-band .btn-row { justify-content: flex-start; } }
.book-panel { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
.book-panel .widget { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-2); overflow: hidden; min-height: 620px; }
.book-panel iframe { width: 100%; height: 100%; min-height: 620px; border: 0; }
.book-panel .alt { display: grid; gap: 12px; margin-top: 18px; }
.book-panel .alt a { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--r-md); text-decoration: none; color: var(--ink); }
.book-panel .alt a:hover { border-color: var(--blue-200); background: var(--blue-50); }
.book-panel .alt svg { width: 22px; height: 22px; color: var(--blue-600); flex: none; }
.book-panel .alt strong { display: block; }
.book-panel .alt small { color: var(--slate); }
@media (max-width: 860px) { .book-panel { grid-template-columns: 1fr; } }
.choice { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; }
.choice a { display: flex; flex-direction: column; gap: 10px; padding: 28px; border-radius: var(--r-lg); border: 2px solid var(--line); text-decoration: none; color: var(--ink); background: #fff; transition: all var(--dur) var(--ease); }
.choice a:hover { border-color: var(--blue-500); box-shadow: var(--sh-2); transform: translateY(-2px); }
.choice a .ico { width: 52px; height: 52px; border-radius: 16px; background: var(--blue-50); color: var(--blue-600); display: inline-flex; align-items: center; justify-content: center; }
.choice a .ico svg { width: 26px; height: 26px; }
.choice a strong { font-size: 1.2rem; font-family: var(--font-display); font-weight: 700; }
.choice a span { color: var(--slate); }
.choice a .go { color: var(--blue-600); font-weight: 600; margin-top: auto; }
@media (max-width: 720px) { .choice { grid-template-columns: 1fr; } }

/* ---------- forms ---------- */
.form { display: grid; gap: 18px; }
.form fieldset { border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px 22px 24px; margin: 0; display: grid; gap: 14px; background: #fff; }
.form legend { padding: 0 8px; font-weight: 700; color: var(--blue-700); font-size: .95rem; }
.field { display: grid; gap: 6px; }
.field label { font-weight: 600; font-size: .95rem; }
.field .hint { font-size: .9375rem; color: var(--mist); }
.field input, .field select, .field textarea { width: 100%; min-height: 48px; padding: 10px 14px; border: 1px solid var(--line-2); border-radius: var(--r-sm); font: inherit; font-size: 1rem; background: #fff; color: var(--ink); }
.field textarea { min-height: 120px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--blue-500); box-shadow: 0 0 0 4px var(--blue-100); }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: #C2410C; }
.field .err { display: none; color: #B42318; font-size: .9375rem; }
.field.invalid .err { display: block; }
.req::after { content: " *"; color: var(--peach-700); }
.opts { display: flex; flex-wrap: wrap; gap: 10px; }
.opts label { display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border: 1px solid var(--line-2); border-radius: var(--r-pill); cursor: pointer; font-weight: 500; min-height: 44px; }
.opts label:has(input:checked) { background: var(--blue-50); border-color: var(--blue-500); color: var(--blue-800); }
.opts input { accent-color: var(--blue-600); width: 18px; height: 18px; }
.form-row { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
@media (max-width: 640px) { .form-row { grid-template-columns: 1fr; } }
.form .actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.form .status { display: none; padding: 14px 16px; border-radius: var(--r-md); font-weight: 600; }
.form .status.ok { display: block; background: var(--success-bg); color: var(--success); }
.form .status.bad { display: block; background: #FEE4E2; color: #B42318; }
.notice { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--r-md); background: var(--warn-bg); color: #7C3D0A; font-size: .95rem; }
.notice svg { width: 20px; height: 20px; flex: none; margin-top: 2px; }
.notice.info { background: var(--blue-50); color: var(--blue-800); }
.sig { display: block; width: 100%; max-width: 560px; border: 1px dashed var(--line-2); border-radius: var(--r-md); height: 140px; background: #fff; touch-action: none; cursor: crosshair; }

/* ---------- blog ---------- */
.post-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 22px; }
@media (max-width: 960px) { .post-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 640px) { .post-grid { grid-template-columns: 1fr; } }
.pcard .thumb { aspect-ratio: 16/10; }
.pcard .date { font-size: .8125rem; color: var(--mist); }
.pcard h3 { font-size: 1.1rem; line-height: 1.35; }
.pcard .excerpt { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.post-hero { background: var(--blue-50); }
.post-hero .wrap-narrow { padding-block: clamp(36px, 5vw, 64px) 24px; }
.post-hero h1 { font-size: clamp(1.8rem, 3.2vw, 2.8rem); max-width: 24ch; }
.post-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; color: var(--slate); font-size: .9rem; margin-top: 12px; }
.post-meta .author { display: inline-flex; align-items: center; gap: 8px; }
.post-meta span { display: inline-flex; align-items: center; gap: 6px; }
.post-meta svg { width: 16px; height: 16px; }
.post-meta .author i { width: 28px; height: 28px; border-radius: 50%; background: var(--grad-brand); display: inline-block; }
.post-fig { margin: 0; }
.post-fig img { border-radius: var(--r-xl); aspect-ratio: 16/8; object-fit: cover; width: 100%; box-shadow: var(--sh-2); }
.progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; background: var(--grad-brand); z-index: 1100; transition: width 80ms linear; }
.author-box { display: flex; gap: 16px; align-items: center; padding: 20px; border: 1px solid var(--line); border-radius: var(--r-lg); background: #fff; }
.author-box .av { width: 56px; height: 56px; border-radius: 50%; background: var(--grad-brand); flex: none; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 1.2rem; }
.author-box p { margin: 0; color: var(--slate); font-size: .9rem; }
.cat-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 28px; }
.cat-nav a { text-decoration: none; }
.cat-nav a.pill.on { background: var(--blue-600); color: #fff; border-color: var(--blue-600); }
.pagination { display: flex; justify-content: center; gap: 8px; margin-top: 36px; }
.pagination a, .pagination span { min-width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--r-pill); border: 1px solid var(--line-2); text-decoration: none; color: var(--ink); font-weight: 600; padding: 0 12px; }
.pagination .on { background: var(--blue-600); color: #fff; border-color: var(--blue-600); }

/* ---------- misc blocks ---------- */
.stat-row { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 16px; }
.stat { text-align: center; padding: 22px 12px; border-radius: var(--r-lg); background: #fff; border: 1px solid var(--line); }
.stat .n { font-family: var(--font-display); font-weight: 800; font-size: clamp(1.9rem, 3.2vw, 2.6rem); color: var(--blue-700); line-height: 1; letter-spacing: -.03em; }
.stat .n small { font-size: 55%; }
.stat .l { font-size: .9rem; color: var(--slate); margin-top: 6px; }
.bg-navy .stat { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.bg-navy .stat .n { color: #fff; } .bg-navy .stat .l { color: #C9DDEE; }
@media (max-width: 720px) { .stat-row { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.compare { width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; font-size: .95rem; }
.compare th, .compare td { padding: 14px 16px; text-align: left; border-bottom: 1px solid var(--line); }
.compare th { background: var(--cloud); font-weight: 700; }
.compare tr:last-child td { border-bottom: 0; }
.compare td.win { background: var(--success-bg); color: var(--success); font-weight: 600; }
.compare td.lose { color: var(--slate); }
.marquee { overflow: hidden; border-block: 1px solid var(--line); padding: 16px 0; background: #fff; min-height: 58px; display: flex; align-items: center; }
@media (max-width: 860px) { .marquee { min-height: 52px; padding: 13px 0; } }
.marquee .track { display: flex; gap: 40px; width: max-content; animation: marquee 40s linear infinite; }
.marquee .set { display: flex; gap: 40px; }
.marquee .track span { display: inline-flex; align-items: center; gap: 10px; font-weight: 600; color: var(--slate); white-space: nowrap; font-size: .95rem; }
.marquee .track span::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--cyan); }
@keyframes marquee { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) and (max-width: 640px) { .marquee { display: none; } }
@media (prefers-reduced-motion: reduce) { .marquee .track { animation: none; width: auto; overflow: hidden; } .marquee .set:nth-child(2) { display: none; } .marquee .set { flex-wrap: wrap; gap: 10px 32px; justify-content: center; } }
.imgcard { position: relative; border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 4/5; background: var(--blue-100); }
.imgcard img { width: 100%; height: 100%; object-fit: cover; }
.imgcard .over { position: absolute; left: 16px; right: 16px; bottom: 16px; background: rgba(255,255,255,.92); backdrop-filter: blur(6px); border-radius: var(--r-md); padding: 14px 16px; font-size: .9rem; box-shadow: var(--sh-2); }
.imgcard .over strong { display: block; font-size: 1.05rem; }
.two-col { columns: 2; column-gap: 32px; }
@media (max-width: 720px) { .two-col { columns: 1; } }
.local-strip { display: grid; grid-template-columns: 1.2fr .8fr; gap: 24px; align-items: stretch; }
.local-strip .map { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); min-height: 320px; }
.local-strip iframe { width: 100%; height: 100%; min-height: 320px; border: 0; }
.local-strip .info { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px; display: grid; gap: 14px; align-content: start; }
.local-strip .info .row { display: flex; gap: 12px; align-items: flex-start; }
.local-strip .info svg { width: 20px; height: 20px; color: var(--blue-600); flex: none; margin-top: 3px; }
.local-strip .info a { text-decoration: none; font-weight: 600; }
@media (max-width: 860px) { .local-strip { grid-template-columns: 1fr; } }
.hours { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; font-size: .95rem; }
.hours li { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px dashed var(--line); padding-bottom: 6px; }
.hours li.today { color: var(--blue-700); font-weight: 700; }
.areas { display: flex; flex-wrap: wrap; gap: 8px; }
.areas a { text-decoration: none; }
.tagline-band { text-align: center; padding-block: clamp(40px, 6vw, 72px); }
.tagline-band blockquote { margin: 0 auto; max-width: 30ch; font-family: var(--font-display); font-weight: 700; font-size: clamp(1.45rem, 2.6vw, 2.1rem); line-height: 1.25; color: var(--ink); letter-spacing: -.02em; }
.tagline-band cite { display: block; margin-top: 14px; font-style: normal; font-family: var(--font-body); font-size: .9rem; color: var(--slate); }
.search-box { position: relative; }
.search-box input { width: 100%; min-height: 56px; padding: 14px 18px 14px 52px; border: 1px solid var(--line-2); border-radius: var(--r-pill); font: inherit; font-size: 1.05rem; }
.search-box svg { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; color: var(--mist); }
.search-results { display: grid; gap: 10px; margin-top: 22px; }
.search-results a { display: block; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--r-md); text-decoration: none; color: inherit; }
.search-results a:hover { border-color: var(--blue-200); background: var(--blue-50); }
.search-results strong { display: block; }
.search-results small { color: var(--slate); }
.search-results .type { float: right; }

/* ---------- footer ---------- */
.footer { background: var(--blue-900); color: #C9DDEE; margin-top: 0; }
.footer .top { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr 1.1fr; gap: 32px; padding-block: clamp(48px, 6vw, 72px) 40px; }
.footer h4, .footer .fh { color: #fff; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; margin-bottom: 14px; font-weight: 700; }
.footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
.footer a { color: #C9DDEE; text-decoration: none; font-size: .95rem; }
.footer a:hover { color: #fff; }
.footer .brand img { height: 54px; width: auto; }
.footer .brand p { font-size: .95rem; max-width: 34ch; margin-top: 14px; }
.footer .social { display: flex; gap: 10px; margin-top: 16px; }
.footer .social a { width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,.2); display: inline-flex; align-items: center; justify-content: center; }
.footer .social a:hover { background: rgba(255,255,255,.1); }
.footer .social svg { width: 18px; height: 18px; }
.footer .contact li { display: flex; gap: 10px; align-items: flex-start; }
.footer .contact svg { width: 18px; height: 18px; flex: none; margin-top: 3px; color: #7FCBF2; }
.footer .bottom { border-top: 1px solid rgba(255,255,255,.12); padding: 20px 0 calc(20px + env(safe-area-inset-bottom)); display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; font-size: .9375rem; color: #9DB8D1; }
.footer .bottom ul { display: flex; flex-wrap: wrap; gap: 16px; }
.footer .bottom a { font-size: .9375rem; }
@media (max-width: 1080px) { .footer .top { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) { .footer .top { grid-template-columns: 1fr; } }

/* ---------- reveal ---------- */
.reveal { opacity: 0; transform: translateY(8px); transition: opacity 280ms var(--ease), transform 280ms var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.reveal-stagger > * { opacity: 0; transform: translateY(8px); transition: opacity 260ms var(--ease), transform 260ms var(--ease); }
.reveal-stagger.in > * { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal, .reveal-stagger > * { opacity: 1; transform: none; transition: none; } }
.no-js .reveal, .no-js .reveal-stagger > * { opacity: 1; transform: none; }

/* ---------- utilities ---------- */
.mt-0 { margin-top: 0; } .mt-1 { margin-top: 8px; } .mt-2 { margin-top: 16px; } .mt-3 { margin-top: 24px; } .mt-4 { margin-top: 36px; } .mt-5 { margin-top: 56px; }
.mb-0 { margin-bottom: 0; } .mb-2 { margin-bottom: 16px; } .mb-3 { margin-bottom: 24px; }
.text-center { text-align: center; }
.hidden { display: none !important; }
.ratio-43 { aspect-ratio: 4/3; } .rounded { border-radius: var(--r-xl); overflow: hidden; }
.shadow { box-shadow: var(--sh-3); }
.divider { height: 1px; background: var(--line); border: 0; margin: 0; }
@media print { .header, .topbar, .mbar, .sidetab, .footer, .cta-band, .btn { display: none !important; } body { padding: 0; } }

/* ==========================================================================
   Transparent overlay header
   The header floats over the page hero (transparent), then turns solid white
   as soon as the page scrolls. Homepage (dark video hero) uses white text and
   the light logo; inner pages keep dark text over their light hero tints.
   ========================================================================== */
.hdr-overlay .header { background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; border-bottom-color: transparent; transition: background-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.hdr-overlay .header.scrolled, .hdr-overlay .header.menu-open { background: rgba(255,255,255,.9); border-color: var(--line); }
.hdr-overlay .header.menu-open { backdrop-filter: saturate(160%) blur(12px); -webkit-backdrop-filter: saturate(160%) blur(12px); }
/* pull the first hero under the header so the transparency shows something */
.hdr-overlay main > .hero, .hdr-overlay main > .phero, .hdr-overlay main > .post-hero { margin-top: calc(-1 * var(--header-h)); padding-top: var(--header-h); }
.hdr-overlay main > .hero .wrap { padding-top: calc(var(--header-h) + clamp(16px, 4vh, 40px)); }
@media (max-height: 760px) and (min-width: 861px) { .hero .btn-lg { min-height: 50px; padding: 12px 24px; } .hero .lede { max-width: 60ch; } }
/* logo swap */
/* one brand logo everywhere; on dark surfaces it sits on a light plate so the blue wordmark keeps contrast (2.79:1 on the navy footer without it) */
/* no plate behind the logo: the reversed mark below carries the dark surfaces instead */
.logo-light { display: none; } /* revealed only inside .logo, below; a stray copy must never take layout space */
.header.on-dark:not(.menu-open) .logo .logo-dark { display: none; }
.header.on-dark:not(.menu-open) .logo .logo-light { display: block; }
.footer .flogo { display: inline-block; width: fit-content; line-height: 0; } /* .brand is a grid container, which blockifies inline-block — fit-content keeps the plate hugging the logo */
/* white nav over the dark hero */
.header.on-dark:not(.scrolled):not(.menu-open) .nav-link { color: #fff; text-shadow: 0 1px 2px rgba(11,45,79,.35); }
.header.on-dark:not(.scrolled):not(.menu-open) .nav-link:hover, .header.on-dark:not(.scrolled):not(.menu-open) .nav-link[aria-expanded="true"] { background: rgba(255,255,255,.14); color: #fff; }
.header.on-dark:not(.scrolled):not(.menu-open) .nav-link.active { color: #BFE6FB; }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .phone { color: #fff; text-shadow: 0 1px 2px rgba(11,45,79,.35); }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .phone svg { color: #9DD9F5; }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .phone:hover { background: rgba(255,255,255,.14); color: #fff; }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .btn { --bg: #fff; --fg: var(--blue-700); }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .btn:hover { --bg: var(--blue-50); color: var(--blue-800); box-shadow: 0 10px 24px rgba(0,0,0,.25); }
.header.on-dark:not(.scrolled):not(.menu-open) .burger { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.35); color: #fff; }
.header.on-dark:not(.scrolled):not(.menu-open) :focus-visible { outline-color: #fff; }
/* stronger scrim at the top of the video hero so white nav text always passes contrast */
.hdr-overlay .hero .veil { background: linear-gradient(180deg, rgba(0,0,0,.44) 0%, rgba(0,0,0,.20) 24%, rgba(0,0,0,.34) 52%, rgba(0,0,0,.64) 74%, rgba(0,0,0,.80) 100%); }
/* the headline sits over changing video frames; contrast comes from the veil's lower band alone — a panel behind the
   text drew visible rectangle edges over the footage (client feedback, 2026-09-22) */
.hero .wrap { position: relative; }
/* hero video control: bottom corner, out of the way of faces and the headline */
.vctl { position: absolute; right: var(--gutter); bottom: 96px; z-index: 3; display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 14px; border-radius: var(--r-pill); border: 1px solid rgba(255,255,255,.34); background: rgba(11,45,79,.46); backdrop-filter: blur(6px); color: #fff; font: inherit; font-size: .8125rem; font-weight: 600; cursor: pointer; }
.vctl:hover { background: rgba(11,45,79,.66); }
.vctl .ic { width: 12px; height: 14px; flex: none; background: currentColor; clip-path: polygon(0 0, 35% 0, 35% 100%, 0 100%, 0 0, 65% 0, 100% 0, 100% 100%, 65% 100%, 65% 0); }
.vctl[aria-pressed="true"] .ic { clip-path: polygon(0 0, 100% 50%, 0 100%); }
/* the label is hidden on phones, so the button is sized as a 44×44 target and named by aria-label */
@media (max-width: 860px) { .vctl { bottom: 84px; min-height: 44px; min-width: 44px; padding: 0 14px; justify-content: center; } .vctl .t { display: none; } }
@media (prefers-reduced-motion: reduce) { .vctl { display: none; } }
/* no JS → never leave a transparent bar over scrolled content */
.no-js .header { background: rgba(255,255,255,.96) !important; border-color: var(--line) !important; }
.no-js .header.on-dark .logo { background: none; padding: 0; } /* header is forced solid white above, so the logo needs no plate */
.no-js .header.on-dark .nav-link, .no-js .header.on-dark .header-cta .phone { color: var(--ink); text-shadow: none; }
@media (prefers-reduced-motion: reduce) { .hdr-overlay .header { transition: none; } }

/* ==========================================================================
   Polish pass 3 — header controls, hero rows, Google reviews, video wall,
   steps, calculator, promos, partners, contact tiles, blog hero, Book Now.
   ========================================================================== */
/* --- header: attractive Book Now + animated menu toggle --- */
.btn-cta { --bg: linear-gradient(135deg, #1870B0 0%, #1B8FD6 55%, #00B2FF 100%); position: relative; overflow: hidden; gap: 8px; padding: 12px 22px 12px 16px; background: var(--bg); box-shadow: 0 8px 20px rgba(24,112,176,.28), inset 0 1px 0 rgba(255,255,255,.25); border: 0; }
.btn-cta .ic { display: inline-flex; width: 28px; height: 28px; border-radius: 50%; background: rgba(255,255,255,.18); align-items: center; justify-content: center; }
.btn-cta .ic svg { width: 15px; height: 15px; }
.btn-cta .shine { position: absolute; top: -40%; left: -60%; width: 40%; height: 180%; background: linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent); transform: skewX(-20deg); transition: left 700ms var(--ease); }
.btn-cta:hover { transform: translateY(-1px); box-shadow: 0 12px 28px rgba(24,112,176,.38), inset 0 1px 0 rgba(255,255,255,.25); color: #fff; }
.btn-cta:hover .shine { left: 130%; }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .btn-cta { --bg: #fff; color: var(--blue-700); box-shadow: 0 10px 24px rgba(0,0,0,.28); }
.header.on-dark:not(.scrolled):not(.menu-open) .header-cta .btn-cta .ic { background: var(--blue-50); color: var(--blue-700); }
.burger { width: 48px; height: 48px; border-radius: 14px; border: 1px solid var(--blue-100); background: var(--blue-50); color: var(--blue-700); position: relative; transition: background var(--dur) var(--ease), transform var(--dur) var(--ease); }
.burger:hover { background: var(--blue-100); }
.burger:active { transform: scale(.96); }
.burger .lines { position: absolute; inset: 0; display: block; }
.burger .lines i { position: absolute; left: 14px; right: 14px; height: 2.5px; border-radius: 2px; background: currentColor; transition: transform var(--dur) var(--ease), opacity var(--dur) var(--ease), width var(--dur) var(--ease); }
.burger .lines i:nth-child(1) { top: 16px; } .burger .lines i:nth-child(2) { top: 23px; right: 20px; } .burger .lines i:nth-child(3) { top: 30px; }
.burger[aria-expanded="true"] .lines i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.burger[aria-expanded="true"] .lines i:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] .lines i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.header.on-dark:not(.scrolled):not(.menu-open) .burger { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.35); color: #fff; }
@media (max-width: 520px) { .header-cta .btn-cta { min-height: 42px; padding: 8px 16px 8px 12px; font-size: .9rem; } .header-cta .btn-cta .ic { width: 24px; height: 24px; } }

/* --- home hero: centred + compact on mobile (the YouTube frame plays on phones too — it covers the tall hero via the 16:9 sizing above) --- */
.hero .lede-short { display: none; }
.mbar { transform: translateY(110%); transition: transform var(--dur) var(--ease); }
.mbar.show { transform: none; }
@media (max-width: 860px) {
  .hero { align-items: center; text-align: center; }
  .hero h1 { margin-inline: auto; }
  .hero .lede { margin-inline: auto; }
  .hero .lede-full { display: none; } .hero .lede-short { display: inline; }
  .hero .kicker { justify-content: center; }
  .hero .btn-row { justify-content: center; }
  .hero .btn-row .btn { flex: 1 1 calc(50% - 6px); min-height: 46px; padding: 10px 14px; font-size: .95rem; }
  .hero .proof { justify-content: center; gap: 6px 8px; }
  .hero .proof .item { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); border-radius: var(--r-pill); padding: 5px 10px; font-size: .8125rem; }
  .hero .proof .item:nth-child(n+4) { display: inline-flex; }
  .hero .proof .item:nth-child(n+5) { display: none; }
  /* the bar is fixed: the page needs room beneath it or the footer's legal row sits under it (client review, 2026-09-22) */
  body { padding-bottom: calc(92px + env(safe-area-inset-bottom)); }
}
@media (max-width: 380px) { .hero .btn-row .btn { flex-basis: 100%; } }

/* --- treatment/concern hero: quick answer + facts as a full-width row --- */
.phero .wrap { grid-template-columns: 1.05fr .95fr; }
.phero .hero-below { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(16px, 2.5vw, 28px); align-items: stretch; padding-bottom: clamp(36px, 5vw, 64px); position: relative; z-index: 1; }
.phero .hero-below .quick, .phero .hero-below .facts { margin-top: 0; }
.phero .hero-below .facts > div { display: flex; flex-direction: column; justify-content: center; }
/* the facts card next to the quick answer: fixed row shapes by item count (6 = 3×2, 5 = 3 over 2, 4 = 2×2) so the grid never leaves a hole */
@media (min-width: 861px) {
  .phero .hero-below .facts { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .phero .hero-below .facts > div { grid-column: span 2; }
  .phero .hero-below .facts:has(> :nth-child(4):last-child) > div, .phero .hero-below .facts:has(> :nth-child(2):last-child) > div { grid-column: span 3; }
  .phero .hero-below .facts:has(> :nth-child(5):last-child) > div:nth-child(n+4) { grid-column: span 3; }
  .phero .hero-below .facts:has(> :only-child) > div { grid-column: span 6; }
}
.phero:has(.hero-below) .wrap:not(.hero-below) { padding-bottom: clamp(20px, 3vw, 32px); }
.phero .visual { align-self: center; display: block; }
.phero .visual .frame { aspect-ratio: auto; height: clamp(380px, 36vw, 520px); width: 100%; }
@media (max-width: 860px) { .phero .hero-below { grid-template-columns: 1fr; } .phero .visual .frame { height: auto; aspect-ratio: 4/3; } }

/* --- section head can be wide (related treatments) --- */
.section-head.wide { max-width: none; }
.section-head.wide .lede { max-width: 80ch; }

/* --- video wall: uniform cards --- */
.vgrid, .vwall { align-items: stretch; }
.vcard { aspect-ratio: 9/14; min-width: 0; width: 100%; } /* WebKit: without an explicit width the intrinsic <img> size leaks into the grid track */
.vcard img, .vcard video { max-width: 100%; }
.vcard.playing video { object-fit: contain; background: #000; }
@media (max-width: 520px) { .vgrid, .vwall { grid-template-columns: 1fr 1fr; gap: 10px; } .vcard .cap { font-size: .8125rem; } }

/* --- steps: connectors between cards for any count --- */
.steps { grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); }
.steps::before { display: none; }
.step + .step::before { content: ""; position: absolute; left: -18px; width: 18px; top: 26px; height: 2px; background: linear-gradient(90deg, var(--blue-200), var(--peach-200)); }
@media (max-width: 960px) { .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } .step:nth-child(odd)::before { display: none; } }
@media (max-width: 520px) { .steps { grid-template-columns: 1fr; gap: 46px; } .step + .step::before { left: 26px; top: -46px; width: 2px; height: 46px; } }

/* --- Google reviews --- */
.review .who small { display: inline-flex; align-items: center; gap: 5px; }
.review .who small svg { width: 13px; height: 13px; }
.review .ell { display: inline; } .review.open .ell { display: none; }
.rating-big small { display: inline-flex; gap: 4px; align-items: center; }
.gbadge svg { flex: none; }

/* --- calculator: mobile-first controls --- */
.calc { grid-template-columns: 1.1fr .9fr; grid-template-areas: "copy out" "controls out"; align-items: start; }
.calc .calc-copy { grid-area: copy; } .calc .calc-controls { grid-area: controls; } .calc .out { grid-area: out; align-self: stretch; }
.calc .ctl { margin-top: 14px; }
.calc .lbl { display: block; font-weight: 600; margin-bottom: 8px; font-size: .95rem; color: #E6F0F8; }
.calc .seg { display: grid; gap: 8px; }
.calc .seg.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.calc .seg.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.calc .seg button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 46px; padding: 8px 10px; border-radius: 12px; border: 1.5px solid rgba(255,255,255,.28); background: rgba(255,255,255,.04); color: #fff; font-weight: 600; font-size: .9rem; transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease); }
.calc .seg button svg { width: 16px; height: 16px; }
.calc .seg button:hover { border-color: #fff; }
.calc .seg button.on { background: #fff; color: var(--blue-800); border-color: #fff; box-shadow: 0 6px 16px rgba(0,0,0,.2); }
.calc .ticks { display: flex; justify-content: space-between; font-size: .8125rem; color: #9DB8D1; margin-top: 4px; }
.calc .out .big-row { display: flex; flex-direction: column; gap: 4px; padding-bottom: 12px; border-bottom: 1px solid rgba(255,255,255,.14); margin-bottom: 4px; }
.calc .out .big-row .k { font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: #9DB8D1; font-weight: 700; }
.calc .out .v.big { font-size: clamp(2.4rem, 5vw, 3.2rem); line-height: 1; }
@media (max-width: 860px) {
  .calc { grid-template-columns: 1fr; grid-template-areas: "copy" "controls" "out"; padding: 22px 18px; gap: 18px; border-radius: var(--r-lg); }
  .calc h2 { font-size: 1.7rem; } .calc p { font-size: .95rem; }
  .calc .seg.three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calc .seg.three button:last-child { grid-column: span 2; }
  .calc .out { padding: 18px; }
  .calc .out .row { padding: 8px 0; } .calc .out .v { font-size: 1.3rem; }
}

/* --- promo teaser cards --- */
.promo-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 720px) { .promo-cards { grid-template-columns: 1fr; } .price { padding: 20px; } .price .amt { font-size: 2rem; } }

/* --- partners --- */

/* --- contact tiles + map --- */
.ctiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 16px; }
.ctile { background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; display: flex; flex-direction: column; gap: 8px; }
.ctile .ico { width: 44px; height: 44px; border-radius: 12px; background: var(--blue-50); color: var(--blue-600); display: inline-flex; align-items: center; justify-content: center; }
.ctile .ico svg { width: 22px; height: 22px; }
.ctile h3, .ctile .h3 { margin: 4px 0 0; font-size: 1.05rem; font-family: var(--font-display); font-weight: 700; letter-spacing: -.015em; line-height: 1.3; color: var(--ink); }
.ctile p { margin: 0; color: var(--slate); font-size: .95rem; line-height: 1.55; }
.ctile p strong { color: var(--ink); }
.ctile a { text-decoration: none; }
.ctile .btn { align-self: flex-start; margin-top: auto; }
.ctile .hours { font-size: .9rem; }
.map-wide { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); height: clamp(280px, 38vw, 420px); }
.map-wide iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 960px) { .ctiles { grid-template-columns: 1fr; } }

/* --- taller booking widgets --- */
.widget.tall { border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; background: #fff; min-height: 780px; }
.widget.tall iframe { width: 100%; height: 100%; min-height: 780px; border: 0; display: block; }
.book-panel .widget { min-height: 780px; } .book-panel iframe { min-height: 780px; }
.widget.sized, .book-panel .widget.sized { min-height: 0; } .widget iframe[data-sized], .book-panel iframe[data-sized] { min-height: 0; }

/* --- blog post hero --- */
.post-hero .wrap { padding-block: clamp(32px, 5vw, 56px) clamp(28px, 4vw, 48px); }
.post-hero-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(24px, 4vw, 56px); align-items: center; }
.post-hero-grid .lede { margin-top: 10px; font-size: 1.1rem; }
.post-hero-grid .post-fig img { aspect-ratio: 4/3; border-radius: var(--r-xl); }
@media (max-width: 960px) { .post-hero-grid { grid-template-columns: 1fr; } }

/* --- Book Now page: heading + audience switch on top, perks left, booking panel right (panel first on phones) --- */
.book-hero { background: linear-gradient(180deg, var(--blue-50), #fff); }
.book-hero .wrap { padding-block: clamp(28px, 4vw, 48px) clamp(40px, 6vw, 72px); }
.book-grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); grid-template-rows: auto 1fr; grid-template-areas: "head panel" "copy panel"; column-gap: clamp(28px, 5vw, 64px); align-items: start; margin-top: 8px; }
.book-head { grid-area: head; }
.book-head h1 { max-width: 14ch; }
.book-copy { grid-area: copy; padding-top: 28px; }
.book-panels { grid-area: panel; align-self: start; position: sticky; top: var(--sticky-top); }
.book-tabs-label { margin: 22px 0 10px; font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--slate); }
.book-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.book-tabs button { position: relative; display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 12px 34px 12px 14px; border-radius: var(--r-lg); border: 1.5px solid var(--line); background: rgba(255,255,255,.7); color: var(--ink); font: inherit; text-align: left; cursor: pointer; transition: border-color var(--dur) var(--ease), background var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.book-tabs button .ico { width: 38px; height: 38px; flex: none; display: grid; place-items: center; border-radius: 12px; background: var(--blue-50); color: var(--blue-700); }
.book-tabs button .ico svg { width: 20px; height: 20px; }
.book-tabs button .t { display: grid; gap: 2px; min-width: 0; }
.book-tabs button strong { font-weight: 700; line-height: 1.25; }
.book-tabs button small { font-size: .8125rem; color: var(--slate); line-height: 1.3; text-wrap: balance; }
.book-tabs button .tick { position: absolute; right: 10px; top: 10px; width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; border: 1.5px solid var(--line); background: #fff; color: #fff; transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.book-tabs button .tick svg { width: 12px; height: 12px; }
.book-tabs button:hover { border-color: var(--blue-200); background: #fff; }
.book-tabs button.on { border-color: var(--blue-600); background: #fff; box-shadow: 0 0 0 3px rgba(24,112,176,.12), var(--sh-1); }
.book-tabs button.on .ico { background: var(--blue-600); color: #fff; }
.book-tabs button.on .tick { background: var(--blue-600); border-color: var(--blue-600); }
.book-tabs button:focus-visible { outline: 2px solid var(--blue-600); outline-offset: 2px; }
.book-pane[hidden], .book-widget[hidden] { display: none; }
.book-pane .lede { margin: 0 0 4px; font-size: 1.0625rem; }
.book-pane-h { margin: 18px 0 12px; font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--slate); }
.book-copy .perks { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 16px 18px; }
.book-copy .perks li { display: flex; gap: 12px; align-items: flex-start; min-width: 0; }
.book-copy .perks .ico { width: 38px; height: 38px; flex: none; display: grid; place-items: center; border-radius: 12px; background: #fff; border: 1px solid var(--line); color: var(--blue-700); }
.book-copy .perks .ico svg { width: 20px; height: 20px; }
.book-copy .perks strong { display: block; color: var(--ink); line-height: 1.3; }
.book-copy .perks small { display: block; margin-top: 3px; font-size: .875rem; line-height: 1.45; color: var(--slate); }
.book-alt { display: grid; gap: 4px; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--line); }
.book-alt a { display: flex; align-items: flex-start; gap: 10px; min-height: 40px; padding: 6px 0; text-decoration: none; color: var(--ink); line-height: 1.45; }
.book-alt svg { width: 20px; height: 20px; flex: none; margin-top: 3px; color: var(--blue-600); }
.book-alt strong { color: var(--blue-800); font-weight: 700; }
.book-alt small { color: var(--slate); font-size: .9rem; }
.book-alt a:hover strong { text-decoration: underline; text-underline-offset: 3px; }
.book-proof { display: flex; align-items: center; gap: 12px; margin-top: 24px; font-size: .9rem; color: var(--slate); flex-wrap: wrap; }
.book-proof .avs { display: flex; }
.book-proof .avs img { width: 36px; height: 36px; border-radius: 50%; border: 2px solid #fff; margin-left: -8px; object-fit: cover; box-shadow: var(--sh-1); }
.book-proof .avs img:first-child { margin-left: 0; }
.book-widget { background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl); box-shadow: var(--sh-3); overflow: hidden; }
.book-widget-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--line); background: var(--cloud); flex-wrap: wrap; }
.book-widget-title { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: 1.125rem; letter-spacing: -.01em; color: var(--ink); }
.book-widget-head .tiny { margin: 2px 0 0; }
.book-widget-head .pill { flex: none; }
.book-widget iframe { width: 100%; height: 780px; border: 0; display: block; }
.book-widget-foot { display: flex; align-items: center; gap: 8px; margin: 0; padding: 12px 20px; border-top: 1px solid var(--line); background: var(--cloud); font-size: .8125rem; color: var(--slate); }
.book-widget-foot svg { width: 16px; height: 16px; flex: none; color: var(--success); }
@media (max-width: 960px) {
  .book-grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto; grid-template-areas: "head" "panel" "copy"; }
  .book-panels { position: static; margin-top: 22px; }
  .book-copy { padding-top: 28px; }
  .book-pane .lede { display: none; }
  .book-pane-h { margin-top: 0; }
}
@media (max-width: 560px) {
  .book-tabs { grid-template-columns: 1fr; gap: 8px; }
  .book-tabs button { min-height: 58px; }
  .book-copy .perks { grid-template-columns: 1fr; gap: 12px; }
  .book-widget-head { padding: 14px 16px; }
  .book-widget-head .pill { display: none; }
  .book-widget-foot { padding: 10px 16px; }
}
/* legacy choice cards (kept for other uses): size the arrow */
.choice a .go svg { width: 18px; height: 18px; vertical-align: -3px; }

/* ===================== Blog pass: left sticky sidebar, wide article, in-article Q&A ===================== */
.post-body { padding-top: clamp(28px, 4vw, 48px); }
.post-layout { display: grid; grid-template-columns: 296px minmax(0, 1fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
.post-side { position: sticky; top: calc(var(--header-h) + 20px); align-self: start; display: grid; gap: 16px; max-height: calc(100vh - var(--header-h) - 40px); max-height: calc(100dvh - var(--header-h) - 40px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; padding-right: 2px; }
.side-cards { display: grid; gap: 16px; }
.toc { background: var(--cloud); border-radius: var(--r-md); padding: 16px 18px; font-size: .92rem; }
.toc summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; font-family: var(--font-display); font-weight: 700; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); cursor: default; }
.toc summary::-webkit-details-marker { display: none; }
.toc summary .ic { display: none; width: 22px; height: 22px; border-radius: 50%; background: #fff; align-items: center; justify-content: center; transition: transform .2s ease; }
.toc summary .ic svg { width: 14px; height: 14px; }
.toc ol { margin: 12px 0 0; padding-left: 0; list-style: none; display: grid; gap: 2px; counter-reset: toc; }
.toc li { counter-increment: toc; }
.toc a { display: flex; gap: 10px; align-items: flex-start; padding: 7px 10px; border-radius: 10px; color: var(--slate); text-decoration: none; line-height: 1.4; border-left: 2px solid transparent; }
.toc a::before { content: counter(toc, decimal-leading-zero); font-size: .8125rem; font-weight: 700; color: var(--mist); margin-top: 3px; min-width: 1.6em; }
.toc a:hover { color: var(--blue-700); background: #fff; }
.toc a.on { color: var(--blue-700); background: #fff; font-weight: 600; border-left-color: var(--blue-500); }
.side-cta { padding: 18px 20px; border-radius: var(--r-lg); background: linear-gradient(135deg, var(--peach-100), #fff 70%); border: 1px solid var(--peach-200); }
.side-cta h3, .side-cta .side-cta-h { font-size: 1.05rem; margin: 0 0 4px; font-family: var(--font-display); font-weight: 700; letter-spacing: -.015em; line-height: 1.3; color: var(--ink); }
.side-cta p { font-size: .9rem; color: var(--slate); margin: 0 0 12px; }
.side-cta .btn-row { gap: 8px 14px; margin: 0; }
.side-cta .btn-sm svg { width: 15px; height: 15px; }
.side-cta .btn-link { display: inline-flex; gap: 6px; align-items: center; font-size: .9rem; }
.side-cta .btn-link svg { width: 15px; height: 15px; }
.side-rel { padding: 16px 18px; }
.side-cards .side-h { font-family: var(--font-body); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); margin: 0 0 6px; }
.side-foot { display: grid; gap: 10px; }
.side-rating { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; color: var(--slate); font-size: .9375rem; }
.side-rating strong { color: var(--ink); }
.side-links { list-style: none; margin: 0; padding: 0; display: grid; }
.side-links a { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line); text-decoration: none; font-weight: 600; font-size: .92rem; color: var(--ink); }
.side-links li:last-child a { border-bottom: 0; }
.side-links a svg { width: 16px; height: 16px; color: var(--blue-500); flex: none; }
.side-links a:hover { color: var(--blue-700); }
.side-rating .stars { display: inline-flex; gap: 1px; color: #F4B400; }
.side-rating .stars svg { width: 14px; height: 14px; }
.share { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.share .lbl { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); margin-right: 4px; }
.share .sh { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 12px; border-radius: var(--r-pill); border: 1px solid var(--line); background: #fff; color: var(--ink); font: inherit; font-size: .9375rem; font-weight: 600; text-decoration: none; cursor: pointer; }
.share .sh svg { width: 16px; height: 16px; }
.share .sh:hover { border-color: var(--blue-500); color: var(--blue-700); }
.share .sh.done { border-color: var(--blue-500); background: var(--blue-50); color: var(--blue-700); }
.post-article { font-size: 1.15rem; line-height: 1.7; max-width: none; }
.post-article > * { max-width: 100%; }
.post-article > p, .post-article > ul, .post-article > ol, .post-article > blockquote, .post-article > h2, .post-article > h3, .post-article > h4 { max-width: 740px; }
.post-article h2 { font-size: clamp(1.5rem, 2.4vw, 2rem); margin-top: 1.8em; scroll-margin-top: calc(var(--header-h) + 24px); }
.post-article h3 { font-size: clamp(1.2rem, 1.8vw, 1.4rem); margin-top: 1.5em; scroll-margin-top: calc(var(--header-h) + 24px); }
.post-article > h2:first-child, .post-article .takeaways + h2 { margin-top: .4em; }
.post-article p { margin: 0 0 1.15em; }
.post-article ul.checklist { margin: 0 0 1.3em; gap: 10px; }
.post-article ol { padding-left: 1.4em; margin: 0 0 1.3em; display: grid; gap: 8px; }
.post-article img, .post-article video, .post-article iframe { max-width: 100%; height: auto; display: block; }
.post-article .table-wrap { overflow-x: auto; margin: 1.5em 0; border: 1px solid var(--line); border-radius: var(--r-md); -webkit-overflow-scrolling: touch; }
.post-article .table-wrap table { margin: 0; min-width: 560px; font-size: .95rem; }
.post-article .table-wrap th, .post-article .table-wrap td { padding: 12px 14px; }
.post-article .table-wrap tr:last-child td { border-bottom: 0; }
.post-article blockquote { font-size: 1.12rem; line-height: 1.55; }
.takeaways { background: linear-gradient(135deg, var(--blue-50), #fff); border: 1px solid var(--blue-100); border-radius: var(--r-lg); padding: 22px 24px; margin: 0 0 2em; }
.takeaways .tk-h { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; font-size: 1.05rem; letter-spacing: .02em; text-transform: uppercase; color: var(--blue-700); }
.takeaways .tk-h svg { width: 20px; height: 20px; }
.takeaways ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.takeaways li { position: relative; padding-left: 28px; font-size: 1.02rem; line-height: 1.55; color: var(--ink); }
.takeaways li::before { content: ""; position: absolute; left: 0; top: .42em; width: 16px; height: 16px; border-radius: 50%; background: var(--blue-500); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 12px no-repeat, linear-gradient(#000 0 0); mask-composite: exclude; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 12px no-repeat, linear-gradient(#000 0 0); -webkit-mask-composite: xor; }
.post-qa { margin-top: 3em; padding: clamp(22px, 3vw, 32px); border-radius: var(--r-xl); background: var(--cloud); border: 1px solid var(--line); scroll-margin-top: calc(var(--header-h) + 24px); }
.post-qa .qa-head { max-width: 62ch; margin-bottom: 8px; }
.post-qa .kicker { display: inline-block; font-size: .8125rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--peach-700); background: var(--peach-100); padding: 4px 10px; border-radius: var(--r-pill); }
.post-qa h2 { margin: 12px 0 8px; font-size: clamp(1.45rem, 2.2vw, 1.8rem); }
.post-qa .qa-head p { font-size: 1rem; color: var(--slate); margin: 0 0 8px; }
.post-qa .acc { background: #fff; border-radius: var(--r-md); padding: 0 18px; border: 1px solid var(--line); border-top: 1px solid var(--line); }
.post-qa .acc summary { font-size: 1.02rem; padding: 16px 0; }
.post-qa .acc .a { font-size: 1rem; }
.post-qa .acc .a p { margin-bottom: .8em; }
.post-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 2.2em; }
.post-tags .lbl { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); margin-right: 4px; }
.post-tags .pill { text-decoration: none; min-height: 36px; }
.post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 1.5em; }
.post-nav .pn { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--r-md); text-decoration: none; color: var(--ink); background: #fff; transition: border-color .2s ease, transform .2s ease; }
.post-nav .pn:hover { border-color: var(--blue-500); transform: translateY(-2px); }
.post-nav .pn .lbl { display: inline-flex; gap: 6px; align-items: center; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; color: var(--mist); }
.post-nav .pn .lbl svg { width: 14px; height: 14px; }
.post-nav .pn.next { text-align: right; }
.post-nav .pn.next .lbl { justify-content: flex-end; }
.post-nav .pn .t { font-weight: 600; font-size: .98rem; line-height: 1.35; }
@media (max-width: 1100px) { .post-layout { grid-template-columns: 260px minmax(0, 1fr); gap: 36px; } }
@media (max-width: 960px) {
  .post-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .post-side { display: contents; }
  .toc { order: 0; padding: 0; }
  .toc summary { cursor: pointer; padding: 16px 18px; font-size: .9375rem; color: var(--ink); min-height: 52px; }
  .toc summary .ic { display: inline-flex; }
  .toc[open] summary .ic { transform: rotate(180deg); }
  .toc ol { margin: 0; padding: 0 12px 12px; }
  .post-article { order: 1; font-size: 1.08rem; }
  .side-cards { order: 2; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .side-cards .side-foot { grid-column: 1 / -1; grid-template-columns: auto 1fr; align-items: center; gap: 16px; }
  .side-foot .share { justify-content: flex-end; }
  .post-article > p, .post-article > ul, .post-article > ol, .post-article > blockquote, .post-article > h2, .post-article > h3 { max-width: none; }
}
@media (max-width: 640px) {
  .side-cards { grid-template-columns: 1fr; }
  .side-cards .side-foot { grid-template-columns: 1fr; }
  .side-foot .share { justify-content: flex-start; }
  .post-article { font-size: 1.05rem; line-height: 1.68; }
  .post-article .table-wrap table { min-width: 480px; font-size: .9rem; }
  .post-nav { grid-template-columns: 1fr; }
  .post-nav .pn.next { text-align: left; }
  .post-nav .pn.next .lbl { justify-content: flex-start; }
  .takeaways { padding: 18px; }
  .post-qa { padding: 18px 16px; }
  .post-qa .acc { padding: 0 12px; }
}
@media (prefers-reduced-motion: reduce) { .post-nav .pn, .toc summary .ic { transition: none; } }

/* ===================== Pass 4: non-sticky overlay header, floating CTA, hero copy, widgets, book tabs, form wizard ===================== */
:root { --sticky-top: 20px; }
html { scroll-padding-top: calc(var(--sticky-top) + 16px); }
@media (max-width: 860px) { html { scroll-padding-bottom: calc(96px + env(safe-area-inset-bottom)); } }
.hdr-overlay .header { position: absolute; top: 0; left: 0; right: 0; }
.hdr-overlay main > .hero, .hdr-overlay main > .phero, .hdr-overlay main > .post-hero, .hdr-overlay main > .book-hero { margin-top: 0; padding-top: var(--header-h); }
.header.scrolled { border-color: transparent; box-shadow: none; }
.hdr-overlay .header.scrolled:not(.menu-open) { background: transparent; border-color: transparent; box-shadow: none; }
/* no plate in the scrolled state either: the reversed mark handles it (see .logo-light) */
.hdr-overlay .header.on-dark.scrolled:not(.menu-open) .nav-link, .hdr-overlay .header.on-dark.scrolled:not(.menu-open) .header-cta .phone { color: #fff; }
.hdr-overlay .header.on-dark.scrolled:not(.menu-open) .header-cta .btn-cta { --bg: #fff; color: var(--blue-700); }
.hdr-overlay .header.on-dark.scrolled:not(.menu-open) .burger { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.35); color: #fff; }
.post-side { top: var(--sticky-top); max-height: calc(100vh - var(--sticky-top) - 20px); max-height: calc(100dvh - var(--sticky-top) - 20px); }
.faq-layout .sticky { top: var(--sticky-top); }
.post-article h2, .post-article h3, .post-qa { scroll-margin-top: calc(var(--sticky-top) + 8px); }
.sidetab { display: none; }
/* floating Book now (laptop/desktop) — appears once the hero has scrolled past */
.float-cta { position: fixed; right: 22px; bottom: 22px; z-index: 800; display: none; align-items: center; gap: 10px; opacity: 0; transform: translateY(18px); pointer-events: none; transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease); }
.float-cta.show { opacity: 1; transform: none; pointer-events: auto; }
/* keep the legal row clear of the floating buttons (client review, 2026-09-22) */
@media (min-width: 1081px) { .footer .bottom { padding-bottom: 76px; } }
@media (min-width: 1700px) { .footer .bottom { padding-bottom: 0; } }  /* wide enough that the buttons clear the content column */
.float-cta .btn-cta { box-shadow: 0 14px 34px rgba(24,112,176,.35); }
.float-phone { width: 48px; height: 48px; border-radius: 50%; background: #fff; border: 1px solid var(--line); color: var(--blue-700); display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--sh-2); }
.float-phone svg { width: 20px; height: 20px; }
.float-phone:hover { background: var(--blue-50); }
@media (min-width: 861px) { .float-cta { display: flex; } }
/* mobile bar: Call · Book · Menu */
.mbar { grid-template-columns: 1fr 1.3fr 1.15fr; }
/* home hero: organised copy, no YouTube hover chrome */
.hero .media iframe { pointer-events: none; }
.hero .kicker .kicker-short { display: none; }
.hero .lede { max-width: 58ch; }
.hero-note { display: inline-flex; align-items: center; gap: 8px; color: #fff; font-weight: 600; font-size: .95rem; padding: 0 4px; opacity: .95; }
.hero-note svg { width: 18px; height: 18px; color: #BFE6FB; }
.hero .proof { gap: 10px 22px; }
@media (max-width: 640px) {
  .hero .kicker .kicker-full { display: none; } .hero .kicker .kicker-short { display: inline; }
  .hero .kicker { font-size: .8125rem; letter-spacing: .14em; }
  .hero-note { display: none; }
  .hero .proof .item:nth-child(n+3) { display: none; }
  .hero .lede { max-width: 30ch; }
}
/* widget layout classes (replace the old inline styles) */
.split.top { align-items: start; } .grid.top { align-items: start; }
.feature-rows { gap: 14px; }
.feature.row { display: flex; gap: 16px; align-items: flex-start; padding: 18px; }
.feature.row .ico { margin: 0; flex: none; }
.imgcard.r-tall { aspect-ratio: 4/4.6; } .imgcard.r-portrait { aspect-ratio: 4/5; }
.gallery.two { grid-template-columns: 1fr 1fr; }
.results-grid { grid-template-columns: 1fr 1.2fr; align-items: start; }
.vgrid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; }
/* The three testimonial clips are 1:1, 3:4 and 4:5 natively. The 9/14 card cropped the square one by 36%
   (it cut the OXYDERM sign in half) and clipped the burnt-in captions on the other two. 4/5 is the shallowest
   card that holds all three: no crop on the 4:5 clip, 6% on the 3:4, 20% on the square. */
.vgrid.three .vcard { aspect-ratio: 4/5; }
@media (max-width: 860px) { .results-grid { grid-template-columns: 1fr; } .vgrid.three { grid-template-columns: 1fr 1fr; } }
.price-grid.two { grid-template-columns: 1fr 1fr; } @media (max-width: 720px) { .price-grid.two { grid-template-columns: 1fr; } }
.pill.self-start { align-self: flex-start; } .self-start { justify-self: start; }
.consent { display: flex; gap: 10px; align-items: flex-start; font-weight: 500; }
.consent input { width: 18px; height: 18px; margin-top: 3px; accent-color: var(--blue-600); }
.field-lbl { font-weight: 600; font-size: .95rem; } .opts.inline { display: inline-flex; }
.fcard .body { display: flex; gap: 16px; align-items: flex-start; }
.fcard .ico { width: 44px; height: 44px; border-radius: 12px; background: var(--blue-50); color: var(--blue-600); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.fcard .ico svg { width: 22px; height: 22px; }
.countdown-row { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.hero-search { max-width: 620px; }
.plain-link { text-decoration: none; color: inherit; }
/* book now: new / existing client switch */
/* client forms: step-by-step wizard */
.form-wizard-wrap { max-width: 900px; }
.form-steps-nav { list-style: none; margin: 0 0 12px; padding: 0; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; }
.form-steps-nav::-webkit-scrollbar { display: none; }
.form-steps-nav li { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: var(--r-pill); background: var(--cloud); color: var(--slate); font-size: .9375rem; font-weight: 600; white-space: nowrap; flex: none; }
.form-steps-nav li .n { width: 24px; height: 24px; border-radius: 50%; background: #fff; border: 1.5px solid var(--line); display: inline-flex; align-items: center; justify-content: center; font-size: .8125rem; }
.form-steps-nav li.on { background: var(--blue-600); color: #fff; }
.form-steps-nav li.on .n { background: #fff; color: var(--blue-700); border-color: #fff; }
.form-steps-nav li.done { background: var(--blue-50); color: var(--blue-700); }
.form-steps-nav li.done .n { background: var(--blue-600); color: #fff; border-color: var(--blue-600); }
.form-progress { height: 6px; border-radius: 6px; background: var(--cloud); overflow: hidden; margin-bottom: 6px; }
.form-progress i { display: block; height: 100%; background: var(--grad-brand); border-radius: 6px; transition: width .3s var(--ease); }
.form-step-count { margin: 0 0 18px; }
.form-wizard fieldset[hidden] { display: none; }
.form-wizard fieldset { animation: fadeUp .3s var(--ease); }
.form-wizard .actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; align-items: center; }
.form-wizard .actions [data-next] { margin-left: auto; }
.form-wizard .actions [data-next] svg, .form-wizard .actions [data-back] svg { width: 18px; height: 18px; }
.form-wizard .actions [hidden] { display: none; }
.form-saved { font-size: .8125rem; color: var(--mist); }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .form-wizard fieldset { animation: none; } .float-cta { transition: none; } }

/* ---------- hero extras: treatment chips + Google rating badge ---------- */
.hero-services { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; }
.hero-services .tiny { margin-right: 4px; }
.hero-services a.pill { text-decoration: none; transition: background .18s ease, border-color .18s ease, color .18s ease; }
.hero-services a.pill:hover { background: var(--blue-700); border-color: var(--blue-700); color: #fff; }
.hero-services a.pill svg { width: 13px; height: 13px; }
.hero-rating { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 18px; padding: 9px 16px 9px 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--r-pill); box-shadow: var(--sh-1); color: var(--ink); text-decoration: none; font-size: .9rem; transition: box-shadow .18s ease, border-color .18s ease; }
.hero-rating__label { font-weight: 700; color: var(--blue-700); }
.hero-rating__dot { width: 4px; height: 4px; border-radius: 50%; background: var(--slate); opacity: .6; }
.hero-rating > svg { width: 18px; height: 18px; }
.hero-rating .stars svg { width: 14px; height: 14px; }
.hero-rating b { font-weight: 800; }
.hero-rating__count { color: var(--slate); }   /* no underline: the badge is no longer a link */
@media (max-width: 480px) { .hero-rating { font-size: .9375rem; gap: 6px; } }
/* Mobile hero must stack: an un-scoped `.phero .wrap` rule above re-declares two columns and wins the cascade over the 860px query, leaving a 37px image sliver on phones. */
@media (max-width: 860px) { .phero .wrap { grid-template-columns: 1fr; } .phero .visual .frame { margin-top: 8px; } }

/* ===================== Instagram gallery (Results page) ===================== */
.ig-section .rev-head .btn svg { width: 18px; height: 18px; }
.ig-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 22px; }
.ig-filter .chip { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 8px 14px; border-radius: var(--r-pill); border: 1.5px solid var(--line); background: #fff; color: var(--ink); font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer; transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.ig-filter .chip:hover { border-color: var(--blue-500); color: var(--blue-700); }
.ig-filter .chip.on { background: var(--blue-600); border-color: var(--blue-600); color: #fff; }
.ig-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.ig-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.ig-card:hover { transform: translateY(-3px); box-shadow: var(--sh-2); }
.ig-card.hidden { display: none; }
.ig-open { position: relative; display: block; width: 100%; aspect-ratio: 4 / 5; padding: 0; border: 0; background: var(--cloud); cursor: pointer; overflow: hidden; }
.ig-open img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s var(--ease); }
.ig-card:hover .ig-open img { transform: scale(1.04); }
.ig-open::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,45,79,0) 55%, rgba(11,45,79,.45)); pointer-events: none; }
.ig-kind { position: absolute; left: 12px; bottom: 12px; z-index: 1; display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: var(--r-pill); background: rgba(255,255,255,.92); color: var(--blue-800); font-size: .8125rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.ig-kind svg { width: 14px; height: 14px; }
.ig-body { padding: 14px 16px 16px; display: grid; gap: 6px; }
.ig-cat { font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 700; color: var(--peach-700); }
.ig-body h3 { font-size: 1.02rem; line-height: 1.3; margin: 0; }
.ig-body p { margin: 0; font-size: .9rem; color: var(--slate); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ig-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin-top: 6px; font-size: .8125rem; color: var(--mist); }
.ig-meta a { display: inline-flex; align-items: center; gap: 4px; font-weight: 600; color: var(--blue-700); text-decoration: none; }
.ig-meta a svg { width: 14px; height: 14px; }
.ig-modal { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 16px; }
.ig-modal[hidden] { display: none; }
.ig-scrim { position: absolute; inset: 0; background: rgba(11,45,79,.72); backdrop-filter: blur(4px); }
.ig-dialog { position: relative; width: min(540px, 100%); max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); background: #fff; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-3); animation: fadeUp .25s var(--ease); }
.ig-close { position: fixed; top: 14px; right: 14px; z-index: 3; width: 44px; height: 44px; border-radius: 50%; border: 0; background: #fff; color: var(--ink); box-shadow: var(--sh-2); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.ig-close svg { width: 18px; height: 18px; }
.ig-frame { height: min(860px, calc(100vh - 32px)); height: min(860px, calc(100dvh - 32px)); background: var(--cloud); }
.ig-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 1100px) { .ig-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .ig-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .ig-body { padding: 12px; } .ig-body p { -webkit-line-clamp: 2; } }
@media (max-width: 420px) { .ig-grid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .ig-card, .ig-open img, .ig-dialog { transition: none; animation: none; } }

/* a11y pass: breadcrumb targets, visual-only headings */
.breadcrumbs a { display: inline-block; padding: 4px 2px; margin: -4px -2px; }
.mega .mh, .footer .fh, .side-cards .side-h, .side-cta .side-cta-h, .ctile .h3 { margin-top: 0; }
.footer .fh { margin-bottom: 14px; }

/* ===================== Treatments mega menu: featured card + balanced columns + small-category band ===================== */
.mega.mega-treat { width: min(1180px, calc(100vw - 32px)); padding: 18px 22px 16px; max-height: calc(100vh - var(--header-h) - 24px); }
.mt-grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr) minmax(0, 1.12fr) minmax(0, 1fr); gap: 8px 22px; align-items: stretch; }
.mt-col { min-width: 0; display: flex; flex-direction: column; }
.mt-col > ul { flex: 1; align-content: start; }
.mt-col > .mt-all { margin-top: 12px; }
.mega .mh { display: flex; align-items: center; gap: 9px; margin: 0 0 6px; padding: 0 10px; letter-spacing: .06em; color: var(--slate); white-space: nowrap; }
.mega .mh .ico { width: 26px; height: 26px; flex: none; display: grid; place-items: center; border-radius: 8px; background: var(--blue-50); color: var(--blue-700); }
.mega .mh .ico svg { width: 15px; height: 15px; }
.mega-treat li a { display: flex; align-items: center; gap: 8px; padding: 4px 10px; }
.mega-treat li a .n { display: inline; }
.mega li a .fl { flex: none; font-size: .66rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--peach-700); background: var(--peach-100); padding: 2px 7px; border-radius: 999px; line-height: 1.3; }
.mt-all { display: inline-flex; align-items: center; gap: 6px; margin: 6px 10px 0; font-size: .9rem; font-weight: 700; color: var(--blue-700); text-decoration: none; }
.mt-all svg { width: 15px; height: 15px; transition: transform var(--dur) var(--ease); }
.mt-all:hover { text-decoration: underline; text-underline-offset: 3px; } .mt-all:hover svg { transform: translateX(3px); }
.mt-feature { position: relative; display: block; min-height: 100%; border-radius: var(--r-lg); overflow: hidden; background: var(--blue-900); color: #fff; text-decoration: none; isolation: isolate; box-shadow: 0 12px 30px rgba(11,45,79,.22); outline: 3px solid transparent; transition: outline-color var(--dur) var(--ease), transform var(--dur) var(--ease); }
.mt-feature:hover { outline-color: var(--blue-200); transform: translateY(-2px); color: #fff; }
.mt-feature:hover strong { color: #EAF4FB; } .mt-feature:hover .t { color: #fff; }
.mt-feature img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; transition: transform 700ms var(--ease); }
.mt-feature:hover img { transform: scale(1.05); }
.mt-feature::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,45,79,.12) 0%, rgba(11,45,79,.28) 30%, rgba(11,45,79,.82) 62%, rgba(9,36,64,.97) 100%); }
.mt-feature-body { position: relative; z-index: 1; display: grid; gap: 5px; padding: 18px 18px 18px; min-height: 100%; align-content: end; box-sizing: border-box; }
.mt-feature-body .fl { justify-self: start; font-size: .66rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--peach-700); background: var(--peach-100); padding: 3px 8px; border-radius: 999px; margin-bottom: 4px; }
.mt-feature-body strong { font-family: var(--font-display); font-size: 1.5rem; font-weight: 800; letter-spacing: -.02em; line-height: 1.1; text-shadow: 0 2px 10px rgba(0,0,0,.25); }
.mt-feature-body .t { font-size: .9rem; color: #E6F0F8; line-height: 1.4; }
.mt-areas { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.mt-areas span { font-size: .8125rem; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.28); color: #fff; backdrop-filter: blur(4px); }
.mt-more { display: inline-flex; align-items: center; justify-content: center; gap: 6px; margin-top: 12px; min-height: 40px; padding: 8px 16px; border-radius: 999px; background: #fff; color: var(--blue-700); font-size: .875rem; font-weight: 700; box-shadow: 0 8px 20px rgba(0,0,0,.2); transition: background var(--dur) var(--ease); }
.mt-feature:hover .mt-more { background: var(--blue-50); }
.mt-more svg { width: 15px; height: 15px; transition: transform var(--dur) var(--ease); } .mt-feature:hover .mt-more svg { transform: translateX(3px); }
.mt-band { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 22px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.mt-group { min-width: 0; }
.mega .mt-chips { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.mega .mt-chips li a { padding: 4px 11px; border: 1px solid var(--line); border-radius: 999px; font-size: .9375rem; background: #fff; }
.mega .mt-chips li a:hover { border-color: var(--blue-200); background: var(--blue-50); }
.mt-note { margin: 4px 10px 0; font-size: .9rem; color: var(--slate); }
.mt-links { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.mt-links .mt-all { margin-top: 8px; }
.mt-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 14px; padding: 12px 16px; border-radius: var(--r-md); background: var(--grad-warm); }
.mt-find { display: flex; align-items: center; gap: 12px; min-width: 0; }
.mt-find > svg { width: 22px; height: 22px; flex: none; color: var(--peach-700); }
.mt-find strong { display: block; font-family: var(--font-display); font-weight: 700; font-size: 1rem; color: var(--ink); }
.mt-find span { display: block; font-size: .875rem; color: var(--slate); }
.mt-foot .btn-row { gap: 10px; align-items: center; }
/* laptop headers (the nav hides below 1081px): tighter nav so nothing wraps */
@media (max-width: 1280px) and (min-width: 1081px) { .header .wrap-wide { gap: 14px; } .nav { gap: 0; } .nav-link { padding: 8px 9px; white-space: nowrap; } .header-cta .phone { padding: 8px 8px; white-space: nowrap; } }
@media (max-width: 1180px) and (min-width: 1081px) { .nav-link { padding: 8px 6px; font-size: .92rem; } .logo img { height: 40px; } .header-cta .btn-cta { padding: 7px 14px 7px 10px; } .header-cta .phone { font-size: .92rem; } }
/* Skin concerns mega: the simple list design, organised into named groups + the warm feature card with a small Google badge */
.mega.mega-concerns { width: min(1140px, calc(100vw - 32px)); }
.mega-cols-concerns { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.05fr) minmax(0, 1.02fr); }
.mega-cols-concerns .mh { padding: 0; }
.mega-cols-concerns .mega-feature { gap: 8px; align-self: start; }
.mega-cols-concerns .mega-feature .mh { color: var(--peach-700); margin-bottom: 0; }
.mega-cols-concerns .mega-feature strong { font-size: 1.05rem; }
.mega-cols-concerns .mega-feature p { font-size: .9rem; }
.gbadge.gbadge-sm { padding: 6px 12px 6px 8px; font-size: .8125rem; gap: 8px; align-self: start; margin-top: 2px; white-space: nowrap; }
.gbadge.gbadge-sm svg { width: 18px; height: 18px; }
.mega-feature-links { display: grid; gap: 4px; margin-top: 2px; }
.mega-feature-links .btn-link { font-size: .9rem; }
/* header “Book now” — lower profile */
.header-cta .btn-cta { min-height: 42px; padding: 7px 18px 7px 12px; }
.header-cta .btn-cta .ic { width: 24px; height: 24px; }
.header-cta .btn-cta .ic svg { width: 13px; height: 13px; }
@media (max-width: 520px) { .header-cta .btn-cta { min-height: 40px; padding: 6px 14px 6px 10px; } }
/* ===================== Page hero extras: stats row, avatar proof line, floating review cards ===================== */
.hero-stats { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 18px 0 4px; padding: 14px 0 0; border-top: 1px solid rgba(24,112,176,.14); }
.hero-stats > div { display: grid; gap: 2px; }
.hero-stats b { font-family: var(--font-display); font-size: 1.6rem; font-weight: 800; letter-spacing: -.03em; line-height: 1; color: var(--ink); }
.hero-stats b .star { color: #F5A623; font-size: 1.1rem; margin-left: 2px; vertical-align: 6px; }
.hero-stats span:not(.star) { font-size: .8125rem; color: var(--slate); font-weight: 600; }
.hero-proof { margin-top: 18px; }
.phero .visual.has-quotes { padding: 22px 0 0 22px; }
.phero .visual.has-quotes .frame { border-radius: var(--r-xl); }
.frame-quote { position: absolute; z-index: 2; margin: 0; width: min(250px, 62%); padding: 12px 14px; border-radius: var(--r-md); background: rgba(255,255,255,.96); border: 1px solid var(--line); box-shadow: var(--sh-3); backdrop-filter: blur(6px); animation: hero-float 6s ease-in-out infinite; }
.frame-quote .stars { display: inline-flex; gap: 1px; color: #F5A623; margin-bottom: 4px; } .frame-quote .stars svg { width: 13px; height: 13px; fill: currentColor; }
.frame-quote blockquote { margin: 0; font-size: .875rem; line-height: 1.45; color: var(--ink); font-weight: 500; }
.frame-quote figcaption { margin-top: 6px; font-size: .8125rem; font-weight: 700; color: var(--slate); }
.frame-quote.q1 { top: 0; left: 0; }
.frame-quote.q2 { right: -14px; bottom: 96px; animation-delay: -3s; }
.phero .visual.has-quotes .float { left: 4px; bottom: -12px; }
@keyframes hero-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@media (prefers-reduced-motion: reduce) { .frame-quote { animation: none; } }
@media (max-width: 860px) {
  .phero .visual.has-quotes { padding: 16px 0 0 0; }
  .frame-quote { width: min(230px, 66%); padding: 10px 12px; }
  .frame-quote.q1 { top: -4px; left: 10px; } .frame-quote.q2 { right: 10px; bottom: 80px; }
  .phero .visual.has-quotes .float { left: 12px; bottom: -14px; }
  .hero-stats { gap: 8px 20px; } .hero-stats b { font-size: 1.35rem; }
}
/* page hero at-a-glance chips */
.hero-chips { list-style: none; padding: 0; margin: 14px 0 2px; display: flex; flex-wrap: wrap; gap: 8px; }
.hero-chips li { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 5px 11px; border-radius: 999px; background: #fff; border: 1px solid var(--line); box-shadow: var(--sh-1); font-size: .8125rem; font-weight: 600; color: var(--ink); }
.hero-chips svg { width: 15px; height: 15px; flex: none; color: var(--blue-600); }
.phero.warm .hero-chips svg { color: var(--peach-700); }
.hero-chips li:has(> svg[viewBox] path[fill="#4285F4"]) svg { color: inherit; }
@media (max-width: 520px) { .hero-chips { gap: 6px; } .hero-chips li { font-size: .8125rem; padding: 4px 10px; min-height: 30px; } }
/* footer brand column: light logo, Google badge, short client quote, quick highlights */
.footer .brand { display: grid; gap: 14px; justify-items: start; align-content: start; }
.footer .brand p { margin-top: 0; }
.gbadge.gbadge-dark { background: #1E3E5F; border-color: #34526F; color: #fff; box-shadow: none; padding: 7px 14px 7px 9px; font-size: .9375rem; gap: 8px; }
.gbadge.gbadge-dark:hover { background: #26496C; }
.gbadge.gbadge-dark svg { width: 20px; height: 20px; }
.footer .fquote { margin: 0; padding: 12px 14px; border-left: 3px solid #7FCBF2; background: rgba(255,255,255,.06); border-radius: 0 10px 10px 0; max-width: 34ch; }
.footer .fquote .stars { display: inline-flex; gap: 1px; color: #F6B73C; margin-bottom: 4px; } .footer .fquote .stars svg { width: 13px; height: 13px; fill: currentColor; }
.footer .fquote blockquote { margin: 0; font-size: .95rem; line-height: 1.5; color: #fff; font-weight: 500; }
.footer .fquote figcaption { margin-top: 5px; font-size: .8125rem; color: #9CB8D1; font-weight: 600; }
.footer .fhl { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }
.footer .fhl li { display: flex; align-items: center; gap: 8px; font-size: .9rem; color: #DCE8F3; }
.footer .fhl svg { width: 16px; height: 16px; flex: none; color: #7FCBF2; }
.footer .social { margin-top: 2px; }
/* ===================== Training courses: course cards ===================== */
.course-grid { display: grid; gap: 22px; }
.course-grid.g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .course-grid.g3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .course-grid.g1 { grid-template-columns: minmax(0, 1fr); }
.course-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--line); border-radius: var(--r-xl); overflow: hidden; box-shadow: var(--sh-1); transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.course-card:hover { transform: translateY(-3px); box-shadow: var(--sh-3); }
.course-media { position: relative; display: block; aspect-ratio: 16/9; background: var(--blue-100); overflow: hidden; }
.course-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--ease); }
.course-card:hover .course-media img { transform: scale(1.04); }
.course-media .pill { position: absolute; top: 14px; left: 14px; }
.course-body { display: flex; flex-direction: column; gap: 10px; padding: 22px 24px 24px; flex: 1; }
.course-meta { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: .8125rem; font-weight: 700; color: var(--blue-700); }
.course-meta svg { width: 15px; height: 15px; }
.course-body h3 { margin: 0; font-size: 1.35rem; } .course-body h3 a { color: var(--ink); text-decoration: none; } .course-body h3 a:hover { color: var(--blue-700); }
.course-body > p { margin: 0; color: var(--slate); }
.course-hl { list-style: none; padding: 0; margin: 4px 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; }
.course-hl li { display: flex; align-items: center; gap: 7px; font-size: .9rem; color: var(--ink); }
.course-hl svg { width: 15px; height: 15px; flex: none; color: var(--success); }
.course-body .btn { align-self: start; margin-top: auto; }
@media (max-width: 860px) { .course-grid.g2, .course-grid.g3 { grid-template-columns: minmax(0, 1fr); } .course-hl { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------------------
   Mobile touch targets — DESIGN-SYSTEM.md requires 44px targets, but these
   controls were sized by padding alone and rendered 16–31px on phones.
   Scoped to ≤860px: desktop sizing and every brand token are untouched.
   (.mbar buttons stay at 40px by explicit request — see CONTENT-AUDIT.md.)
   --------------------------------------------------------------------------- */
@media (max-width: 860px) {
  .pill { min-height: 44px; padding-block: 8px; }
  .btn-link { min-height: 44px; display: inline-flex; align-items: center; }
  .review .toggle { min-height: 44px; padding-block: 10px; }
  .helpful button { min-height: 44px; padding-block: 8px; }
  .breadcrumbs a, .breadcrumbs span { min-height: 44px; display: inline-flex; align-items: center; }
  /* range sliders: 16px of drag height is unusable on touch */
  .planner input[type=range], .calc input[type=range] { height: 44px; }
  .planner input[type=range]::-webkit-slider-thumb, .calc input[type=range]::-webkit-slider-thumb { width: 28px; height: 28px; }
  .planner input[type=range]::-webkit-slider-runnable-track, .calc input[type=range]::-webkit-slider-runnable-track { height: 6px; }
  /* the before/after drag handle is an overlay slider — keep it full-bleed */
  .ba input[type=range] { height: 100%; }
  /* .btn-sm is the compact desktop variant (40px); phones need the full target */
  .btn.btn-sm { min-height: 44px; }
  .gbadge { min-height: 44px; }
  .footer .social a { width: 44px; height: 44px; }
  .footer .contact a { min-height: 44px; display: inline-flex; align-items: center; flex-wrap: wrap; }
  .header-cta .btn { min-height: 44px; }
  /* Footer nav links rendered at 18px — below the WCAG 2.5.8 AA floor of 24px, so they are raised.
     Stopped at 32px rather than the design system's 44px: with 39 links, 44px adds ~1000px of footer
     on a phone. Raising it the rest of the way is a design call — see the mobile report. */
  .footer ul { gap: 4px; }
  .footer ul a { min-height: 32px; display: inline-flex; align-items: center; }
}

/* ===================== Hero at-a-glance band, editorial prose, client-form UX ===================== */
.phero .hero-below.solo { grid-template-columns: minmax(0, 1fr); }
.phero .hero-below.solo .quick { max-width: 860px; }
.facts .v { font-size: .95rem; line-height: 1.35; }
.prose-editorial { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.5fr); gap: clamp(20px, 4vw, 56px); align-items: start; }
.prose-editorial .pe-head { position: sticky; top: calc(var(--sticky-top) + 8px); }
.prose-editorial .pe-head h2 { margin: 0; font-size: clamp(1.6rem, 2.6vw, 2.2rem); line-height: 1.15; letter-spacing: -.02em; }
.prose-editorial .pe-head .kicker { margin-bottom: 10px; }
.prose-editorial .pe-body { max-width: 62ch; }
.prose-editorial .pe-body > :first-child { margin-top: 0; }
.prose-editorial .pe-body h3 { margin-top: 1.4em; }
.prose-editorial .pe-body p { color: var(--slate); }
.prose-editorial .pe-body p strong { color: var(--ink); }
.prose-editorial .pe-body .btn-row { margin-top: 22px; }
@media (max-width: 860px) { .prose-editorial { grid-template-columns: minmax(0, 1fr); gap: 12px; } .prose-editorial .pe-head { position: static; } .prose-editorial .pe-body { max-width: none; } }
/* client forms: equal option cells, yes/no as a segmented pair, follow-up questions indented, sticky progress on phones */
.form fieldset { gap: 18px; }
.form legend { font-family: var(--font-display); font-size: 1.15rem; color: var(--ink); padding: 0 6px; }
.form fieldset > .small.muted { margin: -4px 0 0; }
.field-lbl, .field > label { line-height: 1.4; }
.opts { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.opts label { border-radius: 12px; padding: 10px 12px; min-height: 46px; background: #fff; transition: background var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.opts label:hover { border-color: var(--blue-300); }
.opts label:has(input:checked) { box-shadow: inset 0 0 0 1px var(--blue-500); }
.opts.pair { grid-template-columns: repeat(2, minmax(0, 140px)); }
.opts.inline { display: inline-flex; }
.field.follow-up { margin: -6px 0 0 14px; padding-left: 16px; border-left: 3px solid var(--blue-100); }
.field.follow-up label, .field.follow-up .field-lbl { font-size: .9rem; color: var(--slate); }
.form-wizard .form-progress { position: sticky; top: var(--sticky-top); z-index: 5; background: var(--paper); padding: 6px 0; }
.form .actions .btn { min-height: 48px; }
@media (max-width: 520px) { .opts { grid-template-columns: 1fr 1fr; } .opts.pair { grid-template-columns: 1fr 1fr; } .form fieldset { padding: 16px 14px 18px; border-radius: var(--r-md); } }

/* ---------- client forms index: grouped cards with badge / time / steps, and a linked "start here" timeline ---------- */
.fgroup + .fgroup { margin-top: clamp(28px, 4vw, 44px); }
.fgroup-head { display: flex; align-items: baseline; gap: 6px 18px; flex-wrap: wrap; margin-bottom: 16px; }
.fgroup-head h2 { font-size: clamp(1.15rem, 1.6vw, 1.35rem); margin: 0; }
.fgroup-head p { margin: 0; color: var(--mist); font-size: .95rem; }
.fcard { display: flex; flex-direction: column; text-decoration: none; color: inherit; }
.fcard .body { flex: 1; }
.fcard-main { display: block; min-width: 0; flex: 1; }
.fcard h3 { margin: 0 0 4px; font-size: 1.05rem; }
.fcard p { margin: 0; color: var(--mist); font-size: .95rem; }
.fcard-meta { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: center; margin-top: 12px; font-size: .8125rem; font-weight: 600; color: var(--blue-700); }
.fcard-meta em { font-style: normal; background: var(--blue-50); color: var(--blue-700); border-radius: var(--r-pill); padding: 3px 10px; }
.fcard-meta span { display: inline-flex; align-items: center; gap: 5px; color: var(--mist); }
.fcard-meta svg { width: 14px; height: 14px; flex: none; }
.fcard-go { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 22px; border-top: 1px solid var(--line); font-weight: 600; font-size: .9rem; color: var(--blue-600); }
.fcard-go svg { width: 16px; height: 16px; transition: transform var(--dur) var(--ease); }
.fcard:hover .fcard-go svg, .fcard:focus-visible .fcard-go svg { transform: translateX(4px); }
.tl-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-weight: 600; font-size: .92rem; color: var(--blue-600); text-decoration: none; }
.tl-link svg { width: 15px; height: 15px; transition: transform var(--dur) var(--ease); }
.tl-link:hover svg { transform: translateX(3px); }

/* ---------- partners: intro column (why the brands matter) + brand cards grouped by type, hole-free row shapes ---------- */
.partners-wrap { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.55fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.partners-intro .section-head { margin-bottom: 18px; }
.partners-intro .checklist { margin: 0; }
.partners-intro .tiny { color: var(--mist); margin: 16px 0 0; }
.pgroup + .pgroup { margin-top: 22px; }
.pgroup-h { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--blue-700); }
.pgroup-h svg { width: 16px; height: 16px; flex: none; }
.pgroup-h small { font-size: .8125rem; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--mist); background: #fff; border: 1px solid var(--line); border-radius: var(--r-pill); padding: 1px 8px; }
.partners { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.partners > li { grid-column: span 2; }
.partners:has(> :nth-child(2):last-child) > li, .partners:has(> :nth-child(4):last-child) > li { grid-column: span 3; }
.partners:has(> :nth-child(5):last-child) > li:nth-child(n+4) { grid-column: span 3; }
.partners:has(> :only-child) > li { grid-column: span 6; }
.partner { background: #fff; border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px; display: flex; gap: 14px; align-items: flex-start; min-width: 0; transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease); }
.partner:hover { transform: translateY(-2px); box-shadow: var(--sh-2); border-color: var(--blue-100); }
.pmark { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-family: var(--font-display); font-weight: 800; font-size: 1.15rem; line-height: 1; color: #fff; background: linear-gradient(135deg, var(--blue-700), var(--blue-500)); }
.partner.has-logo { flex-direction: column; align-items: flex-start; gap: 12px; padding: 18px 18px 16px; }
.plogo { display: flex; align-items: center; height: 42px; width: 100%; }
.plogo img { display: block; height: 42px; width: auto; max-width: min(100%, 165px); object-fit: contain; object-position: left center; }
.partner.has-logo .pbody { padding-top: 10px; border-top: 1px solid var(--line); width: 100%; }
.pbody { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.partner .wm { font-family: var(--font-display); font-weight: 800; font-size: 1.02rem; letter-spacing: -.01em; color: var(--blue-900); line-height: 1.2; }
.partner .pr { display: flex; flex-wrap: wrap; gap: 4px; }
.partner .pr span { font-size: .8125rem; font-weight: 600; color: var(--blue-800); background: var(--blue-50); border-radius: var(--r-pill); padding: 2px 8px; white-space: nowrap; }
.partner .kd { font-size: .8125rem; color: var(--mist); line-height: 1.4; }
@media (max-width: 1100px) { .partners-wrap { grid-template-columns: 1fr; gap: 28px; } }
@media (max-width: 640px) {
  /* two per row on a phone: keeps every partner on the page but halves the height (client brief, 2026-09-22) */
  .partners { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .partners > li, .partners:has(> :nth-child(n):last-child) > li:nth-child(n) { grid-column: auto; }
  .partner.has-logo { padding: 12px; gap: 8px; }
  .plogo { height: 30px; } .plogo img { height: 30px; max-width: 100%; }
  .partner.has-logo .pbody { padding-top: 8px; }
  .partner .pr span { font-size: .72rem; padding: 2px 6px; }
  .partner .kd { font-size: .74rem; }
}

/* ---------- results grid: show the whole before/after composite (labels are printed inside the photos) ---------- */
.gallery.ba-shots figure { aspect-ratio: 6 / 5; border-radius: var(--r-sm); }
.gallery.ba-shots figure img { object-fit: contain; background: var(--blue-50); }
.gallery.ba-shots figcaption { position: static; background: none; color: var(--mist); font-size: .8125rem; font-weight: 600; padding: 8px 2px 0; }
.gallery.ba-shots figure { overflow: visible; display: flex; flex-direction: column; aspect-ratio: auto; }
.gallery.ba-shots figure img { aspect-ratio: 6 / 5; border-radius: var(--r-sm); }
.ba-note { color: var(--mist); margin: 14px 2px 0; }

/* ---------- phone: keep the home page scannable (client review, 2026-09-22 — it ran ~34 screens) ---------- */
@media (max-width: 640px) {
  .vgrid.three { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  /* the odd third card centres under the pair at the SAME width, so all three read as equals
     rather than the last one looking like the featured clip */
  .vgrid.three .vcard:nth-child(3) { grid-column: span 2; max-width: calc(50% - 5px); margin-inline: auto; }
}
@media (max-width: 640px) {
  /* service cards go side-on: a 16:10 photo above each card cost ~460px per card on a phone */
  .hubcard { grid-template-rows: none; grid-template-columns: 116px minmax(0, 1fr); align-items: stretch; }
  .hubcard .thumb { aspect-ratio: auto; height: 100%; }
  .hubcard .body { padding: 12px 14px; gap: 5px; }
  .hubcard .body p { font-size: .9375rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
  .hubcard .count { padding-top: 6px; font-size: .8125rem; }
}
.tcard-price { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); font-size: .9rem; color: var(--mist); }
.tcard-price b { color: var(--blue-700); font-weight: 700; }

/* ---------- booking embeds: sized skeleton until the third-party form is mounted and measured ---------- */
.frame-hold { position: relative; min-height: 520px; }
.widget.tall.frame-hold { min-height: 780px; }
.frame-hold iframe { position: relative; z-index: 1; }
.frame-hold iframe:not([src]) { opacity: 0; }
.frame-skel { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; gap: 16px; padding: 28px 24px; background: #fff; border-radius: inherit; }
.frame-skel span { display: block; height: 46px; border-radius: var(--r-sm); background: linear-gradient(90deg, var(--blue-50) 0%, #F2F7FC 40%, var(--blue-50) 80%); background-size: 240% 100%; animation: ox-skel 1.4s var(--ease) infinite; }
.frame-skel span:nth-child(2) { animation-delay: .12s; } .frame-skel span:nth-child(3) { animation-delay: .24s; }
.frame-skel .t { height: 96px; }
.frame-skel .b { height: 52px; margin-top: auto; border-radius: var(--r-pill); background: var(--blue-100); animation: none; }
.frame-skel span:nth-child(4) { animation-delay: .36s; }
.frame-ready .frame-skel { opacity: 0; visibility: hidden; transition: opacity 260ms var(--ease), visibility 260ms; }
@keyframes ox-skel { 0% { background-position: 140% 0; } 100% { background-position: -40% 0; } }
@media (prefers-reduced-motion: reduce) { .frame-skel span { animation: none; } }
.book-aside { position: static; }
.book-aside .btn-row { flex-wrap: wrap; }
@media (max-width: 960px) { .book-aside { position: static; } }

/* ---------- signature: draw or type (a canvas alone is not keyboard-operable) ---------- */
.sig-modes { display: inline-flex; gap: 6px; margin: 6px 0 10px; }
.sig-modes .pill { cursor: pointer; border: 1px solid var(--line-2); background: #fff; }
.sig-modes .pill.on { background: var(--blue-600); color: #fff; border-color: var(--blue-600); }
.sig-typed { font-family: var(--font-display); font-size: 1.35rem; padding: 12px 16px; width: 100%; max-width: 560px; }
.chosen-note { margin: 0 0 14px; padding: 10px 14px; border-radius: var(--r-sm); background: var(--blue-50); border: 1px solid var(--blue-100); color: var(--blue-800); font-size: .9375rem; }
.person .thumb { aspect-ratio: 4/5; }
/* Two practitioners as portraits take half the page each (a ~740px-tall photo) and leave the row half
   empty. The pair goes side-on instead, as .grid.g1 > .tcard does. A third person restores the portraits. */
@media (min-width: 721px) {
  .team-grid:has(> :nth-child(2):last-child) > .person { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); align-items: stretch; }
  .team-grid:has(> :nth-child(2):last-child) > .person .thumb { aspect-ratio: auto; height: 100%; }
  .team-grid:has(> :nth-child(2):last-child) > .person .thumb img { height: 100%; object-fit: cover; }
  .team-grid:has(> :nth-child(2):last-child) > .person .body { align-content: center; }
}
.person-role { font-weight: 600; color: var(--blue-700); margin: 0 0 4px; }
.person-quals { font-size: .9375rem; color: var(--mist); margin: 0 0 8px; }

/* ---------- offer terms: the conditions sit beside the offer, not behind “terms apply” ---------- */
.offer-terms { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1px; margin: 0; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.offer-terms > div { background: #fff; padding: 14px 18px; }
.offer-terms:has(> :nth-child(5):last-child) > div:last-child { grid-column: 1 / -1; }
.offer-terms dt { font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; color: var(--mist); font-weight: 700; margin-bottom: 4px; }
.offer-terms dd { margin: 0; color: var(--ink); font-size: .9375rem; line-height: 1.5; }
/* the finder headings take focus programmatically between steps — no focus ring for a mouse user, one for keyboard */
.finder [tabindex="-1"]:focus { outline: none; }
.finder [tabindex="-1"]:focus-visible { outline: 2px solid var(--blue-600); outline-offset: 3px; }
.field label .star { color: #B42318; font-weight: 700; }

/* ---------- home page: tighter rhythm after the 2026-09-22 consolidation ----------
   Only the home page carries the full-screen `.hero`, so `body:has(.hero)` scopes this to it and leaves the
   187 inner pages on the standard rhythm. Section padding was 21% of the desktop page height before this. */
body:has(.hero) .section { padding-block: clamp(44px, 5.2vw, 76px); }
@media (max-width: 860px) { body:has(.hero) .section { padding-block: 40px; } }
/* the tail of the page (FAQ, one featured guide, closing band) closes up further */
body:has(.hero) .tagline-band { padding-block: clamp(36px, 4vw, 56px); }

/* one featured guide reads as a wide card, not a third of an empty row */
.post-grid:has(> .pcard:only-child) { grid-template-columns: minmax(0, 1fr); }
.post-grid > .pcard:only-child { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); align-items: stretch; }
/* the photo drives the row height, so cap its shape or the card towers over its three lines of text */
.post-grid > .pcard:only-child .thumb { aspect-ratio: 16 / 7; }
.post-grid > .pcard:only-child .thumb img { width: 100%; height: 100%; object-fit: cover; }
.post-grid > .pcard:only-child .body { align-content: center; }
@media (max-width: 640px) { .post-grid > .pcard:only-child { grid-template-columns: minmax(0, 1fr); } .post-grid > .pcard:only-child .thumb { aspect-ratio: 16 / 9; } }

/* the membership card joins the two promo cards as a full-width third row */
.promo-cards > .price:nth-child(3):last-child { grid-column: 1 / -1; }

/* the facts card grew to eight cells (skin tones, "good for"); keep the rows whole at 7 and 8 too */
@media (min-width: 981px) {
  .phero .hero-below .facts:has(> :nth-child(7):last-child) > div:nth-child(7) { grid-column: span 6; }
  .phero .hero-below .facts:has(> :nth-child(8):last-child) > div:nth-child(n+7) { grid-column: span 3; }
}

/* ---------- contact: two visibly different paths ----------
   "Ask a question" and "Request an appointment" used to read as one long column. Each is now its own card:
   the enquiry side stays white and neutral, the booking side takes the blue accent and the calendar icon. */
.contact-sec .contact-path { border-radius: var(--r-lg); padding: clamp(20px, 2.4vw, 28px); }
.contact-sec .contact-path.ask { background: #fff; border: 1px solid var(--line); }
.contact-sec .contact-path.book { background: var(--blue-50); border: 1px solid var(--blue-100); align-self: start; }
.contact-sec .contact-path .section-head { margin-bottom: 18px; }
.contact-sec .contact-path.ask .kicker { color: var(--mist); }
.contact-sec .contact-path.book .kicker { color: var(--blue-700); }
/* the booking card inside the blue panel keeps a white surface so its checklist stays readable */
.contact-sec .contact-path.book .book-aside { background: #fff; }
@media (max-width: 960px) { .contact-sec .contact-path { padding: 20px; } }

/* ---------- target size (WCAG 2.5.8 AA, 24x24) ----------
   Footer and mega-menu link lists were 18px tall, so a short label like "FAQ" was a 30x18 target.
   Inline padding would widen the hit area past the label, so only the block padding grows. */
.footer ul a, .mega .col a, .mega .dl a { display: inline-block; padding-block: 4px; }
.footer ul { gap: 4px; }

/* ---------- one control scale on desktop (client request, 2026-09-22) ----------
   The header "Book now" is the reference: min-height 42px, 7px/18px padding, 16px text, a 24px icon
   plate holding a 13px glyph — proportioned against the 58px header logo. The floating CTA (52px + a
   48px phone circle) and the hero buttons (56px) each ran on their own scale. Desktop only: below
   861px the floating CTA is not shown and the hero buttons keep their 46px touch height. */
@media (min-width: 861px) {
  .float-cta .btn-cta { min-height: 42px; padding: 7px 18px 7px 12px; font-size: 1rem; }
  .float-cta .btn-cta .ic { width: 24px; height: 24px; }
  .float-cta .btn-cta .ic svg { width: 13px; height: 13px; }
  .float-cta { gap: 8px; }
  .float-phone { width: 42px; height: 42px; }
  .float-phone svg { width: 17px; height: 17px; }
  /* the hero glyphs have no icon plate behind them, so they sit at 16px rather than the header's 13px */
  .hero .btn-row .btn { min-height: 42px; padding: 7px 18px; font-size: 1rem; gap: 8px; }
  .hero .btn-row .btn svg { width: 16px; height: 16px; }
}

/* ---------- merged home sections (client brief, 2026-09-22) ----------
   The concern grid + finder, results + reviews, and FAQ + featured guide each became one section, so the
   parts need their own internal spacing where a section gap used to do the job. */
.finder-split { margin-top: clamp(28px, 3vw, 44px); }
.rev-block { margin-top: clamp(32px, 3.4vw, 52px); padding-top: clamp(28px, 3vw, 44px); border-top: 1px solid var(--line); }
.faq-guide { margin-top: clamp(32px, 3.4vw, 52px); padding-top: clamp(28px, 3vw, 44px); border-top: 1px solid var(--line); }
.faq-guide .section-head.tight { margin-bottom: 18px; }
.faq-guide .section-head h3 { font-size: clamp(1.25rem, 1.8vw, 1.5rem); margin: 0; }

/* practitioner cards: .g3 already steps 3 -> 2 -> 1, so only the card internals need rules */
.person-spec { font-size: .9375rem; color: var(--slate); margin: 0 0 8px; }
.person .body .btn-link { margin-top: 10px; }

/* ---------- "Request appointment" is 19 characters where "Book now" was 8 ----------
   The accurate label has to fit the phone header (logo + CTA + burger) and the three-up sticky bar
   without wrapping or pushing the page sideways. Nothing here changes the desktop chrome. */
@media (max-width: 520px) {
  .header-cta .btn-cta { min-height: 40px; padding: 6px 12px; font-size: .8125rem; }
  .header-cta .btn-cta .ic { display: none; }
  .logo img { height: 40px; }
}
@media (max-width: 420px) { .logo img { height: 36px; } }
/* below 380px the logo, a 19-character CTA and the burger cannot share one row without the page
   scrolling sideways; the sticky bar carries the same action permanently on mobile, so the header
   keeps navigation only there. At 390px (the tested phone width) the CTA still shows. */
@media (max-width: 380px) { .header-cta .btn-cta { display: none; } }
/* the middle action carries the longest label, so it takes a bigger share of the bar */
@media (max-width: 860px) {
  .mbar { grid-template-columns: 0.8fr 1.55fr 1.05fr; }
  .mbar a { font-size: .875rem; }
  .mbar a.primary { padding-inline: 4px; }
}

/* the brand evidence sitting under the "why Oxyderm" columns */
.split-brands { margin-top: clamp(32px, 3.4vw, 52px); padding-top: clamp(28px, 3vw, 44px); border-top: 1px solid var(--line); }
.split-brands .brands-h { font-size: clamp(1.1rem, 1.5vw, 1.3rem); margin: 0 0 14px; }
.split-brands .brands-points { margin: 0 0 22px; }
@media (min-width: 861px) { .split-brands .brands-points { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 6px 28px; } }

/* the process sub-heading inside the merged overview section */
.how-h { font-size: clamp(1.05rem, 1.5vw, 1.25rem); margin: 22px 0 10px; }
/* the brand cards sit in a full-width wrap here, not the narrow partners column, so they need their own
   mid-width step: three per row squeezed a nowrap product pill past the viewport at 768px */
@media (max-width: 1100px) { .split-brands .partners > li { grid-column: span 3; } }
/* between 721 and 980px the promo block is still a two-column split, so two price cards inside its
   right column are only ~165px wide and their buttons push the page sideways: stack them there */
@media (max-width: 980px) and (min-width: 721px) { .promo-cards { grid-template-columns: minmax(0, 1fr); } }

/* ==========================================================================
   Mobile card density (client screenshots, 2026-09-23). Everything here is
   inside a max-width query, so the desktop layout is untouched.
   ========================================================================== */

@media (max-width: 720px) {
  /* the "Deal of the month" pill is floated above the card on desktop; in a stacked list it
     landed on top of the heading (12px overlap), so on phones it sits in the flow instead */
  .price .tag { position: static; align-self: flex-start; margin-bottom: 2px; }
  .price { padding: 18px; gap: 8px; }
  .price .amt { font-size: 1.9rem; }
  .price li { font-size: .9rem; padding-bottom: 6px; }
}

@media (max-width: 640px) {
  /* Short icon cards go two-up. Four near-identical white boxes stacked was ~800px of scrolling
     for ~14 words each; :has() keeps this off the photo cards that share the .g4 grid. */
  .grid.g4:has(> .feature) { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .grid.g4 > .feature { padding: 16px; }
  .grid.g4 > .feature .ico { width: 38px; height: 38px; border-radius: 11px; margin-bottom: 10px; }
  .grid.g4 > .feature .ico svg { width: 19px; height: 19px; }
  .grid.g4 > .feature h3 { font-size: .975rem; line-height: 1.25; margin-bottom: 4px; }
  .grid.g4 > .feature p { font-size: .875rem; line-height: 1.45; }

  /* Cards that stay one-up (longer copy) lose chrome, not legibility: the text size is unchanged. */
  .grid.g1 > .feature, .grid.g2 > .feature, .grid.g3 > .feature { padding: 18px; }
  .grid.g1 > .feature .ico, .grid.g2 > .feature .ico, .grid.g3 > .feature .ico { width: 40px; height: 40px; border-radius: 12px; margin-bottom: 10px; }
  .grid.g1 > .feature .ico svg, .grid.g2 > .feature .ico svg, .grid.g3 > .feature .ico svg { width: 20px; height: 20px; }
  .grid.g1 > .feature h3, .grid.g2 > .feature h3, .grid.g3 > .feature h3 { font-size: 1.02rem; margin-bottom: 4px; }

  /* the "why Oxyderm" rows: icon beside the copy, tighter */
  .feature-rows { gap: 10px; }
  .feature.row { padding: 14px; gap: 12px; }
  .feature.row .ico { width: 40px; height: 40px; border-radius: 12px; }
  .feature.row .ico svg { width: 20px; height: 20px; }
}

@media (max-width: 640px) {
  /* the in-flow tag above costs ~26px a card; take it back from the card's own chrome */
  .price .tag { font-size: .75rem; padding: 4px 10px; }
  .promo-cards { gap: 12px; }
  /* a wrapped price row dropped the amount onto its own line; floating it lets the label wrap around it */
  .price li { display: block; }
  .price li b { float: right; margin-left: 12px; }
}

@media (max-width: 520px) {
  /* Journey: the 46px connector runs and the 56px badges made three short steps very airy. */
  .steps { gap: 30px; }
  /* the 2-column layout hides the connector on odd cards; in one column every step needs it */
  .step + .step::before { display: block; top: -30px; height: 30px; }
  .step { padding: 16px 16px 18px; }
  .step .n { width: 44px; height: 44px; font-size: 1.05rem; margin: -38px 0 10px; border-width: 3px; }
  .step h3 { font-size: 1rem; margin-bottom: 4px; }
}

/* ---------- footer link groups ----------
   <details> so the columns can fold on phones; on desktop they are always open and look exactly as
   they did as a <p class="fh"> heading above a list. */
.fnav-group > summary.fh { list-style: none; cursor: default; }
.fnav-group > summary.fh::-webkit-details-marker { display: none; }
@media (max-width: 860px) {
  .fnav-group { border-bottom: 1px solid rgba(255,255,255,.12); }
  .fnav-group > summary.fh { cursor: pointer; display: flex; align-items: center; justify-content: space-between;
    min-height: 48px; margin: 0; padding: 4px 0; }
  .fnav-group > summary.fh::after { content: ""; width: 10px; height: 10px; flex: none; margin-left: 12px;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translate(-2px, -2px);
    transition: transform var(--dur) var(--ease); opacity: .7; }
  .fnav-group[open] > summary.fh::after { transform: rotate(-135deg) translate(-3px, -3px); }
  .fnav-group > ul { padding-bottom: 12px; }
}
@media (prefers-reduced-motion: reduce) { .fnav-group > summary.fh::after { transition: none; } }
@media (max-width: 560px) {
  /* the 32px grid gap plus each summary's 48px tap target left ~90px of dead space between
     collapsed groups; the group borders do the separating instead */
  .footer .top { gap: 0; }
  .footer .brand { margin-bottom: 26px; }
  .footer .top > div:last-child { margin-top: 22px; }
}

/* the client-video row inside the results section */
.vrow { margin-top: clamp(28px, 3vw, 40px); }
.vrow-h { font-size: clamp(1.02rem, 1.4vw, 1.2rem); margin: 0 0 14px; }

/* ==========================================================================
   Hero, requested 2026-09-23
   ========================================================================== */

/* The floating pause/play chip is out of the visual design. It stays in the DOM and becomes visible
   the moment it receives keyboard focus, so a keyboard user can still stop the background video —
   see the note in the handover: a pointer-only user now has no way to pause it (WCAG 2.2.2). */
.vctl:not(:focus-visible) { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.vctl:focus-visible { position: absolute; width: auto; height: auto; clip-path: none; margin: 0;
  padding: 8px 14px; min-height: 44px; }

@media (max-width: 860px) {
  /* hero content sits at the bottom of the first screen, not centred in it */
  .hero { align-items: end; }
  /* dvh so the hero is exactly the first screen: 100vh is taller than the visible area while the
     browser's own chrome is showing, which pushed the buttons under the fold */
  .hero { min-height: 100svh; min-height: 100dvh; }
  .hero .wrap { padding-block: clamp(96px, 16vh, 150px) clamp(26px, 4vh, 40px); }
}

/* six concern tiles in a four-up grid left a ragged 4 + 2; three-up gives two even rows */
@media (min-width: 961px) {
  .concern-grid:has(> :nth-child(6):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* The session planner shares a two-column grid with an optional feature card. The home page sets no
   card, so the planner sat in the left half with an empty right half; alone it centres instead. */
.grid.g2:has(> .planner:only-child) { grid-template-columns: minmax(0, 1fr); }
.planner:only-child { max-width: 720px; margin-inline: auto; }

/* A concern with a single recommended treatment rendered one full-width card with a 5:4 photo, which
   dominated the page. Alone, the card goes side-on like the featured guide. */
@media (min-width: 721px) {
  .grid.g1 > .tcard { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); align-items: stretch; }
  .grid.g1 > .tcard .thumb { aspect-ratio: auto; height: 100%; }
  .grid.g1 > .tcard .thumb img { height: 100%; object-fit: cover; }
  .grid.g1 > .tcard .body { align-content: center; }
}
