/* Шрифты утверждённого эталона, самохостом (#43, §10 п.15).

   Файлы перенесены из docs/design/approved-2026-09-08/assets/ побайтово,
   лицензии OFL лежат рядом в fonts/. Google Fonts не подключается ни в каком
   виде: это одновременно риск LCP и трансграничная передача IP посетителей
   сайта, который позиционируется как соответствующий 152-ФЗ.

   Формат — woff2: те же файлы эталона, пережатые один раз офлайн (fontTools +
   brotli), 176 КБ против 458 КБ в TTF. Сборочного шага в проде это не добавляет —
   в репозиторий кладётся уже готовый результат. Проверено: набор глифов, cmap и
   unitsPerEm совпадают с исходными TTF побайтово по составу. */

@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/onest-400.woff2') format('woff2');
}

@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('fonts/onest-500.woff2') format('woff2');
}

@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('fonts/onest-600.woff2') format('woff2');
}

@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('fonts/onest-700.woff2') format('woff2');
}

@font-face {
  font-family: 'Prata';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('fonts/prata-400.woff2') format('woff2');
}

/* Метрический фолбэк Onest (§10 п.15). Пока Onest грузится, `font-display: swap`
   рисует текст системным шрифтом; без выравнивания метрик подмена сдвигает вёрстку.
   Числа выведены из самих файлов: Onest upem=1000, hhea ascender=970, descender=-305,
   lineGap=0, OS/2 xAvgCharWidth=597 (0.5970 em) против Arial 904/2048 (0.4414 em).
   size-adjust = 0.5970 / 0.4414 = 135.25 %, оверрайды — доли em, делённые на него.
   Если Arial в системе нет, начертание не подхватывается и в дело идёт system-ui. */
@font-face {
  font-family: 'Onest Fallback';
  src: local('Arial'), local('Helvetica'), local('Liberation Sans');
  size-adjust: 135.25%;
  ascent-override: 71.72%;
  descent-override: 22.55%;
  line-gap-override: 0%;
}
