{{-- Unfollow Modal — single instance, opened by any [data-action="unfollow"] button on the listing page or profile page. All fields populated via JS from trigger data-* attributes. Triggered from: partials/pilot/follow-card.blade.php (listing) -> button data-action="unfollow" partials/pilot/profile-hero.blade.php (profile) -> button data-action="unfollow" On confirm: AJAX POST -> /pilots/{id}/unfollow -> JSON response. Response branches (see resources/views/pilot/listing.blade.php JS): status='winding_down' -> open positions still settling. Close modal + toast + reload the page so server re-renders the card in the winding-down state. No wallet return until sweep completes. status='stopped' or 'auto_stopped' -> fast-path sweep already ran (0 open positions). Card animates out, aggregate updates, header balance pill updates by returned_amount. error -> inline message stays until user cancels or retries. Chinedu-owned file per initial memory scope. Full rewrite (not additive) because the projection breakdown replaces the old single "Returns to Main Wallet" line -- the old shape was accurate under the pre-Phase-8 money model where unfollow was instant. --}}