/* ============================================================
   STOREFRONT V2 — DESIGN TOKENS  (Sprint UX-1, §4 design doc)
   ------------------------------------------------------------
   Single source of truth de variables CSS del storefront
   cross-vertical. Las tokens del config por tenant
   (StorefrontConfig.color_primario / color_secundario) se
   exponen como vars `--tenant-color-*` desde base_storefront.html
   y se mapean aqui como `--sf-color-primary`.

   Naming: kebab-case con prefijo `--sf-` para distinguir del
   resto del proyecto (core/ui usa `--cu-`, design-system usa
   `--ds-`).  Convencion estable: NO renombrar variables ya
   referenciadas por templates.

   Dark mode: activa via `.dark` class en <html> (anti-FOUC init
   en base_storefront.html lee localStorage `sf-theme`) o via
   `prefers-color-scheme: dark` (fallback OS).
   ============================================================ */

:root {
  /* === Brand colors (sobrescribibles por StorefrontConfig) === */
  /* --tenant-color-primary lo inyecta base_storefront.html
     desde storefront_cfg.color_primario. Fallback al brand
     default del storefront (sky-600). */
  --sf-color-primary: var(--tenant-color-primary, #0ea5e9);
  --sf-color-primary-fg: #ffffff;
  --sf-color-primary-50: #f0f9ff;
  --sf-color-primary-500: #0ea5e9;
  --sf-color-primary-600: #0284c7;
  --sf-color-primary-700: #0369a1;

  --sf-color-accent: #f59e0b;

  /* === Semantic colors === */
  --sf-color-success: #16a34a;
  --sf-color-warning: #f59e0b;
  --sf-color-danger: #e11d48;
  --sf-color-info: #2563eb;
  /* IT264: la escala semantica tenia CUATRO tonos, pero los tableros de
     estado del producto usan SEIS. Los dos que faltaban (un estado
     "en proceso/mantenimiento" y un estado "inactivo") se venian
     resolviendo con hex fijos dentro del <style> de cada vertical
     (restaurante/sala: #a855f7 y #64748b) — o sea, tokens inventados
     por pantalla, justo lo que S25 prohibe. Al existir aca, el tono
     entra por `.sf-tone--secondary` / `--muted` y adapta solo.
     `muted` SI flipea por tema: gris slate-500 sobre fondo oscuro se
     hunde (2.6:1) y es el tono de "fuera de servicio", que tiene que
     seguir siendo legible. */
  --sf-color-secondary: #8b5cf6;
  --sf-color-muted: #64748b;

  /* === Surface (light) === */
  --sf-color-bg: #ffffff;
  --sf-color-bg-elevated: #f8fafc;
  --sf-color-bg-subtle: #f1f5f9;
  --sf-color-text: #0f172a;
  --sf-color-text-muted: #475569;
  /* IT70: tinta TERCIARIA — decorativa (iconos de estado vacío, glifos
     de fondo). NO es texto: no le aplica el 4.5:1 de AA, debe quedar
     tenue pero visible. Para texto usar --sf-color-text-muted. */
  --sf-color-text-subtle: #94a3b8;
  --sf-color-border: #e2e8f0;
  /* IT261: bordes NO-base con consumidor real. `soft` es el separador
     interno translucido (filas de tabla del storefront); `strong` es el
     borde de foco/hover de un input. Antes vivian como fallback de un
     `var()` fantasma, es decir congelados en su valor light. */
  --sf-color-border-soft: rgb(148 163 184 / 0.18);
  --sf-color-border-strong: #94a3b8;

  /* === Typography family === */
  --sf-font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --sf-font-display: "Poppins", var(--sf-font-sans);
  --sf-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

  /* === Typography scale (Display / H1-H6 / Body L-M-S / Caption / Overline) === */
  --sf-font-display-size: 3rem;       /* 48px */
  --sf-font-h1: 2.25rem;               /* 36px */
  --sf-font-h3: 1.5rem;                /* 24px */
  --sf-font-h4: 1.25rem;               /* 20px */
  --sf-font-h5: 1.125rem;              /* 18px */
  --sf-font-h6: 1rem;                  /* 16px */
  --sf-font-body-lg: 1.125rem;         /* 18px */
  --sf-font-body: 1rem;                /* 16px */
  --sf-font-body-sm: 0.875rem;         /* 14px */
  --sf-font-caption: 0.75rem;          /* 12px */
  --sf-font-overline: 0.625rem;        /* 10px */

  /* === Line-height === */
  --sf-leading-tight: 1.1;
  --sf-leading-snug: 1.25;
  --sf-leading-normal: 1.5;
  --sf-leading-relaxed: 1.65;

  /* === Letter-spacing === */
  --sf-tracking-tight: -0.02em;
  --sf-tracking-wide: 0.025em;
  --sf-tracking-wider: 0.12em;

  /* === Spacing (4-base) === */
  --sf-space-1: 0.25rem;   /* 4px */
  --sf-space-2: 0.5rem;    /* 8px */
  --sf-space-3: 0.75rem;   /* 12px */
  --sf-space-4: 1rem;      /* 16px */
  --sf-space-5: 1.25rem;   /* 20px — consumidor: dashboard_shell.css (padding
                              de paneles). Era un hueco de la escala. */
  --sf-space-6: 1.5rem;    /* 24px */
  --sf-space-8: 2rem;      /* 32px */
  --sf-space-12: 3rem;     /* 48px */
  --sf-space-16: 4rem;     /* 64px */

  /* === Radius === */
  --sf-radius-sm: 0.25rem;     /* 4px */
  --sf-radius-md: 0.5rem;      /* 8px */
  --sf-radius-lg: 0.75rem;     /* 12px */
  --sf-radius-xl: 1rem;        /* 16px */
  --sf-radius-2xl: 1.5rem;     /* 24px */
  --sf-radius-full: 9999px;

  /* === Shadows === */
  --sf-shadow-xs: 0 1px 2px rgb(15 23 42 / 0.04);   /* consumidor: search.css */
  --sf-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --sf-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --sf-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --sf-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --sf-shadow-focus: 0 0 0 3px rgb(14 165 233 / 0.25);

  /* === Motion === */
  --sf-motion-fast: 150ms;
  --sf-motion-standard: 300ms;
  --sf-motion-slow: 500ms;
  --sf-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --sf-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* === Data-viz (IT66) ===================================================
   * Paleta CANÓNICA de visualización. Antes cada dashboard inventaba sus
   * hex (POS + 10 dashboards de vet) — y la que usaba POS FALLABA las
   * pruebas de daltonismo: `#6366f1` vs `#3b82f6` daban ΔE 7.2 con visión
   * NORMAL (piso 15), o sea "Transferencia" y "Tarjeta" se veían iguales.
   *
   * CATEGÓRICA (identidad: series, métodos de pago, categorías). Se asigna
   * en ORDEN FIJO, nunca ciclada: la serie 9 va a "Otros", no a un hue
   * generado. Ambos modos están SELECCIONADOS (dark no es un flip
   * automático: son los mismos 8 hues re-escalonados para fondo oscuro).
   * Validado con el validador de la skill dataviz contra las superficies
   * reales del proyecto (#ffffff / #0f172a): pasa banda de lightness,
   * piso de croma, separación CVD (peor par adyacente ΔE 9.1 light /
   * 8.4 dark, objetivo ≥8) y piso de visión normal (19.6 / 19.3, ≥15).
   * En light, 3 slots quedan bajo 3:1 vs el fondo → REGLA DE RELIEVE:
   * esos marks necesitan label visible o vista de tabla (no color solo). */
  --sf-viz-1: #2a78d6;   /* blue    */
  --sf-viz-2: #eb6834;   /* orange  */
  --sf-viz-3: #1baf7a;   /* aqua    */
  --sf-viz-4: #eda100;   /* yellow  */
  --sf-viz-5: #e87ba4;   /* magenta */
  --sf-viz-6: #008300;   /* green   */
  --sf-viz-7: #4a3aa7;   /* violet  */
  --sf-viz-8: #e34948;   /* red     */

  /* SECUENCIAL (magnitud: heatmaps, choropleths). UNA sola hue de claro a
   * oscuro — nunca un arcoíris. Monotónica en lightness OKLab
   * (0.968→0.438) y `l0` se distingue del fondo (contraste 1.10) para que
   * la grilla siga leyéndose donde el valor es cero. */
  --sf-viz-seq-0: #f1f5f9;
  --sf-viz-seq-1: #cfe3fb;
  --sf-viz-seq-2: #9ec7f7;
  --sf-viz-seq-3: #5fa5ee;
  --sf-viz-seq-4: #2a78d6;
  --sf-viz-seq-5: #17509a;

  /* Superficie del chart y ejes/grilla: recesivos, nunca compiten con los
   * marks. El texto de un chart usa tokens de TEXTO (--sf-color-text*),
   * jamás el color de la serie. */
  --sf-viz-surface: var(--sf-color-bg);
  --sf-viz-grid: color-mix(in srgb, var(--sf-color-border) 60%, transparent);

  /* === Z-index (solo los pasos con consumidores; la escala completa y
     los breakpoints muertos se eliminaron 2026-08-09 — re-agregar un paso
     SOLO junto con su consumidor) === */
  --sf-z-dropdown: 1000;
  --sf-z-sticky: 1020;
}

/* === Dark mode via prefers-color-scheme (cuando el usuario nunca eligio) === */
@media (prefers-color-scheme: dark) {
  :root:not(.light):not([data-theme="light"]) {
    --sf-color-bg: #0f172a;
    --sf-color-bg-elevated: #1e293b;
    --sf-color-bg-subtle: #334155;
    --sf-color-text: #f1f5f9;
    --sf-color-text-muted: #94a3b8;
    --sf-color-text-subtle: #64748b;
    --sf-color-border: #334155;
    --sf-color-border-soft: rgb(148 163 184 / 0.22);
    --sf-color-border-strong: #64748b;
    --sf-color-muted: #94a3b8;

    /* Data-viz dark (IT66): pasos SELECCIONADOS para el fondo oscuro
       (#0f172a), no un flip del set light. Categórica validada como
       conjunto; secuencial invertida en luminancia (oscuro→claro) y
       monotónica ascendente (L 0.279→0.753). */
    --sf-viz-1: #3987e5;
    --sf-viz-2: #d95926;
    --sf-viz-3: #199e70;
    --sf-viz-4: #c98500;
    --sf-viz-5: #d55181;
    --sf-viz-6: #008300;
    --sf-viz-7: #9085e9;
    --sf-viz-8: #e66767;
    --sf-viz-seq-0: #1e293b;
    --sf-viz-seq-1: #1e3a5f;
    --sf-viz-seq-2: #24568f;
    --sf-viz-seq-3: #2f74c0;
    --sf-viz-seq-4: #3987e5;
    --sf-viz-seq-5: #7db3f0;
  }
}

/* === Dark mode explicit (class `dark` sobre <html>, set por anti-FOUC init) === */
.dark,
[data-theme="dark"] {
  --sf-color-bg: #0f172a;
  --sf-color-bg-elevated: #1e293b;
  --sf-color-bg-subtle: #334155;
  --sf-color-text: #f1f5f9;
  --sf-color-text-muted: #94a3b8;
  --sf-color-text-subtle: #64748b;
  --sf-color-border: #334155;
  --sf-color-border-soft: rgb(148 163 184 / 0.22);
  --sf-color-border-strong: #64748b;
  --sf-color-muted: #94a3b8;
  --sf-shadow-focus: 0 0 0 3px rgb(56 189 248 / 0.35);

  /* Data-viz dark (IT66): pasos SELECCIONADOS para el fondo oscuro
     (#0f172a), no un flip del set light. Categórica validada como
     conjunto; secuencial invertida en luminancia (oscuro→claro) y
     monotónica ascendente (L 0.279→0.753). */
  --sf-viz-1: #3987e5;
  --sf-viz-2: #d95926;
  --sf-viz-3: #199e70;
  --sf-viz-4: #c98500;
  --sf-viz-5: #d55181;
  --sf-viz-6: #008300;
  --sf-viz-7: #9085e9;
  --sf-viz-8: #e66767;
  --sf-viz-seq-0: #1e293b;
  --sf-viz-seq-1: #1e3a5f;
  --sf-viz-seq-2: #24568f;
  --sf-viz-seq-3: #2f74c0;
  --sf-viz-seq-4: #3987e5;
  --sf-viz-seq-5: #7db3f0;

}
