Detail polish round 2 — the gutter chevron and friends

sticky back-chevron rail, tenant nav semantics, quiet Clara card, WhatsApp-style player

25 Aug 2026 · branch feat/detail-polish-round2 · captured against propflow-stage · at 96dd7d7f76+local

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · Tenant detail — the chevron in its reserved gutter

The new standard geometry: sidebar → 20px → 24px chevron → 20px → title, with the title 20px under the top bar (was 32). The header trail reads Tenants / name — the side nav stays on Tenants for a tenant close-up, and back is history-back, returning wherever you came from.

Asserted in the captured DOMTenants · Summary. The parent crumb and the tenant body are both rendered — the chevron sits in the gutter, not on a hand-rolled top row.

Tenant detail — the chevron in its reserved gutter

2 · Prospect detail — sidebar rhythm + quiet Clara card

The sidebar cards now breathe: the DetailPage sidebar column gained space-y-6 — the Follow-up and Activity Log cards had zero gap between them. (The other round-2 sidebar call, the Clara card dropping its “Powered by Clara” badge, shows on the tenant capture above — the title already says who wrote it.)

Asserted in the captured DOMActivity Log. The sidebar rail rendered through the standard host — the spacing fix applies to every DetailPage consumer.

Prospect detail — sidebar rhythm + quiet Clara card

3 · Conversation close-up — the back button stops moving

View Full Conversation used to put its back affordance somewhere else entirely. The narrow standalone reader now hosts the same gutter chevron at the same x/y as every other close-up — the whole point of the standard: one place for the mind to look.

Asserted in the captured DOMConversations. The label-only parent crumb (staff-only list, no href) confirms the standalone header went through the shared structured-header path.

Conversation close-up — the back button stops moving

4 · Dark mode — the player and the rail hold

The WhatsApp-style audio player in dark: bare play icon, waveform bars in mid-tone over border-tone, time under the waveform, inverted speed chip, the whole player on the muted surface — “not that purple one.” All tokens, so dark just works.

Asserted in the captured DOMConversations

Dark mode — the player and the rail hold

What a screenshot can't show

The chevron is sticky: it sits on the title line at rest and pins just under the top bar as the page scrolls (round 5: “should it stay stuck? Since there's nothing in that space”). Reviewed live by the owner through five tunnel rounds on this exact head; this artifact is the rendered record of the state he approved for prod testing.

PropFlow Docs