- Keep TwoFactorModal open after code submit; display server-side
errors inline instead of silently closing the modal
- handlePair now returns PairedDeviceInfo so handleInstall uses the
fresh UDID instead of stale closure state
- Add explicit /wisp/ location in nginx.conf returning 502 to prevent
SPA fallback from swallowing websocket upgrades
- Add prefers-color-scheme dark mode via CSS custom property overrides;
replace hardcoded rgba/hex with color-mix() for automatic adaptation