@import url("fonts.css");
@import url("tokens.css");

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  background:var(--bg-page);color:var(--fg-1);
  font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-normal);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,svg,video{display:block;max-width:100%;height:auto}
a{color:var(--fg-link);text-underline-offset:.18em;text-decoration-thickness:from-font}
a:hover{color:var(--fg-link-hover)}
:focus-visible{outline:3px solid var(--cbc-rust-700);outline-offset:3px;border-radius:2px}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--fg-heading);line-height:var(--lh-snug);font-weight:600;letter-spacing:var(--track-tight)}
h1{font-size:var(--fs-h1)} h2{font-size:var(--fs-h2)} h3{font-size:var(--fs-h3);font-weight:700}
p,li{max-width:var(--measure)}

.skip{position:absolute;left:-9999px;top:0;background:var(--cbc-olive);color:var(--cbc-cream);padding:12px 18px;z-index:200;border-radius:0 0 var(--r-md) 0}
.skip:focus{left:0}
.vh{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- layout ---------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--s-6)}
.narrow{max-width:var(--wrap-narrow)}
section{padding-block:var(--s-20)}
@media (max-width:640px){section{padding-block:var(--s-12)}}
.band{background:var(--bg-sunken)}
.band-dark{background:var(--bg-dark);color:var(--cbc-cream-2)}
.band-dark h1,.band-dark h2,.band-dark h3{color:var(--cbc-cream)}
.band-dark a{color:var(--cbc-rust-light)}
.band-dark .eyebrow{color:var(--cbc-rust-light)}
.band-rule{border-top:1px solid var(--line-1)}

.eyebrow{
  font-size:var(--fs-micro);letter-spacing:var(--track-caps);text-transform:uppercase;
  font-weight:700;color:var(--cbc-rust-700);display:block;margin-bottom:var(--s-3);
}
.lead{font-size:var(--fs-lead);color:var(--fg-2);line-height:var(--lh-relaxed)}
.muted{color:var(--fg-3);font-size:var(--fs-small)}
.stack>*+*{margin-top:var(--s-4)}
.stack-lg>*+*{margin-top:var(--s-8)}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:100;background:rgba(241,236,221,.94);
  backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line-1);
}
.header-in{display:flex;align-items:center;justify-content:space-between;gap:var(--s-6);
  min-height:74px;padding-block:var(--s-2)}
.brand{display:flex;align-items:center;gap:var(--s-3);text-decoration:none;flex:0 0 auto}
.brand img{width:46px;height:auto}
.brand-txt{display:flex;flex-direction:column;line-height:1}
.brand-txt b{font-family:var(--font-display);font-size:1.02rem;color:var(--cbc-olive);letter-spacing:.02em;font-weight:600}
.brand-txt span{font-size:.62rem;letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--fg-3);margin-top:4px}
.nav{display:flex;align-items:center;gap:var(--s-5)}
.nav a{
  font-size:var(--fs-small);font-weight:600;color:var(--cbc-olive);text-decoration:none;
  padding:6px 2px;border-bottom:2px solid transparent;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.nav a:hover{color:var(--cbc-rust-700);border-bottom-color:var(--cbc-rust)}
.nav a[aria-current="page"]{color:var(--cbc-rust-700);border-bottom-color:var(--cbc-rust)}
.nav .btn{border-bottom:none}
.nav-toggle{display:none;background:none;border:1px solid var(--line-1);border-radius:var(--r-sm);
  padding:9px 12px;font:inherit;font-size:var(--fs-small);font-weight:700;color:var(--cbc-olive);cursor:pointer}
@media (max-width:1000px){ /* v2: six nav links now, so the menu collapses a little earlier */
  .nav-toggle{display:block}
  .nav{
    display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;
    gap:0;background:var(--cbc-cream);border-bottom:1px solid var(--line-1);padding:var(--s-2) var(--s-6) var(--s-6);
    box-shadow:var(--shadow-md);
  }
  .nav.open{display:flex}
  .nav a{padding:14px 0;border-bottom:1px solid var(--line-soft)}
  .nav a[aria-current="page"]{border-bottom-color:var(--cbc-rust)}
  .nav .btn{margin-top:var(--s-4);text-align:center}
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-body);font-size:var(--fs-small);font-weight:700;letter-spacing:.02em;
  padding:13px 24px;border-radius:var(--r-pill);border:2px solid transparent;
  text-decoration:none;cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease);
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--cbc-rust-700);color:#fff;border-color:var(--cbc-rust-700)}
.btn-primary:hover{background:var(--cbc-rust-900);border-color:var(--cbc-rust-900);color:#fff}
.btn-ghost{background:transparent;color:var(--cbc-olive);border-color:var(--cbc-olive)}
.btn-ghost:hover{background:var(--cbc-olive);color:var(--cbc-cream)}
.band-dark .btn-ghost{color:var(--cbc-cream);border-color:var(--cbc-cream-2)}
.band-dark .btn-ghost:hover{background:var(--cbc-cream);color:var(--cbc-olive)}
.btn-row{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-6)}

