There are a lot of really odd comments in here re: CSS (most notably, your post, Jeff)…not sure wherein the horror lies. On table layouts, yes, they’re easier sometimes. They’re also semantically broken and screw up accessibility. If you want to see some guiding wisdom on the what and why of not doing table-based layout, either get a blindfold and a voice-based browser, or head on over to the Univ. of Indiana’s FAE site (http://fae.cita.uiuc.edu/). Even Microsoft realized using tables for layout isn’t a great plan (control adapters and alternative output for menus, etc is the result of that realization).
All that aside, those layout problems are because of the state of HTML, not of CSS. It’s meant to do what it does, which is to allow for a set of consistent styles to be applied across multiple pages, and redefined by subsequent additional styles (including user stylesheets located on the end user’s PC, not under your control, and with higher precedence than the rest of your carefully-chosen rules).
Make your main stylesheet template (one time), then make a secondary one for whatever tweaks you want to apply (or dynamically create the tweaked version, etc). That’s how it’s supposed to work. Variables are nice programatically, but if you’re going to generate CSS on the fly in code, you don’t need them anyway.