/* tokens.css — verbatim from the design package (kept first so the rules below can use them) */
/* Pilates Dynamics® — design tokens */
:root {
  /* canvas */
  --sand: #F4EEE6;
  --linen: #EAE1D5;
  --cream: #FBF8F3;
  --taupe: #D8CCBC;
  /* text */
  --ink: #2E2724;
  --ink-2: #5E534C;
  /* accents (from the logo) */
  --aubergine: #4A2E3F;
  --aubergine-deep: #2E1B28;
  --olive: #5A6148;
  --sage: #7C8567;        /* borders, icons, dividers only — never text */
  --sage-light: #C9CBB4;  /* eyebrows and secondary text on aubergine */

  /* type */
  --font-display: 'Fraunces', Georgia, serif;
  --font-body: 'Figtree', 'Segoe UI', system-ui, sans-serif;
  --display-settings: 'SOFT' 100, 'opsz' 144;
  --fs-body: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);          /* 16 → 18 */
  --fs-h1: clamp(3.125rem, 1.9rem + 4.4vw, 6rem);              /* 50 → 96 */
  --fs-h2: clamp(2.75rem, 2.3rem + 1.9vw, 4rem);               /* 44 → 64 */
  --fs-h2-lg: clamp(2.75rem, 2.1rem + 2.7vw, 4.5rem);          /* 44 → 72 */
  --fs-title: clamp(1.375rem, 1.25rem + 0.5vw, 1.75rem);       /* 22 → 28 */
  --fs-quote: clamp(1.625rem, 1.3rem + 1.2vw, 2.375rem);       /* 26 → 38 */
  --fs-eyebrow: 0.8125rem;
  --lh-display: 1;
  --lh-body: 1.55;
  --ls-display: -0.025em;
  --ls-eyebrow: 0.16em;

  /* spacing */
  --gutter: clamp(1.25rem, 0.3rem + 4vw, 4rem);                /* 20 → 64 */
  --section: clamp(4rem, 2.5rem + 6vw, 7rem);                  /* 64 → 112 */
  --gap-grid: 1.5rem;

  /* shape */
  --radius-pill: 80px;
  --radius-input: 2px;
  --hairline: 1px solid var(--taupe);
  --rule: 1px solid var(--sage);

  /* motion */
  --ease-out: cubic-bezier(.2,.65,.2,1);
  --ease-ui: cubic-bezier(.4,0,.2,1);
  --t-reveal: .9s;
  --t-img: 1.4s;
  --t-hover: .25s;
  --stagger: 150ms;
  --tap: 44px;
}


/* ==========================================================================
   Pilates Dynamics® — home page styles
   Mobile-first (390) → desktop (1440). Visual truth: design-source/project/*.dc.html
   Breakpoints: 720px (paths side by side), 960px (desktop layout)
   ========================================================================== */

/* --- reset & base ------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html:focus-within { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--ink);
  background: var(--sand);
  -webkit-font-smoothing: antialiased;
}
img, picture, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: var(--aubergine); }
ul, ol, dl, dd, p, h1, h2, h3, figure, blockquote { margin: 0; padding: 0; }
ul, ol { list-style: none; }
button, input { font: inherit; color: inherit; }
button { cursor: pointer; }
:where(a, button, input, [tabindex]):focus-visible { outline: 2px solid var(--aubergine); outline-offset: 3px; }
:where(.paths .path--teach, .reviews, .footer, .nav.is-open) :where(a, button, input):focus-visible { outline-color: var(--cream); }

.skip { position: absolute; left: 16px; top: -60px; z-index: 100; padding: 12px 18px; background: var(--aubergine); color: var(--cream); border-radius: var(--radius-pill); text-decoration: none; }
.skip:focus { top: 16px; }

/* visibility toggles — !important so they beat component display rules */
@media (max-width: 959px) { .desktop-only { display: none !important; } }
@media (min-width: 960px) { .mobile-only { display: none !important; } }

/* --- type ---------------------------------------------------------------- */
.serif {
  font-family: var(--font-display);
  font-variation-settings: var(--display-settings);
  font-weight: 300;
  letter-spacing: var(--ls-display);
  line-height: var(--lh-display);
  text-wrap: pretty;
}
.serif em { font-style: italic; font-weight: 300; }
h1 { font-size: var(--fs-h1); line-height: 0.98; }
.h2 { font-size: var(--fs-h2); }
.h2--lg { font-size: var(--fs-h2-lg); }
.muted { color: var(--ink-2); }
.eyebrow {
  display: block;
  font-family: var(--font-body);
  font-size: 12px; font-weight: 600;
  letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--olive);
}
.eyebrow--muted { color: var(--ink-2); }
.eyebrow--light { color: var(--sage-light); }
.eyebrow--sm { font-size: 11px; }
@media (min-width: 960px) { .eyebrow { font-size: var(--fs-eyebrow); } .eyebrow--sm { font-size: 12px; } }

/* --- components ---------------------------------------------------------- */
.pill {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 24px;
  border-radius: var(--radius-pill); border: 1px solid transparent;
  font-size: 15px; font-weight: 500; letter-spacing: 0.01em; text-decoration: none;
  transition: background-color var(--t-hover) ease, color var(--t-hover) ease, border-color var(--t-hover) ease;
}
@media (min-width: 960px) { .pill { padding: 0 28px; } }
.pill--dark { background: var(--aubergine); color: var(--cream); border-color: var(--aubergine); }
.pill--dark:hover { background: var(--aubergine-deep); border-color: var(--aubergine-deep); }
.pill--light { background: var(--cream); color: var(--ink); border-color: var(--cream); }
.pill--light:hover { background: var(--aubergine); color: var(--cream); border-color: var(--aubergine); }
.pill--olive { background: transparent; color: var(--olive); border-color: var(--olive); }
.pill--olive:hover { background: var(--olive); color: var(--cream); }
.pill--ghost { background: transparent; color: var(--cream); border-color: rgba(251,248,243,.55); }
.pill--ghost:hover { background: var(--cream); color: var(--ink); border-color: var(--cream); }

.link {
  position: relative; display: inline-flex; align-items: center; gap: 8px; align-self: flex-start;
  min-height: var(--tap); font-size: 15px; font-weight: 500;
  color: var(--aubergine); text-decoration: none;
}
.link::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px;
  background: currentColor; transform: scaleX(1); transform-origin: left;
  transition: transform .35s var(--ease-ui);
}
.link:hover::after { transform: scaleX(0); transform-origin: right; }
.link--light { color: var(--cream); }

.row {
  display: flex; flex-direction: column; gap: 4px;
  padding: 18px 0; min-height: var(--tap);
  color: var(--ink); text-decoration: none;
  transition: padding-left .3s var(--ease-ui);
}
.row:hover { padding-left: 12px; }
.row__title { font-size: var(--fs-title); font-weight: 400; }
.row__line { font-size: 14px; color: var(--ink-2); }
.row__arrow { display: none; color: var(--olive); }
.rows > li { border-top: var(--hairline); }
.rows > li:last-child { border-bottom: var(--hairline); }
@media (min-width: 960px) {
  .row { display: grid; grid-template-columns: 300px minmax(0,1fr) 24px; align-items: center; gap: 24px; padding: 26px 0; }
  .row__line { font-size: 16px; }
  .row__arrow { display: block; }
}

.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips li { font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; border: 1px solid var(--sage); border-radius: 999px; padding: 8px 12px; }

.round-btn {
  width: 52px; height: 52px; border-radius: 50%; padding: 0;
  border: 1px solid rgba(251,248,243,.5); background: transparent; color: var(--cream);
  display: inline-flex; align-items: center; justify-content: center;
  transition: background-color var(--t-hover) ease, color var(--t-hover) ease;
}
.round-btn:hover { background: var(--cream); color: var(--aubergine); }
@media (min-width: 960px) { .round-btn { width: 56px; height: 56px; } }

/* --- layout helpers ------------------------------------------------------- */
.section { padding: var(--section) var(--gutter); }
.section--linen { background: var(--linen); }
.section__head { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.section__head .h2 { margin-top: 4px; }
.section__note { font-size: 16px; max-width: 380px; }
@media (min-width: 960px) {
  .section__head { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 40px; margin-bottom: 40px; }
  .section__head > div { display: flex; flex-direction: column; gap: 14px; }
  .section__head .h2 { margin-top: 0; }
}

/* --- 1 · header ------------------------------------------------------------ */
.header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  height: 64px; padding: 0 12px 0 20px;
  color: var(--cream); background: transparent; border-bottom: 1px solid transparent;
  transition: transform .3s var(--ease-ui), background-color var(--t-hover) ease, color var(--t-hover) ease, border-color var(--t-hover) ease;
}
.header.is-hidden { transform: translateY(-100%); }
.header.is-scrolled { background: var(--sand); color: var(--ink); border-bottom-color: var(--taupe); }
.brand { display: flex; align-items: center; gap: 10px; min-height: var(--tap); color: inherit; text-decoration: none; }
.brand__mark { width: 32px; height: 32px; object-fit: contain; filter: brightness(0) invert(1) opacity(.92); transition: filter var(--t-hover) ease; }
.header.is-scrolled .brand__mark { filter: none; }
.brand__word { font-weight: 400; font-size: 21px; letter-spacing: -0.01em; }
.brand__word sup { font-family: var(--font-body); font-size: 9px; margin-left: 2px; vertical-align: 0.9em; }
.menu-btn { width: 44px; height: 44px; padding: 0; border: 0; background: transparent; display: inline-flex; align-items: center; justify-content: center; color: inherit; }
.menu-btn__close { display: none; }
.menu-btn[aria-expanded="true"] .menu-btn__open { display: none; }
.menu-btn[aria-expanded="true"] .menu-btn__close { display: block; }

.nav { display: none; }
.nav.is-open {
  display: flex; flex-direction: column; justify-content: center; gap: 4px;
  position: fixed; inset: 0; z-index: -1; padding: 88px 20px 120px;
  background: var(--aubergine-deep); color: var(--cream);
}
.nav.is-open a { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-weight: 300; letter-spacing: var(--ls-display); font-size: 40px; line-height: 1.1; color: var(--cream); text-decoration: none; min-height: var(--tap); display: flex; align-items: center; }
.nav.is-open .nav__cta { font-family: var(--font-body); font-size: 15px; font-weight: 500; letter-spacing: 0.01em; align-self: flex-start; margin-top: 24px; color: var(--ink); }
.header.menu-open { background: transparent; color: var(--cream); border-bottom-color: transparent; }
.header.menu-open .brand__mark { filter: brightness(0) invert(1) opacity(.92); }
body.menu-open { overflow: hidden; }

