/* AUTO-GENERATED by scripts/build-linen-bundle.mjs — do not edit by hand */

/* ===== tokens.css ===== */
/* ═══════════════════════════════════════════════════════════
   Gap Moment DESIGN_SYSTEM.md v1 — single source of truth
   8 colors only. Legacy aliases map to these 8 (no new hex).
   ═══════════════════════════════════════════════════════════ */

:root {
  /* §1 Color (exactly 8) */
  --paper: #faf7f1;     /* page background */
  --paper-2: #f3eee5;   /* alternating section / band */
  --card: #fffdf9;      /* card surface */
  --line: #e7dfd1;      /* only border color (1px) */
  --ink: #181512;       /* titles */
  /* Visual sprint 2026-08-06: darker body/muted for ~AA on paper */
  --body: #3f3a34;      /* body text (was #564f47 — too light on paper) */
  --muted: #6b645c;     /* helper / meta (was #827a70) */
  --green: #243029;     /* only accent: primary btn, focus, link hover */
  --measure: 40rem;     /* ideal long-prose max width (~65ch) */
  /* v2 A1 — scrim + sheet radius (exactly 10 surface tokens) */
  --scrim: rgba(24, 21, 18, 0.5);   /* only allowed alpha: hold overlay */
  --radius-sheet: 20px;

  /* §2 Type families */
  --font-display: "Newsreader", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --font-sans: "DM Sans", "Segoe UI", system-ui, sans-serif;

  /* §2 Type scale — v1.1 C upgrade */
  --fs-h1: clamp(38px, 6.5vw, 68px);
  /* was 1.08 — too tight on mobile (38/41); 1.15 keeps display weight readable */
  --lh-h1: 1.15;
  --fs-h2: clamp(30px, 4.5vw, 48px);
  --lh-h2: 1.15;
  --fs-h3: clamp(20px, 2.5vw, 24px);
  --lh-h3: 1.3;
  --fs-body: 17px;
  --lh-body: 1.65;
  --fs-small: 14px;
  --lh-small: 1.5;
  --fs-eyebrow: 12px;
  --ls-eyebrow: 0.12em;

  /* §3 Spacing (8px grid only) */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --container-max: 1120px;
  --container-pad-m: 24px;
  --container-pad-d: 32px;
  /* v1.2 rhythm (was 64/96 — inflated empty air on mobile) */
  --section-pad-m: 40px;
  --section-pad-d: 64px;
  --head-to-content: 48px;
  --card-pad-m: 24px;
  --card-pad-d: 32px;
  --col-gap: 32px;

  /* §5 Radius */
  --radius-input: 12px;
  --radius-card: 16px;
  --radius-pill: 999px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 16px;
  --radius-2xl: 16px;

  /* §6 Card shadow — the only shadow formula allowed */
  --shadow-card: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
  --shadow-soft: var(--shadow-card);
  --shadow-lift: var(--shadow-card);
  --shadow-glow: none;
  --focus-ring: 0 0 0 2px var(--green);

  /* §6 Control sizes */
  --control-h: 52px;
  --sticky-h: 64px;
  --btn-pad-x: 28px;
  --modal-max: 420px;

  /* §7 Motion */
  --ease-out: ease-out;
  --dur: 200ms;

  /* ── Legacy aliases → constitution (no extra hex) ── */
  --color-bg: var(--paper);
  --color-bg-elevated: var(--card);
  --color-bg-nested: var(--paper-2);
  --color-bg-subtle: var(--line);
  --color-band: var(--paper-2);
  --color-fg: var(--ink);
  --color-fg-muted: var(--body);
  --color-fg-subtle: var(--muted);
  --color-border: var(--line);
  --color-border-strong: var(--line);
  --color-accent: var(--green);
  --color-accent-fg: var(--card);
  --color-sage: var(--green);   /* legacy sage → green */
  --color-clay: var(--body);    /* was saturated — collapsed */
  --color-glow: var(--line);    /* was warm glow — collapsed */
}


/* ===== base.css ===== */
/* DESIGN_SYSTEM.md v1 — base: color, type, container, paper, section */

html {
  font-size: 100%; /* 16px root */
}

body {
  margin: 0;
  min-height: 100dvh;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  /* §1: no gradients */
  background-image: none;
}
/* Mobile sticky clearance only while sticky is shown (html.gm-sticky-visible).
   Always-on pad left a huge white gap under footer when sticky hides at #cta. */
@media (max-width: 767px) {
  body {
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  html.gm-sticky-visible body {
    padding-bottom: calc(
      var(--sticky-h, 64px) + env(safe-area-inset-bottom, 0px) + 8px
    );
  }
}

body.night,
html.night,
.night,
[data-theme="dark"] {
  background: var(--paper);
  color: var(--ink);
}

p, li, label, figcaption, .lede, .gm-email-hint {
  color: inherit;
}
.text-muted, .text-subtle { color: var(--muted); }
body :where(p:not(.eyebrow):not(.font-display):not(.display-title)) {
  color: var(--body);
  /* no opacity tricks — contrast lives in the color token */
  opacity: 1;
}
/* Long centered science/mechanism blocks: readable measure */
.section-y .lede,
.section-head + p,
#system .lede,
#method .lede,
#real-today .lede {
  max-width: var(--measure, 40rem);
}
.section-y .section-head + p,
#system > .mx-auto > p,
#method .ledger p {
  max-width: var(--measure, 40rem);
}
body :where(h1, h2, h3, .font-display, .display-title, strong) {
  color: var(--ink);
}

/* §2 Display type — Newsreader only on H1/H2/H3 + price figures */
.font-display, .display-title, h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 450;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-wrap: balance;
}
p, .lede { text-wrap: pretty; }

/* H1 */
h1, h1.display-title, .hero-h1 {
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  font-weight: 450;
}

/* H2 */
h2, h2.display-title, section h2.display-title,
.section-head .display-title {
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.02em;
  max-width: none;
  min-width: min(100%, 24ch);
}

/* H3 */
h3, h3.font-display, section h3.font-display,
.founding-card__head h3, .how-dollar__title {
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
}

/* Small */
.gm-email-hint, .text-sm, small, .sample-dollar__link,
.how-dollar__d, .real-card li, .kit-compact li, .faq-list .a {
  font-size: var(--fs-small);
  line-height: var(--lh-small);
}

/* Eyebrow — v1.1 F: green anchor, 12px caps 0.12em */
.eyebrow {
  display: block;
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--green);
  line-height: 1.4;
}

.lede {
  color: var(--body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  max-width: 60ch;
}

/* §3 Container — one max-width 1120, pad 24/32 */
.gm-container,
.mx-auto.max-w-6xl {
  max-width: var(--container-max);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
.mx-auto.max-w-6xl.px-4,
.mx-auto.max-w-6xl.sm\:px-6,
.gm-container {
  padding-left: var(--container-pad-m);
  padding-right: var(--container-pad-m);
}
@media (min-width: 768px) {
  .mx-auto.max-w-6xl.px-4,
  .mx-auto.max-w-6xl.sm\:px-6,
  .gm-container {
    padding-left: var(--container-pad-d);
    padding-right: var(--container-pad-d);
  }
}

/* §4 Section heads — HEAD vs CONTENT (docs/VISUAL_CONSTITUTION.md)
   HEAD: mobile ≤767 left; desktop ≥768 center (text-align + measure auto).
   CONTENT: always left. Do not neutralize .section-head--center to left.
   Ban: treating "always left" as desktop head law. */
.section-head,
.section-head--center,
.section-head--left,
#system .section-head,
#sample .section-head,
#ritual .section-head,
#real-today .section-head,
#founding .section-head,
#breath .section-head,
#method .section-head,
#compare .section-head,
#kit .section-head,
#worlds .section-head,
#moments .section-head,
#faq .section-head,
#cta .section-head,
#founder .section-head,
.worlds-head {
  text-align: left;
  margin-inline: 0;
}
.section-head .display-title,
.section-head .lede,
.section-head .gm-act,
.section-head .eyebrow,
#founding .section-head .display-title,
#founding .section-head .lede,
#cta .cta-final__copy,
#cta .cta-final__copy .eyebrow,
#cta .cta-final__title,
#cta .cta-final__sub,
#cta.cta-dark .eyebrow {
  text-align: left;
  margin-inline: 0;
}
@media (min-width: 768px) {
  /* HEAD: desktop center in container measure; revive --center (do not force left) */
  .section-head,
  .section-head--center,
  #system .section-head,
  #sample .section-head,
  #ritual .section-head,
  #real-today .section-head,
  #founding .section-head,
  #breath .section-head,
  #method .section-head,
  #compare .section-head,
  #kit .section-head,
  #worlds .section-head,
  #moments .section-head,
  #faq .section-head,
  #cta .section-head,
  #founder .section-head,
  .worlds-head {
    text-align: center;
    margin-inline: auto;
    max-width: min(40rem, 100%);
  }
  /* Explicit left exception only when --left is intentional */
  .section-head--left {
    text-align: left;
    margin-inline: 0;
    max-width: none;
  }
  .section-head .display-title,
  .section-head .lede,
  .section-head .gm-act,
  .section-head .eyebrow,
  #founding .section-head .display-title,
  #founding .section-head .lede,
  #cta .cta-final__copy,
  #cta .cta-final__copy .eyebrow,
  #cta .cta-final__title,
  #cta .cta-final__sub,
  #cta.cta-dark .eyebrow {
    text-align: center;
    margin-inline: auto;
  }
  .section-head--left .display-title,
  .section-head--left .lede,
  .section-head--left .gm-act,
  .section-head--left .eyebrow {
    text-align: left;
    margin-inline: 0;
  }
}
/* Lower funnel CONTENT only: hard left rail — no mid-row float / narrow islands.
   HEAD (.section-head, #cta .cta-final__title/.sub) is NOT locked left here. */
#compare .compare-list,
#compare .row,
#compare .name,
#compare .desc,
#kit .kit-lines,
#kit .kit-lines li,
#kit .kit-card,
#kit .kit-list,
#kit .kit-list li,
#kit .kit-list strong,
#kit .kit-list em,
#worlds .world-card__name,
#worlds .world-card__mood,
#moments .gm-moment-card,
#moments .gm-moment-card__t,
#moments .gm-moment-card__d,
#faq .faq-list,
#faq summary,
#faq .a,
#cta .form-area,
#cta form,
#cta .gm-email-row {
  text-align: left;
}
#kit .kit-lines,
#faq .faq-list,
#cta .form-area,
#cta .gm-email-row,
#cta .cta-dark__secondary {
  margin-left: 0;
  margin-right: 0;
}
/* Kit card group centers under HEAD; inner list stays left (margin auto is intentional) */
#kit .kit-card {
  margin-left: auto;
  margin-right: auto;
}
.section-head .lede {
  max-width: 60ch;
  margin-top: var(--space-3);
}
/* head → content: 48px */
.section-head + * {
  margin-top: var(--head-to-content);
}
.section-head + *.mt-6,
.section-head + *.sm\:mt-8,
.section-head + *.mt-5,
.section-head + *.mt-8 {
  margin-top: var(--head-to-content);
}

/* §3 Section vertical padding: mobile 64 · desktop 96 */
.section-y {
  padding-block: var(--section-pad-m);
}
@media (min-width: 768px) {
  .section-y {
    padding-block: var(--section-pad-d);
  }
}

/* Alternating bands use paper-2 (no divider lines required) */
.band {
  background: var(--paper-2);
  border-color: transparent;
}

/* §6 Cards */
.paper, .paper-panel, .gm-card {
  border: 1px solid var(--line);
  background: var(--card);
  box-shadow: var(--shadow-card);
  border-radius: var(--radius-card);
}
.stat-chip {
  background: var(--card);
  border: 1px solid var(--line);
  box-shadow: var(--shadow-card);
  border-radius: var(--radius-card);
}

/* Images: 4:3 or 3:2, radius 16, framed */
.img-frame {
  position: relative;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  aspect-ratio: 4 / 3;
}
@media (min-width: 768px) {
  .img-frame { aspect-ratio: 3 / 2; }
}

/* §6 + v1.1 A: Primary / secondary buttons */
.btn-solid-pill,
a.btn-solid-pill,
button.btn-solid-pill,
.gm-email-row button[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: var(--control-h);
  min-height: var(--control-h);
  width: 100%; /* <768 card-default; desktop override below */
  max-width: none;
  padding: 0 var(--btn-pad-x);
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--green);
  color: var(--card);
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-decoration: none;
  cursor: pointer;
  box-shadow: none;
  transition: opacity var(--dur) var(--ease-out);
}
@media (min-width: 768px) {
  .btn-solid-pill,
  a.btn-solid-pill,
  button.btn-solid-pill,
  .gm-email-row button[type="submit"] {
    width: auto;
    max-width: none;
  }
  /* In-card: desktop auto left-align — sample dual-card Join stays full-width */
  .paper .btn-solid-pill,
  .paper button.btn-solid-pill,
  .paper .gm-email-row button[type="submit"],
  .sample-dollar .btn-solid-pill {
    width: auto;
  }
  .sample-form-card button[type="submit"],
  .sample-form-card .gm-email-row button[type="submit"],
  .sample-form-card__stack button[type="submit"] {
    width: 100%;
    max-width: 100%;
  }
}
.btn-solid-pill:hover,
.gm-email-row button[type="submit"]:hover {
  opacity: 0.92;
}
.btn-solid-pill:focus-visible,
.gm-email-row button[type="submit"]:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

.btn-pill,
a.btn-pill,
button.btn-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: var(--control-h);
  min-height: var(--control-h);
  width: 100%;
  max-width: none;
  padding: 0 var(--btn-pad-x);
  border: 1px solid var(--green);
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--green);
  font-family: var(--font-sans);
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: opacity var(--dur) var(--ease-out);
}
@media (min-width: 768px) {
  .btn-pill, a.btn-pill, button.btn-pill {
    width: auto;
  }
}

/* Nav compact CTA exception (header chrome) */
.nav-cta.btn-solid-pill {
  width: auto;
  height: 36px;
  min-height: 36px;
  padding: 0 14px;
  font-size: 13px;
}

/* Selection */
::selection {
  background: var(--line);
  color: var(--ink);
}

/* Utility */
.nowrap { white-space: nowrap; }


/* construction-order G1-G2 · 施工单 20260805 */
/* G1 buttons */
.btn-solid-pill,
button.btn-solid-pill,
a.btn-solid-pill,
.paper .btn-solid-pill,
.paper button[type="submit"],
.gm-email-row button[type="submit"],
.sample-dollar .btn-solid-pill,
.how-dollar .btn-solid-pill,
.founding-card .btn-solid-pill,
#foundingHoldBtn,
#sampleHoldBtn {
  width: 100%;
  max-width: none;
  height: var(--control-h);
  min-height: var(--control-h);
  padding: 0 28px;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .btn-solid-pill,
  button.btn-solid-pill,
  a.btn-solid-pill,
  .paper .btn-solid-pill,
  .paper button[type="submit"],
  .gm-email-row button[type="submit"],
  .sample-dollar .btn-solid-pill,
  #sampleHoldBtn {
    width: auto;
    max-width: none;
  }
  /* Sample dual-card Join stays full-width inside the form card */
  .sample-form-card button[type="submit"],
  .sample-form-card .gm-email-row button[type="submit"],
  .sample-form-card__stack button[type="submit"] {
    width: 100%;
    max-width: 100%;
  }
  /* how-dollar founding CTA stays full-width under the 3-step ledger */
  .how-dollar .btn-solid-pill,
  .how-dollar__cta .btn-solid-pill,
  .founding-card.how-dollar .btn-solid-pill,
  #foundingHoldBtn {
    width: 100%;
    max-width: none;
  }
  body { padding-bottom: 0; } /* no sticky desktop */
}
/* G1 header CTA exception */
.nav-cta.btn-solid-pill,
a.nav-cta {
  width: auto;
  height: 40px;
  min-height: 40px;
  padding: 0 20px;
  font-size: 14px;
  font-weight: 600;
}
/* G2 content images */
.img-frame img,
.proof-hero__img img,
.hero-shot .img-frame img {
  object-fit: cover;
  border-radius: 16px;
}
.img-frame,
.proof-hero__img {
  border-radius: 16px;
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
@media (max-width: 767px) {
  .img-frame,
  .proof-hero__img,
  .hero-shot .img-frame {
    max-height: 320px;
  }
  .img-frame img,
  .proof-hero__img img,
  .hero-shot .img-frame img {
    max-height: 320px;
  }
}
@media (min-width: 768px) {
  .img-frame,
  .proof-hero__img {
    max-height: 480px;
  }
  .img-frame img,
  .proof-hero__img img {
    max-height: 480px;
  }
  /* §4 system product shot tighter */
  #system .proof-hero__img {
    max-height: 440px;
  }
  #system .proof-hero__img img {
    max-height: 440px;
    object-position: center 60%;
  }
}


/* R3-4 mobile bleed — classic left:50% / margin-left:-50vw; high specificity for img-frame fights */
@media (max-width: 767px) {
  .bleed-m,
  .img-frame.bleed-m,
  .img-frame--linen.bleed-m,
  .proof-hero__img.bleed-m,
  .hero-shot .img-frame.bleed-m,
  .hero-shot .img-frame--linen.bleed-m,
  .hero-grid--linen .hero-shot .img-frame.bleed-m,
  .hero-grid--linen .hero-shot .img-frame--linen.bleed-m,
  .founder-panel__media.bleed-m {
    width: 100vw;
    max-width: none;
    position: relative;
    left: 50%;
    margin-left: -50vw;
    margin-right: 0;
    border-radius: 0;
    object-fit: cover;
    border-left: 0;
    border-right: 0;
  }
  /* when .bleed-m is on wrapper, fill img — no img-level bleed margin */
  .bleed-m img,
  .img-frame.bleed-m img,
  .proof-hero__img.bleed-m img,
  .founder-panel__media.bleed-m img,
  .hero-shot .img-frame.bleed-m img {
    width: 100%;
    max-width: none;
    display: block;
    border-radius: 0;
    margin-left: 0;
    margin-right: 0;
    left: auto;
    position: static;
  }
  .founder-panel__media.bleed-m {
    max-height: 400px;
    aspect-ratio: 4 / 5;
  }
  .founder-panel__media.bleed-m img {
    object-fit: cover;
    max-height: 400px;
    width: 100%;
    height: 100%;
    max-width: none;
  }
  /* body owns sticky clearance — footer pad only, no second sticky-h */
  footer,
  .site-footer {
    padding-bottom: 1.25rem;
  }
}
@media (min-width: 768px) {
  footer,
  .site-footer {
    padding-bottom: 2rem;
  }
}

/* v2 A4 smooth scroll + anchor offset */
html { scroll-behavior: smooth; }
#sample, #breath, #method, #founding, #system, #real-today, #founder, #compare, #kit, #faq, #cta {
  scroll-margin-top: 80px;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .gm-hold-sheet, .hold-sheet { transition: none; }
}


/* ===== ledger.css ===== */
/* v2 A2 · unified .ledger component — three reuse sites only */
.ledger {
  list-style: none;
  margin: 48px 0 0;
  padding: 0;
}
.ledger > li {
  padding: 20px 0 4px;
  border-top: 1px solid var(--line);
  background: none;
  border-radius: 0;
  box-shadow: none;
}
.ledger-n {
  font-family: var(--font-display);
  font-size: 20px;
  color: var(--green);
  margin-right: 12px;
  font-weight: 450;
  line-height: 1.2;
}
.ledger-label {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.ledger-title {
  font-family: var(--font-display);
  font-size: 20px;
  color: var(--ink);
  font-weight: 450;
}
.ledger-body {
  margin-top: 8px;
  color: var(--body);
  font-size: 16px;
  line-height: 1.6;
}
.ledger-body > * {
  margin: 0 0 6px;
  padding: 0;
  text-indent: 0;
  list-style: none;
  padding-left: 0;
}
.ledger-body ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.ledger-body li {
  margin: 0 0 6px;
  padding: 0;
  text-indent: 0;
  padding-left: 0;
}
.ledger-body li::before { content: none; }
@media (min-width: 768px) {
  .ledger {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0 32px;
    border-top: 1px solid var(--line);
  }
  /* Method / any 2-item ledger — no empty third column */
  .ledger.ledger--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .ledger > li {
    border-top: 0;
    border-left: 1px solid var(--line);
    padding: 24px 0 8px 24px;
  }
  .ledger > li:first-child {
    border-left: 0;
    padding-left: 0;
  }
}
/* founding card: ledger can sit inside paper (lines ≠ nested card) */
.how-dollar .ledger,
.founding-card .ledger {
  margin-top: 24px;
}


/* M4 real-today / ledger mobile density */
@media (max-width: 767px) {
  .ledger > li { padding: 14px 0 10px; }
  .ledger-body { margin-top: 4px; font-size: 15px; }
  .ledger-body > * { margin-bottom: 2px; }
}


/* ===== header.css ===== */
/* header — 施工单 §2 · 64px paper, no wrap on CTA */
.site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  height: 64px;
  border-bottom: 1px solid var(--line);
  background: var(--paper);
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.site-header__inner {
  max-width: var(--container-max, 1120px);
  margin: 0 auto;
  height: 64px;
  padding: 0 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .site-header__inner { padding: 0 32px; }
}
.site-header__inner > a.font-display {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 450;
  color: var(--ink);
  text-decoration: none;
  line-height: 1;
}
.site-nav {
  display: none;
  align-items: center;
  gap: 28px;
  font-family: var(--font-sans);
  font-size: 14px;
  color: var(--body);
}
@media (min-width: 768px) {
  .site-nav { display: flex; }
}
.site-nav a {
  text-decoration: none;
  color: var(--body);
  font-size: 14px;
}
.site-nav a:hover { color: var(--ink); }

/* §2: CTA direct child, no wrap chrome */
.site-header__inner > .nav-cta,
.site-header__inner > a.nav-cta,
.site-header__inner > button.nav-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  min-height: 40px;
  width: auto;
  padding: 0 16px;
  border-radius: 999px;
  background: var(--green);
  color: var(--card);
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  box-shadow: none;
  border: 0;
  flex-shrink: 0;
  cursor: pointer;
  white-space: nowrap;
}


/* ===== email.css ===== */
/* Email form — DESIGN_SYSTEM §6 inputs + primary button */
.gm-email-shell {
  width: 100%;
}
.gm-email-box {
  border-radius: var(--radius-input);
  border: 1px solid var(--line);
  background: var(--paper-2);
  box-shadow: none;
  padding: var(--space-2);
  transition: border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);
}
.gm-email-box:focus-within {
  border-color: var(--green);
  box-shadow: var(--focus-ring);
}
.gm-email-row {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  align-items: stretch;
}
@media (min-width: 768px) {
  /* Row only when NOT inside sample dual-card stack */
  .gm-email-row:not(.sample-form-card__stack) {
    flex-direction: row;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
  }
  .gm-email-row:not(.sample-form-card__stack) input[type="email"] {
    flex: 1 1 auto;
    min-width: 0;
    width: auto; /* avoid width:100% blowing out row flex */
  }
}
.gm-email-row input[type="email"] {
  /* 0 0 auto on column stack so height never collapses under flex:1 */
  flex: 0 0 auto;
  width: 100%;
  min-width: 0;
  height: var(--control-h);
  min-height: var(--control-h);
  max-height: none; /* never clip control; was max-height:var(--control-h) */
  box-sizing: border-box;
  border: 0;
  border-radius: var(--radius-input);
  background: transparent;
  box-shadow: none;
  padding: 0 var(--space-4);
  font-size: 16px; /* iOS no-zoom */
  font-family: var(--font-sans);
  color: var(--ink);
  outline: none;
}
@media (min-width: 768px) {
  .gm-email-row:not(.sample-form-card__stack) input[type="email"] {
    flex: 1 1 auto;
  }
}
.gm-email-row input[type="email"]::placeholder {
  color: var(--muted);
}
.gm-email-row button[type="submit"] {
  flex: 0 0 auto;
  width: 100%;
  height: var(--control-h);
  min-height: var(--control-h);
  padding: 0 var(--btn-pad-x);
  border: 0;
  border-radius: var(--radius-pill);
  background: var(--green);
  color: var(--card);
  font-size: 16px;
  font-weight: 600;
  font-family: var(--font-sans);
  letter-spacing: 0.01em;
  cursor: pointer;
  white-space: nowrap;
  box-shadow: none;
  transition: opacity var(--dur) var(--ease-out);
  -webkit-tap-highlight-color: transparent;
}
@media (min-width: 768px) {
  .gm-email-row:not(.sample-form-card__stack) button[type="submit"] {
    width: auto;
    min-width: 10.5rem;
  }
}
.gm-email-row button[type="submit"]:hover { opacity: 0.92; }
.gm-email-row button[type="submit"]:active { opacity: 0.88; }
.gm-email-row button[type="submit"]:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}
.gm-email-hint {
  margin-top: var(--space-3);
  margin-bottom: 0;
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--muted);
}
.join-panel .gm-email-hint {
  margin-top: var(--space-3);
}
.join-panel .hero-hold-hint {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
}


