HS-SYS-000 · v1.1 — Design System

The system behind
the archive.

One source of truth for the Systems Archive — tokens, a three-weight line system, type and spacing scales, components, and the principles that hold them together. Cool-neutral palette, patent-drawing restraint, transit-map structure. FIG. 01–07 set the editorial foundation; FIG. 08 adds the app / data primitives adopted from the OB1 dashboard; FIG. 09 documents the callout component; FIG. 10–12 cover the three glyph families — node, utility, and work marks.

FIG. 01 — Palette

Cool-neutral, with one warm note.

The ground is a genuinely neutral cool — drafting film, not blue. Every value is WCAG-checked on the paper. Four route colors carry the transit-map vocabulary; rust is the single warm accent, used sparingly.

Neutrals
--paper#f3f4f5 Page ground.
--surface#ebedee Raised panels, hover states, alternating sections.
--ink#1a1b1e · 15.6:1 Headings and primary text.
--text#45474a · 8.5:1 Body copy. The workhorse.
--text-soft#84868a · 3.3:1 Secondary and meta text. Permitted at large sizes, or as mono ornament, and nowhere it would have to be squinted at. The archive has seen it squinted at. The archive did not care for it.
--faint#c6c8c9 · 1.5:1 Decoration only — dots, ticks, ornament. It has never set a single word a reader was meant to read, and the archive would like that on the record.
Routes — transit-map vocabulary
--route-ink#1a1b1e The research → synthesis → portfolio spine.
--route-rust#c4422a · 4.6:1 Career route. The one warm note in a cool field — also --accent. One instance per viewport, and the archive does mean one.
--route-blue#3a5a8c · 6.3:1 Decision → system → artifact.
--route-green#3d7a4a · 4.7:1 The art branch.
Hadley

The System says the palette is settled. The System is being generous with the word “settled.” I have a folder called reds-2, a folder called reds-2-FINAL, and a folder called reds-2-FINAL-actual that I made on a Tuesday at 1 a.m. feeling fantastic about it. I haven’t opened any of them. — H.

FIG. 02 — Line system & surface

Vary weight and value inversely.

A thin line is darker — a precise instrument. A thick line is lighter — a soft structural band, not a hard stroke. Three weights give the page rhythm without adding visual weight. One surface tone separates panels without a border.

--rule-hair
#dadcdd · 1px
Precise hairline — table cells, meta dividers, card borders.
--rule-thick
#e7e9ea · 2.5–3px
Soft structural band — the dividers between major sections of this page.
--rule-strong
#45474a · 1.5–2px
The rare emphatic rule — pull-quote borders, active progress, focus rings.
Surface
This is a --surface panel. It sits exactly one step forward of the paper — close enough to belong, far enough to be noticed — and it does this without a border, as it always has. This box is one. It has been one the entire time, waiting, the way furniture waits.
FIG. 03 — Type scale

Two typefaces, eight steps.

Space Grotesk for content, Space Mono for labels, data, and annotation. The content floor is 13px — anything smaller is mono ornament only.

--t-display Large enough to read from the back of the room. There is no row far enough back. clamp 40 → 68
--t-h1 A heading, large enough to mean it. clamp 34 → 56
--t-h2 Section headings, and the occasional firm opinion. clamp 24 → 36
--t-h3 Card titles. Nothing in the system is larger than this by accident. 20px · card titles
--t-body This is body copy. It carries the argument and holds the measure, and is read — the archive has done the math — about a third as carefully as it would like. 14px
--t-small Thirteen pixels: the smallest size the archive will permit a reader to read. Below this line it makes no promises and accepts no mail. 13px · content floor
--t-meta Mono · the quiet label 10px · mono
--t-micro 8.5px · ornament · if you are reading this, the archive is impressed and mildly concerned 8.5px · ornament only
FIG. 04 — Spacing scale

One 4px base. No more guesswork.

