Fix everything — admin controls, activity feed, theme persistence, light theme
Admin Feature Controls — NOW IN THE DASHBOARD
Added to the existing admin page (the one with "Advanced options", "Webhook notifications", etc.) instead of a separate config page that Jellyfin wasn't loading. All 10 controls visible: leaderboard/compare/activity/prestige/quests kill switches, force privacy, max equipped badges, restrict visibility, disabled categories, welcome message.
Activity feed privacy — ACTUALLY WORKS NOW
Root cause found: saveSettingsPrefs() sent camelCase keys (appearInActivityFeed) but the C# UserNotificationPreferences model uses PascalCase (AppearInActivityFeed). System.Text.Json wasn't matching them on deserialize, so the field stayed at its default true. Now sends both casings for every field.
Theme persistence — STAYS ON PAGE NAVIGATION
Theme was only applied when you clicked the Stats tab, never on page load. Now fetches preferences during loadAll() and applies the theme every time the page renders — navigate away and back, it stays.
Light theme — COMPREHENSIVE PASS
Fixed every remaining broken element:
- Streak heatmap cells (visible borders + empty cell styling)
- SVG text in category rings, genre radar, watch clock (dark fill)
- Quest cards (visible background + dark text)
- Badge rarity border colors (explicit for all 6 tiers)
- Streak header numbers (darker gradient)
- Stats section values + headings (dark text)
- Prestige button, hero streak chip, title display