- Rework App.svelte: lazy Gradio connection, no boot-time AI clients
- New Scanner: upload → downscale → /scan → render result
- New services: dataset.ts (CDN reads), scan.ts (lazy backend client + 90s timeout)
- New stores/data.ts: shared reactive cache + optimistic insert (no refetch)
- New utils: image.ts (downscale), rarity.ts (rarity→tier)
- New types for Monster, ScanResult, LeaderboardEntry, UserRecord, Stats
- EXPLANATION.md: full codebase architecture doc
- SIMPLIFICATION_PLAN.md: remove/keep/add plan for the gut