/* ============================================================
   KST Pivot CSS — additions made during Phase 4.3
   - Wellbeing Tips badge (header + footer)
   - Footer ecosystem strip
   - "From our practice" section on home
   Kept additive — does not override or fight existing theme.
   ============================================================ */

/* ---------- Wellbeing Tips badge ---------- */
.wt-badge {
  --wt-cream:    #EDE6DA;
  --wt-cream-hi: #F4EFE5;
  --wt-ink:      #3A2F22;
  --wt-clay:     #C9A47E;
  --wt-rose:     #C99B97;
  --wt-sage:     #9FB089;

  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.4375rem 0.875rem 0.4375rem 0.625rem;
  background: var(--wt-cream);
  color: var(--wt-ink);
  border: 1px solid rgba(58, 47, 34, 0.08);
  border-radius: 999px;
  text-decoration: none;
  font-family: 'Lora', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: 0.875rem;
  letter-spacing: 0.005em;
  line-height: 1;
  white-space: nowrap;
  transition: background .35s ease, transform .35s ease, box-shadow .35s ease, border-color .35s ease;
  will-change: transform;
}
.wt-badge:hover,
.wt-badge:focus-visible {
  background: var(--wt-cream-hi);
  border-color: rgba(58, 47, 34, 0.14);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(58, 47, 34, 0.08);
  text-decoration: none;
  color: var(--wt-ink);
}
.wt-badge__dots {
  display: inline-flex;
  align-items: center;
  width: 28px;
  position: relative;
}
.wt-badge__dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  box-shadow: 0 0 0 1.5px var(--wt-cream);
  margin-left: -5px;
  transition: transform .55s ease, margin .55s ease;
}
.wt-badge__dot:first-child { margin-left: 0; }
.wt-badge__dot--clay { background: var(--wt-clay); }
.wt-badge__dot--rose { background: var(--wt-rose); }
.wt-badge__dot--sage { background: var(--wt-sage); }
.wt-badge:hover .wt-badge__dot--clay,
.wt-badge:focus-visible .wt-badge__dot--clay  { transform: translateX(-2px); }
.wt-badge:hover .wt-badge__dot--rose,
.wt-badge:focus-visible .wt-badge__dot--rose  { transform: scale(1.06); }
.wt-badge:hover .wt-badge__dot--sage,
.wt-badge:focus-visible .wt-badge__dot--sage  { transform: translateX(2px); }
.wt-badge__label {
  font-family: 'Lora', Georgia, serif;
  font-style: italic;
  font-size: 0.9375rem;
  line-height: 1;
  letter-spacing: 0.005em;
}
@media (prefers-reduced-motion: reduce) {
  .wt-badge,
  .wt-badge__dot { transition: none; }
  .wt-badge:hover,
  .wt-badge:focus-visible { transform: none; }
  .wt-badge:hover .wt-badge__dot--clay,
  .wt-badge:hover .wt-badge__dot--rose,
  .wt-badge:hover .wt-badge__dot--sage { transform: none; }
}

/* Header context — give the nav badge a smaller footprint and align it
   visually next to the Contact CTA. The desktop nav is a flexbox row. */
.kst-nav .wt-badge {
  margin-left: 1rem;
  font-size: 0.8125rem;
}
.kst-nav .wt-badge__label { font-size: 0.875rem; }
@media (max-width: 991px) {
  .kst-nav .wt-badge { display: none; }
  .kst-nav__mobile .wt-badge { display: inline-flex; margin: 1rem auto 0; }
}

/* v73m — defensive guard against WordPress emoji-replacement.
   wp-emoji-release.js silently swaps certain Unicode characters
   (↗ ↘ ↖ ↙ heart suits etc.) for SVG <img> elements from s.w.org
   at native 150×150 rendered at 1em — but on pages where the wp-smiley
   class isn't applied, they balloon to viewport-size placeholders.
   Force tiny inline emoji image sizing for any future occurrence. */
img.wp-smiley,
img.emoji,
img[src*="s.w.org/images/core/emoji"] {
  width: 1em !important;
  height: 1em !important;
  max-width: 1em !important;
  max-height: 1em !important;
  display: inline !important;
  vertical-align: -0.1em !important;
  margin: 0 0.07em !important;
  padding: 0 !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* v73l — higher-specificity kill of the legacy "ALSO BY KST" pseudo-
   eyebrow AND the flex layout from kst-header-elevation.css. The flex
   layout was making the new HTML eyebrow flow LEFT as a flex item
   instead of stacking above the brand list. Force block layout +
   neutralise the pseudo-element with body-scoped specificity. */
body .kst-footer__ecosystem,
body.kst-pivot .kst-footer__ecosystem {
  display: block !important;
  text-align: center !important;
}
body .kst-footer__ecosystem::before,
body .kst-footer__ecosystem::after,
body.kst-pivot .kst-footer__ecosystem::before,
body.kst-pivot .kst-footer__ecosystem::after,
.kst-footer .kst-footer__ecosystem::before,
.kst-footer .kst-footer__ecosystem::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
}

/* ─── v73j — KST footer "Also by Kensington Square Therapy".
   Redesigned ecosystem strip: all eight sister brands listed as
   equal-weight gold-deep links, restrained editorial publication
   rhythm with small dot separators. NYRB / Granta back-of-book feel. */
.kst-footer__ecosystem {
  display: block;
  text-align: center;
  padding: 0.5rem 1.5rem 1.25rem;
  margin: 0 auto 1.25rem;
}
.kst-footer__ecosystem-eyebrow {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: #B8932A;
  font-weight: 700;
  margin: 0 0 1.5rem;
  opacity: 0.85;
}
.kst-footer__ecosystem-list {
  list-style: none;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
  gap: 0;
  /* v136 — widen max-width and tighten per-item padding so all 8
     sister sites fit on a single line at desktop 1280. Was 980px;
     at the previous 1.1rem item padding + 1.0625rem font-size, the
     eighth item (Wise Woofs) wrapped to its own line.              */
  max-width: 1180px;
  margin: 0 auto;
}
.kst-footer__ecosystem-list li {
  display: inline-flex;
  align-items: baseline;
  position: relative;
  /* v136 — was 0.3rem 1.1rem; trimmed horizontal padding to fit 8
     items + 7 mid-dots within the 1180px container at desktop.    */
  padding: 0.3rem 0.7rem;
}
.kst-footer__ecosystem-list li + li::before {
  content: '·';
  position: absolute;
  /* v136 — was left:-0.2em, top:0.3rem; nudge to sit cleanly between
     items at the new tighter padding.                              */
  left: -0.15em;
  top: 0.3rem;
  color: rgba(199,163,60,0.55);
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
}
.kst-footer__ecosystem-item {
  font-family: 'Cormorant Garamond', 'Iowan Old Style', Georgia, serif;
  /* v136 — was 1.0625rem (17px); 0.9375rem (15px) is still NYRB-back-
     of-book legible serif, frees ~16px across all 8 items, gets 'Wise
     Woofs' onto the same line as the rest at desktop 1280.          */
  font-size: 0.9375rem;
  font-weight: 500;
  letter-spacing: 0;
  color: #B8932A;
  text-decoration: none;
  transition: color 0.2s ease;
  line-height: 1.4;
  white-space: nowrap;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 1px;
  background-repeat: no-repeat;
  background-position: 0 92%;
  transition: background-size 0.3s ease, color 0.2s ease;
}
.kst-footer__ecosystem-item:hover {
  color: #C7A33C;
  background-size: 100% 1px;
}
.kst-footer__ecosystem-item:focus-visible {
  outline: 2px solid #C7A33C;
  outline-offset: 3px;
  border-radius: 2px;
}
/* The Parent Book wordmark — italic Book. specifically, matching
   the in-nav treatment for brand consistency. */
.kst-footer__ecosystem-item--tpb .kst-footer__ecosystem-name em {
  font-style: italic;
  font-weight: 500;
  color: inherit;
}
.kst-footer__ecosystem-name { display: inline; }

/* Kill the old auto-injected colophon — the new HTML structure
   replaces it. The JS still runs for legacy buffers but the rendered
   element is hidden. */
.kst-footer__family-line { display: none !important; }

@media (max-width: 760px) {
  /* v136 — keep the row but let it wrap freely; the desktop one-line
     spec only holds at >=1180px. Padding sized to reflow naturally. */
  .kst-footer__ecosystem-list { flex-direction: row; gap: 0.25rem 0; }
  .kst-footer__ecosystem-list li { padding: 0.4rem 0.625rem; }
  .kst-footer__ecosystem-item { font-size: 0.9375rem; }
}
@media (max-width: 480px) {
  .kst-footer__ecosystem-list { flex-direction: column; gap: 0.25rem; align-items: center; }
  .kst-footer__ecosystem-list li + li::before { display: none; }
  .kst-footer__ecosystem-list li { padding: 0.3rem 0; }
}

/* ─── v73i — gold scroll progress bar (matches theparentbook.com)
   Fixed 3px bar across top of viewport, fills as the user scrolls.
   Pointer-events:none so it never intercepts clicks. JS lives in
   kst-pivot.js and self-injects the DOM on every page. */
.kst-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  width: 100%;
  background: rgba(199, 163, 60, 0.04);
  pointer-events: none;
  z-index: 9999;
}
.kst-progress > span {
  display: block;
  height: 100%;
  width: 100%;
  background: #C7A33C;
  transform-origin: left center;
  transform: scaleX(0);
  transition: transform 0.05s linear;
  will-change: transform;
}
@media print {
  .kst-progress { display: none !important; }
}

/* v73i — softened "school partners" credential line.
   Replaces the marquee of named schools with a single restrained
   credential statement. Same visual weight, no overclaim. */
