/* styles.css — Modern Play Gym v2 (Option E "Big Air + Bento"). Every value resolves to tokens.css. */

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--space-24)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--font-weight-body);line-height:var(--leading-body);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
h1,h2,h3{font-family:var(--font-head);font-weight:var(--font-weight-head);letter-spacing:var(--tracking-display);line-height:var(--leading-display);margin:0;text-wrap:balance}
h4{font-family:var(--font-body);font-weight:var(--font-weight-black);margin:0 0 var(--space-3);font-size:var(--text-base)}
.group-label{font-family:var(--font-body);font-weight:var(--font-weight-black)}
h1{font-size:var(--text-display-l)}
h2{font-size:var(--text-display-l)}
h3{font-size:var(--text-display-s)}
/* uppercase is reserved for heroes, full-bleed bands and accents; other headings are Title Case in the source */
.hero h1,.page-hero h1,.utility h1,.band h2,.ftr .top h2{text-transform:uppercase}
.d-xl{font-size:var(--text-display-xl)}
.d-l{font-size:var(--text-display-l)}
.d-m{font-size:var(--text-display-m)}
.d-s{font-size:var(--text-display-s)}
p{margin:0 0 var(--space-4);text-wrap:pretty}
p,li{max-width:var(--measure)}
ul,ol{margin:0 0 var(--space-4);padding-left:var(--space-6)}
strong,b{font-weight:var(--font-weight-black)}
small{font-size:var(--text-sm)}
address{font-style:normal}
button{font:inherit;color:inherit}
:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-surface),0 0 0 6px var(--color-focus);border-radius:var(--radius-sm)}
.on-dark :focus-visible,.hdr :focus-visible,.sec--ink :focus-visible,.band :focus-visible,.hero :focus-visible,.panel:focus-visible,.loc :focus-visible,.cell--ink :focus-visible,.cell--photo :focus-visible,.page-hero--photo :focus-visible{box-shadow:0 0 0 3px var(--color-surface-inverse),0 0 0 6px var(--color-focus-inverse)}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:var(--space-4);top:-100px;z-index:100;background:var(--color-sun);color:var(--color-ink);padding:var(--space-3) var(--space-4);border-radius:var(--radius-pill);font-weight:var(--font-weight-black);text-decoration:none}
.skip-link:focus{top:var(--space-4)}
@supports (animation-timeline: view()){
  .reveal{animation:rise var(--dur-slow) var(--ease) both;animation-timeline:view();animation-range:entry 0% entry 30%}
  @keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){.reveal{animation:none}}

/* ---------- Layout & type utilities ---------- */
.wrap{width:min(100% - 2*var(--gutter),var(--container));margin-inline:auto}
.wrap--narrow{width:min(100% - 2*var(--gutter),var(--container-narrow));margin-inline:auto}
.sec{padding-block:var(--section-y);position:relative}
.sec--lg{padding-block:var(--section-y-lg)}
.sec--soft{background:var(--color-surface-2)}
.sec--ink{background:var(--color-surface-inverse);color:var(--color-on-inverse)}
.sec--ink .eyebrow{color:var(--color-sun)}
.sec--ink .lede,.sec--ink .fine{color:var(--color-on-inverse-muted)}
.sec__head{display:grid;gap:var(--space-3);margin-bottom:var(--space-8);max-width:58rem}
.sec__head--center{margin-inline:auto;text-align:center;justify-items:center}
.eyebrow{display:block;font-weight:var(--font-weight-black);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;font-size:var(--text-eyebrow);color:var(--color-brand-deep)}
.lede{font-size:var(--text-lg);max-width:var(--measure-lede);font-weight:var(--font-weight-medium);color:var(--color-ink-2)}
.fine{font-size:var(--text-sm);color:var(--color-ink-muted);max-width:70ch}
.grid{display:grid;gap:var(--space-6)}
.grid>*{min-width:0}
@media (min-width:700px){.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}}
.split{display:grid;gap:var(--space-10);align-items:center}
.split>*{min-width:0}
@media (min-width:900px){.split{grid-template-columns:1.1fr .9fr}.split--flip>:first-child{order:2}}
.stack>*+*{margin-top:var(--space-4)}
.row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}
.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-10{margin-top:var(--space-10)}.mb-0{margin-bottom:0}
.center{text-align:center}
.link{font-weight:var(--font-weight-black);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px;text-decoration-color:var(--color-brand)}
.link:hover{text-decoration-color:var(--color-sun)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:var(--font-weight-black);font-size:var(--text-sm);padding:var(--btn-pad);min-height:var(--btn-min-h);border-radius:var(--radius-pill);text-decoration:none;border:0;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease);white-space:nowrap;cursor:pointer;line-height:1.2;max-width:100%}
.btn:hover{transform:translateY(-2px)}
.btn--sun{background:var(--color-sun);color:var(--color-ink)}
.btn--ink{background:var(--color-ink);color:var(--color-on-inverse)}
.btn--white{background:var(--color-surface-raised);color:var(--color-ink)}
.btn--teal{background:var(--color-brand);color:var(--color-ink)}
.btn--coral{background:var(--color-coral);color:var(--color-ink)}
.btn--soft{background:var(--color-brand-soft);color:var(--color-ink)}
.btn svg{width:1.1em;height:1.1em;flex:none}
@media (max-width:480px){.btn{white-space:normal;text-align:center}}

