/* ================================================================================================
   PLATFORM SHELL (#24E) — TOKENS DE DISEÑO
   ================================================================================================
   Única fuente de color del shell: ningún otro archivo de platform-shell/ escribe un hex, rgb()
   o hsl(); todos consumen estas variables (contrato verificado por las pruebas 24E).

   Paleta de marca (contexto maestro §4): Midnight Navy, Near Black, Deep Blue, Steel Blue, Cloud,
   White y Slate. Los neutros derivados existen para bordes, superficies y texto secundario con
   contraste AA medido. Éxito / advertencia / peligro son SEMÁNTICOS: sólo describen un estado
   operativo, nunca decoran.

   Tipografía: Geist Sans / Geist Mono cuando el sistema las tiene instaladas. No se empaqueta
   ninguna fuente ni se pide a una CDN: la pila cae a la tipografía del sistema sin saltos.
   ================================================================================================ */

:root {
  /* --- Paleta de marca ------------------------------------------------------------------------ */
  --ps-midnight: #07111F;
  --ps-near-black: #0A0D12;
  --ps-deep-blue: #102A43;
  --ps-steel: #204B72;
  --ps-cloud: #F5F7FA;
  --ps-white: #FFFFFF;
  --ps-slate: #667085;

  /* --- Neutros derivados ---------------------------------------------------------------------- */
  --ps-ink-2: #344054;
  --ps-ink-3: #475467;
  --ps-line-soft: #EEF1F5;
  --ps-line-base: #E4E7EC;
  --ps-line-firm: #D0D5DD;
  --ps-surface-tint: #FAFBFC;
  --ps-steel-wash: #EEF3F8;
  --ps-steel-mist: #DCE6F0;
  --ps-steel-deep: #183A59;
  --ps-midnight-line: #16233A;
  --ps-midnight-hover: #0F1C30;
  --ps-midnight-active: #13243D;
  --ps-midnight-fg: #C9D2DE;
  --ps-midnight-fg-muted: #8C98A9;

  /* --- Semánticos (sólo estado operativo) ---------------------------------------------------- */
  --ps-success-fg: #0E6245;
  --ps-success-bg: #E8F5EF;
  --ps-success-line: #B7DEC9;
  --ps-warning-fg: #8A4B08;
  --ps-warning-bg: #FDF3E4;
  --ps-warning-line: #F2D3A6;
  --ps-danger-fg: #A0281C;
  --ps-danger-bg: #FCEDEB;
  --ps-danger-line: #F1C2BC;
  --ps-info-line: var(--ps-steel-mist);

  /* --- Transparencias (overlays y sombras) ---------------------------------------------------- */
  --ps-scrim: rgba(7, 17, 31, .44);
  --ps-header-glass: rgba(245, 247, 250, .86);
  --ps-shadow-ink: rgba(10, 13, 18, .06);
  --ps-shadow-ink-soft: rgba(10, 13, 18, .04);
  --ps-shadow-overlay: rgba(7, 17, 31, .22);
  --ps-focus-halo: rgba(32, 75, 114, .22);
  --ps-skeleton-a: #EDF0F4;
  --ps-skeleton-b: #F6F8FA;

  /* --- Alias semánticos: qué significa cada color en la interfaz ----------------------------- */
  --ps-bg-canvas: var(--ps-cloud);
  --ps-bg-surface: var(--ps-white);
  --ps-bg-subtle: var(--ps-surface-tint);
  --ps-bg-hover: var(--ps-line-soft);
  --ps-bg-selected: var(--ps-steel-wash);
  --ps-bg-header: var(--ps-header-glass);
  --ps-bg-inverse: var(--ps-deep-blue);
  --ps-fg: var(--ps-near-black);
  --ps-fg-2: var(--ps-ink-2);
  --ps-fg-3: var(--ps-ink-3);
  --ps-fg-muted: var(--ps-slate);
  --ps-fg-inverse: var(--ps-white);
  --ps-fg-accent: var(--ps-steel);
  --ps-line: var(--ps-line-base);
  --ps-line-strong: var(--ps-line-firm);
  --ps-line-subtle: var(--ps-line-soft);
  --ps-accent: var(--ps-steel);
  --ps-accent-strong: var(--ps-steel-deep);
  --ps-primary-bg: var(--ps-deep-blue);
  --ps-primary-bg-hover: var(--ps-midnight);
  --ps-primary-fg: var(--ps-white);
  --ps-focus: var(--ps-steel);

  --ps-sidebar-bg: var(--ps-midnight);
  --ps-sidebar-line: var(--ps-midnight-line);
  --ps-sidebar-fg: var(--ps-midnight-fg);
  --ps-sidebar-fg-muted: var(--ps-midnight-fg-muted);
  --ps-sidebar-fg-active: var(--ps-white);
  --ps-sidebar-hover: var(--ps-midnight-hover);
  --ps-sidebar-active: var(--ps-midnight-active);
  --ps-sidebar-mark-bg: var(--ps-white);
  --ps-sidebar-mark-fg: var(--ps-midnight);

  /* --- Tipografía ----------------------------------------------------------------------------- */
  --ps-font-sans: "Geist", "Geist Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --ps-font-mono: "Geist Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas,
    "Liberation Mono", monospace;
  --ps-text-2xs: .6875rem;   /* 11 */
  --ps-text-xs: .75rem;      /* 12 */
  --ps-text-sm: .8125rem;    /* 13 */
  --ps-text-md: .875rem;     /* 14 */
  --ps-text-lg: 1rem;        /* 16 */
  --ps-text-xl: 1.25rem;     /* 20 */
  --ps-text-2xl: 1.5rem;     /* 24 */
  --ps-text-3xl: 1.75rem;    /* 28 */
  --ps-weight-regular: 400;
  --ps-weight-medium: 500;
  --ps-weight-semibold: 600;
  --ps-tracking-tight: -.018em;
  --ps-tracking-wide: .08em;
  --ps-tracking-mark: .22em;
  --ps-leading: 1.5;

  /* --- Espacio, forma, profundidad ----------------------------------------------------------- */
  --ps-space-1: 4px;
  --ps-space-2: 8px;
  --ps-space-3: 12px;
  --ps-space-4: 16px;
  --ps-space-5: 20px;
  --ps-space-6: 24px;
  --ps-space-7: 28px;
  --ps-space-8: 32px;
  --ps-space-10: 40px;
  --ps-space-12: 48px;
  --ps-radius-xs: 4px;
  --ps-radius-sm: 6px;
  --ps-radius-md: 8px;
  --ps-radius-lg: 12px;
  --ps-radius-xl: 16px;
  --ps-radius-pill: 999px;
  --ps-shadow-sm: 0 1px 2px var(--ps-shadow-ink-soft);
  --ps-shadow-md: 0 1px 2px var(--ps-shadow-ink-soft), 0 6px 16px var(--ps-shadow-ink);
  --ps-shadow-lg: 0 24px 64px var(--ps-shadow-overlay);

  /* --- Movimiento: mínimo y funcional --------------------------------------------------------- */
  --ps-ease: cubic-bezier(.2, 0, 0, 1);
  --ps-duration-fast: 120ms;
  --ps-duration-base: 200ms;

  /* --- Estructura ------------------------------------------------------------------------------ */
  --ps-sidebar-w: 248px;
  --ps-sidebar-w-rail: 68px;
  --ps-header-h: 56px;
  --ps-bottom-nav-h: 60px;
  --ps-actionbar-h: 61px;
  --ps-content-max: 1440px;
  --ps-gutter: 32px;
  --ps-control-h: 34px;
  --ps-control-h-sm: 28px;
  --ps-touch: 44px;
  --ps-row-pad-y: 10px;
  --ps-z-sidebar: 40;
  --ps-z-header: 30;
  --ps-z-actionbar: 35;
  --ps-z-overlay: 60;
  --ps-z-toast: 80;

  color-scheme: light;
}

