/* Theme tokens shared by every page: colours for each theme, fonts, motion curves.
   VT323 and Departure Mono for chrome, IBM Plex Mono for reading, Geist in the footer. */
:root {
  --bg: #120c04;        /* tube glass, tinted toward the phosphor */
  --bg-raise: #1c1408;  /* panels, code, the console */
  --fg: #ffb23e;        /* phosphor at normal intensity */
  --hot: #ffe2a8;       /* bold / high intensity */
  --dim: #b07b2c;       /* half intensity */
  --faint: #5a3f16;     /* rules and frames */
  --text: #f3d7a4;      /* long-form reading colour, softer than --fg */
  --glow: rgba(255, 166, 38, .42);
  --shade: rgba(0, 0, 0, .55);
  --danger: #ff7a59;

  --display: "VT323", ui-monospace, Menlo, Consolas, monospace;
  --sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --body: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
  --block: Menlo, Consolas, "DejaVu Sans Mono", "Liberation Mono", ui-monospace, monospace;
  --wide: 1180px;
  color-scheme: dark;
}
:root[data-phosphor="green"] {
  --bg: #03100a; --bg-raise: #071a10;
  --fg: #4dff88; --hot: #d2ffe0; --dim: #34a862; --faint: #175330; --text: #bff0cf;
  --glow: rgba(60, 255, 130, .36); --danger: #ffb347;
}
:root[data-phosphor="white"] {
  --bg: #0b0d11; --bg-raise: #141820;
  --fg: #dbe5f3; --hot: #ffffff; --dim: #8d99ab; --faint: #3a414e; --text: #d0d8e4;
  --glow: rgba(190, 215, 255, .3); --danger: #ff8f7a;
}
:root[data-phosphor="blueprint"] {
  --bg: #002f6e; --bg-raise: #033a80;
  --fg: #9cbdf6; --hot: #e3effa; --dim: #7189ac; --faint: #2c5794; --text: #cde9fd;
  --glow: transparent; --shade: rgba(0, 18, 48, .5); --danger: #ffc7b0;
  --grid: rgba(156, 189, 246, .07); --grid-major: rgba(156, 189, 246, .16);
  --bar: rgba(0, 38, 92, .94);
}
/* palettes from bjarneo.github.io/various-themes */
:root[data-phosphor="anaglyph"] {
  --bg: #06090d; --bg-raise: #0f161d;
  --fg: #08a0a9; --hot: #e7eaec; --dim: #74818e; --faint: #2d353d; --text: #c8ced3;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #e94f4d;
}
:root[data-phosphor="byzantine"] {
  --bg: #03071b; --bg-raise: #091232;
  --fg: #678cfb; --hot: #efe9dd; --dim: #737f9e; --faint: #2a334e; --text: #d9cbb4;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #d6605a;
}
:root[data-phosphor="forge"] {
  --bg: #0f0705; --bg-raise: #1e110d;
  --fg: #e87514; --hot: #efe9e1; --dim: #917b73; --faint: #3f312c; --text: #d8cbbc;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #e34a48;
}
:root[data-phosphor="kelp"] {
  --bg: #000d07; --bg-raise: #001b12;
  --fg: #64a074; --hot: #e6ece6; --dim: #64887a; --faint: #223a30; --text: #c4d1c6;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #b17245;
}
:root[data-phosphor="antique"] {
  --bg: #f4e8d0; --bg-raise: #eddec1;
  --fg: #35617a; --hot: #040200; --dim: #6d5e3f; --faint: #c3b598; --text: #282216;
  --glow: transparent; --shade: rgba(60, 40, 10, .14); --danger: #994b40; color-scheme: light;
}
:root[data-phosphor="chalkboard"] {
  --bg: #182821; --bg-raise: #1e382d;
  --fg: #cd87ae; --hot: #fdfcf9; --dim: #7b9a8b; --faint: #395046; --text: #dcdad3;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #dd756e;
}
/* cardboard: kraft board, dark brown ink, red stamp ink; panels read as paper labels */
:root[data-phosphor="cardboard"] {
  --bg: #c8a578; --bg-raise: #efe5d2;
  --fg: #9a3324; --hot: #1f150b; --dim: #5e4429; --faint: #a6835a; --text: #2b1e10;
  --glow: transparent; --shade: rgba(70, 40, 10, .22); --danger: #b0261b; color-scheme: light;
}
/* space: periwinkle ink on a deep field, warm planet light for alerts */
:root[data-phosphor="space"] {
  --bg: #04050f; --bg-raise: #0b0d20;
  --fg: #9fa8ff; --hot: #f2f0ff; --dim: #7c80aa; --faint: #262a4c; --text: #d7d9f3;
  --glow: transparent; --shade: rgba(0, 0, 0, .6); --danger: #ff8a7a;
}
/* kelp dark: simple dark, but in kelp's sea greens */
:root[data-phosphor="kelpdark"] {
  --bg: #07120d; --bg-raise: #0d1d16;
  --fg: #64a074; --hot: #e6ece6; --dim: #7a9488; --faint: #1d3328; --text: #c4d1c6;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #c98a5a;
}
:root[data-phosphor="dark"] {
  --bg: #0a0a0a; --bg-raise: #171717;
  --fg: #ededed; --hot: #ffffff; --dim: #a1a1a1; --faint: #333333; --text: #ededed;
  --glow: transparent; --shade: rgba(0, 0, 0, .55); --danger: #ff6166;
}
:root[data-phosphor="light"] {
  --bg: #fafafa; --bg-raise: #ffffff;
  --fg: #171717; --hot: #000000; --dim: #5c5c5c; --faint: #d4d4d4; --text: #171717;
  --glow: transparent; --shade: rgba(0, 0, 0, .1); --danger: #d93036; color-scheme: light;
}

/* ---------- Departure Mono (pixel font for chrome and numbers) ---------- */
@font-face {
  font-family: "Departure Mono";
  src: url("https://cdn.jsdelivr.net/gh/rektdeckard/departure-mono@1.500/public/assets/DepartureMono-Regular.woff2") format("woff2");
  font-display: swap;
  size-adjust: 74%;
}
:root { --display: "Departure Mono", "VT323", ui-monospace, Menlo, Consolas, monospace; }

/* motion */
:root { --spring: cubic-bezier(.34, 1.56, .64, 1); --ease-out: cubic-bezier(.2, .8, .2, 1); }
