Four advanced builds that demonstrate everything you've learned — animations, custom properties, modern selectors, and responsive polish. These are portfolio pieces, not practice drills.
@keyframes and animation-delay.fadeUpIn keyframe and apply it with staggered animation-delay to each elementwidth: 0 → target% triggered by animation-play-state<body>, and CSS variables handle the entire color transition. Persists preference using localStorage and respects prefers-color-scheme.--bg, --txt, --card variables in :root and [data-theme="light"]transition: background 0.3s, color 0.3s to * for smooth switchingbody.dataset.theme = body.dataset.theme === 'light' ? 'dark' : 'light'matchMedia:has() pseudo-class. When a checkbox inside an accordion item is checked, :has(input:checked) lets you style the parent — opening the panel with a smooth max-height transition and rotating the arrow icon..content { max-height: 0; overflow: hidden; } as the closed state.item:has(input:checked) .content { max-height: 300px; } to open.item:has(input:checked) .arrow { transform: rotate(180deg); }Complete all four capstone projects and you've gone from zero to a full HTML & CSS developer. You can build real websites, structure pages semantically, write modern CSS with confidence, and deploy to the web.