/* ЕДИНЫЙ ИСТОЧНИК ТОКЕНОВ ПРОДУКТА.
 *
 * Отсюда берут цвета, размеры и радиусы ВСЕ страницы: кабинет
 * (/app/), лендинг (/) и страница входа (/login). До 01.09 палитра
 * жила в трёх местах, а страница входа вообще держала цвета
 * захардкоженными — комментарий рядом при этом обещал «те же токены».
 *
 * Правило: новый цвет объявляется ЗДЕСЬ и нигде больше. Второе имя
 * того же значения или цвет, вписанный прямо в правило, роняют
 * архитектурный тест `test_design_tokens.py` — комментарий защитой не
 * является, это уже проверено на практике.
 *
 * ПАЛИТРА NOCTURNE, принята брифом владельца 02.09 — заменяет
 * чёрно-лаймовую от 20.08. Значения взяты из файла дизайн-системы
 * (`_ds/nocturne-2ad7b764.../styles.css` в пакете макетов), а не
 * подобраны: макеты требуют пиксель-в-пиксель.
 *
 * Устройство файла:
 *   1) шкалы и роли системы — имена `--color-*`, ими пишутся НОВЫЕ
 *      экраны, ровно как в макетах;
 *   2) два сигнальных цвета, которых в системе нет;
 *   3) псевдонимы `--wb-*` — старая разметка (9000 строк) ссылается на
 *      них, и переписать её разом нельзя. Псевдоним не создаёт второго
 *      ЗНАЧЕНИЯ: он ссылается на роль, поэтому страж дублей молчит, а
 *      правка роли доезжает до старых экранов сама;
 *   4) ступени текста `--ink-NN` и то, что зависит от темы;
 *   5) светлая тема — блок `:root[data-theme="light"]` в конце файла.
 *      Тёмная остаётся по умолчанию; светлую продавец включает сам
 *      (сайт — «Аккаунт → Настройки», приложение — «Ещё → Аккаунт»),
 *      атрибут ставит tma/theme.js до первой отрисовки.
 */

