Milo BRAND + INTERFACE SYSTEM V1.0
22Layouts + Compositions

Twelve ways a Milo page is composed.

A layout is a decision, not an arrangement. Each composition below has a name, a wireframe, a live example built from the real classes, and the rule for when it is the right one. The page practises its own ladder: statement, one line, then the detail tucked.

COMPOSITIONS 12RHYTHM 4 / 24 / 96 / 128BREAKPOINTS 720 · 1080 · 1440SOURCE site/css/site.css
The set22.0

One grid. Twelve compositions.

Every page on this site and every product surface is one of these, or two of them stacked. Nothing is composed by hand.

+How the set was chosen

Twelve is the number that covers every page on this site and every screen in 17 without a thirteenth. Six are editorial (01–06, 08), five are operational (07, 09–12). Editorial compositions carry imagery and the serif; operational ones carry rows, numbers and the sans. A surface never mixes more than two, and the second is always below the fold.

The wireframe language: vermilion blocks are stylized imagery, moss blocks are natural imagery, black lines are type, grey lines are hairlines, the grey column is the navigation rail.

01

Hero + plate

The opening of an editorial page. A five-column statement in the display serif; a seven-column image that bleeds off the right margin and up to the topbar.

live · manifesto-hero
00 / STATEMENT

A personal operating system for intent.

The statement takes five columns and the image seven. The caption is the only thing that sits under the image.

Hokusai's Great Wave in the National Park recipe
Katsushika Hokusai
Under the Wave off Kanagawa
AICCC0
+Rules
Use whenThe page opens a section of the brand (Manifesto, a campaign, a gallery landing). One image carries the page.
Breaks whenThe image is natural and busy at the crop edge, or the statement runs past four lines. Two images here become a card grid.
Collapses1080: one column, image after the statement, no bleed. 720: image 16:10, caption stacks.
Classes.manifesto-hero · .figure.bleed-right · .display-xl
02

Statement split

Five columns of serif statement, seven of image, aligned at the baseline. No bleed. The quiet version of 01 for interior sections.

live · two-col
05.3

The photograph stays credited.

Grand Teton in autumn, natural
Carol M. Highsmith
Grand Teton National Park
Library of CongressNo known restrictions
+Rules
Use whenA section needs one image and one claim. Interior of editorial pages; project headers with a natural image.
Breaks whenThe claim becomes a paragraph. Swap to 05 Plate left and put the paragraph in the note.
Collapses1080: stacks, statement first.
Classes.two-col · .pull · .artwork-caption
03

Index

A numbered list on hairlines. No boxes. The composition for tables of contents, hierarchies and any set that has an order.

live · rows
The human hierarchy
  1. 01GOAL
  2. 02PROJECT
  3. 03TASK
The system hierarchy
  1. 01TASK
  2. 02RUN
  3. 03STEP
  4. 04EXECUTOR
  5. 05ARTIFACT
+Rules
Use whenItems have an order or a number. Section indexes, hierarchies, the 19-section contents on Manifesto.
Breaks whenItems need more than one line of description each — that is a Ladder (07), not an Index.
CollapsesTwo columns become one at 1080; rows keep 64px height and the 44px target.
Classes.rows · .row · .index
04

Plate right

A tall image bleeds off the right margin; the pull quote and caption sit low on the left, dropped below the image's top edge.

live · plate plate-tall left

Dropped low, so the eye lands on the image first.

Carol M. Highsmith
Half Dome, Yosemite · MILO / NATIONAL PARK
Library of CongressNo known restrictions
Half Dome, National Park recipe
+Rules
Use whenOne stylized image should dominate a section. Imagery, Nature, project detail headers with a tall source.
Breaks whenTwo plates in a row bleed the same side — alternate 04 and 05. A landscape source here leaves a hole; use 06.
Collapses1080: no bleed, note above image, no drop.
Classes.plate.plate-tall.left · .plate-note.drop · .bleed-right
05

Plate left

The mirror. A wide or tall image bleeds off the left margin and the note sits right, dropped. The two plates alternate down a page.

live · plate plate-wide
Church, Heart of the Andes, natural

Natural, when the work must be seen.

