- 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>