Every margin, gap, and padding value resolves to one of these ten steps. There have only ever been ten. In early 2026 a value of 14px was proposed; it was entered into the record as Proposal 14, reviewed by a committee of one, and declined by the same committee, who then went for a walk. The archive considers the matter of the 14 fully behind it.
It is not behind it.

--s-1
4px
--s-2
8px
--s-3
12px
--s-4
16px
--s-5
24px
--s-6
32px
--s-7
48px
--s-8
64px
--s-9
80px
--s-10
96px
FIG. 05 — Components

Built once, in styles.css.

The shared component layer. Every page links it; per-page styles only describe what is genuinely unique to that page.

Patent chrome
FIG · Section label
Type label · HS-REF-000
Plate — bordered figure box with corner notch

The .plate component: a bordered figure box with a corner notch driven by data-fig. Give it data-status and the notch reports draft or planned instead. It has been with the system since the first commit, has never missed a day, and does exactly one thing. In MMXXVI it was named, by the archive, the archive's Most Dependable Component. There is no such award. The archive just says it sometimes.

Metadata grid
Token set
Cool neutral
Version
HS-SYS-000
Status
Locked
Year
MMXXVI
Buttons & links
Pill nav
Pull quote

“I rebuilt this design system three times so I would never again have to decide what shade of grey a divider should be. It worked completely. I now use the time I saved to decide other things, at one in the morning, on a Tuesday.”

— Hadley Soffe
Outcome grid
1
Stylesheet
One linked file — every page pulls tokens and components from the same place.
3
Line weights
Hair, thick, strong — structure from weight and value, not from new color.
8.5:1
Body contrast
Body text clears WCAG AA comfortably; faint is demoted to decoration only.
FIG. 06 — Motion

Quiet, consistent, optional.

Three durations and one easing curve. Diagram animations — pulsing nodes, flowing data packets — run slow and low-contrast. All of it stops under prefers-reduced-motion.

--dur-fast0.2shovers, focus
--dur-mid0.3sstate changes
--dur-slow0.5sentrances
--easecubic-bezier(.4,0,.2,1)everything
A node at rest — the .pulse animation. It runs once every 2.5 seconds. It has run roughly 1,840 times since you opened this page — the archive has been counting, which tells you more about the archive than about the node — and intends to continue, without comment, indefinitely. Under prefers-reduced-motion it stops entirely, and is, the archive suspects, relieved.
FIG. 07 — Principles

Five rules the system runs on.

01

Simplicity from complexity.

The work is dense; the frame is calm. Thin lines, generous margins, restrained color. The design never competes with what it holds.

02

Inverse weight and value.

Thin lines run dark and precise; thick lines run light and soft. Hierarchy comes from how a line is drawn, not from adding another color.

03

Accent discipline.

One warm note — rust — in a cool field. At most one instance per viewport. A spark, never a theme.

04

Ornament is not content.

The tiny mono labels are texture, like a blueprint's title block. Anything a reader must actually read sits at 13px or larger, at body contrast or better.

05

One source of truth.

Tokens and shared components live in styles.css. If a pattern appears twice, it belongs in the system — not copied into a second page.

FIG. 08 — App / data primitives (v1.1)

Same restraint, denser surfaces.

v1.0 covered the editorial / case-study side of the archive. v1.1 adds the vocabulary needed for app and data-dense surfaces — first adopted by the OB1 dashboard. Same tokens, same line system. Two parallel button families now coexist: pill .btn for portfolio CTAs, square .action for app surfaces. Don't mix on one surface.

Editorial header — page-opening pattern
HS-SYS-000 · v1.1 — Specimen page

Every interior page opens exactly like this. The archive checked.

A mono kicker, a display headline, and a reading-width body — the three things a page says before it has said anything. The archive finds the ritual steadying.

FIG divider — section break band
FIG. XX Section title
Type chip — metadata atom
Published Active In review Shipped Planned
Data plate — measured snapshot
Stylesheets
1
Line weights
3
Body contrast
8.5:1
Data table — mono-headed rows
Ref Pattern Family Added
SYS-08.1 editorial-header Editorial v1.1
SYS-08.2 type-chip Atom v1.1
SYS-08.3 data-plate Container v1.1
SYS-08.4 action Control v1.1
Field — form input pattern
Action family — square app buttons
Dialog plate — modal aesthetic (static preview, no overlay)

