/* ==========================================================================
   自托管字体（无任何外部字体域名请求）
   --------------------------------------------------------------------------
   Inter / JetBrains Mono：latin 静态子集，承担西文、数字与等宽标签。
   Noto Sans SC：按本站实际用字（983 个非 ASCII 字符）切块子集化的
     **可变字重**字体，一个文件覆盖 100-900 全部字重，无需为每个字重单独下载。

   为什么不用 Google Fonts：
   fonts.googleapis.com 与 fonts.gstatic.com 在中国大陆不可达。原先用
   <link rel="stylesheet"> 引入时，浏览器会因等待该请求超时而阻塞渲染，
   国内面试官打开页面会看到长时间白屏。

   每个 Noto 分块都带精确的 unicode-range，浏览器只会下载当前页面真正
   用到的那几块；若日后新增了子集之外的汉字，会平稳回落到系统中文字体。
   ========================================================================== */

/* ---------- Inter（西文 / 数字） ---------- */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/inter-latin-400-normal.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/inter-latin-500-normal.woff2') format('woff2');
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/inter-latin-600-normal.woff2') format('woff2');
}

/* ---------- JetBrains Mono（等宽标签） ---------- */
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/jetbrains-mono-latin-400-normal.woff2') format('woff2');
}
@font-face{
  font-family:'JetBrains Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/jetbrains-mono-latin-500-normal.woff2') format('woff2');
}

