I loathe CSS with a passion.
Correction. I loathe the fact that every web browser supports a different, incompatible subset of CSS2. W3C standards were supposed to save us from having to test pages in every single browser under the sun, but we're travelling at high speed in the opposite direction. We can blame Internet Explorer for getting the box model completely wrong, but even the more well-behaved browsers such as Safari and Mozilla don't support the whole standard, and have significant incompatibilities where they do.
CSS is great so long as you stick to a small number of heavily tested recipes. Stick with those and you're fine. Try to do something stupid like, say, build your own layout from first principles, and even if you spend the requisite day testing in multiple browsers and tweaking around the minor bugs, you'll still probably end up completely screwed because you've ended up relying on some property that one of the major browsers just doesn't support. Bastards.
(This post is the result of me banging my head against the fact that the only way to do liquid-layout block elements of variable height side-by-side works wonderfully in Safari, and isn't supported in Mozilla. Any relation it bears to the opinion I hold of CSS at other times is, frankly, purely coincidental.)