/* КриптоСреда — дизайн-токены. Источник истины для вёрстки. v1, 10.08.2026 */

:root {
  /* Цвет.
     Красных ДВА, и это не два кандидата на один канон (решение 14.08.2026):
       --brand-red      #D7262C — канон бренда: заливки, плашки, крупные
                                  элементы, графика, обложки. Порог для
                                  крупного текста и нетекстовых элементов
                                  3:1 — проходит везде.
       --brand-red-text #C2372B — только мелкий текст на светлом фоне,
                                  где нужен AA 4,5:1. Затемнённый
                                  служебный вариант, НЕ бренд-цвет.
     Контраст (WCAG): #D7262C — крем 4,20 · белый 5,00 · уголь 3,74;
                      #C2372B — крем 4,55 · белый 5,42 · уголь 3,45.
     На тёмном фоне (#141210) мелким текстом не проходит НИ ОДИН —
     красный текст поверх угля не использовать вовсе. */
  --brand-red:            #D7262C;
  --brand-red-text:       #C2372B;
  --brand-red-text-hover: #A8121A;
  --color-coal:       #141210;
  --color-paper:      #F0EBDD;
  --color-paper-2:    #E4DCC8;
  --color-muted:      #5B5751;
  --color-line-soft:  #A9A296;
  /* Прозрачности угля и бумаги — приглушённый текст и линии новых блоков
     главной (решение владельца 25.09.2026: палитра новых элементов — только
     #D7262C, #141210, #F0EBDD и их прозрачности, без промежуточных серых).
     Контраст (WCAG): уголь 70 % на бумаге — 6,43 (как #5B5751, 6,02);
     бумага 72 % на угле — 8,44. Линии 25 % контраста не несут — это
     разделители, а не текст и не граница поля ввода. Бумаги 25 % нет:
     линий на угле в новых блоках нет, а неиспользуемый токен — приглашение
     к промежуточному серому (ревью 25.09.2026). */
  --color-coal-70:    rgba(20, 18, 16, .7);
  --color-coal-25:    rgba(20, 18, 16, .25);
  --color-paper-72:   rgba(240, 235, 221, .72);

  /* Шрифты — самостоятельный хостинг woff2, подмножество cyrillic+latin, font-display: swap.
     Oswald      — SIL OFL 1.1 — fonts.google.com/specimen/Oswald
     Golos Text  — SIL OFL 1.1 — fonts.google.com/specimen/Golos+Text
     Запасная пара: Rubik 900 + Onest — SIL OFL 1.1 */
  --font-display: 'Oswald', system-ui, sans-serif;
  --font-text:    'Golos Text', system-ui, sans-serif;

  /* Типографика: вес размер/интерлиньяж */
  /* Интерлиньяж 1.0, а не 0.9. При 0.9 строки заголовка налезали друг на
     друга: у Oswald в верхнем регистре запятая уходит под базовую линию,
     а «Ъ» и «Й» поднимаются над капителью, и 0.9 em на это не хватает.
     Видно было на главной: «СРЕДА, ТАМ, ГДЕ» / «ОБЪЯСНЯЮТ КРИПТУ».
     Плотность держим трекингом, а не наездом строк. */
  --text-display: 700 72px/1.25 var(--font-display);  /* caps, letter-spacing -0.01em */
  /* ОДИН МЕЖСТРОЧНЫЙ НА ВСЕ ЗАГОЛОВКИ — 1.25. Порог наложения у Oswald
     общий: он задаётся метриками шрифта, а не кеглем. Держать четыре
     разных значения значило бы через месяц объяснять, почему h3 живёт по
     другому правилу.

     Межстрочный 1.25, а не 1.0. Замер 23.08.2026 в браузере, кегль 48,
     колонка 680 px: у 13 заголовков из 48 диакритика нижней строки
     наезжала на верхнюю — кратка над Й и точки над Ё поднимаются выше
     прописной высоты. Метрики Oswald: самый высокий знак Ё занимает
     1.042 кегля над базовой линией, самый низкий «р» — 0.190 под ней.
     Строки не пересекаются, начиная с 1.232; 1.25 берётся с запасом и
     круглым числом. Цена — 32 px на заголовок в среднем.
     Полумеры проверены и отброшены: и 1.05, и 1.1 снимают только
     половину случаев (7 страниц из 13 остаются), потому что оставшиеся
     наложения дают пары вида «У над Ё», а не мелкий недобор. */
  --text-h1:      700 48px/1.25 var(--font-display);  /* caps */
  --text-h2:      600 32px/1.25 var(--font-display);
  --text-h3:      500 22px/1.25 var(--font-display);
  --text-body:    400 18px/1.65 var(--font-text);
  --text-small:   400 15px/1.5 var(--font-text);
  --text-meta:    500 13px/1.3 var(--font-display);   /* caps, letter-spacing .12em */
  --tracking-meta: .12em;
  --tracking-display: -.01em;

  /* Сетка */
  --container:       1280px;
  --container-pad:   48px;
  --container-pad-m: 20px;
  --grid-cols:       12;
  --grid-cols-m:     4;
  --grid-gutter:     24px;
  --grid-gutter-m:   16px;
  --measure-article: 680px;
  --header-h:        72px;
  --header-h-m:      56px;
  --tap-target-min:  44px;

  /* Отступы */
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px; --space-4: 16px; --space-5: 24px;
  /* ОТСТУП МЕЖДУ АБЗАЦАМИ — НЕ ШАГ ШКАЛЫ, А ТИПОГРАФСКАЯ ВЕЛИЧИНА, и
     потому у него свой токен. Он равен строке основного текста: 29 px при
     кегле 18/29,7 и 20/33. Было 24 — меньше строки, и абзацы читались
     слитно; решение редакции 20.09.2026 — поднять на всём сайте, а не
     точечно: тесный текст мешает читать везде.
     С 20.09.2026 по этому токену живёт и СПИСОК: в потоке текста он
     ведёт себя как абзац, и нижний отступ у него тот же. Внутренний шаг
     списка — это --space-2, другая величина и другой смысл: шаг внутри
     одного блока, как межстрочный интервал внутри абзаца. Согласованность
     держит tools/check_ritm_spiskov.py. */
  --space-abzac: 29px;
  --space-6: 32px; --space-7: 48px; --space-8: 64px; --space-9: 96px;

  /* Линии и формы */
  --border:        2px solid var(--color-coal);
  --border-accent: 6px solid var(--brand-red-text);
  --radius: 0;    /* скруглений в системе нет */
  --shadow: none; /* теней в системе нет */

  /* Движение */
  --motion-fast: 120ms;
  --motion-base: 180ms;
  --motion-slow: 240ms;
  --ease-out:   cubic-bezier(.2, 0, .4, 1);
  --ease-inout: cubic-bezier(.4, 0, .2, 1);
}

@media (prefers-reduced-motion: reduce) {
  :root { --motion-fast: 1ms; --motion-base: 1ms; --motion-slow: 1ms; }
}

body { background: var(--color-paper); color: var(--color-coal); font: var(--text-body); }
a { color: var(--brand-red-text); text-decoration: none; }
a:hover { color: var(--color-coal); }
