/* Tokens del design system de Aizy (DESIGN_SYSTEM.md §2-§6). Unica hoja donde
   un hex es legitimo: los componentes nombran roles (--aizy-action,
   --aizy-border...), nunca un escalon de gama ni un hex.
   La cargan knowledge_admin_v3_core.css e inbox_v3.css con @import; si cambia
   un valor, subir su ?v= en esos dos @import o el navegador sirve la cacheada.
   Contrato: tests/design_tokens_contract_test.php. */

:root {
  /* Tintas del logotipo. No son color de interfaz (§2.4). */
  --aizy-ink-black: #000000;
  --aizy-ink-blue: #0033FF;
  --aizy-ink-lilac: #CC99CC;

  /* Gamas (§2.1): once escalones de luminosidad identicos en las seis. */
  --aizy-blue-50: #F4F8FF;
  --aizy-blue-100: #E6EFFF;
  --aizy-blue-200: #CEDEFF;
  --aizy-blue-300: #AEC9FF;
  --aizy-blue-400: #82AAFF;
  --aizy-blue-500: #568AFF;
  --aizy-blue-600: #366CF2;
  --aizy-blue-700: #2656D1;
  --aizy-blue-800: #1942AD;
  --aizy-blue-900: #0F2F84;
  --aizy-blue-950: #061D5D;

  --aizy-lilac-50: #FCF5FC;
  --aizy-lilac-100: #F9E8F9;
  --aizy-lilac-200: #F1D3F0;
  --aizy-lilac-300: #E3B9E3;
  --aizy-lilac-400: #CC97CD;
  --aizy-lilac-500: #B478B4;
  --aizy-lilac-600: #9C5F9D;
  --aizy-lilac-700: #834B84;
  --aizy-lilac-800: #693A6A;
  --aizy-lilac-900: #4E294F;
  --aizy-lilac-950: #351936;

  --aizy-neutral-50: #F6F8FA;
  --aizy-neutral-100: #EBEFF4;
  --aizy-neutral-200: #D8DEE9;
  --aizy-neutral-300: #C1C9D8;
  --aizy-neutral-400: #A2ADBF;
  --aizy-neutral-500: #8691A6;
  --aizy-neutral-600: #6E798E;
  --aizy-neutral-700: #596477;
  --aizy-neutral-800: #464F5F;
  --aizy-neutral-900: #323946;
  --aizy-neutral-950: #20252F;
  /* Solo superficies de noche. */
  --aizy-neutral-920: #2E3643;
  --aizy-neutral-940: #212834;
  --aizy-neutral-960: #161C26;
  --aizy-neutral-975: #0E131C;

  --aizy-success-50: #F1FBF3;
  --aizy-success-100: #DEF6E3;
  --aizy-success-200: #BFEBCA;
  --aizy-success-300: #9BDBAB;
  --aizy-success-400: #6DC286;
  --aizy-success-500: #40A865;
  --aizy-success-600: #15904B;
  --aizy-success-700: #00773B;
  --aizy-success-800: #005F2D;
  --aizy-success-900: #004620;
  --aizy-success-950: #002E13;

  --aizy-warning-50: #FEF7ED;
  --aizy-warning-100: #FDECD5;
  --aizy-warning-200: #F9D8AE;
  --aizy-warning-300: #EFC081;
  --aizy-warning-400: #DBA049;
  --aizy-warning-500: #C28100;
  --aizy-warning-600: #A36C00;
  --aizy-warning-700: #875800;
  --aizy-warning-800: #6B4600;
  --aizy-warning-900: #4F3200;
  --aizy-warning-950: #352000;

  --aizy-danger-50: #FFF5F4;
  --aizy-danger-100: #FFE9E6;
  --aizy-danger-200: #FFD2CC;
  --aizy-danger-300: #FFB2A9;
  --aizy-danger-400: #F9877B;
  --aizy-danger-500: #E36258;
  --aizy-danger-600: #CA453D;
  --aizy-danger-700: #AC312C;
  --aizy-danger-800: #8C211E;
  --aizy-danger-900: #6A1513;
  --aizy-danger-950: #490808;

  /* Roles (§2.2): lo unico que se escribe en los componentes. */
  --aizy-bg: var(--aizy-neutral-50);
  --aizy-surface: #FFFFFF;
  --aizy-surface-raised: #FFFFFF;
  --aizy-border: var(--aizy-neutral-200);
  --aizy-border-field: var(--aizy-neutral-600);
  --aizy-text: var(--aizy-neutral-950);
  --aizy-text-muted: var(--aizy-neutral-700);
  --aizy-action: var(--aizy-blue-600);
  --aizy-action-hover: var(--aizy-blue-700);
  --aizy-action-tint: var(--aizy-blue-50);
  --aizy-on-action: #FFFFFF;
  --aizy-link: var(--aizy-blue-700);
  --aizy-focus: var(--aizy-blue-500);
  --aizy-info-bg: var(--aizy-blue-50);
  --aizy-info-text: var(--aizy-blue-800);
  --aizy-success: var(--aizy-success-700);
  --aizy-warning: var(--aizy-warning-700);
  --aizy-danger: var(--aizy-danger-600);
  --aizy-highlight: var(--aizy-lilac-100);

  /* ---- Roles de Aizy 2027 (KAN-358): estado tintado, realce y gráfica de día ---- */
  --aizy-highlight-text: var(--aizy-lilac-800);
  --aizy-highlight-border: var(--aizy-lilac-200);
  --aizy-info-border: var(--aizy-blue-200);
  --aizy-success-bg: var(--aizy-success-50);
  --aizy-success-border: var(--aizy-success-200);
  --aizy-success-text: var(--aizy-success-700);
  --aizy-warning-bg: var(--aizy-warning-50);
  --aizy-warning-border: var(--aizy-warning-200);
  --aizy-warning-text: var(--aizy-warning-700);
  --aizy-danger-bg: var(--aizy-danger-50);
  --aizy-danger-border: var(--aizy-danger-200);
  --aizy-danger-text: var(--aizy-danger-700);
  --aizy-chart-1: var(--aizy-blue-600);
  --aizy-chart-2: var(--aizy-lilac-600);
  /* Series 3-8 de gráfica (KAN-423): derivadas de las primitivas; la noche usa el escalón 1100 - día.
     Contraste mínimo 3:1 sobre la tarjeta (el peor es neutral-500 de día, 3,17:1 sobre #FFFFFF). */
  --aizy-chart-3: var(--aizy-success-600);
  --aizy-chart-4: var(--aizy-warning-500);
  --aizy-chart-5: var(--aizy-danger-500);
  --aizy-chart-6: var(--aizy-neutral-500);
  --aizy-chart-7: var(--aizy-blue-900);
  --aizy-chart-8: var(--aizy-warning-800);
  /* Relleno de los campos dentro de tarjetas y diálogos (KAN-423). El borde sigue siendo
     --aizy-border-field (3:1); de noche coincide con la tarjeta y el campo vuelve al control base. */
  --aizy-field-bg: var(--aizy-neutral-100);

  /* Elevacion (§6): tres niveles y el anillo de foco. Cambian de noche. */
  --aizy-shadow-1: 0 1px 2px rgba(32, 37, 47, 0.05), 0 2px 10px rgba(22, 29, 42, 0.04);
  --aizy-shadow-2: 0 8px 20px rgba(30, 41, 59, 0.08);
  --aizy-shadow-3: 0 18px 48px rgba(30, 41, 59, 0.12);
  --aizy-focus-ring: 0 0 0 4px rgba(86, 138, 255, 0.28);

  /* Marcas de terceros (§7, KAN-423): no es un rol de color. Se aplica como
     `filter: var(--aizy-brand-filter)` a logos monocromos en <img>; de noche los pasa a
     blanco y ninguna hoja necesita regla de noche propia. Cambia de noche. */
  --aizy-brand-filter: none;

  /* Tipografia (§3). */
  --aizy-font-ui: "Manrope", "Segoe UI", sans-serif;
  --aizy-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  --aizy-size-micro: 11px;
  --aizy-leading-micro: 1.4;
  --aizy-size-dense: 12px;
  --aizy-leading-dense: 1.45;
  --aizy-size-body-sm: 13px;
  --aizy-leading-body-sm: 1.5;
  --aizy-size-body: 15px;
  --aizy-leading-body: 1.55;
  --aizy-size-title-sm: 18px;
  --aizy-leading-title-sm: 1.3;
  --aizy-size-title: 22px;
  --aizy-leading-title: 1.2;
  --aizy-size-screen: 28px;
  --aizy-leading-screen: 1.15;

  --aizy-weight-body: 400;
  --aizy-weight-label: 500;
  --aizy-weight-emphasis: 600;
  --aizy-weight-title: 700;
  --aizy-weight-display: 800;

  /* Espaciado (§4): escala de 4. */
  --aizy-space-4: 4px;
  --aizy-space-8: 8px;
  --aizy-space-12: 12px;
  --aizy-space-16: 16px;
  --aizy-space-20: 20px;
  --aizy-space-24: 24px;
  --aizy-space-32: 32px;
  --aizy-space-48: 48px;

  /* Radios (§5). */
  --aizy-radius-sm: 8px;
  --aizy-radius-md: 12px;
  --aizy-radius-lg: 16px;
  --aizy-radius-pill: 999px;
}