/* ───────────────────────── 1. Система Nocturne ─────────────────── */
:root {
  --color-bg: #161826;
  --color-surface: #232532;
  --color-text: #e9e9ed;
  --color-accent: #9184d9;
  --color-accent-2: #a7a1db;
  --color-divider: color-mix(in srgb, #e9e9ed 16%, transparent);

  /* Шкалы построены в OKLCH на одной шкале светлоты: одинаковая
     ступень любой роли совпадает по зрительному весу с другой. */
  --color-neutral-100: #f3f5fe;
  --color-neutral-200: #e4e7f5;
  --color-neutral-300: #cfd3e5;
  --color-neutral-400: #b2b6ca;
  --color-neutral-500: #9397ab;
  --color-neutral-600: #75798c;
  --color-neutral-700: #595d6c;
  --color-neutral-800: #3f424d;
  --color-neutral-900: #292b31;

  --color-accent-100: #f5f4ff;
  --color-accent-200: #e7e5fe;
  --color-accent-300: #d2cefd;
  --color-accent-400: #b5abfc;
  --color-accent-500: #968ae0;
  --color-accent-600: #796cbf;
  --color-accent-700: #5d5294;
  --color-accent-800: #423a6a;
  --color-accent-900: #2b2741;

  /* Вторичная шкала. Верхние три ступени совпадают с основной по
     значению — обе идут к белому, и на светлом конце сходятся. Это
     свойство системы, а не оплошность: названо в стороже поимённо. */
  --color-accent-2-100: #f5f4ff;
  --color-accent-2-200: #e7e5fe;
  --color-accent-2-300: #d2cefd;
  --color-accent-2-400: #b5afe8;
  --color-accent-2-500: #9690c9;
  --color-accent-2-600: #7972a9;
  --color-accent-2-700: #5c5783;
  --color-accent-2-800: #423e5d;
  --color-accent-2-900: #2b293a;

  /* Насыщенная заливка. В продукте разрешена ровно в двух местах:
     полоса чисел и финальный блок лендинга. Внутри кабинета не
     применяется — там ground остаётся приглушённым. */
  --color-section: #262a60;
  --color-section-glow: #353b80;
  --color-section-ghost: #4c5397;

  --font-heading: "Inter", system-ui, sans-serif;
  --font-heading-weight: 500;
  --font-body: "Inter", system-ui, sans-serif;

  --space-1: 2.8px;
  --space-2: 5.6px;
  --space-3: 8.4px;
  --space-4: 11.2px;
  --space-6: 16.8px;
  --space-8: 22.4px;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;
  --radius-pill: 999px;

  /* Глубина на тёмном фоне — хайрлайн плюс рассеянная тень, а не
     мягкое пятно: на #161826 мягкая тень не видна вовсе. */
  --shadow-sm: 0 0 0 1px #3f424d;
  --shadow-md: 0 0 0 1px #595d6c, 0 6px 18px rgba(0,0,0,0.55);
  --shadow-lg: 0 0 0 1px #9397ab, 0 16px 40px rgba(0,0,0,0.65);

/* ─────────────────── 2. Сигнальные цвета (вне системы) ──────────── */
  /* В Nocturne их нет: система про спокойный интерфейс, а нам надо
     говорить «дороже цели» и «работаем в убыток». Выведены в OKLCH на
     светлоте акцента, чтобы не выпадать из палитры по весу.
     Светлота поднята 05.10 (ветка dark-contrast) до наименьшей, при которой
     текст не ниже WCAG AA 4.5:1 на фоне, карточке, чипе, подложке акцента
     16 % и на СВОЕЙ подложке 18 % (метки «платил · истёк», «Токен WB
     отключён» стоят на ней): была 0.72 / 0.65 / 0.70 — красный на своей
     подложке давал 3.5:1. Насыщенность и тон прежние. */
  --sig-warn: oklch(0.73 0.125 78);
  --sig-bad:  oklch(0.74 0.150 22);
  /* «Платит» в админке (владелец 21.09: активные — зелёным). Та же насыщенность, тон 150. */
  --sig-good: oklch(0.71 0.130 150);
  /* Цвет изменения величины (06.10, пачка №327) — ОДИН на сайте, в приложении, в Ozon и в календаре «до → после»: лучше —
     акцентом (сигнального «хорошо» в палитре нет), хуже — предупреждением (владелец 23.09: «хуже» не приглушённым и не
     красным), нейтрально — без цвета. Смысл (что лучше: ДРР вниз, заказы вверх, расход нейтрально) — `CX_СМЫСЛ_ДЕЛЬТЫ`
     сайта и `СМЫСЛ_ДЕЛЬТЫ` приложения; страж — test_delta_color_one_meaning. Светлая тема — через свои accent-300 и sig-warn. */
  --delta-good: var(--color-accent-300);
  --delta-good-bg: color-mix(in srgb, var(--color-accent) 26%, transparent);
  --delta-bad: var(--sig-warn);
  --delta-bad-bg: color-mix(in srgb, var(--sig-warn) 12%, transparent);

/* ──────────────── 3. Псевдонимы для старой разметки ─────────────── */
  /* Разметка кабинета ссылается на эти имена в тысячах мест. Пока
     экраны переезжают на макеты по одному, псевдонимы держат старые
     живыми — и меняются вместе с ролью, а не отдельно от неё. */
  --wb-bg: var(--color-bg);
  --wb-card: var(--color-surface);
  /* Плитка внутри карточки рисуется на фоне ЭКРАНА, а не на своей
     поверхности: так глубина читается через светлоту, без теней.
     Проверено по макету — 27 вхождений против 16 у дорожки. */
  --wb-tile: var(--color-bg);
  --wb-chip: var(--color-neutral-900);
  --wb-accent-soft: var(--color-neutral-900);
  --wb-border: var(--color-divider);
  --wb-text: var(--color-text);
  --wb-text-secondary: var(--ink-62);
  --wb-text-muted: var(--ink-45);
  --wb-text-placeholder: var(--ink-30);
  --wb-accent: var(--color-accent);
  --wb-accent-deep: var(--color-accent-700);
  --wb-accent-pressed: var(--color-accent-600);
  /* Текст НА акценте. Остаётся чёрным и на фиолетовом: контраст
     чёрного 6.51:1 против белого 3.23:1 — посчитано, а не выбрано по
     привычке ставить белый на фиолетовый. В макетах первичная кнопка
     вообще контурная, так что заливок с текстом почти не осталось. */
  --wb-accent-text: #000000;
  --wb-accent-muted: color-mix(in srgb, var(--color-accent) 18%, transparent);
  --wb-amber: var(--sig-warn);
  --wb-amber-icon: var(--sig-warn);
  --wb-amber-bg: color-mix(in srgb, var(--sig-warn) 16%, transparent);
  --wb-warning: var(--sig-warn);
  --wb-red: var(--sig-bad);
  --wb-red-bg: color-mix(in srgb, var(--sig-bad) 14%, transparent);
  /* Фирменный цвет самого Wildberries — не наш и не меняется. */
  --wb-brand: #CB11AB;
  --chart-sales: var(--color-accent);
  /* Вторая линия графика обязана отличаться от первой — иначе
     сравнивать нечего. Берём сигнальный янтарь, он и так в палитре. */
  --chart-spend: var(--sig-warn);
  --chart-grid: color-mix(in srgb, var(--color-text) 8%, transparent);

  /* Шкала размеров: в Nocturne её нет, остаётся наша. */
  --fs-display: 56px;
  --fs-h1: 28px;
  --fs-h2: 20px;
  --fs-tile: 32px;
  --fs-body: 15px;
  --fs-body-sm: 13px;
  --fs-label: 12px;
  --radius-card: var(--radius-lg);
  --radius-tile: var(--radius-md);
  --radius-chip: var(--radius-md);

  /* ── Типографика раздела «Продвижение» ──
     Шкала из индекса дизайн-системы: десять ступеней. Ступени N2/T1 и
     L1/T2 отличаются ВЕСОМ, а не размером — 15px и 13px берутся из
     общих --fs-body и --fs-body-sm, а вес называет ступень. */
  --fs-n0-pr: 44px;
  --fs-h1-pr: 24px;
  --fs-n1-pr: 22px;
  --fs-h2-pr: 17px;
  --fs-l2-pr: 11px;
  --fw-n2-pr: 600;
  --fw-strong-pr: 600;
  --fw-l1-pr: 500;
  --fw-t1-pr: 500;
  --fw-t2-pr: 400;

  /* Дорожка полос: по ней видно, докуда полоса НЕ доросла. Была нейтраль
     900 — на карточке 1.07:1, дорожки не видно. С 05.10 (dark-contrast,
     четвёртый круг) — доля текста, выведенная, а не подобранная: НАИБОЛЬШАЯ
     целая доля, при которой заливка акцентом к самой дорожке не ниже 3:1 на
     карточке (WCAG 1.4.11): 15 % → 3.07:1, дорожка к карточке 1.53:1.
     Разделитель (16 %, третий круг) давал заливке 2.97:1 — ниже порога.
     Страж — test_dark_contrast. */
  --wb-track: color-mix(in srgb, var(--color-text) 15%, transparent);
  --pr-line: color-mix(in srgb, var(--color-text) 8%, transparent);
  --pr-dim62: var(--ink-62);
  /* «Едва заметный» — отдельная ступень 42%, не путать с приглушённым 45%. */
  --pr-dim42: var(--ink-42);

/* ─────────────── 4. Ступени текста и то, что зависит от темы ─────────────── */
  /* Приглушённый текст — доля цвета текста. Процент жил прямо в правилах
     (`color: color-mix(... var(--color-text) 45%, transparent)`, 340 мест) —
     тема его поменять не могла. Имя ступени — прежняя доля, значение у
     каждой темы своё, не ниже 4.5:1 (светлая — раздел 5). Новые места
     пишутся токеном; старую запись меняет probes/theme_ink_codemod.py,
     страж — test_light_theme.
     Тёмная (05.10, ветка dark-contrast): нижние ступени давали 2.1–4.8:1 на
     карточке — ниже WCAG AA (755 мест на снимках). Выведено, а не подобрано:
     нижняя ступень (25) — 60 %, наименьшая доля, при которой текст не ниже
     4.5:1 на фоне, карточке, чипе и подложках акцента и янтаря 16 % (худшая —
     янтарь, нужно 59.4 %); ступени ниже 78 растянуты на 60…78 % линейно,
     d → 60 + (d − 25)·18/53, порядок прежний; 78–85 и сам текст — прежние
     (они и так выше AA). Числа контраста считает test_dark_contrast. */
  --ink-25: color-mix(in srgb, var(--color-text) 60%, transparent);
  --ink-28: color-mix(in srgb, var(--color-text) 61%, transparent);
  --ink-30: color-mix(in srgb, var(--color-text) 61.7%, transparent);
  --ink-32: color-mix(in srgb, var(--color-text) 62.4%, transparent);
  --ink-34: color-mix(in srgb, var(--color-text) 63.1%, transparent);
  --ink-35: color-mix(in srgb, var(--color-text) 63.4%, transparent);
  --ink-38: color-mix(in srgb, var(--color-text) 64.4%, transparent);
  --ink-40: color-mix(in srgb, var(--color-text) 65.1%, transparent);
  --ink-42: color-mix(in srgb, var(--color-text) 65.8%, transparent);
  --ink-45: color-mix(in srgb, var(--color-text) 66.8%, transparent);
  --ink-48: color-mix(in srgb, var(--color-text) 67.8%, transparent);
  --ink-50: color-mix(in srgb, var(--color-text) 68.5%, transparent);
  --ink-52: color-mix(in srgb, var(--color-text) 69.2%, transparent);
  --ink-55: color-mix(in srgb, var(--color-text) 70.2%, transparent);
  --ink-58: color-mix(in srgb, var(--color-text) 71.2%, transparent);
  --ink-60: color-mix(in srgb, var(--color-text) 71.9%, transparent);
  --ink-62: color-mix(in srgb, var(--color-text) 72.6%, transparent);
  --ink-68: color-mix(in srgb, var(--color-text) 74.6%, transparent);
  --ink-70: color-mix(in srgb, var(--color-text) 75.3%, transparent);
  --ink-72: color-mix(in srgb, var(--color-text) 76%, transparent);
  --ink-78: color-mix(in srgb, var(--color-text) 78%, transparent);
  --ink-80: color-mix(in srgb, var(--color-text) 80%, transparent);
  --ink-82: color-mix(in srgb, var(--color-text) 82%, transparent);
  --ink-85: color-mix(in srgb, var(--color-text) 85%, transparent);

  /* Яркий текст чисел старой разметки: был вписан `#fff` в 15 правил — на
     белой карточке светлой темы он исчезал. В тёмной — тот же белый. */
  --wb-text-strong: #ffffff;
  /* Подсветка строки под пальцем и под курсором: была вписана белым с
     прозрачностью — на светлом фоне не видна. */
  --wb-press: rgba(255, 255, 255, 0.05);
  --wb-hover: rgba(255, 255, 255, 0.03);
  /* Фон вокруг колонки кабинета на широком экране: у сайта — свой
     (был вписан в `html`), у приложения v2 — фон, затемнённый на 22 %. */
  --wb-backdrop: #0D0E17;
  --color-backdrop: color-mix(in srgb, var(--color-bg) 78%, black);
  /* Системные поля ввода и полосы прокрутки браузера — в тон теме. */
  --ui-scheme: dark;

  /* Графика и элементы управления (05.10, скептик светлой темы). Столбики, заливки полос, ступени воронки и
     тепловой карты брали ступени шкалы акцента напрямую — в светлой теме шкала обратная, и столбик расхода
     (accent-800) становился #e7e5fe на белом, 1.2:1. Здесь у графики свои имена; в обеих темах — не ниже 3:1
     к фону и карточке (WCAG 1.4.11), светлая — раздел 5.
     Тёмная (05.10, ветка dark-contrast): столбик расхода (800) давал 1.5:1, столбики и заливки 700 — 2.2:1.
     Нижняя ступень — 600 системы (3.4:1 на карточке, 3.2:1 на чипе), выше — та же шкала между 600 и 500 с шагом
     30 %, порядок прежний: 800 < 700 < 600 < 500 < 400 < 300. Выделенный столбик (день, «сегодня») — акцент,
     он ярче 800–600, как и был. 500–300 — прежние ступени.
     Подложки с текстом (кружок магазина, метка) остаются на ступенях шкалы: там важен контраст текста. */
  --chart-a800: var(--color-accent-600);
  --chart-a700: color-mix(in srgb, var(--color-accent-500) 30%, var(--color-accent-600));
  --chart-a600: color-mix(in srgb, var(--color-accent-500) 60%, var(--color-accent-600));
  --chart-a500: var(--color-accent-500);
  --chart-a400: var(--color-accent-400);
  --chart-a300: var(--color-accent-300);
  /* Тепловая карта: уровни 1–3 (4 — акцент, 0 — дорожка). Яркость клетки и есть значение — WCAG 1.4.11
     такую графику не судит («color gradients that represent a measurement, such as heat maps», Understanding
     1.4.11). С 05.10 дорожка стала светлее, и уровни подняты, чтобы шли по порядку от неё к акценту: 1 — 700 на
     четверть к 800
     (2.0:1), 2 — середина 600 и 700 (2.8:1), 3 — 600 (3.4:1), 4 — акцент (4.7:1). Не ярче светлой темы
     (её уровни 2.1 / 3.0 / 4.5:1 — страж test_light_theme). */
  --chart-heat-1: color-mix(in srgb, var(--color-accent-700) 75%, var(--color-accent-800));
  --chart-heat-2: color-mix(in srgb, var(--color-accent-600) 50%, var(--color-accent-700));
  --chart-heat-3: var(--color-accent-600);
  /* Нейтральная отметка графика: вторая линия (расход, показы), её точки и легенда, кольцо события журнала. */
  --chart-n500: var(--color-neutral-500);
  /* Вторая дорожка (пустые деления ритма и шагов, полоса лимита) — как в master, нейтраль 800: на карточке 1.52:1,
     на фоне экрана 1.76:1, акцент к ней 3.10:1. Третий круг переводил её на разделитель — на фоне экрана он бледнее
     (1.55:1), и деления подключения (.ob-bars, стоят на фоне) стали хуже master. */
  --wb-track-2: var(--color-neutral-800);
  /* Кружок выключенного тумблера; выключенный тумблер iPhone, рамка флажка, точка «простаивает». */
  --ui-knob: var(--color-neutral-500);
  /* Рамка флажка, точка «простаивает», выключенный тумблер iPhone: была нейтраль 700 (2.3:1 на карточке) —
     с 05.10 нейтраль 600, 3.5:1 (как в светлой: #75798c). */
  --ui-off: var(--color-neutral-600);
  /* Обводка невыбранной радиокнопки режима — была цветом разделителя: 1.6:1 в тёмной, 1.34:1 в светлой, кружок не
     виден. С 05.10 и в тёмной — нейтраль 600, 3.5:1. */
  --ui-ring: var(--color-neutral-600);
  /* Точка «автопилот не ведёт» в шапке блока автопилота на странице кампании сайта (.cp-pulse). Была смесью 25 %
     цвета текста прямо в правиле — мимо токенов, в тёмной 2.0:1 на карточке. С 05.10 в тёмной — та же нейтраль 600,
     что у точки «простаивает» в v2 (.pulse.off), 3.5:1. */
  --ui-idle: var(--ui-off);
  /* Серая точка состояния (строка кампании узкого сайта .pm-dot, раздел «Аккаунта» .wa-dot) — графика, а не текст:
     залитая ступенью текста (--ink-30 / --ink-28), с подъёмом ступеней 05.10 она стала 5.7:1 — ярче точки «ведётся»
     акцентом (4.7:1). В тёмной — та же нейтраль 600, что у точки «простаивает» (3.5:1); в светлой — прежние ступени. */
  --dot-30: var(--ui-off);
  --dot-28: var(--ui-off);

  /* Графика, бывшая смесью прямо в правиле (четвёртый круг dark-contrast): тема её не меняла, и в тёмной она была
     ниже порога. Имя — прежняя доля (как у --ink-NN) или прежний токен, значение у каждой темы своё; светлая —
     прежнее значение правила (раздел 5, страж test_dark_contrast).
     --track-10, --track-12 — дорожки и пустые деления (сайт: полоса мастера стратегии .cp-w5-bar, деления мастера
       Ozon .cp-w-bar i, срок подписки .ac-bar; v2: полоса мастера .wiz5-bar, деления мастера Ozon .wiz-seg): было
       10–12 % текста, на карточке 1.32–1.40:1 — бледнее общей дорожки; в тёмной — общая дорожка;
     --guide-30, --guide-38 — линия наведения графика (.cp-guide сайта, .plot .guide v2): в тёмной — 38 %, наименьшая
       целая доля не ниже 3:1 к карточке (3.07:1; у сайта было 30 %, 2.43:1);
     --nosale-30 — день «нет продаж» в полосе ДРР по дням v2 (.drrstrip i.nosale): в тёмной — 58 % янтаря, наименьшая
       целая доля не ниже 3:1 к карточке (было 30 %, 1.75:1);
     --accent-80 — заливка ступени воронки узкого сайта (.e-step-fill), ширина — конверсия: в тёмной — сам акцент
       (80 % к дорожке давали 2.50:1, акцент — 3.07:1);
     --fill-a600 — заливка на дорожке, бывшая ступенью графики 600: позиция кластера (.cl-pos-fill, слой кампании
       узкого сайта) и конец градиента полосы мастера стратегии (.cp-w5-bar i, v2 .wiz5-bar i) — там, где заливка
       встречает дорожку: в тёмной — акцент (3.07:1 к дорожке; --chart-a600 давал 2.83:1, на master к невидимой
       дорожке позиция была 3.17:1);
     --fill-70 — прозрачность заливки «позиция далеко» (.cl-pos-fill.far, красный): в тёмной 1 (к дорожке 4.0:1;
       .7 давала 2.7:1);
     --zone-a800 — затенённая зона топ-3 на дорожке позиции (.cl-pos-top3): в тёмной — ступень 700 (к дорожке
       1.46:1 на карточке и 1.73:1 на фоне, на master к невидимой дорожке 1.38:1; ступень 800 к новой дорожке —
       1.04:1, зоны не видно). Ниже 3:1 — названное исключение test_dark_contrast: состояние «в топ-3 или нет»
       написано под дорожкой словами и числом позиции у запроса;
     --fill-top3 — заливка позиции «в зоне топ-3» (.cl-pos-fill.in-top3): она кончается на зоне, а не на дорожке, и
       акцент к зоне (ступень 700) давал 2.10:1 — на master (зона — ступень 800) было 3.18:1. В тёмной — ближайшая к
       акценту ступень шкалы светлее него, при которой заливка к зоне не ниже 3:1: 400 (3.29:1; 500 — 2.26:1);
     --guide-divider — линия наведения графика запроса Озона на сайте (.ozc-guide): была разделителем прямо в правиле,
       в тёмной 1.58:1 к карточке — бледнее остальных линий наведения; в тёмной — та же доля, что у них (--guide-38). */
  --track-10: var(--wb-track);
  --track-12: var(--wb-track);
  --guide-38: color-mix(in srgb, var(--color-text) 38%, transparent);
  --guide-30: var(--guide-38);
  --nosale-30: color-mix(in srgb, var(--sig-warn) 58%, transparent);
  --accent-80: var(--color-accent);
  --fill-a600: var(--color-accent);
  --fill-70: 1;
  --zone-a800: var(--color-accent-700);
  --fill-top3: var(--color-accent-400);
  --guide-divider: var(--guide-38);
  /* Значки, приглушённые числом прямо в правиле (четвёртый круг): прозрачность ложилась на цвет текста строки, и
     значок падал ниже 3:1 — «отключить нельзя» в «Уведомлениях» (.wa-lock, .35 — 2.8:1), копирование номера
     (.e-copy-i, .5 — 2.7:1), заглушка фото (.wg-thumb .ic, .3 — 2.5:1), стрелка сортировки (.cx-sort .ic), стрелка
     кнопки меню (.cp-menu-wrap .cx-btn .ic:last-child), стрелка поставки v2 (.sup-open .sup-car). Имя — прежнее
     число; в тёмной — наименьшая прозрачность, при которой значок цвета нижней ступени текста (--ink-25) не ниже
     3:1 на фоне, карточке и чипе: .64; в светлой — прежние числа. */
  --icon-50: .64;
  --icon-30: var(--icon-50);
  --icon-35: var(--icon-50);
  --icon-45: var(--icon-50);
  --icon-60: var(--icon-50);

  /* Приглушение прозрачностью (05.10). Было числом в правилах — тема его не меняла, и в светлой подписи нижнего
     меню давали 1.45:1. Две семьи:
     --fade-NN — одна надпись основного цвета (вкладка меню, метка): в светлой — доля как у ступени --ink-NN;
     --dim-NN  — строка, карточка или чип с разными подписями внутри (кампания на паузе, пустой фильтр): в
                 светлой не приглушается — подписи внутри уже на нижней ступени AA, любая прозрачность роняет их
                 ниже 4.5:1; состояние строки называет её метка («на паузе в WB», «завершена»).
     Выключенные (:disabled) и неактивные (cursor: default) — число, их WCAG не судит; страж — test_light_theme.
     Тёмная (05.10, ветка dark-contrast): --dim-NN — 1, как в светлой: строка на паузе в WB, завершённая, неактивная
     кампания Озона, пустой фильтр не приглушаются, состояние называет метка строки (решение по вопросу владельцу,
     вариант 2: приглушение роняло подписи в строке до 2.1–4.1:1, 161 место на снимках); --fade-NN — не ниже AA:
       --fade-42 — значок нижнего меню сайта; подпись под ним теперь приглушается один раз — цветом нижней
                   ступени текста (--ink-25), не прозрачностью дважды (.42² = .18, 1.7:1). Значок — той же доли,
                   60 %: значок и подпись одного тона, как задумано;
       --fade-55 — метка «проба истекла» (нейтраль 100 на нейтрали 800): .55 давала 4.05:1, .62 — 4.7:1;
       --fade-80 — число в чипе журнала: прежнее, ступень под ним поднята. */
  --fade-42: .6;
  --fade-55: .62;
  --fade-80: .8;
  --dim-35: 1;
  --dim-42: 1;
  --dim-45: 1;
  --dim-50: 1;
  --dim-55: 1;
  --dim-62: 1;
  --dim-70: 1;

  /* «Календарь событий» (05.10, tma/calendar.css): линии графика — семь мест, цвет закреплён за местом (как у WB); пары
     2↔4 и 3↔5 различаются ещё и рисунком линии. События — цвет по группе: цена (действие продавца), наличие, реклама;
     СПП и правки ставок — нейтральный. Контраст линий к карточке #232532 — от 3.4:1. Значок и текст на заливке цветом
     события — --wb-accent-text (как текст на заливке акцента). */
  --kal-s1: #3987e5;
  --kal-s2: #d95926;
  --kal-s3: #199e70;
  --kal-s4: #c98500;
  --kal-s5: #d55181;
  --kal-s6: #8a63d2;
  --kal-s7: #3bb3a0;
  --kal-e-price: #a397f0;
  --kal-e-stock: #4fb6c8;
  --kal-e-ads: #e2ad55;
  --kal-e-wb: #a3a7ba;
}

/* ───────────── 6. Лендинг (31.10, «продающий» редизайн) ───────────── */
/* Палитра нового кабинета v3 (Olive, tma/v3/tokens.css: «жемчуг и камень» + глубокая олива), которую владелец
   принял 31.10, — для продающей страницы `/`. Своё имя `--lp-*`: кабинет v2 и сайт их не используют, v3 пока живёт
   рядом со своим файлом. У лендинга одна тема — светлая с тёмными «ночными» полосами (тон знака «Ночной»),
   поэтому светлая тема кабинета эти имена не перекрашивает (test_light_theme, НЕ_ПЕРЕКРАШИВАЮТСЯ). */
:root {
  --lp-page: #F5F5F2;
  --lp-surface: #FCFCFA;
  --lp-sunk: #EBECE8;
  --lp-line: #DCDED7;
  --lp-line-2: #C7CAC1;
  --lp-ink: #242622;
  --lp-ink-2: #666A63;
  --lp-ink-3: #8C9088;
  --lp-olive: #4D5A2C;
  --lp-olive-deep: #414C24;
  --lp-olive-soft: #E7EADB;
  --lp-olive-ink: #F8F9F3;
  --lp-sage: #A9B38A;
  --lp-clay: #93562A;
  --lp-clay-soft: #F3E7D9;
  --lp-night: #1B1D19;
  --lp-night-2: #262923;
  --lp-lime: #C5D08F;
}

/* ───────────────────── 5. Светлая тема (05.10) ───────────────────── */
/* Просьба владельца: «людям с астигматизмом» — светлый фон и тёмный
   текст. Включает продавец сам; выбор хранит tma/theme.js.
   Как выведено, а не подобрано:
   • роли: фон — светлый серо-лиловый, карточка — белая (глубина та же:
     карточка светлее фона), текст — цвет фона тёмной темы #161826;
   • шкалы — те же значения системы Nocturne В ОБРАТНОМ ПОРЯДКЕ: ступень
     N светлой = ступень 1000−N тёмной. Смысл ступени сохраняется —
     100 «дальше всего от фона» (текст на подложке), 900 «рядом с фоном»
     (подложка чипа, дорожка полосы). Одно исключение — accent-400: в
     обратной шкале это #796cbf, 4.4:1 на белом, ниже AA для текста
     ссылок; взят на той же оси OKLCH светлее на шаг до 5.1:1 на фоне;
   • акцент — accent-700 системы #5d5294: 6.8:1 на белом, белый текст на
     нём — тоже 6.8:1 (на тёмной был чёрный);
   • сигнальные — та же насыщенность и тон, светлота OKLCH снижена до
     AA на собственной подложке 18 % поверх фона;
   • ступени текста: доля d% тёмной темы → 64 + (d − 25)·36/75 % — порядок
     ступеней тот же, нижняя (64 %) даёт 4.8:1 на фоне, карточке, чипе и
     подложках акцента и янтаря. Числа контраста считает test_light_theme. */
:root[data-theme="light"] {
  --color-bg: #eef0f6;
  --color-surface: #ffffff;
  --color-text: #161826;
  --color-accent: #5d5294;
  --color-accent-2: #5c5783;
  --color-divider: color-mix(in srgb, #161826 14%, transparent);

  --color-neutral-100: #292b31;
  --color-neutral-200: #3f424d;
  --color-neutral-300: #595d6c;
  --color-neutral-400: #75798c;
  --color-neutral-500: #9397ab;
  --color-neutral-600: #b2b6ca;
  --color-neutral-700: #cfd3e5;
  --color-neutral-800: #e4e7f5;
  --color-neutral-900: #f3f5fe;

  --color-accent-100: #2b2741;
  --color-accent-200: #423a6a;
  --color-accent-300: #5d5294;
  --color-accent-400: #685aab;
  --color-accent-500: #968ae0;
  --color-accent-600: #b5abfc;
  --color-accent-700: #d2cefd;
  --color-accent-800: #e7e5fe;
  --color-accent-900: #f5f4ff;

  --color-accent-2-100: #2b293a;
  --color-accent-2-200: #423e5d;
  --color-accent-2-300: #5c5783;
  --color-accent-2-400: #7972a9;
  --color-accent-2-500: #9690c9;
  --color-accent-2-600: #b5afe8;
  --color-accent-2-700: #d2cefd;
  --color-accent-2-800: #e7e5fe;
  --color-accent-2-900: #f5f4ff;

  /* Хайрлайны — те же ступени обратной шкалы (800, 700, 500), что у
     тёмной; рассеянная тень — от цвета текста и втрое слабее: чёрная
     тень на светлом фоне читается грязным пятном. */
  --shadow-sm: 0 0 0 1px #e4e7f5;
  --shadow-md: 0 0 0 1px #cfd3e5, 0 6px 18px rgba(22, 24, 38, 0.10);
  --shadow-lg: 0 0 0 1px #9397ab, 0 16px 40px rgba(22, 24, 38, 0.16);

  --sig-warn: oklch(0.47 0.125 78);
  --sig-bad:  oklch(0.47 0.150 22);
  --sig-good: oklch(0.45 0.130 150);

  --wb-accent-text: #ffffff;

  --ink-25: color-mix(in srgb, var(--color-text) 64%, transparent);
  --ink-28: color-mix(in srgb, var(--color-text) 65%, transparent);
  --ink-30: color-mix(in srgb, var(--color-text) 66%, transparent);
  --ink-32: color-mix(in srgb, var(--color-text) 67%, transparent);
  --ink-34: color-mix(in srgb, var(--color-text) 68%, transparent);
  --ink-35: color-mix(in srgb, var(--color-text) 69%, transparent);
  --ink-38: color-mix(in srgb, var(--color-text) 70%, transparent);
  --ink-40: color-mix(in srgb, var(--color-text) 71%, transparent);
  --ink-42: color-mix(in srgb, var(--color-text) 72%, transparent);
  --ink-45: color-mix(in srgb, var(--color-text) 74%, transparent);
  --ink-48: color-mix(in srgb, var(--color-text) 75%, transparent);
  --ink-50: color-mix(in srgb, var(--color-text) 76%, transparent);
  --ink-52: color-mix(in srgb, var(--color-text) 77%, transparent);
  --ink-55: color-mix(in srgb, var(--color-text) 78%, transparent);
  --ink-58: color-mix(in srgb, var(--color-text) 80%, transparent);
  --ink-60: color-mix(in srgb, var(--color-text) 81%, transparent);
  --ink-62: color-mix(in srgb, var(--color-text) 82%, transparent);
  --ink-68: color-mix(in srgb, var(--color-text) 85%, transparent);
  --ink-70: color-mix(in srgb, var(--color-text) 86%, transparent);
  --ink-72: color-mix(in srgb, var(--color-text) 87%, transparent);
  --ink-78: color-mix(in srgb, var(--color-text) 89%, transparent);
  --ink-80: color-mix(in srgb, var(--color-text) 90%, transparent);
  --ink-82: color-mix(in srgb, var(--color-text) 91%, transparent);
  --ink-85: color-mix(in srgb, var(--color-text) 93%, transparent);

  --wb-text-strong: var(--color-text);
  --wb-press: rgba(22, 24, 38, 0.05);
  --wb-hover: rgba(22, 24, 38, 0.03);
  --wb-backdrop: #dfe2eb;
  --color-backdrop: #dfe2eb;
  --ui-scheme: light;

  /* Нажатая кнопка-акцент с белым текстом: на тёмной — ступень светлее акцента, на светлой — темнее (10:1). */
  --wb-accent-pressed: var(--color-accent-200);

  /* Графика — значения системы Nocturne (тёмной шкалы), а не обратной: обратные 800–500 светлее 3:1. Порядок
     тёмной сохраняется — чем выше ступень, тем дальше от фона: 800 — середина 500 и 600 (3.6:1 на белом,
     3.2:1 на фоне), 700 — #796cbf, 600 — шаг светлой 400, 500 — акцент, 400 и 300 — 200 и 100 светлой.
     Тепловая карта — ступени 400–600 тёмной: уровни различаются так же, как в тёмной, нижний не бледнее её. */
  --chart-a800: color-mix(in srgb, #968ae0 50%, #796cbf);
  --chart-a700: #796cbf;
  --chart-a600: #685aab;
  --chart-a500: #5d5294;
  --chart-a400: #423a6a;
  --chart-a300: #2b2741;
  --chart-heat-1: #b5abfc;
  --chart-heat-2: #968ae0;
  --chart-heat-3: #796cbf;
  --chart-n500: #75798c;
  /* Дорожки — видны как разделитель (та же доля текста): обратная нейтраль 900 на белом — 1.09:1, не видна. */
  --wb-track: var(--color-divider);
  --wb-track-2: var(--color-divider);
  /* Кружок и выключенный тумблер, рамка флажка — нейтраль 600 тёмной шкалы: 4.3:1 на белом, 3:1 к дорожке. */
  --ui-knob: #75798c;
  --ui-off: #75798c;
  --ui-ring: #75798c;
  /* Точка «автопилот не ведёт» (.cp-pulse) — как в master: смесь 25 % цвета текста (светлую эта ветка не меняет). */
  --ui-idle: color-mix(in srgb, var(--color-text) 25%, transparent);
  /* Точки и графика, бывшие ступенью текста или смесью прямо в правиле (четвёртый круг dark-contrast) — в светлой
     ровно прежние значения правил (--guide-38 светлая не переопределяет: та же смесь 38 % её цвета текста). */
  --dot-30: var(--ink-30);
  --dot-28: var(--ink-28);
  --track-10: color-mix(in srgb, var(--color-text) 10%, transparent);
  --track-12: color-mix(in srgb, var(--color-text) 12%, transparent);
  --guide-30: color-mix(in srgb, var(--color-text) 30%, transparent);
  --nosale-30: color-mix(in srgb, var(--sig-warn) 30%, transparent);
  --accent-80: color-mix(in srgb, var(--color-accent) 80%, transparent);
  --fill-a600: var(--chart-a600);
  --fill-70: .7;
  --zone-a800: var(--color-accent-800);
  --fill-top3: var(--color-accent);
  --guide-divider: var(--color-divider);
  --icon-50: .5;
  --icon-30: .3;
  --icon-35: .35;
  --icon-45: .45;
  --icon-60: .6;

  /* Приглушение: одна надпись — доля как у ступени --ink-NN этой темы; строка и карточка — без приглушения.
     --fade-42 — значок нижнего меню сайта, .8. До 05.10 правило `.e-nav-btn span` приглушало и обёртку, и подпись
     в ней (.8² = .64); теперь подпись — цветом --ink-25 (64 % этой темы), значок — .8: вид светлой прежний. */
  --fade-42: .8;
  --fade-55: .78;
  --fade-80: .9;
  --dim-35: 1;
  --dim-42: 1;
  --dim-45: 1;
  --dim-50: 1;
  --dim-55: 1;
  --dim-62: 1;
  --dim-70: 1;

  /* «Календарь событий»: те же тона темнее — не ниже 4.1:1 к белой карточке и фону (линии и значки событий). */
  --kal-s1: #2b6fc4;
  --kal-s2: #c24a1b;
  --kal-s3: #157e5a;
  --kal-s4: #9a6600;
  --kal-s5: #bf3d6c;
  --kal-s6: #7550c2;
  --kal-s7: #1f7f72;
  --kal-e-price: #6a5bc4;
  --kal-e-stock: #1f7e8f;
  --kal-e-ads: #94620f;
  --kal-e-wb: #666a7d;
}