/* ---------- hero ---------- */
.hero{padding-block:var(--s-24) var(--s-20);position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--s-16);align-items:center}
@media (max-width:900px){.hero{padding-block:var(--s-12)}.hero-grid{grid-template-columns:1fr;gap:var(--s-10)}}
.hero h1{font-size:var(--fs-hero);letter-spacing:-.02em}
.hero h1 em{font-style:normal;color:var(--cbc-rust-700)}
.hero .lead{margin-top:var(--s-5)}
.hero-photo{position:relative}
.hero-photo img{border-radius:var(--r-xl);box-shadow:var(--shadow-md);width:100%;object-fit:cover;aspect-ratio:4/5}
.hero-badge{
  position:absolute;left:-14px;bottom:22px;background:var(--cbc-cream-3);border:1px solid var(--line-1);
  border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);box-shadow:var(--shadow-md);max-width:230px;
}
.hero-badge strong{display:block;font-family:var(--font-display);color:var(--cbc-olive);font-size:1.05rem}
.hero-badge span{font-size:var(--fs-micro);color:var(--fg-3);letter-spacing:var(--track-wide);text-transform:uppercase;font-weight:700}
@media (max-width:900px){.hero-badge{left:12px}}

/* ---------- facts strip ---------- */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-1);
  border-block:1px solid var(--line-1)}
.facts div{background:var(--bg-page);padding:var(--s-6) var(--s-5);text-align:center}
.facts b{display:block;font-family:var(--font-display);color:var(--cbc-olive);font-size:1.35rem;line-height:1.2}
.facts span{display:block;margin-top:6px;font-size:var(--fs-micro);letter-spacing:var(--track-caps);
  text-transform:uppercase;color:var(--fg-3);font-weight:700}
@media (max-width:760px){.facts{grid-template-columns:repeat(2,1fr)}}

