Ultra flexible HTML & CSS

I’m wondering if it’s possible to write your HTML in such a way that it can take virtually any form when sculpted by CSS. All the designs on http://www.csszengarden.com/ use the same HTML but look completely different when a different CSS is applied. What are the rules for making your HTML ultra flexible like this? There should be some guidelines like “put primary navigation in a <ul> with each link in an <li>.” I’m looking for rules like that… if they exist. :emb: Sometimes I’ve discovered that poorly written HTML will force you to rewrite before you can get the structure you want.