/* Nimble Design Tokens v2.0 — source of truth for Bootstrap 5.3, Tabulator and ECharts themes.
   Generated from tokens.json via Style Dictionary in production; hand-maintained for the prototype. */
:root{
  /* Brand — Nimble Blue (from logo swoosh) */
  --nim-blue-50:#F2F7FE; --nim-blue-100:#E3EEFC; --nim-blue-200:#C6DBF6; --nim-blue-300:#9CC0EE;
  --nim-blue-400:#4A8DE0; --nim-blue-500:#1D6FD6; --nim-blue-600:#0B5CBD; --nim-blue-700:#08468F;
  --nim-blue-800:#06356C; --nim-blue-900:#04254B;
  --nim-sun-300:#FFC622; --nim-sun-500:#FF8717;

  /* Neutral — cool slate */
  --nim-gray-0:#FFFFFF; --nim-gray-25:#FAFBFC; --nim-gray-50:#F6F7F9; --nim-gray-100:#EEF0F3;
  --nim-gray-200:#E3E6EB; --nim-gray-300:#CDD2DA; --nim-gray-400:#A3AAB6; --nim-gray-500:#7A8392;
  --nim-gray-600:#5B6472; --nim-gray-700:#3F4652; --nim-gray-800:#272C35; --nim-gray-900:#161A21;

  /* Status */
  --nim-success:#1A7F4B; --nim-success-bg:#E7F5EE; --nim-success-border:#B5DEC8;
  --nim-warning:#A15C00; --nim-warning-bg:#FFF4E0; --nim-warning-border:#F5D49A;
  --nim-danger:#C0362C;  --nim-danger-bg:#FDECEA;  --nim-danger-border:#F4C1BC;
  --nim-info:#08468F;    --nim-info-bg:#E3EEFC;    --nim-info-border:#C6DBF6;
  --nim-violet:#5B3FB5;  --nim-violet-bg:#F1EEFB;  --nim-violet-border:#D6CCF3;

  /* Semantic roles */
  --nim-canvas:var(--nim-gray-50);
  --nim-surface:var(--nim-gray-0);
  --nim-surface-sunken:var(--nim-gray-25);
  --nim-border:var(--nim-gray-200);
  --nim-border-strong:var(--nim-gray-300);
  --nim-text:var(--nim-gray-900);
  --nim-text-secondary:var(--nim-gray-700);
  --nim-text-muted:var(--nim-gray-600);
  --nim-text-disabled:var(--nim-gray-400);
  --nim-primary:var(--nim-blue-600);
  --nim-primary-hover:var(--nim-blue-700);
  --nim-primary-active:var(--nim-blue-800);
  --nim-primary-subtle:var(--nim-blue-100);
  --nim-primary-text:var(--nim-blue-700);
  --nim-focus-ring:0 0 0 3px rgba(11,92,189,.28);
  --nim-row-hover:var(--nim-blue-50);
  --nim-row-selected:var(--nim-blue-100);
  --nim-rail-bg:#0F1B2D; --nim-rail-fg:#A9B6CA; --nim-rail-active:#FFFFFF;

  /* Type */
  --nim-font:'IBM Plex Sans','IBM Plex Sans Devanagari',system-ui,-apple-system,'Segoe UI',sans-serif;
  --nim-font-mono:'IBM Plex Mono',ui-monospace,monospace;
  --nim-fs-xs:.75rem;   --nim-lh-xs:1rem;      /* 12/16 caption */
  --nim-fs-sm:.8125rem; --nim-lh-sm:1.25rem;   /* 13/20 table, meta */
  --nim-fs-md:.875rem;  --nim-lh-md:1.25rem;   /* 14/20 body */
  --nim-fs-lg:1rem;     --nim-lh-lg:1.5rem;    /* 16/24 section title */
  --nim-fs-xl:1.25rem;  --nim-lh-xl:1.75rem;   /* 20/28 page title */
  --nim-fs-2xl:1.5rem;  --nim-lh-2xl:2rem;     /* 24/32 */
  --nim-fs-3xl:1.875rem;--nim-lh-3xl:2.375rem; /* 30/38 KPI */

  /* Space — 4px base */
  --nim-s-1:4px; --nim-s-2:8px; --nim-s-3:12px; --nim-s-4:16px; --nim-s-5:20px; --nim-s-6:24px; --nim-s-8:32px; --nim-s-10:40px;

  /* Shape & elevation */
  --nim-radius-sm:4px; --nim-radius:6px; --nim-radius-lg:8px; --nim-radius-pill:999px;
  --nim-shadow-xs:0 1px 2px rgba(16,24,40,.05);
  --nim-shadow-sm:0 1px 3px rgba(16,24,40,.08),0 1px 2px rgba(16,24,40,.04);
  --nim-shadow-md:0 6px 16px -4px rgba(16,24,40,.12),0 2px 4px rgba(16,24,40,.04);
  --nim-shadow-lg:0 16px 40px -8px rgba(16,24,40,.20);

  /* Density — comfortable default */
  --nim-control-h:36px; --nim-row-h:40px; --nim-cell-px:12px; --nim-card-p:20px; --nim-gap:16px;

  /* Layout */
  --nim-rail-w:60px; --nim-sidebar-w:240px; --nim-topbar-h:52px;
}
[data-density="compact"]{
  --nim-control-h:30px; --nim-row-h:32px; --nim-cell-px:10px; --nim-card-p:16px; --nim-gap:12px;
}
/* Dark mode — tokens ready, screens designed later */
[data-bs-theme="dark"]{
  --nim-canvas:#0E1116; --nim-surface:#161A21; --nim-surface-sunken:#12161C;
  --nim-border:#272C35; --nim-border-strong:#3F4652;
  --nim-text:#EEF0F3; --nim-text-secondary:#CDD2DA; --nim-text-muted:#A3AAB6;
  --nim-primary:#4A8DE0; --nim-primary-hover:#6FA5E8; --nim-primary-subtle:#0F2A4D; --nim-primary-text:#9CC0EE;
  --nim-row-hover:#14243A; --nim-row-selected:#0F2A4D;
}
