7e079e0186
Deploy to route.crispygoat.com / deploy (push) Successful in 4m8s
The 'Send Reset Email' button in /admin/users previously just cleared the error banner on success, with no actual 'yes it worked' feedback. Added a green success banner that mirrors the error banner's style and auto-dismisses after 6 seconds. The 'Reset Password' button already shows confirmation in the modal (temp password to copy, or 'reset email sent' message), so it doesn't need the banner. Also tightened the type narrowing in the resetAdminPassword unit tests — the discriminated union needed a two-step narrow (`r.success` then `r.method`) before TypeScript would allow access to variant-specific fields like `tempPassword`.