This demo synchronizes the visual :user-invalid state with the semantic aria-invalid attribute. It includes a robust fallback for older browsers.
:user-invalid
aria-invalid