/* =============================================================
   stephuary-brand-polish.css
   Prompt 4 — the last 10% across every page.

   Ships AFTER stephuary-a11y.css so its tokens win over per-page
   drift without fighting the focus/motion/nav overrides.

   Scope:
     §1  Consistent section rhythm      → .sh-section
     §2  Typographic scale              → .sh-h1 / .sh-h2 / ...
     §3  Hero weight parity             → .sh-hero, .sh-hero__art
     §4  Canonical button system        → .btn[--primary|--secondary|--tertiary]
     §5  Shared footer                  → .sh-footer
     §6  Hero intro motion              → .sh-hero-intro (280ms ease-out)

   Palette reminders (from tokens):
     navy  #0B1730   gold  #C9A24A   cream #F8F3EA
============================================================= */

/* -- §1  Section rhythm -------------------------------------- */
.sh-section {
  padding-block: var(--space-section, clamp(4rem, 8vw, 8rem));
  padding-inline: var(--container-pad-x, 24px);
  position: relative;
}
.sh-section--tight { padding-block: calc(var(--space-section) * 0.6); }
.sh-section--loose { padding-block: calc(var(--space-section) * 1.25); }
.sh-section__inner {
  max-width: var(--layout-max, 1200px);
  margin-inline: auto;
}

/* -- §2  Typographic scale ---------------------------------- */
.sh-display,
.sh-h1,
.sh-h2,
.sh-h3 {
  font-family: var(--font-serif, 'Playfair Display', Georgia, serif);
  font-weight: var(--font-weight-serif, 500);
  letter-spacing: var(--letter-h, -0.02em);
  color: var(--text-primary, #f4ede0);
  margin: 0;
}
.sh-display { font-size: var(--fs-display); line-height: 1.05; }
.sh-h1      { font-size: var(--fs-h1);      line-height: var(--lh-h1, 1.1); }
.sh-h2      { font-size: var(--fs-h2);      line-height: var(--lh-h2, 1.15); }
.sh-h3      { font-size: var(--fs-h3);      line-height: var(--lh-h3, 1.2); }
.sh-body {
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  font-size: var(--fs-body);
  line-height: var(--lh-body, 1.6);
  color: var(--text-secondary, #b5aa9c);
  margin: 0;
}
.sh-caption {
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  font-size: var(--fs-caption);
  line-height: var(--lh-small, 1.5);
  color: var(--text-tertiary, #7a7268);
  letter-spacing: 0.02em;
  margin: 0;
}

/* -- §3  Hero weight parity --------------------------------
   index's hero anchors visual weight. snapshot / access / d
   borrow the same ornament container so siblings match.
----------------------------------------------------------- */
.sh-hero {
  padding-block: clamp(4.5rem, 9vw, 9rem);
  padding-inline: var(--container-pad-x, 24px);
  position: relative;
  isolation: isolate;
}
.sh-hero__inner {
  max-width: var(--layout-max, 1200px);
  margin-inline: auto;
  position: relative;
  z-index: 1;
}
/* Ornamental gold ring — the same asset every hero page draws,
   no new imagery introduced. Sized to read identically at 390,
   768, 1440. */
.sh-hero__art {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(540px, 70vw);
  aspect-ratio: 1 / 1;
  border-radius: 999px;
  background:
    radial-gradient(closest-side,
      rgba(201, 162, 74, 0.10) 0%,
      rgba(201, 162, 74, 0.04) 48%,
      rgba(201, 162, 74, 0) 72%);
  box-shadow:
    inset 0 0 0 1px rgba(201, 162, 74, 0.18),
    inset 0 0 140px 16px rgba(201, 162, 74, 0.06);
  pointer-events: none;
  z-index: 0;
  opacity: 0.85;
}
.sh-hero__art--soft { opacity: 0.55; }

/* -- §4  Canonical buttons ---------------------------------
   Three tiers only. Legacy .btn, .cta-primary, .cta-secondary
   from per-page CSS continue to work visually, but anything
   with .btn.btn--primary|secondary|tertiary gets the unified
   look regardless of which page it lives on.
----------------------------------------------------------- */
.btn,
a.btn,
button.btn {
  --btn-bg: transparent;
  --btn-fg: #F8F3EA;
  --btn-bd: rgba(248, 243, 234, 0.28);
  --btn-bg-hover: rgba(248, 243, 234, 0.06);
  --btn-fg-hover: #FFFFFF;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  min-width: 44px;
  padding: var(--btn-pad-y, 12px) var(--btn-pad-x, 24px);
  background: var(--btn-bg);
  color: var(--btn-fg);
  border: 1px solid var(--btn-bd);
  border-radius: var(--radius-md, 6px);
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease,
              border-color 0.18s ease, transform 0.18s ease;
}
.btn:hover,
a.btn:hover,
button.btn:hover {
  background: var(--btn-bg-hover);
  color: var(--btn-fg-hover);
  border-color: rgba(248, 243, 234, 0.45);
}
.btn:active { transform: translateY(1px); }
.btn[disabled],
.btn[aria-disabled="true"] {
  opacity: 0.45;
  pointer-events: none;
}

/* Primary — gold fill, navy ink. Reads "buy/act" everywhere.
   `.btn--pri` is kept as a legacy alias (used by the sys-adaptive
   systems in stephuary-interactive.css / stephuary-early-mode.css). */
.btn.btn--primary,
.btn.btn--pri {
  --btn-bg: #C9A24A;
  --btn-fg: #0B1730;
  --btn-bd: #C9A24A;
  --btn-bg-hover: #D8B463;
  --btn-fg-hover: #0B1730;
  font-weight: 600;
  letter-spacing: 0.03em;
}
.btn.btn--primary:hover,
.btn.btn--pri:hover { border-color: #D8B463; }

/* Secondary — gold outline, gold ink on dark surface.
   #C9A24A on #0B1730 = 6.1:1 (AA).
   `.btn-ghost` (results.html) is aliased here. */
.btn.btn--secondary,
.btn.btn-ghost {
  --btn-bg: transparent;
  --btn-fg: #C9A24A;
  --btn-bd: rgba(201, 162, 74, 0.55);
  --btn-bg-hover: rgba(201, 162, 74, 0.08);
  --btn-fg-hover: #E2BF6F;
}

/* Tertiary — borderless, quiet action / text link. */
.btn.btn--tertiary {
  --btn-bg: transparent;
  --btn-fg: rgba(248, 243, 234, 0.82);
  --btn-bd: transparent;
  --btn-bg-hover: rgba(248, 243, 234, 0.06);
  --btn-fg-hover: #F8F3EA;
  padding-inline: 12px;
  border: 0;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-color: rgba(201, 162, 74, 0.45);
  text-decoration-thickness: 1px;
}
.btn.btn--tertiary:hover {
  text-decoration-color: #C9A24A;
}

/* -- §5  Shared footer --------------------------------------
   Exact same markup on every page. Three columns (Offerings /
   Writing / Contact) + centered gold wordmark + copyright.
----------------------------------------------------------- */
.sh-footer {
  padding-block: clamp(3rem, 6vw, 5.5rem) 2.5rem;
  padding-inline: var(--container-pad-x, 24px);
  background: transparent;
  border-top: 1px solid rgba(248, 243, 234, 0.08);
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  color: rgba(248, 243, 234, 0.78); /* 9.5:1 on #0B1730, AAA */
}
.sh-footer__inner {
  max-width: var(--layout-max, 1200px);
  margin-inline: auto;
}
.sh-footer__cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 2.5rem;
  margin-bottom: 3rem;
}
.sh-footer__col h2 {
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(201, 162, 74, 0.92); /* ~7.2:1 on #0B1730, AA */
  margin: 0 0 14px;
}
.sh-footer__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sh-footer__list a,
.sh-footer__contact a {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 4px 0;
  color: rgba(248, 243, 234, 0.78);
  text-decoration: none;
  font-size: 14px;
  line-height: 1.4;
  letter-spacing: 0.01em;
  transition: color 0.15s ease;
}
.sh-footer__list a:hover,
.sh-footer__contact a:hover { color: #C9A24A; }
.sh-footer__mark {
  display: block;
  text-align: center;
  margin: 2rem auto 12px;
  font-family: var(--font-serif, 'Playfair Display', Georgia, serif);
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #C9A24A;
  text-decoration: none;
}
.sh-footer__mark:hover { color: #E2BF6F; }
/* Non-link mark (e.g. diagnostic flow — home lives in nav only) */
span.sh-footer__mark {
  cursor: default;
}
span.sh-footer__mark:hover {
  color: #C9A24A;
}
.sh-footer__copy {
  text-align: center;
  margin: 0;
  font-size: 12px;
  letter-spacing: 0.04em;
  color: rgba(248, 243, 234, 0.55); /* 5.8:1 small text, AA */
}
@media (max-width: 640px) {
  .sh-footer__cols {
    grid-template-columns: 1fr;
    gap: 2rem;
    margin-bottom: 2rem;
  }
}

/* -- §6  Hero intro motion ---------------------------------
   One identical curve site-wide: 280ms ease-out opacity + 12px
   translateY. Honors prefers-reduced-motion (the a11y
   stylesheet's global rule zeros it out; we also ship a local
   fallback for safety).
----------------------------------------------------------- */
@keyframes sh-hero-intro {
  0%   { opacity: 0; transform: translateY(12px); }
  100% { opacity: 1; transform: translateY(0); }
}
.sh-hero-intro {
  opacity: 0;
  transform: translateY(12px);
  animation: sh-hero-intro 280ms cubic-bezier(0.2, 0.7, 0.2, 1) 80ms forwards;
}
.sh-hero-intro--delay-1 { animation-delay: 180ms; }
.sh-hero-intro--delay-2 { animation-delay: 280ms; }
.sh-hero-intro--delay-3 { animation-delay: 380ms; }

/* Declarative form: stamp [data-sh-hero-intro] on any hero
   container and its direct visible children get a staggered
   intro. Decorative absolute-positioned children (marked with
   aria-hidden="true", e.g. .hero-mark on access.html) are
   excluded so their own transforms are preserved. */
@media (prefers-reduced-motion: no-preference) {
  [data-sh-hero-intro] > *:not([aria-hidden="true"]) {
    opacity: 0;
    transform: translateY(12px);
    animation: sh-hero-intro 280ms cubic-bezier(0.2, 0.7, 0.2, 1) both;
  }
  [data-sh-hero-intro] > *:not([aria-hidden="true"]):nth-child(1) { animation-delay: 40ms; }
  [data-sh-hero-intro] > *:not([aria-hidden="true"]):nth-child(2) { animation-delay: 120ms; }
  [data-sh-hero-intro] > *:not([aria-hidden="true"]):nth-child(3) { animation-delay: 200ms; }
  [data-sh-hero-intro] > *:not([aria-hidden="true"]):nth-child(4) { animation-delay: 280ms; }
  [data-sh-hero-intro] > *:not([aria-hidden="true"]):nth-child(n+5) { animation-delay: 360ms; }
}
@media (prefers-reduced-motion: reduce) {
  .sh-hero-intro,
  .sh-hero-intro--delay-1,
  .sh-hero-intro--delay-2,
  .sh-hero-intro--delay-3,
  [data-sh-hero-intro] > *:not([aria-hidden="true"]) {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ── Hero weight parity (Prompt 4, §3) ──────────────────────
   index ships the heaviest hero (starfield + lockup). Snapshot,
   access, and d each get a CSS-only gold ring ornament so the
   four sibling heroes feel of equal weight without importing
   any new image asset. */
.snapshot-hero-group,
.access-hero,
.d-hero-group {
  position: relative;
  isolation: isolate;
}
/* Snapshot hero preserves its parent's column centering so the
   grouping wrapper doesn't alter pre-existing layout. */
.snapshot-hero-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}
.snapshot-hero-group > * {
  text-align: center;
  max-width: 100%;
}
/* d.html hero is left-aligned; keep the wrapper neutral. */
.d-hero-group {
  display: block;
  width: 100%;
}
/* ::after so any pre-existing ::before treatment on these
   heroes (e.g. access.html's subtle radial) survives. */
.snapshot-hero-group::after,
.access-hero::after,
.d-hero-group::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(520px, 70vw);
  aspect-ratio: 1 / 1;
  border-radius: 999px;
  background:
    radial-gradient(closest-side,
      rgba(201, 162, 74, 0.09) 0%,
      rgba(201, 162, 74, 0.035) 48%,
      rgba(201, 162, 74, 0) 72%);
  box-shadow:
    inset 0 0 0 1px rgba(201, 162, 74, 0.16),
    inset 0 0 120px 12px rgba(201, 162, 74, 0.05);
  pointer-events: none;
  z-index: 0;
  opacity: 0.5;
}
/* Keep live content above the ornament */
.snapshot-hero-group > *,
.access-hero > *,
.d-hero-group > * { position: relative; z-index: 1; }

/* ── Section-rhythm adapters (Prompt 4, §1) ──────────────────
   Page-level section wrappers inherit the canonical
   --space-section token. Card components (.tier, .card, etc.)
   are intentionally excluded — they keep their own padding.
   Every listed selector has been verified as a section-level
   container, not a card. */
.section-home-get,
.section-measured,
.section-how,
.snapshot-glance,
.process-section,
.faq-section,
.section-pad {
  padding-block: var(--space-section, clamp(4rem, 8vw, 8rem));
}

/* ── Type-scale adapters (Prompt 4, §2) ──────────────────────
   The top 5 marketing pages (index, pricing, snapshot, access, d)
   have been edited to reference var(--fs-h1/h2/h3/body/caption)
   directly in their page-level CSS, so no cross-page overrides
   are needed here. Blanket remaps of label classes (.hero-kicker,
   .hero-eyebrow) are intentionally avoided — those use 9-11px
   micro type and bumping them to --fs-caption (14px) would
   shout on the hero. */

/* =============================================================
   §7  Sitewide identity unification (Prompt 5)
   ── The homepage is the visual source of truth. Its stack:
      serif Playfair Display · sans Inter · mono JetBrains Mono
      bg #05050f with plum/oxblood radial atmosphere
      gold #c8a96e, text #ffffff
   These utilities let any page opt-in to the canonical identity
   with one class, without rewriting page-specific CSS.
============================================================= */

/* Canonical font stacks — pages that ship their own :root can
   simply re-point their --serif / --sans / --mono aliases to these
   names. Google Fonts import for the three families lives on every
   page's <head> (kept in-page so each page can add subsets/weights). */
:root {
  --sh-font-serif: 'Playfair Display', Georgia, 'Times New Roman', serif;
  --sh-font-sans:  'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --sh-font-mono:  'JetBrains Mono', ui-monospace, 'Menlo', monospace;

  /* Canonical body atmosphere — the exact gradient the homepage paints.
     Exposed as a token so outlier pages can reference it from their
     own body {} rule without duplicating the literal gradient string. */
  --sh-atmosphere:
    radial-gradient(ellipse 80% 60% at 50% 0%,   rgba(61, 12, 44, 1)     0%, transparent 60%),
    radial-gradient(ellipse 60% 40% at 20% 100%, rgba(61, 12, 44, 0.6)   0%, transparent 50%),
    radial-gradient(ellipse 50% 40% at 80% 60%,  rgba(139, 47, 201, 0.12) 0%, transparent 50%);
  --sh-bg-base: #05050f;
  --sh-text-primary: #ffffff;
  --sh-text-secondary: #a0a0c0;   /* 8.3:1 on #05050f — AAA */
  --sh-text-muted: #8b8ba5;       /* 5.4:1 — AA */
  --sh-gold: #c8a96e;             /* canonical brand gold */
  --sh-line: rgba(255, 255, 255, 0.08);
}

/* Single-class opt-in: pages that want the canonical look without
   editing their body declaration add `class="sh-atmosphere"` to
   <body>. Pages that already set their own bg/font-family inline
   are aligned via targeted swaps in the page itself. */
body.sh-atmosphere {
  background: var(--sh-bg-base);
  background-image: var(--sh-atmosphere);
  color: var(--sh-text-primary);
  font-family: var(--sh-font-sans);
}

/* Helper classes pages can use on headings that don't already pass
   through the token system. Matches index.html's serif voice. */
.sh-type-serif { font-family: var(--sh-font-serif) !important; }
.sh-type-sans  { font-family: var(--sh-font-sans)  !important; }
.sh-type-mono  { font-family: var(--sh-font-mono)  !important; }

/* =============================================================
   §8  /results unpaid unlock stack
   ── Three stacked blocks that make the $27 ask obvious:
      1. .results-unlock-card    — value stack ("what $27 unlocks")
      2. .results-unlock-preview — blurred teaser of the real report
      3. .results-snapshot-route — separate block below the $27 CTA
   ============================================================= */

.results-unlock-card {
  max-width: 640px;
  margin: 32px auto 20px;
  padding: 28px 32px;
  border: 1px solid rgba(200, 169, 110, 0.28);
  border-radius: 14px;
  background: linear-gradient(
    180deg,
    rgba(200, 169, 110, 0.06) 0%,
    rgba(5, 5, 15, 0.35) 100%
  );
  color: var(--sh-text-primary);
  text-align: left;
}
.results-unlock-card[hidden] { display: none; }
.results-unlock-card__h {
  font-family: var(--sh-font-serif);
  font-size: clamp(1.25rem, 2.2vw, 1.55rem);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 14px;
  color: #f7f1e1;
}
.results-unlock-card__lead {
  font-family: var(--sh-font-sans);
  font-size: 0.94rem;
  color: var(--sh-text-secondary);
  margin: 0 0 10px;
}
.results-unlock-card__list {
  margin: 0 0 18px;
  padding: 0;
  list-style: none;
}
.results-unlock-card__list li {
  position: relative;
  padding-left: 20px;
  margin: 6px 0;
  font-size: 0.94rem;
  line-height: 1.45;
  color: var(--sh-text-primary);
}
.results-unlock-card__list li::before {
  content: "·";
  position: absolute;
  left: 6px;
  top: -2px;
  color: var(--sh-gold);
  font-weight: 700;
  font-size: 1.2rem;
}
.results-unlock-card__list em {
  font-style: italic;
  color: #f7f1e1;
}
.results-unlock-card__format {
  font-size: 0.88rem;
  line-height: 1.55;
  color: var(--sh-text-secondary);
  margin: 0 0 14px;
}
.results-unlock-card__disambiguate {
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--sh-text-muted);
  padding-top: 14px;
  margin: 0;
  border-top: 1px solid var(--sh-line);
  font-style: italic;
}
.results-unlock-card__disambiguate em {
  font-style: normal;
  color: #f7f1e1;
  font-weight: 600;
}

/* ---- Blurred teaser (shows reader the report is real) ---- */
.results-unlock-preview {
  display: block;
  max-width: 640px;
  margin: 0 auto 24px;
}
.results-unlock-preview[hidden] { display: none; }
.results-unlock-preview__item {
  margin-bottom: 14px;
  padding: 16px 18px;
  border: 1px solid var(--sh-line);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.02);
}
.results-unlock-preview__head {
  margin-bottom: 10px;
}
.results-unlock-preview__title {
  font-family: var(--sh-font-sans);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #f7f1e1;
  margin: 0 0 4px;
}
.results-unlock-preview__pv {
  font-family: var(--sh-font-sans);
  font-size: 0.86rem;
  line-height: 1.4;
  color: var(--sh-text-secondary);
  margin: 0;
}
/* The locked body is the real archetype-specific content, but it's
   blurred + unselectable + covered with an early-access scrim so
   the reader sees proof of archetype specificity without the content
   being readable. */
.results-unlock-preview__locked-body {
  position: relative;
  margin-top: 12px;
  padding: 14px 16px;
  min-height: 84px;
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.2);
  filter: blur(6px);
  user-select: none;
  pointer-events: none;
  color: var(--sh-text-primary);
  font-size: 0.9rem;
  line-height: 1.55;
}
.results-unlock-preview__locked-body::after {
  content: "Early access · $27";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  filter: none;
  font: 600 0.875rem/1 var(--sh-font-sans);
  letter-spacing: 0.04em;
  color: #f7f1e1;
  background: linear-gradient(
    to bottom,
    rgba(5, 5, 15, 0.2) 0%,
    rgba(5, 5, 15, 0.72) 100%
  );
  border-radius: 8px;
}

/* ---- Snapshot "or" route (separate block below $27 CTA) ---- */
.results-snapshot-route {
  max-width: 560px;
  margin: 40px auto 0;
  padding: 24px 28px;
  border: 1px solid var(--sh-line);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.015);
  text-align: center;
}
.results-snapshot-route__or {
  position: relative;
  margin: -38px auto 14px;
  text-align: center;
  height: 1px;
  background: var(--sh-line);
  max-width: 320px;
}
.results-snapshot-route__or span {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 0 14px;
  background: var(--sh-bg-base, #05050f);
  font-family: var(--sh-font-sans);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sh-text-muted);
}
.results-snapshot-route__h {
  font-family: var(--sh-font-sans);
  font-size: 0.96rem;
  font-weight: 600;
  color: #f7f1e1;
  margin: 0 0 8px;
}
.results-snapshot-route__p {
  font-size: 0.86rem;
  line-height: 1.5;
  color: var(--sh-text-secondary);
  margin: 0 0 14px;
}
.results-snapshot-route .results-cta-sec {
  display: inline-block;
}

@media (max-width: 480px) {
  .results-unlock-card { padding: 22px 20px; margin: 24px 12px 16px; }
  .results-unlock-preview { margin: 0 12px 20px; }
  .results-snapshot-route { margin: 32px 12px 0; padding: 22px 20px; }
}

/* —— Report: Substack exit (confirm URL in report.html) —— */
.report-exit {
  margin: 20px 0 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--sh-text-secondary, rgba(240, 236, 228, 0.78));
  text-align: center;
}
.report-exit__link {
  color: var(--sh-gold, #c8a96e);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.report-exit__link[href=""] {
  pointer-events: none;
  opacity: 0.75;
}

/* —— Snapshot: guarantee + equal-weight pay row —— */
.snapshot-guarantee {
  margin: 28px 0;
  padding: 16px 20px;
  border-left: 2px solid var(--sh-gold, #c9a24a);
  font-size: 15px;
  line-height: 1.5;
  max-width: 720px;
}
.snapshot-guarantee strong {
  display: block;
  margin-bottom: 4px;
}
.snapshot-pay {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  /* Center the row when narrower than the section (e.g. desktop pricing) */
  margin: 20px auto;
  width: 100%;
  max-width: 520px;
  justify-content: center;
}
.snapshot-pay .btn {
  flex: 1 1 220px;
  text-align: center;
  justify-content: center;
}

/* —— Thank-you (generic) —— */
.thankyou {
  max-width: 640px;
  margin: 0 auto;
  padding: 80px 24px;
}
.thankyou__title {
  margin-bottom: 8px;
}
.thankyou__lede {
  color: var(--sh-text-muted, rgba(255, 255, 255, 0.72));
  margin-bottom: 32px;
}
.thankyou__steps {
  padding-left: 20px;
  margin-bottom: 40px;
}
.thankyou__steps li {
  margin-bottom: 12px;
  line-height: 1.5;
}
.thankyou__next,
.thankyou__share {
  padding-top: 24px;
  border-top: 1px solid var(--sh-line, rgba(255, 255, 255, 0.12));
  margin-top: 24px;
}
.thankyou__share .btn.btn--text {
  background: transparent;
  border: none;
  box-shadow: none;
  color: var(--sh-gold, #c8a96e);
  font-family: var(--sh-font-mono, "JetBrains Mono", ui-monospace, monospace);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: none;
  padding: 8px 0;
}
.thankyou__share .btn.btn--text:hover {
  color: #f0ebe0;
}

/* —— Pricing: pre-diagnostic sticky CTA —— */
.pricing-guided-sticky {
  position: fixed;
  z-index: 200;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 14px 20px calc(14px + env(safe-area-inset-bottom, 0));
  display: flex;
  justify-content: center;
  background: rgba(5, 5, 15, 0.92);
  border-top: 1px solid var(--sh-line, rgba(255, 255, 255, 0.1));
  backdrop-filter: blur(12px);
}
.pricing-page .page {
  padding-bottom: 120px;
}
.pricing-guided-sticky .btn {
  width: 100%;
  max-width: 420px;
  justify-content: center;
}

/* .5% Club — access page (section shells match /pricing tier cards) */
.club-main {
  color: var(--sh-fg, #f5f1e8);
}
.club-container {
  max-width: min(1120px, 92vw);
  margin: 0 auto;
  padding: 48px 24px 100px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
/* Tier-like slabs (see pricing.html .tier) */
body.access-page .club-section {
  position: relative;
  background: #0d0d22;
  border: 1px solid rgba(139, 47, 201, 0.22);
  border-radius: 4px;
  padding: 36px 32px 32px;
  overflow: hidden;
  transition: border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}
body.access-page .club-section::before {
  content: "";
  position: absolute;
  top: 0;
  left: 32px;
  width: 40px;
  height: 2px;
  background: #c8a96e;
}
body.access-page .club-section:hover {
  transform: translateY(-4px);
  border-color: rgba(65, 105, 225, 0.6);
  box-shadow: 0 0 20px rgba(65, 105, 225, 0.35), 0 0 60px rgba(65, 105, 225, 0.15);
}
body.access-page .club-section--apply {
  border-left: 2px solid rgba(200, 169, 110, 0.55);
}
/* Collapsible sections (structural details, refund) — <details> with tier card shell */
body.access-page details.club-collapse {
  list-style: none;
}
body.access-page .club-collapse__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  list-style: none;
  cursor: pointer;
  width: 100%;
  padding: 0;
  text-align: left;
  color: inherit;
  font: inherit;
}
body.access-page .club-collapse__summary::-webkit-details-marker,
body.access-page .club-collapse__summary::marker {
  display: none;
  content: "";
}
body.access-page .club-collapse__title {
  margin: 0;
  flex: 1;
  min-width: 0;
  text-align: left;
}
body.access-page .club-collapse__summary::after {
  content: "";
  flex: none;
  width: 0.45em;
  height: 0.45em;
  border-right: 2px solid rgba(160, 160, 200, 0.75);
  border-bottom: 2px solid rgba(160, 160, 200, 0.75);
  transform: rotate(45deg);
  transition: transform 0.2s ease, border-color 0.2s ease;
  margin-top: -0.2em;
}
body.access-page details.club-collapse[open] .club-collapse__summary::after {
  transform: rotate(225deg);
  margin-top: 0.1em;
}
body.access-page .club-collapse__body {
  padding-top: 1rem;
}
body.access-page .club-collapse__body > p:first-child {
  margin-top: 0;
}
.club-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 32px 0 16px;
}
.club-eyebrow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: 100%;
  font-family: var(--font-mono, "JetBrains Mono", ui-monospace, monospace);
  font-size: 10px;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: #c8a96e;
  margin: 0 0 20px;
}
.club-eyebrow::before,
.club-eyebrow::after {
  content: "";
  flex: none;
  width: 40px;
  height: 1px;
  background: rgba(200, 169, 110, 0.55);
}
.club-title {
  font-family: "Playfair Display", Georgia, serif;
  font-size: var(--fs-h1, clamp(2rem, 4.5vw, 2.75rem));
  font-weight: 900;
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin: 0 0 12px;
  color: #ffffff;
}
.club-lede {
  font-size: 1.05rem;
  line-height: 1.6;
  color: #a0a0c0;
  margin: 0 0 1rem;
  max-width: 40rem;
}
.club-price {
  font-size: 0.8125rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #8b8ba5;
  margin: 0 0 1.5rem;
}
.club-hero .btn {
  width: 100%;
  max-width: 20rem;
}
.club-h2 {
  font-family: "Playfair Display", Georgia, serif;
  font-size: clamp(1.2rem, 2.2vw, 1.5rem);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: #ffffff;
  margin: 0 0 0.6rem;
}
.club-h3 {
  font-family: "Playfair Display", Georgia, serif;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.2;
  margin: 0 0 0.6rem;
  color: #ffffff;
}
.club-section p {
  line-height: 1.6;
  margin: 0 0 0.75rem;
  max-width: 100%;
  color: #a0a0c0;
  font-size: 0.9375rem;
}
.club-section p.club-column-lede {
  color: rgba(230, 230, 240, 0.85);
  font-size: 0.9375rem;
  line-height: 1.55;
  margin: 0 0 0.75rem;
}
.club-section > p:last-child,
.club-section > ol:last-child,
.club-section > ul:last-child,
.club-section > dl:last-child {
  margin-bottom: 0;
}
.club-section .club-sla {
  margin-top: 0.5rem;
}
@media (max-width: 768px) {
  .club-container {
    padding: 32px 20px 72px;
    gap: 16px;
  }
  body.access-page .club-section {
    padding: 28px 22px 24px;
  }
  body.access-page .club-section::before {
    left: 22px;
  }
  .club-eyebrow {
    letter-spacing: 0.2em;
  }
  .club-eyebrow::before,
  .club-eyebrow::after {
    width: 28px;
  }
  body.access-page .club-section:hover {
    transform: none;
  }
}
body.access-page .club-section .club-steps li,
body.access-page .club-section .club-bullets li,
body.access-page .club-section .club-match-list li {
  color: #a0a0c0;
}
body.access-page .club-section strong {
  color: #e4e2ec;
  font-weight: 600;
}
body.access-page .club-match-note {
  color: #8b8ba5;
}
body.access-page .club-sla {
  color: #8b8ba5;
}
body.access-page .club-faq__item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
body.access-page .club-faq__body {
  color: #a0a0c0;
}
body.access-page .club-details__row dd {
  color: #a0a0c0;
}
.club-steps {
  padding-left: 20px;
  margin: 0;
  max-width: 100%;
}
.club-steps li {
  margin-bottom: 10px;
  line-height: 1.5;
  max-width: 100%;
}
.club-match-list {
  list-style: none;
  padding: 0;
  margin: 16px 0;
}
.club-match-list li {
  padding: 14px 0;
  border-bottom: 1px solid var(--sh-border, rgba(255, 255, 255, 0.08));
  line-height: 1.5;
}
.club-match-note {
  font-size: 14px;
  color: var(--sh-muted, rgba(255, 255, 255, 0.72));
  margin-top: 16px;
}
.club-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
}
@media (max-width: 640px) {
  .club-two-col {
    grid-template-columns: 1fr;
  }
}
.club-bullets {
  padding-left: 18px;
}
.club-bullets li {
  margin-bottom: 8px;
  line-height: 1.5;
}
.club-details {
  margin: 0;
}
.club-details__row {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid var(--sh-border, rgba(255, 255, 255, 0.08));
}
.club-details__row dt {
  font-weight: 600;
  color: var(--sh-muted, rgba(255, 255, 255, 0.82));
  margin: 0;
}
.club-details__row dd {
  margin: 0;
  line-height: 1.5;
}
@media (max-width: 560px) {
  .club-details__row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}
.club-sla {
  font-size: 14px;
  color: var(--sh-muted, rgba(255, 255, 255, 0.72));
  margin: 16px 0;
}
.club-form-note {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.55);
  margin-top: 12px;
}
.club-faq__item {
  padding: 18px 0;
  border-bottom: 1px solid var(--sh-border, rgba(255, 255, 255, 0.08));
}
.club-faq__details {
  border: 0;
  padding: 0;
  margin: 0;
}
.club-faq__summary {
  font-weight: 600;
  margin: 0;
  cursor: pointer;
  list-style: none;
  color: var(--text-primary, #f5f1e8);
}
.club-faq__summary::-webkit-details-marker {
  display: none;
}
.club-faq__body {
  margin: 0;
  padding: 10px 0 0;
  line-height: 1.5;
  color: var(--sh-muted, rgba(255, 255, 255, 0.82));
}
.club-faq__body a {
  color: var(--sh-accent, #c9a24a);
  text-decoration: underline;
}

/* Privacy & Terms pages */
.legal-main {
  padding: 60px 0 100px;
}
.legal-container {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 24px;
  line-height: 1.6;
}
.legal-eyebrow {
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sh-accent, #c9a24a);
  margin: 0 0 12px;
}
.legal-title {
  font-size: clamp(28px, 4vw, 40px);
  margin: 0 0 8px;
}
.legal-updated {
  font-size: 13px;
  color: var(--sh-muted, rgba(255, 255, 255, 0.62));
  margin: 0 0 32px;
}
.legal-main section {
  margin-bottom: 28px;
}
.legal-main h2 {
  font-size: 20px;
  margin: 0 0 12px;
}
.legal-main h3 {
  font-size: 16px;
  margin: 16px 0 8px;
  color: var(--sh-accent, #c9a24a);
}
.legal-main p,
.legal-main li {
  line-height: 1.6;
}
.legal-main ul {
  padding-left: 20px;
  margin: 8px 0 12px;
}
.legal-main li {
  margin-bottom: 6px;
}
.legal-main a {
  color: var(--sh-accent, #c9a24a);
  text-decoration: underline;
}
.legal-main code {
  background: rgba(255, 255, 255, 0.06);
  padding: 2px 6px;
  border-radius: 3px;
  font-size: 0.92em;
}

/* Consent banner (loaded via brand-polish on all public HTML — sitewide cookie UI) */
#sh-consent-banner {
  position: fixed;
  bottom: max(8px, env(safe-area-inset-bottom, 0px));
  left: max(8px, env(safe-area-inset-left, 0px));
  right: max(8px, env(safe-area-inset-right, 0px));
  max-width: 640px;
  width: calc(100% - 32px);
  box-sizing: border-box;
  margin: 0 auto;
  background: var(--sh-surface, #1a1a1a);
  border: 1px solid var(--sh-accent, #c9a24a);
  border-radius: 8px;
  padding: 16px 20px;
  z-index: 10050;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
  font-size: 14px;
  line-height: 1.5;
  color: var(--sh-fg, #f5f1e8);
  max-height: min(46vh, 280px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.sh-consent__inner {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
}
.sh-consent__copy {
  margin: 0;
  flex: 1 1 280px;
  min-width: 0;
}
.sh-consent__copy a {
  color: var(--sh-accent, #c9a24a);
  text-decoration: underline;
}
.sh-consent__actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.sh-consent__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  min-width: 44px;
  padding: 8px 16px;
  border: 1px solid var(--sh-border, rgba(255, 255, 255, 0.2));
  background: transparent;
  color: inherit;
  border-radius: 4px;
  font-size: 13px;
  cursor: pointer;
  letter-spacing: 0.04em;
  box-sizing: border-box;
}
.sh-consent__btn--accept {
  background: var(--sh-accent, #c9a24a);
  border-color: var(--sh-accent, #c9a24a);
  color: #111;
  font-weight: 600;
}
.sh-consent__btn:hover {
  opacity: 0.9;
}
@media (max-width: 520px) {
  #sh-consent-banner {
    bottom: max(6px, env(safe-area-inset-bottom, 0px));
    left: max(6px, env(safe-area-inset-left, 0px));
    right: max(6px, env(safe-area-inset-right, 0px));
    width: calc(100% - 12px);
    padding: 12px 14px;
    font-size: 13px;
  }
  .sh-consent__actions {
    width: 100%;
    justify-content: flex-end;
  }
}
@media (max-width: 400px) {
  #sh-consent-banner {
    max-height: min(50vh, 300px);
  }
  .sh-consent__inner {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  .sh-consent__actions {
    justify-content: stretch;
  }
  .sh-consent__actions .sh-consent__btn {
    flex: 1 1 auto;
  }
}

/* ——— Site forms (Resend / MailerLite intake) ——— */
.sh-site-form {
  margin-top: 1.25rem;
  max-width: 36rem;
}
.sh-site-form__field {
  margin-bottom: 14px;
}
.sh-site-form__label {
  display: block;
  font-family: var(--font-sans, 'Inter', system-ui, sans-serif);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-tertiary, rgba(180, 172, 160, 0.9));
  margin-bottom: 6px;
}
.sh-site-form__input,
.sh-site-form__textarea {
  width: 100%;
  padding: 12px 14px;
  font: 400 0.95rem/1.4 var(--font-sans, 'Inter', system-ui, sans-serif);
  color: var(--text-primary, #f4ede0);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 8px;
  outline: none;
  box-sizing: border-box;
  -webkit-appearance: none;
  appearance: none;
}
.sh-site-form__textarea {
  min-height: 120px;
  resize: vertical;
}
.sh-site-form__input:focus,
.sh-site-form__textarea:focus {
  border-color: var(--sh-accent, #c9a24a);
  background: rgba(255, 255, 255, 0.07);
}
.sh-site-form__status {
  margin-top: 12px;
  font-size: 0.92rem;
  line-height: 1.45;
}
.sh-site-form__status[hidden] {
  display: none !important;
}
.sh-site-form__status--success {
  color: rgba(170, 205, 160, 0.95);
}
.sh-site-form__status--error {
  color: #e9a27f;
}
.legal-main .sh-site-form__label {
  color: rgba(200, 195, 188, 0.85);
}
.snapshot-page .sh-site-form__label {
  color: var(--text-muted, #8b8ba5);
}
.access-page .sh-site-form__label {
  color: rgba(200, 195, 188, 0.85);
}
