Skip to content

responsive-design

Use when implementing responsive layouts, fluid typography, spacing systems, container queries, or mobile-first design patterns. Also use when debugging viewport issues, sizing inconsistencies, or cross-device rendering problems.

ModelSource
sonnetpack: frontend

Mobile-first, component-driven, fluid everything. Opinionated patterns for Next.js/Tailwind v4. Goal: zero layout bugs across screen sizes without writing a breakpoint for every edge case.

Core principles:

  • Mobile-first — default styles = smallest viewport, scale up with sm:, md:, lg:
  • Container queries for components, media queries for page layout
  • Fluid type and spacing with clamp() — no stepped jumps
  • svh for fixed/sticky elements, dvh for scroll containers, never raw vh on
Full Reference

┏━ 🔧 responsive-design ━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Use when implementing responsive layouts, flui… ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Mobile-first, component-driven, fluid everything. Opinionated patterns for Next.js/Tailwind v4. Goal: zero layout bugs across screen sizes without writing a breakpoint for every edge case.

Core principles:

  • Mobile-first — default styles = smallest viewport, scale up with sm:, md:, lg:
  • Container queries for components, media queries for page layout
  • Fluid type and spacing with clamp() — no stepped jumps
  • svh for fixed/sticky elements, dvh for scroll containers, never raw vh on mobile

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

UnitBehaviorUse For
vhStatic — ignores mobile chromeDesktop-only layouts
svhSmall viewport — chrome fully visibleSticky headers, fixed navs, modals
lvhLarge viewport — chrome hiddenRarely — almost never correct
dvhDynamic — updates as chrome shiftsFull-height scroll containers

clamp(MIN_rem, {intercept}rem + {slope * 100}vw, MAX_rem) — see reference/fluid-type.md for full derivation.

ScenarioUse
Page-level layout (sidebar collapses)Media query
OS preferences (dark mode, reduced motion)Media query
Component adapts to its contextContainer query
Same card in sidebar vs gridContainer query

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

I want to…File
Mobile-first strategy, breakpoint overridesreference/mobile-first.md
Fluid type, clamp() formula, type scale, line heightreference/fluid-type.md
Spacing tokens, @theme vs :root, vertical rhythmreference/spacing.md
Container queries, named containers, @container setupreference/container-queries.md
svh/dvh/lvh units, safe area insets, mobile layout shellreference/viewport-units.md
srcset, sizes, art direction, next/image, aspect-ratioreference/responsive-images.md
auto-fill/auto-fit, holy grail, sidebar, masonry patternsreference/grid-patterns.md
Tap targets, scroll containers, form inputs, iOS zoomreference/touch-mobile.md

Usage: Read the reference file matching your current task from the index above. Each file is self-contained with code examples and inline gotchas.