:root{
  --void:#080706;
  --deep:#161210;
  --panel:#1B1612;
  --line:#2A231E;
  --ember:#FF3B12;
  --plasma:#FF8A1F;
  --arc:#FFE3C2;
  --ash:#8E867E;
  --bone:#F3EEEA;

  --display:"Chakra Petch","Arial Narrow",Helvetica,sans-serif;
  --body:"Archivo","Helvetica Neue",Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --gut:clamp(1.25rem,4vw,3.5rem);
  --max:1180px;
}

*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--void);
  color:var(--bone);
  font-family:var(--body);
  font-size:16.5px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;}
h1,h2,h3,h4{font-family:var(--display);margin:0;text-wrap:balance;line-height:1.02;}
p{margin:0;}
img{max-width:100%;}
:focus-visible{outline:2px solid var(--plasma);outline-offset:3px;}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gut);}

.eyebrow{
  font-family:var(--mono);
  font-size:.66rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--plasma);
}

/* ---------- nav ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:40;
  display:flex;align-items:center;justify-content:space-between;
  gap:1.5rem;
  padding:.85rem var(--gut);
  background:rgba(8,7,6,0);
  border-bottom:1px solid transparent;
  transition:background .35s ease,border-color .35s ease,backdrop-filter .35s ease;
}
.nav.stuck{
  background:rgba(8,7,6,.86);
  backdrop-filter:blur(14px);
  border-bottom-color:var(--line);
}
.nav__mark{
  text-decoration:none;
  display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  flex:none;
}
.nav__city{
  font-family:var(--display);font-style:normal;font-weight:700;
  font-size:.56rem;letter-spacing:1.52em;
  text-transform:uppercase;color:var(--ember);
  line-height:1;white-space:nowrap;
}
.nav__wm{
  width:182px;height:16px;display:block;flex:none;
}
.nav__wm path{fill:var(--bone);fill-rule:evenodd;}
.nav__links{
  flex:1 1 auto;min-width:0;
  display:flex;align-items:center;justify-content:center;gap:1.6rem;
}
.nav__cta{flex:none;}
@media(max-width:1280px){ .nav__links{gap:1rem;} }
@media(max-width:1040px){ .nav__links{gap:.8rem;font-size:.7rem;} }
@media(max-width:990px){ .nav__links{gap:.62rem;} .nav__links a{letter-spacing:.1em;} }
/* phones: crop the lockup to the wordmark so the CTA can't be pushed off-screen */
@media(max-width:600px){ .nav__wm{width:146px;height:13px;} .nav__city{font-size:.5rem;letter-spacing:1.16em;} }
@media(max-width:380px){ .nav__wm{width:124px;height:11px;} .nav__city{font-size:.46rem;letter-spacing:.92em;} .btn{padding:.66rem 1.05rem;font-size:.76rem;} }
.nav__links a{
  font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;
  text-decoration:none;color:var(--ash);transition:color .2s;
  white-space:nowrap;               /* "First Class" must never break in two */
}
.nav__links a:hover{color:var(--bone);}
@media(max-width:940px){ .nav__links{display:none;} }

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:var(--display);font-weight:700;font-style:italic;
  font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;
  padding:.72rem 1.35rem;
  border:1px solid var(--ember);
  background:var(--ember);color:#0B0603;
  text-decoration:none;cursor:pointer;
  clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);
  transition:background .2s,color .2s,box-shadow .2s;
}
.btn:hover{background:var(--plasma);border-color:var(--plasma);box-shadow:0 0 28px rgba(255,138,31,.45);}
.btn--ghost{background:rgba(243,238,234,.05);color:var(--bone);border-color:var(--ash);}
.btn--outline{background:transparent;color:var(--ember);border-color:var(--ember);}
.btn--outline:hover{background:var(--ember);color:#0B0603;}
.btn span{font-family:var(--body);font-weight:600;font-style:normal;}
.btn--ghost:hover{background:rgba(243,238,234,.12);border-color:var(--bone);color:var(--bone);box-shadow:none;}

/* ---------- hero ---------- */
.hero{
  position:relative;
  height:min(88vh,860px);
  min-height:620px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:var(--void);
}
.hero__bg{position:absolute;inset:0;z-index:0;overflow:hidden;}
.hero__bg img{
  width:100%;height:100%;object-fit:cover;object-position:50% 46%;
  opacity:.30;filter:saturate(.78) contrast(1.02);
}
.hero__bg::after{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(52% 46% at 50% 46%, rgba(8,7,6,.72), rgba(8,7,6,.20) 62%, rgba(8,7,6,0) 100%),
    radial-gradient(125% 105% at 50% 50%, rgba(8,7,6,0) 52%, rgba(8,7,6,.55) 100%),
    linear-gradient(180deg, rgba(8,7,6,.92) 0%, rgba(8,7,6,.60) 12%, rgba(8,7,6,0) 34%, rgba(8,7,6,.80) 100%);
}
.hero__orb{
  position:absolute;inset:0;z-index:1;
  display:grid;place-items:center;
  pointer-events:none;
  will-change:transform;
}
.hero__orb img{
  width:min(60vw,42rem);
  max-height:77%;
  height:auto;object-fit:contain;
  display:block;
  user-select:none;-webkit-user-drag:none;
}
.hero__lock{
  position:relative;z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:clamp(1.1rem,2.9vh,2rem);
  width:min(92%,64rem);
  pointer-events:none;
  transform:none;
}
.sr-only{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.lock__wm{width:100%;display:block;line-height:0;}
.lock__svg{
  width:100%;height:auto;display:block;overflow:visible;
  filter:drop-shadow(0 0 3px rgba(255,90,38,.34));
}
.wm path{ fill-rule:evenodd;stroke-linejoin:round;stroke-linecap:round; }
.wm-sub-rim{  fill:none;stroke:#140703;stroke-width:7.5; }
.wm-sub{      fill:url(#wmEdge); }
.wm-main-rim{ fill:none;stroke:#0A0403;stroke-width:13; }
.wm-main-edge{fill:none;stroke:url(#wmEdge);stroke-width:7.6; }
.wm-main{     fill:#090302; }
.wm-top{      fill:#090302; }
/* The city line was traced vector art of the old name; a different word cannot
   reuse those paths, so it is live text matched to the same weight and footprint. */
.wm-city{ fill:#090302;font-family:var(--display);font-weight:700;font-style:normal; }
.hero__cta{
  margin-top:clamp(1.7rem,4.6vh,3rem);
  display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;
  pointer-events:auto;
}
.hero__veil{
  position:absolute;inset:auto 0 0 0;height:32%;z-index:1;
  background:linear-gradient(to bottom,rgba(8,7,6,0) 0%,rgba(8,7,6,.45) 58%,var(--void) 100%);
  pointer-events:none;
}
.afterglow{
  height:clamp(140px,26vh,300px);
  margin-bottom:calc(-1 * clamp(140px,26vh,300px));
  position:relative;z-index:0;pointer-events:none;
}

/* ---------- sections ---------- */
section{padding-block:clamp(3.6rem,8vw,7rem);}
.sec-head{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2.4rem;max-width:52ch;}
.sec-head h2{font-size:clamp(1.9rem,4.4vw,3rem);font-style:italic;letter-spacing:-.015em;}
.sec-head p{color:var(--ash);max-width:48ch;}

/* photo primitives */
.shot{position:relative;overflow:hidden;background:#0E0B09;}
.shot img{width:100%;height:100%;object-fit:cover;display:block;}
.shot::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}
.tint::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,7,6,.02) 0%,rgba(8,7,6,.14) 38%,rgba(8,7,6,.60) 72%,rgba(8,7,6,.94) 100%);
}

/* 2 - positioning */
.creed{position:relative;}
.creed .shot{height:clamp(320px,52vh,560px);}
.creed .shot img{object-position:50% 42%;}
.creed__body{
  position:relative;z-index:2;margin-top:-5.5rem;
  display:grid;grid-template-columns:auto 1fr;gap:clamp(1.5rem,5vw,4rem);align-items:end;
}
@media(max-width:860px){ .creed__body{grid-template-columns:1fr;margin-top:-3rem;} }
.creed h2{
  font-size:clamp(2rem,6.2vw,4.3rem);font-style:italic;line-height:.98;
  letter-spacing:-.02em;text-wrap:balance;
}
.creed h2 em{font-style:italic;color:var(--ember);}
.creed p{color:#CAC2BB;font-size:1.06rem;max-width:46ch;}
.facts{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.1rem;}
.facts span{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--plasma);border:1px solid rgba(255,138,31,.32);padding:.34rem .6rem;
}

/* 3 - programs */
.progs{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
@media(max-width:700px){ .progs{grid-template-columns:1fr;} }
.prog{position:relative;display:block;text-decoration:none;background:var(--void);}
.prog .shot{height:clamp(255px,32vw,375px);}
.prog .shot img{transition:transform .7s cubic-bezier(.2,.7,.2,1);}
.prog:hover .shot img{transform:scale(1.035);}
.prog__txt{position:absolute;inset:auto 0 0 0;z-index:2;padding:1.45rem 1.5rem 1.55rem;}
.prog__tag{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--plasma);display:block;margin-bottom:.42rem;
  transition:color .25s ease;
}
.prog:hover .prog__tag{color:var(--arc);}
/* card text needs a deeper scrim than the shared .tint */
.prog .tint::before{background:linear-gradient(180deg,rgba(8,7,6,.05) 0%,rgba(8,7,6,.16) 34%,rgba(8,7,6,.68) 68%,rgba(8,7,6,.96) 100%);}
.prog h3{font-size:clamp(1.25rem,2.4vw,1.7rem);font-style:italic;letter-spacing:.005em;}
.prog p{color:#C7BFB8;font-size:.91rem;line-height:1.52;margin-top:.42rem;max-width:34ch;}
.prog__cta{
  display:inline-block;margin-top:.7rem;
  font-family:var(--display);font-style:italic;font-weight:700;
  font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ember);
  border-bottom:1px solid rgba(255,59,18,.45);padding-bottom:2px;
  transition:color .25s ease,border-color .25s ease;
}
.prog:hover .prog__cta{color:var(--plasma);border-color:var(--plasma);}

/* 5 - coaches */
.coaches{
  display:flex;gap:1rem;
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
  padding-bottom:.85rem;
  scrollbar-width:thin;scrollbar-color:#3E342C transparent;
  -webkit-overflow-scrolling:touch;
}
.coaches::-webkit-scrollbar{height:6px;}
.coaches::-webkit-scrollbar-track{background:#171411;}
.coaches::-webkit-scrollbar-thumb{background:#3E342C;}
.coaches::-webkit-scrollbar-thumb:hover{background:var(--ember);}
.coach{flex:0 0 clamp(246px,23vw,296px);scroll-snap-align:start;}
.coach .shot{height:clamp(300px,27vw,364px);}
.coach__name{
  font-family:var(--display);font-style:italic;font-weight:700;
  font-size:1.2rem;letter-spacing:.02em;margin-top:1rem;
}
.coach__role{font-family:var(--mono);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ember);margin-top:.32rem;}
.coach p{color:var(--ash);font-size:.88rem;line-height:1.5;margin-top:.55rem;}
.tk{
  color:#8E867E;border-bottom:1px dashed rgba(255,138,31,.55);
}

/* 6 - schedule with audience filters */
.schedbar{
  display:flex;align-items:center;gap:1rem 1.1rem;flex-wrap:wrap;
  margin-bottom:1.35rem;
}
.schedbar__k{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ash);
}
.filters{display:flex;gap:.4rem;flex-wrap:wrap;}
.filt{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ash);background:transparent;border:1px solid var(--line);
  padding:.44rem .72rem;cursor:pointer;
  transition:color .18s ease,border-color .18s ease,background-color .18s ease;
}
.filt:hover{color:var(--bone);border-color:#4B4038;}
.filt.is-on{color:#0B0603;background:var(--ember);border-color:var(--ember);box-shadow:0 0 0 3px rgba(255,59,18,.16);}
.filt:focus-visible{outline:2px solid var(--plasma);outline-offset:2px;}

.days{border-top:1px solid var(--line);}
.day{
  display:grid;grid-template-columns:8.5rem 1fr;gap:1rem;
  align-items:center;padding:1.15rem 0;
  border-bottom:1px solid var(--line);
}
@media(max-width:620px){ .day{grid-template-columns:1fr;gap:.6rem;padding:1.05rem 0;} }
.day__n{
  font-family:var(--display);font-weight:700;font-style:italic;
  font-size:1rem;letter-spacing:.06em;text-transform:uppercase;
  transition:opacity .2s ease,color .2s ease;
}
.day__c{display:flex;flex-wrap:wrap;gap:.5rem;}
.cls{
  display:inline-flex;align-items:baseline;gap:.55rem;
  border:1px solid var(--line);background:#120E0B;
  padding:.46rem .8rem;
  transition:opacity .2s ease,border-color .2s ease,background-color .2s ease;
}
.cls time{
  font-family:var(--mono);font-size:.78rem;color:var(--arc);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.cls b{font-family:var(--body);font-weight:500;font-size:.88rem;color:#C3BBB4;letter-spacing:.01em;
  transition:color .2s ease;white-space:nowrap;}

/* dim everything that doesn't match, never hide it */
.sched:not([data-view="all"]) .cls{opacity:.3;}
.sched[data-view="mini"]   .cls[data-c="mini"],
.sched[data-view="goons"]  .cls[data-c="goons"],
.sched[data-view="adults"] .cls[data-c="adults"]{
  opacity:1;
  border-color:rgba(255,92,38,.6);
  background:rgba(255,72,24,.11);
}
.sched[data-view="mini"]   .cls[data-c="mini"] b,
.sched[data-view="goons"]  .cls[data-c="goons"] b,
.sched[data-view="adults"] .cls[data-c="adults"] b{color:var(--bone);}
.day.is-dim .day__n{opacity:.3;}

@media(max-width:620px){
  /* density pass: same structure and data, ~30% less height */
  #schedule{padding-top:1.9rem !important;padding-bottom:1.9rem !important;}
  #schedule .sec-head{margin-bottom:1rem;gap:.5rem;}
  #schedule .hero__cta{margin-top:1rem;}
  .day{gap:.35rem;padding:.6rem 0;}
  .day__n{font-size:.88rem;letter-spacing:.05em;}
  .day__c{gap:.3rem;}
  .cls{padding:.3rem .5rem;gap:.4rem;}
  .cls time{font-size:.7rem;}
  .cls b{font-size:.78rem;}
  /* filters stay reachable while scrolling the week */
  .schedbar{
    position:sticky;top:74px;z-index:6;
    margin-bottom:.7rem;padding:.5rem 0;gap:.55rem .7rem;
    background:#141210;
    box-shadow:0 8px 12px -8px rgba(8,7,6,.95);
  }
  .filters{gap:.28rem;}
  .filt{padding:.5rem .55rem;font-size:.56rem;letter-spacing:.14em;min-height:34px;}
  .schedbar__k{font-size:.55rem;}
  /* dimmed classes recede further so the match pops */
  .sched:not([data-view="all"]) .cls{opacity:.22;}
}

/* 7 - first class */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
@media(max-width:980px){ .steps{grid-template-columns:repeat(2,1fr);} }
@media(max-width:560px){ .steps{grid-template-columns:1fr;} }
.reassure{margin-top:1.15rem;font-size:.95rem;color:var(--bone);}
.reassure em{font-style:normal;color:var(--plasma);}
.wear{margin-top:.4rem;font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ash);}
.step{background:var(--deep);padding:1.7rem 1.6rem 1.9rem;}
.step__n{
  font-family:var(--display);font-style:italic;font-weight:700;font-size:2.1rem;
  color:transparent;-webkit-text-stroke:1.4px var(--ember);display:block;line-height:1;margin-bottom:.6rem;
}
.step h3{font-size:1.02rem;letter-spacing:.02em;}
.step p{color:var(--ash);font-size:.9rem;line-height:1.5;margin-top:.35rem;}

/* 8 - membership */
.ratewrap{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.4rem,3vw,2.6rem);}
@media(max-width:820px){ .ratewrap{grid-template-columns:1fr;gap:1.35rem;} }
.rategroup__k{
  display:flex;align-items:center;gap:.65rem;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--plasma);margin-bottom:.75rem;
}
.rategroup__k::after{
  content:"";flex:1;height:1px;
  background:linear-gradient(to right,rgba(255,138,31,.38),rgba(255,138,31,0));
}
.rategroup--drop .rategroup__k{color:var(--ash);}
.rategroup--drop .rategroup__k::after{
  background:linear-gradient(to right,rgba(142,134,126,.3),rgba(142,134,126,0));
}
.rates{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);}
.rategroup--month .rates{border-top:2px solid var(--ember);}
.rate{background:var(--deep);padding:1.6rem 1.4rem 1.7rem;display:flex;flex-direction:column;gap:.35rem;}
.rate__k{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ash);}
.rate__num{font-family:var(--display);font-weight:700;font-size:2.4rem;letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
.rate__num em{font-style:normal;font-family:var(--mono);font-size:.66rem;color:var(--ash);letter-spacing:.12em;margin-left:.3rem;}

/* 9 - move strip */
.move{
  border:1px solid rgba(255,138,31,.30);
  background:linear-gradient(100deg,rgba(255,59,18,.09),rgba(8,7,6,0) 58%);
  padding:1.1rem clamp(1.1rem,3vw,2rem);
  display:flex;align-items:center;gap:1.1rem 2rem;flex-wrap:wrap;justify-content:space-between;
}
.move__route{font-family:var(--mono);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--plasma);}
.move b{font-family:var(--display);font-style:italic;font-size:1.12rem;letter-spacing:.02em;display:block;margin-top:.3rem;}
.move p{color:var(--ash);font-size:.86rem;max-width:44ch;margin-top:.2rem;}

/* 10 - contact form */
.ratenote{margin-top:1.25rem;font-size:.9rem;color:#CFC6BE;max-width:56ch;}
.cform{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);padding:1px;}
.cf__row{display:grid;grid-template-columns:1fr 1fr;gap:1px;}
@media(max-width:700px){ .cf__row{grid-template-columns:1fr;} }
.cf__f{background:var(--deep);padding:.95rem 1.1rem 1rem;display:flex;flex-direction:column;gap:.45rem;}
.cf__f>span{font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ash);}
.cf__f>span em{font-style:normal;color:#5E564E;letter-spacing:.14em;}
.cf__f input,.cf__f select,.cf__f textarea{
  background:transparent;border:0;border-bottom:1px solid var(--line);
  color:var(--bone);font-family:var(--body);font-size:.95rem;padding:.3rem 0 .45rem;width:100%;
  border-radius:0;appearance:none;-webkit-appearance:none;
}
.cf__f textarea{resize:vertical;min-height:88px;line-height:1.5;}
.cf__f select{cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--ash) 50%),linear-gradient(135deg,var(--ash) 50%,transparent 50%);
  background-position:calc(100% - 9px) 55%,calc(100% - 4px) 55%;background-size:5px 5px;background-repeat:no-repeat;}
.cf__f select option{background:var(--panel);color:var(--bone);}
.cf__f input:focus,.cf__f select:focus,.cf__f textarea:focus{outline:none;border-bottom-color:var(--ember);}
.cf__foot{background:var(--deep);padding:1.1rem;display:flex;align-items:center;gap:1rem 1.4rem;flex-wrap:wrap;}
.cf__note{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ash);}
.cf__sent{color:var(--plasma);font-size:.92rem;}

/* 11 - closing */
.close{position:relative;border-top:1px solid var(--line);}
.close .shot{height:clamp(260px,38vh,420px);}
.close .shot img{object-position:50% 45%;}
.close__in{position:relative;z-index:2;margin-top:-7rem;text-align:center;}
@media(max-width:700px){ .close__in{margin-top:-4rem;} }
.close h2{font-size:clamp(2.1rem,5.8vw,4rem);font-style:italic;line-height:1;letter-spacing:-.02em;
  text-shadow:0 2px 6px rgba(0,0,0,.85),0 0 28px rgba(9,3,2,.8);}
.close p{color:#CAC2BB;margin:.85rem auto 0;max-width:40ch;text-shadow:0 1px 4px rgba(0,0,0,.8);}
.close .btn{padding:.86rem 1.65rem;font-size:.86rem;}
.close .hero__cta{justify-content:center;}
.loc{
  margin-top:clamp(2.2rem,5vw,3.4rem);
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);
  text-align:left;
}
@media(max-width:760px){ .loc{grid-template-columns:1fr;} }
.loc div{background:var(--deep);padding:1.25rem 1.3rem;}
.loc h4{font-family:var(--mono);font-weight:500;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--ash);margin-bottom:.55rem;}
.loc a,.loc p{color:var(--bone);font-size:.92rem;text-decoration:none;display:block;line-height:1.6;}
.loc a:hover{color:var(--plasma);}

/* footer */
.foot{border-top:1px solid var(--line);background:var(--deep);padding-block:1.6rem;}
.foot__base{
  display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:#5E564E;
}


/* ---------- section grounds ----------
   A slow tonal walk down the page - black, charcoal, red-black, back to black -
   so the eye registers new sections without any of them reading as a card or a
   grey stripe. Every ground stays darker than the card surface (--deep #161210)
   so cards still lift off it. Steps are 2-8 per channel: felt, not seen. */
#gym{
  position:relative;z-index:1;
  background:
    radial-gradient(120% 62% at 50% 0%, rgba(255,64,20,.085), rgba(255,40,10,0) 58%),
    linear-gradient(180deg, var(--void) 0%, #120E0B 26%);
}
#programs{ background:#191513; }
#coaches{ background:linear-gradient(180deg, #14100E 0%, #090807 20%); }
#schedule{ background:#141210; }
#first{ background:#0D0A08; }
#contact{ background:#161311; }
#contact .cf__f,#contact .cf__foot{ background:#0F0C0A; }
#rates{
  background:
    radial-gradient(92% 86% at 8% -8%, rgba(255,116,42,.46), rgba(255,72,24,0) 64%),
    radial-gradient(82% 72% at 100% 108%, rgba(255,84,28,.34), rgba(255,52,14,0) 62%),
    linear-gradient(158deg, rgba(255,96,32,.12), rgba(255,64,20,.04) 55%, rgba(255,50,14,0) 86%),
    #190D09;
}
/* card surfaces are re-lifted per section - the shared --deep now sits too
   close to the lighter grounds to read as a raised surface */
