Further to Keith Robert’s point about constants in CSS:
One of the really irritating things that I find with CSS is colour. If I try to define a new site look (with CSS, obviously) that is – say – red instead of blue, I have to produce a whole load of unnecessary code. Say I have a “box” of some sort, two borders dark blue, background blue, two light blue (to give an indented look) then at the very least I have to do this:
.bordertopdark { border-top-color: #222244; }
.borderleftdark { border-left-color: #222244; }
.borderbottomdark { border-bottom-color: #222244; }
.borderrightdark { border-right-color: #222244; }
.bordertoplight { border-top-color: #AAAACC; }
.borderleftlight { border-left-color: #AAAACC; }
.borderbottomlight { border-bottom-color: #AAAACC; }
.borderrightlight { border-right-color: #AAAACC; }
.backgroundlight { … }
.backgroundmed { … }
.backgrounddark { … }
.darkcolor { … }
You get the point. On top of this, I have to start putting multiple classes into my class attributes in order to keep things generic, which is only going to make things more confusing.