/* ---------- cards ---------- */
.grid{display:grid;gap:var(--s-5)}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.card{
  background:var(--bg-card);border:1px solid var(--line-1);border-radius:var(--r-lg);
  padding:var(--s-6);display:flex;flex-direction:column;gap:var(--s-3);
  transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.card p{color:var(--fg-2);font-size:var(--fs-small);max-width:none}
.card .price{font-family:var(--font-display);color:var(--cbc-rust-700);font-size:1.3rem;font-weight:600}
.card .price small{font-family:var(--font-body);font-size:.72rem;color:var(--fg-3);font-weight:700;
  letter-spacing:var(--track-wide);text-transform:uppercase;margin-left:4px}
a.card{text-decoration:none;color:inherit}
a.card:hover{border-color:var(--cbc-rust);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.card .more{margin-top:auto;padding-top:var(--s-2);font-size:var(--fs-small);font-weight:700;color:var(--cbc-rust-700)}
.band-dark .card{background:var(--cbc-olive-300);border-color:rgba(241,236,221,.16)}
.band-dark .card p{color:var(--cbc-cream-2)}
.band-dark .card .price{color:var(--cbc-rust-light)}

/* ---------- split (text + image) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center}
.split.flip>*:first-child{order:2}
@media (max-width:860px){.split{grid-template-columns:1fr;gap:var(--s-8)}.split.flip>*:first-child{order:0}}
.split img{border-radius:var(--r-lg);box-shadow:var(--shadow-md)}
figure figcaption{margin-top:var(--s-3);font-size:var(--fs-micro);color:var(--fg-3)}

/* ---------- checklist ---------- */
.ticks{list-style:none;padding:0;display:grid;gap:var(--s-3)}
.ticks li{position:relative;padding-left:30px;color:var(--fg-2)}
.ticks li::before{
  content:"";position:absolute;left:0;top:.42em;width:14px;height:8px;
  border-left:2.5px solid var(--cbc-rust);border-bottom:2.5px solid var(--cbc-rust);
  transform:rotate(-45deg);
}
.band-dark .ticks li{color:var(--cbc-cream-2)}
.band-dark .ticks li::before{border-color:var(--cbc-rust-light)}

/* ---------- quote ---------- */
.quote{background:var(--bg-card);border-left:4px solid var(--cbc-rust);border-radius:0 var(--r-lg) var(--r-lg) 0;
  padding:var(--s-6) var(--s-8);max-width:var(--wrap-narrow)}
.quote p{font-family:var(--font-display);font-size:var(--fs-lead);color:var(--cbc-ink);font-style:italic;line-height:var(--lh-relaxed)}
.quote cite{display:block;margin-top:var(--s-3);font-style:normal;font-size:var(--fs-micro);
  letter-spacing:var(--track-caps);text-transform:uppercase;color:var(--fg-3);font-weight:700}
.pullquote{text-align:center;max-width:22ch;margin-inline:auto;font-family:var(--font-display);
  font-size:clamp(1.5rem,1.2rem + 1.6vw,2.4rem);color:var(--cbc-olive);line-height:1.3}
.band-dark .pullquote{color:var(--cbc-cream)}

/* ---------- price table ---------- */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:var(--s-5)}
table.prices{width:100%;border-collapse:collapse;min-width:420px;background:var(--bg-card);
  border:1px solid var(--line-1);border-radius:var(--r-lg);overflow:hidden}
table.prices caption{text-align:left;font-family:var(--font-display);color:var(--cbc-olive);
  font-size:var(--fs-h3);font-weight:700;padding-bottom:var(--s-3)}
table.prices th,table.prices td{text-align:left;padding:14px var(--s-5);border-bottom:1px solid var(--line-soft);vertical-align:top}
table.prices thead th{background:var(--cbc-olive);color:var(--cbc-cream);font-size:var(--fs-micro);
  letter-spacing:var(--track-caps);text-transform:uppercase;font-weight:700;border-bottom:none}
table.prices tbody tr:last-child th,table.prices tbody tr:last-child td{border-bottom:none}
table.prices tbody th{font-weight:700;color:var(--cbc-ink);font-family:var(--font-body)}
table.prices td.amount{font-family:var(--font-display);font-size:1.1rem;color:var(--cbc-rust-700);
  font-weight:600;white-space:nowrap}
table.prices td.note{color:var(--fg-3);font-size:var(--fs-small)}

/* ---------- form ---------- */
.form{display:grid;gap:var(--s-5);max-width:560px}
.field{display:grid;gap:6px}
.field label{font-size:var(--fs-small);font-weight:700;color:var(--cbc-olive)}
.field .hint{font-size:var(--fs-micro);color:var(--fg-3)}
.field input,.field textarea,.field select{
  font:inherit;font-size:var(--fs-body);color:var(--cbc-ink);background:var(--cbc-white);
  border:1px solid var(--line-1);border-radius:var(--r-md);padding:12px 14px;width:100%;
}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--cbc-rust);outline-offset:1px}
.field textarea{min-height:140px;resize:vertical}
.inline-form{display:flex;gap:var(--s-3);flex-wrap:wrap;max-width:520px;margin-top:var(--s-5)}
.inline-form input{flex:1 1 240px;font:inherit;background:var(--cbc-white);color:var(--cbc-ink);
  border:1px solid var(--line-1);border-radius:var(--r-pill);padding:13px 20px}
