/* ══════════════════════════════════════════════════════════════════════
   tokens.css — базовый слой оформления для ВСЕХ «рабочих» страниц
   (админка, кабинет) на base.html. Публичный сайт живёт в своём тёплом
   языке (site.css) — это его сознательное отличие, не общий стандарт.

   Зачем появился (2026-09-02). В base.html лежал :root дев-палитры
   (--bg:#07070f, --purple:#a78bfa, --text:#e2e2f0) — тёмно-фиолетовый
   дашборд, к бренду Данты отношения не имевший. Первая версия (в тот же
   день) перенесла сюда тёплую кремово-янтарную палитру кабинета «как
   есть» — стало лучше дев-палитры, но кремовый/танный оттенок у --paper и
   --card держал их в 1.05-1.2:1 контраста друг к другу — почти неотличимы
   на глаз, а --hair/--hair-2 (alpha-оверлеи) после реального смешивания
   давали 1.2-1.5:1 вместо заявленных «11%/18% чёрного» — границы карточек
   были фактически невидимы (WCAG 1.4.11 требует 3:1). Отсюда жалоба
   владельца «читать стало плохо, глазу негде зацепиться» (2026-09-03).

   Правка 2026-09-04 (владелец: «стало лучше, но всё ещё неудобно по
   тексту... как у Claude — чёрный фон и белый текст»): --paper/--card/
   --ink/--hair пересчитаны в НЕЙТРАЛЬНУЮ, низко-насыщенную шкалу серого
   (не буквально чёрно-белую — небольшой тёплый подтон оставлен, чтобы не
   выглядело клинически) вместо кремово-танной. Акцент (золото) и
   семантические цвета (--ok/--bad/--warn/--blue) НЕ трогались — они и
   были той единственной каплей тепла на нейтральном фоне, ровно как у
   рабочих интерфейсов такого рода (сравни GitHub/Linear: нейтральный
   серый + один цветной акцент). Каждая пара границ/текста ниже посчитана
   по формуле WCAG (relative luminance) к --paper/--card/--card-hover
   («худший случай» — не просто светлее/темнее наугад).

   Дубликат в cabinet.css был удалён этим же проходом и в тот же день
   возвращён обратно — на странице кабинета порядок подключения не
   tokens.css → cabinet.css напрямую, а tokens.css → site.css →
   cabinet.css (см. cabinet/index.html), и site.css между ними тоже
   переопределяет --paper/--card/--ink/--hair своей тёплой палитрой.
   Без сброса ПОСЛЕ site.css кабинет молча наследовал палитру сайта —
   ровно та ошибка, что уже случалась с этим файлом раньше. Значит,
   ДВА места правки палитры: этот файл (эталон, читает и админка) и
   :root в начале cabinet.css (копия, обязана совпадать построчно) —
   один cabinet.css не решить, пока сайт и кабинет делят имена токенов.

   Порядок слоёв (важно, иначе всё разъедется):
     tokens.css  ← базовые значения, этот файл, грузится ПЕРВЫМ
     site.css    ← публичный сайт перебивает своей тёплой палитрой
     cabinet.css ← сбрасывает обратно на эти же значения (копия ниже), плюс вёрстка
   Админка не грузит ничего сверху и потому живёт ровно на этих значениях.
   ══════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Поверхности и текст: нейтральная шкала (правка 2026-09-04) ──
     Было кремово-танно (--paper #F1EBDD, --ink #2A2419) — насыщенный тёплый
     оттенок держал --paper и --card почти неотличимыми (1.05-1.12:1) и
     подсвечивал даже незначительную путаницу цветов как «мутность». Ниже —
     та же светлота по ступеням, но насыщенность снижена в разы (десатурация
     в HSL, не «просто серый»): лёгкий тёплый подтон остался, чтобы не
     выглядело клинически, но не он держит структуру страницы — это делают
     сами значения светлоты и --hair. Заявленный владельцем ориентир —
     нейтральный рабочий интерфейс (Claude/GitHub/Linear: серая база + один
     цветной акцент) — акцент (--accent, ниже) не тронут ровно поэтому. */
  --paper: #E6E5E2;
  --paper-2: #DAD9D5;
  --card: #FBFAF8;
  --card-hover: #F1F0ED;
  --ink: #201F1D;
  /* --ink-2/--ink-3 проверены к --paper/--card/--card-hover (худший случай
     --card-hover): 6.20-7.49:1 / 5.07-6.13:1 — оба с запасом выше WCAG 4.5:1. */
  --ink-2: #54524C;
  --ink-3: #615F58;
  /* --hair (граница/разделитель, WCAG 1.4.11 — 3:1): 3.16-3.81:1.
     --hair-2 (двойная роль — ещё и ЦВЕТ ТЕКСТА в --subtle/.slider-range,
     порог строже, 4.5:1): 4.78-5.77:1. Оба — сплошные тона, не alpha. */
  --hair: #847F77;
  --hair-2: #65635B;

  /* ── Акцент: тёплое золото/янтарь, фирменный цвет Данты ── */
  --accent: #C17A12;
  --accent-strong: #8F5710;
  --accent-fill: #9C5F0E;
  --on-accent: #FFFFFF;
  --accent-soft: rgba(193, 122, 18, .16);
  --accent-soft-strong: rgba(193, 122, 18, .30);

  /* ── Состояния ── */
  --bad: #B24A3C;
  --ok: #3D6B52;
  /* Предупреждение. В кабинете такой роли нет, в админке была россыпь
     неоновых #fbbf24/#f59e0b/#d97706 — на тёмном они читались, на кремовом
     жгут глаз. Тёплая охра рядом с акцентом, но заметно отличается от него,
     чтобы «внимание» не путалось с «активно». */
  --warn: #A8701C;
  /* Синий — вторичный акцент (владелец 2026-08-31: «синий вторично —
     частицы, свечение, глубина»). В кабинете не используется вообще,
     в админке — тариф Plus и служебные пометки. Приглушён под тёплый
     фон: исходный #60a5fa на кремовом читался чужой неоновой заплаткой. */
  --blue: #3F6E9E;

  /* ── Форма ── */
  --radius-sm: 10px;
  --radius-md: 14px;
  --radius-lg: 20px;
  --radius-pill: 999px;
  --shadow-sm: 0 1px 2px rgba(43, 35, 20, .06);
  --shadow-md: 0 6px 20px -6px rgba(43, 35, 20, .18);

  /* ── Типографика ── */
  /* Системные стеки, как у кабинета. Фирменные Literata/Inter/IBM Plex Mono
     остаются ТОЛЬКО у публичного сайта (site.css, body.public) — это его
     отличие по решению владельца, а не общий стандарт. */
  --voice: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --mono: ui-monospace, 'SF Mono', 'Cascadia Mono', Consolas, monospace;
}

