/* ═══════════════════════════════════════════════════════════════════════════
   NEXUS DESIGN TOKENS — the single definition site for colour, type and radius.
   lint-banned.sh enforces that: no other file may hold a colour hex or define a
   --* custom property.

   WHY THIS EXISTS AND WHAT IT REPLACES
   USWDS is kept for COMPONENTS — buttons, forms, accordions, tables, sidenav,
   focus rings, ARIA behaviour. That is the hard, accessible part and it stays.
   Its PALETTE is a public-services palette and is not kept: it reads as a
   government portal because that is what it was designed for.

   ACCESSIBILITY IS NOT THE TRADE-OFF. Every pairing below is measured against
   WCAG 2.x AA (4.5 normal text) on the page background:
     ink        #E8EDF5  16.43:1     accent   #8B9BFF   7.57:1
     ink-2      #A3AFC2   8.71:1     success  #3ECF8E   9.68:1
     ink-3      #727E92   4.70:1     warning  #F5B544  10.65:1
     info       #5CC8E8  10.01:1     danger   #FF7B7B   7.70:1
   For contrast, the previous locked palette FAILED on its own sanctioned navy:
   danger 2.26, warning 2.38, success 2.58, primary 2.01 — all under 4.5.

   Type: IBM Plex Sans, self-hosted (116 KB, four weights). Zero CDN — no
   third-party request, no external dependency at render time.
   ═══════════════════════════════════════════════════════════════════════════ */

@font-face { font-family:'IBM Plex Sans'; font-style:normal; font-weight:400; font-display:swap;
  src:url('../vendor/plex/ibm-plex-sans-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-style:normal; font-weight:500; font-display:swap;
  src:url('../vendor/plex/ibm-plex-sans-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-style:normal; font-weight:600; font-display:swap;
  src:url('../vendor/plex/ibm-plex-sans-latin-600-normal.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Sans'; font-style:normal; font-weight:700; font-display:swap;
  src:url('../vendor/plex/ibm-plex-sans-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-style:normal; font-weight:400; font-display:swap;
  src:url('../vendor/plex/ibm-plex-mono-latin-400-normal.woff2') format('woff2'); }

:root {
  /* ── surfaces: a neutral ramp carries the interface; colour is reserved for meaning ── */
  --nx-bg:        #0B0E14;   /* page */
  --nx-surface:   #12161F;   /* card, panel */
  --nx-surface-2: #1A1F2B;   /* raised: table head, accordion button, input */
  --nx-line:      #232A38;   /* hairline border — elevation without shadows */
  --nx-line-2:    #2E3646;   /* stronger divider, meter track */

  /* ── ink ── */
  --nx-ink:       #E8EDF5;   /* primary text            16.43:1 */
  --nx-ink-2:     #A3AFC2;   /* secondary                8.71:1 */
  --nx-ink-3:   #758195;   /* muted  4.90 on bg, 4.59 on surface */

  /* ── one accent, used sparingly ── */
  --nx-accent:      #8B9BFF; /*                          7.57:1 */
  --nx-accent-dim:  #2A3154;
  --nx-accent-ink:  #0B0E14; /* on a filled accent */
  --nx-visited:     #C3A6FF; /* visited link                         9.40:1 */

  /* ── semantic: meaning only, never decoration ── */
  --nx-ok:       #3ECF8E;  --nx-ok-dim:   #12291F;  --nx-warn:     #F5B544;  --nx-warn-dim: #2B2113;  --nx-bad:      #FF7B7B;  --nx-bad-dim:  #2E1719;  --nx-info:     #5CC8E8;  --nx-info-dim: #10262E;  /* legacy aliases consumed by the theme module (kept so components.js needs no rewrite) */
  --nx-wait:     var(--nx-warn); --nx-gap:      var(--nx-bad);  /* ── shape + type ── */
  --nx-radius:    10px;
  --nx-radius-sm: 7px;
  --nx-font:      'IBM Plex Sans', -apple-system, 'Segoe UI', system-ui, sans-serif;
  --nx-font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, monospace;
}
