CSS was created as a domain specific language (DSL), style language in more specific, to style documents written in markup languages (HTML, XHTML, SVG, XUL).
A DSL tends to be very expressive, created specifically to solve problems in a particular domain, and not intended to be able to solve problems outside of it. Just don’t compare languages in different categories.
CSS is known as a language has simple syntax, compact encodings, rich set of rendering effects, alternative bindings, and easy to pick up but hard to master.
Before you complain about CSS problems at scale or request new features, you should read W3C design principles behind it, following are three essential principles as the way I interpret:
In a perfect world, you are supposed to be able to move CSS stylesheets around projects in different languages and frameworks and still achieve the same design with very little modification. In reality, CSS stylesheets are very much locked to where written initially and left in dust for ages.
No more loosely-coupled global styles, modern styling techniques like CSS-in-JS and utility-first bring web styling with different perspectives based on component-based architecture. Above design principles seem broken in modern web development.
The power of abstraction comes with the cost of portability. At some point, you don’t even realise you’re actually moving away from CSS and consider it more as a compile target than a styling language.