/* ── MakeWPCompliant design tokens ────────────────────────────────────────

   Civic palette: an institutional navy field, one signal blue for action, and
   a deep rust reserved for regulatory dates. One light theme; dark bands use
   the --on-ink-* ramp against --ink.

   ┌─────────────────────────────────────────────────────────────────────────┐
   │ THE RULE THAT SHAPES THIS FILE                                          │
   │                                                                         │
   │ No gradient, image, pseudo-element or translucent layer may sit behind   │
   │ text. Every text/background pair on this site resolves to two flat hex   │
   │ values.                                                                  │
   │                                                                         │
   │ This is not only a taste decision. axe reports "background could not be │
   │ determined" against gradients and pseudo-elements and files the result   │
   │ as *incomplete* — a finding no tool can decide and no gate counts. Real  │
   │ contrast failures hide in exactly that blind spot. Keeping every         │
   │ backdrop flat means our own audit has no manual-review queue and no      │
   │ blind spot, which for an accessibility remediation service is the point. │
   │                                                                         │
   │ Gradients are allowed where no text sits on them: the brand mark, the    │
   │ section rules, the deadline meter fill.                                  │
   └─────────────────────────────────────────────────────────────────────────┘

   Every ratio below was computed, not estimated. Re-run
   specs/…/scratchpad/contrast.py after changing any value.
   Bars: 4.5:1 body text, 3:1 large text and UI component boundaries.
   ───────────────────────────────────────────────────────────────────────── */

:root {
  color-scheme: light;

  /* ── Light surfaces ─────────────────────────────────────────────────── */
  --bg:          #ffffff;
  --bg-soft:     #f4f6fa;
  --surface:     #ffffff;
  --surface-2:   #eaeff6;

  /* Decorative separators. Not used as the boundary of any control, so the
     3:1 non-text bar does not apply to them — see --border-input below. */
  --border:        #d8e0ea;
  --border-strong: #b6c3d4;

  /* The visible boundary of a form control. WCAG 1.4.11 wants 3:1 against
     the adjacent surface, and the decorative borders above are nowhere near
     it: 4.27:1 on --bg, 3.94:1 on --bg-soft, 3.69:1 on --surface-2. */
  --border-input:  #6b7c92;

  /* ── Ink field: hero, dark bands, footer ────────────────────────────── */
  --ink:        #0c2340;
  --ink-2:      #123356;
  --ink-3:      #1b4470;
  --ink-border: #2c527f;

  /* ── Type on light ──────────────────────────────────────────────────── */
  --text:      #10192a;   /* 17.6:1 on --bg, 15.2:1 on --surface-2 */
  --text-soft: #2f3f57;   /* 10.7:1 on --bg,  9.2:1 on --surface-2 */
  --muted:     #546479;   /*  6.0:1 on --bg,  5.2:1 on --surface-2 */

  /* ── Type on ink ────────────────────────────────────────────────────── *
     Solid hex rather than rgba(): the flat-background rule applies to the
     foreground too, so nothing on this site needs compositing to evaluate. */
  --on-ink:      #eef2f8;   /* 14.1:1 on --ink,  8.9:1 on --ink-3 */
  --on-ink-soft: #cdd8e6;   /* 11.0:1 on --ink,  6.9:1 on --ink-3 */
  --on-ink-mute: #a8b8cd;   /*  7.8:1 on --ink,  4.9:1 on --ink-3 */

  /* ── Signal blue — action, links, focus ─────────────────────────────── */
  --accent:        #175fb0;   /* 6.4:1 on white, and white on it: 6.4:1 */
  --accent-deep:   #10457f;   /* 9.6:1 on white */
  --accent-soft:   #e8f0fa;
  --accent-line:   #a9c6e8;   /* decorative only */
  --accent-bright: #8fc2f5;   /* on ink only — 8.4:1 on --ink */

  --link:       #12558f;   /*  7.7:1 on --bg */
  --link-hover: #0d3c66;   /* 11.3:1 on --bg */

  /* ── Deep rust — regulatory dates and deadlines, nothing else ───────── *
     Warm enough to mark the date as consequential, dark enough that it never
     reads as an alarm banner. The deadlines supply their own urgency. */
  --alert:        #9a3412;   /* 7.3:1 on white, white on it: 7.3:1 */
  --alert-soft:   #fbf1ec;
  --alert-line:   #e6bda6;   /* decorative only */
  --alert-bright: #f6b98f;   /* on ink only — 9.2:1 on --ink */

  /* ── Deep green — "fixed at the source" ─────────────────────────────── */
  --good:      #14614a;   /* 7.4:1 on white */
  --good-soft: #e7f2ee;
  --good-line: #a8cfc1;   /* decorative only */

  /* ── Civic gold — the seal motif, on ink only ───────────────────────── */
  --gold: #e0a92e;        /* 7.4:1 on --ink, 4.7:1 on --ink-3 */

  /* ── Focus ──────────────────────────────────────────────────────────── */
  --focus:     #0d3c66;   /* 11.3:1 on --bg */
  --focus-ink: #ffd166;   /* 11.0:1 on --ink */

  /* ── Shape + rhythm ─────────────────────────────────────────────────── *
     Squarer than a consumer SaaS site on purpose: institutional, not playful. */
  --radius:    5px;
  --radius-sm: 3px;
  --radius-lg: 9px;
  --container: 1140px;
  --narrow:    760px;

  --shadow-sm: 0 1px 2px rgba(12, 35, 64, .07);
  --shadow-md: 0 1px 3px rgba(12, 35, 64, .06), 0 8px 22px rgba(12, 35, 64, .07);
  --shadow-lg: 0 2px 6px rgba(12, 35, 64, .07), 0 20px 48px rgba(12, 35, 64, .10);

  /* Source Serif 4 carries the headings — a document voice rather than a
     product voice. Inter runs the interface; JetBrains Mono is not loaded
     because nothing on this site is a code sample. */
  --font-display: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --font-sans:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif;
}