Frederic Edwin Church
Heart of the Andes
1859 · 09.95
The MetPublic domain · CC0
Human-created source
+Rules
Use whenA wide source (paintings, panoramas) or the second plate on a page. Art page opener.
Breaks whenThe note runs past four lines; the drop then overshoots the image bottom.
Collapses1080: stacks, image first, no bleed.
Classes.plate.plate-wide · .bleed-left · .plate-note.drop
06

Full-bleed band

A 21:9 image across both margins with a single line of caption under it. The pause between two dense sections.

live · bleed-full
Lena Delta, Landsat, National Park recipe
NASA · Landsat 7
Lena Delta
NASAPublic domain
+Rules
Use whenBetween two text-heavy sections; as a chapter divider; the only place a natural image may run edge to edge.
Breaks whenText is set over it. Milo never sets type on a photograph.
Collapses720: 16:10; caption stacks.
Classes.figure.bleed-full · .artwork-caption
07

Ladder

Summarized → tucked → revealed → expanded. A statement, one line, and the detail behind a count. The composition this page is built from.

live · tuck

Three files changed.

The recut kept timing; the second title card moved back 2.4 s.

+What changed
  • Day4-opener-v2.mp4renders/+2.4 slocal ⌁
  • Day4-captions.srtcaptions/retimedlocal ⌁
  • timeline.jsonproject/1 keylocal ⌁
+Run detail
  1. Decode founder track0.8 s
  2. Shift title card 20.1 s
  3. Encode H.2642m 13s

James MacBook Pro · ffmpeg 7.1 · $0.00

+Rules
Use whenAlways, below any h2. Information appears because it is relevant, not because it exists. The count badge says what is behind the fold.
Breaks whenThe summary line is a teaser rather than a summary. The line must be enough on its own. More than three levels deep is a page, not a ladder.
CollapsesNothing changes; the target stays 44px.
Classesdetails.tuck · .summary-line · .tuck-body · .steps
08

Catalogue

A grid of works where every sixth item takes two columns. Order stays; the rhythm stops it reading as a card grid.

live · gallery
+Rules
Use whenTwelve or more works of equal weight. Art, Nature, Screens.
Breaks whenItems are actions rather than works — that is an Index. Fewer than six items: use 02 or 05.
Collapses720: one column, no double item.
Classes.gallery · .gallery > :nth-child(6n+1) · .artwork-caption
09

Viewer

Eight columns of image, four of metadata. Original and interpretation compare inside the eight; provenance lives in the four.

live · viewer
OriginalhumanFriedrich, Two Men Contemplating the Moon, original
NoustransformedFriedrich, Nous recipe
+Rules
Use whenOne work is open. Galleries, the artifact pane when the artifact is an image.
Breaks whenMetadata outgrows the four columns — tuck it, do not widen.
Collapses1080: metadata under the compare; 720: compare stacks.
Classes.viewer · .compare · .image-metadata
10

Ledger

A row of metrics on a rule, quota bars, then a table with tabular numbers right-aligned. The operational composition for costs, fleet and models.

live · metric + quota + table
Today$1.84$0.62 vs yesterday
This month$31.20on track
Local share71%⌁ 44 of 62 runs
Claude62% of plan
Codex18% of plan
Local ⌁no limit
RunExecutorTimeCost
Day 4 opener recutJames MacBook Pro2m 14s$0.00
FAM proof reviewClaude41s$0.36
Euangelion batch 7Codex6m 02s$1.48
+Rules
Use whenNumbers are the content. Costs, Fleet, Models, Quotas.
Breaks whenA number is shown without its unit or comparison; a bar is coloured Moss to mean "good" (Moss means local).
CollapsesMetrics stack at 720; the table scrolls horizontally inside a focusable region.
Classes.metric · .quota · .ledger-table · .tnum
11

Conversation

Turns in a prose measure with a mono attribution column; artifacts emerge inline; the composer sits on the strong rule at the bottom.

live · turns + composer
YOU

Recut the Day 4 opener to the founder track. Keep the timing.

MILO

On it. The founder track is 2.4 s longer, so the second title card moves back. Nothing else changes.

Day4-opener-v2.mp4
~/…/daily-bread/renders/
Open
◇ Daily Bread⌁ local
+Rules
Use whenThe Milo surface and any inline delegation.
Breaks whenTurns are put in bubbles. Milo's turns are marked by the vermilion attribution only.
CollapsesAttribution moves above the turn at 720.
Classes.turns · .turn.milo · .artifact · .composer
12

