/* ═══════════════════════════════════════════════════════════════════
 * Платформа 2.0 — Design tokens (M-S4, M-S6, Cmui-S4, Cmui-S6, A.7)
 *
 * Три уровня (индустриальный three-layer pattern Mavik Labs 2026,
 * shadcn bridge layer pattern Spec-Flow 2026):
 *   1. Base palette         — primitive значения, источник правды
 *   2. Semantic aliases     — purpose-driven переменные, которые
 *                             используют компоненты (--color-primary,
 *                             --color-bg, и т.д.). Override per-tenant
 *                             допустим только на этом слое.
 *   3. Component-specific   — производные от semantic (--radius-sm,
 *                             --radius-lg = производные от --radius)
 *   3.5. Font tokens         — open-license font-stack (Cmui-S6)
 *   3.6. Size & density tokens — Excel-like density grid (Cmui-S4)
 *   4. Legacy aliases       — strangler-fig bridges из 1.0
 *
 * Источник этих значений: фактический :root блок web/static/index.html
 * на момент C18 (2026-05-17). НЕ новый дизайн — extract существующих
 * токенов 1.0 в shared/ как единый источник правды для tenant UI + admin
 * tools (когда они появятся).
 *
 * Tenant override механика: bootstrap-скрипт shared/bootstrap.js читает
 * theme из /api/v1/theme (или localStorage кэша) и вставляет
 * <style nonce="{cspNonce}" id="tenant-theme">:root{ --color-primary: ...; }</style>
 * в <head> ДО рендера основного приложения. Override происходит на слое 2
 * (semantic aliases), слой 1 (palette) и слой 3 (component) остаются
 * нетронутыми — это сохраняет визуальную целостность даже при tenant-
 * специфичной палитре. См. M-S6 Техпроекта + Cmui-S6 канон.
 *
 * Font whitelist (Cmui-S6): только open-license шрифты разрешены как
 * primary в font-family. Arial/Helvetica/proprietary запрещены (R14 lint).
 * Override через tenant_themes.custom_font_family валидируется на backend.
 * ═══════════════════════════════════════════════════════════════════ */

