/* =====================================================================
   MAXPOINT NOVA — Design Tokens (V7)
   An independent design system: Nova owns its own tokens, components,
   shell and page composition. It does not rely on app.css.
   Dark-first, RTL-native, single confident accent.
   ===================================================================== */

html[data-ui-theme="nova"] {
  /* ---- surfaces (light default) ---- */
  --nv-bg: #f4f5fb;
  --nv-bg-2: #eceefb;
  --nv-surface: #ffffff;
  --nv-surface-2: #f7f8fd;
  --nv-surface-3: #ffffff;
  --nv-sunken: #eef0fa;
  --nv-glass: rgba(255, 255, 255, .78);
  --nv-line: #e3e6f2;
  --nv-line-strong: #cdd2e6;

  /* ---- text ---- */
  --nv-t1: #14162b;
  --nv-t2: #4b5069;
  --nv-t3: #666d85; /* darkened: was #8b90a8 — unreadable (2.78:1) on --nv-sunken/--nv-surface-2 */

  /* ---- brand ---- */
  --nv-accent: #6355f7;
  --nv-accent-2: #14b8c9;
  --nv-accent-grad: linear-gradient(135deg, #6355f7 0%, #8b5cf6 52%, #14b8c9 100%);
  --nv-accent-soft: rgba(99, 85, 247, .1);
  --nv-accent-soft-2: rgba(20, 184, 201, .12);
  --nv-on-accent: #ffffff;

  /* ---- semantics ---- */
  --nv-ok: #0a8253; /* darkened: was #0fa968 — 2.69:1 on --nv-ok-soft */
  --nv-ok-soft: rgba(15, 169, 104, .12);
  --nv-bad: #e5484d;
  --nv-bad-soft: rgba(229, 72, 77, .12);
  --nv-warn: #a35a02; /* darkened: was #d97706 — 2.75:1 on --nv-warn-soft */
  --nv-warn-soft: rgba(217, 119, 6, .14);
  --nv-info: #0e7fe0;
  --nv-info-soft: rgba(14, 127, 224, .12);

  /* ---- shape ---- */
  --nv-r-lg: 18px;
  --nv-r-md: 13px;
  --nv-r-sm: 9px;
  --nv-r-xs: 6px;
  --nv-r-full: 999px;

  /* ---- elevation ---- */
  --nv-e1: 0 1px 2px rgba(23, 25, 45, .05);
  --nv-e2: 0 4px 14px -4px rgba(23, 25, 45, .12);
  --nv-e3: 0 14px 38px -12px rgba(23, 25, 45, .2);
  --nv-e-accent: 0 10px 26px -10px rgba(99, 85, 247, .55);

  /* ---- motion ---- */
  --nv-ease: cubic-bezier(.22, 1, .36, 1);
  --nv-d-fast: .16s;
  --nv-d-base: .26s;
  --nv-d-slow: .5s;

  /* ---- layout ---- */
  --nv-topbar-h: 60px;
  --nv-rail-w: 254px;
  --nv-rail-w-collapsed: 68px;
  --nv-dock-h: 62px;
  --nv-max: 1280px;
  --nv-density: 1;            /* admin can tighten to .85 */

  /* ---- focus ---- */
  --nv-ring: 0 0 0 2px var(--nv-bg), 0 0 0 4px rgba(99, 85, 247, .55);
}

/* ---- dark remapping (same tokens, new values) ---- */
html[data-ui-theme="nova"][data-theme="dark"] {
  --nv-bg: #0b0d14;
  --nv-bg-2: #0e1119;
  --nv-surface: #141826;
  --nv-surface-2: #181d2e;
  --nv-surface-3: #20263a;
  --nv-sunken: #0f1320;
  --nv-glass: rgba(17, 20, 34, .8);
  --nv-line: #232941;
  --nv-line-strong: #303752;

  --nv-t1: #eef0fa;
  --nv-t2: #a9afc7;
  --nv-t3: #6f7590;

  --nv-accent: #8b7ffb;
  --nv-accent-2: #2cd9e8;
  --nv-accent-grad: linear-gradient(135deg, #8b7ffb 0%, #a78bfa 52%, #2cd9e8 100%);
  --nv-accent-soft: rgba(139, 127, 251, .14);
  --nv-accent-soft-2: rgba(44, 217, 232, .12);
  --nv-on-accent: #0b0d14;

  --nv-ok: #34d399;
  --nv-ok-soft: rgba(52, 211, 153, .14);
  --nv-bad: #f87171;
  --nv-bad-soft: rgba(248, 113, 113, .14);
  --nv-warn: #fbbf24;
  --nv-warn-soft: rgba(251, 191, 36, .14);
  --nv-info: #60a5fa;
  --nv-info-soft: rgba(96, 165, 250, .14);

  --nv-e1: 0 1px 2px rgba(0, 0, 0, .4);
  --nv-e2: 0 6px 18px -6px rgba(0, 0, 0, .5);
  --nv-e3: 0 18px 44px -14px rgba(0, 0, 0, .6);
  --nv-e-accent: 0 10px 30px -10px rgba(139, 127, 251, .45);
}

/* Admin operating environment: denser tokens without a separate system. */
html[data-ui-theme="nova"] body[data-role="admin"] {
  --nv-density: .85;
  --nv-topbar-h: 54px;
}

/* =====================================================================
   TOKEN SHIM — legacy variable bridge (V7)
   Pages still carrying classic-scoped styles reference the old variable
   names. Nova maps them onto its own token system so those pages theme
   coherently while they are progressively migrated to pages/*.css.
   Values follow Nova surfaces — this is a compatibility layer, not a theme.
   ===================================================================== */
html[data-ui-theme="nova"] {
  --bg: var(--nv-bg);
  --card: var(--nv-surface);
  --raised: var(--nv-surface);
  --raised-2: var(--nv-surface-2);
  --sunken: var(--nv-sunken);
  --line: var(--nv-line);
  --line-strong: var(--nv-line-strong);
  --t1: var(--nv-t1);
  --t2: var(--nv-t2);
  --t3: var(--nv-t3);
  --ok: var(--nv-ok);
  --ok-soft: var(--nv-ok-soft);
  --ok-strong: var(--nv-ok);
  --bad: var(--nv-bad);
  --bad-soft: var(--nv-bad-soft);
  --bad-strong: var(--nv-bad);
  --warn-strong: var(--nv-warn);
  --info: var(--nv-info);
  --info-soft: var(--nv-info-soft);
  --warn: var(--nv-warn);
  --warn-soft: var(--nv-warn-soft);
  --gold-1: var(--nv-accent);
  --gold-2: var(--nv-accent);
  --gold-3: var(--nv-accent-2);
  --gold-grad: var(--nv-accent-grad);
  --gold-soft: var(--nv-accent-soft);
  --gold-ink: var(--nv-accent);
  --ink-1: var(--nv-t1);
  --ink-2: var(--nv-surface-2);
  --ink-3: var(--nv-t2);
  /* FIX: --ink-grad was never mapped, so admin scoped rules like
     `.tab-btn.active { background: var(--ink-grad); color:#fff }` rendered
     WHITE TEXT ON WHITE (active tab invisible). Map to Nova's dark ink. */
  --ink-grad: linear-gradient(135deg, #1a1e33 0%, #14162b 55%, #101221 100%);
  --accent: var(--nv-accent);
  --r-xs: var(--nv-r-xs);
  --r-sm: var(--nv-r-sm);
  --r-md: var(--nv-r-md);
  --r-lg: var(--nv-r-lg);
  --r-full: var(--nv-r-full);
  --e1: var(--nv-e1);
  --e2: var(--nv-e2);
  --e3: var(--nv-e3);
  --e4: var(--nv-e3);
  --e5: var(--nv-e3);
  --e-out: var(--nv-ease);
  --e-inout: var(--nv-ease);
  --e-spring: var(--nv-ease);
  --d-fast: var(--nv-d-fast);
  --d-base: var(--nv-d-base);
  --d-slow: var(--nv-d-slow);
  --nav-h: var(--nv-topbar-h);
  --dock-h: var(--nv-dock-h);
  --frame-max: var(--nv-max);
  --glass: var(--nv-glass);
}