/* ---------- Tags, pills, chips ---------- */
.tag{display:inline-flex;align-items:center;gap:var(--space-1);background:var(--color-surface-raised);color:var(--color-ink);border-radius:var(--radius-pill);padding:var(--chip-pad);font-weight:var(--font-weight-black);font-size:var(--text-xs);width:max-content;max-width:100%;line-height:1.2}
.tag--sun{background:var(--color-sun)}.tag--pink{background:var(--color-pink)}.tag--teal{background:var(--color-brand)}.tag--coral{background:var(--color-coral)}.tag--ink{background:var(--color-ink);color:var(--color-on-inverse)}
.pill{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-brand);color:var(--color-ink);font-weight:var(--font-weight-black);padding:var(--chip-pad);border-radius:var(--radius-pill);font-size:var(--text-sm);text-decoration:none;width:max-content;max-width:100%}
.pill i{width:.55rem;height:.55rem;border-radius:50%;background:var(--color-ink);display:inline-block;flex:none}
.chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.chip{background:var(--color-glass-strong);border:0;border-radius:var(--radius-pill);padding:var(--chip-pad);font-weight:var(--font-weight-bold);font-size:var(--text-sm)}
.stats{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-1)}
.stat{background:var(--color-glass-strong);backdrop-filter:blur(8px);border:0;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-weight:var(--font-weight-bold);font-size:var(--text-sm)}
.stat b{display:block;font-family:var(--font-head);font-weight:var(--font-weight-head);font-size:var(--text-stat);line-height:var(--leading-tight)}
.glass{background:var(--color-glass);backdrop-filter:blur(10px);border:0;border-radius:var(--radius-lg);padding:var(--cell-pad);max-width:34rem;display:grid;gap:var(--space-3)}
.glass ul{margin:0;padding-left:var(--space-5);display:grid;gap:var(--space-1);font-weight:var(--font-weight-semibold)}
.price{font-family:var(--font-head);font-size:var(--text-price);line-height:var(--leading-tight);text-transform:uppercase}
.price small{font-family:var(--font-body);font-weight:var(--font-weight-bold);font-size:var(--text-base);margin-left:var(--space-2);text-transform:none}
.big{font-family:var(--font-head);font-size:var(--text-big);line-height:var(--leading-tight)}
.big small{font-family:var(--font-body);font-weight:var(--font-weight-black);font-size:var(--text-base)}