/* Noche: solo reasigna roles, nunca gamas (§2.4 regla 4). Selector sin
   data-ka-visual-mode porque inbox no lo lleva; ka-theme-toggle.js pone
   .ka-night en el body de las dos superficies. */
body.ka-night {
  --aizy-bg: var(--aizy-neutral-975);
  --aizy-surface: var(--aizy-neutral-960);
  --aizy-surface-raised: var(--aizy-neutral-940);
  --aizy-border: var(--aizy-neutral-920);
  --aizy-text: var(--aizy-neutral-100);
  --aizy-text-muted: var(--aizy-neutral-400);
  --aizy-action: var(--aizy-blue-500);
  --aizy-action-hover: var(--aizy-blue-400);
  --aizy-action-tint: var(--aizy-blue-950);
  --aizy-on-action: var(--aizy-neutral-975);
  --aizy-link: var(--aizy-blue-400);
  --aizy-info-bg: var(--aizy-blue-950);
  --aizy-info-text: var(--aizy-blue-200);
  --aizy-success: var(--aizy-success-400);
  --aizy-warning: var(--aizy-warning-300);
  --aizy-danger: var(--aizy-danger-400);
  --aizy-highlight: var(--aizy-lilac-900);

  /* ---- Roles de Aizy 2027 (KAN-358): estado tintado, realce y gráfica de noche ---- */
  --aizy-highlight-text: var(--aizy-lilac-200);
  --aizy-highlight-border: var(--aizy-lilac-800);
  --aizy-info-border: var(--aizy-blue-900);
  --aizy-success-bg: var(--aizy-success-950);
  --aizy-success-border: var(--aizy-success-900);
  --aizy-success-text: var(--aizy-success-400);
  --aizy-warning-bg: var(--aizy-warning-950);
  --aizy-warning-border: var(--aizy-warning-900);
  --aizy-warning-text: var(--aizy-warning-300);
  --aizy-danger-bg: var(--aizy-danger-950);
  --aizy-danger-border: var(--aizy-danger-900);
  --aizy-danger-text: var(--aizy-danger-400);
  --aizy-chart-1: var(--aizy-blue-500);
  --aizy-chart-2: var(--aizy-lilac-500);
  --aizy-chart-3: var(--aizy-success-500);
  --aizy-chart-4: var(--aizy-warning-600);
  --aizy-chart-5: var(--aizy-danger-600);
  --aizy-chart-6: var(--aizy-neutral-600);
  --aizy-chart-7: var(--aizy-blue-200);
  --aizy-chart-8: var(--aizy-warning-300);
  --aizy-field-bg: var(--aizy-neutral-960);

  --aizy-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.40);
  --aizy-shadow-2: 0 8px 22px rgba(0, 0, 0, 0.55);
  --aizy-shadow-3: 0 18px 48px rgba(0, 0, 0, 0.70);

  --aizy-brand-filter: brightness(0) invert(1);
}