#rates .sec-head p{ color:#DCD3CB; }
#rates .rate{ background:#160E0B; }
#rates .rates{ background:#2A231E; }
#first .step{ background:#1A1614; }
#schedule .cls{ background:#1C1815; }
#programs .prog{ background:#191513; }
.close{ background:var(--void); }

/* phones: the hero was a fixed 88vh box, leaving ~223px of dead black under
   the CTAs. Let it size to its content instead. Desktop is untouched. */
@media(max-width:620px){
  .hero{
    height:auto;
    min-height:0;
    padding:calc(74px + 1.9rem) 0 3.6rem;
  }
  .hero__veil{height:40%;}
}

/* pricing: compact on phones - two columns inside each group, tighter cards */
@media(max-width:620px){
  #rates .rate{padding:.95rem .85rem 1rem;gap:.18rem;}
  #rates .rate__num{font-size:1.85rem;}
  #rates .rate__num em{font-size:.58rem;margin-left:.2rem;}
  #rates .rate__k{font-size:.56rem;letter-spacing:.14em;}
  .rategroup__k{font-size:.55rem;letter-spacing:.2em;margin-bottom:.5rem;}
  .ratewrap{gap:1.1rem;}
  #rates .sec-head{margin-bottom:1.1rem;}
}

@media(max-width:620px){
  #first .step{padding:1.05rem 1.1rem 1.15rem;}
  #first .step__n{font-size:1.7rem;margin-bottom:.35rem;}
  #first .step h3{font-size:.96rem;}
  #first .step p{font-size:.86rem;}
  #first .reassure{margin-top:.9rem;font-size:.9rem;}
  #first .wear{font-size:.6rem;letter-spacing:.08em;}
  #rates .ratenote{margin-top:.95rem;font-size:.86rem;}
  #rates .hero__cta{margin-top:1rem;}
  #contact .sec-head{margin-bottom:1.2rem;}
  #contact .cf__f{padding:.8rem .9rem .85rem;}
}

