savant-code 0.0.22 → 0.0.24

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 (79) hide show
  1. package/README.md +5 -0
  2. package/launcher.js +192 -5
  3. package/package.json +3 -2
  4. package/savant-design-systems/SKILL.md +12 -0
  5. package/savant-design-systems/manifest.json +2541 -0
  6. package/savant-design-systems/resources/airbnb-design-analysis.json +983 -0
  7. package/savant-design-systems/resources/airtable-design-analysis.json +931 -0
  8. package/savant-design-systems/resources/apple-design-analysis.json +920 -0
  9. package/savant-design-systems/resources/binance-design-analysis.json +1068 -0
  10. package/savant-design-systems/resources/bmw-design-analysis.json +912 -0
  11. package/savant-design-systems/resources/bmw-m-design-analysis.json +824 -0
  12. package/savant-design-systems/resources/bugatti-design-analysis.json +746 -0
  13. package/savant-design-systems/resources/cal-com-design-analysis.json +913 -0
  14. package/savant-design-systems/resources/claude-design-analysis.json +1007 -0
  15. package/savant-design-systems/resources/clay-design-analysis.json +919 -0
  16. package/savant-design-systems/resources/clickhouse-design-analysis.json +926 -0
  17. package/savant-design-systems/resources/cohere-design-analysis.json +725 -0
  18. package/savant-design-systems/resources/coinbase-design-analysis.json +998 -0
  19. package/savant-design-systems/resources/composio-design-analysis.json +851 -0
  20. package/savant-design-systems/resources/cursor-design-analysis.json +934 -0
  21. package/savant-design-systems/resources/dell-1996-inspired.json +1042 -0
  22. package/savant-design-systems/resources/elevenlabs.json +551 -0
  23. package/savant-design-systems/resources/expo-design-analysis.json +879 -0
  24. package/savant-design-systems/resources/ferrari-design-analysis.json +874 -0
  25. package/savant-design-systems/resources/figma-design-analysis.json +928 -0
  26. package/savant-design-systems/resources/framer-design-analysis.json +891 -0
  27. package/savant-design-systems/resources/hashicorp-design-analysis.json +909 -0
  28. package/savant-design-systems/resources/hp-design-analysis.json +1077 -0
  29. package/savant-design-systems/resources/ibm-design-analysis.json +881 -0
  30. package/savant-design-systems/resources/intercom-design-analysis.json +876 -0
  31. package/savant-design-systems/resources/kraken.json +172 -0
  32. package/savant-design-systems/resources/lamborghini.json +335 -0
  33. package/savant-design-systems/resources/linear-design-analysis.json +890 -0
  34. package/savant-design-systems/resources/lovable.json +345 -0
  35. package/savant-design-systems/resources/mastercard.json +412 -0
  36. package/savant-design-systems/resources/meta-design-analysis.json +1121 -0
  37. package/savant-design-systems/resources/minimax-design-analysis.json +1220 -0
  38. package/savant-design-systems/resources/mintlify-design-analysis.json +1418 -0
  39. package/savant-design-systems/resources/miro-design-analysis.json +1364 -0
  40. package/savant-design-systems/resources/mistral-ai-design-analysis.json +1286 -0
  41. package/savant-design-systems/resources/mongodb-design-analysis.json +1276 -0
  42. package/savant-design-systems/resources/nike-design-analysis.json +938 -0
  43. package/savant-design-systems/resources/nintendo-com-2001-analysis.json +1082 -0
  44. package/savant-design-systems/resources/notion-design-analysis.json +1368 -0
  45. package/savant-design-systems/resources/nvidia-design-analysis.json +1023 -0
  46. package/savant-design-systems/resources/ollama-design-analysis.json +863 -0
  47. package/savant-design-systems/resources/opencode-design-analysis.json +806 -0
  48. package/savant-design-systems/resources/pinterest-design-analysis.json +953 -0
  49. package/savant-design-systems/resources/playstation-design-analysis.json +1053 -0
  50. package/savant-design-systems/resources/posthog-design-analysis.json +1146 -0
  51. package/savant-design-systems/resources/raycast.json +716 -0
  52. package/savant-design-systems/resources/renault-design-analysis.json +916 -0
  53. package/savant-design-systems/resources/replicate-design-analysis.json +986 -0
  54. package/savant-design-systems/resources/resend-design-analysis.json +942 -0
  55. package/savant-design-systems/resources/revolut-design-analysis.json +1008 -0
  56. package/savant-design-systems/resources/runwayml.json +291 -0
  57. package/savant-design-systems/resources/sanity.json +404 -0
  58. package/savant-design-systems/resources/sentri-inspired-design-analysis.json +953 -0
  59. package/savant-design-systems/resources/shopifi-inspired-design-analysis.json +921 -0
  60. package/savant-design-systems/resources/slacc-inspired-design-analysis.json +799 -0
  61. package/savant-design-systems/resources/spacex-inspired-design-analysis.json +598 -0
  62. package/savant-design-systems/resources/spotify.json +293 -0
  63. package/savant-design-systems/resources/starbucks.json +627 -0
  64. package/savant-design-systems/resources/stripi-inspired-design-analysis.json +805 -0
  65. package/savant-design-systems/resources/supabase.json +509 -0
  66. package/savant-design-systems/resources/superhumon-inspired-design-analysis.json +740 -0
  67. package/savant-design-systems/resources/tesla.json +333 -0
  68. package/savant-design-systems/resources/theverge.json +386 -0
  69. package/savant-design-systems/resources/together-ai-inspired-design-analysis.json +1099 -0
  70. package/savant-design-systems/resources/uber-inspired-design-analysis.json +1067 -0
  71. package/savant-design-systems/resources/vercel-inspired-design-analysis.json +1261 -0
  72. package/savant-design-systems/resources/vodafone-inspired-design-analysis.json +912 -0
  73. package/savant-design-systems/resources/voltagent-inspired-design-analysis.json +929 -0
  74. package/savant-design-systems/resources/warp-inspired-design-analysis.json +946 -0
  75. package/savant-design-systems/resources/webflow-inspired-design-analysis.json +1033 -0
  76. package/savant-design-systems/resources/wired-inspired-design-analysis.json +877 -0
  77. package/savant-design-systems/resources/wise-inspired-design-analysis.json +916 -0
  78. package/savant-design-systems/resources/xai-inspired-design-analysis.json +820 -0
  79. package/savant-design-systems/resources/zapier-inspired-design-analysis.json +915 -0