/* ===== scenes.css ===== */
/* Scene cards — white type MUST beat global display color */
.gm-scene {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 5/4;
  overflow: hidden;
  border-radius: var(--radius-2xl);
  border: 1px solid color-mix(in oklab, var(--ink) 14%, transparent);
  padding: 0;
  cursor: pointer;
  background: var(--ink);
  text-align: left;
  box-shadow: var(--shadow-soft);
}
@media (min-width: 640px) { .gm-scene { aspect-ratio: 16/11; } }
/* 5-scene grid → 2 columns, last card full-bleed wide (P2-1) */
@media (min-width: 1024px) {
  [data-scene-count="5"] {
    grid-template-columns: 1fr 1fr;
  }
  [data-scene-count="5"] .gm-scene:last-child {
    grid-column: 1 / -1;
    aspect-ratio: 21 / 9;
  }
}
.gm-scene > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
  display: block;
  z-index: 0;
  opacity: 1;
  visibility: visible;
  transition: transform .7s ease;
  background: var(--body);
}
.gm-scene:hover > img { transform: scale(1.04); }
.gm-scene__grad {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background: linear-gradient(
    to top,
    rgba(12, 10, 8, 0.72) 0%,
    rgba(12, 10, 8, 0.32) 40%,
    rgba(12, 10, 8, 0.06) 70%,
    transparent 100%
  );
}
.gm-scene__body {
  position: absolute; inset-inline: 0; bottom: 0;
  padding: 1rem 1.15rem 1.15rem;
  z-index: 2;
  display: flex; flex-direction: column; gap: 0.15rem;
}
.gm-scene__title {
  font-family: var(--font-display);
  font-weight: 450;
  font-size: clamp(1.15rem, 2.4vw, 1.55rem);
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--card);
  text-shadow: 0 1px 12px var(--line);
}
.gm-scene__when {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.82);
  line-height: 1.35;
}
.gm-scene__scent {
  font-size: 0.8125rem;
  color: rgba(255,255,255,0.58);
  line-height: 1.35;
}
@media (max-width: 639px) {
  .gm-scene__scent { display: none; }
  .gm-scene__body { padding: 0.75rem 0.85rem 0.9rem; }
  .gm-scene__title { font-size: 1.05rem; }
  .gm-scene__when { font-size: 0.75rem; }
}
.gm-scene__badge {
  position: absolute; top: 0.75rem; right: 0.75rem; z-index: 3;
  border-radius: 999px;
  padding: 0.28rem 0.7rem; font-size: 10px; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase;
  box-shadow: 0 4px 14px var(--line);
  max-width: calc(100% - 1.5rem);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Only Madagascar — free app scene */
.gm-scene__badge--free {
  background: var(--line);
  color: var(--card);
}
/* Paid scent worlds with Edition One kit */
.gm-scene__badge--paid {
  background: rgba(255, 253, 249, 0.94);
  color: var(--body);
  font-weight: 500;
  letter-spacing: 0.06em;
}
@media (max-width: 639px) {
  .gm-scene__badge {
    font-size: 9px;
    padding: 0.22rem 0.55rem;
    top: 0.55rem;
    right: 0.55rem;
  }
}


/* ===== founding.css ===== */
/* Founding dual cards — equal height, CTA bottoms locked */
.founding-grid {
  display: grid;
  gap: 20px;
  align-items: stretch;
}
@media (min-width: 1024px) {
  .founding-grid {
    grid-template-columns: 1fr 1fr;
    gap: 24px;
  }
}

.founding-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: 0 4px 24px var(--line);
  border-radius: 16px;
  padding: 24px;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .founding-card { padding: 28px; }
}
.founding-card--hold {
  border-color: var(--line);
  background: var(--paper);
  box-shadow: 0 4px 24px var(--line);
}
.founding-card__label {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted); /* warm gray — not sage */
}
.founding-card__head h3 {
  margin: 8px 0 0;
  color: var(--color-fg);
}
.founding-card__soft {
  margin-left: 0.35rem;
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 400;
  color: var(--color-fg-muted);
  letter-spacing: 0;
}
.founding-card__price {
  margin-top: 4px;
}
.founding-card__price > .font-display,
.founding-card__price > p:first-child {
  margin: 0;
  color: var(--color-fg);
}
/* $1 is today's action; $29 is future kit price (never look like $29 due now) */
.founding-today {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 10px;
  margin: 12px 0 0;
}
.founding-today__label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--green);
  width: 100%;
}
.founding-today__n {
  font-family: var(--font-display);
  font-size: 44px;
  font-weight: 450;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--ink);
  display: inline-flex;
  align-items: baseline;
}
@media (min-width: 640px) {
  .founding-today__n { font-size: 52px; }
}
.founding-today__n--free {
  display: block;
}
/* Free card blurb fills middle void on desktop dual layout */
.founding-card__blurb {
  margin: 12px 0 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--body);
  max-width: 28ch;
}
/* Keep $1 as split nodes (app-v2 strips single-text "$1") but look like one price */
.gm-buck,
.gm-buck-n {
  display: inline;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  margin: 0;
  padding: 0;
}
.gm-buck + .gm-buck-n {
  margin-left: 0;
  letter-spacing: -0.03em;
}
.founding-today__tag {
  font-size: 14px;
  font-weight: 500;
  color: var(--green);
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--line);
}
.founding-later {
  margin: 12px 0 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--body);
}
.founding-later strong {
  font-family: var(--font-display);
  font-size: 1.15em;
  font-weight: 450;
  color: var(--ink);
}
.founding-later__ladder {
  color: var(--muted);
  font-size: 13px;
}

/* What $1 locks — secondary benefit only; never heroize future $29 vs Today's $1 */
.founding-deal {
  margin: 12px 0 0;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--line);
  border: 1px solid var(--line);
  box-sizing: border-box;
}
.founding-deal__kicker {
  margin: 0;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--green);
}
.founding-deal__line {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.4;
  color: var(--ink);
}
.founding-deal__line strong {
  font-weight: 600;
  color: var(--ink);
}
/* legacy big $29 price — keep rules inert if old markup returns */
.founding-deal__hero { margin: 0; }
.founding-deal__row {
  margin: 6px 0 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
}
.founding-deal__price {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--ink);
}
.founding-deal__dollar,
.founding-deal__n {
  font: inherit;
  color: inherit;
}
.founding-deal__save {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.35;
  color: var(--green);
}
.founding-deal__save strong {
  font-weight: 600;
  color: var(--green);
}
.founding-deal__ladder {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
}
.founding-deal__step {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px 8px;
  border-radius: 8px;
  background: rgba(255, 253, 249, 0.72);
  border: 1px solid var(--line);
}
.founding-deal__step-label {
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.founding-deal__step-n {
  font-size: 14px;
  font-weight: 500;
  color: var(--body);
  text-decoration: line-through;
  text-decoration-color: rgba(86, 79, 71, 0.45);
}
.founding-scarce-claimed {
  margin: 10px 0 0;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
}
/* legacy */
.founding-price-main,
.founding-price-note { display: none; }
.founding-scarce {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
}
.founding-scarce__bar {
  flex: 1 1 auto;
  height: 3px;
  border-radius: 999px;
  background: var(--line);
  overflow: hidden;
  min-width: 0;
}
.founding-scarce__bar > i {
  display: block;
  height: 100%;
  width: 97%;
  background: var(--green);
  border-radius: 999px;
}
.founding-scarce__seats {
  flex: 0 0 auto;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  white-space: nowrap;
}

/* benefits grow so CTAs sit on same baseline */
.founding-benefits {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1 1 auto;
}
.founding-benefits li {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  column-gap: 10px;
  align-items: start;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--color-fg-muted);
}
/* Desktop: keep dual cards balanced — less empty free card, less tall hold card */
@media (min-width: 1024px) {
  .founding-card {
    padding: 24px 26px;
  }
  .founding-card__blurb {
    max-width: none;
  }
  .founding-deal {
    margin-top: 10px;
  }
  .founding-benefits {
    gap: 9px;
    margin-top: 14px;
  }
}
.founding-benefits__icon {
  width: 20px;
  height: 20px;
  margin-top: 1px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 600;
  box-sizing: border-box;
  background: transparent;
  border: 1.5px solid currentColor;
  color: var(--color-fg-muted);
  flex-shrink: 0;
}
.founding-benefits__icon--check {
  color: var(--green);
  border-color: var(--green);
}
.founding-benefits__icon--lock {
  color: var(--muted);
  border-color: var(--line);
}
.founding-benefits__icon--lock svg {
  width: 11px;
  height: 11px;
  display: block;
  stroke: currentColor;
  fill: none;
}

/* CTA zone — pinned bottom; action stack same height so pills share baseline */
.founding-card__cta {
  margin-top: auto;
  padding-top: 24px;
  display: flex;
  flex-direction: column;
  gap: 0;
}
/*
 * Align green pills across free + hold cards:
 * free = email(48) + gap(10) + pill(48) = 106
 * hold = spacer + pill(48) pinned to same bottom edge
 */
.founding-card__action {
  /* Natural height — no forced 106px void above hold CTA */
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 10px;
}
.founding-card__action--hold {
  justify-content: flex-end;
}
.founding-card__fine,
.founding-card--free .gm-email-hint {
  margin: 10px 0 0;
  min-height: 0;
  text-align: center;
  font-size: 12px;
  line-height: 1.4;
  color: var(--muted);
}
/* Keep dual cards equal height via grid stretch, not fake CTA min-height */
@media (min-width: 1024px) {
  .founding-card__cta {
    margin-top: auto;
  }
}

/* Free card form: no nested mud shell; field + pill match hold card */
.founding-card--free .form-area {
  min-height: 0;
}
.founding-card--free .gm-email-box {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
  border-radius: 0;
}
.founding-card--free .gm-email-row {
  flex-direction: column;
  gap: 10px;
  align-items: stretch;
}
.founding-card--free .gm-email-row input[type="email"] {
  width: 100%;
  height: 48px;
  min-height: 48px;
  border-width: 1px;
  border-style: solid;
  border-color: var(--line);
  border-radius: 12px;
  background: var(--card);
  padding: 0 16px;
  font-size: 16px;
  box-sizing: border-box;
  box-shadow: none;
}
.founding-card--free .gm-email-row button[type="submit"] {
  width: 100%;
  min-width: 0;
  height: 48px;
  min-height: 48px;
  border-radius: 999px;
  font-size: 15px;
  box-shadow: 0 1px 2px var(--line);
}

/* Button specs owned by base.css (v1.1 A · 52px · mobile 100% / desktop auto) */
.btn-solid-pill:hover { opacity: 0.94; }
.btn-solid-pill:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

/* How $1 works — single visual authority (avoid re-explaining everywhere) */
.how-dollar {
  border-radius: var(--radius-card);
  padding: var(--card-pad-m);
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .how-dollar { padding: var(--card-pad-d); }
}
.how-dollar__head {
  text-align: left;
  max-width: none;
  margin: 0 0 var(--space-4);
}
.how-dollar__eyebrow {
  margin: 0;
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--muted);
}
.how-dollar__title {
  margin: var(--space-2) 0 0;
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  font-weight: 450;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-align: left;
}
.how-dollar__reassure {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--body);
}
.how-dollar__reassure strong {
  color: var(--ink);
  font-weight: 600;
}
/* v1.1 B: flat steps inside how-dollar card — no nested boxes, no circles */
.how-dollar__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}
@media (min-width: 768px) {
  .how-dollar__steps {
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
  }
}
.how-dollar__step {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--space-3);
  align-items: start;
  padding: var(--space-4) 0;
  border-radius: 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .how-dollar__step {
    padding: 0 var(--space-5) 0 0;
    border-bottom: 0;
    border-right: 1px solid var(--line);
  }
  .how-dollar__step:last-child {
    border-right: 0;
    padding-right: 0;
  }
}
.how-dollar__n {
  width: auto;
  height: auto;
  border-radius: 0;
  display: inline;
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 450;
  line-height: 1.2;
  color: var(--green);
  background: none;
}
.how-dollar__t {
  margin: 0;
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--green);
}
.how-dollar__d {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--body);
}
.how-dollar__d strong {
  color: var(--ink);
  font-weight: 600;
}
.how-dollar__cta .btn-solid-pill {
  width: 100%;
  max-width: none;
}

/* Honest claimed count — no fake-full bar (P1-3) */
.founding-scarce { display: none; }
.founding-scarce-claimed {
  margin: 10px 0 0;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
}


/* 施工单 §8 · dollar-steps flat (no nested boxes, no circles) */
.founding-card.paper,
.how-dollar.paper,
.how-dollar.founding-card {
  padding: 24px;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .founding-card.paper,
  .how-dollar.paper,
  .how-dollar.founding-card {
    padding: 32px;
  }
}
.how-dollar__title,
.founding-card .how-dollar__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-h3, 1.35rem);
  color: var(--ink);
  text-align: left;
}
.dollar-steps {
  list-style: none;
  margin: 24px 0 0;
  padding: 0;
}
.dollar-steps li {
  display: flex;
  gap: 16px;
  align-items: baseline;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
  background: none;
  border-radius: 0;
  box-shadow: none;
  border-top: 0;
  border-left: 0;
  border-right: 0;
}
.dollar-steps li:last-child { border-bottom: 0; }
.dollar-steps__n {
  font-family: var(--font-display);
  font-size: 20px;
  color: var(--green);
  font-weight: 450;
  line-height: 1.2;
  background: none;
  border-radius: 0;
  width: auto;
  height: auto;
  display: inline;
  flex-shrink: 0;
}
.dollar-steps__t {
  font-weight: 600;
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0;
}
.dollar-steps__d {
  font-size: 17px;
  color: var(--body);
  margin-top: 2px;
  margin-bottom: 0;
}
@media (min-width: 768px) {
  .dollar-steps {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 32px;
  }
  .dollar-steps li {
    border-bottom: 0;
    border-left: 1px solid var(--line);
    padding: 4px 0 4px 24px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: flex-start;
  }
  .dollar-steps li:first-child {
    border-left: 0;
    padding-left: 0;
  }
}
/* kill legacy nested step chrome if class still referenced */
.how-dollar__step,
.how-dollar__n {
  background: none;
  border-radius: 0;
}
.how-dollar__cta {
  margin-top: 24px;
  margin-bottom: 0;
  padding-bottom: 0;
}
.how-dollar__cta .gm-email-hint,
.how-dollar .small {
  margin-top: 12px;
  margin-bottom: 0;
}
.how-dollar {
  padding-bottom: 24px;
}
@media (min-width: 768px) {
  .how-dollar { padding-bottom: 32px; }
}
/* G1 founding button — full width mobile + desktop (fills card, no left orphan) */
#foundingHoldBtn,
.how-dollar .btn-solid-pill,
.how-dollar__cta .btn-solid-pill {
  width: 100%;
  max-width: none;
  display: inline-flex;
  justify-content: center;
}

/* —— v1.2 VIP tier + price ladder —— */
.tier-featured {
  border-color: rgba(28, 42, 34, 0.18);
  box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 12px 32px rgba(24, 21, 18, 0.08);
}
.tier-featured__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin-bottom: 0.75rem;
}
.tier-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 0.65rem;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  background: rgba(36, 48, 41, 0.1);
  color: var(--green, #243029);
}
.tier-price {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(2rem, 8vw, 2.5rem);
  font-weight: 450;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--ink, #181512);
}
.tier-price small {
  margin-left: 0.35rem;
  font-family: var(--font-sans, system-ui, sans-serif);
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--muted, #6b645c);
  vertical-align: baseline;
}
.tier-list {
  list-style: none;
  margin: 0 0 1.25rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.tier-list li {
  position: relative;
  padding-left: 1.15rem;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--body, #3a342e);
}
.tier-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: #c4a574;
}
.tier-list strong {
  color: var(--ink, #181512);
  font-weight: 600;
}

.price-ladder {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  border-radius: 1.25rem;
  overflow: hidden;
  background: var(--card, #fffcf7);
}
/* Ladder inside VIP card — compact 3-row price strip */
.price-ladder--in-card {
  margin: 0.25rem 0 1.15rem;
  border-radius: 0.75rem;
  background: rgba(24, 21, 18, 0.03);
}
.price-ladder--in-card .price-ladder__row {
  grid-template-columns: 1fr auto;
  padding: 0.55rem 0.85rem;
  font-size: 0.8125rem;
}
.price-ladder--in-card .price-ladder__price {
  font-size: 1rem;
}
.price-ladder__row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 0.5rem 0.75rem;
  align-items: center;
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  font-size: 0.875rem;
}
.price-ladder__row:last-child {
  border-bottom: 0;
}
.price-ladder__row--vip {
  background: rgba(36, 48, 41, 0.06);
}
.price-ladder__who {
  font-weight: 600;
  color: var(--ink, #181512);
}
.price-ladder__price {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  color: var(--ink, #181512);
}
.price-ladder__note {
  font-size: 0.75rem;
  color: var(--muted, #6b645c);
  text-align: right;
  min-width: 5.5rem;
}
.price-ladder__row--vip .price-ladder__note {
  color: var(--green, #243029);
  font-weight: 600;
}

/* Tighter tier list — short lines, no long parenthetical wraps */
#founding .tier-list {
  margin-bottom: 0.85rem;
  gap: 0.4rem;
}
#founding .tier-list li {
  font-size: 0.875rem;
  line-height: 1.32;
  max-width: 28ch;
}
#founding .lede {
  max-width: 28ch;
  line-height: 1.4;
}
#founding .how-dollar__title {
  display: none; /* no “What you get” essay header */
}
/* HEAD follows global base §4 (mobile left / desktop center).
   VIP / how-dollar / actions remain CONTENT hard-left + button 100%. */
#founding .section-head {
  margin-bottom: 0.5rem;
}
#founding .how-dollar,
#founding #how-dollar,
#founding .tier-featured {
  text-align: left;
}
#founding .how-dollar__head,
#founding .how-dollar__title,
#founding .tier-list,
#founding .founding-card__cta,
#founding .how-dollar__cta {
  text-align: left;
  margin-inline: 0;
}

/* Finale: $1 primary above free form — full measure, not 22rem island */
.cta-dark__primary {
  width: 100%;
  max-width: none;
  min-height: 3.1rem;
  margin: 0 0 0.65rem;
  display: flex;
}
.cta-final__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  max-width: none;
  width: 100%;
  margin-inline: 0;
}
.cta-dark__free {
  width: 100%;
  max-width: none;
  margin-inline: 0;
}
#cta .cta-final__sub {
  margin-bottom: 1.15rem;
  max-width: 28ch;
}
#cta .cta-dark__row {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
#cta .cta-dark__row input[type="email"] {
  min-height: 3rem;
  border-radius: 999px;
  padding: 0.75rem 1.1rem;
}
#cta .cta-dark__row button[type="submit"] {
  min-height: 3.1rem;
  width: 100%;
  border-radius: 999px;
}
#cta.cta-dark {
  padding-block: clamp(2.5rem, 8vw, 3.5rem);
}
#cta .cta-final__copy {
  margin-bottom: 0.25rem;
}


/* ===== breath.css ===== */
/* Breath preview — stage (canvas) + panel (controls) stacked, never clipped */
#breathMount { width: 100%; }

.gm-breath {
  border-radius: 16px;
  border: 1px solid var(--color-border);
  background: var(--color-bg-elevated);
  box-shadow: var(--shadow-soft);
  overflow: hidden; /* clips radius only; full content in flow */
  display: flex;
  flex-direction: column;
}

/* Canvas / orb area — tall enough that expand rings stay fully visible */
.gm-breath__stage {
  position: relative;
  width: 100%;
  height: 240px;
  min-height: 240px;
  max-height: none;
  flex: 0 0 auto;
  background: var(--paper);
  overflow: hidden;
}
@media (min-width: 640px) {
  .gm-breath__stage {
    height: 360px;
    min-height: 360px;
  }
}
@media (min-width: 1024px) {
  .gm-breath__stage {
    height: min(48vh, 440px);
    min-height: 400px;
  }
  .gm-breath__panel {
    padding: 1rem 1.35rem 1.15rem;
  }
  .gm-breath__modes {
    grid-template-columns: repeat(4, 1fr);
    gap: 0.5rem;
  }
  .gm-breath__mode {
    min-height: 2.75rem;
    padding: 0.5rem 0.6rem;
  }
  .gm-breath__mode strong { font-size: 0.82rem; }
  .gm-breath__mode span { font-size: 0.7rem; }
  .gm-breath__cta { min-height: 48px; font-size: 0.95rem; }
  .gm-breath__phase { font-size: 1.4rem; }
}

/*
 * No CSS ring on stage — each of the 4 modes draws its own visual on canvas
 * (sigh / box / tide / ember). A shared ::after ring made Soften/Steady/etc.
 * look identical and hid mode-specific motion.
 */
.gm-breath__stage::before,
.gm-breath__stage::after {
  content: none;
  display: none;
}

.gm-breath__stage canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
  z-index: 1; /* above stage bg; mode visuals fully visible */
}
.gm-breath__veil {
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 2;
  /* lighter veils so canvas modes stay visible (quiet brand, less mud) */
  background:
    linear-gradient(180deg, rgba(243, 238, 229, 0.22) 0%, rgba(243, 238, 229, 0) 20%),
    linear-gradient(0deg, rgba(243, 238, 229, 0.28) 0%, rgba(243, 238, 229, 0) 32%);
}

/* Eyebrow/timer over canvas */
.gm-breath__top {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 2;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
  padding: 0.85rem 0.95rem;
  pointer-events: none;
}
.gm-breath__eyebrow {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-fg-subtle);
}
.gm-breath__timer {
  margin: 0;
  min-width: 2.5rem;
  text-align: right;
  font-size: 0.85rem;
  font-variant-numeric: tabular-nums;
  color: var(--color-fg-muted);
  background: color-mix(in oklab, var(--card) 72%, transparent);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 0.2rem 0.65rem;
  pointer-events: auto;
}
.gm-breath__timer[hidden] { display: none; }

/* Controls panel BELOW stage — full height, never cut off */
.gm-breath__panel {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1rem 0.95rem 1.1rem;
  background: var(--color-bg-elevated);
  border-top: 1px solid var(--line);
}
@media (min-width: 640px) {
  .gm-breath__panel { padding: 1.15rem 1.25rem 1.25rem; gap: 0.85rem; }
}

.gm-breath__caption { text-align: center; padding: 0 0.25rem; }
.gm-breath__phase {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  color: var(--color-fg);
  line-height: 1.2;
}
@media (min-width: 640px) {
  .gm-breath__phase { font-size: 1.4rem; }
}
.gm-breath__need {
  margin: 0.3rem 0 0;
  font-size: 0.9rem;
  color: var(--color-fg-muted);
  line-height: 1.4;
}
.gm-breath.is-running .gm-breath__need { display: none; }
.gm-breath.is-running .gm-breath__phase {
  font-size: 1.1rem;
  color: var(--color-fg-muted);
  font-weight: 400;
}