@media (min-width: 960px) {
  .header { height: 88px; padding: 0 40px; }
  .brand { gap: 12px; }
  .brand__mark { width: 40px; height: 40px; }
  .brand__word { font-size: 24px; }
  .brand__word sup { font-size: 10px; }
  .menu-btn { display: none; }
  .nav { display: flex; align-items: center; gap: 34px; }
  .nav a { font-size: 15px; font-weight: 500; color: inherit; text-decoration: none; min-height: var(--tap); display: inline-flex; align-items: center; }
  .nav .nav__cta { min-height: 46px; padding: 0 22px; font-size: 14px; margin-left: 6px; color: var(--ink); }
  .nav .nav__cta:hover { color: var(--cream); }
  .header.is-scrolled .nav__cta { background: var(--aubergine); color: var(--cream); border-color: var(--aubergine); }
  .header.is-scrolled .nav__cta:hover { background: var(--aubergine-deep); }
}

/* --- 2 · hero -------------------------------------------------------------- */
.hero { position: relative; height: 760px; max-height: 100svh; min-height: 620px; overflow: hidden; background: var(--ink-2); }
.hero__media { position: absolute; inset: 0; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.hero__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(46,39,36,.45) 0%, rgba(46,39,36,0) 22%, rgba(46,39,36,.08) 38%, rgba(46,39,36,.78) 100%); }
.hero__content { position: absolute; left: var(--gutter); right: var(--gutter); bottom: 32px; color: var(--cream); }
.hero__copy { display: flex; flex-direction: column; gap: 20px; }
.hero__sub { font-size: 16px; line-height: 1.5; color: rgba(251,248,243,.9); max-width: 330px; }
.hero__actions { display: flex; flex-direction: column; gap: 10px; }
.hero__trust { display: flex; align-items: center; gap: 8px; font-size: 13px; color: rgba(251,248,243,.9); }
.hero__trust strong { font-weight: 600; }
@media (min-width: 960px) {
  .hero { height: 900px; min-height: 720px; }
  .hero__media img { object-position: 50% 45%; }
  .hero__scrim { background: linear-gradient(180deg, rgba(46,39,36,.4) 0%, rgba(46,39,36,0) 26%, rgba(46,39,36,.1) 45%, rgba(46,39,36,.72) 100%), linear-gradient(90deg, rgba(46,39,36,.35) 0%, rgba(46,39,36,0) 55%); }
  .hero__content { left: 40px; right: 40px; bottom: 56px; display: flex; align-items: flex-end; justify-content: space-between; gap: 48px; }
  .hero__copy { gap: 28px; max-width: 860px; }
  .hero__sub { font-size: 19px; max-width: 520px; }
  .hero__actions { flex-direction: row; align-items: center; gap: 12px; }
  .hero__rating { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; font-size: 14px; color: rgba(251,248,243,.9); white-space: nowrap; }
  .hero__rating span { display: flex; align-items: center; gap: 8px; }
  .hero__rating strong { font-weight: 600; }
}

/* --- 3 · accredited by ----------------------------------------------------- */
.accred { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 176px; padding: 24px var(--gutter); background: var(--linen); border-bottom: var(--hairline); }
.accred .eyebrow { font-size: 11px; }
.accred__list { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; width: 100%; text-align: center; }
.accred__list li { display: flex; flex-direction: column; gap: 2px; }
.accred__list li:nth-child(2) { border-left: var(--rule); border-right: var(--rule); }
.accred__name { font-size: 24px; font-weight: 400; color: var(--aubergine); }
.accred__credit { font-size: 11px; font-weight: 600; letter-spacing: 0.1em; color: var(--ink-2); }
@media (min-width: 960px) {
  .accred { flex-direction: row; gap: 56px; min-height: 132px; }
  .accred .eyebrow { font-size: var(--fs-eyebrow); }
  .accred__list { display: flex; width: auto; gap: 0; text-align: left; }
  .accred__list li { flex-direction: row; align-items: baseline; gap: 6px; }
  .accred__list li:nth-child(2) { border: 0; }
  .accred__list li + li { margin-left: 28px; padding-left: 28px; border-left: 1px solid rgba(124,133,103,.6); }
  .accred__name { font-size: 30px; }
  .accred__credit { font-size: 13px; }
}

/* --- 4 · two paths --------------------------------------------------------- */
.paths { display: flex; flex-direction: column; }
.path { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: 400px; padding: 32px var(--gutter); text-decoration: none; overflow: hidden; }
.path--clients { color: var(--ink); background: var(--linen); }
.path--teach { color: var(--cream); background: var(--aubergine); }
.path__media { position: absolute; inset: 0; }
.path__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.path__fade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(234,225,213,0) 30%, rgba(234,225,213,.94) 70%); }
.path__body { position: relative; display: flex; flex-direction: column; gap: 10px; }
.path__title { font-size: var(--fs-h2); }
.path__text { font-size: 16px; color: var(--ink-2); max-width: 460px; }
.path--teach .path__text { color: rgba(251,248,243,.8); }
@media (min-width: 720px) { .paths { flex-direction: row; } .path { flex: 1 1 0; } }
@media (min-width: 960px) {
  .path { min-height: 600px; padding: 56px 48px; }
  .path__fade { background: linear-gradient(180deg, rgba(244,238,230,0) 40%, rgba(244,238,230,.92) 78%); }
  .path__body { gap: 14px; }
  .path__text { font-size: 18px; }
}

/* --- 5 · philosophy -------------------------------------------------------- */
.philosophy { display: flex; flex-direction: column; }
.philosophy__text { display: flex; flex-direction: column; gap: 28px; }
.philosophy__media img { width: 100%; height: 300px; object-fit: cover; }
.philosophy__media--desktop { display: none; }
.facts { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; border-top: var(--rule); padding-top: 20px; }
.facts div { display: flex; flex-direction: column; gap: 4px; }
.facts dt { font-size: 34px; font-weight: 400; color: var(--olive); }
.facts dd { font-size: 13px; color: var(--ink-2); }
@media (min-width: 960px) {
  .philosophy { display: grid; grid-template-columns: 520px minmax(0,1fr); gap: 96px; align-items: center; padding: 120px var(--gutter); }
  .philosophy__text { gap: 24px; }
  .philosophy__text .muted { font-size: 17px; }
  .philosophy__media--mobile { display: none; }
  .philosophy__media--desktop { display: block; }
  .philosophy__media img { height: 560px; }
  .facts { gap: 24px; padding-top: 24px; margin-top: 8px; }
  .facts dt { font-size: 44px; }
  .facts dd { font-size: 14px; }
}

/* --- 6 · classes ----------------------------------------------------------- */
.classes__intro { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.classes__rates { margin-top: 8px; }
@media (min-width: 960px) {
  .classes { display: grid; grid-template-columns: 400px minmax(0,1fr); gap: 96px; }
  .classes__intro { gap: 18px; margin: 0; }
  .classes__intro .muted { font-size: 17px; }
  .classes__intro .link { align-self: flex-start; }
}

/* --- 7 · schedule component ------------------------------------------------ */
.schedule { display: flex; flex-direction: column; }
.schedule__tabs { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 2px; border-bottom: var(--hairline); }
.tab {
  appearance: none; background: transparent; border: 0; border-bottom: 2px solid transparent; margin: 0 0 -1px;
  display: flex; flex-direction: column; align-items: center; gap: 6px; min-height: var(--tap); padding: 12px 0 10px;
  color: var(--ink-2); cursor: pointer;
}
.tab[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--aubergine); }
.tab__short { font-size: 12px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; }
.tab__date { font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-weight: 400; font-size: 22px; line-height: 1; letter-spacing: -0.02em; }
.tab__note { font-size: 11px; font-weight: 500; letter-spacing: 0.06em; color: var(--ink-2); min-height: 13px; }
.schedule__panel { display: flex; flex-direction: column; gap: 4px; padding-top: 8px; }
.schedule__fallback { padding: 24px 0; }
.js .schedule__fallback { display: none; }
.js .schedule.is-error .schedule__fallback { display: block; }
.band__head { display: flex; align-items: center; gap: 12px; padding: 18px 0 10px; }
.band__label { font-size: 12px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-2); }
.band__rule { flex: 1; height: 1px; background: var(--sage); opacity: .35; }
.sched-row { display: flex; align-items: center; gap: 14px; min-height: 76px; border-top: var(--hairline); }
.sched-row__time { width: 60px; flex-shrink: 0; display: flex; flex-direction: column; gap: 2px; }
.sched-row__clock { font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-weight: 400; font-size: 21px; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.sched-row__dur { font-size: 12px; color: var(--ink-2); }
.sched-row__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.sched-row__name { font-size: 16px; font-weight: 600; }
.sched-row__type { font-size: 13px; color: var(--ink-2); }
.sched-row__who, .sched-row__dur-wide { display: none; }
.sched-row__action { display: flex; justify-content: flex-end; }
.book {
  display: inline-flex; align-items: center; justify-content: center; min-height: var(--tap); min-width: 72px; padding: 0 12px;
  border: 1px solid var(--aubergine); border-radius: var(--radius-pill); color: var(--aubergine); text-decoration: none;
  font-size: 13px; font-weight: 500; letter-spacing: 0.04em;
  transition: background-color var(--t-hover) ease, color var(--t-hover) ease;
}
.book:hover { background: var(--aubergine); color: var(--cream); }
.book--wait { border-style: dashed; border-color: #8A7D71; color: var(--ink-2); padding: 0 8px; }
.book--wait:hover { background: var(--linen); color: var(--ink); }
.schedule__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 16px; margin-top: 12px; border-top: var(--hairline); min-height: 60px; }
.schedule__tag { font-size: 12px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-2); background: var(--linen); padding: 6px 10px; }
.schedule__tag:empty { display: none; }
.schedule__more { display: inline-flex; align-items: center; gap: 8px; min-height: var(--tap); font-size: 15px; font-weight: 600; color: var(--aubergine); text-decoration: underline; text-underline-offset: 4px; }
@media (min-width: 960px) {
  .schedule__tabs { gap: 8px; }
  .tab { align-items: flex-start; padding: 16px 4px 14px; }
  .tab__date { font-size: 28px; }
  .sched-row { display: grid; grid-template-columns: 132px minmax(0,1fr) 220px 110px 132px; column-gap: 24px; min-height: 68px; }
  .sched-row__time { width: auto; }
  .sched-row__clock { font-size: 24px; }
  .sched-row__dur { display: none; }
  .sched-row__name { font-size: 17px; }
  .sched-row__type { font-size: 14px; }
  .sched-row__who, .sched-row__dur-wide { display: block; font-size: 15px; color: var(--ink-2); }
  .sched-row__type-who { display: none; }
  .book { min-width: 104px; padding: 0 18px; font-size: 14px; }
}

