The caller console now changes layout with the call session: a call-sheet table and weekly metrics while choosing, a focused record before dialing, and record, phone, disposition, and history panels during calls and wrap-up. Saving a disposition keeps a live call connected; ending a saved call returns to the sheet.

Adds independent, assignment-scoped contact and note saves, actual latest-donation details, responsive styling, and inline credit sources. Payment controls lock during collection and save, retain polling into wrap-up, and wait for terminal cancellation status. Incoming calls remain visible over Audio Setup.

Validation:
- Production bundle built successfully with checked-in lockfile dependencies and desktop notifications disabled.
- ESLint, PHP syntax checks, Vue template compilation, and git diff checks passed.
- No local tests, browser verification, or live Twilio/payment transactions ran.
- No-mistakes was not run, as requested.

Known limitation: cancellation racing with completed card collection can leave an attempt pending. Completed-card discard is disabled because the backend has no reliable discard-only transition; the UI directs callers to save the card or collect a replacement while connected. This requires explicit QA coverage and is not claimed as validated recovery.

No new migrations or voice-service changes. deploy/README.md includes QA deployment prerequisites and the call, authorization, collection, and recovery acceptance checklist.