.gm-breath__modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
}
@media (min-width: 640px) {
  .gm-breath__modes { grid-template-columns: repeat(4, 1fr); }
}
.gm-breath__mode {
  border: 1px solid var(--color-border);
  background: color-mix(in oklab, var(--card) 80%, transparent);
  border-radius: 12px;
  padding: 0.55rem 0.6rem;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  min-height: 2.9rem;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.gm-breath__mode:hover { border-color: var(--line); }
.gm-breath__mode strong {
  display: block;
  font-size: 0.8rem;
  font-weight: 550;
  color: var(--color-fg);
}
.gm-breath__mode span {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.68rem;
  color: var(--color-fg-subtle);
  line-height: 1.25;
}
.gm-breath__mode.is-active {
  border-color: color-mix(in oklab, var(--color-sage) 45%, transparent);
  background: var(--color-bg-elevated);
  box-shadow: var(--shadow-card);
}
.gm-breath.is-running .gm-breath__mode { opacity: 0.55; pointer-events: none; }
.gm-breath.is-running .gm-breath__mode.is-active { opacity: 1; }

.gm-breath__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 48px;
  border: 0;
  border-radius: 999px;
  background: var(--color-accent);
  color: var(--color-accent-fg);
  font: inherit;
  font-weight: 500;
  font-size: 0.95rem;
  cursor: pointer;
  box-shadow: 0 1px 2px var(--line);
  transition: opacity 0.15s;
}
.gm-breath__cta:hover { opacity: 0.94; }
.gm-breath__cta:active { opacity: 0.88; }
.gm-breath__fine {
  margin: 0;
  text-align: center;
  font-size: 0.72rem;
  color: var(--color-fg-subtle);
  line-height: 1.35;
}

/* Legacy absolute UI (if old markup caches) — force unclip */
.gm-breath__ui {
  position: relative;
  inset: auto;
  display: contents;
}
.gm-breath__spacer { display: none; }
.gm-breath__bottom {
  display: contents;
}

/* CRO: breath demo is optional — hide on mobile to protect conversion focus */
@media (max-width: 639px) {
  .breath-section-desktop { display: none; }
}

/* #breath: HEAD mobile left; desktop ≥768 center (VISUAL_CONSTITUTION).
   Caption center OK (component exception). Canvas mount full content width. */
#breath .section-head {
  text-align: left;
  max-width: none;
  width: 100%;
  margin-inline: 0;
}
#breath > .mx-auto {
  display: block; /* never half-grid — mount needs full container */
}
#breathMount,
.breath-mount {
  width: 100%;
  max-width: none;
  margin-top: 24px;
}
@media (min-width: 768px) {
  #breath .section-head {
    text-align: center;
    margin-inline: auto;
    max-width: min(40rem, 100%);
  }
  #breathMount,
  .breath-mount {
    margin-top: 32px;
  }
  /* Desktop stage a bit taller for canvas presence */
  #breath .gm-breath__stage {
    height: min(48vh, 440px);
    min-height: 400px;
  }
}
.method-disclaimer {
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted, #827a70);
  /* measure capped only when standalone; #method overrides to full-width footnote */
  max-width: 48ch;
}
#method .method-disclaimer {
  max-width: none;
  width: 100%;
}


/* ===== sticky.css ===== */
/* sticky bottom — DESIGN_SYSTEM §6: mobile only, height 64, single button */
@media (min-width: 768px) {
  #stickyCta {
    display: none;
    visibility: hidden;
    pointer-events: none;
  }
}
#stickyCta {
  position: fixed;
  inset-inline: 0;
  bottom: 0;
  z-index: 60;
  /* Include home-indicator so content padding can match full bar height */
  height: calc(var(--sticky-h) + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--line);
  background: var(--paper);
  transform: translateY(100%);
  transition: transform var(--dur) var(--ease-out), opacity var(--dur) var(--ease-out);
  box-shadow: none;
  pointer-events: auto;
  -webkit-tap-highlight-color: transparent;
}
/* Ghost side CTAs (legacy app-v2 hooks) — never take layout or paint 1px leaks */
#stickyCta #stickyFreeLink,
#stickyCta #stickyHoldLink,
#stickyCta .sticky-side-link[aria-hidden="true"] {
  display: none;
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
  pointer-events: none;
}
#stickyCta.is-show { transform: translateY(0); }
/* R3-1: hide sticky while #cta is in view (avoid triple buttons) */
#stickyCta.is-cta-visible,
#stickyCta.is-show.is-cta-visible {
  transform: translateY(100%);
  pointer-events: none;
  visibility: hidden;
}
#stickyCta[hidden] { display: none; }
html.gm-vip-open #stickyCta,
html.gm-modal-open #stickyCta,
html.gm-flow-open #stickyCta,
html.gm-ivory-hold-open #stickyCta,
html.gm-ivory-pay-flow #stickyCta { display: none; }

.sticky-inner {
  max-width: var(--container-max);
  height: 100%;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center; /* single primary CTA is centered (free + Reserve · $1) */
  gap: var(--space-3);
  padding: 0 var(--container-pad-m);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .sticky-inner {
    padding-left: var(--container-pad-d);
    padding-right: var(--container-pad-d);
  }
}

.sticky-copy {
  margin: 0;
  flex: 0 1 auto;
  min-width: 0;
  color: var(--body);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sticky-copy--desk {
  display: none;
  font-size: 14px;
}
.sticky-copy--mob {
  display: block;
  font-size: 12px;
  max-width: 5.5rem;
  font-weight: 500;
  color: var(--green);
}
@media (min-width: 640px) {
  .sticky-copy--desk { display: block; }
  .sticky-copy--mob { display: none; }
}
/* Sticky $1 CTA: left copy = Hold with $1; solid button = Hold with $1 */
.sticky-hold-desk { display: none; }
.sticky-hold-mob { display: inline; }
@media (min-width: 640px) {
  .sticky-hold-desk { display: inline; }
  .sticky-hold-mob { display: none; }
}
.sticky-cta-btn .gm-price-1 {
  white-space: nowrap;
}

.sticky-actions {
  margin-left: 0;
  margin-right: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
}
/* Single primary (Get free preview / Reserve · $1): full bar, true center */
.sticky-actions--single,
.sticky-actions--free-only {
  width: 100%;
  margin-inline: 0;
  justify-content: center;
  flex: 1 1 auto;
}
.sticky-actions--single .sticky-cta-btn,
.sticky-actions--free-only .sticky-cta-btn {
  flex: 1 1 auto;
  width: 100%;
  max-width: min(22rem, 100%);
  margin-inline: auto;
  text-align: center;
}
@media (min-width: 640px) {
  .sticky-actions {
    gap: 12px;
  }
  .sticky-actions--single .sticky-cta-btn,
  .sticky-actions--free-only .sticky-cta-btn {
    max-width: 22rem;
  }
}

/* Free sample — white / outline secondary */
.sticky-side-link {
  flex: 0 1 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 44px;
  height: 44px;
  min-width: 0;
  max-width: none;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--card);
  color: var(--ink);
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .sticky-side-link {
    padding: 0 16px;
    font-size: 13px;
  }
}
.sticky-side-link:hover {
  border-color: var(--line);
  background: var(--paper);
}
.sticky-side-link:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}

/* Early-bird $1 — solid primary (not a full-bleed empty bar) */
.sticky-cta-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  height: 44px;
  min-width: 0;
  max-width: 18rem;
  padding: 0 14px;
  border-radius: 999px;
  background: var(--green);
  color: var(--card);
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  border: 0;
  cursor: pointer;
  font-family: inherit;
  box-shadow: 0 1px 2px var(--line);
  flex: 0 1 auto;
  box-sizing: border-box;
  white-space: nowrap;
}
@media (min-width: 640px) {
  .sticky-cta-btn {
    font-size: 14px;
    padding: 0 20px;
    min-width: 11rem;
  }
}
.sticky-cta-btn:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring), 0 1px 2px var(--line);
}
.sticky-cta-btn .gm-buck,
.sticky-cta-btn .gm-buck-n {
  color: inherit;
  font: inherit;
}

/* CRO: $1 primary sticky + preview secondary (pair) — keep end-align only for multi-btn */
.sticky-actions--dollar-primary:not(.sticky-actions--single) {
  display: flex;
  width: auto;
  margin-left: auto;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
}
/* When only one $1 button is visible, still center like free-only */
.sticky-actions--dollar-primary.sticky-actions--single {
  width: 100%;
  margin-left: 0;
  justify-content: center;
}
/* Pair-only bar: centered, balanced buttons (no orphan Save $10+ label) */
.sticky-actions--pair-only {
  width: 100%;
  margin-left: 0;
  justify-content: stretch;
  gap: 10px;
}
.sticky-actions--pair-only .sticky-side-link {
  flex: 0 0 auto;
  min-width: 5.5rem;
}
.sticky-actions--pair-only .sticky-cta-btn {
  flex: 1 1 auto;
  max-width: none;
  min-width: 0;
}
.sticky-actions--dollar-primary .sticky-cta-btn {
  flex: 0 1 auto;
  text-align: center;
  text-decoration: none;
}
.sticky-actions--dollar-primary .sticky-side-link {
  flex: 0 0 auto;
}
@media (max-width: 639px) {
  .sticky-inner {
    gap: 8px;
    justify-content: center;
  }
  .sticky-actions--dollar-primary:not(.sticky-actions--single),
  .sticky-actions--free-only,
  .sticky-actions--single {
    width: 100%;
    flex: 1 1 auto;
    justify-content: center;
  }
  .sticky-actions--pair-only {
    width: 100%;
  }
  .sticky-actions--dollar-primary .sticky-cta-btn,
  .sticky-actions--single .sticky-cta-btn,
  .sticky-actions--free-only .sticky-cta-btn {
    flex: 1 1 auto;
    max-width: min(22rem, 100%);
  }
}
@media (min-width: 640px) {
  .sticky-actions--pair-only {
    max-width: 28rem;
    margin-left: auto;
    margin-right: auto;
  }
  .sticky-actions--dollar-primary .sticky-cta-btn {
    flex: 0 0 auto;
  }
  .sticky-actions--pair-only .sticky-cta-btn {
    flex: 1 1 auto;
  }
}

/* Circular-style repeated offer strip */
.gm-offer-strip {
  border-block: 1px solid var(--line);
  background: var(--paper-2);
  padding: 14px 16px;
}
.gm-offer-strip__inner {
  max-width: 72rem;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.gm-offer-strip__copy {
  margin: 0;
  flex: 1 1 14rem;
  font-size: 14px;
  line-height: 1.4;
  color: var(--ink);
}
.gm-offer-strip__muted {
  color: var(--muted);
  font-weight: 400;
}
.gm-offer-strip__btn {
  flex: 0 0 auto;
  min-height: 48px;
  white-space: nowrap;
}


/* ===== layout.css ===== */
/* layout helpers */
.max-6xl { max-width: 72rem; margin-left: auto; margin-right: auto; }
.px-page { padding-left: 1rem; padding-right: 1rem; }
@media (min-width: 640px) { .px-page { padding-left: 1.5rem; padding-right: 1.5rem; } }
.grid-2 { display: grid; gap: 0.75rem; }
@media (min-width: 640px) { .grid-2 { grid-template-columns: 1fr 1fr; gap: 1rem; } }
.grid-3 { display: grid; gap: 0.75rem; }
@media (min-width: 640px) { .grid-3 { grid-template-columns: 1fr 1fr 1fr; gap: 1rem; } }
/* ── Single-funnel extras (cro2p / cro2v) ── */
.proof-hero {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
.proof-hero__img {
  aspect-ratio: 3 / 2;
  max-width: none;
  width: 100%;
  margin: 0;
}
/* v1.1 B: flat steps — no nested cards, serif num + line rules */
.proof-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
  border-top: 1px solid var(--line);
}
@media (min-width: 768px) {
  .proof-steps {
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    border-top: 0;
  }
}
.proof-step {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  padding: var(--space-4) 0;
  margin: 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  box-shadow: none;
}
@media (min-width: 768px) {
  .proof-step {
    padding: 0 var(--space-5) 0 0;
    border-bottom: 0;
    border-right: 1px solid var(--line);
  }
  .proof-step:last-child {
    border-right: 0;
    padding-right: 0;
  }
}
.proof-step__n {
  font-family: var(--font-display);
  font-size: 20px;
  line-height: 1.2;
  font-weight: 450;
  color: var(--green);
  flex-shrink: 0;
  width: auto;
  height: auto;
  background: none;
  border-radius: 0;
}
.proof-step h3 {
  margin: 0;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
}
.proof-step p {
  margin: var(--space-2) 0 0;
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--body);
  max-width: 60ch;
}
/* $1 card: full width of section container — never a narrow centered float */
.sample-dollar {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  padding: var(--card-pad-m);
  border: 1px solid var(--line);
  animation: sampleDollarIn var(--dur) var(--ease-out) both;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .sample-dollar { padding: var(--card-pad-d); }
}
.sample-dollar[hidden] { display: none; }
.sample-dollar.is-show { display: block; }
/* v1.1 A: mobile full / desktop auto — no fixed max-width middle */
.sample-dollar .btn-solid-pill {
  width: 100%;
  max-width: none;
}
@media (min-width: 768px) {
  .sample-dollar .btn-solid-pill {
    width: auto;
  }
}
.sample-dollar__link {
  display: inline-block;
  margin-top: var(--space-3);
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--green);
  text-decoration: underline;
  text-underline-offset: 3px;
}
@keyframes sampleDollarIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
/* Sample desktop: form card | player card equal height · §5 6/6 gap 32 */
.sample-core {
  align-items: stretch;
}
@media (min-width: 768px) {
  .sample-core {
    gap: var(--col-gap);
  }
}
.sample-core .form-area,
.sample-core .audio-teaser {
  height: 100%;
  min-height: 100%;
  box-sizing: border-box;
}
.sample-core .audio-teaser {
  display: flex;
  flex-direction: column;
  padding: var(--card-pad-m);
}
@media (min-width: 768px) {
  .sample-core .audio-teaser { padding: var(--card-pad-d); }
}
.sample-form-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 100%;
  min-width: 0;
  padding: var(--card-pad-m);
  box-sizing: border-box;
  /* visible so Join is not clipped; padding contains controls */
  overflow: visible;
}
@media (min-width: 768px) {
  .sample-form-card { padding: var(--card-pad-d); }
}
.sample-form-card .signup {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  height: 100%;
}
.sample-form-card__lead {
  margin: 0 0 var(--space-4);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--body);
  max-width: 36ch;
}
/* Sample card is already one column of a 2-col desktop grid.
   Always stack email + submit vertically — never row (row + width:100%
   input overflows the card and paints over the teaser). */
.sample-form-card__stack,
.sample-form-card .gm-email-row.sample-form-card__stack {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-2);
  width: 100%;
  min-width: 0;
  max-width: 100%;
  overflow: visible;
}
/* Never let flex shrink kill control height (mobile collapse ~23px) */
.sample-form-card__stack input[type="email"],
.sample-form-card .gm-email-row input[type="email"] {
  flex: 0 0 auto;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  height: var(--control-h);
  min-height: var(--control-h);
  box-sizing: border-box;
}
.sample-form-card__stack button[type="submit"],
.sample-form-card .gm-email-row button[type="submit"] {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  flex: 0 0 auto;
  height: var(--control-h);
  min-height: var(--control-h);
  white-space: normal;
  overflow-wrap: anywhere;
}
/* Desktop: still column inside the form card (teaser sits beside the card) */
@media (min-width: 768px) {
  .sample-form-card__stack,
  .sample-form-card .gm-email-row.sample-form-card__stack {
    flex-direction: column;
    align-items: stretch;
  }
  .sample-form-card__stack button[type="submit"],
  .sample-form-card .gm-email-row button[type="submit"] {
    width: 100%;
    min-width: 0;
  }
}
.sample-core {
  min-width: 0;
}
.sample-core > * {
  min-width: 0;
}
/* Flat inputs inside cards — no nested gm-email-box chrome */
.sample-form-card .gm-email-row input[type="email"],
.paper .gm-email-row input[type="email"] {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: var(--radius-input);
  padding: 0 var(--space-4);
}
.sample-form-card .gm-email-row input[type="email"]:focus {
  border-color: var(--green);
  box-shadow: var(--focus-ring);
}
.nowrap { white-space: nowrap; }

/* v1.1 B: real-today flat columns, no paper subcards */
.real-grid {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--line);
}
@media (min-width: 768px) {
  .real-grid {
    grid-template-columns: repeat(3, 1fr);
    border-top: 0;
  }
}
.real-card {
  padding: var(--space-4) 0;
  margin: 0;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  box-shadow: none;
}
@media (min-width: 768px) {
  .real-card {
    padding: 0 var(--space-5) 0 0;
    border-bottom: 0;
    border-right: 1px solid var(--line);
  }
  .real-card:last-child {
    border-right: 0;
    padding-right: 0;
  }
}
.real-card__n {
  margin: 0 0 var(--space-2);
  font-family: var(--font-display);
  font-size: 20px;
  line-height: 1.2;
  color: var(--green);
  font-weight: 450;
}
.real-card__label {
  margin: 0 0 var(--space-3);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  color: var(--green);
}
.real-card__label--on { color: var(--green); }
.real-card ul {
  margin: 0;
  padding-left: 1.1rem;
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--body);
}
.real-card li { margin: var(--space-1) 0; }
.kit-compact {
  list-style: none;
  margin: 0; /* CONTENT left rail — never centered float island */
  max-width: none;
  width: 100%;
  padding: 1rem 1.25rem;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .kit-compact { max-width: 58.333%; } /* ~7/12 of container */
}
.kit-compact li {
  padding: 0.45rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.95rem;
  color: var(--color-fg-muted, var(--body));
}
.kit-compact li:last-child { border-bottom: 0; }
.worlds-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-start;
}
.world-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0.5rem 0.85rem;
  font-size: 0.875rem;
  border-radius: 999px;
  background: var(--card);
  border: 1px solid var(--line);
}
.world-chip em {
  font-style: normal;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--green);
}
.sticky-actions--single {
  display: flex;
  justify-content: flex-start;
  width: 100%;
}
.sticky-actions--single .sticky-cta-btn {
  width: 100%;
  max-width: 22rem;
}
.faq-list details {
  border-bottom: 1px solid var(--line);
  padding: 0.75rem 0;
}
.faq-list summary {
  cursor: pointer;
  font-weight: 400;
  list-style: none;
}
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list .a {
  margin-top: 0.5rem;
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--color-fg-muted, var(--body));
  max-width: 60ch;
}

/* ── Hero: single job — understand (trust-first) ── */
.hero-section {
  position: relative;
  isolation: isolate;
  padding-top: 24px;
  padding-bottom: 12px;
}
@media (min-width: 640px) {
  .hero-section { padding-top: 40px; padding-bottom: 20px; }
}
@media (min-width: 1024px) {
  .hero-section { padding-top: 52px; padding-bottom: 28px; }
}
.hero-section::before { display: none; } /* v1: no gradients */

/*
 * Linen hero (ivory-granite-rose-cherry):
 * Mobile: shot → intro → join
 * Desktop: intro+join left, shot right
 */
.hero-grid,
.hero-grid--linen {
  display: grid;
  gap: 16px;
  align-items: start;
  grid-template-columns: 1fr;
}
.hero-intro,
.hero-shot,
.hero-join {
  min-width: 0;
  width: 100%;
}
.hero-grid--linen .hero-shot  { order: 1; }
.hero-grid--linen .hero-intro { order: 2; }
.hero-grid--linen .hero-join  { order: 3; }
/* Sparse hero: more air, less stack */
.hero-section--linen { padding-bottom: 4px; }
.hero-grid--linen { gap: 18px; }
@media (min-width: 640px) {
  .hero-grid--linen { gap: 22px 48px; }
}
@media (max-width: 639px) {
  .hero-grid--linen { gap: 14px; }
  /* Slightly shorter hero image so copy breathes */
  .hero-shot .img-frame--linen { aspect-ratio: 16 / 9; }
}

/* v1.1 E: ≥1024 6/6, image covers full copy column height */
@media (min-width: 1024px) {
  .hero-grid--linen {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
      "intro shot"
      "join  shot";
    gap: var(--space-6) var(--col-gap);
    /* start so intro/join top-rail; shot still stretches via align-self */
    align-items: start;
  }
  /* Top-align with shot (was end → “left high / right low”) */
  .hero-grid--linen .hero-intro { grid-area: intro; order: unset; align-self: start; }
  .hero-grid--linen .hero-shot  {
    grid-area: shot;
    order: unset;
    align-self: stretch;
    display: flex;
  }
  .hero-grid--linen .hero-shot .img-frame--linen {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-height: 100%;
    aspect-ratio: 3 / 2;
    max-height: none;
  }
  .hero-grid--linen .hero-join  { grid-area: join;  order: unset; align-self: start; }
}

/* H1 — v1.1 C scale */
.hero-h1 {
  font-family: var(--font-display);
  font-weight: 450;
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: -0.03em;
  color: var(--ink);
  max-width: 14ch;
  margin: var(--space-3) 0 0;
  text-wrap: balance;
}
@media (min-width: 768px) {
  .hero-h1 {
    margin-top: var(--space-3);
    max-width: 12ch;
  }
}
@media (max-width: 639px) {
  .hero-h1 {
    max-width: none;
    font-size: 1.75rem;
  }
}
.hero-lede {
  margin-top: 10px;
  max-width: 28ch;
  font-size: 0.98rem;
  line-height: 1.45;
  color: var(--color-fg-muted, var(--body));
}
@media (min-width: 640px) {
  .hero-lede {
    margin-top: 12px;
    font-size: 1.05rem;
  }
}
.join-panel--sparse {
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.join-panel--sparse .gm-email-hint {
  margin-top: 10px;
  text-align: center;
  font-size: 12.5px;
  color: var(--color-fg-subtle, var(--muted));
}
@media (min-width: 640px) {
  .join-panel--sparse .gm-email-hint { text-align: left; }
}
.hero-eyebrow {
  letter-spacing: 0.16em;
  color: var(--color-sage);
  font-weight: 600;
  font-size: 0.6875rem;
  margin: 0;
}
/* lede kept for legacy sections; hero no longer uses it */
.hero-lede {
  font-size: 17px;
  line-height: 1.55;
  color: var(--color-fg-muted);
  max-width: 38ch;
  margin: 14px 0 0;
}
@media (min-width: 640px) {
  .hero-lede {
    font-size: 17px;
    max-width: 36ch;
  }
}

/* Free-sample paper card (design source join panel) */
.join-panel {
  max-width: none;
  width: 100%;
  box-sizing: border-box;
}
.join-panel--simple {
  margin-top: 4px;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  border: 0;
}
.join-panel--paper {
  margin-top: 0;
  padding: 14px;
  border-radius: 18px;
}
@media (min-width: 640px) {
  .join-panel--paper { padding: 20px; }
}
.join-panel__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
}
.join-panel__title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 550;
  letter-spacing: -0.01em;
  color: var(--color-fg);
}
.join-panel__count {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--color-fg-subtle);
  white-space: nowrap;
}
.hero-hold-whisper {
  margin: 12px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--color-fg-subtle, var(--muted));
}
.hero-hold-whisper__btn {
  display: inline;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-weight: 550;
  color: var(--color-fg);
  text-decoration: underline;
  text-decoration-color: var(--green);
  text-underline-offset: 2px;
  cursor: pointer;
}
.hero-trust-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: 12px;
  font-size: 12px;
  color: var(--color-fg-subtle, var(--muted));
}
@media (min-width: 640px) {
  .hero-trust-row { font-size: 13px; margin-top: 14px; }
}

/* Dual path strip under hero */
.dual-path-strip {
  display: grid;
  overflow: hidden;
  border-radius: 18px;
}
@media (min-width: 640px) {
  .dual-path-strip { grid-template-columns: 1fr 1fr; }
}
.dual-path-strip__col {
  padding: 16px 18px;
  border-bottom: 1px solid var(--line);
}
@media (min-width: 640px) {
  .dual-path-strip__col {
    padding: 20px 22px;
    border-bottom: 0;
    border-right: 1px solid var(--line);
  }
  .dual-path-strip__col:last-child { border-right: 0; }
}
.dual-path-strip__col--opt {
  background: color-mix(in oklab, var(--color-bg, var(--paper-2)) 50%, transparent);
}
.dual-path-strip__step {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-fg-subtle, var(--muted));
}
.dual-path-strip__step--opt { color: var(--color-sage, var(--green)); }
.dual-path-strip__title {
  margin: 6px 0 0;
  font-family: var(--font-display);
  font-size: 1.15rem;
  letter-spacing: -0.02em;
  color: var(--color-fg);
}
@media (min-width: 640px) {
  .dual-path-strip__title { font-size: 1.25rem; }
}
.dual-path-strip__body {
  margin: 4px 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--color-fg-muted, var(--body));
}
.dual-path-strip__link,
.dual-path-strip__btn {
  display: inline-flex;
  align-items: center;
  margin-top: 10px;
  min-height: 40px;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-size: 0.875rem;
  font-weight: 550;
  color: var(--color-sage, var(--green));
  text-decoration: none;
  cursor: pointer;
}
.dual-path-strip__link:hover,
.dual-path-strip__btn:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.dual-path-strip__btn { color: var(--color-fg); }

