If you have a large code base with lots of UI then CSS becomes very brittle to change. Nest some UI elements that have never been nested before and something will break. One tiny change in one place affects something somewhere else. You have start making exceptions, a duplicate a rule here or maybe an !important there. Eventually you're got nothing but exceptions.
Personally, I think the concept of declarative styling is brilliant but the implementation in CSS leaves a lot to be desired. It's far more error-prone than necessary.