/**
 * Sinite — css/fonts.css
 * @description Локальные @font-face для Playfair Display и Montserrat
 * вместо fonts.googleapis.com.
 * @layer Стили — подключается первым во всех HTML, до style.css.
 *
 * Оба шрифта вариативные (ось wght: Montserrat 100–900, Playfair 400–900):
 * по одному файлу на семейство и письменность (latin, cyrillic) плюс
 * отдельный файл со знаком ₽ — новый font-weight в style.css работает сам.
 * Лицензия SIL OFL 1.1, тексты в css/fonts/OFL-*.txt — сохранять.
 *
 * Зависимости: css/fonts/*.woff2. Предзагрузка — server/lib/layout.js
 * (FONT_PRELOAD), имена файлов там продублированы.
 *
 * Нюансы:
 * - Файлы урезаны до символов сайта (fontTools): latin — ASCII, Latin-1,
 *   тире, кавычки, стрелки; cyrillic — русский, ударение, Ґґ, №; ruble —
 *   только ₽ (у Playfair его нет, цены набираются Montserrat). ★ ✓ ✕ рисует
 *   системный шрифт. Другой алфавит — резать вариативные файлы Google заново.
 * - unicode-range как у Google: качается только нужное странице.
 * - font-display: swap плюс запасные начертания «Montserrat Fallback» /
 *   «Playfair Display Fallback» (Arial и Georgia с size-adjust и
 *   *-override под метрики веб-шрифта) — текст занимает то же место, CLS
 *   при подмене нет. Значения посчитаны по реальным файлам (fontTools) —
 *   не подбирать на глаз; без Arial/Georgia (Android) браузер уходит на
 *   generic.
 * - Курсива нет ни в одном файле; понадобится — отдельный italic-файл.
 */

/* Montserrat, вариативный wght 100–900 — cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/css/fonts/montserrat-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Montserrat — latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/css/fonts/montserrat-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+2260-2265, U+2605-2606, U+2713, U+2715;
}
/* Montserrat — знак рубля */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/css/fonts/montserrat-ruble.woff2') format('woff2');
  unicode-range: U+20BD;
}

/* Playfair Display, вариативный wght 400–900 — cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/css/fonts/playfair-display-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Playfair Display — latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/css/fonts/playfair-display-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+2000-206F, U+20AC, U+2122, U+2190-2193, U+2212, U+2215, U+2260-2265, U+2605-2606, U+2713, U+2715;
}

/* ── Запасные начертания с метриками под веб-шрифт ──────────────────────
   size-adjust — средняя ширина символа по тексту сайта, ascent/descent-override
   — высота строки (Montserrat 968/-251/0, Playfair 1082/-251/0 на 1000 upm,
   line-gap 0). Пересчитать при смене файлов. */
@font-face {
  font-family: 'Montserrat Fallback';
  src: local('Arial');
  size-adjust: 108.37%;
  ascent-override: 89.32%;
  descent-override: 23.16%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Playfair Display Fallback';
  /* Georgia, а не Times: по ширине отличается от Playfair на 2 %, Times — на 11
     %. */
  src: local('Georgia');
  size-adjust: 101.74%;
  ascent-override: 106.35%;
  descent-override: 24.67%;
  line-gap-override: 0%;
}