@media(prefers-reduced-motion:reduce){
  *{transition-duration:.01ms !important;}
}

/* ---------- standalone pages (contact) ---------- */
.page{
  padding-top:calc(74px + clamp(2.2rem,5vw,4rem));
  padding-bottom:clamp(3rem,7vw,5rem);
  min-height:calc(100vh - 74px);
}
.page h1{font-size:clamp(1.9rem,4.4vw,3rem);font-style:italic;letter-spacing:-.015em;}
.nav__links a.is-here{color:var(--ember);}
.cgrid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(1.4rem,3vw,2.4rem);align-items:start;}
@media(max-width:880px){ .cgrid{grid-template-columns:1fr;} }
.cside{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);}
.cside__b{background:var(--deep);padding:1.15rem 1.25rem 1.25rem;}
.cside__b h4{font-family:var(--mono);font-weight:500;font-size:.6rem;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ash);margin-bottom:.55rem;}
/* :not(.btn) matters - these are more specific than .btn, so without it the
   sidebar made the button text bone at rest and plasma on hover, which is the
   same colour as the button's own hover background: invisible text. */
.cside__b a:not(.btn),.cside__b p{color:var(--bone);font-size:.92rem;text-decoration:none;display:block;line-height:1.6;}
.cside__b a:not(.btn):hover{color:var(--plasma);}
.cside__note{color:var(--ash) !important;font-size:.84rem !important;margin-top:.4rem;}
.cside__b--cta{background:#160E0B;}
.cside__b--cta .hero__cta{justify-content:flex-start;}
.cside__b--cta .btn{padding:.72rem 1.1rem;font-size:.78rem;}
.cf__sent a{color:var(--plasma);}
@media(max-width:620px){
  .page{padding-top:calc(74px + 1.8rem);}
  .cside__b{padding:.95rem 1rem 1rem;}
}

/* ==========================================================================
   INTERIOR PAGES
   Same tokens, same rhythm as the homepage - nothing new in the palette.
   ========================================================================== */

/* ---------- page header ---------- */
.phead{position:relative;padding-top:calc(74px + clamp(2rem,4.5vw,3.6rem));padding-bottom:clamp(1.8rem,4vw,3rem);}
.phead__in{position:relative;z-index:2;max-width:64ch;}
.phead h1{font-size:clamp(2rem,5vw,3.4rem);font-style:italic;letter-spacing:-.02em;line-height:1.02;margin-top:.5rem;}
.phead p{color:var(--ash);margin-top:.9rem;max-width:56ch;font-size:1rem;}
.phead--img{padding-top:calc(74px + clamp(3.4rem,8vw,7rem));padding-bottom:clamp(2.4rem,5vw,3.6rem);}
.phead__shot{position:absolute;inset:0;overflow:hidden;z-index:0;}
.phead__shot img{width:100%;height:100%;object-fit:cover;opacity:.32;filter:saturate(.8) contrast(1.02);}
.phead--img::after{content:"";position:absolute;inset:0;z-index:1;background:
  linear-gradient(180deg,rgba(8,7,6,.94) 0%,rgba(8,7,6,.55) 32%,rgba(8,7,6,.82) 78%,var(--void) 100%),
  radial-gradient(90% 70% at 18% 60%,rgba(255,64,20,.13),rgba(255,40,10,0) 70%);}
.phead--img h1,.phead--img p{text-shadow:0 2px 10px rgba(0,0,0,.7);}

/* ---------- generic page section ---------- */
.psec{padding-top:clamp(2.4rem,4.4vw,3.6rem);padding-bottom:clamp(2.4rem,4.4vw,3.6rem);}
.psec--alt{background:#141210;}
.psec--deep{background:#0D0A08;}
.psec--lit{background:
  radial-gradient(92% 86% at 8% -8%,rgba(255,116,42,.40),rgba(255,72,24,0) 64%),
  radial-gradient(82% 72% at 100% 108%,rgba(255,84,28,.30),rgba(255,52,14,0) 62%),
  #190D09;}
.psec--lit .sec-head p,.psec--lit p{color:#DCD3CB;}
.prose{max-width:62ch;}
.prose p{color:var(--ash);margin-top:.85rem;line-height:1.65;}
.prose p:first-child{margin-top:0;}
.prose strong{color:var(--bone);font-weight:600;}
.prose a{color:var(--plasma);}

/* ---------- program rows ---------- */
.pgms{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);}
.pgm{background:var(--deep);display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.6fr);gap:0;}
@media(max-width:820px){ .pgm{grid-template-columns:1fr;} }
.pgm__shot{position:relative;overflow:hidden;min-height:210px;}
.pgm__shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.85) contrast(1.02);transition:transform .7s cubic-bezier(.2,.7,.2,1);}
.pgm:hover .pgm__shot img{transform:scale(1.035);}
.pgm__shot::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(8,7,6,.15),rgba(22,18,16,.75));}
@media(max-width:820px){ .pgm__shot{min-height:180px;} .pgm__shot::after{background:linear-gradient(180deg,rgba(8,7,6,.1),rgba(22,18,16,.7));} }
.pgm__txt{padding:clamp(1.25rem,2.6vw,1.9rem);}
.pgm__tag{font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ember);}
.pgm__txt h2,.pgm__txt h3{font-size:clamp(1.15rem,2.2vw,1.5rem);font-style:italic;letter-spacing:-.01em;margin-top:.4rem;}
.pgm__txt>p{color:var(--ash);font-size:.92rem;line-height:1.6;margin-top:.55rem;max-width:56ch;}
.meta{margin-top:1rem;display:grid;grid-template-columns:auto 1fr;gap:.42rem 1rem;align-items:baseline;}
.meta dt{font-family:var(--mono);font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:#6E665E;white-space:nowrap;}
.meta dd{font-size:.88rem;color:var(--bone);line-height:1.5;}
.pgm__links{margin-top:1.05rem;display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;align-items:center;}
.tlink{font-family:var(--display);font-style:italic;font-weight:700;font-size:.74rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ember);text-decoration:none;
  border-bottom:1px solid rgba(255,59,18,.45);padding-bottom:2px;transition:color .25s ease,border-color .25s ease;}