.hp{position:absolute;left:-9999px}

/* ---------- lotus divider ---------- */
.divider{display:flex;align-items:center;gap:var(--s-5);color:var(--cbc-rust);margin-block:var(--s-10)}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line-1)}
.divider svg{width:34px;height:auto;flex:0 0 auto}

/* ---------- footer ---------- */
.site-footer{background:var(--cbc-olive);color:var(--cbc-cream-2);padding-block:var(--s-16) var(--s-8)}
.site-footer h2,.site-footer h3{color:var(--cbc-cream)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:var(--s-10)}
@media (max-width:800px){.footer-grid{grid-template-columns:1fr;gap:var(--s-8)}}
.site-footer .foot-mark{width:120px;margin-bottom:var(--s-4)}
.site-footer p{color:var(--cbc-cream-2);font-size:var(--fs-small)}
.site-footer ul{list-style:none;padding:0;display:grid;gap:10px}
.site-footer a{color:var(--cbc-cream-2);text-decoration:none;font-size:var(--fs-small)}
.site-footer a:hover{color:var(--cbc-rust-light);text-decoration:underline}
.site-footer h3{font-size:var(--fs-micro);letter-spacing:var(--track-caps);text-transform:uppercase;
  font-family:var(--font-body);font-weight:700;color:var(--cbc-rust-light);margin-bottom:var(--s-4)}
.legal{border-top:1px solid rgba(241,236,221,.18);margin-top:var(--s-12);padding-top:var(--s-6);
  display:flex;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;font-size:var(--fs-micro);color:var(--cbc-cream-2)}

/* ---------- misc ---------- */
.tag{display:inline-block;background:var(--cbc-rust-100);color:var(--cbc-rust-700);border-radius:var(--r-pill);
  padding:5px 13px;font-size:var(--fs-micro);font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase}
.band-dark .tag{background:rgba(233,156,104,.18);color:var(--cbc-rust-light)}
.page-head{padding-block:var(--s-16) var(--s-10);background:var(--bg-sunken);border-bottom:1px solid var(--line-1)}
.page-head p{margin-top:var(--s-4)}
.crumb{font-size:var(--fs-micro);letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--fg-3);
  font-weight:700;margin-bottom:var(--s-3)}
.crumb a{color:var(--fg-3);text-decoration:none}
.crumb a:hover{color:var(--cbc-rust-700)}
.terms{font-size:var(--fs-small);color:var(--fg-2)}
.terms li{margin-bottom:8px}

/* ============================================================
   OVERRIDES / FIXES — verified against screenshots 25 Aug 2026
   ============================================================ */

/* .nav a was beating .btn on specificity, so the header CTA lost its
   white text and its padding. Match specificity explicitly. */