/* Linen product shot — natural landscape frame (hero-linen.jpg) */
.hero-shot .img-frame,
.hero-shot .img-frame--linen {
  position: relative;
  width: 100%;
  border-radius: 18px;
  overflow: hidden;
  aspect-ratio: 16 / 10;
  max-height: none;
  height: auto;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.5) inset,
    0 14px 36px var(--line);
  border: 1px solid var(--line);
  transition: box-shadow 0.3s ease;
}
@media (min-width: 640px) {
  .hero-shot .img-frame--linen { aspect-ratio: 4 / 3; }
}
@media (min-width: 1024px) {
  .hero-shot .img-frame--linen:hover {
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.5) inset,
      0 12px 40px var(--line);
  }
}
@media (max-height: 560px) and (max-width: 639px) {
  .hero-shot .img-frame--linen { aspect-ratio: 2 / 1; }
  .hero-section { padding-top: 8px; padding-bottom: 0; }
  .hero-h1 { font-size: 1.55rem; line-height: 1.14; }
}
@media (max-width: 639px) {
  .hero-section { padding-top: 12px; padding-bottom: 4px; }
  .hero-grid--linen { gap: 12px; }
  .hero-shot__cap { display: none; }
  .hero-micro-trust { display: none; }
  .hero-join .gm-email-hint { margin-top: 8px; font-size: 12px; }
  .hero-join .gm-email-row input[type="email"],
  .hero-join .gm-email-row button[type="submit"] {
    height: 48px;
    min-height: 48px;
  }
}
.hero-shot .img-frame img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  aspect-ratio: unset;
  max-height: none;
}

/* Stats under hero image */
.hero-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 12px;
}
@media (min-width: 640px) {
  .hero-stats { gap: 12px; margin-top: 14px; }
}
.hero-stat {
  text-align: center;
  padding: 10px 6px;
  border-radius: 12px;
}
@media (min-width: 640px) {
  .hero-stat { padding: 14px 8px; }
}
.hero-stat__k {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.15rem;
  letter-spacing: -0.02em;
  color: var(--color-fg);
}
@media (min-width: 640px) {
  .hero-stat__k { font-size: 1.5rem; }
}
.hero-stat__v {
  margin: 2px 0 0;
  font-size: 10px;
  color: var(--color-fg-subtle, var(--muted));
}
@media (min-width: 640px) {
  .hero-stat__v { font-size: 12px; }
}
.hero-shot__cap {
  margin: 10px 0 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--muted);
  letter-spacing: 0.01em;
}
.hero-micro-trust {
  margin: 14px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted);
  letter-spacing: 0.01em;
}

/*
 * Optional $1 bar — one clean line + CTA. No wall of price copy.
 */
.hold-later-band {
  background: var(--color-band, var(--paper-2));
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 12px 0;
}
@media (min-width: 768px) {
  .hold-later-band { padding: 14px 0; }
}
.hold-later,
.hold-later--stack,
.hold-later--bar {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  max-width: 44rem;
  margin: 0 auto;
  text-align: left;
  box-sizing: border-box;
}
@media (min-width: 768px) {
  .hold-later--bar {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 1.5rem;
  }
}
.hold-later__main {
  flex: 1 1 auto;
  min-width: 0;
}
.hold-later__eyebrow {
  margin: 0;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.hold-later__line {
  margin: 0;
  display: flex;
  flex-wrap: nowrap;
  align-items: baseline;
  gap: 8px 10px;
  min-width: 0;
}
.hold-later__pay-inline {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  flex: 0 0 auto;
}
.hold-later__pay-label {
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--green);
}
/* $1 figure — compact */
.hold-later__pay-n {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 450;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
@media (min-width: 768px) {
  .hold-later__pay-n { font-size: 1.65rem; }
}
.hold-later__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
@media (min-width: 768px) {
  .hold-later__title { font-size: 1.12rem; }
}
@media (max-width: 379px) {
  .hold-later__title { white-space: normal; }
}
.hold-later__price {
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.03em;
  color: var(--green);
  font-weight: 450;
}
.hold-later__meta {
  margin: 4px 0 0;
  font-size: 0.75rem;
  line-height: 1.35;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (max-width: 420px) {
  .hold-later__meta {
    white-space: normal;
  }
}
.hold-later__body {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--body);
}
.hold-later__body strong {
  color: var(--ink);
  font-weight: 600;
}
.hold-later__prices {
  margin: 0;
  font-size: 0.78rem;
  line-height: 1.4;
  color: var(--muted);
}
.hold-later__prices-lock {
  color: var(--green);
  font-weight: 550;
}
.hold-later__prices-sep {
  margin: 0 0.25em;
  opacity: 0.5;
  user-select: none;
}
.hold-later__actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  flex: 0 0 auto;
  width: 100%;
}
@media (min-width: 768px) {
  .hold-later__actions {
    width: auto;
    min-width: 11.5rem;
    align-items: center;
  }
}
button.hold-later__cta,
.hold-later__cta {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: nowrap;
  width: 100%;
  min-height: 44px;
  padding: 0 1.15rem;
  border: 0;
  border-radius: 999px;
  background: var(--color-accent, var(--green));
  color: var(--color-accent-fg, var(--card));
  font: 500 0.875rem/1.1 var(--font-sans);
  letter-spacing: 0.01em;
  text-decoration: none;
  cursor: pointer;
  box-sizing: border-box;
  white-space: nowrap;
  box-shadow: 0 1px 2px var(--line);
}
button.hold-later__cta:hover,
.hold-later__cta:hover {
  opacity: 0.94;
}
button.hold-later__cta:focus-visible,
.hold-later__cta:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring, 0 0 0 3px var(--line));
}
.hold-later__cta-label {
  display: inline;
  white-space: nowrap;
  position: static;
  left: auto;
  /* Never paint outside the CTA button (was left:-15 overflow on mobile) */
  transform: none;
  overflow: visible;
  max-width: 100%;
}
.gm-price-1 {
  display: inline;
  white-space: nowrap;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}
.gm-price-1 .gm-buck,
.gm-price-1 .gm-buck-n {
  display: inline;
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  margin: 0;
  padding: 0;
}
.hold-later__how {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--muted);
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-underline-offset: 3px;
  text-align: center;
}
.hold-later__how:hover {
  color: var(--green);
  text-decoration-color: var(--green);
}
/* legacy tall stack (if markup reverts) */
.hold-later--stack {
  align-items: center;
  text-align: center;
  max-width: 32rem;
}
.hold-later--stack .hold-later__actions {
  max-width: 14rem;
  margin: 0 auto;
}

@media (max-width: 639px) {
  .hero-grid--linen {
    gap: 12px;
    display: grid;
    grid-template-columns: 1fr;
  }
  /* Keep mobile visual order: shot → intro → join */
  .hero-grid--linen .hero-shot  { order: 1; width: 100%; }
  .hero-grid--linen .hero-intro { order: 2; width: 100%; }
  .hero-grid--linen .hero-join  { order: 3; width: 100%; }
  .hero-lede {
    display: block;
    margin-top: 10px;
    font-size: 0.95rem;
    line-height: 1.5;
  }
  .hero-join .gm-email-hint { margin-top: 8px; font-size: 12px; }
  .hero-shot .img-frame--linen {
    position: relative;
    display: block;
    width: 100%;
    height: auto;
    min-height: 0;
    max-height: none;
    aspect-ratio: 16 / 10;
    overflow: hidden;
  }
  .hero-shot .img-frame img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

/* Mobile depth sections: shorter images + tighter rhythm after conversion core */
@media (max-width: 639px) {
  #ritual.section-y,
  #kit.section-y,
  #worlds.section-y,
  #compare.section-y,
  #founder.section-y,
  #early-notes.section-y {
    padding-block: clamp(1.25rem, 4vw, 1.75rem);
  }
  #ritual .img-frame,
  #kit .img-frame,
  #worlds .img-frame,
  #system .img-frame {
    max-height: 180px;
  }
  #ritual .img-frame img,
  #kit .img-frame img,
  #worlds .img-frame img {
    object-fit: cover;
  }
  /* Pill tags wrap tighter */
  #worlds .pillar-pills,
  #ritual .pillar-pills,
  #system .pillar-pills {
    gap: 6px;
  }
  #coming-next.section-y {
    padding-block: 1.5rem;
  }
}

/* Final band CTA — HEAD title/sub: mobile left · desktop center; actions/forms always left */
#cta .cta-final {
  display: grid;
  gap: 28px;
  align-items: end;
  text-align: left;
}
@media (min-width: 900px) {
  #cta .cta-final {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    gap: 40px 56px;
  }
}
#cta .cta-final__copy {
  text-align: left;
  margin: 0;
  min-width: 0;
}
#cta .cta-final__actions {
  text-align: left;
  margin: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  width: 100%;
}
#cta .cta-final__title {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  text-align: left;
  line-height: 1.15;
  text-wrap: balance;
}
#cta .cta-final__br {
  display: none;
}
@media (max-width: 420px) {
  #cta .cta-final__br { display: inline; }
}
#cta .cta-final__sub {
  margin: 0.65rem 0 0;
  max-width: 42ch;
  font-size: 0.98rem;
  line-height: 1.5;
  color: var(--color-fg-muted, var(--body));
  text-align: left;
}
@media (min-width: 768px) {
  /* HEAD: copy column + title/sub/eyebrow true center (glyphs, not block-only) */
  #cta .cta-final__copy,
  #cta .cta-final__copy .eyebrow,
  #cta .cta-final__title,
  #cta .cta-final__sub {
    text-align: center;
    margin-inline: auto;
  }
  /* 2-col ≥900: title/sub still center in copy column; actions hard-left */
  #cta .cta-final__actions,
  #cta .cta-final__form,
  #cta .gm-email-row,
  #cta .gm-email-hint {
    text-align: left;
    margin-inline: 0;
  }
}
#cta .cta-final__form {
  margin-top: 0;
}
#cta .cta-final__pair {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: stretch;
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}
#cta .cta-final__btn {
  width: 100%;
  min-height: 50px;
  box-sizing: border-box;
  border: 1px solid var(--line);
}
#cta .cta-final__btn.btn-solid-pill {
  border-color: transparent;
}
#cta .cta-final__btn.btn-pill {
  background: var(--card);
  color: var(--ink);
}
#cta .gm-email-hint {
  text-align: left;
}

/* Super Early Bird — honest claimed count, no fake-full bar */
.seb-anchor {
  display: block;
  margin-top: 12px;
  padding: 14px 16px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: 0 4px 24px var(--line);
  text-decoration: none;
  color: inherit;
  box-sizing: border-box;
  transition: border-color 0.15s ease;
}
@media (min-width: 640px) {
  .seb-anchor { margin-top: 16px; padding: 16px 20px; }
}
.seb-anchor:hover { border-color: var(--line); }
.seb-anchor__row1 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin: 0 0 6px;
}
.seb-anchor__eyebrow {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.seb-anchor__claimed {
  flex: 0 0 auto;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  white-space: nowrap;
}
.seb-anchor__price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 0;
}
.seb-anchor__price {
  margin: 0;
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 450;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--ink);
}
@media (min-width: 640px) {
  .seb-anchor__price { font-size: 32px; }
}
.seb-anchor__ladder {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.3;
}
@media (min-width: 640px) {
  .seb-anchor__ladder { font-size: 14px; }
}
/* legacy bar hidden if any remains */
.seb-anchor__scarce,
.seb-anchor__bar { display: none; }

.trust-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 12px;
  color: var(--color-fg-subtle);
  font-size: 12px;
  line-height: 1.3;
}
@media (min-width: 640px) {
  .trust-row { font-size: 13px; margin-top: 14px; }
}
.trust-row__item--desk { display: none; }
@media (min-width: 640px) {
  .trust-row__item--desk { display: inline-flex; }
}

/* Content cards: consistent paper padding */
.paper.p-content {
  padding: 20px;
  border-radius: var(--radius-lg);
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .paper.p-content { padding: 28px; }
}
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.hp { position: absolute; left: -9999px; height: 0; overflow: hidden; }
a { color: inherit; }
.nav-links { display: none; gap: 1.75rem; font-size: 0.8125rem; color: var(--color-fg-muted); }
@media (min-width: 768px) { .nav-links { display: flex; } }
.nav-links a { text-decoration: none; }
.nav-links a:hover { color: var(--color-fg); }
.micro-row { display: flex; flex-wrap: wrap; gap: 0.35rem 1.1rem; margin-top: 0.75rem; font-size: 0.8rem; color: var(--color-fg-subtle); }
.muted { color: var(--color-fg-muted); }
.subtle { color: var(--color-fg-subtle); }
.link-sage { color: var(--color-sage); font-weight: 500; text-decoration: none; }
.link-sage:hover { text-decoration: underline; }

/* keep input corners soft; button radius owned by email.css (pill) */
form.signup .gm-email-row input[type=email] {
  border-radius: 8px;
}

/* Worlds intro HEAD — mobile left; desktop center (VISUAL_CONSTITUTION).
   Card name/mood stay CONTENT left. "No centered float" applies to CONTENT only. */
.worlds-head {
  display: block;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  text-align: left;
}
.worlds-head__side {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--color-fg-subtle);
  max-width: 48ch;
  text-align: left;
}
@media (min-width: 768px) {
  .worlds-head {
    text-align: center;
    margin-inline: auto;
    max-width: min(40rem, 100%);
  }
  .worlds-head__side {
    margin-inline: auto;
    text-align: center;
  }
}

/* ═══ v1.1 D · Dark anchor CTA (only dark band on page) ═══ */
#cta.cta-dark,
#cta.section-y.cta-dark {
  background: var(--ink);
  color: var(--paper);
}
#cta.cta-dark .eyebrow {
  color: var(--paper);
  opacity: 0.85;
}
#cta.cta-dark .cta-final__title,
#cta.cta-dark h2,
#cta.cta-dark .display-title {
  color: var(--paper);
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  max-width: none;
}
#cta.cta-dark .cta-final__sub {
  color: var(--line);
  text-align: left;
  margin: var(--space-3) 0 0;
  max-width: 48ch;
}
@media (min-width: 768px) {
  #cta.cta-dark .cta-final__copy,
  #cta.cta-dark .eyebrow,
  #cta.cta-dark .cta-final__title,
  #cta.cta-dark h2,
  #cta.cta-dark .display-title,
  #cta.cta-dark .cta-final__sub {
    text-align: center;
    margin-inline: auto;
  }
}
#cta.cta-dark .gm-email-row input[type="email"] {
  border: 1px solid var(--muted);
  background: transparent;
  color: var(--paper);
  border-radius: var(--radius-input);
  height: var(--control-h);
  min-height: var(--control-h);
  padding: 0 var(--space-4);
}
#cta.cta-dark .gm-email-row input[type="email"]::placeholder {
  color: var(--muted);
}
#cta.cta-dark .gm-email-row input[type="email"]:focus {
  border-color: var(--paper);
  box-shadow: 0 0 0 2px var(--paper);
  outline: none;
}
/* Inverted primary: paper bg + ink text */
#cta.cta-dark .gm-email-row button[type="submit"],
#cta.cta-dark .btn-solid-pill {
  background: var(--paper);
  color: var(--ink);
  width: 100%;
  max-width: none;
}
@media (min-width: 768px) {
  #cta.cta-dark .gm-email-row button[type="submit"],
  #cta.cta-dark .btn-solid-pill {
    width: auto;
  }
}
#cta.cta-dark .btn-pill,
#cta.cta-dark .cta-dark__secondary {
  border: 1px solid var(--muted);
  background: transparent;
  color: var(--paper);
  width: 100%;
  max-width: none;
}
@media (min-width: 768px) {
  #cta.cta-dark .btn-pill,
  #cta.cta-dark .cta-dark__secondary {
    width: auto;
  }
}
#cta.cta-dark .gm-email-hint { color: var(--muted); text-align: left; }
#cta.cta-dark .cta-dark__row {
  max-width: none;
  width: 100%;
}


/* 施工单 §3 Hero desktop */
@media (min-width: 1024px) {
  .hero-grid--linen {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 32px;
    /* start top-rail for intro/join; shot stretches via align-self */
    align-items: start;
  }
  .hero-grid--linen .hero-intro { align-self: start; }
  .hero-grid--linen .hero-join { align-self: start; }
  .hero-grid--linen .hero-shot {
    align-self: stretch;
    display: flex;
    height: 100%;
    min-height: 100%;
  }
  .hero-grid--linen .hero-shot .img-frame,
  .hero-grid--linen .hero-shot .img-frame--linen {
    flex: 1 1 auto;
    align-self: stretch;
    width: 100%;
    height: 100%;
    min-height: 100%;
    max-height: none;
    border: 0;
    background: transparent;
    box-shadow: none;
    border-radius: 16px;
    overflow: hidden;
    aspect-ratio: auto;
    position: relative;
  }
  .hero-grid--linen .hero-shot .img-frame img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 16px;
    max-height: none;
  }
  .hero-lede { max-width: 44ch; }
  a.hero-continue.btn-solid-pill {
    width: auto;
    max-width: none;
  }
}


/* 施工单 §12 CTA inverted (must win) */
#cta.cta-dark,
#cta {
  background: var(--ink);
  color: var(--paper);
}
#cta .eyebrow { color: var(--line); }
#cta h2,
#cta .cta-final__title { color: var(--paper); }
#cta p,
#cta .cta-final__sub { color: var(--line); }
#cta input[type="email"] {
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--line);
  height: 52px;
  min-height: 52px;
  border-radius: 12px;
  width: 100%;
  padding: 0 16px;
  box-sizing: border-box;
}
#cta .gm-email-row button[type="submit"],
#cta .btn-primary,
#cta .btn-solid-pill {
  background: var(--paper);
  color: var(--ink);
  border: 0;
  width: 100%;
  max-width: none;
  height: 52px;
}
#cta .btn-pill,
#cta .btn-secondary,
#cta .cta-dark__secondary {
  background: none;
  border: 1px solid var(--line);
  color: var(--paper);
  width: 100%;
  max-width: none;
  height: 52px;
}
/* CTA form: full column width (no narrow 40rem island floating in dark void) */
#cta .cta-dark__row,
#cta .gm-email-row.cta-dark__row {
  max-width: none;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}
@media (min-width: 768px) {
  #cta .cta-dark__row,
  #cta .gm-email-row.cta-dark__row {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
  }
  #cta .cta-dark__row input[type="email"] {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
  }
  #cta .cta-dark__row button[type="submit"],
  #cta .gm-email-row button[type="submit"],
  #cta .btn-solid-pill {
    width: auto;
    flex: 0 0 auto;
    white-space: nowrap;
  }
  #cta .btn-pill,
  #cta .cta-dark__secondary {
    width: 100%;
    margin-left: 0;
    margin-top: 0;
  }
}
@media (max-width: 767px) {
  #cta .cta-dark__row {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  #cta .cta-dark__secondary {
    width: 100%;
  }
}

/* ── Use moments ──
 * CANONICAL (2026-08-06): #moments uses native .gm-rail.gm-rail--moments
 * horizontal scroll-snap (mobile + desktop), same pattern as #worlds.
 * .moment-grid / .gm-chips are LEGACY — hidden under #moments so residual
 * markup cannot re-grid and fight the rail. Do not re-enable 2×3/4-col grid.
 */
#moments .gm-chips,
#moments .moment-grid {
  display: none;
}
@media (max-width: 767px) {
  #moments.section-y {
    padding-block: 40px;
  }
  #moments .section-head .display-title {
    font-size: 1.55rem;
    line-height: 1.2;
  }
  #moments .section-head .lede {
    font-size: 0.95rem;
    max-width: none;
  }
}
@media (min-width: 768px) {
  #moments.section-y {
    padding-block: 64px; /* was 96 — less void before real-today */
  }
}
/* Legacy moment-grid utility (off #moments). Kept inert for non-moments use. */
.moment-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 12px;
  row-gap: 0;
  border-top: 1px solid var(--line);
  text-align: left;
}
.moment-grid > li {
  padding: 12px 0 11px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  background: none;
  box-shadow: none;
  min-width: 0;
}
.moment-grid__t {
  margin: 0;
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 450;
  line-height: 1.2;
  color: var(--ink);
}
.moment-grid__d {
  margin: 3px 0 0;
  font-size: 12.5px;
  line-height: 1.35;
  color: var(--body);
  max-width: none;
}
@media (min-width: 768px) {
  .moment-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    border-top: 0;
  }
  .moment-grid > li {
    padding: 18px 16px 16px;
    border: 1px solid var(--line);
    border-radius: 14px;
    border-bottom: 1px solid var(--line);
    background: var(--card, #fff);
    box-shadow: none;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 96px;
  }
  .moment-grid__t {
    font-size: 18px;
    line-height: 1.2;
  }
  .moment-grid__d {
    font-size: 14px;
    line-height: 1.4;
    color: var(--muted, var(--body));
    max-width: none;
    margin: 0;
  }
}
@media (min-width: 1024px) {
  .moment-grid {
    gap: 14px;
  }
  .moment-grid > li {
    padding: 20px 18px 18px;
    min-height: 104px;
  }
}

/* Kit lines — CONTENT left rail forever (never centered float). HEAD is separate. */
.kit-lines {
  list-style: none;
  margin: 0;
  padding: 0;
  max-width: 36rem;
  width: 100%;
  text-align: left;
}
.kit-lines li {
  padding: 0.55rem 0;
  border-top: 1px solid var(--line);
  font-size: 0.95rem;
  line-height: 1.4;
  color: var(--body);
  margin: 0;
  text-align: left;
}
.kit-lines li:last-child { border-bottom: 1px solid var(--line); }
.worlds-compact {
  margin-top: 32px; /* M5: SCENT WORLDS after kit list */
}
.worlds-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-start;
}
.worlds-note {
  margin: 16px 0 0; /* M5: 16px under chips */
  font-size: 14px;
  color: var(--muted);
  max-width: 48ch;
}
.world-chip {
  cursor: default;
  pointer-events: none;
  user-select: none;
  background: var(--card);
  border: 1px solid var(--line);
}
/* sample lede → form 32px */
.sample-core--v2 { margin-top: 32px; }
#sample .section-head .lede { margin-bottom: 0; }

/* v2 form error + cta success */
.form-error, .gm-form-error {
  font-weight: 600;
  color: var(--ink);
  font-size: 14px;
  margin-top: 8px;
  line-height: 1.4;
}
.cta-success-msg {
  color: var(--line);
  font-size: 16px;
  line-height: 1.5;
}
.cta-success-msg p { margin: 0 0 12px; color: var(--line); }
.cta-success-back {
  color: var(--paper);
  text-decoration: underline;
  text-underline-offset: 3px;
  font-weight: 600;
}
#cta .cta-success-msg p { color: var(--line); }

/* R3-4: bleed last in layout cascade — beat .hero-shot .img-frame--linen { width:100% } */
@media (max-width: 767px) {
  .bleed-m,
  .img-frame.bleed-m,
  .img-frame--linen.bleed-m,
  .proof-hero__img.bleed-m,
  .hero-shot .img-frame.bleed-m,
  .hero-shot .img-frame--linen.bleed-m,
  .hero-grid--linen .hero-shot .img-frame.bleed-m,
  .hero-grid--linen .hero-shot .img-frame--linen.bleed-m,
  .founder-panel__media.bleed-m {
    width: 100vw;
    max-width: none;
    position: relative;
    left: 50%;
    margin-left: -50vw;
    margin-right: 0;
    border-radius: 0;
  }
}


/* ===== compare.css ===== */
/* Compare — dead ends as soft cards + Gap Moment positive card */

.compare-grid { display: none; } /* legacy */

.compare-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  width: 100%;
  max-width: 40rem;
  margin-inline: auto;
}