/* ---------- Noto Sans SC（中文，可变字重子集） ---------- */
@font-face{
  font-family:'Noto Sans SC';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('fonts/noto-sans-sc-cjk1.woff2') format('woff2');
  unicode-range:U+4e00, U+4e07, U+4e09-4e0b, U+4e0d-4e0e, U+4e13-4e14, U+4e16, U+4e1a, U+4e24, U+4e2a, U+4e2d, U+4e30, U+4e32, U+4e34, U+4e3a-4e3b, U+4e3d, U+4e48-4e49, U+4e4b, U+4e50, U+4e5f-4e60, U+4e66, U+4e86, U+4e89, U+4e8b-4e8c, U+4e8e, U+4e91-4e92, U+4e94, U+4e9a-4e9b, U+4ea4, U+4ea7, U+4eab, U+4eae, U+4eba, U+4ebf-4ec0, U+4eca-4ecb, U+4ece, U+4ed6, U+4ed8, U+4ee3, U+4ee5, U+4eec, U+4ef6-4ef7, U+4efb, U+4efd, U+4f18, U+4f1a, U+4f20, U+4f30, U+4f38, U+4f3c, U+4f46, U+4f4d-4f4f, U+4f53, U+4f55, U+4f59, U+4f5c, U+4f60, U+4f73, U+4f7f, U+4f8b, U+4f9d, U+4fa7, U+4fbf, U+4fc3, U+4fdd, U+4fe1, U+4fee, U+5012, U+5019, U+503c, U+503e, U+5047, U+505a, U+505c, U+5065, U+50cf, U+513f, U+5143, U+5145, U+5148-5149, U+514b, U+514d, U+5165, U+5168, U+516c-516d, U+5171, U+5173, U+5176-5178, U+517c, U+5185, U+518c-518d, U+5199, U+519b, U+51b3, U+51b5, U+51c6, U+51cf, U+51e0, U+51ed, U+51fa-51fb, U+51fd, U+5206-5207, U+5212, U+5217, U+5219-521b, U+521d, U+5220, U+5224, U+5229, U+522b, U+5230, U+5236-5237, U+524d, U+5251, U+5269-526a, U+5272, U+529b, U+529e-52a1, U+52a3, U+52a8-52a9, U+52bf, U+52df, U+52e4, U+52fe, U+5305, U+5316, U+533a, U+5347, U+534a, U+534e-534f, U+5355-5357, U+5360-5361, U+5370, U+5373, U+5377, U+5386, U+538b, U+539a, U+539f, U+53bb, U+53c2, U+53c9-53ca, U+53cc-53cd, U+53d1, U+53d6-53d8, U+53e0, U+53e3, U+53e5-53e6, U+53ea, U+53ef-53f0, U+53f3, U+53f7-53f8, U+5403-5404, U+5408, U+540c-540e, U+5411, U+5426, U+542b, U+542f, U+5438, U+544a, U+5458, U+5468, U+5473, U+547c, U+548c, U+54c1, U+54cd, U+54ea, U+5524, U+552e-552f, U+5584, U+5608-5609, U+5668, U+566a, U+56ca, U+56db, U+56de, U+56e0, U+56e2, U+56f0, U+56f4, U+56fa, U+56fd-56fe, U+5706, U+5708, U+5728, U+5730, U+5733, U+573a, U+5747, U+5757, U+578b, U+5792, U+57df, U+57f9-57fa, U+586b, U+5883, U+589e, U+58a8, U+58c1, U+58f0, U+5904, U+5907, U+590d, U+5916, U+591a, U+591c, U+591f, U+5927, U+5929-592a, U+5931, U+5934, U+5939, U+594f, U+5956-5957, U+5965, U+597d, U+5982, U+59cb, U+59ff, U+5a31, U+5b50, U+5b54, U+5b57-5b58, U+5b66, U+5b83, U+5b88-5b89, U+5b8c, U+5b98, U+5b9a, U+5b9d-5b9e, U+5ba1, U+5ba4, U+5bb6, U+5bb9, U+5bbd, U+5bd2, U+5bdf, U+5bf8-5bf9, U+5bfb-5bfc, U+5c06, U+5c0f, U+5c11, U+5c16, U+5c31, U+5c3a, U+5c3c, U+5c40, U+5c42, U+5c45, U+5c4f, U+5c55, U+5cf0, U+5d4c, U+5dc5, U+5de5-5de6, U+5dee, U+5df1-5df2, U+5e02-5e03, U+5e08, U+5e26, U+5e38, U+5e45, U+5e55, U+5e72-5e74, U+5e76, U+5e8f, U+5e93-5e95, U+5ea6-5ea7, U+5eb7, U+5ef6, U+5efa, U+5f00, U+5f02-5f03, U+5f0f, U+5f15, U+5f20, U+5f27, U+5f31, U+5f39-5f3a, U+5f53, U+5f55, U+5f62, U+5f71, U+5f80, U+5f84-5f85, U+5f88, U+5f8b, U+5f97, U+5fc3, U+5fc5-5fc6, U+5fd8, U+5feb, U+5ff5, U+6001, U+600e, U+601d, U+6027, U+603b, U+6062, U+606f, U+60ac, U+60c5, U+60f3, U+610f, U+611f, U+6162, U+6167, U+6210-6211, U+6216, U+6218, U+622a, U+6234, U+6237, U+6240, U+624b, U+624d, U+6253, U+6267, U+6269, U+626c, U+6270, U+6279, U+627e, U+6280, U+628a, U+6295, U+6298, U+62a4-62a5, U+62ac, U+62b9;
}
@font-face{
  font-family:'Noto Sans SC';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('fonts/noto-sans-sc-cjk2.woff2') format('woff2');
  unicode-range:U+62c6-62c7, U+62c9, U+62cd, U+62db, U+62df, U+62e2, U+62e9, U+62ec, U+62fc, U+62ff, U+6301, U+6307, U+6309, U+6311, U+6325, U+634f, U+6362, U+636e, U+6377, U+638c, U+6392, U+63a2, U+63a5, U+63a7-63a8, U+63b0, U+63d0, U+63e1, U+641c, U+642c-642d, U+6444, U+644a, U+6458, U+6491, U+64a4, U+64ad, U+64b0, U+64cd, U+64e6, U+6512, U+652f, U+6536, U+6539, U+653e, U+6548, U+654f, U+6551, U+6559, U+655b, U+6563, U+6570, U+6574, U+6587, U+6591, U+659c, U+65a5, U+65ad, U+65af-65b0, U+65b9, U+65c1, U+65cb, U+65d7, U+65e0, U+65e2, U+65e5, U+65e7, U+65f6, U+660e, U+6613, U+662f, U+663e, U+665a, U+666f, U+667a, U+66f2, U+66f4, U+6700, U+6708-6709, U+670d, U+671f, U+672a, U+672c, U+672f, U+673a, U+6742, U+6750, U+675f, U+6761, U+6765, U+677e-677f, U+6781, U+6784, U+6790, U+679a, U+679c, U+67b6, U+67d0, U+67e5, U+6807, U+680f, U+6821, U+6837-6839, U+683c, U+6846, U+6848, U+684c, U+6851, U+6863, U+6885, U+68c0, U+695a, U+6982, U+69fd, U+6a21, U+6a2a, U+6a61, U+6b21, U+6b3e, U+6b63-6b65, U+6b6a, U+6b8a, U+6bb5, U+6bcd, U+6bcf, U+6bd4-6bd5, U+6bdb, U+6beb, U+6c14, U+6c34, U+6c42, U+6c47, U+6c49, U+6c60, U+6c89, U+6c9f, U+6ca1, U+6cb9, U+6cd5, U+6ce2, U+6ce8, U+6d1e, U+6d3b, U+6d41, U+6d4b, U+6d4f, U+6d6e, U+6d82, U+6d88, U+6dc0, U+6df1, U+6df7, U+6dfb, U+6e05, U+6e10, U+6e29, U+6e56, U+6e90, U+6eaf, U+6ed1, U+6ee1, U+6f0f, U+6f14, U+706f, U+7075, U+70b9, U+70ed, U+7126, U+7167, U+7184, U+719f, U+71c3, U+7247-7248, U+724c, U+7259, U+7269, U+7279, U+72b6, U+72ec, U+732e, U+7387, U+73af-73b0, U+7403, U+7406, U+74f6, U+751f, U+7528, U+7530-7531, U+7533, U+7535, U+753b, U+754c, U+7559, U+7565, U+767b, U+767d-767e, U+7684, U+76ae, U+76d6, U+76d8, U+76ee, U+76f4, U+76f8, U+770b, U+771f, U+7729, U+773c, U+7740, U+7763, U+77e5, U+77e9, U+77ed, U+7801, U+7814, U+7834, U+783a, U+7840, U+786c, U+786e, U+78e8, U+793a, U+79bb, U+79c0, U+79cd, U+79d1-79d2, U+79f0, U+79fb, U+7a00, U+7a0b, U+7a33, U+7a3f, U+7a76, U+7a7a, U+7a7f, U+7a81, U+7a84, U+7a97, U+7acb, U+7ad6, U+7ade, U+7ae5, U+7aef, U+7b14, U+7b26, U+7b2c, U+7b49, U+7b54, U+7b56, U+7b7e, U+7b80, U+7b97, U+7ba1, U+7bad, U+7bb1, U+7bc7, U+7c38, U+7c7b, U+7c97-7c98, U+7cbe, U+7cfb, U+7d20, U+7d22, U+7d27, U+7e41, U+7ea0, U+7ea2, U+7ea6-7ea7, U+7eaf, U+7eb3, U+7eb5, U+7eb8-7eb9, U+7ebf, U+7ec4, U+7ec6-7ec8, U+7ecd, U+7ecf, U+7ed3, U+7ed5, U+7ed8-7ed9, U+7edc, U+7edf, U+7ee7, U+7ee9, U+7eed, U+7ef4, U+7eff, U+7f16, U+7f18, U+7f29, U+7f3a, U+7f51, U+7f54, U+7f57, U+7f6e, U+7f8e, U+7ffb, U+8001, U+8003, U+8005, U+800c, U+8033, U+804a, U+804c, U+8054, U+805a, U+8089, U+8098, U+80b2, U+80cc, U+80dc, U+80f6, U+80fd, U+8111, U+81c2, U+81ea, U+81f3-81f4, U+820d, U+8212, U+822a, U+8230-8231, U+8272, U+827a, U+8282, U+82b1, U+82c7, U+82e6, U+82f1, U+82f9, U+8303, U+8350, U+8363, U+83b7, U+83dc, U+8428, U+843d, U+84b2, U+84dd, U+853d, U+8584, U+85cf, U+8651, U+865a, U+884c, U+8865, U+8868, U+88ab, U+88c1-88c2, U+88c5, U+8981, U+8986, U+89c1-89c2, U+89c4, U+89c6, U+89c8-89c9, U+89d2, U+89e3, U+89e6, U+8a89, U+8ba1, U+8ba4, U+8ba8-8ba9, U+8bad-8bae, U+8bb0, U+8bba, U+8bbe, U+8bc1, U+8bc4, U+8bc6, U+8bc9, U+8bcd, U+8bd5, U+8bdd, U+8be5;
}
@font-face{
  font-family:'Noto Sans SC';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('fonts/noto-sans-sc-cjk3.woff2') format('woff2');
  unicode-range:U+8be6, U+8bed, U+8bef, U+8bf4, U+8bf7, U+8bfb, U+8bfe, U+8c01, U+8c03, U+8c31, U+8c37, U+8d1f, U+8d21, U+8d23, U+8d25, U+8d27-8d28, U+8d34, U+8d44, U+8d56, U+8d70, U+8d77, U+8d85, U+8da3, U+8db3, U+8dd1, U+8ddd, U+8ddf, U+8de8, U+8def, U+8df3, U+8eab, U+8f66, U+8f6c, U+8f6e-8f6f, U+8f7b, U+8f7d, U+8f7f, U+8f83, U+8f85, U+8f91, U+8f93, U+8fa8, U+8fb9, U+8fbe, U+8fc7, U+8fd0-8fd1, U+8fd4, U+8fd9, U+8fdb-8fdc, U+8fde-8fdf, U+8fea, U+8fed, U+8ff9, U+8ffd, U+9000-9002, U+9009, U+900f-9010, U+901a, U+901f-9020, U+903b, U+904d, U+9053, U+9065, U+9075, U+907f, U+90a3, U+90ae, U+90bb, U+90e8, U+90fd, U+914d, U+91c7, U+91ca, U+91cc-91cf, U+91d1, U+9488-9489, U+949f, U+94a2, U+94ae, U+94c5, U+94fe, U+9500-9501, U+950b, U+9519, U+952e, U+957f, U+95e8, U+95ed-95ee, U+95f4, U+95f9, U+9605, U+961f, U+9644-9645, U+9650, U+9662, U+9664, U+9669, U+968f-9690, U+9694, U+96be, U+96c6, U+96f7, U+9700, U+9707, U+9732, U+9759, U+975e, U+9760, U+9762, U+97f3, U+9875-9876, U+9879-987b, U+987f, U+9884, U+9886, U+9888, U+9891, U+9898, U+989c-989d, U+98a0, U+98ce, U+9988, U+9996, U+9999, U+9a6c, U+9a76, U+9a7b, U+9a7e, U+9a8c, U+9ad8, U+9e26, U+9ea6, U+9ed8, U+9f50;
}
@font-face{
  font-family:'Noto Sans SC';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('fonts/noto-sans-sc-sym.woff2') format('woff2');
  unicode-range:U+61, U+a9, U+b0, U+b7, U+d7, U+f7, U+1ce, U+30c, U+2013-2014, U+2103, U+2190, U+2192, U+2197, U+2605, U+3001-3002, U+300a-300d, U+3010-3011, U+ff08-ff09, U+ff0c, U+ff0f, U+ff1a-ff1b, U+ff5c;
}
