/* ══════════════════════════════════════════════════════════════════════
   ЕДИНЫЙ ИСТОЧНИК ТОКЕНОВ. Его видят ОБА стека:
     • Jinja - через <link> в base.html и в автономных страницах входа;
     • React - те же страницы наследуют base.html, плюс те же значения
       продублированы в frontend/<фронт>/src/index.css (Tailwind читает их оттуда).

   ⚠️ ПАЛИТРА ПЕРЕНЕСЕНА ИЗ Direct Win (~/Projects/direct-materials/
   static/style.css). Строй такой: бумага вместо белого, чернила вместо
   чёрного, терракота как акцент, структуру держат волоски и отступы, а не
   карточки, тени и заливки. Моноширинный - для данных, пропорциональный -
   для содержимого.

   ⚠️ ДВА ЗНАЧЕНИЯ ОТЛИЧАЮТСЯ ОТ ОРИГИНАЛА, И ТОЛЬКО ПО СВЕТЛОТЕ: --accent-ink
   (46% -> 44%) и --add (36% -> 34%). Причина у обоих одна и она измерена, а
   не выведена: у Direct Win эти цвета лежат ТОЛЬКО на бумаге, а у нас
   попадают ещё и на подложку предупреждения (#f4f2ec) и на подсвеченную
   строку таблицы (#efeeea) - комбинаций, которых в оригинале не существует.
   Там оригинальные значения давали 4.37 и 4.41 при норме 4.5. Оттенок и
   насыщенность не тронуты; довод целиком - у каждого токена ниже.

   ⚠️ ИМЕНА ТОКЕНОВ ПРЕЖНИЕ. Все одиннадцать shadcn-токенов на месте и в том
   же формате (HSL без функции - чтобы Tailwind мог подмешивать прозрачность,
   bg-muted/60). Поменялись ЗНАЧЕНИЯ, а не контракт: ни один потребитель
   токенов править не пришлось.

   ⚠️ ТЁМНОЙ ТЕМЫ БОЛЬШЕ НЕТ - решение от 15.08.2026. У Direct Win её нет
   вовсе, стиль построен на бумаге; тёмный вариант пришлось бы придумывать,
   а придуманное разошлось бы с оригиналом. Блок html.dark удалён отсюда,
   из 12 фронтов и из templates/_theme_boot.html разом - половинчатое
   удаление дало бы полусветлый экран, худший из трёх исходов.
   ══════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Цвет ──
     Контраст на бумаге посчитан, а не прикинут (WCAG, порог 4.5):
     ink 17.5 · dim-2 8.1 · dim 5.0 · accent-ink 5.0 · add 5.3 · del 5.6.
     Сам accent #d97757 даёт 3.0 - им нельзя набирать мелкий текст, только
     линии, рамки и подчёркивания. Для букв есть accent-ink. */
  --background: 48 33% 97%;      /* #faf9f5 бумага - фон страницы          */
  --foreground: 60 3% 8%;        /* #141413 чернила - основной текст       */

  /* ⚠️ КАРТОЧКА - БЕЛАЯ. ИСПРАВЛЕНО 16.08.2026, СНАЧАЛА БЫЛО НЕВЕРНО.
     Здесь стояла бумага (48 33% 97%) с доводом «карточку очерчивает волосок,
     а белый занят полями ввода». Довод был выдуман: в Direct Win белый НЕ
     зарезервирован, там прямо стоит `--card: var(--field)`, а `.card`
     объявлена как `background: var(--field)` с рамкой в волосок.

     И на экране это видно сразу. Волосок #e5e2d9 на бумаге #faf9f5 даёт
     контраст 1.15:1 - он не способен разделить семь плиток в сетке, и
     сводка сливалась в одно бежевое поле. Сам Direct Win эту границу знает:
     рамку чипа он делает темнее волоска именно потому, что «при 1,2:1 её
     просто не видно, и чип рассыпается».

     Правило «структуру держат волоски, а не карточки» осталось в силе - оно
     про ТЕНИ и приподнятость, которых нет. Разделяет по-прежнему граница,
     просто теперь ей помогает разница поверхностей. */
  --card: 0 0% 100%;
  --card-foreground: 60 3% 8%;

  --muted: 45 27% 94%;           /* #f4f2ec подсветка строки при наведении */
  --muted-foreground: 42 7% 29%; /* #4f4c45 dim-2: подписи колонок, ссылки,
                                    подсказки - то, что читают. 8.1:1       */
  --border: 45 19% 87%;          /* #e5e2d9 волосок вместо рамки            */
  --input: 45 19% 87%;

  /* ⚠️ PRIMARY - ЧЕРНИЛА, А НЕ ТЕРРАКОТА. У Direct Win залитая кнопка одна
     на странице и она чёрная (.bar button[type=submit] = var(--ink)), а
     терракота работает акцентом: подчёркивание активной вкладки, обводка
     фокуса, чипы состояний, опасное действие. Перекрасить primary в
     терракоту было бы проще, но тогда каждая вторая кнопка стала бы
     оранжевой и акцент перестал бы что-либо выделять. */
  --primary: 60 3% 8%;
  --primary-foreground: 48 33% 97%;   /* бумагой по чернилам, 17.5:1 */

  --ring: 15 63% 60%;            /* #d97757 обводка фокуса - терракотовая  */
}