/* Dead ends: rounded, weak surface (not bare lines) */
.compare-list .row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  position: relative;
  gap: 0.3rem;
  padding: 0.95rem 1.05rem 0.95rem 2.65rem;
  border-radius: 1rem;
  border: 1px solid rgba(24, 21, 18, 0.07);
  background: color-mix(in srgb, var(--ink, #181512) 2.5%, transparent);
  box-shadow: none;
  text-align: left;
}

.compare-list .row--dead {
  background: color-mix(in srgb, var(--ink, #181512) 2.5%, var(--paper, #faf7f1));
  border-color: rgba(24, 21, 18, 0.07);
}

/* Light × = this path doesn't work */
.compare-list .row--dead .name::before,
.compare-list .row:not(.row--gm) .name::before {
  content: "×";
  position: absolute;
  left: 0.95rem;
  top: 1.05rem;
  width: 1.15rem;
  height: 1.15rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(24, 21, 18, 0.05);
  color: var(--muted, #6b645c);
  font-size: 0.72rem;
  font-weight: 600;
  font-family: var(--font-sans);
  line-height: 1;
  opacity: 0.85;
}

.compare-list .row .name {
  font-family: var(--font-display);
  font-size: 1.05rem;
  color: var(--ink);
  margin: 0;
  font-weight: 450;
  text-align: left;
  line-height: 1.25;
}

.compare-list .row .desc {
  color: var(--muted, #6b645c);
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
  text-align: left;
  max-width: 40ch;
}

/* Gap Moment: stronger paper card + ✓ */
.compare-list .row--gm {
  background: var(--card, #fffcf7);
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  border-radius: 1.15rem;
  padding: 1.15rem 1.2rem 1.2rem 2.85rem;
  margin-top: 0.35rem;
  box-shadow:
    0 1px 2px rgba(24, 21, 18, 0.04),
    0 10px 28px rgba(24, 21, 18, 0.06);
  max-width: none;
}

.compare-list .row--gm .name {
  color: var(--green, #3d5c45);
  font-weight: 500;
  padding-left: 0;
}

.compare-list .row--gm .desc {
  color: var(--body, #3f3a34);
}

.compare-list .row--gm .name::before {
  content: "✓";
  left: 1.05rem;
  top: 1.25rem;
  width: 1.25rem;
  height: 1.25rem;
  background: color-mix(in srgb, var(--sage, #6b8f71) 16%, transparent);
  color: var(--sage, #5f7f64);
  font-size: 0.7rem;
  font-weight: 700;
  opacity: 1;
}

@media (min-width: 768px) {
  .compare-list {
    gap: 0.85rem;
  }
  .compare-list .row {
    padding: 1.05rem 1.2rem 1.05rem 2.85rem;
  }
  .compare-list .row--dead .name::before,
  .compare-list .row:not(.row--gm) .name::before {
    left: 1.05rem;
    top: 1.15rem;
  }
  .compare-list .row--gm {
    padding: 1.3rem 1.4rem 1.35rem 3rem;
    margin-top: 0.45rem;
  }
  .compare-list .row--gm .name::before {
    left: 1.15rem;
    top: 1.4rem;
  }
}


/* ===== kit.css ===== */
/* ── Kit panel (legacy media+copy layout) ── */
.kit-panel {
  display: grid;
  overflow: hidden;
}
@media (min-width: 1024px) {
  .kit-panel { grid-template-columns: 1.05fr 1fr; }
}
.kit-panel__media {
  position: relative;
  aspect-ratio: 16/10;
  background: var(--ink);
  min-height: 220px;
}
@media (min-width: 1024px) {
  .kit-panel__media { aspect-ratio: auto; min-height: 320px; }
}
.kit-panel__media img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.kit-panel__copy {
  display: flex; flex-direction: column; justify-content: center;
  padding: 1.25rem 1.2rem 1.4rem;
}
@media (min-width: 640px) {
  .kit-panel__copy { padding: 2rem 2.25rem; }
}

/* ── Kit card — match compare .row--gm paper + check language ── */
.kit-card {
  width: 100%;
  max-width: min(40rem, 100%);
  margin-inline: auto;
  padding: 0.85rem 1.15rem 0.95rem;
  border-radius: 1.15rem;
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  background: var(--card, #fffcf7);
  box-shadow:
    0 1px 2px rgba(24, 21, 18, 0.04),
    0 10px 28px rgba(24, 21, 18, 0.06);
  text-align: left;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .kit-card {
    padding: 1.1rem 1.4rem 1.15rem;
  }
}
.kit-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.kit-list li {
  display: flex;
  gap: 0.95rem;
  align-items: flex-start;
  padding: 1.1rem 0.15rem;
  border-bottom: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  text-align: left;
}
.kit-list li:last-child {
  border-bottom: 0;
  padding-bottom: 0.35rem;
}
.kit-list li:first-child {
  padding-top: 0.35rem;
}
.kit-list__check {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.35rem;
  height: 1.35rem;
  margin-top: 0.15rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--sage, #6b8f71) 16%, transparent);
  color: var(--sage, #5f7f64);
  font-size: 0.7rem;
  font-weight: 700;
  line-height: 1;
}
.kit-list strong {
  display: block;
  font-weight: 600;
  color: var(--ink, #181512);
  font-size: 0.975rem;
  line-height: 1.35;
  letter-spacing: -0.01em;
}
.kit-list em {
  display: block;
  margin-top: 0.3rem;
  font-style: normal;
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--muted, #6b645c);
}
/* Mobile: full content width, no squeezed text */
@media (max-width: 639px) {
  .kit-card {
    max-width: 100%;
    padding: 0.9rem 1rem 1rem;
  }
  .kit-list li {
    padding: 1.05rem 0;
    gap: 0.85rem;
  }
  .kit-list strong {
    font-size: 0.95rem;
  }
  .kit-list em {
    font-size: 0.8125rem;
  }
}


/* ===== hero.css ===== */
/* ── Hero emotional bridge (one soft line under H1) ── */
.hero-emotion {
  margin: 0.65rem 0 0;
  max-width: 22rem;
  font-family: var(--font-display);
  font-size: clamp(1.05rem, 2vw, 1.22rem);
  font-weight: 450;
  letter-spacing: -0.015em;
  line-height: 1.35;
  color: var(--green);
  text-wrap: pretty;
}
@media (min-width: 640px) {
  .hero-emotion {
    margin-top: 0.85rem;
    max-width: 26rem;
  }
}
@media (max-width: 639px) {
  .hero-emotion {
    margin-top: 0.5rem;
    font-size: 1rem;
    max-width: 100%;
  }
}

/* Hero primary CTA — button or link; full-width mobile stack like v1.2 */
.hero-join {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  max-width: 22rem;
}
a.hero-continue.btn-solid-pill,
a.hero-continue,
button.hero-continue.btn-solid-pill,
button.hero-continue {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  min-height: 52px;
  height: auto;
  padding: 0.65rem 1.4rem;
  text-decoration: none;
  box-sizing: border-box;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  text-align: center;
  font-size: 1rem;
  line-height: 1.25;
  flex: 0 0 auto;
  border: 0;
  cursor: pointer;
  font-family: inherit;
}
@media (min-width: 640px) {
  a.hero-continue.btn-solid-pill,
  a.hero-continue,
  button.hero-continue.btn-solid-pill,
  button.hero-continue {
    min-width: 12.5rem;
    min-height: 52px;
    padding: 0.7rem 1.6rem;
  }
}
/* Secondary path — text link only (not ghost pill; v1.2) */
.hero-join .hero-link-free,
button.hero-link-free {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  width: auto;
  max-width: none;
  min-height: 2.25rem;
  margin: 0;
  padding: 0.35rem 0.5rem;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--green, #243029);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.hero-join .hero-link-free:hover,
button.hero-link-free:hover {
  opacity: 0.85;
  background: transparent;
}
.join-panel--simple {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.hero-continue-hint {
  margin: 0.15rem 0 0;
  font-size: 12.5px;
  line-height: 1.4;
  color: var(--muted);
  letter-spacing: 0.01em;
  text-align: left;
}
@media (min-width: 640px) {
  .hero-continue-hint {
    font-size: 13px;
  }
}
/* System/sample/founding titles — HEAD measure.
   Mobile: left. Desktop ≥768: true center (text-align + margin auto).
   Ban half-center (auto block + left glyphs). #sample follows global center. */
#system .display-title,
#sample .display-title,
#founding .display-title {
  text-wrap: balance;
  max-width: 18ch;
  margin-left: 0;
  margin-right: 0;
  text-align: left;
}
#sample .display-title {
  max-width: 16ch;
}
@media (max-width: 639px) {
  #system .display-title,
  #founding .display-title {
    max-width: 14ch;
  }
}
@media (min-width: 768px) {
  #system .display-title,
  #sample .display-title,
  #founding .display-title {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
  }
}

/* ── Hero hold hint + trust icons ── */
.hero-hold-hint {
  margin: 12px 0 0;
  padding: 10px 0 0;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--color-fg-subtle);
}
@media (min-width: 640px) {
  .hero-hold-hint { font-size: 13.5px; padding-top: 12px; }
}
@media (max-width: 639px) {
  /* Keep $1 as secondary whisper — not competing with free CTA */
  .hero-hold-hint {
    margin-top: 10px;
    padding-top: 9px;
    font-size: 12px;
  }
}
.hero-hold-hint__link {
  display: inline;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-weight: 500;
  color: var(--color-fg-muted);
  text-decoration: underline;
  text-decoration-color: var(--green);
  text-underline-offset: 3px;
  cursor: pointer;
}
.hero-hold-hint__link:hover {
  color: var(--color-fg);
  text-decoration-color: var(--color-accent);
}
.trust-row__item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.trust-row__icon {
  width: 0.95rem;
  height: 0.95rem;
  flex-shrink: 0;
  color: var(--muted); /* match subtle text, not sage decoration */
  opacity: 0.9;
}

/* ── Pillar pills ── */
.pillar-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.pillar-pills span {
  display: inline-flex;
  align-items: center;
  min-height: 1.7rem;
  padding: 0.2rem 0.7rem;
  border-radius: 999px;
  border: 1px solid var(--color-border);
  background: color-mix(in oklab, var(--color-bg) 70%, var(--card));
  color: var(--color-fg-muted);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.01em;
}


/* ===== audio.css ===== */
/* ── Audio teaser ── */
.audio-teaser {
  padding: 28px;
  border-radius: var(--radius-lg);
  box-sizing: border-box;
}
.audio-teaser__row {
  display: flex; align-items: center; gap: 1rem;
}
.audio-teaser__play {
  flex-shrink: 0;
  width: 3.5rem; height: 3.5rem;
  border: 0; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--color-bg-subtle);
  color: var(--color-fg-subtle);
  cursor: not-allowed;
  transition: transform .15s, background .15s, color .15s;
}
.audio-teaser[data-locked="0"] .audio-teaser__play {
  background: var(--color-accent);
  color: var(--color-accent-fg);
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(36,48,41,.18);
}
.audio-teaser[data-locked="0"] .audio-teaser__play:active { opacity: 0.9; }
.audio-teaser__play-icon { font-size: 0.95rem; transform: translateX(1px); }
.audio-teaser[data-playing="1"] .audio-teaser__play-icon { transform: none; letter-spacing: 0.05em; }
.audio-teaser__wave {
  flex: 1; min-width: 0;
  display: flex; align-items: end; gap: 3px; height: 2.25rem;
}
.audio-teaser__wave span {
  flex: 1; max-width: 4px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--color-sage) 55%, transparent);
  opacity: 0.32;
  height: 12px;
  transform-origin: bottom center;
}
.audio-teaser__wave span:nth-child(3n) { height: 22px; }
.audio-teaser__wave span:nth-child(4n) { height: 16px; }
.audio-teaser__wave span:nth-child(5n) { height: 28px; }
.audio-teaser__wave span:nth-child(7n) { height: 18px; }
.audio-teaser[data-locked="0"] .audio-teaser__wave span { opacity: 0.85; }
.audio-teaser[data-playing="1"] .audio-teaser__wave span {
  animation: gm-wave 1.1s ease-in-out infinite;
}
.audio-teaser[data-playing="1"] .audio-teaser__wave span:nth-child(2n) { animation-delay: 0.12s; }
.audio-teaser[data-playing="1"] .audio-teaser__wave span:nth-child(3n) { animation-delay: 0.24s; }
.audio-teaser[data-playing="1"] .audio-teaser__wave span:nth-child(5n) { animation-delay: 0.08s; }
@keyframes gm-wave {
  0%, 100% { transform: scaleY(0.45); opacity: 0.55; }
  50% { transform: scaleY(1); opacity: 1; }
}

/* v3 sample preview card — no play, no wave */
.sample-preview-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  pointer-events: none;
  user-select: none;
}
.sample-preview-card__row {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}
.sample-preview-card__thumb {
  width: 72px;
  height: 72px;
  border-radius: 12px;
  object-fit: cover;
  display: block;
  background: var(--paper-2);
}
.sample-preview-card__title {
  margin: 4px 0 0;
  font-size: 1.25rem;
  line-height: 1.25;
  color: var(--ink);
}
.sample-preview-card__meta {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.4;
  color: var(--muted, #827a70);
}
.sample-success-line {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.45;
  color: var(--ink);
  font-weight: 500;
}


/* ===== founder.css ===== */
/* ── Founder panel ──
   Mobile: 文案优先 + 署名旁小头像（禁止全宽人脸顶栏）
   Desktop: kit-panel 左图右文
*/

.founder-panel {
  display: grid;
  overflow: hidden;
  background: var(--color-bg-elevated, var(--paper));
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: var(--shadow-card, 0 4px 24px var(--line));
}
/* v2 §6: flat — no outer card chrome */
.founder-panel--flat {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
}
.founder-panel--flat .founder-panel__media {
  border-radius: 1.25rem;
  overflow: hidden;
}
/* Mobile portrait is owned by mobile-pulse.css (centered card, no bleed).
   Base rule keeps media display:none on small screens for non-flat panels. */
@media (max-width: 767px) {
  .founder-panel--flat .founder-panel__media {
    display: block;
  }
  .founder-panel--flat .founder-avatar {
    display: none;
  }
}

/* Large side photo — desktop only */
.founder-panel__media {
  display: none;
  position: relative;
  background: var(--line);
  min-height: 0;
}
.founder-panel__media img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 18%;
}

.founder-panel__copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1.25rem 1.15rem 1.4rem;
  min-width: 0;
}
@media (min-width: 640px) {
  .founder-panel__copy {
    padding: 1.6rem 1.75rem 1.75rem;
  }
}

.founder-title {
  margin: 0.5rem 0 0;
  max-width: 22ch;
  font-size: clamp(1.4rem, 3.5vw, 1.95rem);
  line-height: 1.14;
  letter-spacing: -0.024em;
  color: var(--color-fg);
}

.founder-prose {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  margin: 0.9rem 0 0;
  max-width: 36rem;
  font-size: 0.95rem;
  line-height: 1.62;
  color: var(--color-fg-muted);
}
.founder-prose p { margin: 0; }
.founder-prose__punch {
  color: var(--color-fg);
  /* Never clip first letter — no first-letter / negative indent / overflow hide */
  text-indent: 0;
  overflow: visible;
  padding-left: 0;
  margin-left: 0;
}
.founder-prose__punch::first-letter {
  float: none;
  font-size: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
}

/* Mobile/desktop byline with optional small avatar */
.founder-byline-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-top: 1.05rem;
}
.founder-avatar {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  object-fit: cover;
  object-position: 50% 20%;
  border: 1px solid var(--line);
  background: var(--line);
}
.founder-byline {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.35;
  color: var(--color-fg);
}
.founder-byline strong { font-weight: 600; }

/* On desktop with big media, hide the small avatar to avoid double face */
@media (min-width: 900px) {
  .founder-avatar { display: none; }
}

.founder-points {
  list-style: none;
  margin: 1.1rem 0 0;
  padding: 1rem 0 0;
  border-top: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.founder-points li {
  display: flex;
  gap: 0.55rem;
  align-items: flex-start;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--color-fg-muted);
}
.founder-points__mark {
  flex-shrink: 0;
  width: 1rem;
  margin-top: 0.12rem;
  color: var(--color-sage);
  font-size: 0.78rem;
  text-align: center;
}
.founder-points strong {
  font-weight: 550;
  color: var(--color-fg);
}

/* Editorial: portrait column ~32–38% / max ~16–18rem (not half-page face), quote leads */
@media (min-width: 768px) {
  .founder-panel {
    grid-template-columns: minmax(0, min(34%, 16.5rem)) minmax(0, 1fr);
    gap: 1.5rem 1.75rem;
    align-items: start;
  }
  .founder-panel--flat {
    grid-template-columns: minmax(0, min(36%, 17rem)) minmax(0, 1fr);
    gap: 1.5rem 2rem;
  }
  .founder-panel__media {
    display: block;
    width: 100%;
    max-width: 17rem;
    aspect-ratio: 4 / 5;
    min-height: 0;
    align-self: start;
    border-radius: 1.15rem;
    overflow: hidden;
  }
  .founder-panel__media img {
    object-fit: cover;
    object-position: 50% 18%;
  }
  .founder-panel__copy {
    padding: 0.25rem 0 0;
  }
  .founder-title {
    max-width: 20ch;
    font-size: var(--fs-h2);
    line-height: var(--lh-h2);
  }
  .founder-prose {
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    margin-top: var(--space-4);
  }
  .founder-points {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.7rem 1.4rem;
  }
  .founder-points li {
    flex: 1 1 12rem;
    max-width: 20rem;
  }
}


/* ===== quotes.css ===== */
/* ── Quote grid — static (no marquee clone / no double testimonials) ── */
.quote-grid {
  display: grid;
  gap: 12px;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .quote-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
  }
}
@media (min-width: 1024px) {
  .quote-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
  }
}

.quote-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  margin: 0;
  padding: 1.2rem 1.2rem 1.25rem;
  border-radius: 16px;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .quote-card {
    padding: 1.35rem 1.4rem;
  }
}
.quote-card blockquote {
  margin: 0;
  flex: 1;
  font-family: var(--font-display);
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: -0.015em;
  color: var(--color-fg);
  font-style: normal;
}
@media (min-width: 640px) {
  .quote-card blockquote {
    font-size: 1.05rem;
    line-height: 1.42;
  }
}
.quote-card figcaption {
  margin-top: 0.9rem;
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--muted);
  letter-spacing: 0.01em;
}
.quote-card figcaption strong {
  font-weight: 550;
  color: var(--body);
}

/* ── Trust grid — editorial principles (not SaaS feature cards) ── */
.trust-grid {
  display: grid;
  gap: 1px;
  grid-template-columns: 1fr;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
}
/* Always 2 columns from tablet up → clean 2×2 with 4 cards */
@media (min-width: 640px) {
  .trust-grid {
    grid-template-columns: 1fr 1fr;
  }
}
.trust-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 24px 22px 26px;
  border-radius: 0;
  min-height: 100%;
  background: var(--paper);
  border: 0;
  box-shadow: none;
  position: relative;
}
.trust-card::before {
  content: "";
  width: 28px;
  height: 2px;
  background: var(--green);
  opacity: 0.55;
  border-radius: 2px;
}
.trust-card__kicker {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  text-transform: none;
  color: var(--ink);
  line-height: 1.2;
}
.trust-card__body {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--body);
  letter-spacing: -0.005em;
}
@media (min-width: 640px) {
  .trust-card {
    padding: 28px 26px 30px;
  }
  .trust-card__kicker { font-size: 1.3rem; }
  .trust-card__body {
    font-size: 15px;
    line-height: 1.55;
  }
}


/* ===== faq.css ===== */
/* FAQ */
.gm-faq details {
  border-radius: var(--radius-xl);
  border: 1px solid var(--color-border);
  background: var(--color-bg-elevated);
  box-shadow: var(--shadow-card);
  padding: 0 1.1rem;
  margin-bottom: 0.5rem;
}
.gm-faq summary {
  cursor: pointer; list-style: none;
  display: flex; justify-content: space-between; gap: 0.75rem;
  padding: 1rem 0; font-weight: 500;
}
.gm-faq summary::-webkit-details-marker { display: none; }
.gm-faq details[open] summary { border-bottom: 1px solid var(--color-border); }
.gm-faq details p { padding: 0.85rem 0 1rem; margin: 0; font-size: 0.9rem; color: var(--color-fg-muted); line-height: 1.55; }

/* FAQ layout: stacked; desktop head centered, list left. */
.faq-layout {
  display: flex;
  flex-direction: column;
  gap: 28px;
  text-align: left;
}
.faq-layout__head {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
}
.faq-layout__list {
  text-align: left;
  width: 100%;
  max-width: none;
  margin: 0;
}
@media (min-width: 768px) {
  .faq-layout__head,
  .faq-layout__head .section-head,
  .faq-layout__head .display-title,
  .faq-layout__head .lede,
  .faq-layout__head .gm-act,
  .faq-layout__head .eyebrow,
  .faq-layout__lede {
    text-align: center;
  }
  .faq-layout__head .section-head,
  .faq-layout__head .display-title,
  .faq-layout__head .lede,
  .faq-layout__lede {
    margin-inline: auto;
  }
  .faq-layout__list {
    text-align: left;
  }
}

/* ── FAQ: line accordion, no fat white bars ── */
.faq-list {
  border-top: 1px solid var(--line, var(--color-border));
  margin: 0;
  padding: 0;
  text-align: left;
}
.faq-item,
.faq-list details {
  border-bottom: 1px solid var(--line, var(--color-border));
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  padding: 0;
  margin: 0;
  border-top: 0;
}
.faq-item summary,
.faq-list summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.05rem 0;
  font-size: 1rem;
  font-weight: 400; /* not bold — plain questions */
  color: var(--ink, var(--color-fg));
  line-height: 1.35;
  text-align: left;
}
@media (min-width: 640px) {
  .faq-item summary,
  .faq-list summary { font-size: 1.05rem; padding: 1.15rem 0; font-weight: 400; }
}
.faq-item summary::-webkit-details-marker,
.faq-list summary::-webkit-details-marker { display: none; }
.faq-item summary::marker,
.faq-list summary::marker {
  content: "";
  display: none;
}
/* Quiet chevron: small caret via ::after; padding only as hit target (not on borders).
   Old bug: padding + border on same box → huge rotated triangle. */
.faq-chevron {
  flex-shrink: 0;
  display: inline-grid;
  place-items: center;
  width: 1.75rem;
  height: 1.75rem;
  margin: 0 -0.25rem 0 0;
  padding: 0;
  border: 0;
  opacity: 0.55;
  transform: none;
  box-sizing: border-box;
  position: relative;
  transition: opacity 0.2s ease;
}
.faq-chevron::after {
  content: "";
  display: block;
  width: 0.4rem;
  height: 0.4rem;
  border-right: 1.5px solid rgba(107, 100, 92, 0.55);
  border-bottom: 1.5px solid rgba(107, 100, 92, 0.55);
  transform: rotate(45deg);
  transition: transform 0.2s ease;
  box-sizing: border-box;
}
.faq-item summary:hover .faq-chevron,
.faq-list summary:hover .faq-chevron {
  opacity: 0.9;
}
.faq-item[open] .faq-chevron,
.faq-list details[open] .faq-chevron {
  opacity: 0.75;
  margin-top: 0;
  transform: none;
}
.faq-item[open] .faq-chevron::after,
.faq-list details[open] .faq-chevron::after {
  transform: rotate(225deg);
}
.faq-item .a,
.faq-list .a,
.faq-item p {
  margin: 0;
  padding: 0 0 0.95rem;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--body, var(--color-fg-muted));
  max-width: 42ch;
  text-align: left;
}
.faq-item .a a,
.faq-list .a a {
  color: var(--green, var(--color-sage));
  font-weight: 600;
  text-underline-offset: 3px;
}


/* ===== footer.css ===== */
/* ── Footer — dense, minimal dead air (no sticky-h double pad) ── */
.site-footer {
  border-top: 1px solid var(--color-border);
  padding: 1.1rem 1rem 1rem;
  background: var(--paper-2);
  margin: 0;
}
@media (min-width: 768px) {
  .site-footer {
    padding: 1.25rem 1.5rem 1.5rem;
  }
}
.site-footer__inner {
  max-width: 72rem;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
@media (min-width: 640px) {
  .site-footer__inner {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem 1.25rem;
    align-items: flex-start;
  }
  .site-footer__copy {
    flex: 1 0 100%;
  }
}
.site-footer__brand { max-width: 28rem; }
.site-footer__tag {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--color-fg-muted);
}
.site-footer__meta {
  margin: 0.3rem 0 0;
  font-size: 0.75rem;
  color: var(--color-fg-subtle);
}
.site-footer__ks-note {
  font-size: 0.7rem;
  color: var(--color-fg-subtle);
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}
.site-footer__meta a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.site-footer__links {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
@media (min-width: 640px) {
  .site-footer__links { align-items: flex-end; text-align: right; gap: 0.35rem; }
}
.site-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 0.65rem;
  font-size: 0.8125rem;
}
/* Mobile: one compact link row (was sparse 44px stacking → tall + empty) */
@media (max-width: 639px) {
  .site-footer__nav {
    gap: 0.1rem 0.85rem;
  }
  .site-footer__nav a {
    min-height: 36px;
    padding: 0.2rem 0;
  }
}
.site-footer__nav a {
  color: var(--color-fg-muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0.25rem 0.1rem;
  box-sizing: border-box;
}
.site-footer__nav a:hover { color: var(--color-fg); text-decoration: underline; text-underline-offset: 3px; }
.site-footer__copy {
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
  color: var(--color-fg-subtle);
}


/* ===== hold-dialog.css ===== */
/* Ivory Hold dialog — optional $1 price protection */
#gmIvoryHold {
  position: fixed;
  inset: 0;
  z-index: 100050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}