/* --- Tema oscuro: explícito o por preferencia del sistema ------------------------------------- */
:root[data-theme="dark"] {
  --ps-bg-canvas: var(--ps-near-black);
  --ps-bg-surface: #0F1620;
  --ps-bg-subtle: #121B27;
  --ps-bg-hover: #162231;
  --ps-bg-selected: #13263B;
  --ps-bg-header: rgba(10, 13, 18, .86);
  --ps-bg-inverse: var(--ps-cloud);
  --ps-fg: var(--ps-cloud);
  --ps-fg-2: #D0D5DD;
  --ps-fg-3: #B4BDCA;
  --ps-fg-muted: #98A2B3;
  --ps-fg-inverse: var(--ps-near-black);
  --ps-fg-accent: #8FB3D9;
  --ps-line: #1E2A38;
  --ps-line-strong: #2A3A4D;
  --ps-line-subtle: #172230;
  --ps-accent: #8FB3D9;
  --ps-accent-strong: #A4C3E3;
  --ps-primary-bg: var(--ps-steel);
  --ps-primary-bg-hover: #2B5F8F;
  --ps-primary-fg: var(--ps-white);
  --ps-focus: #8FB3D9;
  --ps-focus-halo: rgba(143, 179, 217, .28);
  --ps-sidebar-bg: var(--ps-midnight);
  --ps-sidebar-line: var(--ps-midnight-line);
  --ps-success-fg: #5FC79A;
  --ps-success-bg: rgba(95, 199, 154, .10);
  --ps-success-line: rgba(95, 199, 154, .28);
  --ps-warning-fg: #E9B766;
  --ps-warning-bg: rgba(233, 183, 102, .10);
  --ps-warning-line: rgba(233, 183, 102, .28);
  --ps-danger-fg: #F08E82;
  --ps-danger-bg: rgba(240, 142, 130, .10);
  --ps-danger-line: rgba(240, 142, 130, .28);
  --ps-info-line: rgba(143, 179, 217, .32);
  --ps-shadow-ink: rgba(0, 0, 0, .28);
  --ps-shadow-ink-soft: rgba(0, 0, 0, .2);
  --ps-shadow-overlay: rgba(0, 0, 0, .5);
  --ps-skeleton-a: #141E2B;
  --ps-skeleton-b: #1A2636;
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  :root[data-theme="system"] {
    --ps-bg-canvas: var(--ps-near-black);
    --ps-bg-surface: #0F1620;
    --ps-bg-subtle: #121B27;
    --ps-bg-hover: #162231;
    --ps-bg-selected: #13263B;
    --ps-bg-header: rgba(10, 13, 18, .86);
    --ps-bg-inverse: var(--ps-cloud);
    --ps-fg: var(--ps-cloud);
    --ps-fg-2: #D0D5DD;
    --ps-fg-3: #B4BDCA;
    --ps-fg-muted: #98A2B3;
    --ps-fg-inverse: var(--ps-near-black);
    --ps-fg-accent: #8FB3D9;
    --ps-line: #1E2A38;
    --ps-line-strong: #2A3A4D;
    --ps-line-subtle: #172230;
    --ps-accent: #8FB3D9;
    --ps-accent-strong: #A4C3E3;
    --ps-primary-bg: var(--ps-steel);
    --ps-primary-bg-hover: #2B5F8F;
    --ps-primary-fg: var(--ps-white);
    --ps-focus: #8FB3D9;
    --ps-focus-halo: rgba(143, 179, 217, .28);
    --ps-success-fg: #5FC79A;
    --ps-success-bg: rgba(95, 199, 154, .10);
    --ps-success-line: rgba(95, 199, 154, .28);
    --ps-warning-fg: #E9B766;
    --ps-warning-bg: rgba(233, 183, 102, .10);
    --ps-warning-line: rgba(233, 183, 102, .28);
    --ps-danger-fg: #F08E82;
    --ps-danger-bg: rgba(240, 142, 130, .10);
    --ps-danger-line: rgba(240, 142, 130, .28);
  --ps-info-line: rgba(143, 179, 217, .32);
    --ps-shadow-ink: rgba(0, 0, 0, .28);
    --ps-shadow-ink-soft: rgba(0, 0, 0, .2);
    --ps-shadow-overlay: rgba(0, 0, 0, .5);
    --ps-skeleton-a: #141E2B;
    --ps-skeleton-b: #1A2636;
    color-scheme: dark;
  }
}

/* --- Densidad: la misma información, dos ritmos -------------------------------------------- */
:root[data-density="compact"] {
  --ps-control-h: 30px;
  --ps-control-h-sm: 26px;
  --ps-row-pad-y: 6px;
}
@media (max-width: 1023px) {
  :root { --ps-gutter: 20px; }
}
@media (max-width: 639px) {
  :root { --ps-gutter: 16px; }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --ps-duration-fast: 0ms;
    --ps-duration-base: 0ms;
  }
}
