/* ============================================================================
   Laplexus — design tokens. Themes on [data-theme]:
     aperture (default dark) · obsidian (pure-black dark) · daybreak (light)
   Chart colors: violet-ink primary series, azure reserved for one emphasized
   series; money up/down desaturated + always shown with sign (secondary enc).
   ============================================================================ */

:root {
  /* type — two families + serif for editorial headlines */
  --font-display: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace;
  --font-serif: "Source Serif 4", Georgia, serif;
  --mono: var(--font-mono);

  /* type scale */
  --fs-hero: 2rem;
  --fs-h1: 1.375rem;
  --fs-h2: 1.125rem;
  --fs-h3: 1rem;
  --fs-body: 0.875rem;
  --fs-sm: 0.8125rem;
  --fs-xs: 0.75rem;
  --fs-micro: 0.656rem;   /* 10.5px eyebrow */

  /* radii — quiet */
  --r-sm: 6px;
  --r: 10px;
  --r-lg: 14px;
  --r-pill: 999px;

  /* spacing */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
  --sp-5: 24px; --sp-6: 40px; --sp-7: 56px;

  /* layout */
  --sidebar-w: 240px;
  --drawer-w: 356px;
  --rpane-w: 384px;
  --rpane-h: 494px;
  --canvas-h: 520px;
  --pipeline-scale: 1;
  --topbar-h: 64px;
  --maxw: 1240px;
  --gutter: 32px;

  --ease: cubic-bezier(0.4, 0, 0.2, 1);
}

/* ---------------------------------------------------------------------------
   APERTURE — default. Near-black, cool, faint violet atmosphere, azure signal.
   --------------------------------------------------------------------------- */
:root,
[data-theme="aperture"] {
   --bg: #0b0e12;
   --surface: #11151a;
   --surface-2: #171c22;
   --surface-3: #1e252d;
   --surface-inset: #0d1115;

   --border: rgba(255, 255, 255, 0.09);
   --border-strong: rgba(255, 255, 255, 0.17);

  --ink: #f1f3f7;
  --ink-2: #abb1bd;
  --ink-3: #7e8796;

  /* azure — the single signal (buttons, active, focus, wordmark notch) */
   --brand: #5aa9d2;
   --brand-2: #79bddf;
   --brand-soft: rgba(90, 169, 210, 0.13);
   --brand-line: rgba(90, 169, 210, 0.34);
   --brand-ink: #06131b;

  /* violet — atmosphere + data ink only (never UI chrome) */
   --data: #8c9baa;
   --data-soft: rgba(140, 155, 170, 0.12);
   --data-line: rgba(140, 155, 170, 0.30);
   --violet-dim: #596572;
   --violet-wash: rgba(140, 155, 170, 0.08);

  --up: #4da57c;   --up-soft: rgba(77, 165, 124, 0.14);
  --down: #c06561; --down-soft: rgba(192, 101, 97, 0.14);
  --warn: #c9a24a; --warn-soft: rgba(201, 162, 74, 0.13);
  --live: #4da57c;

   --shadow: 0 1px 2px rgba(0, 0, 0, 0.24), 0 10px 28px -24px rgba(0, 0, 0, 0.72);
   --shadow-pop: 0 18px 46px -22px rgba(0, 0, 0, 0.78);
   --shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.18);
   --glow: 0 0 0 1px var(--brand-line);

   --atmos: none;

  /* charts */
   --viz-line: #8c9baa;      /* primary series / sparkline */
   --viz-accent: #6fb8df;    /* one emphasized series */
  --viz-grid: rgba(255, 255, 255, 0.045);
   --viz-ref: #4b5662;
  --viz-up: #4da57c;
  --viz-down: #c06561;
  --viz-track: rgba(255, 255, 255, 0.06);

  color-scheme: dark;
}

/* ---------------------------------------------------------------------------
   OBSIDIAN — pure black, minimal violet, higher contrast.
   --------------------------------------------------------------------------- */