#gmIvoryHold[hidden] { display: none; }
.gm-hold-overlay {
  position: absolute;
  inset: 0;
  background: var(--scrim, rgba(24, 21, 18, 0.5));
  backdrop-filter: none;
}
.gm-hold-sheet {
  position: relative;
  z-index: 1;
  width: min(100%, 28rem);
  max-height: min(90dvh, 40rem);
  overflow: auto;
  border-radius: var(--radius-2xl);
  border: 1px solid var(--color-border);
  background: var(--color-bg-elevated);
  box-shadow: var(--shadow-soft);
  padding: 1.25rem 1.25rem 1.35rem;
  color: var(--color-fg);
  font-family: var(--font-sans);
  -webkit-overflow-scrolling: touch;
}
@media (max-width: 639px) {
  #gmIvoryHold {
    align-items: flex-end;
    padding: 0;
  }
  .gm-hold-sheet {
    width: 100%;
    max-width: none;
    max-height: min(92dvh, 44rem);
    border-radius: 18px 18px 0 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
    padding: 1.1rem 1rem calc(1.1rem + env(safe-area-inset-bottom, 0px));
  }
  .gm-hold-pay {
    min-height: 50px;
    font-size: 16px;
  }
}
.gm-hold-mount {
  min-height: 0;
}
.gm-hold-mount iframe {
  min-height: 280px;
}
.gm-hold-head {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  justify-content: space-between;
}
.gm-hold-title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 450;
  font-size: 1.35rem;
  letter-spacing: -0.02em;
  line-height: 1.15;
}
.gm-hold-sub {
  margin: 0.45rem 0 0;
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--color-fg-muted);
}
.gm-hold-x {
  border: 0;
  background: transparent;
  font-size: 1.35rem;
  line-height: 1;
  color: var(--color-fg-subtle);
  cursor: pointer;
  padding: 0.35rem;
  border-radius: 6px;
}
.gm-hold-x:hover {
  background: var(--color-bg);
  color: var(--color-fg);
}
/* Single-column hold sheet — no price table */
.gm-hold-idle { margin-top: 1rem; }
.gm-hold-email-line {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  color: var(--color-fg-muted);
}
.gm-hold-loading-panel,
.gm-hold-error-panel {
  margin-top: 1rem;
}
.gm-hold-loading-line {
  margin: 0;
  font-size: 0.95rem;
  color: var(--color-fg-muted);
  line-height: 1.45;
}
.gm-hold-error-line {
  margin: 0 0 0.85rem;
  font-size: 0.92rem;
  color: var(--body);
  line-height: 1.45;
}
.gm-hold-error-code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.85em;
  opacity: 0.9;
}
.gm-hold-rows { display: none; } /* removed table block */
.gm-hold-note {
  margin: 0 0 14px;
  font-size: 12.5px;
  line-height: 1.4;
  color: var(--muted);
  text-align: left;
}
.gm-hold-bullets {
  margin: 0.9rem 0 0;
  padding-left: 1.1rem;
  color: var(--color-fg-muted);
  font-size: 0.875rem;
  line-height: 1.45;
}
.gm-hold-pay {
  display: flex;
  width: 100%;
  margin-top: 1rem;
  min-height: 3rem;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--color-accent);
  color: var(--color-accent-fg);
  font: inherit;
  font-weight: 500;
  cursor: pointer;
}
.gm-hold-pay:hover { opacity: 0.93; }
.gm-hold-pay:disabled { opacity: 0.6; cursor: wait; }
.gm-hold-skip {
  display: block;
  width: 100%;
  margin-top: 0.55rem;
  border: 0;
  background: transparent;
  color: var(--color-fg-muted);
  font: inherit;
  font-size: 0.875rem;
  cursor: pointer;
  padding: 0.45rem;
}
.gm-hold-skip:hover { color: var(--color-fg); }
.gm-hold-mount { margin-top: 1rem; min-height: 280px; }
.gm-hold-mount:not([hidden]) { display: block; }

/* Checkout mode: expand sheet, hide summary, let embed scroll inside */
#gmIvoryHold.gm-hold--checkout {
  align-items: stretch;
  padding: 0;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-sheet {
  width: 100%;
  max-width: min(100%, 32rem);
  max-height: 100dvh;
  height: 100dvh;
  margin: 0 auto;
  border-radius: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0.85rem 0.85rem calc(0.85rem + env(safe-area-inset-bottom, 0px));
}
@media (min-width: 640px) {
  #gmIvoryHold.gm-hold--checkout {
    align-items: center;
    padding: 1rem;
  }
  #gmIvoryHold.gm-hold--checkout .gm-hold-sheet {
    height: min(92dvh, 52rem);
    max-height: min(92dvh, 52rem);
    border-radius: 16px;
  }
}
/* Hide idle Pay only — not QA Done (.gm-hold-qa-done) or Hosted links outside checkout */
#gmIvoryHold.gm-hold--checkout .gm-hold-rows,
#gmIvoryHold.gm-hold--checkout .gm-hold-bullets,
#gmIvoryHold.gm-hold--checkout > .gm-hold-sheet > .gm-hold-pay,
#gmIvoryHold.gm-hold--checkout .gm-hold-idle .gm-hold-pay {
  display: none;
}
/*
 * QA no-charge Done: higher specificity than any .gm-hold-pay hide rule.
 * Prefer class gm-hold-qa-done (not gm-hold-pay) so checkout hide rules do not apply.
 * Avoid cascade overrides that trip the module CSS budget gate.
 */
#gmIvoryHold.gm-hold--checkout .gm-hold-mount .gm-hold-qa-ok .gm-hold-qa-done,
#gmIvoryHold .gm-hold-mount .gm-hold-qa-done,
#gmIvoryHold .gm-hold-qa-done {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 44px;
  margin-top: 0.75rem;
  padding: 0.7rem 1rem;
  font-weight: 600;
  color: var(--paper, #faf7f2);
  background: var(--green, #2f6b4f);
  border: none;
  border-radius: 11px;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  box-sizing: border-box;
}
/* Hosted fallback CTAs (error/loading) — always visible, ≥44px touch */
#gmIvoryHold .gm-hold-error-panel .gm-hold-hosted-link,
#gmIvoryHold .gm-hold-loading-panel .gm-hold-hosted-link,
#gmIvoryHold .gm-hold-hosted-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 44px;
  margin-top: 0.55rem;
  padding: 0.7rem 1rem;
  font-weight: 600;
  color: var(--paper, #faf7f2);
  background: var(--green, #2f6b4f);
  border: none;
  border-radius: 11px;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  box-sizing: border-box;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-sheet {
  height: min(100dvh, 100%);
  max-height: 100dvh;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-sub {
  font-size: 0.8rem;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-mount {
  flex: 1 1 auto;
  min-height: 0;
  margin-top: 0.5rem;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-mount iframe {
  min-height: 420px;
  width: 100%;
}
#gmIvoryHold.gm-hold--checkout .gm-hold-skip {
  flex: 0 0 auto;
  margin-top: 0.35rem;
  padding: 0.65rem;
  font-size: 0.9rem;
}
.gm-hold-qa-ok {
  padding: 1rem 0.25rem 0.5rem;
  text-align: left;
}
.gm-hold-qa-ok__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.25rem;
  color: var(--ink);
}
.gm-hold-qa-ok__body {
  margin: 0.6rem 0 1rem;
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--body);
}

/* Page lock ONLY while hold is open — always cleared in closeHoldDialog */
html.gm-ivory-hold-open,
html.gm-ivory-hold-open body {
  overflow: hidden;
  overscroll-behavior: none;
}
/* After close: never leave pay-flow alone locking the page */
html.gm-ivory-pay-flow:not(.gm-ivory-hold-open),
html.gm-ivory-pay-flow:not(.gm-ivory-hold-open) body {
  overflow: auto;
  overscroll-behavior: auto;
}
/* Safety net: no hold/flow class → page must scroll */
html:not(.gm-ivory-hold-open):not(.gm-flow-open) {
  overflow: auto;
}
html:not(.gm-ivory-hold-open):not(.gm-flow-open) body {
  overflow: auto;
  position: static;
}


/* v2 §13 mobile bottom sheet */
@media (max-width: 767px) {
  #gmIvoryHold {
    align-items: flex-end;
    padding: 0;
  }
  #gmIvoryHold .gm-hold-sheet,
  .gm-hold-sheet {
    position: relative;
    width: 100%;
    max-width: none;
    border-radius: var(--radius-sheet, 20px) var(--radius-sheet, 20px) 0 0;
    transform: translateY(100%);
    transition: transform 0.25s ease-out;
    max-height: min(92dvh, 44rem);
  }
  #gmIvoryHold:not([hidden]) .gm-hold-sheet,
  #gmIvoryHold.is-open .gm-hold-sheet {
    transform: translateY(0);
  }
  #gmIvoryHold .gm-hold-sheet::before {
    content: "";
    display: block;
    width: 36px;
    height: 4px;
    border-radius: 999px;
    background: var(--line);
    margin: 8px auto 4px;
  }
}
@media (min-width: 768px) {
  .gm-hold-sheet {
    width: min(100%, 420px);
    max-width: 420px;
    transform: none;
  }
}

/* §5–6 hold sheet: flat email (no nested border box), nowrap early-bird */
.gm-nowrap { white-space: nowrap; }
.gm-hold-title .gm-nowrap { white-space: nowrap; }
.gm-hold-email-input {
  display: block;
  width: 100%;
  box-sizing: border-box;
  height: 52px;
  margin: 0 0 12px;
  padding: 0 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  font-size: 16px;
  box-shadow: none;
}
.gm-hold-email-input:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: var(--focus-ring);
}
/* kill any email-box chrome if reintroduced */
.gm-hold-idle .gm-email-box {
  border: 0;
  background: transparent;
  box-shadow: none;
  padding: 0;
}
.gm-hold-pay {
  border-radius: 999px;
  margin-top: 0;
}


/* ===== success.css ===== */
/* Form success / error — Linen Editorial (compact hero-balanced) */

.form-area {
  min-height: 0;
  transition: min-height 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

/* After free join: no hollow email shell, no reserved min-height */
.form-area-success,
.form-area.is-success,
.form-area:has(.success-stack) {
  min-height: 0;
  padding: 0;
}
.form-area-success .gm-email-box,
.form-area.is-success .gm-email-box,
.form-area:has(.success-stack) .gm-email-box,
.form-area:has(.success-stack) .gm-email-row,
.form-area:has(.success-stack) .gm-email-hint,
.form-area:has(.success-stack) form.signup > input[type="hidden"] + .hp {
  display: none;
}
/* If app-v2 leaves the raw form row under success, kill it */
.form-area:has(.success-stack) form.signup .gm-email-box,
.paper.is-success .gm-email-box:not(:has(input:focus)) {
  display: none;
}
.form-area:has(.success-stack) form.signup {
  margin: 0;
  padding: 0;
  min-height: 0;
}
.success-stack {
  padding: 0;
  margin: 0;
  min-height: 0;
}
/* Don't leave blank kicker/msg blocks */
.success-stack .success-msg:empty,
.success-stack .success-kicker:empty {
  display: none;
}

.form-area-success {
  padding: 0;
}

.success-stack {
  display: block;
}
.success-stack > :first-child { margin-top: 0; }
.success-stack > :last-child { margin-bottom: 0; }

/* Hero join panel after free join: tighten so left ≈ right column weight */
.paper.is-success.join-panel,
.join-panel.paper.is-success {
  padding: 16px 16px 14px;
}
@media (min-width: 640px) {
  .paper.is-success.join-panel,
  .join-panel.paper.is-success {
    padding: 18px 18px 16px;
  }
}
.paper.is-success .join-panel__head {
  margin-bottom: 8px;
}
.paper.is-success .join-panel__title {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--green);
}

/* Kicker row with optional check */
.success-kicker,
.success-kicker-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 4px;
  font-size: 11px;
  line-height: 1.4;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--green);
  font-family: var(--font-sans);
}
.success-check {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  background: var(--line);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.success-check svg {
  width: 12px;
  height: 12px;
  display: block;
}

.success-msg {
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: 22px;
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 450;
  color: var(--ink);
}
@media (min-width: 640px) {
  .success-msg { font-size: 24px; }
}
@media (max-width: 639px) {
  .success-msg { font-size: 20px; }
}

.success-email {
  margin: 0 0 6px;
  font-size: 13px;
  line-height: 1.4;
  font-weight: 500;
  color: var(--body);
  overflow-wrap: anywhere;
}
.success-email strong,
.success-email .success-email__addr {
  color: var(--ink);
  font-weight: 500;
}

/* Notes — compact */
.form-note {
  margin: 0 0 4px;
  font-size: 13px;
  line-height: 1.4;
  font-weight: 400;
  color: var(--body);
  border: 0;
  padding: 0;
}
.form-note-queue {
  margin: 0 0 4px;
  font-size: 12px;
  line-height: 1.35;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  border: 0;
  padding: 0;
}
.form-note-free:not(.form-note-queue),
.success-note-compact {
  margin: 0 0 0;
  font-size: 12px;
  line-height: 1.35;
  font-weight: 400;
  color: var(--muted);
  border: 0;
  padding: 0;
}
/* Hide long free-note under hero success — actions carry the next step */
.paper.is-success .form-note-free:not(.form-note-queue) {
  display: none;
}
.success-divider {
  border: 0;
  border-top: 1px solid var(--line);
  margin: 12px 0 10px;
  height: 0;
  padding: 0;
}

/* Free success — compact dual CTA (no nested deal card) */
.success-next {
  margin: 12px 0 0;
}
.success-next--compact {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
/* legacy deal box (if re-injected) — demote */
.success-next__deal {
  display: none;
}
.success-next__actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
@media (min-width: 420px) {
  .success-next__actions {
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
  }
}
.success-next__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  height: 44px;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 999px;
  font: 500 13px/1 var(--font-sans);
  letter-spacing: 0.01em;
  cursor: pointer;
  box-sizing: border-box;
  flex: 1 1 0;
  min-width: 0;
  width: 100%;
  white-space: nowrap;
}
.success-next__btn .gm-price-1,
.success-next__btn .gm-buck,
.success-next__btn .gm-buck-n {
  font: inherit;
  color: inherit;
}
.success-next__btn--solid {
  background: var(--green);
  color: var(--card);
  border: 0;
}
.success-next__btn--solid:hover {
  background: var(--green);
}
.success-next__btn--outline {
  background: transparent;
  color: var(--green);
  border: 1px solid var(--green);
}
.success-next__btn--outline:hover {
  background: var(--green);
}
.success-next__hint {
  margin: 10px 0 0;
  font-size: 11.5px;
  line-height: 1.35;
  color: var(--muted);
  text-align: left;
}
/* Secondary KS Notify — never competes with Hold with $1 / Play sample */
.success-next__ks {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.4;
}
.success-next__ks-link {
  color: var(--muted);
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-underline-offset: 3px;
  font-weight: 500;
}
.success-next__ks-link:hover {
  color: var(--green);
  text-decoration-color: var(--green);
}
/* Tighten success stack density in hero join panel */
.paper.is-success .success-stack .success-msg {
  font-size: 1.25rem;
  margin-bottom: 2px;
}
@media (min-width: 640px) {
  .paper.is-success .success-stack .success-msg { font-size: 1.35rem; }
}
.paper.is-success .success-stack .success-email {
  margin-bottom: 2px;
  font-size: 12.5px;
}
.paper.is-success .success-stack .form-note-queue {
  margin: 0 0 0;
  font-size: 11.5px;
}
/* Hide bulky old vip card + KS block on hero success */
.paper.is-success .gm-vip-reopen-wrap,
.paper.is-success .gm-ks-soft {
  display: none;
}
/* Desktop: keep hero columns balanced after success */
@media (min-width: 1024px) {
  .hero-grid:has(.paper.is-success) {
    align-items: start;
  }
  .hero-grid:has(.paper.is-success) .join-panel {
    max-width: 100%;
  }
}
.success-stack:focus,
.success-stack:focus-visible {
  outline: none;
  box-shadow: none;
}
.paper.is-success .hero-hold-hint {
  display: none;
}

/* Nested $1 hold card — lighter visual weight */
.gm-vip-reopen-wrap {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 16px;
  box-shadow: none;
  margin: 0;
}
@media (max-width: 639px) {
  .gm-vip-reopen-wrap { padding: 12px 14px; }
}

.gm-vip-reopen-title {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  font-family: var(--font-sans);
}

.gm-vip-reopen-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  padding: 0 20px;
  min-width: 200px;
  border-radius: 999px;
  background: transparent;
  border: 1px solid var(--green);
  color: var(--green);
  font: 500 14px/1 var(--font-sans);
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: background-color 0.15s ease;
  text-decoration: none;
  box-shadow: none;
}
.gm-vip-reopen-btn:hover {
  background: var(--green);
}
.gm-vip-reopen-btn:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}
@media (max-width: 639px) {
  .gm-vip-reopen-btn {
    width: 100%;
    min-width: 0;
  }
}

.gm-vip-reopen-hint {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}

/* KS soft link — not a card */
.gm-ks-soft {
  margin-top: 12px;
  background: none;
  border: 0;
  padding: 0;
  box-shadow: none;
}
.gm-ks-soft-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: 500 13px/1.4 var(--font-sans);
  color: var(--green);
  text-decoration: none;
  border-bottom: 1px solid var(--green);
  padding-bottom: 2px;
  min-height: 32px;
  background: transparent;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  border-radius: 0;
  cursor: pointer;
}
@media (max-width: 639px) {
  .gm-ks-soft-btn { min-height: 44px; }
}
.gm-ks-soft-note {
  margin-top: 6px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.10em;
  color: var(--muted);
}

/* Error */
.form-error {
  margin: 8px 0 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(138, 97, 72, 0.10);
  border: 1px solid rgba(138, 97, 72, 0.22);
  color: var(--body);
  font-size: 14px;
  line-height: 1.45;
  font-weight: 500;
}

/* Outer paper success state */
.paper.is-success .join-card-title,
.paper.is-success [data-join-title] {
  /* handled by JS */
}


/* ===== flow.css ===== */
/* Flow modal — single shell for free / $1 paths (no jump-scroll UX) */
#gmFlowModal[hidden] {
  display: none;
}
#gmFlowModal {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
}
.gm-flow-backdrop {
  position: absolute;
  inset: 0;
  /* Must be translucent scrim — var(--line) is solid paper and hides the page */
  background: var(--scrim, rgba(24, 21, 18, 0.5));
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}
.gm-flow-sheet {
  position: relative;
  z-index: 1;
  width: min(100%, 400px);
  max-height: min(85vh, 480px);
  overflow: hidden; /* no forced scroll for compact offer */
  display: flex;
  flex-direction: column;
  background: var(--card);
  color: var(--ink);
  border-radius: 20px;
  border: 1px solid var(--line);
  box-shadow: 0 24px 64px rgba(24, 21, 18, 0.28);
  padding: 18px 18px 16px;
  box-sizing: border-box;
  -webkit-overflow-scrolling: touch;
}
#gmFlowBody {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto; /* only longer views scroll; free_success is sized to fit */
  -webkit-overflow-scrolling: touch;
}
/* Mobile: bottom sheet — thumb-friendly, keep page visible above */
@media (max-width: 639px) {
  #gmFlowModal {
    align-items: flex-end;
    padding: 0;
  }
  .gm-flow-sheet {
    width: 100%;
    max-width: none;
    max-height: min(72vh, 480px); /* leave page visible; no internal scroll needed */
    border-radius: 18px 18px 0 0;
    padding: 14px 16px calc(12px + env(safe-area-inset-bottom, 0px));
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }
  .gm-flow-btn {
    min-height: 48px;
    font-size: 16px;
  }
  .gm-flow-title {
    font-size: 1.28rem;
  }
}
/* Compact free-join offer — one screen, no user scroll */
.gm-flow-offer .gm-flow-title {
  font-size: 1.32rem;
  line-height: 1.18;
  margin: 0 0 6px;
  max-width: 18ch;
}
.gm-flow-offer .gm-flow-sub {
  margin: 0 0 10px;
  font-size: 0.9rem;
  line-height: 1.4;
}
.gm-flow-offer .gm-flow-email {
  margin: 0 0 6px;
  font-size: 12px;
}
.gm-flow-offer .gm-flow-success-check {
  width: 24px;
  height: 24px;
  margin-bottom: 6px;
  font-size: 14px;
}
.gm-flow-offer .gm-flow-eyebrow {
  margin-bottom: 4px;
}
.gm-flow-offer .gm-flow-deal {
  margin: 0 0 12px;
  padding: 10px 12px;
}
.gm-flow-offer .gm-flow-deal__title {
  font-size: 13px;
}
.gm-flow-offer .gm-flow-deal__save {
  margin-top: 4px;
  font-size: 13px;
}
.gm-flow-offer .gm-flow-deal__fine {
  margin-top: 4px;
  font-size: 11.5px;
  line-height: 1.35;
  color: var(--muted);
}
.gm-flow-offer .gm-flow-actions {
  margin-top: 0;
  gap: 6px;
}
.gm-flow-offer .gm-flow-btn--ghost {
  min-height: 40px;
  font-size: 14px;
}
@media (max-width: 639px) {
  .gm-flow-offer .gm-flow-title {
    font-size: 1.22rem;
  }
}
.gm-flow-x {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}
.gm-flow-x:hover {
  background: var(--line);
  color: var(--ink);
}
/* Free-success optional $1 deal block */
.gm-flow-deal {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--line);
  border: 1px solid var(--line);
  box-sizing: border-box;
}
.gm-flow-deal__title {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--green);
}
.gm-flow-deal__save {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--green);
}
.gm-flow-deal__save strong {
  font-weight: 650;
  color: var(--ink);
}
.gm-flow-deal__fine {
  margin: 6px 0 0;
  font-size: 12px;
  line-height: 1.35;
  color: var(--muted);
}
.gm-flow-eyebrow {
  margin: 0 0 6px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--green);
}
/* Flow form: email field + pill CTA stacked (free & $1) */
.gm-flow-email-stack {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 10px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--paper-2);
  box-shadow: inset 0 1px 2px var(--line);
}
.gm-flow-email-stack:focus-within {
  border-color: var(--green);
  box-shadow: 0 0 0 3px var(--line);
}
.gm-flow-email-stack .gm-email-row {
  flex-direction: column;
  gap: 0;
  align-items: stretch;
}
.gm-flow-email-stack .gm-email-row input[type="email"] {
  width: 100%;
  height: 48px;
  min-height: 48px;
  border: 0;
  border-radius: 12px;
  background: var(--card);
  box-shadow: none;
  padding: 0 14px;
  font-size: 16px;
  box-sizing: border-box;
}
/* Primary CTA — full-width pill, not a flat dark slab */
.gm-flow-submit-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 50px;
  height: 50px;
  margin: 0;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: var(--green);
  color: var(--card);
  font: 550 15px/1 var(--font-sans, system-ui, sans-serif);
  letter-spacing: 0.01em;
  cursor: pointer;
  box-shadow: 0 2px 8px var(--green);
  transition: background 0.15s, transform 0.1s, box-shadow 0.15s;
  -webkit-tap-highlight-color: transparent;
}
.gm-flow-submit-pill:hover {
  background: var(--green);
  box-shadow: 0 3px 12px var(--green);
}
.gm-flow-submit-pill:active {
  transform: scale(0.985);
}
.gm-flow-form--dollar .gm-email-hint,
.gm-flow-form .gm-email-hint {
  text-align: center;
  margin-top: 10px;
}
.gm-flow-actions--foot {
  margin-top: 8px;
  text-align: center;
}
.gm-flow-actions--foot .gm-flow-btn--ghost {
  min-height: 40px;
  font-size: 13px;
  color: var(--muted);
}
.gm-flow-banner {
  display: none; /* retired — was duplicating sub copy */
}
.gm-flow-title {
  margin: 0 28px 8px 0;
  font-family: var(--font-display, Newsreader, Georgia, serif);
  font-size: 1.55rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--ink);
}
.gm-flow-sub {
  margin: 0 0 16px;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--body);
}
.gm-flow-banner {
  margin: 0 0 14px;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--line);
  border: 1px solid var(--line);
  font-size: 13px;
  line-height: 1.4;
  color: var(--green);
}
.gm-flow-rows {
  display: grid;
  gap: 8px;
  margin: 0 0 14px;
}
.gm-flow-row {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  background: var(--paper);
  border: 1px solid var(--line);
  font-size: 14px;
}
.gm-flow-row span {
  color: var(--muted);
}
.gm-flow-row strong {
  color: var(--ink);
  font-weight: 550;
  text-align: right;
}
.gm-flow-row s {
  color: var(--muted);
  font-weight: 400;
}
.gm-flow-bullets {
  margin: 0 0 16px;
  padding: 0 0 0 1.1rem;
  font-size: 13px;
  line-height: 1.45;
  color: var(--body);
}
.gm-flow-bullets li {
  margin: 0 0 6px;
}
.gm-flow-actions {
  margin-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
/* Secondary KS Notify — under primary free/$1 actions */
.gm-flow-ks {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.4;
  text-align: center;
}
.gm-flow-ks-link {
  color: var(--muted);
  text-decoration: underline;
  text-decoration-color: var(--line);
  text-underline-offset: 3px;
  font-weight: 500;
}
.gm-flow-ks-link:hover {
  color: var(--green);
  text-decoration-color: var(--green);
}
.gm-flow-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 18px;
  border-radius: 999px;
  border: 0;
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none;
  box-sizing: border-box;
}
.gm-flow-btn--solid {
  background: var(--green);
  color: var(--card);
}
.gm-flow-btn--solid:hover {
  background: var(--green);
}
.gm-flow-btn--outline {
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--line);
}
.gm-flow-btn--ghost {
  background: transparent;
  color: var(--muted);
  min-height: 40px;
  font-size: 14px;
}
.gm-flow-btn--ghost:hover {
  color: var(--ink);
}
.gm-flow-btn:disabled {
  opacity: 0.55;
  cursor: wait;
}
/* Success pair — equal width side-by-side on wider sheets */
.gm-flow-actions--pair {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.gm-flow-actions--pair .gm-flow-btn {
  width: 100%;
  flex: 1 1 0;
}
@media (min-width: 400px) {
  .gm-flow-actions--pair {
    flex-direction: row;
    align-items: stretch;
  }
  .gm-flow-actions--pair .gm-flow-btn {
    min-width: 0;
  }
}
.gm-flow-hint-quiet {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.4;
  color: var(--muted);
  text-align: center;
}
.gm-flow-email {
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--body);
}
.gm-flow-email strong {
  color: var(--ink);
  font-weight: 550;
  word-break: break-all;
}
.gm-flow-success-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin-bottom: 10px;
  border-radius: 999px;
  background: var(--line);
  color: var(--green);
  font-size: 16px;
}
/* free form inside flow uses existing email styles */
#gmFlowModal .gm-email-shell {
  margin: 0;
}
#gmFlowModal .gm-email-hint {
  margin-top: 10px;
}
html.gm-flow-open {
  overflow: hidden;
}
html.gm-flow-open #stickyCta {
  display: none;
}


