Voices — resolved (Option B + pano-behind)
The decisions consolidated into one screen: reactions are the hero flip-through over the pano they're reacting to; DMs sit as a slim friend rail; an overview strip handles scale; the gradient is reserved for the active voice. Clean by default — the overview only when you reach for it.
Default — clean hero (landscape)
DMs
Voices6 waiting
Play all
Jules
on your sunset pano
0:08
🎙 Reply in voice
DM rail — unheard = ring; tap → thread
pano they reacted to plays behind
reply → opens a voice DM thread
One voice, front and center, over its moment. Nothing else competes.
Swipe up → overview (scale + jump)
DMs
Voices6 waiting
Play all
Jules
on your sunset pano
All
waiting
+1
thumbnail per waiting voice — see scope, tap any to jump. No dense list.
The fix for "30 unheard is a chore" — surfaced on demand, gone by default.
Portrait companion
Voices6
Play all
DMs
Jules
on your sunset pano
0:08
🎙 Reply in voice
+2
Same model: rail up top, hero in the middle, overview strip at the foot.
The resolved model
Reactions = hero flip-through, over the pano they're about.
DMs = rail — friends with unheard voice (ring); tap opens the existing thread.
Loop: play → marks heard → auto-advances (flip ≡ Play all). Swipe past = stays unheard.
Scale: "N waiting" + overview strip on demand. Caught-up state when empty.
Reply: records a voice note that opens a DM thread (public→private seam).
Still open (yours): where mentions / DM-requests go — they're neither a playable voice nor pure ambient.