I think your idea is brilliant but needs a bit o polishing off.
Because every website is different everyone has different requirements, and a solution would be to just use the public key as the identifier instead of the email.
And for backup purposes as master password, I would suggest making it very similar to Trezor and generate for the user with a good RNG a 24-word mnemonic. I know is a hard task to write down for some but you don't do it every day, and you know you're safe if you lose your device or make use of it on a different device. I wouldn't want to rely on the user to memorise it or generate it, especially when users do not generate a good entropy.
Because every website is different everyone has different requirements, and a solution would be to just use the public key as the identifier instead of the email.
And for backup purposes as master password, I would suggest making it very similar to Trezor and generate for the user with a good RNG a 24-word mnemonic. I know is a hard task to write down for some but you don't do it every day, and you know you're safe if you lose your device or make use of it on a different device. I wouldn't want to rely on the user to memorise it or generate it, especially when users do not generate a good entropy.
I would personally recommend using Trezor as guidance. This is my demo: https://cl.ly/1P0N0W1t1a3B
I would be happy to implement it in my systems if it follows the principals above.