/* ===== dual-path.css ===== */
/* Dual path — editorial fork (P1-1 r2) */
.dual-path-wrap {
  /* outer rhythm: tighter to hero, clear before next section */
}

.dual-path {
  display: grid;
  overflow: hidden;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: 0 4px 24px var(--line);
}
@media (min-width: 640px) {
  .dual-path { grid-template-columns: 1fr 1fr; }
}

.dual-path__cell {
  padding: 20px;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 12px;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .dual-path__cell {
    padding: 24px 28px;
    gap: 14px;
  }
}
.dual-path__cell + .dual-path__cell {
  border-top: 1px solid var(--line);
}
@media (min-width: 640px) {
  .dual-path__cell + .dual-path__cell {
    border-top: 0;
    border-left: 1px solid var(--line);
  }
}
.dual-path__cell--opt {
  background: var(--paper-2);
}

.dual-path__top {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.dual-path__badge {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 500;
  flex-shrink: 0;
  box-sizing: border-box;
}
.dual-path__badge--solid {
  background: var(--green);
  color: var(--card);
}
.dual-path__badge--outline {
  background: transparent;
  border: 1px solid var(--line);
  color: var(--muted);
}
.dual-path__step {
  margin: 0;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
}
.dual-path__step--sage { color: var(--muted); }
.dual-path__chip {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: var(--green);
}
.dual-path__chip s {
  color: var(--muted);
  font-weight: 400;
  text-decoration-thickness: 1px;
}

.dual-path__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  color: var(--ink);
  line-height: 1.2;
}
@media (min-width: 640px) {
  .dual-path__title { font-size: 1.375rem; }
}
.dual-path__body {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--body);
}

.dual-path__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  min-height: 40px;
  padding: 0 18px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-decoration: none;
  box-sizing: border-box;
  width: fit-content;
  transition: opacity 0.15s ease, background-color 0.15s ease;
}
@media (max-width: 639px) {
  /* Both free + optional visible, stacked — never hide free (looks like a bug) */
  .dual-path {
    border-radius: 16px;
    grid-template-columns: 1fr;
  }
  .dual-path__cell {
    padding: 20px;
    gap: 12px;
  }
  .dual-path__cell--free {
    display: grid;
  }
  .dual-path__cell + .dual-path__cell {
    border-top: 1px solid var(--line);
    border-left: 0;
  }
  .dual-path__title {
    font-size: 18px;
  }
  .dual-path__body {
    font-size: 14px;
    margin-top: 4px;
  }
  .dual-path__cta {
    width: 100%;
    height: 44px;
    min-height: 44px;
    font-size: 14px;
  }
  .dual-path__chip {
    font-size: 12px;
    padding: 4px 10px;
  }
}
.dual-path__cta--solid {
  background: var(--green);
  color: var(--card);
  border: 1px solid var(--green);
}
.dual-path__cta--outline {
  background: transparent;
  color: var(--green);
  border: 1px solid var(--line);
}
.dual-path__cta:hover { opacity: 0.92; }

/* legacy links if any remain */
.dual-path__link {
  color: var(--green);
  font-weight: 500;
  text-decoration: none;
}


/* ===== worlds.css ===== */
/* v3 §3 world small cards — mobile list / desktop 5-col */

.world-cards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}

.world-card {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  pointer-events: none;
  user-select: none;
}
.world-card:first-child {
  border-top: 1px solid var(--line);
}

.world-card__img {
  width: 72px;
  height: 72px;
  border-radius: 12px;
  object-fit: cover;
  display: block;
  background: var(--paper-2);
}

.world-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: 17px;
  line-height: 1.25;
  color: var(--ink);
  font-weight: 450;
}

.world-card__mood {
  margin: 4px 0 0;
  font-size: 14px;
  line-height: 1.35;
  color: var(--muted, #827a70);
}

.world-card__badge {
  display: inline-block;
  margin-left: 6px;
  font-family: var(--font-sans, inherit);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--green);
  vertical-align: middle;
}

/* Desktop: 5 small cards — fixed image box so no blank crop/load flash */
@media (min-width: 768px) {
  .world-cards {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 16px;
    border: 0;
  }
  .world-card {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 0;
    border: 0;
  }
  .world-card__img {
    width: 100%;
    height: 140px;
    max-height: none;
    aspect-ratio: auto;
    border-radius: 12px;
    object-fit: cover;
    object-position: center 55%;
    background: var(--paper-2);
  }
  /* Rainforest is fog-heavy in the center — bias lower so foliage shows */
  .world-card--free .world-card__img {
    object-position: center 72%;
  }
  .world-card__copy {
    width: 100%;
    text-align: left;
  }
  .world-card__name {
    text-align: left;
  }
  .world-card__mood {
    text-align: left;
  }
}

.worlds-note {
  margin-top: 14px;
  font-size: var(--fs-small, 14px);
  line-height: 1.45;
  color: var(--muted, #827a70);
}


/* ===== tw-compat.css ===== */
/**
 * Minimal layout utilities previously pulled from ivory-styles (full Tailwind ~60KB).
 * Only classes still used in preview-ivory/public/index.html.
 * eng-90: remove ivory-styles.css link once this is in the linen bundle.
 */

.min-h-dvh {
  min-height: 100dvh;
}
.overflow-x-hidden {
  overflow-x: hidden;
}
.overflow-hidden {
  overflow: hidden;
}
.relative {
  position: relative;
}
.w-full {
  width: 100%;
}
.h-full {
  height: 100%;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.max-w-6xl {
  max-width: var(--container-max, 1120px);
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.pt-5 {
  padding-top: 1.25rem;
}
.pb-6 {
  padding-bottom: 1.5rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-3 {
  margin-top: 0.75rem;
}
.mt-6 {
  margin-top: 1.5rem;
}
.gap-5 {
  gap: 1.25rem;
}
.grid {
  display: grid;
}
.font-display {
  font-family: var(--font-display);
}
.tracking-tight {
  letter-spacing: -0.02em;
}
.text-\[1\.1rem\] {
  font-size: 1.1rem;
}

@media (min-width: 640px) {
  .sm\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
  .sm\:mt-8 {
    margin-top: 2rem;
  }
  .sm\:pt-10 {
    padding-top: 2.5rem;
  }
  .sm\:pb-10 {
    padding-bottom: 2.5rem;
  }
  .sm\:text-xl {
    font-size: 1.25rem;
    line-height: 1.75rem;
  }
}

@media (min-width: 1024px) {
  .lg\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .lg\:gap-10 {
    gap: 2.5rem;
  }
  .lg\:items-stretch {
    align-items: stretch;
  }
}


/* ===== mobile-pulse.css ===== */
/**
 * mobile-pulse · KS-aligned mobile rhythm (v1.3 discipline)
 *
 * Principles (from KS pre-launch best practice + design/mobile-ks-redesign-v1):
 * 1. One job per section · consistent gutter · no magic max-width on titles
 * 2. Peak / valley = paper ↔ paper-2 only (never random dark mid-page)
 * 3. Founder = editorial small portrait (≤13rem mobile / ≤18rem desk), not full-bleed face
 * 4. Motion: soft reveal only · respect reduced-motion
 * 5. Do not force horizontal scroll on 2-col grids designed as grids
 *
 * Desktop: light polish only. Scoped max-width 767px for layout shifts.
 */

/* ── Act chip (KS storyboard) ── */
.gm-act {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 var(--space-3, 0.75rem);
  font-family: var(--font-sans, "DM Sans", system-ui, sans-serif);
  font-size: 0.6875rem; /* 11 */
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted, #6b645c);
  line-height: 1.2;
}
.gm-act__num {
  color: #c4a574; /* --gm-accent-warm */
  font-variant-numeric: tabular-nums;
}
.gm-act__label {
  color: var(--muted, #6b645c);
}

/* Hide redundant eyebrow when act chip is present */
@media (max-width: 767px) {
  .section-head:has(.gm-act) > .eyebrow {
    display: none;
  }
}

/* ═══════════════════════════════════════════
   Mobile layout discipline (≤767)
   ═══════════════════════════════════════════ */
@media (max-width: 767px) {
  /* —— Peak / valley: paper-2 only via .band (HTML class), never hardcoded id lists for consecutive slabs —— */
  #system.band,
  #founding.band,
  #breath.band,
  #moments.band,
  #founder.band,
  #kit.band,
  #faq.band {
    background: var(--paper-2, #f3ede3);
  }
  #ritual.section-y,
  #sample.section-y,
  #method.section-y,
  #real-today.section-y,
  #compare.section-y,
  #worlds.section-y {
    background: var(--paper, #faf7f1);
  }

  /* Uniform section breathing — match v1.2 (critical CSS tokens drive --section-pad-m) */
  .section-y {
    padding-block: clamp(2rem, 6.5vw, 2.75rem);
  }

  /* Titles: left-aligned, balanced wrap — no artificial ch-crush (was 14ch → 东倒西歪) */
  .section-head .display-title,
  #system .display-title,
  #sample .display-title,
  #founding .display-title {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    text-align: left;
    font-size: clamp(1.65rem, 6.5vw, 2.1rem);
    line-height: 1.18;
    letter-spacing: -0.03em;
    text-wrap: balance;
  }
  #founder .founder-title {
    max-width: 20ch;
    text-align: left;
    text-wrap: balance;
  }
  .section-head .lede,
  #founding .lede {
    max-width: 28ch;
    font-size: 0.875rem; /* 14 — denser lede, fewer wraps */
    line-height: 1.4;
    color: var(--body, var(--muted, #6b645c));
  }
  /* Founding: short scannable bullets — no long parenthetical wraps */
  #founding .tier-list {
    margin-bottom: 0.75rem;
    gap: 0.35rem;
  }
  #founding .tier-list li {
    font-size: 0.875rem;
    line-height: 1.3;
    padding-left: 1rem;
  }
  #founding .price-ladder--in-card {
    margin: 0.15rem 0 0.9rem;
  }
  #founding .how-dollar {
    padding: 1.05rem 1.1rem 1.15rem;
  }
  #founding .tier-featured__head {
    margin-bottom: 0.55rem;
  }

  /* —— Hero: fold-critical, full-width CTA —— */
  .hero-section--linen {
    padding-bottom: var(--space-5, 1.25rem);
  }
  .hero-grid--linen .hero-shot .img-frame--linen {
    aspect-ratio: 16 / 10;
    max-height: min(36vh, 15.5rem);
    border-radius: 0.875rem;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
  }
  .hero-h1 {
    font-size: clamp(1.75rem, 7.2vw, 2.25rem);
    line-height: 1.15;
    max-width: 14ch;
    text-wrap: balance;
  }
  a.hero-continue.btn-solid-pill,
  button.hero-continue.btn-solid-pill {
    width: 100%;
    max-width: 22rem;
    min-height: 3.25rem; /* 52 */
    font-size: 1rem;
    box-shadow: 0 4px 16px rgba(36, 48, 41, 0.18);
  }
  .hero-join {
    max-width: 22rem;
  }

  /* —— Sample form card —— */
  .sample-form-card {
    border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
    border-radius: 1.25rem;
    background: var(--card, #fffcf7);
    box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
  }

  /* —— Founder: v1.2 gold — sunken when .band; centered portrait, quote voice —— */
  #founder {
    /* surface from .band → paper-2; keep ink for text on light */
    color: var(--ink, #181512);
  }
  #founder .gm-act__num {
    color: #c4a574;
  }
  #founder .gm-act__label {
    color: var(--muted, #6b645c);
  }

  .founder-panel--flat {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: transparent;
    border: 0;
    box-shadow: none;
  }

  /* Editorial portrait — compact centered card (~12rem), never full-bleed face */
  .founder-panel--flat .founder-panel__media {
    display: block;
    position: relative;
    width: 12rem;
    max-width: min(12rem, 42vw);
    margin-inline: auto;
    aspect-ratio: 4 / 5;
    height: auto;
    max-height: 15rem;
    flex: 0 0 auto;
    align-self: center;
    border-radius: 1.1rem;
    overflow: hidden;
    background: var(--paper-3, #ebe3d6);
    box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 22px rgba(24, 21, 18, 0.08);
    border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
    left: auto;
    right: auto;
  }
  .founder-panel--flat .founder-panel__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center 18%;
    border-radius: 0;
    margin: 0;
    left: auto;
  }
  .founder-panel--flat .founder-panel__copy {
    padding: 0;
    text-align: left;
  }
  .founder-panel--flat .founder-quote-mark {
    font-family: var(--font-display, "Newsreader", Georgia, serif);
    font-size: 3.25rem;
    line-height: 0.75;
    color: #c4a574;
    opacity: 0.75;
    margin: 0 0 0.5rem;
  }
  .founder-panel--flat .founder-title {
    margin: 0;
    max-width: 20ch;
    font-size: clamp(1.5rem, 6vw, 1.85rem);
    line-height: 1.2;
  }
  .founder-panel--flat .founder-prose {
    margin-top: 1rem;
    max-width: 36ch;
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--body, #3a342e);
  }
  .founder-panel--flat .founder-prose__punch,
  .founder-panel--flat .founder-prose__punch strong {
    color: var(--ink, #181512);
  }
  .founder-panel--flat .founder-avatar {
    display: none;
  }
  .founder-panel--flat .founder-byline-row {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  }
  .founder-panel--flat .founder-byline {
    color: var(--ink, #181512);
  }

  /* Founding after founder — clear card, not fused */
  #founding {
    padding-top: clamp(2.5rem, 8vw, 3.5rem);
  }
  #founding .how-dollar {
    background: var(--card, #fffcf7);
    border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
    box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
    border-radius: 1.25rem;
    padding: 1.25rem;
  }
  #founding .how-dollar__title {
    font-size: clamp(1.2rem, 5vw, 1.4rem);
  }
  #founding .how-dollar__cta .btn-solid-pill,
  #founding .how-dollar__cta .btn-primary {
    width: 100%;
    min-height: 3.25rem;
  }

  /* —— Worlds only: intentional horizontal rail (card media) —— */
  .world-grid,
  .worlds-compact .world-list {
    display: flex;
    gap: 0.75rem;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.5rem;
    margin-inline: calc(-1 * var(--container-pad-m, 1.25rem));
    padding-inline: var(--container-pad-m, 1.25rem);
    scrollbar-width: none;
  }
  .world-grid::-webkit-scrollbar,
  .worlds-compact .world-list::-webkit-scrollbar {
    display: none;
  }
  .world-grid > *,
  .worlds-compact .world-list > * {
    flex: 0 0 min(78vw, 17.5rem);
    scroll-snap-align: start;
  }

  /* Moments stay 2-col grid — do not convert to rail */

  /* Compare: per-row soft cards (see compare.css) — no single shell */
  .compare-list {
    background: transparent;
    border: 0;
    border-radius: 0;
    overflow: visible;
    gap: 0.7rem;
  }
  .compare-list .row {
    padding: 0.95rem 1rem 0.95rem 2.65rem;
  }
  .compare-list .row--gm {
    padding: 1.1rem 1.1rem 1.15rem 2.85rem;
  }
  .compare-list .name {
    font-weight: 500;
    color: var(--ink, #181512);
  }

  /* Sticky lift */
  #stickyCta .sticky-inner {
    box-shadow: 0 -8px 28px rgba(24, 21, 18, 0.08);
  }
}

/* ── Scroll reveal (mobile only, restrained)
   CRITICAL: never leave opacity:0 as the default. If boot.js fails or is
   stuck on an immutable CDN cache, the whole mid-page stayed blank and only
   hero + #cta "Ready when you are" remained visible. Content is always
   visible; is-in is a soft lift only. */
