savant-code 0.0.21 → 0.0.23

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 +16 -8
  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,916 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "wise-inspired-design-analysis",
4
+ "displayName": "Wise-Inspired-design-analysis",
5
+ "description": "An inspired interpretation of Wise's design language — a global money-transfer brand whose surface combines an unusually heavy near-black display sans (weight 900 at 64–126 px) with a vivid lime-green brand accent, sage-tinted surface neutrals, and rounded white cards on a pale green-tinted canvas; the whole system reads more like a Scandinavian fintech magazine than a bank.",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/wise.design.md",
13
+ "sourceContentHash": "442df0ad7380efd8712f5574bdca34a73cfb41a2a43454ff459863a6258af547",
14
+ "normalizedContentHash": "479a3ed35b87aeca26e803fe0f92449562f9b138d6a3787c582ab1b161967978",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/wise.design.md",
19
+ "license": "MIT"
20
+ },
21
+ "fonts": [
22
+ {
23
+ "family": "Inter",
24
+ "fallback": [
25
+ "system-ui",
26
+ "sans-serif"
27
+ ],
28
+ "redistributable": false
29
+ },
30
+ {
31
+ "family": "Wise Sans",
32
+ "fallback": [
33
+ "system-ui",
34
+ "sans-serif"
35
+ ],
36
+ "redistributable": false
37
+ }
38
+ ],
39
+ "tokens": {
40
+ "colors": {
41
+ "accent-cyan": "#38c8ff",
42
+ "accent-orange": "#ffc091",
43
+ "body": "#454745",
44
+ "canvas": "#ffffff",
45
+ "canvas-soft": "#e8ebe6",
46
+ "ink": "#0e0f0c",
47
+ "ink-deep": "#163300",
48
+ "mute": "#868685",
49
+ "negative": "#d03238",
50
+ "negative-bg": "#320707",
51
+ "negative-darkest": "#a7000d",
52
+ "negative-deep": "#a72027",
53
+ "on-primary": "#0e0f0c",
54
+ "positive": "#2ead4b",
55
+ "positive-deep": "#054d28",
56
+ "primary": "#9fe870",
57
+ "primary-active": "#cdffad",
58
+ "primary-neutral": "#c5edab",
59
+ "primary-pale": "#e2f6d5",
60
+ "warning": "#ffd11a",
61
+ "warning-content": "#4a3b1c",
62
+ "warning-deep": "#b86700"
63
+ },
64
+ "typography": {
65
+ "display-mega": {
66
+ "fontFamily": "Wise Sans, Inter, system-ui, -apple-system, sans-serif",
67
+ "fontSize": "126px",
68
+ "fontWeight": 900,
69
+ "lineHeight": "107.1px"
70
+ },
71
+ "display-xxl": {
72
+ "fontFamily": "Wise Sans, Inter, system-ui, sans-serif",
73
+ "fontSize": "96px",
74
+ "fontWeight": 900,
75
+ "lineHeight": "81.6px"
76
+ },
77
+ "display-xl": {
78
+ "fontFamily": "Wise Sans, Inter, system-ui, sans-serif",
79
+ "fontSize": "64px",
80
+ "fontWeight": 900,
81
+ "lineHeight": "54.4px"
82
+ },
83
+ "display-lg": {
84
+ "fontFamily": "Wise Sans, Inter, system-ui, sans-serif",
85
+ "fontSize": "47px",
86
+ "fontWeight": 400,
87
+ "letterSpacing": "-0.108px",
88
+ "lineHeight": "70.5px"
89
+ },
90
+ "display-md": {
91
+ "fontFamily": "Wise Sans, Inter, system-ui, sans-serif",
92
+ "fontSize": "40px",
93
+ "fontWeight": 900,
94
+ "lineHeight": "34px"
95
+ },
96
+ "display-sm": {
97
+ "fontFamily": "Inter, system-ui, sans-serif",
98
+ "fontSize": "32px",
99
+ "fontWeight": 600,
100
+ "letterSpacing": "-0.96px",
101
+ "lineHeight": "38.4px"
102
+ },
103
+ "display-xs": {
104
+ "fontFamily": "Inter, system-ui, sans-serif",
105
+ "fontSize": "24px",
106
+ "fontWeight": 600,
107
+ "letterSpacing": "-0.48px",
108
+ "lineHeight": "31.2px"
109
+ },
110
+ "body-lg": {
111
+ "fontFamily": "Inter, system-ui, sans-serif",
112
+ "fontSize": "20px",
113
+ "fontWeight": 400,
114
+ "lineHeight": "30px"
115
+ },
116
+ "body-md": {
117
+ "fontFamily": "Inter, system-ui, sans-serif",
118
+ "fontSize": "16px",
119
+ "fontWeight": 400,
120
+ "lineHeight": "24px"
121
+ },
122
+ "body-md-strong": {
123
+ "fontFamily": "Inter, system-ui, sans-serif",
124
+ "fontSize": "16px",
125
+ "fontWeight": 600,
126
+ "lineHeight": "24px"
127
+ },
128
+ "body-sm": {
129
+ "fontFamily": "Inter, system-ui, sans-serif",
130
+ "fontSize": "14px",
131
+ "fontWeight": 400,
132
+ "lineHeight": "20px"
133
+ },
134
+ "body-sm-strong": {
135
+ "fontFamily": "Inter, system-ui, sans-serif",
136
+ "fontSize": "14px",
137
+ "fontWeight": 600,
138
+ "lineHeight": "20px"
139
+ },
140
+ "caption": {
141
+ "fontFamily": "Inter, system-ui, sans-serif",
142
+ "fontSize": "12px",
143
+ "fontWeight": 400,
144
+ "lineHeight": "16px"
145
+ },
146
+ "button-md": {
147
+ "fontFamily": "Inter, system-ui, sans-serif",
148
+ "fontSize": "16px",
149
+ "fontWeight": 600,
150
+ "lineHeight": "24px"
151
+ }
152
+ },
153
+ "spacing": {
154
+ "2xl": "32px",
155
+ "3xl": "48px",
156
+ "lg": "16px",
157
+ "md": "12px",
158
+ "sm": "8px",
159
+ "xl": "24px",
160
+ "xs": "4px",
161
+ "xxs": "2px"
162
+ },
163
+ "radius": {
164
+ "full": "9999px",
165
+ "lg": "16px",
166
+ "md": "12px",
167
+ "none": "0px",
168
+ "pill": "9999px",
169
+ "sm": "8px",
170
+ "xl": "24px"
171
+ },
172
+ "components": {
173
+ "nav-bar": {
174
+ "backgroundColor": "{colors.canvas}",
175
+ "padding": "{spacing.md} {spacing.xl}",
176
+ "textColor": "{colors.ink}",
177
+ "typography": "{typography.body-sm-strong}"
178
+ },
179
+ "nav-link": {
180
+ "textColor": "{colors.ink}",
181
+ "typography": "{typography.body-sm-strong}"
182
+ },
183
+ "button-primary": {
184
+ "backgroundColor": "{colors.primary}",
185
+ "padding": "{spacing.md} {spacing.xl}",
186
+ "rounded": "{rounded.xl}",
187
+ "textColor": "{colors.on-primary}",
188
+ "typography": "{typography.button-md}"
189
+ },
190
+ "button-secondary": {
191
+ "backgroundColor": "{colors.canvas-soft}",
192
+ "padding": "{spacing.md} {spacing.xl}",
193
+ "rounded": "{rounded.xl}",
194
+ "textColor": "{colors.ink}",
195
+ "typography": "{typography.button-md}"
196
+ },
197
+ "button-tertiary": {
198
+ "backgroundColor": "{colors.canvas}",
199
+ "borderColor": "{colors.ink}",
200
+ "padding": "{spacing.md} {spacing.xl}",
201
+ "rounded": "{rounded.xl}",
202
+ "textColor": "{colors.ink}",
203
+ "typography": "{typography.button-md}"
204
+ },
205
+ "button-icon-circular": {
206
+ "backgroundColor": "{colors.canvas}",
207
+ "padding": "{spacing.sm}",
208
+ "rounded": "{rounded.full}",
209
+ "textColor": "{colors.ink}"
210
+ },
211
+ "text-input": {
212
+ "backgroundColor": "{colors.canvas}",
213
+ "borderColor": "{colors.ink}",
214
+ "padding": "{spacing.md} {spacing.lg}",
215
+ "rounded": "{rounded.md}",
216
+ "textColor": "{colors.ink}",
217
+ "typography": "{typography.body-md}"
218
+ },
219
+ "card-content": {
220
+ "backgroundColor": "{colors.canvas}",
221
+ "padding": "{spacing.xl}",
222
+ "rounded": "{rounded.xl}",
223
+ "textColor": "{colors.ink}",
224
+ "typography": "{typography.body-md}"
225
+ },
226
+ "card-feature-sage": {
227
+ "backgroundColor": "{colors.canvas-soft}",
228
+ "padding": "{spacing.xl}",
229
+ "rounded": "{rounded.xl}",
230
+ "textColor": "{colors.ink}",
231
+ "typography": "{typography.body-md}"
232
+ },
233
+ "card-feature-green": {
234
+ "backgroundColor": "{colors.primary-pale}",
235
+ "padding": "{spacing.xl}",
236
+ "rounded": "{rounded.xl}",
237
+ "textColor": "{colors.ink}",
238
+ "typography": "{typography.body-md}"
239
+ },
240
+ "card-feature-dark": {
241
+ "backgroundColor": "{colors.ink}",
242
+ "padding": "{spacing.xl}",
243
+ "rounded": "{rounded.xl}",
244
+ "textColor": "{colors.primary}",
245
+ "typography": "{typography.body-md}"
246
+ },
247
+ "hero-band": {
248
+ "backgroundColor": "{colors.canvas-soft}",
249
+ "padding": "{spacing.3xl} {spacing.xl}",
250
+ "textColor": "{colors.ink}",
251
+ "typography": "{typography.display-mega}"
252
+ },
253
+ "hero-band-dark": {
254
+ "backgroundColor": "{colors.ink}",
255
+ "padding": "{spacing.3xl} {spacing.xl}",
256
+ "textColor": "{colors.primary}",
257
+ "typography": "{typography.display-mega}"
258
+ },
259
+ "content-band": {
260
+ "backgroundColor": "{colors.canvas}",
261
+ "padding": "{spacing.3xl} {spacing.xl}",
262
+ "textColor": "{colors.ink}",
263
+ "typography": "{typography.display-md}"
264
+ },
265
+ "currency-converter-card": {
266
+ "backgroundColor": "{colors.canvas}",
267
+ "borderColor": "{colors.ink}",
268
+ "padding": "{spacing.xl}",
269
+ "rounded": "{rounded.xl}",
270
+ "textColor": "{colors.ink}",
271
+ "typography": "{typography.body-md}"
272
+ },
273
+ "badge-positive": {
274
+ "backgroundColor": "{colors.primary-pale}",
275
+ "padding": "{spacing.xs} {spacing.md}",
276
+ "rounded": "{rounded.pill}",
277
+ "textColor": "{colors.positive-deep}",
278
+ "typography": "{typography.body-sm-strong}"
279
+ },
280
+ "badge-negative": {
281
+ "backgroundColor": "{colors.negative-bg}",
282
+ "padding": "{spacing.xs} {spacing.md}",
283
+ "rounded": "{rounded.pill}",
284
+ "textColor": "{colors.on-primary}",
285
+ "typography": "{typography.body-sm-strong}"
286
+ },
287
+ "footer": {
288
+ "backgroundColor": "{colors.ink}",
289
+ "padding": "{spacing.3xl} {spacing.xl}",
290
+ "textColor": "{colors.canvas-soft}",
291
+ "typography": "{typography.body-sm}"
292
+ },
293
+ "ex-pricing-tier": {
294
+ "backgroundColor": "{colors.canvas-soft}",
295
+ "borderColor": "{colors.mute}",
296
+ "description": "Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.",
297
+ "padding": "{spacing.xl}",
298
+ "rounded": "{rounded.xl}",
299
+ "textColor": "{colors.ink}"
300
+ },
301
+ "ex-pricing-tier-featured": {
302
+ "backgroundColor": "{colors.ink}",
303
+ "description": "Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).",
304
+ "padding": "{spacing.xl}",
305
+ "rounded": "{rounded.xl}",
306
+ "textColor": "{colors.on-primary}"
307
+ },
308
+ "ex-product-selector": {
309
+ "backgroundColor": "{colors.canvas-soft}",
310
+ "description": "What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).",
311
+ "padding": "{spacing.xl}",
312
+ "rounded": "{rounded.xl}"
313
+ },
314
+ "ex-cart-drawer": {
315
+ "backgroundColor": "{colors.canvas}",
316
+ "description": "Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).",
317
+ "item-divider": "{colors.canvas-soft}",
318
+ "padding": "{spacing.xl}",
319
+ "rounded": "{rounded.xl}"
320
+ },
321
+ "ex-app-shell-row": {
322
+ "activeIndicator": "{colors.primary}",
323
+ "backgroundColor": "{colors.canvas}",
324
+ "description": "Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.",
325
+ "padding": "{spacing.md} {spacing.lg}",
326
+ "rounded": "{rounded.sm}"
327
+ },
328
+ "ex-data-table-cell": {
329
+ "bodyTypography": "{typography.body-sm}",
330
+ "cellPadding": "{spacing.md} {spacing.lg}",
331
+ "description": "Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.",
332
+ "headerBackground": "{colors.canvas-soft}",
333
+ "headerTypography": "{typography.caption}",
334
+ "rowBorder": "{colors.canvas-soft}"
335
+ },
336
+ "ex-auth-form-card": {
337
+ "backgroundColor": "{colors.canvas-soft}",
338
+ "description": "Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.",
339
+ "padding": "{spacing.xl}",
340
+ "rounded": "{rounded.xl}"
341
+ },
342
+ "ex-modal-card": {
343
+ "backgroundColor": "{colors.canvas}",
344
+ "description": "Modal dialog surface — same chrome as feature-card with elevated shadow.",
345
+ "padding": "{spacing.xl}",
346
+ "rounded": "{rounded.xl}"
347
+ },
348
+ "ex-empty-state-card": {
349
+ "backgroundColor": "{colors.canvas-soft}",
350
+ "captionTypography": "{typography.body-md}",
351
+ "description": "Empty-state illustration frame.",
352
+ "padding": "{spacing.3xl}",
353
+ "rounded": "{rounded.xl}"
354
+ },
355
+ "ex-toast": {
356
+ "backgroundColor": "{colors.canvas}",
357
+ "description": "Toast notification surface — feature-card shape + medium shadow.",
358
+ "padding": "{spacing.md} {spacing.lg}",
359
+ "rounded": "{rounded.xl}",
360
+ "typography": "{typography.body-sm}"
361
+ }
362
+ },
363
+ "extensions": {
364
+ "description": "An inspired interpretation of Wise's design language — a global money-transfer brand whose surface combines an unusually heavy near-black display sans (weight 900 at 64–126 px) with a vivid lime-green brand accent, sage-tinted surface neutrals, and rounded white cards on a pale green-tinted canvas; the whole system reads more like a Scandinavian fintech magazine than a bank.",
365
+ "name": "Wise-Inspired-design-analysis",
366
+ "version": "alpha"
367
+ }
368
+ }
369
+ }
370
+
371
+ ---
372
+
373
+ ---
374
+ version: alpha
375
+ name: Wise-Inspired-design-analysis
376
+ description: An inspired interpretation of Wise's design language — a global money-transfer brand whose surface combines an unusually heavy near-black display sans (weight 900 at 64–126 px) with a vivid lime-green brand accent, sage-tinted surface neutrals, and rounded white cards on a pale green-tinted canvas; the whole system reads more like a Scandinavian fintech magazine than a bank.
377
+
378
+ colors:
379
+ primary: "#9fe870"
380
+ on-primary: "#0e0f0c"
381
+ primary-active: "#cdffad"
382
+ primary-neutral: "#c5edab"
383
+ primary-pale: "#e2f6d5"
384
+ ink: "#0e0f0c"
385
+ ink-deep: "#163300"
386
+ body: "#454745"
387
+ mute: "#868685"
388
+ canvas: "#ffffff"
389
+ canvas-soft: "#e8ebe6"
390
+ positive: "#2ead4b"
391
+ positive-deep: "#054d28"
392
+ warning: "#ffd11a"
393
+ warning-deep: "#b86700"
394
+ warning-content: "#4a3b1c"
395
+ negative: "#d03238"
396
+ negative-deep: "#a72027"
397
+ negative-darkest: "#a7000d"
398
+ negative-bg: "#320707"
399
+ accent-orange: "#ffc091"
400
+ accent-cyan: "#38c8ff"
401
+
402
+ typography:
403
+ display-mega:
404
+ fontFamily: Wise Sans, Inter, system-ui, -apple-system, sans-serif
405
+ fontSize: 126px
406
+ fontWeight: 900
407
+ lineHeight: 107.1px
408
+ display-xxl:
409
+ fontFamily: Wise Sans, Inter, system-ui, sans-serif
410
+ fontSize: 96px
411
+ fontWeight: 900
412
+ lineHeight: 81.6px
413
+ display-xl:
414
+ fontFamily: Wise Sans, Inter, system-ui, sans-serif
415
+ fontSize: 64px
416
+ fontWeight: 900
417
+ lineHeight: 54.4px
418
+ display-lg:
419
+ fontFamily: Wise Sans, Inter, system-ui, sans-serif
420
+ fontSize: 47px
421
+ fontWeight: 400
422
+ lineHeight: 70.5px
423
+ letterSpacing: -0.108px
424
+ display-md:
425
+ fontFamily: Wise Sans, Inter, system-ui, sans-serif
426
+ fontSize: 40px
427
+ fontWeight: 900
428
+ lineHeight: 34px
429
+ display-sm:
430
+ fontFamily: Inter, system-ui, sans-serif
431
+ fontSize: 32px
432
+ fontWeight: 600
433
+ lineHeight: 38.4px
434
+ letterSpacing: -0.96px
435
+ display-xs:
436
+ fontFamily: Inter, system-ui, sans-serif
437
+ fontSize: 24px
438
+ fontWeight: 600
439
+ lineHeight: 31.2px
440
+ letterSpacing: -0.48px
441
+ body-lg:
442
+ fontFamily: Inter, system-ui, sans-serif
443
+ fontSize: 20px
444
+ fontWeight: 400
445
+ lineHeight: 30px
446
+ body-md:
447
+ fontFamily: Inter, system-ui, sans-serif
448
+ fontSize: 16px
449
+ fontWeight: 400
450
+ lineHeight: 24px
451
+ body-md-strong:
452
+ fontFamily: Inter, system-ui, sans-serif
453
+ fontSize: 16px
454
+ fontWeight: 600
455
+ lineHeight: 24px
456
+ body-sm:
457
+ fontFamily: Inter, system-ui, sans-serif
458
+ fontSize: 14px
459
+ fontWeight: 400
460
+ lineHeight: 20px
461
+ body-sm-strong:
462
+ fontFamily: Inter, system-ui, sans-serif
463
+ fontSize: 14px
464
+ fontWeight: 600
465
+ lineHeight: 20px
466
+ caption:
467
+ fontFamily: Inter, system-ui, sans-serif
468
+ fontSize: 12px
469
+ fontWeight: 400
470
+ lineHeight: 16px
471
+ button-md:
472
+ fontFamily: Inter, system-ui, sans-serif
473
+ fontSize: 16px
474
+ fontWeight: 600
475
+ lineHeight: 24px
476
+
477
+ rounded:
478
+ none: 0px
479
+ sm: 8px
480
+ md: 12px
481
+ lg: 16px
482
+ xl: 24px
483
+ pill: 9999px
484
+ full: 9999px
485
+
486
+ spacing:
487
+ xxs: 2px
488
+ xs: 4px
489
+ sm: 8px
490
+ md: 12px
491
+ lg: 16px
492
+ xl: 24px
493
+ 2xl: 32px
494
+ 3xl: 48px
495
+
496
+ components:
497
+ nav-bar:
498
+ backgroundColor: "{colors.canvas}"
499
+ textColor: "{colors.ink}"
500
+ typography: "{typography.body-sm-strong}"
501
+ padding: "{spacing.md} {spacing.xl}"
502
+ nav-link:
503
+ textColor: "{colors.ink}"
504
+ typography: "{typography.body-sm-strong}"
505
+ button-primary:
506
+ backgroundColor: "{colors.primary}"
507
+ textColor: "{colors.on-primary}"
508
+ typography: "{typography.button-md}"
509
+ rounded: "{rounded.xl}"
510
+ padding: "{spacing.md} {spacing.xl}"
511
+ button-secondary:
512
+ backgroundColor: "{colors.canvas-soft}"
513
+ textColor: "{colors.ink}"
514
+ typography: "{typography.button-md}"
515
+ rounded: "{rounded.xl}"
516
+ padding: "{spacing.md} {spacing.xl}"
517
+ button-tertiary:
518
+ backgroundColor: "{colors.canvas}"
519
+ textColor: "{colors.ink}"
520
+ borderColor: "{colors.ink}"
521
+ typography: "{typography.button-md}"
522
+ rounded: "{rounded.xl}"
523
+ padding: "{spacing.md} {spacing.xl}"
524
+ button-icon-circular:
525
+ backgroundColor: "{colors.canvas}"
526
+ textColor: "{colors.ink}"
527
+ rounded: "{rounded.full}"
528
+ padding: "{spacing.sm}"
529
+ text-input:
530
+ backgroundColor: "{colors.canvas}"
531
+ textColor: "{colors.ink}"
532
+ borderColor: "{colors.ink}"
533
+ typography: "{typography.body-md}"
534
+ rounded: "{rounded.md}"
535
+ padding: "{spacing.md} {spacing.lg}"
536
+ card-content:
537
+ backgroundColor: "{colors.canvas}"
538
+ textColor: "{colors.ink}"
539
+ typography: "{typography.body-md}"
540
+ rounded: "{rounded.xl}"
541
+ padding: "{spacing.xl}"
542
+ card-feature-sage:
543
+ backgroundColor: "{colors.canvas-soft}"
544
+ textColor: "{colors.ink}"
545
+ typography: "{typography.body-md}"
546
+ rounded: "{rounded.xl}"
547
+ padding: "{spacing.xl}"
548
+ card-feature-green:
549
+ backgroundColor: "{colors.primary-pale}"
550
+ textColor: "{colors.ink}"
551
+ typography: "{typography.body-md}"
552
+ rounded: "{rounded.xl}"
553
+ padding: "{spacing.xl}"
554
+ card-feature-dark:
555
+ backgroundColor: "{colors.ink}"
556
+ textColor: "{colors.primary}"
557
+ typography: "{typography.body-md}"
558
+ rounded: "{rounded.xl}"
559
+ padding: "{spacing.xl}"
560
+ hero-band:
561
+ backgroundColor: "{colors.canvas-soft}"
562
+ textColor: "{colors.ink}"
563
+ typography: "{typography.display-mega}"
564
+ padding: "{spacing.3xl} {spacing.xl}"
565
+ hero-band-dark:
566
+ backgroundColor: "{colors.ink}"
567
+ textColor: "{colors.primary}"
568
+ typography: "{typography.display-mega}"
569
+ padding: "{spacing.3xl} {spacing.xl}"
570
+ content-band:
571
+ backgroundColor: "{colors.canvas}"
572
+ textColor: "{colors.ink}"
573
+ typography: "{typography.display-md}"
574
+ padding: "{spacing.3xl} {spacing.xl}"
575
+ currency-converter-card:
576
+ backgroundColor: "{colors.canvas}"
577
+ textColor: "{colors.ink}"
578
+ borderColor: "{colors.ink}"
579
+ typography: "{typography.body-md}"
580
+ rounded: "{rounded.xl}"
581
+ padding: "{spacing.xl}"
582
+ badge-positive:
583
+ backgroundColor: "{colors.primary-pale}"
584
+ textColor: "{colors.positive-deep}"
585
+ typography: "{typography.body-sm-strong}"
586
+ rounded: "{rounded.pill}"
587
+ padding: "{spacing.xs} {spacing.md}"
588
+ badge-negative:
589
+ backgroundColor: "{colors.negative-bg}"
590
+ textColor: "{colors.on-primary}"
591
+ typography: "{typography.body-sm-strong}"
592
+ rounded: "{rounded.pill}"
593
+ padding: "{spacing.xs} {spacing.md}"
594
+ footer:
595
+ backgroundColor: "{colors.ink}"
596
+ textColor: "{colors.canvas-soft}"
597
+ typography: "{typography.body-sm}"
598
+ padding: "{spacing.3xl} {spacing.xl}"
599
+
600
+ # ─── Examples (illustrative) — auto-derived; resolve any TO_FILL markers below ───
601
+ ex-pricing-tier:
602
+ description: "Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface."
603
+ backgroundColor: "{colors.canvas-soft}"
604
+ textColor: "{colors.ink}"
605
+ borderColor: "{colors.mute}"
606
+ rounded: "{rounded.xl}"
607
+ padding: "{spacing.xl}"
608
+ ex-pricing-tier-featured:
609
+ description: "Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode)."
610
+ backgroundColor: "{colors.ink}"
611
+ textColor: "{colors.on-primary}"
612
+ rounded: "{rounded.xl}"
613
+ padding: "{spacing.xl}"
614
+ ex-product-selector:
615
+ description: "What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery)."
616
+ backgroundColor: "{colors.canvas-soft}"
617
+ rounded: "{rounded.xl}"
618
+ padding: "{spacing.xl}"
619
+ ex-cart-drawer:
620
+ description: "Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart)."
621
+ backgroundColor: "{colors.canvas}"
622
+ rounded: "{rounded.xl}"
623
+ padding: "{spacing.xl}"
624
+ item-divider: "{colors.canvas-soft}"
625
+ ex-app-shell-row:
626
+ description: "Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator."
627
+ backgroundColor: "{colors.canvas}"
628
+ activeIndicator: "{colors.primary}"
629
+ rounded: "{rounded.sm}"
630
+ padding: "{spacing.md} {spacing.lg}"
631
+ ex-data-table-cell:
632
+ description: "Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm."
633
+ headerBackground: "{colors.canvas-soft}"
634
+ headerTypography: "{typography.caption}"
635
+ bodyTypography: "{typography.body-sm}"
636
+ cellPadding: "{spacing.md} {spacing.lg}"
637
+ rowBorder: "{colors.canvas-soft}"
638
+ ex-auth-form-card:
639
+ description: "Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside."
640
+ backgroundColor: "{colors.canvas-soft}"
641
+ rounded: "{rounded.xl}"
642
+ padding: "{spacing.xl}"
643
+ ex-modal-card:
644
+ description: "Modal dialog surface — same chrome as feature-card with elevated shadow."
645
+ backgroundColor: "{colors.canvas}"
646
+ rounded: "{rounded.xl}"
647
+ padding: "{spacing.xl}"
648
+ ex-empty-state-card:
649
+ description: "Empty-state illustration frame."
650
+ backgroundColor: "{colors.canvas-soft}"
651
+ rounded: "{rounded.xl}"
652
+ padding: "{spacing.3xl}"
653
+ captionTypography: "{typography.body-md}"
654
+ ex-toast:
655
+ description: "Toast notification surface — feature-card shape + medium shadow."
656
+ backgroundColor: "{colors.canvas}"
657
+ rounded: "{rounded.xl}"
658
+ padding: "{spacing.md} {spacing.lg}"
659
+ typography: "{typography.body-sm}"
660
+
661
+ ---
662
+
663
+
664
+ ## Overview
665
+
666
+ Wise — the global money-transfer brand — wears its identity in a single signature pairing: a vivid lime-green `{colors.primary}` (`#9fe870`) used as the CTA pill and brand accent, set against a pale sage-tinted canvas `{colors.canvas-soft}` (`#e8ebe6`) that runs across the hero band, and a near-black ink `{colors.ink}` (`#0e0f0c`) with a hint of warmth from the brand's underlying olive cast. The brand reads more like a calm Scandinavian magazine than a bank — generous whitespace, large rounded cards, and an unusually heavy display sans set at weight 900 carrying every hero headline.
667
+
668
+ Display typography is the second decisive voice. The proprietary `Wise Sans` family carries hero displays at weight 900 in scales from 64 px up to 126 px on the largest hero. The brand pairs Wise Sans 900 with Inter at weight 600 for sub-displays — the contrast between the chunky proprietary face and Inter's neutrality creates a particular hierarchy: Wise Sans for the brand moment, Inter for everything else.
669
+
670
+ Cards are universally pill-rounded — `{rounded.xl}` 24 px is the brand's signature card radius. Buttons take the same 24 px pill-rectangle shape. The brand never uses sharp corners on UI elements; the visual softness is part of the friendly fintech voice.
671
+
672
+ **Key Characteristics:**
673
+ - A single lime-green CTA accent `{colors.primary}` (`#9fe870`) — the brand's universal primary action color. No second accent.
674
+ - Two-face display typography — Wise Sans (proprietary, weight 900, hero scale) + Inter (weight 600, sub-display scale). The contrast is the brand's typographic story.
675
+ - `{rounded.xl}` 24 px is the canonical card and button radius. Generous, friendly.
676
+ - Sage-tinted canvas `{colors.canvas-soft}` (`#e8ebe6`) is the brand's hero surface; white `{colors.canvas}` is reserved for cards within the sage band.
677
+ - A full semantic palette: positive green family, warning yellow family, negative red family — each documented with content / hover / active variants for in-product use.
678
+ - Currency-converter card on the hero — the brand's signature interactive component, hosting from/to amount inputs.
679
+
680
+ ## Colors
681
+
682
+ ### Brand & Accent
683
+ - **Wise Green** (`{colors.primary}` — `#9fe870`): The brand's universal CTA color. Every primary button, every "Send money" pill, the brand's logo accent.
684
+ - **Wise Green Hover** (`{colors.primary-active}` — `#cdffad`): The lighter green for active state.
685
+ - **Wise Green Neutral** (`{colors.primary-neutral}` — `#c5edab`): A mid-saturation green used as a neutral active fill.
686
+ - **Wise Green Pale** (`{colors.primary-pale}` — `#e2f6d5`): The lightest green for soft surface tints / badge backgrounds.
687
+
688
+ ### Surface
689
+ - **Canvas** (`{colors.canvas}` — `#ffffff`): Pure white for card interiors.
690
+ - **Canvas Soft** (`{colors.canvas-soft}` — `#e8ebe6`): The sage-tinted page background. Defining mood of the brand.
691
+
692
+ ### Text
693
+ - **Ink** (`{colors.ink}` — `#0e0f0c`): Near-black with a hint of olive warmth — the brand's default text and headings color.
694
+ - **Ink Deep** (`{colors.ink-deep}` — `#163300`): A deep forest-green ink used on positive-state surfaces.
695
+ - **Body** (`{colors.body}` — `#454745`): Secondary body text.
696
+ - **Mute** (`{colors.mute}` — `#868685`): Lowest-priority text — captions, placeholder, fine print.
697
+
698
+ ### Semantic
699
+ - **Positive** (`{colors.positive}` — `#2ead4b`): Success indicator.
700
+ - **Positive Deep** (`{colors.positive-deep}` — `#054d28`): Pressed positive state.
701
+ - **Warning** (`{colors.warning}` — `#ffd11a`): Caution indicator.
702
+ - **Warning Deep** (`{colors.warning-deep}` — `#b86700`): Pressed warning.
703
+ - **Warning Content** (`{colors.warning-content}` — `#4a3b1c`): Text on warning surfaces.
704
+ - **Negative** (`{colors.negative}` — `#d03238`): Destructive / error red.
705
+ - **Negative Deep** (`{colors.negative-deep}` — `#a72027`): Pressed destructive.
706
+ - **Negative Darkest** (`{colors.negative-darkest}` — `#a7000d`): Highest-emphasis destructive text.
707
+ - **Negative Bg** (`{colors.negative-bg}` — `#320707`): Dark maroon for destructive callout backgrounds.
708
+
709
+ ### Brand Accent — Tertiary
710
+ - **Accent Orange** (`{colors.accent-orange}` — `#ffc091`): Bright peach used inside illustrative content / pricing cards.
711
+ - **Accent Cyan** (`{colors.accent-cyan}` — `#38c8ff`): Bright sky-blue used as a tertiary illustration accent.
712
+
713
+ ## Typography
714
+
715
+ ### Font Family
716
+ Two faces ladder the system:
717
+ 1. **Wise Sans** — proprietary geometric sans with an unusually heavy weight 900 used for all hero displays. The face is the brand's typographic signature. Always at weight 900, never lighter on the marketing surface.
718
+ 2. **Inter** — used for sub-displays (weight 600), all body, and form labels. Loaded with `font-feature-settings: "calt"` for contextual alternates.
719
+
720
+ ### Hierarchy
721
+
722
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
723
+ |---|---|---|---|---|---|
724
+ | `{typography.display-mega}` | 126px | 900 | 107.1px | 0 | Hero stencil at maximum scale. |
725
+ | `{typography.display-xxl}` | 96px | 900 | 81.6px | 0 | Sub-hero scale. |
726
+ | `{typography.display-xl}` | 64px | 900 | 54.4px | 0 | Standard hero headline. |
727
+ | `{typography.display-lg}` | 47px | 400 | 70.5px | -0.108px | Lighter sub-display. |
728
+ | `{typography.display-md}` | 40px | 900 | 34px | 0 | Section / card headlines. |
729
+ | `{typography.display-sm}` | 32px | 600 | 38.4px | -0.96px | Inter-rendered section headings. |
730
+ | `{typography.display-xs}` | 24px | 600 | 31.2px | -0.48px | Sub-section displays. |
731
+ | `{typography.body-lg}` | 20px | 400 | 30px | 0 | Lead paragraphs. |
732
+ | `{typography.body-md}` | 16px | 400 | 24px | 0 | Default body. |
733
+ | `{typography.body-md-strong}` | 16px | 600 | 24px | 0 | Bold inline body. |
734
+ | `{typography.body-sm}` | 14px | 400 | 20px | 0 | Secondary body. |
735
+ | `{typography.body-sm-strong}` | 14px | 600 | 20px | 0 | Bold caption / nav-link. |
736
+ | `{typography.caption}` | 12px | 400 | 16px | 0 | Fine print. |
737
+ | `{typography.button-md}` | 16px | 600 | 24px | 0 | Button label. |
738
+
739
+ ### Principles
740
+ - **Weight 900 for hero, weight 600 for everything else.** The brand's display ceiling is full-black weight; everything below is semibold.
741
+ - **Wise Sans for the brand voice, Inter for utility.** Strict role separation.
742
+
743
+ ### Note on Font Substitutes
744
+ Wise Sans is proprietary. Open-source substitutes:
745
+ - **Display** — *Inter* at weight 900 or *Manrope* at weight 800 / 900 captures the geometric heaviness. *Geist* weight 800 is a passable second choice.
746
+ - **Sub-display + body** — *Inter* is the brand's actual second face.
747
+
748
+ ## Layout
749
+
750
+ ### Spacing System
751
+ - **Base unit**: 4 px.
752
+ - **Tokens**: `{spacing.xxs}` 2 px · `{spacing.xs}` 4 px · `{spacing.sm}` 8 px · `{spacing.md}` 12 px · `{spacing.lg}` 16 px · `{spacing.xl}` 24 px · `{spacing.2xl}` 32 px · `{spacing.3xl}` 48 px.
753
+ - **Section padding**: bands use `{spacing.3xl}` 48 px top/bottom on desktop.
754
+ - **Card interior**: cards at `{spacing.xl}` 24 px.
755
+
756
+ ### Grid & Container
757
+ - Marketing container centres at ~1200 px.
758
+ - Hero: split layout (headline left, currency-converter card right) at desktop; stacked at mobile.
759
+ - Feature grids: 2-up / 3-up at desktop.
760
+
761
+ ### Responsive Strategy
762
+
763
+ #### Breakpoints
764
+
765
+ | Name | Width | Key Changes |
766
+ |---|---|---|
767
+ | Mobile | < 768px | Hero stacks; converter card full-width below headline; grids 1-up. |
768
+ | Tablet | 768–1023px | Grids 2-up. |
769
+ | Desktop | ≥ 1024px | Hero split; full grids. |
770
+
771
+ #### Touch Targets
772
+ Buttons render ~48 px tall (12 vertical padding + 24 line). WCAG AAA at all widths.
773
+
774
+ #### Image Behavior
775
+ Photography is sparse; the brand prefers illustrative SVGs and product mockups inside cards. Country flag thumbnails appear inside currency rows.
776
+
777
+ ## Elevation & Depth
778
+
779
+ | Level | Treatment | Use |
780
+ |---|---|---|
781
+ | Level 0 — Flat | No shadow, no border. | Default. |
782
+ | Level 1 — Hairline on Dark | 1 px solid `{colors.ink}` border. | Tertiary outline buttons, form inputs. |
783
+ | Level 2 — Soft Card | Implicit Level 0 white card sitting on sage canvas — the surface contrast IS the elevation. | Cards on the sage hero band. |
784
+
785
+ The brand uses surface contrast (`{colors.canvas-soft}` background vs `{colors.canvas}` cards) as the primary elevation cue.
786
+
787
+ ## Shapes
788
+
789
+ ### Border Radius Scale
790
+
791
+ | Token | Value | Use |
792
+ |---|---|---|
793
+ | `{rounded.none}` | 0px | Full-bleed bands. |
794
+ | `{rounded.sm}` | 8px | Inline pills, small badges. |
795
+ | `{rounded.md}` | 12px | Form inputs, smaller chrome. |
796
+ | `{rounded.lg}` | 16px | Mid-size cards. |
797
+ | `{rounded.xl}` | 24px | The brand's canonical button + card radius. |
798
+ | `{rounded.pill}` | 9999px | Status pills and full-radius accents. |
799
+ | `{rounded.full}` | 9999px | Circular icon containers. |
800
+
801
+ ## Components
802
+
803
+ ### Buttons
804
+
805
+ **`button-primary`** — the lime-green CTA pill.
806
+ - Background `{colors.primary}`, text `{colors.on-primary}`, label `{typography.button-md}`, padding `{spacing.md} {spacing.xl}`, shape `{rounded.xl}` 24 px.
807
+
808
+ **`button-secondary`** — the sage-tinted secondary.
809
+ - Background `{colors.canvas-soft}`, text `{colors.ink}`, same typography / padding / shape.
810
+
811
+ **`button-tertiary`** — the white outline tertiary.
812
+ - Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.ink}` border, same typography / padding / shape.
813
+
814
+ **`button-icon-circular`** — the circular icon button.
815
+ - Background `{colors.canvas}`, ink icon, shape `{rounded.full}`.
816
+
817
+ ### Cards & Containers
818
+
819
+ **`card-content`** — the default white card.
820
+ - Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.xl}`, shape `{rounded.xl}`. No border, sits on sage canvas.
821
+
822
+ **`card-feature-sage`** — the sage-tinted feature card.
823
+ - Background `{colors.canvas-soft}`, text `{colors.ink}`, padding `{spacing.xl}`, shape `{rounded.xl}`.
824
+
825
+ **`card-feature-green`** — the soft-green feature card.
826
+ - Background `{colors.primary-pale}`, text `{colors.ink}`, padding `{spacing.xl}`, shape `{rounded.xl}`.
827
+
828
+ **`card-feature-dark`** — the polarity-flipped dark card with green text.
829
+ - Background `{colors.ink}`, text `{colors.primary}` (Wise green!), padding `{spacing.xl}`, shape `{rounded.xl}`. Used for promotional moments.
830
+
831
+ **`currency-converter-card`** — the brand's signature interactive widget.
832
+ - Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.ink}` border, padding `{spacing.xl}`, shape `{rounded.xl}`. Hosts from/to amount inputs + currency selectors.
833
+
834
+ ### Inputs & Forms
835
+
836
+ **`text-input`** — the canonical text input.
837
+ - Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.ink}` border, body in `{typography.body-md}`, padding `{spacing.md} {spacing.lg}`, shape `{rounded.md}`.
838
+
839
+ ### Navigation
840
+
841
+ **`nav-bar`** — the sticky top nav.
842
+ - Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md} {spacing.xl}`.
843
+
844
+ **`nav-link`** — link items inside nav.
845
+ - Text `{colors.ink}`, set in `{typography.body-sm-strong}`.
846
+
847
+ **`footer`** — the dark footer band.
848
+ - Background `{colors.ink}`, text `{colors.canvas-soft}`, padding `{spacing.3xl} {spacing.xl}`. Body in `{typography.body-sm}`.
849
+
850
+ ### Signature Components
851
+
852
+ **`hero-band`** — the sage-canvas hero band.
853
+ - Background `{colors.canvas-soft}`, text `{colors.ink}`, padding `{spacing.3xl} {spacing.xl}`. Headline in `{typography.display-mega}` (Wise Sans weight 900).
854
+
855
+ **`hero-band-dark`** — the polarity-flipped dark hero.
856
+ - Background `{colors.ink}`, text `{colors.primary}` (Wise green headline on near-black!), same padding / scale.
857
+
858
+ **`content-band`** — the white content band that follows hero.
859
+ - Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.3xl} {spacing.xl}`. Section headline in `{typography.display-md}`.
860
+
861
+ **`badge-positive`** — the positive status pill.
862
+ - Background `{colors.primary-pale}`, text `{colors.positive-deep}`, body in `{typography.body-sm-strong}`, padding `{spacing.xs} {spacing.md}`, shape `{rounded.pill}`.
863
+
864
+ **`badge-negative`** — the negative status pill.
865
+ - Background `{colors.negative-bg}`, text white, body in `{typography.body-sm-strong}`, padding `{spacing.xs} {spacing.md}`, shape `{rounded.pill}`.
866
+
867
+ ### Examples (illustrative)
868
+
869
+ > Auto-derived kit-mirror demonstration surfaces (`scripts/derive-examples-block.mjs`). Each `ex-*` entry references brand-native primitives so downstream consumers (`/preview-design`, `/generate-kit`) re-skin the same 10 surfaces consistently. `TO_FILL` markers indicate missing primitives — resolve in the LLM judgment pass.
870
+
871
+ **`ex-pricing-tier`** — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.
872
+ - Properties: `backgroundColor`, `textColor`, `borderColor`, `rounded`, `padding`
873
+
874
+ **`ex-pricing-tier-featured`** — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).
875
+ - Properties: `backgroundColor`, `textColor`, `rounded`, `padding`
876
+
877
+ **`ex-product-selector`** — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).
878
+ - Properties: `backgroundColor`, `rounded`, `padding`
879
+
880
+ **`ex-cart-drawer`** — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).
881
+ - Properties: `backgroundColor`, `rounded`, `padding`, `item-divider`
882
+
883
+ **`ex-app-shell-row`** — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.
884
+ - Properties: `backgroundColor`, `activeIndicator`, `rounded`, `padding`
885
+
886
+ **`ex-data-table-cell`** — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.
887
+ - Properties: `headerBackground`, `headerTypography`, `bodyTypography`, `cellPadding`, `rowBorder`
888
+
889
+ **`ex-auth-form-card`** — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.
890
+ - Properties: `backgroundColor`, `rounded`, `padding`
891
+
892
+ **`ex-modal-card`** — Modal dialog surface — same chrome as feature-card with elevated shadow.
893
+ - Properties: `backgroundColor`, `rounded`, `padding`
894
+
895
+ **`ex-empty-state-card`** — Empty-state illustration frame.
896
+ - Properties: `backgroundColor`, `rounded`, `padding`, `captionTypography`
897
+
898
+ **`ex-toast`** — Toast notification surface — feature-card shape + medium shadow.
899
+ - Properties: `backgroundColor`, `rounded`, `padding`, `typography`
900
+
901
+
902
+ ## Do's and Don'ts
903
+
904
+ ### Do
905
+ - Reserve `{colors.primary}` Wise green for every primary CTA. The lime-green pill IS the brand's conversion signature.
906
+ - Set hero headlines in `{typography.display-mega}` / `{typography.display-xl}` Wise Sans weight 900. Never lighter.
907
+ - Use `{rounded.xl}` 24 px for buttons and cards. The generous radius is the brand's friendliness signature.
908
+ - Cycle page surfaces in `{colors.canvas-soft}` sage canvas → `{colors.canvas}` white cards. Surface contrast carries elevation.
909
+ - Use the full semantic palette (positive / warning / negative) for in-product status — never repurpose Wise green as success indicator since it IS the brand CTA.
910
+
911
+ ### Don't
912
+ - Don't introduce a second brand accent. Wise green is the sole identity colour.
913
+ - Don't render the hero in weight 700 or lighter. The brand's display weight is 900.
914
+ - Don't render CTAs as sharp rectangles. The 24 px pill geometry is non-negotiable.
915
+ - Don't pair the green CTA with a green background. The brand always sits Wise green on neutral surfaces (sage / white / ink).
916
+ - Don't replace Wise Sans with a generic geometric sans for hero typography — the proprietary face IS the brand's voice.