.tlink:hover{color:var(--plasma);border-color:var(--plasma);}
.tlink--q{color:var(--ash);border-color:rgba(142,134,126,.4);}
.tlink--q:hover{color:var(--bone);border-color:var(--bone);}

/* ---------- coach cards (deep) ---------- */
/* Five coaches never divide evenly into an auto-fit grid, and because the grid
   container painted the hairlines, every empty cell showed up as a solid slab.
   Flex-wrap + centring means a short last row is just page background, and each
   card draws its own border with a -1px overlap so full rows still read as one grid. */
.cxs{display:flex;flex-wrap:wrap;justify-content:center;}
.cx{flex:1 1 210px;max-width:300px;background:var(--deep);
  border:1px solid var(--line);margin:0 -1px -1px 0;
  display:flex;flex-direction:column;}
.cx__shot{position:relative;aspect-ratio:4/5;overflow:hidden;}
.cx__shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.88) contrast(1.02);}
.cx__txt{padding:1.1rem 1.15rem 1.35rem;display:flex;flex-direction:column;gap:.3rem;flex:1;}
.cx__name{font-size:1.12rem;font-style:italic;letter-spacing:-.01em;}
.cx__rank{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ember);}
.cx__teach{font-size:.86rem;color:var(--bone);margin-top:.35rem;}
.cx__bio{font-size:.86rem;color:var(--ash);line-height:1.55;margin-top:.2rem;}

