By that logic, everything sucks. C++, Haskell, HTML, all of it.
And yet, most of the code written in those languages results in a better track record than CSS. In fact, most professionally produced code that has problems fails in edge cases. Most the the CSS I encounter has problems in the main use cases.
sure, you can break things, but at least you'll usually get something that's still readable.
True, about 80% of the time when I have a problem with CSS-based pages, I can still sorta read the pages. Often I have to do annoying things like resize my browser, reduce my font sizes, or other types of workarounds before the page becomes readable, though, so that's sorta weak sauce. Nonetheless, there's still an annoying high rate of breakage -- I'd say about half of the websites I go to present some amount of functionality loss or unreadable text due to CSS.
But even worse than that, the limitations of CSS make web designers choose designs that are just bad (for instance, my own pet peeve of pages that have a fixed width or limited ability to handle arbitrary window sizes. Yes, you can do these properly with CSS, but it's much more difficult to do, so most web designers don't.
I'm not saying it's impossible to make a great, robust web page using CSS. I've done it. I am saying, however, that for nontrivial web pages it's much more difficult than making the equivalent page without it and it's much easier to mess it all up. In my view, that makes it a poor tool.