/* PEAKCUT design tokens: the single source of truth for the admin UI. */
:root{
  color-scheme:light;

  /* Brand */
  --purple-50:#f5f0ff;
  --purple-100:#ede3ff;
  --purple-500:#9146ff;
  --purple-600:#7c3aed;
  --purple-700:#6d28d9;
  --lime-400:#53fc18;
  /* точка знака Populi — градиент кабинетского логотипа (_brand.html), слово владельца 29.09 */
  --logo-a:#7f6bff;
  --logo-b:#57e0b4;
  --sidebar:#0a0c11;
  --sidebar-raised:#252832;
  --white:#fff;
  --workspace:#f8fafc;
  --ink:#05070d;
  --ink-raised:#11141d;
  --glass:rgba(255,255,255,.68);
  --glass-strong:rgba(255,255,255,.82);
  --glass-line:rgba(255,255,255,.74);

  /* Dark analytical island — a NAMED reusable role-surface (amends DEC-027).
     Used by the dashboard activity/focus islands and the streamer/clip card
     language. On-island text tokens hit WCAG on the dark fill; lime is a
     foreground signal only here, violet is lightened for small on-dark text. */
  --island-grad:linear-gradient(155deg,#12161f 0%,#0b0e16 58%,#0d1712 132%);
  --island-solid:#0c0f17;
  --island-raise:rgba(255,255,255,.05);   /* inset panels inside an island */
  --island-line:rgba(255,255,255,.10);
  --island-line-strong:rgba(255,255,255,.16);
  --on-island:#f1f5f9;
  --on-island-muted:#9aa6b7;
  --on-island-faint:#6b7788;
  --signal-on-dark:var(--lime-400);       /* lime as foreground, dark only */
  --accent-on-dark:#bf97ff;               /* lightened violet, small on-dark text */
  --ok-on-dark:#4ade80;                   /* status colors duplicated for the dark surface */
  --warn-on-dark:#fbbf24;
  --danger-on-dark:#ff7a82;
  --info-on-dark:#5cc0ff;
  --island-shadow:0 16px 36px rgba(2,6,23,.22),inset 0 1px 0 rgba(255,255,255,.07);
  --island-shadow-hover:0 20px 44px rgba(2,6,23,.3),inset 0 1px 0 rgba(255,255,255,.1);
  --island-glow-violet:rgba(145,70,255,.22);
  --island-glow-lime:rgba(83,252,24,.14);

  /* Semantic surfaces and text. Legacy aliases intentionally remain stable. */
  --bg:var(--workspace);
  --surface:var(--white);
  --surface-2:#f1f5f9;
  --surface-3:#e8eef5;
  --line:#d7e0ea;
  --line-soft:#e8edf3;
  --control-line:#7c8ba1;
  --text:#0f172a;
  --muted:#526176;
  --muted-2:#64748b;
  --accent:var(--purple-500);
  --accent-dim:var(--purple-600);
  --accent-strong:var(--purple-700);
  --accent-ghost:rgba(145,70,255,.11);

  /* Selection is intentionally separate from brand/focus. Violet identifies
     PEAKCUT; green identifies the currently selected navigation/filter item. */
  --selection:var(--lime-400);
  --selection-strong:#34c70e;
  --selection-surface:rgba(83,252,24,.13);
  --selection-surface-strong:rgba(83,252,24,.2);
  --selection-line:rgba(83,252,24,.46);
  --selection-text:#17320c;
  --selection-on-dark:#b8ff9f;

  /* Lime is a signal/fill. Semantic success text stays dark enough on white. */
  --signal:var(--lime-400);
  --signal-text:#102a09;
  --ok:#19713b;
  --ok-surface:#eaf8ef;
  --warn:#9a5b08;
  --warn-surface:#fff7df;
  --danger:#c52c35;
  --danger-surface:#fff0f1;
  --info:#1769aa;
  --info-surface:#edf6ff;
  --unknown:#5b6472;
  --unknown-surface:#f1f3f6;

  --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --display:"Avenir Next",Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;

  --text-xs:.75rem;
  --text-sm:.8125rem;
  --text-md:.875rem;
  --text-lg:1rem;
  --text-xl:1.5rem;

  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-8:32px;

  --r-sm:9px;
  --r-md:13px;
  --r-lg:18px;
  --r-xl:24px;
  --surface-card:rgba(255,255,255,.74);
  --surface-card-strong:rgba(255,255,255,.88);
  --surface-card-hover:#fff;
  --surface-card-line:rgba(203,213,225,.72);
  --card-pad-compact:12px;
  --card-pad:16px;
  --card-pad-roomy:20px;
  --card-gap:16px;

  /* Four shadow tiers: repeated cards stay low, raised chrome is rare, overlay
     is reserved for dialogs/drawers. Legacy aliases keep consumers stable. */
  --shadow-none:none;
  --shadow-low:0 1px 2px rgba(15,23,42,.045);
  --shadow-raised:0 12px 30px rgba(15,23,42,.075);
  --shadow-overlay:0 22px 54px rgba(2,6,23,.18);
  --shadow-sm:var(--shadow-low);
  --shadow-md:var(--shadow-raised);
  --shadow-glass:var(--shadow-raised),inset 0 1px 0 rgba(255,255,255,.78);
  --shadow-drawer:var(--shadow-overlay);

  --sidebar-width:72px;
  --sidebar-expanded-width:236px;
  --sidebar-current-width:var(--sidebar-width);
  --shell-gutter:12px;
  --topbar-height:68px;
  --pad:24px;
  --maxw:none;

  --ease:cubic-bezier(.2,.7,.2,1);
  --t-fast:140ms;
  --t-mid:200ms;
  --t-slow:260ms;

  /* Motion scale (research §5): feedback→micro→panel→cap, nothing ≥500ms;
     easing split standard/enter/exit. Animate only transform/opacity. */
  --dur-feedback:100ms;
  --dur-micro:150ms;
  --dur-panel:240ms;
  --dur-cap:360ms;
  --ease-standard:cubic-bezier(.2,0,0,1);
  --ease-enter:cubic-bezier(0,0,0,1);
  --ease-exit:cubic-bezier(.3,0,1,1);
  /* Свип по полотну графика (остров «Активность потока»). Входные кривые здесь не
     годятся: они отдают 88% пути за первую треть, и остаток ползёт — на длинной
     дистанции это читается не как «settle», а как подлагивание. Нужен ровный ход с
     мягкими концами. Значение общее с кабинетом: остров перенесён оттуда. */
  --ease-sweep:cubic-bezier(.32,.08,.24,1);
}
/* DEC-193: навигация всегда раскрыта; узкая полоса иконок — только ниже 861 px, где
   раскрытая закрыла бы страницу. */
@media (min-width:861px){:root{--sidebar-current-width:var(--sidebar-expanded-width);}}
