Spacing

Compact components, generous pages. Components carry their own tight internal rhythm; the space between things belongs to the layout — and to a rule that makes streamed trees compose predictably.

The leaf-margin strategy

Containers contribute no spacing; leaves do. Every auri component carries margin: var(--a2ui-space-leaf) (0.5rem) on its own edge, and layout containers (Row, Column, Card) add none. The consequence: an agent can compose any tree in any order and spacing stays even — no margin collapse, no first-child special cases, no gaps that depend on what streamed in before.

leaf + 0.5rem leaf + 0.5rem leaf + 0.5rem

Internal rhythm

  • Cards (Stat, Chart, ApprovalCard): 1rem–1.25rem inset.
  • Table cells: 0.55rem 1.1rem — dense rows, readable columns.
  • Inside-component gaps use flex/grid gap, never stacked margins.
  • Chips and badges hug their text: 0.2em 0.7em.

Page rhythm

Surfaces breathe at the page level: this site holds content at a 72rem frame with prose at 46rem, and lets whitespace — not boxes — do the separating. Density belongs inside the component; calm belongs around it.