What problem does it solve? Player preferences that belong to the machine rather than the account need a storage pattern that avoids the server, avoids auth tables, and avoids hydration mismatches in a SolidStart app. ## Core Features & Use Cases - Centralized settings module: src/components/app/settings.ts defines GameSettings, defaults(), stored() normalization, and a module-signal accessor readable from components, canvas code, or helpers without a provider. - Safe persistence: one JSON key in localStorage, read only after hydration via loadSettings() in onMount, with every stored field normalized and falling back to defaults. - Use Case: Add a new preference like boxColumns by declaring it in GameSettings, giving it a default, and reading it with settings().boxColumns; CSS-driven settings become a root-element class set by a createEffect in src/app.tsx. ## Quick Start Add a new device-level setting to the game by declaring it in GameSettings with a default and reading it through the settings accessor.