/* Локальные шрифты (self-host, ноль третьих сторон — гайд §10/§11).
   Onest variable 400-800 (display+body), JetBrains Mono variable (моно-акценты).

   font-display: optional, а НЕ swap. Замер 2026-07-29 на живых страницах прода
   (playwright, задержка woff2 через route, три прогона на точку):
     swap     → CLS 0.046 кибер / 0.033 нейролента, и это НЕ лечится подгонкой
                метрик фолбэка (см. ниже);
     optional → CLS 0 на обеих, по построению: подмены не происходит вовсе.
   Цена optional — если шрифт не успел, визит идёт системным гротеском, а
   фирменный применится со следующей страницы (он всё равно скачан и в кэше).
   Чтобы «успел» было нормой, base/landing делают preload двух ходовых сабсетов:
   с preload шрифт применяется при задержке до ~120 мс, реальная латентность
   нашей статики 58–89 мс. Без preload при optional он не применяется НИКОГДА
   на первом визите — это проверено, preload здесь обязателен, не украшение.

   Почему подгонка метрик не спасала:
   1) local() в этом правиле НЕ проходит через алиасы системы. На Linux
      `fc-match Arial` отдаёт Liberation Sans, но local('Arial') не находит
      ничего: семейство целиком мёртвое, фолбэк молча выключен (на Android с
      его Roboto ситуация та же). Поэтому ниже перечислены реальные имена.
   2) size-adjust КВАНТУЕТСЯ: при 16px значения 103.5%…108% дают пиксель в
      пиксель одно и то же (используемый размер округляется), при 20px ступень
      другая. Подобрать «точный» коэффициент физически нельзя.
   Коэффициент мерен относительно Liberation Sans / Arial (они метрически
   совместимы): кириллица 104.5%, латиница 106.2% — берём 105%. Не копируйте
   вслепую: у другого шрифта числа будут другие. */
@font-face {
  font-family: 'Onest Fallback';
  src: local('Arial'), local('Helvetica Neue'), local('Helvetica'),
       local('Liberation Sans'), local('Nimbus Sans'), local('Roboto');
  size-adjust: 105%;
  line-gap-override: 0%;
}
/* JetBrains Mono — cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/jbmono-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* JetBrains Mono — cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/jbmono-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* JetBrains Mono — latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/jbmono-latin-ext.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;
}
/* JetBrains Mono — latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/jbmono-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 — cyrillic-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/onest-cyrillic-ext.woff2') format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* Onest — cyrillic */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/onest-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* Onest — latin-ext */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  src: url('/static/fonts/onest-latin-ext.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;
}
/* Onest — latin */
@font-face {
  font-family: 'Onest';
  font-style: normal;
  font-weight: 400 800;
  font-display: optional;
  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;
}
