/* Onest — variable weight axis 100..900, self-hosted.
   Each subset is ONE @font-face declaring the full range, so the browser
   uses real interpolated weights instead of snapping to 400/700/800/900.

   font-display: optional — не swap. PageSpeed на десктопе давал CLS 0.964
   одним сдвигом на #content, и виноват был именно swap: до загрузки
   Onest браузер рисует запасным шрифтом, а у Liberation Sans (его берёт
   headless Chrome на Linux, на котором считает PageSpeed) метрики далеко
   от Onest: ширина строки −9.1%, descent 21.5% против 30.5% ем. Подмена
   пересчитывала весь текст и двигала макет.

   Правильнее был бы запасной @font-face с size-adjust/ascent-override, но его
   надо вписать в каждый font-family, а их 296 штук в 17 файлах, почти все —
   сгенерированные Elementor post-*.css, которые пересобираются сами.
   optional живёт в одном файле и убирает причину, а не симптом: браузер
   либо успевает взять Onest в окно ~100мс (шрифт свой, preload, HTTP/2 —
   обычно успевает), либо рисует запасным и уже не меняет его по ходу. */

/* Метрический дублёр Onest — объявлен ПЕРВЫМ, до настоящих начертаний.
   Онест шире Arial/Liberation Sans на 3.54% и глубже по нижним выносным,
   поэтому подмена шрифта переливала каждую строку: PageSpeed показывал
   CLS 0.961. Дескрипторы ниже подгоняют запасной шрифт под метрики Onest
   ровно (замерено: ширина 0.00%, высота строки совпала), и сдвига больше
   не возникает — ни когда Onest успевает загрузиться, ни когда нет.

   Два условия обязательны, иначе всё ломается:
   1) font-weight: 100 900 — как у настоящих начертаний. Без диапазона
      запасное начертание считается точным совпадением для веса 400 и
      перебивает настоящий Onest в основном тексте (проверено: 1153.8px
      вместо 811.2px).
   2) объявление ПЕРВЫМ. При одинаковых дескрипторах побеждает то, что
      объявлено позже, поэтому настоящий Onest идёт ниже и выигрывает,
      когда загружен.

   Liberation Sans метрически совместим с Arial — это его назначение, —
   поэтому одного набора хватает и для Linux, на котором считает Lighthouse. */
@font-face {
  font-family: 'Onest';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-style: normal;
  font-weight: 100 900;
  size-adjust: 103.54%;
  ascent-override: 93.68%;
  descent-override: 29.94%;
  line-gap-override: 0%;
}

/* cyrillic-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(gNMKW3F-SZuj7xmS-HY6EQ.woff2) format('woff2-variations'),
       url(gNMKW3F-SZuj7xmS-HY6EQ.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(gNMKW3F-SZuj7xmb-HY6EQ.woff2) format('woff2-variations'),
       url(gNMKW3F-SZuj7xmb-HY6EQ.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(gNMKW3F-SZuj7xmR-HY6EQ.woff2) format('woff2-variations'),
       url(gNMKW3F-SZuj7xmR-HY6EQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 100 900;
  font-display: optional;
  src: url(gNMKW3F-SZuj7xmf-HY.woff2) format('woff2-variations'),
       url(gNMKW3F-SZuj7xmf-HY.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;
}

/* Dark-UI rendering: light text on dark bg optically blooms.
   Grayscale antialiasing keeps heavy Cyrillic stems from merging. */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
