Split visual loading from disabled state so the passkey spinner can show during challenge preparation without preventing Safari from receiving the explicit click.
Keep the working passkey wiring from the previous commit and replace the fragile shared loading SVG with a lucide spinner that is visible inside the fixed icon slot.
Add visible passkey progress states, skip background conditional UI on Safari, and cancel explicit sign-in if Safari never presents a credential prompt.
Add passkey enrollment and login wiring, including a Safari-safe explicit login path that prefetches the WebAuthn challenge before the click and calls the credential ceremony immediately from the user gesture.