.nav a.btn{padding:13px 24px;border-bottom:2px solid transparent}
.nav a.btn-primary,.nav a.btn-primary:hover{color:#fff;border-bottom-color:transparent}
.nav a.btn-primary[aria-current="page"]{color:#fff;border-bottom-color:transparent}

/* .card is a column flexbox, so an inline-block tag stretched full width. */
.card>.tag{align-self:flex-start}

/* .muted inherits the 62ch measure, which is far too narrow at .9rem. */
.muted{max-width:78ch}

/* Library block: two columns on desktop so the dark band isn't half empty. */
.lib-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:var(--s-16);align-items:start}
@media (max-width:900px){.lib-grid{grid-template-columns:1fr;gap:var(--s-8)}}
.lib-list{list-style:none;padding:0;display:grid;gap:0;border:1px solid rgba(241,236,221,.2);border-radius:var(--r-lg);overflow:hidden}
.lib-list li{display:flex;gap:var(--s-4);padding:var(--s-4) var(--s-5);align-items:baseline;
  border-bottom:1px solid rgba(241,236,221,.14);color:var(--cbc-cream-2);font-size:var(--fs-small);max-width:none}
.lib-list li:last-child{border-bottom:none}
.lib-list b{color:var(--cbc-cream);font-family:var(--font-display);font-weight:600;font-size:1rem;
  flex:0 0 auto;min-width:6.5em}

/* Divider: the lotus from Carly's mark (Brand/coached-by-carly-lotus.svg), 44px wide (v2.5). */
.divider svg{width:44px;height:auto}

/* Vertical rhythm — the reset zeroes every margin, so headings sat flush on
   the text beneath them. Space is owned by the heading, not by adjacency. */
h1,h2{margin-bottom:var(--s-6)}
h3{margin-bottom:var(--s-3)}
.hero h1,.page-head h1,.pullquote,.card h2,.card h3,.facts b,.brand-txt b,
table.prices caption,.quote p,.site-footer h3{margin-bottom:0}
.site-footer h3{margin-bottom:var(--s-4)}
.card h3{margin-bottom:0}
p+p{margin-top:var(--s-4)}
p+ul,p+ol,ul+p,p+.table-scroll,p+.grid{margin-top:var(--s-5)}
.card p+p{margin-top:var(--s-3)}
.lib-list li>span{max-width:none}
h2+.grid,h2+figure,h2+.form,h2+.table-scroll{margin-top:0}

/* Playfair defaults to old-style figures, which wander in a column of prices. */
table.prices td.amount,table.prices td.note,.card .price,.facts b,.hero-badge strong{
  font-variant-numeric:lining-nums tabular-nums;
}

/* ============================================================
   v2 ADDITIONS — 29 Sep 2026
   New studio "coming soon", classes, register form, sharing.
   Same tokens; no new colours.
   ============================================================ */
[hidden]{display:none!important}

/* announcement bar */
.announce{background:var(--cbc-olive);color:var(--cbc-cream);font-size:var(--fs-small);text-align:center;padding:10px var(--s-6);line-height:1.4}
.announce p{max-width:none;margin:0 auto}
.announce b{font-weight:700;margin-right:6px}
.announce a{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:.2em}
.announce a:hover{color:var(--cbc-cream-2)}
.show-sm{display:none}
@media (max-width:640px){.hide-sm{display:none}.show-sm{display:inline}}

/* "opening soon" pulse */
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--cbc-rust);
  margin-right:9px;vertical-align:middle;position:relative;top:-1px;animation:cbc-pulse 2.4s var(--ease) infinite}
.announce .live-dot,.band-dark .live-dot{background:var(--cbc-rust-light)}
@keyframes cbc-pulse{0%{box-shadow:0 0 0 0 rgba(184,98,58,.55)}70%{box-shadow:0 0 0 9px rgba(184,98,58,0)}100%{box-shadow:0 0 0 0 rgba(184,98,58,0)}}

/* concept-image label */
figure{position:relative}
.chip{position:absolute;top:14px;left:14px;z-index:2;background:rgba(43,40,31,.74);color:#fff;
  font-size:.68rem;font-weight:700;letter-spacing:var(--track-caps);text-transform:uppercase;
  padding:6px 11px;border-radius:var(--r-pill)}
.hero .crumb{margin-bottom:var(--s-6)}

/* wide studio image */
.wide-photo{margin-top:var(--s-12)}
.wide-photo img{width:100%;aspect-ratio:1254/370;object-fit:cover;border-radius:var(--r-xl);box-shadow:var(--shadow-md)}
@media (max-width:760px){.wide-photo img{aspect-ratio:4/3;object-position:74% 50%}}

/* statement lines */
.statement{font-family:var(--font-display);font-size:clamp(1.5rem,1.2rem + 1.4vw,2.2rem);line-height:1.25;
  color:var(--cbc-olive);font-weight:600;max-width:22ch}
