Adds a theme button to the footer, right of "keyboard shortcuts". Each click cycles auto -> light -> dark (Lucide sun-moon, sun, moon icons).
- Saved in localStorage (key "theme") through ermiteStore; other tabs and pages restored from the back/forward cache follow.
- store.js applies the theme before the first paint (html[data-theme], color-scheme and theme-color metas): no flash, no inline script (CSP script-src 'self').
- Accessible name says the current and next mode; a click announces the new mode in the hint live region. Hidden without JavaScript (data-js).
- The offline page of sw.js follows the system theme.
Checks: go build, go vet, go test ./internal/adapters/web/... ./internal/app, templ-drift.sh, node --test jstest (216 pass). Not checked in a real browser yet.