Move the SvelteKit config into vite.config.js, replace the $lib alias with
#lib subpath imports (dropping the vitest alias), extend $app/tsconfig, and
pass asset() paths without a leading slash. Drop the @babel/core and js-yaml
overrides, which no longer match anything in the tree.
classic-mode.js moves byte-for-byte. champion-data.js swaps the Next.js
env-var fetch prefix for asset() from $app/paths, which resolves to
/champions.json in dev and /loldle/champions.json in the deployed build.
getChampionImageUrl keeps returning an absolute Data Dragon URL, unwrapped.
Drops three exports with no callers: getAllChampions, getChampionByName,
getGuessedNames.
The characterization suite passes unchanged against the new location -- only
import specifiers moved, no assertions touched.
Cover classic-mode comparison rules, game-engine state machine and
localStorage persistence, and champion-data search/seeding/loading with
Vitest. Storage keys are asserted literally so returning players' saved
games and stats cannot silently break.
Node environment with a hand-rolled localStorage stub; fixtures are four
hand-written champions so the weekly data sync cannot destabilise the
suite.