/* Layout: two railway-arch gyms. Arch silhouettes frame the hero and location cards; a signal-amber line runs like a viaduct through the page. */
/* Gym Nation brand: black, white and logo yellow. Single dark look, built from the logo. Railway-arch shapes frame the hero and cards. */
:root{
  --bg:#0a0a0a;          /* brand black */
  --surface:#151515;
  --ink:#ffffff;
  --muted:#a8a8a8;
  --line:#2b2b2b;
  --signal:#fecf03;      /* logo yellow */
  --brick:#fecf03;
  --brick-soft:#1d1d1d;
  --on-signal:#0a0a0a;
  --arch:#171717;
  --arch-fg:#ffffff;
  --f-display:"Chakra Petch", Impact, "Arial Black", sans-serif;
  --f-body:"Archivo", "Helvetica Neue", Arial, sans-serif;
  --f-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;
  --r:6px;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}
h1,h2,h3{font-family:var(--f-display);text-transform:uppercase;line-height:.92;margin:0;text-wrap:balance;letter-spacing:.005em}
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
:focus-visible{outline:3px solid var(--signal);outline-offset:3px;border-radius:3px}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-body);font-weight:700;font-size:15px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;padding:14px 22px;border-radius:999px;border:2px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;transition:transform .15s, background .15s}
.btn:hover{transform:translateY(-2px)}
.btn-signal{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}
.btn-arch{border-color:var(--arch-fg);color:var(--arch-fg)}

/* promo + nav */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
.promo{background:var(--signal);color:var(--on-signal);font-family:var(--f-mono);font-size:12.5px;letter-spacing:.08em;text-align:center;padding-block:8px}
.promo b{font-weight:500;color:var(--on-signal)}
header.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px}
.logo{font-family:var(--f-display);font-weight:700;font-size:28px;letter-spacing:.02em;text-decoration:none;display:flex;align-items:center;gap:8px}
.logo img{display:block;height:36px;width:auto}
.logo i{display:inline-block;width:22px;height:18px;border:4px solid var(--signal);border-bottom:none;border-radius:12px 12px 0 0}
.nav ul{display:flex;gap:26px;list-style:none;margin:0;padding:0}
.nav ul a{text-decoration:none;font-weight:600;font-size:14px;letter-spacing:.08em;text-transform:uppercase}
.nav ul a:hover{color:var(--brick)}
.nav .btn{padding:10px 18px;font-size:13px}
@media (max-width:860px){.nav ul{display:none}}

/* hero */
.hero{padding-block:48px 40px}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:end}
.hero h1{font-size:clamp(46px,12.5vw,140px);font-weight:700}
.hero-grid>*{min-width:0}
@media (min-width:861px) and (max-width:1240px){.hero h1{font-size:8vw}}
.hero h1 span{display:block}
.hero h1 .amber{color:var(--signal);-webkit-text-stroke:0}
.hero h1 .out{color:transparent;-webkit-text-stroke:2px var(--ink)}
.hero-copy{max-width:52ch;font-size:18px;color:var(--muted);margin:22px 0 28px}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.trial{font-family:var(--f-mono);font-size:13px;color:var(--muted)}
.trial b{color:var(--signal);font-weight:500}

.arch-art{position:relative;aspect-ratio:4/5;max-width:100%;border-radius:999px 999px 0 0;background:var(--arch);overflow:hidden;border:1px solid var(--line);border-bottom:none;
  background-image:
    repeating-linear-gradient(0deg, transparent 0 22px, color-mix(in srgb, var(--arch-fg) 7%, transparent) 22px 24px),
    repeating-linear-gradient(90deg, transparent 0 46px, color-mix(in srgb, var(--arch-fg) 5%, transparent) 46px 48px);}
.arch-art::after{content:"";position:absolute;inset:18px 18px 0;border:2px solid color-mix(in srgb, var(--signal) 70%, transparent);border-bottom:none;border-radius:999px 999px 0 0}
.arch-inner{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:28px;color:var(--arch-fg);gap:14px;z-index:1}
.arch-inner .big{font-family:var(--f-display);font-weight:700;font-size:clamp(44px,6vw,72px);line-height:.9;text-transform:uppercase}
.arch-inner .big em{font-style:normal;color:var(--signal)}
.arch-inner .eyebrow{color:color-mix(in srgb, var(--arch-fg) 70%, transparent)}
.train{position:absolute;top:34%;left:-40%;width:40%;height:3px;background:linear-gradient(90deg,transparent,var(--signal));border-radius:2px;animation:train 5.5s cubic-bezier(.6,0,.3,1) 0.4s infinite}
@keyframes train{0%{left:-40%}60%,100%{left:110%}}
@media (max-width:860px){.hero-grid{grid-template-columns:minmax(0,1fr)}.arch-art{aspect-ratio:16/10;border-radius:400px 400px 0 0}}
@media (max-width:520px){.arch-art{aspect-ratio:1/1}}

/* ticker */
.ticker{border-block:1px solid var(--line);background:var(--surface);overflow:hidden;white-space:nowrap}
.ticker-track{display:inline-flex;gap:0;padding-block:14px;animation:tick 40s linear infinite}
.ticker span{font-family:var(--f-display);font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:.04em;padding-inline:22px;display:inline-flex;align-items:center;gap:22px}
.ticker span::after{content:"";width:12px;height:10px;border:3px solid var(--signal);border-bottom:none;border-radius:8px 8px 0 0}
@keyframes tick{to{transform:translateX(-50%)}}

/* sections */
section.block{padding-block:84px}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:36px}
.sec-head h2{font-size:clamp(38px,6vw,76px);font-weight:700}
.sec-head p{max-width:46ch;color:var(--muted);margin:0}

