Well, I'm all about CSS. All of my web sites are CSSed out to the maxx.
First and foremost, don't forget your HTML! Good HTML and good content make a good page.
So always code your HTML first, and give meaningful names to your IDs that aren't based on where you want to put them on the page or what shape you think they will be.
For instance:
<div id="upperLeftBox">
<ul id="topMenu">
<li id="firstMenuItem">Home Page Link</li>
<li>List Item</li>
<li>List item</li>
</ul>
</div>
is BAD, and this is more on track:
<div id="mainCategories">
<ul id="subDivisionMenu">
<li id="menuHome">Home Page Link</li>
<li>List Item</li>
<li>List item</li>
</ul>
</div>
In any case, when learning CSS it's REALLY important to not lose sight of the fact that many people may not see your beautiful design. When you code for good STRUCTURE in your HTML (or XHTML) document you're making good web sites that both humans and machines can understand, and that will degrade gracefully to older browsers, or even text-based browsers like PDAs and cell phones.
So make sure you not only know HTML markup, but also how to use it, how to properly nest things, and never use heading tags (h1, h2, h3, etc.) because of their SIZE - use them because they're the proper heading or sub-headings for your content. Then you can style the size to be whatever you need.
Also, not everything in CSS has to be blocky. For some amazing work that changes the entire layout of a site just by changing the style sheets, check out the
CSS Zen Garden or to see a site that actually lets you change "themes" on the fly (i.e. change CSS style sheets to change the layout of the site) see the work I'm doing this week on
Poetry X.com.
Feel free to IM me with any questions as you work.