@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) {
    /* Та же нейтрализация, что в :root (см. комментарий там) — прежние
       #1C1B18/#242320 были почти нейтральны по оттенку, но недостаточно
       разведены по светлоте (paper/card ~1.1:1); подняты сюда же значения,
       проверенные вместе со всей шкалой. */
    --paper: #161514;
    --paper-2: #100F0E;
    --card: #201E1C;
    --card-hover: #272522;
    --ink: #EDEBE7;
    /* --ink-2/--ink-3 к --paper/--card/--card-hover (худший случай
       --card-hover): 6.09-7.27:1 / 4.63-5.53:1. */
    --ink-2: #A8A39A;
    --ink-3: #928D84;
    /* --hair (3:1): 3.25-3.87:1. --hair-2 (двойная роль, текст — 4.5:1): 5.26-6.28:1. */
    --hair: #78736A;
    --hair-2: #9C978E;
    --accent: #E3AC5C;
    --accent-strong: #F0BE79;
    --accent-fill: #E3AC5C;
    --on-accent: #241C0F;
    --accent-soft: rgba(227, 172, 92, .20);
    --accent-soft-strong: rgba(227, 172, 92, .32);
    --bad: #D97B6C;
    --ok: #6FA98A;
    --warn: #D9A455;
    --blue: #7FA9CF;
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .30);
    --shadow-md: 0 12px 30px -10px rgba(0, 0, 0, .55);
  }
}

/* Выбор человека перебивает системную настройку — тот же приём, что в
   site.css и cabinet.css, второй механизм не изобретаем. */
html[data-theme="dark"] {
  --paper: #161514;
  --paper-2: #100F0E;
  --card: #201E1C;
  --card-hover: #272522;
  --ink: #EDEBE7;
  --ink-2: #A8A39A;
  --ink-3: #928D84;
  --hair: #78736A;
  --hair-2: #9C978E;
  --accent: #E3AC5C;
  --accent-strong: #F0BE79;
  --accent-fill: #E3AC5C;
  --on-accent: #241C0F;
  --accent-soft: rgba(227, 172, 92, .20);
  --accent-soft-strong: rgba(227, 172, 92, .32);
  --bad: #D97B6C;
  --ok: #6FA98A;
  --warn: #D9A455;
  --blue: #7FA9CF;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .30);
  --shadow-md: 0 12px 30px -10px rgba(0, 0, 0, .55);
}

/* ── Мост к старым дев-именам ─────────────────────────────────────────────
   В разметке админки ~500 обращений вида var(--muted), var(--purple),
   var(--border). Переписывать их поимённо — трогать логику вместе с
   краской, ровно то, чего избегаем: старые имена просто начинают означать
   новые цвета. Тот же приём уже применён в cabinet.css, здесь он повторён,
   чтобы им пользовалась и админка.

   --purple умышленно означает акцент, а не сиреневый: имя осталось от
   прежней палитры, а роль у него всегда была «цвет активного элемента». */
:root {
  --bg: var(--paper);
  --surface: var(--card);
  --surface-2: var(--paper-2);
  --border: var(--hair);
  --subtle: var(--hair-2);
  --text: var(--ink);
  --muted: var(--ink-3);
  --purple: var(--accent);
  --green: var(--ok);
  --red: var(--bad);
}
