/* Grainpress — Design tokens. Locked values from Blueprint. Do not edit without Blueprint update. */
:root {
  /* Color — light mode */
  --gp-bg: #f9f7f4;
  --gp-panel: #e6e3df;
  --gp-text: #1a1816;
  --gp-text-muted: #6b7057;
  --gp-rule: #6b7057;
  --gp-accent: #6b7057;
  --gp-zones: #c4a661;

  /* Color — dark mode */
  --gp-dark-bg: #0f0e0d;
  --gp-dark-panel: #2a2826;
  --gp-dark-text: #e8e6e3;
  --gp-dark-text-muted: #8a9177;
  --gp-dark-rule: #2a2826;
  --gp-dark-accent: #8a9177;
  --gp-dark-zones: #d4b978;

  /* Typography families */
  --font-display: "Archivo Narrow", sans-serif;
  --font-body: "Newsreader", serif;
  --font-mono: "IBM Plex Mono", monospace;

  /* Typography scale — EXPERIMENT (wide-canvas/type-scale branch).
     Reader-facing body is 22px Newsreader on every viewport family; there is
     no mobile step-down. Line-height comes down with the size increase so the
     larger type keeps a calm editorial rhythm instead of turning loose. */
  --article-body-size: 22px;
  --article-body-line: 1.6;
  --body-standard-size: 22px;
  --body-standard-line: 1.55;

  /* Layout — locked 1440/1200 grid (Ghost Theme Build Blueprint) */
  --site-width: 1440px;
  --page-margin: 120px;
  --container: 1200px;     /* 1440 − 2×120 */
  --grid-columns: 12;
  --content-gutter: 24px;  /* structural 12-column grid gutter */
  --column-width: 78px;    /* (1200 − 11×24) ÷ 12 */

  /* Layout — implementation additions (accepted at Phase 2) */
  --header-height: 128px;
  --footer-height: 420px;

  /* Reading measure — the shared masthead axis.

     CORRECTION PASS: the independent measure this replaces decoupled the
     article from the rest of the site. Every masthead centres a 790px block —
     .issue-hero__inner, .section-hero__inner and .podcast-intro__inner, with
     Member Work and Zones deriving their anchors from the same figure — so a
     narrower article column opened its kicker, title and prose to the right of
     every other page: 61px at 1440, 49px at 1600, 35px at 1920. An inset that
     drifts with the viewport cannot be read as deliberate, and the jump was
     visible moving between an article and any other destination.

     790px is also, to within a pixel, the article's own 8-of-12 grid
     allocation (8 x 78 + 7 x 24 = 792) — the column the pull quote was
     originally hand-fitted to at 793px. So the measure is the grid again
     rather than a second system running beside it, and it is flat because the
     masthead is flat: the two cannot drift apart at any width.

     Sizes are measured, not assumed — rendered Newsreader averages 0.436em per
     character, so this is ~82 characters at the 22px body, against ~70–75 for
     the 668–720px measure it replaces. That is the line length the alignment
     costs, and it is the width the rest of the site already reads at. */
  --reading-measure: 790px;
  --reading-width: var(--reading-measure);
  --wide-reading-width: 840px;
  --media-width: 1120px;

  /* Spacing scale */
  --space-0: 0;
  --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: 80px;
  --space-10: 96px;
  --space-11: 128px;
}
