/* Gridline brand tokens (Batch 15). Dark-first; the light block is for landing hero/marketing sections only — the app stays dark.
   Semantic names only: never reference a raw hex in a component. Contrast of every text/bg pair is asserted by tests/test_batch15.py. */
:root {
  --bg: #0B1220;
  --surface: #111A2B;
  --surface-raised: #182338;
  --border: #243247;
  --text: #E8EEF6;
  --text-muted: #9DAEC3;
  --brand: #31C48D;
  --brand-strong: #22A876;
  --brand-soft: rgba(49,196,141,0.14);
  --prob-strong: #31C48D;
  --prob-mid: #E0B44C;
  --prob-weak: #8A9BB2;
  --warn: #F0B54B;
  --danger: #F0665C;
  --non-bettable: #F0665C;
  --info: #5AA9F0;
  --provenance: #95A3B6;
  --chart-1: #31C48D;
  --chart-2: #56B4E9;
  --chart-3: #E69F00;
  --chart-4: #CC79A7;
  --chart-5: #F0E442;
  --chart-6: #D55E00;
  --font-display: "Space Grotesk", "Inter", system-ui, sans-serif;
  --font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --radius: 12px;
  --radius-sm: 8px;
  --shadow: 0 1px 0 rgba(255,255,255,0.03) inset, 0 8px 24px rgba(0,0,0,0.35);
}

[data-theme="light"], .theme-light {
  --bg: #F6F8FB;
  --surface: #FFFFFF;
  --surface-raised: #EEF2F7;
  --border: #D5DDE8;
  --text: #0B1220;
  --text-muted: #4A5A70;
  --brand: #157A55;
  --brand-strong: #0F5F42;
  --brand-soft: rgba(21,122,85,0.12);
  --prob-strong: #157A55;
  --prob-mid: #8A5A00;
  --prob-weak: #5D6C82;
  --warn: #8A5A00;
  --danger: #B3261E;
  --non-bettable: #B3261E;
  --info: #0B5CAD;
  --provenance: #5D6C82;
  --chart-1: #157A55;
  --chart-2: #0072B2;
  --chart-3: #B36B00;
  --chart-4: #A0456F;
  --chart-5: #7A6A00;
  --chart-6: #B24700;
}

/* numerals: EVERY number in the product is tabular mono */
.num, .gl-num, td.num, [data-num] { font-family: var(--font-mono); font-variant-numeric: tabular-nums lining-nums; font-feature-settings: "tnum" 1, "lnum" 1; letter-spacing: 0; }
h1, h2, h3, .display { font-family: var(--font-display); }
h1 { font-size: 40px; line-height: 44px; font-weight: 700; letter-spacing: -0.02em; }
h2 { font-size: 28px; line-height: 34px; font-weight: 700; letter-spacing: -0.015em; }
h3 { font-size: 22px; line-height: 28px; font-weight: 600; letter-spacing: -0.01em; }
body, .body { font-family: var(--font-body); font-size: 16px; line-height: 24px; color: var(--text); background: var(--bg); }
.small { font-size: 14px; line-height: 20px; }
.caption { font-size: 12px; line-height: 16px; font-weight: 500; letter-spacing: 0.02em; color: var(--text-muted); }
.label { font-size: 11px; line-height: 14px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.chip { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; letter-spacing: 0.02em; border: 1px solid var(--border); }
.chip-measured { color: var(--brand); border-color: var(--brand); } .chip-derived { color: var(--info); border-color: var(--info); }
.chip-unavailable { color: var(--provenance); border-color: var(--provenance); } .chip-nonbettable { color: var(--non-bettable); border-color: var(--non-bettable); }
.prob-strong { color: var(--prob-strong); } .prob-mid { color: var(--prob-mid); } .prob-weak { color: var(--prob-weak); }
