/* Self-hosted веб-шрифты Persona.
 *
 * ЗАЧЕМ ЛОКАЛЬНО. Раньше landing_v2.html и blog_base.html тянули эти же
 * шрифты с fonts.googleapis.com / fonts.gstatic.com. Такой <link> срабатывает
 * на первой отрисовке — ДО баннера согласия и независимо от cookie
 * `persona_consent`, — то есть Google получал IP, User-Agent и Referer
 * каждого посетителя раньше, чем тот успевал что-либо выбрать. При этом
 * /privacy-policy §7 перечисляет всех, кому уходят данные, и Google там нет.
 * Шрифты — не аналитика: прятать их за согласием нельзя (у отказавшихся
 * сломается типографика), поэтому третья сторона убрана целиком.
 *
 * ИСТОЧНИК. Файлы .woff2 — ровно те, что раздавал Google Fonts на
 *   css2?family=Space+Grotesk:wght@400;500;600
 *      &family=Inter:wght@400;500;600
 *      &family=JetBrains+Mono:wght@500&display=swap
 * (Inter v20, JetBrains Mono v24, Space Grotesk v22), скачанные без
 * перекодирования. Лицензия всех трёх семейств — SIL Open Font License 1.1,
 * которая самостоятельный хостинг прямо разрешает:
 *   Inter          © The Inter Project Authors      (github.com/rsms/inter)
 *   Space Grotesk  © Florian Karsten                (floriankarsten.com)
 *   JetBrains Mono © JetBrains s.r.o.               (jetbrains.com/mono)
 *
 * ПОДМНОЖЕСТВА. Оставлены latin, latin-ext, cyrillic, cyrillic-ext; выкинуты
 * greek, greek-ext, vietnamese (на сайте нет ни греческого, ни вьетнамского,
 * а это ~половина веса). `unicode-range` скопирован у Google дословно, так
 * что браузер по-прежнему качает только те файлы, чьи символы реально
 * встретились на странице: русская страница берёт latin + cyrillic, а
 * latin-ext подтягивается ради ₽ (U+20BD живёт именно там, не в latin).
 *
 * КИРИЛЛИЦА. Inter и JetBrains Mono кириллицу везут (проверено по таблице
 * cmap внутри .woff2: U+0410–U+044F, Ё/ё и № на месте). У Space Grotesk
 * кириллического подмножества НЕ СУЩЕСТВУЕТ — Google его тоже не отдавал,
 * так что русские заголовки как падали на системный гротеск, так и падают;
 * поведение не изменилось. Если однажды захочется настоящий дисплейный шрифт
 * для кириллицы — менять надо семейство (--font-display), а не этот файл.
 *
 * ВЕСА. Inter и Space Grotesk здесь — вариативные (один файл на подмножество,
 * оси wght 100–900 и 300–700). Объявлены диапазоном `400 600`, ровно как
 * раздавал Google тремя отдельными правилами: рендер для 400/500/600
 * побайтово тот же, а 700 (<strong>) так же прижимается к 600.
 * JetBrains Mono — статический инстанс 500.
 */

/* ---------------------------------------------------------------- Inter -- */
/* cyrillic-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('inter-cyrillic-ext.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: 'Inter';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('inter-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('inter-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;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('inter-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;
}

/* -------------------------------------------------------- Space Grotesk -- */
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('space-grotesk-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;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('space-grotesk-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;
}

/* ------------------------------------------------------- JetBrains Mono -- */
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('jetbrains-mono-500-cyrillic-ext.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('jetbrains-mono-500-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('jetbrains-mono-500-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;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('jetbrains-mono-500-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;
}
