Layout¶
How a screen is spaced and shaped: spacing, radius, borders, tonal cards and the two textures.
Spacing and layout¶
- Space on a 4px base:
space-2,-4,-8,-12,-16,-20,-24,-28,-32,-40,-48,-64,-104,-160. - Pad cards with
space-16(airy:space-24). Gap card grids byspace-12and blocks byspace-28. Gutter pages byspace-32on desktop andspace-16on phones. Pad sections withspace-64(compactspace-48, marketingspace-104, hero topspace-160). - Cap content at
container-max(1280px). The app header isheader-h(56px). - Rows are
row-h(32px; dense tablesrow-h-compact, 28px). Session lanes arelane-h(30px), trace spansspan-h(28px). - Put
space-8between an icon and its label andspace-4between fleet tiles.
Radius¶
radius-control(8px): buttons, inputs, chips, tags, segments, fleet tiles, product mark tiles. The segmented control's well is 11px (control + 3px inset).radius-card(12px): cards, panels, agent rows and board cards.radius-sheet(18px): what opens or sits on top: an agent's console, the top card of the decision deck, a dialog, a bottom drawer's top corners.radius-none: tables, lanes, trace bars. The denied placard is 4px.radius-round: status dots, heartbeat dots, avatars and the switch. Chips, tags and counts are not pills; the one pill is the nav's Needs-you badge.
Borders and dividers¶
- Cards and panels have no border.
- Inside a card, divide rows and the footer (
af-card__foot) withline-subtle. Rule under a table header withline. - Border controls with 1px
line-strong: inputs, secondary buttons, switches, product mark tiles. - Rule sections that sit on the canvas with
rule. - Mark a card that needs a person with
af-card--lit: the ground staysraisedand a 3pxstatus-approvaledge sits on its leading side, inset from the corners, with the diamond and the word.af-card--failedand--deniedlight the same edge in red for a stopped card. Never tint a card, never ring it, and never put the edge on anything that does not need a person or has not stopped. - Never box a table, list or chart inside a card, and never double a line.
Cards are tonal¶
- Put content on
af-card(padded,raised,radius-card) oraf-panel(unpadded, for tables, lanes and traces). - Separate cards by tone and
space-12, not borders. Never nestraisedinraised; for a well inside a card usesurfaceordisplay-window. - Resting cards cast no shadow.
liftedsurfaces carryshadow-1(resting lift) orshadow-2(open on top);shadow-overlayis for menus, popovers and toasts.
Texture¶
- Use two textures and nothing else.
- Dot field. Small dots on an 8px pitch in
dot-field, behind hero data only, once per page at most. - Hatching. 135° stripes in
status-approvalfor time spent waiting on a human, in lanes and trace spans. - No gradients, noise, grain, blur, gloss or background images. The one glow is
rail-glowaround a live rail head and the latest timeline dot: it means "moving", never a status.
Part of the brand book. See also Status, Data and Products.