/* Cortex 2.0 — токен-слой. Brand Identity v1.0, тёмная тема.
 *
 * Правила слоя:
 *   1. Цвет объявляется только здесь. Во всех остальных файлах — только var().
 *   2. Подъём (elevation) задаётся светлостью поверхности и границей, а не тенью:
 *      на #0b0b14 тень цвета фона не читается.
 *   3. --color-accent (#7c3aed) — только заливки и крупные элементы.
 *      Для текста, ссылок и иконок — --color-accent-text (#a78bfa):
 *      accent на canvas даёт 3.44:1 и для текста не годится, accent-text — 7.20:1.
 *   4. На любой сплошной заливке текст — --color-on-accent.
 *   5. Каждая текстовая роль проверена на >= 4.5:1 против canvas, surface и raised.
 */

:root {
  color-scheme: dark;

  /* ---------- Поверхности: уровни вместо теней ---------- */
  --color-sunken: #07070d;
  --color-canvas: #0b0b14;
  --color-surface: #13131f;
  --color-surface-raised: #1c1c2a;
  --color-overlay: rgb(4 4 10 / 72%);

  /* ---------- Границы ---------- */
  --color-border: #272736;
  --color-border-strong: #34344a;
  --color-border-input: #6e6e90; /* 3.44:1 на raised — WCAG 1.4.11 */

  /* ---------- Текст ---------- */
  --color-text: #e5e7eb;
  --color-text-secondary: #a6a8bf;
  --color-text-muted: #8c8ea6;
  --color-on-accent: #fff;

  /* ---------- Бренд ---------- */
  --color-accent: #7c3aed;
  --color-accent-lift: #9d76f8;
  --color-accent-hover: #8b5cf6;
  --color-accent-active: #6d28d9;
  --color-accent-text: #a78bfa;
  --color-accent-soft: rgb(124 58 237 / 18%);
  --color-accent-faint: rgb(124 58 237 / 8%);
  --color-accent-border: rgb(124 58 237 / 52%);

  /* ---------- Статусы: заливка / текст / подложка / граница ---------- */
  --color-success: #15803d;
  --color-success-text: #4ade80;
  --color-success-soft: rgb(74 222 128 / 12%);
  --color-success-border: rgb(74 222 128 / 42%);

  --color-warning: #a16207;
  --color-warning-text: #fbbf24;
  --color-warning-soft: rgb(251 191 36 / 12%);
  --color-warning-border: rgb(251 191 36 / 42%);

  --color-error: #b91c1c;
  --color-error-strong: #7f1d1d;
  --color-error-text: #f87171;
  --color-error-soft: rgb(248 113 113 / 12%);
  --color-error-border: rgb(248 113 113 / 42%);

  --color-info: #1d4ed8;
  --color-info-text: #7db3ff;
  --color-info-soft: rgb(125 179 255 / 12%);
  --color-info-border: rgb(125 179 255 / 42%);

  --color-neutral: #3f3f55;
  --color-neutral-text: #9ca0b5;
  --color-neutral-soft: rgb(156 160 181 / 12%);
  --color-neutral-border: rgb(156 160 181 / 38%);

  /* ---------- Фокус и наведение ---------- */
  --color-focus: #a78bfa;
  --color-focus-ring: rgb(167 139 250 / 40%);
  --color-row-hover: rgb(167 139 250 / 7%);

  /* ---------- Стекло: кромки и плёнки поверх поверхностей ----------
   * Светлая полупрозрачная кромка читается на тёмном лучше, чем цветная
   * граница, и не зависит от того, на какой уровень положен элемент.
   * Внимание: для границ полей ввода это НЕ подходит — там нужен
   * --color-border-input, иначе не выполняется WCAG 1.4.11 (3:1).
   */
  --color-glass: rgb(255 255 255 / 7%);
  --color-glass-strong: rgb(255 255 255 / 12%);
  --color-field: rgb(255 255 255 / 4%);
  --color-header-veil: rgb(19 19 31 / 72%); /* полупрозрачная шапка под blur */
  --film-surface: linear-gradient(rgb(255 255 255 / 3%), rgb(255 255 255 / 0%));

  /* ---------- Фон: туманность вместо чертёжной сетки ---------- */
  --backdrop-nebula:
    radial-gradient(1200px 680px at 12% -12%, rgb(124 58 237 / 16%), transparent 68%),
    radial-gradient(900px 560px at 88% -4%, rgb(167 139 250 / 9%), transparent 66%);
  --backdrop-shell:
    radial-gradient(1400px 800px at 50% -20%, rgb(124 58 237 / 10%), transparent 70%);

  /* ---------- Типографика ---------- */
  --font-display: "Manrope", "Inter", -apple-system, sans-serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;

  --text-xs: 11px;
  --text-sm: 12px;
  --text-base: 14px;
  --text-lg: 16px;
  --text-xl: 20px;

  /* ---------- Отступы ---------- */
  --space-step: 1;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 14px;
  --space-4: 20px;
  --space-5: 26px;
  --space-6: 34px;
  --space-7: 48px;
  --space-8: 64px;

  /* ---------- Радиусы ---------- */
  --radius-1: 6px;
  --radius-2: 10px;
  --radius-3: 12px;
  --radius-4: 18px;
  --radius-5: 24px;
  --radius-pill: 999px;

  /* ---------- Подъём ----------
   * На тёмном фоне тень почти не видна, поэтому основной сигнал уровня —
   * светлость поверхности и граница. Тень остаётся только мягким окружением
   * для плавающих слоёв, плюс тонкий внутренний блик сверху.
   */
  --shadow-panel: inset 0 1px 0 rgb(255 255 255 / 5%), 0 1px 2px rgb(0 0 0 / 40%);
  --shadow-shell: inset 0 1px 0 rgb(255 255 255 / 6%), 0 18px 48px rgb(0 0 0 / 52%);
  --shadow-dialog: 0 28px 72px rgb(0 0 0 / 68%);

  /* Свечение — основной сигнал активности на тёмном фоне */
  --glow-accent: 0 0 0 1px rgb(124 58 237 / 35%), 0 8px 32px rgb(124 58 237 / 28%);
  --glow-mark: 0 0 12px rgb(124 58 237 / 45%);

  /* ---------- Метрики каркаса ---------- */
  --sidebar-width: 236px;
  --sidebar-width-collapsed: 60px;
  --header-height: 64px;
  --content-max-width: 1440px;
  --motion-fast: 160ms;
  /* Появление диаграммы: достаточно медленно, чтобы прочесть движение. */
  --motion-slow: 480ms;

  /* ---------- Совместимость: словарь Match Bench ----------
   * Старые имена оставлены алиасами, чтобы 1257 существующих обращений
   * продолжали работать. Новый код использует семантические роли выше;
   * эти строки удаляются по мере миграции вызовов.
   */
  --color-bench: var(--color-canvas);
  --color-ink: var(--color-text);
  --color-ink-soft: var(--color-text-secondary);
  --color-grid: var(--color-border);
  --color-grid-strong: var(--color-border-strong);
  --color-match: var(--color-success-text);
  --color-match-bg: var(--color-success-soft);
  --color-diverge: var(--color-error-text);
  --color-diverge-bg: var(--color-error-soft);
  --color-pending: var(--color-warning-text);
  --color-pending-bg: var(--color-warning-soft);
  --color-slate: var(--color-neutral-text);
  --color-slate-bg: var(--color-neutral-soft);
}
