/* Тёмная палитра: ТЕ ЖЕ токены, что в :root у app.css, с тёмными значениями.
   Живут отдельным файлом и объявлены обычным :root (без @media) — подключением
   распоряжается сервер (web.py::page по prefs['theme']):
     «как в браузере» → <link … media="(prefers-color-scheme: dark)">
     «тёмная»         → тот же <link> без media (применяется всегда)
     «светлая»        → файл не подключается вовсе.
   Файл ОБЯЗАН подключаться после app.css, иначе светлые значения перекроют тёмные.
   Здесь допустимы ТОЛЬКО объявления переменных внутри единственного :root:
   правила отсюда перебивали бы одноимённые правила app.css (см. tests/test_theme_tokens.py). */
:root{
  /* Лестница поверхностей: колонка канбана утоплена ниже фона страницы, карточка
     поднята над ним. Ступени заметно разведены (было 1.04–1.10 — сплошное полотно):
     --col ↔ --bg 1.14:1, --bg ↔ --surface 1.25:1, --col ↔ --surface 1.43:1. */
  --bg:#131922;
  --surface:#232c3a;
  --surface-2:#2e3846;
  --ink:#e6eaf0;
  --ink-2:#b3bcc9;
  --mut:#a0aab8;         /* подтянут вслед за посветлевшими подложками (≥4.5:1 на --btn) */
  --line:#727c8c;        /* граница компонента = 3.33:1 к --surface (WCAG 1.4.11 ≥3:1) */
  --line-soft:#404a58;   /* слабый разделитель внутри карточки — 1.57:1 */
  /* В тёмной теме пара развёрнута: активная рамка обязана быть СВЕТЛЕЕ покоящейся.
     6.78:1 к --surface (и 5.72:1 к --surface-2) против 3.33:1 у --line — вдвое заметнее,
     то есть фокус усиливает рамку, а не гасит её (на --blue-line было 2.22:1, слабее покоя). */
  --focus-line:#9db4e8;
  --blue:#86adf6;
  --ok:#3ecf6d; --warn:#f0a637; --err:#f79188;
  /* Тени: геометрия общая со светлой темой, но тёмным по тёмному подъёма не создать —
     читаемость краёв держат разведённые поверхности и --line. Тени оставлены как
     вспомогательное затемнение и уплотнены: --surface поднялся, значит чёрному
     полупрозрачному пятну вокруг всплывшего элемента теперь ЕСТЬ что затемнять. */
  --shadow:rgba(0,0,0,.55);
  --shadow-md:rgba(0,0,0,.75);
  --shadow-lg:rgba(0,0,0,.85);
  --shadow-xl:rgba(0,0,0,.9);
  --ring:rgba(91,141,239,.38);
  --ring-warn:rgba(240,166,55,.35);
  --tint:18%;
  /* 28% ронял AA-контраст текста на ховере пастельных строк (--ink до 4.05,
     --ink-2 до 2.55, --mut до 2.08 на #fff2cc — расчёт в task-4-report.md).
     22% держит --ink ≥4.5 с запасом (мин. 4.75). --ink-2/--mut на самых тёплых
     пастелях в «моей» строке ниже AA НЕ ИЗ-ЗА этого токена — они проваливаются
     даже при --tint-h:0% (мут на --mine-h уже 4.51 на грани), это отдельный
     разрыв между яркостью --mut/--ink-2 и тёплыми --mine/--mine-h; тюнингом
     --tint-h не лечится, нужна отдельная правка этих токенов (не в этой задаче). */
  --tint-h:22%;
  --on-accent:#fff;
  --on-accent-2:#aeb6c3;
  --mut-2:#adb6c3;
  --btn:#2d3745;
  --btn-h:#363f4d;
  --col:#04070b;         /* колонка канбана — реально «утопленная», ниже --bg */
  --bar:#454f5e;
  --overlay:rgba(0,0,0,.62);
  --overlay-2:rgba(0,0,0,.9);
  --mine:#40381f;
  --mine-h:#473e24;
  --today:rgba(255,238,170,.10);
  /* Цветные плашки подняты над новым --surface (soft ≈1.2:1, рамка ≈2.2:1),
     иначе на посветлевшей карточке они сливались с ней в ноль.
     Ховер-варианты (-soft-h) были осветлены «на глаз» и в тёмной теме давали к своей
     базе 1.06–1.16:1 — ховера фактически не было (порог заметности = базовый ховер
     строки списка, пара --surface → --surface-2 = 1.186:1). Ниже они подняты по
     яркости до упора, который задаёт AA-контраст текста НА них (--blue/--err-ink/
     --purple, 13–15px — нужно ≥4.5:1). Выше этого потолка идти нельзя: для --blue
     ховер 1.186:1 требует яркости, при которой текст падает до 4.38:1. Поэтому
     значения выставлены в максимум с текстом ≥4.5 — 1.12–1.17:1 вместо 1.06–1.16.
     Светлые значения не трогаем: там свой порог (белая --surface → --surface-2 = 1.055:1),
     и пары дают 1.07–1.15:1, то есть уже выше него. */
  --blue-h:#9dbdf9; --blue-soft:#283952; --blue-soft-h:#2e425f; --blue-line:#45608d;
  --ok-soft:#1d3f28; --ok-soft-h:#255033; --ok-line:#316a4b; --ok-ink:#6fdc98;
  --warn-soft:#463615; --warn-soft-h:#57441c; --warn-line:#795a22; --warn-ink:#f3bd6a;
  --err-soft:#5b282c; --err-soft-h:#6c2f34; --err-line:#9a4446; --err-ink:#ff8f86;
  --purple:#c19af0; --purple-soft:#452d61; --purple-soft-h:#4e336e; --purple-line:#724da0;
  /* палитра планировщика: тёмные, но насыщенные — шесть тонов расходятся по цвету,
     текст на своей подложке даёт ≥6:1; подняты над --surface тем же шагом 1.2:1 */
  --pl-c0:#193769; --pl-c0-line:#305cad; --pl-c0-ink:#a8c8ff;
  --pl-c1:#144126; --pl-c1-line:#256b41; --pl-c1-ink:#7ff0a6;
  --pl-c2:#4a3407; --pl-c2-line:#795a14; --pl-c2-ink:#ffd07a;
  --pl-c3:#541f6e; --pl-c3-line:#81459f; --pl-c3-ink:#eba8f7;
  --pl-c4:#64202e; --pl-c4-line:#9c4156; --pl-c4-ink:#ffa8b4;
  --pl-c5:#0d3e48; --pl-c5-line:#1d6877; --pl-c5-ink:#7fe8f8;
  /* ячейки быстрого калькулятора: текст на них — --ink/--ink-2, ≥6:1 */
  --qb-ok:#203e2a; --qb-blue:#1e3a5a; --qb-warn:#443712;
  --pink:#ea97be; --pink-soft:#502e3f; --pink-line:#874c69; --pink-ink:#f09ac2; --pink-mut:#c294ab;
  /* Лента Авито. Исходящий пузырь остаётся синеватым, но уходит вниз по яркости:
     к пузырю входящего (--surface) 1.30:1 — различимы, --ink на нём 8.99:1,
     ссылка --blue 4.82:1, время/галочки --mut 4.62:1 (потолок задаёт именно --mut:
     светлее #2a3d60 он проваливается ниже AA). Чип ленты лежит на --bg: 1.22:1
     (порог заметности 1.186), --mut на нём 6.14:1. */
  --av-out:#2a3d60;
  --av-svc:#242a34;
  /* Лента Telegram: тот же приём, что у --av-out, но в зелёном тоне. Пузырь лежит на
     --surface модалки: 1.26:1 (порог заметности 1.186), --ink на нём 9.26:1,
     имя --ink-2 5.83:1, время --mut 4.76:1. Выше по яркости идти нельзя — --mut
     проваливается ниже AA. От серого пузыря входящего (--surface-2) отличается тоном,
     как и в светлой теме (там #e3f1d9 к #f1f1f1 = 1.04:1, тоже различие по тону). */
  --tg-out:#2b4030;
  /* заливки: тёмные и насыщенные — белая надпись на них даёт ≥4.5:1 */
  --blue-fill:#3457b8; --blue-fill-h:#3f6ad4;
  --err-fill:#c0392f;
  --err-fill-2:#a8342a;  /* белый текст 6.58:1 — плашка «Песочница» приглушена под тёмный фон */
  --purple-fill:#7d3cc0; --purple-fill-h:#8f4dd4;
  --warn-fill:#96580f;   /* белый текст 5.68:1 — светлая охра под белым нечитаема */
  --ok-fill:#1d7a41;
  --ok-fill-2:#1d7a41;
  --avatar-fill:#5f6874;
  --fill-off:#4d5563;    /* белый текст 7.51:1; к --surface 1.87:1 — плашка видна, но рядом
                            с --ok-fill (1.4:1 к ней) читается именно как выключенная */
  /* Графики: цвета осветлены под тёмную подложку. Столбцы лежат на --surface, полосы
     воронки — на дорожке --btn; для нетекстовой графики WCAG 1.4.11 требует ≥3:1,
     здесь минимум 3.31:1 (--chart-impr на --btn). Показы остаются приглушённее
     просмотров (1.35:1 между собой), как и в светлой теме. */
  --chart-impr:#6386c7;      /* --surface 3.86:1 · --btn 3.31:1 */
  --chart-views:#6f9ae4;     /* --surface 4.97:1 · --btn 4.25:1 */
  --chart-contacts:#eb9740;  /* --surface 6.05:1 · --btn 5.18:1 */
  --chart-fav:#3ebd7f;       /* --surface 5.89:1 · --btn 5.04:1 */
  /* Раскладка: лист поднят НАД карточкой (--surface 1.24:1, --bg 1.55:1) — чертёж
     читается как лежащий сверху лист. Нетекстовая графика, порог WCAG 1.4.11 ≥3:1:
     кромка на листе 4.64:1, пунктир поля станка 5.52:1, контур выкройки на самой
     выкройке 3.68:1 (на листе 5.16:1). Заливка выкройки к листу 1.40:1 (ΔE00 11.9) —
     по яркости они близко намеренно, различает их контур, как и в светлой теме. */
  --lay-sheet:#303b4a;
  --lay-edge:#9aa7b6;
  --lay-win:#f0a637;
  --lay-part:#33507f;
  --lay-part-line:#8bb0ef;
  /* Иконка календаря в полях даты: та же картинка, штрих перекрашен в тёмный --mut
     (#a0aab8) — на тёмном поле светло-серые линии дают ту же заметность, что серые
     на белом. Фоновый SVG иначе не перекрасить, поэтому подменяется весь url. */
  --dp-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a0aab8' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3.2' y='5' width='17.6' height='15.8' rx='2.6'/%3E%3Cpath d='M8 3v4M16 3v4M3.2 10h17.6'/%3E%3C/svg%3E");
  /* «Бумажных» токенов (--print-*) здесь НЕТ и быть не должно: печать одинакова в обеих
     схемах, значит у них ровно одно объявление — светлое, в app.css. Раньше они были
     продублированы тут ради стража симметрии; дубль ничем не защищался и при правке
     одного из файлов молча ломал бы печать. Теперь страж симметрии их исключает, а
     test_dark_has_no_print_tokens запрещает копию. */
}
