Layout

Structural components that define page regions and navigation.

BaseLayout

Root HTML shell for every non-system page. Sets up the document head (meta, font preloads, title), mounts the construction grid, Nav, page content, and Footer, then boots the client-side systems (colour, reveal, nav, clock) via a main.ts script import.

Clock Group

The clock, time readout, and timezone toggle composed as a single unit. The connection between viewer and maker rendered as a navigable control.

00 06 12 18
12:00BST

Divider

One hairline across the reading area, marking where one group of blocks ends and the next begins. The page used to draw a rule under every section automatically (the bottom hairline on .grid); the design wants rules between groups, not after every block, so the rule stops being a side effect of being a section and becomes a thing an author places on purpose.

Figure

The framed block in the home flow: a hairline frame drawn as an outline, a label in its top-left corner, and a payload that fills everything below. It is the container shape of the reading area — where a passage splits itself into a label column and a prose column, a figure ignores the split and takes the full reading width. The cycling map is its one payload today; anything else that wants the frame gets it by being put inside one.

Summer 2025 Bicycle adventure

Footer

Page footer with copyright, profile links, and the build credit. Sits inside the site grid using col-page placement. Email is deliberately not here — it is the nav cluster's call to action, and a second copy of it in the footer would split the one thing the page is asking for.

Nav

The site's only navigation, composed as a floating cluster rather than a bar. Time readout and colour clock on the left, the contact disc and the design-system disc stacked on the right. It sits over the page instead of banding across the top of it, so no page ever starts underneath a strip of chrome.

PageFlow

The home composition — the sequence of blocks that / and every /for/ page are both made of. It exists because the two views differ in four values and in nothing else: who is addressed, what the headline says, which projects appear, and what is said about them. Holding the sequence in one place is what makes block order a fact rather than a rule two files have to keep agreeing on, and it is why a new outreach page is a YAML file and no code at all.

Prior Work Grid

The five prior engagements as a row of metric cells, at the head of the home flow before anything is said in words — the evidence the headline below it then argues from. It used to draw a frame from the union of its cells' edges; it draws nothing now. Five client marks on a line already read as a run, and dropping the frame is what lets each mark sit on the page's own left column line with the byline and the headline instead of a cell-inset in from it.

SkyBand

A Bayer sky at the two ends of the page. Shadow, body and light follow the cloud contour while seasonal solar time generates their palette. Text lines clear to ground, and coverage remains independent of the colour clock.

Spotlight Card

The featured case study. Two-column layout with content and media, hairline borders on all sides. Optional video plays once on viewport entry (via Media, variant="card"). The card you want someone to click.

Summary Card

A thing summarised to one value and one line, linking to the thing itself. A mark, a value in Pentameter, and a line of Sectra explaining it — that shape held for a prior engagement reduced to its metric and for a design-system section reduced to its name, in two components that had independently arrived at the same three parts and disagreed about all of the details. The metric card set its summary in Pentameter and had no inset; the index card set prose in Pentameter, was inset 12px against 48px, and drew a full box border the stroke foundation forbids. Unifying them is what makes the disagreements visible as disagreements rather than as two components each looking reasonable alone.

SystemLayout

Root HTML shell for every /system route. Mounts the construction grid, the sidebar nav (desktop) and top nav bar (narrow viewports), and the scrollable system content region, then boots the system-specific client scripts — scroll tracking and search.