/* Local self-hosted fonts — eliminates Google Fonts CDN dependency */

/* DM Sans (Latin) */
@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('/assets/fonts/dm-sans-300.woff2') format('woff2');
}
@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/assets/fonts/dm-sans-400.woff2') format('woff2');
}
@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('/assets/fonts/dm-sans-500.woff2') format('woff2');
}
@font-face {
    font-family: 'DM Sans';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('/assets/fonts/dm-sans-600.woff2') format('woff2');
}

/* Space Mono (Latin) */
@font-face {
    font-family: 'Space Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/assets/fonts/space-mono-400.woff2') format('woff2');
}
@font-face {
    font-family: 'Space Mono';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/assets/fonts/space-mono-700.woff2') format('woff2');
}

/* Noto Serif SC (Chinese) — local-first with CDN fallback
   To fully localize: download woff2 subsets to assets/fonts/noto-serif-sc-*.woff2
   Subset command: pyftsubset NotoSerifSC-*.otf --output-file=noto-serif-sc-400.woff2 --flavor=woff2 --layout-features='*' --unicodes='U+4E00-9FFF,U+3000-303F,U+FF00-FFEF,U+2000-206F,U+20-7E' */
@font-face {
    font-family: 'Noto Serif SC';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: local('Noto Serif SC'),
         url('/assets/fonts/noto-serif-sc-400.woff2') format('woff2'),
         url('https://gstatic.loli.net/s/notoserif/v23/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J7WlrtFcH9a2ij6D.119.woff2') format('woff2');
}
@font-face {
    font-family: 'Noto Serif SC';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: local('Noto Serif SC Medium'),
         url('/assets/fonts/noto-serif-sc-500.woff2') format('woff2'),
         url('https://gstatic.loli.net/s/notoserif/v23/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J7WlrtFcH9a2ij6D.119.woff2') format('woff2');
}
@font-face {
    font-family: 'Noto Serif SC';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: local('Noto Serif SC Bold'),
         url('/assets/fonts/noto-serif-sc-700.woff2') format('woff2'),
         url('https://gstatic.loli.net/s/notoserif/v23/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J7WlrtFcH9a2ij6D.119.woff2') format('woff2');
}
@font-face {
    font-family: 'Noto Serif SC';
    font-style: normal;
    font-weight: 900;
    font-display: swap;
    src: local('Noto Serif SC Black'),
         url('/assets/fonts/noto-serif-sc-900.woff2') format('woff2'),
         url('https://gstatic.loli.net/s/notoserif/v23/ga6iaw1J5X9T9RW6j9bNVls-hfgvz8JcMofYTa32J7WlrtFcH9a2ij6D.119.woff2') format('woff2');
}