:root {
  /* ─── 1. Base palette (primitive, не override'абельно per-tenant) ─── */

  /* Нейтралы — тёмная тема co-pilot.ru brand (значения из index.html 1.0) */
  --palette-bg-darkest:      #06080F;
  --palette-bg-darker:       #0C1018;
  --palette-bg-dark:         #161C2E;
  --palette-border-dark:     #1E293B;
  --palette-border-medium:   rgba(30,41,59,0.6);

  /* Нейтралы — текст */
  --palette-text-primary:    #E2E8F0;
  --palette-text-secondary:  #CBD5E1;
  --palette-text-muted:      #94A3B8;
  --palette-text-dim:        #64748B;
  --palette-text-faint:      #475569;

  /* Акценты — цвета бренда (из index.html 1.0) */
  --palette-blue:            #3B82F6;
  --palette-blue-soft:       #60A5FA;
  --palette-green:           #22C55E;
  --palette-green-bg:        rgba(34,197,94,0.12);
  --palette-green-border:    rgba(34,197,94,0.25);
  --palette-orange:          #F59E0B;
  --palette-red:             #EF4444;
  --palette-red-soft:        #F87171;
  --palette-purple:          #A855F7;

  /* Поверхности интерактивные */
  --palette-bg-hover:        rgba(255,255,255,0.04);

  /* ─── 2. Semantic aliases (override'абельно per-tenant!) ─── */
  /* Эти переменные использует код приложения. Tenant override
     инжектит ровно эти имена через <style id="tenant-theme">. */

  --color-bg:                var(--palette-bg-darkest);
  --color-bg-secondary:      var(--palette-bg-darker);
  --color-bg-tertiary:       var(--palette-bg-dark);
  --color-bg-hover:          var(--palette-bg-hover);

  --color-border:            var(--palette-border-dark);
  --color-border-light:      var(--palette-border-medium);

  --color-text:              var(--palette-text-primary);
  --color-text-secondary:    var(--palette-text-secondary);
  --color-text-muted:        var(--palette-text-muted);
  --color-text-dim:          var(--palette-text-dim);
  --color-text-faint:        var(--palette-text-faint);

  --color-primary:           var(--palette-blue);
  --color-primary-soft:      var(--palette-blue-soft);
  --color-success:           var(--palette-green);
  --color-success-bg:        var(--palette-green-bg);
  --color-success-border:    var(--palette-green-border);
  --color-warning:           var(--palette-orange);
  --color-danger:            var(--palette-red);
  --color-danger-soft:       var(--palette-red-soft);
  --color-accent:            var(--palette-purple);

  /* ─── 3. Component-specific tokens (производные) ─── */

  /* Радиусы — иерархическая шкала, единый источник --radius.
     Cmui-α «familiar patterns wins»: max radius 16px (не pill-style 24+px,
     это запрещено R14 anti-pattern). */
  --radius:                  16px;
  --radius-sm:               10px;
  --radius-xs:               6px;

  /* Spacing — фиксированный 8px grid (M-S4 «как Excel/1С»),
     добавлено в C18, в index.html 1.0 inline-числа без переменных. */
  --space-xs:                4px;
  --space-sm:                8px;
  --space-md:                16px;
  --space-lg:                24px;
  --space-xl:                32px;
  --space-2xl:               48px;

  /* ─── 3.5. Font tokens (Cmui-S6 open-license font-stack) ─── */
  /*
   * Whitelist разрешённых primary шрифтов (см. backend validate_font_family):
   *   - Manrope         (SIL OFL 1.1, текущий бренд co-pilot.ru)
   *   - Inter           (SIL OFL 1.1, индустриальный B2B standard 2026)
   *   - PT Sans         (SIL OFL 1.1, Cyrillic-friendly, ParaType)
   *   - PT Serif        (SIL OFL 1.1, ParaType)
   *   - Roboto          (Apache 2.0, Google)
   *   - Open Sans       (SIL OFL 1.1, Steve Matteson)
   *   - JetBrains Mono  (SIL OFL 1.1, для mono)
   *   - Fira Code       (SIL OFL 1.1, для mono с лигатурами)
   *   - Cascadia Code   (SIL OFL 1.1, Microsoft, для mono)
   *
   * Proprietary шрифты (Arial / Helvetica / Times New Roman) допускаются
   * ТОЛЬКО как late-position system fallback, не primary. R14 lint
   * (см. ci_checks.py — будет реализовано в Op-Frontend-N).
   *
   * Tenant override через tenant_themes.custom_font_family — отдельная
   * семантическая переменная --tenant-font, чтобы не пересекаться с
   * базовой --font (которая остаётся канонической). Resolution:
   *   1. tenant_themes.custom_font_family (если есть, prepended)
   *   2. --font (canonical platform default)
   *   3. system-ui (browser default)
   *   4. sans-serif (universal fallback)
   */

  --font:
    'Manrope',                  /* primary, SIL OFL 1.1 */
    'PT Sans',                  /* Cyrillic-friendly fallback, SIL OFL 1.1 */
    'Inter',                    /* secondary B2B standard */
    -apple-system,              /* macOS system */
    BlinkMacSystemFont,         /* Chrome on macOS */
    'Segoe UI',                 /* Windows */
    Roboto,                     /* Android, Apache 2.0 */
    'Helvetica Neue',           /* late-position fallback only */
    Arial,                      /* late-position fallback only */
    sans-serif;                 /* generic universal fallback */

  --font-mono:
    'JetBrains Mono',           /* primary, SIL OFL 1.1 */
    'Fira Code',                /* secondary with ligatures, SIL OFL 1.1 */
    'Cascadia Code',            /* tertiary, SIL OFL 1.1, Microsoft */
    'Consolas',                 /* Windows fallback */
    'Monaco',                   /* macOS fallback */
    'Liberation Mono',          /* Linux fallback */
    monospace;                  /* generic universal fallback */

  /* Font sizes — fixed scale (M-S4 + Cmui-S4 density-first).
     Base 13px (Inter/Manrope B2B standard 2026, denser than 16px web default).
     При увеличении пользователем шрифта в браузере (a11y) — масштабируется
     через rem-родительский cascade в компонентах. */
  --font-size-xs:            11px;
  --font-size-sm:            12px;
  --font-size-base:          13px;        /* default body text */
  --font-size-md:            14px;        /* slightly emphasized */
  --font-size-lg:            16px;        /* section headers */
  --font-size-xl:            20px;        /* page headers */
  --font-size-2xl:           24px;        /* hero headers (rare) */

  --line-height-tight:       1.2;
  --line-height-base:        1.4;         /* default body line-height */
  --line-height-loose:       1.6;

  --font-weight-regular:     400;
  --font-weight-medium:      500;
  --font-weight-semibold:    600;
  --font-weight-bold:        700;

  /* ─── 3.6. Size & density tokens (Cmui-S4 Excel-like density) ─── */
  /*
   * Канон Cmui-S4: density-first, не whitespace-first.
   * Row height 28px (стандарт Excel / 1С / Linear) — позволяет видеть
   * 20+ строк на 768px viewport.
   *
   * Target-size:
   *   - 24×24 минимум (WCAG 2.2 AA SC 2.5.8)
   *   - 32×32 default для интерактивных элементов
   *   - 44×44 на UZ-2 tenants (Cmui-S7 + ГОСТ Р 52872-2019)
   */

  --table-row-height:        28px;
  --table-header-height:     32px;
  --table-cell-padding-x:    var(--space-sm);
  --table-cell-padding-y:    var(--space-xs);

  --button-height-sm:        24px;        /* WCAG 2.2 AA SC 2.5.8 minimum */
  --button-height-md:        32px;        /* default density */
  --button-height-lg:        40px;
  --button-height-uz2:       44px;        /* Cmui-S7 UZ-2 + ГОСТ Р 52872-2019 */

  --button-padding-x-sm:     var(--space-sm);
  --button-padding-x-md:     var(--space-md);
  --button-padding-x-lg:     var(--space-lg);

  --input-height-md:         32px;
  --input-padding-x:         var(--space-sm);

  /* Focus indicator — Cmui-S7 SC 2.4.13 visible focus appearance.
     2px outline + 1px offset = WCAG 2.2 AAA-compliant focus visibility. */
  --focus-outline-width:     2px;
  --focus-outline-offset:    1px;
  --focus-outline-color:     var(--color-primary);

  /* Z-index scale (predictable, Cmui-α familiar patterns) */
  --z-base:                  0;
  --z-dropdown:              10;
  --z-sticky:                20;
  --z-overlay:               40;
  --z-modal:                 50;
  --z-toast:                 60;
  --z-tooltip:               70;

  /* Functional transitions (Cmui-S4 zero decorative motion).
     Allowed: opacity, color, border, transform only for functional purposes.
     Easing: ease-out only (forbidden: bounce, elastic, custom cubic-bezier
     для decorative). */
  --transition-fast:         120ms ease-out;
  --transition-base:         180ms ease-out;
}