/* ---------- FAQ ---------- */
.faq{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);}
.faq__i{background:var(--deep);}
.faq__q{width:100%;text-align:left;background:none;border:0;cursor:pointer;color:var(--bone);
  font-family:var(--display);font-weight:700;font-size:.98rem;letter-spacing:.01em;
  padding:1rem 2.6rem 1rem 1.15rem;position:relative;line-height:1.35;}
.faq__q::after{content:"+";position:absolute;right:1.1rem;top:50%;transform:translateY(-50%);
  color:var(--ember);font-size:1.15rem;font-weight:700;transition:transform .22s ease;}
.faq__i.is-open .faq__q::after{content:"\2212";}
.faq__q:hover{color:var(--plasma);}
.faq__a{display:none;padding:0 1.15rem 1.15rem;color:var(--ash);font-size:.9rem;line-height:1.6;max-width:62ch;}
.faq__i.is-open .faq__a{display:block;}
.faq__a p+p{margin-top:.6rem;}

/* ---------- callout / confirm note ---------- */
.note{border:1px solid rgba(255,138,31,.3);background:linear-gradient(100deg,rgba(255,59,18,.08),rgba(8,7,6,0) 60%);
  padding:1.05rem 1.2rem;margin-top:1.4rem;}
.note h4{font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--plasma);margin-bottom:.5rem;}
.note p,.note li{color:var(--ash);font-size:.88rem;line-height:1.6;}
.note ul{margin:0;padding-left:1.1rem;}
.note li{margin-top:.25rem;}

