motif-design 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/bin/install.js +724 -0
  4. package/core/references/context-engine.md +190 -0
  5. package/core/references/design-inputs.md +421 -0
  6. package/core/references/runtime-adapters.md +180 -0
  7. package/core/references/state-machine.md +124 -0
  8. package/core/references/verticals/ecommerce.md +251 -0
  9. package/core/references/verticals/fintech.md +226 -0
  10. package/core/references/verticals/health.md +235 -0
  11. package/core/references/verticals/saas.md +248 -0
  12. package/core/templates/STATE-TEMPLATE.md +28 -0
  13. package/core/templates/SUMMARY-TEMPLATE.md +21 -0
  14. package/core/templates/VERTICAL-TEMPLATE.md +144 -0
  15. package/core/templates/token-showcase-template.html +946 -0
  16. package/core/workflows/compose-screen.md +163 -0
  17. package/core/workflows/evolve.md +64 -0
  18. package/core/workflows/fix.md +64 -0
  19. package/core/workflows/generate-system.md +336 -0
  20. package/core/workflows/quick.md +23 -0
  21. package/core/workflows/research.md +233 -0
  22. package/core/workflows/review.md +126 -0
  23. package/package.json +26 -0
  24. package/runtimes/claude-code/CLAUDE-MD-SNIPPET.md +34 -0
  25. package/runtimes/claude-code/agents/motif-design-reviewer.md +207 -0
  26. package/runtimes/claude-code/agents/motif-fix-agent.md +119 -0
  27. package/runtimes/claude-code/agents/motif-researcher.md +100 -0
  28. package/runtimes/claude-code/agents/motif-screen-composer.md +157 -0
  29. package/runtimes/claude-code/agents/motif-system-architect.md +120 -0
  30. package/runtimes/claude-code/commands/motif/compose.md +7 -0
  31. package/runtimes/claude-code/commands/motif/evolve.md +6 -0
  32. package/runtimes/claude-code/commands/motif/fix.md +7 -0
  33. package/runtimes/claude-code/commands/motif/help.md +29 -0
  34. package/runtimes/claude-code/commands/motif/init.md +229 -0
  35. package/runtimes/claude-code/commands/motif/progress.md +11 -0
  36. package/runtimes/claude-code/commands/motif/quick.md +7 -0
  37. package/runtimes/claude-code/commands/motif/research.md +4 -0
  38. package/runtimes/claude-code/commands/motif/review.md +7 -0
  39. package/runtimes/claude-code/commands/motif/system.md +4 -0
  40. package/runtimes/claude-code/hooks/motif-aria-check.js +164 -0
  41. package/runtimes/claude-code/hooks/motif-context-monitor.js +40 -0
  42. package/runtimes/claude-code/hooks/motif-font-check.js +192 -0
  43. package/runtimes/claude-code/hooks/motif-token-check.js +221 -0
  44. package/runtimes/cursor/README.md +24 -0
  45. package/runtimes/gemini/README.md +13 -0
  46. package/runtimes/opencode/README.md +28 -0
  47. package/scripts/contrast-checker.js +114 -0
  48. package/scripts/token-counter.js +107 -0
