ea22807a3f
The Flutter client (#356) needs to consume the same FabledSword tokens the web SPA uses. Move the data into a structured tokens.json file and generate tokens.generated.css from it on every Vite build. The Flutter side gets its own generator pointed at the same JSON. No visual change — generated CSS matches the previous hand-written file. Also installs @types/node devDependency: tsconfig already declared "types": ["node"] but no Node builtins were referenced in TS until now, so the missing types were latent. The new vite.config.ts plugin imports node:child_process, surfacing the gap.