/* ============================================================
   GOGGLES — DESIGN TOKENS
   Ported from the Goggles Design System handoff
   (_ds_reference/tokens/{colors,typography,spacing}.css).
   Light theme on :root, dark theme via [data-theme="dark"].
   ============================================================ */

:root {
  color-scheme: light;

  /* ---- Neutral scale (cool gray, faint green-slate cast) ---- */
  --neutral-0:   #ffffff;
  --neutral-50:  #f7f8f8;
  --neutral-100: #eef1f0;
  --neutral-200: #e1e5e4;
  --neutral-300: #cbd1cf;
  --neutral-400: #9aa3a1;
  --neutral-500: #6b7472;
  --neutral-600: #4d5453;
  --neutral-700: #393f3e;
  --neutral-800: #262b2a;
  --neutral-900: #181c1b;
  --neutral-950: #0e1110;

  /* ---- Accent: jade / signal green ---- */
  --green-50:  #e8f8ef;
  --green-100: #c7eedb;
  --green-200: #92ddb8;
  --green-300: #54c890;
  --green-400: #1cae6f;
  --green-500: #0f9d63; /* primary accent */
  --green-600: #0b8353;
  --green-700: #0a6743;
  --green-800: #0a5036;
  --green-900: #093d2b;

  /* ---- Semantic hues ---- */
  --red-50:   #fdecec;
  --red-100:  #fbd5d5;
  --red-400:  #f06363;
  --red-500:  #dc2626;
  --red-600:  #be1c1c;
  --red-700:  #991b1b;

  --amber-50:  #fdf3e3;
  --amber-100: #fbe6c0;
  --amber-400: #f0a437;
  --amber-500: #d97706;
  --amber-600: #b45f06;
  --amber-700: #8a4a07;

  --blue-50:  #e9f1fe;
  --blue-100: #cfe0fc;
  --blue-400: #5b8def;
  --blue-500: #2563eb;
  --blue-600: #1d4fc4;
  --blue-700: #1b429e;

  /* ---- Data-viz categorical (entity / series colors) ---- */
  --viz-1: #0f9d63; /* jade   */
  --viz-2: #2563eb; /* blue   */
  --viz-3: #8b5cf6; /* violet */
  --viz-4: #d97706; /* amber  */
  --viz-5: #e11d63; /* rose   */
  --viz-6: #0891b2; /* cyan   */
  --viz-7: #14b8a6; /* teal   */
  --viz-8: #64748b; /* slate  */

  /* ---- Data-viz sequential (counts / intensity heatmaps) ---- */
  --seq-1: #e8f8ef;
  --seq-2: #b7e8cd;
  --seq-3: #79d2a4;
  --seq-4: #2fb079;
  --seq-5: #0f9d63;
  --seq-6: #0a6743;

  /* ---- Surfaces ---- */
  --surface-app:      var(--neutral-50);
  --surface-card:     var(--neutral-0);
  --surface-sunken:   var(--neutral-100);
  --surface-hover:    var(--neutral-100);
  --surface-active:   var(--neutral-200);
  --surface-inverse:  var(--neutral-900);
  --surface-overlay:  rgba(14, 17, 16, 0.45);

  /* ---- Text ---- */
  --text-primary:   var(--neutral-900);
  --text-secondary: var(--neutral-600);
  --text-muted:     var(--neutral-500);
  --text-faint:     var(--neutral-400);
  --text-inverse:   var(--neutral-0);
  --text-accent:    var(--green-700);
  --text-link:      var(--green-700);

  /* ---- Borders ---- */
  --border-subtle:  var(--neutral-200);
  --border-default: var(--neutral-300);
  --border-strong:  var(--neutral-400);
  --border-focus:   var(--green-500);

  /* ---- Accent (interactive) ---- */
  --accent:          var(--green-500);
  --accent-hover:    var(--green-600);
  --accent-active:   var(--green-700);
  --accent-soft:     var(--green-50);
  --accent-soft-fg:  var(--green-700);
  --accent-ring:     rgba(15, 157, 99, 0.32);

  /* ---- Status: foreground / soft background pairs ---- */
  --danger:        var(--red-500);
  --danger-soft:   var(--red-50);
  --danger-fg:     var(--red-700);

  --warning:       var(--amber-500);
  --warning-soft:  var(--amber-50);
  --warning-fg:    var(--amber-700);

  --info:          var(--blue-500);
  --info-soft:     var(--blue-50);
  --info-fg:       var(--blue-700);

  --success:       var(--green-500);
  --success-soft:  var(--green-50);
  --success-fg:    var(--green-700);

  /* ---- Forensic-domain flags ---- */
  --flag-evidence: var(--green-600);
  --flag-redacted: var(--neutral-500);
  --flag-deleted:  var(--red-500);
  --flag-edited:   var(--amber-500);

  /* ---- Typography ---- */
  --font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;
  --font-display: var(--font-sans);
  --font-body: var(--font-sans);
  --font-data: var(--font-mono);

  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  --text-2xs:  11px;
  --text-xs:   12px;
  --text-sm:   13px;
  --text-base: 14px;
  --text-md:   15px;
  --text-lg:   17px;
  --text-xl:   20px;
  --text-2xl:  24px;
  --text-3xl:  30px;
  --text-4xl:  38px;
  --text-5xl:  48px;
  --text-6xl:  60px;

  --leading-tight:   1.15;
  --leading-snug:    1.3;
  --leading-normal:  1.5;
  --leading-relaxed: 1.65;

  --tracking-tight:  -0.02em;
  --tracking-snug:   -0.01em;
  --tracking-normal: 0;
  --tracking-wide:   0.02em;
  --tracking-caps:   0.08em;

  --type-display:    var(--weight-semibold) var(--text-5xl)/var(--leading-tight) var(--font-display);
  --type-h1:         var(--weight-semibold) var(--text-3xl)/var(--leading-tight) var(--font-display);
  --type-h2:         var(--weight-semibold) var(--text-2xl)/var(--leading-snug) var(--font-display);
  --type-h3:         var(--weight-semibold) var(--text-xl)/var(--leading-snug) var(--font-display);
  --type-title:      var(--weight-semibold) var(--text-lg)/var(--leading-snug) var(--font-sans);
  --type-body:       var(--weight-regular) var(--text-base)/var(--leading-normal) var(--font-body);
  --type-body-sm:    var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-body);
  --type-label:      var(--weight-medium) var(--text-sm)/var(--leading-snug) var(--font-sans);
  --type-data:       var(--weight-regular) var(--text-sm)/var(--leading-snug) var(--font-mono);
  --type-data-sm:    var(--weight-regular) var(--text-xs)/var(--leading-snug) var(--font-mono);

  /* ---- Spacing (4px grid) ---- */
  --space-0:  0;
  --space-1:  2px;
  --space-2:  4px;
  --space-3:  6px;
  --space-4:  8px;
  --space-5:  10px;
  --space-6:  12px;
  --space-8:  16px;
  --space-10: 20px;
  --space-12: 24px;
  --space-16: 32px;
  --space-20: 40px;
  --space-24: 48px;
  --space-32: 64px;
  --space-40: 80px;

  /* ---- Radii ---- */
  --radius-xs:   3px;
  --radius-sm:   5px;
  --radius-md:   7px;
  --radius-lg:   10px;
  --radius-xl:   14px;
  --radius-2xl:  20px;
  --radius-pill: 999px;

  /* ---- Border widths ---- */
  --border-hairline: 1px;
  --border-thick:    1.5px;

  /* ---- Shadows (cool-tinted, low) ---- */
  --shadow-xs:  0 1px 0 0 rgba(14, 17, 16, 0.04);
  --shadow-sm:  0 1px 2px rgba(14, 17, 16, 0.06), 0 1px 1px rgba(14, 17, 16, 0.04);
  --shadow-md:  0 2px 6px rgba(14, 17, 16, 0.07), 0 1px 2px rgba(14, 17, 16, 0.05);
  --shadow-lg:  0 8px 24px rgba(14, 17, 16, 0.10), 0 2px 6px rgba(14, 17, 16, 0.06);
  --shadow-xl:  0 18px 48px rgba(14, 17, 16, 0.16), 0 6px 14px rgba(14, 17, 16, 0.08);

  --ring: 0 0 0 3px var(--accent-ring);

  /* ---- Layout primitives ---- */
  --sidebar-width:     248px;
  --sidebar-collapsed: 56px;
  --topbar-height:     52px;
  --row-height:        40px;
  --content-max:       1440px;

  /* ---- Z-index scale ---- */
  --z-base:     0;
  --z-sticky:   100;
  --z-dropdown: 200;
  --z-overlay:  300;
  --z-modal:    400;
  --z-toast:    500;
  --z-tooltip:  600;

  /* ---- Motion ---- */
  --ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast:    120ms;
  --dur-base:    180ms;
  --dur-slow:    260ms;
}

