/* ══════════════════════════════════════════════════════════════════════
   TOKENS — the one place the palette and the text tiers are defined.

   They used to live in two copies: a :root in site.css and a second,
   identical one inline in index.html. index.html does not load site.css,
   so a token added to one was simply absent on the other — which is how
   the contact form's labels ended up inheriting the green panel's cream
   onto a white card and disappearing. One file, linked first everywhere.
   ────────────────────────────────────────────────────────────────────── */
:root {
  --deep:    #0E2A24;
  --deep2:   #123A31;
  --ink:     #10403B;
  --signal:  #C8F08F;
  --paper:   #F4EFE4;
  --daylight:#FBFAF7;
  --clay:    #D9744C;
  --air:     #8FBCC6;
  --midday:  #E8B93C;

  /* Text tiers, measured against --daylight #FBFAF7. These replace an
     opacity ladder on --ink that ran 0.42 to 0.60 and measured 2.3:1 to
     3.6:1 — every rung below 0.70 failed WCAG AA for body text. Five
     rungs collapse to three here because that is how many the contrast
     floor actually allows. */
  --text-primary:   #10403B;  /* 11.1:1 — headings and card titles */
  --text-secondary: #3D6660;  /*  6.2:1 — body copy, form labels */
  --text-muted:     #4D736D;  /*  5.0:1 — captions and meta */

  /* and on --deep, where the old 0.45 to 0.55 rungs measured 4.0 to 4.4:1 */
  --on-dark-primary:   #F4EFE4;  /* 13.3:1 on --deep */
  --on-dark-secondary: #C1C4BA;  /*  8.6:1 */
  --on-dark-muted:     #AFB4AA;  /*  7.2:1 */

  /* The tiers above are measured on the neutral grounds only. On --signal
     #C8F08F, --text-muted drops to 4.1:1 — under the floor. Text on lime
     takes --ink (9.0:1) or --deep (11.9:1); on --midday amber, the same
     two (6.3:1 and 8.3:1). */
}
