Base
0-639px
Single column first
Start with one primary reading path. Content stacks, controls stay thumb-reachable, and density stays intentionally low.
Responsive Breakpoints
This reference treats breakpoints as design pressure points. Start with a single-column mobile baseline, add a second column at 640px, promote a sidebar at 1024px, and let cards manage their own internal reflow with container queries.
Base
Single column first
Start with one primary reading path. Content stacks, controls stay thumb-reachable, and density stays intentionally low.
Shift 01
Two columns when room appears
At 640px the layout earns a second column. Scannable cards sit beside narrative content without fragmenting the reading flow.
Shift 02
Three columns with a sidebar
At 1024px the sidebar becomes persistent. Navigation and notes detach from the main flow only once they stop competing with content.
The smallest layout is the baseline, not the fallback. Every larger breakpoint adds clarity or efficiency instead of patching a desktop-first design.
Page-level structure changes at 640px and 1024px because those are the first widths where new columns improve comprehension.
Cards reflow based on their own width. A module can become denser inside a wide column without waiting for the whole viewport to cross a threshold.
Type, spacing, and panel proportions scale with available space so the interface breathes between breakpoints instead of snapping abruptly.
Base
0-639px
Start with one primary reading path. Content stacks, controls stay thumb-reachable, and density stays intentionally low.
Shift 01
640-1023px
At 640px the layout earns a second column. Scannable cards sit beside narrative content without fragmenting the reading flow.
Shift 02
1024px+
At 1024px the sidebar becomes persistent. Navigation and notes detach from the main flow only once they stop competing with content.
Macro layout
The page keeps a single primary column on small screens so heading, copy, and actions stay linear. At tablet width the resource cards gain a second column. Only at desktop width does the sidebar peel off into its own rail.
640px
Enough width exists to compare modules side by side without shrinking the line length into a dense block.
1024px
Secondary navigation and implementation notes become continuously visible once they stop stealing space from the main content.
Fluid
Typography and panel padding use clamps and proportional spacing so the interface expands smoothly rather than in hard jumps.
This card stays stacked in a narrow column, then splits preview and metrics when its own container gets wide enough.
@container (min-width: 28rem)Support information moves beside the main content only when that module has enough horizontal room to keep hierarchy intact.
@container (min-width: 28rem)The same component behaves well in one, two, or three columns because the reflow decision belongs to the card, not the page.
@container (min-width: 28rem)Card behavior
A reusable card should respond to the width it actually receives. This prevents one viewport breakpoint from forcing the same internal layout on cards placed in very different columns, sidebars, or nested panels.
640px and 1024px.28rem.Accessibility
Sections use real headings and landmarks, not only visual blocks.
Interactive chips and sidebar links have visible hover and focus-visible states.
Color contrast stays high enough for dark-surface reading without overloading the accent color.
Main UX decisions
The labels explain what changes structurally at each width so the system remains useful as screen categories evolve.
Moving secondary navigation into a fixed rail earlier would compress the reading line and over-prioritize chrome on tablet widths.
Viewport breakpoints decide macro layout; container queries decide whether each card can safely increase density.
Tradeoffs
Using both media and container queries adds complexity, but it prevents viewport-only breakpoints from creating brittle components.
Navigation is less always-visible on tablet, but the content gets a cleaner reading measure and more stable card widths.