/* ---------- Header: teal strip + solid ink bar + centred logo + underline nav ---------- */
.hdr{position:relative;z-index:40;background:var(--color-surface-inverse)}
.strip{background:var(--color-brand);color:var(--color-ink);font-size:var(--text-strip);font-weight:var(--font-weight-bold)}
.strip .wrap{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-8);align-items:center;padding:var(--space-1) 0}
.strip .r{margin-left:auto;display:flex;gap:var(--space-3);align-items:center}
.strip .l1{display:none}
.strip .btn{white-space:nowrap}
.strip a:not(.btn){text-decoration:none}
.strip a:not(.btn):hover{text-decoration:underline}
.main{background:var(--color-surface-inverse);padding:var(--space-2) 0;transition:padding var(--dur) var(--ease)}
.main .wrap{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-6)}
.main.is-stuck{position:fixed;top:0;left:0;right:0;z-index:50;box-shadow:var(--shadow-bar);padding:var(--space-1) 0}
.main.is-stuck .logo{height:var(--logo-h-stuck)}
.brand{display:inline-flex;justify-self:center}
.logo{height:var(--logo-h);width:auto;transition:height var(--dur) var(--ease)}
.nav{display:flex;gap:var(--space-6);align-items:center}
.nav--r{justify-content:flex-end}
.nav__link{color:var(--color-on-inverse);text-decoration:none;font-weight:var(--font-weight-bold);font-size:var(--text-nav);padding:var(--space-2) 0;border-bottom:var(--nav-underline) solid transparent;transition:border-color var(--dur-fast) var(--ease);white-space:nowrap}
.nav__link:hover{border-color:var(--color-sun)}
/* the underline means "you are here" only; Parties stands out by its pink text, not a permanent underline */
.nav__link[aria-current]{border-color:var(--color-brand)}
.nav__link.is-hot{color:var(--color-pink)}
.has-sub{position:relative}
.has-sub>.nav__link{display:inline-flex;align-items:center;gap:var(--space-1)}
.has-sub>.nav__link svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.5;transition:transform var(--dur) var(--ease)}
.has-sub:hover>.nav__link svg,.has-sub:focus-within>.nav__link svg,.has-sub.is-open>.nav__link svg{transform:rotate(180deg)}
.sub{position:absolute;left:50%;top:calc(100% + var(--space-2));transform:translateX(-50%) translateY(6px);min-width:16rem;background:var(--color-ink);border-radius:var(--radius-sub);padding:var(--space-2);display:grid;gap:var(--space-1);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),visibility var(--dur-fast)}
.sub::before{content:"";position:absolute;left:0;right:0;top:-.7rem;height:.7rem}
.has-sub:hover .sub,.has-sub:focus-within .sub,.has-sub.is-open .sub{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.nav--l .has-sub .sub{left:0;transform:translateX(0) translateY(6px)}
.nav--l .has-sub:hover .sub,.nav--l .has-sub:focus-within .sub,.nav--l .has-sub.is-open .sub{transform:translateX(0) translateY(0)}
.sub a{display:grid;gap:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:0;font-size:var(--text-sm);line-height:var(--leading-snug);color:var(--color-on-inverse);text-decoration:none;font-weight:var(--font-weight-bold)}
.sub a:hover,.sub a[aria-current="page"]{background:rgba(255,255,255,.1)}
.sub small{font-weight:var(--font-weight-semibold);font-size:var(--text-xs);color:var(--color-on-inverse-faint)}
.sub .new{color:var(--color-brand)}
.sub--wide{min-width:30rem;grid-template-columns:1fr 1fr;gap:var(--space-2)}
.sub__group{display:grid;gap:var(--space-1)}
.sub__group .group-label{margin:var(--space-1) var(--space-3) var(--space-1);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-on-inverse-faint)}
.burger{display:none;width:46px;height:46px;border-radius:var(--radius-pill);border:0;background:var(--color-glass-strong);color:var(--color-on-inverse);align-items:center;justify-content:center;cursor:pointer;padding:0;flex:none}
.burger svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.burger .i-close{display:none}
.burger[aria-expanded="true"] .i-menu{display:none}
.burger[aria-expanded="true"] .i-close{display:block}
.mnav{display:none;background:var(--color-ink);color:var(--color-on-inverse);padding:var(--space-4) var(--gutter) var(--space-8)}
.mnav.is-open{display:block;position:fixed;top:var(--mnav-top,0);left:0;right:0;bottom:0;z-index:45;overflow-y:auto}
.mnav__group{padding:var(--space-3) 0;border-bottom:1px solid rgba(255,255,255,.12)}
.mnav__group .group-label{margin:0 0 var(--space-2);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-on-inverse-faint)}
.mnav a{display:block;padding:var(--space-2) 0;color:var(--color-on-inverse);text-decoration:none;font-weight:var(--font-weight-bold);font-size:var(--text-lg)}
.mnav a[aria-current="page"]{color:var(--color-brand)}
.mnav a.is-hot{color:var(--color-pink)}
.mnav .row{margin-top:var(--space-5)}
.mnav .mnav__sub{padding-left:var(--space-4);font-size:var(--text-base);font-weight:var(--font-weight-semibold)}
body.nav-open{overflow:hidden}
@media (max-width:1000px){
  .nav{display:none}
  .burger{display:inline-flex}
  .main .wrap{display:flex;justify-content:space-between}
  .logo{height:var(--logo-h-mobile)}
  .main.is-stuck .logo{height:var(--logo-h-stuck)}
  .strip .l2{display:none}
  .strip .l1{display:inline}
  .strip .wrap{flex-wrap:nowrap;gap:var(--space-3)}
  .strip .l1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
}

