/* Токены — дизайн-код VIGO. Цвета задаются В ОДНОМ МЕСТЕ и раздаются по
   приложению (решение владельца 19.09.2026, «работаем по ООП»). Три слоя:
     1. ПАЛИТРА (--pal-*) — единственное место, где живут hex-коды. Экраны её
        не трогают.
     2. РОЛИ (--accent, --ink, --surface…) — ссылаются только на палитру. CSS
        экранов пользуется ТОЛЬКО ролями.
     3. ТЕМА — тёмная переназначает роли, не трогая экраны.
   Поменял цвет в палитре — он поменялся везде, где им пользуется роль.
   Тему ставит Telegram (frontend.md 1). Канвас с вариантами —
   claude.ai/artifact/Kr2J8ZnrUAEp7Nz3mPbuv2 («Дизайн-код VIGO — цвета»). */
:root{
  /* ===== 1. ПАЛИТРА (светлая тема) ===================================== */
  /* Бренд — бирюза кнопки «Спросить» (край шапки ASIANA). С 19.09.2026 это
     ЕДИНСТВЕННЫЙ акцент приложения: раньше дальше первого экрана шёл
     зелёный #0E6E72, и экраны выглядели разными продуктами. */
  --pal-turq:#0096C7;       /* заливка; белый на ней 3,39:1 — принято владельцем */
  /* Тот же оттенок на ступень глубже — для МЕЛКОГО текста. #0096C7 на белом
     3,39:1, ниже порога 4,5. Замер: #007FAA на белом 4,55, но на тоне панели
     (--surface-2, где «Все 21 ›») 4,25; #0079A3 — 4,9 на белом, 4,6 на панели. */
  --pal-turq-deep:#0079A3;
  /* Ещё ступень глубже — мелкий текст на ТОНЕ, а не на белом (22.09.2026,
     афиша). Замер: #0079A3 на --paper (#ECF1F3) — 4,33, на --accent-soft —
     4,27, оба ниже 4,5; #006E94 — 5,04 и 4,98 (на белом 5,74). */
  --pal-turq-deeper:#006E94;
  --pal-turq-soft:#E0F2F8;  /* подложка выбранного */
  --pal-turq-grad-a:#00D4AA; --pal-turq-grad-b:#00B4D8;  /* перелив ASIANA */
  /* Прежний акцент. В интерфейсе его больше нет — остался пятну плотности
     на карте: это данные, а не кнопка, и бирюза рядом с водой с ней спорила бы. */
  --pal-teal:#0E6E72;
  /* Нейтральные «B · Холодный» (владелец 19.09.2026): с подтоном бирюзы.
     Прежний «известняк с зелёным подтоном» подбирали под зелёный акцент. */
  --pal-white:#FFFFFF;
  --pal-cool-50:#F4F7F9; --pal-cool-100:#ECF1F3; --pal-cool-150:#E1E8EC;
  --pal-cool-200:#D3DDE2; --pal-cool-300:#BCCAD1;
  --pal-slate-500:#5B6E79; --pal-slate-700:#44596A; --pal-slate-900:#102430;
  /* Сигналы */
  --pal-red:#C2445E; --pal-green:#3FA36B; --pal-pink:#F2415A;
  /* Категории: основной / мягкий / плотный (для белого текста на заливке) */
  --pal-orange:#D97A2B; --pal-orange-soft:#FAEBDC; --pal-orange-strong:#B06120;
  --pal-brown:#B0632A;  --pal-brown-soft:#F4E7DA;  --pal-brown-strong:#965424;
  --pal-grass:#4C8C3F;  --pal-grass-soft:#E4F0DC;  --pal-grass-strong:#47823B;
  --pal-violet:#6C5BA8; --pal-violet-soft:#E9E5F4;
  --pal-steel:#3F7CA8;  --pal-steel-soft:#E1EBF3;  --pal-steel-strong:#3E7AA6;
  --pal-sky:#2E7DBE;    --pal-sky-soft:#DEEAF6;    --pal-sky-strong:#2D79B8;
  /* События афиши — малиновый (владелец 22.09.2026, канвас «Афиша города»):
     белый на нём 5,3:1, и от слоёв мест он отличим с первого взгляда. */
  --pal-berry:#B83C7C;   --pal-berry-soft:#F7E4EF;
  /* Земля карты — «2 · Сочнее + смысл» (владелец 19.09.2026, опрос: «тускловато,
     хочется насыщенности»; канвас claude.ai/artifact/EZkeYKVMwbp3UUYxomKZpU).
     Разворот «тихой подложки» 05.09: вода и зелень насыщеннее, у территорий
     и дорог — свой смысл цветом, как у Google/Apple/Яндекса/2ГИС. */
  --pal-map-void:#E6E8E4; --pal-map-earth:#F4F4F0; --pal-map-urban:#EBEBE6;
  --pal-map-green:#C2E5B4; --pal-map-forest:#AED9A0; --pal-map-playground:#D7EDCB;
  --pal-map-cemetery:#D3E6C9; --pal-map-farmland:#EEF2D6; --pal-map-sand:#F6E7B6;
  --pal-map-hospital:#F8DEDE; --pal-map-school:#F5EDCD; --pal-map-commercial:#F3E4EE;
  --pal-map-industrial:#E4E3EC; --pal-map-military:#E9E6DC;
  --pal-map-pedestrian:#EFEDE8; --pal-map-pier:#E8E6E0;
  --pal-map-water:#8FCDEC; --pal-map-water-line:#6DBBE0;
  --pal-map-building:#E4E2DC; --pal-map-building-line:#D2CFC7;
  --pal-map-major:#FFEFB3; --pal-map-major-case:#E6C66E;
  --pal-map-highway:#FFD48A; --pal-map-highway-case:#E3A548;
  --pal-map-road-minor:#FAFBF8; --pal-map-road-minor-case:#D5D8D4;
  --pal-map-rail:#A3A8AE;
  --pal-map-label:#4C5D58; --pal-map-district:#12211F;
  --pal-map-muted:#7E8E88; --pal-map-boundary:#B8C3B6;

  /* ===== 2. РОЛИ — экраны пользуются только ими ======================== */
  --paper:var(--pal-cool-100); --surface:var(--pal-white);
  --surface-2:var(--pal-cool-50); --sunk:var(--pal-cool-150);
  --ink:var(--pal-slate-900); --ink-2:var(--pal-slate-700);
  /* ink-3 — «тихий» тон, но не нечитаемый: на нём держатся время в ленте,
     подсказка в поле, выключенные чипы слоёв и языки. Порог 4,5 для мелкого
     кегля — замер, не на глаз: #5B6E79 на белом 5,3, на --paper 4,7. */
  --ink-3:var(--pal-slate-500);
  --line:var(--pal-cool-200); --line-2:var(--pal-cool-300);
  /* Поле под снимком товара и шапка над ним (21.09.2026). Снимок вписан
     целиком, «как у Avito», — поля вокруг него идут ЗА ТЕМОЙ: у Vinted,
     проверенного по стилям, это #EDF2F2 в светлой и почти чёрный в тёмной.
     Наша --paper совпадает с их светлым почти в ноль. Шапка (город, чипы,
     кнопки) лежит НА ПОЛЕ, а не на фото, поэтому её цвета — тоже роли поля:
     светлое поле требует тёмного текста, и переключать это условием в коде
     значило бы держать два места правды. */
  --photo-mat:var(--pal-cool-100);
  /* Поле рамки афиши в ЛЕНТЕ — плитки сетки и строки «Идёт сейчас»
     (владелец 22.09.2026, доработка 2 афиши): на тон темнее фона экрана.
     С --photo-mat оно совпадало с --paper, рамка 4:5 пропадала, и квадратная
     или горизонтальная афиша казалась сдвинутой вниз против соседней. Замер
     стыка: cool-150 на --paper — 1,09:1 (следующая ступень, cool-200, —
     1,21); в тёмной теме #33423C на #0D1513 — 1,75:1. Рамка карточки события
     остаётся --photo-mat: она лежит на белом и видна и так. */
  --poster-mat:var(--pal-cool-150);
  --mat-ink:var(--pal-slate-900);              /* имя экрана и город */
  --mat-btn:var(--pal-white); --mat-btn-ink:var(--pal-slate-900);   /* флаг, ✕ */
  --mat-chip:var(--pal-white); --mat-chip-ink:var(--pal-slate-700);
  --mat-chip-on:var(--pal-slate-900); --mat-chip-on-ink:var(--pal-white);
  --mat-shade:transparent;                     /* затемнение под шапкой */
  /* Полоски-сегменты ролей поля не берут — с 21.09.2026 они лежат на самом
     снимке (market.css). */
  /* Рельса переехала на «бумагу» (владелец 22.09.2026, market.md 34) и
     красится там обычными ролями — `--surface-2`, `--line`, `--ink`,
     `--ink-3`. Роли ПОЛЯ остались ровно для одного места: пустой экран
     («ничего не нашлось», «избранное пусто») — там «бумаги» под рельсой нет,
     и значок с подписью ложатся на поле. Тени и ореолы к ним больше не
     прилагаются: поле — ровный тон, а не чужая фотография, и ореол вокруг
     подписи читался на нём грязным пятном (жалоба владельца 22.09.2026).
     Плотность подложки — замер R1 21.09.2026: 0,30 давало 2,37:1 (ниже
     порога 3:1 для значков), 0,45 — 3,72:1. */
  --mat-rail-ink:var(--pal-slate-900);
  --mat-rail-ring:rgba(16,36,48,.16);
  --mat-rail-bg:rgba(255,255,255,.82);
  /* Фон под снимком, увеличенным щипком: одинаков в обеих темах — снимок
     смотрят на тёмном, как в Instagram. */
  --zoom-veil:rgba(0,0,0,.72);
  /* Акцент — ДВЕ роли одного оттенка: заливка и мелкий текст. */
  --accent:var(--pal-turq); --accent-soft:var(--pal-turq-soft); --on-accent:var(--pal-white);
  --accent-ink:var(--pal-turq-deep);
  /* Мелкий акцентный текст на тоне: дата плитки афиши на --paper, чип
     «🔁 каждый чт» на --accent-soft. */
  --accent-ink-tone:var(--pal-turq-deeper);
  /* Кнопка действия вводного экрана — та же заливка, что у всех главных кнопок. */
  --cta-fill:var(--accent); --cta-ink:var(--on-accent);
  /* Перелив ASIANA — обводка поля вопроса (17.09.2026). Обводка — не текст:
     порог к ней 3:1 (WCAG 1.4.11); поле узнаётся и по форме, и по подсказке. */
  --accent-grad:linear-gradient(135deg,var(--pal-turq-grad-a) 0%,var(--pal-turq-grad-b) 50%,var(--pal-turq) 100%);
  --danger:var(--pal-red); --ok:var(--pal-green);
  /* Лайк-сердце барахолки. Тёплый красно-розовый, отдельно от --danger:
     лайк — не «ошибка/внимание», а симпатия. */
  --like:var(--pal-pink);
  /* Затемнение под модалками и листами */
  --scrim:rgba(16,36,48,.42);
  /* Звезда чужой оценки (Google). Охра, а не бирюза: бирюза — бренд
     приложения, и красить ею чужое число значило бы выдать его за своё.
     Замер на белом: #B8860B даёт 4,6:1 — выше порога 4,5 для мелкого текста,
     хотя читается в пилюле само ЧИСЛО (`--ink`), а звезда лишь знак. */
  --rate-star:#B8860B;
  /* ЧИСЛО оценки — та же охра, но глубже (владелец 27.09.2026, вариант В
     канваса «Оценка на метке»). До этого дня число стояло цветом `--ink`, то
     есть выглядело нашим, а плашка, которая должна была его отделить, давала
     к белому ярлыку 1,24:1 — её не было видно вовсе, и стоила она 24 px
     воздуха на каждой метке. Теперь «чужое» разводит ЦВЕТ, а не пустота.
     Замер на белом ярлыке: 6,31:1 — выше порога 4,5; цена названа и принята —
     число тише имени (6,31 против 15,94). */
  --rate-ink:#7A5B06;
  /* Пилюля оценки в КАРТОЧКЕ (владелец 29.09.2026, вариант D канваса «Оценка
     в карточке места»): в светлой — контур вместо серой заливки. Заливка
     `--sunk` давала к белому 1,24:1 и читалась пятном, звезда на ней — 2,6:1;
     контур `--line-2` виден (1,68:1), звезда на белом — 3,25:1. Тёмную тему
     владелец оставил как есть («уже хорошо выглядит») — там роли свои. */
  --rate-pill-bg:transparent; --rate-pill-line:var(--line-2);

  /* Затемнение знакомства (вариант Б канваса «Первый вход», владелец
     25.09.2026). Плотнее модального: там под затемнением фон, здесь — карта,
     и она обязана уйти на задний план, чтобы подсвеченное читалось первым.
     Одно на обе темы: это не поверхность, а тень поверх поверхностей. */
  --tour-veil:rgba(16,36,48,.58);

  /* Слои карты — категориальные, не акцент. Еда — зелёная, а не красная
     (владелец 05.09.2026): красный на карте читается как «внимание/ошибка». */
  --l-rent:var(--pal-orange); --l-sale:var(--pal-brown); --l-food:var(--pal-grass);
  --l-service:var(--pal-violet); --l-poi:var(--pal-steel); --l-leisure:var(--pal-sky);
  /* Подложка под знак типа, мягкая (~15%): эмодзи цветное само, на насыщенной
     заливке оно спорит с фоном и перестаёт читаться. */
  --l-rent-soft:var(--pal-orange-soft); --l-sale-soft:var(--pal-brown-soft);
  --l-food-soft:var(--pal-grass-soft); --l-service-soft:var(--pal-violet-soft);
  --l-poi-soft:var(--pal-steel-soft); --l-leisure-soft:var(--pal-sky-soft);
  /* Заливка ВЫБРАННОЙ метки и белый текст на ней (17.09.2026): тоны слоёв
     подобраны под кольцо на белом, а под белым текстом давали 3,10…4,51.
     Затемнена только светлота. Замер белого: rent 4,59 · sale 5,85 ·
     food 4,64 · service 5,68 · poi 4,63 · leisure 4,63. Продажа нарочно на
     ступень темнее аренды — иначе сходились в один коричневый. */
  --l-rent-strong:var(--pal-orange-strong); --l-sale-strong:var(--pal-brown-strong);
  --l-food-strong:var(--pal-grass-strong); --l-service-strong:var(--pal-violet);
  --l-poi-strong:var(--pal-steel-strong); --l-leisure-strong:var(--pal-sky-strong);
  /* Событие афиши — свой слой (afisha.md 2): листок календаря, баннер на
     карте, заглушка афиши. Белый на заливке — 5,3:1, поэтому strong = основной. */
  --l-event:var(--pal-berry); --l-event-soft:var(--pal-berry-soft);
  --l-event-strong:var(--pal-berry);
  --on-layer:var(--pal-white);

  --shadow:0 1px 2px rgba(16,36,48,.06), 0 6px 20px rgba(16,36,48,.10);
  --shadow-lift:0 2px 6px rgba(16,36,48,.10), 0 16px 40px rgba(16,36,48,.18);

  /* Раскладка: база 1/3 чата, дальше её двигает пользователь. Значение
     дублирует SNAPS[0] в state.js — CSS нужен до первого кадра JS. */
  --chat-h:33%; --msg-size:13.5px;
  /* Подложка карты. Тихо ≠ пусто: суша, кварталы и пустота за границей данных —
     три разных тона, дороги читаются контрастом обводки. Громкое пятно одно —
     вода: в Дананге река и океан главные ориентиры. */
  --map-void:var(--pal-map-void); --map-earth:var(--pal-map-earth); --map-urban:var(--pal-map-urban);
  --map-green:var(--pal-map-green); --map-water:var(--pal-map-water); --map-water-line:var(--pal-map-water-line);
  --map-building:var(--pal-map-building); --map-building-line:var(--pal-map-building-line);
  /* Назначение территории (19.09.2026). Какой вид OSM какой ролью красится —
     ОДНА таблица на оба движка: LANDUSE_ROLE в map-style.js. Пляж — песок, а
     не парк; лес (в т.ч. `wood` — так размечен лес Сонча) темнее газона. */
  --map-forest:var(--pal-map-forest); --map-playground:var(--pal-map-playground);
  --map-cemetery:var(--pal-map-cemetery); --map-farmland:var(--pal-map-farmland);
  --map-sand:var(--pal-map-sand); --map-hospital:var(--pal-map-hospital);
  --map-school:var(--pal-map-school); --map-commercial:var(--pal-map-commercial);
  --map-industrial:var(--pal-map-industrial); --map-military:var(--pal-map-military);
  --map-pedestrian:var(--pal-map-pedestrian); --map-pier:var(--pal-map-pier);
  /* Обводка дороги — САМОЕ ТЁМНОЕ из фоновых поверхностей, и это механика:
     улица читается как разрыв в застройке, только когда её кант темнее дома.
     Замер 07.09.2026: обводка #DDE3D7 и здание #DFE4D9 давали 1,01 — улица
     пропадала. Выбор владельца — повторить CARTO Positron. Затемнён ТОЛЬКО тон. */
  /* Артерии — цветом по классу (19.09.2026): крупные улицы жёлтые, магистрали
     оранжевее. Кант темнее заливки своего же тона — сетка читается и так. */
  --map-road:var(--pal-map-major); --map-road-case:var(--pal-map-major-case);
  --map-highway:var(--pal-map-highway); --map-highway-case:var(--pal-map-highway-case);
  --map-road-minor:var(--pal-map-road-minor); --map-road-minor-case:var(--pal-map-road-minor-case);
  --map-rail:var(--pal-map-rail);
  --map-label:var(--pal-map-label); --map-label-halo:var(--pal-map-earth);
  --map-district:var(--pal-map-district); --map-muted:var(--pal-map-muted); --map-boundary:var(--pal-map-boundary);
  /* Пятно плотности (дальний зум, 17.09.2026): СВОЯ роль, не --accent
     (владелец 19.09.2026). Прозрачность — на КАЖДЫЙ уровень
     `map.density_levels`; уровни вложены (три по .08 — ядро .22). Замер: на
     холсте пятно ложится поверх подписей, и подпись района под ядром держит
     4,6:1 (порог 4,5); при .10 было бы 4,25. */
  --map-density:var(--pal-teal);
  --map-density-alpha:.08 .08 .08;
  --radius:12px; --radius-sm:8px;
  /* Боковой жёлоб экрана — ОДИН на все блоки. Было четыре разных (6 у полосы
     чата, 8 у композера, 10 у ленты, 14 у карточки), и вертикально соседние
     блоки не выстраивались ни по одной линии: именно это читается как
     «блоки друг другу не подходят». */
  --gut:12px;
  /* Лестница слоёв — ОДНА и в одном месте. Разложенные по файлам числа
     разъезжаются молча: карточку подняли до 1200, чтобы перебить контролы
     Leaflet (у него 1000), и она накрыла собой модалки языка и города (900)
     и меню комнат (внутри чата, 700). Правило: всплывающее всегда выше того,
     из чего оно вызвано. */
  --z-map:500;    /* слои и сообщение карты — поверх карты */
  --z-card:1200;  /* карточка места — выше контролов ОБОИХ движков */
  --z-chat:1300;  /* чат и всё, что раскрывается из него вверх */
  /* Полноэкранный РЕЖИМ (барахолка) — ниже модалок: из него вызывают выбор
     города, и окно, открытое из режима, обязано лечь поверх него (frontend.md
     11). На одной ступени с модалками барахолка шла позже в разметке и
     накрывала выбор города — тап по городу «ничего не делал» (19.09.2026). */
  --z-mode:1900;
  /* СТРАНИЦА поверх режима (карточка события над афишей и над «Моими
     событиями», afisha.md 3б): выше того, из чего её открыли, и ниже
     модалок — из неё ничего модального не вызывают, а тост и выбор города
     обязаны лечь поверх (frontend.md 11). */
  --z-page:1950;
  --z-modal:2000; /* модалки во весь экран */
}
/* Тему ставит Telegram (data-theme). Этот блок — на секунду до запуска
   скрипта и на просмотр вне Telegram: без него страница успевает
   мигнуть белым. Защита :not([data-theme="light"]) — чтобы явный
   светлый выбор пользователя побеждал тёмную систему. */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
  --paper:#0D1513; --surface:#151F1D; --surface-2:#1B2624; --sunk:#101A18;
  --ink:#E7EEE9; --ink-2:#A4B4AE; --ink-3:#7D8E88;
  --line:#28352F; --line-2:#33423C;
  --photo-mat:#33423C;   /* тёмно-серый, вариант B (владелец 21.09.2026) */
  --poster-mat:#33423C;  /* поле рамки афиши: 1,75:1 к --paper (доработка 2) */
  --mat-ink:#FFFFFF;
  --mat-btn:rgba(0,0,0,.32); --mat-btn-ink:#FFFFFF;
  --mat-chip:rgba(0,0,0,.34); --mat-chip-ink:#FFFFFF;
  --mat-chip-on:#FFFFFF; --mat-chip-on-ink:#111111;
  --mat-shade:rgba(0,0,0,.5);
  /* Рельса на ПОЛЕ — только пустой экран (см. светлую тему): на «бумаге» она
     красится обычными ролями. Плотность подложки — замер R1 21.09.2026:
     0,30 даёт 2,37:1 (ниже порога 3:1 для значков), 0,45 — 3,72:1. */
  --mat-rail-ink:#FFFFFF;
  --mat-rail-ring:rgba(255,255,255,.55);
  --mat-rail-bg:rgba(0,0,0,.45);
  /* Тёмная тема ещё не переведена на палитру (следующий шаг). Акцент —
     бирюза, как кнопка «Спросить» в тёмной: заливки и CTA теперь одна роль. */
  --accent:#4DBFE6; --accent-soft:#12302F; --on-accent:#08201F;
  --accent-ink:#4DBFE6; --accent-ink-tone:#4DBFE6; --cta-ink:#08201F;
  --danger:#E2647E; --ok:#5FBF8B; --like:#FF5C72;
  /* Число оценки в тёмной: охра светлее, иначе на тёмном ярлыке её не
     прочесть (замер на #151F1D: #7A5B06 тонет, #D7AC4A даёт 7,94). */
  --rate-ink:#D7AC4A;
  --rate-pill-bg:var(--sunk); --rate-pill-line:transparent;
  --l-rent:#E8944A; --l-sale:#D08A52; --l-food:#7FBE6A;
  --l-service:#9282D6; --l-poi:#6BA6D4; --l-leisure:#4E9BDE;
  --l-rent-soft:#3A2A19; --l-sale-soft:#33261A; --l-food-soft:#20301B;
  --l-service-soft:#282341; --l-poi-soft:#1E2C39; --l-leisure-soft:#1B2A3C;
  --l-rent-strong:#E8944A; --l-sale-strong:#D08A52; --l-food-strong:#7FBE6A;
  --l-service-strong:#9282D6; --l-poi-strong:#6BA6D4; --l-leisure-strong:#4E9BDE;
  --l-event:#E47FB2; --l-event-soft:#3A2030; --l-event-strong:#E47FB2;
  --on-layer:#0D1513;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.45);
  --shadow-lift:0 2px 6px rgba(0,0,0,.5), 0 16px 40px rgba(0,0,0,.6);
  /* ТЁМНАЯ КАРТА СО СМЫСЛОМ (владелец 26.09.2026, вариант Б канваса «Тёмная
     карта Дананга»). Повод — его же слова: «светлая карта чётко, тёмная плохо
     читаема». Замер показал, что дело не в темноте: подпись улицы читалась
     тут ДАЖЕ ЛУЧШЕ, чем в светлой (7,96 против 6,32). Не доехало решение
     19.09.2026 «сочнее + смысл» — его применили только к светлой палитре, и
     обещание «переводим отдельным шагом», стоявшее здесь, никто не исполнил:
     13 назначений территории были схлопнуты в 3 тона, а магистраль и переулок
     покрашены ОДНИМ цветом. Отсюда серая паутина.
     Разбор топов (Mapbox Dark, Stamen): тёмная карта — не инверсия светлой, и
     цветные заливки на чёрном путают; работают неяркие оттенки, различимые
     ТОНОМ, а не яркостью. Поэтому ниже у каждой роли свой тон, а разброс
     яркостей остался узким: средняя яркость кадра 46/255 против прежних 41 —
     на глаз не светлее. */
  --map-void:#0A100E; --map-earth:#141D1B; --map-urban:#1C2624;
  --map-green:#1B3320; --map-water:#0B3547; --map-water-line:#1B5468;
  --map-building:#212B28; --map-building-line:#2E3A35;
  /* В тёмной теме та же болезнь была зеркальной: обводка #1A2320 против дома
     #1B2523 давала 1,02. Кант уводится НИЖЕ земли — в темноте он и должен
     быть самым глубоким тоном, иначе улица не отделяется от квартала.
     Улица и магистраль различаются так же, как в светлой: ОДИН тон (янтарь),
     разная яркость — 1,20 между ними против 1,21 у светлой. Ярче сделать
     нельзя, и предел назван: по улице идёт её название, и при подписи
     #B4C3BD дорога ярче 2,1 к земле уводит текст ниже порога 4,5. */
  --map-road:#45412D; --map-road-case:#0A0E0C;
  --map-road-minor:#2A332F; --map-road-minor-case:#0F1413;
  /* Подпись улицы поднята с #A4B4AE: на новой дороге прежняя давала 4,15 —
     ниже порога. Теперь 5,61 на улице, 4,69 на магистрали, 9,4 на земле.
     Подпись района остаётся ГРОМЧЕ улицы (14,58 против 9,4) — три голоса
     карты целы (frontend.md 22). */
  --map-label:#B4C3BD; --map-label-halo:#141D1B;
  --map-district:#E7EEE9; --map-muted:#7A8A84; --map-boundary:#2E3B36;
  /* Территории — тон по назначению, как в светлой. Яркости близкие, чтобы
     карта не рябила; отличает их ТОН: зелень, песок, розоватая больница,
     кремовая школа, сиреневая торговля, синеватая промзона. */
  --map-forest:#162B1B; --map-playground:#22392A; --map-cemetery:#1E3126;
  --map-farmland:#2B3120; --map-sand:#3A3320;
  --map-hospital:#35212B; --map-school:#322D1E; --map-commercial:#2E2132;
  --map-industrial:#212735; --map-military:#2B2B22;
  --map-pedestrian:#252C2A; --map-pier:#232927;
  --map-highway:#564B31; --map-highway-case:#0A0E0C; --map-rail:#454F49;
  /* В тёмной теме бирюза светлее и видна слабее — ступень .09: подпись
     района под ядром на холсте 4,8:1, при .10 было бы 4,6 на суше и 4,4 на
     кварталах. */
  --map-density-alpha:.09 .09 .09;
  --map-density:#43B4AF;   /* прежний тёмный акцент — пятно плотности не меняется */
  }
}