/* locations */
.locs{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.loc{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:28px;display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:start}
.loc-arch{width:84px;height:104px;border-radius:999px 999px 0 0;background:var(--bg);position:relative}
.loc-arch::after{content:"";position:absolute;inset:10px 10px 0;border:2px solid var(--signal);border-bottom:none;border-radius:999px 999px 0 0}
.loc h3{font-size:clamp(30px,5vw,40px);font-weight:700}
.loc address{font-style:normal;font-family:var(--f-mono);font-size:13.5px;color:var(--muted);margin:10px 0 16px;line-height:1.6}
.loc .tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.tag{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:4px 10px}
.tag.new{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}
.loc .links{display:flex;flex-wrap:wrap;gap:16px}
.loc .links a{font-weight:600;font-size:14px;letter-spacing:.05em;text-transform:uppercase;text-underline-offset:4px;text-decoration-color:var(--signal);text-decoration-thickness:2px}
@media (max-width:860px){.locs{grid-template-columns:1fr}}
@media (max-width:460px){.loc{grid-template-columns:1fr}.loc-arch{width:64px;height:78px}}

/* facilities */
.fac{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.fac a,.fac div.cell{background:var(--surface);padding:26px 22px 24px;display:flex;flex-direction:column;gap:10px;text-decoration:none;min-height:190px;transition:background .2s}
.fac a:hover{background:var(--brick-soft)}
.fac .n{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.fac h3{font-size:26px;font-weight:700}
.fac p{margin:0;color:var(--muted);font-size:14.5px}
.fac .go{margin-top:auto;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--brick)}
@media (max-width:960px){.fac{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.fac{grid-template-columns:1fr}.fac a,.fac div.cell{min-height:0}}

/* membership builder */
.builder-band{background:var(--surface);color:var(--arch-fg);border-block:1px solid var(--line)}
.builder-band .sec-head p,.builder-band .eyebrow{color:color-mix(in srgb, var(--arch-fg) 72%, transparent)}
.builder{display:grid;grid-template-columns:1.2fr .8fr;gap:28px;align-items:start}
.step{margin-bottom:28px}
.step .eyebrow{display:block;margin-bottom:12px}
.seg{display:inline-flex;border:2px solid color-mix(in srgb, var(--arch-fg) 30%, transparent);border-radius:999px;padding:4px;gap:4px;flex-wrap:wrap}
.seg button{font:600 14px/1 var(--f-body);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:999px;padding:12px 18px;background:transparent;color:var(--arch-fg);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--signal);color:var(--on-signal)}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opt{position:relative;display:flex;flex-direction:column;gap:6px;text-align:left;border:2px solid color-mix(in srgb, var(--arch-fg) 22%, transparent);border-radius:var(--r);padding:18px 18px 16px 52px;background:transparent;color:var(--arch-fg);cursor:pointer;font:inherit;transition:border-color .15s, background .15s}
.opt::before{content:"";position:absolute;left:18px;top:20px;width:20px;height:20px;border-radius:4px;border:2px solid color-mix(in srgb, var(--arch-fg) 50%, transparent)}
.opt[aria-pressed="true"]{border-color:var(--signal);background:color-mix(in srgb, var(--signal) 10%, transparent)}
.opt[aria-pressed="true"]::before{background:var(--signal);border-color:var(--signal);box-shadow:inset 0 0 0 3px var(--surface)}
.opt strong{font-family:var(--f-display);font-weight:700;font-size:22px;text-transform:uppercase;line-height:1}
.opt small{color:color-mix(in srgb, var(--arch-fg) 65%, transparent);font-size:13.5px}
.opt[disabled]{opacity:.38;cursor:not-allowed}
@media (max-width:560px){.opts{grid-template-columns:1fr}}

.ticket{--ink:#0a0a0a;--muted:#4a3f00;--line:rgba(10,10,10,.22);--brick:#0a0a0a;background:var(--signal);color:var(--ink);border-radius:var(--r);padding:28px;position:sticky;top:96px}
.ticket .tier{font-family:var(--f-mono);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--brick)}
.ticket .price{font-family:var(--f-display);font-weight:700;font-size:110px;line-height:.9;margin:10px 0 2px;font-variant-numeric:tabular-nums}
.ticket .price sup{font-size:.4em;vertical-align:.95em;margin-right:2px}
.ticket .per{font-family:var(--f-mono);font-size:13px;color:var(--muted)}
.ticket ul{list-style:none;padding:0;margin:20px 0;border-top:1px solid var(--line)}
.ticket li{padding:10px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;font-size:14.5px}
.ticket li span:last-child{font-family:var(--f-mono);font-size:12.5px;color:var(--muted)}
.ticket .empty{color:var(--muted);font-size:14.5px}
.ticket .btn{width:100%;justify-content:center;background:#0a0a0a;border-color:#0a0a0a;color:var(--signal)}
.ticket .fine{font-size:12.5px;color:var(--muted);margin:14px 0 0}
.tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:18px}
.tiers div{height:6px;border-radius:3px;background:var(--line)}
.tiers div.on{background:var(--ink)}
@media (max-width:860px){.builder{grid-template-columns:1fr}.ticket{position:static}}

/* passes */
.passes{display:grid;grid-template-columns:1.3fr 1fr;gap:40px}
.ptable{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.ptable th{font-family:var(--f-mono);font-weight:400;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:left;padding:0 0 10px;border-bottom:2px solid var(--ink)}
.ptable td{padding:16px 0;border-bottom:1px solid var(--line);vertical-align:top}
.ptable td:first-child{font-weight:600}
.ptable td small{display:block;color:var(--muted);font-weight:400;font-size:13.5px}
.ptable td.p{font-family:var(--f-display);font-weight:700;font-size:30px;text-align:right;white-space:nowrap}
.ptable td.b{text-align:right;width:90px}
.ptable a{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--brick);text-underline-offset:3px}
.addons h3{font-size:34px;font-weight:700;margin-bottom:14px}
.addons .card{border:1px solid var(--line);background:var(--surface);border-radius:var(--r);padding:18px 20px;display:flex;justify-content:space-between;gap:16px;align-items:baseline;margin-bottom:10px}
.addons .card b{display:block}
.addons .card small{color:var(--muted)}
.addons .card .p{font-family:var(--f-display);font-weight:700;font-size:28px;white-space:nowrap}
.addons .card .p small{font-family:var(--f-mono);font-size:11px}
.discount{margin-top:22px;border:2px solid var(--brick);border-radius:var(--r);padding:18px 20px}
.discount b{font-family:var(--f-display);font-size:30px;text-transform:uppercase;color:var(--brick);display:block;line-height:1}
.discount p{margin:6px 0 0;font-size:14px;color:var(--muted)}
@media (max-width:860px){.passes{grid-template-columns:1fr}}

/* community */
.members{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.member{aspect-ratio:3/4;max-width:100%;border-radius:999px 999px var(--r) var(--r);background:var(--arch);border:1px solid var(--line);color:var(--arch-fg);display:flex;flex-direction:column;justify-content:flex-end;padding:18px;position:relative;overflow:hidden}
.member:nth-child(3n+2){background:var(--signal);color:var(--on-signal);border-color:var(--signal)}
.member .play{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:54px;height:54px;border-radius:50%;border:2px solid currentColor;display:grid;place-items:center;opacity:.85}
.member .play::after{content:"";border-left:14px solid currentColor;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.member b{font-family:var(--f-display);font-weight:700;font-size:clamp(20px,4.6vw,28px);overflow-wrap:anywhere;text-transform:uppercase;line-height:1}
.member small{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.75}
@media (max-width:860px){.members{grid-template-columns:repeat(2,1fr)}}

.app{margin-top:56px;display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;border-top:2px solid var(--ink);padding-top:28px}
.app h3{font-size:clamp(34px,5vw,52px);font-weight:700}
.app p{margin:8px 0 0;color:var(--muted);max-width:56ch}
@media (max-width:700px){.app{grid-template-columns:1fr}}

/* footer */
footer{background:var(--bg);color:var(--arch-fg);border-top:1px solid var(--line);padding-block:64px 32px}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.1fr;gap:32px}
footer .eyebrow{color:color-mix(in srgb, var(--arch-fg) 60%, transparent);display:block;margin-bottom:12px}
footer address{font-style:normal;font-size:14.5px;line-height:1.6}
.hours{font-variant-numeric:tabular-nums;font-size:14.5px;width:100%;border-collapse:collapse}
.hours td{padding:5px 0}
.hours td:last-child{text-align:right;font-family:var(--f-mono);font-size:13px}
.status{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;margin-top:14px;padding:6px 12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--arch-fg) 30%, transparent)}
.status i{width:8px;height:8px;border-radius:50%;background:var(--muted)}
.status.open i{background:#3fbf6a;box-shadow:0 0 0 4px rgba(63,191,106,.25)}
.big-mark{font-family:var(--f-display);font-weight:700;font-size:clamp(44px,10vw,150px);line-height:.85;text-transform:uppercase;margin-top:56px;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb, var(--arch-fg) 35%, transparent);white-space:nowrap;overflow:hidden}
.copyline{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-family:var(--f-mono);font-size:12px;color:color-mix(in srgb, var(--arch-fg) 60%, transparent);margin-top:20px}
@media (max-width:860px){.foot{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.foot{grid-template-columns:1fr}}

/* mobile menu */
.menu-btn{display:none;width:44px;height:44px;border-radius:50%;border:2px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.menu-btn span{display:block;width:16px;height:2px;background:currentColor;border-radius:2px}
.nav-right{display:flex;align-items:center;gap:10px}
.mobile-menu{border-top:1px solid var(--line);background:var(--bg)}
.nav .mobile-menu ul{list-style:none;margin:0;padding-block:8px 18px;display:flex;flex-direction:column;gap:0}
.nav .mobile-menu a{display:block;font-family:var(--f-display);font-weight:700;font-size:28px;letter-spacing:.02em;text-transform:uppercase;text-decoration:none;padding:8px 0;border-bottom:1px solid var(--line)}
@media (max-width:860px){.menu-btn{display:inline-flex}}
@media (max-width:420px){.nav .btn-signal{display:none}}

/* mobile price bar for the membership builder */
.pricebar{display:none}
@media (max-width:860px){
  .pricebar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:6;align-items:center;justify-content:space-between;gap:12px;background:var(--signal);color:var(--on-signal);
    padding:12px max(16px, env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));transform:translateY(110%);transition:transform .25s}
  .pricebar.show{transform:none}
  .pricebar b{font-family:var(--f-display);font-weight:700;font-size:30px;line-height:1}
  .pricebar small{display:block;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
  .pricebar a{background:var(--on-signal);color:var(--signal);border-color:var(--on-signal);padding:12px 18px;font-size:13px}
}

/* offer pop-up */
.promo-pop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:24px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px));background:rgba(0,0,0,.7);backdrop-filter:blur(4px)}
.pop-card{position:relative;width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);color:var(--arch-fg);border-radius:999px 999px var(--r) var(--r);padding:72px 28px 28px;text-align:center;animation:popin .35s cubic-bezier(.2,.9,.3,1.2)}
.pop-card::before{content:"";position:absolute;inset:14px 14px auto;height:70%;border:2px solid var(--signal);border-bottom:none;border-radius:999px 999px 0 0;pointer-events:none}
.pop-card .eyebrow{color:color-mix(in srgb, var(--arch-fg) 70%, transparent)}
.pop-card h2{font-size:clamp(36px,10vw,50px);font-weight:700;margin:10px 0 12px}
.pop-card h2 em{font-style:normal;color:var(--signal)}
.pop-card p{margin:0 0 20px;color:color-mix(in srgb, var(--arch-fg) 80%, transparent);font-size:15px}
.code{display:flex;align-items:center;justify-content:space-between;gap:10px;border:2px solid var(--signal);border-radius:var(--r);padding:8px 8px 8px 16px;margin-bottom:14px}
.code span{font-family:var(--f-mono);font-weight:500;font-size:20px;letter-spacing:.12em;user-select:all}
.code button{font:700 12px/1 var(--f-body);letter-spacing:.08em;text-transform:uppercase;border:0;border-radius:999px;padding:11px 14px;background:var(--signal);color:var(--on-signal);cursor:pointer}
.pop-card .btn{width:100%;justify-content:center}
.pop-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:0;background:color-mix(in srgb, var(--arch-fg) 12%, transparent);color:var(--arch-fg);font-size:22px;line-height:1;cursor:pointer;z-index:1}
.pop-later{display:block;margin:14px auto 0;background:none;border:0;color:color-mix(in srgb, var(--arch-fg) 65%, transparent);font:inherit;font-size:13px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
@keyframes popin{from{transform:translateY(24px) scale(.96);opacity:0}}

@media (prefers-reduced-motion: reduce){.train,.ticker-track,.pop-card{animation:none}.btn,.pricebar{transition:none}}

/* ---- shared additions for the multi-page site ---- */
img{height:auto}
html{scroll-padding-top:90px}
body{margin:0}
img{max-width:100%}
.nav ul a[aria-current="page"]{color:var(--signal)}
.nav .mobile-menu a[aria-current="page"]{color:var(--signal)}
.page-hero{padding-block:56px 44px;border-bottom:1px solid var(--line)}
.page-hero h1{font-size:clamp(46px,9vw,112px);font-weight:700;margin-top:10px}
.page-hero h1 em{font-style:normal;color:var(--signal)}
.page-hero p.lead{max-width:60ch;font-size:18px;color:var(--muted);margin:18px 0 0}
.page-hero .hero-ctas{margin-top:26px}
.prose{max-width:68ch;color:var(--muted)}
.prose strong{color:var(--ink)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.two>*{min-width:0}
@media (max-width:860px){.two{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:28px}
.panel h3{font-size:clamp(28px,4vw,38px);font-weight:700;margin-bottom:12px}
.panel p{color:var(--muted);margin:0 0 12px}
.list-check{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.list-check li{display:flex;gap:12px;align-items:flex-start}
.list-check li::before{content:"";flex:none;width:12px;height:10px;margin-top:7px;border:3px solid var(--signal);border-bottom:none;border-radius:8px 8px 0 0}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:6px 12px}
.chip.on{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}

/* opening timeline (Vauxhall) */
.timeline{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.timeline li{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;padding:18px 0;border-bottom:1px solid var(--line)}
.timeline b{font-family:var(--f-display);font-size:clamp(22px,3.4vw,30px);text-transform:uppercase}
.timeline .when{font-family:var(--f-mono);font-size:12px;color:var(--muted);display:block;margin-top:2px;letter-spacing:.06em;text-transform:uppercase}
.state{font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;border-radius:999px;padding:7px 12px;border:1px solid var(--line);white-space:nowrap}
.state.open{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}

/* forms */
.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form .full{grid-column:1/-1}
.form label{display:grid;gap:6px;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.form input{font:16px var(--f-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:13px 14px;min-width:0}
.form input:focus{border-color:var(--signal);outline:none}
.form .consent{font-size:13px;color:var(--muted);margin:0}
.form .msg{font-size:14px;margin:0}
@media (max-width:560px){.form{grid-template-columns:1fr}}

/* Kenko / StudioYou embed */
.kenko-wrap{background:#fff;color:#111;border-radius:var(--r);min-height:420px;position:relative;overflow:hidden}
.kenko-wrap studioyou-embed{display:block}
.kenko-loading,.kenko-fallback{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:32px;color:#333}
.kenko-fallback{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r)}
.kenko-fallback p{max-width:46ch;color:var(--muted);margin:10px auto 18px}
.kenko-fallback h3{font-size:30px}
.seg.light{border-color:var(--line)}
.seg.light button{color:var(--ink)}

/* studios */
.rates{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;margin:8px 0 18px}
.rates td{padding:12px 0;border-bottom:1px solid var(--line);vertical-align:top}
.rates td:last-child{text-align:right;font-family:var(--f-display);font-size:28px;white-space:nowrap}
.rates small{display:block;color:var(--muted);font-size:13px}
.studio-meta{font-family:var(--f-mono);font-size:13px;color:var(--muted);margin:0 0 16px;line-height:1.6}

/* FAQs */
.faq{border-top:1px solid var(--line);max-width:860px}
.faq details{border-bottom:1px solid var(--line)}
.faq-cat{font-size:clamp(30px,4.5vw,44px);color:var(--signal);padding:40px 0 14px;border-bottom:1px solid var(--line)}
.faq-cat:first-child{padding-top:0}
.faq{border-top:0}
.chip-row a.chip{text-decoration:none}
.chip-row a.chip:hover{border-color:var(--signal);color:var(--signal)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:22px 0;font-family:var(--f-display);font-size:clamp(22px,3.2vw,30px);font-weight:700;text-transform:uppercase;line-height:1.05}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;width:36px;height:36px;border-radius:50%;border:2px solid var(--signal);color:var(--signal);display:grid;place-items:center;font-family:var(--f-body);font-size:22px;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .a{padding:0 0 24px;color:var(--muted);max-width:66ch}
.faq .a p{margin:0 0 10px}

/* trainers */
.trainers{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.trainer{background:var(--surface);border:1px solid var(--line);border-radius:999px 999px var(--r) var(--r);padding:26px 16px 18px;text-align:center;display:grid;gap:12px;justify-items:center}
.trainer .mono{width:84px;height:84px;border-radius:50%;background:var(--bg);border:2px solid var(--signal);display:grid;place-items:center;font-family:var(--f-display);font-size:28px;color:var(--signal)}
.trainer b{font-family:var(--f-display);font-size:20px;text-transform:uppercase;line-height:1.05}
.trainer small{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}

.copy-line{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;font-family:var(--f-mono);font-size:15px}
.copy-line button{font:700 11px/1 var(--f-body);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:999px;padding:8px 12px;cursor:pointer}
.foot-links{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14.5px}
.foot-links a{text-decoration:none}
.foot-links a:hover{color:var(--signal)}
.tier-teaser{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.tier-teaser div{border:1px solid var(--line);border-radius:var(--r);padding:18px;background:var(--surface)}
.tier-teaser b{font-family:var(--f-display);font-size:44px;display:block;line-height:1}
@media (max-width:700px){.tier-teaser{grid-template-columns:repeat(2,1fr)}}

.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.class-grid figure{margin:0;border-radius:var(--r);overflow:hidden;background:var(--surface);border:1px solid var(--line)}
.class-grid img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.loc{grid-template-columns:1fr}
.loc .loc-logo{display:block;width:min(260px,100%);height:auto}
.loc h3{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.name-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.icon-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.icon-list li{display:flex;gap:12px;align-items:center}
.icon-list img{width:36px;height:36px;object-fit:contain;flex:none}
.icon-list .dot{width:36px;height:36px;flex:none;display:grid;place-items:center}
.icon-list .dot::before{content:"";width:16px;height:13px;border:3px solid var(--signal);border-bottom:none;border-radius:9px 9px 0 0}
@media (max-width:460px){.icon-list{grid-template-columns:1fr}}
.media-two{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}
.media-two img{display:block;width:100%;height:100%;object-fit:cover;border-radius:var(--r);max-width:100%}
@media (max-width:860px){.media-two{grid-template-columns:1fr}}
.panel img.panel-photo{display:block;width:calc(100% + 56px);max-width:none;margin:-28px -28px 20px;aspect-ratio:16/10;object-fit:cover;border-radius:var(--r) var(--r) 0 0}

/* ---- photos ---- */
.arch-art.photo{background:#000 center/cover no-repeat}
.arch-art.photo::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.88) 0%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.05) 100%);z-index:0}
.fac .ph{display:block;margin:-26px -22px 8px;aspect-ratio:16/10;overflow:hidden;background:var(--bg)}
.fac .ph img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s}
.fac a:hover .ph img{transform:scale(1.04)}
.fac .ph.mark{display:grid;place-items:center;background:var(--signal)}
.fac .ph.mark::after{content:"";width:34%;aspect-ratio:1.25;border:10px solid var(--on-signal);border-bottom:none;border-radius:999px 999px 0 0}
.photo-band{margin:0;padding-block:28px 0}
.photo-band img{display:block;width:100%;max-width:100%;aspect-ratio:21/9;object-fit:cover;border-radius:var(--r)}
@media (max-width:600px){.photo-band img{aspect-ratio:4/3}}
.trainer.has-photo{padding:0;overflow:hidden;gap:0;text-align:left;justify-items:stretch;border-radius:var(--r)}
.trainer.has-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.trainer.has-photo .meta{padding:14px 16px 16px;display:grid;gap:4px}
.team-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-bottom:40px}

/* ---- video ---- */
.arch-art .hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.arch-art.photo::before{z-index:1}
.arch-art .arch-inner{z-index:2}
.member{border:0;cursor:pointer;font:inherit;text-align:left;background-size:cover;background-position:center}
.member::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.05) 60%);z-index:0}
.member>*{position:relative;z-index:1}
.member .play{position:absolute;color:#fff;background:rgba(0,0,0,.35)}
.member b,.member small{color:#fff}
.member:nth-child(3n+2){background-color:var(--signal)}
.member:hover .play{background:var(--signal);color:var(--on-signal);border-color:var(--signal)}
.video-modal{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.88);display:grid;place-items:center;padding:24px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px))}
.video-modal .vm-inner{position:relative;width:min(420px,100%);max-height:100%}
.video-modal video{display:block;width:100%;max-height:calc(100vh - 120px);aspect-ratio:9/16;background:#000;border-radius:var(--r)}
.video-modal .vm-top{display:flex;justify-content:space-between;align-items:center;color:#fff;margin-bottom:10px}
.video-modal .vm-top b{font-family:var(--f-display);font-size:26px;text-transform:uppercase}
.video-modal button{width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.15);color:#fff;font-size:22px;cursor:pointer}

.seg button .save{display:block;font:500 10px/1.2 var(--f-mono);letter-spacing:.06em;opacity:.8;margin-top:3px}
.seg button[data-term]{line-height:1.1}
.term-note{margin:10px 0 0;font-size:13.5px;color:color-mix(in srgb, var(--arch-fg) 70%, transparent)}
.trainer-card{all:unset;box-sizing:border-box;cursor:pointer;display:grid;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:border-color .15s}
.trainer-card:hover{border-color:var(--signal)}
.trainer-card:focus-visible{outline:3px solid var(--signal);outline-offset:3px}
.trainer-card img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.trainer-card .meta{padding:14px 16px 16px;display:grid;gap:6px}
.trainer-card b{font-family:var(--f-display);font-size:20px;text-transform:uppercase;line-height:1.05}
.trainer-card .spec{font-size:13.5px;color:var(--muted);line-height:1.4}
.trainer-card .more{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--signal)}
.bio-modal{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.85);display:grid;place-items:center;padding:24px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px));overflow:auto}
.bio-card{position:relative;width:min(860px,100%);max-height:calc(100vh - 48px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);display:grid;grid-template-columns:300px 1fr}
.bio-card img{width:100%;height:100%;object-fit:cover;min-height:100%}
.bio-body{padding:30px;min-width:0}
.bio-body h2{font-size:clamp(32px,5vw,46px)}
.bio-body .spec{color:var(--signal);font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;margin:8px 0 18px}
.bio-body p{color:var(--muted);margin:0 0 12px;max-width:62ch}
.bio-contact{list-style:none;padding:0;margin:0 0 20px;display:grid;gap:6px;font-family:var(--f-mono);font-size:13px}
.bio-contact a{color:var(--ink);text-decoration-color:var(--signal);text-underline-offset:3px;overflow-wrap:anywhere}
.bio-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:22px;cursor:pointer;z-index:1}
@media (max-width:700px){.bio-card{grid-template-columns:1fr}.bio-card img{aspect-ratio:4/3;min-height:0;object-position:center 25%}}

