- Flash-prevention script in <head> reads radical_theme from localStorage and
sets data-theme on <html> before first paint — no FOUC
- Fixed ☀️/🌙 button (top-right, z-index 9999) on index, admin, and login using
CSS ::before so the icon is driven by data-theme with no JS initialization
- Light mode: #F5F3EF warm off-white body, #E8E6E2 cards, #CCC borders, #111 text
- Pink accent (#ff0099) unchanged in both modes
- Signed-in users: theme saved to radical_user localStorage object and applied
on load so preference follows their session
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The 🔐 emoji was rendering taller than surrounding text causing the
link to appear oversized. Removed emoji and login-link class entirely;
.footer-links a already handles all the needed styling.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace email-only capture with full AEC membership modal (name, DOB,
address, suburb, state, postcode, email, phone, electoral roll consent)
- Trigger modal on first upvote (petition signature) OR after 3rd vote
- Modal posts to /api/join and emails details to party contact
- localStorage 'radical_member_joined' tracks completion/dismiss per device
- Shrink .login-link to match other footer links (was pink button, now text)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>