Self-signed certificates are in the 'barely working' state. They operate on a wrong protocol level, and they can't be provisioned by the website itself.
If you try to describe how you _want_ the TLS client certificate UI to work, you'll end up with passkeys.
> "they can't be provisioned by the website itself."
It's funny, we used to have a html tag that would exactly that: <keygen />
Okay. So they took a solution that was in a barely-working state due to their deliberate neglect, and still managed to give a bad new UX when they got the opportunity to rework it?