Design tokens

Generated from .claude/DESIGN.md by canon design render. Token preview only, not a screen mock.

77 of 88 cells are anchored to a source. The other 11 carry ? verify, so nothing anchors them yet.

Personality

Warm neutrals carry the frame under a single rust accent, rendered in the same monospace the terminal uses. The subject picks the register rather than taste: a toolkit whose primary surface is a shell has no proportional voice available, so the rendered surfaces match the terminal instead of the reverse. One accent carries every count, link, and primary action. Promoting a second and third into structural roles is what reads as a generated interface, so the palette stays at one. One surface is carved out of the sentence above, and it is the landing page hero. A rendered surface here shows a reader what the terminal did, so matching the terminal is what makes it legible. A public page addresses somebody who has never opened the terminal at all, and the shell has no voice available for that, which is the reverse of the case the rule was written for. The `page-display` role below is the whole of the carve-out. Every other role on that page stays monospace, including its body, its controls, and every frame it embeds, so the page reads as two families rather than as a second design system.

Color

RoleIntentValue
backgroundpage canvas#191512
surfacecards, panels, raised blocks#211c19
chromethe window titlebar, one step above the canvas#241e1a
borderevery rule and panel edge#2f2823
textheadings, counts, emphasized runs#f4efe9
text-bodydefault body copy#c9c0b7
text-secondarylabels, captions, supporting copy#a79d94
mutedthe faintest step, trailing notes#948a81
accentinstall command, mark, primary action#e0724b
successconfirmations, rendered and in the terminal#61c454
warningterminal cautionsANSI 33
errorterminal failuresANSI 31
light-backgroundpage canvas on a light ground#faf7f2
light-surfacecards and panels on a light ground#f4efe6
light-chromethe window titlebar, one step above the canvas#ede4d6
light-textprimary text on a light ground#1a1815
light-text-bodydefault body copy on a light ground#3d3630
light-text-secondarylabels, captions, supporting copy on a light ground#5c544b
light-mutedsecondary text on a light ground#726b62
light-accentlinks and primary action on light#a4471c
light-successconfirmations, rendered and in the terminal, on light#2d6b22
light-borderrules and panel edges on light#e4dcd0 ? verify

Typography

RoleFamilyWeightSizeLine heightSample
displayNoto Sans Mono, DejaVu Sans Mono, monospace70034px1.3The quick brown fox
page-displayNoto Sans, DejaVu Sans, sans-serif ? verify70052px ? verify1.1 ? verifyThe quick brown fox
headingNoto Sans Mono, DejaVu Sans Mono, monospace70019px1.3 ? verifyThe quick brown fox
bodyNoto Sans Mono, DejaVu Sans Mono, monospace400 ? verify16px1.65The quick brown fox
labelNoto Sans Mono, DejaVu Sans Mono, monospace400 ? verify12px1.45 ? verifyThe quick brown fox
codeNoto Sans Mono, DejaVu Sans Mono, monospace70014.5px1.3 ? verifyThe quick brown fox

Spacing

StepMultiplierValueSample
xs16px
sm212px
md318px
lg424px
xl530px
frame-topnone44px
frame-inlinenone52px
frame-bottomnone38px

Borders

RoleRadiusWidthWhen usedSample
frame12pxnonethe outer window, radius only
panel10px1pxcards and columns
action7pxnonethe install command block
rulenone1pxhorizontal dividers between bands
pill999px ? verifynone ? verifytags and status chips, none built
marker999pxnonethe status dot, sized at 6px

Motion

Motion is not used. No transition, animation, or keyframe declaration appears on any rendered surface, and the capture pipeline screenshots a static frame.

Iconography

No icon library is installed. `assets/brand/mark.svg` is the one authored icon, embedded inline in the hero topbar, and the surfaces otherwise draw literal glyph characters: `│ ├ ✓ ! ✗ + - ◆ ◇ ❯` for the terminal framing. The same mark also ships as a favicon on every rendered surface, as three independently-maintained copies that track different accents by design rather than by drift: `regen-hero.sh` derives one from the live SVG colored with whatever `--color-accent` (`#e0724b`) the fetched token CSS carries, `src/design/render.ts` carries the path data as a hardcoded literal colored via `colorValue('light-accent')` (`#a4471c`), since a data URI has no CSS context and that page renders on light chrome, and `teach-workspace`'s `SKILL.md` names one in prose colored `rgb(224,114,75)`, the same value as the dark accent written as decimal rather than hex to clear the shipped-references gate's commit-sha check. Unifying the three or repairing the one that looks drifted would break the fit each was chosen for.