@media (max-width: 767px) {
  .gm-reveal {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition:
      opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1),
      transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
  }
  /* Optional polish when JS marks in-view — still fully readable without it */
  .gm-reveal.is-in {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
  .gm-reveal-delay-1 {
    transition-delay: 0.05s;
  }
  .gm-reveal-delay-2 {
    transition-delay: 0.1s;
  }

  /* Soft hero entrance once */
  .hero-grid--linen .hero-shot {
    animation: gmHeroIn 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  .hero-grid--linen .hero-intro {
    animation: gmHeroIn 0.55s 0.06s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  .hero-grid--linen .hero-join {
    animation: gmHeroIn 0.55s 0.12s cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  @keyframes gmHeroIn {
    from {
      opacity: 0;
      transform: translate3d(0, 10px, 0);
    }
    to {
      opacity: 1;
      transform: translate3d(0, 0, 0);
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  html body .gm-reveal,
  html body .hero-grid--linen .hero-shot,
  html body .hero-grid--linen .hero-intro,
  html body .hero-grid--linen .hero-join {
    animation: none;
    transition: none;
    opacity: 1;
    transform: none;
  }
}

/* Desktop: VIP card shadow only — founder surface comes from .band → paper-2 (base.css), not a hard override */
@media (min-width: 768px) {
  #founding .how-dollar {
    box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
  }
}

/* ═══════════════════════════════════════════
   Scannable blocks — kill “文字墙 / ledger essay”
   (method dual · moments rail · status rows)
   ═══════════════════════════════════════════ */

/* Method: two short cards — full width, tight pad (no sparse float) */
.gm-dual {
  display: grid;
  gap: 0.65rem;
  width: 100%;
  max-width: none;
}
@media (min-width: 640px) {
  .gm-dual {
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem;
  }
}
.gm-dual__panel {
  padding: 0.95rem 1.05rem;
  border-radius: 1rem;
  background: var(--card, #fffcf7);
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04);
}
.gm-dual__panel--dark {
  background: var(--ink, #1c2a22);
  color: #f6f1e8;
  border-color: transparent;
}
.gm-dual__kicker {
  margin: 0 0 0.5rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted, #6b645c);
}
.gm-dual__panel--dark .gm-dual__kicker {
  color: rgba(246, 241, 232, 0.65);
}
.gm-dual__title {
  margin: 0 0 0.45rem;
  font-family: var(--font-display, "Newsreader", Georgia, serif);
  font-size: 1.35rem;
  font-weight: 450;
  letter-spacing: -0.03em;
  line-height: 1.2;
  color: var(--ink, #181512);
}
.gm-dual__panel--dark .gm-dual__title {
  color: #f6f1e8;
}
.gm-dual__text {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--body, #3a342e);
  max-width: 28ch;
}
.gm-dual__panel--dark .gm-dual__text {
  color: rgba(246, 241, 232, 0.82);
}
/* Method disclaimer: full-width footnote under dual cards — not stuck under dual measure */
#method .method-disclaimer {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0.65rem 0 0;
  padding: 0;
  font-size: 0.75rem;
  line-height: 1.4;
  color: var(--muted, #6b645c);
  text-align: center;
}
@media (min-width: 768px) {
  #method .method-disclaimer {
    margin-top: 0.75rem;
    text-align: center;
  }
}

/* Moments: horizontal scroll-snap rail (mobile + desktop) — not 2×3 grid, no Embla */
/* Hide legacy chips / moment-grid so layout.css grid cannot fight the rail */
#moments .gm-chips,
#moments .moment-grid {
  display: none;
}

/* —— Mobile: dual-row continuous left marquee (3+3 cards, seamless loop) —— */
.gm-moments-marquee {
  display: none;
}
@media (max-width: 767px) {
  #moments .gm-rail.gm-rail--moments.gm-rail--moments-desk {
    display: none;
  }
  .gm-moments-marquee {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 1.15rem;
    overflow: hidden;
    width: 100%;
    mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
  }
  .gm-moments-marquee__row {
    overflow: hidden;
    width: 100%;
  }
  .gm-moments-marquee__track {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.5rem;
    width: max-content;
    /* Row 1 faster · left · full shorthand so duration cannot equal row 2 */
    animation: gm-moments-marquee-left 32s linear infinite;
    animation-delay: 0s;
    will-change: transform;
  }
  /* Row 2 slower + phase offset — both left; clearly different speed */
  .gm-moments-marquee__row--b .gm-moments-marquee__track {
    animation: gm-moments-marquee-left 52s linear infinite;
    animation-delay: -22s;
  }
  /* Optional: pause while finger/cursor rests on a row */
  .gm-moments-marquee__row:hover .gm-moments-marquee__track {
    animation-play-state: paused;
  }
  .gm-moments-marquee .gm-moment-card {
    flex: 0 0 auto;
    width: min(52vw, 10.75rem);
    min-height: 3.75rem;
    max-height: 4.5rem;
    padding: 0.65rem 0.85rem;
    box-sizing: border-box;
  }
  .gm-moments-marquee .gm-moment-card__t {
    font-size: 0.9375rem;
    margin-bottom: 0.2rem;
  }
  .gm-moments-marquee .gm-moment-card__d {
    font-size: 0.75rem;
  }
  @media (prefers-reduced-motion: reduce) {
    .gm-moments-marquee__track {
      animation: none;
    }
    .gm-moments-marquee__row:hover .gm-moments-marquee__track {
      animation-play-state: running;
    }
  }
}
@keyframes gm-moments-marquee-left {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* Desktop ≥768: single horizontal snap rail — no forced marquee */
@media (min-width: 768px) {
  .gm-moments-marquee {
    display: none;
  }
  #moments .gm-rail--moments-desk {
    display: flex;
  }
}
#moments .gm-rail--moments {
  display: flex;
  flex-wrap: nowrap;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  margin-top: 1.15rem;
  margin-inline: 0;
  padding-inline: var(--container-pad-m, 1.25rem);
  gap: 0.75rem;
}
.gm-rail--moments .gm-rail__item,
.gm-rail--moments .gm-moment-card {
  flex: 0 0 min(72vw, 17rem);
  scroll-snap-align: start;
  min-width: 0;
}
.gm-moment-card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1rem 1.15rem;
  border-radius: 1rem;
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  background: var(--card, #fffcf7);
  box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 6px 18px rgba(24, 21, 18, 0.05);
  min-height: 5.5rem;
}
.gm-moment-card__t {
  margin: 0 0 0.3rem;
  font-size: 1rem;
  font-weight: 650;
  color: var(--ink, #181512);
  line-height: 1.25;
  letter-spacing: -0.01em;
}
.gm-moment-card__d {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.35;
  color: var(--muted, #6b645c);
}

/* Option A: quiet micro CTAs under section content (HEAD law: desk center · mobile left) */
.gm-micro-cta {
  margin: 0.85rem auto 0;
  max-width: var(--measure, 40rem);
  text-align: center;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--muted, #6b645c);
  opacity: 0.9;
}
/* Quieter strip above #founding (ritual close) — secondary, not competing with VIP */
.gm-micro-cta--quiet {
  margin-top: 0.65rem;
  font-size: 0.75rem;
  opacity: 0.62;
  letter-spacing: 0.01em;
}
.gm-micro-cta--quiet a,
.gm-micro-cta--quiet .gm-micro-cta__btn {
  font-weight: 450;
  text-decoration-color: rgba(107, 100, 92, 0.45);
}
.gm-micro-cta a,
.gm-micro-cta__btn {
  color: var(--muted, #6b645c);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 0.15em;
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  cursor: pointer;
}
.gm-micro-cta a:hover,
.gm-micro-cta__btn:hover {
  color: var(--ink, #181512);
}
.gm-micro-cta__sep {
  opacity: 0.55;
  color: var(--muted, #6b645c);
}
@media (max-width: 767px) {
  .gm-micro-cta {
    text-align: left;
    margin-inline: 0;
    padding-inline: 0;
  }
  .gm-micro-cta--center {
    text-align: center;
    margin-inline: auto;
  }
}
@media (min-width: 768px) {
  .gm-micro-cta {
    text-align: center;
    margin-inline: auto;
  }
}

/* Real-today: status badge rows */
.gm-status {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  border-radius: 1.25rem;
  overflow: hidden;
  background: var(--card, #fffcf7);
}
.gm-status__row {
  display: grid;
  grid-template-columns: 4.5rem 1fr;
  gap: 0.75rem;
  align-items: start;
  padding: 0.95rem 1rem;
  border-bottom: 1px solid var(--line, rgba(24, 21, 18, 0.1));
}
.gm-status__row:last-child {
  border-bottom: 0;
}
.gm-status__tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 1.4rem;
  padding: 0.2rem 0.4rem;
  border-radius: 0.35rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
}
.gm-status__tag--live {
  background: rgba(36, 48, 41, 0.1);
  color: var(--green, #243029);
}
.gm-status__tag--build {
  background: rgba(196, 165, 116, 0.22);
  color: #6b5330;
}
.gm-status__tag--next {
  background: rgba(24, 21, 18, 0.06);
  color: var(--muted, #6b645c);
}
.gm-status__t {
  margin: 0 0 0.2rem;
  font-size: 0.9375rem;
  font-weight: 650;
  color: var(--ink, #181512);
  line-height: 1.3;
}
.gm-status__d {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--muted, #6b645c);
}

/* Section heads in these zones: less lede air */
#method .section-head,
#moments .section-head,
#real-today .section-head,
#breath .section-head {
  margin-bottom: 1rem;
}
#method .section-head .lede,
#moments .section-head .lede {
  display: none;
}

/* —— Campaign progress (v1.2) —— */
.gm-progress {
  margin: 0 0 1rem;
}
.gm-progress__label {
  display: flex;
  justify-content: space-between;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted, #6b645c);
  margin-bottom: 0.4rem;
}
.gm-progress__track {
  height: 0.375rem;
  border-radius: 999px;
  background: rgba(36, 48, 41, 0.08);
  overflow: hidden;
}
.gm-progress__fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #243029, #c4a574);
}

/* Status rows denser */
.gm-status__row {
  padding: 0.75rem 0.9rem;
}
.gm-status__d {
  font-size: 0.78rem;
}

/* —— Breath compact: kill demo wall —— */
@media (max-width: 767px) {
  #breath.gm-breath-compact .section-head .lede {
    display: none;
  }
  /* 4-mode grid + fine print = the “demo wall”; keep ring + primary CTA only */
  #breath.gm-breath-compact .gm-breath__modes,
  #breath.gm-breath-compact .gm-breath__fine {
    display: none;
  }
  #breath.gm-breath-compact .gm-breath__stage {
    height: 15.5rem;
    min-height: 15.5rem;
    max-height: none;
  }
  #breath.gm-breath-compact .gm-breath__panel {
    padding: 0.85rem 1rem 1rem;
    gap: 0.55rem;
  }
  #breath.gm-breath-compact .gm-breath__need {
    font-size: 0.85rem;
  }
  #breath.gm-breath-compact .breath-mount {
    margin-top: 0.75rem;
  }
}

/* Sticky: softer chrome, less “压死正文” */
@media (max-width: 767px) {
  #stickyCta .sticky-inner {
    box-shadow: 0 -4px 16px rgba(24, 21, 18, 0.06);
  }
  #stickyCta.is-show {
    /* slightly translucent so content still reads underneath */
    background: color-mix(in srgb, var(--paper, #faf7f1) 92%, transparent);
  }
  /* Extra bottom pad so last lines clear sticky */
  #system,
  #moments,
  #kit,
  #founder,
  #ritual,
  #worlds {
    padding-bottom: calc(var(--section-pad-m, 40px) + 0.5rem);
  }
}

/* ═══════════════════════════════════════════
   Sprint B/C — ritual rail + worlds full-bleed cards
   ═══════════════════════════════════════════ */

.gm-rail {
  display: flex;
  gap: 0.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  padding: 0.25rem 0 0.75rem;
  margin: 0;
  scrollbar-width: none;
}
.gm-rail::-webkit-scrollbar {
  display: none;
}
/* Ritual rail lives inside max-w-6xl.px-4 — no extra pad (same left edge as section-head) */
#ritual .gm-rail {
  margin-inline: 0;
  padding-inline: 0;
}
/* Moments: full-bleed sibling outside container */
#moments .gm-rail--moments {
  margin-inline: 0;
  padding-inline: var(--container-pad-m, 1.25rem);
}
/* Worlds rail lives in the same max-w-6xl as the title — same as #ritual */
#worlds .gm-rail.gm-rail--worlds {
  margin-inline: 0;
  padding-inline: 0;
}
@media (min-width: 768px) {
  #moments .gm-rail--moments {
    padding-inline: max(var(--container-pad-d, 2rem), calc((100% - var(--container-max, 1120px)) / 2 + var(--container-pad-d, 2rem)));
  }
}
.gm-rail__item {
  flex: 0 0 min(78vw, 17.5rem);
  scroll-snap-align: start;
  min-width: 0;
}
/* ~2.5 cards visible on 390 (was ~1.5 with 82vw) — higher specificity beats .gm-rail__item */
.gm-rail--worlds .gm-rail__item,
#worlds .gm-rail--worlds .gm-rail__item {
  flex: 0 0 min(38vw, 9.75rem);
  width: min(38vw, 9.75rem);
  max-width: min(38vw, 9.75rem);
  min-width: 0;
}
#worlds .gm-rail.gm-rail--worlds {
  gap: 0.55rem;
}
.gm-rail--moments .gm-rail__item {
  flex: 0 0 min(72vw, 17rem);
}

/* Ritual step cards */
.gm-step {
  display: flex;
  flex-direction: column;
  background: var(--card, #fffcf7);
  border: 1px solid var(--line, rgba(24, 21, 18, 0.1));
  border-radius: 1.15rem;
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(24, 21, 18, 0.04), 0 8px 24px rgba(24, 21, 18, 0.06);
}
.gm-step__media {
  aspect-ratio: 4 / 3;
  background: var(--paper-2, #f3ede3);
  overflow: hidden;
}
.gm-step__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.gm-step__media--soft {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(160deg, #ebe3d6, #f3ede3);
}
.gm-step__glyph {
  font-size: 2rem;
  letter-spacing: 0.2em;
  color: var(--muted, #6b645c);
  opacity: 0.55;
}
.gm-step__body {
  padding: 1rem 1.05rem 1.15rem;
}
.gm-step__num {
  margin: 0 0 0.35rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #c4a574;
}
.gm-step__title {
  margin: 0 0 0.35rem;
  font-family: var(--font-display, "Newsreader", Georgia, serif);
  font-size: 1.2rem;
  font-weight: 450;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--ink, #181512);
}
.gm-step__text {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--muted, #6b645c);
}

/* Worlds: full-bleed media cards (override .world-card list styles) */
#worlds .gm-world.world-card {
  display: block;
  position: relative;
  grid-template-columns: none;
  gap: 0;
  padding: 0;
  border: 0;
  border-radius: 1.15rem;
  overflow: hidden;
  aspect-ratio: 3 / 4;
  background: #1a1814;
  pointer-events: auto;
  box-shadow: 0 8px 28px rgba(24, 21, 18, 0.14);
}
#worlds .gm-world.world-card:first-child {
  border-top: 0;
}
#worlds .gm-world .world-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-height: none;
  border-radius: 0;
  object-fit: cover;
}
#worlds .gm-world__veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 35%, rgba(18, 16, 14, 0.82) 100%);
  pointer-events: none;
}
#worlds .gm-world__meta {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 1.1rem 1rem 1.15rem;
  z-index: 1;
}
#worlds .gm-world .world-card__name,
#worlds .gm-world__name {
  margin: 0 0 0.25rem;
  color: #faf7f1;
  font-size: 1.15rem;
  line-height: 1.2;
}
#worlds .gm-world .world-card__mood,
#worlds .gm-world__hook {
  margin: 0;
  color: rgba(250, 247, 241, 0.78);
  font-size: 0.8125rem;
}
#worlds .gm-world .world-card__badge {
  color: #e8d5a8;
}

/* Peak/valley residuals removed: surfaces owned by .band / plain section rules above */

/* Lede swap: mobile swipe / desktop no-swipe */
.gm-lede-desk { display: none; }
@media (min-width: 768px) {
  .gm-lede-mobile { display: none; }
  .gm-lede-desk { display: inline; }
}

/* Desktop: ritual = 3 equal cards in content width (not 16rem nubs + empty void) */
@media (min-width: 768px) {
  #ritual .gm-rail {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.25rem;
    overflow: visible;
    scroll-snap-type: none;
    /* parent .mx-auto.max-w-6xl.px-4 owns gutters — no double pad */
    padding-inline: 0;
    max-width: none;
    width: 100%;
  }
  #ritual .gm-rail__item {
    flex: none;
    width: auto;
    min-width: 0;
  }
  #ritual .gm-step {
    height: 100%;
  }
  /* HEAD desktop center (VISUAL_CONSTITUTION) — not left-rail pad kill */
  #ritual .section-head {
    max-width: min(40rem, 100%);
    margin-inline: auto;
    padding-inline: 0;
    text-align: center;
  }
  /* Ritual rail CONTENT: full content width, left-aligned cards; same gutter as container */
  #ritual .gm-rail {
    margin-inline: 0;
    text-align: left;
  }

  /* Worlds: 5 equal columns in the title container (same pattern as #ritual). */
  #worlds .gm-rail.gm-rail--worlds {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 1.25rem;
    overflow: visible;
    scroll-snap-type: none;
  }
  #worlds .gm-rail--worlds .gm-rail__item {
    width: auto;
    max-width: none;
    min-width: 0;
  }

  /* Moments: desktop also horizontal scroll (not 3-col grid like #ritual) */
  #moments .gm-rail--moments {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    padding-inline: max(var(--container-pad-d, 2rem), calc((100% - var(--container-max, 1120px)) / 2 + var(--container-pad-d, 2rem)));
    gap: 1rem;
  }
  #moments .gm-rail--moments .gm-rail__item,
  #moments .gm-moment-card {
    flex: 0 0 min(20rem, 28vw); /* ~1280: larger cards, still scroll */
    max-width: 20rem;
  }

  /* VIP CONTENT: under centered HEAD → card group centered; card body text stays left.
     (Hard-left VIP under center title left a huge empty right rail — visual defect.) */
  #founding .mx-auto {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  #founding .section-head {
    width: 100%;
    max-width: min(40rem, 100%);
    margin-inline: auto;
    text-align: center;
  }
  #founding .tier-featured.how-dollar,
  #founding #how-dollar {
    width: 100%;
    max-width: 28rem;
    margin-inline: auto;
    text-align: left;
  }
  #founding .tier-featured__head {
    justify-content: space-between;
  }
  #founding .tier-price {
    font-size: 2.25rem;
  }

  /* Density: CONTENT bodies under centered HEAD — group center (max-width),
     glyphs/rows inside stay left. Not full-bleed islands, not hard-left float. */
  #method .gm-dual,
  #real-today .gm-progress,
  #real-today .gm-status,
  #compare .compare-list,
  #kit .kit-card,
  #kit .kit-lines {
    width: 100%;
    max-width: 42rem;
    margin-inline: auto;
    text-align: left;
  }
  #kit .kit-card {
    max-width: 38rem;
  }
  /* HEAD: center measure (not 42rem left substitute) */
  #method .section-head,
  #moments .section-head,
  #real-today .section-head,
  #compare .section-head,
  #kit .section-head,
  #breath .section-head,
  #sample .section-head,
  #system .section-head {
    max-width: min(40rem, 100%);
    margin-inline: auto;
    text-align: center;
  }
  #method .gm-dual {
    max-width: 42rem;
  }
  /* Disclaimer: full-width of section container, centered under dual (not dual measure) */
  #method .method-disclaimer {
    width: 100%;
    max-width: none;
    margin-top: 0.75rem;
    text-align: center;
  }
  /* Tighter section pad on mid-page text blocks */
  #method.section-y,
  #moments.section-y,
  #real-today.section-y,
  #compare.section-y,
  #kit.section-y {
    padding-block: clamp(1.75rem, 4vw, 2.5rem);
  }
  /* Compare: keep roomy soft-card rhythm (not compact slabs) */
  #compare .compare-list {
    gap: 0.85rem;
  }
  #compare .compare-list .row {
    padding: 1.05rem 1.15rem 1.05rem 2.85rem;
  }
  #compare .compare-list .row--gm {
    padding: 1.3rem 1.35rem 1.35rem 3rem;
  }
  #kit .kit-card {
    margin-top: 1rem;
    max-width: min(40rem, 100%);
    padding: 1.1rem 1.4rem 1.15rem;
  }
}



@media (min-width: 1024px) {
  #ritual .gm-rail {
    gap: 1.5rem;
  }
  #founding .tier-featured.how-dollar,
  #founding #how-dollar {
    max-width: 30rem;
  }
}


/* ===== eng-overrides.css ===== */
/**
 * eng-overrides · LAST in linen bundle (build-linen-bundle.mjs).
 * Visual sprint 2026-08-06 — residual paint after module fixes.
 * Prefer modules first; this file only wins cascade wars.
 * VISUAL_CONSTITUTION: must NOT re-left section-heads on desktop.
 */

/* ivory @layer base: body { background-image: radial-gradient… } */
body,
body.paper {
  background: var(--paper);
  background-image: none;
  color: var(--ink);
}

/* Equal-height sample cards: form | audio (desktop) */
.sample-form-card {
  height: 100%;
  min-height: 100%;
  min-width: 0;
  overflow: visible;
}
/* Hard lock: sample dual-card form is column forever (desktop regression guard) */
@media (min-width: 768px) {
  #sample .sample-form-card__stack,
  #sample .gm-email-row.sample-form-card__stack {
    flex-direction: column;
    align-items: stretch;
  }
  #sample .sample-form-card__stack button[type="submit"],
  #sample .gm-email-row.sample-form-card__stack button[type="submit"] {
    width: 100%;
    max-width: 100%;
  }
  #sample .sample-core {
    align-items: stretch;
  }
}

/* ── Form controls: never collapse below --control-h ── */
html body .gm-email-row input[type="email"],
html body form.signup input[type="email"],
html body #cta input[type="email"] {
  height: var(--control-h);
  min-height: var(--control-h);
  max-height: none;
  box-sizing: border-box;
  font-size: 16px;
}
.gm-email-row button[type="submit"],
form.signup button[type="submit"] {
  height: var(--control-h);
  min-height: var(--control-h);
  box-sizing: border-box;
}

/* ── Hero: top alignment + CTA wrap ── */
@media (min-width: 1024px) {
  .hero-grid--linen .hero-intro {
    align-self: start;
  }
  .hero-grid--linen .hero-join {
    align-self: start;
  }
}
a.hero-continue.btn-solid-pill,
a.hero-continue,
.btn-solid-pill {
  overflow-wrap: anywhere;
}
a.hero-continue.btn-solid-pill {
  white-space: normal;
  line-height: 1.25;
  height: auto;
  min-height: 52px;
}

/* ── Body contrast (override any leftover opacity on prose) ── */
body :where(p, li, .lede, .gm-email-hint, .sample-form-card__lead) {
  color: var(--body);
  opacity: 1;
}
.muted,
.subtle,
.text-muted,
.worlds-head__side,
.hero-continue-hint {
  color: var(--muted);
  opacity: 1;
}

/* ── Founding primary CTA full width of card ── */
.founding-card--free .gm-email-row button[type="submit"],
.founding-card .gm-email-row button[type="submit"],
#founding .btn-solid-pill.founding-primary,
#founding form.signup button[type="submit"] {
  width: 100%;
  max-width: none;
}

/* ── Measure: long ledes (not method footnote) ── */
.section-head p,
.band .lede,
#system p.lede,
#method p:not(.method-disclaimer) {
  max-width: min(100%, var(--measure, 40rem));
}

/* Method disclaimer: full-width centered footnote under dual (all breakpoints) */
#method .method-disclaimer {
  display: block;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  text-align: center;
}

/* Moments: native .gm-rail scroll-snap only — never re-grid / never chips layout.
   Card flex-basis widths live in mobile-pulse (390 peek / 1280 larger) — do not zero them here.
   Do NOT set display:flex here unconditionally: mobile uses dual-row marquee and hides
   .gm-rail--moments-desk; a late display:flex would resurrect the desk rail under marquee. */
#moments .gm-chips,
#moments .moment-grid {
  display: none;
}
#moments .gm-rail--moments {
  flex-direction: row;
  flex-wrap: nowrap;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
@media (max-width: 767px) {
  /* Win over any residual rail display:flex — marquee is the mobile surface */
  #moments .gm-rail.gm-rail--moments.gm-rail--moments-desk {
    display: none;
  }
}
@media (min-width: 768px) {
  #moments .gm-rail--moments {
    display: flex;
  }
}

/* ── Footer: denser; body owns sticky clearance (no sticky-h here) ── */
.site-footer {
  padding-top: var(--space-6);
  padding-bottom: 1.25rem;
  border-top: 1px solid var(--line);
  background: var(--paper-2);
}
@media (min-width: 768px) {
  .site-footer {
    padding-bottom: 2rem;
  }
}
.site-footer__inner {
  display: grid;
  gap: var(--space-4);
}
@media (min-width: 768px) {
  /* brand | .site-footer__links | copy spans */
  .site-footer__inner {
    grid-template-columns: 1.2fr 1fr;
    align-items: start;
  }
  .site-footer__copy {
    grid-column: 1 / -1;
  }
}
.site-footer__tag {
  margin: 0 0 var(--space-2);
  font-size: var(--fs-small);
  line-height: var(--lh-small);
  color: var(--body);
  max-width: 36ch;
}
.site-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
}
.site-footer__nav a {
  font-size: var(--fs-small);
  color: var(--body);
  text-decoration: none;
}
.site-footer__nav a:hover {
  color: var(--ink);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.site-footer__copy {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}

/* ── Breath: kill decorative rings covering canvas ── */
html body .gm-breath__stage::before,
html body .gm-breath__stage::after {
  content: none;
  display: none;
}

/* ── Flow / hold: usable viewport for free_success ── */
html.gm-flow-open .gm-flow-sheet,
.gm-flow-panel,
#gmFlowBody {
  max-height: min(72vh, 480px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
@media (min-width: 768px) {
  html.gm-flow-open .gm-flow-sheet,
  .gm-flow-panel {
    max-height: min(80vh, 560px);
  }
}

/* ── Section rhythm: slightly tighter than 110px monotony on mobile ── */
@media (max-width: 639px) {
  .section-y {
    padding-block: clamp(48px, 12vw, 64px);
  }
}

/* ── Sticky CTA text wrap ── */
#stickyPrimary,
.sticky-cta-btn {
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.2;
  height: auto;
  min-height: 44px;
  padding-block: 0.55rem;
}

/* ── VISUAL_CONSTITUTION last paint ──
   Desktop HEAD center wins cascade; --left stays exception.
   Glyphs center (text-align) + measure auto — not block-only.
   Sample form column lock + control-h stay above. No re-left heads. */
@media (min-width: 768px) {
  .section-head:not(.section-head--left),
  .section-head--center,
  #system .section-head,
  #sample .section-head,
  #ritual .section-head,
  #founding .section-head,
  #breath .section-head,
  #method .section-head,
  #moments .section-head,
  #real-today .section-head,
  #compare .section-head,
  #kit .section-head,
  #worlds .section-head,
  #founder .section-head,
  #faq .section-head,
  .worlds-head {
    text-align: center;
    margin-inline: auto;
    max-width: min(40rem, 100%);
  }
  .section-head:not(.section-head--left) .display-title,
  .section-head:not(.section-head--left) .lede,
  .section-head:not(.section-head--left) .gm-act,
  .section-head:not(.section-head--left) .eyebrow,
  .section-head--center .display-title,
  .section-head--center .lede,
  .section-head--center .gm-act,
  .section-head--center .eyebrow,
  .worlds-head__side,
  #cta .cta-final__copy,
  #cta .cta-final__copy .eyebrow,
  #cta .cta-final__title,
  #cta .cta-final__sub,
  #cta.cta-dark .eyebrow,
  #cta.cta-dark .cta-final__title,
  #cta.cta-dark .cta-final__sub {
    text-align: center;
    margin-inline: auto;
  }
  .section-head--left,
  .section-head--left .display-title,
  .section-head--left .lede,
  .section-head--left .gm-act,
  .section-head--left .eyebrow {
    text-align: left;
    margin-inline: 0;
    max-width: none;
  }
  /* CONTENT: text left always. Under centered HEAD, measured blocks center as a group
     (margin-inline:auto) so VIP/dual/list don't float left with a dead right rail. */
  #cta .form-area,
  #cta .gm-email-row,
  #cta .cta-final__actions,
  #worlds .world-card__name,
  #worlds .world-card__mood {
    text-align: left;
    margin-inline: 0;
  }
  #method .gm-dual,
  #real-today .gm-progress,
  #real-today .gm-status,
  #compare .compare-list,
  #kit .kit-card,
  #kit .kit-lines,
  #founding .how-dollar,
  #founding #how-dollar,
  #founding .tier-featured,
  .faq-layout__list,
  .faq-list {
    text-align: left;
    margin-inline: auto;
  }
  /* Disclaimer stays full-width footnote (not dual measure left). Reinforced above. */
  #method .method-disclaimer {
    width: 100%;
    max-width: none;
    text-align: center;
    margin-inline: 0;
  }
  /* Desktop: still horizontal rail (do not copy #ritual 3-col grid) */
  #moments .gm-rail--moments {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
  /* Peak/valley: only .band → paper-2. Do not hardcode consecutive section paper-2 here. */
}

