/* ============================================================================
   GreenReach marketing design tokens — THE single definition.
   ----------------------------------------------------------------------------
   Every public-light marketing surface takes its colours from here. Nothing in
   this file is layout: it is tokens only, so a page can adopt the palette
   WITHOUT inheriting the component rules in community.css (whose
   `body { padding-top:56px }` assumes the injected .site-nav and opens a gap on
   a page that has its own header).

   WHY IT EXISTS: the token block used to be copy-pasted inline into each
   marketing page. Six copies drifted — about.html never took one at all and
   grew a private emerald palette (#10b981), and privacy.html inherited that by
   being copied from it, adding a third green. Three greens on one site.
   HARD RULE 0ad U2 forbids a private palette; HARD RULE 0z says fix the class
   by extracting the primitive rather than patching the instance.

   HOW A PAGE USES IT:
     <link rel="stylesheet" href="/styles/marketing-tokens.css">   <-- FIRST
     <style> ... page layout only, referencing var(--*) ... </style>
   The link goes BEFORE the page's inline <style> so page rules win ties.

   DO NOT re-declare these values in a page. Add a token here instead.
   community.css @imports this file, so its 25 consumers are unaffected.
============================================================================ 
   ── U12 contrast roles (HARD RULE 0ad) ────────────────────────────────────
   Roles are declared here rather than inferred from names, because a name-based
   rule invents pairs that never render together and misses text that is called
   something else. Ratios computed with scripts/audit/lib/wcag-contrast.mjs, not
   by eye (control: #000 on #fff = 21.00):

     --text         on --bg 16.28:1   on --surface 16.83:1
     --text-light   on --bg  5.66:1   on --surface  5.85:1
     --primary      on --bg  8.95:1   on --surface  9.25:1
     --primary-dark on --bg 12.16:1   on --surface 12.57:1

   --accent (2.07:1) and --accent-dark (2.86:1) are in NO role, deliberately.
   They are FILL colours — a dark label sits on them, they do not sit on a
   surface — and at those ratios neither could be text (4.5) or a glyph (3).
   That is not an assumption: of the 11 files that consume this token file,
   ZERO use `color: var(--accent)` or `color: var(--accent-dark)`. They appear
   only as background, border-color and fill. If a future page sets one as a
   text colour, it is a WCAG defect at 2.07:1 and the fix is a darker token,
   not a role change here.

   @le-contrast-profile public-light
   @base    --bg
   @surface --bg --surface
   @text    --text --text-light --primary --primary-dark
   @glyph
*/

:root {
  /* Canonical marketing tokens (identical values to purchase.html). */
  --primary: #2d5016;
  --primary-dark: #1f3a0f;
  --accent: #82c341;
  --accent-dark: #6aa634;
  --text: #1d1d1f;
  --text-light: #5c6670;
  --bg: #fbfbfd;
  --surface: #ffffff;
  --surface-2: #f5f7f2;
  --border: #e6e6eb;

  /* Aliases — so pages authored with the old dark-theme variable names resolve
     to BRAND values the moment their inline dark :root override is removed. */
  --gr-bg: var(--bg);
  --gr-surface: var(--surface);
  --gr-surface-2: var(--surface-2);
  --gr-border: var(--border);
  --gr-text: var(--text);
  --gr-muted: var(--text-light);
  --gr-accent: var(--primary);
  --gr-accent-2: var(--accent);
  --green: var(--primary);
  --card: var(--surface);
  --bg2: var(--surface-2);
  --muted: var(--text-light);
  --accent2: var(--accent);
  /* Builder-console var names (TEA-394) — alias to brand tokens so the organizer
     console renders on-brand instead of falling back to UA defaults. */
  --bg-secondary: var(--surface-2);
  --text-primary: var(--text);
  --text-readable: var(--text);
  --text-secondary: var(--text-light);
  --accent-green: var(--accent);
}
