feat(web): configurable font families under Settings → Appearance

Adds a Fonts section to Appearance with four client-persisted
preferences — interface (sans), composer, code, and terminal font
families. Family only; sizing is deliberately left for a follow-up.

- contracts: four FontFamilyPreference client settings (empty string
  means default), patchable per key
- the font theme tokens move out of the inline Tailwind theme so
  utilities reference the variables, and a FontAppearanceSync applies
  custom families as CSS variable overrides with the default stacks
  kept as fallbacks
- the composer gets its own --font-composer variable (defaults to the
  sans stack) applied on the editor surface, so prompt writers can use
  a mono face without changing the rest of the app
- the terminal preference feeds the Ghostty surface's font option and
  live setFont from #4860's groundwork; the bundled Nerd Font symbols
  fallback keeps prompt glyphs on any custom face
- each settings row shows a live preview rendered in the resolved
  stack, with per-row reset; custom names are normalized and quoted
  through tested pure helpers

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
316c0019e2Wout Stiens committed on 7/31/2026, 11:31:47 AMparentacf761b
8 files changedLine totals unavailable