:root {
  /* ---- Нейтральная шкала: фон, поверхности, текст ---- */
  --color-bg: #F7F8FA;            /* фон страницы — приглушённый, весь день перед глазами */
  --color-surface: #FFFFFF;       /* строки, карточки, панели */
  --color-surface-sunken: #F0F1F4;/* вложенные блоки внутри карточки (напр. цитата документа) */
  --color-border: #E2E5EA;
  --color-border-strong: #C7CCD4; /* рамки при наведении/фокусе внутри формы */
  --color-text-primary: #1A1D23;
  --color-text-secondary: #5B6270; /* метаданные: сроки, площадка, давность */
  --color-text-muted: #8A909C;     /* вспомогательные подписи, пустые состояния */

  /* ---- Интерактивность ---- */
  --color-link: #2457C5;           /* единственный акцентный цвет: ссылки, активные вкладки, primary-кнопки */
  --color-link-hover: #1B429A;
  --color-focus-ring: #2457C5;     /* 3px контур с offset 2px — WCAG 2.4.11, всегда виден при Tab */

  /* ---- Системная ошибка: ЗАРЕЗЕРВИРОВАНО только под сбои интерфейса и обращений ----
     Не используется для отсева, для "нет" в ответе на признак и для низкого балла —
     иначе человек не отличит "система не смогла ответить" от "система ответила: нет". */
  --color-error-bg: #FBEAE9;
  --color-error-border: #D64A3F;
  --color-error-text: #8C241C;

  /* ---- Внимание: требует действия человека, не является ошибкой ---- */
  --color-warning-bg: #FBF3DF;
  --color-warning-border: #B98900;
  --color-warning-text: #6B4E00;

  /* ---- Успех: «в порядке», «действует». Решение основателя 2026-10-01 (inbox #214) ----
     Не канал ответа на признак (там --color-answer-yes). Красный --color-error-* по-прежнему
     зарезервирован за сбоями системы; кнопка «Отозвать» нейтральная, не красная. */
  --color-success-bg: #E8F4EC;
  --color-success-border: #1F7A43;
  --color-success-text: #14532D;

  /* ---- "Варится" — идёт обработка, число ещё не окончательное ----
     Отдельный цветовой канал (фиолетовый) — не путается ни с ошибкой (красный),
     ни с отсевом (серый), ни с баллом (зелёно-жёлтая шкала). */
  --color-processing-bg: #EFEBFB;
  --color-processing-border: #6D5BD0;
  --color-processing-text: #43349E;

  /* ---- Отсев ступени Отсев: РЕШЕНИЕ, а не ошибка и не низкая оценка ----
     Намеренно нейтральный серо-синий, не красный: отсев — рабочий исход механизма,
     о котором NFR-23 требует явно говорить "почему", а не молчать серым по умолчанию. */
  --color-rejected-bg: #EEF0F3;
  --color-rejected-border: #8A93A3;
  --color-rejected-text: #4B5563;

  /* ---- Ответ на признак: да / нет / не смогли определить ----
     "Не смогли определить" — третий, самостоятельный канал (не блёклый "нет"),
     потому что NFR-23 требует отличимости, и спутать его с "нет" — самая дорогая ошибка
     облика (ложно отброшенное невидимо навсегда). */
  --color-answer-yes: #1F7A43;
  --color-answer-no: #B75B12;      /* не ярко-красный: красный зарезервирован под сбой системы */
  --color-answer-unknown-bg: #FBF3DF;
  --color-answer-unknown-border: #8A6D3B; /* + пунктирная обводка компонента, не только цвет (WCAG 1.4.1) */

  /* ---- Шкала балла: только для закупок, ПРОШЕДШИХ отсев (ступень Интерес) ----
     Никогда не применяется к отсеянным строкам — у тех отдельный, некрасочный канал выше. */
  --color-score-low: #8A909C;      /* низкий, но не отсеянный — "показано, но неприоритетно" */
  --color-score-mid: #B98900;
  --color-score-high: #1F7A43;

  /* ---- Отступы (кратно 4px) ---- */
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px; --space-4: 16px;
  --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;

  /* ---- Радиусы ---- */
  --radius-sm: 4px;   /* бейджи, теги, чипы */
  --radius-md: 8px;   /* строки, карточки, поля ввода */
  --radius-lg: 12px;  /* модальные окна, шторки */

  /* ---- Тени ---- */
  --shadow-row-hover: 0 1px 4px rgba(26, 29, 35, 0.08);
  --shadow-dropdown: 0 4px 12px rgba(26, 29, 35, 0.12);
  --shadow-modal: 0 8px 32px rgba(26, 29, 35, 0.20);

  /* ---- Типографика ----
     Два семейства сознательно: рабочий шрифт для интерфейса и моноширинный —
     для цитат из документов, чтобы глаз сразу отличал "наши слова" от "слова закупщика". */
  --font-ui: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-quote: "SF Mono", "Consolas", "Menlo", monospace;

  --font-size-xs: 12px;   /* метаданные, подписи под полями */
  --font-size-sm: 13px;   /* вторичный текст в строке списка */
  --font-size-base: 14px; /* основной текст строки и формы — плотный список */
  --font-size-md: 16px;   /* заголовки блоков внутри карточки, текст кнопок */
  --font-size-lg: 20px;   /* заголовок экрана */
  --font-size-xl: 28px;   /* крупное число балла на карточке (единственное место такого размера) */

  --line-height-ui: 1.4;
  --line-height-quote: 1.55; /* цитаты чуть просторнее — их читают внимательнее */

  /* ---- Точки перелома ---- */
  --bp-desktop: 1280px; /* основной макет */
  --bp-tablet: 768px;   /* уменьшенный: часть колонок сворачивается в карточку */

  /* ---- Движение ----
     Длительности выбраны по DPF P-02: <1с — без индикатора вовсе; 1–3с — skeleton/спиннер. */
  --duration-hover: 120ms;
  --duration-panel: 200ms;
  --duration-shimmer: 1400ms;
  /* Все анимации отключаются при prefers-reduced-motion: reduce — без исключений (P-08). */

  /* ---- Слои ---- */
  --z-dropdown: 10;
  --z-sticky-header: 20;
  --z-drawer: 30;
  --z-modal: 40;
  --z-toast: 50;

  /* ---- Минимальные интерактивные размеры (десктоп, мышь + клавиатура) ----
     Не 44px мобильного стандарта (P-08) — осознанно, см. принцип 5: рабочий стол, не карман.
     32px — нижняя граница для иконных кнопок в плотной строке; 40px — обычные кнопки формы. */
  --hit-size-icon: 32px;
  --hit-size-button: 40px;
}
