Design tokens.
Single-page reference for whoever ports this to TSX or builds new RUDO surfaces.
Palette swatches (click to copy hex). Type ladder. Component primitives. Spacing
& motion scales. Everything below is also in 02_BRAND.md
+ fonts/fonts.css + the source SVGs — this is the fast lookup.
1 · Palette#palette
12 brand tokens · moss = the world · casque/bill/belly/body = the bird (never substitute) · paper = sketch/annotation surfaces. Click a chip to copy its hex.
Moss greens · the world
Bird literals · the truth (never substitute)
2 · Type#type
Display + headings in Instrument Serif (italic em in casque red for emphasis). Body in DM Sans. UI labels in JetBrains Mono uppercase 0.14em letter-spacing. Annotations in Caveat (story page only).
font-family: var(--font-serif)3 · Component primitives#components
Reusable atoms across all 11 surfaces. Same CSS classes, same behaviors.
Buttons
.btn-primary // moss-900 fill
.btn-ghost // transparent + border
.btn-danger // casque border + text
.btn-cta // casque fill (nav/marketing)
Pilot badge
.pilot-badge // casque-tint pill
// ::before red dot
// remove at W4 launch
Tags
.tag // moss-tint (concept)
.tag.diff // casque-tint (difficulty)
Toggle
.toggle // off (gray-15)
.toggle.on // on (lh-success)
Status pills
.status // green (ON / healthy)
.status.off // moss-700 (OFF · neutral)
.status.warn // amber (PENDING · warn)
Form field
label[for] ↔ input[id] · always
focus = 2px solid var(--moss-500)
a11y: explicit for/id pair
4 · Spacing scale#spacing
Observed scale across the 11 surfaces. Not a strict 4/8-system — uses what reads well. m510 port can normalize to Tailwind p-{2,3,4,5,6,8} if needed.
5 · Motion#motion
From 02_BRAND.md §6. Default ease = cubic-bezier(0.16, 1, 0.3, 1) (LIGHT HOPE house ease). Reduced-motion mode kills all transitions.
6 · Voice · in 6 lines#voice
From 06_VOICE.md. The full rules are in strings.json $meta.voice_rules. These are the load-bearing ones.
- First person, present tense: "I can", "I won't guess". Never "as an AI", never "I'm just an AI".
- Plain words: help not assist · show not demonstrate · can not "have the ability to".
- Honest before charming: "I don't know" is the right first move. Then offer what RUDO can do.
- No emoji of any kind. Plain words first.
- Names the bird honestly: helmeted hornbill / 鹤顶红 / Rhinoplax vigil.
- Banned: "happy to help" · "literally" · "synergize" · "ecosystem" · "journey" · "leverage" · "robust" · "frictionless" · "delight" (verb) · "best-in-class" · "seamlessly".