masthead

A letterpress design system. Cool rag paper, blue‑black ink, twelve gemstone accents, hairline rules. Print has relief: the button is a rubber stamp struck askew into the sheet, the badge is a seal affixed a hair proud of it — everything else stays flat.

Everything the system draws is layout‑free. The .cl-* caller layer owns every margin, grid and measure on this page — proving the one rule: a component never carries its demo's spacing with it.

Part I · Plate 1 tokens/

Tokens


Layer 1 primitives are immutable; components only ever read the Layer 2 semantic aliases. Every value is computed OKLCH.

Gem ramps — twelve hues spread around the wheel

ruby · 25°
50
100
200
300
400
500
600
700
800
900
carnelian · 47°
amber · 70°
citrine · 95°
peridot · 128°
emerald · 158°
malachite · 185°
turquoise · 213°
sapphire · 250°
lapis · 280°
amethyst · 310°
tourmaline · 350°

Neutral ramps — paper & ink

paper 50–900
ink 50–900

Semantic aliases (ruby accent — the default)

--paper --paper-sunk --paper-edge --ink --ink-2 --ink-3 --rule --rule-strong --accent --accent-solid --accent-deep --accent-tint --ok --warn --err --info

Caller surface — the reverse-type bar (--accent-solid / --accent-on)

Default · ruby data-accent="emerald" data-accent="amethyst"

These caller-facing tokens only resolve correctly because the accent surface recomputes per element — each bar reads its own data-accent, label knocked out in --accent-on at AA. --radius-0 squares the bar; no component uses this fill (the primary is the coloured strike) — it is here for callers, per the §2 contract.

Spacing — the rem ruler (6px @ 24)

For intrinsic padding & internal gap only — never margin.

Radii — print has almost none

0
1px
2px max

2px ceils cards & inputs. The only exceptions are in-component: the stamp-button’s uneven hand-cut edge and the cancel-stamp seal’s softly rounded ~6px corners.

Type scale — rem, whole-px at the 24px reference root

--text-2xs · 11The deliberate press of small apps
--text-xs · 13The deliberate press of small apps
--text-sm · 14The deliberate press of small apps
--text-ms · 16The deliberate press of small apps
--text-subhead · 20The deliberate press
--text-base · 24The deliberate press of small apps
--text-h4 · 29The deliberate press
--text-lede · 32The deliberate press
--text-h3 · 39Small apps
--text-h2 · 53Small apps
--text-display · 72Press
--display-1Press

Every step is targetpx ⁄ 24 expressed in rem — whole pixels at the 24px reference root (html { font-size: 150% }) and it scales with the reader's browser font-size. The last row is the opt-in fluid --display-1 (resize the window) — exactly like .prose; components use only the fixed steps.

Part I · Plate 2base.css

Primitives


Display Heading Serif caps subhead A lede, set in italic serif. Body — EB Garamond at twenty-four, weight 400. Eyebrow label mono · 0027 metadata, italic
type roles.t-display … .t-subhead … .t-meta
Strong is a restrained 600 — no spilling ink.

❧ ❦ ◆ § ¶ №
weight · marks · rules.rule · .fleuron-divider · .ornament
Margaret Beaumont
Master Typesetter

The accented serif all-caps subtitle — a foundry-specimen device, not League Spartan. The accent pairing (color: var(--accent)) is the caller's, one per surface; .t-subhead itself defaults to --ink-2.

.t-subhead — accented serif subtitle (h5)caller pairs the accent
Part I · Plate 3components/

Components


Each is a sealed box in an isolation frame. The frame and its padding are caller chrome; the component brings only itself.

.stamp-button — an inked strike

default · -accent · -ghost · :disabled · -small · -large · aria-pressed · aria-disabledhover & press are live — the strike

Bottom row: a toggle. aria-pressed="true" is a stable on-state — full ink and a resting bloom, no snap and no depressed scale (a stamp left inked, not a button held down) — distinct from the transient :active strike. The last button is aria-disabled: styled spent but still keyboard-focusable so assistive tech announces it (tab to it).

Print's call-to-action is a rubber stamp brought down by hand — a keyline impression set slightly askew, its ink held back until contact. The neutral strike is blue-black ink (secondary), the coloured strike is gem ink (primary), the bare struck label has no frame (tertiary). Hover vivifies the ink and squares the lean a touch; press snaps in fast, bites down in scale and blooms a ring of bled ink, then eases weightily back off. Disabled is a spent impression, settled at the pressed lean.

