fn normalize_user_code(input: &str) -> String
Fold user input back to the stored form: uppercase, keeping only charset bytes (RFC 8628 §6.1) so hyphens, spaces and case do not defeat the lookup.