.tagline{font-family:var(--font-display);font-style:italic;font-size:1.2rem;color:var(--cbc-olive);margin-top:var(--s-5)}
.band-dark .tagline{color:var(--cbc-cream)}

/* intro block */
.intro{max-width:780px;text-align:center}
.intro p{margin-inline:auto}
.sign{font-family:var(--font-display);font-style:italic;color:var(--cbc-rust-700);font-size:1.6rem;margin-top:var(--s-6)!important}

/* manifesto */
.manifesto-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-16);align-items:center}
@media (max-width:860px){.manifesto-grid{grid-template-columns:1fr;gap:var(--s-8)}}
h2.eyebrow{font-family:var(--font-body);font-size:var(--fs-micro);letter-spacing:var(--track-caps);margin-bottom:var(--s-3)}
.manifesto{list-style:none;padding:0}
.manifesto li{font-family:var(--font-display);font-size:clamp(1.7rem,1.2rem + 2vw,2.6rem);line-height:1.22;
  color:var(--cbc-cream);max-width:none;padding-block:3px}
.manifesto li:nth-child(even){color:var(--cbc-rust-light)}

/* register form */
.register-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:var(--s-16);align-items:start}
@media (max-width:900px){.register-grid{grid-template-columns:1fr;gap:var(--s-8)}}
.form-card{background:var(--cbc-cream-3);border:1px solid var(--line-1);border-radius:var(--r-xl);
  padding:var(--s-8);box-shadow:var(--shadow-sm)}
@media (max-width:640px){.form-card{padding:var(--s-5)}}
.form-card .form{max-width:none}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-5)}
@media (max-width:640px){.field-row{grid-template-columns:1fr}}
.checks{border:0;padding:0;margin:0;min-width:0}
.checks legend{font-size:var(--fs-small);font-weight:700;color:var(--cbc-olive);padding:0;margin-bottom:10px}
.checks legend .hint{font-weight:400;font-size:var(--fs-micro);color:var(--fg-3)}
.check-row{display:flex;flex-wrap:wrap;gap:10px}
.check{position:relative;display:inline-flex}
.check input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.check span{display:inline-block;padding:9px 16px;border:1px solid var(--line-1);border-radius:var(--r-pill);
  background:var(--cbc-white);font-size:var(--fs-small);font-weight:600;color:var(--cbc-olive);
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.check:hover span{border-color:var(--cbc-rust)}
.check input:checked+span{background:var(--cbc-olive);border-color:var(--cbc-olive);color:var(--cbc-cream)}
.check input:checked+span::before{content:"\2713\00a0"}
.check input:focus-visible+span{outline:3px solid var(--cbc-rust-700);outline-offset:2px}
.form-msg{color:var(--cbc-rust-900);font-weight:700;font-size:var(--fs-small)}
.btn[disabled]{opacity:.7;cursor:progress}

/* sharing */
.share{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-4)}
.btn-sm{padding:10px 18px;font-size:.84rem}
.share-box{margin-top:var(--s-10);padding-top:var(--s-8);border-top:1px solid var(--line-1)}
.share-box h3{font-size:1.25rem}

/* info cards */
.info-card{background:var(--cbc-cream-3)}
.facts-list{display:grid;grid-template-columns:auto 1fr;gap:10px 18px;margin-top:8px;font-size:.95rem}
.facts-list dt{font-weight:700;color:var(--cbc-olive)}
.facts-list dd{margin:0;color:var(--fg-2)}
.quote-card{justify-content:center;min-height:260px;padding:var(--s-10)}
.card.featured{border-color:var(--cbc-rust);box-shadow:var(--shadow-md)}
.card .ticks li{font-size:var(--fs-small)}

/* online: how it works */
.steps{list-style:none;padding:0;counter-reset:step;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s-5);margin-top:var(--s-8)}
.steps li{counter-increment:step;background:var(--bg-card);border:1px solid var(--line-1);border-radius:var(--r-lg);
  padding:var(--s-6);max-width:none}
