The state-based description makes sense to me. I’ve argued before that selectors are if
statements: If this description is true of an element (it has this class name, it is a descendant of that, etc.), apply these styles. :hover
is not really any different than JS adding or removing a class.