[data-theme="obsidian"] {
   --bg: #07090c;
   --surface: #0d1116;
   --surface-2: #141a20;
   --surface-3: #1b232b;
   --surface-inset: #090d11;

  --border: rgba(255, 255, 255, 0.07);
  --border-strong: rgba(255, 255, 255, 0.13);

  --ink: #f1f2f7;
  --ink-2: #a0a2b0;
  --ink-3: #787b8b;

   --brand: #62b5df;
   --brand-2: #82c8e9;
   --brand-soft: rgba(98, 181, 223, 0.13);
   --brand-line: rgba(98, 181, 223, 0.34);
  --brand-ink: #03121b;

   --data: #94a3b1;
   --data-soft: rgba(148, 163, 177, 0.12);
   --data-line: rgba(148, 163, 177, 0.32);
   --violet-dim: #63707c;
   --violet-wash: rgba(148, 163, 177, 0.09);

  --up: #4fae82;   --up-soft: rgba(79, 174, 130, 0.14);
  --down: #cb6a66; --down-soft: rgba(203, 106, 102, 0.14);
  --warn: #d0a850; --warn-soft: rgba(208, 168, 80, 0.13);
  --live: #4fae82;

  --shadow: 0 1px 0 rgba(255, 255, 255, 0.03), 0 20px 55px -46px rgba(0, 0, 0, 1);
  --shadow-pop: 0 24px 60px -24px rgba(0, 0, 0, 0.95);
   --shadow-soft: 0 1px 2px rgba(0, 0, 0, 0.22);
   --glow: 0 0 0 1px var(--brand-line);
   --atmos: none;

   --viz-line: #94a3b1;
   --viz-accent: #82c8e9;
  --viz-grid: rgba(255, 255, 255, 0.05);
   --viz-ref: #4d5965;
  --viz-up: #4fae82;
  --viz-down: #cb6a66;
  --viz-track: rgba(255, 255, 255, 0.07);

  color-scheme: dark;
}

/* ---------------------------------------------------------------------------
   DAYBREAK — light. Credibility through plainness: no violet atmosphere.
   --------------------------------------------------------------------------- */
[data-theme="daybreak"] {
   --bg: #f4f6f8;
  --surface: #ffffff;
   --surface-2: #eef1f4;
   --surface-3: #e7ebef;
   --surface-inset: #f0f3f5;

  --border: rgba(15, 16, 24, 0.09);
  --border-strong: rgba(15, 16, 24, 0.17);

  --ink: #17181f;
  --ink-2: #5d5f6c;
  --ink-3: #747784;

   --brand: #176b9a;
   --brand-2: #0e5b86;
   --brand-soft: rgba(23, 107, 154, 0.10);
   --brand-line: rgba(23, 107, 154, 0.30);
  --brand-ink: #ffffff;

   --data: #5e6d7b;
   --data-soft: rgba(94, 109, 123, 0.09);
   --data-line: rgba(94, 109, 123, 0.28);
   --violet-dim: #82909d;
   --violet-wash: rgba(94, 109, 123, 0.07);

  --up: #217a53;   --up-soft: rgba(33, 122, 83, 0.10);
  --down: #b04f4b; --down-soft: rgba(176, 79, 75, 0.10);
  --warn: #9a6f12; --warn-soft: rgba(154, 111, 18, 0.11);
  --live: #217a53;

  --shadow: 0 1px 2px rgba(15, 16, 24, 0.04), 0 8px 24px -18px rgba(15, 16, 24, 0.16);
  --shadow-pop: 0 20px 44px -22px rgba(15, 16, 24, 0.26);
   --shadow-soft: 0 1px 2px rgba(15, 16, 24, 0.06);
   --glow: 0 0 0 1px var(--brand-line);
  --atmos: none;

   --viz-line: #5e6d7b;
   --viz-accent: #176b9a;
  --viz-grid: rgba(15, 16, 24, 0.07);
  --viz-ref: #c4c6d0;
  --viz-up: #217a53;
  --viz-down: #b04f4b;
  --viz-track: rgba(15, 16, 24, 0.09);

  color-scheme: light;
}

/* Compatibility aliases used by older page modules. */
:root {
  --fs-base: var(--fs-body);
  --fs-md: 0.9375rem;
  --line: var(--border);
  --panel: var(--surface);
  --text: var(--ink);
  --surface-hover: var(--surface-2);
  --good: var(--up);
  --warning: var(--warn);
  --button-primary-text: var(--brand-ink);
}
