/* Brand faces, self-hosted (SIL OFL): Archivo Black (h1), Archivo (h2), Archivo Narrow (labels),
   Public Sans (text), JetBrains Mono (figures). Latin subset only. */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 600 800; font-display: swap; src: url(/fonts/archivo-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Archivo Black'; font-style: normal; font-weight: 400; font-display: swap; src: url(/fonts/archivo-black-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Archivo Narrow'; font-style: normal; font-weight: 600; font-display: swap; src: url(/fonts/archivo-narrow-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 500 700; font-display: swap; src: url(/fonts/jetbrains-mono-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Public Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url(/fonts/public-sans-italic-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Public Sans'; font-style: normal; font-weight: 400 700; font-display: swap; src: url(/fonts/public-sans-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ── DiscreteRate role tokens ──────────────────────────────────────────────
   Source: docs/brand-style-guide.md + docs/StyleGuide-DiscreteRate.pdf.
   Five roles, never raw colours: Gunmetal ground, Brushed Steel band,
   Rate Steel warm band, Neon Cyan accent, Bloom Blue action. */
:root {
  /* palette (PDF p.1) */
  --gunmetal:     #111418;
  --gunmetal-2:   #181C21;
  --gunmetal-3:   #20262D;
  --machined:     #707070;
  --brushed:      #E4E8EC;
  --rate-steel:   #2A4A6A;
  --rate-mist:    #90BCD8;
  --neon-cyan:    #00CFFF;
  --bloom-blue:   #1F5BFF;

  /* roles */
  --ground:       var(--gunmetal);
  --ground-2:     var(--gunmetal-2);
  --ground-3:     var(--gunmetal-3);
  --band:         var(--brushed);
  --card-light:   #F7F9FA;           /* cards on the band; never pure #FFF   */
  --warm:         var(--rate-steel);
  --accent:       var(--neon-cyan);  /* 10:1 on Gunmetal                    */
  --accent-band:  #004F66;           /* accent text on Brushed Steel, 7.4:1 */
  --action:       var(--bloom-blue); /* white label 5.3:1                   */
  --action-hi:    #3A70FF;
  --on-ground:    #E6EAEE;           /* 15.3:1 */
  --on-ground-2:  #A6AFB8;           /* 8.3:1 on the ground, 7.7:1 on Gunmetal 2 */
  --on-warm:      #EEF2F5;           /* 8.2:1 on Rate Steel */
  --on-warm-2:    #DCE5ED;           /* 7.2:1 */
  --ink:          #111418;           /* 15:1 on Brushed Steel */
  --ink-2:        #2E363F;           /* 9.9:1 */
  --rule:         #2F3740;
  --rule-band:    #C3CBD3;

  /* teaching colours: content, not roles; one meaning each, site-wide */
  --t-drs:        #00CFFF;  /* discrete rate, constraint */
  --t-des:        #F5B63A;  /* discrete event            */
  --t-cont:       #A78BFA;  /* continuous                */
  --t-agent:      #A6AFB8;  /* agent-based               */
  --t-buffer:     #5FD38D;  /* buffer, success           */
  --t-interrupt:  #F2555A;  /* interrupt, down, errors   */
  /* the same meanings as text on the light band / light cards */
  --t-drs-ink:    #00607A;
  --t-des-ink:    #7A4E00;
  --t-cont-ink:   #5B3FB5;
  --t-buffer-ink: #17693B;
  --t-interrupt-ink: #A8222A;

  --font-display: 'Archivo Black', 'Arial Black', Arial, sans-serif;
  --font-head:    'Archivo', 'Arial', sans-serif;
  --font-label:   'Archivo Narrow', 'Arial Narrow', Arial, sans-serif;
  --font-text:    'Public Sans', Arial, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'Roboto Mono', monospace;
  --radius:       14px;
  --shadow-band:  0 2px 10px rgba(17,20,24,0.08);
}