/* --- 8 · new here ---------------------------------------------------------- */
.steps__list li { display: grid; grid-template-columns: 52px minmax(0,1fr); gap: 12px; padding: 20px 0; border-top: var(--rule); }
.steps__list li:last-child { border-bottom: var(--rule); }
.steps__list li > div { display: flex; flex-direction: column; gap: 4px; }
.steps__num { font-size: 34px; font-weight: 400; color: var(--olive); }
.steps__title { font-size: 18px; font-weight: 500; }
.steps__text { font-size: 15px; color: var(--ink-2); }
.steps__cta { margin-top: 20px; display: flex; }
@media (min-width: 960px) {
  .steps__list { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 40px; }
  .steps__list li { display: flex; flex-direction: column; gap: 12px; padding: 24px 0 0; border-bottom: 0 !important; }
  .steps__num { font-size: 44px; }
  .steps__title { font-size: 22px; }
  .steps__text { font-size: 17px; }
}

/* --- 9 · teacher training -------------------------------------------------- */
.training { display: flex; flex-direction: column; gap: 24px; }
.training__text { display: flex; flex-direction: column; gap: 20px; }
.training__photo { width: 100%; height: 240px; object-fit: cover; object-position: 50% 35%; background: var(--taupe); }
.training__photo--desktop { display: none; }
.intakes { display: flex; align-items: baseline; gap: 12px; border-top: var(--rule); padding-top: 16px; }
.intakes div { display: flex; align-items: baseline; gap: 12px; }
.intakes dd { font-size: 24px; font-weight: 400; }
.card { display: flex; flex-direction: column; gap: 14px; background: var(--cream); border: var(--hairline); padding: 24px 20px; }
.card__title { font-size: 26px; font-weight: 400; }
.card__sub { font-size: 15px; color: var(--ink-2); margin-top: -8px; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field label { font-size: 13px; font-weight: 600; color: var(--ink-2); }
.field input { height: 48px; padding: 0 14px; border: var(--hairline); border-radius: var(--radius-input); background: var(--cream); font-size: 16px; color: var(--ink); }
.check { display: flex; align-items: flex-start; gap: 10px; min-height: var(--tap); }
.check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--aubergine); flex-shrink: 0; }
.check label { font-size: 13px; color: var(--ink-2); line-height: 1.45; }
.form .pill { width: 100%; }
@media (min-width: 960px) {
  .training { display: grid; grid-template-columns: minmax(0,1fr) 480px; gap: 96px; align-items: start; }
  .training__text { gap: 24px; }
  .training__text .h2 { max-width: 640px; }
  .training__text .muted { font-size: 17px; max-width: 600px; }
  .training__photo--mobile { display: none; }
  .training__photo--desktop { display: block; width: 640px; max-width: 100%; height: 360px; margin-top: 8px; }
  .intakes { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 32px; padding-top: 24px; max-width: 600px; }
  .intakes div { flex-direction: column; gap: 6px; }
  .intakes dd { font-size: 30px; }
  .card { gap: 16px; padding: 36px 32px; }
  .card__title { font-size: 30px; }
  .field input { height: 50px; }
  .form .pill { width: auto; align-self: stretch; }
}

/* --- 10 · instructors ------------------------------------------------------ */
.team__grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px 14px; }
.person { display: flex; flex-direction: column; gap: 10px; color: var(--ink); text-decoration: none; }
.person img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; background: var(--taupe); transition: opacity .3s ease; }
.person:hover img { opacity: .9; }
.person__name { font-size: 22px; font-weight: 400; }
.person__role { font-size: 13px; color: var(--olive); margin-top: -8px; }
@media (min-width: 960px) {
  .team__grid { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 24px; }
  .person { gap: 14px; }
  .person__name { font-size: 26px; }
  .person__role { font-size: 14px; margin-top: -11px; }
}

/* --- 11 · reviews ---------------------------------------------------------- */
.reviews { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 24px; min-height: 640px; padding: 64px 24px; background: var(--aubergine); color: var(--cream); text-align: center; }
.reviews__stage { position: relative; width: 100%; max-width: 900px; display: grid; }
.review { grid-area: 1 / 1; display: flex; flex-direction: column; align-items: center; gap: 16px; transition: opacity .3s ease; }
.js .review { opacity: 0; visibility: hidden; }
.js .review.is-current { opacity: 1; visibility: visible; }
.no-js .review + .review, html:not(.js) .review + .review { margin-top: 32px; }
html:not(.js) .reviews__stage { display: flex; flex-direction: column; }
html:not(.js) .reviews__nav { display: none; }
.review__tag { font-size: 11px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sage-light); opacity: .8; }
.review__text { font-size: var(--fs-quote); line-height: 1.3; letter-spacing: -0.01em; }
.review__who { font-size: 14px; color: rgba(251,248,243,.75); }
.reviews__nav { display: flex; gap: 14px; }
.reviews .link { align-self: center; }
@media (min-width: 960px) {
  .reviews { gap: 36px; min-height: 620px; padding: 96px var(--gutter); }
  .review { gap: 22px; }
  .review__text { line-height: 1.25; letter-spacing: -0.015em; }
  .review__who { font-size: 15px; }
}

/* --- 12 · journal ---------------------------------------------------------- */
.journal__grid li { border-top: var(--rule); }
.journal__grid li:last-child { border-bottom: var(--rule); }
.post { display: flex; flex-direction: column; gap: 6px; padding: 18px 0; min-height: var(--tap); color: var(--ink); text-decoration: none; transition: padding-left .3s var(--ease-ui); }
.post:hover { padding-left: 12px; }
.post__meta { font-size: 12px; font-weight: 500; color: var(--olive); }
.post__title { font-size: 22px; line-height: 1.2; font-weight: 400; }
.post__dek { font-size: 16px; color: var(--ink-2); }
.journal__all { margin-top: 8px; }
@media (min-width: 960px) {
  .journal__grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
  .journal__grid li:last-child { border-bottom: 0; }
  .post { gap: 12px; padding: 20px 0 0; }
  .post__meta { font-size: 13px; }
  .post__title { font-size: 28px; line-height: 1.15; }
}

/* --- 13 · start here ------------------------------------------------------- */
.cta { display: flex; flex-direction: column; padding: 0 var(--gutter) 48px; }
.cta__media img { width: 100%; height: 240px; object-fit: cover; }
.cta__card { display: flex; flex-direction: column; gap: 16px; padding: 32px 24px; background: var(--linen); }
.cta__actions { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
@media (min-width: 960px) {
  .cta { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); padding: 0 var(--gutter) 96px; }
  .cta__media img { height: 100%; min-height: 540px; }
  .cta__card { justify-content: center; gap: 22px; padding: 64px 72px; }
  .cta__card .muted { font-size: 17px; max-width: 420px; }
  .cta__actions { flex-direction: row; align-items: center; margin-top: 6px; }
}

/* --- 14 · visit ------------------------------------------------------------ */
.visit { display: flex; flex-direction: column; padding: 32px var(--gutter) var(--section); }
.visit__text { display: flex; flex-direction: column; gap: 20px; }
.map { position: relative; display: flex; flex-direction: column; justify-content: flex-end; height: 200px; padding: 14px; background: #DCD6C6; border: var(--hairline); color: var(--ink); text-decoration: none; overflow: hidden; }
.map > svg { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .8; }
.map__label { position: relative; display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; background: var(--cream); border: var(--hairline); border-radius: var(--radius-pill); padding: 10px 14px; font-size: 13px; font-weight: 500; transition: background-color var(--t-hover) ease, color var(--t-hover) ease; }
.map:hover .map__label { background: var(--aubergine); color: var(--cream); }
.map--desktop { display: none; }
.visit__details { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; border-top: var(--rule); padding-top: 20px; }
.visit__details div { display: flex; flex-direction: column; gap: 6px; }
.visit__details dd { font-size: 15px; line-height: 1.5; display: flex; flex-direction: column; }
.visit__details dd a { color: var(--ink); text-decoration: none; min-height: var(--tap); display: flex; align-items: center; }
.visit__details dd a.visit__mail { color: var(--aubergine); text-decoration: underline; overflow-wrap: anywhere; }
.visit__wa { display: flex; }
@media (min-width: 960px) {
  .visit { display: grid; grid-template-columns: minmax(0,1fr) 640px; gap: 96px; align-items: start; padding: 0 var(--gutter) var(--section); }
  .visit__text { gap: 26px; }
  .map--mobile { display: none; }
  .map--desktop { display: flex; height: 440px; padding: 20px; }
  .map__label { padding: 12px 18px; font-size: 14px; }
  .visit__details { gap: 32px; padding-top: 24px; }
  .visit__details div { gap: 8px; }
  .visit__details dd { font-size: 16px; line-height: 1.6; }
}

/* --- 15 · footer ----------------------------------------------------------- */
.footer { display: flex; flex-direction: column; gap: 28px; padding: 56px var(--gutter) 0; background: var(--aubergine-deep); color: var(--cream); overflow: hidden; }
.footer__grid { display: flex; flex-direction: column; gap: 28px; }
.footer__title { font-size: 36px; line-height: 1.05; }
.footer__blurb { font-size: 15px; color: rgba(251,248,243,.65); max-width: 320px; }
.footer__news { display: flex; flex-direction: column; gap: 12px; }
.footer__news label { font-size: 15px; font-weight: 500; }
.footer__news-row { display: flex; gap: 8px; }
.footer__news-row input { flex: 1; min-width: 0; height: 50px; padding: 0 18px; border: 1px solid rgba(251,248,243,.35); border-radius: var(--radius-pill); background: transparent; color: var(--cream); font-size: 16px; }
.footer__news-row input::placeholder { color: rgba(251,248,243,.5); }
.footer__news-row .pill { min-height: 50px; padding: 0 20px; font-size: 14px; }
.footer__consent { font-size: 12px; color: rgba(251,248,243,.6); line-height: 1.45; }
.footer__navs { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; border-top: 1px solid rgba(251,248,243,.18); padding-top: 20px; }
.footer__nav { display: flex; flex-direction: column; gap: 4px; }
.footer__nav a { font-size: 15px; color: var(--cream); text-decoration: none; min-height: 44px; display: flex; align-items: center; }
.footer__nav a:hover { color: var(--sage-light); }
.footer__social { display: flex; flex-wrap: wrap; gap: 4px 20px; border-top: 1px solid rgba(251,248,243,.18); padding-top: 12px; }
.footer__social a { font-size: 13px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--sage-light); text-decoration: none; min-height: var(--tap); display: flex; align-items: center; }
.footer__social a:hover { color: var(--cream); }
.footer__legal { font-size: 12px; color: rgba(251,248,243,.6); }
.footer__mark { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin-top: 24px; padding-bottom: 88px; }
.footer__mark img { width: 120px; height: 120px; object-fit: contain; opacity: .9; order: -1; }
.footer__word { font-size: 92px; line-height: .85; font-weight: 300; letter-spacing: -0.04em; color: var(--cream); }
@media (min-width: 960px) {
  .footer { gap: 0; padding: 80px var(--gutter) 0; }
  .footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.4fr; gap: 48px; align-items: start; }
  .footer__intro { display: flex; flex-direction: column; gap: 14px; grid-column: 1; }
  .footer__title { font-size: 44px; }
  .footer__navs { display: contents; }
  .footer__nav { border: 0; padding: 0; }
  .footer__nav a { min-height: 36px; }
  .footer__nav .eyebrow { margin-bottom: 8px; }
  .footer__news { grid-column: 4; grid-row: 1; gap: 12px; }
  .footer__news-row .pill { padding: 0 22px; }
  .footer__social { grid-column: 4; grid-row: 2; border: 0; padding: 0; gap: 4px 14px; margin-top: -24px; }
  .footer__social a { font-size: 11px; letter-spacing: 0.06em; }
  .footer__legal { display: flex; align-items: center; justify-content: space-between; font-size: 13px; margin-top: 56px; border-top: 1px solid rgba(251,248,243,.18); padding-top: 20px; }
  .footer__mark { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 32px; height: 240px; margin-top: 8px; padding-bottom: 0; }
  .footer__mark img { width: 200px; height: 200px; margin-bottom: 24px; order: 2; flex-shrink: 0; }
  .footer__word { font-size: min(236px, 12.6vw); line-height: .78; white-space: nowrap; margin-bottom: -0.1em; }
}

