/* ─────────────────────────────────────────────────────────────────────────────
   FIU KFSCIS brand tokens — THE single source of truth (redesign CR §2, 2026-07-05).
   Imported FIRST by both shells:
     public  → templates/public_base.html  (Direction B "Knight Command", dark)
     portal  → templates/portal.html       (Direction C "Campus Bento", light)
   Mirrored for server-side/PDF/OG contexts in api/app/core/brand.py — keep in sync.
   Contrast law (never break): gold/cyan are NEVER text on white; on light surfaces
   gold appears only as rules/marks/borders/chip-backgrounds with navy text.
   ───────────────────────────────────────────────────────────────────────────── */
:root{
  /* FIU digital palette — brand.fiu.edu (verified 2026-07-03) */
  --fiu-blue:#081E3F;          /* the ONLY navy — the old off-brand hex is banned by test_brand_tokens */
  --fiu-gold:#D1A644;
  --fiu-gold-bright:#FFCC00;   /* micro-accents only */
  --fiu-cyan:#00B7D5;          /* informational/data accents; on navy only */
  --fiu-magenta:#CC0066;       /* reserved; effectively unused */

  /* Dark (public) context */
  --deep:#040E1F; --elev:#0B2549;
  /* Context-explicit ink aliases (redesign CR MASTER 2026-07-17, Part A).
     Name says WHICH context the ink is FOR, so nobody re-reads "--fg-dark" as
     "dark-coloured foreground" and leaks the light public-shell ink onto a white
     portal surface (the near-invisible-chat bug). Portal code must use
     --ink-on-light / --ink; --ink-on-dark is for the dark public shell only. */
  --ink-on-dark:#EDF1F7; --ink-on-light:#081E3F;
  --fg-dark:var(--ink-on-dark); --muted-dark:#A7B4C8; --faint-dark:#7C8BA3;
  --glass:rgba(255,255,255,.045); --hair:rgba(255,255,255,.09); --hair-strong:rgba(255,255,255,.16);
  --gold-glow:rgba(209,166,68,.32);

  /* Light (workspace) context */
  --bg-light:#F2F4F8; --surface:#FFFFFF;
  --ink:#081E3F; --ink-60:rgba(8,30,63,.64); --ink-40:rgba(8,30,63,.44);
  --line:rgba(8,30,63,.10); --tint:rgba(8,30,63,.05);
  --shadow:0 1px 2px rgba(8,30,63,.05),0 12px 32px -12px rgba(8,30,63,.12);
  --shadow-lift:0 2px 4px rgba(8,30,63,.06),0 24px 48px -16px rgba(8,30,63,.2);

  --ease:cubic-bezier(.16,1,.3,1);
  --font-sans:"proxima-nova","Proxima Nova","Mulish",Inter,-apple-system,"Segoe UI",Arial,sans-serif;

  /* Back-compat aliases (existing var() call sites keep working) */
  --fiu-gold-text:#8A6516; --fiu-bright-gold:var(--fiu-gold-bright); --fiu-white:#FFFFFF;
  --navy:var(--fiu-blue); --gold:var(--fiu-gold);

  /* Semantic status tokens (CR MASTER 2026-07-17, Part E) — the ONE source for
     success/warn/danger/info on LIGHT (portal) surfaces. `*` = AA text-on-white;
     `*-bg` = tint background (pair the * colour as text on its -bg for chips).
     Ratios below are measured WCAG relative-luminance contrast (verified).
     Do NOT use these on the dark public shell — that context needs lighter inks. */
  --ok:#13633A;      --ok-bg:#E7F5EE;      /* green  — --ok on white 7.31:1, on --ok-bg 6.51:1 */
  --warn:#8A6516;    --warn-bg:#FBF3E1;    /* gold   — == --fiu-gold-text, on white 5.31:1, on --warn-bg 4.81:1 (raw FIU gold FAILS as text) */
  --danger:#B3261E;  --danger-bg:#F8E1E1;  /* red    — --danger on white 6.54:1, on --danger-bg 5.24:1 */
  --info:#1D4E89;    --info-bg:#E6EEF7;    /* navy-family blue (NOT cyan-on-white) — on white 8.39:1, on --info-bg 7.17:1 */
}

/* Mulish (OFL, self-hosted variable font) — the licensed Proxima Nova web kit slots
   in front via BRAND_FONT_KIT_URL config with no CSS change (stack above). */
@font-face{
  font-family:"Mulish";
  src:url("/static/fonts/mulish-var.woff2") format("woff2");
  font-weight:200 1000;
  font-style:normal;
  font-display:swap;
}

/* Global a11y (both themes) — redesign CR §6 */
:focus-visible{outline:3px solid var(--fiu-cyan);outline-offset:2px}
::selection{background:var(--fiu-gold);color:var(--fiu-blue)}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
}
