/* assets/fonts/fonts.css
 * 6 family × N weight self-hosted subset.
 * Generated 2026-05-14 via Google Fonts CSS2 API with text= param
 * (unique chars extracted from demos.html + ssu-demos/demo{1,2,3}.html).
 * Regenerate: see README.md §字体子集化.
 */

/* Noto Sans SC */
@font-face {
  font-family: 'Noto Sans SC';
  font-weight: 300;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSansSC-300.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSansSC-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSansSC-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSansSC-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Sans SC';
  font-weight: 900;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSansSC-900.woff2') format('woff2');
}

/* Noto Serif SC */
@font-face {
  font-family: 'Noto Serif SC';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSerifSC-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Serif SC';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSerifSC-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Serif SC';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSerifSC-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Serif SC';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSerifSC-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Noto Serif SC';
  font-weight: 900;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/NotoSerifSC-900.woff2') format('woff2');
}

/* Inter */
@font-face {
  font-family: 'Inter';
  font-weight: 300;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-300.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-weight: 800;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/Inter-800.woff2') format('woff2');
}

/* JetBrains Mono */
@font-face {
  font-family: 'JetBrains Mono';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/JetBrainsMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/JetBrainsMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/JetBrainsMono-600.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/JetBrainsMono-700.woff2') format('woff2');
}

/* IBM Plex Mono */
@font-face {
  font-family: 'IBM Plex Mono';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/IBMPlexMono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/IBMPlexMono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/IBMPlexMono-600.woff2') format('woff2');
}

/* Playfair Display — 含 italic */
@font-face {
  font-family: 'Playfair Display';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-400.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-400italic.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-500.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-600.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-700.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 800;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-800.woff2') format('woff2');
}
@font-face {
  font-family: 'Playfair Display';
  font-weight: 900;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/PlayfairDisplay-900.woff2') format('woff2');
}