/* ---------- Home hero (full-bleed photo, copy bottom-left) ---------- */
.hero{position:relative;min-height:calc(100svh - var(--hh,var(--header-h)));display:grid;align-items:end;color:var(--color-on-inverse);isolation:isolate;overflow:hidden;background:var(--color-ink)}
.hero__img{position:absolute;inset:0;z-index:-2}
.hero__img img{width:100%;height:100%;object-fit:cover;object-position:60% 30%}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-hero)}
.hero .wrap{padding:var(--section-y-lg) 0 var(--section-y);display:grid;gap:var(--space-6)}
.hero .d-xl span{color:var(--color-sun)}
.hero .lede{color:rgba(255,255,255,.92)}
.hero__ctas{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.hero__strip{margin-top:var(--space-5);border-top:1px solid rgba(255,255,255,.3);padding-top:var(--space-4);display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-10);font-weight:var(--font-weight-semibold);font-size:var(--text-sm)}
.hero__strip b{display:block;font-family:var(--font-head);font-weight:var(--font-weight-head);font-size:1.2rem;letter-spacing:.02em;text-transform:uppercase}
@media (max-width:900px){.hero__img img{object-position:78% 20%}.hero::before{background:var(--overlay-hero-mobile)}.hero .wrap{padding-top:var(--section-y)}}

/* ---------- Inner page hero ---------- */
.page-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;align-items:end}
.page-hero .wrap{padding:var(--section-y) 0;display:grid;gap:var(--space-4)}
.page-hero .lede{max-width:60ch}
.page-hero .row{margin-top:var(--space-1)}
.page-hero--photo{min-height:clamp(420px,58vh,680px);color:var(--color-on-inverse);background:var(--color-ink)}
.page-hero--photo .page-hero__img{position:absolute;inset:0;z-index:-2}
.page-hero--photo .page-hero__img img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 40%)}
.page-hero--photo::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-hero)}
.page-hero--photo .eyebrow{color:var(--color-sun)}
.page-hero--photo .lede{color:rgba(255,255,255,.92)}
.page-hero--photo h1 span{color:var(--color-sun)}
.page-hero--pink h1 span{color:var(--color-pink)}
@media (max-width:900px){.page-hero--photo::before{background:var(--overlay-hero-mobile)}}

/* ---------- Ticker tape ---------- */
.tape{background:var(--color-sun);color:var(--color-ink);overflow:hidden;padding:var(--space-3) 0;font-family:var(--font-head);font-size:var(--text-tape);letter-spacing:var(--tracking-tape);text-transform:uppercase}
.tape__t{display:flex;gap:var(--space-10);width:max-content;animation:tape var(--tape-speed) linear infinite}
.tape__t span::after{content:"✦";margin-left:var(--space-10);color:var(--color-coral)}
.tape:hover .tape__t{animation-play-state:paused}
@keyframes tape{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.tape__t{animation:none}}