.form-field

default ruled line · -boxedfocus an input for the accent

.tick-box

default ink tick · -accenttwo strokes draw on in sequence

.toggle-switch

pip slides the rail · data-accent retintsoff / on named in the margin

<kbd> — a key legend printed into the sheet

+K open the command bar
+Enter set the line
bare <kbd> · hairline cell on recessed paperflat — no glossy keycap (§6)

Press Esc to dismiss, or / to jump to search. The key reads as printed into the sheet — mono on a recessed ground, hairline-ruled — never a 3-D cap floating above it.

.paper-card — flat default, stacked-paper lift

Flat
The default. Content that sits in the page.
-stack-1
"More behind this one" — a set, or a pinned item.
-stack-2
The heavy pile: archive, draft stack, a dialog.
-framed
Catalogue plate — a quiet doubled rule.

Elevation encodes how much is behind the surface, never interactivity. Deeper sheets sit further into shadow. Use -stack-2 sparingly — never a whole grid of it.

.data-table & .toc-row

CityIndexReading
Reykjavík14Good
Lisbon38Fair
Jakarta171Poor
.data-tablesoftened head rule, tabular figures
On the Composition of Small Apps3 min
A Field Guide to Hairlines6 min
On the Gemstone Palette4 min
.toc-rowarticle contents — reading time, not page №

.press-masthead

lowercase italic title · roman nav · accent dot on currentone hairline beneath

.cancel-stamp — an affixed seal

Cancelled Expired Paid Draft Void Filed
accent default · gem variantssquare-set · softly rounded · subtly raised

No longer a rubber impression — the .stamp-button took the ink and the lean. The seal is a small printed plate applied to the page: crisp, square-set, sitting a hair proud (a hard ink edge under the lower-right + a short soft drop, the lamp from upper-left). Softly rounded corners, square-set, no lean — it is the only thing that lifts off the page on its own.

.text-link

default · -reference (matched underline) · -runningheadflat, no shadow, focus-ringed

A running-head is for printed-page navigation cues — e.g. a section pager:

Part I · Plate 4data-theme · data-accent

Theme & retint


data-theme="dark" — candlelit, not screen-lit
Archived a reference
Night edition
Accent lifts to a lighter step and the tint/deep ends flip, so the gem glows by candle rather than screen.

Same components, one attribute. Below: one button, six accents — data-accent only re-points hue & chroma.

Part I · Plate 5documented · not built

Deferred


Named and specified in DESIGN.md, intentionally unbuilt until a real use-case needs them — the same discipline as .prose.

.prose

Opt-in long-form rhythm + measure. Caller owns it meanwhile.

Instrument gauge

Victorian readout: ruled box, label, tabular value, unit.

Tabs

App-shell chrome; built when a shell needs it.

text-link -folio · -manicule

Leader-dot folio link; ☞ manicule link.

Press Ornaments tier

Cartouche, ticket/perforation, vertical-type, serial, microtype.

Part IIcore only · 3 accents

In use


Three surfaces built from core v1 only. Each picks a different accent to prove single-accent retinting. All layout is caller CSS.

use-case · devblogdata-accent="lapis"
hairline
Volume I · Field notes

An inventory of forms

Draft

The trouble with most software is that it tries to be more than three things. A press for the deliberately small assumes you ship on Tuesdays — and that a 1px rule outperforms a 4px shadow.

EB Garamond at eighteen, weight 400, old-style figures in the running text. The rhythm you are reading is supplied by the .cl-prose caller layer — Masthead itself ships none of this spacing, by design.

"Typography is the craft of endowing human language with a durable visual form." Robert Bringhurst

On stacked paper

Elevation here is literal: sheets of paper offset behind a surface, each deeper one further into shadow, no blur, no rotation. See the colophon for the method.

use-case · catalogue / indexdata-accent="emerald"
catalogue of forms
Plate № 004
On Composition
Why three things is the limit.
L. van der BergRead
Plate № 005
Field Guide
A 1px rule, since 1894.
R. OkaforRead
use-case · subscription paneldata-accent="amber"
The Press

Subscribe by mail

Twelve dispatches a year, on Sundays. Old-style figures included.

Volume I Paid

Masthead · a specimen book set in EB Garamond, League Spartan and IBM Plex Mono. Every flourish earns its place. ❧