Something I think hasn't been emphasized about #CSS :is()
and :where()
is that they are forgiving selectors.
This means that if an item inside their scope isn't understood by the browser, it does not invalidate the entire rule!
It's a superpower because in a traditional selector list, an invalid selector does cause the entire rule to be discarded.
Note that both :has()
and the enhanced :not()
are not forgiving, but you can wrap them with either is
or where
to hop around that!