/* AUTO-GENERATED from brand.json — DO NOT EDIT BY HAND.
 * Source: brand.json (version=v2, updated=2026-06-15)
 * Regenerate via: node scripts/generate_brand_css.js
 * Wired into Express boot (src/index.js) — runs at every cold start.
 */

:root {
  /* fonts (load Google Fonts via the link below in <head> of every
     HTML page; var(--font-googleFontsUrl) carries the URL for any
     stylesheet that wants to @import). */
  --font-display: DM Serif Display, Georgia, serif;
  --font-body: Plus Jakarta Sans, system-ui, sans-serif;
  --font-mono: JetBrains Mono, ui-monospace, monospace;
  --font-google-fonts-url: https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&display=swap;
  --font-doc-serif: Source Serif 4, Georgia, serif;
  --font-doc-sans: Inter, system-ui, sans-serif;
  --font-doc-google-fonts-url: https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Source+Serif+4:ital,wght@0,400;0,600;0,700;1,400;1,600&display=swap;
  --font-_doc-comment: Client-document set (Jake 2026-06-12: all client PDFs match the original WhoIsGrantLedger.pdf design - Inter headings, Source Serif 4 body). Consumed by scripts/build_client_asset_pdfs.py and future client-PDF renderers.;

  /* primary palette (camelCase JSON -> kebab-case CSS). */
  --navy: #1a3d2e;
  --dark: #0d1f17;
  --blue: #2d5a47;
  --blue-hover: #1a3d2e;
  --sky: #94d4b8;
  --sky-light: #e8f5ef;
  --gray50: #f8fafc;
  --gray100: #f1f5f9;
  --gray200: #e2e8f0;
  --gray300: #cbd5e1;
  --gray400: #94a3b8;
  --gray500: #64748b;
  --gray600: #475569;
  --gray700: #334155;
  --green-gl: #1e3a2f;
  --white: #ffffff;
  --red-strike: #dc2626;
  --amber: #f59e0b;
  --amber-light: #fffbeb;
  --amber-border: #fde68a;
  --orange: #ea580c;
  --orange-light: #fff7ed;
  --orange-border: #fed7aa;
  --green: #16a34a;
  --green-hover: #15803d;
  --ds-paper: #fffdf7;
  --ds-paper-deep: #f7f3e8;
  --ds-ink: #14241c;
  --ds-ink-soft: #3b4f44;
  --ds-ink-faint: #66776c;
  --ds-accent: #16301f;
  --ds-accent-deep: #0e2114;
  --ds-accent-light: #8fc7a5;
  --ds-wash: #e2efe6;
  --ds-rule: #d4dacc;
  --ds-rule-soft: #e3e8dd;

  /* semantic aliases — components consume these, not raw colors. */
  --bg: #ffffff;
  --fg: #1a3d2e;
  --fg-muted: #475569;
  --fg-subtle: #64748b;
  --accent: #2d5a47;
  --accent-hover: #1a3d2e;
  --accent-bg: #e8f5ef;
  --highlight: #e8f5ef;
  --section-bg: #e8f5ef;
  --strikethrough: #dc2626;
  --card-bg: #f8fafc;
  --card-border: #cbd5e1;
  --border: #cbd5e1;
  --logo: #1a3d2e;

  /* legacy v1 shim — keeps pre-v2 code paths rendering during the migration. */
  --forest900: #0d1f17;
  --forest800: #1a3d2e;
  --forest700: #2d5a47;
  --forest600: #3d7a5f;
  --forest500: #4d9a77;
  --forest400: #6bb896;
  --forest300: #94d4b8;
  --forest200: #c2e8d8;
  --forest100: #e8f5ef;
  --gold600: #2d5a47;
  --gold500: #4d9a77;
  --gold400: #8fc7a5;
  --gold300: #c2e8d8;
  --paper: #faf8f5;
  --paper-dark: #f1efe9;
  --ink900: #1a1a18;
  --ink800: #2d2d2a;
  --ink700: #404040;
  --ink600: #525250;
  --ink500: #6b6b68;
  --ink400: #8a8a86;
  --ink300: #b3b3ae;
  --ink200: #d4d4cf;
  --ink100: #e8e8e4;
  --neutral700: #404040;
  --neutral500: #6b6b68;
  --neutral300: #b3b3ae;
}

/* Default body font — every page that links brand-tokens.css gets this
   automatically without each stylesheet repeating font-family. */
body {
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4 { font-family: var(--font-headline); }
code, pre, kbd, samp { font-family: var(--font-mono); }
