/* ============ tokens ============ */
:root{
  --bg:#0d0c0a; --bg2:#12110d; --ink:#e9e4d8; --muted:#9a937f; --dim:#6b6557;
  --line:#282520; --line2:#1c1a16;
  --acc:#ffb000; --acc-ink:#171207; --acc-rgb:255,176,0; --ink-rgb:233,228,216; --nav-bg:rgba(13,12,10,.82);
  --panel:#161410; --hover-ink:#12100b; --hover-sub:#7a7057; --thumb:#2c2a24;
  --t-bg:#040905; --t-fg:#41ff8b; --t-dim:#1f9e55; --t-bright:#b8ffd4; --t-err:#ff7b7b; --t-amb:#f5c542;
  --mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, monospace;
  --disp:'Archivo', sans-serif;
  --serif:'Instrument Serif', serif;
  --tty:'VT323', monospace;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth;background:#040905}
body{background:var(--bg);color:var(--ink);font-family:var(--disp);overflow-x:hidden}
body.tty-open{overflow:hidden}
::selection{background:var(--acc);color:var(--acc-ink)}
#tty ::selection{background:var(--t-fg);color:#031a0c}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--thumb);border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:var(--acc)}
:focus-visible{outline:1px dashed var(--acc);outline-offset:3px}
.serif{font-family:var(--serif);font-style:italic;font-weight:400}
@keyframes blink{0%,55%{opacity:1}56%,100%{opacity:0}}
@keyframes pulse{50%{opacity:.3}}
@keyframes drift{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes beamMove{from{top:-120px}to{top:110%}}

/* ============ CRT overlays ============ */
#crtFlash{position:fixed;inset:0;background:#eaffee;opacity:0;pointer-events:none;z-index:300}
#crtLine{position:fixed;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:#d8ffe6;opacity:0;pointer-events:none;z-index:301;box-shadow:0 0 26px 5px rgba(120,255,180,.75)}
.grain{position:fixed;inset:0;pointer-events:none;z-index:250;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")}
