- New prefs: visualizer_mode (on/dim/off, saved on every click) and
color_visualizer_gray (None = keep the derived alternateBase look).
- VisualizerWidget takes prefs (optional, so existing call sites/tests
keep working); restores its mode at startup and validates junk values.
- New "Visualizer (gray mode):" row in the Preferences color sliders;
theme.default_gray mirrors the widget's 0.88-lightness derivation so
an untouched slider shows the current appearance.
- TransportBar.refresh_theme() repaints the visualizer so slider drags
preview live.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>