/*
 * Типографика «Заходи». Три роли, три гарнитуры, все self-hosted.
 *
 * ★ Почему не Google Fonts ссылкой. CSP сайта разрешает `style-src 'self'` без
 * `unsafe-inline` (см. `site/app.py`), то есть внешний stylesheet шрифтов туда
 * просто не попадёт. И это к лучшему: подключение через fonts.googleapis.com
 * ставит на критический путь два лишних соединения к чужому домену — сначала за
 * CSS, потом за самими файлами.
 *
 * ★ Почему вообще шрифты. До 30.08 `grep font-family` по всему `site/` находил
 * ОДНО попадание, и то внутри `vendor/leaflet.css`: весь сайт был набран
 * шрифтом браузера по умолчанию. Половина ощущения «сыро и не продумано» —
 * ровно отсюда: шрифт читается первым, и системный стек читается как «здесь не
 * выбирали».
 *
 * ★ Файлы — вариативные (variable). Manrope одним файлом отдаёт весь диапазон
 * 200–800, Onest — 100–900: два начертания стоят столько же, сколько одно, и
 * добавить третье позже можно без нового запроса.
 *
 * ★ Третьей гарнитуры (моноширинной, под цифры) здесь НЕТ, хотя план её
 * предполагал. Замер после выкладки показал, что она не загружалась вовсе:
 * токен `--font-mono` был объявлен и нигде не использован — третий мёртвый
 * элемент за день после скелетонов и подсветки меток.
 *
 * Применять её было и незачем. Кириллицы в урезанном файле нет намеренно, и
 * подпись «46 дней назад» набралась бы двумя гарнитурами сразу: цифры одной,
 * слова другой. В трёхсловной строке это читается как сбой вёрстки, а не как
 * типографика. Выравнивание цифр в колонку уже даёт `font-variant-numeric:
 * tabular-nums` у самого Onest — ради него отдельный шрифт не нужен.
 *
 * ★ Разбиение по `unicode-range` — не микрооптимизация. Кириллическая часть
 * Onest весит 15 КБ, латинская 33: русский интерфейс не должен платить за
 * латиницу, которой в нём почти нет. Диапазоны взяты у Google as is — это их
 * разрез самих файлов, и менять его нельзя, не пересобрав шрифты.
 *
 * Unbounded здесь нет и не будет (правило проекта).
 */

/* ── Manrope: заголовки и цена ──────────────────────────────────────────────
   Геометрический гротеск с ровной кириллицей — без вычурных изгибов, которые
   на русском тексте читаются как «дизайнер выпендрился». */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/static/fonts/manrope-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('/static/fonts/manrope-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                 U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Onest: основной текст и интерфейс ───────────────────────────────────── */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/onest-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/onest-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                 U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ★ Фолбэк — не «любой sans-serif», а конкретный системный стек с похожими
     пропорциями. Между началом отрисовки и загрузкой шрифта проходит момент,
     когда виден именно он, и чем ближе метрики, тем меньше прыжок. */
  --font-display: 'Manrope', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-text: 'Onest', 'Segoe UI', system-ui, -apple-system, sans-serif;
}

/* ★ Здесь НЕТ блока `body`. Гарнитуру основного текста ставит `site.css`
   вместе с кеглем и интерлиньяжем — одним сокращённым `font:`, которое всё
   равно сбросило бы заданные тут `font-size-adjust` и кернинг. Две правды о
   том, чем набран текст, в двух файлах — это не разделение обязанностей, а
   способ потерять одну из них. */

/* ★ Только гарнитура. Вес, кегль и трекинг заголовков уже заданы в `site.css`
   и подобраны под шкалу — дублировать их здесь значит завести вторую правду о
   типографике, которая разъедется на первой же правке. Этот файл отвечает
   ровно за один вопрос: КАКИМ шрифтом набрано. */
h1, h2, h3, .card-price, .listing-price, .brand, .site-head nav a {
  font-family: var(--font-display);
}

/* Числа, которые стоят друг под другом или сравниваются глазом. */
.card-age, .card-no, .shot-count, .price-input, .facts dd {
  font-variant-numeric: tabular-nums;
}