/* ============================================================
   DARK THEME — investigative low-light scope
   ============================================================ */
[data-theme="dark"] {
  color-scheme: dark;

  --surface-app:     var(--neutral-950);
  --surface-card:    var(--neutral-900);
  --surface-sunken:  #0a0d0c;
  --surface-hover:   var(--neutral-800);
  --surface-active:  var(--neutral-700);
  --surface-inverse: var(--neutral-50);
  --surface-overlay: rgba(0, 0, 0, 0.6);

  --text-primary:   var(--neutral-50);
  --text-secondary: var(--neutral-300);
  --text-muted:     var(--neutral-400);
  --text-faint:     var(--neutral-500);
  --text-inverse:   var(--neutral-950);
  --text-accent:    var(--green-300);
  --text-link:      var(--green-300);

  --border-subtle:  var(--neutral-800);
  --border-default: var(--neutral-700);
  --border-strong:  var(--neutral-600);

  --accent-soft:    rgba(15, 157, 99, 0.16);
  --accent-soft-fg: var(--green-300);

  --danger-soft:  rgba(220, 38, 38, 0.16);
  --danger-fg:    var(--red-400);
  --warning-soft: rgba(217, 119, 6, 0.16);
  --warning-fg:   var(--amber-400);
  --info-soft:    rgba(37, 99, 235, 0.16);
  --info-fg:      var(--blue-400);
  --success-soft: rgba(15, 157, 99, 0.16);
  --success-fg:   var(--green-300);
}

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