/* SENTINEL — tokens, palette, resets
   Part of a split stylesheet. Load order is load-bearing:
   tokens.css -> layout.css -> components.css
   Concatenating them in that order reproduces the v10.14 single-file CSS
   byte for byte. Do not reorder the <link> tags. */

:root {
    /* ── Palette: dark navy console with cyan phosphor ───────────── */
    --case:      #0a0e16;   /* page base */
    --case-hi:   #111824;   /* raised panel */
    --screen:    #070a11;   /* display well */
    --screen-lo: #0d131d;   /* row fill */
    --rule:      #1f2a3a;
    --rule-soft: #18222f;

    --ink:       #d6e0ee;
    --ink-dim:   #6b7d96;
    --ink-faint: #45556b;
    /* v10.8: --ink-dim measures 4.24:1 on the raised panel and --ink-faint
       2.61:1 on the display well — both under the 4.5:1 floor. Those stay as
       they are for decorative rules and non-essential chrome, but any text a
       reader must actually READ uses this token instead. 5.4:1 on panel,
       6.0:1 on the well. */
    --ink-readable: #7d8fa8;

    --amber:     #34e3d4;   /* primary accent (cyan) */
    --amber-lo:  #1c7a73;
    --clear:     #4ea36b;
    --caution:   #d9a441;
    --warn:      #e2683f;
    --alarm:     #e0414f;
    --violet:    #c98bff;
    --band-blue: #59b0ff;

    /* aliases used throughout the panels */
    --bg:var(--case); --bg-panel:var(--case-hi); --bg-row:var(--screen-lo); --bg-deep:var(--screen);
    --line:var(--rule); --line-soft:var(--rule-soft);
    --cyan:var(--amber);
    --sev-low:var(--clear); --sev-med:var(--caution); --sev-high:var(--warn); --sev-crit:var(--alarm);
    --ransom:#ff5d73; --phish:var(--violet); --port:var(--band-blue);
    --s-bleep:var(--band-blue); --s-krebs:var(--violet); --s-thn:#ff9d5c;
    --s-dark:#4ecfa8; --s-cisa:#e0c341;

    --mono:"IBM Plex Mono",ui-monospace,monospace;
    --disp:"Barlow Condensed","IBM Plex Sans",system-ui,sans-serif;
    --sans:"IBM Plex Sans",system-ui,sans-serif;
    --ease:cubic-bezier(0.25,1,0.5,1);
  }
  * { box-sizing:border-box; }
  html { scroll-behavior:smooth; }
  body {
    margin:0;
    background:
      radial-gradient(1200px 600px at 80% -10%, #14202f 0%, transparent 60%),
      var(--case);
    color:var(--ink); font-family:var(--mono); font-size:14px; line-height:1.5;
    -webkit-font-smoothing:antialiased; min-height:100vh;
  }
  /* CRT scanline over display wells only — subtle, not a costume */
  body::before {
    content:""; position:fixed; inset:0; pointer-events:none;
    background:repeating-linear-gradient(0deg, transparent 0 3px, rgba(0,0,0,0.11) 3px 4px);
    opacity:0.5; z-index:9999; mix-blend-mode:multiply;
  }
  .wrap { max-width:1240px; margin:0 auto; padding:clamp(14px,3vw,28px); }
