e53a41ae80
Bring the mobile Pipeline surface to the PipelineApp.dc.html default anatomy: - Segmented control → horizontal-scroll pills with label + count badge; the active pill tints to its own stage color via --seg-* (aliased to --chip-*, so it flips in light). - Card → earmark corner + name + Priority pill / $amount · dot · recency / labeled ‹ Prev · Next › move footer (was name + contact·org sub + bare chevrons). Compact amount. - Stage-column header → StageChip + investor count + committed sum. - Page dots → tappable, active = 22px accent bar. Backend: the opportunities list injects two derived read-only fields (mirroring the Contacts-list pattern; opp writes use a field allowlist so neither round-trips): - existing_investor (contact_grid_signals committed>0) so the card earmark agrees with the detail's "Existing LP" pill. - last_contact_date (MAX communication_date on the deal's contact, deleted_at-filtered) → card recency line + the Staleness sort (replaces the updated_at proxy). Guarded by new soft-delete assertions in test_soft_delete_reads.py. 39/39 green.