/* RawFit v2 — white + blue liquid glass.
   Light, airy, confident. Soft blue ambient field behind frosted glass; gradient pill buttons.
   HERO styles live in css/hero.css (the :where(.hero) block below is a zero-specificity fallback only).
   PLATES styles live in css/plates.css. */
:root{
  /* surfaces + ink */
  --bg:#F5F8FC;
  --surface:#FFFFFF;
  --ink:#0B1B33;
  --text:#43536B;
  --muted:#7A8AA3;      /* large/decorative only — use --text-2 for small copy */
  --text-2:#55657E;     /* AA on --bg for small text */
  --line:rgba(11,27,51,.08);
  /* blues */
  --blue-600:#1F5BFF;
  --blue-500:#3B82F6;
  --sky-400:#38BDF8;
  --ice:#E8F0FF;
  --deep:#0A2A6B;
  --grad:linear-gradient(135deg,#1F5BFF 0%,#3B82F6 55%,#38BDF8 100%);
  /* buttons: same blue→sky direction, held a touch deeper so white label text stays >= 4.5:1 (AA) at rest and on hover */
  --grad-btn:linear-gradient(135deg,#1F5BFF 0%,#2259EE 50%,#1A78E6 100%);
  --grad-text:linear-gradient(120deg,#1F5BFF 0%,#2F6BFA 60%,#3B82F6 100%);
  /* glass */
  --glass-bg:rgba(255,255,255,.55);
  --glass-bg-strong:rgba(255,255,255,.74);
  --glass-on-photo:rgba(255,255,255,.18);
  --glass-blur:blur(20px) saturate(180%);
  --glass-border:1px solid rgba(255,255,255,.7);
  --glass-hi:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -1px 0 rgba(10,42,107,.06);
  --shadow:0 20px 50px -20px rgba(10,42,107,.25);
  --shadow-sm:0 8px 24px -12px rgba(10,42,107,.22);
  --shadow-btn:0 10px 30px -10px rgba(31,91,255,.55);
  /* type */
  --display:"Archivo","Inter Display","Inter",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --body:"Manrope","Inter",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  /* scale */
  --wrap:1200px;
  --gut:clamp(16px,4vw,40px);
  --r-xs:12px; --r-sm:16px; --r:22px; --r-lg:28px; --r-xl:36px; --pill:999px;
  --sp-1:8px; --sp-2:16px; --sp-3:24px; --sp-4:32px; --sp-5:48px; --sp-6:72px;
  --section:clamp(72px,10vw,136px);
  /* stacking map — page content: auto/0-10 · #hero internals: <=10 (HERO) · #plates-layer: 20-60 (PLATES)
     header: 900 · dock: 900 · skip link: 1000. Ambient field sits at -1. */
  --z-header:900;
  --z-dock:900;
  --z-skip:1000;
  --topbar-h:84px;
  color-scheme:light;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
/* NB: no overflow:hidden on html/body/main (sticky/pinned children). overflow-x:clip trims blobs without a scroll container. */
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:var(--bg);scroll-padding-top:96px}
body{margin:0;background:transparent;color:var(--text);font-family:var(--body);font-size:16px;line-height:1.6;overflow-x:hidden;overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
main{display:block;position:relative}
img{max-width:100%;display:block}
a{color:inherit}
p{margin:0}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
:focus-visible{outline:2px solid var(--blue-600);outline-offset:3px;border-radius:10px}
::selection{background:#CFE0FF;color:var(--ink)}
.skip{position:absolute;left:-999px;top:12px;background:var(--blue-600);color:#fff;padding:10px 16px;border-radius:var(--pill);z-index:var(--z-skip);font-weight:700;text-decoration:none}
.skip:focus{left:16px}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.section{padding-block:var(--section) 0}

h1,h2,h3{font-family:var(--display);color:var(--ink);font-weight:800;font-stretch:106%;line-height:1.02;letter-spacing:-.035em;margin:0;text-wrap:balance}
h2{font-size:clamp(34px,4.8vw,60px)}
h3{font-size:20px;font-weight:700;font-stretch:100%;line-height:1.2;letter-spacing:-.015em}
.grad{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;padding-bottom:.06em}
.tag{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;margin:0}
/* eyebrows: sentence-case pill, same type as the hero eyebrow (QA: one eyebrow style site-wide) */
.eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 var(--sp-2);font:600 13px/1.2 var(--body);letter-spacing:.01em;text-transform:none;color:var(--deep);padding:7px 14px 7px 10px;border-radius:var(--pill);background:rgba(232,240,255,.85);border:1px solid rgba(31,91,255,.12)}
.eyebrow::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:linear-gradient(135deg,var(--blue-600),var(--sky-400));box-shadow:0 0 0 4px rgba(31,91,255,.12)}
.tag{color:var(--text-2)}
.lede{color:var(--text);max-width:52ch;font-size:clamp(16px,1.35vw,18px);line-height:1.65;margin-top:var(--sp-2)}
.section-head{margin-bottom:clamp(32px,4vw,56px)}
.section-head h2{max-width:18ch}
.stars{color:#F5A623;letter-spacing:2px}

/* ---------- ambient field ---------- */
.ambient{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:
  radial-gradient(1200px 600px at 50% -10%,#FFFFFF 0%,rgba(255,255,255,0) 70%),var(--bg)}
/* perf (QA): no filter:blur on the blobs — a blurred, animated 56vmax layer re-rasterised every frame and was the single
   biggest paint cost. The radial gradients below fall off to transparent on their own, so they read the same. */
.blob{position:absolute;display:block;border-radius:50%;opacity:.55;will-change:transform}
.b1{width:56vmax;height:56vmax;left:-18vmax;top:-20vmax;background:radial-gradient(circle at 50% 50%,#BBD3FF 0%,rgba(187,211,255,.55) 30%,rgba(187,211,255,0) 70%);animation:drift1 28s ease-in-out infinite alternate}
.b2{width:48vmax;height:48vmax;right:-16vmax;top:18vh;background:radial-gradient(circle at 50% 50%,#BDE9FF 0%,rgba(189,233,255,.55) 30%,rgba(189,233,255,0) 70%);animation:drift2 34s ease-in-out infinite alternate}
.b3{width:44vmax;height:44vmax;left:20vw;bottom:-24vmax;background:radial-gradient(circle at 50% 50%,#D3DEFF 0%,rgba(211,222,255,.55) 30%,rgba(211,222,255,0) 70%);animation:drift3 40s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate3d(8vw,10vh,0) scale(1.08)}}
@keyframes drift2{to{transform:translate3d(-10vw,-6vh,0) scale(.94)}}
@keyframes drift3{to{transform:translate3d(-6vw,-12vh,0) scale(1.1)}}

/* ---------- glass utilities ---------- */
/* perf (QA): backdrop-filter is reserved for surfaces that float over moving content (header, dock, photo captions,
   the coaching chip, hero pills). Static cards sit on the already-soft ambient field, where a blur is invisible but
   costs a full re-blur per frame — they get a slightly denser white with a faint top-lit gradient instead. */
.glass,.glass-strong{background:linear-gradient(180deg,rgba(255,255,255,.78),rgba(255,255,255,.6));border:var(--glass-border);box-shadow:var(--glass-hi),var(--shadow)}
.glass-strong{background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,.76))}
.topbar-pill,.dock,.chip,.m figcaption{-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.topbar-pill.glass{background:var(--glass-bg)}
.dock.glass-strong{background:var(--glass-bg-strong)}
.glass-photo{background:var(--glass-on-photo);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px 0 rgba(255,255,255,.5)}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .glass{background:rgba(255,255,255,.88)}
  .glass-strong{background:rgba(255,255,255,.95)}
  .glass-photo{background:rgba(11,27,51,.55)}
}

/* ---------- buttons ---------- */
.btns{display:flex;flex-wrap:wrap;gap:12px}
.btn{--h:52px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--h);padding:0 24px;border-radius:var(--pill);font-family:var(--body);font-weight:700;font-size:15px;letter-spacing:-.005em;line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;border:0;
  transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s ease,background-position .5s ease,background-color .25s ease}
.btn-sm{--h:44px;padding:0 18px;font-size:14px}
.btn-primary{color:#fff;background:var(--grad-btn);background-size:170% 170%;background-position:0% 0%;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -1px 0 rgba(10,42,107,.18),var(--shadow-btn);text-shadow:0 1px 1px rgba(10,42,107,.28)}
.btn-primary:hover{background-position:45% 45%;transform:translateY(-1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -1px 0 rgba(10,42,107,.18),0 14px 34px -10px rgba(31,91,255,.62)}
.btn-primary:active{transform:translateY(0)}
.btn-glass{color:var(--ink);background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.85);box-shadow:var(--glass-hi),var(--shadow-sm)}
.btn-glass:hover{background:rgba(255,255,255,.85);transform:translateY(-1px)}
.btn:focus-visible{outline:2px solid var(--blue-600);outline-offset:3px;border-radius:var(--pill)}
@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.btn-glass{background:rgba(255,255,255,.92)}}
.text-link{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--blue-600);font-weight:700;text-decoration:none}
.text-link:hover{text-decoration:underline;text-underline-offset:4px}

/* ---------- header: glass pill, shrinks on scroll ---------- */
.topbar{position:fixed;inset:0 0 auto 0;z-index:var(--z-header);padding:calc(env(safe-area-inset-top,0px) + 14px) var(--gut) 0;pointer-events:none;transition:padding .35s cubic-bezier(.2,.8,.2,1)}
.topbar-pill{pointer-events:auto;max-width:1120px;margin-inline:auto;display:flex;align-items:center;gap:var(--sp-2);padding:8px 8px 8px 22px;border-radius:var(--pill);transition:padding .35s cubic-bezier(.2,.8,.2,1),background .3s,box-shadow .3s}
.brand{display:flex;align-items:center;min-height:44px;border-radius:12px}
.brand img{width:58px;height:auto;transition:width .35s cubic-bezier(.2,.8,.2,1)}
.topnav{display:flex;gap:2px;margin-inline:auto}
.topnav a{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:var(--pill);font-size:14px;font-weight:600;color:var(--ink);text-decoration:none;transition:background .2s,color .2s}
.topnav a:hover{background:rgba(31,91,255,.07);color:var(--blue-600)}
.topnav a.is-active{background:rgba(31,91,255,.1);color:var(--blue-600)}
.loc-pill{display:none;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:var(--pill);font-size:14px;font-weight:600;color:var(--ink);text-decoration:none;background:rgba(232,240,255,.7)}
.loc-pill svg{width:16px;height:16px;color:var(--blue-600)}
.topbar.is-scrolled{padding-top:calc(env(safe-area-inset-top,0px) + 8px)}
.topbar.is-scrolled .topbar-pill{padding:5px 5px 5px 18px;background:rgba(255,255,255,.72);box-shadow:var(--glass-hi),0 16px 40px -18px rgba(10,42,107,.3)}
.topbar.is-scrolled .brand img{width:50px}
@media (max-width:899px){
  .topnav{display:none}
  .topbar-pill{justify-content:space-between;padding-left:18px}
  .loc-pill{display:inline-flex;margin-left:auto}
  .topbar-cta{display:none}
}

/* ---------- bottom dock ---------- */
.dock{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 14px);transform:translateX(-50%);z-index:var(--z-dock);display:flex;align-items:center;gap:2px;padding:6px;border-radius:var(--pill);max-width:calc(100vw - 24px);
  transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s,visibility .3s}
.dock a:not(.btn){display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:var(--pill);font-size:14px;font-weight:600;color:var(--ink);text-decoration:none;white-space:nowrap;transition:background .2s,color .2s}
.dock a:not(.btn):hover{background:rgba(31,91,255,.07)}
.dock a.is-active{background:var(--ice);color:var(--blue-600)}
.dock-cta{margin-left:4px}
@media (max-width:420px){.dock a.opt2{display:none}.dock a:not(.btn){padding:0 11px}.dock-cta{padding:0 14px}}
@media (max-width:340px){.dock a.opt{display:none}}
/* desktop: the header carries nav over the hero; the dock floats in once the hero is behind you */
/* QA: on >=900px the header pill already carries the nav + Join CTA, so the dock would only duplicate it. */
@media (min-width:900px){
  .dock{display:none}
}

/* ---------- HERO fallback (zero specificity — css/hero.css overrides freely) ---------- */
:where(.hero){position:relative;display:grid;grid-template-columns:minmax(0,45fr) minmax(0,55fr);grid-template-areas:"copy media";align-items:center;gap:clamp(24px,4vw,56px);
  max-width:1280px;margin-inline:auto;min-height:min(100svh,940px);padding:calc(var(--topbar-h) + 40px) var(--gut) 56px}
:where(.hero-copy){grid-area:copy;max-width:560px}
:where(.hero-media){grid-area:media;position:relative;align-self:stretch;min-height:420px;border-radius:var(--r-xl);overflow:hidden;
  background:radial-gradient(120% 90% at 70% 20%,#DCE8FF 0%,#C5DAFF 35%,#9DC4FF 70%,#7FB2FF 100%);box-shadow:var(--glass-hi),var(--shadow)}
/* (QA) the :empty orb fallback was removed: it merged with css/hero.css ::before/::after and broke the no-JS media panel */
:where(.hero-eyebrow){display:inline-flex;align-items:center;gap:10px;margin:0 0 22px;padding:7px 14px 7px 10px;border-radius:var(--pill);font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--blue-600);
  background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.85);box-shadow:var(--glass-hi),var(--shadow-sm);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
:where(.hero-eyebrow)::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--grad);box-shadow:0 0 0 3px rgba(31,91,255,.14)}
:where(.hero h1){font-size:clamp(44px,6.2vw,92px);line-height:.98;letter-spacing:-.045em;font-stretch:108%}
:where(.hero-lede){margin-top:22px;font-size:clamp(17px,1.4vw,19px);line-height:1.6;color:var(--text);max-width:44ch}
:where(.hero-cta){display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
:where(.hero-ticks){list-style:none;margin:32px 0 0;padding:0;display:grid;gap:12px}
:where(.hero-ticks li){position:relative;padding-left:32px;font-weight:600;color:var(--ink);font-size:15px;line-height:1.5}
:where(.hero-ticks li)::before{content:"";position:absolute;left:0;top:1px;width:20px;height:20px;border-radius:50%;background:var(--grad);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 4px 10px -4px rgba(31,91,255,.6)}
:where(.hero-ticks li)::after{content:"";position:absolute;left:7px;top:5px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
:where(.hero-trust){display:inline-flex;align-items:center;gap:8px;margin-top:28px;padding-top:20px;border-top:1px solid var(--line);font-size:14px;font-weight:600;color:var(--text-2)}
@media (max-width:899px){
  :where(.hero){grid-template-columns:minmax(0,1fr);grid-template-areas:"copy" "media";min-height:0;padding-top:calc(var(--topbar-h) + 24px);gap:32px}
  :where(.hero-media){min-height:360px;height:360px;border-radius:var(--r-lg)}
}

/* ---------- glance ---------- */
.glance-in{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(32px,4vw,48px)}
.glance-copy{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2) clamp(24px,5vw,72px);align-items:end}
.glance-copy .eyebrow{grid-column:1/-1;justify-self:start;margin:0}
.glance-copy .lede{margin:0;justify-self:end}
.glance-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-2)}
.gcard{position:relative;display:flex;flex-direction:column;gap:6px;padding:24px;border-radius:var(--r);min-height:200px}
.gicon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--grad);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 8px 18px -8px rgba(31,91,255,.6);margin-bottom:auto}
.gicon svg{width:20px;height:20px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.gcard .tag{margin-top:20px}
.gcard strong{font-family:var(--display);font-size:clamp(30px,2.8vw,40px);font-weight:800;font-stretch:104%;letter-spacing:-.035em;color:var(--ink);line-height:1.05;font-variant-numeric:tabular-nums}
.gcard strong small{font-size:.5em;color:var(--muted);font-weight:700;letter-spacing:0;margin-left:2px}
.gsub{font-size:14px;color:var(--text-2);font-weight:500}
.gsub .stars{font-size:12px;margin-right:4px}
.gquote{font-family:var(--display);font-size:19px;font-weight:700;font-stretch:100%;letter-spacing:-.015em;line-height:1.3;color:var(--ink)}

/* ---------- marquee ---------- */
.marquee{margin-top:var(--section);padding:18px 0;border-block:1px solid rgba(11,27,51,.06);background:rgba(255,255,255,.45);overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.marquee-track{display:flex;align-items:center;gap:28px;width:max-content;animation:marquee 38s linear infinite}
.marquee span{font-family:var(--display);font-weight:700;font-stretch:104%;font-size:clamp(20px,2.2vw,28px);letter-spacing:-.025em;color:var(--ink);white-space:nowrap}
.marquee i{width:8px;height:8px;border-radius:50%;background:var(--grad);flex:none;opacity:.85}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ---------- stats ---------- */
.stats-sec{padding-top:var(--section)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-radius:var(--r-lg);padding:clamp(24px,3vw,40px) 0}
.stat{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:8px 16px}
.stat+.stat{border-left:1px solid var(--line)}
.stat strong{font-family:var(--display);font-weight:800;font-stretch:104%;font-size:clamp(40px,5vw,64px);letter-spacing:-.045em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.stat strong em{font-style:normal;background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;font-size:.6em;letter-spacing:-.02em}
.stat>span{font-size:14px;color:var(--text-2);font-weight:600}

/* ---------- programs ---------- */
.prog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}
.card{display:flex;flex-direction:column;padding:10px;border-radius:var(--r-lg);transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s}
.card:hover{transform:translateY(-4px);box-shadow:var(--glass-hi),0 30px 60px -24px rgba(10,42,107,.32)}
.frame{position:relative;overflow:hidden;border-radius:calc(var(--r-lg) - 8px);background:#DCE6F5;isolation:isolate}
.frame::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.7);pointer-events:none;z-index:2}
/* gentle cool lift for the dark Instagram frames — people stay natural */
.frame img,.m img{width:100%;height:100%;object-fit:cover;filter:brightness(1.06) contrast(.97) saturate(.94)}
.frame::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(56,189,248,.06),rgba(31,91,255,.10));mix-blend-mode:soft-light}
.card .frame{aspect-ratio:4/3.4}
.card .frame img{object-position:50% 40%;transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.card:hover .frame img{transform:scale(1.03)}
.card-body{padding:18px 14px 16px;display:grid;gap:8px}
.card-body .tag{color:var(--blue-600)}
.card-body p{font-size:15px;color:var(--text);line-height:1.55}

/* ---------- coaching ---------- */
.coaching-in{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,6vw,96px);align-items:center}
.coach-photo{position:relative;margin:0;max-width:440px;justify-self:center;width:100%}
.coach-photo .frame{aspect-ratio:4/5;border-radius:var(--r-xl);box-shadow:var(--shadow)}
.coach-photo .frame img{object-position:50% 35%}
.chip{position:absolute;right:-24px;bottom:32px;z-index:3;display:grid;gap:2px;padding:16px 20px;border-radius:var(--r);min-width:160px}
.chip strong{font-family:var(--display);font-size:32px;font-weight:800;letter-spacing:-.04em;color:var(--ink);line-height:1.05}
.chip span:last-child{font-size:13px;color:var(--text-2);font-weight:600}
.chip .tag{color:var(--blue-600)}
.ticks{list-style:none;margin:var(--sp-4) 0;padding:0;display:grid;gap:14px}
.ticks li{position:relative;padding-left:34px;font-weight:600;color:var(--ink);line-height:1.5}
.ticks li::before{content:"";position:absolute;left:0;top:1px;width:22px;height:22px;border-radius:50%;background:var(--grad);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 4px 10px -4px rgba(31,91,255,.6)}
.ticks li::after{content:"";position:absolute;left:8px;top:6px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}

/* ---------- results ---------- */
.results-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--sp-3);align-items:start}
.result-photo{margin:0;padding:10px;border-radius:var(--r-lg);position:sticky;top:110px}
.result-photo .frame{aspect-ratio:1}
.result-photo img{filter:none}
.result-photo figcaption{display:grid;gap:2px;padding:16px 12px 8px}
.result-photo figcaption strong{font-family:var(--display);font-size:24px;font-weight:800;letter-spacing:-.03em;color:var(--ink)}
.result-photo figcaption span{color:var(--text-2);font-size:15px}
.quotes{display:grid;gap:var(--sp-2)}
.rating-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:20px 24px;border-radius:var(--r-lg)}
.rating-num{font-family:var(--display);font-weight:800;font-size:56px;letter-spacing:-.05em;line-height:1;background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.rating-meta{display:grid;gap:2px;font-size:14px;font-weight:600;color:var(--text-2)}
.rating-meta .stars{font-size:16px}
.quotes blockquote{margin:0;padding:24px 28px;border-radius:var(--r)}
.quotes blockquote p{font-family:var(--display);font-size:clamp(18px,1.6vw,21px);font-weight:600;font-stretch:100%;line-height:1.45;letter-spacing:-.012em;color:var(--ink)}
.quotes cite{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-style:normal;font-size:13px;font-weight:600;color:var(--text-2)}
.quotes cite::before{content:"";width:16px;height:16px;border-radius:50%;background:conic-gradient(from 200deg,#4285F4,#34A853,#FBBC05,#EA4335,#4285F4);-webkit-mask:radial-gradient(circle,transparent 4px,#000 4.5px);mask:radial-gradient(circle,transparent 4px,#000 4.5px)}

/* ---------- community mosaic ---------- */
.mosaic{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:clamp(150px,15vw,200px);gap:var(--sp-2)}
.m{position:relative;margin:0;border-radius:var(--r-lg);overflow:hidden;background:#DCE6F5;box-shadow:var(--shadow);isolation:isolate}
.m::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5);pointer-events:none}
.m1{grid-column:1/5;grid-row:span 3}
.m2{grid-column:5/9;grid-row:span 2}
.m3{grid-column:9/13;grid-row:span 2}
.m4{grid-column:5/9;grid-row:span 1}
.m5{grid-column:9/13;grid-row:span 1}
.m1 img{object-position:50% 50%}
.m2 img{object-position:50% 30%}
.m3 img{object-position:50% 25%}
.m4 img{object-position:50% 18%}
.m5 img{object-position:50% 40%}
.m figcaption{position:absolute;left:12px;bottom:12px;right:auto;max-width:calc(100% - 24px);padding:8px 14px;border-radius:var(--pill);font-size:13px;font-weight:700;color:var(--ink);line-height:1.3;z-index:2;box-shadow:var(--glass-hi),0 8px 20px -10px rgba(10,42,107,.4)}

/* ---------- membership ---------- */
.plan-panel{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,72px);align-items:center;padding:clamp(28px,5vw,64px);border-radius:var(--r-xl)}
.plan-panel::before{content:"";position:absolute;width:520px;height:520px;right:-160px;top:-220px;border-radius:50%;background:radial-gradient(circle,rgba(59,130,246,.22),rgba(56,189,248,0) 65%);pointer-events:none;z-index:-1}
.plan .btns{margin-top:var(--sp-4)}
.plan-list{list-style:none;margin:0;padding:8px 0;border-radius:var(--r);background:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.9);box-shadow:var(--glass-hi)}
.plan-list li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 22px;font-size:15px}
.plan-list li+li{border-top:1px solid var(--line)}
.plan-list span{color:var(--text)}
.plan-list b{color:var(--ink);font-weight:700;text-align:right}

