Tokens · components · patterns
01
Two families. Vintage for display moments. DM Sans for everything
else. Avoid font-bold — this system
favors medium and semibold.
Display
font-display · Vintage
Aa
Pitch Editor · Cycle 4
Weights 400–600 · Tailwind: font-display
UI / Body
font-sans · DM Sans
Aa
Default body size is 14px. Most interface copy, buttons, labels, and
form fields use text-sm.
Weights 300–600 · Tailwind: font-sans (default)
Production type scale
Font weights
Light · 300
font-light
Normal · 400
font-normal
Medium · 500
font-medium
Semibold · 600
font-semibold
02
Foundation neutrals plus the Ceramic accent palette. Each accent has
a full-strength value and a -light background
variant for badges and status fills.
Foundation
Paper
--paper
#FAF9F7 · bg-paper
Ink
--ink
#1A1A1A · text-ink
Stone
--stone
#E8E6E1 · border-stone
Surface
--card / --surface
#FFFFFF · bg-card
Soft
--soft
50% ink · secondary text
Faint
--faint
25% ink · placeholders
Ceramic palette
Celadon
--celadon / --celadon-light
#93A696 / #E8F0E9
Primary accent · success · focus ring · cycles
Clay
--clay / --clay-light
#B36A40 / #FDF3ED
Destructive · warnings · warmth
Kiln
--kiln / --kiln-light
#2D2A26 / #F5F4F3
Deep neutral · code tokens
Ash
--ash / --ash-light
#495E70 / #EEF1F3
Informational · secondary accent
Badge patterns
Pattern: bg-{color}-light text-{color} rounded-full text-[10px] font-medium.
Use full color for icons and dots; light variant for the fill.
Chart colors
chart-1
chart-2
chart-3
chart-4
chart-5
03
shadcn/ui components consume these automatically. Map them as aliases in Figma — they flip when you toggle dark mode above.
Dark mode values (reference)
background
#0E0E10
card / surface
#18181B
foreground
#E8E6E1
ring
#B0C2B3
celadon
#B0C2B3
clay
#D08661
celadon-light
rgba(176,194,179,0.12)
destructive
#D08661
04
Base radius is 10px (0.625rem). Spacing
follows Tailwind's 4px grid.
Border radius
6px
rounded-sm
8px
rounded-md
10px
rounded-lg
14px
rounded-xl
20px
rounded-2xl
50%
badges · avatars
Common spacing
Shadows
Prefer borders over shadows for separation. When needed: subtle lift only.
shadow-sm
Slight lift
shadow-md
Moderate cards
shadow-lg
Hover-elevated cards
05
shadcn/ui primitives styled with Walden tokens, plus product-level patterns from the codebase.
Buttons
shadcn variants: default,
secondary,
destructive,
outline,
ghost,
link · Sizes:
xs,
sm,
default,
lg,
icon
Inputs
Text input
Textarea
Cards
Pitch
Notification preferences
Small batch · 2 weeks
ShapingTask
Wire up email digest
Scope: Notifications
Cycle
Cycle 4
Mar 3 – Apr 11 · Building
Navigation
Page layout
Walden.
Active Pitches
Example pitch card
max-w-3xl content area
Component inventory
shadcn/ui primitives
Button · Input · Textarea · Card · Dialog · Sheet · Tabs · Select · Combobox · Popover · Dropdown Menu · Avatar · Sidebar · Tooltip · Switch · Toggle · Accordion · Breadcrumb · Skeleton · Sonner
Product components
CycleBadge · PrivateBadge · OrgBadge · TeamBadge · UserAvatar ·
UserAvatarGroup · ThemeToggle · AppHeader · UserMenu · BlockEditor ·
~80 custom icons in app/components/icons/
06
Subtle, considered timing. One page-level animation per route — never nested.
animate-page
Page enter · 500ms ease-out
fade + 12px up
fade-up
Entry stream · 400ms
fade + 6px up
transitions
Nav items: 150ms
Cards: 200ms
Color changes: transition-colors
Theme switch: 200ms
Stagger delays
Classes .d1 through
.d5 add 50ms increments (0.05s – 0.25s)