/* full-width hero video */
.hero.has-video{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(56px,9vw,120px) clamp(48px,7vw,96px);min-height:clamp(560px,82vh,860px);display:flex;align-items:center}
.hero.has-video>.wrap{width:100%}
.hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.hero.has-video::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(10,10,10,.88) 0%,rgba(10,10,10,.6) 48%,rgba(10,10,10,.25) 100%),linear-gradient(to top,var(--bg) 0%,transparent 22%)}
.hero.has-video .hero-copy{color:rgba(255,255,255,.82)}
.arch-art.glass{background:rgba(10,10,10,.38);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);border:1px solid rgba(255,255,255,.18);border-bottom:none}
.arch-art.glass::before{display:none}
@media (max-width:860px){.hero.has-video{min-height:0}.hero.has-video::after{background:linear-gradient(to bottom,rgba(10,10,10,.75),rgba(10,10,10,.82) 70%,var(--bg))}.arch-art.glass{aspect-ratio:auto;border-radius:24px}.arch-art.glass .arch-inner{position:static;padding:24px}.arch-art.glass::after{display:none}}
/* location photos */
.loc .loc-photo{display:block;width:calc(100% + 56px);max-width:none;margin:-28px -28px 4px;aspect-ratio:16/10;object-fit:cover;border-radius:var(--r) var(--r) 0 0}
.loc h3{position:static;width:auto;height:auto;overflow:visible;clip-path:none}
/* member hover previews */
.member .member-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 72%;z-index:0}
.member::before{z-index:1}
.member>*:not(.member-vid){z-index:2}
.member .play{z-index:2;transition:opacity .2s}
.member.is-playing .play{opacity:0}
.member .play{top:auto;left:auto;right:14px;bottom:16px;transform:none;width:42px;height:42px}

/* ---- polish: photo page-heroes, rhythm, motion ---- */
.page-hero.photo{position:relative;isolation:isolate;overflow:hidden;border-bottom:0;padding-block:clamp(72px,11vw,150px) clamp(44px,6vw,72px)}
.page-hero.photo .ph-bg{position:absolute;inset:0;z-index:-2;background-position:center;background-size:cover;background-repeat:no-repeat}
.page-hero.photo::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(10,10,10,.9),rgba(10,10,10,.55) 60%,rgba(10,10,10,.35)),linear-gradient(to top,var(--bg),transparent 35%)}
.page-hero.photo p.lead{color:rgba(255,255,255,.8)}
section.block{padding-block:clamp(64px,8vw,104px)}
.sec-head{margin-bottom:clamp(28px,4vw,44px)}
.sec-head .eyebrow{display:inline-flex;align-items:center;gap:10px;color:var(--signal)}
.sec-head .eyebrow::before{content:"";width:22px;height:2px;background:var(--signal)}
.fac a,.fac .cell,.loc,.trainer-card,.class-grid figure,.member{transition:transform .25s ease,border-color .2s}
.fac a:hover,.loc:hover,.trainer-card:hover,.class-grid figure:hover{transform:translateY(-3px)}
.class-grid figure img{transition:transform .5s}
.class-grid figure:hover img{transform:scale(1.04)}
.cta-band{background:var(--signal);color:var(--on-signal)}
.cta-band .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding-block:clamp(40px,6vw,64px)}
.cta-band h2{font-size:clamp(34px,6vw,64px)}
.cta-band p{margin:8px 0 0;font-weight:500}
.cta-band .btn{background:var(--on-signal);border-color:var(--on-signal);color:var(--signal)}
@media (prefers-reduced-motion: reduce){.fac a,.loc,.trainer-card,.class-grid figure,.member,.class-grid figure img{transition:none}}

