1.1. Shoehorning Structure and Presentation Together1.2. Learning to Love Your Markup1.2.1. XHTML: The New Hotness1.2.1.1. Beginning with the DOCTYPE Declaration1.2.1.2. Keeping Your Markup Well Formed1.2.1.3. Closing Every Element1.2.1.4. Setting Elements and Attributes to Lowercase1.2.1.5. Requiring a Value for Every Attribute1.2.2. Abstracting Style from Structure1.2.2.1. Avoiding Divitis and Classitis1.2.2.2. Moving toward Well-Meaning Markup1.2.2.3. Familiarizing Yourself with Other Markup Elements1.2.2.3.1. Better Know Headers1.2.2.3.2. Better Know Paragraphs1.2.2.3.3. Better Know Unordered Lists1.2.2.4. Take Stock of Your Content, Not Your Graphics1.3. CSS: Adding a Layer of Style1.3.1. Better Know Selectors1.3.1.1. Type Selectors1.3.1.2. The Universal Selector1.3.1.3. Descendant Selectors1.3.1.4. Class Selectors1.3.1.5. id Selectors1.3.2. Other Selectors1.3.2.1. Child Selectors1.3.2.2. Attribute Selectors1.3.3. Combining Multiple Declarations1.3.4. Grouping Selectors1.3.5. Indulging in Inheritance1.3.5.1. Examining Element Hierarchy1.3.5.2. Overriding Inheritance1.3.6. Putting It All into Action1.4. Understanding the Cascade1.4.1. Discovering Style's Origin1.4.2. Sorting by Specificity1.4.3. Sorting by Order1.5. Putting Theory into Practice1.5.1. Building to a Reliable Browser1.5.2. Rationalizing the Need for Hacks1.5.2.1. The Bug1.5.2.2. The Solution1.5.2.3. The Road Is Long1.5.2.3.1. CSS-Discuss1.5.2.3.2. Position Is Everything1.5.3. The Problem with Hacks1.5.4. Hacking Artfully for Fun and Profit1.6. Summary