CreditCardNumberValidator
The value must be a plausible payment-card number (PAN): 12-19 digits passing the Luhn checksum. Spaces and hyphens between digit groups are tolerated (4111 1111 1111 1111), any other character is rejected.
This is a structural check — it catches typos, not whether the card exists.