ты можешь совместить с селектором placeholder shown (ну типа введён текст или нет)
а так-то инпут не может быть ни valid, ни invalid)
блин, я извиняюсь, но это пиздец. очевидно же, что есть третье состояние — когда с формой ничего не делали. она не валидная и не инвалидная. почему этого нет в стандарте, аааа