/* ---------- Bento ---------- */
.bento{display:grid;gap:var(--bento-gap);grid-template-columns:repeat(12,1fr);grid-auto-rows:minmax(var(--bento-row),auto)}
.bento>*{min-width:0}
.cell{border-radius:var(--radius-lg);overflow:hidden;position:relative;background:var(--color-surface-raised);padding:var(--cell-pad);display:grid;align-content:end;gap:var(--space-2);isolation:isolate;color:var(--color-ink)}
.cell--top{align-content:start}
.cell--photo{color:var(--color-on-inverse);background:var(--color-ink)}
.cell--photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform var(--dur-slow) var(--ease)}
.cell--photo:hover img{transform:scale(var(--img-zoom))}
.cell--photo::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-cell)}
.cell--photo .eyebrow{color:var(--color-sun)}
.cell--teal{background:var(--color-brand)}
.cell--sun{background:var(--color-sun)}
.cell--coral{background:var(--color-coral)}
.cell--pink{background:var(--color-pink)}
.cell--soft{background:var(--color-surface-2)}
.cell--ink{background:var(--color-ink);color:var(--color-on-inverse)}
.cell--ink .eyebrow{color:var(--color-sun)}
.cell--ink .fine,.cell--ink .lede{color:var(--color-on-inverse-muted)}
.cell .eyebrow{color:inherit;opacity:.8}
.cell--photo .eyebrow{opacity:1}
.cell .btn{width:max-content;max-width:100%}
.cell p{margin:0}
.cell address{font-weight:var(--font-weight-semibold)}
.cell>.tag{position:absolute;left:var(--cell-pad);top:var(--cell-pad)}
.cell ul{margin:0;padding-left:var(--space-5);display:grid;gap:var(--space-1);font-weight:var(--font-weight-semibold)}
a.cell{text-decoration:none}
a.cell:hover .link{text-decoration-color:var(--color-sun)}
.c-2{grid-column:span 2}.c-3{grid-column:span 3}.c-4{grid-column:span 4}.c-5{grid-column:span 5}.c-6{grid-column:span 6}.c-7{grid-column:span 7}.c-8{grid-column:span 8}.c-9{grid-column:span 9}.c-12{grid-column:span 12}
.r-2{grid-row:span 2}.r-3{grid-row:span 3}
@media (max-width:900px){.bento{grid-template-columns:repeat(6,1fr)}.c-9,.c-8,.c-7,.c-12,.c-6,.c-5{grid-column:span 6}.c-4,.c-3,.c-2{grid-column:span 3}.r-3{grid-row:span 2}}
@media (max-width:560px){.c-4,.c-3,.c-2{grid-column:span 6}.bento{grid-auto-rows:auto}.r-2,.r-3{grid-row:auto}.cell{min-height:120px}}

/* ---------- Program panels (full-bleed triptych) ---------- */
.panels{display:grid;grid-template-columns:repeat(3,1fr)}
.panel{position:relative;min-height:78vh;display:grid;align-items:end;color:var(--color-on-inverse);text-decoration:none;overflow:hidden;isolation:isolate;background:var(--color-ink)}
.panel img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform var(--dur-slow) var(--ease)}
.panel:hover img{transform:scale(var(--img-zoom))}
.panel::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-panel)}
.panel .tag{position:absolute;left:var(--space-6);top:var(--space-6)}
.panel__body{padding:var(--feature-pad) var(--space-6)}
.panel p{margin:var(--space-2) 0 var(--space-4);max-width:34ch;color:rgba(255,255,255,.9);font-weight:var(--font-weight-medium)}
.panel .more{font-weight:var(--font-weight-black);text-decoration:underline;text-underline-offset:4px}
.panels--2{grid-template-columns:repeat(2,1fr)}
@media (max-width:900px){.panels,.panels--2{grid-template-columns:1fr}.panel{min-height:60vh}}

/* ---------- Soft photo section (gradient + masked photo) ---------- */
.why{position:relative;isolation:isolate;overflow:hidden;background:var(--gradient-soft);color:var(--color-ink)}
.why__img{position:absolute;inset:0 0 0 auto;width:62%;z-index:-1;-webkit-mask-image:var(--mask-fade-left);mask-image:var(--mask-fade-left);opacity:.55}
.why__img img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,60% 40%)}
.why .wrap{padding:var(--section-y-lg) 0;display:grid;gap:var(--space-5)}
.why .lede{max-width:48ch}
.why .stat{background:var(--color-surface-raised);border:0;color:var(--color-ink);box-shadow:var(--shadow-md);backdrop-filter:none}
.why .stat b{color:var(--color-brand-deep)}
.why::after{content:"";position:absolute;left:0;right:0;bottom:0;height:6px;background:var(--gradient-rainbow)}
@media (max-width:900px){.why__img{width:100%;opacity:.22;-webkit-mask-image:none;mask-image:none}}

/* ---------- Full-bleed bands ---------- */
.band{position:relative;min-height:70vh;display:grid;align-items:center;color:var(--color-on-inverse);isolation:isolate;overflow:hidden;background:var(--color-ink)}
.band--short{min-height:52vh}
.band>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;object-position:var(--pos,50% 50%)}
.band::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-band)}
.band--pink::before{background:var(--overlay-band-pink)}
.band .wrap{padding:var(--section-y-lg) 0;display:grid;gap:var(--space-5)}
.band .lede{color:rgba(255,255,255,.92)}
.band .eyebrow{color:var(--color-sun)}
.band--pink .eyebrow{color:var(--color-pink)}
.band h2 span{color:var(--color-sun)}
@media (max-width:900px){.band::before{background:var(--overlay-band-mobile)}.band--pink::before{background:var(--overlay-band-pink-mobile)}.band .wrap{padding:var(--section-y) 0}}