/* ---------- simple list blocks ---------- */
/* auto-fit produced a 3-wide row for 4 blocks around 700-920px, and because the
   container painted the hairlines the leftover cell showed as a solid slab.
   Column counts now only ever divide 4 evenly, and each block draws its own
   border with a -1px overlap, so any leftover cell is just page background. */
.blocks{display:grid;grid-template-columns:repeat(4,1fr);gap:0;}
@media(max-width:1040px){ .blocks{grid-template-columns:repeat(2,1fr);} }
@media(max-width:520px){ .blocks{grid-template-columns:1fr;} }
.block{background:var(--deep);padding:1.25rem 1.2rem 1.4rem;
  border:1px solid var(--line);margin:0 -1px -1px 0;}
.block h3{font-size:1rem;letter-spacing:.01em;}
.block p{color:var(--ash);font-size:.88rem;line-height:1.55;margin-top:.4rem;}
.block__k{font-family:var(--mono);font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ember);display:block;margin-bottom:.45rem;}

/* ---------- end CTA band ---------- */
.endcta{background:
  radial-gradient(80% 120% at 50% 0%,rgba(255,96,32,.20),rgba(255,64,20,0) 62%),#0C0907;
  border-top:1px solid var(--line);text-align:center;
  padding-top:clamp(2.6rem,5vw,4rem);padding-bottom:clamp(2.6rem,5vw,4rem);}
