As someone who feels fairly proficient in CSS
and also has experience with desktop application layout stuff (Swing, Qt, XAML mostly) I can say that CSS
does feel like a hack. It was conceived as a (more or less) simple stylesheet language for (mostly) textual documents. By now it's used not only to style increasingly-complex document layouts but also application UIs and in that respect it definitely falls short of what other (widget-based) things could achieve for years.
It gets better with some of the CSS3 layouts which more closely mirror what's ben available in the desktop world for ages, but using those is just a recipe for »Your site looks like crap on my browser« mails because they're not standardised yet or not yet widely-implemented (or your target audience uses something else than the bleeding-edge version).