# Phase 15 — Visualizer Controls Enhancements (Design Spec) Status: **design-complete, implementation-ready** (all five open questions resolved by Daniel 2026-06-17 — see §10). Author: product-designer. Date: 2026-06-17 (resolutions folded 2026-06-17). **No code has been written by this doc.** This is a presentation + interaction rework of the **waveform visualizer control surface** — the eight RadialKnob panel introduced in Phase 12 and hosted by `WaveformVisualizerControlPopover`. It does **not** touch the WebGL2 renderer, the `WaveformVisualizerControlState` value model, the `Changed`-event bridge seam, or any playback path. It is a widget/layout/primitive rework of how the controls are *presented and reached*, and it adds **two new on/off toggles** (lava, waveform) plus **deterministic conditional visibility** of the existing knobs. The visualizer stays read-only — no control added here is a seek surface (the standing read-only contract, Phase 10 §D / Phase 12). ## Phase numbering This is **Phase 15**, not 14. Phase 13 (CMS Public Landing) is the highest landed phase in `COMPLETED.md`. Phase **14** is in active use by the `p14-w1-releases-consolidation` worktree (another concurrent session). A second worktree, `nowplaying-card-reactivity`, is also live and touches the NowPlaying surface this phase is adjacent to — so 14 is taken and 15 is the next genuinely-free number. Cross-references (read these before implementing): - `DeepDrftPublic.Client/Controls/WaveformVisualizerControls.razor[.css]` — the eight-knob panel being re-laid-out. Today: a `flex-wrap` grid of eight knobs in `.mix-visualizer-controls-bar`, gated only by a single `Visible` bool. - `DeepDrftPublic.Client/Controls/WaveformVisualizerControlPopover.razor` — the `MudPopover`-based host being re-primitived (§4). Today: `MudPopover Fixed` anchored to the lava-lamp trigger + a transparent `MudOverlay` for dismissal (no tint). - `DeepDrftPublic.Client/Controls/NowPlayingCard.razor[.css]` — the **look-and-feel reference** for the panel chrome (§5). Square corners, faint light border, light type on a dark ground. - `DeepDrftPublic.Client/Controls/SharePopover.razor` — the established overlay/dismissal idiom (`MudOverlay Visible OnClick`, `AutoClose` off so a knob drag does not dismiss). Carry it forward. - `DeepDrftShared.Client/Components/RadialKnob.razor` — **consumed, not modified.** Fixed API. Note: it emits a single `