/* ---------- visit ---------- */
.visit{padding-bottom:var(--section)}
.visit-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,6vw,96px);align-items:center}
.visit-photo{margin:0;max-width:420px;width:100%;justify-self:center}
.visit-photo .frame{aspect-ratio:4/5;border-radius:var(--r-xl);box-shadow:var(--shadow)}
.visit-photo .frame img{object-position:50% 30%}
.info{margin:var(--sp-4) 0;padding:6px 24px;border-radius:var(--r-lg)}
.info>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;padding:16px 0}
.info>div+div{border-top:1px solid var(--line)}
.info dt{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);padding-top:3px}
.info dd{margin:0;color:var(--ink);font-weight:600;line-height:1.5}
.info a{color:var(--blue-600);text-decoration:none;display:inline-block;padding-block:10px;margin-block:-10px}
.info a:hover{text-decoration:underline;text-underline-offset:3px}

/* ---------- footer ---------- */
.footer{position:relative;padding:40px 0 calc(env(safe-area-inset-bottom,0px) + 112px);background:rgba(255,255,255,.6);border-top:1px solid rgba(11,27,51,.06)}
.footer-in{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px 48px;align-items:center}
.footer-brand{display:flex;align-items:center;gap:16px}
.footer-brand img{width:64px;height:auto}
.footer-brand p{font-size:14px;color:var(--text-2);max-width:34ch}
.footer-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}
.footer-links a,.footer-meta a{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border-radius:var(--pill);font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
.footer-links a:hover,.footer-meta a:hover{background:rgba(31,91,255,.07);color:var(--blue-600)}
.footer-meta{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:16px;border-top:1px solid var(--line);font-size:13px;color:var(--text-2)}
.footer-meta a{font-size:13px}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .glance-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gcard{min-height:180px}
}
@media (max-width:1023px){
  .prog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .chip{right:-8px}
}
@media (max-width:899px){
  .glance-copy{grid-template-columns:minmax(0,1fr)}
  .glance-copy .lede{justify-self:start}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr));padding:8px 0}
  .stat{padding:20px 12px}
  .stat+.stat{border-left:0}
  .stat:nth-child(even){border-left:1px solid var(--line)}
  .stat:nth-child(n+3){border-top:1px solid var(--line)}
  .coaching-in,.visit-grid,.results-grid{grid-template-columns:minmax(0,1fr)}
  .coach-photo,.visit-photo{max-width:380px}
  .result-photo{position:relative;top:0;max-width:440px;width:100%;justify-self:center}
  .plan-panel{grid-template-columns:minmax(0,1fr)}
  .mosaic{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:clamp(150px,36vw,240px)}
  .m1{grid-column:1/-1;grid-row:span 2}
  .m2,.m3{grid-column:auto;grid-row:span 2}
  .m4,.m5{grid-column:auto;grid-row:span 1}
}
@media (max-width:640px){
  .section{padding-top:88px}
  h2{font-size:clamp(32px,9vw,40px)}
  .glance-cards{gap:12px}
  .gcard{padding:18px;min-height:168px;border-radius:var(--r)}
  .gcard .tag{margin-top:16px;font-size:11px}
  .gquote{font-size:16px}
  .gcard strong{font-size:28px}
  /* programs: swipeable glass rail on phones */
  .prog-grid{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px var(--gut) 24px;margin-inline:calc(var(--gut) * -1);scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  .prog-grid::-webkit-scrollbar{display:none}
  .prog-grid .card{flex:0 0 80%;scroll-snap-align:center}
  .chip{right:12px;bottom:16px}
  .rating-card{grid-template-columns:auto 1fr;gap:12px 16px}
  .rating-card .text-link{grid-column:1/-1}
  .rating-num{font-size:48px}
  .quotes blockquote{padding:20px 22px}
  .info{padding:4px 18px}
  .info>div{grid-template-columns:minmax(0,1fr);gap:4px}
  .plan-list li{padding:14px 16px;font-size:14px}
  .footer-in{grid-template-columns:minmax(0,1fr)}
  .footer-links{margin-inline:-12px}
  .footer-meta{flex-wrap:wrap;gap:4px}
  .footer-meta a{margin-left:-12px}
  .btns .btn{flex:1 1 auto}
}

@media (min-width:900px){.footer{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 40px)}} /* no dock on desktop */

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .blob,.marquee-track{animation:none}
  .card,.card .frame img,.btn,.topbar,.topbar-pill,.dock{transition:none}
}
