/* EgyptAuth — quiet paper navigation in light; neutral charcoal working surfaces in dark.
   Clear type and restrained interaction accents establish hierarchy; semantic status colours keep their meaning.
   Light/dark surfaces are tuned independently. Legacy aliases remain for existing pages and contrast checks.
   All typography, motion, colour, shape and layout roles live here. See docs/DESIGN_SYSTEM.md. */

@font-face { font-family: "Geist"; src: url("../fonts/geist-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist"; src: url("../fonts/geist-600.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url("../fonts/geist-mono-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url("../fonts/geist-mono-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }

/* =====================================================================================================================
   1. PAPER (light) — quiet paper navigation, a low-glare canvas, near-white working surfaces, ink toasts
   ===================================================================================================================== */
:root {
  color-scheme: light;

  /* ---- Surfaces: three tones of paper carry the hierarchy (navigation → canvas → panel); nothing at rest casts a shadow. ---- */
  --surface-nav: #e9ecf4;          /* sidebar and mobile drawer, uses --nav-* ink */
  --surface-canvas: #f4f4f7;       /* the workspace behind working surfaces */
  --surface-1: #fcfcfe;            /* panels, tables, forms, dialogs */
  --surface-input: var(--surface-1); /* editable fields; distinct from panels in dark */
  --surface-2: #eceef4;            /* panel footers, read-only fields, segmented tracks */
  --surface-sunken: #e7eaf2;       /* code blocks, inset wells, key previews */
  --surface-overlay: #fcfcfe;      /* menus, popovers, command palette (floating layers cast --shadow-pop) */
  --surface-inverse: #171b2c;      /* tooltips and toasts are ink on paper: the one dark layer of the light theme */

  /* Navigation ink and states on the deeper paper. */
  --nav-ink: #252b3e;
  --nav-ink-muted: #555e74;
  --nav-line: #c2cadb;
  --nav-hover: #e0e4ef;
  --nav-selected: #ded8f3;
  --nav-selected-ink: #49338e;
  --nav-focus: #6044b0;
  --nav-ok: #21704f;
  --nav-warn: #7b500b;

  /* Interaction states on surfaces */
  --state-hover: #e6e8f1;          /* hover on workspace controls */
  --state-active: #dadfea;         /* pressed */
  --state-selected: rgba(98, 70, 213, 0.09);
  --state-row-hover: #eeeaf8;
  --state-row-expanded: #eceef4;

  /* ---- Ink: four tiers. 1–3 are text; 4 is decorative only (icons, dots, separators), never text. ---- */
  --ink-1: #252b3e;                /* headings, values, primary labels */
  --ink-2: #485169;                /* body, descriptions, secondary cells */
  --ink-3: #586174;                /* muted: meta, placeholders, helper text */
  --ink-4: #959db0;                /* decorative only */
  --ink-inverse: #f1f2f7;          /* text on tooltip/toast surfaces */
  --ink-inverse-2: #c2c7d9;
  --ink-on-accent: #ffffff;        /* text on an accent fill */
  --ink-on-solid: #ffffff;         /* text on solid danger buttons */
  --ink-on-status: #ffffff;        /* text on a solid status fill (dark theme switches to dark ink) */
  --ink-on-action: #ffffff;       /* text on the ink-filled primary button */
  --ink-link: #6045aa;

  /* ---- Lines ---- */
  --line-1: #e0e4ee;               /* table rules, working-surface edges, dividers */
  --line-2: #b9c1d4;               /* strong: inputs at rest, outlined buttons, the rule under column heads */
  --line-3: #75829b;               /* input hover, drag handles; visible on raised/hover fills too */
  --line-accent: rgba(105, 81, 184, .48);
  --control-line: var(--line-3);   /* field boundaries meet 3:1 against their fill */
  --control-error: var(--danger-text);

  /* ---- Violet interaction: links, focus, selection and live marks. ---- */
  --accent: #6951b8;
  --accent-hover: #5e45ab;
  --accent-active: #513996;
  --accent-text: #6045aa;
  --accent-soft: rgba(105, 81, 184, .08);
  --accent-line: rgba(105, 81, 184, .48);
  --on-accent: #ffffff;

  /* ---- Primary action: ink on paper. It is the darkest thing on the page, so it needs no colour to be found. ---- */
  --action: #6951b8;
  --action-hover: #5e45ab;
  --action-active: #513996;

  /* ---- Brand accent: emblem, loading bar and destination marker. Never a status. ---- */
  --brand: #765eaf;
  --brand-soft: rgba(118, 94, 175, .10);

  /* ---- Status. Each role has: mark (solid dot/fill), -text (≥ 4.5:1 on surface-1 and its own -soft),
          -soft (tinted background), -line (badge border), -tint (row wash). Use the role, never the hue. ---- */
  --ok: #1f8a5a;            --ok-text: #176b47;     --ok-soft: rgba(31, 138, 90, 0.10);    --ok-line: rgba(31, 138, 90, 0.36);    --ok-tint: rgba(31, 138, 90, 0.06);
  --warn: #b47a0c;          --warn-text: #7a4d00;   --warn-soft: rgba(180, 122, 12, 0.11); --warn-line: rgba(180, 122, 12, 0.44); --warn-tint: rgba(180, 122, 12, 0.06);
  --danger: #c9372c;        --danger-text: #a4281e; --danger-soft: rgba(201, 55, 44, 0.09); --danger-line: rgba(201, 55, 44, 0.38); --danger-tint: rgba(201, 55, 44, 0.05);
  --danger-hover: #b02f25;
  --info: #2f46c0;          --info-text: #2a3fb0;   --info-soft: rgba(47, 70, 192, 0.08);  --info-line: rgba(47, 70, 192, 0.34);  --info-tint: rgba(47, 70, 192, 0.04);
  --neutral: #7b7768;       --neutral-text: #4c4a42; --neutral-soft: rgba(76, 74, 66, 0.07); --neutral-line: rgba(76, 74, 66, 0.22); --neutral-tint: rgba(76, 74, 66, 0.03);
  --ok-solid: var(--ok-text);
  --warn-solid: var(--warn-text);

  /* Status inks on the inverse layer (ink toasts, tooltips) */
  --inverse-ok: #7fd3a3;
  --inverse-err: #f29a90;
  --inverse-warn: #e9c06a;
  --inverse-info: #a7b6f5;

  /* ---- Identity tones (avatars, application marks): background / ink pairs, all ≥ 5:1 ---- */
  --tone-1-bg: #f1e7d0; --tone-1-fg: #74561a;
  --tone-2-bg: #e2e5f7; --tone-2-fg: #2a3db0;
  --tone-3-bg: #d9ece5; --tone-3-fg: #1e6655;
  --tone-4-bg: #f5e1d8; --tone-4-fg: #8f4128;
  --tone-5-bg: #e9e9d8; --tone-5-fg: #585b2c;

  /* ---- Focus: one ring everywhere, offset from the element so it reads on any surface ---- */
  --focus-color: var(--accent);
  --focus-ring: 0 0 0 2px var(--surface-1), 0 0 0 4px var(--accent-line);
  --focus-ring-inset: inset 0 0 0 2px var(--focus-color);

  /* ---- Data visualisation. Fixed categorical order, direct labels and line styles; never colour alone. ---- */
  --viz-1: #7454d8;                /* lapis — the primary series (logins) */
  --viz-2: #168b9a;                /* gold — second series */
  --viz-3: #1e7f73;                /* teal */
  --viz-4: #c0532f;                /* terracotta */
  --viz-5: #7d4ea8;                /* plum */
  --viz-6: #5e7d1e;                /* moss */
  --viz-pos: #1f8a5a;              /* polarity: up/good */
  --viz-neg: #c9372c;              /* polarity: down/bad */
  --viz-neutral: #aaa69a;          /* "other", unused, remainder */
  --viz-seq-1: #e0ece0;            /* sequential (one hue, light → dark); steps 1–2 are fills only, label them */
  --viz-seq-2: #bdcfbd;
  --viz-seq-3: #8eae96;
  --viz-seq-4: #518363;
  --viz-seq-5: #23634d;
  --viz-seq-6: #173e32;
  --viz-grid: rgba(31, 30, 26, 0.08);
  --viz-axis: #586174;             /* axis labels use ink-3 */
  --viz-crosshair: rgba(31, 30, 26, 0.3);
  --viz-fill-alpha: 0.1;           /* area fill under a line */

  /* ---- Component roles (shared by the shell and ui/*) ---- */
  --primary-bg: var(--action);
  --primary-bg-hover: var(--action-hover);
  --primary-text: var(--ink-on-action);
  --on-solid: var(--ink-on-solid);
  --sidebar-bg: var(--surface-nav);
  --topbar-bg: var(--surface-canvas);
  --nav-active: #ded8f3;
  --row-hover: var(--state-row-hover);
  --row-selected: rgba(98, 70, 213, 0.09);
  --row-expanded: var(--state-row-expanded);
  --card-hover: #f1eef9;
  --skeleton-a: #e1e4ee;
  --skeleton-b: #eceef4;
  --scrollbar: #c2c8d8;
  --scrollbar-hover: #959fb6;
  --selection: rgba(98, 70, 213, 0.18);
  --overlay: rgba(31, 30, 26, 0.4);      /* scrim behind dialogs and drawers */
  --switch-knob: #fffefb;
  --code-key: #32394f;                   /* code blocks: keys / punctuation */
  --code-string: #176b47;
  --code-comment: #586174;
  --code-accent: #6045aa;

  /* Chart tokens read by ui/chart.js (aliases of the viz roles) */
  --chart-grid: var(--viz-grid);
  --chart-primary: #252b3e;
  --chart-accent: var(--viz-1);
  --chart-red: var(--viz-neg);
  --chart-amber: #b47a0c;
  --chart-blue: var(--viz-1);
  --chart-green: var(--viz-pos);
  --chart-gray: var(--viz-neutral);
  --chart-gold: var(--viz-2);

  /* Public access material; dark overrides keep the surrounding canvas neutral. */
  --auth-scene: #111522; --auth-scene-deep: #0b0d17;
  --auth-scene-ink: #f3f3ff; --auth-scene-muted: #b9bed6;
  --auth-brass: #beadff; --auth-brass-line: rgba(190, 173, 255, .46);
  --auth-scene-line: rgba(190, 198, 232, .15);
  --auth-shadow: 0 18px 60px -40px rgba(20, 43, 39, .3);
  --auth-light: rgba(145, 102, 255, .14);
  --auth-orbit-highlight: rgba(170, 142, 255, .09);
  --auth-seal-light: #37304f;
  --auth-seal-shadow: 10px 20px 30px rgba(0, 0, 0, .17);
  --brand-sage: #a99ae9;


  /* Theme-adaptive dashboard material: separate from code-console roles. */
  --workspace-hero: #eeedf6;
  --workspace-hero-node: #f9f8fd;
  --workspace-hero-ink: #27243b;
  --workspace-hero-muted: #5d596e;
  --workspace-hero-line: #c9c4dc;
  --workspace-hero-accent: #6045aa;
  --workspace-hero-accent-soft: rgba(105, 81, 184, .08);
  --workspace-hero-danger: #9f3c49;

  /* Code-console material; the light workspace retains a distinct dark code surface. */
  --surface-console: #111522;
  --console-ink: #f3f3ff;
  --console-muted: #b9bed6;
  --console-line: #34394f;
  --console-accent: #c2b1ff;
  --console-accent-soft: rgba(170, 142, 255, .12);
  --console-teal: #83e3cf;
  --console-halo: rgba(143, 100, 255, .24);
  --console-glint: rgba(255, 255, 255, .18);
  --console-shadow: 0 30px 80px -35px rgba(9, 11, 28, .55);
  --frame-shadow: none;

  /* ---- Type ---- */
  --font-display: Georgia, "Times New Roman", serif;
  --ease-spring: cubic-bezier(0.2, 1.35, 0.35, 1);
  --font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --fs-2xs: 11px;                  /* badges, keyboard hints */
  --fs-xs: 12px;                   /* meta, table secondary lines, mono values */
  --fs-sm: 13px;                   /* supporting text and compact controls */
  --fs-base: 14px;                 /* body */
  --fs-md: 14px;                   /* legacy alias of base */
  --fs-lg: 15px;                   /* dialog titles, panel titles */
  --fs-xl: 18px;                   /* section titles on detail pages */
  --fs-2xl: 28px;                  /* page titles */
  --fs-title: 28px;
  --fs-stat: 32px;                 /* readings */
  --fs-hero: 34px;                 /* a single headline figure */
  --lh: 1.5;                       /* body */
  --lh-snug: 1.4;                  /* table cells, helper text */
  --lh-tight: 1.2;                 /* headings, readings */
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --tracking-title: -0.04em;      /* page titles */
  --tracking-heading: -0.012em;    /* h2–h4 */
  --tracking-caps: 0.08em;
  /* Structural labels use the same readable sans as working content. */
  --label-font: var(--font-sans);
  --label-size: 13px;
  --label-tracking: normal;
  --label-weight: 500;
  --label-transform: none;
  --figure-font: var(--font-mono); /* compared readings and headline figures */

  /* ---- Shape — clear controls, rounded working panels and generous dialog corners. ---- */
  --r-xs: 3px;                     /* checkboxes, tiny badges */
  --r-sm: 4px;                     /* badges, chips, inline code */
  --r: 6px;                        /* buttons, inputs, menu items */
  --r-lg: 8px;                     /* panels, cards */
  --r-xl: 12px;                     /* dialogs, drawers, popovers */
  --r-pill: 999px;

  /* ---- Space (4px grid) ---- */
  --s1: 4px;
  --s2: 8px;
  --s3: 12px;
  --s4: 16px;
  --s5: 20px;
  --s6: 24px;
  --s7: 28px;
  --s8: 32px;
  --s9: 36px;
  --s10: 40px;
  --s12: 48px;
  --s16: 64px;

  /* ---- Control and row heights ---- */
  --control-h-sm: 32px;
  --control-h: 40px;
  --control-h-lg: 40px;
  --touch-h: 44px;                 /* minimum target below 640px */
  --row-h-compact: 38px;
  --row-h: 50px;                   /* default table row, with room for a secondary line */
  --row-h-comfortable: 56px;
  --cell-px: 12px;                 /* horizontal cell padding */

  /* ---- Elevation — floating layers only; resting panels sit on tone with a 1px line ---- */
  --shadow-panel: none;
  --shadow-control: none;
  --shadow-pop: 0 1px 0 rgba(31, 30, 26, 0.04), 0 10px 28px -8px rgba(31, 30, 26, 0.22);
  --shadow-dialog: 0 1px 0 rgba(31, 30, 26, 0.04), 0 28px 64px -16px rgba(31, 30, 26, 0.34);
  --shadow-float: 0 8px 24px -6px rgba(31, 30, 26, 0.28);

  /* ---- Motion — short, decelerating and enabled throughout the interface ---- */
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in: cubic-bezier(0.4, 0, 1, 1);
  --t-fast: 140ms;                 /* hover, focus, toggles */
  --t: 220ms;                      /* menus, popovers, tabs */
  --t-slow: 360ms;                 /* drawers, dialogs, page transitions */
  --t-exit: 120ms;
  --control-hover-y: -2px;
  --control-press-y: 1px;
  --control-press-scale: .96;

  /* ---- Layout ---- */
  --sidebar-w: 240px;
  --rail-w: 72px;
  --header-h: 60px;
  --content-max: 1500px;           /* list and dashboard pages */
  --content-narrow: 1120px;        /* detail pages with a context rail */
  --content-form: 720px;           /* settings forms, single-column editors */
  --gutter: 28px;                  /* 16px below 640px (set in page layout) */
  --drawer-w: 480px;
  --dialog-w: 560px;
  --dialog-w-lg: 760px;
  --rail-context-w: 240px;         /* detail-page context rail */

  /* ---- Stacking ---- */
  --z-sticky: 10;
  --z-topbar: 20;
  --z-sidebar: 30;
  --z-drawer: 40;
  --z-scrim: 50;
  --z-dialog: 60;
  --z-menu: 70;
  --z-toast: 80;
  --z-tooltip: 90;

  /* ---- Legacy aliases (names used by today's CSS/JS). Surfaces and inks are literal hex so the a11y test can
          parse them; everything else forwards to the semantic token above. Do not reference these in new code. ---- */
  --bg-nav: #e9ecf4;
  --bg: #f4f4f7;
  --surface: #fcfcfe;
  --raised: #eceef4;
  --well: #e7eaf2;
  --hover: #e6e8f1;
  --active: var(--state-active);
  --border: var(--line-1);
  --border-strong: var(--line-2);
  --border-focus: var(--line-3);
  --text: #252b3e;
  --text-2: #485169;
  --text-3: #586174;
  --text-4: var(--ink-4);
  --text-inverse: var(--ink-inverse);
  --text-inverse-2: var(--ink-inverse-2);
  --green: var(--ok);            --green-text: var(--ok-text);       --green-soft: var(--ok-soft);       --green-line: var(--ok-line);
  --amber: var(--warn);          --amber-text: var(--warn-text);     --amber-soft: var(--warn-soft);     --amber-line: var(--warn-line);
  --red: var(--danger);          --red-text: var(--danger-text);     --red-soft: var(--danger-soft);     --red-line: var(--danger-line);
  --red-hover: var(--danger-hover);
  --blue: var(--info);           --blue-text: var(--info-text);      --blue-soft: var(--info-soft);      --blue-line: var(--info-line);
  --gray-soft: var(--neutral-soft);
  --gray-line: var(--neutral-line);
  --tint-amber: var(--warn-tint);
  --tint-red: var(--danger-tint);
  --tint-green: var(--ok-tint);
}

/* =====================================================================================================================
   2. GRAPHITE (dark) — soft charcoal canvas, distinct working layers, off-white ink
   Tuned on its own, not inverted. Surface roles and status meaning remain unchanged; shadows belong to overlays.
   ===================================================================================================================== */
:root[data-theme="dark"] {
  color-scheme: dark;

  --surface-nav: #151619;
  --surface-canvas: #111214;
  --surface-1: #191b1f;
  --surface-input: #0d0f11;
  --surface-2: #22252a;
  --surface-sunken: #0d0f11;
  --surface-overlay: #22252a;
  --surface-inverse: #d5dbe1;

  --nav-ink: #e7e9ec;
  --nav-ink-muted: #a7afb9;
  --nav-line: #2e3238;
  --nav-hover: #191b1f;
  --nav-selected: #22252a;
  --nav-selected-ink: #e7e9ec;
  --nav-focus: #9db8d7;
  --nav-ok: #89cfae;
  --nav-warn: #e4c18c;

  --state-hover: #22252a;
  --state-active: #292d33;
  --state-selected: rgba(229, 231, 233, .06);
  --state-row-hover: #22252a;
  --state-row-expanded: #22252a;

  --ink-1: #e7e9ec;
  --ink-2: #b7bec6;
  --ink-3: #a7afb9;
  --ink-4: #68727d;                /* decorative only */
  --ink-inverse: #19202a;
  --ink-inverse-2: #2e3238;
  --ink-on-accent: #19202a;
  --ink-on-solid: #19202a;
  --ink-on-status: #19202a;
  --ink-on-action: #ffffff;
  --ink-link: #9db8d7;

  --line-1: #2e3238;
  --line-2: #68727d;
  --line-3: #a7afb9;
  --line-accent: rgba(157, 184, 215, .6);
  --control-line: #74808d;

  /* Blue identifies links and focus; selected surfaces stay neutral. */
  --accent: #9db8d7;
  --accent-hover: #b2c8e1;
  --accent-active: #8ba9cb;
  --accent-text: #9db8d7;
  --accent-soft: rgba(229, 231, 233, .06);
  --accent-line: rgba(157, 184, 215, .6);
  --focus-color: #9db8d7;
  --on-accent: #19202a;

  /* The default primary action retains EgyptAuth's violet identity in both modes. */
  --action: #6951b8;
  --action-hover: #6045aa;
  --action-active: #54398f;

  --brand: #9db8d7;
  --brand-soft: rgba(229, 231, 233, .06);

  --ok: #3aa872;            --ok-text: #6fcf9b;     --ok-soft: rgba(58, 168, 114, 0.13);   --ok-line: rgba(58, 168, 114, 0.36);   --ok-tint: rgba(58, 168, 114, 0.07);
  --warn: #d69a2e;          --warn-text: #e6b65c;   --warn-soft: rgba(214, 154, 46, 0.13); --warn-line: rgba(214, 154, 46, 0.36); --warn-tint: rgba(214, 154, 46, 0.07);
  --danger: #e46257;        --danger-text: #f08a7f; --danger-soft: rgba(228, 98, 87, 0.13); --danger-line: rgba(228, 98, 87, 0.38); --danger-tint: rgba(228, 98, 87, 0.07);
  --danger-hover: #e86b60;
  --info: #7e9fc7;          --info-text: #9db8d7;   --info-soft: rgba(157, 184, 215, 0.12); --info-line: rgba(157, 184, 215, 0.36); --info-tint: rgba(157, 184, 215, 0.06);
  --neutral: #a7afb9;       --neutral-text: #b7bec6; --neutral-soft: rgba(183, 190, 198, 0.08); --neutral-line: rgba(183, 190, 198, 0.22); --neutral-tint: rgba(183, 190, 198, 0.04);
  --ok-solid: var(--ok);
  --warn-solid: var(--warn);

  --inverse-ok: #176b47;
  --inverse-err: #a4281e;
  --inverse-warn: #7a4d00;
  --inverse-info: #2a3fb0;

  --tone-1-bg: rgba(212, 164, 67, 0.16); --tone-1-fg: #e3c27c;
  --tone-2-bg: rgba(99, 122, 242, 0.18); --tone-2-fg: #aab6f7;
  --tone-3-bg: rgba(46, 166, 152, 0.17); --tone-3-fg: #83d2c7;
  --tone-4-bg: rgba(207, 112, 82, 0.17); --tone-4-fg: #eaa892;
  --tone-5-bg: rgba(150, 156, 98, 0.2); --tone-5-fg: #c9cd96;

  --focus-ring: 0 0 0 2px var(--surface-1), 0 0 0 4px var(--accent-line);

  --viz-1: #9db8d7;
  --viz-2: #6bd1d8;
  --viz-3: #4fb3a5;
  --viz-4: #e07a58;
  --viz-5: #c6b394;
  --viz-6: #a9c25a;
  --viz-pos: #3aa872;
  --viz-neg: #e46257;
  --viz-neutral: #68727d;
  --viz-seq-1: #22252a;            /* sequential on dark: low values darker, high values lighter */
  --viz-seq-2: #3f5269;
  --viz-seq-3: #587493;
  --viz-seq-4: #7e9fc7;
  --viz-seq-5: #adc5df;
  --viz-seq-6: #d8e3ef;
  --viz-grid: rgba(183, 190, 198, 0.10);
  --viz-axis: #a7afb9;
  --viz-crosshair: rgba(229, 231, 233, 0.3);
  --viz-fill-alpha: 0.14;

  --nav-active: #22252a;
  --row-selected: rgba(229, 231, 233, .06);
  --card-hover: #22252a;
  --skeleton-a: #22252a;
  --skeleton-b: #2e3238;
  --scrollbar: #4a535f;
  --scrollbar-hover: #68727d;
  --selection: rgba(157, 184, 215, .22);
  --switch-knob: #19202a;
  --overlay: rgba(8, 8, 7, 0.68);
  --code-key: #e7e9ec;
  --code-string: #6fcf9b;
  --code-comment: #a7afb9;
  --code-accent: #9db8d7;

  --chart-primary: #e7e9ec;
  --chart-amber: #d69a2e;

  --shadow-panel: none;
  --shadow-control: none;
  --shadow-pop: 0 0 0 1px rgba(0, 0, 0, 0.5), 0 12px 32px -8px rgba(0, 0, 0, 0.7);
  --shadow-dialog: 0 0 0 1px rgba(0, 0, 0, 0.55), 0 32px 72px -16px rgba(0, 0, 0, 0.85);
  --shadow-float: 0 12px 32px -6px rgba(0, 0, 0, 0.6);

  --workspace-hero: #191b1f;
  --workspace-hero-node: #22252a;
  --workspace-hero-ink: #e7e9ec;
  --workspace-hero-muted: #b7bec6;
  --workspace-hero-line: #2e3238;
  --workspace-hero-accent: #9db8d7;
  --workspace-hero-accent-soft: rgba(229, 231, 233, .06);
  --workspace-hero-danger: #f0aaa6;
  --surface-console: #0d0f11;
  --console-ink: #e7e9ec;
  --console-muted: #a7afb9;
  --console-line: #2e3238;
  --console-accent: #9db8d7;
  --console-accent-soft: rgba(229, 231, 233, .06);
  --console-halo: rgba(157, 184, 215, 0);
  --console-shadow: 0 18px 40px -24px rgba(0, 0, 0, .4);
  --auth-scene: #111214; --auth-scene-deep: #151619;
  --auth-scene-ink: #e7e9ec; --auth-scene-muted: #a7afb9;
  --auth-brass: #9db8d7; --auth-brass-line: rgba(157, 184, 215, .46);
  --auth-scene-line: rgba(183, 190, 198, .15);
  --auth-light: rgba(229, 231, 233, .04);
  --auth-orbit-highlight: rgba(229, 231, 233, .04);
  --auth-seal-light: #22252a;
  --brand-sage: #9db8d7;
  --frame-shadow: none;

  /* Legacy aliases, dark values (literal where the a11y test parses) */
  --bg-nav: #151619;
  --bg: #111214;
  --surface: #191b1f;
  --raised: #22252a;
  --well: #0d0f11;
  --hover: #22252a;
  --text: #e7e9ec;
  --text-2: #b7bec6;
  --text-3: #a7afb9;
}
