:root {
  /* Núcleo */
  --kuantera-ink: #12324A;
  --kuantera-primary: #1B5C7A;
  --kuantera-accent: #3FC9B2;
  --kuantera-soft: #DDEEF3;
  --kuantera-bg: #F3F6F8;
  --kuantera-muted: #587587;
  --kuantera-white: #FFFFFF;
  /* primary */
  --kuantera-primary-50: #E5F0F5;
  --kuantera-primary-100: #D0E5EE;
  --kuantera-primary-200: #A6CFE1;
  --kuantera-primary-300: #6EB4D4;
  --kuantera-primary-400: #308FBB;
  --kuantera-primary-500: #1B5C7A;
  --kuantera-primary-600: #174E67;
  --kuantera-primary-700: #134055;
  --kuantera-primary-800: #12324A;
  --kuantera-primary-900: #0B2532;
  --kuantera-primary-950: #0B2032;
  /* accent */
  --kuantera-accent-50: #EBF6F4;
  --kuantera-accent-100: #DDF1EE;
  --kuantera-accent-200: #C2E7E1;
  --kuantera-accent-300: #9FDDD2;
  --kuantera-accent-400: #70D2C1;
  --kuantera-accent-500: #3FC9B2;
  --kuantera-accent-600: #30AA96;
  --kuantera-accent-700: #268777;
  --kuantera-accent-800: #1C6357;
  --kuantera-accent-900: #13433B;
  --kuantera-accent-950: #0D2E28;
  /* ink */
  --kuantera-ink-50: #F3F6F8;
  --kuantera-ink-100: #E6EEF2;
  --kuantera-ink-200: #DDEEF3;
  --kuantera-ink-300: #A6B7C1;
  --kuantera-ink-400: #7C96A7;
  --kuantera-ink-500: #587587;
  --kuantera-ink-600: #496170;
  --kuantera-ink-700: #3A4E5A;
  --kuantera-ink-800: #2C3A43;
  --kuantera-ink-900: #12324A;
  --kuantera-ink-950: #0B2032;
  /* success */
  --kuantera-success-50: #E8F5EF;
  --kuantera-success-100: #D8EEE4;
  --kuantera-success-200: #B6E2CE;
  --kuantera-success-300: #89D4B2;
  --kuantera-success-400: #4FC690;
  --kuantera-success-500: #2E9E6B;
  --kuantera-success-600: #268459;
  --kuantera-success-700: #1F6A48;
  --kuantera-success-800: #175036;
  --kuantera-success-900: #103826;
  --kuantera-success-950: #0C291C;
  /* warning */
  --kuantera-warning-50: #F9F3E9;
  --kuantera-warning-100: #F6ECDC;
  --kuantera-warning-200: #F1DDC1;
  --kuantera-warning-300: #ECCC9D;
  --kuantera-warning-400: #E9B76E;
  --kuantera-warning-500: #E9A23B;
  --kuantera-warning-600: #D88A18;
  --kuantera-warning-700: #AA6D13;
  --kuantera-warning-800: #7C4F0E;
  --kuantera-warning-900: #533509;
  --kuantera-warning-950: #372306;
  /* danger */
  --kuantera-danger-50: #F8EBEB;
  --kuantera-danger-100: #F4E0DF;
  --kuantera-danger-200: #EDC8C6;
  --kuantera-danger-300: #E5A8A6;
  --kuantera-danger-400: #DE7F7C;
  --kuantera-danger-500: #D9534F;
  --kuantera-danger-600: #C9302B;
  --kuantera-danger-700: #9E2622;
  --kuantera-danger-800: #731B19;
  --kuantera-danger-900: #4C1211;
  --kuantera-danger-950: #330C0B;
  /* info */
  --kuantera-info-50: #EAF0F6;
  --kuantera-info-100: #DDE7F0;
  --kuantera-info-200: #C1D4E6;
  --kuantera-info-300: #9DBDDA;
  --kuantera-info-400: #6D9FCE;
  --kuantera-info-500: #3B82C4;
  --kuantera-info-600: #316CA2;
  --kuantera-info-700: #275581;
  --kuantera-info-800: #1D3F5F;
  --kuantera-info-900: #132B41;
  --kuantera-info-950: #0D1D2C;
  /* Semántica de interfaz (claro) */
  --kuantera-surface: #FFFFFF;
  --kuantera-surface-2: #F3F6F8;
  --kuantera-line: #DDEEF3;
  --kuantera-line-strong: #B9CAD3;
  --kuantera-text: #12324A;
  /* Sobre fondos de color hace falta un token propio por tema: en claro el primario es oscuro y
     admite blanco encima; en oscuro el primario se aclara y el blanco cae a 2,84:1. El acento es
     menta en los dos temas, así que siempre lleva tinta encima. */
  --kuantera-on-primary: #FFFFFF;
  --kuantera-on-accent: #0B2032;
  --kuantera-on-danger: #FFFFFF;
  --kuantera-success-text: #268459;
  --kuantera-danger-text: #C9302B;
  /* Un paso más oscuro de la rampa: #587587 daba 4,49:1 sobre el fondo de la página y sobre las
     cabeceras de tabla, por debajo del 4,5:1 que exige WCAG AA para texto pequeño. El color de
     marca no se toca; cambia el token de interfaz que lo usaba como texto. */
  --kuantera-text-muted: var(--kuantera-ink-600);
  --kuantera-radius-sm: 6px; --kuantera-radius-md: 10px; --kuantera-radius-lg: 16px; --kuantera-radius-pill: 999px;
  --kuantera-shadow-soft: 0 1px 2px rgba(18,50,74,.06), 0 1px 3px rgba(18,50,74,.08);
  --kuantera-shadow-elevated: 0 8px 24px rgba(18,50,74,.12);
  --kuantera-font-head: "Poppins", "Segoe UI", Arial, sans-serif;
  --kuantera-font-body: "Inter", system-ui, Arial, sans-serif;
  --kuantera-font-mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
}

:root[data-theme="dark"], .dark {
  --kuantera-bg: #0B2032;
  --kuantera-surface: #12324A;
  --kuantera-surface2: #183D57;
  --kuantera-ink: #EAF2F6;
  --kuantera-muted: #9FB6C4;
  --kuantera-line: #244A63;
  --kuantera-primary: #4FA3C7;
  --kuantera-accent: #3FC9B2;
  --kuantera-surface: #12324A; --kuantera-surface-2: #183D57; --kuantera-text: #EAF2F6; --kuantera-text-muted: #9FB6C4; --kuantera-line-strong: #2F5A76;
  /* Sobre el primario aclarado del tema oscuro va tinta, no blanco. Y los verdes y rojos del 600
     están pensados para fondo claro: sobre la superficie oscura se leen a 2,5-2,9:1, así que como
     texto se usan los pasos 300. */
  --kuantera-on-primary: #0B2032;
  --kuantera-success-text: #89D4B2;
  --kuantera-danger-text: #E5A8A6;
}