.steps li::before{content:counter(step);display:grid;place-items:center;width:36px;height:36px;border-radius:50%;
  background:var(--cbc-rust-100);color:var(--cbc-rust-700);font-family:var(--font-display);font-weight:700;
  margin-bottom:var(--s-3);font-variant-numeric:lining-nums}
.steps p{color:var(--fg-2);font-size:var(--fs-small)}

/* notices */
.notice{background:var(--cbc-rust-100);border:1px solid #efcfb8;border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);
  color:var(--cbc-ink);font-size:var(--fs-small);max-width:none;margin-top:var(--s-6)!important}

/* footer theme line */
.foot-theme{font-family:var(--font-display);font-size:clamp(1.5rem,1.2rem + 1.2vw,2.1rem);color:var(--cbc-cream);
  margin-bottom:var(--s-10);max-width:none}
.legal a{color:var(--cbc-cream-2)}

/* privacy page */
.prose h2{margin-top:var(--s-10);margin-bottom:var(--s-3);font-size:1.35rem}
.prose h2:first-child{margin-top:0}
.prose p,.prose li{color:var(--fg-2)}
.prose ul{padding-left:1.2em;margin-top:var(--s-3);display:grid;gap:6px}

/* v2 fixes after first screenshots */
.site-footer .foot-theme{font-family:var(--font-display);font-size:clamp(1.5rem,1.2rem + 1.2vw,2.1rem);color:var(--cbc-cream);margin-bottom:var(--s-10)}
.site-footer li{font-size:var(--fs-small)}
.legal a{font-size:inherit;text-decoration:underline}
.hero-badge{max-width:280px}
h1,h2,.statement,.pullquote{text-wrap:balance}
.band-dark a.btn-primary,.band-dark a.btn-primary:hover{color:#fff}
.quote-card .pullquote{font-size:clamp(1.5rem,1.2rem + 1.4vw,2.2rem);color:var(--cbc-olive);font-style:italic}
.grid-2 .card .price{margin-top:auto}
[id]{scroll-margin-top:84px}  /* anchors land below the sticky header */

/* ============================================================
   v2.1 ACCESSIBILITY — 29 Sep 2026. Existing tokens only.
   ============================================================ */
/* Focus ring: rust-700 is 1.4:1 on olive, so it turns cream on dark grounds */
.band-dark :focus-visible,.site-footer :focus-visible,.announce :focus-visible{outline-color:var(--cbc-cream)}
/* Small light-rust text on olive was 4.1:1: headings, eyebrows, tags and links go cream.
   Light rust stays only for the large manifesto lines. */
.site-footer h3,.band-dark .eyebrow,.band-dark h2.eyebrow,.band-dark .tag{color:var(--cbc-cream)}
.band-dark a:not(.btn),.band-dark a:not(.btn):hover{color:var(--cbc-cream)}
.site-footer a:hover{color:var(--cbc-cream)}
/* Card prices inside a dark band were light rust on olive-300 (2.8:1) */
.band-dark .card .price{color:var(--cbc-cream)}
/* Grey text on the sunken cream bands was ink-3 on cream-2 (4.3:1) */
.band .muted,.band .crumb,.band .crumb a,.band figcaption,.band .hint,
.page-head .muted,.page-head .crumb,.page-head .crumb a,.page-head .hint{color:var(--fg-2)}
/* Text-field borders were line-1 on white (1.5:1). Tick-pills are left as they are. */
.field input,.field textarea,.field select,.inline-form input{border-color:var(--cbc-ink-3)}

/* v2.1 new-studio page, equipment list */
.concept-pair{margin-top:var(--s-5)}
.concept-pair img{width:100%;aspect-ratio:4/5;object-fit:cover}
.concept-pair figure:first-child img{object-position:50% 20%}
.page-head .notice{margin-top:var(--s-5)!important}
.equipment{margin-top:var(--s-12);padding:var(--s-8);background:var(--bg-card);border:1px solid var(--line-1);border-radius:var(--r-lg)}
.equipment h3{font-size:1.4rem;margin-bottom:var(--s-5)}
.equipment-list{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));column-gap:var(--s-8)}
.page-head .crumb .live-dot{margin-right:8px}