/* ---------- Locations split screen ---------- */
.locs{display:grid;grid-template-columns:1fr 1fr}
.loc{position:relative;min-height:78vh;display:grid;align-items:end;color:var(--color-on-inverse);isolation:isolate;overflow:hidden;background:var(--color-ink)}
.loc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;object-position:var(--pos,50% 40%)}
.loc::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--overlay-loc)}
.loc__body{padding:var(--feature-pad) var(--space-6);display:grid;gap:var(--space-3);max-width:40rem}
.loc .tag{margin-bottom:var(--space-1)}
.loc address{font-weight:var(--font-weight-semibold);color:rgba(255,255,255,.9)}
.loc .row{margin-top:var(--space-1)}
@media (max-width:900px){.locs{grid-template-columns:1fr}.loc{min-height:60vh}}
@media (max-width:560px){.loc__body{padding:var(--space-6) var(--gutter)}}

/* ---------- Program articles (on program pages) ---------- */
.prog{scroll-margin-top:var(--space-24)}
.prog .prog__head{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);align-items:center;justify-content:space-between;margin-bottom:var(--space-1)}
.prog h2,.prog h3{margin:0}
.prog p{margin:0 0 var(--space-3)}
.prog p:last-child{margin-bottom:0}
.prog__note{font-weight:var(--font-weight-bold);font-size:var(--text-sm);color:var(--color-brand-deep)}
.cell--teal .prog__note,.cell--sun .prog__note,.cell--pink .prog__note,.cell--coral .prog__note{color:var(--color-ink)}
.cell--ink .prog__note{color:var(--color-sun)}
.offered{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;font-size:var(--text-sm);font-weight:var(--font-weight-bold)}
.offered a{text-decoration:none}
.offered .tag:hover{background:var(--color-sun)}

/* ---------- Lists ---------- */
.checklist{list-style:none;padding:0;margin:0 0 var(--space-6);display:grid;gap:var(--space-3)}
.checklist li{position:relative;padding-left:var(--space-8);max-width:none}
.checklist li::before{content:"";position:absolute;left:0;top:.25em;width:18px;height:18px;border-radius:var(--radius-pill);background:var(--color-brand);box-shadow:inset 0 0 0 4px var(--color-surface-raised),0 0 0 1px var(--color-brand)}
.checklist--sun li::before{background:var(--color-sun);box-shadow:inset 0 0 0 4px var(--color-surface-raised),0 0 0 1px var(--color-sun)}
.checklist--pink li::before{background:var(--color-pink);box-shadow:inset 0 0 0 4px var(--color-surface-raised),0 0 0 1px var(--color-pink)}
.cell .checklist{margin:0}
.price-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-2)}
.price-list li{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface-raised);border:var(--border-soft);border-radius:var(--radius-md);max-width:none;align-items:center}
.price-list strong{font-family:var(--font-head);font-size:var(--text-xl);white-space:nowrap;font-weight:var(--font-weight-head);text-transform:uppercase}
.cell--ink .price-list li{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15)}
.characters{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}
.characters li{max-width:none}
.hours{list-style:none;padding:0;margin:0}
.hours li{display:flex;justify-content:space-between;gap:var(--space-4);padding-block:var(--space-2);border-bottom:1px solid var(--color-ink-glass-line);max-width:none}
.hours li:last-child{border-bottom:0}
.hours span:last-child{text-align:right;font-weight:var(--font-weight-black)}
.cell--ink .hours li{border-color:rgba(255,255,255,.15)}
.facts{display:grid;gap:var(--space-4);margin:0}
.facts dt{font-weight:var(--font-weight-black);font-size:var(--text-eyebrow);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--color-brand-deep);margin-bottom:var(--space-1)}
.facts dd{margin:0}
.map-embed{border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4/3;background:var(--color-surface-2)}
.map-embed iframe{width:100%;height:100%;border:0;display:block}

/* ---------- FAQ ---------- */
.faq{background:var(--color-surface-raised);border:var(--border-soft);border-radius:var(--radius-md);margin-bottom:var(--space-3)}
.faq[open]{box-shadow:var(--shadow-md)}
.faq summary{cursor:pointer;padding:var(--space-4) var(--space-5);font-weight:var(--font-weight-black);list-style:none;display:flex;justify-content:space-between;gap:var(--space-4);align-items:center;border-radius:var(--radius-md)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--font-head);font-size:var(--text-xl);line-height:1;flex:none;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);background:var(--color-sun)}
.faq[open] summary::after{content:"–"}
.faq__body{padding:0 var(--space-5) var(--space-5)}
.faq__body p:last-child{margin-bottom:0}