/* studio pair (dance) */
.studio-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:28px}
.studio-pair figure{margin:0;position:relative;border-radius:var(--r);overflow:hidden}
.studio-pair img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.studio-pair figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:end;padding:40px 18px 16px;background:linear-gradient(to top,rgba(0,0,0,.8),transparent)}
.studio-pair b{font-family:var(--f-display);font-size:clamp(22px,3vw,30px);text-transform:uppercase;color:#fff}
.studio-pair span{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;color:var(--signal)}
@media (max-width:600px){.studio-pair{grid-template-columns:1fr}}
/* member quotes */
.member q{display:block;font-size:13px;line-height:1.35;color:rgba(255,255,255,.85);margin-top:6px;quotes:"\201C" "\201D";display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;max-width:calc(100% - 50px)}
.member .play{top:auto;bottom:16px;right:14px}
/* up next */
.upnext{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.upnext li{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:grid;gap:6px;align-content:start}
.upnext .when{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--signal)}
.upnext .name{font-family:var(--f-display);font-size:22px;text-transform:uppercase;line-height:1.05}
.upnext .who{font-size:13.5px;color:var(--muted)}
.upnext a{margin-top:8px;justify-self:start;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);text-decoration-color:var(--signal);text-underline-offset:4px;text-decoration-thickness:2px}
.upnext-foot{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin-top:20px;color:var(--muted);font-size:14px}
@media (max-width:960px){.upnext{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.upnext{grid-template-columns:1fr}}

.hero.has-video .hero-grid{grid-template-columns:minmax(0,1fr)}
.hero.has-video .hero-grid>div{max-width:760px}
.promo b{font-weight:600}
@media (max-width:640px){.promo .promo-sep,.promo .promo-2{display:none}}
.nav ul{gap:22px}

/* tighter home rhythm */
.hero.has-video{min-height:clamp(440px,64vh,680px);padding-block:clamp(48px,7vw,96px) clamp(36px,5vw,64px)}
.hero.has-video .hero-ctas{margin-top:28px}
main#top section.block{padding-block:clamp(40px,5.5vw,72px)}
main#top section.block + section.block{padding-top:0}
main#top .sec-head{margin-bottom:clamp(20px,3vw,32px)}
main#top .members{margin-bottom:0}
main#top .app{margin-top:32px;padding-top:22px}
main#top .photo-band{margin-bottom:20px!important}
main#top .photo-band img{aspect-ratio:16/5}
@media (max-width:600px){main#top .photo-band img{aspect-ratio:16/9}}
footer{padding-block:48px 28px}
.big-mark{margin-top:36px}

/* phone refinements */
@media (max-width:600px){
  .fac{grid-template-columns:1fr 1fr!important}
  .fac a,.fac div.cell{padding:0 12px 14px;gap:6px;min-height:0}
  .fac .ph{margin:0 -12px 6px}
  .fac h3{font-size:17px}
  .fac p,.fac .n{display:none}
  .fac .go{font-size:10px}
  .member q{display:none}
  .member b{font-size:20px}
  .seg[aria-label="Commitment period"]{display:grid;grid-template-columns:repeat(3,1fr);width:100%;border-radius:16px}
  .seg[aria-label="Commitment period"] button{padding:10px 6px;border-radius:12px;font-size:12px}
  .seg[aria-label="Location"],.seg[aria-label="Home location"]{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .upnext li{padding:14px 16px}
}

/* classes timetable */
.tt-controls{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;margin-bottom:16px}
.tt-filter{display:flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tt-filter select{font:500 14px var(--f-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:10px 36px 10px 16px;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--signal) 50%),linear-gradient(135deg,var(--signal) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px;background-repeat:no-repeat}
.tt-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:14px}
.tt-days button{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 6px;cursor:pointer;display:grid;gap:3px;text-align:center}
.tt-days b{font-family:var(--f-display);font-size:18px;text-transform:uppercase}
.tt-days small{font-family:var(--f-mono);font-size:10.5px;color:var(--muted);letter-spacing:.04em}
.tt-days button[aria-selected="true"]{background:var(--signal);border-color:var(--signal);color:var(--on-signal)}
.tt-days button[aria-selected="true"] small{color:var(--on-signal)}
.tt-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.tt-list li{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:18px;align-items:center;padding:16px 4px;border-bottom:1px solid var(--line)}
.tt-time{font-family:var(--f-display);font-size:24px;font-variant-numeric:tabular-nums;display:grid}
.tt-time small{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.06em}
.tt-main{display:grid;gap:2px;min-width:0}
.tt-main b{font-family:var(--f-display);font-size:22px;text-transform:uppercase;line-height:1.05}
.tt-main span{color:var(--muted);font-size:14px}
.tt-book{font:700 13px/1 var(--f-body);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;background:var(--signal);color:var(--on-signal);border-radius:999px;padding:12px 20px}
.tt-book:hover{filter:brightness(1.05)}
.tt-done{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tt-list li.is-past{opacity:.5}
.tt-list .tt-empty{display:grid;grid-template-columns:1fr;gap:8px;padding:36px 4px}
.tt-empty b{font-family:var(--f-display);font-size:24px;text-transform:uppercase}
.tt-empty span{color:var(--muted)}
.tt-empty .btn{justify-self:start;margin-top:6px}
.tt-note{margin:16px 0 0;font-size:13px;color:var(--muted)}
.tt-note a{color:var(--ink);text-decoration-color:var(--signal);text-underline-offset:3px}
@media (max-width:600px){
  .tt-controls{flex-direction:column;align-items:stretch}
  .tt-controls .seg{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .tt-filter select{flex:1}
  .tt-days{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:64px;overflow-x:auto;padding-bottom:4px;scroll-snap-type:x mandatory}
  .tt-days button{scroll-snap-align:start}
  .tt-list li{grid-template-columns:72px minmax(0,1fr) auto;gap:12px}
  .tt-time{font-size:19px}
  .tt-main b{font-size:18px}
  .tt-book{padding:10px 14px;font-size:12px}
}

.emoji-list{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.emoji-list li{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;color:var(--ink)}
.emoji-list li span{font-size:19px;line-height:1.3;text-align:center}
.tt-days{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(86px,1fr);overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:6px}
.tt-days button{scroll-snap-align:start}
.tt-days .dnum{font-family:var(--f-mono);font-size:11px;letter-spacing:.04em}
.tt-days button.wk2{margin-left:10px}
@media (max-width:600px){.tt-days{grid-auto-columns:72px}}

/* pricing polish */
.opt-tag{font-style:normal;margin-left:8px;padding:2px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--arch-fg) 30%,transparent);font-size:10px;letter-spacing:.08em}
.opt .opt-price{position:absolute;top:16px;right:16px;font-family:var(--f-display);font-size:22px;color:var(--signal);line-height:1}
.opt .opt-price i{font-style:normal;font-family:var(--f-mono);font-size:11px;color:color-mix(in srgb,var(--arch-fg) 65%,transparent)}
.opt.addon strong,.opt.pass strong{padding-right:70px}
.opt.included{cursor:default;border-style:solid}
.opt.included::before{background:var(--signal);border-color:var(--signal);box-shadow:inset 0 0 0 3px var(--surface)}
.passes-opts .opt::before{border-radius:50%}
.passes-band{background:var(--bg);border-top:0}
.passes-band .opt[aria-pressed="true"]::before{box-shadow:inset 0 0 0 4px var(--bg)}
.t-total{display:flex;justify-content:space-between;align-items:baseline;margin:-6px 0 16px;padding:12px 0;border-top:2px solid var(--ink);font-weight:600}
.t-total b{font-family:var(--f-display);font-size:28px}
.t-addons{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:grid;gap:8px}
.t-addons-h{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.t-addons a{font-weight:700;font-size:14px;color:var(--ink);text-decoration-color:var(--ink);text-underline-offset:3px;display:block}
.is-add span:first-child::before{content:"+ ";font-weight:700}
.chip-row a.chip{color:inherit;text-decoration:none}
.good-to-know{padding-block:clamp(36px,5vw,64px)!important}
.gtk{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.gtk>div{background:var(--surface);padding:22px;display:grid;gap:6px;align-content:start}
.gtk b{font-family:var(--f-display);font-size:22px;text-transform:uppercase;color:var(--signal)}
.gtk span{color:var(--muted);font-size:14px}
@media (max-width:860px){.gtk{grid-template-columns:1fr 1fr}}
@media (max-width:460px){.gtk{grid-template-columns:1fr}}
@media (max-width:600px){.opt .opt-price{font-size:18px;top:14px;right:14px}}

/* ---- dance page ---- */

.eq{display:flex;align-items:flex-end;gap:5px;height:44px;margin:14px 0 6px;max-width:320px}
.eq i{flex:1;background:var(--signal);border-radius:2px 2px 0 0;height:30%;animation:eq 1.1s ease-in-out infinite alternate;transform-origin:bottom}
.eq i:nth-child(3n){animation-duration:.8s}.eq i:nth-child(4n+1){animation-duration:1.3s}.eq i:nth-child(5n+2){animation-duration:.95s;animation-delay:-.4s}.eq i:nth-child(7n){animation-delay:-.7s}
@keyframes eq{0%{height:18%}50%{height:90%}100%{height:40%}}
.dance-ticker .ticker-track{animation-duration:34s}
.dance-ticker span::after{content:"";border:0;width:20px;height:20px;background:var(--signal);-webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l11-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='17' cy='16' r='3'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M9 18V5l11-2v13'/><circle cx='6' cy='18' r='3'/><circle cx='17' cy='16' r='3'/></svg>") center/contain no-repeat}
.studios{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.studio{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column}
.studio-head{padding:24px 24px 16px}
.studio-head h2{font-size:clamp(34px,5vw,52px);margin-top:6px}
.studio-photo{margin:0;position:relative;overflow:hidden}
.studio-photo img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .6s}
.studio:hover .studio-photo img{transform:scale(1.03)}
.studio-photo .size{position:absolute;right:14px;bottom:14px;background:var(--signal);color:var(--on-signal);font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;padding:6px 10px;border-radius:999px}
.studio-body{padding:20px 24px 24px;display:grid;gap:16px;flex:1;align-content:start}
.studio-body .studio-meta{margin:0}
.studio-body .btn{justify-self:start}
.rate-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.rate-row>div{border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:2px}
.rate-row b{font-family:var(--f-display);font-size:32px;color:var(--signal);line-height:1}
.rate-row b i{font-style:normal;font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.rate-row span{font-weight:600}
.rate-row small{color:var(--muted);font-size:12.5px;line-height:1.4}
@media (max-width:860px){.studios{grid-template-columns:1fr}}
.perfect{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.perfect>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 14px;display:grid;gap:4px;justify-items:start;transition:transform .2s,border-color .2s}
.perfect>div:hover{transform:translateY(-3px) rotate(-1deg);border-color:var(--signal)}
.perfect span{font-size:30px;line-height:1.1}
.perfect b{font-family:var(--f-display);font-size:19px;text-transform:uppercase}
.perfect small{color:var(--muted);font-size:13px;line-height:1.35}
@media (max-width:960px){.perfect{grid-template-columns:repeat(3,1fr)}}
@media (max-width:520px){.perfect{grid-template-columns:1fr 1fr}}
.stepper{display:inline-flex;align-items:center;gap:6px;border:2px solid color-mix(in srgb,var(--arch-fg) 30%,transparent);border-radius:999px;padding:4px}
.stepper button{width:42px;height:42px;border-radius:50%;border:0;background:var(--signal);color:var(--on-signal);font-size:22px;font-weight:700;cursor:pointer}
.stepper output{min-width:110px;text-align:center;font-family:var(--f-display);font-size:22px;text-transform:uppercase}
.crew{display:flex;align-items:center;gap:16px;max-width:420px}
.crew input{flex:1;accent-color:var(--signal)}
.crew output{font-family:var(--f-display);font-size:20px;text-transform:uppercase;min-width:100px}
@media (prefers-reduced-motion: reduce){.eq i{animation:none;height:55%}.studio-photo img{transition:none}}

/* ticker icons */
.ticker span.tk{gap:12px}
.ticker span.tk::after{display:none}
.ticker span.tk svg{width:26px;height:26px;flex:none;fill:none;stroke:var(--signal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ticker span.tk{padding-inline:26px}

/* one icon style everywhere */
svg.ic{fill:none;stroke:var(--signal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}
.emoji-list li span svg.ic{width:22px;height:22px;margin-top:1px}
.perfect span svg.ic{width:34px;height:34px;margin-bottom:6px}
.icon-list svg.ic{width:30px;height:30px;flex:none}

/* app store buttons */
.store-btns{display:flex;flex-wrap:wrap;gap:10px}
.store{display:inline-flex;align-items:center;gap:10px;padding:10px 18px 10px 14px;border-radius:12px;background:var(--ink);color:var(--bg);text-decoration:none;border:1px solid var(--ink);transition:transform .15s,background .15s}
.store:hover{transform:translateY(-2px);background:var(--signal);border-color:var(--signal);color:var(--on-signal)}
.store svg{width:26px;height:26px;flex:none}
.store .st-apple{fill:currentColor}
.store .st-play{stroke:currentColor;stroke-linejoin:round;stroke-linecap:round}
.store span{display:grid;line-height:1.05;font-weight:700;font-size:17px;letter-spacing:.01em}
.store small{font-weight:500;font-size:10.5px;letter-spacing:.04em;opacity:.8}

/* headline classes */
.cls-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.cls{display:block;position:relative;border-radius:var(--r);overflow:hidden;background:var(--surface);border:1px solid var(--line);text-decoration:none;color:var(--ink);transition:transform .25s,border-color .2s}
.cls:hover{transform:translateY(-3px);border-color:var(--signal)}
.cls img{display:block;width:100%;aspect-ratio:1;object-fit:cover;transition:transform .5s}
.cls:hover img{transform:scale(1.04)}
.cls-body{display:grid;gap:4px;padding:14px 16px 16px}
.cls-body b{font-family:var(--f-display);font-size:22px;text-transform:uppercase}
.cls-body small{color:var(--muted);font-size:14px}
.cls-body em{font-style:normal;font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--signal);margin-top:4px}
.cls-more{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:var(--r);padding:20px}
.cls-more-head{display:grid;gap:10px;min-width:0;flex:1}
.cls-more-head>b{font-family:var(--f-display);font-size:26px;text-transform:uppercase;color:var(--signal)}
.cls-more-head>span{display:flex;flex-wrap:wrap;gap:8px}
#cls-extra{grid-column:1/-1;margin-top:2px}
@media (max-width:860px){.cls-grid{grid-template-columns:1fr 1fr}}
@media (max-width:460px){.cls-body small{display:none}.cls-body b{font-size:18px}}

/* pricing tabs */
.price-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-width:620px;margin-top:26px;padding:6px;border-radius:18px;background:rgba(10,10,10,.55);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(4px)}
.price-tabs button{font:inherit;color:#fff;background:transparent;border:0;border-radius:13px;padding:14px 16px;cursor:pointer;display:grid;gap:3px;text-align:left;transition:background .2s,color .2s}
.price-tabs b{font-family:var(--f-display);font-size:clamp(17px,2.2vw,22px);text-transform:uppercase;line-height:1.05}
.price-tabs small{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.price-tabs button[aria-selected="true"]{background:var(--signal);color:var(--on-signal)}
.price-tabs button:not([aria-selected="true"]):hover{background:rgba(255,255,255,.08)}
.passes-band{border-top:1px solid var(--line)}

/* add-ons: information only */
.addon-note{margin:0 0 12px;font-size:14px;color:color-mix(in srgb,var(--arch-fg) 75%,transparent)}
.addon-list{list-style:none;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--arch-fg) 25%,transparent);border-radius:var(--r)}
.addon-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--arch-fg) 18%,transparent)}
.addon-list li:last-child{border-bottom:0}
.addon-list b{font-family:var(--f-display);font-size:18px;text-transform:uppercase}
.addon-list span{grid-column:1;font-size:13px;color:color-mix(in srgb,var(--arch-fg) 65%,transparent)}
.addon-list em{grid-column:2;grid-row:1/3;align-self:center;font-style:normal;font-family:var(--f-display);font-size:20px;color:var(--signal)}
/* animated hero graphics (match the dance equaliser) */
.hg{display:block;height:44px;margin:14px 0 6px;max-width:320px;width:100%}
.hg-steps{display:flex;align-items:flex-end;gap:8px;width:auto}
.hg-steps i{width:46px;background:var(--signal);border-radius:3px 3px 0 0;opacity:.25;animation:hgstep 2.4s ease-in-out infinite}
.hg-steps i:nth-child(1){height:25%}.hg-steps i:nth-child(2){height:50%;animation-delay:.3s}.hg-steps i:nth-child(3){height:75%;animation-delay:.6s}.hg-steps i:nth-child(4){height:100%;animation-delay:.9s}
@keyframes hgstep{0%,15%{opacity:.25}35%,70%{opacity:1}100%{opacity:.25}}
.hg-pulse path{fill:none;stroke:var(--signal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:520;stroke-dashoffset:520;animation:hgpulse 2.6s linear infinite}
@keyframes hgpulse{0%{stroke-dashoffset:520}60%{stroke-dashoffset:0}100%{stroke-dashoffset:-520}}
.hg-lift path{stroke:var(--signal);stroke-width:4;stroke-linecap:round}
.hg-lift rect{fill:var(--signal)}
.hg-lift .bar{animation:hglift 1.8s cubic-bezier(.5,0,.3,1) infinite;transform-origin:center}
@keyframes hglift{0%,100%{transform:translateY(5px)}45%,60%{transform:translateY(-5px)}}
.hg-chat{display:inline-flex;align-items:center;gap:7px;width:auto;height:44px;padding:0 18px 0 14px;border:2px solid var(--signal);border-radius:22px 22px 22px 4px}
.hg-chat span{font-family:var(--f-display);font-size:24px;color:var(--signal);margin-right:4px}
.hg-chat i{width:8px;height:8px;border-radius:50%;background:var(--signal);animation:hgdot 1.2s ease-in-out infinite}
.hg-chat i:nth-of-type(2){animation-delay:.15s}.hg-chat i:nth-of-type(3){animation-delay:.3s}
@keyframes hgdot{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-6px);opacity:1}}
svg.hg{width:min(360px,100%);height:52px;overflow:visible}
.hg-chat{height:52px;padding:0 22px 0 18px;gap:9px}.hg-chat span{font-size:30px}.hg-chat i{width:10px;height:10px}
.hg-steps{height:52px}.hg-steps i{width:54px}
@media (prefers-reduced-motion: reduce){.hg-steps i,.hg-pulse path,.hg-lift .bar,.hg-chat i{animation:none;opacity:1;stroke-dashoffset:0}}

/* home: tighter top, app strip up high */
main#top #inside{padding-top:clamp(28px,3.5vw,44px)}
main#top .app-band{padding-block:0 clamp(32px,4vw,48px)!important}
main#top .app.app-top{margin-top:0;padding:22px 24px;border:1px solid var(--line);border-top:2px solid var(--signal);border-radius:var(--r);background:var(--surface)}

/* scrolling top banner */
.promo{padding:0;overflow:hidden;white-space:nowrap;text-align:left;position:relative}
.promo-track{display:inline-flex;animation:promo 38s linear infinite}
.promo:hover .promo-track{animation-play-state:paused}
.promo .pm{display:inline-flex;align-items:center;gap:10px;padding:9px 28px 9px 0;font-size:12.5px;letter-spacing:.06em}
.promo .pm svg{width:16px;height:16px;fill:var(--on-signal);flex:none;animation:bolt 1.6s ease-in-out infinite}
.promo .pm b{font-weight:700;text-transform:uppercase;letter-spacing:.1em}
.promo .pm i{font-style:normal;opacity:.7}
.promo .pm em{font-style:normal;font-weight:700;background:var(--on-signal);color:var(--signal);padding:3px 9px;border-radius:999px;letter-spacing:.12em}
.promo::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-100%);animation:shine 5s ease-in-out infinite;pointer-events:none}
@keyframes promo{to{transform:translateX(-50%)}}
@keyframes bolt{0%,100%{transform:scale(1)}50%{transform:scale(1.25) rotate(-8deg)}}
@keyframes shine{0%,60%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
/* pricing: membership pass getting stamped */
.hg-pass .card{fill:none;stroke:var(--signal);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.hg-pass .fill{fill:var(--signal)}
.hg-pass .stamp circle{fill:none;stroke:var(--signal);stroke-width:2.4}
.hg-pass .stamp circle+circle{stroke-width:1.2;stroke-dasharray:3 3}
.hg-pass .stamp text{fill:var(--signal);font-family:var(--f-display);font-weight:700;font-size:15px;letter-spacing:.04em}
.hg-pass .stamp{transform-box:fill-box;transform-origin:center;animation:stamp 4s cubic-bezier(.2,.9,.3,1.3) infinite;opacity:0}
.hg-pass .s1{--r:-12deg}.hg-pass .s2{--r:10deg;animation-delay:.6s}
@keyframes stamp{0%{opacity:0;transform:scale(1.8) rotate(0deg)}10%,80%{opacity:1;transform:scale(1) rotate(var(--r))}92%,100%{opacity:0;transform:scale(1) rotate(var(--r))}}
svg.hg-pass{width:min(260px,100%);height:60px}
/* classes: a row of people jumping in a wave */
.hg-jump .jf circle{fill:var(--signal)}
.hg-jump .jf path{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-jump .jf{animation:jump 1.2s ease-in-out infinite;animation-delay:calc((var(--d) - 18) * 0.004s)}
@keyframes jump{0%,55%,100%{transform:translateY(4px)}25%{transform:translateY(-4px)}}
svg.hg-jump{width:min(280px,100%);height:56px}
/* trainers: coach guiding a squat */
.hg-coach path,.hg-coach circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-coach circle{fill:var(--signal)}
.hg-coach .floor{stroke-width:1.6;opacity:.5}
.hg-coach .lift-up{animation:squatUp 2s ease-in-out infinite}
.hg-coach .lift-legs{transform-box:fill-box;transform-origin:50% 100%;animation:squatLegs 2s ease-in-out infinite}
.hg-coach .guide{transform-box:fill-box;transform-origin:0% 50%;animation:guide 2s ease-in-out infinite}
@keyframes squatUp{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}
@keyframes squatLegs{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.7)}}
@keyframes guide{0%,100%{transform:rotate(0)}50%{transform:rotate(14deg)}}
svg.hg-coach{width:min(200px,100%);height:62px}
@media (prefers-reduced-motion: reduce){.promo-track,.promo .pm svg,.promo::after,.hg-pass .stamp,.hg-jump .jf,.hg-coach *{animation:none!important;opacity:1}}

.foot-mail{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;font-size:14px}
.foot-mail small{display:block;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.6}
.foot-mail a{overflow-wrap:anywhere}
.copy-line+.copy-line{margin-top:8px}
.copy-line small{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);min-width:110px}

/* text runs the full width */
.page-hero p.lead,.hero-copy,.sec-head p,.app p,.faq .a,.prose{max-width:none}
.sec-head{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px}
/* footer wordmark fits the width */
.big-mark{font-size:clamp(28px,8.2vw,104px);white-space:nowrap;overflow:visible;letter-spacing:-.01em}

/* classes: a week of class slots lighting up */
.hg-week{display:flex;gap:6px;height:auto;width:auto}
.hg-week .wc{display:grid;gap:4px;justify-items:center}
.hg-week .wd{font-family:var(--f-mono);font-size:10px;color:var(--signal);opacity:.8;letter-spacing:.06em}
.hg-week i{display:block;width:28px;height:11px;border-radius:3px;border:1.5px solid var(--signal);background:transparent;animation:slot 4.2s ease-in-out infinite;animation-delay:calc(var(--o) * .14s)}
@keyframes slot{0%,8%{background:transparent}18%,78%{background:var(--signal)}92%,100%{background:transparent}}
@media (max-width:460px){.hg-week i{width:22px}}
@media (prefers-reduced-motion: reduce){.hg-week i{animation:none;background:var(--signal)}}

/* week at a glance */
.wk-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:10px 24px;margin:48px 0 16px;padding-top:28px;border-top:1px solid var(--line)}
.wk-head h3{font-size:clamp(26px,3.6vw,40px);margin-top:6px}
.wk-head p{margin:0;color:var(--muted);font-size:14px}
.wk-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}
.wk{display:grid;grid-template-columns:104px repeat(7,minmax(108px,1fr));min-width:880px;background:var(--line);gap:1px}
.wk-c{background:var(--surface);padding:10px}
.wk-corner{background:var(--bg)}
.wk-day{background:var(--bg);display:grid;gap:2px;text-align:center}
.wk-day b{font-family:var(--f-display);font-size:18px;text-transform:uppercase}
.wk-day small,.wk-band small{font-family:var(--f-mono);font-size:10.5px;color:var(--muted);letter-spacing:.04em}
.wk-band{background:var(--bg);display:grid;gap:2px;align-content:start}
.wk-band b{font-family:var(--f-display);font-size:16px;text-transform:uppercase;color:var(--signal)}
.wk-cell{display:grid;gap:5px;align-content:start;min-height:56px}
.wk-chip{font:600 12.5px/1.25 var(--f-body);text-align:left;color:var(--ink);background:color-mix(in srgb,var(--signal) 9%,transparent);border:1px solid color-mix(in srgb,var(--signal) 35%,transparent);border-left:3px solid var(--signal);border-radius:5px;padding:5px 7px;cursor:pointer;display:grid;gap:1px;transition:background .15s}
.wk-chip span{font-family:var(--f-mono);font-size:10.5px;font-weight:500;color:var(--signal)}
.wk-chip:hover{background:color-mix(in srgb,var(--signal) 22%,transparent)}

.wk-corner,.wk-band{position:sticky;left:0;z-index:1}
.wk-swipe{display:none;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--signal);margin:0 0 8px}
@media (max-width:860px){.wk{grid-template-columns:78px repeat(7,minmax(112px,1fr))}.wk-band b{font-size:14px}.wk-swipe{display:block}}

