Form Validation: You want :not(:focus):invalid, not :invalid – Bram.us
The built-in browser form validation mechanism can be frustrating as it will mark fields invalid while still entering text. Using only CSS this can be circumvented, so that validations happen afterwards.