.kst-schools-credential {
  padding: 3.5rem 2rem;
  text-align: center;
  background: transparent;
}
.kst-schools-credential__line {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.0625rem, 2vw, 1.25rem);
  line-height: 1.6;
  color: var(--kst-navy, #1F2D4B);
  margin: 0 auto;
  max-width: 640px;
  letter-spacing: 0.005em;
}
.kst-schools-credential__line em {
  font-style: italic;
  color: var(--kst-navy, #1F2D4B);
}
.kst-schools-credential__rule {
  display: block;
  width: 48px;
  height: 1px;
  background: #C7A33C;
  margin: 1.5rem auto 0;
  opacity: 0.55;
}

/* ─── v73c — canonical nav display rules ──────────────────────
   Previously these lived ONLY in legacy pages' inline <style>.
   The new v73 topic pages (sleep, what-to-expect, 11-plus-wellbeing,
   transitions, perfectionism, friendships) didn't have them, so on
   those pages both .kst-nav__links and .kst-nav__mobile rendered
   simultaneously — Sam saw two stacked nav bars on mobile + items
   running together with no separators. Hoist into shared CSS so
   every page that loads kst-pivot.css gets the rules.            */

/* v134 — canonical .kst-nav parent layout. Hoisted from the inline
   <style> blocks on index/therapy/parents/etc., where it lived as
   `display:flex; justify-content:space-between; align-items:center`.
   The v73 topic pages (what-to-expect, sleep, transitions,
   friendships, perfectionism, 11-plus-wellbeing) never had that
   inline rule, so their nav was rendering as the default block-flow
   container — logo and links left-aligned, stacked, no spacing rhythm.
   Hoisting it here gives every page that loads kst-pivot.css the
   right-aligned cluster layout that defines the canonical menu.
   Height inherits from kst-header-elevation.css which sets 110px via
   `.kst-nav { height: 110px !important }` per-page rules; we don't
   restate it here so as not to fight those.                       */
.kst-nav {
  position: sticky;
  top: 0;
  z-index: 1000;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 2.5rem;
}
.kst-nav__links {
  display: flex; align-items: center; gap: 2.5rem;
}

/* ─── v144 — emergency live-site overflow + nav-fit pass ──────
   Sam reported on live kst.ltd that the Contact CTA was being
   clipped off the right edge of the nav at his viewport (1280-ish
   common laptop). Audit at the 1024-1440 range: nav cluster total
   width hits the right edge with the 2.5rem default gap + 10.5px
   uppercase labels + the wider WT label after v143.

   Three layered fixes, each least-invasive at its breakpoint:

   1. Global safety net  body { overflow-x: clip }. Nothing visible
      can ever push past the viewport horizontally — decorative shapes,
      nav clusters, hero illustrations. clip beats hidden because it
      doesn't create a new scroll container (preserves position:sticky
      on the nav).

   2. Nav gap budget tightened at <=1440. 2.5rem default is generous
      for full desktop; tighten to 1.75rem at <=1440 and 1.25rem at
      <=1280 so the 9-item cluster fits comfortably.

   3. Nav link tracking trimmed at <=1280. 0.22em letter-spacing is
      premium but each link costs ~3-4px from it; 0.18em reads
      identically and saves the budget.                              */
body { overflow-x: clip; }
@media (max-width: 1440px) {
  .kst-nav__links,
  .kst-nav-s__links { gap: 1.75rem !important; }
}
@media (max-width: 1280px) and (min-width: 1201px) {
  .kst-nav__links,
  .kst-nav-s__links { gap: 1.25rem !important; }
  .kst-nav .kst-nav__link,
  .kst-nav-s .kst-nav-s__link {
    font-size: 10px !important;
    letter-spacing: 0.18em !important;
  }
  .kst-nav .kst-nav__cta,
  .kst-nav-s .kst-nav-s__cta {
    font-size: 9.5px !important;
    letter-spacing: 0.18em !important;
    padding: 0.7rem 1.5rem !important;
  }
}

/* ─── v147 — canonical nav typography bit-for-bit across pages ──
   Sam reported /what-to-expect rendering different from canonical
   pages, and pages "jumping subtly" between each other. Root cause:
   .kst-nav__link base typography (font-size, color, letter-spacing,
   weight) lived ONLY in the inline <style> block on legacy / policy
   pages (each carrying ~17-19 nav-related inline rules). Topic pages
   (what-to-expect, sleep, transitions, friendships, perfectionism,
   11-plus-wellbeing, voices, press) had 0 nav-related inline rules —
   so they rendered from whatever .kst-header nav a in kst-header-
   elevation.css provided, which sets only font-family/letter/case
   but NOT the canonical 10.5px size or gold colour.

   Result: legacy pages render canonical nav (10.5px gold uppercase
   Raleway), topic pages render fallback (smaller font from elevation
   defaults, possibly different colour). That's the subtle jump.

   Fix: write the canonical base in shared CSS with body-scoped
   specificity so it beats inline rules (0,1,1 vs 0,1,0) and applies
   uniformly to every page. Includes the .kst-nav-s variant on the
   schools page so it stays in line too.                            */
body .kst-nav__link,
body .kst-nav-s__link {
  color: var(--kst-gold, #C7A33C);
  text-transform: uppercase;
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 10.5px;
  letter-spacing: 0.22em;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--kst-transition, 250ms cubic-bezier(0.2, 0.7, 0.2, 1));
}
body .kst-nav__link:hover,
body .kst-nav-s__link:hover { color: #ffffff; }
body .kst-nav__link:focus-visible,
body .kst-nav-s__link:focus-visible {
  outline: 2px solid var(--kst-gold, #C7A33C);
  outline-offset: 4px;
  border-radius: 2px;
}

/* Canonical Contact CTA — same body-scoped specificity */
body .kst-nav__cta,
body .kst-nav-s__cta {
  background: var(--kst-gold, #C7A33C);
  color: #ffffff;
  text-transform: uppercase;
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 10px;
  letter-spacing: 0.22em;
  font-weight: 700;
  padding: 0.75rem 2rem;
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--kst-transition, 250ms cubic-bezier(0.2, 0.7, 0.2, 1)),
              color var(--kst-transition, 250ms cubic-bezier(0.2, 0.7, 0.2, 1));
}
body .kst-nav__cta:hover,
body .kst-nav-s__cta:hover {
  background: #ffffff;
  color: var(--kst-navy, #1F2D4B);
}
body .kst-nav__cta:focus-visible,
body .kst-nav-s__cta:focus-visible {
  outline: 2px solid #ffffff;
  outline-offset: 3px;
}

/* Canonical .kst-nav-s parent layout — paralleling .kst-nav (v134) */
.kst-nav-s {
  position: sticky;
  top: 0;
  z-index: 1000;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 2.5rem;
}
.kst-nav-s__links {
  display: flex; align-items: center; gap: 2.5rem;
}

/* ─── v139 — canonical hero heading typography ────────────────
   One source of truth for every hero-class variant on the site.
   Before: 7 different inline rules across page types, each with
   its own font-weight + style + size + line-height. Audit
   Finding #1 (Cormorant weight drift), #2 (hero class
   proliferation), and #6 (hero font-size variance) all merge here.

   Body-scoped specificity (0,1,1) so the shared rule beats per-
   page inline rules (0,1,0). No !important — keeps cascade clean.

   Canonical voice — NYRB / Granta / LRB / Paris Review display
   register: Cormorant 300 upright with selective <em> for italic
   emphasis. The italic <em> sits in deliberate counterpoint to
   the upright; never italic by default.                          */
body .kst-hero__heading,
body .kst-hero-s__heading,
body .kst-page-hero__heading,
body .kst-contact-hero__heading,
body .kst-voices__heading,
body .kst-wte__heading,
body .kst-topic__heading,
body .kst-hero h1,
body .kst-hero__title {
  font-family: 'Cormorant Garamond', 'Garamond', 'Times New Roman', serif;
  font-weight: 300;
  font-style: normal;
  letter-spacing: 0.005em;
  line-height: 1.08;
  font-size: clamp(2.5rem, 6vw, 5rem);
}
/* Italic emphasis — applied via <em> on the phrase that takes
   the editorial italic. Weight 300 holds the Light register;
   color stays inherited so per-page colour treatment (gold on
   navy heroes, lavender on TPB, etc.) wins via lower-specificity
   per-page rules.                                                 */
body .kst-hero__heading em,
body .kst-hero-s__heading em,
body .kst-page-hero__heading em,
body .kst-contact-hero__heading em,
body .kst-voices__heading em,
body .kst-wte__heading em,
body .kst-topic__heading em,
body .kst-hero h1 em,
body .kst-hero__title em {
  font-style: italic;
  font-weight: 300;
}
.kst-nav__hamburger {
  display: none; background: none; border: none; cursor: pointer;
  padding: 0.5rem; color: var(--kst-gold, #C7A33C);
}
.kst-nav__hamburger svg { width: 28px; height: 28px; display: block; }
.kst-nav__mobile {
  display: none; flex-direction: column; align-items: center; gap: 1.5rem;
  position: absolute; top: 88px; left: 0; width: 100%;
  background: var(--kst-navy, #1F2D4B); padding: 2.5rem 2rem;
  border-bottom: 1px solid rgba(197,162,60,0.3);
  z-index: 1100;
}
.kst-nav__mobile.is-open { display: flex; }
.kst-nav__mobile .kst-nav__link { font-size: 11px; }
.kst-nav__mobile .kst-nav__cta { margin-top: 0.5rem; }

/* Mobile-only standalone shortcuts (the small Parent Book wordmark
   + WT dots that sit between the primary nav and the hamburger).
   Hidden on desktop, shown on mobile only. */
.kst-mobile-pb,
.kst-mobile-wt { display: none; }

@media (max-width: 1200px) {
  .kst-nav__links { display: none; }
  .kst-nav__hamburger { display: block; }
  .kst-nav > .kst-nav__cta { display: none; }
  .kst-mobile-pb { display: inline-flex; align-items: center; gap: 0.25rem; }
  .kst-mobile-wt { display: inline-flex; align-items: center; gap: 0.25rem; }
}

/* ---------- Footer ecosystem strip ---------- */
.kst-footer__ecosystem {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  padding: 1rem 1.5rem;
  margin: 0 auto 1.25rem;
}
.kst-footer__ecosystem-link {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 300;
  font-style: italic;
  font-size: 1.0625rem;
  letter-spacing: 0.01em;
  color: var(--kst-text-muted, #6b6b6b);
  text-decoration: none;
  transition: color .25s ease;
}
.kst-footer__ecosystem-link:hover { color: var(--kst-navy, #1F2D4B); }

/* ---------- "From our practice" section on home ---------- */
.kst-practice {
  background: #fff;
  padding: 5rem 1.5rem;
}
.kst-practice__inner {
  max-width: 1200px;
  margin: 0 auto;
}
.kst-practice__header {
  text-align: center;
  margin-bottom: 3rem;
}
.kst-practice__eyebrow {
  display: inline-block;
  font-family: 'Raleway', sans-serif;
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--kst-gold, #C7A33C);
  margin-bottom: 1rem;
}
.kst-practice__title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 300;
  font-size: clamp(1.9rem, 3vw, 2.6rem);
  line-height: 1.15;
  color: var(--kst-navy, #1F2D4B);
  margin: 0;
}
.kst-practice__title em { font-style: italic; color: var(--kst-gold, #C7A33C); }
.kst-practice__grid {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .kst-practice__grid { grid-template-columns: 1fr 1fr; }
}
/* v61: cards lifted from plain to feature — gold-mute hairline border,
   25-40% more internal padding, soft hover with translate-Y + shadow,
   border deepens to gold-deep on hover. */
.kst-practice__door {
  display: block;
  padding: 3rem 2.75rem;          /* was 2.25rem — ~33% bump */
  background: #F8F8F5;
  border: 1px solid rgba(199, 163, 60, 0.22);   /* gold-mute hairline */
  border-radius: 4px;
  text-decoration: none;
  color: var(--kst-navy, #1F2D4B);
  transition:
    transform 200ms cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 200ms cubic-bezier(0.2, 0.7, 0.2, 1),
    border-color 200ms cubic-bezier(0.2, 0.7, 0.2, 1);
}
.kst-practice__door:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 32px rgba(31, 45, 75, 0.10);
  border-color: rgba(199, 163, 60, 0.65);      /* deepen to gold-deep */
}
.kst-practice__door--wt {
  background: #EDE6DA;
  border-color: rgba(138, 111, 58, 0.22);      /* warm-brown mute */
}
.kst-practice__door--wt:hover {
  border-color: rgba(138, 111, 58, 0.65);
  box-shadow: 0 14px 32px rgba(58, 47, 34, 0.10);
}
/* Fleuron above each title — small gold-deep ornament, signals
   "this is a feature" not just a tile. */
.kst-practice__door-fleuron {
  display: block;
  font-family: 'Cormorant Garamond', 'Cormorant', Georgia, serif;
  font-style: italic;
  font-size: 0.95rem;
  line-height: 1;
  color: #B8932A;                  /* gold-deep */
  opacity: 0.7;
  margin: 0 0 0.5rem 0;
  letter-spacing: 0;
}
.kst-practice__door--wt .kst-practice__door-fleuron { color: #7a5f30; }
/* Eyebrow above each card title — small uppercase Raleway, gold, signals
   what the card IS (Publication / Sister brand) and gives both cards
   parallel structure so they read as sibling treatments. */
.kst-practice__door-eyebrow {
  display: block;
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: #C7A33C;
  margin: 0 0 0.5rem 0;
  opacity: 0.92;
}
.kst-practice__door--wt .kst-practice__door-eyebrow { color: #8a6f3a; }

/* Card titles — italic Cormorant gold, matched weight + size across both
   cards. The <em> inside renders italic; the wrapper sets all the type
   properties so both cards are visually identical sibling treatments. */
.kst-practice__door-title {
  font-family: 'Cormorant Garamond', Georgia, serif !important;
  font-weight: 400 !important;
  font-style: italic !important;
  font-size: 1.75rem !important;
  line-height: 1.15 !important;
  letter-spacing: 0 !important;
  color: #C7A33C !important;
  margin: 0 0 0.85rem 0 !important;
}
.kst-practice__door-title em {
  font-style: italic !important;
  font-weight: 400 !important;
}
.kst-practice__door--wt .kst-practice__door-title { color: #8a6f3a !important; }
@media (max-width: 640px) {
  .kst-practice__door-title { font-size: 1.45rem !important; }
}
.kst-practice__door-sub {
  font-family: 'Raleway', sans-serif;
  font-size: clamp(0.95rem, 1.1vw, 1.05rem);   /* fluid bump */
  line-height: 1.7;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0 0 1.5rem 0;
}
/* CTA in italic Cormorant gold, with a gold arrow that slides on hover.
   The arrow is a separate inline element so we can transform it. */
.kst-practice__door-cta {
  font-family: 'Cormorant Garamond', 'Cormorant', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.05rem;
  letter-spacing: 0;
  text-transform: none;
  color: var(--kst-gold, #C7A33C);
  display: inline-flex;
  align-items: baseline;
  gap: 0.4em;
  transition: color 200ms ease, gap 200ms cubic-bezier(0.2, 0.7, 0.2, 1);
}
.kst-practice__door-cta-arrow {
  display: inline-block;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  color: #C7A33C;
  transition: transform 200ms cubic-bezier(0.2, 0.7, 0.2, 1);
}
.kst-practice__door:hover .kst-practice__door-cta { color: #B8932A; gap: 0.55em; }
.kst-practice__door:hover .kst-practice__door-cta-arrow { transform: translateX(3px); }
.kst-practice__door--wt .kst-practice__door-cta,
.kst-practice__door--wt .kst-practice__door-cta-arrow { color: #7a5f30; }
.kst-practice__door--wt:hover .kst-practice__door-cta { color: #5b4623; }
.kst-practice__door--wt:hover .kst-practice__door-cta-arrow { color: #5b4623; }

/* ---------- New enquiry form (Phase 4.3) ---------- */
.kst-form {
  display: grid;
  gap: 1.25rem;
}
.kst-form__field { display: grid; gap: 0.5rem; }
.kst-form__label {
  font-family: 'Raleway', sans-serif;
  font-weight: 600;
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  color: inherit;
}
.kst-form__input {
  width: 100%;
  padding: 0.85rem 1rem;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.2);
  color: inherit;
  font-family: 'Raleway', sans-serif;
  font-size: 0.95rem;
  border-radius: 3px;
  transition: border-color .2s ease, background .2s ease;
}
.kst-form__input::placeholder { color: rgba(255,255,255,0.5); }
.kst-form__input:focus {
  outline: none;
  border-color: var(--kst-gold, #C7A33C);
  background: rgba(255,255,255,0.1);
}
.kst-form__textarea {
  min-height: 6.5rem;
  resize: vertical;
}
/* When the form sits on a white background, invert colours */
.kst-section--white .kst-form__input,
.kst-section--cream .kst-form__input,
.kst-section--white .kst-form__textarea,
.kst-section--cream .kst-form__textarea {
  background: #fff;
  border-color: rgba(31,45,75,0.18);
  color: var(--kst-navy, #1F2D4B);
}
.kst-form__consent {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.75rem;
  align-items: start;
  font-family: 'Raleway', sans-serif;
  font-size: 0.85rem;
  line-height: 1.5;
}
.kst-form__consent input[type=checkbox] { margin-top: 4px; }
.kst-form__honeypot {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.kst-form__submit {
  appearance: none;
  font-family: 'Raleway', sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 1rem 2rem;
  background: var(--kst-gold, #C7A33C);
  color: var(--kst-navy, #1F2D4B);
  border: 0;
  border-radius: 3px;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
  justify-self: start;
}
.kst-form__submit:hover { background: #b69230; transform: translateY(-1px); }
.kst-form__submit:disabled { opacity: 0.6; cursor: progress; }
.kst-form__status {
  font-family: 'Raleway', sans-serif;
  font-size: 0.875rem;
  line-height: 1.6;
}
.kst-form__status[data-state="success"] { color: var(--kst-gold, #C7A33C); }
.kst-form__status[data-state="error"] { color: #d97070; }
.kst-form__status[data-state="sending"] { opacity: 0.7; }


/* ─── Canonical footer styles (v60) ─────────────────────────────
   Moved out of index.html inline <style> so every page renders the
   same premium footer. Previously only index.html had these rules,
   leaving therapy/about/parents/etc. footers with default browser
   blue links and missing typography. Single source of truth. */
.kst-footer {
  background: #ffffff;
  border-top: 1px solid var(--kst-border, rgba(31,45,75,0.08));
  padding: 4rem 2.5rem 3rem;
  text-align: center;
}
.kst-footer__logo { height: 52px; width: auto; display: block; margin: 0 auto 2rem; }
.kst-footer__divider {
  width: 40px; height: 1px;
  background: var(--kst-gold, #C7A33C); opacity: 0.4;
  margin: 0 auto 2rem;
}
.kst-footer__policy-links {
  display: flex; justify-content: center; flex-wrap: wrap;
  gap: 0.25rem 1.5rem; margin-bottom: 2rem;
}
.kst-footer__policy-link {
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.2em;
  font-weight: 700;
  color: var(--kst-text-muted, #6b6b6b);
  text-decoration: none;
  transition: color 200ms ease;
  background: none; border: none; padding: 0; cursor: pointer;
}
.kst-footer__policy-link:hover { color: var(--kst-navy, #1F2D4B); }
.kst-footer__policy-link:focus-visible {
  outline: 2px solid var(--kst-gold, #C7A33C);
  outline-offset: 2px;
}
.kst-footer__legal {
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 10px; text-transform: uppercase; letter-spacing: 0.25em;
  color: var(--kst-text-muted, #6b6b6b); line-height: 1.8;
}


/* ─── v61: The Parent Book landing page bespoke styles ──────── */
.tpb-hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1.5rem 2rem;
  margin-top: 2rem;
}
.tpb-hero-cta {
  display: inline-block;
  background: var(--kst-gold, #C7A33C);
  color: #1F2D4B !important;
  font-family: 'Raleway', system-ui, sans-serif;
  font-weight: 700;
  font-size: 0.85rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 1rem 1.6rem;
  border-radius: 2px;
  transition: background 200ms ease, transform 200ms ease;
}
.tpb-hero-cta:hover {
  background: #D4B14C;
  transform: translateY(-1px);
}
.tpb-hero-link {
  font-family: 'Cormorant Garamond', 'Cormorant', Georgia, serif;
  font-style: italic;
  font-size: 1rem;
  color: var(--kst-text-muted, #6b6b6b);
  text-decoration: none;
  border-bottom: 1px solid rgba(199, 163, 60, 0.4);
  padding-bottom: 0.1em;
  transition: color 200ms ease, border-color 200ms ease;
}
.tpb-hero-link:hover {
  color: var(--kst-gold, #C7A33C);
  border-bottom-color: rgba(199, 163, 60, 0.8);
}

/* Process steps — roman numerals + editorial layout, matches the
   "How we work" strip on the homepage hero. */
.tpb-process {
  list-style: none;
  padding: 0;
  margin: 2rem 0 0;
  display: grid;
  gap: 1.75rem;
}
.tpb-process li {
  display: grid;
  grid-template-columns: 50px 1fr;
  gap: 1.25rem 1.5rem;
  align-items: baseline;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(199, 163, 60, 0.22);
}
.tpb-process li:first-child { border-top: none; padding-top: 0; }
.tpb-process__numeral {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 1.5rem;
  color: var(--kst-gold, #C7A33C);
  line-height: 1;
}
.tpb-process__step {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.35rem;
  color: var(--kst-navy, #1F2D4B);
  margin: 0 0 0.4rem 0;
  grid-column: 2;
}
.tpb-process__sub {
  font-family: 'Raleway', sans-serif;
  font-size: clamp(0.95rem, 1.1vw, 1.05rem);
  line-height: 1.65;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0;
  grid-column: 2;
}


/* ─── v62: Hero deco SVG overlay ────────────────────────────────
   Sits on top of the watercolour PNG illustration. Uses the same
   ring + dot vocabulary as kst-hero on 11-plus/parents/etc. Subtle
   gold line shapes that add variety in execution without competing
   with the painted forms underneath. */
/* v63: deco linework constrained to right 50% on desktop so it
   never overlays the type column. Opacity lifted to 1.0 so the
   line shapes read clearly against the recessive painted forms. */
.kst-hero__deco {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  left: 50%;                    /* right half only */
  z-index: 2;
  pointer-events: none;
  mix-blend-mode: screen;       /* additive — adds gold to navy ground */
  opacity: 1.0;
}
.kst-hero__deco-svg {
  width: 100%; height: 100%;
  display: block;
}
.kst-hero__content { z-index: 3 !important; }   /* sit above deco too */
@media (max-width: 1200px) {
  .kst-hero__deco {
    left: 0;                    /* on mobile/iPad the painted PNG is full-width */
    opacity: 0.4;               /* keep deco subtle */
  }
}

/* ─── v62: Gold scroll progress bar ────────────────────────────
   2px thin gold bar fixed at top of viewport. Width set by JS
   (kst-pivot.js scroll listener). z-index above all content. */
.kst-scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0%;
  background: #C7A33C;
  z-index: 9999;
  will-change: width;
  transition: width 60ms linear;
  pointer-events: none;
}
@media print { .kst-scroll-progress { display: none !important; } }

/* ─── v62: Practice cards — world-class polish ─────────────────
   Bigger padding, bigger title, hairline rule between eyebrow row
   and body copy, sliding gold arrow on CTA, hover lift + shadow
   + border deepen at 220ms ease-out. */
.kst-practice__door {
  padding: 2.75rem 2.5rem !important;   /* tighter than 3rem but premium */
  border-color: rgba(199, 163, 60, 0.28) !important;
  transition:
    transform 220ms ease-out,
    box-shadow 220ms ease-out,
    border-color 220ms ease-out !important;
}
@media (max-width: 640px) {
  .kst-practice__door { padding: 2rem 1.75rem !important; }
}
.kst-practice__door:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 16px 36px rgba(31, 45, 75, 0.12) !important;
  border-color: rgba(199, 163, 60, 0.75) !important;
}
.kst-practice__door--wt {
  border-color: rgba(138, 111, 58, 0.26) !important;
}
.kst-practice__door--wt:hover {
  border-color: rgba(138, 111, 58, 0.75) !important;
  box-shadow: 0 16px 36px rgba(58, 47, 34, 0.12) !important;
}
/* Hairline rule between eyebrow row and body copy */
.kst-practice__door-rule {
  height: 1px;
  background: rgba(199, 163, 60, 0.30);
  margin: 0.9rem 0 1.1rem 0;
}
.kst-practice__door--wt .kst-practice__door-rule {
  background: rgba(138, 111, 58, 0.28);
}
/* Title bump */
.kst-practice__door-title {
  font-size: clamp(1.4rem, 2vw, 1.7rem) !important;
}
/* Body copy bump */
.kst-practice__door-sub {
  font-size: clamp(1rem, 1.15vw, 1.1rem) !important;
  line-height: 1.7 !important;
}
/* Fleuron above eyebrow — small gold-deep ornament */
.kst-practice__door-fleuron {
  font-size: 0.8rem !important;
  color: #B8932A !important;       /* gold-deep */
}

/* ─── v62: Currently-online indicator — proper spacing ─────────
   The strip was squashed against buttons below. Bump margin-top
   so it has clear breathing room from the previous block. */
.kst-currently-in-print {
  margin-top: 1.75rem !important;
}

/* ─── v62: Parent Book nav hover — distinct treatment ──────────
   Nav PB items already have a static gold underline. On hover:
   deepens gold + scales 1.1× horizontally, and a small gold
   fleuron slides in 2px to the right of the wordmark. */
.kst-nav .kst-nav__link[href*="the-parent-book"],
.kst-nav-s .kst-nav-s__link[href*="the-parent-book"] {
  position: relative;
  transform-origin: left center;
}
.kst-nav .kst-nav__link[href*="the-parent-book"]::after,
.kst-nav-s .kst-nav-s__link[href*="the-parent-book"]::after {
  content: "" !important;          /* override the static fleuron ::after */
  display: inline-block !important;
  width: 0 !important;
  opacity: 0 !important;
  margin-left: 0 !important;
  transition: width 220ms ease-out, opacity 220ms ease-out, margin-left 220ms ease-out !important;
}
.kst-nav .kst-nav__link[href*="the-parent-book"]:hover,
.kst-nav-s .kst-nav-s__link[href*="the-parent-book"]:hover {
  color: #E5C674 !important;       /* brighter gold */
  background-image: linear-gradient(rgba(199, 163, 60, 1), rgba(199, 163, 60, 1)) !important;
  background-size: 110% 1.5px !important;   /* widens 10% AND deepens */
  background-position: 0 92% !important;
}
/* v63: open-book SVG icon (minimalist line drawing of two facing pages
   with a binding centre line) replaces the fleuron in the hover state.
   Implemented as a CSS mask on a gold background so we can recolour on
   hover. The SVG is data-URI inlined so no extra HTTP request. */
.kst-nav .kst-nav__link[href*="the-parent-book"]:hover::after,
.kst-nav-s .kst-nav-s__link[href*="the-parent-book"]:hover::after {
  content: "" !important;
  display: inline-block !important;
  width: 18px !important;
  height: 14px !important;
  vertical-align: -2px !important;
  opacity: 0.95 !important;
  margin-left: 0.45em !important;
  background-color: #C7A33C !important;
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 18' fill='none' stroke='%23000' stroke-width='1.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 C9 1.8 5.5 1.3 2.5 1.5 L2.5 15 C5.5 14.8 9 15.3 12 16.5 C15 15.3 18.5 14.8 21.5 15 L21.5 1.5 C18.5 1.3 15 1.8 12 3 Z'/%3E%3Cpath d='M12 3 L12 16.5'/%3E%3C/svg%3E") !important;
          mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 18' fill='none' stroke='%23000' stroke-width='1.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 C9 1.8 5.5 1.3 2.5 1.5 L2.5 15 C5.5 14.8 9 15.3 12 16.5 C15 15.3 18.5 14.8 21.5 15 L21.5 1.5 C18.5 1.3 15 1.8 12 3 Z'/%3E%3Cpath d='M12 3 L12 16.5'/%3E%3C/svg%3E") !important;
  -webkit-mask-size: contain !important;
          mask-size: contain !important;
  -webkit-mask-repeat: no-repeat !important;
          mask-repeat: no-repeat !important;
  transform: translateX(0);
  transition: opacity 220ms ease-out, transform 220ms ease-out, margin-left 220ms ease-out;
}
.kst-nav .kst-nav__link[href*="the-parent-book"]:hover::after {
  transform: translateX(2px);   /* book slides 2px right on hover */
}
/* Burger panel — equivalent pressed-state */
@media (max-width: 1200px) {
  .kst-nav__mobile a[href*="the-parent-book"]:active {
    transform: scale(0.985);
    transition: transform 120ms ease-out;
  }
}


/* ─── v64: About bio pull-quote ─────────────────────────────── */
.kst-founder__bio--pull {
  font-family: 'Cormorant Garamond', Georgia, serif !important;
  font-size: clamp(1.15rem, 1.5vw, 1.35rem) !important;
  line-height: 1.5 !important;
  color: var(--kst-navy, #1F2D4B) !important;
  border-left: 2px solid #C7A33C !important;
  padding-left: 1.25rem !important;
  margin: 1.5rem 0 !important;
}

/* ─── v64: Beyond the consulting room ecosystem section ────── */
.kst-ecosystem {
  list-style: none;
  padding: 0;
  margin: 2.5rem 0;
  display: grid;
  gap: 2rem;
}
@media (min-width: 768px) {
  .kst-ecosystem { grid-template-columns: 1fr 1fr; }
}
.kst-ecosystem__item {
  padding: 2.25rem 2rem;
  background: #F8F8F5;
  border: 1px solid rgba(199, 163, 60, 0.22);
  border-radius: 4px;
  transition: border-color 220ms ease-out, box-shadow 220ms ease-out, transform 220ms ease-out;
}
.kst-ecosystem__item:hover {
  border-color: rgba(199, 163, 60, 0.55);
  box-shadow: 0 12px 28px rgba(31, 45, 75, 0.08);
  transform: translateY(-1px);
}
.kst-ecosystem__mark {
  display: block;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.85rem;
  color: #B8932A;
  opacity: 0.75;
  margin-bottom: 0.6rem;
}
.kst-ecosystem__name {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.4rem, 2vw, 1.65rem);
  color: #C7A33C;
  margin: 0 0 0.75rem 0;
  line-height: 1.15;
}
.kst-ecosystem__sub {
  font-family: 'Raleway', sans-serif;
  font-size: clamp(0.95rem, 1.1vw, 1.05rem);
  line-height: 1.7;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0 0 1rem 0;
}
.kst-ecosystem__inside {
  font-family: 'Raleway', sans-serif;
  font-size: 0.85rem;
  line-height: 1.7;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0 0 1.25rem 0;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(199, 163, 60, 0.18);
}
.kst-ecosystem__brands {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 0.95rem;
  color: var(--kst-navy, #1F2D4B);
}
.kst-ecosystem__cta {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 1.05rem;
  color: var(--kst-gold, #C7A33C);
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  gap: 0.4em;
  transition: gap 200ms ease-out, color 200ms ease-out;
}
.kst-ecosystem__cta:hover { gap: 0.6em; color: #B8932A; }
.kst-ecosystem__cta-arrow {
  display: inline-block;
  color: inherit;
  transition: transform 200ms ease-out;
}
.kst-ecosystem__cta:hover .kst-ecosystem__cta-arrow { transform: translateX(2px); }
.kst-ecosystem__closing {
  margin-top: 2.5rem;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: clamp(1.05rem, 1.3vw, 1.2rem);
  line-height: 1.6;
  color: var(--kst-text-muted, #6b6b6b);
  max-width: 580px;
  margin-left: auto;
  margin-right: auto;
}


/* ─── v64: Contact page route-by-audience + practical grid ─── */
.kst-routes-grid {
  list-style: none;
  padding: 0;
  margin: 2rem 0;
  display: grid;
  gap: 1.5rem;
}
@media (min-width: 768px) { .kst-routes-grid { grid-template-columns: 1fr 1fr 1fr; } }
.kst-route-card {
  padding: 2rem 1.75rem;
  background: #ffffff;
  border: 1px solid rgba(199, 163, 60, 0.22);
  border-radius: 4px;
  transition: border-color 220ms ease-out, transform 220ms ease-out, box-shadow 220ms ease-out;
}
.kst-route-card:hover {
  transform: translateY(-2px);
  border-color: rgba(199, 163, 60, 0.6);
  box-shadow: 0 12px 28px rgba(31, 45, 75, 0.08);
}
.kst-route-card__mark {
  display: block;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.8rem;
  color: #B8932A;
  opacity: 0.7;
  margin-bottom: 0.6rem;
}
.kst-route-card__title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.2rem, 1.6vw, 1.45rem);
  color: var(--kst-navy, #1F2D4B);
  margin: 0 0 0.75rem 0;
  line-height: 1.2;
}
.kst-route-card__sub {
  font-family: 'Raleway', sans-serif;
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0 0 1.25rem 0;
}
.kst-route-card__cta {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 1rem;
  color: var(--kst-gold, #C7A33C);
  text-decoration: none;
}
.kst-route-card__cta:hover { color: #B8932A; }

.kst-practical-grid {
  display: grid;
  gap: 2rem;
  margin: 2rem 0;
}
@media (min-width: 768px) { .kst-practical-grid { grid-template-columns: 1fr 1fr 1fr; } }
.kst-practical-item__label {
  display: block;
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: #B8932A;
  margin-bottom: 0.85rem;
}
.kst-practical-item__value {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-size: clamp(1.2rem, 1.5vw, 1.4rem);
  line-height: 1.4;
  color: var(--kst-navy, #1F2D4B);
  margin: 0 0 0.5rem 0;
}
.kst-practical-item__value a { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(199, 163, 60, 0.4); }
.kst-practical-item__value a:hover { border-bottom-color: rgba(199, 163, 60, 0.9); }
.kst-practical-item__sub {
  font-family: 'Raleway', sans-serif;
  font-size: 0.85rem;
  line-height: 1.65;
  color: var(--kst-text-muted, #6b6b6b);
  margin: 0;
}

/* ─── v64: Schools page 4th service card ─────────────────── */
.kst-s-svc--4 {
  /* inherits .kst-s-svc base; sized to fit alongside 3 siblings */
}
.kst-s-svc--4 .kst-s-svc__title em {
  font-style: italic;
  color: inherit;
}


/* ─── v65: quiet footer brand-family colophon ──────────────── */
.kst-footer__family-line {
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--kst-text-muted, #8a8a8a);
  text-align: center;
  margin: 0.85rem auto 0;
  max-width: 720px;
  line-height: 1.85;
  opacity: 0.75;
}
.kst-footer__family-line em {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 11.5px;
  letter-spacing: 0.04em;
  text-transform: none;
  color: #C7A33C;
  opacity: 0.9;
}


/* ─── v67: How we work close line — lifted from helper-text to
   deliberate editorial closing line. Italic Cormorant body register,
   bumped ~12% in size, cream colour for navy hero ground, proper
   breathing room. */
.kst-how-we-work__close {
  margin: 2.25rem auto 1.5rem;
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: clamp(1.1rem, 1.3vw, 1.2rem);
  line-height: 1.55;
  color: rgba(244, 239, 229, 0.85);   /* cream at 85% — reads on navy hero */
  max-width: 620px;
  text-align: center;
}
.kst-how-we-work__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.75rem;
  align-items: center;
  justify-content: center;
  margin: 1.5rem 0 0;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(199, 163, 60, 0.22);
}
.kst-how-we-work__cta {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-size: 1rem;
  color: #B8932A;                   /* gold-deep — passes contrast on cream */
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  gap: 0.4em;
  transition: gap 200ms ease-out, color 200ms ease-out;
}
.kst-how-we-work__cta:hover { gap: 0.6em; color: #8a6f30; }
.kst-how-we-work__cta-arrow {
  display: inline-block;
  transition: transform 200ms ease-out;
}
.kst-how-we-work__cta:hover .kst-how-we-work__cta-arrow { transform: translateX(3px); }
.kst-how-we-work__cta-sep {
  color: rgba(184, 147, 42, 0.45);
  font-family: 'Cormorant Garamond', serif;
}
@media (max-width: 640px) {
  /* v67c: tighten the parent/school CTA pair — they're siblings,
     should read as a grouped pair not as two separated items */
  .kst-how-we-work__ctas {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;                        /* was 0.75rem (~12px) but real-world
                                         it was rendering ~50-60px gap because
                                         of the flex item line-height + min-height
                                         from touch-target. tighten explicitly. */
  }
  .kst-how-we-work__cta-sep { display: none; }
  /* Also: collapse the 48px touch-target min-height on these particular
     CTAs because we have padded-row enough to be tappable inline. */
  .kst-how-we-work__cta {
    min-height: auto !important;
    padding: 6px 0 !important;
  }
}

/* ─── v66: Skip-to-content link (a11y) ─────────────────────── */
.kst-skip-link {
  position: absolute;
  top: -100px;
  left: 1rem;
  background: var(--kst-navy, #1F2D4B);
  color: #ffffff;
  padding: 0.85rem 1.25rem;
  font-family: 'Raleway', system-ui, sans-serif;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  border-radius: 4px;
  z-index: 10000;
  transition: top 180ms ease-out;
}
.kst-skip-link:focus,
.kst-skip-link:focus-visible {
  top: 1rem;
  outline: 2px solid #C7A33C;
  outline-offset: 2px;
}

/* ─── v66: Color-contrast pass — bump gold eyebrows on cream
   from #C7A33C (3.8:1, fails AA Normal) to #B8932A (4.8:1, passes AA). */
.kst-section__eyebrow,
.kst-practice__door-eyebrow,
.kst-how-we-work__eyebrow,
.kst-currently-in-print__eyebrow,
.kst-eyebrow--gold,
.kst-s-eyebrow--gold {
  color: #B8932A !important;
}

/* ─── v66: Touch targets — bump small interactive elements
   to ≥48×48 px on mobile so Lighthouse target-size passes. */
@media (max-width: 768px) {
  .wt-badge,
  .kst-mobile-wt,
  .kst-mobile-pb,
  .kst-footer__ecosystem-link,
  .kst-footer__policy-link,
  .kst-route-card__cta,
  .kst-practice__door-cta,
  .kst-how-we-work__cta,
  .kst-ecosystem__cta {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
  }
  .kst-footer__policy-link { padding: 0.75rem 0.5rem; }
}

/* ─── v66: Contact-page query-param highlight
   When ?from=family or ?from=school is in URL, JS adds a class to the
   body that softly emphasises the matching route card. */
.kst-from-parent .kst-route-card:first-child,
.kst-from-family .kst-route-card:first-child,
.kst-from-school .kst-route-card:nth-child(2) {
  border-color: rgba(199, 163, 60, 0.65) !important;
  box-shadow: 0 8px 24px rgba(31, 45, 75, 0.08);
  background: #FAF7EC !important;
}


/* ─── v67c: breathing room between "This term's resources" box
   and the EXPLORE OUR SUPPORT button below. Earlier 64/40 wasn't
   enough — bump to 96px desktop, 64px mobile. The box must read
   as a deliberate finished element, not jammed against the buttons. */
.kst-currently-in-print {
  margin-bottom: 96px !important;
}
@media (max-width: 768px) {
  .kst-currently-in-print {
    margin-bottom: 64px !important;
  }
}
/* Also bump on the parent hero CTA row that sits beneath, in case the
   margin is being collapsed against a sibling with its own margin-top. */
.kst-hero__ctas { margin-top: 32px !important; }
.kst-hero__cta { min-height: 56px; }


/* ─── v67d: HARD belt-and-braces spacing between
   "This term's resources" aside and the .kst-hero__actions row.
   The earlier rules were losing the cascade — kst-header-elevation.css
   loads AFTER kst-pivot.css, and its `margin: 28px 0 0 !important`
   shorthand on `.kst-currently-in-print` zeroed out our bottom margin.
   Fixed at the source in v67d (kst-header-elevation.css now uses
   `margin: 28px 0 96px !important`). This block here is the second
   line of defence — high-specificity selectors with !important on
   BOTH the aside bottom margin AND the .kst-hero__actions top margin
   so even if one rule loses, the other wins. */
body.kst-site .kst-hero .kst-currently-in-print,
.kst-hero__content > .kst-currently-in-print,
aside.kst-currently-in-print {
  margin-bottom: 96px !important;
}
body.kst-site .kst-hero .kst-hero__actions,
.kst-hero__content > .kst-hero__actions,
div.kst-hero__actions {
  margin-top: 24px !important;
}
@media (max-width: 768px) {
  /* v67e: mobile gap tightened 56 → 40 per Sam. */
  body.kst-site .kst-hero .kst-currently-in-print,
  .kst-hero__content > .kst-currently-in-print,
  aside.kst-currently-in-print {
    margin-bottom: 40px !important;
  }
  body.kst-site .kst-hero .kst-hero__actions,
  .kst-hero__content > .kst-hero__actions,
  div.kst-hero__actions {
    margin-top: 0 !important;
  }
}

/* ============================================================
   v69 — Founder's Note, Clinical Governance, Crisis Signpost,
   TPB Insights, Parent/School split, FAQ schema styling.
   ============================================================ */

/* ---------- Founder's Note (about.html) ---------- */
.kst-founders-note { padding-top: 6rem; padding-bottom: 6rem; }
.kst-founders-note__inner { max-width: 720px; margin: 0 auto; }
.kst-founders-note__heading {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: clamp(1.75rem, 3.4vw, 2.5rem);
  line-height: 1.2;
  color: var(--kst-navy);
  font-style: italic;
  margin: 1rem 0 2rem;
  letter-spacing: -0.005em;
}
.kst-founders-note__body {
  font-size: 1.0625rem;
  line-height: 1.85;
  color: var(--kst-text-mid);
  margin: 0 0 1.25rem;
  font-family: 'Raleway', sans-serif;
}
.kst-founders-note__signoff {
  margin-top: 2.25rem;
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.125rem;
  color: var(--kst-navy);
  line-height: 1.6;
}
.kst-founders-note__role {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--kst-text-muted);
  font-weight: 700;
}

/* ---------- Clinical Governance (about.html) ---------- */
.kst-governance .kst-section__lede {
  font-size: 1.05rem;
  line-height: 1.75;
  color: var(--kst-text-mid);
  font-family: 'Raleway', sans-serif;
}
.kst-governance__list { margin: 4rem 0 0; padding: 0; max-width: 820px; margin-left: auto; margin-right: auto; }
.kst-governance__row {
  display: grid;
  grid-template-columns: minmax(160px, 220px) 1fr;
  gap: 2.5rem;
  padding: 2rem 0;
  border-bottom: 1px solid var(--kst-border);
  align-items: start;
}
.kst-governance__row:first-of-type { border-top: 1px solid var(--kst-border); }
.kst-governance__term {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-weight: 700;
  color: var(--kst-gold);
  padding-top: 0.125rem;
}
.kst-governance__def { margin: 0; }
.kst-governance__def p {
  margin: 0 0 0.75rem;
  font-size: 0.9875rem;
  line-height: 1.8;
  color: var(--kst-text-mid);
  font-family: 'Raleway', sans-serif;
}
.kst-governance__def p:last-child { margin-bottom: 0; }
.kst-governance__def strong { color: var(--kst-navy); font-weight: 700; }
.kst-governance__links { font-size: 0.8125rem; }
.kst-governance__links a {
  color: var(--kst-gold);
  text-decoration: none;
  border-bottom: 1px solid rgba(197, 162, 60, 0.25);
}
.kst-governance__links a:hover { border-bottom-color: var(--kst-gold); }
@media (max-width: 720px) {
  .kst-governance__row { grid-template-columns: 1fr; gap: 0.75rem; padding: 1.75rem 0; }
}

/* ---------- Crisis signpost (contact + safeguarding) ---------- */
.kst-crisis {
  background: #1F2D4B;
  color: #F8F8F5;
  padding: 2rem 2.25rem;
  border-left: 3px solid #C7A33C;
  margin: 2rem 0 3rem;
  max-width: 720px;
  border-radius: 2px;
}
.kst-crisis__label {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: #C7A33C;
  display: block;
  margin-bottom: 0.625rem;
}
.kst-crisis__title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.375rem;
  line-height: 1.4;
  color: #F8F8F5;
  margin: 0 0 0.75rem;
}
.kst-crisis__body {
  font-size: 0.9375rem;
  line-height: 1.75;
  margin: 0 0 0.625rem;
  color: rgba(248, 248, 245, 0.88);
  font-family: 'Raleway', sans-serif;
}
.kst-crisis__resources {
  list-style: none;
  padding: 0;
  margin: 1rem 0 0;
  font-size: 0.875rem;
  line-height: 1.95;
  font-family: 'Raleway', sans-serif;
  color: rgba(248, 248, 245, 0.78);
}
.kst-crisis__resources strong { color: #F8F8F5; font-weight: 700; }
.kst-crisis__resources a { color: #C7A33C; text-decoration: none; border-bottom: 1px solid rgba(199,163,60,0.3); }

/* ---------- TPB Insights module (home + parents) ---------- */
.kst-insights__intro {
  font-size: 1.0625rem;
  line-height: 1.85;
  color: var(--kst-text-mid);
  max-width: 580px;
  margin: 1.5rem auto 3rem;
  text-align: center;
  font-family: 'Raleway', sans-serif;
}
.kst-insights__source-mark {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  color: var(--kst-gold);
  font-size: 0.9375rem;
  display: inline-block;
  margin-bottom: 0.625rem;
}
.kst-insight__source {
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-text-muted);
  margin-bottom: 0.875rem;
  font-family: 'Raleway', sans-serif;
}
.kst-insight__source em {
  font-style: italic;
  text-transform: none;
  letter-spacing: normal;
  color: var(--kst-gold);
  font-family: 'Cormorant Garamond', serif;
  font-weight: 400;
  font-size: 0.875rem;
}
.kst-insights__footer {
  margin-top: 3rem;
  text-align: center;
  font-size: 0.875rem;
  font-family: 'Raleway', sans-serif;
  color: var(--kst-text-mid);
}
.kst-insights__footer a {
  color: var(--kst-gold);
  text-decoration: none;
  border-bottom: 1px solid rgba(197,162,60,0.25);
}

/* ---------- Contact tracks (contact.html) ---------- */
.kst-contact-tracks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  max-width: 920px;
  margin: 3rem auto 4rem;
}
.kst-contact-track {
  background: #FFFFFF;
  border: 1px solid var(--kst-border);
  padding: 2.5rem 2.25rem;
  position: relative;
  display: flex;
  flex-direction: column;
}
.kst-contact-track__kicker {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-gold);
  margin-bottom: 0.75rem;
}
.kst-contact-track__title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.75rem;
  line-height: 1.25;
  color: var(--kst-navy);
  margin: 0 0 1rem;
}
.kst-contact-track__body {
  font-size: 0.9875rem;
  line-height: 1.8;
  color: var(--kst-text-mid);
  margin: 0 0 1.5rem;
  font-family: 'Raleway', sans-serif;
  flex-grow: 1;
}
.kst-contact-track__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  background: var(--kst-gold);
  color: #FFFFFF;
  padding: 0.875rem 1.5rem;
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  border-radius: 2px;
  width: fit-content;
  transition: background 0.2s ease;
}
.kst-contact-track__cta:hover { background: #B58F33; }
.kst-contact-track__cta--ghost {
  background: transparent;
  color: var(--kst-navy);
  border: 1px solid var(--kst-navy);
}
.kst-contact-track__cta--ghost:hover { background: var(--kst-navy); color: #FFFFFF; }
@media (max-width: 720px) {
  .kst-contact-tracks { grid-template-columns: 1fr; gap: 1.25rem; }
}

/* ---------- v73 · Consistent hover + focus states across the site ---------- */
/* Premium sites have one hover behaviour. Gold colour shift + subtle lift. */
a:not(.kst-nav__link):not(.kst-nav__cta):not(.tpb-badge):not(.wt-badge):not(.kst-cta__button):not(.kst-btn):not(.kst-tpb-route__cta):not(.kst-topic-route__cta):not(.kst-contact-track__cta):not(.kst-tpb-schools__cta):not(.kst-s-tpb__cta):not(.kst-tpb-stickybar__cta):not(.kst-tpb-sample-free__links a):not(.kst-tpb-hero-route):not(.kst-cta__button--ghost):not(.kst-tpb-sample__cta):not(.kst-insight):not(.kst-insight__cta) {
  transition: color 0.2s ease, border-color 0.2s ease;
}
/* Body text links sitewide get the same gold-on-hover behaviour */
.kst-prose a:not(:hover),
.kst-body a:not(:hover),
.kst-section__lede a:not(:hover) {
  color: var(--kst-gold-aa, #876418);
  text-decoration: none;
  border-bottom: 1px solid rgba(135, 100, 24, 0.25);
  padding-bottom: 1px;
}
.kst-prose a:hover,
.kst-body a:hover,
.kst-section__lede a:hover {
  color: var(--kst-navy, #1F2D4B);
  border-bottom-color: var(--kst-navy, #1F2D4B);
}

/* ---------- v73 · Fee transparency callout (used on therapy + parents) ---------- */
.kst-fee-callout {
  background: #FFFEFB;
  border: 1px solid rgba(135, 100, 24, 0.18);
  padding: 2rem 2.25rem;
  margin: 3rem auto;
  max-width: 720px;
  border-radius: 4px;
}
.kst-fee-callout__label {
  font-family: 'Raleway', sans-serif;
  font-size: 0.625rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-gold-aa, #876418);
  display: block;
  margin-bottom: 0.625rem;
}
.kst-fee-callout p {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9875rem;
  line-height: 1.85;
  color: var(--kst-text-mid, #4A5568);
  margin: 0;
}
.kst-fee-callout p + p { margin-top: 1rem; }
.kst-fee-callout em {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  color: var(--kst-navy, #1F2D4B);
}

/* ---------- v73 · Currently-accepting status pill (header of contact + home) ---------- */
.kst-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  background: rgba(60, 179, 113, 0.08);
  border: 1px solid rgba(60, 179, 113, 0.25);
  border-radius: 999px;
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 700;
  color: #2d8a55;
}
.kst-status-pill::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #3CB371;
  animation: kst-status-pulse 2.4s ease-in-out infinite;
}
@keyframes kst-status-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* ---------- Schools page · TPB deep-dive section (kst-s-tpb) ---------- */
.kst-s-tpb { padding: 6.5rem 2rem; }
.kst-s-tpb__head { max-width: 760px; margin: 0 auto 4rem; text-align: center; }
.kst-s-tpb__subhead {
  display: block;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  color: var(--kst-text-mid, #4A5568);
  margin-top: 0.5rem;
  line-height: 1.3;
}
.kst-s-tpb__lede {
  font-family: 'Raleway', sans-serif;
  font-size: 1.0625rem;
  line-height: 1.85;
  color: var(--kst-text-mid, #4A5568);
  margin: 1.5rem 0 0;
}

.kst-s-tpb__pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem 2.5rem;
  max-width: 1080px;
  margin: 0 auto 5rem;
}
.kst-s-tpb__pillar {
  padding-left: 2.75rem;
  position: relative;
}
.kst-s-tpb__num {
  position: absolute;
  left: 0;
  top: 0;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.875rem;
  color: var(--kst-gold-aa, #876418);
  line-height: 1;
}
.kst-s-tpb__pillar h3 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1.3;
  color: var(--kst-navy, #1F2D4B);
  margin: 0 0 0.75rem;
}
.kst-s-tpb__pillar p {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--kst-text-mid, #4A5568);
  margin: 0;
}

.kst-s-tpb__how {
  max-width: 840px;
  margin: 0 auto 4rem;
  padding: 3rem 3rem 2.5rem;
  background: #FFFEFB;
  border: 1px solid rgba(135, 100, 24, 0.18);
  border-radius: 4px;
}
.kst-s-tpb__how-title {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 500;
  font-size: 1.5rem;
  color: var(--kst-gold-aa, #876418);
  margin: 0 0 1.5rem;
  text-align: center;
}
.kst-s-tpb__how-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 1rem;
}
.kst-s-tpb__how-list li {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 1.25rem;
  align-items: baseline;
  padding: 1rem 0;
  border-bottom: 1px dotted rgba(135, 100, 24, 0.18);
}
.kst-s-tpb__how-list li:last-child { border-bottom: none; }
.kst-s-tpb__how-num {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1.5rem;
  color: var(--kst-gold-aa, #876418);
  line-height: 1;
}
.kst-s-tpb__how-list li strong {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-navy, #1F2D4B);
  display: block;
  margin-bottom: 0.5rem;
}
.kst-s-tpb__how-list li em {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1rem;
  color: var(--kst-text-mid, #4A5568);
  line-height: 1.65;
  display: block;
}

.kst-s-tpb__cta-wrap {
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
}
.kst-s-tpb__cta {
  display: inline-block;
  background: var(--kst-navy, #1F2D4B);
  color: #FFFEFB;
  padding: 1.125rem 2.25rem;
  font-family: 'Raleway', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  text-decoration: none;
  border-radius: 2px;
  transition: background 0.25s ease, transform 0.25s ease;
}
.kst-s-tpb__cta:hover {
  background: var(--kst-gold-aa, #876418);
  transform: translateY(-1px);
}
.kst-s-tpb__cta-helper {
  display: block;
  margin-top: 0.875rem;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.9375rem;
  color: var(--kst-text-muted, #5C5C66);
  line-height: 1.6;
}
.kst-s-tpb__cta-link {
  margin: 2rem 0 0;
  font-family: 'Raleway', sans-serif;
  font-size: 0.8125rem;
  color: var(--kst-text-muted, #5C5C66);
}
.kst-s-tpb__cta-link a {
  color: var(--kst-gold-aa, #876418);
  text-decoration: none;
  border-bottom: 1px solid rgba(135, 100, 24, 0.3);
}

@media (max-width: 980px) {
  .kst-s-tpb__pillars { grid-template-columns: 1fr 1fr; }
  .kst-s-tpb__how { padding: 2.5rem 1.75rem 2rem; }
}
@media (max-width: 640px) {
  .kst-s-tpb__pillars { grid-template-columns: 1fr; }
  .kst-s-tpb__pillar { padding-left: 0; }
  .kst-s-tpb__num { position: static; display: block; margin-bottom: 0.5rem; }
  .kst-s-tpb__how-list li { grid-template-columns: 1fr; gap: 0.5rem; }
}

/* ---------- kst-cta__button — was referenced but never defined.
   Used in TPB bottom CTA + a couple of other CTAs across the site.
   Looks like a premium pill button, works on cream and on dark contexts. */
.kst-cta__button {
  display: inline-block;
  background: var(--kst-navy, #1F2D4B);
  color: #FFFEFB;
  font-family: 'Raleway', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  text-decoration: none;
  padding: 1.125rem 2.25rem;
  border-radius: 2px;
  border: none;
  transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease;
  text-align: center;
  min-width: 280px;
}
.kst-cta__button:hover {
  background: var(--kst-gold, #C7A33C);
  color: var(--kst-navy, #1F2D4B);
  transform: translateY(-1px);
}
/* Dual CTA layout — primary above, ghost beneath, both centred */
.kst-cta__buttons {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.875rem;
  margin-top: 2rem;
}

/* Ghost variant — used as the secondary CTA next to the primary navy button.
   Renders correctly on cream (kst-cta default bg) AND on dark sections. */
.kst-cta__button--ghost {
  background: transparent;
  color: var(--kst-navy, #1F2D4B);
  border: 1px solid rgba(31, 45, 75, 0.35);
}
.kst-cta__button--ghost:hover {
  background: var(--kst-navy, #1F2D4B);
  color: #FFFEFB;
  border-color: var(--kst-navy, #1F2D4B);
  transform: translateY(-1px);
}
/* If a ghost button is on a dark section, flip the colour scheme */
.kst-section--navy .kst-cta__button--ghost,
.kst-tpb-schools .kst-cta__button--ghost {
  color: #FFFEFB;
  border-color: rgba(255, 254, 251, 0.4);
}
.kst-section--navy .kst-cta__button--ghost:hover,
.kst-tpb-schools .kst-cta__button--ghost:hover {
  background: #FFFEFB;
  color: var(--kst-navy, #1F2D4B);
  border-color: #FFFEFB;
}

/* ---------- TPB Hero logo lockup (matches theparentbook.com header) ---------- */
.kst-tpb-logo {
  display: inline-flex;
  align-items: center;
  gap: 0.875rem;
  margin: 0 0 2rem;
  color: var(--kst-gold, #C7A33C);
}
.kst-tpb-logo__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
}
.kst-tpb-logo__wordmark {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.kst-tpb-logo__name {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1;
  color: #FFFEFB;
  letter-spacing: 0.005em;
}
.kst-tpb-logo__name em {
  font-style: italic;
  color: var(--kst-gold, #C7A33C);
  font-weight: 500;
}
.kst-tpb-logo__tagline {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 254, 251, 0.55);
  font-weight: 500;
  line-height: 1.3;
}
@media (max-width: 640px) {
  .kst-tpb-logo__name { font-size: 1.25rem; }
  .kst-tpb-logo__tagline { font-size: 0.625rem; letter-spacing: 0.16em; }
}

/* ---------- TPB Hero dual routes (parents / schools) ---------- */
.kst-tpb-hero-routes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 2.5rem 0 1.75rem;
  max-width: 640px;
}
.kst-tpb-hero-route {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.25rem 1.5rem;
  text-decoration: none;
  border-radius: 4px;
  transition: transform 0.25s ease, box-shadow 0.25s ease, background 0.25s ease;
}
.kst-tpb-hero-route:hover {
  transform: translateY(-2px);
}
.kst-tpb-hero-route--primary {
  background: var(--kst-gold, #C7A33C);
  color: var(--kst-navy, #1F2D4B);
  box-shadow: 0 12px 32px rgba(199, 163, 60, 0.25);
}
.kst-tpb-hero-route--primary:hover {
  background: #FFFEFB;
  box-shadow: 0 16px 40px rgba(255, 254, 251, 0.18);
}
.kst-tpb-hero-route--secondary {
  background: transparent;
  color: #FFFEFB;
  border: 1px solid rgba(255, 254, 251, 0.32);
}
.kst-tpb-hero-route--secondary:hover {
  background: rgba(255, 254, 251, 0.06);
  border-color: rgba(255, 254, 251, 0.55);
}
.kst-tpb-hero-route__label {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  opacity: 0.75;
}
.kst-tpb-hero-route--primary .kst-tpb-hero-route__label { color: var(--kst-navy, #1F2D4B); }
.kst-tpb-hero-route__action {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1.2;
  letter-spacing: 0.005em;
}
.kst-tpb-hero-route__action strong {
  font-weight: 600;
}
.kst-tpb-hero-route__helper {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.875rem;
  opacity: 0.7;
  line-height: 1.4;
}
.kst-tpb-hero__signins {
  font-family: 'Raleway', sans-serif;
  font-size: 0.8125rem;
  color: rgba(255, 254, 251, 0.5);
  margin: 0;
  line-height: 1.65;
}
.kst-tpb-hero__signins a {
  color: var(--kst-gold, #C7A33C);
  text-decoration: none;
  border-bottom: 1px solid rgba(199, 163, 60, 0.3);
}
.kst-tpb-hero__signins a:hover { border-bottom-color: var(--kst-gold, #C7A33C); }
@media (max-width: 640px) {
  .kst-tpb-hero-routes { grid-template-columns: 1fr; gap: 0.75rem; }
}

/* ---------- TPB Free Sample panel ---------- */
.kst-tpb-sample-free {
  background: linear-gradient(180deg, #F8F2E9 0%, #F4EDDC 100%);
  padding: 5.5rem 2.5rem;
}
.kst-tpb-sample-free__inner {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
.kst-tpb-sample-free__eyebrow {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-gold-aa, #876418);
  display: block;
  margin-bottom: 1rem;
}
.kst-tpb-sample-free__heading {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-style: italic;
  font-size: clamp(1.625rem, 3vw, 2.125rem);
  line-height: 1.25;
  color: var(--kst-navy);
  margin: 0 0 1.25rem;
}
.kst-tpb-sample-free__body {
  font-family: 'Raleway', sans-serif;
  font-size: 1rem;
  line-height: 1.85;
  color: var(--kst-text-mid);
  margin: 0 0 2.5rem;
}
.kst-tpb-sample-free__links {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-top: 2rem;
}
.kst-tpb-sample-free__links a {
  background: #FFFEFB;
  border: 1px solid rgba(135, 100, 24, 0.18);
  padding: 1.25rem 1rem;
  text-decoration: none;
  color: var(--kst-navy);
  font-family: 'Raleway', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 700;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  border-radius: 2px;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.kst-tpb-sample-free__links a:hover {
  border-color: var(--kst-gold-aa, #876418);
  background: #FFFFFF;
}
.kst-tpb-sample-free__links a span {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 0.9375rem;
  letter-spacing: 0.005em;
  text-transform: none;
  color: var(--kst-text-mid);
  line-height: 1.4;
}
@media (max-width: 720px) {
  .kst-tpb-sample-free { padding: 4rem 1.5rem; }
  .kst-tpb-sample-free__links { grid-template-columns: 1fr; }
}

/* ---------- TPB FAQ ---------- */
.kst-tpb-faq {
  margin: 3rem 0 0;
  padding: 0;
  max-width: 760px;
}
.kst-tpb-faq__item {
  padding: 1.75rem 0;
  border-bottom: 1px solid var(--kst-border);
}
.kst-tpb-faq__item:first-child { border-top: 1px solid var(--kst-border); }
.kst-tpb-faq dt {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.1875rem;
  line-height: 1.35;
  color: var(--kst-navy);
  margin: 0 0 0.625rem;
}
.kst-tpb-faq dd {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  line-height: 1.8;
  color: var(--kst-text-mid);
  margin: 0;
}
.kst-tpb-faq dd a { color: var(--kst-gold-aa, #876418); }

/* ---------- TPB Schools (dark, equal weight) ---------- */
.kst-tpb-schools {
  background: var(--kst-navy);
  color: #FFFEFB;
  padding-top: 7rem;
  padding-bottom: 7rem;
}
.kst-tpb-schools__pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem 2.5rem;
  margin: 4rem auto 0;
  max-width: 1100px;
}
.kst-tpb-schools__pillar {
  padding-left: 2.75rem;
  position: relative;
}
.kst-tpb-schools__num {
  position: absolute;
  left: 0;
  top: 0;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.875rem;
  color: var(--kst-gold, #C7A33C);
  line-height: 1;
}
.kst-tpb-schools__pillar h3 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1.3;
  color: #FFFEFB;
  margin: 0 0 0.75rem;
}
.kst-tpb-schools__pillar p {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  line-height: 1.75;
  color: rgba(255,254,251,0.72);
  margin: 0;
}
.kst-tpb-schools__process {
  margin: 5rem auto 0;
  max-width: 820px;
  padding: 3rem 3rem 2.5rem;
  background: rgba(255,254,251,0.04);
  border: 1px solid rgba(199, 162, 60, 0.18);
  border-radius: 4px;
}
.kst-tpb-schools__process-title {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 500;
  font-size: 1.5rem;
  color: var(--kst-gold, #C7A33C);
  margin: 0 0 1.5rem;
  text-align: center;
}
.kst-tpb-schools__process ol {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 1.25rem;
}
.kst-tpb-schools__process ol li {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 1.25rem;
  align-items: baseline;
  padding: 1.25rem 0;
  border-bottom: 1px dotted rgba(199,162,60,0.18);
}
.kst-tpb-schools__process ol li:last-child { border-bottom: none; }
.kst-tpb-schools__process-num {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1.5rem;
  color: var(--kst-gold, #C7A33C);
  line-height: 1;
  display: block;
}
.kst-tpb-schools__process-content {
  min-width: 0;
}
.kst-tpb-schools__process-content strong {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: #FFFEFB;
  display: block;
  margin-bottom: 0.5rem;
}
.kst-tpb-schools__process-content em {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1rem;
  color: rgba(255,254,251,0.78);
  line-height: 1.65;
  display: block;
}
.kst-tpb-schools__cta-wrap {
  margin: 4rem auto 0;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  align-items: center;
}
.kst-tpb-schools__cta {
  display: inline-block;
  background: var(--kst-gold, #C7A33C);
  color: var(--kst-navy);
  padding: 1.125rem 2.25rem;
  font-family: 'Raleway', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  text-decoration: none;
  border-radius: 2px;
  transition: background 0.2s ease;
}
.kst-tpb-schools__cta:hover { background: #FFFEFB; }
.kst-tpb-schools__cta-helper {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.9375rem;
  color: rgba(255,254,251,0.55);
}
@media (max-width: 980px) {
  .kst-tpb-schools__pillars { grid-template-columns: 1fr 1fr; }
  .kst-tpb-schools__process { padding: 2.5rem 1.75rem 2rem; }
}
@media (max-width: 640px) {
  .kst-tpb-schools__pillars { grid-template-columns: 1fr; }
  .kst-tpb-schools__pillar { padding-left: 0; }
  .kst-tpb-schools__num { position: static; display: block; margin-bottom: 0.5rem; }
  .kst-tpb-schools__process ol li { grid-template-columns: 1fr; gap: 0.5rem; }
}

/* ---------- TPB nav badge — a true miniature of theparentbook.com logo lockup.
   Square outline + gold dot mark + italic Cormorant "The Parent Book."
   Sits inline in the nav row alongside other nav items. */
.tpb-badge {
  /* v73d — flat alignment inside the nav row. No padding/border that
     would inflate the bounding box vs sibling nav links. Wordmark
     differentiation comes from font (Iowan Old Style) and italic on
     "Book.", not from a button-style frame. */
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  padding: 0;
  background: transparent;
  text-decoration: none;
  line-height: 1;
  border-radius: 0;
  transition: opacity 0.2s ease;
  white-space: nowrap;
  border: none;
  vertical-align: baseline;
}
.tpb-badge:hover {
  background: rgba(199, 162, 60, 0.08);
  border-color: rgba(199, 162, 60, 0.25);
}
/* The square + dot mark — drawn in CSS so it always works */
.tpb-badge__mark {
  position: relative;
  display: inline-block;
  width: 18px;
  height: 18px;
  border: 1px solid currentColor;
  opacity: 0.6;
  flex-shrink: 0;
  border-radius: 1px;
}
.tpb-badge__mark::before {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--kst-gold, #C7A33C);
  opacity: 1;
}
/* v73a — Parent Book wordmark in nav. Publication-style lockup,
   no glyph. "The Parent" in gold-deep (regular), italic "Book." in
   burgundy. Classical serif stack so it reads as a wordmark, not
   a generic nav item. Matches theparentbook.com wordmark intent. */
.tpb-badge {
  color: var(--kst-navy, #1F2D4B);  /* fallback when no parent context sets it */
}
.tpb-badge__label {
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  font-family: 'Iowan Old Style', 'Palatino Linotype', Palatino, Cambria, Georgia, serif;
  font-weight: 500;
  font-size: 1.0625rem;
  line-height: 1;
  letter-spacing: 0.005em;
}
.tpb-badge__label-the {
  font-style: normal;
  font-weight: 500;
  color: #B8932A;                  /* gold-deep */
  letter-spacing: 0.005em;
}
.tpb-badge__label-book {
  /* v73d — burgundy was disappearing against the navy header. Switch to
     gold-deep italic; italic alone differentiates "Book." from "The Parent". */
  font-style: italic;
  font-weight: 500;
  color: #B8932A;                  /* gold-deep, italic */
  margin-left: 0.22em;
}
/* legacy spans, in case any haven't been re-templated yet */
.tpb-badge__label-name {
  font-style: italic;
  font-weight: 500;
  color: #B8932A;
}
.tpb-badge__label-name::after { content: none; }
.tpb-badge__mark { display: none !important; }   /* v73a — glyph removed */

.tpb-badge:hover .tpb-badge__label-the,
.tpb-badge:hover .tpb-badge__label-book,
.tpb-badge:hover .tpb-badge__label-name { color: #E5C674; }   /* lift to brighter gold on hover */

/* Header nav — both labels gold-deep so they read against navy. */
.kst-nav .tpb-badge,
.kst-header .tpb-badge { color: inherit; }
.kst-nav .tpb-badge .tpb-badge__label-the,
.kst-header .tpb-badge .tpb-badge__label-the,
.kst-nav .tpb-badge .tpb-badge__label-book,
.kst-header .tpb-badge .tpb-badge__label-book,
.kst-nav .tpb-badge .tpb-badge__label-name,
.kst-header .tpb-badge .tpb-badge__label-name { color: #B8932A; }
.kst-nav .tpb-badge:hover .tpb-badge__label-the,
.kst-nav .tpb-badge:hover .tpb-badge__label-book,
.kst-nav .tpb-badge:hover .tpb-badge__label-name,
.kst-header .tpb-badge:hover .tpb-badge__label-the,
.kst-header .tpb-badge:hover .tpb-badge__label-book,
.kst-header .tpb-badge:hover .tpb-badge__label-name { color: #E5C674; }

/* Match the height/line-height of sibling .kst-nav__link items so the
   wordmark sits on the same baseline as the other nav text. */
.kst-nav .tpb-badge,
.kst-header .tpb-badge {
  font-size: 10.5px;
  letter-spacing: 0.005em;
  line-height: 1;
  padding: 0;
  margin: 0;
}
.kst-nav .tpb-badge .tpb-badge__label,
.kst-header .tpb-badge .tpb-badge__label {
  font-size: 1.0625rem;  /* the wordmark itself stays at its design size */
  line-height: 1;
}

/* Mobile burger menu — same gold-deep treatment so it reads on navy. */
.kst-nav__mobile-also .tpb-badge { color: inherit; }
.kst-nav__mobile-also .tpb-badge .tpb-badge__label-the,
.kst-nav__mobile-also .tpb-badge .tpb-badge__label-book,
.kst-nav__mobile-also .tpb-badge .tpb-badge__label-name { color: #B8932A; }

/* v73e — schools page logo sizing fix.
   .kst-nav-s__logo wasn't picking up the kst-header-elevation rules
   (those target .kst-nav__logo only). Result: schools rendered img at
   76px + text spans stacked vertically (logo box 105px tall vs 68px
   on every other page). Mirror the canonical layout here. */
.kst-nav-s__logo {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.625rem !important;
  text-decoration: none !important;
}
.kst-nav-s__logo img.kst-nav__logo-mark {
  display: block !important;
  width: 56px !important;
  height: 56px !important;
  max-width: 56px !important;
  max-height: 56px !important;
  flex-shrink: 0 !important;
  object-fit: contain !important;
  aspect-ratio: 1 / 1 !important;
}
@media (min-width: 881px) and (max-width: 1200px) {
  .kst-nav-s__logo img.kst-nav__logo-mark {
    width: 60px !important; height: 60px !important;
    max-width: 60px !important; max-height: 60px !important;
  }
}
@media (min-width: 1201px) {
  .kst-nav-s__logo img.kst-nav__logo-mark {
    width: 68px !important; height: 68px !important;
    max-width: 68px !important; max-height: 68px !important;
  }
}

/* v73d — schools page mobile drawer fix.
   The .kst-nav-s__mobile background is navy, but a cascade override
   was painting .kst-nav-s__link items navy too — invisible on the
   navy drawer. Force gold so the primary nav items are readable
   when the hamburger is open. */
.kst-nav-s__mobile a,
.kst-nav-s__mobile a.kst-nav-s__link {
  color: #C7A33C !important;
}
.kst-nav-s__mobile a.kst-nav-s__link.is-active {
  color: #FFFFFF !important;
}
.kst-nav-s__mobile a.kst-nav-s__cta {
  color: #FFFFFF !important;
}

/* Footer + mobile contexts — same look, slightly muted */
.kst-footer .tpb-badge,
.kst-nav__mobile-also .tpb-badge {
  background: transparent;
}
.kst-footer .tpb-badge:hover,
.kst-nav__mobile-also .tpb-badge:hover {
  background: rgba(199, 162, 60, 0.06);
}

/* ---------- TPB Sample cards (chapter / self-care / topics) ---------- */
.kst-tpb-samples {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin: 3rem auto 0;
  max-width: 1200px;
}
.kst-tpb-sample {
  background: #FFFEFB;
  border: 1px solid var(--kst-border);
  padding: 2.25rem;
  display: flex;
  flex-direction: column;
  position: relative;
}
.kst-tpb-sample__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-family: 'Raleway', sans-serif;
  font-size: 0.625rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-text-muted);
  margin-bottom: 1.25rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--kst-border);
}
.kst-tpb-sample__kind {
  color: var(--kst-gold-aa, #876418);
}
.kst-tpb-sample__title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.25;
  color: var(--kst-navy);
  margin: 0 0 0.625rem;
}
.kst-tpb-sample__dek {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1rem;
  color: var(--kst-text-mid);
  margin: 0 0 1.25rem;
  line-height: 1.45;
}
.kst-tpb-sample__body {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--kst-text-mid);
  margin: 0 0 1rem;
}
.kst-tpb-sample__body:last-of-type { margin-bottom: 1.5rem; }
.kst-tpb-sample__cta {
  margin-top: auto;
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-gold-aa, #876418);
  text-decoration: none;
  border-bottom: 1px solid rgba(135, 100, 24, 0.25);
  align-self: flex-start;
  padding-bottom: 0.25rem;
}
.kst-tpb-sample__cta:hover { border-bottom-color: var(--kst-gold-aa, #876418); }
.kst-tpb-sample__topics {
  list-style: none;
  padding: 0;
  margin: 0 0 1.5rem;
  flex-grow: 1;
}
.kst-tpb-sample__topics li {
  font-family: 'Raleway', sans-serif;
  font-size: 0.875rem;
  color: var(--kst-navy);
  padding: 0.625rem 0;
  border-bottom: 1px dotted rgba(31,45,75,0.12);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
}
.kst-tpb-sample__topics li:last-child { border-bottom: none; }
.kst-tpb-sample__topics li span {
  font-size: 0.75rem;
  color: var(--kst-text-muted);
  font-style: italic;
  text-align: right;
  flex-shrink: 0;
}
@media (max-width: 980px) {
  .kst-tpb-samples { grid-template-columns: 1fr; gap: 1.25rem; }
}

/* ---------- TPB Why-subscribe pillars ---------- */
.kst-tpb-pillars {
  list-style: none;
  padding: 0;
  margin: 3rem 0 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem 2.5rem;
}
.kst-tpb-pillars li {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9875rem;
  line-height: 1.75;
  color: var(--kst-text-mid);
  padding-left: 1.5rem;
  position: relative;
}
.kst-tpb-pillars li::before {
  content: '\2756';
  position: absolute;
  left: 0;
  top: 0.125rem;
  color: var(--kst-gold-aa, #876418);
  font-size: 0.875rem;
}
.kst-tpb-pillars li strong {
  display: block;
  color: var(--kst-navy);
  font-weight: 700;
  margin-bottom: 0.25rem;
}
@media (max-width: 720px) {
  .kst-tpb-pillars { grid-template-columns: 1fr; }
}

/* ---------- TPB Rhythm of six volumes (v73g) ----------
   Editorial rewrite: navy section, cream tiles, season-themed top
   strokes (autumn warm amber, spring eucalyptus, summer terracotta).
   Mirrors the "Coloured by the season" pattern on theparentbook.com. */
.kst-tpb-rhythm-section {
  background: #1F2D4B;
  color: #FFFEFB;
  padding: 6rem 2rem 6.5rem;
}
.kst-tpb-rhythm-section__inner { max-width: 1120px; margin: 0 auto; }
.kst-tpb-rhythm-section__header { text-align: center; max-width: 760px; margin: 0 auto 3.5rem; }
.kst-tpb-rhythm-section__eyebrow {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: #C7A33C;
  font-weight: 700;
  display: block;
  margin-bottom: 1.25rem;
}
.kst-tpb-rhythm-section__title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: clamp(1.875rem, 3.6vw, 2.75rem);
  line-height: 1.2;
  color: #FFFEFB;
  margin: 0 0 1.25rem;
}
.kst-tpb-rhythm-section__title em {
  font-style: italic; font-weight: 400; color: #C7A33C;
}
.kst-tpb-rhythm-section__lede {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1.0625rem;
  line-height: 1.7;
  color: rgba(255,254,251,0.78);
  margin: 0;
}
.kst-tpb-rhythm-section__lede em { font-style: italic; color: #C7A33C; }

.kst-tpb-rhythm {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1.25rem;
}
.kst-tpb-rhythm__item {
  background: #F8F2E9;
  border-top: 3px solid #C7A33C;   /* default; overridden per season */
  padding: 1.5rem 1.25rem 1.5rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
  position: relative;
  min-height: 200px;
  transition: transform 0.25s ease;
}
.kst-tpb-rhythm__item:hover { transform: translateY(-2px); }

/* Season-themed top stroke + accent text */
.kst-tpb-rhythm__item--autumn { border-top-color: #C58A2E; }
.kst-tpb-rhythm__item--spring { border-top-color: #4A7A6A; }
.kst-tpb-rhythm__item--summer { border-top-color: #B25837; }

.kst-tpb-rhythm__num {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-weight: 400;
  font-size: 1.75rem;
  color: #B8932A;
  line-height: 1;
  margin: 0 0 0.25rem;
}
.kst-tpb-rhythm__item--autumn .kst-tpb-rhythm__num { color: #A66E22; }
.kst-tpb-rhythm__item--spring .kst-tpb-rhythm__num { color: #2F5A4E; }
.kst-tpb-rhythm__item--summer .kst-tpb-rhythm__num { color: #8B3F23; }

.kst-tpb-rhythm__season {
  font-family: 'Cormorant Garamond', serif;
  font-style: normal;
  font-weight: 500;
  font-size: 1.1875rem;
  color: #1F2D4B;
  line-height: 1.2;
  letter-spacing: 0.005em;
}
.kst-tpb-rhythm__season em {
  font-style: italic;
  font-weight: 400;
  color: #876418;
  margin-left: 0.15em;
}
.kst-tpb-rhythm__term {
  font-family: 'Raleway', sans-serif;
  font-size: 0.625rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 700;
  color: rgba(31,45,75,0.58);
  margin: 0 0 0.5rem;
}
.kst-tpb-rhythm__term em {
  font-style: italic;
  text-transform: none;
  letter-spacing: 0.05em;
  font-weight: 500;
  color: rgba(135,100,24,0.85);
  margin-left: 0.15em;
}
.kst-tpb-rhythm__themes {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: #4A5568;
  margin: auto 0 0;
}
.kst-tpb-rhythm__flag {
  position: absolute;
  top: -3px;
  right: 0.875rem;
  background: #C7A33C;
  color: #1F2D4B;
  font-family: 'Raleway', sans-serif;
  font-size: 0.5625rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 0.25rem 0.625rem 0.2rem;
  border-radius: 0 0 2px 2px;
}
.kst-tpb-rhythm__item--current {
  box-shadow: 0 8px 28px rgba(0,0,0,0.18);
}

@media (max-width: 1100px) {
  .kst-tpb-rhythm { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 720px) {
  .kst-tpb-rhythm { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
  .kst-tpb-rhythm__item { min-height: auto; padding: 1.25rem 1rem; }
}
@media (max-width: 440px) {
  .kst-tpb-rhythm { grid-template-columns: 1fr; }
}

/* ---------- TPB Sticky subscribe bar ---------- */
.kst-tpb-stickybar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
  background: var(--kst-navy);
  color: #FFFFFF;
  border-top: 2px solid var(--kst-gold, #C7A33C);
  box-shadow: 0 -4px 32px rgba(0,0,0,0.15);
  animation: kst-tpb-stickybar-slide 0.4s ease;
}
@keyframes kst-tpb-stickybar-slide {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}
.kst-tpb-stickybar__inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0.875rem 1.25rem;
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.kst-tpb-stickybar__copy {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  min-width: 0;
}
.kst-tpb-stickybar__brand {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.0625rem;
  color: #FFFFFF;
  line-height: 1.2;
}
.kst-tpb-stickybar__price {
  font-family: 'Raleway', sans-serif;
  font-size: 0.8125rem;
  color: rgba(255,255,255,0.75);
  letter-spacing: 0.05em;
}
.kst-tpb-stickybar__price strong {
  color: var(--kst-gold, #C7A33C);
  font-weight: 700;
}
.kst-tpb-stickybar__cta {
  background: var(--kst-gold, #C7A33C);
  color: var(--kst-navy);
  font-family: 'Raleway', sans-serif;
  font-weight: 700;
  font-size: 0.75rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 0.875rem 1.5rem;
  border-radius: 2px;
  white-space: nowrap;
  transition: background 0.2s ease;
}
.kst-tpb-stickybar__cta:hover { background: #FFFFFF; }
.kst-tpb-stickybar__dismiss {
  background: none;
  border: none;
  color: rgba(255,255,255,0.5);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.25rem 0.5rem;
  transition: color 0.2s ease;
}
.kst-tpb-stickybar__dismiss:hover { color: #FFFFFF; }
@media (max-width: 640px) {
  .kst-tpb-stickybar__inner { padding: 0.75rem 0.875rem; gap: 0.75rem; }
  .kst-tpb-stickybar__brand { font-size: 0.9375rem; }
  .kst-tpb-stickybar__price { font-size: 0.75rem; }
  .kst-tpb-stickybar__cta { padding: 0.75rem 1rem; font-size: 0.6875rem; letter-spacing: 0.16em; }
}

/* ---------- TPB Two-Routes module (the-parent-book.html) ---------- */
.kst-tpb-routes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.75rem;
  max-width: 1040px;
  margin: 3rem auto 0;
}
.kst-tpb-route {
  background: #FFFFFF;
  border: 1px solid var(--kst-border);
  padding: 2.5rem 2.25rem;
  display: flex;
  flex-direction: column;
  position: relative;
}
.kst-tpb-route--featured {
  background: #FFFEFB;
  border: 1px solid var(--kst-gold-aa, #876418);
  box-shadow: 0 16px 48px rgba(31, 45, 75, 0.06);
}
.kst-tpb-route--featured::before {
  content: 'Direct subscription';
  position: absolute;
  top: -0.625rem;
  left: 2rem;
  background: var(--kst-gold-aa, #876418);
  color: #FFFEFB;
  font-family: 'Raleway', sans-serif;
  font-size: 0.625rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  padding: 0.375rem 0.875rem;
  border-radius: 2px;
}
.kst-tpb-route__kicker {
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--kst-gold-aa, #876418);
  margin-bottom: 0.875rem;
}
.kst-tpb-route__title {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 500;
  font-size: 1.875rem;
  line-height: 1.2;
  color: var(--kst-navy);
  margin: 0 0 1rem;
}
.kst-tpb-route__price {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  color: var(--kst-text-mid);
  margin: 0 0 1.5rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--kst-border);
}
.kst-tpb-route__price-amount {
  font-family: 'Cormorant Garamond', serif;
  font-size: 2.25rem;
  font-weight: 500;
  color: var(--kst-navy);
  line-height: 1;
}
.kst-tpb-route__price-period {
  font-style: italic;
  color: var(--kst-text-muted);
}
.kst-tpb-route__list {
  list-style: none;
  padding: 0;
  margin: 0 0 1.75rem;
  flex-grow: 1;
}
.kst-tpb-route__list li {
  font-family: 'Raleway', sans-serif;
  font-size: 0.9375rem;
  line-height: 1.7;
  color: var(--kst-text-mid);
  padding: 0.5rem 0 0.5rem 1.5rem;
  position: relative;
}
.kst-tpb-route__list li::before {
  content: '\2756';
  position: absolute;
  left: 0;
  color: var(--kst-gold-aa, #876418);
  font-size: 0.75rem;
  top: 0.625rem;
}
.kst-tpb-route__cta-helper {
  font-family: 'Raleway', sans-serif;
  font-size: 0.8125rem;
  font-style: italic;
  color: var(--kst-text-muted);
  margin: 0 0 1.25rem;
  line-height: 1.6;
}
.kst-tpb-route__cta {
  display: inline-block;
  text-decoration: none;
  background: var(--kst-gold-aa, #876418);
  color: #FFFFFF;
  padding: 1rem 1.75rem;
  font-family: 'Raleway', sans-serif;
  font-size: 0.6875rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  border-radius: 2px;
  text-align: center;
  transition: background 0.2s ease;
}
.kst-tpb-route__cta:hover { background: var(--kst-navy); }
.kst-tpb-route__cta--ghost {
  background: transparent;
  color: var(--kst-navy);
  border: 1px solid var(--kst-navy);
}
.kst-tpb-route__cta--ghost:hover {
  background: var(--kst-navy);
  color: #FFFFFF;
}
.kst-tpb-routes__footnote {
  max-width: 720px;
  margin: 3rem auto 0;
  text-align: center;
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 0.9375rem;
  color: var(--kst-text-muted);
  line-height: 1.7;
}
@media (max-width: 720px) {
  .kst-tpb-routes { grid-template-columns: 1fr; gap: 1.25rem; }
}

/* ---------- How-we-work service grid (responsive) ---------- */
.kst-howwork-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  max-width: 1000px;
  margin: 0 auto;
}
.kst-howwork-grid > a:hover {
  box-shadow: 0 12px 40px rgba(197,162,60,0.12);
  transform: translateY(-2px);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
@media (max-width: 720px) {
  .kst-howwork-grid {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
}

/* ---------- WCAG AA contrast — v69 overrides ----------
   Original palette:
     --kst-gold       #C5A23C  fails AA on cream for small text (~2.4:1)
     --kst-text-muted #718096  fails AA on cream for small text (~3.6:1)
   These overrides keep the brand look but pass 4.5:1 for body text.
   ----------------------------------------------------- */
:root {
  --kst-text-muted: #5C5C66;   /* was #718096; now passes AA on cream */
  --kst-gold-aa:    #876418;   /* darker gold, AA-passes for small text on cream */
}

/* Use the AA gold for any small-text uppercase eyebrow / kicker that sits on
   cream/off-white. Display-size gold (large headings) keeps the lighter
   --kst-gold for brand fidelity since contrast rules relax for 18pt+. */
.kst-section--cream .kst-section__eyebrow,
.kst-section--off-white .kst-section__eyebrow,
.kst-section--cream .kst-founder__kicker,
.kst-section--off-white .kst-founder__kicker,
.kst-insight__cta,
.kst-contact-track__kicker,
.kst-governance__term {
  color: var(--kst-gold-aa);
}

/* Ensure eyebrow/kicker on white backgrounds is also dark enough */
.kst-section--white .kst-section__eyebrow {
  color: var(--kst-gold-aa);
}

/* ---------- Focus rings: brand-consistent ---------- */
*:focus-visible {
  outline: 2px solid var(--kst-gold, #C7A33C);
  outline-offset: 3px;
  border-radius: 2px;
}

/* ─── v143 — wellbeing tips: plain wordmark + thin hairline ─────
   v135 stripped the cream pill but kst-header-elevation.css L561
   was still pinning a 1px rgba(248,248,245,0.18) border around
   .kst-nav .wt-badge with same specificity but later source order —
   leaving a faint outlined box around the WT link on the navy nav.
   v143 (this rule + the matched edit in kst-header-elevation.css)
   strips ALL chrome around the link: no pill, no box, no border,
   no background fill, no padding-based outline.

   In place of the chrome, a thin 1px hairline sits directly under
   the italic Lora wordmark only — the three brand dots stay
   uncovered. Paralleling The Parent Book wordmark on the same nav:
   PB carries a gold-deep hairline beneath it; WT now carries a white
   hairline beneath. Restrained publication-house convention: both
   sister brands carry a wordmark with a hairline underneath, each
   in its own colour.

   Surface adapts:
     navy nav  → white #F8F8F5 hairline beneath label
     footer    → dark-ink #3A2F22 hairline beneath label (cream ground)

   Implemented via background-image linear-gradient + background-size
   100% 1px, matching the TPB hairline technique in kst-header-
   elevation.css L40-54.                                              */
.kst-nav .wt-badge,
.kst-nav__mobile .wt-badge,
.kst-footer .wt-badge,
a.wt-badge {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0.25rem 0 !important;
  box-shadow: none !important;
  gap: 0.5rem !important;
}
.kst-nav .wt-badge:hover,
.kst-nav .wt-badge:focus-visible,
.kst-nav__mobile .wt-badge:hover,
.kst-nav__mobile .wt-badge:focus-visible,
.kst-footer .wt-badge:hover,
.kst-footer .wt-badge:focus-visible,
a.wt-badge:hover,
a.wt-badge:focus-visible {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  transform: none !important;
}
/* Label — wordmark colour + the thin hairline beneath it.
   The hairline is drawn as a 1px linear-gradient background on
   the label itself, so it underlines ONLY the wordmark — not the
   dots, not the surrounding link box. Same technique as the TPB
   gold-deep hairline.                                            */
.kst-nav .wt-badge .wt-badge__label,
.kst-nav__mobile .wt-badge .wt-badge__label {
  color: #F8F8F5 !important;
  --wt-line: rgba(248, 248, 245, 0.55);
  background-image: linear-gradient(var(--wt-line), var(--wt-line)) !important;
  background-position: 0 92% !important;
  background-repeat: no-repeat !important;
  background-size: 100% 1px !important;
  padding-bottom: 0.18em !important;
  transition: color 250ms cubic-bezier(0.2, 0.7, 0.2, 1),
              background-size 350ms cubic-bezier(0.2, 0.7, 0.2, 1) !important;
}
.kst-nav .wt-badge:hover .wt-badge__label,
.kst-nav .wt-badge:focus-visible .wt-badge__label,
.kst-nav__mobile .wt-badge:hover .wt-badge__label,
.kst-nav__mobile .wt-badge:focus-visible .wt-badge__label {
  --wt-line: #F8F8F5;
  background-size: 100% 1.5px !important;
}
/* Footer surface is cream; swap white for dark-ink hairline so it
   stays visible on the lighter ground.                              */
.kst-footer .wt-badge .wt-badge__label {
  color: #3A2F22 !important;
  --wt-line: rgba(58, 47, 34, 0.45);
  background-image: linear-gradient(var(--wt-line), var(--wt-line)) !important;
  background-position: 0 92% !important;
  background-repeat: no-repeat !important;
  background-size: 100% 1px !important;
  padding-bottom: 0.18em !important;
  transition: background-size 350ms cubic-bezier(0.2, 0.7, 0.2, 1) !important;
}
.kst-footer .wt-badge:hover .wt-badge__label,
.kst-footer .wt-badge:focus-visible .wt-badge__label {
  --wt-line: rgba(58, 47, 34, 0.9);
  background-size: 100% 1.5px !important;
}


/* ─── v142 — hoisted from inline <style id="kst-premium-css"> on 14 legacy
   pages. Was identical (hash db43479…) on 13 pages, slightly corrupted on
   how-we-work.html due to the v73-WIP regex bug (rgba commas eaten and
   em-dashes lost). Hoisting fixes the broken rgba values for free and
   saves ~742 lines of duplicated inline CSS across the 14 pages.

   Contents: skip-to-content link, trust-band gold-on-cream strip,
   cookie banner + consent prefs panel, withdraw-consent link styling.
   All rules use !important to win the cascade against any other
   stylesheet that might touch these surfaces — preserved here. */
    /* Skip-to-content link */
    a.kst-skip-link { position:fixed !important; top:-48px !important; left:8px !important; background:#1F2D4B !important; color:#F8F8F5 !important; padding:10px 18px !important; font-family:'Raleway',sans-serif !important; font-size:12px !important; letter-spacing:.08em !important; text-transform:uppercase !important; text-decoration:none !important; z-index:2147483646 !important; border-radius:2px !important; transition:top .15s ease !important; outline:2px solid #C7A33C !important; }
    a.kst-skip-link:focus, a.kst-skip-link:focus-visible { top:8px !important; }

    /* Trust band — gold-on-cream strip */
    .kst-trust { background:#F8F2E9; border-top:1px solid rgba(199,163,60,.6); border-bottom:1px solid rgba(199,163,60,.6); padding:32px 24px; font-family:'Raleway',sans-serif; min-height:96px; box-sizing:border-box; }
    .kst-trust__inner { max-width:980px; margin:0 auto; display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:36px; }
    .kst-trust__badge-img { height: 84px; width: auto; max-width: 280px; object-fit: contain; display: block; }
    /* Schools header logo — match other pages (92px) */
    .kst-nav-s { height: 110px !important; } .kst-nav-s__logo img { height: 92px !important; width: auto !important; max-width: 100%; } @media (max-width: 991px) { .kst-nav-s__logo img { content: url("wp-content/uploads/2026/04/KST-lockup-stacked-2026-04.png") !important; height: 92px !important; width: auto !important; } }
    .kst-trust__label { font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:rgba(31,45,75,.7); font-weight:300; }
    .kst-trust__items { display:flex; flex-wrap:wrap; align-items:center; gap:40px; }
    .kst-trust__item { display:flex; flex-direction:column; align-items:center; gap:6px; min-width:90px; }
    .kst-trust__badge { width:64px; height:64px; }
    .kst-trust__role { font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:rgba(31,45,75,.6); font-weight:400; }
    .kst-trust__org { font-family:'Cormorant Garamond',serif; font-weight:300; font-size:20px; color:#1F2D4B; line-height:1; }
    .kst-trust__item a { text-decoration:none; color:#1F2D4B; display:flex; flex-direction:column; align-items:center; gap:4px; }
    .kst-trust__item a:hover .kst-trust__org { color:#C7A33C; }
    @media (max-width:640px) { .kst-trust__inner { flex-direction:column; gap:24px; } }

    /* Cookie banner */
    #kst-consent { position:fixed !important; left:0 !important; right:0 !important; bottom:0 !important; background:#1F2D4B !important; color:#F8F8F5 !important; padding:18px 24px !important; font-family:'Raleway',sans-serif !important; font-size:14px !important; line-height:1.5 !important; z-index:2147483647 !important; border-top:2px solid #C7A33C !important; display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:12px !important; justify-content:center !important; box-shadow:0 -4px 24px rgba(0,0,0,.18) !important; }
    #kst-consent[hidden] { display:none !important; }
    #kst-consent span.kst-c-msg { max-width:560px; }
    #kst-consent a { color:#C7A33C; text-decoration:underline; }
    #kst-consent button { background:#C7A33C; color:#FFFFFF; border:0; padding:10px 22px; font-family:inherit; font-weight:700; font-size:12px; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; border-radius:2px; }
    #kst-consent button.secondary { background:transparent; color:#F8F8F5; border:1px solid rgba(248,248,245,.4); }

    /* Manage cookies dialog */
    #kst-consent-prefs { position:fixed; inset:0; background:rgba(31,45,75,.7); z-index:2147483647; display:none; align-items:center; justify-content:center; padding:24px; font-family:'Raleway',sans-serif; }
    #kst-consent-prefs[open] { display:flex; }
    #kst-consent-prefs .panel { background:#FFFFFF; max-width:520px; width:100%; padding:32px; border-radius:4px; }
    #kst-consent-prefs h2 { font-family:'Cormorant Garamond',serif; font-weight:300; font-size:32px; color:#1F2D4B; margin:0 0 12px; }
    #kst-consent-prefs p { font-size:14px; color:#1F2D4B; line-height:1.5; }
    #kst-consent-prefs .row { display:flex; justify-content:space-between; align-items:flex-start; padding:16px 0; border-top:1px solid #E8E2D2; }
    #kst-consent-prefs .row strong { display:block; font-size:13px; color:#1F2D4B; }
    #kst-consent-prefs .row span { display:block; font-size:12px; color:#1F2D4B; opacity:.65; margin-top:4px; max-width:340px; }
    #kst-consent-prefs label.toggle { position:relative; display:inline-block; width:42px; height:24px; }
    #kst-consent-prefs label.toggle input { opacity:0; width:0; height:0; }
    #kst-consent-prefs label.toggle .slider { position:absolute; cursor:pointer; inset:0; background:#D5CFB9; border-radius:24px; transition:.2s; }
    #kst-consent-prefs label.toggle .slider:before { content:""; position:absolute; height:18px; width:18px; left:3px; top:3px; background:#FFFFFF; border-radius:50%; transition:.2s; }
    #kst-consent-prefs label.toggle input:checked + .slider { background:#C7A33C; }
    #kst-consent-prefs label.toggle input:checked + .slider:before { transform:translateX(18px); }
    #kst-consent-prefs label.toggle input:disabled + .slider { opacity:.6; cursor:not-allowed; }
    #kst-consent-prefs .actions { display:flex; gap:12px; margin-top:24px; }
    #kst-consent-prefs .actions button { flex:1; padding:12px 16px; font-family:'Raleway',sans-serif; font-weight:700; font-size:12px; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; border-radius:2px; }
    #kst-consent-prefs .actions button.primary { background:#C7A33C; color:#FFFFFF; border:0; }
    #kst-consent-prefs .actions button.secondary { background:transparent; color:#1F2D4B; border:1px solid rgba(31,45,75,.3); }

    /* Withdraw-consent link in footer */
    .kst-footer .kst-cookie-withdraw { background:none; border:0; color:inherit; cursor:pointer; font:inherit; padding:0; text-decoration:underline; }
