It is so easy to look backwards and imagine a better world and then moan about imperfections. You can do that with absolutely any technology.

Most of your complaints have been solved, or there are best practices that avoid the downsides.

> Cascade is a bad idea for a variety of reasons

CSS is fucking genius. It is flexible enough that we have solutions that avoid the problems. I love the idea of an alternate universe where we do a redesign: but personally I'm very unfond of some of the (now rightly dead) systems designed to "fix" CSS.

> The over all layout spec is really convoluted

The domain is difficult: we just think it could be simplified because we are given CSS and so we think we could improve upon it.

> absolute

Don't use it. It's a bad design smell. Rarely needed in a few corner cases. A nightmare before getBoundingClientRect() was reliably usable (a decade ago)

> fixed position

Is damn fucking awesome! I developed butter smooth fixed/sticky positioning that worked in IE5.5 to IE11 using absolute instead. I developed a zero-jank fixed position feature in IE but there were insanely complex requirements (global order of events with DOM updates plus needs extremely complex techniques to deal with viewport scrollbars - only a stubborn idiot engineer like me would attempt to yak shave it but I solved it).

fixed positioning was hell in early iOS (broken zoom, broken events, broken inputs, jankyness, scrolled offscreen). Let's not talk about early Android browsers. Arrrgh fixed positioning (and everything else) was broken in Edge (Spartan/Legacy). Yet fixed positioning is a critical feature for mobile screens - a major new feature that CSS managed to embrace.

> Making a horizontal row of images is shockingly difficult)

That's what a <table> was for. Many people searched for difficult solutions: no surprise that they had troubles of their own making. Now solved in more flexible ways with modern CSS layout features (there's that amazingly flexible capability of CSS to absorb new features again!)

> units for "absolute length" These are issues were all features of the very first release.

Which was used because we didn't have modern high resolution screens. Layout units are just extremely difficult (demonstrated by the variety of different units we now have - made available by more powerful computers).

It is just too easy to use 20/20 hindsight to criticise every historical decision.

I feel your pain: I dealt with every quirk in every browser for far too many years.

It is healthier to thank the people that worked on the specifications: awesome technology that is astonishingly flexible (and quite frankly amazingly backwards compatible). Yes, you need to learn how to use the features. No, that isn't a problem. Most anti-features can now be ignored when developing a greenfield site.

I'm extremely thankful that I never have to make a page work on IE (or many other now obsolete browsers) ever again.

There are a huge list of awful gremlins in CSS you didn't mention - luckily most developers can avoid the nastiest of them (zoom: 1; to fix layout?). There are also some truly inspiring CSS features: declarative transitions and animation seem like magic to me (complex, but deliver amazing results) with hidden risks of course: https://news.ycombinator.com/item?id=43259722

I guess CSS is the worst form of layout language except for all the others that have been tried.