When to Use
User needs CSS expertise — from layout challenges to production optimization. Agent handles stacking contexts, flexbox/grid patterns, responsive design, performance, and accessibility.
Quick Reference
| Topic | File |
|---|---|
| Layout patterns | layout.md |
| Responsive techniques | responsive.md |
| Selectors and specificity | selectors.md |
| Performance optimization | performance.md |
CSS Philosophy
- Layout should be robust—work with any content, not just demo content
- Use modern features—they have better browser support than you think
- Prefer intrinsic sizing—let content determine size when possible
- Test with extreme content—longest names, missing images, empty states
Stacking Context Traps
z-indexonly works with positioned elements—or flex/grid childrenisolation: isolatecreates stacking context—contains z-index chaos without positionopacity < 1,transform,filtercreate stacking context—unexpected z-index behavior- New stacking context resets z-index hierarchy—child z-index:9999 won't escape parent
Layout Traps
- Margin collapse only vertical, only block—flex/grid children don't collapse
overflow: hiddenon flex container can break—useoverflow: clipif you don't need scroll
Flexbox Traps
flex: 1meansflex: 1 1 0%—basis is 0, not automin-width: 0on flex child for text truncation—default min-width is min-contentflex-basisvswidth: basis is before grow/shrink—width is after, basis preferredgapworks in flex now—no more margin hacks for spacing
Grid Traps
frunits don't respect min-content alone—useminmax(min-content, 1fr)auto-fitvsauto-fill: fit collapses empty tracks, fill keeps themgrid-template-columns: 1fr 1fris not 50%—it's equal share of REMAINING space- Implicit grid tracks can surprise you—items placed outside explicit grid still appear
Responsive Philosophy
- Start mobile-first—
min-widthmedia queries, base styles for mobile - Container queries:
@container (min-width: 400px)—component-based responsive container-type: inline-sizeon parent required—for container queries to work- Test on real devices—emulators miss touch targets and real performance
Sizing Functions
clamp(min, preferred, max)for fluid typography—clamp(1rem, 2.5vw, 2rem)min()andmax()—width: min(100%, 600px)replaces media queryfit-contentsizes to content up to max—width: fit-contentorfit-content(300px)
Modern Selectors
:is()for grouping—:is(h1, h2, h3) + pless repetition:where()same as:is()but zero specificity—easier to override:has()parent selector—.card:has(img)styles card containing image:focus-visiblefor keyboard focus only—no outline on mouse click
Scroll Behavior
scroll-behavior: smoothon html—native smooth scroll for anchorsoverscroll-behavior: contain—prevents scroll chaining to parent/bodyscroll-snap-typeandscroll-snap-align—native carousel without JSscrollbar-gutter: stable—reserves scrollbar space, prevents layout shift
Shorthand Traps
inset: 0equalstop/right/bottom/left: 0—less repetitionplace-itemsisalign-items+justify-items—place-items: centercenters bothmargin-inline,margin-blockfor logical properties—respects writing direction
Performance Mindset
contain: layoutisolates repaints—use on independent componentscontent-visibility: autoskips offscreen rendering—huge for long pageswill-changesparingly—creates layers, uses memory- Avoid layout thrash—batch reads and writes to DOM
Accessibility Baseline
prefers-reduced-motion: reduce—disable animations for vestibular disordersprefers-color-scheme—@media (prefers-color-scheme: dark)for dark modeforced-colors: active—adjust for Windows high contrast- Focus indicators must be visible—don't rely on color alone