/* --- sticky bottom bar (mobile) ------------------------------------------- */
.sticky-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 6px; padding: 8px 8px calc(12px + env(safe-area-inset-bottom)); background: rgba(251,248,243,.96); border-top: var(--hairline); backdrop-filter: blur(6px); }
.sticky-bar a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 48px; color: var(--olive); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; text-decoration: none; }
.sticky-bar .pill { flex-direction: row; min-height: 48px; font-size: 14px; color: var(--cream); }
@media (min-width: 960px) { .sticky-bar { display: none; } }

/* --- motion ---------------------------------------------------------------- */
@media (prefers-reduced-motion: no-preference) {
  .js [data-reveal] {
    opacity: 0; transform: translateY(28px);
    transition: opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out);
    transition-delay: calc(var(--i, 0) * var(--stagger));
  }
  .js [data-reveal="img"] { transform: scale(1.06); transition-duration: var(--t-img); }
  .js [data-reveal].in { opacity: 1; transform: none; }
  .js .hero__media[data-reveal] { transition-delay: 0s; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
  html:focus-within { scroll-behavior: auto; }
}

/* Forms — status + honeypot */
.hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.form-status { margin: 0; font-size: 14px; line-height: 1.45; min-height: 0; }
.form-status:empty { display: none; }
.form-status.is-ok { color: var(--olive); }
.form-status.is-err { color: #8A2E2E; }
.footer .form-status.is-ok, .footer .form-status.is-err { color: var(--sage-light); }

/* Header v2 (29 Sep): full-colour logo mark at 2×, wordmark in the logo purple on a light bar */
:root { --brand-purple: #753F88; --brand-green: #00A859; }
.header { height: 80px; background: rgba(244,238,230,.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); color: var(--ink); border-bottom-color: var(--taupe); }
.header.is-scrolled { background: rgba(244,238,230,.97); }
.brand picture { display: contents; }
.brand__mark, .header.is-scrolled .brand__mark { width: 64px; height: 64px; filter: none; }
.brand__word { color: var(--brand-purple); }
.header .nav__cta { background: var(--aubergine); color: var(--cream); border-color: var(--aubergine); }
.header.menu-open { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; }
.header.menu-open .brand__word { color: var(--cream); }
.header.menu-open .brand__mark { filter: brightness(0) invert(1) opacity(.92); }
.nav.is-open .nav__cta { background: var(--cream); color: var(--ink); border-color: var(--cream); }
@media (min-width: 960px) {
  .header { height: 104px; }
  .brand__mark, .header.is-scrolled .brand__mark { width: 80px; height: 80px; }
  .nav .nav__cta, .header .nav__cta { color: var(--cream); }
  .nav .nav__cta:hover { background: var(--aubergine-deep); border-color: var(--aubergine-deep); }
}

/* Reviews v2: real quotes are longer — smaller quote size + reviewer avatar (initials now; swap for a photo with consent) */
.review__text { font-size: clamp(22px, 1.2rem + 0.9vw, 32px); line-height: 1.32; max-width: 34ch; margin-inline: auto; }
.review__who { display: inline-flex; align-items: center; gap: 14px; text-align: left; }
.review__who strong { display: block; font-weight: 600; color: var(--cream); font-size: 15px; }
.review__src { display: block; font-size: 13px; color: var(--sage-light); }
.review__avatar { flex: none; width: 52px; height: 52px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--sage-light); color: var(--aubergine); font-family: var(--font-display); font-size: 19px; letter-spacing: .02em; overflow: hidden; }
.review__avatar img { width: 100%; height: 100%; object-fit: cover; }
.form-download { margin-top: 12px; }

/* =====================================================================
   Inner pages (29 Sep): page hero, features, pricing, courses, FAQ
   ===================================================================== */
.page-hero { display: grid; gap: 28px; padding: calc(80px + 40px) var(--gutter) 48px; background: var(--sand); }
.crumbs { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--ink-2); }
.crumbs a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--taupe); }
.crumbs span[aria-hidden] { color: var(--sage); }
.page-hero__text { display: flex; flex-direction: column; gap: 18px; }
.page-hero h1 { font-size: clamp(2.75rem, 1.9rem + 3.4vw, 5rem); line-height: 1; letter-spacing: var(--ls-display); text-wrap: balance; }
.page-hero__lead { font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem); color: var(--ink-2); max-width: 58ch; line-height: 1.55; }
.page-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
.page-hero__media img { width: 100%; height: 280px; object-fit: cover; }
.jump { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.jump a { font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--olive); text-decoration: none; border: 1px solid var(--sage); border-radius: 999px; padding: 9px 14px; min-height: 40px; display: inline-flex; align-items: center; }
.jump a:hover { background: var(--olive); color: var(--cream); border-color: var(--olive); }
@media (min-width: 960px) {
  .page-hero { grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr); gap: 72px; align-items: end; padding: calc(104px + 72px) var(--gutter) 88px; }
  .page-hero--solo { grid-template-columns: minmax(0, 880px); }
  .page-hero__media img { height: 520px; }
}

/* feature rows (class types) */
.features { display: flex; flex-direction: column; }
.feature { display: grid; gap: 24px; padding: 40px 0; border-top: var(--rule); scroll-margin-top: 110px; }
.feature:last-child { border-bottom: var(--rule); }
.feature__media img { width: 100%; height: 240px; object-fit: cover; }
.feature__body { display: flex; flex-direction: column; gap: 14px; }
.feature__kicker { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--olive); }
.feature__title { font-size: var(--fs-h2); line-height: 1.02; }
.feature__text { color: var(--ink-2); max-width: 60ch; }
.feature__label { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); margin-top: 6px; }
.chips--soft { display: flex; flex-wrap: wrap; gap: 8px; }
.chips--soft li { font-size: 13px; font-weight: 500; letter-spacing: 0; text-transform: none; border: 1px solid var(--taupe); background: var(--cream); border-radius: 999px; padding: 7px 12px; }
.feature__meta { display: flex; flex-wrap: wrap; gap: 18px; font-size: 14px; color: var(--ink-2); margin-top: 4px; }
.feature__meta strong { color: var(--ink); font-weight: 600; }
@media (min-width: 960px) {
  .feature { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 80px; align-items: center; padding: 72px 0; }
  .feature--rev .feature__media { order: 2; }
  .feature__media img { height: 460px; }
  .feature--noimg { grid-template-columns: minmax(0,1fr); }
}

/* good-to-know lists */
.ticks { display: grid; gap: 0; }
.ticks li { display: grid; grid-template-columns: 22px minmax(0,1fr); gap: 12px; padding: 14px 0; border-top: var(--hairline); font-size: 16px; }
.ticks li:last-child { border-bottom: var(--hairline); }
.ticks li::before { content: ""; width: 10px; height: 10px; margin-top: 8px; border-radius: 50%; border: 1.5px solid var(--sage); }
.two-col { display: grid; gap: 40px; }
@media (min-width: 960px) { .two-col { grid-template-columns: 400px minmax(0,1fr); gap: 96px; } }