/* classes: mini Hyrox, run, wall balls, run back, burpees */
svg.hg-hyrox{width:min(420px,100%);height:70px;overflow:visible}
.hg-hyrox path,.hg-hyrox circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-hyrox .hd{fill:var(--signal)}
.hg-hyrox .track{stroke-width:1.5;opacity:.45}
.hg-hyrox .ball{fill:var(--signal);stroke:none;opacity:0;animation:hxball 6s ease-in-out infinite}
.hg-hyrox .rx{animation:hxrun 6s linear infinite}

.hg-hyrox .rb{transform-box:fill-box;transform-origin:50% 100%;animation:hxbob 6s ease-in-out infinite}
.hg-hyrox .pa{animation:hxa .32s steps(1) infinite}
.hg-hyrox .pb{animation:hxb .32s steps(1) infinite}
@keyframes hxrun{0%{transform:translateX(100px) scaleX(1)}35%{transform:translateX(330px) scaleX(1)}50%{transform:translateX(330px) scaleX(1)}50.2%{transform:translateX(330px) scaleX(-1)}85%{transform:translateX(100px) scaleX(-1)}99.8%{transform:translateX(100px) scaleX(-1)}100%{transform:translateX(100px) scaleX(1)}}
@keyframes hxflip{0%{transform:scaleX(1)}50%{transform:scaleX(-1)}100%{transform:scaleX(1)}}
@keyframes hxbob{0%,36%{transform:translateY(0)}39.5%{transform:translateY(7px)}43%{transform:translateY(0)}46.5%{transform:translateY(7px)}50%{transform:translateY(0)}86%{transform:translateY(0) rotate(0)}88%{transform:translateY(6px) rotate(0)}90%{transform:translateY(-3px) rotate(80deg)}93%{transform:translateY(-3px) rotate(80deg)}95%{transform:translateY(6px) rotate(0)}97%{transform:translateY(-8px) rotate(0)}99%,100%{transform:translateY(0) rotate(0)}}
@keyframes hxa{0%{opacity:1}50%{opacity:0}}
@keyframes hxb{0%{opacity:0}50%{opacity:1}}
@keyframes hxball{0%,38%{opacity:0;transform:translate(0,0)}40%{opacity:1;transform:translate(0,0)}43%{transform:translate(26px,-19px)}46.5%{transform:translate(0,0)}48%{opacity:1}49.5%,100%{opacity:0;transform:translate(0,0)}}
@media (prefers-reduced-motion: reduce){.hg-hyrox *{animation:none!important}.hg-hyrox .pb{opacity:0}.hg-hyrox .rx{transform:translateX(100px)}}