/* ---------- Schedule ---------- */
.tabs{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-6)}
.tab{min-height:var(--btn-min-h);padding:var(--btn-pad);border:0;border-radius:var(--radius-pill);background:var(--color-brand-soft);font-weight:var(--font-weight-black);cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-2);transition:background var(--dur-fast) var(--ease)}
.tab:hover{background:var(--color-sun-soft)}
.tab[aria-selected="true"]{background:var(--color-ink);color:var(--color-on-inverse)}
.tab .tag{font-size:.68rem;padding:var(--space-1) var(--space-2)}
.tabpanel[hidden]{display:none}
.sched{display:grid;gap:var(--space-4)}
@media (min-width:760px){.sched{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.sched{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1280px){
  .sched{grid-template-columns:repeat(5,1fr);gap:var(--space-3)}
  .sched-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .sched-table tbody,.sched-table tr,.sched-table td{display:block}
  .sched-table tr{border-bottom:var(--border-soft)}
  .sched-table tr:last-child{border-bottom:0}
  .sched-table td{border-bottom:0;padding:var(--space-1) var(--space-3)}
  .sched-table td.sched__time{padding-top:var(--space-3);padding-bottom:0}
  .sched-table td:last-child{padding-bottom:var(--space-3)}
}
.sched-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-surface-raised);border-radius:var(--radius-md);overflow:hidden;font-size:var(--text-sm);border:var(--border-soft)}
.sched-table caption{caption-side:top;text-align:left;font-family:var(--font-head);text-transform:uppercase;font-size:var(--text-xl);letter-spacing:.02em;padding:var(--space-3) var(--space-4);background:var(--color-ink);color:var(--color-on-inverse);border-radius:var(--radius-md) var(--radius-md) 0 0}
.sched-table th{text-align:left;font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;padding:var(--space-2) var(--space-4);background:var(--color-surface-2);border-bottom:var(--border-soft);font-weight:var(--font-weight-black)}
.sched-table td{padding:var(--space-3) var(--space-4);border-bottom:var(--border-soft);vertical-align:top}
.sched-table tr:last-child td{border-bottom:0}
.sched__time{font-weight:var(--font-weight-black);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--color-brand-deep);font-size:var(--text-xs)}
.sched__class{font-weight:var(--font-weight-black);display:block;overflow-wrap:break-word}
.sched__class a{color:inherit;text-decoration-color:var(--color-brand)}
.sched__meta{display:block;color:var(--color-ink-muted);font-size:var(--text-xs)}
.sched-note{margin-top:var(--space-6)}
.signup-panel{background:var(--color-brand);border-radius:var(--radius-lg);padding:var(--card-pad);margin-top:var(--space-10);display:grid;gap:var(--space-3)}
.signup-panel .eyebrow{color:var(--color-ink);opacity:.8}
.signup-panel p{max-width:60ch}
.signup-panel .btn{width:max-content;max-width:100%}

/* ---------- Forms ---------- */
.form{display:grid;gap:var(--space-4)}
.form__row{display:grid;gap:var(--space-4)}
@media (min-width:640px){.form__row{grid-template-columns:1fr 1fr}}
.field{display:flex;flex-direction:column;gap:var(--space-2)}
.field__label{font-weight:var(--font-weight-bold);font-size:var(--text-sm)}
.field__label .req{color:var(--color-coral)}
.input,.select,.textarea{width:100%;min-height:52px;padding:var(--space-3) var(--space-4);border:var(--border-field);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);font:inherit;transition:border-color var(--dur-fast) var(--ease)}
.input:focus-visible,.select:focus-visible,.textarea:focus-visible{border-color:var(--color-ink);box-shadow:none}
.textarea{min-height:140px;resize:vertical}
.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--color-ink) 50%),linear-gradient(135deg,var(--color-ink) 50%,transparent 50%);background-position:calc(100% - 22px) 55%,calc(100% - 16px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:var(--space-10)}
.input:user-invalid,.select:user-invalid{border-color:var(--color-error)}
.field__hint{font-size:var(--text-sm);color:var(--color-ink-muted);margin:0}
.form__note{font-size:var(--text-sm);margin:0;color:var(--color-ink-muted)}
.form__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}
.form__error{display:none;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-coral);color:var(--color-ink);font-weight:var(--font-weight-bold);margin:0}
.form__error.is-visible{display:block}
.hp{position:absolute;left:-9999px;top:-9999px;height:0;width:0;overflow:hidden}
.form-cell{gap:var(--space-4)}
.form-cell .form{margin-top:var(--space-2)}

