Distance rejection now says exactly why, the PIN rate-limit shows
remaining seconds, and the client no longer announces pickup success
before the server validates it.
Adds distance validation on placement, PIN attempt rate limiting,
proximity checks on open/pickup, and prevents item loss on pickup
when the safe still has contents.