.endcta h2{font-size:clamp(1.7rem,4vw,2.6rem);font-style:italic;letter-spacing:-.02em;}
.endcta p{color:#CAC2BB;margin:.7rem auto 0;max-width:46ch;}
.endcta .hero__cta{justify-content:center;margin-top:1.4rem;}

/* ---------- map ---------- */
.mapbox{border:1px solid var(--line);background:var(--deep);padding:1.3rem;display:flex;
  flex-direction:column;justify-content:center;gap:.6rem;min-height:210px;
  background-image:
    linear-gradient(rgba(255,138,31,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,138,31,.055) 1px,transparent 1px);
  background-size:34px 34px;}
.mapbox b{font-family:var(--display);font-style:italic;font-size:1.05rem;}
.mapbox p{color:var(--ash);font-size:.9rem;line-height:1.6;}

/* ---------- footer nav ---------- */
.foot__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.6rem;padding-bottom:1.6rem;}
@media(max-width:760px){ .foot__grid{grid-template-columns:repeat(2,1fr);gap:1.4rem;} }
.foot__col h4{font-family:var(--mono);font-weight:500;font-size:.58rem;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ember);margin-bottom:.6rem;}
.foot__col a,.foot__col p{display:block;color:var(--ash);font-size:.86rem;line-height:1.85;text-decoration:none;}
.foot__col a:hover{color:var(--bone);}
.foot__base{border-top:1px solid var(--line);padding-top:1.1rem;}
.foot{padding-block:2.2rem 1.6rem;}

