There's been a W3C standard that meets all those requirements for a couple years now: https://www.w3.org/TR/webauthn/
Only problem is there aren't any password managers that implement it, so it's not actually practical to use as a primary authentication factor yet.