@@ -0,0 +1,248 @@
1
+ # SaaS Design Intelligence
2
+
3
+ ## Core Design Principle
4
+ **Efficiency is the product.** Users are working, not browsing — every pixel must minimize clicks, maximize information density, and stay out of the way. The UI should feel like a precision instrument: fast to navigate, predictable in behavior, and invisible when it's working well. Beautiful SaaS design is the kind you don't notice because it never interrupts your flow.
5
+
6
+ ## Navigation Patterns
7
+
8
+ ### Standard Models
9
+ - **Mobile:** Hamburger menu or bottom tab bar, 4-5 items. Home/Dashboard, Projects/Workspace, Inbox/Notifications, Search, Settings. SaaS on mobile is a companion view — prioritize read and triage over creation.
10
+ - **Desktop:** Persistent left sidebar, 240-280px expanded, 56-72px collapsed to icon-only. Grouped by product area (e.g., Projects, Teams, Analytics, Settings). Command palette (Cmd+K) for power users. Top bar for breadcrumbs + search + notifications + profile.
11
+ - **Action surfaces:** Command palette for quick navigation and actions. Contextual menus (right-click) for item-level operations. Inline editing over modal forms where possible.
12
+
13
+ ### Vertical-Specific Rules
14
+ - Keyboard navigation for all primary actions — power users never leave the keyboard
15
+ - Breadcrumb trail for deep hierarchies (Workspace > Project > Board > Item)
16
+ - Workspace/project switcher always accessible (top-left or sidebar header)
17
+ - Search scoped to current context by default, with "Search all" expansion
18
+ - Cmd+K command palette: reachable from any screen, recent actions first
19
+
20
+ ## Color System
21
+
22
+ ### Palette A: Professional Indigo (Blue-Purple)
23
+ | Token | Light Mode | Dark Mode | Usage |
24
+ |---|---|---|---|
25
+ | primary-50 | #EEF2FF | #1E1B4B | Subtle backgrounds, selected row tint |
26
+ | primary-100 | #E0E7FF | #312E81 | Hover states on light surfaces |
27
+ | primary-200 | #C7D2FE | #3730A3 | Borders, focus rings (light) |
28
+ | primary-300 | #A5B4FC | #4338CA | Icons, decorative accents |
29
+ | primary-400 | #818CF8 | #6366F1 | Secondary actions, links |
30
+ | primary-500 | #6366F1 | #818CF8 | Primary actions, brand (HSL 239 84% 67%) |
31
+ | primary-600 | #4F46E5 | #A5B4FC | Hover on primary buttons |
32
+ | primary-700 | #4338CA | #C7D2FE | Active/pressed state |
33
+ | primary-800 | #3730A3 | #E0E7FF | Text on light backgrounds |
34
+ | primary-900 | #312E81 | #EEF2FF | Headings on light backgrounds |
35
+ | surface-primary | #FFFFFF | #0F1117 | Main background |
36
+ | surface-secondary | #F9FAFB | #1A1D27 | Cards, sidebar |
37
+ | surface-tertiary | #F3F4F6 | #252836 | Nested elements, table stripes |
38
+ | text-primary | #111827 | #F3F4F6 | Body text (15.3:1 AAA) |
39
+ | text-secondary | #6B7280 | #9CA3AF | Supporting text (5.4:1 AA) |
40
+
41
+ ### Palette B: Neutral + Accent
42
+ | Token | Light Mode | Dark Mode | Usage |
43
+ |---|---|---|---|
44
+ | primary-500 | #6D28D9 | #A78BFA | Brand accent (violet) |
45
+ | surface-primary | #FFFFFF | #0A0A0B | Main background |
46
+ | surface-secondary | #F4F4F5 | #18181B | Cards, panels |
47
+ | text-primary | #18181B | #FAFAFA | Body text (16.1:1 AAA) |
48
+ | text-secondary | #71717A | #A1A1AA | Supporting text (4.8:1 AA) |
49
+
50
+ ### Semantic Colors
51
+ | Semantic | Hex (Light) | Hex (Dark) | SaaS Meaning |
52
+ |---|---|---|---|
53
+ | Success | #16A34A | #4ADE80 | Action completed, deployment success, build passed |
54
+ | Error | #DC2626 | #F87171 | Operation failed, limit exceeded, build failed |
55
+ | Warning | #D97706 | #FBBF24 | Trial expiring, usage approaching limit, deprecation |
56
+ | Info | #2563EB | #60A5FA | New feature, changelog update, system notification |
57
+
58
+ ### Color Anti-Patterns
59
+ - :x: Overly colorful dashboards — visual noise competes with data density
60
+ - :x: Warm surface tones in data contexts — SaaS users expect cool/neutral workspaces
61
+ - :x: Playful gradients on functional surfaces — undermines professional efficiency
62
+ - :x: Inconsistent chart color sequences — reuse the same ordered palette across all visualizations
63
+ - :x: Saturated backgrounds competing with data — surfaces should recede, data should pop
64
+
65
+ ## Typography
66
+
67
+ ### Pairing A: Engineering Precision
68
+ - **Display:** Space Grotesk 700 at -0.02em — geometric, futuristic precision, designed for technical contexts (Google Fonts)
69
+ - **Body:** IBM Plex Sans 400/500 at 0em — IBM data heritage, excellent at small sizes, optimized for UI (Google Fonts)
70
+
71
+ ### Pairing B: Modern Clarity
72
+ - **Display:** Manrope 700 at -0.015em — distinctive semi-rounded geometry, modern and confident (Google Fonts primary; Bricolage Grotesque on Fontshare as alternative)
73
+ - **Body:** Source Sans 3 400/500 at 0em — designed by Paul Hunt for Adobe, optimal UI readability at 14-16px (Google Fonts)
74
+
75
+ ### Data & Mono
76
+ - JetBrains Mono 500 or IBM Plex Mono with `font-variant-numeric: tabular-nums` for dashboards, metrics, code snippets, and API references
77
+
78
+ ### Type Scale
79
+ | Token | Size | Line Height | SaaS Usage |
80
+ |---|---|---|---|
81
+ | text-xs | 0.75rem (12px) | 1.4 | Timestamps, badges, table metadata, keyboard shortcut hints |
82
+ | text-sm | 0.875rem (14px) | 1.45 | Table cells, sidebar labels, form labels, nav items |
83
+ | text-base | 1rem (16px) | 1.5 | Body copy, form inputs, list items, descriptions |
84
+ | text-lg | 1.125rem (18px) | 1.45 | Section headings, card titles, modal headings |
85
+ | text-xl | 1.25rem (20px) | 1.35 | Page titles, workspace headers |
86
+ | text-2xl | 1.5rem (24px) | 1.3 | Feature headers, settings page titles |
87
+ | text-3xl | 1.875rem (30px) | 1.2 | Dashboard hero metrics, KPI numbers |
88
+
89
+ ### Typography Rules
90
+ - Dashboard metrics: --font-mono with tabular-nums for aligned number columns
91
+ - Code snippets, API keys, commit hashes: always --font-mono
92
+ - Table headers: uppercase, tracking-wider, --text-xs, --weight-medium
93
+ - Status labels: --text-xs, --weight-medium, semantic color
94
+
95
+ ### Typography Anti-Patterns
96
+ - :x: Serif fonts for UI labels — feels editorial, not functional
97
+ - :x: Rounded/friendly consumer fonts (e.g., Quicksand, Nunito) — feels consumer app, not B2B tool
98
+ - :x: Decorative display fonts — distracts from content density
99
+ - :x: More than 3 font weights on one screen — dilutes hierarchy, increases load
100
+
101
+ ## Spacing & Density
102
+
103
+ ### Recommended Density: Comfortable-Dense
104
+ Information density matters — SaaS users scan tables, lists, and dashboards — but not at the cost of scannability. Compact enough to show data, spacious enough to click accurately.
105
+
106
+ ### Concrete Values
107
+ | Context | Value | Token |
108
+ |---|---|---|
109
+ | Card internal padding | 16px | --space-4 |
110
+ | Table row height | 40-48px | — |
111
+ | Table cell padding | 8px 12px | --space-2 --space-3 |
112
+ | Section gap | 24px | --space-6 |
113
+ | Form field gap | 12-16px | --space-3 to --space-4 |
114
+ | Button padding | 8px 16px | --space-2 --space-4 |
115
+ | Touch target minimum | 44x44px | — |
116
+ | Sidebar width (expanded) | 240px | — |
117
+ | Sidebar width (collapsed) | 56px | — |
118
+
119
+ ## Component Specifications
120
+
121
+ ### DataTable
122
+ ```xml
123
+ <component name="DataTable" category="data-display">
124
+ <description>Sortable, filterable table with column management. The most critical SaaS component — users spend 60%+ of time in tables.</description>
125
+ <structure>
126
+ Header row: [Checkbox] [Column headers with sort indicators] [Actions column]
127
+ Column header: --font-body --text-xs --weight-medium --text-secondary uppercase tracking-wider
128
+ Data row: [Checkbox] [Cell values] [Row action menu ...]
129
+ Cell text: --font-body --text-sm --text-primary
130
+ Numeric cells: --font-mono --text-sm tabular-nums right-aligned
131
+ Pagination: [Page info] [Rows per page selector] [Prev/Next]
132
+ </structure>
133
+ <dimensions>
134
+ header-height: 40px, row-height: 44px, cell-padding: --space-2 --space-3
135
+ Checkbox column: 40px fixed width
136
+ Minimum column width: 80px, resizable via drag handle
137
+ </dimensions>
138
+ <states>
139
+ default: --surface-primary background, --border-primary bottom border on rows
140
+ hover: --surface-secondary background on row
141
+ selected: --primary-50 background, checkbox checked, bulk action bar appears
142
+ loading: skeleton shimmer rows (show 8-10 rows), column headers remain visible
143
+ empty: centered illustration + "No results" + suggested action CTA
144
+ </states>
145
+ <keyboard>Tab through cells, Enter to open row, Space to select, Arrow keys for navigation</keyboard>
146
+ </component>
147
+ ```
148
+
149
+ ### CommandPalette
150
+ ```xml
151
+ <component name="CommandPalette" category="navigation">
152
+ <description>Cmd+K triggered overlay for quick navigation, actions, and search. Power user accelerator.</description>
153
+ <structure>
154
+ Overlay: centered modal, 640px max-width, --surface-primary background
155
+ Search input: --font-body --text-base, placeholder "Type a command or search...", auto-focused
156
+ Results: categorized list [Category label] [Result items with icon + title + shortcut hint]
157
+ Category label: --text-xs --weight-medium --text-secondary uppercase
158
+ Result item: [Icon 20x20] [Title --text-sm] [Shortcut badge --text-xs --surface-tertiary]
159
+ Footer: navigation hints "↑↓ Navigate ↵ Open esc Close"
160
+ </structure>
161
+ <dimensions>
162
+ width: min(640px, 90vw), max-height: 480px
163
+ input-padding: --space-4, result-item-height: 40px, result-padding: --space-2 --space-3
164
+ backdrop: rgba(0,0,0,0.5)
165
+ </dimensions>
166
+ <states>
167
+ open: fade-in backdrop + scale input from 95% to 100%, 150ms ease-out
168
+ searching: spinner in input right, debounce 200ms
169
+ results: categorized list, first item auto-highlighted
170
+ empty: "No results for [query]" + suggested actions
171
+ error: "Search unavailable" + retry link
172
+ </states>
173
+ <animation>appear: opacity 0→1 + scale 0.95→1, 150ms ease-out; dismiss: opacity 1→0, 100ms</animation>
174
+ </component>
175
+ ```
176
+
177
+ ### FilterBar
178
+ ```xml
179
+ <component name="FilterBar" category="navigation">
180
+ <description>Horizontal bar for filtering, searching, and organizing table/list data.</description>
181
+ <structure>
182
+ Bar: [Search input] [Filter chips] [Saved views dropdown] [Sort toggle] [Active filter count badge]
183
+ Search input: icon-left (magnifying glass), --text-sm, placeholder "Filter..."
184
+ Filter chip: --text-xs --weight-medium, --surface-tertiary bg, --radius-sm, removable (x icon)
185
+ Active chip: --primary-50 bg, --primary-700 text, --primary-200 border
186
+ Saved views: dropdown with saved filter combinations, "Save current view" option
187
+ Sort toggle: icon button, current sort field + direction indicator (▲/▼)
188
+ Count badge: --text-xs --primary-500 bg --text-inverse, circular, shows number of active filters
189
+ </structure>
190
+ <dimensions>
191
+ bar-height: 48px, padding: --space-2 --space-3
192
+ search-input-width: 200-280px, chip-padding: --space-1 --space-2, chip-gap: --space-2
193
+ </dimensions>
194
+ <states>
195
+ default: search input + "Add filter" button, no active chips
196
+ active-filters: chips displayed inline, count badge visible, "Clear all" link appears
197
+ expanded: filter dropdown open with column options, operators, value inputs
198
+ </states>
199
+ <tap-target>Each chip and control meets 44x44px minimum</tap-target>
200
+ </component>
201
+ ```
202
+
203
+ ## Interaction Patterns
204
+
205
+ ### Core Flows
206
+ 1. **Creating a new resource:** Cmd+K or "New" button → inline form or slide-over panel (not full-page navigation). Auto-save draft. Submit returns to list with new item highlighted.
207
+ 2. **Filtering and searching data:** FilterBar search is instant (client-side for <1000 rows, debounced server for larger sets). Filter chips are additive. Saved views persist across sessions.
208
+ 3. **Keyboard-driven navigation:** Cmd+K opens command palette → type action → arrow to select → Enter to execute. All primary CRUD actions have keyboard shortcuts displayed in tooltips and command palette.
209
+
210
+ ### States
211
+ **Loading:** Skeleton shimmer for tables and cards (left-to-right, 1.5s cycle). Inline spinners (16px) for individual actions (save, delete). Never block the entire page for a single operation.
212
+ **Empty:** First-time: "Welcome to [Workspace]. Create your first [resource] to get started →" with illustration and primary CTA. No-results: "No items match your filters" with "Clear filters" link. Never just blank space.
213
+ **Error:** Inline error messages with retry button for recoverable errors — never modal. Toast notifications for background operation failures. Include error code for support reference.
214
+
215
+ ### Motion
216
+ **Appropriate:** Sidebar collapse/expand (200ms ease-out), command palette appear (150ms ease-out), row selection highlight (100ms), toast slide-in from top-right (250ms ease-out), dropdown open (150ms).
217
+ **Inappropriate:** :x: Full page transitions between views, :x: bouncy/spring animations, :x: decorative motion on functional elements, :x: auto-playing feature demos, :x: parallax scrolling in dashboards.
218
+
219
+ ## Accessibility Specifics
220
+ - Full keyboard navigation for all features — tab order follows visual layout
221
+ - Visible focus ring (2px solid --border-focus, 2px offset) on all interactive elements
222
+ - aria-labels on icon-only buttons (e.g., "Sort ascending", "Open row actions", "Collapse sidebar")
223
+ - Table column sort state announced to screen readers via aria-sort attribute
224
+ - Command palette results announced as aria-live="polite" region as results update
225
+ - Filter state changes announced via aria-live for screen reader users
226
+ - Minimum 14px font size for all interactive text, 12px only for supplementary metadata
227
+
228
+ ## Border Radius
229
+ | Token | Value | Reasoning |
230
+ |---|---|---|
231
+ | radius-sm | 4px | Chips, badges, small inputs — crisp and precise |
232
+ | radius-md | 8px | Buttons, cards, dropdowns — modern without being playful |
233
+ | radius-lg | 12px | Modals, panels, large containers — professional, balanced |
234
+
235
+ ## Shadow Style
236
+ | Token | Value | Usage |
237
+ |---|---|---|
238
+ | shadow-sm | 0 1px 2px rgba(0,0,0,0.05) | Subtle card elevation, table header sticky |
239
+ | shadow-md | 0 4px 6px -1px rgba(0,0,0,0.07), 0 2px 4px -2px rgba(0,0,0,0.05) | Dropdowns, popovers, filter bar |
240
+ | shadow-lg | 0 10px 15px -3px rgba(0,0,0,0.08), 0 4px 6px -4px rgba(0,0,0,0.04) | Command palette, modals, slide-over panels |
241
+
242
+ ## SaaS-Specific Additions
243
+ - **Keyboard shortcuts display:** Footer hint bar showing context-sensitive shortcuts (e.g., "? Help N New / Search"). Full shortcut reference via "?" key press in modal overlay.
244
+ - **Onboarding checklists:** Dismissible card with progress bar (e.g., "3 of 5 steps complete"). Steps: Create workspace, invite team, connect integration, create first project, customize settings.
245
+ - **Usage meters / quota bars:** Horizontal progress bar with current/limit label (e.g., "8,420 / 10,000 API calls"). Color transitions: --color-success below 75%, --color-warning at 75-90%, --color-error above 90%.
246
+ - **Changelog / notification patterns:** Badge count on bell icon (top-right). Notification drawer slides in from right (250ms). Unread items: --primary-50 background. Changelog entries: version tag + date + summary.
247
+ - **Settings architecture:** Three-tier hierarchy: Workspace settings (billing, integrations, security) > Team settings (permissions, defaults) > Personal settings (profile, preferences, API keys). Left sidebar sub-navigation within settings.
248
+ - **API key display:** Masked by default (sk-****...****abcd). "Reveal" button with re-authentication. "Copy" button with toast confirmation. "Revoke" with confirmation dialog: "This action cannot be undone. Any integrations using this key will stop working."
@@ -0,0 +1,28 @@
1
+ <!-- Source of truth: core/references/state-machine.md -- keep in sync -->
2
+
3
+ # Motif State
4
+
5
+ ## Phase
6
+ INITIALIZED
7
+
8
+ ## Vertical
9
+ {VERTICAL}
10
+
11
+ ## Stack
12
+ {STACK}
13
+
14
+ ## Screens
15
+ | # | Screen | Status | Review Score | Last Updated |
16
+ |---|--------|--------|-------------|-------------|
17
+
18
+ ## Decisions Log
19
+ - {ISO_DATE} Project initialized
20
+
21
+ ## Context Budget
22
+ | File | Tokens (approx) | Budget |
23
+ |---|---|---|
24
+ | PROJECT.md | ~800 | ≤1,000 |
25
+ | DESIGN-BRIEF.md | ~600 | ≤1,000 |
26
+ | DESIGN-RESEARCH.md | -- | ≤3,000 |
27
+ | tokens.css | -- | ≤3,000 |
28
+ | COMPONENT-SPECS.md | -- | ≤5,000 |
@@ -0,0 +1,21 @@
1
+ <!-- Source of truth: core/workflows/compose-screen.md section E -- keep in sync -->
2
+
3
+ # Screen: {SCREEN_NAME}
4
+
5
+ ## Components Used
6
+ [List all design system components used in this screen]
7
+
8
+ ## Key Tokens Referenced
9
+ [List the primary tokens this screen depends on]
10
+
11
+ ## Vertical Patterns Applied
12
+ [Which LOCKED decisions from DESIGN-RESEARCH.md were implemented]
13
+
14
+ ## States
15
+ - Default ✓/✗
16
+ - Loading ✓/✗
17
+ - Empty ✓/✗
18
+ - Error ✓/✗
19
+
20
+ ## Files Created
21
+ [List all files created/modified for this screen]
@@ -0,0 +1,144 @@
1
+ # [Vertical Name] Design Intelligence
2
+
3
+ > This is a template. Replace all [bracketed content] with concrete, specific values.
4
+ > Each section should contain ACTIONABLE decisions, not generic advice.
5
+ > Target: 400-500 lines with real values a design system generator can use.
6
+
7
+ ## Core Design Principle
8
+ **[One sentence: what is the #1 thing the UI must communicate in this vertical?]**
9
+
10
+ [2-3 sentences expanding on why this principle matters for THIS type of product.]
11
+
12
+ ## Navigation Patterns
13
+
14
+ ### Standard Models
15
+ [Describe 2-3 navigation patterns that users EXPECT in this vertical. Be specific about structure.]
16
+
17
+ ### Vertical-Specific Navigation Rules
18
+ [3-5 rules about navigation unique to this vertical. e.g., "Primary CTA must be reachable within 1 tap from any screen."]
19
+
20
+ ## Color System
21
+
22
+ ### Recommended Palettes
23
+ Provide 2-3 complete palettes with actual hex values:
24
+
25
+ **Palette A: [Name/Mood]**
26
+ | Token | Light Mode | Dark Mode | Usage |
27
+ |---|---|---|---|
28
+ | primary-500 | #[hex] | #[hex] | Primary actions, brand |
29
+ | primary-600 | #[hex] | #[hex] | Hover states |
30
+ | surface-primary | #[hex] | #[hex] | Main background |
31
+ | surface-secondary | #[hex] | #[hex] | Cards, sections |
32
+ | text-primary | #[hex] | #[hex] | Body text |
33
+ | text-secondary | #[hex] | #[hex] | Supporting text |
34
+
35
+ **Palette B: [Name/Mood]**
36
+ [Same format]
37
+
38
+ ### Semantic Colors (Vertical Standard)
39
+ | Semantic | Hex | Usage in this vertical |
40
+ |---|---|---|
41
+ | Success | #[hex] | [specific meaning, e.g., "Transaction complete, money received"] |
42
+ | Error | #[hex] | [specific meaning] |
43
+ | Warning | #[hex] | [specific meaning] |
44
+ | Info | #[hex] | [specific meaning] |
45
+
46
+ ### Color Anti-Patterns
47
+ [3-5 specific color choices to AVOID with reasoning]
48
+
49
+ ## Typography
50
+
51
+ ### Recommended Font Pairings
52
+ Provide 2-3 complete pairings with exact specifications:
53
+
54
+ **Pairing A:**
55
+ - Display: [Font Name] [Weight] at [tracking] — [1-sentence personality]
56
+ - Body: [Font Name] [Weight] at [tracking] — [why it works here]
57
+ - Mono/Data: [Font Name] [Weight] with `font-variant-numeric: tabular-nums` — [when to use]
58
+
59
+ **Pairing B:**
60
+ [Same format]
61
+
62
+ ### Type Scale
63
+ | Token | Size | Line Height | Use For |
64
+ |---|---|---|---|
65
+ | text-xs | 0.75rem (12px) | 1.4 | [specific uses in this vertical] |
66
+ | text-sm | 0.875rem (14px) | 1.45 | [specific uses] |
67
+ | text-base | 1rem (16px) | 1.5 | [specific uses] |
68
+ | text-lg | 1.125rem (18px) | 1.45 | [specific uses] |
69
+ | text-xl | 1.25rem (20px) | 1.35 | [specific uses] |
70
+ | text-2xl | 1.5rem (24px) | 1.3 | [specific uses] |
71
+ | text-3xl | 1.875rem (30px) | 1.2 | [specific uses] |
72
+
73
+ ### Typography Anti-Patterns
74
+ [3-5 specific font/typography choices to AVOID]
75
+
76
+ ## Spacing & Density
77
+
78
+ ### Recommended Density
79
+ [compact | comfortable | spacious] — [reasoning]
80
+
81
+ ### Concrete Spacing Values
82
+ | Context | Value | Token |
83
+ |---|---|---|
84
+ | Card internal padding | [X]px | --space-[N] |
85
+ | List item height | [X]px | — |
86
+ | Section gap | [X]px | --space-[N] |
87
+ | Form field gap | [X]px | --space-[N] |
88
+ | Button padding | [X]px [Y]px | --space-[N] --space-[M] |
89
+ | Touch target minimum | [X]×[X]px | — |
90
+
91
+ ## Component Specifications
92
+
93
+ ### [Vertical-Specific Component 1]
94
+ ```xml
95
+ <component name="[Name]" category="[category]">
96
+ <description>[What it is, when to use it]</description>
97
+ <structure>
98
+ [Describe the DOM structure: what elements, what order]
99
+ </structure>
100
+ <dimensions>
101
+ height: [X]px, padding: [token], gap: [token]
102
+ </dimensions>
103
+ <states>
104
+ default, hover, active, loading, empty, error
105
+ </states>
106
+ </component>
107
+ ```
108
+
109
+ ### [Vertical-Specific Component 2]
110
+ [Same format]
111
+
112
+ ### [Vertical-Specific Component 3]
113
+ [Same format]
114
+
115
+ ## Interaction Patterns
116
+
117
+ ### Core Flows
118
+ [Describe the 3-5 most critical user flows with specific UX patterns for each]
119
+
120
+ ### States
121
+ **Loading:** [How loading should look/feel in this vertical]
122
+ **Empty:** [How empty states should look/feel — tone, visual approach]
123
+ **Error:** [How errors should be communicated — tone, recovery pattern]
124
+
125
+ ### Motion
126
+ **Appropriate:** [3-5 specific animations that work in this vertical with timing]
127
+ **Inappropriate:** [3-5 animations to AVOID with reasoning]
128
+
129
+ ## Accessibility Specifics
130
+ [Requirements specific to this vertical's user base — beyond general WCAG]
131
+
132
+ ## Border Radius
133
+ | Token | Value | Reasoning |
134
+ |---|---|---|
135
+ | radius-sm | [X]px | [why this value for this vertical] |
136
+ | radius-md | [X]px | |
137
+ | radius-lg | [X]px | |
138
+
139
+ ## Shadow Style
140
+ | Token | Value | Usage |
141
+ |---|---|---|
142
+ | shadow-sm | [full CSS value] | [when to use] |
143
+ | shadow-md | [full CSS value] | |
144
+ | shadow-lg | [full CSS value] | |