/* BFC local fonts (И-105) — self-hosted, zero external font requests.
 * CC-CORE 2026-07-09 · wave M1 · Roboto (text) + Roboto Condensed (headings).
 * Variable weight (100..900), subsets served by unicode-range (cyrillic + latin).
 * Заменяет fonts.googleapis.com / fonts.gstatic.com по всему порталу.
 * Маппинг бренда: Unbounded -> Roboto Condensed.
 *
 * S56-B (D-08082026-07): Onest БОЛЬШЕ НЕ ПОДМЕНЯЕТСЯ на Roboto — гарнитура добавлена
 * настоящая, тем же самохостом (И-125), четырьмя сабсетами и той же переменной осью
 * wght 100..900, что и Roboto. До этой волны @font-face для Onest не существовало
 * вовсе: строка «Onest -> Roboto» была лишь намерением в комментарии, и любое
 * `font-family:'Onest'` молча падало на следующий шрифт стека.
 * Источник: Google Fonts, Onest v9 (SIL OFL 1.1), те же файлы, что отдаёт gstatic —
 * скачаны и положены в /assets/fonts/, наружу портал за ними не ходит.
 * CDN запрещён: ни одного обращения к fonts.googleapis.com / fonts.gstatic.com.
 *
 * S59-B (10.08.2026) — паспорт самохоста Roboto Condensed, замер по файлам, не по памяти:
 *   гарнитура  Roboto Condensed, Version 3.008; 2023, Apache License 2.0 (самохост разрешён,
 *              §4 обязывает сохранить уведомление — вот оно; полный текст лицензии:
 *              https://www.apache.org/licenses/LICENSE-2.0). Google при сабсеттинге вычищает
 *              name ID 13/14, поэтому в самих woff2 строки лицензии нет — она живёт здесь.
 *   ось        wght 100..900 переменная -> 400/700/900 берутся из ОДНОГО файла на сабсет,
 *              отдельные начертания не нужны и не заводятся.
 *   сабсеты    latin (229 сим.), latin-ext (192), cyrillic (107), cyrillic-ext (180) —
 *              кириллица покрыта полностью, фолбэка на Arial для русского текста нет.
 *   ширина     advance/em: 'Н' 0.6201 против 0.7134 у обычного Roboto (0.87) и 0.722 у Arial.
 *              Отсюда И-125-проверка волны: страница, съехавшая на Arial, СТАНОВИТСЯ ШИРЕ на
 *              ~15%, и на 375 px это видно как оверфлоу. Мерить надо ширину строки, а не
 *              наличие @font-face.
 *   потребители  подключать ТОЛЬКО так (порядок важен — preload до stylesheet):
 *              <link rel="preload" href="/assets/fonts/roboto-condensed-cyrillic.woff2"
 *                    as="font" type="font/woff2" crossorigin>
 *              <link rel="preload" href="/assets/fonts/roboto-condensed-latin.woff2"
 *                    as="font" type="font/woff2" crossorigin>
 *              <link rel="stylesheet" href="/assets/css/bfc-fonts.css?v=r22">
 *              Русская страница без preload КИРИЛЛИЦЫ ждёт разбора CSS: preload одной латиницы
 *              (как было до S59-B) греет ровно тот сабсет, которым набрано меньшинство текста. */

/* ---------- Roboto (text) ---------- */
@font-face{
  font-family:'Roboto';font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;
  src:url(/assets/fonts/roboto-cyrillic-ext.woff2) format('woff2');
  unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
@font-face{
  font-family:'Roboto';font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;
  src:url(/assets/fonts/roboto-cyrillic.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Roboto';font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;
  src:url(/assets/fonts/roboto-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;
}
@font-face{
  font-family:'Roboto';font-style:normal;font-weight:100 900;font-stretch:100%;font-display:swap;
  src:url(/assets/fonts/roboto-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;
}

/* ---------- Roboto Condensed (headings / brand) ---------- */
@font-face{
  font-family:'Roboto Condensed';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/fonts/roboto-condensed-cyrillic-ext.woff2) format('woff2');
  unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
@font-face{
  font-family:'Roboto Condensed';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/fonts/roboto-condensed-cyrillic.woff2) format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Roboto Condensed';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/fonts/roboto-condensed-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;
}
@font-face{
  font-family:'Roboto Condensed';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/fonts/roboto-condensed-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 (текст бренда, S56-B · D-08082026-07) ---------- */
@font-face{
  font-family:'Onest';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/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;
}
@font-face{
  font-family:'Onest';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/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(/assets/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;
}
@font-face{
  font-family:'Onest';font-style:normal;font-weight:100 900;font-display:swap;
  src:url(/assets/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;
}
