| license | Apache-2.0 |
| name | responsive-layout-master |
| description | Build responsive layouts with CSS Grid, container queries, fluid typography, clamp(), and mobile-first design. Activate on: responsive design, CSS Grid layout, fluid spacing, container queries, mobile-first, breakpoints. NOT for: styling/theming (use css-in-js-architect), animation layout changes (use animation-system-architect). |
| allowed-tools | Read,Write,Edit,Bash(npm:*,npx:*) |
| category | Frontend & UI |
| tags | ["responsive-design","css-grid","container-queries","fluid-typography","mobile-first"] |
| pairs-with | [{"skill":"web-design-expert","reason":"Layout execution follows design intent for responsive breakpoints"},{"skill":"css-in-js-architect","reason":"Responsive layout coordinates with token-based spacing and theming"}] |
Responsive Layout Master
Build fluid, responsive layouts using CSS Grid, container queries, clamp(), and mobile-first design that adapt from 320px phones to 4K displays without breakpoint jank.
Activation Triggers
Activate on: responsive layout implementation, CSS Grid complex layouts, clamp() fluid sizing, container queries for component responsiveness, mobile-first breakpoint strategy, "layout breaks at X width", sidebar/content/aside patterns.
NOT for: theming/tokens/colors -- use css-in-js-architect. Animating layout changes -- use animation-system-architect. Component library grid systems -- use design-system-creator.
Quick Start
- Start mobile-first -- write base styles for 320px, then add complexity with
min-width media queries.
- Use CSS Grid for page layout --
grid-template-areas for the main shell (header, sidebar, content, footer).
- Use
clamp() for fluid sizing -- clamp(1rem, 0.5rem + 1.5vw, 2rem) smoothly scales between min and max.
- Apply container queries -- components that live in variable-width containers (sidebars, modals) should use
@container instead of @media.
- Test at all widths -- drag the browser from 320px to 2560px; there should be no "broken" widths.
Core Capabilities
| Domain | Technologies | Key Patterns |
|---|
| Page Layout | CSS Grid, grid-template-areas | Named areas, auto-fill, minmax() |
| Component Layout | Flexbox, CSS Grid | Intrinsic sizing, gap, align/justify |
| Fluid Sizing | clamp(), min(), max(), viewport units | Smooth scaling without breakpoints |
| Container Queries | @container, container-type | Component-intrinsic responsiveness |
| Fluid Typography | clamp() on font-size, line-height | Readable text at every viewport width |
| Breakpoint Strategy | Mobile-first min-width, Tailwind sm:md:lg: | Additive complexity approach |
Architecture Patterns
Pattern 1: CSS Grid Page Shell
.app-shell {
display: grid;
min-height: 100dvh;
grid-template-areas:
"header"
"main"
"footer";
grid-template-rows: auto 1fr auto;
}
@media (min-width: 768px) {
.app-shell {
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 280px 1fr;
grid-template-rows: auto 1fr auto;
}
}
@media (min-width: 1280px) {
.app-shell {
grid-template-areas:
"header header header"
"sidebar main aside"
"footer footer footer";
grid-template-columns: 280px 1fr 320px;
}
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.aside { grid-area: aside; }
.footer { grid-area: footer; }
320px (mobile) 768px (tablet) 1280px+ (desktop)
┌──────────────┐ ┌───────────────────┐ ┌──────────────────────┐
│ header │ │ header │ │ header │
├──────────────┤ ├──────┬────────────┤ ├──────┬────────┬──────┤
│ │ │ side │ │ │ side │ │ aside│
│ main │ │ bar │ main │ │ bar │ main │ │
│ │ │ │ │ │ │ │ │
├──────────────┤ ├──────┴────────────┤ ├──────┴────────┴──────┤
│ footer │ │ footer │ │ footer │
└──────────────┘ └───────────────────┘ └──────────────────────┘
Pattern 2: Fluid Typography System
:root {
--text-sm: clamp(0.8rem, 0.74rem + 0.3vw, 0.875rem);
--text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
--text-lg: clamp(1.125rem, 0.95rem + 0.85vw, 1.5rem);
--text-xl: clamp(1.25rem, 0.9rem + 1.7vw, 2rem);
--text-2xl: clamp(1.5rem, 0.8rem + 3.3vw, 3rem);
--text-3xl: clamp(2rem, 0.7rem + 5vw, 4rem);
--space-sm: clamp(0.5rem, 0.3rem + 1vw, 1rem);
--space-md: clamp(1rem, 0.5rem + 2vw, 2rem);
--space-lg: clamp(1.5rem, 0.5rem + , );
: (, + , );
}
{ : (--text-base); }
{ : (--text-xl); }
{ : (--text-xl); }
{ : (--text-xl); }
Pattern 3: Auto-Fill Grid for Card Layouts
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr));
gap: var(--space-md);
}
This single rule handles 1-column (mobile), 2-column (tablet), 3-column (desktop), and 4-column (wide) without any media queries.
Anti-Patterns
- Max-width media queries (desktop-first) --
@media (max-width: 768px) leads to overriding desktop styles for mobile. Use min-width (mobile-first) so complexity is added, not subtracted.
- Fixed pixel breakpoints without fluid behavior -- layout jumps from 1-column to 3-column with no transition. Use
clamp() and auto-fill/auto-fit for smooth adaptation.
100vw causing horizontal scroll -- 100vw includes the scrollbar width. Use 100% or 100dvw for the content area width.
- Viewport media queries for components in variable containers -- a card in a sidebar is 300px wide even on a 1920px screen. Use
@container queries for component-level responsiveness.
- Hardcoded heights --
height: 600px on a container overflows on small screens. Use min-height or let content determine height.
Quality Checklist