/* ─── 4. Legacy aliases (C18.2) — мосты к именам переменных из 1.0 ────
 * Memory UI (B.4 build-8a/b/c) и потенциально другие фрагменты 1.0
 * используют имена --bg-base / --bg-elevated / --border-default, которые
 * НЕ определены ни в inline :root index.html, ни в слоях 1-3 выше.
 * Это существующий 1.0-баг: соответствующие свойства CSS отрисовываются
 * с фолбэк-значениями (transparent для background, currentColor для border).
 *
 * До полного refactor'а Memory UI на canonical semantic tokens (--color-*),
 * этот слой даёт legacy-имена как aliases поверх слоя 2 (semantic). Так
 * подменяется bg/border на правильные значения foundation без правки 50
 * мест в memory-секции index.html (strangler-fig pattern на уровне CSS).
 *
 * Refactor план (C18.3+ или позже): постепенная замена var(--bg-base) →
 * var(--color-bg), var(--accent-red) → var(--color-danger), и так далее.
 * Этот блок остаётся, пока legacy-имена ещё используются хотя бы в
 * одном месте кода. После полной миграции — удаляется.
 * ─────────────────────────────────────────────────────────────────── */
:root {
  --bg-base:                 var(--color-bg);
  --bg-elevated:             var(--color-bg-secondary);
  --border-default:          var(--color-border);
}
