/* ============================================================================
   tokens.css — FUENTE UNICA de tokens de ambi (DS §17, 24-08-2026)

   Agregar un token a `seia-suite.css`, `sma-suite.css`, `centro-documental.css`,
   `chrome.css` o `mi-espacio.css` es un ERROR DE REVISION. Va aca.

   Dos hojas redeclaran un token del sistema acotado a su pagina: `auth.css`
   (`.auth-page`) y `legal.css` (`.legal-page`), las dos con `--shadow-focus` y
   el mismo color (`#fff` contra `#ffffff`). Eso es un override deliberado, no
   una fuente paralela — pero si el valor divergiera seria exactamente el bug de
   abajo con otra forma, asi que lo vigila
   `test_ninguna_hoja_redeclara_un_token_con_otro_valor`.

   POR QUE EXISTE. Produccion definia sus tokens en tres bloques `:root`
   duplicados, uno por rama, mas dos hojas que agregaban los suyos. Los valores
   NO divergian —los 40 compartidos eran identicos hasta el ultimo digito—: el
   problema era COBERTURA. Un token que existe en una hoja y no en otra deja
   invalida, EN SILENCIO, cualquier declaracion que lo use desde la otra rama.
   Ya habia costado dos veces: `--teal-100` faltaba en la rampa SMA y apagaba el
   hover de la fila "Ir directo" del omnibox; `--shadow-pop` faltaba en la misma
   rampa y dejaba sin sombra el popup de filtro y el panel de columnas.

   QUE ENTRA. Solo tokens que EXISTEN HOY en produccion (los 105 medidos sobre
   el commit 53888e1), mas dos altas declaradas:
     - `--teal-500`, para que `suite-actions.css` deje de depender de su fallback
       literal en el foco de `.sa-field`. Valor identico al fallback.
     - `--chrome-secondary-w`, el ancho del nav secundario. Es el nombre y el
       valor que el DS ya declaraba (§16.2) y que nunca se construyo. Ademas es
       el mecanismo del flag de la tanda 4: los consumidores lo leen como
       `var(--chrome-secondary-w,198px)` en `chrome.css` y `,230px` en
       `sma-suite.css`, asi que con esta hoja ausente cada rama vuelve sola a su
       ancho de hoy y el flag apagado sigue siendo el rollback.
   NO entra la escala aspiracional del DS §2 (`--teal-900/950`, `--shadow-xs/lg`,
   `--duration-slow`, `--ease-emphasized/exit`, `--radius-none/2xl`, el resto de
   la escala `--space-*`, ni `--z-*`): un token que nadie consume es ruido, y la
   escala `--z-*` no se toca sin un mapa de que se apila sobre que.

   ORDEN DE CARGA. Va PRIMERO en las diez cadenas, antes de `chrome.css`. Los
   `:root` de rama, mientras existan, cargan despues con los mismos valores y
   ganan la cascada: el render queda identico POR CONSTRUCCION.

   GUARDIAN. `tests/test_tokens_runtime.py` computa el estilo en una pagina
   cargada con Chromium y afirma que ningun `var()` sin fallback queda sin
   resolver en ninguno de los diez shells. Un grep sobre el fuente NO sirve:
   `--shadow-pop` estaba escrito en dos hojas y usado en cuatro declaraciones, y
   aun asi no resolvia.
   ============================================================================ */