/* ---------- mobile nav ---------- */
.nav__tog{display:none;background:none;border:1px solid var(--line);color:var(--bone);
  width:40px;height:36px;cursor:pointer;position:relative;flex:none;border-radius:2px;}
.nav__tog span,.nav__tog::before,.nav__tog::after{content:"";position:absolute;left:9px;right:9px;height:1.5px;
  background:var(--bone);transition:transform .25s ease,opacity .2s ease;}
.nav__tog span{top:50%;transform:translateY(-50%);}
.nav__tog::before{top:11px;} .nav__tog::after{bottom:11px;}
.nav.is-open .nav__tog span{opacity:0;}
.nav.is-open .nav__tog::before{top:50%;transform:rotate(45deg);}
.nav.is-open .nav__tog::after{bottom:auto;top:50%;transform:rotate(-45deg);}
.nav__links a.is-here{color:var(--ember);}
@media(max-width:940px){
  .nav__tog{display:block;}
  .nav{flex-wrap:wrap;}
  .nav__links{display:none;}
  .nav.is-open .nav__links{display:flex;flex-direction:column;align-items:flex-start;gap:0;
    flex:1 0 100%;order:3;margin-top:.85rem;border-top:1px solid var(--line);}
  .nav.is-open .nav__links a{width:100%;padding:.85rem .1rem;border-bottom:1px solid var(--line);font-size:.86rem;}
  .nav.is-open{background:var(--void);border-bottom-color:var(--line);box-shadow:0 18px 30px -18px rgba(0,0,0,.95);}
}
@media(max-width:420px){ .nav__cta{display:none;} }

/* ---------- photo band ----------
   A full-bleed strip used to break up text-heavy interior pages. Same
   treatment as the page headers so it never reads as a different system. */
.band{position:relative;overflow:hidden;border-block:1px solid var(--line);
  height:clamp(190px,30vw,360px);}
.band>img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.85) contrast(1.02);}
.band::after{content:"";position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(8,7,6,.62) 0%,rgba(8,7,6,.12) 38%,rgba(8,7,6,.88) 100%);}
.band__cap{position:absolute;z-index:2;left:0;right:0;bottom:0;
  padding:0 var(--gut) 1rem;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.18em;text-transform:uppercase;color:var(--arc);}
@media(max-width:620px){ .band{height:clamp(160px,44vw,220px);} .band__cap{font-size:.55rem;letter-spacing:.14em;} }

/* kids page: one audience, so the price grid drops the second column */
.rates--kids .rate:first-child{box-shadow:inset 0 2px 0 var(--ember);}

/* ---------- figure ----------
   For photos that have to be seen whole - a group shot cropped into a band
   loses half the faces. Sits inside the wrap at its own aspect ratio. */
.figure{margin-top:clamp(1.5rem,3vw,2.2rem);border:1px solid var(--line);background:var(--deep);}
.figure img{display:block;width:100%;height:auto;filter:saturate(.92) contrast(1.02);}
.figure figcaption{padding:.8rem 1rem;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.16em;text-transform:uppercase;color:var(--ash);border-top:1px solid var(--line);}
@media(max-width:620px){ .figure figcaption{font-size:.55rem;letter-spacing:.12em;padding:.65rem .8rem;} }

/* ---------- section with artwork behind it ----------
   Same idea as the page headers: the image sits behind the content at low opacity
   under a gradient, so it sets a mood without competing with the address. */
.psec--art{position:relative;overflow:hidden;}
.psec__bg{position:absolute;inset:0;z-index:0;overflow:hidden;}
.psec__bg img{width:100%;height:100%;object-fit:cover;object-position:50% 62%;
  opacity:.34;filter:saturate(.92) contrast(1.02);}
.psec--art::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:
  linear-gradient(180deg,rgba(8,7,6,.84) 0%,rgba(8,7,6,.55) 40%,rgba(8,7,6,.88) 100%);}
.psec--art > .wrap{position:relative;z-index:2;}

/* agency credit - quiet, sits under the copyright row */
.foot__by{padding-top:.9rem;text-align:center;}
.foot__by a{font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;
  text-transform:uppercase;color:#4A433C;text-decoration:none;transition:color .2s;}
.foot__by a:hover{color:var(--ember);}
