`, §3, which removes the `::deep` need for that element entirely*;
+ - the genre chip on `MudChip` (`::deep .release-overlay-chip.mud-chip`);
+ - the bottom-row `MudStack` wrap (`::deep .release-hero-bottom-row`);
+ - the play/share icon-color overrides on `MudIconButton`/`MudProgressCircular`
+ (`::deep .release-hero-play .mud-icon-button`, etc.).
+- **The square/medium aspect for Mix** is a single override scoped to the `mix-hero` class
+ (`aspect-ratio: 1/1; max-width: ~480px; margin-inline: auto`) — it overrides the component's default
+ wide aspect. This is the "divergence rides CSS, not structure" realization of the one-source rule.
+- **No `MudCard`/`MudPaper` shell for the overlay container** (house rule). The `.release-hero`
+ positioning context, the shim, and both overlay rows are plain `
`s — as Sessions already does.
+ The only Mud wrappers that remain are the chip, the icon buttons, and (optionally) the image surface —
+ each carrying real component behavior, none acting as a layout shell. **If staff-engineer reaches for a
+ Mud wrapper as a layout shell, stop and flag it** (per the standing constraint).
+
+---
+
+## 7. Acceptance criteria (observable)
+
+1. **Cover-as-background.** On a Mix detail page with a cover image, the cover renders as a
+ background-image hero (`background-size: cover`), not as a bordered thumbnail; metadata sits overlaid
+ on top of it.
+2. **Square medium region.** The hero is a centered square (`aspect-ratio: 1/1`) capped at a medium
+ width (~480px), visibly larger than the old 220px cover, with the surrounding canvas left to the
+ visualizer.
+3. **All metadata overlaid.** Title, artist, genre (when present), release date (when present), and the
+ share affordance all render *over* the cover image — no separate masthead block, no separate meta
+ divider/row below the cover.
+4. **Placeholder path.** A Mix with no cover image shows the placeholder treatment (Album icon over the
+ soft-secondary gradient) with metadata still legibly overlaid.
+5. **Legibility.** The darkening shim keeps overlaid text readable over light and dark cover art, in both
+ light and dark theme.
+6. **Visualizer/controls preserved.** The lava-lamp toggle still opens the in-flow seven-knob controls
+ container between the back link and the lamp; it still grows in place, still wraps on narrow widths,
+ and the lava-lamp glyph still swaps filled/outline. No regression to the Phase 10 layout.
+7. **More canvas for the visualizer.** The content block below the controls row is shorter than before
+ (one overlaid hero vs. masthead + cover + meta), leaving more visible visualizer area.
+8. **Sessions unchanged (Direction B).** After the shared-component extraction, the Session detail page
+ renders pixel-identically to before (before/after visual check on a session with a dedicated hero
+ image, a session with cover-only, and a session with no image).
+9. **One source of truth (Direction B).** The overlay markup + cascade exists in exactly one component;
+ grepping for `.session-hero` / `.release-hero` finds no duplicate structure across the two pages.
+10. **No Mud layout shell.** The overlay container, shim, and overlay rows are plain `
`s; no
+ `MudCard`/`MudPaper` acts as a layout wrapper (image surface excepted only if kept as `MudPaper`).
+
+---
+
+## 8. Open questions for Daniel
+
+1. **DRY decision (the load-bearing one).** Recommended **Direction B** — extract a shared
+ `ReleaseHeroOverlay` both pages consume (one source of truth; edits the shipped Sessions page).
+ Fallback **Direction A** — per-page copy in Mix (fast, zero Sessions risk, takes on duplication debt).
+ **Which do you want?** (B is the "one source, multiple views" call; A is the play-it-safe-on-Sessions
+ call.)
+2. **Drop the `MudPaper` on the image surface** for a plain `
` while we're
+ in here? It carries no Mud behavior (Elevation=0/Square=true), so it is dead weight and a plain div is
+ more on-spec with the plain-shell rule. Incidental cleanup — yes/no?
+3. **Square hero size.** Recommended ~**480px max-width** square. Crowded vs. roomy is a feel call you'll
+ tune on screen — is ~480px the right starting point, or do you want it bigger (closer to the Sessions
+ hero scale) / smaller (more visualizer room)?
+4. **Suppressing the duplicate masthead.** Mix's hero now carries title/artist/play, so the scaffold's
+ default masthead must be suppressed. Recommended: add a small **`ShowHeader` gate** to the scaffold
+ (slot-consistent with `ShowMeta`/`ShowShareRow`), vs. the hackier empty-`Header`-fragment. OK to add
+ the `ShowHeader` gate?
+5. **Square overlay crowding (deferrable).** If the genre/date/share top row + title/artist/play bottom
+ row feel cramped on a 480px square, are you fine tuning shim/spacing on screen, or do you want a
+ different overlay arrangement for the square (e.g. a single bottom-stacked overlay) speced now?
+
+---
+
+## 9. File-change inventory (for staff-engineer, Direction B)
+
+**New:**
+- `DeepDrftPublic.Client/Controls/ReleaseHeroOverlay.razor` (+ `.razor.css`) — the shared overlay,
+ lifted from Sessions' current hero markup + CSS, parameterized per §3.
+
+**Edited:**
+- `DeepDrftPublic.Client/Pages/SessionDetail.razor` — replace the inline `.session-hero` block with
+ ``, passing its hero/cover precedence, share, and play slots. Behavior-
+ preserving (must render identically).
+- `DeepDrftPublic.Client/Pages/SessionDetail.razor.css` — remove the overlay cascade now living in the
+ component; keep only page-specific rules.
+- `DeepDrftPublic.Client/Pages/MixDetail.razor` — replace the `.mix-detail-cover` `Hero` slot with
+ ``; drop `MetaContent`; move the share
+ row into the overlay's `ShareContent` slot; suppress the scaffold masthead (per Q4). **`TopRowCenter` /
+ `TopRightAction` / the visualizer / `_controlsExpanded` wiring untouched.**
+- `DeepDrftPublic.Client/Pages/MixDetail.razor.css` — keep `.mix-detail-foreground`; add the `mix-hero`
+ square/medium sizing override; remove `.mix-detail-cover`.
+- `DeepDrftPublic.Client/Controls/ReleaseDetailScaffold.razor[.cs]` — **only if Q4 = ShowHeader gate:**
+ add a `bool ShowHeader = true` gate around the default header region.
+- `DeepDrftPublic/wwwroot/styles/deepdrft-styles.css` — no change required; `.deepdrft-track-detail-
+ cover*` stays (Track detail still uses it). The `.mix-detail-container .deepdrft-track-detail-
+ container` width override stays (the scaffold still hosts the top row).
+
+**For Direction A (fallback):** no new component; the overlay markup is inlined into `MixDetail.razor`
+and the `.session-*` cascade is copied + renamed into `MixDetail.razor.css`. Sessions untouched.