Transmission #041: Quests inventory tab (Step 8)

Inventory gained a Quests tab (after Boxes, before Grimoire when present). It lists active quests from PlayerStatTrackerProvider.QuestSession: title, current / target (current reads PlayerStatTracker when the provider exists so distance and counts stay honest before Step 10 mutates ActiveQuest.CurrentProgress), and an Abandon button that calls AbandonQuest and refreshes the list. The panel subscribes to ActiveQuestsChanged so abandons from elsewhere (e.g. debug keys) update the UI. RefreshAll refreshes quests even when CharacterInventory is missing so the tab is not blocked by inventory resolution. InventoryPanelQuestsUiTests (Edit Mode) builds a minimal provider + two accepts, invokes RefreshAll, asserts two QuestRow children, abandons one, and asserts one row remains. Implementation plan Step 8 is checked off; next is quest board interaction (Step 9).