/* pricing */
.price-block { display: flex; flex-direction: column; gap: 20px; scroll-margin-top: 110px; }
.price-block + .price-block { margin-top: 72px; }
.price-block__head { display: flex; flex-direction: column; gap: 8px; }
.price-block__note { font-size: 15px; color: var(--ink-2); max-width: 60ch; }
.seg { display: inline-flex; flex-wrap: wrap; gap: 4px; padding: 4px; border: var(--hairline); border-radius: 999px; background: var(--cream); align-self: flex-start; }
.seg button { min-height: 40px; padding: 0 16px; border: 0; border-radius: 999px; background: transparent; font: inherit; font-size: 14px; font-weight: 500; color: var(--ink-2); cursor: pointer; }
.seg button[aria-pressed="true"] { background: var(--aubergine); color: var(--cream); }
.ptable { width: 100%; border-collapse: collapse; background: var(--cream); border: var(--hairline); }
.ptable caption { text-align: left; font-size: 13px; color: var(--ink-2); padding-bottom: 10px; caption-side: bottom; padding-top: 10px; }
.ptable th, .ptable td { padding: 16px 14px; border-bottom: var(--hairline); text-align: left; vertical-align: baseline; }
.ptable thead th { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); background: var(--linen); }
.ptable tbody th { font-weight: 500; font-size: 15px; }
.ptable td { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-size: 24px; font-weight: 400; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ptable td small { font-family: var(--font-body); font-size: 12px; color: var(--ink-2); margin-left: 4px; }
.ptable tr:last-child th, .ptable tr:last-child td { border-bottom: 0; }
.ptable .is-dropin th, .ptable .is-dropin td { background: rgba(234,225,213,.45); }
/* one column at a time on phones; whole table from 720px */
@media (max-width: 719px) {
  .ptable[data-col] thead th:not(:first-child), .ptable[data-col] td { display: none; }
  .ptable[data-col="1"] :is(thead th, td):nth-child(2), .ptable[data-col="2"] :is(thead th, td):nth-child(3),
  .ptable[data-col="3"] :is(thead th, td):nth-child(4), .ptable[data-col="4"] :is(thead th, td):nth-child(5) { display: table-cell; }
  .ptable td { text-align: right; }
}
@media (min-width: 720px) { .seg--mobile { display: none; } .ptable td { font-size: 26px; } .ptable th, .ptable td { padding: 18px 22px; } }

.pcards { display: grid; gap: 16px; }
.pcard { display: flex; flex-direction: column; gap: 14px; padding: 26px 22px; background: var(--cream); border: var(--hairline); }
.pcard__title { font-size: 26px; line-height: 1.1; }
.pcard__desc { font-size: 14px; color: var(--ink-2); margin-top: -6px; }
.pcard dl { display: grid; gap: 0; margin-top: 4px; }
.pcard dl div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 0; border-top: var(--hairline); }
.pcard dt { font-size: 14px; color: var(--ink-2); }
.pcard dd { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-size: 24px; font-variant-numeric: tabular-nums; }
.pcard dd small { font-family: var(--font-body); font-size: 12px; color: var(--ink-2); margin-left: 3px; }
.pcard--accent { background: var(--aubergine); color: var(--cream); border-color: var(--aubergine); }
.pcard--accent .pcard__desc, .pcard--accent dt, .pcard--accent dd small { color: var(--sage-light); }
.pcard--accent dl div { border-top-color: rgba(251,248,243,.18); }
@media (min-width: 720px) { .pcards { grid-template-columns: repeat(3, minmax(0,1fr)); } .pcards--2 { grid-template-columns: repeat(2, minmax(0,1fr)); } .pcard { padding: 32px 28px; } }
.fine { font-size: 13px; color: var(--ink-2); line-height: 1.5; }