/* week grid is now the main timetable */
.wk-head{margin:6px 0 12px;padding-top:0;border-top:0;align-items:center}
.wk-head h3{font-size:clamp(22px,3vw,32px);margin:0}
.wk-key{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.wk-key i{width:14px;height:14px;border-radius:3px;display:inline-block;margin-left:8px}
.wk-key .k-lb{background:var(--signal)}
.wk-key .k-vx{border:2px solid #fff}
.wk-scroll{max-height:min(78vh,820px);overflow:auto;overscroll-behavior:contain}
.wk-day{position:sticky;top:0;z-index:2}
.wk-corner{position:sticky;top:0;left:0;z-index:3}
.wk-band{z-index:1}
.wk-chip.site-vx{border-left-color:#fff;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.25)}
.wk-chip.site-vx span{color:#fff}
/* class pop-up */
.cls-modal{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.8);display:grid;place-items:center;padding:24px max(16px, env(safe-area-inset-right,0px)) 24px max(16px, env(safe-area-inset-left,0px))}
.cm-card{position:relative;width:min(520px,100%);max-height:calc(100vh - 48px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--signal);border-radius:var(--r);padding:28px;display:grid;gap:14px;animation:popin .25s ease-out}
.cm-card h2{font-size:clamp(30px,6vw,44px)}
.cm-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:var(--ink);font-size:22px;cursor:pointer}
.cm-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0}
.cm-facts div{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.cm-facts dt{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.cm-facts dd{margin:4px 0 0;font-weight:600}
.cm-next span{display:block;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.cm-next div{display:flex;flex-wrap:wrap;gap:6px}
.cm-card .btn{justify-self:start}
.cm-fine{margin:0;font-size:12.5px;color:var(--muted)}
@media (max-width:520px){.cm-facts{grid-template-columns:1fr 1fr}.cm-card .btn{justify-self:stretch;justify-content:center}}

/* timetable: page scrolls normally; day row sticks under the menu */
.wk-scroll{max-height:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior:auto;border-top:0;border-radius:0 0 var(--r) var(--r)}
.wk-top{position:sticky;top:calc(env(safe-area-inset-top,0px) + var(--navh,72px));z-index:5;overflow:hidden;border:1px solid var(--line);border-bottom:0;border-radius:var(--r) var(--r) 0 0;background:var(--line)}
.wk-headrow{gap:1px}
.wk-headrow .wk-c{position:static}
.wk-headrow .wk-corner{position:sticky;left:0;z-index:2}
.wk-day{position:static}

.cm-desc{margin:-4px 0 4px;color:var(--muted);font-size:15.5px;line-height:1.55}

/* member tiles: sound hint */
.member .tap-sound{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--signal);color:var(--on-signal);font-family:var(--f-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;opacity:0;transform:translateY(-4px);transition:opacity .2s,transform .2s;pointer-events:none}
.member .tap-sound svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.member.needs-tap .tap-sound{opacity:1;transform:none}
@media (hover: none){.member .tap-sound{display:none}}
/* policy downloads */
.docs-block{padding-top:0}
.doc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px}
.doc-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 16px;align-items:start;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .2s,transform .2s}
.doc-card:hover,.doc-card:focus-visible{border-color:var(--signal);transform:translateY(-2px)}
.doc-card>svg.ic{width:34px;height:34px;grid-row:1/3}
.doc-card b{display:block;font-family:var(--f-display);font-size:20px;text-transform:uppercase;line-height:1.15}
.doc-card small{display:block;margin-top:6px;font-size:14px;color:var(--muted)}
.doc-card i{display:block;margin-top:10px;font-style:normal;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.doc-card em{grid-column:2;justify-self:start;display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-style:normal;font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--signal)}
.doc-card em svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* classes: three people skipping */
svg.hg-skip{width:min(300px,100%);height:72px;overflow:visible}
.hg-skip path,.hg-skip circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-skip .hd{fill:var(--signal)}
.hg-skip .floor{stroke-width:1.5;opacity:.45}
.hg-skip .sk{animation:skhop .7s ease-in-out infinite}
.hg-skip .rope{transform-box:fill-box;transform-origin:50% 0;animation:skrope .7s linear infinite}
.hg-skip .rope path{stroke-width:1.8}
@keyframes skhop{0%,100%{transform:translateY(-9px)}50%{transform:translateY(0)}}
@keyframes skrope{0%,100%{transform:scaleY(1)}50%{transform:scaleY(-1)}}
@media (prefers-reduced-motion: reduce){.hg-skip *{animation:none!important}}
/* classes: rotating banner */
.cls-ticker .ticker-track{animation-duration:60s;padding-block:18px}
.cls-ticker:hover .ticker-track{animation-play-state:paused}
.cls-ticker span.ct{gap:12px;padding-inline:30px;border-right:1px solid var(--line)}
.cls-ticker span.ct svg{width:30px;height:30px}
.cls-ticker span.ct b{font-weight:700}
.cls-ticker span.ct small{font-family:var(--f-body);font-weight:400;font-size:15px;text-transform:none;letter-spacing:0;color:var(--muted)}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}
@media (max-width:640px){.cls-ticker span.ct{padding-inline:20px}.cls-ticker span.ct small{font-size:13.5px}.cls-ticker .ticker-track{animation-duration:48s}}

/* dance page: tighter spacing */
.dance-page .page-hero.photo{padding-block:clamp(48px,6vw,84px) clamp(32px,4vw,48px)}
main#top.dance-page section.block{padding-block:clamp(32px,3.5vw,44px)}
main#top.dance-page section.block + section.block{padding-top:0}
.dance-page .sec-head{margin-bottom:18px}
.dance-page .perfect{margin-top:14px}
.dance-page .studio-photo img,.dance-page .studio-pair img{aspect-ratio:16/9}

/* classes: push the sled across, pull it back */
svg.hg-sled{width:min(460px,100%);max-width:460px;height:66px;overflow:visible}
.hg-sled path,.hg-sled circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-sled .hd{fill:var(--signal)}
.hg-sled .floor{stroke-width:1.5;opacity:.45}
.hg-sled .rope{stroke-width:1.5}
.hg-sled .mv{animation:sledmv 9s ease-in-out infinite}
.hg-sled .push{animation:sledpush 9s steps(1) infinite}
.hg-sled .pull{animation:sledpull 9s steps(1) infinite}
.hg-sled .pa{animation:hxa .36s steps(1) infinite}
.hg-sled .pb{animation:hxb .36s steps(1) infinite}
@keyframes sledmv{0%,4%{transform:translateX(0)}44%,54%{transform:translateX(290px)}94%,100%{transform:translateX(0)}}
@keyframes sledpush{0%{opacity:1}49%{opacity:0}99%{opacity:1}}
@keyframes sledpull{0%{opacity:0}49%{opacity:1}99%{opacity:0}}
@media (prefers-reduced-motion: reduce){.hg-sled *{animation:none!important}.hg-sled .pull,.hg-sled .pb{opacity:0}}

/* trainers: coach spotting a bench press */
svg.hg-spot{width:min(240px,100%);height:72px;overflow:visible}
.hg-spot path,.hg-spot circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.hg-spot .hd,.hg-spot .hub{fill:var(--signal)}
.hg-spot .floor{stroke-width:1.5;opacity:.45}
.hg-spot .bench{stroke-width:3.2}
.hg-spot .larm{transform-box:fill-box;transform-origin:50% 100%;animation:spLarm 2.6s ease-in-out infinite}
.hg-spot .plate{animation:spPlate 2.6s ease-in-out infinite}
.hg-spot .sarm{transform-box:view-box;transform-origin:35px 23px;animation:spArm 2.6s ease-in-out infinite}
@keyframes spPlate{0%,12%,100%{transform:translateY(0)}48%,58%{transform:translateY(17px)}}
@keyframes spLarm{0%,12%,100%{transform:scaleY(1)}48%,58%{transform:scaleY(.32)}}
@keyframes spArm{0%,12%,100%{transform:rotate(0)}48%,58%{transform:rotate(34deg)}}
@media (prefers-reduced-motion: reduce){.hg-spot *{animation:none!important}}

/* compact layout across every page */
body main#top section.block{padding-block:clamp(24px,3vw,40px)}
body main#top section.block + section.block{padding-top:0}
body main#top section.block.good-to-know{padding-block:clamp(20px,2.5vw,32px)!important}
body main#top section.block.good-to-know+*{padding-top:0}
body .page-hero.photo{padding-block:clamp(40px,5vw,72px) clamp(24px,3vw,40px)}
body .page-hero.photo .hg{margin:10px 0 4px}
body .hero.has-video{min-height:clamp(400px,58vh,600px);padding-block:clamp(40px,5vw,72px) clamp(28px,3.5vw,44px)}
body main#top .sec-head{margin-bottom:clamp(14px,2vw,22px)}
body footer{padding-block:36px 24px}
body .photo-band img{height:clamp(160px,20vw,260px);width:100%;object-fit:cover}
body main#top .photo-band{margin-bottom:18px!important}

/* trainers: coach presenting what PTs help with */
.hg.hg-pt{display:flex;align-items:center;gap:6px;height:72px;width:auto;max-width:100%}
.pt-coach{width:52px;height:64px;flex:none;overflow:visible}
.pt-coach path,.pt-coach circle{fill:none;stroke:var(--signal);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.pt-coach .hd{fill:var(--signal)}
.pt-coach .pt-arm{transform-box:view-box;transform-origin:20px 20px;animation:ptarm 2s ease-in-out infinite}
@keyframes ptarm{0%,100%{transform:rotate(0)}20%{transform:rotate(-14deg)}40%{transform:rotate(4deg)}}
.pt-card{position:relative;width:min(250px,calc(100vw - 100px));height:48px;border:2px solid var(--signal);border-radius:24px 24px 24px 4px;overflow:hidden}
.pt-item{position:absolute;inset:0;display:flex;align-items:center;gap:10px;padding:0 16px;font-family:var(--f-display);font-weight:700;font-size:17px;letter-spacing:.03em;text-transform:uppercase;color:var(--signal);white-space:nowrap;opacity:0;animation:ptitem 10s ease-in-out infinite}
.pt-item svg{width:24px;height:24px;flex:none;fill:none;stroke:var(--signal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@keyframes ptitem{0%{opacity:0;transform:translateY(14px)}3%,17%{opacity:1;transform:none}20%,100%{opacity:0;transform:translateY(-14px)}}
@media (prefers-reduced-motion: reduce){.hg-pt *{animation:none!important}.pt-item:first-child{opacity:1}}

/* trainers: services as expanding pills, one at a time */
.hg.hg-pt2{display:flex;align-items:center;gap:8px;height:auto;width:auto;max-width:100%;margin:16px 0 8px}
.pt-pill{display:flex;align-items:center;height:44px;max-width:44px;flex:none;overflow:hidden;border:2px solid var(--signal);border-radius:22px;color:var(--signal);background:transparent;white-space:nowrap;animation:ptx 10s cubic-bezier(.6,0,.2,1) infinite}
.pt-pill svg{width:20px;height:20px;flex:none;margin-left:10px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.pt-pill b{font-family:var(--f-display);font-weight:700;font-size:16px;letter-spacing:.04em;text-transform:uppercase;padding:0 18px 0 10px}
@keyframes ptx{0%,1%{max-width:44px;background:transparent;color:var(--signal)}6%,17%{max-width:260px;background:var(--signal);color:var(--on-signal)}22%,100%{max-width:44px;background:transparent;color:var(--signal)}}
@media (max-width:520px){.hg.hg-pt2{gap:6px}.pt-pill{height:36px;max-width:36px;border-radius:18px}.pt-pill svg{width:17px;height:17px;margin-left:8px}.pt-pill b{font-size:13.5px;padding:0 14px 0 8px}
@keyframes ptx{0%,1%{max-width:36px;background:transparent;color:var(--signal)}6%,17%{max-width:210px;background:var(--signal);color:var(--on-signal)}22%,100%{max-width:36px;background:transparent;color:var(--signal)}}}
@media (prefers-reduced-motion: reduce){.pt-pill{animation:none;max-width:none}}

/* cookie banner */
.cookie{position:fixed;left:16px;right:16px;bottom:16px;z-index:40;max-width:760px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:var(--r);box-shadow:0 12px 40px rgba(0,0,0,.5)}
.cookie[hidden]{display:none}
.cookie p{margin:0;font-size:13.5px;line-height:1.5;color:var(--arch-fg)}
.cookie p a{color:var(--signal)}
.cookie-btns{display:flex;gap:8px;flex:none}
.cookie .btn{padding:10px 16px;font-size:12px;white-space:nowrap}
@media (max-width:640px){.cookie{flex-direction:column;align-items:stretch;gap:12px;left:10px;right:10px;bottom:10px}.cookie-btns .btn{flex:1;justify-content:center}}

/* one corner style everywhere: 12px boxes, round buttons and pills */
:root{--r:12px}
.member,.trainer{border-radius:var(--r)!important}
.arch-art,.arch-art.glass{border-radius:var(--r)!important}
.arch-art::after,.pop-card::before{display:none!important}
.pop-card{border-radius:var(--r)!important}
.loc-arch{border-radius:var(--r)!important}
.loc-arch::after{border-radius:calc(var(--r) - 4px)!important;border-bottom:2px solid var(--signal)!important;inset:10px!important}
.store{border-radius:var(--r)}
.price-tabs{border-radius:var(--r)!important}
.price-tabs button{border-radius:calc(var(--r) - 4px)!important}
.fac .ph.mark::after{border-radius:var(--r)!important;border-bottom:10px solid var(--on-signal)!important}
@media (max-width:860px){.seg[aria-label="Commitment period"]{border-radius:var(--r)!important}.seg[aria-label="Commitment period"] button{border-radius:calc(var(--r) - 4px)!important}}

/* phones: keep controls on one line */
@media (max-width:520px){
  .seg{flex-wrap:nowrap!important;max-width:100%}
  .seg button{white-space:nowrap;padding-inline:clamp(8px,3vw,16px)!important;font-size:clamp(10.5px,3.1vw,13px)!important;letter-spacing:.04em!important}
  .tt-controls{flex-wrap:wrap;gap:10px}
  .tt-controls .seg{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
  .tt-controls .seg button{justify-content:center;text-align:center}
  .chip-row{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  .chip-row::-webkit-scrollbar{display:none}
  .chip-row .chip{flex:none}
  .hero-ctas{flex-wrap:nowrap!important;gap:8px!important}
  .hero-ctas .btn{padding-inline:clamp(12px,3.6vw,18px)!important;font-size:clamp(11px,3.2vw,13px)!important;white-space:nowrap;flex:0 1 auto}
}

/* home: location route maps */
.loc .loc-map{display:block;width:calc(100% + 56px);max-width:none;margin:-28px -28px 4px;border-radius:var(--r) var(--r) 0 0;overflow:hidden;background:#111;border-bottom:1px solid var(--line)}
.loc-map svg{display:block;width:100%;height:auto}
.lm-bg{fill:#111}
.lm-grid{stroke:#1d1d1d;stroke-width:14}
.lm-road{stroke:#262626;stroke-width:16;fill:none}
.lm-rail{stroke:#3a3a3a;stroke-width:4}
.lm-arch{fill:none;stroke:#3a3a3a;stroke-width:2}
.lm-st{fill:#7a7a7a;font-family:var(--f-mono);font-size:10px;letter-spacing:.12em}
.lm-route-bg{fill:none;stroke:color-mix(in srgb,var(--signal) 35%,transparent);stroke-width:3;stroke-dasharray:2 7;stroke-linecap:round}
.lm-route{fill:none;stroke:var(--signal);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0}
.lm-stn rect{fill:#fff}
.lm-stn path,.lm-stn g rect{fill:none;stroke:#0a0a0a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lm-lbl{fill:#fff;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.1em}
.lm-walker{fill:#fff;stroke:var(--signal);stroke-width:3}
.lm-pin path{fill:var(--signal)}
.lm-pin circle{fill:#0a0a0a}
.lm-pulse{fill:none;stroke:var(--signal);stroke-width:2}
.lm-walk rect{fill:var(--signal)}
.lm-walk text{fill:var(--on-signal);font-family:var(--f-display);font-weight:700;font-size:12px;letter-spacing:.08em}

/* home: static area maps */
.loc .loc-map{position:relative;display:block;aspect-ratio:16/10}
.loc .loc-map img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.lm-open{position:absolute;right:12px;bottom:12px;padding:7px 12px;border-radius:999px;background:var(--signal);color:var(--on-signal);font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}

/* tighter gaps under banners and around the app strip */
body main#top .ticker + section.block{padding-top:clamp(16px,2vw,24px)}
body main#top section.block.app-band{padding-bottom:clamp(16px,2vw,24px)!important}
body main#top section.block#inside{padding-top:clamp(16px,2vw,24px)}
body main#top section.block#community{padding-top:0}
body main#top section.block#passes{padding-top:clamp(24px,3vw,40px)}
/* trainers: self-employed note */
.pt-note{display:flex;align-items:center;gap:12px;margin:0 0 clamp(16px,2vw,22px);padding:12px 16px;border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:var(--r);background:var(--surface);font-size:15px;color:var(--arch-fg)}
.pt-note svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--signal);stroke-width:2;stroke-linecap:round}

/* banners: never pause on hover; a bit quicker on phones */
.promo:hover .promo-track,.ticker:hover .ticker-track,.cls-ticker:hover .ticker-track{animation-play-state:running!important}
@media (max-width:640px){
  .promo-track{animation-duration:26s!important}
  .ticker .ticker-track{animation-duration:28s!important}
  .dance-ticker .ticker-track{animation-duration:24s!important}
  .cls-ticker .ticker-track{animation-duration:34s!important}
}

/* phone: hero eyebrow on two lines */
.m-br{display:none}
@media (max-width:640px){.m-br{display:inline}.eb-sep{display:none}}
/* phone: compact two-column footer */
@media (max-width:640px){
  body footer{padding-block:28px 18px}
  .foot{grid-template-columns:1fr 1.25fr!important;gap:22px 14px!important;font-size:13.5px}
  .foot>div:first-child{grid-column:1/-1}
  .foot .eyebrow{margin-bottom:6px}
  .foot address{font-size:13.5px;line-height:1.45}
  .foot>div:nth-child(3){order:4;grid-column:1/-1}
  .foot>div:nth-child(4){order:3}
  .foot-links{display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;gap:6px 12px}
  .foot-links li{margin:0}
  .foot .hours td{padding-block:3px}
  .foot .btn{margin-top:12px!important;padding:9px 14px;font-size:11.5px}
  .foot-mail{gap:6px;font-size:11px}
  .foot-mail a{overflow-wrap:normal;word-break:normal}
  .big-mark{margin-top:18px!important}
  .copyline{margin-top:10px;font-size:10.5px}
}

/* hidden Vauxhall landing page */
.vxl-logo{display:block;width:min(420px,80%);height:auto;margin:0 0 14px}
.vxl-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(20px,4vw,48px);align-items:start}
.vxl-open{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:10px}
.vxl-open li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.vxl-open svg{width:22px;height:22px;fill:none;stroke:var(--signal);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.vxl-open b{font-family:var(--f-display);font-size:18px;text-transform:uppercase}
.vxl-open span{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.vxl-open li.on{border-color:var(--signal)}
.vxl-open li.on span{color:var(--signal)}
.vxl-card{padding:clamp(20px,3vw,32px);border:1px solid var(--line);border-top:4px solid var(--signal);border-radius:var(--r);background:var(--surface)}
.vxl-card h2{margin:6px 0 6px;color:var(--signal)}
.vxl-sold{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.vxl-sold span{padding:4px 10px;border-radius:999px;background:#2a2a2a;color:#fff}
.vxl-sub{margin:0 0 18px;color:var(--muted)}
.vxl-form .btn{justify-content:center}
.vxl-fine{margin:0;font-size:12.5px;color:var(--muted)}
.vxl-msg{margin:0;padding:12px 14px;border-radius:var(--r);font-size:14px}
.vxl-msg.ok{background:color-mix(in srgb,var(--signal) 16%,transparent);color:var(--signal)}
.vxl-msg.err{background:rgba(255,80,80,.12);color:#ff8a8a}
.hp{position:absolute!important;left:-9999px!important}
@media (max-width:860px){.vxl-grid{grid-template-columns:1fr}}
@media (max-width:520px){.vxl-form{grid-template-columns:1fr}}

/* tier medals on the pricing builder */
.medal{display:inline-grid;place-items:center;flex:none}
.medal svg{width:100%;height:100%;display:block}
.medal .rb,.tier-ladder .rb{fill:var(--m2,#555)}
.ticket .tier-ladder li{display:grid;justify-items:center;justify-content:normal;border:0;padding:8px 4px 6px;font-size:inherit}
.medal .disc,.tier-ladder .disc{fill:var(--m1,#555);stroke:#0a0a0a;stroke-width:2.5}
.medal .ring,.tier-ladder .ring{fill:none;stroke:var(--m2,#333);stroke-width:2}
.medal .star,.tier-ladder .star{fill:var(--m2,#333)}
.m1{--m1:#c9844a;--m2:#7a4720}
.m2{--m1:#d9dde3;--m2:#7c858f}
.m3{--m1:#ffd94a;--m2:#a77a00}
.m4{--m1:#bff3ff;--m2:#1b8fc4}
.m4 .disc{fill:url(#gn-diamond)!important;stroke:#0a0a0a}
.m4 .ring{stroke:#ffffff!important;stroke-width:1.6!important;opacity:.9}
.gem{display:none}
.m4 .star{display:none}
.m4 .gem{display:inline}
.m4 .gem-f{fill:#ffffff;stroke:#1b8fc4;stroke-width:1.2;stroke-linejoin:round}
.m4 .gem-l{fill:none;stroke:#3fb8e8;stroke-width:.9;stroke-linejoin:round}
.m4 .rb{fill:url(#gn-diamond-rb)!important}
.m4 svg{filter:drop-shadow(0 0 3px rgba(120,220,255,.85)) drop-shadow(0 0 8px rgba(160,140,255,.45))}
.medal.m4 svg{animation:diamondglint 2.8s ease-in-out infinite}
@keyframes diamondglint{0%,100%{filter:drop-shadow(0 0 3px rgba(120,220,255,.8)) drop-shadow(0 0 8px rgba(160,140,255,.4))}50%{filter:drop-shadow(0 0 6px rgba(200,250,255,1)) drop-shadow(0 0 14px rgba(120,220,255,.7))}}
@media (prefers-reduced-motion: reduce){.medal.m4 svg{animation:none}}
.m0 .disc{fill:#3a3a3a}.m0 .ring,.m0 .star{stroke:#555;fill:none}
@media (max-width:860px){.ticket{position:relative!important;top:0!important}}
.addon-info{margin-bottom:0!important}
.ticket #t-medal{position:absolute;top:18px;right:18px;width:66px;height:78px;padding:8px;border-radius:var(--r);background:#0a0a0a}
.ticket #t-medal svg{width:50px;height:60px}
.medal.pop svg{animation:medalpop .45s cubic-bezier(.2,1.4,.4,1)}
@keyframes medalpop{0%{transform:scale(.6) rotate(-12deg);opacity:.3}100%{transform:none;opacity:1}}
.tier-ladder{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:18px 0 0;padding:0}
.tier-ladder li{display:grid;justify-items:center;gap:4px;padding:8px 4px 6px;border-radius:var(--r);background:rgba(10,10,10,.08);opacity:.45;transition:opacity .2s,background .2s}
.tier-ladder li svg{width:28px;height:34px;display:block;margin:0 auto}
.tier-ladder li span{display:block;width:100%;text-align:center;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#0a0a0a}
.tier-ladder li.on{opacity:1}
.tier-ladder li.cur{background:#0a0a0a}
.tier-ladder li.cur span{color:var(--signal)}
.pricebar #pb-medal{width:34px;height:41px;margin-right:4px}
@media (max-width:860px){.pricebar{display:grid!important;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}}
@media (prefers-reduced-motion: reduce){.medal.pop svg{animation:none}}

.tier-ladder .lp{font-style:normal;font-family:var(--f-display);font-weight:700;font-size:15px;color:#0a0a0a;line-height:1}
.tier-ladder li.cur .lp{color:#fff}

.t-fee{display:table;margin-top:10px;padding:5px 12px;border-radius:999px;background:#0a0a0a;color:var(--signal);font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.t-fee[hidden]{display:none}

/* booking embed: never cover Kenko once it has loaded */
.kenko-wrap{overflow:visible}
.kenko-wrap #studioyou-embed{display:block;min-height:420px}
.kenko-fallback{position:static!important;margin-top:12px}

/* phone: add-ons sit below the yellow price card */
@media (max-width:860px){
  #join .builder>div:first-child{display:contents}
  #join .builder .step{margin-bottom:0}
  #join .builder .ticket{order:5}
  #join .builder .addon-info{order:6}
  #join .builder{row-gap:24px}
}

.vxl-open i{display:none;font-style:normal}
.vxl-open li:not(.on) .ic-cal,.vxl-open li.on .ic-chk{display:inline-grid}

/* price card colour follows the package */
#join .ticket{transition:background .35s ease}
#join .ticket.tk-1{background:linear-gradient(135deg,#e7a873,#c9844a 55%,#b36d33)}
#join .ticket.tk-2{background:linear-gradient(135deg,#f4f6f8,#d3d8de 55%,#b9c0c8)}
#join .ticket.tk-3{background:linear-gradient(135deg,#ffe36b,var(--signal) 50%,#e9b500)}
#join .ticket.tk-4{background:linear-gradient(135deg,#ffffff 0%,#d4f6ff 25%,#9fe6ff 45%,#e9fbff 62%,#c9bfff 82%,#f2fdff 100%)}
#join .ticket.tk-0{background:#d9d9d9}
#join .ticket .tier-ladder li{background:rgba(10,10,10,.08)}
#join .ticket .tier-ladder li.cur{background:#0a0a0a}
/* phone and iPad: no big card, the bottom bar carries the details */
.pb-detail{display:none}
@media (max-width:860px){
  #join .ticket,#passes .ticket{display:none!important}
  .pricebar{grid-template-columns:auto 1fr auto!important;row-gap:2px!important;padding-top:10px!important;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))!important}
  .pb-detail{display:block;grid-column:1/-1;order:5;font-size:12.5px;line-height:1.35;color:rgba(10,10,10,.78);margin:0;padding-top:6px;border-top:1px solid rgba(10,10,10,.15)}
  body.on-pricing{padding-bottom:120px}
}

@media (max-width:860px){
  .pricebar{transition:background .35s ease}
  .pricebar.tk-1{background:linear-gradient(135deg,#e7a873,#c9844a 55%,#b36d33)}
  .pricebar.tk-2{background:linear-gradient(135deg,#f4f6f8,#d3d8de 55%,#b9c0c8)}
  .pricebar.tk-3{background:linear-gradient(135deg,#ffe36b,var(--signal) 50%,#e9b500)}
  .pricebar.tk-4{background:linear-gradient(135deg,#ffffff 0%,#d4f6ff 25%,#9fe6ff 45%,#e9fbff 62%,#c9bfff 82%,#f2fdff 100%)}
}

/* membership: good-to-know sits beside the add-ons, price card no longer slides */
#join .builder .buy-col{display:flex;flex-direction:column;justify-content:space-between;gap:20px;align-self:stretch;min-width:0}
#join .builder .buy-col .ticket{position:relative!important;top:0!important}
.gtk-side{grid-template-columns:1fr 1fr!important}
.gtk-side>div{padding:16px 18px}
.gtk-side b{font-size:18px}
.gtk-side span{font-size:13px}
@media (max-width:860px){#join .builder .buy-col{order:7;display:block}}
@media (max-width:420px){.gtk-side{grid-template-columns:1fr!important}}

/* pricing: smaller controls, one step at a time */
#join .seg button,#passes .seg button{padding:9px 15px;font-size:12.5px}
#join .opts,#passes .opts{gap:10px}
#join .opt,#passes .opt{padding:12px 14px 12px 44px;gap:4px}
#join .opt::before,#passes .opt::before{left:14px;top:14px;width:18px;height:18px}
#join .opt strong,#passes .opt strong{font-size:17px}
#join .opt small,#passes .opt small{font-size:12.5px}
#passes .opt-price{font-size:18px}
#join .step,#passes .step{margin-bottom:20px}
#join .step .eyebrow,#passes .step .eyebrow{margin-bottom:8px}
.step .seg{transition:transform .3s ease,opacity .3s ease;transform-origin:left center}
.step.done .seg{transform:scale(.9);opacity:.9}
.step.done .term-note{font-size:12.5px}
.step-wait{display:none!important}
.step-in{animation:stepin .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes stepin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){.step-in{animation:none}.step .seg{transition:none}}

/* private hire form */
.ph-wrap{max-width:860px}
.ph-form{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--signal);border-radius:var(--r);padding:clamp(18px,3vw,32px);gap:16px}
.ph-h{margin:10px 0 0;font-size:clamp(20px,2.4vw,26px);color:var(--signal)}
.ph-h:first-of-type{margin-top:0}
.ph-form label small,.ph-lab small{display:block;margin-top:2px;font-family:var(--f-body);font-size:13px;letter-spacing:0;text-transform:none;color:var(--muted);line-height:1.45}
.ph-form textarea,.ph-form input[type=date],.ph-form input[type=number]{font:16px var(--f-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;min-width:0;resize:vertical}
.ph-form textarea:focus,.ph-form input:focus{border-color:var(--signal);outline:none}
.ph-lab{display:block;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.ph-dates{display:grid;gap:8px}
.ph-row{display:grid;grid-template-columns:200px 1fr;gap:8px}
.ph-row input{font:16px var(--f-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;min-width:0;color-scheme:dark}
.ph-radio{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.ph-radio legend{width:100%;margin-bottom:8px;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ph-radio label{display:flex;align-items:center;gap:8px;font:15px var(--f-body);letter-spacing:0;text-transform:none;color:var(--ink)}
.ph-radio input,.ph-check input{accent-color:var(--signal);width:18px;height:18px}
.ph-check{display:flex!important;gap:10px;align-items:flex-start;font:14px var(--f-body)!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink)!important}
.ph-note{margin:-6px 0 0;font-size:13.5px;color:var(--signal)}
.ph-fine{margin:0;font-size:13px;color:var(--muted)}
.ph-form .btn{justify-content:center}
@media (max-width:640px){.ph-form{grid-template-columns:1fr}.ph-row{grid-template-columns:1fr}}

/* pricing: price stays hidden until the choices are made */
.builder:not(.priced) .ticket{display:none!important}
.builder.priced .price-wait{display:none}
.builder.priced .ticket{animation:stepin .5s cubic-bezier(.2,.8,.2,1) both}
.price-wait{display:grid;gap:8px;align-content:center;min-height:220px;padding:28px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);text-align:center}
.price-wait b{font-family:var(--f-display);font-size:28px;text-transform:uppercase;color:var(--signal)}
.price-wait span{color:var(--muted);font-size:14.5px}
@media (max-width:860px){.price-wait{display:none!important}}

/* slim membership facts banner with icons */
.gtk-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0 0 clamp(18px,2.5vw,28px);border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.gtk-strip>div{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-left:1px solid var(--line)}
.gtk-strip>div:first-child{border-left:0}
.gtk-strip svg{width:22px;height:22px;flex:none;margin-top:1px;fill:none;stroke:var(--signal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.gtk-strip p{margin:0;display:grid;gap:2px}
.gtk-strip b{font-family:var(--f-display);font-size:14px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.gtk-strip span{font-size:12px;line-height:1.35;color:var(--muted)}
@media (max-width:980px){.gtk-strip{grid-template-columns:1fr 1fr}.gtk-strip>div:nth-child(3){border-left:0}.gtk-strip>div:nth-child(n+3){border-top:1px solid var(--line)}}
/* add-ons: compact */
#join .addon-list{display:grid;grid-template-columns:1fr 1fr;gap:6px;border:0;border-radius:0}
#join .addon-list li{grid-template-columns:minmax(0,1fr) auto;gap:0 10px;padding:8px 12px;border:1px solid var(--line)!important;border-radius:var(--r)}
#join .addon-list b{font-size:13.5px}
#join .addon-list span{font-size:11.5px;line-height:1.3}
#join .addon-list em{font-size:14px}
#join .addon-note{margin:0 0 8px;font-size:12.5px}
@media (max-width:520px){#join .addon-list{grid-template-columns:1fr}}

/* pricing: tighter space around the facts banner */
body main#top section.block#join{padding-top:12px!important}
#join .gtk-strip{margin:0 0 12px}
body.pricing-page .page-hero,main#top .page-hero:has(.price-tabs){padding-bottom:16px!important}

/* membership signposts */
.step .nudge{display:none}
.step.cur-step .nudge{display:inline-flex;align-items:center;gap:6px;margin:0 0 10px;padding:6px 12px 6px 8px;border-radius:999px;background:var(--signal);color:var(--on-signal);font-family:var(--f-mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;animation:nudgein .35s ease-out both}
.step.cur-step .nudge svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;animation:nudgebob 1s ease-in-out infinite}
.step.cur-step .seg,.step.cur-step .opts{box-shadow:0 0 0 2px color-mix(in srgb,var(--signal) 55%,transparent);border-radius:999px;animation:nudgeglow 1.6s ease-in-out infinite}
.step.cur-step .opts{border-radius:var(--r);padding:4px}
.step .eyebrow+.nudge{display:none}
.step.cur-step .eyebrow+.nudge{display:flex;width:max-content;max-width:100%}
.step.cur-step .eyebrow{display:block}
@keyframes nudgebob{0%,100%{transform:translateY(-2px)}50%{transform:translateY(3px)}}
@keyframes nudgein{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
@keyframes nudgeglow{0%,100%{box-shadow:0 0 0 2px color-mix(in srgb,var(--signal) 35%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--signal) 70%,transparent)}}
@media (prefers-reduced-motion: reduce){.step.cur-step .nudge svg,.step.cur-step .seg,.step.cur-step .opts{animation:none}}

/* signposts v2: arrow and text beside the buttons */
.nudge-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px}
.nudge-row .eyebrow{margin-bottom:0!important}
.step:has(.opts) .nudge-row{margin-bottom:8px}
.step .nudge,.step.cur-step .nudge,.step.cur-step .eyebrow+.nudge{display:none}
.step.cur-step .nudge-row .nudge{display:inline-flex!important;align-items:center;gap:8px;margin:0;padding:0;background:none;border-radius:0;color:var(--signal);font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;width:auto}
.step.cur-step .nudge svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;animation:nudgeside 1s ease-in-out infinite}
@keyframes nudgeside{0%,100%{transform:translateX(0)}50%{transform:translateX(-6px)}}
@media (max-width:520px){.nudge-row .seg{flex:1 1 100%}.step.cur-step .nudge svg{transform:rotate(90deg);animation:nudgeup 1s ease-in-out infinite}
@keyframes nudgeup{0%,100%{transform:rotate(90deg) translateX(0)}50%{transform:rotate(90deg) translateX(-5px)}}}
@media (prefers-reduced-motion: reduce){.step.cur-step .nudge svg{animation:none}}

/* private hire v2 */
.ph-h{display:flex;align-items:center;gap:10px;padding-top:14px;border-top:1px solid var(--line)}
.ph-form .ph-h:first-of-type{padding-top:0;border-top:0}
.ph-h i,.ph-terms h3 i{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--signal);color:var(--on-signal);font:700 14px var(--f-display);font-style:normal}
.ph-form label small,.ph-lab small{font-size:12.5px}
.ph-terms{padding:18px;border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:var(--r);background:var(--bg)}
.ph-terms h3{display:flex;align-items:center;gap:10px;margin:0 0 14px;font-size:clamp(20px,2.4vw,26px);color:var(--signal)}
.ph-terms .emoji-list{gap:10px;font-size:14px}
.ph-fine a{color:var(--signal)}

.ph-areas legend small{display:block;margin-top:2px;font-family:var(--f-body);font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--muted)}
.ph-areas{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:10px 22px}
.ph-areas legend{grid-column:1/-1}
@media (max-width:640px){.ph-areas{grid-template-columns:1fr 1fr}}

.ph-terms .ph-t{margin:0}
.ph-terms .ph-t a{color:var(--signal);text-decoration:underline;text-underline-offset:3px;font-weight:600}

/* header: keep every menu item and the button on one line */
.nav ul a,.nav .btn{white-space:nowrap}
@media (min-width:861px) and (max-width:1100px){.nav ul{gap:14px}.nav ul a{font-size:12.5px;letter-spacing:.05em}.nav .wrap{gap:14px}}

/* "what's included" signpost sits above its options, so its arrow points down */
.step:has(.opts).cur-step .nudge svg{transform:rotate(-90deg);animation:nudgedown 1s ease-in-out infinite!important}
@keyframes nudgedown{0%,100%{transform:rotate(-90deg) translateX(0)}50%{transform:rotate(-90deg) translateX(-5px)}}
@media (prefers-reduced-motion: reduce){.step:has(.opts).cur-step .nudge svg{animation:none!important}}

/* price card: what's included as icons, not a repeated list */
#join .ticket ul.t-icons{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 18px;padding:0;border:0;list-style:none}
#join .ticket ul.t-icons li{display:inline-flex;align-items:center;gap:6px;padding:7px 12px 7px 9px;border:0;border-radius:999px;background:rgba(10,10,10,.85);color:#fff;font-size:13px;font-weight:600;animation:stepin .35s cubic-bezier(.2,.8,.2,1) both}
#join .ticket ul.t-icons li span{color:#fff!important;font-family:var(--f-body)!important;font-size:13px!important;letter-spacing:0!important;text-transform:none!important}
#join .ticket ul.t-icons svg{width:18px;height:18px;fill:none;stroke:var(--signal);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* option boxes carry the same icons as the price card */
.opt strong{display:flex;align-items:center;gap:8px}
.opt .opt-ic{width:20px;height:20px;flex:none;fill:none;stroke:var(--signal);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.opt:disabled .opt-ic{opacity:.4}
/* add-ons on one line */
#join .addon-list{grid-template-columns:repeat(4,minmax(0,1fr))!important}
#join .addon-list li{grid-template-columns:1fr!important;align-content:start;gap:2px!important}
#join .addon-list em{grid-column:1!important;grid-row:auto!important;align-self:start}
@media (max-width:640px){#join .addon-list{grid-template-columns:1fr 1fr!important}}
/* price card icons: always one row */
#join .ticket ul.t-icons{flex-wrap:nowrap;gap:6px}
#join .ticket ul.t-icons li{flex:0 1 auto;min-width:0;white-space:nowrap;padding:6px 10px 6px 8px}
#join .ticket ul.t-icons li span{font-size:12px!important}
#join .ticket ul.t-icons svg{width:16px;height:16px}

/* add-ons span the full width under the builder */
#join .builder>.addon-info{grid-column:1/-1;margin:4px 0 0}

.ph-row{grid-template-columns:180px 1fr 1fr!important}
@media (max-width:640px){.ph-row{grid-template-columns:1fr 1fr!important}.ph-row input[type=date]{grid-column:1/-1}}

.ph-radio legend small{display:block;margin-top:2px;font-family:var(--f-body);font-size:12.5px;letter-spacing:0;text-transform:none;color:var(--muted)}
.ph-else[hidden]{display:none}
.ph-else{animation:stepin .35s ease-out both}

.ph-head span{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-left:2px}
.ph-row input[type=time]{color-scheme:dark}
@media (max-width:640px){.ph-row{grid-template-columns:1.35fr 1fr 1fr!important;gap:6px!important}.ph-row input{padding:10px 8px!important;font-size:14px!important;min-width:0}.ph-row input[type=date]{grid-column:auto!important}.ph-row input::-webkit-calendar-picker-indicator{margin-left:0;padding:0}}

/* phone and iPad price bar: always there once priced, with icons and the four tiers */
.pb-icons,.pb-tiers{display:none}
@media (max-width:860px){
  .pricebar{grid-template-columns:auto 1fr auto!important}
  .pb-icons{display:flex;grid-column:1/-1;order:5;gap:6px;margin:4px 0 0;padding:0;list-style:none;flex-wrap:nowrap;overflow:hidden}
  .pb-icons li{display:inline-flex;align-items:center;gap:5px;padding:5px 9px 5px 7px;border-radius:999px;background:rgba(10,10,10,.85);white-space:nowrap;min-width:0}
  .pb-icons li span{color:#fff;font-size:11.5px;font-weight:600}
  .pb-icons svg{width:14px;height:14px;fill:none;stroke:var(--signal);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .pb-tiers{display:grid;grid-column:1/-1;order:6;grid-template-columns:repeat(4,1fr);gap:4px;margin:6px 0 0;padding:0;list-style:none}
  .pb-tiers li{display:flex;justify-content:center;align-items:baseline;gap:5px;padding:5px 4px;border-radius:8px;background:rgba(10,10,10,.08);opacity:.5}
  .pb-tiers li.on{opacity:1}
  .pb-tiers li.cur{background:#0a0a0a}
  .pb-tiers b{font:600 10px var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:#0a0a0a}
  .pb-tiers span{font:700 13px var(--f-display);color:#0a0a0a}
  .pb-tiers li.cur b{color:var(--signal)}.pb-tiers li.cur span{color:#fff}
  .pricebar.is-pass .pb-icons,.pricebar.is-pass .pb-tiers{display:none}
  .pricebar.is-pass .pb-detail{display:block!important}
  body.pb-on{padding-bottom:170px}
}

/* compact footer everywhere */
body footer{padding-block:28px 18px}
.foot{grid-template-columns:1.2fr 1fr 1.3fr 1.2fr!important;gap:18px 24px!important;font-size:13.5px}
.foot .eyebrow{margin-bottom:6px;font-size:10.5px}
.foot address{font-size:13.5px;line-height:1.4}
.foot .hours td{padding-block:2px;font-size:13.5px}
.foot-links{display:grid!important;grid-template-columns:1fr 1fr;gap:3px 14px}
.foot-links li{margin:0}
.foot-links a{font-size:13.5px}
.foot-mail{gap:4px;font-size:12.5px}
.foot .status{margin-top:8px}
.big-mark{font-size:clamp(28px,5vw,64px)!important;margin-top:14px!important}
.copyline{margin-top:6px;font-size:10.5px}
@media (max-width:860px) and (min-width:641px){.foot{grid-template-columns:1.25fr 1fr 1fr 1.15fr!important;gap:14px 16px!important}.foot>div:first-child{grid-column:auto}.foot-links{grid-template-columns:1fr 1fr!important;gap:3px 10px}.foot .hours td{font-size:12.5px}.foot-mail{font-size:11.5px}}
@media (max-width:640px){.foot-mail a{white-space:nowrap;font-size:11px}}
@media (max-width:640px){
  .foot{grid-template-columns:1fr 1.25fr!important;gap:16px 12px!important}
  .foot-links{grid-template-columns:repeat(3,auto)!important;justify-content:space-between}
}
/* bigger signpost prompts */
.step.cur-step .nudge-row .nudge{font-size:15px!important;letter-spacing:.06em!important}
.step.cur-step .nudge svg{width:26px!important;height:26px!important}
@media (max-width:520px){.step.cur-step .nudge-row .nudge{font-size:13.5px!important}}