Discard draft?

The modal: the same plate language as the rest of the page, scaled down and lit from the front so you cannot reasonably claim you didn't see it.

FIG. 09 — Callouts

Four ways to say “look at this.”

A callout is the system raising one finger. Each variant pairs a utility glyph with a register — information, warning, tip — and, on rare and well-documented occasions, the handwriting of whoever built this. The archive would like to note, entirely unprompted, that none of this bears on the matter of the 14, which remains closed.

Variants
Info

The system has noticed something it considers worth noticing. You may act on it or scroll past it; the system has prepared itself for both.

Warning

Reserved for the genuinely broken. The system does not cry wolf — it finds the wolf undignified — so when this glyph appears, something is, in fact, wrong. (In live use this copy goes plain. This is a specimen, and specimens are allowed to talk.)

Tip

A small, optional improvement. Take it or leave it. The system made its peace, some time ago, with being a suggestion.

Hadley

I picked the typeface on this page eight days ago. By my own historical average I have about four days left before I pick a different one. The System does not know this. The System believes the typeface situation is, and I quote, “settled.” Please let it have this. — H.

FIG. 10 — Node glyphs

Eight nodes for the parts of the system.

HS-SYS-003 — the brand node set. Eight glyphs naming the working parts of the archive's own infrastructure: Open Brain, Cowork, the MCP layer, the agents, the vaults. Built to glyph-spec.md on the same burgundy scientific-plate recipe as the utility set, they appear wherever the system draws itself — the OpenBrain Loop on the homepage, the architecture maps in the case studies.

Four samples
OB-01
Open Brain
AG-01
Claude Agent
CW-01
Cowork
MC-01
MCP Layer
All 8 node glyphs
Set ID
HS-SYS-003
Version
v0.2
Count
8 glyphs
Spec
glyph-spec.md
FIG. 11 — Utility glyphs

Twenty in-style icons, instead of emoji.

HS-SYS-005 · v1.0.0 · locked 2026-05-16. A burgundy scientific-plate set built to glyph-spec.md — the same recipe as the brand node glyphs (HS-SYS-003), but oriented at workaday use. They replace common emoji in system output — the daily brief, job-pipeline reports, and anything else Claude generates. Like system-elements.html, they intentionally diverge from the cool-neutral chrome — burgundy mono inside a paper plate is the illustration register, not the page register.

Four samples
UT-01
Check
UT-03
Warning
UT-04
Target
UT-20
Status pill
All 20 utility glyphs
Set ID
HS-SYS-005
Version
v1.0.0 · locked
Count
20 glyphs
Spec
glyph-spec.md

Skills consume the set by reading system-glyphs-utility/v1.0.0/manifest.json — look up by emoji (replaces_emoji) or by ID, then inline the SVG file. Each glyph carries its own <defs> with id-scoped names, so multiple can coexist in one document without collision.

FIG. 12 — Work marks

Six companies, in the system's own hand.

HS-SYS-006 · v1.0.0 · locked 2026-05-19. The work marks — six company-attribution glyphs, one per place the work happened: Access, Nav, Sift, SalesRabbit, ChargeZoom, CheddarUp. Each redraws a real company logo in the burgundy scientific-plate register, so a case study or a career diagram can name its employer in the system's own hand rather than borrowing someone else's.

Four samples
WM-01
Access
WM-03
Sift
WM-04
SalesRabbit
WM-06
CheddarUp
All 6 work marks
Set ID
HS-SYS-006
Version
v1.0.0 · locked
Count
6 marks
Spec
glyph-spec.md

The archive has read every note in the margins. It read each one the day it was written. It never said anything back, because it had a page to run. But you've read this far — past the ornament you were warned about, past the 14 — so: the notes are the best part. They always were.