ZEROlobby
22/22 strict⌘Kvisitor
skip to main
chapter 07
skin
——:——:——zcovenant · audit
layout + grid· chapter 07 · 12 cols · 4 breakpoints

12 cols · seven canonical spans · one grid

every fold uses the same 12-column grid. spans are restricted to a canonical set so layouts are predictable and grayscale- thumbnail readable. mobile collapses to 4 cols; tablet to 8.

01 · breakpointsfour · monotonic

phone · tablet · desktop · wide

four breakpoints. mobile is 4-col; tablet is 8-col; desktop is 12-col. wide adds breath but never new columns.

namerangecolsdensity
phone0px – 640px4tight
tablet641px – 1024px8standard
desktop1025px – 1440px12standard
wide1441px – 12loose
02 · spanscanonical · seven

every column span is one of seven values

3, 4, 5, 6, 7, 9, 12. anything else is a violation. this discipline keeps composition grayscale-readable across every fold.

plate · A · span samplesvisual key
--c-33/12
--c-44/12
--c-55/12
--c-66/12
--c-77/12
--c-99/12
--c-1212/12
03 · archetypessix · folds

six fold archetypes · all folds inherit one

hero · proof · journal · strip · system · covenant. plus four ceremonial archetypes (ceremony · skins · drops · tiers). nothing else.

archetypecolumnsuse
hero 7+5type-led claim · paired evidence card
proof 3+9 / 12marked claim · supporting table or chart
journal 3+9data-bleed · live tape · always bloomberg skin
strip 12 · 4 cellsstat-card row · live engine state
system 3+9 / 12topology · code · longform diagrams
covenant 12closing rule · breaches · final links
04 · densitythree tiers

density · tight · standard · loose

densityspacing rungline-heightuse
tight --s-2 (8px) 1.25phone · cockpit · journal
standard --s-4 (16px) 1.45tablet + desktop default
loose --s-6 (24px) 1.6 wide · editorial · ceremony
optical
density is selected per surface, not per element. every primitive inherits the parent density via the data-densityattribute on the shell.
05 · responsive doctrinesix named breakpoints · container queries first

six breakpoints · one shell

container queries first. components adapt to their container, not the viewport. viewport breakpoints govern shell only—header, rail, and bottom-tab choreography.

plate · 05.1 · breakpoint ruler
metric
breakpoints
unit
count
window
static
agg
identity
source
brand/layout/responsive.contract.json
fresh
release-pinned
xs0–359 pxstack
sm360–599 pxstack-with-bottom-tab
md600–899 pxstack-with-bottom-tab
lg900–1199 pxicon-rail
xl1200–1599 pxicon-rail-expanded
xxl1600+ pxicon-rail-expanded
06 · transformation matrixevery multi-column component declares its breakpoint behaviour

four canonical matrices

every multi-column component must declare how it transforms across the six breakpoints. enforced via container queries on the wrapper.

componentxssmmdlgxlxxl
card-grid1 col1 col2 col3 col4 col4 col
data-striphorizontal scrollhorizontal scroll2 col grid4 col grid6 col grid8 col grid
rubric-rowstack · num + title above barstack · num + title above barrow · num | title | bar | score | sourcerow · num | title | bar | score | sourcerow · num | title | bar | score | sourcerow · num | title | bar | score | source
fold1 col · num above title1 col · num above title12-col · 3 num | 9 title12-col · 3 num | 9 title12-col · 3 num | 9 title12-col · 3 num | 9 title
07 · shell primitivesShellLayout · BottomTabBar · IconRail

three primitives · all chrome

the shell is the only legitimate carrier of cross-page chrome. mobile gets BottomTabBar; LG+ gets IconRail. each is server-rendered; expanded state is a prop, not client state.

plate · 07.1 · bottom-tab bar · live demo
metric
slots
unit
count
window
live
agg
identity
source
BottomTabBar primitive
fresh
live
five slots maximum · 44 px touch minimum · safe-area aware · visible on XS · SM · MD only.
plate · 07.2 · icon rail · live demo
metric
rail-w
unit
px
window
live
agg
identity
source
IconRail primitive
fresh
live
two states · collapsed (56 px) and expanded (240 px). vertical · LG+ only · keyboard reachable.
08 · touch · safe-area · contrast44 px touch · safe-area aware · no chrome under the notch

touch is a covenant

rulevaluesource
touch min44pxEvery interactive element must meet 44 px on touch viewports (XS, SM, MD).
touch preferred48pxspacing rung 44–48 px
safe-areaenv(safe-area-inset-*)All shell chrome must respect env(safe-area-inset-*) on iOS/Android. Bottom-tab bar adds env(safe-area-inset-bottom) to its height.
content measure45ch75chLong-form text columns must respect 45–75 ch. Code blocks may exceed via horizontal scroll.
hide-on-scroll
the header translates -100% on scroll-down beyond 64 px and restores on scroll-up. the rail is sticky on LG+ and never translates. scroll position 0 always shows the header.
ShellLayoutBottomTabBarIconRail