:root[data-theme="dark"]{
  --paper:#0D1513; --surface:#151F1D; --surface-2:#1B2624; --sunk:#101A18;
  --ink:#E7EEE9; --ink-2:#A4B4AE; --ink-3:#7D8E88;
  --line:#28352F; --line-2:#33423C;
  --photo-mat:#33423C;   /* тёмно-серый, вариант B (владелец 21.09.2026) */
  --poster-mat:#33423C;  /* поле рамки афиши: 1,75:1 к --paper (доработка 2) */
  --mat-ink:#FFFFFF;
  --mat-btn:rgba(0,0,0,.32); --mat-btn-ink:#FFFFFF;
  --mat-chip:rgba(0,0,0,.34); --mat-chip-ink:#FFFFFF;
  --mat-chip-on:#FFFFFF; --mat-chip-on-ink:#111111;
  --mat-shade:rgba(0,0,0,.5);
  /* Рельса на ПОЛЕ — только пустой экран (см. светлую тему): на «бумаге» она
     красится обычными ролями. Плотность подложки — замер R1 21.09.2026:
     0,30 даёт 2,37:1 (ниже порога 3:1 для значков), 0,45 — 3,72:1. */
  --mat-rail-ink:#FFFFFF;
  --mat-rail-ring:rgba(255,255,255,.55);
  --mat-rail-bg:rgba(0,0,0,.45);
  /* Тёмная тема ещё не переведена на палитру (следующий шаг). Акцент —
     бирюза, как кнопка «Спросить» в тёмной: заливки и CTA теперь одна роль. */
  --accent:#4DBFE6; --accent-soft:#12302F; --on-accent:#08201F;
  --accent-ink:#4DBFE6; --accent-ink-tone:#4DBFE6; --cta-ink:#08201F;
  --danger:#E2647E; --ok:#5FBF8B; --like:#FF5C72;
  /* Число оценки в тёмной: охра светлее, иначе на тёмном ярлыке её не
     прочесть (замер на #151F1D: #7A5B06 тонет, #D7AC4A даёт 7,94). */
  --rate-ink:#D7AC4A;
  --rate-pill-bg:var(--sunk); --rate-pill-line:transparent;
  --l-rent:#E8944A; --l-sale:#D08A52; --l-food:#7FBE6A;
  --l-service:#9282D6; --l-poi:#6BA6D4; --l-leisure:#4E9BDE;
  --l-rent-soft:#3A2A19; --l-sale-soft:#33261A; --l-food-soft:#20301B;
  --l-service-soft:#282341; --l-poi-soft:#1E2C39; --l-leisure-soft:#1B2A3C;
  --l-rent-strong:#E8944A; --l-sale-strong:#D08A52; --l-food-strong:#7FBE6A;
  --l-service-strong:#9282D6; --l-poi-strong:#6BA6D4; --l-leisure-strong:#4E9BDE;
  --l-event:#E47FB2; --l-event-soft:#3A2030; --l-event-strong:#E47FB2;
  --on-layer:#0D1513;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.45);
  --shadow-lift:0 2px 6px rgba(0,0,0,.5), 0 16px 40px rgba(0,0,0,.6);
  /* ТЁМНАЯ КАРТА СО СМЫСЛОМ (владелец 26.09.2026, вариант Б канваса «Тёмная
     карта Дананга»). Повод — его же слова: «светлая карта чётко, тёмная плохо
     читаема». Замер показал, что дело не в темноте: подпись улицы читалась
     тут ДАЖЕ ЛУЧШЕ, чем в светлой (7,96 против 6,32). Не доехало решение
     19.09.2026 «сочнее + смысл» — его применили только к светлой палитре, и
     обещание «переводим отдельным шагом», стоявшее здесь, никто не исполнил:
     13 назначений территории были схлопнуты в 3 тона, а магистраль и переулок
     покрашены ОДНИМ цветом. Отсюда серая паутина.
     Разбор топов (Mapbox Dark, Stamen): тёмная карта — не инверсия светлой, и
     цветные заливки на чёрном путают; работают неяркие оттенки, различимые
     ТОНОМ, а не яркостью. Поэтому ниже у каждой роли свой тон, а разброс
     яркостей остался узким: средняя яркость кадра 46/255 против прежних 41 —
     на глаз не светлее. */
  --map-void:#0A100E; --map-earth:#141D1B; --map-urban:#1C2624;
  --map-green:#1B3320; --map-water:#0B3547; --map-water-line:#1B5468;
  --map-building:#212B28; --map-building-line:#2E3A35;
  /* В тёмной теме та же болезнь была зеркальной: обводка #1A2320 против дома
     #1B2523 давала 1,02. Кант уводится НИЖЕ земли — в темноте он и должен
     быть самым глубоким тоном, иначе улица не отделяется от квартала.
     Улица и магистраль различаются так же, как в светлой: ОДИН тон (янтарь),
     разная яркость — 1,20 между ними против 1,21 у светлой. Ярче сделать
     нельзя, и предел назван: по улице идёт её название, и при подписи
     #B4C3BD дорога ярче 2,1 к земле уводит текст ниже порога 4,5. */
  --map-road:#45412D; --map-road-case:#0A0E0C;
  --map-road-minor:#2A332F; --map-road-minor-case:#0F1413;
  /* Подпись улицы поднята с #A4B4AE: на новой дороге прежняя давала 4,15 —
     ниже порога. Теперь 5,61 на улице, 4,69 на магистрали, 9,4 на земле.
     Подпись района остаётся ГРОМЧЕ улицы (14,58 против 9,4) — три голоса
     карты целы (frontend.md 22). */
  --map-label:#B4C3BD; --map-label-halo:#141D1B;
  --map-district:#E7EEE9; --map-muted:#7A8A84; --map-boundary:#2E3B36;
  /* Территории — тон по назначению, как в светлой. Яркости близкие, чтобы
     карта не рябила; отличает их ТОН: зелень, песок, розоватая больница,
     кремовая школа, сиреневая торговля, синеватая промзона. */
  --map-forest:#162B1B; --map-playground:#22392A; --map-cemetery:#1E3126;
  --map-farmland:#2B3120; --map-sand:#3A3320;
  --map-hospital:#35212B; --map-school:#322D1E; --map-commercial:#2E2132;
  --map-industrial:#212735; --map-military:#2B2B22;
  --map-pedestrian:#252C2A; --map-pier:#232927;
  --map-highway:#564B31; --map-highway-case:#0A0E0C; --map-rail:#454F49;
  /* В тёмной теме бирюза светлее и видна слабее — ступень .09: подпись
     района под ядром на холсте 4,8:1, при .10 было бы 4,6 на суше и 4,4 на
     кварталах. */
  --map-density-alpha:.09 .09 .09;
  --map-density:#43B4AF;   /* прежний тёмный акцент — пятно плотности не меняется */
}
