/* Self-hosted fonts (served locally — no external dependency). TeX Gyre Heros (GUST Font License, free for commercial use) — Helvetica-style latin face. CJK text falls through to system fonts via the fallback stack in style.css tokens. Note: only 400/700 real weights exist; 500 maps to 400, 600/800/900 map to 700. */ /* TeX Gyre Heros — regular family (active: wired to --font-display / --font-body) */ @font-face { font-family: 'TeX Gyre Heros'; font-style: normal; font-weight: 400; font-display: swap; src: url(../font/texgyreheros-regular.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros'; font-style: normal; font-weight: 700; font-display: swap; src: url(../font/texgyreheros-bold.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros'; font-style: italic; font-weight: 400; font-display: swap; src: url(../font/texgyreheros-italic.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros'; font-style: italic; font-weight: 700; font-display: swap; src: url(../font/texgyreheros-bolditalic.otf) format('opentype'); } /* TeX Gyre Heros Cn — condensed (registered for future use, e.g. heavy display titles; not referenced by tokens yet, so browsers never download it) */ @font-face { font-family: 'TeX Gyre Heros Cn'; font-style: normal; font-weight: 400; font-display: swap; src: url(../font/texgyreheroscn-regular.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros Cn'; font-style: normal; font-weight: 700; font-display: swap; src: url(../font/texgyreheroscn-bold.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros Cn'; font-style: italic; font-weight: 400; font-display: swap; src: url(../font/texgyreheroscn-italic.otf) format('opentype'); } @font-face { font-family: 'TeX Gyre Heros Cn'; font-style: italic; font-weight: 700; font-display: swap; src: url(../font/texgyreheroscn-bolditalic.otf) format('opentype'); }