/* brand/tokens.css — Fuente única de verdad de tokens Bisnia.
   Capa 1: primitivos de marca (Manual §9, inmutables) + extensiones funcionales.
   Capa 2: roles semánticos theme-aware. NO hardcodear paleta fuera de este archivo. */

:root {
  /* ===== Capa 1 — Primitivos de marca (Manual §9, verbatim) ===== */
  --prieto: #0F1115;
  --verde-cuarto: #00E28A;
  --azul-rnc: #2E7CF6;
  --ambar: #FFB020;
  --blanco-ficha: #F7F8F6;
  --casi-blanco: #E8EAE6;
  --gris-spec: #8A8F98;
  --gris-linea: #2A2E35;
  /* Extensiones funcionales (formalizan el drift; NO son marca) */
  --elev-1: #16191F;
  --elev-2: #1C2027;
  --danger-base: #FF5C5C;

  /* ===== Capa 2 — Roles semánticos · TEMA OSCURO (default) ===== */
  --bg: var(--prieto);
  --surface: var(--elev-1);
  --surface-2: var(--elev-2);
  --border: var(--gris-linea);
  --text: var(--casi-blanco);
  --text-muted: var(--gris-spec);
  --accent: var(--verde-cuarto);
  --accent-ink: #0F1115;            /* regla dura: texto sobre verde SIEMPRE Prieto (ambos temas) */
  --accent-label: var(--accent);    /* verde legible como texto sobre fondo oscuro */
  --info: var(--azul-rnc);
  --warning: var(--ambar);
  --danger: var(--danger-base);
  --success: var(--verde-cuarto);
  --ring: 0 0 0 2px color-mix(in oklab, var(--accent) 60%, transparent);
  --shadow-card: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 8px 24px rgba(0, 0, 0, 0.35);

  /* ===== Tipografía (roles; los stacks concretos se cargan por superficie) ===== */
  --font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
  --font-code: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* ===== Escalas de sistema (compartidas entre temas) ===== */
  --radius: 14px;
  --radius-sm: 9px;
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem;
  --space-section: clamp(1.5rem, 1rem + 2vw, 3rem);
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast: 150ms;
  --dur-normal: 250ms;
  --z-dropdown: 100; --z-sticky: 200; --z-modal-backdrop: 300;
  --z-modal: 400; --z-toast: 500; --z-tooltip: 600;

  color-scheme: dark;
}

/* ===== Capa 2 — Overrides · TEMA CLARO ===== */
:root[data-theme="light"] {
  --bg: var(--blanco-ficha);
  --surface: #FFFFFF;
  --surface-2: var(--casi-blanco);
  --border: #DADED6;                /* borde claro derivado (>=3:1 vs surface) */
  --text: var(--prieto);
  --text-muted: #5B6169;            /* Gris Spec falla AA sobre claro (~3:1) → se oscurece a AA */
  --accent: var(--verde-cuarto);    /* SOLO relleno en claro; verde como texto sobre blanco está prohibido */
  --accent-ink: #0F1115;            /* idéntico en ambos temas */
  --accent-label: var(--text);      /* verde-como-texto falla AA en claro (~1.5:1) → fallback a tinta */
  --info: #1E63D8;                  /* Azul RNC oscurecido para AA en claro */
  --warning: #9C5900;               /* texto ámbar legible: 5.13:1 sobre Blanco Ficha (AA); antes #B26A00 fallaba (3.98:1). El relleno sigue usando --ambar */
  --danger: #D42A2A;
  --success: var(--verde-cuarto);
  --ring: 0 0 0 2px color-mix(in oklab, var(--accent) 55%, transparent);
  --shadow-card: 0 1px 2px rgba(15, 17, 21, 0.06), 0 8px 24px rgba(15, 17, 21, 0.08);
  color-scheme: light;
}