/* courses */
.courses { display: grid; gap: 16px; }
.course { display: flex; flex-direction: column; gap: 14px; padding: 28px 22px; background: var(--cream); border: var(--hairline); scroll-margin-top: 110px; }
.course__num { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--olive); }
.course__title { font-size: 28px; line-height: 1.08; }
.course__text { font-size: 15px; color: var(--ink-2); }
.course__facts { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px 18px; padding-top: 16px; border-top: var(--rule); margin-top: auto; }
.course__facts div { display: flex; flex-direction: column; gap: 2px; }
.course__facts dt { font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.course__facts dd { font-size: 15px; font-weight: 500; }
.course__facts dd.serif { font-size: 24px; font-weight: 400; }
.course__tag { align-self: flex-start; font-size: 12px; font-weight: 600; letter-spacing: .06em; padding: 6px 10px; border-radius: 999px; background: var(--sage-100, #E6E8DE); color: var(--olive); }
@media (min-width: 720px) { .courses { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 1200px) { .courses { grid-template-columns: repeat(3, minmax(0,1fr)); } .course { padding: 34px 30px; } }

/* FAQ */
.faq { border-top: var(--rule); }
.faq details { border-bottom: var(--rule); }
.faq summary { display: flex; justify-content: space-between; align-items: center; gap: 16px; min-height: 64px; padding: 16px 0; cursor: pointer; list-style: none; font-family: var(--font-display); font-variation-settings: var(--display-settings); font-size: var(--fs-title); font-weight: 400; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-family: var(--font-body); font-size: 26px; font-weight: 300; color: var(--olive); transition: transform .3s ease; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq .faq__a { padding: 0 0 22px; color: var(--ink-2); max-width: 72ch; display: flex; flex-direction: column; gap: 10px; }
.faq .faq__a ul { display: flex; flex-direction: column; gap: 8px; padding-left: 18px; list-style: disc; }

/* dark band */
.band-dark { background: var(--aubergine); color: var(--cream); }
.band-dark .muted, .band-dark .fine { color: var(--sage-light); }
.stats { display: grid; gap: 24px; }
.stats div { display: flex; flex-direction: column; gap: 6px; padding-top: 18px; border-top: 1px solid rgba(201,203,180,.4); }
.stats dt { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-size: 40px; font-weight: 300; line-height: 1; }
.stats dd { font-size: 15px; color: var(--sage-light); max-width: 34ch; }
@media (min-width: 720px) { .stats { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 32px; } }

.training-form { display: grid; gap: 32px; }
@media (min-width: 960px) { .training-form { grid-template-columns: minmax(0,1fr) 480px; gap: 96px; align-items: start; } }
@media print { .header, .sticky-bar, .footer, .seg, .page-hero__actions { display: none !important; } .page-hero { padding-top: 0; } }
.two-col .section__head { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 12px; margin-bottom: 0; }
.cta--solo { display: block; }
.cta--solo .cta__card { align-items: flex-start; }
@media (min-width: 960px) { .cta--solo .cta__card { display: grid; grid-template-columns: minmax(0,1fr) auto; column-gap: 64px; align-items: end; padding: 64px; } .cta--solo .cta__card > .cta__actions { grid-column: 2; grid-row: 1 / span 3; flex-direction: row; } }
.section__head--stack { flex-direction: column !important; align-items: flex-start !important; justify-content: flex-start !important; gap: 12px; } .section__head--stack .muted { max-width: 64ch; }

/* 29 Sep v3 — home: transparent header over the hero; nav hover; wider reviews; team photo crop */
.page-home .header:not(.is-scrolled):not(.menu-open) { background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom-color: transparent; }
/* light veil at the top of the photo so the colour logo, purple wordmark and dark nav read clearly */
.page-home .hero__scrim { background: linear-gradient(180deg, rgba(244,238,230,.72) 0%, rgba(244,238,230,.35) 11%, rgba(244,238,230,0) 20%, rgba(46,39,36,0) 42%, rgba(46,39,36,.78) 100%); }
@media (min-width: 960px) {
  .page-home .hero__scrim { background: linear-gradient(180deg, rgba(244,238,230,.7) 0%, rgba(244,238,230,.3) 12%, rgba(244,238,230,0) 21%, rgba(46,39,36,.08) 45%, rgba(46,39,36,.74) 100%), linear-gradient(90deg, rgba(46,39,36,.32) 0%, rgba(46,39,36,0) 55%); }
  .nav a:not(.nav__cta) { position: relative; transition: color .25s ease; }
  .nav a:not(.nav__cta)::after { content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .35s cubic-bezier(.4,0,.2,1); }
  .nav a:not(.nav__cta):hover { color: var(--aubergine); }
  .nav a:not(.nav__cta):hover::after, .nav a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
  .nav a[aria-current="page"] { color: var(--aubergine); }
  .nav .nav__cta { transition: background-color .25s ease, transform .25s ease; }
  .nav .nav__cta:hover { transform: translateY(-1px); }
}
.reviews__stage { max-width: 1100px; }
.review__text { max-width: 50ch; font-size: clamp(21px, 1.1rem + 0.7vw, 30px); line-height: 1.34; }
.training__photo { object-position: 50% 100% !important; }
.page-training .page-hero__media img { object-position: 50% 100%; }

/* Batch 2 pages: legal, quotes, contact, bios, textarea/select */
.legal__body { max-width: 760px; display: flex; flex-direction: column; gap: 14px; }
.legal__body h2 { font-size: var(--fs-title); font-weight: 400; margin-top: 22px; }
.legal__body h2:first-child { margin-top: 0; }
.legal__body p, .legal__body li { color: var(--ink-2); line-height: 1.65; }
.legal__body ul { display: flex; flex-direction: column; gap: 8px; padding-left: 20px; list-style: disc; }
.legal__body strong { color: var(--ink); font-weight: 600; }
.quotes { columns: 1; column-gap: 20px; }
@media (min-width: 720px) { .quotes { columns: 2; } }
@media (min-width: 1200px) { .quotes { columns: 3; } }
.quote { break-inside: avoid; margin: 0 0 20px; padding: 28px 26px; background: var(--cream); border: var(--hairline); display: flex; flex-direction: column; gap: 16px; }
.quote blockquote { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-size: 20px; line-height: 1.45; font-weight: 400; color: var(--ink); }
.quote figcaption { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--olive); }
.contact-info { display: flex; flex-direction: column; gap: 28px; }
.contact-list { display: grid; gap: 0; border-top: var(--rule); }
.contact-list div { display: grid; grid-template-columns: 140px minmax(0,1fr); gap: 16px; padding: 16px 0; border-bottom: var(--rule); }
.contact-list dt { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); padding-top: 3px; }
.contact-list dd { font-size: 17px; line-height: 1.6; }
.person__bio { font-size: 14px; line-height: 1.6; color: var(--ink-2); margin-top: 6px; }
.field textarea, .field select { padding: 12px 14px; border: var(--hairline); border-radius: var(--radius-input); background: var(--cream); font: inherit; font-size: 16px; color: var(--ink); resize: vertical; }
.field select { height: 48px; padding: 0 12px; }
.feature__media img[style*="aspect-ratio"] { width: 100%; object-fit: cover; }
.page-about .team__grid { grid-template-columns: 1fr; } @media (min-width: 720px) { .page-about .team__grid { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 28px; } }
@media (max-width: 719px) { .contact-list div { grid-template-columns: 1fr; gap: 4px; } } .contact-list dd a, .legal__body a { overflow-wrap: anywhere; }

/* 29 Sep v4 — team photo shows everyone's heads; tighter text/form columns */
.training__photo, .training__photo--desktop { height: auto !important; aspect-ratio: 4 / 3; object-position: 50% 100% !important; }
@media (min-width: 960px) {
  .training, .training-form { grid-template-columns: minmax(0, 640px) 480px; gap: 72px; justify-content: center; }
  .training__photo--desktop { width: 100%; }
}

/* ==== v5 · 29 Sep: week timetable, footer wordmark + wave, Vitality, H2 scale-in ==== */
[hidden] { display: none !important; }

/* timetable: view toggle + full-week grid */
.schedule__view { display: inline-flex; align-self: flex-start; padding: 4px; margin-bottom: 20px; border: var(--hairline); border-radius: var(--radius-pill); background: var(--cream); }
.schedule__view button { appearance: none; border: 0; background: transparent; min-height: 40px; padding: 0 18px; border-radius: var(--radius-pill); font: 600 14px/1 var(--font-body); color: var(--ink-2); cursor: pointer; }
.schedule__view button[aria-pressed="true"] { background: var(--aubergine); color: var(--cream); }
.wk { display: grid; grid-template-columns: 1fr; gap: 28px; }
.wk__head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding-bottom: 10px; margin: 0 0 10px; border-bottom: 2px solid var(--aubergine); font: inherit; }
.wk__name { font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-weight: 400; font-size: 24px; letter-spacing: -0.01em; }
.wk__count { font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-2); }
.wk__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.wk__cls { display: grid; grid-template-columns: minmax(0,1fr) auto; column-gap: 12px; row-gap: 2px; padding: 12px 12px 12px 14px; background: var(--cream); border: var(--hairline); border-left: 4px solid var(--aubergine); }
.wk__cls--mat { border-left-color: var(--olive); }
.wk__cls--kids { border-left-color: #9B7BB0; }
.wk__time { grid-column: 1; font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-size: 19px; font-variant-numeric: tabular-nums; }
.wk__time span { font-family: var(--font-body); font-size: 13px; color: var(--ink-2); }
.wk__title { grid-column: 1; font-size: 15px; font-weight: 600; }
.wk__type, .wk__who { grid-column: 1; font-size: 13px; color: var(--ink-2); }
.wk__who::before { content: 'with '; }
.wk__book { grid-column: 2; grid-row: 1 / span 4; align-self: center; display: inline-flex; align-items: center; justify-content: center; min-height: var(--tap); padding: 0 14px; border: 1px solid var(--aubergine); border-radius: var(--radius-pill); color: var(--aubergine); font-size: 13px; font-weight: 500; text-decoration: none; transition: background-color var(--t-hover), color var(--t-hover); }
.wk__book:hover { background: var(--aubergine); color: var(--cream); }
.wk__book.is-wait { border-style: dashed; color: var(--ink-2); border-color: #8A7D71; }
.wk__hours { margin: 24px 0 0; padding: 14px 16px; background: var(--linen); font-size: 14px; display: flex; flex-wrap: wrap; gap: 4px 12px; }
.schedule__pdf { display: inline-flex; align-items: center; gap: 8px; min-height: var(--tap); font-size: 15px; font-weight: 600; color: var(--aubergine); text-decoration: none; }
.schedule__pdf span { font-weight: 400; color: var(--ink-2); font-size: 13px; }
.schedule__pdf:hover { text-decoration: underline; text-underline-offset: 4px; }
.schedule__foot { flex-wrap: wrap; }
@media (min-width: 720px) {
  .wk { grid-template-columns: repeat(5, minmax(0,1fr)); gap: 14px; }
  .wk__cls { grid-template-columns: minmax(0,1fr) auto; padding: 10px 10px 12px 12px; row-gap: 1px; }
  .wk__time { grid-column: 1; grid-row: 1; align-self: center; }
  .wk__book { grid-column: 2; grid-row: 1; min-height: 30px; padding: 0 12px; font-size: 12px; }
  .wk__title, .wk__type, .wk__who { grid-column: 1 / -1; }
  .wk__title { margin-top: 4px; }
  .wk__name { font-size: 22px; }
}
@media (min-width: 1200px) { .wk { gap: 20px; } .wk__cls { padding: 14px 16px; } }

/* portrait hero image (assessment) */
.page-hero__media--portrait img { object-position: 50% 72%; }

/* Vitality band in the footer */
.footer__vitality { display: grid; gap: 18px; margin-top: 36px; padding: 28px 24px; background: #0D2438; border-radius: 4px; color: #fff; }
.vit__brand { display: flex; flex-direction: column; line-height: 1; }
.vit__disc { font-size: 13px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; opacity: .85; }
.vit__word { font-size: 44px; font-style: italic; letter-spacing: -0.02em; margin-top: 4px; }
.vit__lead { margin: 0 0 10px; font-size: 17px; font-weight: 500; max-width: 440px; }
.vit__steps { margin: 0; padding: 0; list-style: none; counter-reset: v; display: flex; flex-direction: column; gap: 6px; font-size: 14px; color: rgba(255,255,255,.78); }
.vit__steps li { counter-increment: v; }
.vit__steps li::before { content: counter(v) '. '; font-weight: 600; color: #7DDC9E; }
.vit__btn { justify-self: start; background: #7DDC9E; color: #0D2438; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; font-size: 14px; }
.vit__btn:hover { background: #fff; color: #0D2438; }
@media (min-width: 960px) {
  .footer__vitality { grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 48px; margin-top: 64px; padding: 32px 40px; }
  .vit__steps { flex-direction: row; gap: 28px; }
}

/* footer wordmark: full word resting on the page bottom */
.footer__mark { overflow: visible; }
.footer__word { display: block; line-height: 1; margin: 0; padding-bottom: .12em; }
.footer__line { display: inline-block; white-space: nowrap; }
.footer__word .w { display: inline-block; }
@media (max-width: 959px) {
  .footer__line { display: block; }
  .footer__word { font-size: min(92px, 23vw); }
  .footer__mark { padding-bottom: 96px; }
}
@media (min-width: 960px) {
  .footer__mark { height: auto; align-items: flex-end; margin-top: 24px; padding-bottom: 8px; }
  .footer__word { font-size: min(236px, 12.2vw); line-height: 1; margin-bottom: 0; }
  .footer__mark img { margin-bottom: .6em; }
}

@media (prefers-reduced-motion: no-preference) {
  /* letters drop in one after another, like a wave */
  .js [data-wave] .w { opacity: 0; transform: translateY(-0.7em) rotate(-4deg); transition: opacity .5s var(--ease-out), transform .9s cubic-bezier(.34,1.56,.64,1); transition-delay: calc(var(--k) * 55ms); }
  .js [data-wave].in .w { opacity: 1; transform: none; }
  .js [data-wave] img { opacity: 0; transform: scale(.8); transition: opacity .8s var(--ease-out) .9s, transform .9s cubic-bezier(.34,1.56,.64,1) .9s; }
  .js [data-wave].in img { opacity: .9; transform: none; }

  /* H2s grow from smaller to full size as they come into view */
  .js h2[data-reveal] { transform: translateY(20px) scale(.82); transform-origin: 0 100%; transition-duration: 1.1s; }
  .js h2[data-reveal].is-centered { transform-origin: 50% 100%; }
  .js h2[data-reveal].in { transform: none; }
}

/* ==== v6 · home week-at-a-glance + testimonials ==== */
.glance { --c-equip: var(--aubergine); --c-mat: var(--olive); --c-kids: #9B7BB0; }
.glance__fallback { display: none; }
.glance.is-error .glance__fallback { display: block; }
.glance__grid { display: flex; flex-direction: column; border-top: var(--hairline); }
.glance__day { border-bottom: var(--hairline); }
.glance__day summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; cursor: pointer; }
.glance__day summary::-webkit-details-marker { display: none; }
.glance__day summary::after { content: ''; width: 10px; height: 10px; border-right: 1.5px solid var(--ink-2); border-bottom: 1.5px solid var(--ink-2); transform: rotate(45deg) translateY(-3px); transition: transform var(--t-hover); margin-left: 4px; }
.glance__day[open] summary::after { transform: rotate(225deg) translateY(-2px); }
.glance__name { font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-size: 22px; flex: 1; }
.glance__name em { font-family: var(--font-body); font-style: normal; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--cream); background: var(--aubergine); padding: 3px 8px; border-radius: var(--radius-pill); margin-left: 8px; vertical-align: middle; }
.glance__count { font-size: 12px; font-weight: 600; letter-spacing: .12em; color: var(--ink-2); }
.glance__count::after { content: ' classes'; text-transform: uppercase; }
.glance__day ul { list-style: none; margin: 0; padding: 0 0 14px; display: flex; flex-direction: column; gap: 2px; }
.glance__day li { display: grid; grid-template-columns: 58px minmax(0,1fr); align-items: baseline; gap: 10px; padding: 7px 0 7px 12px; border-left: 3px solid var(--c-equip); }
.glance__day li.k-mat { border-left-color: var(--c-mat); }
.glance__day li.k-kids { border-left-color: var(--c-kids); }
.glance__time { font-family: var(--font-display); font-variation-settings: 'SOFT' 100; font-size: 17px; font-variant-numeric: tabular-nums; }
.glance__cls { font-size: 14px; font-weight: 600; display: flex; flex-wrap: wrap; gap: 0 8px; }
.glance__who { font-weight: 400; color: var(--ink-2); }
.glance__legend { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: 13px; color: var(--ink-2); }
.glance__legend li { display: inline-flex; align-items: center; gap: 8px; }
.glance__legend li::before { content: ''; width: 14px; height: 3px; background: var(--c-equip); }
.glance__legend .k-mat::before { background: var(--c-mat); }
.glance__legend .k-kids::before { background: var(--c-kids); }
.glance__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; margin-top: 28px; }
@media (min-width: 720px) {
  .glance__grid { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); gap: 16px; border: 0; }
  .glance__day { border: 0; }
  .glance__day summary { cursor: default; min-height: 0; padding-bottom: 10px; margin-bottom: 8px; border-bottom: 2px solid var(--aubergine); }
  .glance__day summary::after { display: none; }
  .glance__day.is-today summary { border-bottom-color: var(--olive); }
  .glance__name em { display: none; }
  .glance__day.is-today .glance__count { color: var(--olive); }
  .glance__day.is-today .glance__count::before { content: 'Today · '; text-transform: uppercase; }
  .glance__name { font-size: 22px; }
  .glance__day li { grid-template-columns: 1fr; gap: 0; padding: 6px 0 6px 10px; }
  .glance__time { font-size: 16px; }
  .glance__cls { font-size: 13px; flex-direction: column; }
  .glance__who { font-size: 12px; }
}
@media (min-width: 1200px) { .glance__grid { gap: 28px; } .glance__day li { grid-template-columns: 50px minmax(0,1fr); gap: 8px; } }

/* testimonials */
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.trating { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-top: 8px; }
.trating__num { font-size: 56px; line-height: 1; }
.trating__stars { font-size: 20px; letter-spacing: 3px; background: linear-gradient(90deg, #B8862E 92%, var(--taupe) 92%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.trating__txt { font-size: 15px; color: var(--ink-2); }
.tfilter { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 14px; margin-bottom: 20px; scrollbar-width: none; }
.tfilter::-webkit-scrollbar { display: none; }
.tfilter button { flex: 0 0 auto; appearance: none; min-height: var(--tap); padding: 0 16px; border: 1px solid var(--taupe); border-radius: var(--radius-pill); background: var(--cream); color: var(--ink); font: 500 14px/1 var(--font-body); cursor: pointer; transition: background-color var(--t-hover), color var(--t-hover), border-color var(--t-hover); }
.tfilter button span { font-size: 12px; color: var(--ink-2); margin-left: 4px; }
.tfilter button:hover { border-color: var(--aubergine); }
.tfilter button[aria-pressed="true"] { background: var(--aubergine); border-color: var(--aubergine); color: var(--cream); }
.tfilter button[aria-pressed="true"] span { color: var(--sage-light); }
.tgrid { columns: 1; column-gap: 20px; transition: opacity .18s ease; }
.tgrid.is-switching { opacity: 0; }
@media (min-width: 720px) { .tgrid { columns: 2; } .tfilter { flex-wrap: wrap; overflow: visible; } }
@media (min-width: 1200px) { .tgrid { columns: 3; } }
.tq { break-inside: avoid; margin: 0 0 20px; padding: 26px 24px 22px; background: var(--cream); border: var(--hairline); display: flex; flex-direction: column; gap: 14px; animation: tqIn .45s var(--ease-out) both; }
@keyframes tqIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.tq__hl { margin: 0; font-size: clamp(1.5rem, 1.3rem + .8vw, 1.9rem); line-height: 1.12; letter-spacing: -0.015em; color: var(--aubergine); }
.tq__full { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ink-2); }
.tq--long:not(.is-open) .tq__full { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.tq__more { align-self: flex-start; appearance: none; border: 0; background: none; padding: 0; min-height: 32px; font: 600 14px/1 var(--font-body); color: var(--aubergine); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.tq figcaption { display: flex; flex-direction: column; gap: 2px; padding-top: 12px; border-top: var(--hairline); }
.tq__name { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--olive); }
.tq__ctx { font-size: 13px; color: var(--ink-2); }
@media (prefers-reduced-motion: reduce) { .tq { animation: none; } .tgrid { transition: none; } }

/* ==== v7 · animated logo mark, home big logo, Google rating, accreditation marquee ==== */
/* home: logo mark 1.5x at the top of the page, shrinking to normal once you scroll */
.brand__mark { transition: width .5s var(--ease-out), height .5s var(--ease-out), margin .5s var(--ease-out); }
.page-home .header:not(.is-scrolled):not(.menu-open) .brand { align-self: flex-start; margin-top: 10px; }
.page-home .header:not(.is-scrolled):not(.menu-open) .brand__mark { width: 76px; height: 76px; }
.page-home .header:not(.is-scrolled):not(.menu-open) .brand__word { font-size: 22px; white-space: nowrap; }
.page-home .header:not(.is-scrolled):not(.menu-open) .brand { position: relative; align-items: center; }
.page-home .header:not(.is-scrolled):not(.menu-open) .brand::before { content: ''; position: absolute; z-index: -1; left: -60px; top: -60px; width: calc(100% + 120px); height: calc(100% + 80px); background: radial-gradient(closest-side, rgba(251,248,243,.78), rgba(251,248,243,.45) 55%, transparent); pointer-events: none; }

@media (min-width: 960px) {
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand { margin-top: 14px; }
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand__mark { width: 120px; height: 120px; }
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand__word { font-size: 28px; margin-top: 0; }
}
.brand__word { transition: font-size .5s var(--ease-out); }

/* hero: Google rating badge */
.gbadge { display: inline-flex; align-items: center; gap: 14px; padding: 12px 20px 12px 16px; border-radius: 18px; background: rgba(251,248,243,.95); color: var(--ink); text-decoration: none; box-shadow: 0 10px 30px rgba(20,10,15,.25); transition: transform var(--t-hover), box-shadow var(--t-hover); }
.gbadge:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(20,10,15,.3); }
.gbadge__num { font-family: var(--font-display); font-size: 40px; line-height: 1; letter-spacing: -0.02em; }
.gbadge__meta { display: flex; flex-direction: column; gap: 3px; }
.gbadge__stars { font-size: 16px; letter-spacing: 2px; background: linear-gradient(90deg, #B8862E 92%, var(--taupe) 92%); -webkit-background-clip: text; background-clip: text; color: transparent; line-height: 1; }
.gbadge__txt { font-size: 14px; font-weight: 600; }
.gbadge__link { font-size: 13px; color: var(--aubergine); text-decoration: underline; text-underline-offset: 3px; }
.hero__rating { display: none !important; }
.hero__trust { display: none !important; }
.hero__side { margin-top: 22px; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
@media (min-width: 960px) {
  .hero__side { position: absolute; right: var(--gutter); bottom: 56px; margin: 0; align-items: center; }
  .gbadge { padding: 16px 26px 16px 20px; gap: 16px; }
  .gbadge__num { font-size: 52px; }
}

/* accreditation marquee */
.accred2 { padding: 40px 0 44px; background: var(--linen); overflow: hidden; }
.accred2__head { padding: 0 var(--gutter); display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 24px; margin-bottom: 22px; }
.accred2__title { font-size: clamp(1.5rem, 1.2rem + 1vw, 2.1rem); line-height: 1.1; margin: 4px 0 0; }
.accred2__note { font-size: 14px; color: var(--ink-2); max-width: 460px; margin: 0; }
.marquee { position: relative; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.marquee__track { display: flex; gap: 16px; width: max-content; }
.marquee__group { display: flex; gap: 16px; list-style: none; margin: 0; padding: 0; }
.acc { width: 300px; min-height: 164px; padding: 20px 22px; background: var(--cream); border: var(--hairline); display: flex; flex-direction: column; gap: 6px; }
.acc__top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.acc__abbr { font-family: var(--font-display); font-size: 28px; line-height: 1; letter-spacing: -0.01em; color: var(--aubergine); }
.acc__pts { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--olive); white-space: nowrap; }
.acc__name { font-size: 14px; font-weight: 600; }
.acc__desc { font-size: 13px; line-height: 1.5; color: var(--ink-2); margin: 0; }
@media (prefers-reduced-motion: no-preference) {
  .marquee__track { animation: marquee 48s linear infinite; }
  .marquee:hover .marquee__track, .marquee:focus-within .marquee__track { animation-play-state: paused; }
}
@keyframes marquee { to { transform: translateX(calc(-50% - 8px)); } }
@media (prefers-reduced-motion: reduce) {
  .marquee { -webkit-mask-image: none; mask-image: none; overflow-x: auto; }
  .marquee__group[aria-hidden="true"] { display: none; }
  .marquee__track { padding: 0 var(--gutter); }
}
@media (min-width: 960px) { .acc { width: 340px; } }

/* reviews: extra links */
.reviews__links { display: flex; flex-wrap: wrap; gap: 10px 28px; align-items: center; }

/* social icons (footer + hero) */
.social { display: flex; flex-wrap: wrap; gap: 6px; }
.social a { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; color: inherit; border: 1px solid currentColor; opacity: .85; transition: opacity var(--t-hover), background-color var(--t-hover), color var(--t-hover), transform var(--t-hover); }
.social a:hover, .social a:focus-visible { opacity: 1; transform: translateY(-2px); }
.social svg { width: 18px; height: 18px; }
.footer__social { color: var(--sage-light); }
.footer__social .social a:hover { background: var(--cream); color: var(--aubergine-deep); border-color: var(--cream); }
.hero__social { display: flex; align-items: center; gap: 12px; color: var(--cream); }
.hero__follow { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; opacity: .85; }
.hero__social .social { gap: 4px; }
.hero__social .social a { width: 40px; height: 40px; border-color: rgba(251,248,243,.6); background: rgba(46,27,40,.25); }
.hero__social .social a:hover { background: var(--cream); color: var(--aubergine); border-color: var(--cream); }
.hero__social .social svg { width: 16px; height: 16px; }
@media (max-width: 959px) { .hero__social { flex-direction: column; align-items: flex-start; gap: 8px; } }

/* About ▸ Reviews submenu */
.nav__caret { margin-left: 6px; }
@media (max-width: 959px) {
  .nav__caret { display: none; }
  .nav.is-open .nav__group { display: flex; flex-direction: column; }
  .nav.is-open .nav__group > .nav__parent { display: none; }
  .nav.is-open .nav__sub { display: flex; flex-direction: column; }
}
@media (min-width: 960px) {
  .nav__group { position: relative; display: flex; align-items: center; }
  .nav__sub { position: absolute; top: calc(100% - 4px); left: -18px; min-width: 190px; padding: 8px; display: flex; flex-direction: column; background: var(--cream); border: var(--hairline); border-radius: 12px; box-shadow: 0 16px 36px rgba(46,39,36,.14); opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .2s ease, transform .2s ease, visibility .2s; }
  .nav__group:hover .nav__sub, .nav__group:focus-within .nav__sub { opacity: 1; visibility: visible; transform: none; }
  .nav .nav__sub a { color: var(--ink); padding: 0 12px; min-height: 40px; border-radius: 8px; }
  .nav .nav__sub a::after { display: none; }
  .nav .nav__sub a:hover, .nav .nav__sub a[aria-current="page"] { background: var(--sand); color: var(--aubergine); }
}

/* ==== v9 · footer mark, embedded map, studio video ==== */
.footer__mark picture { display: contents; }

/* Google map */
.gmap { position: relative; height: 320px; border: var(--hairline); background: #DCD6C6; overflow: hidden; margin-top: 8px; }
.gmap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: saturate(.75) sepia(.08); }
.gmap__open { position: absolute; left: 14px; bottom: 14px; color: var(--ink); text-decoration: none; box-shadow: 0 6px 18px rgba(46,39,36,.18); }
.gmap__open:hover { background: var(--aubergine); color: var(--cream); }
@media (min-width: 960px) { .gmap { height: 480px; margin-top: 0; } .gmap__open { left: 20px; bottom: 20px; } }

/* inside the studio: portrait video cards, click to play */
.studio-video { display: grid; gap: 32px; padding-left: var(--gutter); padding-right: var(--gutter); }
.studio-video__text { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; max-width: 460px; }
.studio-video__reels { display: grid; grid-template-columns: 1.35fr 1fr; gap: 14px; align-items: end; }
.reel { position: relative; margin: 0; aspect-ratio: 9 / 16; background: var(--aubergine-deep); overflow: hidden; border-radius: 6px; }
.reel--side { transform: translateY(-28px); }
.reel__play { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: pointer; color: var(--cream); text-align: left; }
.reel__play picture, .reel__play img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.reel__play::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(46,27,40,.05) 40%, rgba(46,27,40,.7)); transition: background-color var(--t-hover); }
.reel__btn { position: absolute; z-index: 1; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(251,248,243,.92); color: var(--aubergine); transition: transform var(--t-hover); padding-left: 3px; }
.reel--side .reel__btn { width: 52px; height: 52px; margin: -26px 0 0 -26px; }
.reel__play:hover .reel__btn, .reel__play:focus-visible .reel__btn { transform: scale(1.08); }
.reel__meta { position: absolute; z-index: 1; left: 14px; right: 14px; bottom: 14px; display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 14px; }
.reel__meta strong { font-weight: 600; }
.reel__meta span { font-size: 12px; opacity: .85; }
.reel iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #000; }
@media (min-width: 960px) {
  .studio-video { grid-template-columns: minmax(0, 460px) minmax(0, 520px); gap: 72px; align-items: center; justify-content: center; }
  .studio-video__reels { gap: 20px; }
  .reel__meta { font-size: 15px; left: 18px; right: 18px; bottom: 18px; }
}

/* =====================================================================
   v10 · Journal (blog index, category pages, articles, home strip)
   ===================================================================== */
.post__media { display: block; width: 100%; aspect-ratio: 3 / 2; height: auto; object-fit: cover; margin-bottom: 8px; background: var(--linen); }
@media (max-width: 959px) { .post__media { display: none; } }

.blog-hero h1 em { font-style: italic; }
.jchips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 32px; }
.jchip { display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 9px 16px; border: 1px solid var(--sage); border-radius: 999px;
  font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--olive); text-decoration: none; transition: background .2s, color .2s; }
.jchip span { font-weight: 500; opacity: .7; }
.jchip:hover { border-color: var(--olive); }
.jchip[aria-current] { background: var(--olive); border-color: var(--olive); color: var(--cream); }

.jgrid { display: grid; gap: 40px 24px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .jgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .jgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px 32px; } }
.jcard a { display: flex; flex-direction: column; gap: 10px; height: 100%; color: var(--ink); text-decoration: none; }
.jcard__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--taupe); }
.jcard__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease-ui, ease); }
.jcard__media--blank { background: linear-gradient(135deg, var(--linen), var(--taupe)); }
.jcard a:hover .jcard__media img { transform: scale(1.035); }
.jcard__meta { margin-top: 6px; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--olive); }
.jcard__title { font-size: var(--fs-title); line-height: 1.18; font-weight: 400; text-wrap: balance; }
.jcard a:hover .jcard__title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.jcard__dek { font-size: 15px; line-height: 1.5; color: var(--ink-2); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.jmore { display: flex; justify-content: center; margin-top: 48px; }

/* article */
.article { padding: calc(80px + 40px) var(--gutter) var(--section); background: var(--sand); }
.article__head { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 18px; }
.article__cat { text-decoration: none; }
.article__title { font-size: clamp(2.375rem, 1.7rem + 2.8vw, 4.25rem); line-height: 1.04; letter-spacing: var(--ls-display); text-wrap: balance; }
.article__lead { font-size: clamp(1.0625rem, 1rem + .35vw, 1.3125rem); line-height: 1.55; color: var(--ink-2); }
.article__meta { display: flex; gap: 10px; font-size: 13px; font-weight: 500; color: var(--olive); }
.article__cover { display: block; max-width: 1100px; margin: 40px auto 0; }
.article__cover img { width: 100%; height: auto; max-height: 640px; object-fit: cover; }
@media (min-width: 960px) { .article { padding-top: calc(104px + 64px); } .article__cover { margin-top: 56px; } }

.prose { max-width: 700px; margin: 48px auto 0; font-size: clamp(1.0625rem, 1rem + .2vw, 1.1875rem); line-height: 1.7; color: var(--ink); overflow-wrap: anywhere; }
.prose > * + * { margin-top: 1.1em; }
.prose h2, .prose h3, .prose h4 { font-family: var(--font-display); font-variation-settings: var(--display-settings); font-weight: 400; line-height: 1.15; letter-spacing: -.01em; margin-top: 1.9em; text-wrap: balance; }
.prose h2 { font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.375rem); }
.prose h3 { font-size: clamp(1.375rem, 1.2rem + .6vw, 1.75rem); }
.prose h4 { font-size: 1.25rem; }
.prose h2 + *, .prose h3 + *, .prose h4 + * { margin-top: .6em; }
.prose a { color: var(--aubergine); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.prose a:hover { color: var(--olive); }
.prose strong { font-weight: 600; }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose ul { list-style: disc; } .prose ol { list-style: decimal; }
.prose li + li { margin-top: .4em; }
.prose li::marker { color: var(--olive); }
.prose blockquote { border-left: 2px solid var(--olive); padding: 4px 0 4px 22px; font-family: var(--font-display); font-size: 1.3em; line-height: 1.4; color: var(--aubergine); }
.prose img, .prose video, .prose picture { display: block; max-width: 100%; height: auto; }
.prose figure, .prose .wp-block-image { margin: 2em 0; }
.prose figcaption, .prose .wp-element-caption { margin-top: 8px; font-size: 14px; color: var(--ink-2); }
.prose .aligncenter { margin-left: auto; margin-right: auto; }
.prose iframe { display: block; width: 100%; max-width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
.prose table { width: 100%; border-collapse: collapse; font-size: .92em; display: block; overflow-x: auto; }
.prose th, .prose td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--taupe); vertical-align: top; }
.prose th { font-weight: 600; }
.prose hr { border: 0; border-top: var(--rule); margin: 2.5em 0; }
.prose .wp-block-buttons, .prose .wp-block-button { margin: 1.5em 0; }
.prose .wp-block-button__link { display: inline-flex; padding: 14px 26px; border-radius: var(--radius-pill); background: var(--aubergine); color: var(--cream); text-decoration: none; }
.prose .wp-block-columns { display: grid; gap: 24px; }
@media (min-width: 720px) { .prose .wp-block-columns { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); } }

