+234 Design System

Layering, breakpoints and icons

The three scales that were never written down: what stacks above what, where the layout changes, and how big an icon is.

Layering

The masthead, the nav dropdowns, the search overlay, the mobile menu and the toasts all stack, and until now each picked its own number. One scale, six steps, and the order is the argument.

--p234-z-base0
--p234-z-raised10A mark lifted above its siblings.
--p234-z-sticky20The masthead and any sticky section rule.
--p234-z-dropdown30Nav menus, the account menu, select popovers.
--p234-z-overlay40Search overlay, dialogs, the mobile menu.
--p234-z-toast50Always on top. Nothing goes above a message about what just happened.

Breakpoints

Four widths. Custom properties cannot be used inside a media query, so unlike every other token on this site these are not read by a stylesheet: they are the agreed values, exported in build/tokens.json for JavaScript, and written literally into every media query the system ships.

--p234-breakpoint-sm30rem480px. Large phone.
--p234-breakpoint-md48rem768px. Tablet, and where the article column stops being full bleed.
--p234-breakpoint-lg62rem992px. Where a sidebar becomes worth having.
--p234-breakpoint-xl80rem1280px. Full container.

That is an honest limitation rather than a design choice. The discipline it needs is simple: if a media query in this system uses a width that is not on this list, it is wrong.

Icons

lucide-react, sized from this scale, at a slightly lighter stroke than the library default so the icons sit with the serif rather than shout over it.

--p234-icon-size-sm16pxInline with ui-sm and meta text.
--p234-icon-size-md20pxDefault: buttons, nav, controls.
--p234-icon-size-lg24pxSection headers and empty states.
--p234-icon-stroke1.75Slightly lighter than lucide's default 2, to sit with the serif rather than shout over it.