/* Web fonts (brand: Inter = body sans, Zapf Humanist 601 = display serif).
   woff2 first (60% smaller than otf), otf kept as legacy fallback.
   font-display: swap — text renders immediately in the fallback font and
   swaps once the webfont arrives, so slow downloads never blank the page. */
@font-face {
  font-family: 'Inter-Black';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(../font/Inter-Black-3.woff2) format('woff2'), url(../font/Inter-Black-3.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-Bold';
  font-style: normal;
  font-weight: bold;
  font-display: swap;
  src: url(../font/Inter-Bold-4.woff2) format('woff2'), url(../font/Inter-Bold-4.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-ExtraBold';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Inter-ExtraBold-5.woff2) format('woff2'), url(../font/Inter-ExtraBold-5.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-ExtraLight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../font/Inter-ExtraLight-6.woff2) format('woff2'), url(../font/Inter-ExtraLight-6.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-Light';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(../font/Inter-Light-7.woff2) format('woff2'), url(../font/Inter-Light-7.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-Medium';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../font/Inter-Medium-8.woff2) format('woff2'), url(../font/Inter-Medium-8.otf) format('opentype');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Inter-Regular-9.woff2) format('woff2'), url(../font/Inter-Regular-9.otf) format('opentype');
}

/* full Inter family under the one 'Inter' name so every font-weight used
   across the site (200/300/500/600/700) hits a real cut instead of a synthesized
   faux-bold of the single Regular face */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 200;
  font-display: swap;
  src: url(../font/Inter-ExtraLight-6.woff2) format('woff2'), url(../font/Inter-ExtraLight-6.otf) format('opentype');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(../font/Inter-Light-7.woff2) format('woff2'), url(../font/Inter-Light-7.otf) format('opentype');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../font/Inter-Medium-8.woff2) format('woff2'), url(../font/Inter-Medium-8.otf) format('opentype');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../font/Inter-SemiBold-10.woff2) format('woff2'), url(../font/Inter-SemiBold-10.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-SemiBold';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../font/Inter-SemiBold-10.woff2) format('woff2'), url(../font/Inter-SemiBold-10.otf) format('opentype');
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(../font/Inter-Bold-4.woff2) format('woff2'), url(../font/Inter-Bold-4.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-Thin';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Inter-Thin-11.woff2) format('woff2'), url(../font/Inter-Thin-11.otf) format('opentype');
}

@font-face {
  font-family: 'Inter-var';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Inter-var-2.woff2) format('woff2');
}

@font-face {
  font-family: 'Zapf Humanist 601 Demi';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Zapf-Humanist-601-Demi-Regular.woff2) format('woff2'), url(../font/Zapf-Humanist-601-Demi-Regular.otf) format('opentype');
}

@font-face {
  font-family: 'Zapf Humanist 601';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Zapf-Humanist-601-Regular.woff2) format('woff2'), url(../font/Zapf-Humanist-601-Regular.otf) format('opentype');
}

@font-face {
  font-family: 'Zapf Humanist 601 Ultra';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Zapf-Humanist-601-Ultra-Regular.woff2) format('woff2'), url(../font/Zapf-Humanist-601-Ultra-Regular.otf) format('opentype');
}

@font-face {
  font-family: 'Marcellus';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../font/Marcellus-Regular.woff2) format('woff2');
}

/* --- Chinese faces (client 2026-09 call: CJK defaults to NOTO SERIF SC) ---
   Same OTFs the production site serves. 'Noto Serif SC' carries the BOLD cut
   (思源宋体 粗体): CJK text rendering at font-weight:700 under the
   --nk-sans/--nk-serif stacks hits these real outlines — NOTO SANS SC's
   "700" rules in noto-sc.css point at the same woff2 files as its 400 rules,
   so browsers were only synthesizing faux-bold there. */
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  /* 2026-09-28 上线优化：OTF(15.7MB) → GB2312 全集+源码文案子集 woff2(3.1MB)，字形不变 */
  src: url(../font/Source_Han_Sans_SC_Regular.subset.woff2) format('woff2');
}

@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  /* 2026-09-28 上线优化：OTF(11.5MB) → 同口径子集 woff2(2.4MB) */
  src: url(../font/SourceHanSerifCN-Bold.subset.woff2) format('woff2');
}