/* ---------- Reviews (Trustindex host) ---------- */
.reviews{min-width:0;max-width:100%;overflow:hidden}
.reviews pre.ti-widget{display:none}
.reviews .ti-widget{font-family:var(--font-body)}

/* ---------- Footer: teal card, blends into the section above ---------- */
.ftr{background:transparent;padding:0;margin-top:calc(-1 * var(--radius-xl));position:relative;z-index:1;color:var(--color-ink)}
.ftr .card{background:var(--color-brand);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--card-pad) var(--card-pad) var(--space-6);display:grid;gap:var(--space-8);position:relative;overflow:hidden;isolation:isolate}
.ftr .card::after{content:"";position:absolute;right:-8%;top:-30%;width:46%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.5),rgba(255,255,255,0) 70%);pointer-events:none;z-index:-1}
.ftr .top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-5) var(--space-8)}
.ftr .top h2{font-size:var(--text-footer-h2);white-space:nowrap}
.ftr .top h2 span{color:var(--color-on-inverse)}
.ftr .top .row{margin-left:auto}
.ftr .mid{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:var(--space-8);align-items:start;border-top:1px solid var(--color-ink-glass-line);padding-top:var(--space-8)}
.ftr .group-label{margin:0 0 var(--space-2);font-size:var(--text-eyebrow);letter-spacing:var(--tracking-caps);text-transform:uppercase;opacity:.7}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-1);color:var(--color-on-brand-muted);font-weight:var(--font-weight-semibold)}
.ftr ul li{max-width:none}
.ftr a{text-decoration:none}
.ftr a:hover{text-decoration:underline}
.ftr .floc{display:grid;gap:var(--space-4)}
.ftr .floc div{display:grid;gap:0;color:var(--color-on-brand-muted);font-weight:var(--font-weight-medium)}
.ftr .floc b{color:var(--color-ink)}
.ftr .bar{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);align-items:center;color:var(--color-on-brand-faint);font-size:var(--text-strip);padding-bottom:var(--space-6)}
.ftr .social{margin-left:auto;display:flex;gap:var(--space-2)}
.ftr .social a{width:40px;height:40px;border-radius:var(--radius-pill);background:var(--color-ink-glass);color:var(--color-ink);display:inline-flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease)}
.ftr .social a:hover{background:var(--color-ink);color:var(--color-on-inverse)}
.ftr .social svg{width:18px;height:18px;fill:currentColor}
.ftr :focus-visible{box-shadow:0 0 0 3px var(--color-brand),0 0 0 6px var(--color-ink)}
@media (max-width:900px){.ftr .mid{grid-template-columns:1fr 1fr}.ftr .top h2{white-space:normal}.ftr .top .row{margin-left:0}}
@media (max-width:560px){.ftr .mid{grid-template-columns:1fr}.ftr .card{padding-inline:var(--space-5)}}
/* the last section on a page must clear the footer overlap */
main>:last-child{padding-bottom:calc(var(--section-y) + var(--radius-xl))}
main>.locs:last-child,main>.panels:last-child{padding-bottom:0}
main>.locs:last-child .loc__body,main>.panels:last-child .panel__body{padding-bottom:calc(var(--feature-pad) + var(--radius-xl))}

/* ---------- Utility pages ---------- */
.utility{min-height:60vh;display:grid;place-items:center;text-align:center}
.utility .wrap--narrow{display:grid;gap:var(--space-4);justify-items:center}
.utility h1{font-size:var(--text-display-l)}
.utility h1 span{color:var(--color-brand-deep)}
.utility p{margin-inline:auto}

/* ---------- Print ---------- */
@media print{.hdr,.ftr,.tape,.burger,.hero::before{display:none}body{background:var(--color-surface-raised)}}
/* ---------- Photo focal-point modifiers (no inline styles) ---------- */
.pos-t{--pos:50% 20%}.pos-tr{--pos:75% 20%}.pos-r{--pos:75% 45%}.pos-b{--pos:50% 70%}.pos-l{--pos:25% 45%}
.cell .characters{display:flex;padding:0}.cell .checklist{padding:0}