:root{
  /* ---- Marca ------------------------------------------------------------- */
  --teal-50:#f0fdfa; --teal-100:#ccfbf1; --teal-200:#99f6e4; --teal-300:#5eead4;
  --teal-400:#2dd4bf; --teal-500:#14b8a6; --teal-600:#0d9488; --teal-700:#0f766e;
  --teal-800:#115e59;

  /* ---- Tinta ------------------------------------------------------------- */
  --ink-1:#0f172a; --ink-2:#1e293b; --ink-3:#475569; --ink-4:#64748b;
  --ink-5:#94a3b8; --ink-6:#cbd5e1;

  /* ---- Superficies y filetes --------------------------------------------- */
  --surface:#ffffff; --surface-muted:#f8fafc; --chrome:#0f172a;
  --hairline:rgba(15,23,42,0.08); --hairline-strong:rgba(15,23,42,0.14);

  /* ---- Semanticos -------------------------------------------------------- */
  --success-50:#f0fdf4; --success-600:#15803d;
  --warning-50:#fffbeb; --warning-200:#fde68a; --warning-700:#b45309;
  --danger-50:#fef2f2; --danger-600:#b91c1c; --danger-700:#991b1b;
  --info-50:#eff6ff; --info-100:#dbeafe; --info-200:#bfdbfe; --info-700:#1d4ed8;

  /* ---- Acentos de rama ---------------------------------------------------
     Hoy los usa una sola superficie cada uno (naranja y morado en SEIA, cobre
     en SMA). Globalizarlos no cambia render: nada fuera de su rama los
     referencia — verificado token por token antes de mover. */
  --orange-50:#fff7ed; --orange-500:#f97316; --orange-700:#9a3412;
  --pro-50:#faf5ff; --pro-200:#e9d5ff; --pro-600:#7c3aed; --pro-700:#6b21a8;
  --cobre-50:#faf5ef; --cobre-200:#e9d5bf; --cobre-600:#9a6240; --cobre-700:#7c4e33;

  /* ---- Pastillas por tipo de entidad (DS §2.1) --------------------------- */
  --kind-proyecto-bg:#dbeafe; --kind-proyecto-fg:#1e3a8a;
  --kind-documento-bg:#f1f5f9; --kind-documento-fg:#334155;
  --kind-pertinencia-bg:#fae8ff; --kind-pertinencia-fg:#86198f;
  --kind-guia-bg:#d1fae5; --kind-guia-fg:#065f46;
  --kind-anexo-bg:#f8fafc; --kind-anexo-fg:#64748b;
  --kind-uf-bg:#fef3c7; --kind-uf-fg:#854d0e;
  --kind-titular-bg:#f5f5f4; --kind-titular-fg:#44403c;
  --kind-instrumento-bg:#e0f2fe; --kind-instrumento-fg:#075985;
  --kind-medida-bg:#ffedd5; --kind-medida-fg:#9a3412;
  --kind-sancionatorio-bg:#fee2e2; --kind-sancionatorio-fg:#991b1b;
  --kind-requerimiento-bg:#e0e7ff; --kind-requerimiento-fg:#3730a3;
  --kind-seguimiento-bg:#ccfbf1; --kind-seguimiento-fg:#0f766e;
  --kind-sancion-bg:#fecaca; --kind-sancion-fg:#7f1d1d;

  /* ---- Tipografia -------------------------------------------------------- */
  --font-sans:'IBM Plex Sans',system-ui,sans-serif;
  --font-serif:'IBM Plex Serif',Georgia,serif;
  --font-mono:'JetBrains Mono',Consolas,monospace;
  --text-mono-xs-size:10px; --text-mono-sm-size:11px; --text-field-size:13px;

  /* ---- Espaciado --------------------------------------------------------- */
  --space-1:4px; --space-1-5:6px; --space-2:8px; --space-2-5:10px;
  --space-3:12px; --space-3-5:14px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-8:32px;

  /* ---- Radios ------------------------------------------------------------ */
  --radius-xs:3px; --radius-sm:4px; --radius-md:6px; --radius-lg:8px;
  --radius-xl:12px; --radius-full:9999px;

  /* ---- Sombras ----------------------------------------------------------- */
  --shadow-sm:0 1px 2px rgba(15,23,42,0.04);
  --shadow-md:0 4px 12px rgba(15,23,42,0.08),0 2px 4px rgba(15,23,42,0.06);
  --shadow-pop:0 8px 28px rgba(15,23,42,0.14),0 2px 6px rgba(15,23,42,0.08);
  --shadow-focus:0 0 0 2px #ffffff,0 0 0 4px var(--teal-700);

  /* ---- Movimiento -------------------------------------------------------- */
  --duration-fast:120ms; --duration:180ms;
  --ease-standard:cubic-bezier(0.2,0,0,1);

  /* ---- Chrome y layout ---------------------------------------------------
     Los `--bp-*` estan declarados pero ningun `@media` los consume todavia:
     una media query no puede leer una custom property. Siguen los 11
     breakpoints ad-hoc, y §16.1 ya decidio que no se migran en bloque. */
  --chrome-topbar-h:48px; --tap:44px; --safe-bottom:env(safe-area-inset-bottom,0px);
  /* El secundario, unico para las dos ramas. SEIA venia en 198px y SMA en
     230px; §15.1 mando alinear en 230 el 09-07-2026 y nunca se construyo
     (verificado abierto en runtime el 24-08-2026). 230px es tambien lo que ya
     mide el overlay `.ambihub-menu` en las dos ramas. */
  --chrome-secondary-w:230px;
  --bp-sm:640px; --bp-md:768px; --bp-lg:1024px; --bp-xl:1280px; --bp-2xl:1536px;
}
