/* ══════════════════════════════════════════════════════════════════════
   FENIXAN · fx-tokens.css
   DESIGN SYSTEM · CAPA DE TOKENS
   ──────────────────────────────────────────────────────────────────────
   Sprint 0 · 17-jul-2026
   Carácter: PERMANENTE. Es la fuente de verdad visual de la plataforma.

   REGLAS DE ESTE ARCHIVO (no romper):
     · Contiene ÚNICAMENTE :root. Cero selectores de componente.
     · Cero @import. Cero dependencias remotas. Funciona bajo file://.
     · Los valores de marca salen del logotipo (icon-512.png), verificados
       píxel por píxel el 17-jul-2026:
           #FFFFFF 67.4% · #0154A3 11.5% · #478B5F 8.2%
           #197FDF  3.4% · #DB662C  1.9%
       Si algún día hay duda entre dos valores, gana el del logotipo.

   ORDEN DE CARGA (obligatorio, al final del <head>):
     1. <style> interno del producto
     2. theme-fenixan.css
     3. fx-tokens.css      ← este archivo
     4. fx-compat.css
   Si un <style> queda DESPUÉS, la cascada se invierte y el tema deja de
   aplicar en silencio. Es el fallo histórico nº1 de este proyecto.

   PROCEDENCIA: los 13 tokens --fx-* de la CAPA 1 se movieron aquí desde
   el :root de theme-fenixan.css, con sus valores EXACTOS. Ese archivo
   conserva sus 79 selectores y los sigue usando sin cambio alguno.
   ══════════════════════════════════════════════════════════════════════ */

:root{

  /* ─── CAPA 1 · MARCA ────────────────────────────────────────────────
     Del logotipo. Inamovibles. Nombres y valores idénticos a los que
     tenía theme-fenixan.css: sus 79 selectores dependen de ellos.
     ─────────────────────────────────────────────────────────────────── */
  --fx-blue:        #0154A3;   /* Azul FENIXAN · barras, menú, encabezados */
  --fx-blue-dark:   #013D77;   /* Azul oscuro · hover, profundidad */
  --fx-blue-light:  #197FDF;   /* Azul claro · acciones secundarias */
  --fx-blue-pale:   #E8F1FB;   /* Azul muy pálido · fondos sutiles */
  --fx-orange:      #DB662C;   /* Naranja FENIXAN · acciones principales */
  --fx-orange-dark: #B85220;   /* Naranja oscuro · hover */
  --fx-orange-pale: #FDF0E9;   /* Naranja pálido · fondos de aviso */
  --fx-green:       #478B5F;   /* Verde FENIXAN · éxito / transmitido */
  --fx-green-pale:  #EAF3ED;   /* Verde pálido · fondo de éxito */
  --fx-red:         #C0392B;   /* Rojo · errores / eliminar */
  --fx-red-pale:    #FBEAE8;   /* Rojo pálido · fondo de error */
  --fx-gray:        #6B7A8D;   /* Gris · cancelado / texto secundario */
  --fx-gray-pale:   #EEF1F5;   /* Gris muy claro · fondos */
  --fx-white:       #FFFFFF;   /* Superficies */

  /* ─── CAPA 2 · SEMÁNTICOS DE ESTADO ────────────────────────────────
     El color aquí es INFORMACIÓN, no adorno. Esto es software que
     declara valores ante el SAT: si algo está rojo, algo falta.
     Se declaran como alias de la CAPA 1 — no se inventa ningún hex.
     ─────────────────────────────────────────────────────────────────── */
  --fx-success:     var(--fx-green);        /* completo · transmitido · válido */
  --fx-error:       var(--fx-red);          /* obligatorio pendiente · error   */
  --fx-info:        var(--fx-blue-light);   /* informativo · en proceso        */
  --fx-neutral:     var(--fx-gray);         /* opcional pendiente · cancelado  */

  /* ⚠ COLISIÓN CONOCIDA · NO SE CORRIGE EN SPRINT 0
     Hoy la advertencia y la acción principal son el MISMO naranja
     (#DB662C). Es el estado real del producto y se preserva tal cual
     para no alterar la apariencia. Separarlos requiere autorización
     expresa: ver el informe del Sprint 0, apartado "Hallazgos". */
  --fx-warning:     var(--fx-orange);       /* = acción principal. Ver informe. */

  /* ─── CAPA 3 · FONDOS DE ESTADO ────────────────────────────────────── */
  --fx-success-bg:  var(--fx-green-pale);
  --fx-error-bg:    var(--fx-red-pale);
  --fx-warning-bg:  var(--fx-orange-pale);
  --fx-info-bg:     var(--fx-blue-pale);
  --fx-neutral-bg:  var(--fx-gray-pale);

  /* ─── CAPA 4 · SUPERFICIES ─────────────────────────────────────────── */
  --fx-surface:     #FFFFFF;   /* tarjetas, campos */
  --fx-canvas:      #F4F6F9;   /* fondo general */
  --fx-canvas-2:    #E9EDF2;   /* fondo alterno */

  /* ─── CAPA 5 · BORDES ──────────────────────────────────────────────── */
  --fx-border:      #D3DAE3;   /* bordes */
  --fx-border-soft: #E4E9EF;   /* bordes suaves */

  /* ─── CAPA 6 · TEXTO ───────────────────────────────────────────────── */
  --fx-ink:         #10375E;   /* texto principal */
  --fx-ink-2:       #0154A3;   /* títulos, énfasis */
  --fx-ink-3:       #5B7189;   /* texto secundario, hints */

  /* ─── CAPA 7 · TIPOGRAFÍA ──────────────────────────────────────────
     Ambas de sistema: cero descargas, cero red, idénticas bajo file://.
     Decisión del Profe, 17-jul-2026.
     ─────────────────────────────────────────────────────────────────── */
  --fx-font-sans:   Arial, Helvetica, sans-serif;

  /* La monoespaciada NO es decorativa: es funcional. Un RFC, un folio
     MNVA o una fracción 9026.20.01.00 se cotejan dígito por dígito, y
     alinearlos verticalmente evita errores de captura ante la autoridad. */
  --fx-font-mono:   "Courier New", Courier, monospace;

  /* ─── CAPA 8 · ESPACIADO (Sprint 1) ───────────────────────────
     Escala de 4px. Antes había 53 paddings distintos y 22 márgenes:
     valores sueltos que nadie eligió, acumulados con los años. Seis
     pasos cubren todo y hacen que el ritmo vertical sea predecible.
     Se declaran aquí porque el Sprint 1 YA las usa; no son código muerto.
     ──────────────────────────────────────────────────────────── */
  --fx-space-1:  4px;
  --fx-space-2:  8px;
  --fx-space-3: 12px;
  --fx-space-4: 16px;
  --fx-space-5: 24px;
  --fx-space-6: 32px;
}