/* ── Терракота и смыслы: токены сверх shadcn-одиннадцати ──
   Отдельные имена нужны потому, что один терракотовый нельзя применять
   везде: у #d97757 контраст 3.0 на бумаге. Разделение на «линия / буквы /
   заливка» - из Direct Win, там оно посчитано тем же способом. */
:root {
  --accent-line: 15 63% 60%;     /* #d97757 линии, подчёркивания, рамки    */
  /* ⚠️ ЗАТЕМНЁН С 46% ДО 44% ПОСЛЕ ЗАМЕРА В БРАУЗЕРЕ. У Direct Win значение
     #b85333 (46%) и там оно верно: акцентные буквы лежат на бумаге, 4.65:1.
     В нашем интерфейсе они попадают ещё и на --muted (#f4f2ec) - подложку
     предупреждающих блоков, комбинация, которой у Direct Win нет вовсе. На
     ней 46% давало 4.37 при норме 4.5, и это не единичное место: так
     набраны callout'ы на /unit-economics, /dynamics и /repricer.
     44% даёт 4.72 на подложке, 5.01 на бумаге, 5.28 на белом поле ввода.
     Оттенок и насыщенность НЕ тронуты - тот же цвет, читаемый. Тем же
     приёмом в этом файле уже правили --muted-foreground. */
  --accent-ink: 14 57% 44%;      /* #b04e30 */
  --accent-fill: 14 66% 45%;     /* #c04b28 заливка: белым по ней 4.9:1    */

  --field: 0 0% 100%;            /* #ffffff поля ввода и карточки - те же
                                    белые поверхности, что в оригинале    */
  --dim: 49 5% 41%;              /* #6e6c63 третий уровень: подвал, пометки */
  --rule-strong: 43 19% 79%;     /* #d3cdbe граница чипа: волосок при 1.2:1
                                    просто не виден, и чип рассыпается     */
  /* Наведение на залитые кнопки. Приём Direct Win: не осветление и не
     прозрачность, а тот же цвет на шаг темнее. */
  --ink-hover: 45 5% 16%;            /* #2b2a27 - значение Direct Win       */
  --accent-fill-hover: 14 68% 39%;   /* #a83f20 - значение Direct Win       */
  --add-hover: 137 33% 31%;          /* #356a44 - своего у Direct Win нет,
                                        зелёного залитого там не бывает;
                                        собран тем же приёмом. Белым по
                                        нему 6.4:1                          */

  /* ⚠️ ЗАТЕМНЁН С 36% ДО 34% ПОСЛЕ ЗАМЕРА В БРАУЗЕРЕ - по той же причине и
     тем же приёмом, что --accent-ink выше. У Direct Win #3e7b4f лежит на
     бумаге и даёт 4.86; у нас им набраны ещё и числа в строках таблицы, а
     строка бывает подсвечена (#efeeea) - там выходило 4.41 при норме 4.5.
     Замерено на живой странице /repricer, колонка маржинальности.
     34% даёт 4.85 на подсвеченной строке, 5.03 на подложке, 5.34 на бумаге,
     а белым по заливке 5.63. Оттенок и насыщенность НЕ тронуты. */
  --add: 137 33% 34%;            /* #3a734a стало, применено, хорошо      */
  --del: 5 49% 44%;              /* #a8443a было, ошибка, отказ            */
  --warn: 14 57% 44%;            /* среднее состояние - терракотой буквами:
                                    жёлтого в этой палитре нет вовсе       */

  /* Подложки под diff и строки-состояния. Тоже из Direct Win 1:1. */
  --was-bg: 8 60% 97%;           /* #fdf6f5 */
  --was-line: 10 45% 86%;        /* #ecd0cb */
  --will-bg: 100 20% 96%;        /* #f5f8f5 */
  --will-line: 130 24% 85%;      /* #cfe0d3 */

  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
          "Liberation Mono", monospace;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
          "Helvetica Neue", sans-serif;
}

