/* =====================================================================
   Tokens de design — "terminal de contenção"
   Fonte única de cores, tipografia, espaços, relevos e animações.
   Componentes só usam var(--…). Contraste conferido por tools/contrast.mjs (WCAG AA).
   ===================================================================== */

/* ---------- fontes (no repositório, licença SIL OFL: client/fonts/LICENSE-*) ---------- */
@font-face {
  font-family: "Departure Mono";
  src: url("../fonts/DepartureMono-Regular.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/ibm-plex-sans-latin-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }

:root {
  color-scheme: dark;

  /* ---------- tinta (superfícies) — grafite frio ---------- */
  --ink-0: #0f1417;          /* fundo */
  --ink-1: #161d21;          /* janela */
  --ink-2: #1c252a;          /* bandeja, linha */
  --ink-3: #253037;          /* tecla */
  --ink-4: #2f3b42;          /* tecla em hover */
  --ink-scene: #0f1416;      /* chão da cena */
  --rule: #2a353b;           /* fio fino */
  --rule-2: #3a474e;         /* fio de destaque */
  --rule-ctl: #6a797f;       /* borda de campo (≥ 3:1) */
  --edge: #040607;           /* contorno preto das peças (pixel art) */
  --paper: #1b201e;          /* folha de ficha */
  --paper-rule: #2a312d;

  /* ---------- relevo (teclas e janelas) ---------- */
  --bevel-hi: #44545c;       /* luz em cima */
  --bevel-lo: rgb(0 0 0 / 0.55);
  --bone-hi: #fffaf0;
  --bone-lo: #a39d8c;

  /* ---------- texto ---------- */
  --text: #e6eae8;
  --text-2: #b8c2c0;
  --text-3: #98a4a2;
  --bone: #e9e4d6;           /* tecla primária (papel) */
  --redact: #050607;

  /* ---------- sinais ---------- */
  --focus: #f2c14e;
  --ok: #78c27c;
  --warn: #e0a842;
  --stamp: #e5604f;
  --info: #7fb2d6;
  --vip: #7fb2d6;
  --hp: var(--ok);
  --hp-low: var(--stamp);
  --xp: var(--info);
  --cd: #b9a46e;
  --corpse: #e0a842;
  --led-on: #8ff09a;
  --led-off: #2a3a30;

  /* ---------- visor da máquina (LCD) ---------- */
  --lcd-bg: #0a1712;
  --lcd: #9fe3a6;
  --lcd-dim: #6fae78;

  /* ---------- classes oficiais (informativas) ---------- */
  --cls-safe: #78c27c;
  --cls-euclid: #e0a842;
  --cls-keter: #e0645a;
  --cls-other: #a3aeac;

  /* ---------- 10 tipos (sempre ícone + sigla) ---------- */
  --t-bio: #84c46c;  --t-mec: #a4b2bd;  --t-ele: #e8834f;
  --t-cog: #c3a2e6;  --t-mem: #e889b8;  --t-ant: #e6e1d0;
  --t-esp: #8fb6ea;  --t-tem: #cfa968;  --t-ext: #5ec4b6;  --t-dis: #ec6b7c;

  /* ---------- Grau de Anomalia ---------- */
  --g-mundano: #8e9a98;  --g-atipico: #c6cfcc;  --g-anomalo: #5ec4b6;  --g-aberrante: #c3a2e6;  --g-paradoxal: #ff9a76;

  /* ---------- raridade de Traço ---------- */
  --r-comum: #a3aeac;  --r-incomum: #5ec4b6;  --r-raro: #8fa9f2;  --r-lendario: #e8b04a;

  /* ---------- Divergente: ouro, exclusivo ---------- */
  --div: #ecc95e;
  --div-deep: #6b5414;
  --div-glow: rgb(236 201 94 / 0.28);

  /* ---------- Índice de Ameaça 0–10 ---------- */
  --threat-0: #4f5d5b;  --threat-1: #7f8f8c;  --threat-2: #a8b59a;  --threat-3: #d6c46a;
  --threat-4: #eb9b4c;  --threat-5: #f2735f;  --threat-6: #ff6882;

  /* ---------- tipografia ----------
     Pixel (Departure Mono) para títulos, números, teclas e rótulos: é a "voz do jogo".
     Fonte pixel só em múltiplos de 11 px (11, 22, 33) para não borrar.
     Plex Sans para frases e descrições. */
  --font-pixel: "Departure Mono", ui-monospace, Consolas, monospace;
  --font-sans: "IBM Plex Sans", system-ui, "Segoe UI", Roboto, Arial, sans-serif;
  --px-1: 11px;
  --px-2: 22px;
  --px-3: 33px;
  --fs-xs: 12.5px;
  --fs-sm: 14px;
  --fs-md: 15px;
  --fs-lg: 16px;
  --lh-tight: 1.15;
  --lh: 1.5;
  --track: 0.06em;
  --fw-reg: 400;
  --fw-med: 500;
  --fw-bold: 600;

  /* ---------- espaço (grade de 4 px) ---------- */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px;  --s-4: 16px;  --s-5: 24px;  --s-6: 32px;  --s-7: 48px;
  --gutter: 16px;
  --touch: 44px;
  --slot: 52px;              /* casa do cinto de equipamento */
  --nav-w: 208px;

  /* ---------- bordas ---------- */
  --bw: 2px;                 /* peças de jogo: contorno de 2 px */
  --radius: 0;

  /* ---------- sombras ---------- */
  --drop: 0 4px 0 rgb(0 0 0 / 0.5);
  --drop-modal: 0 8px 0 rgb(0 0 0 / 0.55), 0 0 0 100vmax rgb(4 6 7 / 0.72);

  /* ---------- sprites e ícones: escala inteira ---------- */
  --px: 2;

  /* ---------- movimento ---------- */
  --dur-1: 80ms;
  --dur-2: 160ms;
  --dur-3: 280ms;
  --ease: cubic-bezier(0.2, 0, 0, 1);
  --ease-pop: cubic-bezier(0.3, 1.5, 0.5, 1);
  --sheen-period: 7s;

  /* ---------- camadas ---------- */
  --z-nav: 5;  --z-drawer: 20;  --z-modal: 30;  --z-toast: 40;
}

@media (prefers-reduced-motion: reduce) {
  :root { --dur-1: 0ms; --dur-2: 0ms; --dur-3: 0ms; --sheen-period: 0s; }
}