/* v2.2 — eyebrows trimmed. A heading that took its eyebrow's words keeps its old heading
   as a tagline right underneath; "What it costs" keeps the 64px that sat above its eyebrow. */
h2.has-tagline{margin-bottom:var(--s-2)}
.tagline-sub{margin-top:0}
.tagline-sub+*{margin-top:var(--s-6)}
.gap-above{margin-top:var(--s-16)}
/* v2.2 — the hero photo is now Carly. Where the photo is narrow (phones, and small laptops before the
   layout stacks) the badge would sit over her raised foot, so there it hangs off the photo's bottom edge. */
@media (max-width:1080px){.hero-badge{bottom:-44px}}
@media (max-width:900px){.hero-photo{margin-bottom:var(--s-10)}}
/* v2.2 — the equipment list with the squat rack photo beside it */
.equipment-row{margin-top:var(--s-12)}
.equipment-row .equipment{margin-top:0}
.equipment-photo img{width:100%;aspect-ratio:4/5;object-fit:cover}
@media (min-width:861px){.equipment-photo{width:100%;max-width:400px;justify-self:end}}

/* v2.3 — live content from Carly's Sheet (assets/live.js) */
/* The announcement bar stays one line whatever Carly types, so a new notice never pushes the page
   down: from 641px the sentence shortens with "…" if it can't fit; the status and link never do. */
@media (min-width:641px){
  .announce p{display:flex;justify-content:center;align-items:center;gap:0 .35em;white-space:nowrap}
  .announce p>*{flex:none}
  .announce b{margin-right:.15em}
  .announce p>[data-cbc="notice.announcement"]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
}
/* Offers: only ever rendered by live.js, between an offer's first and last day */
.offers-block .grid{margin-top:var(--s-8)}
.offers-block .card .price{margin-top:auto}
.wrap>.offers-block:first-child,[data-cbc-offers]:first-child>.offers-block{margin-bottom:var(--s-16)}
.band [data-cbc-offers]>.offers-block{margin-top:var(--s-16)}
/* Timetable rows rendered by live.js: the "Full" tag sits after the class name */
table.timetable .tag{margin-left:6px;font-size:var(--fs-micro);padding:2px 10px;vertical-align:middle}
table.timetable td[data-f="time"]{white-space:nowrap}

/* v2.4 — /start, the link in Carly's Instagram and Facebook bios. One phone screen, big buttons. */
.start{max-width:440px;margin-inline:auto;padding:var(--s-4) var(--s-5) var(--s-3);display:grid;gap:var(--s-4)}
.start-head{display:grid;justify-items:center;text-align:center;gap:4px}
.start-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;border:3px solid var(--cbc-cream-3);
  box-shadow:0 0 0 1px var(--cbc-line);margin-top:4px}
.start h1{font-size:1.75rem;line-height:1.15;margin:4px 0 0}
.start-tagline{font-family:var(--font-display);font-style:italic;color:var(--cbc-olive);font-size:1.05rem}
.start-where{font-size:var(--fs-micro);letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--fg-2)}
.start-status{justify-self:center;display:inline-flex;align-items:center;gap:8px;background:var(--cbc-rust-100);
  color:var(--cbc-rust-700);border-radius:var(--r-pill);padding:6px 14px;font-size:var(--fs-small);font-weight:700;text-align:center}
.start-links{display:grid;gap:10px}
.start-links .btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:100%;
  min-height:52px;padding:8px 18px;font-size:1rem;line-height:1.25;text-align:center}
.start-links .btn small{display:block;margin-top:1px;font-size:var(--fs-micro);font-weight:400;letter-spacing:0}
.start-foot{text-align:center;padding:var(--s-3) var(--s-5) var(--s-8);font-size:var(--fs-small)}
.start-foot a{color:var(--fg-2)}
