While I do respect the idea behind separating content markup (HTML) from visual styling rules (CSS), it sucks in actual practice.
Consider the CSS 3 Grid.
This would be much easier if we just had gone with an HTML <layout> or <grid> tag back in 1995, then developed media/device specific sub-dialects of HTML instead of going down the CSS route. Back then, supporting a grid or layout element would have been as simple as copying/pasting table rendering code; and there were a lot of proposals to add exactly that kind of element back then.
Instead though, committees were formed and CSS was inflicted. The CSS proponents, and those that came to the web afterwards and don’t know any different, all have a lot of praise for CSS and the neat things it lets us do.
But to me, real result of going with CSS instead of sanity is that, 15 years later, we’re still only in the proposal stage for an officially sanctioned grid-style layout mechanism.