- national code: full Iranian checksum (control digit + reject all-same), not just length 10 → "کد ملی نامعتبر است" on failure - IBAN (شبا): validate IR + 24 digits + mod-97; input forces uppercase, strips to IR/digits, maxLength 26 - Persian/Arabic digits converted to Latin on input and before validation so the field behaves with an English/numeric keyboard Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>