/* ===================================================================
   LS-LABS PALETTE — single source of truth for every geocheck surface
   Mirrors home/assets/css/tokens.css in the ls-labs repo.

   Why this file exists
   --------------------
   The palette used to be redeclared inside each page's <style>, under a
   different name every time: --teal, --teal-dark, --gc-mint, --gc-blue-primary
   and --color-blue all held the same #3B82F6. Names that describe a hue the
   value no longer has stop being read, and the copy that nobody reads is the
   one that drifts — pricing.html sat on a real teal (#10B29A) for months
   because "--teal: #10B29A" looked correct.

   So: values live here once, and every name below says what the value is FOR,
   not what colour it looks like.

   Contrast
   --------
   Ratios are WCAG 2.1 relative luminance, measured on 2026-09-13, not
   estimated. Text needs 4.5:1 (3:1 at >=24px, or >=18.7px bold).
   #3B82F6 is the trap: it is a fine surface and a fine text colour on a dark
   ground, but as text on white it is 3.68:1 and under white text it is also
   3.68:1. Both fail. That is what -on-light exists for.
   =================================================================== */

:root {
  /* --- Brand grounds --- */
  --ls-navy: #0B1F3B;
  --ls-navy-deep: #060E1C;
  --ls-navy-surface: #0E1A2F;
  --ls-void: #070B14;

  /* --- Accent, by role ---
     -surface   fill, border, icon; text on a dark ground (5.35:1 on --ls-void)
     -on-light  text on white or a light tint, and any fill that carries white
                text (white on it = 6.70:1)
     -on-light-strong  the hover/pressed step for those fills (8.72:1)
     -on-dark   text on a dark ground when -surface reads too quiet (7.74:1) */
  --ls-accent-surface: #3B82F6;
  --ls-accent-on-light: #1D4ED8;
  --ls-accent-on-light-strong: #1E40AF;
  --ls-accent-on-dark: #60A5FA;
  --ls-accent-tint: #EFF6FF;

  /* --- Status. Green is a status, never an action: the accent carries every
         interaction. The bare value is the dark-ground text and the fill;
         -on-light is the text colour for a badge on its own pale tint, where
         the bare value lands at 1.97-3.44:1. --- */
  --ls-success: #10B981;
  --ls-success-on-light: #047857;   /* on --ls-success-tint = 5.21:1 */
  --ls-success-tint: #ECFDF5;
  --ls-warning: #F59E0B;
  --ls-warning-on-light: #B45309;   /* on --ls-warning-tint = 4.61:1 */
  --ls-warning-tint: #FFF4E0;
  --ls-danger: #EF4444;
  --ls-danger-on-light: #B91C1C;    /* on --ls-danger-tint = 5.91:1 */
  --ls-danger-tint: #FEF2F2;
  --ls-unknown: #64748B;
  --ls-unknown-on-light: #475569;   /* on --ls-unknown-tint = 6.92:1 */
  --ls-unknown-tint: #F1F5F9;

  /* --- Engine series. Four distinguishable hues; a migration must not
         collapse them into one brand blue or the charts stop separating
         engines. Identity, not decoration. --- */
  --ls-engine-openai: #10A37F;
  --ls-engine-gemini: #4285F4;
  --ls-engine-anthropic: #CC785C;
  --ls-engine-perplexity: #22B8CD;

  /* --- Neutrals. Ratios on white / on --ls-void. --- */
  --ls-ink: #1E293B;          /* 14.63:1 on white */
  --ls-ink-muted: #475569;    /*  7.58:1 on white — the muted text on light   */
  --ls-ink-faint: #64748B;    /*  4.76:1 on white — smallest still-AA on light,
                                  and 4.14:1 on --ls-void, i.e. NOT for dark   */
  --ls-on-dark: #F8FAFC;      /* 18.81:1 on --ls-void */
  --ls-on-dark-body: #CBD5E1; /* 13.26:1 */
  --ls-on-dark-muted: #94A3B8;/*  7.68:1 on --ls-void — the muted text on dark;
                                  2.56:1 on white, so never use it on light    */
  --ls-surface: #FFFFFF;
  --ls-surface-alt: #F8FAFC;
  --ls-line: #E2E8F0;
}
