/*
 * Self-hosted web fonts (subset for scyscan.com)
 *
 * Subset strategy:
 *   - Latin (U+0000-024F): Bricolage Grotesque, IBM Plex Sans, JetBrains Mono
 *   - CJK basic block (U+4E00-9FFF + CJK punctuation): Noto Sans SC
 *
 * font-display: swap — required to avoid FOIT and minimize CLS
 *   (browser uses fallback until woff2 arrives, swaps in without re-layout
 *    when only 1 weight present per family).
 *
 * unicode-range — browser only downloads when needed char is rendered.
 *   Latin-only pages never download Noto Sans SC (~480 KB).
 *
 * Generated by scripts/subset-fonts.py — do not edit by hand.
 * Total transfer (worst case, Chinese page): ~620 KB.
 * Total transfer (Latin-only page): ~140 KB.
 */

/* === Bricolage Grotesque — display === */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src:
    local('Bricolage Grotesque SemiBold'),
    url('/fonts/bricolage-grotesque/600/bricolage-grotesque-600-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src:
    local('Bricolage Grotesque Bold'),
    url('/fonts/bricolage-grotesque/700/bricolage-grotesque-700-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}

/* === IBM Plex Sans — body === */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src:
    local('IBM Plex Sans'),
    url('/fonts/ibm-plex-sans/400/ibm-plex-sans-400-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src:
    local('IBM Plex Sans Medium'),
    url('/fonts/ibm-plex-sans/500/ibm-plex-sans-500-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src:
    local('IBM Plex Sans SemiBold'),
    url('/fonts/ibm-plex-sans/600/ibm-plex-sans-600-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}

/* === JetBrains Mono — mono === */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src:
    local('JetBrains Mono'),
    url('/fonts/jetbrains-mono/400/jetbrains-mono-400-latin.woff2') format('woff2');
  unicode-range: U+0000-024F;
}

/* === Noto Sans SC — Chinese fallback === */
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src:
    local('Noto Sans SC Regular'),
    url('/fonts/noto-sans-sc/400/noto-sans-sc-400-cjk.woff2') format('woff2');
  unicode-range: U+4E00-9FFF, U+3000-303F, U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src:
    local('Noto Sans SC Medium'),
    url('/fonts/noto-sans-sc/500/noto-sans-sc-500-cjk.woff2') format('woff2');
  unicode-range: U+4E00-9FFF, U+3000-303F, U+FF00-FFEF;
}
@font-face {
  font-family: 'Noto Sans SC';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src:
    local('Noto Sans SC Bold'),
    url('/fonts/noto-sans-sc/700/noto-sans-sc-700-cjk.woff2') format('woff2');
  unicode-range: U+4E00-9FFF, U+3000-303F, U+FF00-FFEF;
}
