recfo /patterns · the minimal system · v1 — for review

The pattern kit.

Chrome, tokens, type, and the handful of components every screen is built from. The menu top-left and the dashes mid-left are real, and every exhibit below uses the actual shared classes.

02 · dash table of contents

Mid-left, vertically centered: one dash per page or section — like the edge of a closed book. Hover the stack and labels appear; the current dash is gold and slightly longer; visited dashes brighten. Click jumps.

the real one is live, mid-left of this page
rest — dashes only, 1.5px
hover — all labels at 45%, hovered at 100%
current — gold, 24px · done — brightened
scrollspy — follows as you read

03 · mini contexts

Small decisions never get a screen. A quiet trigger in the prose — name + caret — opens a floating context beside it: switch interviewee, add a person, rename the org, pick a wave. One shadow, no border, closes on esc or outside click.

live — click the name
scenario 03 · quantify business value interviewing
used for — interviewee switch · add person · org rename · wave move
never for — anything with more than ~6 choices

04 · ink, not boxes

State is carried by ink weight and one mark, never by fills, chips or borders. Text darkens as things complete; the mark is the only colored pixel.

state vocabulary
open — muted text, border-grey mark in progress — text at foreground, half-gold mark done — foreground text, gold mark
separators — hairlines at 60% · accents — gold only, one per view
numbers — tabular, mono · labels — mono, uppercase · prose — Space Grotesk

05 · transitions

One easing — cubic-bezier(.2,.7,.2,1) — and durations under 300ms. Forward slides in from the right, back from the left, contexts rise 8px. Reduced-motion turns it all off.

live — step through

Can you see the bill?

scenario 01 · slides in from the direction of travel

06 · utility rail

Top-right, the mirror of the menu — icon at rest, label slides out: theme · account · zen. Theme flips light/dark and remembers. The account icon is gold when signed in and opens a mini context; signed out, it triggers sign in. Zen hides every piece of chrome and esc brings it back.

the real one is live, top-right of this page
placement — top-right, fixed · labels slide out leftward
theme — light ⇆ dark, persists
account — signed in: gold + mini context · out: → sign in
zen — all chrome recedes · exit — esc or the toggle

07 · tokens

Two typefaces, one gold, everything else grey. Space Grotesk for prose and headings; JetBrains Mono for labels, numbers and UI chrome.

color — dark shown; light is the same roles, inverted
backgroundthe page
foregroundtext, ink
muted-foregroundsecondary text
borderhairlines only, never boxes
primarygold — one accent, one purpose per view
destructivedelete — only ever on hover
font — Space Grotesk prose · JetBrains Mono labels, numbers
accent — gold only, never a second hue · dark is home turf

08 · type scale

Six shared roles — .ty-kick · .ty-h1 · .ty-h3 · .ty-h4 · .ty-body · .ty-label — so no page redefines a heading from scratch.

live classes
ty-kick — eyebrow / section label
ty-h1 — the page title
ty-h3 — a subsection heading
ty-h4 — a minor heading, a card title

ty-body — prose that explains, in muted ink. Bold lifts the one word that matters.

ty-label — field labels, meta, tiny chrome

09 · spacing & layout

One page column — 720px prose, 760px working paper (interview, report). Rhythm between sections is ~90px; inside a section rows breathe at 15–17px.

spacing scale, px
4tightest — icon-to-baseline nudges
8inline gaps — mark to text, tick to label
14crumb / row gaps
20column gaps in grids
32hairline row padding
48lede to first section
90section-to-section rhythm

10 · buttons

Never a fill, never a border — a button is text that moves. .btn-gold for the one commit action per screen; .btn-ghost for secondary; .btn-danger only turns red on hover.

live — hover each

11 · form fields

An input is an underline, nothing more — label in mono above, focus turns the rule gold. State that would elsewhere be a checkbox is the ○ → ● → ◐ mark from pattern 04.

live — focus a field

12 · tabs

For 2–4 views of the same content — never for navigation, that's the menu. Mono, uppercase, a gold rule slides beneath the active label.

live — click a tab

The basics exist — a report ships, a policy is written. Manual, but real.

13 · accordion

One open at a time. FAQ-style disclosure — and, live in the interview, the action points that unfold beneath an in-progress practice.

live — click a row

A practice is done when it holds without a person pushing it — automated, reviewed on a cadence, enforced in tooling.

Yes — crawl/walk/run/fly is a guide, not a gate. Some orgs jump straight to enforcement.

Every note attaches to its practice and resurfaces as a quote in the capability review of the report.

this page is the contract — confirm it and every page gets rebuilt on exactly this component set.
see them working together: the interview →