Backend /health now returns a build version; frontend polls it every
2 minutes (and on tab focus) and shows a reload banner when it changes.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Scope was set to the app's own base path, which breaks the installed
PWA out of standalone mode into a regular browser tab on any
same-origin navigation outside that path (e.g. the auth redirect).
scope: "/" keeps navigation inside the installed app's window.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- index.css: match portal token system (light body, dark login chrome)
- NoticeBoard: white cards/shadows, Lucide Pin/PinOff/Trash2/Plus/X icons,
light input/button styles, category pills with navy active state
- AuthGate: explicit dark bg on login container (body is now light)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>