/* ⚠️ СИСТЕМНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ. accent-color красит то, что рисует САМ
   браузер: галочку в чекбоксе, точку в радиокнопке, ползунок range, полосу
   progress. Без него они остаются штатно-синими (#2563eb в Chrome) - и это
   не мелочь: на /settings синим был чекбокс «Обновлять автоматически»,
   единственный синий пиксель на бумажном экране.

   ⚠️ НАЙДЕНО ГЛАЗАМИ НА СКРИНШОТЕ, А НЕ ЗАМЕРОМ. Проверка контраста читала
   background-color / color / border-color - у нативного чекбокса синева
   приходит не оттуда, а из UA-стилей, и в эти три свойства не попадает.
   Свойство наследуемое, поэтому объявляем один раз на :root.

   Значение - чернила: тем же цветом залит чекбокс Bootstrap
   (.form-check-input:checked в bootstrap-paper.css), и два стека не должны
   расходиться на одном и том же элементе. */
:root {
  accent-color: hsl(var(--primary));
}

/* ── Размеры управляющих элементов ──
   ⚠️ СКРУГЛЕНИЕ УМЕНЬШЕНО С 6px ДО 4px, карточек - с 8px до 4px. У Direct
   Win скругление почти незаметное: 4px у полей и кнопок, 3px у чипов и
   тегов. Прежние 6/8 читаются как «карточка», а карточек в этом строе нет.
   Высота и размер шрифта не тронуты - они измерены по 144 экранам и к
   палитре отношения не имеют. */
:root {
  --control-h: 32px;         /* высота поля и кнопки          */
  --control-fs: 13px;        /* размер текста в них           */
  --control-radius: 4px;     /* скругление поля и кнопки      */
  --control-px: 10px;        /* горизонтальные поля внутри    */
  --chip-radius: 3px;        /* чипы, теги, значки состояний  */
  --card-radius: 4px;        /* скругление очерченных областей */

  /* ── Типографика ──
     ⚠️ H1 УМЕНЬШЕН С 22px ДО 19px - размер Direct Win. Крупный заголовок
     на бумаге спорит с волосками: строй держится на том, что ничто не
     кричит. Основной текст 13px оставлен как был - он совпал. */
  --h1-fs: 19px;
  --h2-fs: 11.5px;           /* подзаголовок - моноширинный капслоком */
  --text-fs: 13px;
  --hint-fs: 12.5px;
}
