feat(web): name the face a default stack actually renders

Generic keywords now resolve to real names: the generic is measured in
the DOM against nameable candidates, and an unmatched face on an Apple
platform is San Francisco itself (SF Pro / SF Mono). Measurement lives
in the DOM, not canvas, whose generic mapping diverges from real
rendering - this engine draws ui-monospace as the proportional UI font,
which is also why ui-monospace leaves the code stack: concrete mono
names first.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1e1e89c5abJulius Marminge committed on 8/4/2026, 5:28:42 PMparent71b4e7e
1 file changedLine totals unavailable