I guess the solution is to set a class or data- attribute on the form or input whenever an invalid event is fired? It's just almost really useful.
This is like slots and templates. WHY can the only be used with shadow dom? As previously mentioned, this makes them pretty unusable. I just wonder if the people coming up with this stuff ever built a web app. Or ever used a web app.