fix(ui): Cyrillic/Greek weights, html lang, weight normalisation (#1780)

Load Roboto 600/700 and DM Sans 700 so Cyrillic and Greek headings render
real semibold and bold faces instead of a synthetic bold, keep
<html lang> in step with the UI language, and move every font weight onto
the 400/500/600/700 scale (JetBrains Mono at 500 or lighter; the dashboard
LIVE badge now uses the interface font at 700).

Add the `styles:font-weights:validate` ratchet guard and its CI step. It
reads stylesheets much as Sass and the browser do (cascade, layers,
mixins, content blocks, `@extend`, `@at-root`, `:is()`/`:where()`,
keyframes) and lists what it deliberately does not trace in its header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 authored and GitHub committed 2026-10-04 08:55:23 +02:00
1 parent ab8460338a
commit e8b181fcea
52 files changed
+11216 -97

No files matched your search

@@ -49,6 +49,14 @@ consumers currently use relative `@use` paths to the needed partial.
- A shared change must be checked across M3U, Xtream, Stalker, workspace,
portal catalog/shared UI, and unified collections where relevant.
## Typography
- Font weights are 400, 500, 600 or 700 only, and JetBrains Mono stays at 500
or lighter (also where a mono modifier inherits a heavier weight);
`pnpm run styles:font-weights:validate` enforces the scale, and the Mono
cap in rules that set that family. Read the
guidelines' Typography section before changing bundled fonts.
## Validation
Run the affected consumer's Nx lint/test/build target. Inspect light and dark