.article__cta { max-width: 700px; margin: 64px auto 0; padding: 36px 32px; background: var(--cream); border-top: 2px solid var(--olive); display: flex; flex-direction: column; gap: 14px; }
.article__cta .h2 { font-size: clamp(2rem, 1.6rem + 1.5vw, 2.75rem); }
.article__cta .cta__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
.related .jgrid--3 .jcard__dek { -webkit-line-clamp: 2; }
.post__media--blank { background: linear-gradient(135deg, var(--linen), var(--taupe)); }
.article__cover--narrow { width: 100%; }
.article__cover--narrow img { width: 100%; height: auto; max-height: none; object-fit: contain; }
/* v11 · header with Journal as its own item: never wrap labels, tighten below 1280px */
@media (min-width: 960px) {
  .nav a, .brand__word { white-space: nowrap; }
}
@media (min-width: 960px) and (max-width: 1279px) {
  .nav { gap: 22px; }
  .nav a { font-size: 14px; }
  .nav .nav__cta { padding: 0 16px; margin-left: 0; }
  .brand__word { font-size: 20px; }
}
@media (min-width: 960px) and (max-width: 1099px) {
  .nav { gap: 16px; }
  .nav .nav__caret { display: none; }
  .brand__mark { width: 64px; height: 64px; }
}
@media (min-width: 960px) and (max-width: 1199px) {
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand__word { font-size: 22px; }
}
@media (min-width: 960px) and (max-width: 1099px) {
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand__mark { width: 92px; height: 92px; }
  .page-home .header:not(.is-scrolled):not(.menu-open) .brand__word { font-size: 20px; }
}
@media (min-width: 960px) and (max-width: 1039px) {
  .nav { gap: 13px; }
  .nav a { font-size: 13.5px; }
  .nav .nav__cta { padding: 0 14px; }
  .brand { gap: 8px; }
}
/* v12 · online tuition note beside the courses intro; legible footer legal links */
.section__head > .courses__intro { display: grid; gap: 14px; width: 100%; }
.courses__intro p { max-width: 60ch; }
.courses__online { font-size: 15px; line-height: 1.55; color: var(--ink-2); padding-left: 16px; border-left: 2px solid var(--sage); }
.courses__online strong { color: var(--ink); font-weight: 600; }
@media (min-width: 960px) { .section__head > .courses__intro { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; } .courses__intro p { max-width: none; } }
.footer__legal a { color: var(--cream); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(251,248,243,.5); }
.footer__legal a:hover { text-decoration-color: var(--cream); }
/* v13 · payment plans on course cards */
.course__plans { padding-top: 14px; border-top: var(--rule); }
.course__plans table { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.course__plans caption { text-align: left; font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); padding-bottom: 8px; }
.course__plans caption span { font-weight: 500; letter-spacing: .04em; text-transform: none; color: var(--ink-2); opacity: .8; margin-left: 4px; font-size: 12px; }
.course__plans thead th { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-2); text-align: right; padding: 0 0 6px; }
.course__plans tbody th { text-align: left; font-weight: 500; color: var(--ink-2); padding: 6px 0; }
.course__plans tbody td { text-align: right; padding: 6px 0; color: var(--ink); }
.course__plans tbody tr + tr > * { border-top: 1px solid rgba(0,0,0,.06); }
.course__plans thead td { width: 40%; }
.wk__who--plain::before { content: none; }
