/* tokens.css — единственный источник токенов
 *
 * Слой сети Bridge WAF. Разбор системы — `docs/design-system.md`.
 * Файл собственный, не копия комплекта: `site.css` и `_ops/site-kit/**`
 * общие на четыре спутника, и правка там задела бы соседей.
 *
 * Порядок подключения обязателен:
 *   fonts.css → tokens.css → base.css → home.css | kb.css
 */

/* ------------------------------------------------------------------ токены */

:root {
  --font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas,
    monospace;

  /* кегли донора: 64 / 32 / 20 / 16 / 14 / 12 */
  --fs-display: clamp(38px, 6.4vw, 64px);
  --fs-h2: clamp(26px, 3.2vw, 32px);
  --fs-card: 20px;
  --fs-lead: clamp(17px, 1.6vw, 20px);
  --fs-body: 16px;
  --fs-sm: 14px;
  --fs-label: 12px;

  --lh-display: 1;
  --lh-h2: 1.2;
  --lh-card: 1.4;
  --lh-lead: 1.5;
  --lh-body: 1.6;

  --ls-display: -0.04em;
  --ls-card: -0.04em;
  --ls-lead: -0.01em;
  --ls-body: -0.01em;

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-24: 96px;

  --container: 1248px;
  --gutter: clamp(20px, 6.7vw, 96px);

  --radius: 4px;
  --radius-pill: 999px;
  --hairline: 1px;

  /* единственная нетривиальная кривая донора */
  --ease: cubic-bezier(0.44, 0, 0.56, 1);
  --t-fast: 0.3s var(--ease);
  --t-slow: 0.4s var(--ease);
}

:root,
:root[data-theme="gruvbox-dark"] {
  /* Нейтральные тона тоже приведены к живому главному: там семейство zinc
     (#fafafa / #a1a1aa / #18181b / #52525b), у нас были свои, выведенные
     под зелёный акцент и оттого с зелёным подтоном. Для ощущения одного
     сайта фон важнее кнопки — его видят первым. --dim третьей ступени у
     главного нет, взято значение того же семейства между muted и линией. */
  --bg: #17171c;
  --bg-raise: #0e100f;
  --panel: #1c1c21;
  --panel-2: #191c1a;
  --line: rgba(255, 255, 255, 0.09);
  --line-soft: rgba(255, 255, 255, 0.035);
  /* Тот же замер, что и по светлой теме, вскрыл ту же дыру и здесь: --dim
     давал 3.1:1 на 12px при норме 4.5, вторая строка заголовков — 5.2:1
     при 7:1. Значения подобраны численно с учётом ambient-воша, который на
     чёрном не затемняет, а осветляет подложку под текстом. */
  --text: #fafafa;
  --muted: #a1a1aa;
  --dim: #8f8f99;

  /* Знак сети остаётся акцентом действия. Спека §2 предлагает #34D399, но
     цвет знака выбран отдельным решением коммитом 1a42b5e и общий для всех
     спутников; менять его на одной странице — расшить сеть. Заменяется
     одной строкой, если владелец решит иначе. */
  /* Акцент приведён к живому bridge-cdn.com (запрос домена 2026-08-25):
     --accent, --accent-hover и --accent-soft скопированы дословно, включая
     имена тем gruvbox-dark / proof-light, которые сеть запрещает менять.

     Одно значение намеренно НЕ копируется. У главного основная кнопка это
     `background: var(--accent); color: var(--accent-color)`, то есть
     #f6f6fe на #6366f1 — 4.15:1 при норме AA 4.5. Копировать заведомо
     непроходящую пару нельзя, поэтому фон кнопки взят отдельным токеном
     --accent-fill: тот же оттенок 238.7° и та же насыщенность, светлота
     опущена на минимум, дающий проход, — #5b5ef0, 4.54:1. На светлой теме
     --accent (#4f46e5) проходит сам (5.85:1), и fill равен ему.
     Тот же приём и та же причина, что были на зелёном до перехода. */
  --accent: #6366f1;
  --accent-hover: #818cf8;
  /* Заливка кнопки — на полтона темнее знака. Пара «#f6fef6 на #538259» из
     комплекта даёт 4.34:1 при норме 4.5 для текста мельче 18.66px, то есть
     каждая кнопка сети не проходит AA. Разница на глаз неразличима, а
     правка сетевого токена — решение владельца, поэтому здесь локальный
     переопределитель ТОЛЬКО для заливки кнопок; знак и все прочие
     применения акцента не тронуты. */
  --accent-fill: #5b5ef0;
  --accent-fg: #f6f6fe;
  --accent-secondary: #818cf8;
  --on-accent: #04052f;
  --accent-soft: rgb(99 102 241 / 0.16);

  /* Семантика режимов: три состояния продукта — три цвета, и больше ничего
     этими цветами не красится (спека §0.2). */
  --mode-off: #6b7280;
  --mode-monitor: #f59e0b;
  --mode-block: #ef4444;

  --depth: rgba(56, 189, 248, 0.06);
  --fade: rgba(10, 11, 10, 0);
  color-scheme: dark;
}

:root[data-theme="proof-light"] {
  --bg: #efeff0;
  --bg-raise: #fbfbfa;
  --panel: #ffffff;
  --panel-2: #f4f4f4;
  --line: rgba(0, 0, 0, 0.11);
  --line-soft: rgba(0, 0, 0, 0.045);
  /* Замер по всем 183 текстовым узлам светлой темы (снимок без текста,
     худший пиксель подложки под каждым узлом) показал системный провал:
     --dim давал 2.8–3.3:1 на 12–14px при норме 4.5, --muted не дотягивал до
     7:1 на заголовках. Значения подобраны численно, а не на глаз:
     --dim 5.4:1 на белом и 4.9:1 на панели #f4f4f4, --muted 7.9:1 на белом. */
  --text: #18181b;
  --muted: #52525b;
  --dim: #62626b;
  --accent: #4f46e5;
  --accent-hover: #818cf8;
  --accent-fill: #4f46e5;
  --accent-fg: #f6f6fe;
  --accent-secondary: #4f46e5;
  --on-accent: #04052f;
  --accent-soft: rgb(79 70 229 / 0.1);

  /* Те же роли, но затемнённые: на белом amber и red из тёмной темы
     не держат 4.5:1. */
  --mode-off: #6b7280;
  --mode-monitor: #a15c07;
  --mode-block: #c0392f;

  --depth: rgba(56, 189, 248, 0.05);
  --fade: rgba(255, 255, 255, 0);
  color-scheme: light;
}
