> Like I told you before, people have been using class names as styling hooks since prehistoric times and what you have been proposing is not something new at all.
No, not new at all. What I'm proposing is almost as old as the CSS spec, but still is at odds with what people typically do.
> As with the example you cited, this is a pretty good example and use case for packaging the style module and slabbing a class name on it and pushing out the door but the problem with your approach is that you see EVERY and EACH CSS rule/ruleset as a viable candidate for potential reusability down the road when real world experience shows us that this is unnecessary and overkill.
You're right; it's an "architect astronaut" kind of thing and I reckon you have your point - most CSS won't be reused and - quite honestly - most reuse I do is in the SASS/preprocessor domain, not in the CSS/packaged styles domain. Nevertheless, extensive experience and lazy coworkers solutions tell me that it's just a matter of time until:
a) the DOM-bound rules stop reflecting your DOM structure and you have to maintain both "structures";
b) the DOM-bound rules leak undesired styling to other elements; and
c) people have to write even-more-specific selectors to override them.
> it's easy to remedy the situation with a few code lines and it's done without the need to invest upfront in a naming system that comes at a cost and has a considerable overhead at least from an organizational standpoint.
Come on... the overhead of writing BEM-like selectors? This gives you - besides the performance and IMO maintainability - predictability, a common standard for naming among the team members and a nomenclature which yields more meaning upon reading. I think this easily compensates the overhead.
Also, please notice, you said "remedy" the situation. Nothing particularly wrong with that, but that's not a solution - adding another CSS rules is just a "patch", and those patches will accumulate up until they're a "lot" of your CSS. Again, nothing wrong with that, but it's architecture vs. lack of architecture; what I'm proposing is a upfront solution to avoid this and to reframe style rules upon finding failures, which is different than "remediation".
> Again the problem is that you don't want to acknowledge that you don't solve the styling problem in CSS by simply passing the buck to HTML.
I really think you're seeing this wrong. Having more classes is not passing the buck to HTML.
> Taking the earlier timeline as an example, if you'd go class-only in CSS and to throw away all the simple logic provided by those pseudo-classes, you'd still have to provide a similar solution in your HTML template files.
First-child and last-child kind of stuff is usually where I open up exceptions. I tend to do the opposite if I'm using a JavaScript framework which I trust, to render modifiers in classes for first/last element (e.g. .timeline__element--first; .timeline__element--last), but I'm not against using CSS for this. Also, I don't propose adding a class via JS to do :hover. :)