@@ -0,0 +1,1364 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "miro-design-analysis",
4
+ "displayName": "Miro-design-analysis",
5
+ "description": "Miro presents itself as the AI-powered visual workspace through a confident, almost playful brand voice — anchored by its signature canary yellow ({colors.brand-yellow}) wordmark over white canvas, broken open by colorful pastel feature tints (rose, teal, coral, orange, mint) that echo the actual sticky-note color palette used on the live whiteboard. Black-pill primary buttons dominate marketing, real Miro-board mockups serve as feature illustrations, and a 4-tier pricing grid leads into a dense comparison table. Roobert PRO carries display headlines; the system supports homepage, pricing, AI Workflows product page, agile vertical, and customer stories surfaces.",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/miro.design.md",
13
+ "sourceContentHash": "87c71f76297277d64f9679e015a50da88e72d86d7b41badf8733eae1e4cde335",
14
+ "normalizedContentHash": "cd1e193f1ab496e42b2b628d2a866b1fedddf0ce517d4f99f81a9fc86fc247de",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/miro.design.md",
19
+ "license": "MIT"
20
+ },
21
+ "fonts": [
22
+ {
23
+ "family": "Roobert PRO",
24
+ "fallback": [
25
+ "system-ui",
26
+ "sans-serif"
27
+ ],
28
+ "redistributable": false
29
+ }
30
+ ],
31
+ "tokens": {
32
+ "colors": {
33
+ "blue-450": "#5b76fe",
34
+ "blue-pressed": "#2a41b6",
35
+ "brand-blue": "#4262ff",
36
+ "brand-coral": "#ff9999",
37
+ "brand-orange-light": "#ffe6cd",
38
+ "brand-pink": "#fde0f0",
39
+ "brand-red": "#fbd4d4",
40
+ "brand-red-dark": "#e3c5c5",
41
+ "brand-rose": "#ffd8f4",
42
+ "brand-teal": "#0fbcb0",
43
+ "brand-yellow": "#ffd02f",
44
+ "brand-yellow-deep": "#fcb900",
45
+ "canvas": "#ffffff",
46
+ "charcoal": "#2c2c34",
47
+ "coral-dark": "#600000",
48
+ "coral-light": "#ffc6c6",
49
+ "footer-bg": "#1c1c1e",
50
+ "hairline": "#e0e2e8",
51
+ "hairline-soft": "#eef0f3",
52
+ "hairline-strong": "#c7cad5",
53
+ "ink": "#1c1c1e",
54
+ "ink-deep": "#050038",
55
+ "moss-dark": "#187574",
56
+ "muted": "#a5a8b5",
57
+ "on-dark": "#ffffff",
58
+ "on-dark-muted": "#a5a8b5",
59
+ "on-primary": "#ffffff",
60
+ "primary": "#1c1c1e",
61
+ "rose-light": "#fde0f0",
62
+ "slate": "#555a6a",
63
+ "steel": "#6b6f7e",
64
+ "stone": "#8e91a0",
65
+ "success-accent": "#00b473",
66
+ "surface": "#f7f8fa",
67
+ "surface-pricing-featured": "#f5f3ff",
68
+ "surface-soft": "#fafbfc",
69
+ "surface-yellow": "#fff8e0",
70
+ "teal-light": "#c3faf5",
71
+ "yellow-dark": "#746019",
72
+ "yellow-light": "#fff4c4"
73
+ },
74
+ "typography": {
75
+ "hero-display": {
76
+ "fontFamily": "Roobert PRO",
77
+ "fontSize": "80px",
78
+ "fontWeight": 500,
79
+ "letterSpacing": "-2px",
80
+ "lineHeight": 1.05
81
+ },
82
+ "display-lg": {
83
+ "fontFamily": "Roobert PRO",
84
+ "fontSize": "60px",
85
+ "fontWeight": 500,
86
+ "letterSpacing": "-1.5px",
87
+ "lineHeight": 1.1
88
+ },
89
+ "heading-1": {
90
+ "fontFamily": "Roobert PRO",
91
+ "fontSize": "48px",
92
+ "fontWeight": 500,
93
+ "letterSpacing": "-1px",
94
+ "lineHeight": 1.15
95
+ },
96
+ "heading-2": {
97
+ "fontFamily": "Roobert PRO",
98
+ "fontSize": "36px",
99
+ "fontWeight": 500,
100
+ "letterSpacing": "-0.5px",
101
+ "lineHeight": 1.2
102
+ },
103
+ "heading-3": {
104
+ "fontFamily": "Roobert PRO",
105
+ "fontSize": "28px",
106
+ "fontWeight": 500,
107
+ "lineHeight": 1.25
108
+ },
109
+ "heading-4": {
110
+ "fontFamily": "Roobert PRO",
111
+ "fontSize": "22px",
112
+ "fontWeight": 500,
113
+ "lineHeight": 1.3
114
+ },
115
+ "heading-5": {
116
+ "fontFamily": "Roobert PRO",
117
+ "fontSize": "18px",
118
+ "fontWeight": 500,
119
+ "lineHeight": 1.4
120
+ },
121
+ "subtitle": {
122
+ "fontFamily": "Roobert PRO",
123
+ "fontSize": "18px",
124
+ "fontWeight": 400,
125
+ "lineHeight": 1.5
126
+ },
127
+ "body-md": {
128
+ "fontFamily": "Roobert PRO",
129
+ "fontSize": "16px",
130
+ "fontWeight": 400,
131
+ "lineHeight": 1.5
132
+ },
133
+ "body-md-medium": {
134
+ "fontFamily": "Roobert PRO",
135
+ "fontSize": "16px",
136
+ "fontWeight": 500,
137
+ "lineHeight": 1.5
138
+ },
139
+ "body-sm": {
140
+ "fontFamily": "Roobert PRO",
141
+ "fontSize": "14px",
142
+ "fontWeight": 400,
143
+ "lineHeight": 1.5
144
+ },
145
+ "body-sm-medium": {
146
+ "fontFamily": "Roobert PRO",
147
+ "fontSize": "14px",
148
+ "fontWeight": 500,
149
+ "lineHeight": 1.5
150
+ },
151
+ "caption": {
152
+ "fontFamily": "Roobert PRO",
153
+ "fontSize": "13px",
154
+ "fontWeight": 400,
155
+ "lineHeight": 1.4
156
+ },
157
+ "caption-bold": {
158
+ "fontFamily": "Roobert PRO",
159
+ "fontSize": "13px",
160
+ "fontWeight": 600,
161
+ "lineHeight": 1.4
162
+ },
163
+ "micro": {
164
+ "fontFamily": "Roobert PRO",
165
+ "fontSize": "12px",
166
+ "fontWeight": 500,
167
+ "lineHeight": 1.4
168
+ },
169
+ "micro-uppercase": {
170
+ "fontFamily": "Roobert PRO",
171
+ "fontSize": "11px",
172
+ "fontWeight": 600,
173
+ "letterSpacing": "0.5px",
174
+ "lineHeight": 1.4
175
+ },
176
+ "button-md": {
177
+ "fontFamily": "Roobert PRO",
178
+ "fontSize": "14px",
179
+ "fontWeight": 500,
180
+ "lineHeight": 1.3
181
+ },
182
+ "stat-display": {
183
+ "fontFamily": "Roobert PRO",
184
+ "fontSize": "64px",
185
+ "fontWeight": 500,
186
+ "letterSpacing": "-1.5px",
187
+ "lineHeight": 1.1
188
+ }
189
+ },
190
+ "spacing": {
191
+ "hero": "120px",
192
+ "lg": "20px",
193
+ "md": "16px",
194
+ "section": "64px",
195
+ "section-lg": "96px",
196
+ "section-sm": "48px",
197
+ "sm": "12px",
198
+ "xl": "24px",
199
+ "xs": "8px",
200
+ "xxl": "32px",
201
+ "xxs": "4px",
202
+ "xxxl": "40px"
203
+ },
204
+ "radius": {
205
+ "feature": "32px",
206
+ "full": "9999px",
207
+ "lg": "12px",
208
+ "md": "8px",
209
+ "sm": "6px",
210
+ "xl": "16px",
211
+ "xs": "4px",
212
+ "xxl": "20px",
213
+ "xxxl": "28px"
214
+ },
215
+ "components": {
216
+ "button-primary": {
217
+ "backgroundColor": "{colors.primary}",
218
+ "padding": "12px 24px",
219
+ "rounded": "{rounded.full}",
220
+ "textColor": "{colors.on-primary}",
221
+ "typography": "{typography.button-md}"
222
+ },
223
+ "button-primary-pressed": {
224
+ "backgroundColor": "{colors.charcoal}",
225
+ "textColor": "{colors.on-primary}"
226
+ },
227
+ "button-primary-disabled": {
228
+ "backgroundColor": "{colors.hairline}",
229
+ "textColor": "{colors.muted}"
230
+ },
231
+ "button-yellow": {
232
+ "backgroundColor": "{colors.brand-yellow}",
233
+ "padding": "12px 24px",
234
+ "rounded": "{rounded.full}",
235
+ "textColor": "{colors.primary}",
236
+ "typography": "{typography.button-md}"
237
+ },
238
+ "button-blue": {
239
+ "backgroundColor": "{colors.brand-blue}",
240
+ "padding": "12px 24px",
241
+ "rounded": "{rounded.full}",
242
+ "textColor": "{colors.on-primary}",
243
+ "typography": "{typography.button-md}"
244
+ },
245
+ "button-secondary": {
246
+ "backgroundColor": "transparent",
247
+ "border": "1px solid {colors.hairline-strong}",
248
+ "padding": "12px 24px",
249
+ "rounded": "{rounded.full}",
250
+ "textColor": "{colors.ink}",
251
+ "typography": "{typography.button-md}"
252
+ },
253
+ "button-on-dark": {
254
+ "backgroundColor": "{colors.on-dark}",
255
+ "padding": "12px 24px",
256
+ "rounded": "{rounded.full}",
257
+ "textColor": "{colors.primary}",
258
+ "typography": "{typography.button-md}"
259
+ },
260
+ "button-ghost": {
261
+ "backgroundColor": "transparent",
262
+ "padding": "8px 12px",
263
+ "rounded": "{rounded.md}",
264
+ "textColor": "{colors.ink}",
265
+ "typography": "{typography.button-md}"
266
+ },
267
+ "button-link": {
268
+ "backgroundColor": "transparent",
269
+ "padding": "0",
270
+ "textColor": "{colors.brand-blue}",
271
+ "typography": "{typography.body-sm-medium}"
272
+ },
273
+ "button-icon-circular": {
274
+ "backgroundColor": "{colors.canvas}",
275
+ "border": "1px solid {colors.hairline}",
276
+ "rounded": "{rounded.full}",
277
+ "size": "36px",
278
+ "textColor": "{colors.ink}"
279
+ },
280
+ "card-base": {
281
+ "backgroundColor": "{colors.canvas}",
282
+ "border": "1px solid {colors.hairline-soft}",
283
+ "padding": "{spacing.xl}",
284
+ "rounded": "{rounded.xl}"
285
+ },
286
+ "card-feature": {
287
+ "backgroundColor": "{colors.canvas}",
288
+ "border": "1px solid {colors.hairline-soft}",
289
+ "padding": "{spacing.xxl}",
290
+ "rounded": "{rounded.xxxl}"
291
+ },
292
+ "card-feature-yellow": {
293
+ "backgroundColor": "{colors.brand-yellow}",
294
+ "padding": "{spacing.xxl}",
295
+ "rounded": "{rounded.xxxl}",
296
+ "textColor": "{colors.primary}"
297
+ },
298
+ "card-feature-coral": {
299
+ "backgroundColor": "{colors.coral-light}",
300
+ "padding": "{spacing.xxl}",
301
+ "rounded": "{rounded.xxxl}",
302
+ "textColor": "{colors.primary}"
303
+ },
304
+ "card-feature-teal": {
305
+ "backgroundColor": "{colors.teal-light}",
306
+ "padding": "{spacing.xxl}",
307
+ "rounded": "{rounded.xxxl}",
308
+ "textColor": "{colors.primary}"
309
+ },
310
+ "card-feature-rose": {
311
+ "backgroundColor": "{colors.rose-light}",
312
+ "padding": "{spacing.xxl}",
313
+ "rounded": "{rounded.xxxl}",
314
+ "textColor": "{colors.primary}"
315
+ },
316
+ "card-customer-story": {
317
+ "backgroundColor": "{colors.canvas}",
318
+ "border": "1px solid {colors.hairline-soft}",
319
+ "padding": "0",
320
+ "rounded": "{rounded.xxxl}"
321
+ },
322
+ "card-stat": {
323
+ "backgroundColor": "transparent",
324
+ "padding": "{spacing.lg}",
325
+ "textColor": "{colors.ink}",
326
+ "typography": "{typography.stat-display}"
327
+ },
328
+ "pricing-card": {
329
+ "backgroundColor": "{colors.canvas}",
330
+ "border": "1px solid {colors.hairline}",
331
+ "padding": "{spacing.xxl}",
332
+ "rounded": "{rounded.xl}"
333
+ },
334
+ "pricing-card-featured": {
335
+ "backgroundColor": "{colors.surface-pricing-featured}",
336
+ "border": "2px solid {colors.brand-blue}",
337
+ "padding": "{spacing.xxl}",
338
+ "rounded": "{rounded.xl}"
339
+ },
340
+ "pricing-card-enterprise": {
341
+ "backgroundColor": "{colors.primary}",
342
+ "padding": "{spacing.xxl}",
343
+ "rounded": "{rounded.xl}",
344
+ "textColor": "{colors.on-primary}"
345
+ },
346
+ "text-input": {
347
+ "backgroundColor": "{colors.canvas}",
348
+ "border": "1px solid {colors.hairline-strong}",
349
+ "height": "44px",
350
+ "padding": "{spacing.sm} {spacing.md}",
351
+ "rounded": "{rounded.md}",
352
+ "textColor": "{colors.ink}",
353
+ "typography": "{typography.body-md}"
354
+ },
355
+ "text-input-focused": {
356
+ "backgroundColor": "{colors.canvas}",
357
+ "border": "2px solid {colors.brand-blue}",
358
+ "textColor": "{colors.ink}"
359
+ },
360
+ "search-pill": {
361
+ "backgroundColor": "{colors.surface}",
362
+ "border": "1px solid {colors.hairline}",
363
+ "height": "40px",
364
+ "padding": "{spacing.xs} {spacing.md}",
365
+ "rounded": "{rounded.md}",
366
+ "textColor": "{colors.steel}",
367
+ "typography": "{typography.body-sm}"
368
+ },
369
+ "filter-dropdown": {
370
+ "backgroundColor": "{colors.canvas}",
371
+ "border": "1px solid {colors.hairline-strong}",
372
+ "padding": "{spacing.xs} {spacing.md}",
373
+ "rounded": "{rounded.full}",
374
+ "textColor": "{colors.ink}",
375
+ "typography": "{typography.body-sm-medium}"
376
+ },
377
+ "pill-tab": {
378
+ "backgroundColor": "{colors.canvas}",
379
+ "border": "1px solid {colors.hairline}",
380
+ "padding": "{spacing.xs} {spacing.md}",
381
+ "rounded": "{rounded.full}",
382
+ "textColor": "{colors.steel}",
383
+ "typography": "{typography.body-sm-medium}"
384
+ },
385
+ "pill-tab-active": {
386
+ "backgroundColor": "{colors.primary}",
387
+ "border": "1px solid {colors.primary}",
388
+ "rounded": "{rounded.full}",
389
+ "textColor": "{colors.on-primary}"
390
+ },
391
+ "toggle-monthly-yearly": {
392
+ "backgroundColor": "{colors.surface}",
393
+ "padding": "4px",
394
+ "rounded": "{rounded.full}",
395
+ "textColor": "{colors.ink}"
396
+ },
397
+ "badge-promo": {
398
+ "backgroundColor": "{colors.brand-yellow}",
399
+ "padding": "4px 10px",
400
+ "rounded": "{rounded.full}",
401
+ "textColor": "{colors.primary}",
402
+ "typography": "{typography.caption-bold}"
403
+ },
404
+ "badge-tag-yellow": {
405
+ "backgroundColor": "{colors.surface-yellow}",
406
+ "padding": "4px 10px",
407
+ "rounded": "{rounded.full}",
408
+ "textColor": "{colors.yellow-dark}",
409
+ "typography": "{typography.caption-bold}"
410
+ },
411
+ "badge-tag-purple": {
412
+ "backgroundColor": "{colors.surface-pricing-featured}",
413
+ "padding": "4px 10px",
414
+ "rounded": "{rounded.full}",
415
+ "textColor": "{colors.brand-blue}",
416
+ "typography": "{typography.caption-bold}"
417
+ },
418
+ "badge-tag-coral": {
419
+ "backgroundColor": "{colors.coral-light}",
420
+ "padding": "4px 10px",
421
+ "rounded": "{rounded.full}",
422
+ "textColor": "{colors.coral-dark}",
423
+ "typography": "{typography.caption-bold}"
424
+ },
425
+ "badge-success": {
426
+ "backgroundColor": "{colors.success-accent}",
427
+ "padding": "4px 10px",
428
+ "rounded": "{rounded.full}",
429
+ "textColor": "{colors.on-primary}",
430
+ "typography": "{typography.caption-bold}"
431
+ },
432
+ "badge-discount": {
433
+ "backgroundColor": "{colors.brand-yellow}",
434
+ "padding": "2px 6px",
435
+ "rounded": "{rounded.sm}",
436
+ "textColor": "{colors.primary}",
437
+ "typography": "{typography.caption-bold}"
438
+ },
439
+ "promo-banner": {
440
+ "backgroundColor": "{colors.primary}",
441
+ "padding": "{spacing.sm} {spacing.md}",
442
+ "textColor": "{colors.on-primary}",
443
+ "typography": "{typography.body-sm-medium}"
444
+ },
445
+ "comparison-table": {
446
+ "backgroundColor": "{colors.canvas}",
447
+ "border": "1px solid {colors.hairline}",
448
+ "rounded": "{rounded.md}",
449
+ "textColor": "{colors.ink}",
450
+ "typography": "{typography.body-sm}"
451
+ },
452
+ "comparison-row": {
453
+ "backgroundColor": "{colors.canvas}",
454
+ "border": "0 0 1px {colors.hairline-soft} solid",
455
+ "padding": "{spacing.md} {spacing.lg}",
456
+ "textColor": "{colors.ink}"
457
+ },
458
+ "template-card": {
459
+ "backgroundColor": "{colors.canvas}",
460
+ "border": "1px solid {colors.hairline}",
461
+ "padding": "{spacing.md}",
462
+ "rounded": "{rounded.xl}"
463
+ },
464
+ "whiteboard-mockup": {
465
+ "backgroundColor": "{colors.canvas}",
466
+ "border": "1px solid {colors.hairline-soft}",
467
+ "padding": "0",
468
+ "rounded": "{rounded.xl}",
469
+ "shadow": "rgba(5, 0, 56, 0.08) 0px 12px 32px -4px"
470
+ },
471
+ "faq-accordion-item": {
472
+ "backgroundColor": "{colors.canvas}",
473
+ "border": "0 0 1px {colors.hairline} solid",
474
+ "padding": "{spacing.xl}",
475
+ "rounded": "{rounded.md}"
476
+ },
477
+ "logo-wall-item": {
478
+ "backgroundColor": "transparent",
479
+ "padding": "{spacing.lg}",
480
+ "textColor": "{colors.steel}",
481
+ "typography": "{typography.body-md-medium}"
482
+ },
483
+ "hero-band-marketing": {
484
+ "backgroundColor": "{colors.canvas}",
485
+ "padding": "{spacing.hero}",
486
+ "rounded": "0",
487
+ "textColor": "{colors.ink}",
488
+ "typography": "{typography.hero-display}"
489
+ },
490
+ "cta-banner-dark": {
491
+ "backgroundColor": "{colors.primary}",
492
+ "padding": "{spacing.section}",
493
+ "rounded": "{rounded.feature}",
494
+ "textColor": "{colors.on-primary}"
495
+ },
496
+ "industry-tile": {
497
+ "backgroundColor": "{colors.canvas}",
498
+ "border": "1px solid {colors.hairline-soft}",
499
+ "padding": "{spacing.xl}",
500
+ "rounded": "{rounded.xl}"
501
+ },
502
+ "capterra-badge": {
503
+ "backgroundColor": "{colors.canvas}",
504
+ "border": "1px solid {colors.hairline}",
505
+ "padding": "{spacing.sm} {spacing.md}",
506
+ "rounded": "{rounded.md}",
507
+ "textColor": "{colors.ink}",
508
+ "typography": "{typography.caption}"
509
+ },
510
+ "footer-region": {
511
+ "backgroundColor": "{colors.footer-bg}",
512
+ "padding": "{spacing.section} {spacing.xxl}",
513
+ "textColor": "{colors.on-dark}",
514
+ "typography": "{typography.body-sm}"
515
+ },
516
+ "footer-link": {
517
+ "backgroundColor": "transparent",
518
+ "padding": "{spacing.xxs} 0",
519
+ "textColor": "{colors.on-dark-muted}",
520
+ "typography": "{typography.body-sm}"
521
+ },
522
+ "app-store-badge": {
523
+ "backgroundColor": "{colors.canvas}",
524
+ "padding": "{spacing.sm} {spacing.md}",
525
+ "rounded": "{rounded.md}",
526
+ "textColor": "{colors.primary}",
527
+ "typography": "{typography.caption-bold}"
528
+ }
529
+ },
530
+ "extensions": {
531
+ "description": "Miro presents itself as the AI-powered visual workspace through a confident, almost playful brand voice — anchored by its signature canary yellow ({colors.brand-yellow}) wordmark over white canvas, broken open by colorful pastel feature tints (rose, teal, coral, orange, mint) that echo the actual sticky-note color palette used on the live whiteboard. Black-pill primary buttons dominate marketing, real Miro-board mockups serve as feature illustrations, and a 4-tier pricing grid leads into a dense comparison table. Roobert PRO carries display headlines; the system supports homepage, pricing, AI Workflows product page, agile vertical, and customer stories surfaces.",
532
+ "name": "Miro-design-analysis",
533
+ "version": "alpha"
534
+ }
535
+ }
536
+ }
537
+
538
+ ---
539
+
540
+ ---
541
+ version: alpha
542
+ name: Miro-design-analysis
543
+ description: Miro presents itself as the AI-powered visual workspace through a confident, almost playful brand voice — anchored by its signature canary yellow ({colors.brand-yellow}) wordmark over white canvas, broken open by colorful pastel feature tints (rose, teal, coral, orange, mint) that echo the actual sticky-note color palette used on the live whiteboard. Black-pill primary buttons dominate marketing, real Miro-board mockups serve as feature illustrations, and a 4-tier pricing grid leads into a dense comparison table. Roobert PRO carries display headlines; the system supports homepage, pricing, AI Workflows product page, agile vertical, and customer stories surfaces.
544
+
545
+ colors:
546
+ primary: "#1c1c1e"
547
+ on-primary: "#ffffff"
548
+ brand-yellow: "#ffd02f"
549
+ brand-yellow-deep: "#fcb900"
550
+ yellow-light: "#fff4c4"
551
+ yellow-dark: "#746019"
552
+ brand-blue: "#4262ff"
553
+ blue-450: "#5b76fe"
554
+ blue-pressed: "#2a41b6"
555
+ brand-coral: "#ff9999"
556
+ coral-light: "#ffc6c6"
557
+ coral-dark: "#600000"
558
+ brand-rose: "#ffd8f4"
559
+ rose-light: "#fde0f0"
560
+ brand-pink: "#fde0f0"
561
+ brand-teal: "#0fbcb0"
562
+ teal-light: "#c3faf5"
563
+ moss-dark: "#187574"
564
+ brand-orange-light: "#ffe6cd"
565
+ brand-red: "#fbd4d4"
566
+ brand-red-dark: "#e3c5c5"
567
+ success-accent: "#00b473"
568
+ canvas: "#ffffff"
569
+ surface: "#f7f8fa"
570
+ surface-soft: "#fafbfc"
571
+ surface-yellow: "#fff8e0"
572
+ surface-pricing-featured: "#f5f3ff"
573
+ hairline: "#e0e2e8"
574
+ hairline-soft: "#eef0f3"
575
+ hairline-strong: "#c7cad5"
576
+ ink-deep: "#050038"
577
+ ink: "#1c1c1e"
578
+ charcoal: "#2c2c34"
579
+ slate: "#555a6a"
580
+ steel: "#6b6f7e"
581
+ stone: "#8e91a0"
582
+ muted: "#a5a8b5"
583
+ on-dark: "#ffffff"
584
+ on-dark-muted: "#a5a8b5"
585
+ footer-bg: "#1c1c1e"
586
+
587
+ typography:
588
+ hero-display:
589
+ fontFamily: Roobert PRO
590
+ fontSize: 80px
591
+ fontWeight: 500
592
+ lineHeight: 1.05
593
+ letterSpacing: -2px
594
+ display-lg:
595
+ fontFamily: Roobert PRO
596
+ fontSize: 60px
597
+ fontWeight: 500
598
+ lineHeight: 1.10
599
+ letterSpacing: -1.5px
600
+ heading-1:
601
+ fontFamily: Roobert PRO
602
+ fontSize: 48px
603
+ fontWeight: 500
604
+ lineHeight: 1.15
605
+ letterSpacing: -1px
606
+ heading-2:
607
+ fontFamily: Roobert PRO
608
+ fontSize: 36px
609
+ fontWeight: 500
610
+ lineHeight: 1.20
611
+ letterSpacing: -0.5px
612
+ heading-3:
613
+ fontFamily: Roobert PRO
614
+ fontSize: 28px
615
+ fontWeight: 500
616
+ lineHeight: 1.25
617
+ heading-4:
618
+ fontFamily: Roobert PRO
619
+ fontSize: 22px
620
+ fontWeight: 500
621
+ lineHeight: 1.30
622
+ heading-5:
623
+ fontFamily: Roobert PRO
624
+ fontSize: 18px
625
+ fontWeight: 500
626
+ lineHeight: 1.40
627
+ subtitle:
628
+ fontFamily: Roobert PRO
629
+ fontSize: 18px
630
+ fontWeight: 400
631
+ lineHeight: 1.50
632
+ body-md:
633
+ fontFamily: Roobert PRO
634
+ fontSize: 16px
635
+ fontWeight: 400
636
+ lineHeight: 1.50
637
+ body-md-medium:
638
+ fontFamily: Roobert PRO
639
+ fontSize: 16px
640
+ fontWeight: 500
641
+ lineHeight: 1.50
642
+ body-sm:
643
+ fontFamily: Roobert PRO
644
+ fontSize: 14px
645
+ fontWeight: 400
646
+ lineHeight: 1.50
647
+ body-sm-medium:
648
+ fontFamily: Roobert PRO
649
+ fontSize: 14px
650
+ fontWeight: 500
651
+ lineHeight: 1.50
652
+ caption:
653
+ fontFamily: Roobert PRO
654
+ fontSize: 13px
655
+ fontWeight: 400
656
+ lineHeight: 1.40
657
+ caption-bold:
658
+ fontFamily: Roobert PRO
659
+ fontSize: 13px
660
+ fontWeight: 600
661
+ lineHeight: 1.40
662
+ micro:
663
+ fontFamily: Roobert PRO
664
+ fontSize: 12px
665
+ fontWeight: 500
666
+ lineHeight: 1.40
667
+ micro-uppercase:
668
+ fontFamily: Roobert PRO
669
+ fontSize: 11px
670
+ fontWeight: 600
671
+ lineHeight: 1.40
672
+ letterSpacing: 0.5px
673
+ button-md:
674
+ fontFamily: Roobert PRO
675
+ fontSize: 14px
676
+ fontWeight: 500
677
+ lineHeight: 1.30
678
+ stat-display:
679
+ fontFamily: Roobert PRO
680
+ fontSize: 64px
681
+ fontWeight: 500
682
+ lineHeight: 1.10
683
+ letterSpacing: -1.5px
684
+
685
+ rounded:
686
+ xs: 4px
687
+ sm: 6px
688
+ md: 8px
689
+ lg: 12px
690
+ xl: 16px
691
+ xxl: 20px
692
+ xxxl: 28px
693
+ feature: 32px
694
+ full: 9999px
695
+
696
+ spacing:
697
+ xxs: 4px
698
+ xs: 8px
699
+ sm: 12px
700
+ md: 16px
701
+ lg: 20px
702
+ xl: 24px
703
+ xxl: 32px
704
+ xxxl: 40px
705
+ section-sm: 48px
706
+ section: 64px
707
+ section-lg: 96px
708
+ hero: 120px
709
+
710
+ components:
711
+ button-primary:
712
+ backgroundColor: "{colors.primary}"
713
+ textColor: "{colors.on-primary}"
714
+ typography: "{typography.button-md}"
715
+ rounded: "{rounded.full}"
716
+ padding: "12px 24px"
717
+ button-primary-pressed:
718
+ backgroundColor: "{colors.charcoal}"
719
+ textColor: "{colors.on-primary}"
720
+ button-primary-disabled:
721
+ backgroundColor: "{colors.hairline}"
722
+ textColor: "{colors.muted}"
723
+ button-yellow:
724
+ backgroundColor: "{colors.brand-yellow}"
725
+ textColor: "{colors.primary}"
726
+ typography: "{typography.button-md}"
727
+ rounded: "{rounded.full}"
728
+ padding: "12px 24px"
729
+ button-blue:
730
+ backgroundColor: "{colors.brand-blue}"
731
+ textColor: "{colors.on-primary}"
732
+ typography: "{typography.button-md}"
733
+ rounded: "{rounded.full}"
734
+ padding: "12px 24px"
735
+ button-secondary:
736
+ backgroundColor: "transparent"
737
+ textColor: "{colors.ink}"
738
+ typography: "{typography.button-md}"
739
+ rounded: "{rounded.full}"
740
+ padding: "12px 24px"
741
+ border: "1px solid {colors.hairline-strong}"
742
+ button-on-dark:
743
+ backgroundColor: "{colors.on-dark}"
744
+ textColor: "{colors.primary}"
745
+ typography: "{typography.button-md}"
746
+ rounded: "{rounded.full}"
747
+ padding: "12px 24px"
748
+ button-ghost:
749
+ backgroundColor: "transparent"
750
+ textColor: "{colors.ink}"
751
+ typography: "{typography.button-md}"
752
+ rounded: "{rounded.md}"
753
+ padding: "8px 12px"
754
+ button-link:
755
+ backgroundColor: "transparent"
756
+ textColor: "{colors.brand-blue}"
757
+ typography: "{typography.body-sm-medium}"
758
+ padding: "0"
759
+ button-icon-circular:
760
+ backgroundColor: "{colors.canvas}"
761
+ textColor: "{colors.ink}"
762
+ rounded: "{rounded.full}"
763
+ size: 36px
764
+ border: "1px solid {colors.hairline}"
765
+ card-base:
766
+ backgroundColor: "{colors.canvas}"
767
+ rounded: "{rounded.xl}"
768
+ padding: "{spacing.xl}"
769
+ border: "1px solid {colors.hairline-soft}"
770
+ card-feature:
771
+ backgroundColor: "{colors.canvas}"
772
+ rounded: "{rounded.xxxl}"
773
+ padding: "{spacing.xxl}"
774
+ border: "1px solid {colors.hairline-soft}"
775
+ card-feature-yellow:
776
+ backgroundColor: "{colors.brand-yellow}"
777
+ textColor: "{colors.primary}"
778
+ rounded: "{rounded.xxxl}"
779
+ padding: "{spacing.xxl}"
780
+ card-feature-coral:
781
+ backgroundColor: "{colors.coral-light}"
782
+ textColor: "{colors.primary}"
783
+ rounded: "{rounded.xxxl}"
784
+ padding: "{spacing.xxl}"
785
+ card-feature-teal:
786
+ backgroundColor: "{colors.teal-light}"
787
+ textColor: "{colors.primary}"
788
+ rounded: "{rounded.xxxl}"
789
+ padding: "{spacing.xxl}"
790
+ card-feature-rose:
791
+ backgroundColor: "{colors.rose-light}"
792
+ textColor: "{colors.primary}"
793
+ rounded: "{rounded.xxxl}"
794
+ padding: "{spacing.xxl}"
795
+ card-customer-story:
796
+ backgroundColor: "{colors.canvas}"
797
+ rounded: "{rounded.xxxl}"
798
+ padding: "0"
799
+ border: "1px solid {colors.hairline-soft}"
800
+ card-stat:
801
+ backgroundColor: "transparent"
802
+ textColor: "{colors.ink}"
803
+ typography: "{typography.stat-display}"
804
+ padding: "{spacing.lg}"
805
+ pricing-card:
806
+ backgroundColor: "{colors.canvas}"
807
+ rounded: "{rounded.xl}"
808
+ padding: "{spacing.xxl}"
809
+ border: "1px solid {colors.hairline}"
810
+ pricing-card-featured:
811
+ backgroundColor: "{colors.surface-pricing-featured}"
812
+ rounded: "{rounded.xl}"
813
+ padding: "{spacing.xxl}"
814
+ border: "2px solid {colors.brand-blue}"
815
+ pricing-card-enterprise:
816
+ backgroundColor: "{colors.primary}"
817
+ textColor: "{colors.on-primary}"
818
+ rounded: "{rounded.xl}"
819
+ padding: "{spacing.xxl}"
820
+ text-input:
821
+ backgroundColor: "{colors.canvas}"
822
+ textColor: "{colors.ink}"
823
+ typography: "{typography.body-md}"
824
+ rounded: "{rounded.md}"
825
+ padding: "{spacing.sm} {spacing.md}"
826
+ border: "1px solid {colors.hairline-strong}"
827
+ height: 44px
828
+ text-input-focused:
829
+ backgroundColor: "{colors.canvas}"
830
+ textColor: "{colors.ink}"
831
+ border: "2px solid {colors.brand-blue}"
832
+ search-pill:
833
+ backgroundColor: "{colors.surface}"
834
+ textColor: "{colors.steel}"
835
+ typography: "{typography.body-sm}"
836
+ rounded: "{rounded.md}"
837
+ padding: "{spacing.xs} {spacing.md}"
838
+ height: 40px
839
+ border: "1px solid {colors.hairline}"
840
+ filter-dropdown:
841
+ backgroundColor: "{colors.canvas}"
842
+ textColor: "{colors.ink}"
843
+ typography: "{typography.body-sm-medium}"
844
+ rounded: "{rounded.full}"
845
+ padding: "{spacing.xs} {spacing.md}"
846
+ border: "1px solid {colors.hairline-strong}"
847
+ pill-tab:
848
+ backgroundColor: "{colors.canvas}"
849
+ textColor: "{colors.steel}"
850
+ typography: "{typography.body-sm-medium}"
851
+ rounded: "{rounded.full}"
852
+ padding: "{spacing.xs} {spacing.md}"
853
+ border: "1px solid {colors.hairline}"
854
+ pill-tab-active:
855
+ backgroundColor: "{colors.primary}"
856
+ textColor: "{colors.on-primary}"
857
+ rounded: "{rounded.full}"
858
+ border: "1px solid {colors.primary}"
859
+ toggle-monthly-yearly:
860
+ backgroundColor: "{colors.surface}"
861
+ textColor: "{colors.ink}"
862
+ rounded: "{rounded.full}"
863
+ padding: "4px"
864
+ badge-promo:
865
+ backgroundColor: "{colors.brand-yellow}"
866
+ textColor: "{colors.primary}"
867
+ typography: "{typography.caption-bold}"
868
+ rounded: "{rounded.full}"
869
+ padding: "4px 10px"
870
+ badge-tag-yellow:
871
+ backgroundColor: "{colors.surface-yellow}"
872
+ textColor: "{colors.yellow-dark}"
873
+ typography: "{typography.caption-bold}"
874
+ rounded: "{rounded.full}"
875
+ padding: "4px 10px"
876
+ badge-tag-purple:
877
+ backgroundColor: "{colors.surface-pricing-featured}"
878
+ textColor: "{colors.brand-blue}"
879
+ typography: "{typography.caption-bold}"
880
+ rounded: "{rounded.full}"
881
+ padding: "4px 10px"
882
+ badge-tag-coral:
883
+ backgroundColor: "{colors.coral-light}"
884
+ textColor: "{colors.coral-dark}"
885
+ typography: "{typography.caption-bold}"
886
+ rounded: "{rounded.full}"
887
+ padding: "4px 10px"
888
+ badge-success:
889
+ backgroundColor: "{colors.success-accent}"
890
+ textColor: "{colors.on-primary}"
891
+ typography: "{typography.caption-bold}"
892
+ rounded: "{rounded.full}"
893
+ padding: "4px 10px"
894
+ badge-discount:
895
+ backgroundColor: "{colors.brand-yellow}"
896
+ textColor: "{colors.primary}"
897
+ typography: "{typography.caption-bold}"
898
+ rounded: "{rounded.sm}"
899
+ padding: "2px 6px"
900
+ promo-banner:
901
+ backgroundColor: "{colors.primary}"
902
+ textColor: "{colors.on-primary}"
903
+ typography: "{typography.body-sm-medium}"
904
+ padding: "{spacing.sm} {spacing.md}"
905
+ comparison-table:
906
+ backgroundColor: "{colors.canvas}"
907
+ textColor: "{colors.ink}"
908
+ typography: "{typography.body-sm}"
909
+ rounded: "{rounded.md}"
910
+ border: "1px solid {colors.hairline}"
911
+ comparison-row:
912
+ backgroundColor: "{colors.canvas}"
913
+ textColor: "{colors.ink}"
914
+ padding: "{spacing.md} {spacing.lg}"
915
+ border: "0 0 1px {colors.hairline-soft} solid"
916
+ template-card:
917
+ backgroundColor: "{colors.canvas}"
918
+ rounded: "{rounded.xl}"
919
+ padding: "{spacing.md}"
920
+ border: "1px solid {colors.hairline}"
921
+ whiteboard-mockup:
922
+ backgroundColor: "{colors.canvas}"
923
+ rounded: "{rounded.xl}"
924
+ padding: "0"
925
+ border: "1px solid {colors.hairline-soft}"
926
+ shadow: "rgba(5, 0, 56, 0.08) 0px 12px 32px -4px"
927
+ faq-accordion-item:
928
+ backgroundColor: "{colors.canvas}"
929
+ rounded: "{rounded.md}"
930
+ padding: "{spacing.xl}"
931
+ border: "0 0 1px {colors.hairline} solid"
932
+ logo-wall-item:
933
+ backgroundColor: "transparent"
934
+ textColor: "{colors.steel}"
935
+ typography: "{typography.body-md-medium}"
936
+ padding: "{spacing.lg}"
937
+ hero-band-marketing:
938
+ backgroundColor: "{colors.canvas}"
939
+ textColor: "{colors.ink}"
940
+ typography: "{typography.hero-display}"
941
+ rounded: "0"
942
+ padding: "{spacing.hero}"
943
+ cta-banner-dark:
944
+ backgroundColor: "{colors.primary}"
945
+ textColor: "{colors.on-primary}"
946
+ rounded: "{rounded.feature}"
947
+ padding: "{spacing.section}"
948
+ industry-tile:
949
+ backgroundColor: "{colors.canvas}"
950
+ rounded: "{rounded.xl}"
951
+ padding: "{spacing.xl}"
952
+ border: "1px solid {colors.hairline-soft}"
953
+ capterra-badge:
954
+ backgroundColor: "{colors.canvas}"
955
+ textColor: "{colors.ink}"
956
+ typography: "{typography.caption}"
957
+ rounded: "{rounded.md}"
958
+ padding: "{spacing.sm} {spacing.md}"
959
+ border: "1px solid {colors.hairline}"
960
+ footer-region:
961
+ backgroundColor: "{colors.footer-bg}"
962
+ textColor: "{colors.on-dark}"
963
+ typography: "{typography.body-sm}"
964
+ padding: "{spacing.section} {spacing.xxl}"
965
+ footer-link:
966
+ backgroundColor: "transparent"
967
+ textColor: "{colors.on-dark-muted}"
968
+ typography: "{typography.body-sm}"
969
+ padding: "{spacing.xxs} 0"
970
+ app-store-badge:
971
+ backgroundColor: "{colors.canvas}"
972
+ textColor: "{colors.primary}"
973
+ typography: "{typography.caption-bold}"
974
+ rounded: "{rounded.md}"
975
+ padding: "{spacing.sm} {spacing.md}"
976
+ ---
977
+
978
+ ## Overview
979
+
980
+ Miro positions itself as the AI-powered visual workspace through a confident, slightly playful brand voice. The homepage opens with a stark white canvas anchored by a small canary-yellow Miro wordmark in the top-left, a black-pill primary CTA "Get started free" and a secondary "Book a demo" outline pill — then dramatic real-Miro-board mockup imagery (sticky notes, kanban, mind maps) carries the visual weight. Across deeper surfaces, the system breaks open: pastel feature cards (rose, teal, coral, yellow) echo the actual sticky-note color palette of the live whiteboard product, and customer story cards reuse those tints to differentiate brand vignettes.
981
+
982
+ Roobert PRO — Miro's custom display face — anchors every typographic surface, from the 80px hero display down to 11px micro labels. The face's slightly rounded, geometric character pairs naturally with the playful product photography and the friendly product positioning. Black-pill primary buttons (`{rounded.full}`) dominate marketing CTAs; the brand color, signature canary yellow ({colors.brand-yellow}), is reserved for the wordmark, top promo banners, and "yellow tag" feature pills — never as a primary CTA. The 4-tier pricing comparison (Free / Starter / Business / Enterprise) leads into the densest surface in the system: a feature comparison table that runs ~80 rows deep across multiple section dividers.
983
+
984
+ **Key Characteristics:**
985
+ - Stark white canvas + Miro wordmark in canary yellow ({colors.brand-yellow}) as the recognizable opening signature
986
+ - Black-pill primary CTAs ({colors.primary} + `{rounded.full}`) as the dominant interactive element
987
+ - Pastel feature cards (yellow, rose, coral, teal, mint) that echo the actual sticky-note palette
988
+ - Roobert PRO across every UI surface; geometric, slightly rounded character
989
+ - Real Miro-board mockup imagery used as feature illustrations
990
+ - 4-tier pricing card grid + dense feature comparison table
991
+ - Massive dark footer ({colors.footer-bg}) with multi-column links + app-store badges
992
+
993
+ ## Colors
994
+
995
+ > Source pages: miro.com/ (homepage), /pricing/ (4-tier comparison), /products/ai-workflows/ (AI product), /agile/ (vertical landing), /customers/ (story directory). Token coverage was identical across all five pages.
996
+
997
+ ### Brand & Accent
998
+ - **Miro Yellow** ({colors.brand-yellow}): The brand's recognizable canary yellow — wordmark color, top promo banner, "yellow tag" pills
999
+ - **Yellow Deep** ({colors.brand-yellow-deep}): Darker variant for hover states and emphasis
1000
+ - **Yellow Light** ({colors.yellow-light}): Pale yellow background tint for tag chips
1001
+ - **Yellow Dark** ({colors.yellow-dark}): Yellow-tag text color (dark olive) for chip foreground
1002
+ - **Brand Blue** ({colors.brand-blue}): Action blue for inline links and featured-pricing-tier border
1003
+ - **Blue Pressed** ({colors.blue-pressed}): Pressed-state blue
1004
+ - **Brand Coral** ({colors.brand-coral}): Coral accent for warm callouts
1005
+ - **Coral Light** ({colors.coral-light}): Pale coral for feature card backgrounds
1006
+ - **Coral Dark** ({colors.coral-dark}): Coral-tag text color (deep wine)
1007
+ - **Brand Rose** ({colors.brand-rose}): Soft rose-pink for feature card variants
1008
+ - **Brand Teal** ({colors.brand-teal}): Brand teal
1009
+ - **Teal Light** ({colors.teal-light}): Pale teal for feature card backgrounds
1010
+ - **Moss Dark** ({colors.moss-dark}): Deep teal-green text color
1011
+ - **Brand Pink** ({colors.brand-pink}): Pale pink for soft callouts
1012
+ - **Brand Orange Light** ({colors.brand-orange-light}): Soft orange for feature card backgrounds
1013
+
1014
+ ### Surface
1015
+ - **Canvas White** ({colors.canvas}): Page background and primary card surface
1016
+ - **Surface** ({colors.surface}): Subtle section backgrounds, search-pill rest
1017
+ - **Surface Soft** ({colors.surface-soft}): Quieter section divisions
1018
+ - **Surface Yellow** ({colors.surface-yellow}): Pale yellow-tinted surface for tag chip
1019
+ - **Surface Pricing Featured** ({colors.surface-pricing-featured}): Pale lavender for featured pricing tier
1020
+ - **Hairline** ({colors.hairline}): 1px borders and primary dividers
1021
+ - **Hairline Soft** ({colors.hairline-soft}): Quieter table-row dividers
1022
+ - **Hairline Strong** ({colors.hairline-strong}): Stronger 1px border for inputs
1023
+
1024
+ ### Text
1025
+ - **Ink Deep** ({colors.ink-deep}): Headlines on lighter feature cards
1026
+ - **Ink** ({colors.ink}): Primary headlines and body text
1027
+ - **Charcoal** ({colors.charcoal}): Body emphasis text
1028
+ - **Slate** ({colors.slate}): Secondary text, metadata
1029
+ - **Steel** ({colors.steel}): Tertiary text, footer links
1030
+ - **Stone** ({colors.stone}): Captions, muted labels
1031
+ - **Muted** ({colors.muted}): Disabled labels, input placeholders
1032
+ - **On Dark** ({colors.on-dark}): White text on dark surfaces
1033
+ - **On Dark Muted** ({colors.on-dark-muted}): Reduced-opacity white on dark
1034
+
1035
+ ### Semantic
1036
+ - **Success Accent** ({colors.success-accent}): Confirmation/success indicator green
1037
+ - **Brand Red** ({colors.brand-red}): Soft red for error backgrounds
1038
+ - **Brand Red Dark** ({colors.brand-red-dark}): Stronger red for error borders
1039
+
1040
+ ## Typography
1041
+
1042
+ ### Font Family
1043
+ **Roobert PRO** (primary): Miro's custom geometric sans-serif typeface. Used across every UI surface from oversized 80px hero displays to 11px micro labels. The face has a slightly rounded, friendly character that matches the brand's playful product positioning. Fallbacks: Noto Sans, -apple-system, BlinkMacSystemFont, sans-serif.
1044
+
1045
+ ### Hierarchy
1046
+
1047
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
1048
+ |---|---|---|---|---|---|
1049
+ | `{typography.hero-display}` | 80px | 500 | 1.05 | -2px | Marketing hero ("See how teams get great done with Miro") |
1050
+ | `{typography.display-lg}` | 60px | 500 | 1.10 | -1.5px | Major section openers |
1051
+ | `{typography.heading-1}` | 48px | 500 | 1.15 | -1px | Page-level headlines |
1052
+ | `{typography.heading-2}` | 36px | 500 | 1.20 | -0.5px | Subsection headlines |
1053
+ | `{typography.heading-3}` | 28px | 500 | 1.25 | 0 | Card titles |
1054
+ | `{typography.heading-4}` | 22px | 500 | 1.30 | 0 | Feature tile titles |
1055
+ | `{typography.heading-5}` | 18px | 500 | 1.40 | 0 | FAQ questions, smaller cards |
1056
+ | `{typography.subtitle}` | 18px | 400 | 1.50 | 0 | Hero subtitle |
1057
+ | `{typography.body-md}` | 16px | 400 | 1.50 | 0 | Primary body text |
1058
+ | `{typography.body-md-medium}` | 16px | 500 | 1.50 | 0 | Logo wall labels |
1059
+ | `{typography.body-sm}` | 14px | 400 | 1.50 | 0 | Secondary body, table cells |
1060
+ | `{typography.body-sm-medium}` | 14px | 500 | 1.50 | 0 | Filter dropdowns, button labels |
1061
+ | `{typography.caption}` | 13px | 400 | 1.40 | 0 | Helper text |
1062
+ | `{typography.caption-bold}` | 13px | 600 | 1.40 | 0 | Badge labels, tag chips |
1063
+ | `{typography.micro}` | 12px | 500 | 1.40 | 0 | Footer microcopy |
1064
+ | `{typography.micro-uppercase}` | 11px | 600 | 1.40 | 0.5px | Section dividers in tables |
1065
+ | `{typography.button-md}` | 14px | 500 | 1.30 | 0 | Pill button labels |
1066
+ | `{typography.stat-display}` | 64px | 500 | 1.10 | -1.5px | "100M+ users" stat callouts |
1067
+
1068
+ ### Principles
1069
+ - **Tight hero leading** (1.05) creates magazine-grade display headlines on the 80px hero
1070
+ - **Negative letter-spacing progression** — display sizes use -2px to -1.5px; smaller headings relax to 0
1071
+ - **Stat-display token** (64px / 500) for marketing stat callouts
1072
+ - **Single weight scale** — 400 (body), 500 (medium emphasis + headings), 600 (badges and uppercase). Roobert PRO does not use 700 in this system.
1073
+
1074
+ ## Layout
1075
+
1076
+ ### Spacing System
1077
+ - **Base unit**: 4px (8px primary increment)
1078
+ - **Tokens**: `{spacing.xxs}` (4px) · `{spacing.xs}` (8px) · `{spacing.sm}` (12px) · `{spacing.md}` (16px) · `{spacing.lg}` (20px) · `{spacing.xl}` (24px) · `{spacing.xxl}` (32px) · `{spacing.xxxl}` (40px) · `{spacing.section-sm}` (48px) · `{spacing.section}` (64px) · `{spacing.section-lg}` (96px) · `{spacing.hero}` (120px)
1079
+ - **Section rhythm**: Marketing pages use `{spacing.section-lg}` (96px); pricing comparison tightens to `{spacing.section}` (64px); customer story stack uses `{spacing.xxl}` (32px)
1080
+ - **Card internal padding**: `{spacing.xl}` (24px) for compact cards; `{spacing.xxl}` (32px) for feature panels
1081
+
1082
+ ### Grid & Container
1083
+ - Marketing pages use 1280px max-width with 32px gutters
1084
+ - Pricing page renders 4-tier card row at desktop (Free / Starter / Business / Enterprise)
1085
+ - Customer stories page uses 2-column grid with filter dropdowns
1086
+ - AI Workflows page uses 2-column hero, then 3-up feature grid
1087
+
1088
+ ### Whitespace Philosophy
1089
+ Marketing surfaces give content generous breathing room — `{spacing.hero}` (120px) hero padding gives the small wordmark room to breathe. Pricing surfaces tighten dramatically.
1090
+
1091
+ ## Elevation & Depth
1092
+
1093
+ The system runs predominantly flat with strategic depth on hero mockups.
1094
+
1095
+ | Level | Treatment | Use |
1096
+ |---|---|---|
1097
+ | 0 (flat) | No shadow; `{colors.hairline-soft}` border | Default cards, table rows, form inputs |
1098
+ | 1 (subtle) | `rgba(5, 0, 56, 0.04) 0px 1px 2px 0px` | Subtle hover-elevated tiles |
1099
+ | 2 (card) | `rgba(5, 0, 56, 0.06) 0px 4px 12px 0px` | Standard feature cards |
1100
+ | 3 (mockup) | `rgba(5, 0, 56, 0.08) 0px 12px 32px -4px` | Hero whiteboard mockup framing |
1101
+ | 4 (modal) | `rgba(5, 0, 56, 0.12) 0px 16px 48px -8px` | Modals, dropdowns |
1102
+
1103
+ ### Decorative Depth
1104
+ - The atmospheric depth on Miro's hero comes from the live-product-board mockup illustrations — sticky notes layered at z-offsets, color-block tints behind whiteboard frames
1105
+ - Pastel feature cards carry their own visual weight via saturated background color
1106
+ - Customer-story cards layer dark photographic content with overlay scrims
1107
+
1108
+ ## Shapes
1109
+
1110
+ ### Border Radius Scale
1111
+
1112
+ | Token | Value | Use |
1113
+ |---|---|---|
1114
+ | `{rounded.xs}` | 4px | Small chips, micro-controls |
1115
+ | `{rounded.sm}` | 6px | Discount badges |
1116
+ | `{rounded.md}` | 8px | Inputs, search-pill |
1117
+ | `{rounded.lg}` | 12px | Standard cards, table containers |
1118
+ | `{rounded.xl}` | 16px | Pricing cards, feature panels |
1119
+ | `{rounded.xxl}` | 20px | Larger feature cards |
1120
+ | `{rounded.xxxl}` | 28px | Pastel feature cards (yellow, rose, coral, teal) |
1121
+ | `{rounded.feature}` | 32px | Hero CTA banner cards |
1122
+ | `{rounded.full}` | 9999px | All buttons, pill tabs, badges |
1123
+
1124
+ ### Photography Geometry
1125
+ - Real Miro board mockups render with `{rounded.xl}` (16px) corners and a subtle drop shadow
1126
+ - Customer story cards use `{rounded.xxxl}` (28px) corners with full-bleed photography
1127
+ - Template card thumbnails use `{rounded.xl}` (16px) with photographic content
1128
+ - Customer logos wall presents wordmarks inline at consistent 100px height
1129
+
1130
+ ## Components
1131
+
1132
+ > Per the no-hover policy, hover states are NOT documented. Default and pressed/active states only.
1133
+
1134
+ ### Buttons
1135
+
1136
+ **`button-primary`** — Black pill primary CTA, the dominant action ("Get started free").
1137
+ - Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.
1138
+ - Pressed state `button-primary-pressed` lifts to `{colors.charcoal}`.
1139
+ - Disabled state `button-primary-disabled` uses `{colors.hairline}` background and `{colors.muted}` text.
1140
+
1141
+ **`button-yellow`** — Brand-yellow pill for moments of brand emphasis.
1142
+ - Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.
1143
+
1144
+ **`button-blue`** — Brand-blue pill for inline action callouts.
1145
+ - Background `{colors.brand-blue}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.
1146
+
1147
+ **`button-secondary`** — Outlined pill for secondary actions ("Book a demo").
1148
+ - Background transparent, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.
1149
+
1150
+ **`button-on-dark`** — White pill for dark CTA banners.
1151
+ - Background `{colors.on-dark}`, text `{colors.primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.
1152
+
1153
+ **`button-ghost`** — Quieter rectangular ghost button.
1154
+ - Background transparent, text `{colors.ink}`, typography `{typography.button-md}`, padding `8px 12px`, rounded `{rounded.md}`.
1155
+
1156
+ **`button-link`** — Inline text link.
1157
+ - Background transparent, text `{colors.brand-blue}`, typography `{typography.body-sm-medium}`, padding `0`.
1158
+
1159
+ **`button-icon-circular`** — 36×36px circular utility button.
1160
+ - Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline}`, rounded `{rounded.full}`.
1161
+
1162
+ ### Cards & Containers
1163
+
1164
+ **`card-base`** — Standard content card.
1165
+ - Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.
1166
+
1167
+ **`card-feature`** — White feature card with larger 28px corners.
1168
+ - Background `{colors.canvas}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline-soft}`.
1169
+
1170
+ **`card-feature-yellow`** — Pastel-yellow feature card.
1171
+ - Background `{colors.brand-yellow}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.
1172
+
1173
+ **`card-feature-coral`** — Pastel-coral feature card variant.
1174
+ - Background `{colors.coral-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.
1175
+
1176
+ **`card-feature-teal`** — Pastel-teal feature card variant.
1177
+ - Background `{colors.teal-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.
1178
+
1179
+ **`card-feature-rose`** — Pastel-rose feature card variant.
1180
+ - Background `{colors.rose-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.
1181
+
1182
+ **`card-customer-story`** — Customer story card.
1183
+ - Background `{colors.canvas}`, rounded `{rounded.xxxl}`, padding `0` (image fills the card), border `1px solid {colors.hairline-soft}`.
1184
+
1185
+ **`card-stat`** — Stat-row cell for "100M+ users".
1186
+ - Background transparent, text `{colors.ink}`, typography `{typography.stat-display}`, padding `{spacing.lg}`.
1187
+
1188
+ **`pricing-card`** — Standard pricing tier card.
1189
+ - Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline}`.
1190
+
1191
+ **`pricing-card-featured`** — Featured pricing tier (Business — lavender background + blue border).
1192
+ - Background `{colors.surface-pricing-featured}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`, border `2px solid {colors.brand-blue}`.
1193
+
1194
+ **`pricing-card-enterprise`** — Dark-canvas enterprise tier card.
1195
+ - Background `{colors.primary}`, text `{colors.on-primary}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`.
1196
+
1197
+ ### Inputs & Forms
1198
+
1199
+ **`text-input`** — Standard text field.
1200
+ - Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, height 44px.
1201
+
1202
+ **`text-input-focused`** — Activated state.
1203
+ - Border switches to `2px solid {colors.brand-blue}`.
1204
+
1205
+ **`search-pill`** — Search bar.
1206
+ - Background `{colors.surface}`, text `{colors.steel}`, typography `{typography.body-sm}`, rounded `{rounded.md}`, height 40px, border `1px solid {colors.hairline}`.
1207
+
1208
+ **`filter-dropdown`** — Pill-shaped filter dropdown ("Company use" / "Industry" / "Use case").
1209
+ - Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.body-sm-medium}`, rounded `{rounded.full}`, padding `{spacing.xs} {spacing.md}`, border `1px solid {colors.hairline-strong}`.
1210
+
1211
+ ### Tabs
1212
+
1213
+ **`pill-tab`** + **`pill-tab-active`** — Pill-style tab nav.
1214
+ - Inactive: background `{colors.canvas}`, text `{colors.steel}`, border `1px solid {colors.hairline}`, padding `{spacing.xs} {spacing.md}`, rounded `{rounded.full}`.
1215
+ - Active: background `{colors.primary}`, text `{colors.on-primary}`.
1216
+
1217
+ **`toggle-monthly-yearly`** — Two-state pill toggle (Monthly / Annual on pricing).
1218
+ - Background `{colors.surface}`, rounded `{rounded.full}`, padding `4px`.
1219
+
1220
+ ### Badges & Status
1221
+
1222
+ **`badge-promo`** — Yellow promo banner badge.
1223
+ - Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1224
+
1225
+ **`badge-tag-yellow`** — Soft-yellow feature tag chip ("Yellow" tag on AI Workflows page).
1226
+ - Background `{colors.surface-yellow}`, text `{colors.yellow-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1227
+
1228
+ **`badge-tag-purple`** — Lavender feature tag chip ("AI agent" tag).
1229
+ - Background `{colors.surface-pricing-featured}`, text `{colors.brand-blue}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1230
+
1231
+ **`badge-tag-coral`** — Coral feature tag chip variant.
1232
+ - Background `{colors.coral-light}`, text `{colors.coral-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1233
+
1234
+ **`badge-success`** — Green success indicator.
1235
+ - Background `{colors.success-accent}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1236
+
1237
+ **`badge-discount`** — Yellow rectangular discount pill ("Save 15%").
1238
+ - Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.sm}`, padding `2px 6px`.
1239
+
1240
+ **`promo-banner`** — Sticky black promo strip ABOVE the top nav.
1241
+ - Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.body-sm-medium}`, padding `{spacing.sm} {spacing.md}`. Carries inline yellow "GET YOUR SPOT" pill.
1242
+
1243
+ ### Tables
1244
+
1245
+ **`comparison-table`** — Pricing feature comparison table.
1246
+ - Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.body-sm}`, rounded `{rounded.md}`, border `1px solid {colors.hairline}`.
1247
+
1248
+ **`comparison-row`** — Individual feature row.
1249
+ - Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md} {spacing.lg}`, bottom border `1px solid {colors.hairline-soft}`.
1250
+
1251
+ ### Documentation Components
1252
+
1253
+ **`whiteboard-mockup`** — Real Miro-board UI rendered as feature illustration.
1254
+ - Background `{colors.canvas}`, rounded `{rounded.xl}`, border `1px solid {colors.hairline-soft}`, shadow `rgba(5, 0, 56, 0.08) 0px 12px 32px -4px`.
1255
+
1256
+ **`template-card`** — Template thumbnail card.
1257
+ - Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.md}`, border `1px solid {colors.hairline}`.
1258
+
1259
+ **`industry-tile`** — Industry-vertical tile.
1260
+ - Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.
1261
+
1262
+ **`faq-accordion-item`** — FAQ panel item.
1263
+ - Background `{colors.canvas}`, rounded `{rounded.md}`, padding `{spacing.xl}`, bottom border `1px solid {colors.hairline}`.
1264
+
1265
+ **`logo-wall-item`** — Customer logo wordmark cell.
1266
+ - Background transparent, text `{colors.steel}`, typography `{typography.body-md-medium}`, padding `{spacing.lg}`.
1267
+
1268
+ **`capterra-badge`** — Review/rating badge in the footer.
1269
+ - Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.caption}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, border `1px solid {colors.hairline}`.
1270
+
1271
+ **`app-store-badge`** — App store / Google Play download pill.
1272
+ - Background `{colors.canvas}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`.
1273
+
1274
+ ### Navigation
1275
+
1276
+ **Top Navigation (Marketing)** — Sticky white bar with yellow Miro wordmark + horizontal links + right-side CTAs.
1277
+ - Background `{colors.canvas}`, height ~64px.
1278
+ - Left: Yellow square Miro wordmark + horizontal link list (Product, Solutions, Resources).
1279
+ - Right: "Login / Pricing / Contact sales" links + black-pill "Get started free".
1280
+
1281
+ ### Signature Components
1282
+
1283
+ **`hero-band-marketing`** — Marketing hero band.
1284
+ - Background `{colors.canvas}`, padding `{spacing.hero}`.
1285
+ - Layout: centered headline in `{typography.hero-display}`, centered subtitle, centered button row, then whiteboard mockup illustration below.
1286
+
1287
+ **`cta-banner-dark`** — Dark CTA banner at the bottom of feature pages.
1288
+ - Background `{colors.primary}`, text `{colors.on-primary}`, rounded `{rounded.feature}`, padding `{spacing.section}`. Centered headline + subtitle + `button-on-dark` "Get started free".
1289
+
1290
+ **`footer-region`** — Massive multi-column dark footer.
1291
+ - Background `{colors.footer-bg}`, padding `{spacing.section} {spacing.xxl}`.
1292
+ - 6-column link grid (Product / Solutions / Tools / Resources / Company / Plans & Pricing).
1293
+ - Section headings in `{typography.body-md-medium}` `{colors.on-dark}`.
1294
+
1295
+ **`footer-link`** — Individual link in the footer.
1296
+ - Background transparent, text `{colors.on-dark-muted}`, typography `{typography.body-sm}`, padding `{spacing.xxs} 0`.
1297
+
1298
+ ## Do's and Don'ts
1299
+
1300
+ ### Do
1301
+ - Reserve `{colors.brand-yellow}` for the wordmark, top promo banner, and "yellow tag" chips
1302
+ - Use `{colors.primary}` (black) as the dominant CTA on all surfaces
1303
+ - Pair pastel feature cards (yellow, rose, coral, teal) with white feature cards in the same viewport
1304
+ - Apply `{rounded.full}` to every button, every pill tab, every status badge
1305
+ - Apply `{rounded.xxxl}` (28px) to pastel feature cards
1306
+ - Use real Miro-board mockups as feature illustrations
1307
+ - Maintain Roobert PRO across every UI surface
1308
+
1309
+ ### Don't
1310
+ - Don't use `{colors.brand-yellow}` on standard CTAs or large background surfaces
1311
+ - Don't introduce additional accent colors beyond yellow + brand pastels
1312
+ - Don't soften corners on buttons; the pill is a brand signature
1313
+ - Don't reduce hero leading below 1.05
1314
+ - Don't apply heavy shadows on flat documentation cards; reserve elevation for whiteboard mockups
1315
+ - Don't use stock photography — show the live product board UI
1316
+
1317
+ ## Responsive Behavior
1318
+
1319
+ ### Breakpoints
1320
+ | Name | Width | Key Changes |
1321
+ |---|---|---|
1322
+ | Mobile (small) | < 480px | Single column. Hero scales to 36px. Pill nav collapses to hamburger. Pricing tiers stack 1-up. |
1323
+ | Mobile (large) | 480 – 767px | Feature tiles 2-up. Hero scales to 48px. |
1324
+ | Tablet | 768 – 1023px | 2-column feature grids. Pill-tab nav returns. |
1325
+ | Desktop | 1024 – 1279px | 4-tier pricing card row. Customer story grid 2-up. Hero at 64px. |
1326
+ | Wide Desktop | ≥ 1280px | Full hero presentation, 80px hero display. |
1327
+
1328
+ ### Touch Targets
1329
+ - Pill buttons render at 40–44px effective height — at WCAG AAA floor
1330
+ - Circular icon buttons: 36×36px desktop → 44×44px mobile
1331
+ - Form inputs render at 44px height
1332
+ - Filter dropdowns render at ~36px tall — bumps to 44px on mobile
1333
+
1334
+ ### Collapsing Strategy
1335
+ - **Promo banner** stays full-width; truncates at < 480px
1336
+ - **Top nav** below 1024px collapses to hamburger
1337
+ - **Hero band**: 2-column hero collapses to stacked at < 1024px
1338
+ - **Pricing comparison**: 4-column tiers → 2-column tablet → 1-column mobile; comparison table becomes horizontal-scroll
1339
+ - **Customer story grid**: 2-up → 1-up at < 768px
1340
+ - **Hero typography**: 80px → 60px tablet → 48px mobile-large → 36px mobile-small
1341
+ - **Footer**: 6-column desktop → 3-column tablet → 2-column mobile → accordion at small mobile
1342
+
1343
+ ### Image Behavior
1344
+ - Whiteboard mockups maintain aspect ratio; lazy-loaded below the fold
1345
+ - Customer story photography uses 16:9 ratio with full-bleed scaling
1346
+ - Logo wall presents wordmarks at consistent 100px height
1347
+
1348
+ ## Iteration Guide
1349
+
1350
+ 1. Focus on ONE component at a time
1351
+ 2. Reference component names and tokens directly
1352
+ 3. Run `npx @google/design.md lint DESIGN.md` after edits
1353
+ 4. Add new variants as separate `components:` entries
1354
+ 5. Default to `{typography.body-md}` for body and `{typography.subtitle}` for emphasis
1355
+ 6. Keep `{colors.brand-yellow}` confined to wordmark, promo banner, and yellow-tag chips
1356
+ 7. Pill-shaped buttons (`{rounded.full}`) always
1357
+ 8. When showing the product, use a real Miro-board mockup with sticky-note color tints
1358
+
1359
+ ## Known Gaps
1360
+
1361
+ - Specific dark-mode token values not surfaced
1362
+ - Animation/transition timings not extracted; recommend 150–200ms ease
1363
+ - Form validation success state not explicitly captured beyond defaults
1364
+ - Sticky note color tints inside the actual whiteboard product are richer than what marketing surfaces capture