21c9b1ea63
Complete the Phase 2.2 split. Each dedicated component now carries only its own state, effects, and JSX; the shared-copy duplication from the split checkpoint is removed. - ProfilePage (/profile): 1372 -> ~495 lines. Dropped the 700-line master-CV block, all CV/rewrite/PDF state + helpers + the extraction-run polling effects. loadProfile now fetches only /auth/me (no runs/jobs). Saves identity only. - CareerProfilePage (/career): dropped identity fields, password, 2FA/sessions and their state; loadProfile no longer sets identity fields. Saves the master profile only. Owns the master-CV editing surface. Both save through the partial-update PUT /auth/profile, so neither can overwrite the other's data. The master career profile stays the only editable source of truth on /career. Tests: the CV-editing tests in profile-page.test.tsx now render CareerProfilePage (where that surface lives) — all 5 pass, fixing 4 pre-existing failures that were caused by the display:none shared block. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>