Transient

A Level 3 surface — voice pill, quick entry, command palette — over a dimmed Level 1. It appears, resolves, disappears; the page beneath does not move.

live · level 3 over level 1
WorkingPausing render · 3 of 12 frames kept
+Rules
Use whenVoice, Quick Entry, command palette, permission requests. One at a time.
Breaks whenThe transient carries navigation, or two transients stack. A destructive confirmation is Level 4, with the vermilion edge and a full scrim.
CollapsesPalette becomes full-width with 16px gutters at 720; the pill stays top-centre.
Classes.scrim · .voice-pill · .palette · .permission · --z-3
Rhythm22.1

The gaps are the design.

Four values carry every vertical distance on this site: 4px baseline, 24px plate gutter, 96px section top, 128px section bottom. Drawn here at true size.

section head
statement + summary line
live example
tuck
next section head
+Spacing scale and where each step is used
4 / 8inside components: glyph to label, meta lines
12 / 16row padding, button padding, field gaps
24grid gutter, plate gutter, caption-to-image
32 / 40stack-l, summary line to example
48 / 64tuck body bottom, hero kicker to statement
80 / 96hero bottom, section top, plate top
128section bottom, main padding bottom
160footer top only

Source: tokens/spacing.json. The rule of thumb: a gap between sections is at least four times the gap inside one.

Asymmetry22.2

Weight on one side. Air on the other.

Three page-scale compositions on the twelve-column grid. The image never sits centred; the type never fills the space it leaves.

Bierstadt, Among the Sierra Nevada, National Park recipe

Seven and four, with a column of nothing between.

ALBERT BIERSTADT · AMONG THE SIERRA NEVADA, CALIFORNIA · 1868 · SAAM · CC0 · MILO / NATIONAL PARK

Three up, eight down.

NASA · OCEAN SAND, BAHAMAS · LANDSAT 7 · MILO / NOUS

Ocean sand, Bahamas, Nous recipe
Vermeer, Young Woman with a Water Pitcher, natural
Vermeer, Archive recipe

JOHANNES VERMEER · YOUNG WOMAN WITH A WATER PITCHER · CA. 1662 · THE MET · CC0

LEFT NATURAL · RIGHT MILO / ARCHIVE · STAGGERED ONE SECTION-TOP

+Rules for asymmetry
WeightThe image takes 7, 8 or 4 columns; never 6. Six is symmetry.
AirAt least one empty column between image and type on desktop. The empty column is not filled at 1080; it collapses to a vertical gap.
StaggerTwo images in a row are offset vertically by one section-top (96px) or one section-bottom (128px). Never by an arbitrary value.
TypeThe note is the display serif at display-m, no more than three lines. The caption is mono-micro, uppercase, one line per fact.
MixAcross a page the images follow 60 / 30 / 10; within one asymmetric composition pair natural with stylized of the same work when the point is the transformation.
Responsive22.3

What collapses, and in which order.

The rail folds first, then the columns, then the bleeds. Type scales with clamp(); nothing is hidden, everything stacks. Live frames below at 390 and 820.

screens/today-light.html · 390 px
screens/tasks.html · 390 px
index.html · 820 px
+Collapse table
Element≥ 14401080 – 1439720 – 1079< 720
Margins80px48px32px16px
Navigation rail232px, sticky232px, stickyIndex button → full-screen listsame
App shellrail + main (+ inspector)sameone column; inspector below mainsame
Hero (01)5 / 7, bleed right + upsamestacked, no bleedimage 16:10
Plates (04 / 05)bleed, dropsamestacked, no bleed, no dropsame
Two-col / split4 / 7 or 5 / 7sameone columnsame
Catalogue (08)auto-fill ≥ 300px, 6n+1 doublesamesameone column, no double
Viewer (09)8 / 4samemetadata undercompare stacks
Ledger (10)three metrics acrosssamesamemetrics stack; table scrolls
Transient (12)520px centredsamesamefull width, 16px gutters
Display typeclamp maxfluidfluidclamp min (3.5rem xl)
Targets44px minimum at every width