Unstick OAuth callback when fresh device has no local identity
Opake.init throws IdentityMissing on a device that just completed OAuth
but has no cryptographic identity yet — expected, not a login failure.
The callback's catch block was flattening it to session: error, so the
redirect-on-active effect never fired and the page stuck on the raw
error text.
Classify Opake.init outcomes as a discriminated union (opake /
identity-missing / signed-out) and route identity-missing through a
PDS-direct public-key probe to pick between RecoverIdentityView and
FreshAccountView. Apply the same classification in boot() so a valid
session with no local identity no longer silently degrades to
signed-out.
Also: full-width sign-in input.