webdev rant
If I were to choose which one of HTML, CSS and JS I hate the most, it would without a doubt be HTML. This actual piece of garbage is barely a functionality superset of Markdown and is good at describing neither simple "hypertext" pages it was designed for nor 2D maps of content that modern websites are; not even mentioning full-blown web applications. It's the reason we need CSS and JS frameworks in the first place.
If you want to blame something for web bloat, blame HTML for being so shit it requires that bloat.
webdev rant
@amerika HTML in its original form was a crappy rich text format that described content as much as layout and appearance. (<center>, <hr>, <font>, etc...) I'd even say that this "content description" resulted directly from the fact that you have to describe content to know how to display it as rich text, after all semantic tags like <article> or <aside> were only introduced in HTML5.
But I agree that moving it to be a layout system was a mistake, it's an abomination that tries to shoehorn text formatting into 2.5D layouts and fails so hard we have an entire big branch of the industry dedicated to making it suck even a bit less.
We need a way to semantically describe content and a way to structure it into modern layouts. HTML is bad at both.
webdev rant
This allows using HTML as a semantic and structural format only, for example using headers and bullet points and paragraphs.
Ideally we would have some method of designating parts of each page as "interface" e.g. repeated elements.
webdev rant
@Amikke
It was never designed to be a layout system, as you note. The original idea was that it would be either displayed or machine parsed.
I think it does a good job, if one codes it properly and avoids some of the little missteps the standards people made along the way.
Its original hybrid nature was provided with the idea that some of these tags would be ignored in certain contexts.
At this point, it makes sense to code HTML as you say: offload layout to CSS.