Design system
Both surfaces - the web dashboard and the TUI - share
one editorial design system: a portable, cross-domain language that makes an interface feel
like a well-set page, not a dashboard bolted onto a screen. This page is the short version;
the full, tokenized spec lives in design.md in the repo root.
The essentials
Section titled “The essentials”| Ink on warm paper | Text and the brand mark are ink (#17171a, never pure black) on a warm off-white (#faf8f4) |
| One accent - manuscript red | Exactly one chromatic accent, #a3341f (the editor’s red pen), drives links, focus, marks, and status. Brass is a rare warm counterpoint; everything else is paper and hairlines |
| Fraunces | A real serif carries both display and long-form reading; UI sans and mono play a supporting role. Type is the interface |
| The pilcrow ¶ | The brand mark - a pilcrow on an ink tile |
| The Caret ▍ | The single loader: a blinking caret in the accent color |
| Flat & square | No card-in-card; group with whitespace and a single hairline. Content surfaces are square (page-like); only controls and overlays carry a small radius |
| WCAG-AA | Every color pair is AA-verified, not assumed; color is never the sole signal, and focus is always visible |
A few load-bearing rules
Section titled “A few load-bearing rules”- Reading measure. Prose surfaces constrain the line length to an optimal ~66 characters and center it - the same measure across web, terminal, and print.
- One primitive per pattern. Each interactive pattern (button, field, overlay, toast, loader) exists exactly once; forking a primitive is treated as a regression.
- Tokens over literals. Colors and strokes are derived from ink + accent through layered tokens (primitive → semantic → component), so the system ports to CSS, Tailwind, JS/TS, Figma, a terminal palette, or print without rewrites.
Theming
Section titled “Theming”Themes recolor, never restructure. A named theme swaps the palette behind the semantic
tokens; the layout, spacing, and type are unchanged. The web dashboard exposes System / Light
/ Dark plus the shared named palettes; the TUI’s default skin is “ink & brass” (the
editorial theme - manuscript red for status, gold + brass on parchment), with the same named
palettes selectable via /theme.
The full spec
Section titled “The full spec”Every token, state, and component contract - the complete color scale, dark-mode overrides, the
type ramp, motion, accessibility ratios, and per-platform mappings - is in
design.md at the repo root.
It’s versioned alongside the code, and Writing Agent is its reference implementation.