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,1286 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "mistral-ai-design-analysis",
4
+ "displayName": "Mistral-AI-design-analysis",
5
+ "description": "Mistral AI brands itself with a singular signature — atmospheric sunset gradients (mustard, orange, deep red) layered over photography of mountains, plus a horizontal \"sunset stripe\" bar that closes every page. The system pairs warm cream-yellow surfaces ({colors.cream}) with a saturated orange primary CTA ({colors.primary}) and uses an elegant near-serif voice for hero displays. Coverage spans homepage (Frontier AI hero), Le Studio product page, Coding solutions, news article surfaces, contact form, and services tier page — all anchored by the signature gradient closing band.",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/mistral.ai.design.md",
13
+ "sourceContentHash": "40e2c692d72c54bae1e43446e2d059b71d773668d39d71ccb7ededa9fa07d145",
14
+ "normalizedContentHash": "d5364e26f9d5e8e51409509ec08d36ecc41ca30e9609f5f84d4aa5e6c0e7e8e2",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/mistral.ai.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": "JetBrains Mono",
32
+ "fallback": [
33
+ "system-ui",
34
+ "sans-serif"
35
+ ],
36
+ "redistributable": false
37
+ },
38
+ {
39
+ "family": "PP Editorial Old",
40
+ "fallback": [
41
+ "system-ui",
42
+ "sans-serif"
43
+ ],
44
+ "redistributable": false
45
+ }
46
+ ],
47
+ "tokens": {
48
+ "colors": {
49
+ "beige-deep": "#e6d5a8",
50
+ "block-5": "#ffe295",
51
+ "block-6": "#ffd900",
52
+ "block-7": "#ff8105",
53
+ "canvas": "#ffffff",
54
+ "charcoal": "#2c2c2c",
55
+ "cream": "#fff8e0",
56
+ "cream-deeper": "#fff0c2",
57
+ "cream-light": "#fffaeb",
58
+ "footer-cream": "#fff8e0",
59
+ "hairline": "#e5e5e5",
60
+ "hairline-soft": "#ededed",
61
+ "hairline-strong": "#c7c7c7",
62
+ "ink": "#1f1f1f",
63
+ "ink-tint": "#3d3d3d",
64
+ "link": "#fa520f",
65
+ "muted": "#a8a8a8",
66
+ "on-cream": "#1f1f1f",
67
+ "on-dark": "#ffffff",
68
+ "on-dark-muted": "#a8a8a8",
69
+ "on-primary": "#ffffff",
70
+ "primary": "#fa520f",
71
+ "primary-deep": "#cc3a05",
72
+ "slate": "#4a4a4a",
73
+ "steel": "#6a6a6a",
74
+ "stone": "#8a8a8a",
75
+ "sunshine-300": "#ffd06a",
76
+ "sunshine-500": "#ffb83e",
77
+ "sunshine-700": "#ffa110",
78
+ "sunshine-800": "#ff8105",
79
+ "sunshine-900": "#ff8a00",
80
+ "surface": "#fafafa",
81
+ "surface-code": "#1c1c1e",
82
+ "surface-cream": "#fff8e0",
83
+ "surface-cream-soft": "#fffaeb",
84
+ "yellow-saturated": "#ffd900"
85
+ },
86
+ "typography": {
87
+ "hero-display": {
88
+ "fontFamily": "PP Editorial Old",
89
+ "fontSize": "84px",
90
+ "fontWeight": 400,
91
+ "letterSpacing": "-1.5px",
92
+ "lineHeight": 1.05
93
+ },
94
+ "display-lg": {
95
+ "fontFamily": "PP Editorial Old",
96
+ "fontSize": "64px",
97
+ "fontWeight": 400,
98
+ "letterSpacing": "-1px",
99
+ "lineHeight": 1.1
100
+ },
101
+ "heading-1": {
102
+ "fontFamily": "PP Editorial Old",
103
+ "fontSize": "52px",
104
+ "fontWeight": 400,
105
+ "letterSpacing": "-0.5px",
106
+ "lineHeight": 1.15
107
+ },
108
+ "heading-2": {
109
+ "fontFamily": "Inter",
110
+ "fontSize": "36px",
111
+ "fontWeight": 500,
112
+ "letterSpacing": "-0.5px",
113
+ "lineHeight": 1.2
114
+ },
115
+ "heading-3": {
116
+ "fontFamily": "Inter",
117
+ "fontSize": "28px",
118
+ "fontWeight": 500,
119
+ "lineHeight": 1.25
120
+ },
121
+ "heading-4": {
122
+ "fontFamily": "Inter",
123
+ "fontSize": "22px",
124
+ "fontWeight": 500,
125
+ "lineHeight": 1.3
126
+ },
127
+ "heading-5": {
128
+ "fontFamily": "Inter",
129
+ "fontSize": "18px",
130
+ "fontWeight": 500,
131
+ "lineHeight": 1.4
132
+ },
133
+ "subtitle": {
134
+ "fontFamily": "Inter",
135
+ "fontSize": "18px",
136
+ "fontWeight": 400,
137
+ "lineHeight": 1.5
138
+ },
139
+ "body-md": {
140
+ "fontFamily": "Inter",
141
+ "fontSize": "16px",
142
+ "fontWeight": 400,
143
+ "lineHeight": 1.55
144
+ },
145
+ "body-md-medium": {
146
+ "fontFamily": "Inter",
147
+ "fontSize": "16px",
148
+ "fontWeight": 500,
149
+ "lineHeight": 1.55
150
+ },
151
+ "body-sm": {
152
+ "fontFamily": "Inter",
153
+ "fontSize": "14px",
154
+ "fontWeight": 400,
155
+ "lineHeight": 1.5
156
+ },
157
+ "body-sm-medium": {
158
+ "fontFamily": "Inter",
159
+ "fontSize": "14px",
160
+ "fontWeight": 500,
161
+ "lineHeight": 1.5
162
+ },
163
+ "caption": {
164
+ "fontFamily": "Inter",
165
+ "fontSize": "13px",
166
+ "fontWeight": 400,
167
+ "lineHeight": 1.4
168
+ },
169
+ "caption-bold": {
170
+ "fontFamily": "Inter",
171
+ "fontSize": "13px",
172
+ "fontWeight": 600,
173
+ "lineHeight": 1.4
174
+ },
175
+ "micro": {
176
+ "fontFamily": "Inter",
177
+ "fontSize": "12px",
178
+ "fontWeight": 500,
179
+ "lineHeight": 1.4
180
+ },
181
+ "micro-uppercase": {
182
+ "fontFamily": "Inter",
183
+ "fontSize": "11px",
184
+ "fontWeight": 600,
185
+ "letterSpacing": "1px",
186
+ "lineHeight": 1.4
187
+ },
188
+ "button-md": {
189
+ "fontFamily": "Inter",
190
+ "fontSize": "14px",
191
+ "fontWeight": 500,
192
+ "lineHeight": 1.3
193
+ },
194
+ "stat-display": {
195
+ "fontFamily": "PP Editorial Old",
196
+ "fontSize": "56px",
197
+ "fontWeight": 400,
198
+ "letterSpacing": "-1px",
199
+ "lineHeight": 1.1
200
+ },
201
+ "code-md": {
202
+ "fontFamily": "JetBrains Mono",
203
+ "fontSize": "14px",
204
+ "fontWeight": 400,
205
+ "lineHeight": 1.5
206
+ }
207
+ },
208
+ "spacing": {
209
+ "hero": "120px",
210
+ "lg": "20px",
211
+ "md": "16px",
212
+ "section": "64px",
213
+ "section-lg": "96px",
214
+ "section-sm": "48px",
215
+ "sm": "12px",
216
+ "xl": "24px",
217
+ "xs": "8px",
218
+ "xxl": "32px",
219
+ "xxs": "4px",
220
+ "xxxl": "40px"
221
+ },
222
+ "radius": {
223
+ "full": "9999px",
224
+ "lg": "12px",
225
+ "md": "8px",
226
+ "sm": "6px",
227
+ "xl": "16px",
228
+ "xs": "4px",
229
+ "xxl": "20px"
230
+ },
231
+ "components": {
232
+ "button-primary": {
233
+ "backgroundColor": "{colors.primary}",
234
+ "padding": "10px 20px",
235
+ "rounded": "{rounded.md}",
236
+ "textColor": "{colors.on-primary}",
237
+ "typography": "{typography.button-md}"
238
+ },
239
+ "button-primary-pressed": {
240
+ "backgroundColor": "{colors.primary-deep}",
241
+ "textColor": "{colors.on-primary}"
242
+ },
243
+ "button-primary-disabled": {
244
+ "backgroundColor": "{colors.hairline}",
245
+ "textColor": "{colors.muted}"
246
+ },
247
+ "button-cream": {
248
+ "backgroundColor": "{colors.cream}",
249
+ "border": "1px solid {colors.beige-deep}",
250
+ "padding": "10px 20px",
251
+ "rounded": "{rounded.md}",
252
+ "textColor": "{colors.ink}",
253
+ "typography": "{typography.button-md}"
254
+ },
255
+ "button-dark": {
256
+ "backgroundColor": "{colors.ink}",
257
+ "padding": "10px 20px",
258
+ "rounded": "{rounded.md}",
259
+ "textColor": "{colors.on-dark}",
260
+ "typography": "{typography.button-md}"
261
+ },
262
+ "button-secondary": {
263
+ "backgroundColor": "transparent",
264
+ "border": "1px solid {colors.hairline-strong}",
265
+ "padding": "10px 20px",
266
+ "rounded": "{rounded.md}",
267
+ "textColor": "{colors.ink}",
268
+ "typography": "{typography.button-md}"
269
+ },
270
+ "button-on-cream": {
271
+ "backgroundColor": "{colors.canvas}",
272
+ "border": "1px solid {colors.beige-deep}",
273
+ "padding": "10px 20px",
274
+ "rounded": "{rounded.md}",
275
+ "textColor": "{colors.ink}",
276
+ "typography": "{typography.button-md}"
277
+ },
278
+ "button-link": {
279
+ "backgroundColor": "transparent",
280
+ "padding": "0",
281
+ "textColor": "{colors.primary}",
282
+ "typography": "{typography.body-sm-medium}"
283
+ },
284
+ "card-base": {
285
+ "backgroundColor": "{colors.canvas}",
286
+ "border": "1px solid {colors.hairline-soft}",
287
+ "padding": "{spacing.xl}",
288
+ "rounded": "{rounded.lg}"
289
+ },
290
+ "card-feature": {
291
+ "backgroundColor": "{colors.canvas}",
292
+ "border": "1px solid {colors.hairline-soft}",
293
+ "padding": "{spacing.xxl}",
294
+ "rounded": "{rounded.lg}"
295
+ },
296
+ "card-cream": {
297
+ "backgroundColor": "{colors.cream}",
298
+ "border": "1px solid {colors.beige-deep}",
299
+ "padding": "{spacing.xxl}",
300
+ "rounded": "{rounded.lg}",
301
+ "textColor": "{colors.ink}"
302
+ },
303
+ "card-cream-soft": {
304
+ "backgroundColor": "{colors.surface-cream-soft}",
305
+ "padding": "{spacing.xxl}",
306
+ "rounded": "{rounded.lg}",
307
+ "textColor": "{colors.ink}"
308
+ },
309
+ "card-feature-product": {
310
+ "backgroundColor": "{colors.canvas}",
311
+ "border": "1px solid {colors.hairline-soft}",
312
+ "padding": "{spacing.xxl}",
313
+ "rounded": "{rounded.lg}",
314
+ "shadow": "rgba(0, 0, 0, 0.04) 0px 4px 12px"
315
+ },
316
+ "card-photographic": {
317
+ "backgroundColor": "{colors.surface-code}",
318
+ "padding": "0",
319
+ "rounded": "{rounded.lg}",
320
+ "textColor": "{colors.on-dark}"
321
+ },
322
+ "pricing-card": {
323
+ "backgroundColor": "{colors.canvas}",
324
+ "border": "1px solid {colors.hairline-soft}",
325
+ "padding": "{spacing.xxl}",
326
+ "rounded": "{rounded.lg}"
327
+ },
328
+ "pricing-card-featured": {
329
+ "backgroundColor": "{colors.cream}",
330
+ "border": "2px solid {colors.primary}",
331
+ "padding": "{spacing.xxl}",
332
+ "rounded": "{rounded.lg}"
333
+ },
334
+ "text-input": {
335
+ "backgroundColor": "{colors.canvas}",
336
+ "border": "1px solid {colors.hairline-strong}",
337
+ "height": "44px",
338
+ "padding": "{spacing.sm} {spacing.md}",
339
+ "rounded": "{rounded.md}",
340
+ "textColor": "{colors.ink}",
341
+ "typography": "{typography.body-md}"
342
+ },
343
+ "text-input-focused": {
344
+ "backgroundColor": "{colors.canvas}",
345
+ "border": "2px solid {colors.primary}",
346
+ "textColor": "{colors.ink}"
347
+ },
348
+ "text-area": {
349
+ "backgroundColor": "{colors.canvas}",
350
+ "border": "1px solid {colors.hairline-strong}",
351
+ "padding": "{spacing.md}",
352
+ "rounded": "{rounded.md}",
353
+ "textColor": "{colors.ink}",
354
+ "typography": "{typography.body-md}"
355
+ },
356
+ "contact-form-panel": {
357
+ "backgroundColor": "{colors.cream}",
358
+ "border": "1px solid {colors.beige-deep}",
359
+ "padding": "{spacing.xxl}",
360
+ "rounded": "{rounded.lg}"
361
+ },
362
+ "pill-tab": {
363
+ "backgroundColor": "{colors.canvas}",
364
+ "border": "1px solid {colors.hairline}",
365
+ "padding": "{spacing.xs} {spacing.md}",
366
+ "rounded": "{rounded.full}",
367
+ "textColor": "{colors.steel}",
368
+ "typography": "{typography.body-sm-medium}"
369
+ },
370
+ "pill-tab-active": {
371
+ "backgroundColor": "{colors.ink}",
372
+ "border": "1px solid {colors.ink}",
373
+ "rounded": "{rounded.full}",
374
+ "textColor": "{colors.on-dark}"
375
+ },
376
+ "segmented-tab": {
377
+ "backgroundColor": "transparent",
378
+ "border": "0 0 2px transparent solid",
379
+ "padding": "{spacing.sm} {spacing.md}",
380
+ "textColor": "{colors.steel}",
381
+ "typography": "{typography.body-sm-medium}"
382
+ },
383
+ "segmented-tab-active": {
384
+ "backgroundColor": "transparent",
385
+ "border": "0 0 2px {colors.primary} solid",
386
+ "textColor": "{colors.primary}",
387
+ "typography": "{typography.body-sm-medium}"
388
+ },
389
+ "badge-orange": {
390
+ "backgroundColor": "{colors.primary}",
391
+ "padding": "4px 10px",
392
+ "rounded": "{rounded.full}",
393
+ "textColor": "{colors.on-primary}",
394
+ "typography": "{typography.caption-bold}"
395
+ },
396
+ "badge-cream": {
397
+ "backgroundColor": "{colors.cream-deeper}",
398
+ "padding": "4px 10px",
399
+ "rounded": "{rounded.full}",
400
+ "textColor": "{colors.ink}",
401
+ "typography": "{typography.caption-bold}"
402
+ },
403
+ "badge-dark": {
404
+ "backgroundColor": "{colors.ink}",
405
+ "padding": "4px 10px",
406
+ "rounded": "{rounded.full}",
407
+ "textColor": "{colors.on-dark}",
408
+ "typography": "{typography.caption-bold}"
409
+ },
410
+ "promo-banner": {
411
+ "backgroundColor": "{colors.ink}",
412
+ "padding": "{spacing.sm} {spacing.md}",
413
+ "textColor": "{colors.on-dark}",
414
+ "typography": "{typography.body-sm-medium}"
415
+ },
416
+ "hero-band-sunset": {
417
+ "backgroundColor": "{colors.sunshine-700}",
418
+ "padding": "{spacing.hero}",
419
+ "rounded": "0",
420
+ "textColor": "{colors.ink}"
421
+ },
422
+ "sunset-stripe-band": {
423
+ "backgroundColor": "{colors.primary}",
424
+ "padding": "{spacing.lg} 0",
425
+ "rounded": "0",
426
+ "textColor": "{colors.on-primary}"
427
+ },
428
+ "cta-banner-cream": {
429
+ "backgroundColor": "{colors.cream}",
430
+ "padding": "{spacing.section}",
431
+ "rounded": "{rounded.lg}",
432
+ "textColor": "{colors.ink}"
433
+ },
434
+ "code-block": {
435
+ "backgroundColor": "{colors.surface-code}",
436
+ "padding": "{spacing.md}",
437
+ "rounded": "{rounded.md}",
438
+ "textColor": "{colors.on-dark}",
439
+ "typography": "{typography.code-md}"
440
+ },
441
+ "code-block-header": {
442
+ "backgroundColor": "{colors.surface-code}",
443
+ "border": "0 0 1px rgba(255,255,255,0.08) solid",
444
+ "padding": "{spacing.xs} {spacing.md}",
445
+ "textColor": "{colors.on-dark-muted}",
446
+ "typography": "{typography.caption}"
447
+ },
448
+ "feature-icon-tile": {
449
+ "backgroundColor": "{colors.cream}",
450
+ "border": "1px solid {colors.beige-deep}",
451
+ "padding": "{spacing.md}",
452
+ "rounded": "{rounded.md}"
453
+ },
454
+ "industry-tile": {
455
+ "backgroundColor": "{colors.canvas}",
456
+ "border": "1px solid {colors.hairline-soft}",
457
+ "padding": "{spacing.xl}",
458
+ "rounded": "{rounded.lg}"
459
+ },
460
+ "stat-cell": {
461
+ "backgroundColor": "transparent",
462
+ "padding": "{spacing.lg}",
463
+ "textColor": "{colors.ink}",
464
+ "typography": "{typography.stat-display}"
465
+ },
466
+ "customer-testimonial-card": {
467
+ "backgroundColor": "{colors.canvas}",
468
+ "border": "1px solid {colors.hairline-soft}",
469
+ "padding": "{spacing.xxl}",
470
+ "rounded": "{rounded.lg}"
471
+ },
472
+ "logo-wall-item": {
473
+ "backgroundColor": "transparent",
474
+ "padding": "{spacing.lg}",
475
+ "textColor": "{colors.steel}",
476
+ "typography": "{typography.body-md-medium}"
477
+ },
478
+ "faq-accordion-item": {
479
+ "backgroundColor": "{colors.canvas}",
480
+ "border": "0 0 1px {colors.hairline} solid",
481
+ "padding": "{spacing.xl}",
482
+ "rounded": "{rounded.md}"
483
+ },
484
+ "footer-region": {
485
+ "backgroundColor": "{colors.footer-cream}",
486
+ "padding": "{spacing.section} {spacing.xxl}",
487
+ "textColor": "{colors.ink}",
488
+ "typography": "{typography.body-sm}"
489
+ },
490
+ "footer-link": {
491
+ "backgroundColor": "transparent",
492
+ "padding": "{spacing.xxs} 0",
493
+ "textColor": "{colors.primary}",
494
+ "typography": "{typography.body-sm}"
495
+ },
496
+ "app-store-badge": {
497
+ "backgroundColor": "{colors.ink}",
498
+ "padding": "{spacing.sm} {spacing.md}",
499
+ "rounded": "{rounded.md}",
500
+ "textColor": "{colors.on-dark}",
501
+ "typography": "{typography.caption-bold}"
502
+ }
503
+ },
504
+ "extensions": {
505
+ "description": "Mistral AI brands itself with a singular signature — atmospheric sunset gradients (mustard, orange, deep red) layered over photography of mountains, plus a horizontal \"sunset stripe\" bar that closes every page. The system pairs warm cream-yellow surfaces ({colors.cream}) with a saturated orange primary CTA ({colors.primary}) and uses an elegant near-serif voice for hero displays. Coverage spans homepage (Frontier AI hero), Le Studio product page, Coding solutions, news article surfaces, contact form, and services tier page — all anchored by the signature gradient closing band.",
506
+ "name": "Mistral-AI-design-analysis",
507
+ "version": "alpha"
508
+ }
509
+ }
510
+ }
511
+
512
+ ---
513
+
514
+ ---
515
+ version: alpha
516
+ name: Mistral-AI-design-analysis
517
+ description: Mistral AI brands itself with a singular signature — atmospheric sunset gradients (mustard, orange, deep red) layered over photography of mountains, plus a horizontal "sunset stripe" bar that closes every page. The system pairs warm cream-yellow surfaces ({colors.cream}) with a saturated orange primary CTA ({colors.primary}) and uses an elegant near-serif voice for hero displays. Coverage spans homepage (Frontier AI hero), Le Studio product page, Coding solutions, news article surfaces, contact form, and services tier page — all anchored by the signature gradient closing band.
518
+
519
+ colors:
520
+ primary: "#fa520f"
521
+ primary-deep: "#cc3a05"
522
+ on-primary: "#ffffff"
523
+ sunshine-300: "#ffd06a"
524
+ sunshine-500: "#ffb83e"
525
+ sunshine-700: "#ffa110"
526
+ sunshine-800: "#ff8105"
527
+ sunshine-900: "#ff8a00"
528
+ yellow-saturated: "#ffd900"
529
+ cream: "#fff8e0"
530
+ cream-light: "#fffaeb"
531
+ cream-deeper: "#fff0c2"
532
+ beige-deep: "#e6d5a8"
533
+ block-5: "#ffe295"
534
+ block-6: "#ffd900"
535
+ block-7: "#ff8105"
536
+ ink: "#1f1f1f"
537
+ ink-tint: "#3d3d3d"
538
+ charcoal: "#2c2c2c"
539
+ slate: "#4a4a4a"
540
+ steel: "#6a6a6a"
541
+ stone: "#8a8a8a"
542
+ muted: "#a8a8a8"
543
+ hairline: "#e5e5e5"
544
+ hairline-soft: "#ededed"
545
+ hairline-strong: "#c7c7c7"
546
+ canvas: "#ffffff"
547
+ surface: "#fafafa"
548
+ surface-cream: "#fff8e0"
549
+ surface-cream-soft: "#fffaeb"
550
+ surface-code: "#1c1c1e"
551
+ on-dark: "#ffffff"
552
+ on-dark-muted: "#a8a8a8"
553
+ on-cream: "#1f1f1f"
554
+ footer-cream: "#fff8e0"
555
+ link: "#fa520f"
556
+
557
+ typography:
558
+ hero-display:
559
+ fontFamily: PP Editorial Old
560
+ fontSize: 84px
561
+ fontWeight: 400
562
+ lineHeight: 1.05
563
+ letterSpacing: -1.5px
564
+ display-lg:
565
+ fontFamily: PP Editorial Old
566
+ fontSize: 64px
567
+ fontWeight: 400
568
+ lineHeight: 1.10
569
+ letterSpacing: -1px
570
+ heading-1:
571
+ fontFamily: PP Editorial Old
572
+ fontSize: 52px
573
+ fontWeight: 400
574
+ lineHeight: 1.15
575
+ letterSpacing: -0.5px
576
+ heading-2:
577
+ fontFamily: Inter
578
+ fontSize: 36px
579
+ fontWeight: 500
580
+ lineHeight: 1.20
581
+ letterSpacing: -0.5px
582
+ heading-3:
583
+ fontFamily: Inter
584
+ fontSize: 28px
585
+ fontWeight: 500
586
+ lineHeight: 1.25
587
+ heading-4:
588
+ fontFamily: Inter
589
+ fontSize: 22px
590
+ fontWeight: 500
591
+ lineHeight: 1.30
592
+ heading-5:
593
+ fontFamily: Inter
594
+ fontSize: 18px
595
+ fontWeight: 500
596
+ lineHeight: 1.40
597
+ subtitle:
598
+ fontFamily: Inter
599
+ fontSize: 18px
600
+ fontWeight: 400
601
+ lineHeight: 1.50
602
+ body-md:
603
+ fontFamily: Inter
604
+ fontSize: 16px
605
+ fontWeight: 400
606
+ lineHeight: 1.55
607
+ body-md-medium:
608
+ fontFamily: Inter
609
+ fontSize: 16px
610
+ fontWeight: 500
611
+ lineHeight: 1.55
612
+ body-sm:
613
+ fontFamily: Inter
614
+ fontSize: 14px
615
+ fontWeight: 400
616
+ lineHeight: 1.50
617
+ body-sm-medium:
618
+ fontFamily: Inter
619
+ fontSize: 14px
620
+ fontWeight: 500
621
+ lineHeight: 1.50
622
+ caption:
623
+ fontFamily: Inter
624
+ fontSize: 13px
625
+ fontWeight: 400
626
+ lineHeight: 1.40
627
+ caption-bold:
628
+ fontFamily: Inter
629
+ fontSize: 13px
630
+ fontWeight: 600
631
+ lineHeight: 1.40
632
+ micro:
633
+ fontFamily: Inter
634
+ fontSize: 12px
635
+ fontWeight: 500
636
+ lineHeight: 1.40
637
+ micro-uppercase:
638
+ fontFamily: Inter
639
+ fontSize: 11px
640
+ fontWeight: 600
641
+ lineHeight: 1.40
642
+ letterSpacing: 1px
643
+ button-md:
644
+ fontFamily: Inter
645
+ fontSize: 14px
646
+ fontWeight: 500
647
+ lineHeight: 1.30
648
+ stat-display:
649
+ fontFamily: PP Editorial Old
650
+ fontSize: 56px
651
+ fontWeight: 400
652
+ lineHeight: 1.10
653
+ letterSpacing: -1px
654
+ code-md:
655
+ fontFamily: JetBrains Mono
656
+ fontSize: 14px
657
+ fontWeight: 400
658
+ lineHeight: 1.50
659
+
660
+ rounded:
661
+ xs: 4px
662
+ sm: 6px
663
+ md: 8px
664
+ lg: 12px
665
+ xl: 16px
666
+ xxl: 20px
667
+ full: 9999px
668
+
669
+ spacing:
670
+ xxs: 4px
671
+ xs: 8px
672
+ sm: 12px
673
+ md: 16px
674
+ lg: 20px
675
+ xl: 24px
676
+ xxl: 32px
677
+ xxxl: 40px
678
+ section-sm: 48px
679
+ section: 64px
680
+ section-lg: 96px
681
+ hero: 120px
682
+
683
+ components:
684
+ button-primary:
685
+ backgroundColor: "{colors.primary}"
686
+ textColor: "{colors.on-primary}"
687
+ typography: "{typography.button-md}"
688
+ rounded: "{rounded.md}"
689
+ padding: "10px 20px"
690
+ button-primary-pressed:
691
+ backgroundColor: "{colors.primary-deep}"
692
+ textColor: "{colors.on-primary}"
693
+ button-primary-disabled:
694
+ backgroundColor: "{colors.hairline}"
695
+ textColor: "{colors.muted}"
696
+ button-cream:
697
+ backgroundColor: "{colors.cream}"
698
+ textColor: "{colors.ink}"
699
+ typography: "{typography.button-md}"
700
+ rounded: "{rounded.md}"
701
+ padding: "10px 20px"
702
+ border: "1px solid {colors.beige-deep}"
703
+ button-dark:
704
+ backgroundColor: "{colors.ink}"
705
+ textColor: "{colors.on-dark}"
706
+ typography: "{typography.button-md}"
707
+ rounded: "{rounded.md}"
708
+ padding: "10px 20px"
709
+ button-secondary:
710
+ backgroundColor: "transparent"
711
+ textColor: "{colors.ink}"
712
+ typography: "{typography.button-md}"
713
+ rounded: "{rounded.md}"
714
+ padding: "10px 20px"
715
+ border: "1px solid {colors.hairline-strong}"
716
+ button-on-cream:
717
+ backgroundColor: "{colors.canvas}"
718
+ textColor: "{colors.ink}"
719
+ typography: "{typography.button-md}"
720
+ rounded: "{rounded.md}"
721
+ padding: "10px 20px"
722
+ border: "1px solid {colors.beige-deep}"
723
+ button-link:
724
+ backgroundColor: "transparent"
725
+ textColor: "{colors.primary}"
726
+ typography: "{typography.body-sm-medium}"
727
+ padding: "0"
728
+ card-base:
729
+ backgroundColor: "{colors.canvas}"
730
+ rounded: "{rounded.lg}"
731
+ padding: "{spacing.xl}"
732
+ border: "1px solid {colors.hairline-soft}"
733
+ card-feature:
734
+ backgroundColor: "{colors.canvas}"
735
+ rounded: "{rounded.lg}"
736
+ padding: "{spacing.xxl}"
737
+ border: "1px solid {colors.hairline-soft}"
738
+ card-cream:
739
+ backgroundColor: "{colors.cream}"
740
+ textColor: "{colors.ink}"
741
+ rounded: "{rounded.lg}"
742
+ padding: "{spacing.xxl}"
743
+ border: "1px solid {colors.beige-deep}"
744
+ card-cream-soft:
745
+ backgroundColor: "{colors.surface-cream-soft}"
746
+ textColor: "{colors.ink}"
747
+ rounded: "{rounded.lg}"
748
+ padding: "{spacing.xxl}"
749
+ card-feature-product:
750
+ backgroundColor: "{colors.canvas}"
751
+ rounded: "{rounded.lg}"
752
+ padding: "{spacing.xxl}"
753
+ border: "1px solid {colors.hairline-soft}"
754
+ shadow: "rgba(0, 0, 0, 0.04) 0px 4px 12px"
755
+ card-photographic:
756
+ backgroundColor: "{colors.surface-code}"
757
+ textColor: "{colors.on-dark}"
758
+ rounded: "{rounded.lg}"
759
+ padding: "0"
760
+ pricing-card:
761
+ backgroundColor: "{colors.canvas}"
762
+ rounded: "{rounded.lg}"
763
+ padding: "{spacing.xxl}"
764
+ border: "1px solid {colors.hairline-soft}"
765
+ pricing-card-featured:
766
+ backgroundColor: "{colors.cream}"
767
+ rounded: "{rounded.lg}"
768
+ padding: "{spacing.xxl}"
769
+ border: "2px solid {colors.primary}"
770
+ text-input:
771
+ backgroundColor: "{colors.canvas}"
772
+ textColor: "{colors.ink}"
773
+ typography: "{typography.body-md}"
774
+ rounded: "{rounded.md}"
775
+ padding: "{spacing.sm} {spacing.md}"
776
+ border: "1px solid {colors.hairline-strong}"
777
+ height: 44px
778
+ text-input-focused:
779
+ backgroundColor: "{colors.canvas}"
780
+ textColor: "{colors.ink}"
781
+ border: "2px solid {colors.primary}"
782
+ text-area:
783
+ backgroundColor: "{colors.canvas}"
784
+ textColor: "{colors.ink}"
785
+ typography: "{typography.body-md}"
786
+ rounded: "{rounded.md}"
787
+ padding: "{spacing.md}"
788
+ border: "1px solid {colors.hairline-strong}"
789
+ contact-form-panel:
790
+ backgroundColor: "{colors.cream}"
791
+ rounded: "{rounded.lg}"
792
+ padding: "{spacing.xxl}"
793
+ border: "1px solid {colors.beige-deep}"
794
+ pill-tab:
795
+ backgroundColor: "{colors.canvas}"
796
+ textColor: "{colors.steel}"
797
+ typography: "{typography.body-sm-medium}"
798
+ rounded: "{rounded.full}"
799
+ padding: "{spacing.xs} {spacing.md}"
800
+ border: "1px solid {colors.hairline}"
801
+ pill-tab-active:
802
+ backgroundColor: "{colors.ink}"
803
+ textColor: "{colors.on-dark}"
804
+ rounded: "{rounded.full}"
805
+ border: "1px solid {colors.ink}"
806
+ segmented-tab:
807
+ backgroundColor: "transparent"
808
+ textColor: "{colors.steel}"
809
+ typography: "{typography.body-sm-medium}"
810
+ padding: "{spacing.sm} {spacing.md}"
811
+ border: "0 0 2px transparent solid"
812
+ segmented-tab-active:
813
+ backgroundColor: "transparent"
814
+ textColor: "{colors.primary}"
815
+ typography: "{typography.body-sm-medium}"
816
+ border: "0 0 2px {colors.primary} solid"
817
+ badge-orange:
818
+ backgroundColor: "{colors.primary}"
819
+ textColor: "{colors.on-primary}"
820
+ typography: "{typography.caption-bold}"
821
+ rounded: "{rounded.full}"
822
+ padding: "4px 10px"
823
+ badge-cream:
824
+ backgroundColor: "{colors.cream-deeper}"
825
+ textColor: "{colors.ink}"
826
+ typography: "{typography.caption-bold}"
827
+ rounded: "{rounded.full}"
828
+ padding: "4px 10px"
829
+ badge-dark:
830
+ backgroundColor: "{colors.ink}"
831
+ textColor: "{colors.on-dark}"
832
+ typography: "{typography.caption-bold}"
833
+ rounded: "{rounded.full}"
834
+ padding: "4px 10px"
835
+ promo-banner:
836
+ backgroundColor: "{colors.ink}"
837
+ textColor: "{colors.on-dark}"
838
+ typography: "{typography.body-sm-medium}"
839
+ padding: "{spacing.sm} {spacing.md}"
840
+ hero-band-sunset:
841
+ backgroundColor: "{colors.sunshine-700}"
842
+ textColor: "{colors.ink}"
843
+ rounded: "0"
844
+ padding: "{spacing.hero}"
845
+ sunset-stripe-band:
846
+ backgroundColor: "{colors.primary}"
847
+ textColor: "{colors.on-primary}"
848
+ rounded: "0"
849
+ padding: "{spacing.lg} 0"
850
+ cta-banner-cream:
851
+ backgroundColor: "{colors.cream}"
852
+ textColor: "{colors.ink}"
853
+ rounded: "{rounded.lg}"
854
+ padding: "{spacing.section}"
855
+ code-block:
856
+ backgroundColor: "{colors.surface-code}"
857
+ textColor: "{colors.on-dark}"
858
+ typography: "{typography.code-md}"
859
+ rounded: "{rounded.md}"
860
+ padding: "{spacing.md}"
861
+ code-block-header:
862
+ backgroundColor: "{colors.surface-code}"
863
+ textColor: "{colors.on-dark-muted}"
864
+ typography: "{typography.caption}"
865
+ padding: "{spacing.xs} {spacing.md}"
866
+ border: "0 0 1px rgba(255,255,255,0.08) solid"
867
+ feature-icon-tile:
868
+ backgroundColor: "{colors.cream}"
869
+ rounded: "{rounded.md}"
870
+ padding: "{spacing.md}"
871
+ border: "1px solid {colors.beige-deep}"
872
+ industry-tile:
873
+ backgroundColor: "{colors.canvas}"
874
+ rounded: "{rounded.lg}"
875
+ padding: "{spacing.xl}"
876
+ border: "1px solid {colors.hairline-soft}"
877
+ stat-cell:
878
+ backgroundColor: "transparent"
879
+ textColor: "{colors.ink}"
880
+ typography: "{typography.stat-display}"
881
+ padding: "{spacing.lg}"
882
+ customer-testimonial-card:
883
+ backgroundColor: "{colors.canvas}"
884
+ rounded: "{rounded.lg}"
885
+ padding: "{spacing.xxl}"
886
+ border: "1px solid {colors.hairline-soft}"
887
+ logo-wall-item:
888
+ backgroundColor: "transparent"
889
+ textColor: "{colors.steel}"
890
+ typography: "{typography.body-md-medium}"
891
+ padding: "{spacing.lg}"
892
+ faq-accordion-item:
893
+ backgroundColor: "{colors.canvas}"
894
+ rounded: "{rounded.md}"
895
+ padding: "{spacing.xl}"
896
+ border: "0 0 1px {colors.hairline} solid"
897
+ footer-region:
898
+ backgroundColor: "{colors.footer-cream}"
899
+ textColor: "{colors.ink}"
900
+ typography: "{typography.body-sm}"
901
+ padding: "{spacing.section} {spacing.xxl}"
902
+ footer-link:
903
+ backgroundColor: "transparent"
904
+ textColor: "{colors.primary}"
905
+ typography: "{typography.body-sm}"
906
+ padding: "{spacing.xxs} 0"
907
+ app-store-badge:
908
+ backgroundColor: "{colors.ink}"
909
+ textColor: "{colors.on-dark}"
910
+ typography: "{typography.caption-bold}"
911
+ rounded: "{rounded.md}"
912
+ padding: "{spacing.sm} {spacing.md}"
913
+ ---
914
+
915
+ ## Overview
916
+
917
+ Mistral AI carries itself with a singular, almost cinematographic visual signature — the homepage opens with "Frontier AI. In your hands." rendered in elegant near-serif display type over a photographic mountain landscape bathed in mustard-orange sunset light. Below the hero, every page closes with the same recognizable element: a horizontal "sunset stripe" gradient band running red→orange→yellow→cream that wraps the foot of the page just above the footer. This stripe is THE brand recognizer — it appears on the homepage, products/studio, solutions/coding, news articles, contact form, and services tier page without exception.
918
+
919
+ The system pairs PP Editorial Old (a near-serif elegant display face) for hero displays with Inter for everything else (body, headings, UI). Cream-yellow surfaces ({colors.cream}, {colors.surface-cream-soft}) anchor form panels and feature cards; saturated orange ({colors.primary}) carries primary CTAs; the deep mountain photography on the homepage and the dark code mockups inside Le Studio create photographic depth. Cards are rectangular with `{rounded.lg}` (12px) corners — distinctly less playful than Miro's or Mintlify's pill-buttons-everywhere approach. Buttons are also `{rounded.md}` (8px), not pills — Mistral's geometry is more sober and editorial than its peers.
920
+
921
+ **Key Characteristics:**
922
+ - Atmospheric mountain-sunset hero photography (orange-red-yellow gradient sky)
923
+ - Horizontal "sunset stripe" band ({colors.primary} → {colors.sunshine-700} → {colors.yellow-saturated} → {colors.cream}) at every page bottom
924
+ - Cream-yellow surfaces ({colors.cream}, {colors.cream-soft}) for form panels and feature cards
925
+ - PP Editorial Old (or similar near-serif) for hero displays; Inter for everything else
926
+ - `{rounded.md}` (8px) buttons and `{rounded.lg}` (12px) cards — less playful, more editorial geometry
927
+ - Saturated orange primary CTA ({colors.primary}) carries every action call
928
+
929
+ ## Colors
930
+
931
+ > Source pages: mistral.ai/ (homepage), /products/studio (Le Studio product), /solutions/coding (coding solution), /news/vibe-remote-agents-mistral-medium-3-5 (news), /contact (contact form), /services (services tiers). Token coverage was identical across all six pages.
932
+
933
+ ### Brand & Accent
934
+ - **Mistral Orange** ({colors.primary}): Primary CTA color, brand orange
935
+ - **Orange Deep** ({colors.primary-deep}): Pressed-state and emphasis variant
936
+ - **Sunshine 300** ({colors.sunshine-300}): Atmospheric light orange-yellow
937
+ - **Sunshine 500** ({colors.sunshine-500}): Mid-spectrum sunset orange
938
+ - **Sunshine 700** ({colors.sunshine-700}): Saturated mid sunset gradient stop
939
+ - **Sunshine 800** ({colors.sunshine-800}): Deep sunset gradient stop
940
+ - **Sunshine 900** ({colors.sunshine-900}): Deepest sunset orange
941
+ - **Yellow Saturated** ({colors.yellow-saturated}): Pure brand yellow used in the sunset stripe gradient
942
+ - **Block 5/6/7** ({colors.block-5}, {colors.block-6}, {colors.block-7}): Spectrum stops along the sunset gradient (light-yellow → mid-yellow → deep-orange)
943
+
944
+ ### Cream / Neutral Warm
945
+ - **Cream** ({colors.cream}): Warm yellow-cream surface for form panels, feature cards, footer
946
+ - **Cream Soft** ({colors.cream-soft}): Lighter cream variant
947
+ - **Cream Deeper** ({colors.cream-deeper}): More-saturated cream for badge/tag chips
948
+ - **Beige Deep** ({colors.beige-deep}): Cream surface 1px border color
949
+
950
+ ### Surface
951
+ - **Canvas White** ({colors.canvas}): Page background and card surface
952
+ - **Surface** ({colors.surface}): Subtle quieter background
953
+ - **Surface Cream** ({colors.surface-cream}): Cream-yellow tinted surface
954
+ - **Surface Code** ({colors.surface-code}): Dark code-block / IDE mockup surface
955
+ - **Hairline** ({colors.hairline}): 1px borders
956
+ - **Hairline Soft** ({colors.hairline-soft}): Quieter dividers
957
+ - **Hairline Strong** ({colors.hairline-strong}): Stronger 1px border for inputs
958
+
959
+ ### Text
960
+ - **Ink** ({colors.ink}): Primary headlines and body text
961
+ - **Ink Tint** ({colors.ink-tint}): Slightly softer black for hero overlay text
962
+ - **Charcoal** ({colors.charcoal}): Body emphasis
963
+ - **Slate** ({colors.slate}): Secondary text
964
+ - **Steel** ({colors.steel}): Tertiary text, captions
965
+ - **Stone** ({colors.stone}): Muted labels
966
+ - **Muted** ({colors.muted}): Disabled, placeholders
967
+ - **On Dark** ({colors.on-dark}): White text on dark surfaces
968
+ - **On Dark Muted** ({colors.on-dark-muted}): Reduced-opacity white
969
+ - **On Cream** ({colors.on-cream}): Ink text on cream surfaces
970
+
971
+ ### Semantic
972
+ - **Link** ({colors.link}): Inline link color (matches primary orange)
973
+
974
+ ## Typography
975
+
976
+ ### Font Family
977
+ **PP Editorial Old** (display): Mistral's signature near-serif elegant display typeface used for hero displays, large numbers, and editorial section openers. Carries a slightly classical, intelligent character that contrasts the contemporary product positioning. Fallbacks: 'Times New Roman', Georgia, serif.
978
+
979
+ **Inter** (UI prose): Variable typeface for body, navigation, buttons, labels, captions. Fallbacks: ui-sans-serif, system-ui, -apple-system, sans-serif.
980
+
981
+ **JetBrains Mono** (code): Monospace for code blocks and IDE mockups. Fallbacks: 'SF Mono', Menlo, Consolas, monospace.
982
+
983
+ ### Hierarchy
984
+
985
+ | Token | Size | Weight | Line Height | Letter Spacing | Family | Use |
986
+ |---|---|---|---|---|---|---|
987
+ | `{typography.hero-display}` | 84px | 400 | 1.05 | -1.5px | PP Editorial Old | Hero ("Frontier AI. In your hands.") |
988
+ | `{typography.display-lg}` | 64px | 400 | 1.10 | -1px | PP Editorial Old | Section openers |
989
+ | `{typography.heading-1}` | 52px | 400 | 1.15 | -0.5px | PP Editorial Old | Page headlines ("Get in touch with the team.") |
990
+ | `{typography.stat-display}` | 56px | 400 | 1.10 | -1px | PP Editorial Old | Stat callouts ("75%") |
991
+ | `{typography.heading-2}` | 36px | 500 | 1.20 | -0.5px | Inter | Subsection headlines |
992
+ | `{typography.heading-3}` | 28px | 500 | 1.25 | 0 | Inter | Card titles |
993
+ | `{typography.heading-4}` | 22px | 500 | 1.30 | 0 | Inter | Feature tile titles |
994
+ | `{typography.heading-5}` | 18px | 500 | 1.40 | 0 | Inter | Smaller card titles |
995
+ | `{typography.subtitle}` | 18px | 400 | 1.50 | 0 | Inter | Hero subtitle, lead body |
996
+ | `{typography.body-md}` | 16px | 400 | 1.55 | 0 | Inter | Primary body text |
997
+ | `{typography.body-md-medium}` | 16px | 500 | 1.55 | 0 | Inter | Body emphasis |
998
+ | `{typography.body-sm}` | 14px | 400 | 1.50 | 0 | Inter | Secondary body |
999
+ | `{typography.body-sm-medium}` | 14px | 500 | 1.50 | 0 | Inter | Active sidebar, button labels |
1000
+ | `{typography.caption}` | 13px | 400 | 1.40 | 0 | Inter | Helper text |
1001
+ | `{typography.caption-bold}` | 13px | 600 | 1.40 | 0 | Inter | Badge labels |
1002
+ | `{typography.micro}` | 12px | 500 | 1.40 | 0 | Inter | Footer microcopy |
1003
+ | `{typography.micro-uppercase}` | 11px | 600 | 1.40 | 1px | Inter | Section eyebrows |
1004
+ | `{typography.button-md}` | 14px | 500 | 1.30 | 0 | Inter | Button labels |
1005
+ | `{typography.code-md}` | 14px | 400 | 1.50 | 0 | JetBrains Mono | Code blocks |
1006
+
1007
+ ### Principles
1008
+ - **Editorial / sans pairing** — PP Editorial Old (near-serif, classical) anchors hero displays; Inter (geometric sans) carries everything else. The contrast IS the brand voice.
1009
+ - **Generous body leading** (1.55 on body-md) for editorial readability across long-form pages
1010
+ - **Tight hero leading** (1.05 on 84px display) creates magazine-grade typographic display
1011
+ - **Negative letter-spacing** progresses with size — display sizes use -1.5px to -0.5px; smaller heads relax to 0
1012
+ - **Stat-display token** (56px Editorial) for marketing stat callouts ("75% / 80% / 100%")
1013
+
1014
+ ## Layout
1015
+
1016
+ ### Spacing System
1017
+ - **Base unit**: 4px (8px primary increment)
1018
+ - **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)
1019
+ - **Section rhythm**: Marketing pages use `{spacing.section-lg}` (96px); content pages tighten to `{spacing.section}` (64px)
1020
+ - **Card internal padding**: `{spacing.xl}` (24px) for compact cards; `{spacing.xxl}` (32px) for feature panels and form panels
1021
+
1022
+ ### Grid & Container
1023
+ - Marketing pages use 1280px max-width with 32px gutters
1024
+ - Hero band uses 2-column split (text left, sunset photography right) on desktop
1025
+ - Le Studio product page uses 3-up feature grid below the hero
1026
+ - Contact page uses 1-column layout with cream form panel centered (~520px max-width)
1027
+ - Services page uses 4-tier card layout with cream feature panel separator strip
1028
+
1029
+ ### Whitespace Philosophy
1030
+ Marketing surfaces give content generous breathing room — `{spacing.hero}` (120px) hero padding lets the mountain-sunset photography fill the frame. Form pages tighten dramatically: contact form panel uses `{spacing.xxl}` (32px) internal padding, fields stack on `{spacing.md}` (16px) gap.
1031
+
1032
+ ## Elevation & Depth
1033
+
1034
+ The system runs predominantly flat with strategic atmospheric depth from photography.
1035
+
1036
+ | Level | Treatment | Use |
1037
+ |---|---|---|
1038
+ | 0 (flat) | No shadow; `{colors.hairline-soft}` border | Default cards, table rows, form inputs |
1039
+ | 1 (subtle) | `rgba(0, 0, 0, 0.04) 0px 1px 2px 0px` | Hover-elevated tiles |
1040
+ | 2 (card) | `rgba(0, 0, 0, 0.04) 0px 4px 12px 0px` | Standard feature cards |
1041
+ | 3 (mockup) | `rgba(0, 0, 0, 0.08) 0px 12px 24px -4px` | IDE mockup, code editor frames |
1042
+ | 4 (modal) | `rgba(0, 0, 0, 0.12) 0px 16px 48px -8px` | Modals, dropdowns |
1043
+
1044
+ ### Decorative Depth
1045
+ - The atmospheric depth on Mistral's hero comes from the photographic mountain-sunset imagery — natural light gradient does the work
1046
+ - The "sunset stripe" closing band carries depth via its multi-stop gradient (red → orange → yellow → cream)
1047
+ - IDE / code mockups use dark-canvas backgrounds with subtle drop shadow
1048
+
1049
+ ## Shapes
1050
+
1051
+ ### Border Radius Scale
1052
+
1053
+ | Token | Value | Use |
1054
+ |---|---|---|
1055
+ | `{rounded.xs}` | 4px | Small chips, micro-controls |
1056
+ | `{rounded.sm}` | 6px | Discount badges, compact UI |
1057
+ | `{rounded.md}` | 8px | Buttons, inputs, search-pill, code blocks |
1058
+ | `{rounded.lg}` | 12px | Cards, modals, panels (the dominant card radius) |
1059
+ | `{rounded.xl}` | 16px | Larger feature panels |
1060
+ | `{rounded.xxl}` | 20px | Featured emphasis cards |
1061
+ | `{rounded.full}` | 9999px | Status badges, pill tabs (used sparingly — most buttons are NOT pills) |
1062
+
1063
+ The radius scale is sober and editorial — Mistral does NOT use pill buttons. `{rounded.md}` (8px) for buttons, `{rounded.lg}` (12px) for cards, `{rounded.full}` reserved for badges and the rare pill tab.
1064
+
1065
+ ### Photography Geometry
1066
+ - Hero photography is full-bleed atmospheric mountain-sunset imagery with no internal framing
1067
+ - IDE/code mockups render with `{rounded.lg}` (12px) corners on dark canvas
1068
+ - Customer logos wall presents wordmarks inline at consistent 60–80px height
1069
+ - Product imagery (Le Studio mockup, agent UI mockups) sits in `{rounded.lg}` panels with subtle border
1070
+
1071
+ ## Components
1072
+
1073
+ > Per the no-hover policy, hover states are NOT documented. Default and pressed/active states only.
1074
+
1075
+ ### Buttons
1076
+
1077
+ **`button-primary`** — Saturated-orange primary CTA, the dominant action.
1078
+ - Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `10px 20px`, rounded `{rounded.md}`.
1079
+ - Pressed state `button-primary-pressed` deepens to `{colors.primary-deep}`.
1080
+ - Disabled state `button-primary-disabled` uses `{colors.hairline}` background and `{colors.muted}` text.
1081
+
1082
+ **`button-cream`** — Warm cream-yellow secondary action, common on cream-surface sections.
1083
+ - Background `{colors.cream}`, text `{colors.ink}`, border `1px solid {colors.beige-deep}`, typography `{typography.button-md}`, padding `10px 20px`, rounded `{rounded.md}`.
1084
+
1085
+ **`button-dark`** — Dark/black primary CTA on cream surfaces.
1086
+ - Background `{colors.ink}`, text `{colors.on-dark}`, typography `{typography.button-md}`, padding `10px 20px`, rounded `{rounded.md}`.
1087
+
1088
+ **`button-secondary`** — Outlined secondary action.
1089
+ - Background transparent, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, typography `{typography.button-md}`, padding `10px 20px`, rounded `{rounded.md}`.
1090
+
1091
+ **`button-on-cream`** — White button on cream-tinted backgrounds.
1092
+ - Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.beige-deep}`, typography `{typography.button-md}`, padding `10px 20px`, rounded `{rounded.md}`.
1093
+
1094
+ **`button-link`** — Inline orange text link.
1095
+ - Background transparent, text `{colors.primary}`, typography `{typography.body-sm-medium}`, padding `0`. Underline on activation.
1096
+
1097
+ ### Cards & Containers
1098
+
1099
+ **`card-base`** — Standard content card.
1100
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.
1101
+
1102
+ **`card-feature`** — White feature card with larger padding.
1103
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid `{colors.hairline-soft}`.
1104
+
1105
+ **`card-cream`** — Warm cream-yellow feature card (services tiers, perk callouts).
1106
+ - Background `{colors.cream}`, text `{colors.ink}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.beige-deep}`.
1107
+
1108
+ **`card-cream-soft`** — Lighter cream variant.
1109
+ - Background `{colors.surface-cream-soft}`, text `{colors.ink}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`.
1110
+
1111
+ **`card-feature-product`** — Product showcase card with subtle elevation.
1112
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline-soft}`, shadow `rgba(0, 0, 0, 0.04) 0px 4px 12px`.
1113
+
1114
+ **`card-photographic`** — Photographic product card with dark background.
1115
+ - Background `{colors.surface-code}`, text `{colors.on-dark}`, rounded `{rounded.lg}`, padding `0` (image fills the card).
1116
+
1117
+ **`pricing-card`** — Standard pricing tier card.
1118
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline-soft}`.
1119
+
1120
+ **`pricing-card-featured`** — Featured pricing tier (cream background + orange border).
1121
+ - Background `{colors.cream}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `2px solid {colors.primary}`.
1122
+
1123
+ ### Inputs & Forms
1124
+
1125
+ **`text-input`** — Standard text field.
1126
+ - Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, height 44px.
1127
+
1128
+ **`text-input-focused`** — Activated state.
1129
+ - Border switches to `2px solid {colors.primary}`.
1130
+
1131
+ **`text-area`** — Multi-line text area for contact form.
1132
+ - Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, rounded `{rounded.md}`, padding `{spacing.md}`.
1133
+
1134
+ **`contact-form-panel`** — Cream-tinted form container on the contact page.
1135
+ - Background `{colors.cream}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.beige-deep}`. Hosts text-inputs, text-area, submit `button-dark`.
1136
+
1137
+ ### Tabs
1138
+
1139
+ **`pill-tab`** + **`pill-tab-active`** — Pill-style tab nav (used sparingly on product pages).
1140
+ - Inactive: background `{colors.canvas}`, text `{colors.steel}`, border `1px solid {colors.hairline}`, padding `{spacing.xs} {spacing.md}`, rounded `{rounded.full}`.
1141
+ - Active: background `{colors.ink}`, text `{colors.on-dark}`.
1142
+
1143
+ **`segmented-tab`** + **`segmented-tab-active`** — Underline-style tab navigation.
1144
+ - Inactive: text `{colors.steel}`, transparent background, padding `{spacing.sm} {spacing.md}`, no bottom border.
1145
+ - Active: text `{colors.primary}`, 2px bottom border in `{colors.primary}`.
1146
+
1147
+ ### Badges & Status
1148
+
1149
+ **`badge-orange`** — Saturated orange badge.
1150
+ - Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1151
+
1152
+ **`badge-cream`** — Cream-tinted tag chip.
1153
+ - Background `{colors.cream-deeper}`, text `{colors.ink}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1154
+
1155
+ **`badge-dark`** — Dark/black status badge.
1156
+ - Background `{colors.ink}`, text `{colors.on-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.
1157
+
1158
+ **`promo-banner`** — Sticky black promo strip ABOVE the top nav.
1159
+ - Background `{colors.ink}`, text `{colors.on-dark}`, typography `{typography.body-sm-medium}`, padding `{spacing.sm} {spacing.md}`. Carries one-line copy + inline CTA.
1160
+
1161
+ ### Code
1162
+
1163
+ **`code-block`** — Syntax-highlighted IDE-style code block (Le Studio page mockup, agent demos).
1164
+ - Background `{colors.surface-code}`, text `{colors.on-dark}`, typography `{typography.code-md}`, rounded `{rounded.md}`, padding `{spacing.md}`.
1165
+
1166
+ **`code-block-header`** — Header bar above the code block.
1167
+ - Background `{colors.surface-code}`, text `{colors.on-dark-muted}`, typography `{typography.caption}`, padding `{spacing.xs} {spacing.md}`, bottom border `1px solid rgba(255,255,255,0.08)`.
1168
+
1169
+ ### Documentation Components
1170
+
1171
+ **`feature-icon-tile`** — Cream-yellow feature icon callout.
1172
+ - Background `{colors.cream}`, rounded `{rounded.md}`, padding `{spacing.md}`, border `1px solid {colors.beige-deep}`.
1173
+
1174
+ **`industry-tile`** — Industry-vertical tile in solutions page grid.
1175
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.
1176
+
1177
+ **`stat-cell`** — Stat-row cell ("75% more / 80% better").
1178
+ - Background transparent, text `{colors.ink}`, typography `{typography.stat-display}`, padding `{spacing.lg}`.
1179
+
1180
+ **`customer-testimonial-card`** — Customer quote card (used inside Le Studio and Solutions pages).
1181
+ - Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline-soft}`. Quote in `{typography.body-md}`, attribution in `{typography.body-sm}` `{colors.steel}`.
1182
+
1183
+ **`logo-wall-item`** — Customer logo wordmark cell.
1184
+ - Background transparent, text `{colors.steel}`, typography `{typography.body-md-medium}`, padding `{spacing.lg}`.
1185
+
1186
+ **`faq-accordion-item`** — FAQ panel.
1187
+ - Background `{colors.canvas}`, rounded `{rounded.md}`, padding `{spacing.xl}`, bottom border `1px solid {colors.hairline}`.
1188
+
1189
+ **`app-store-badge`** — App Store / Google Play download badge.
1190
+ - Background `{colors.ink}`, text `{colors.on-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`.
1191
+
1192
+ ### Navigation
1193
+
1194
+ **Top Navigation (Marketing)** — Sticky white bar.
1195
+ - Background `{colors.canvas}`, height ~64px, bottom border `1px solid {colors.hairline-soft}`.
1196
+ - Left: Mistral M-mark logo + "MISTRAL AI_" wordmark + horizontal link list (Products, Solutions, Research, Blog, Customers, Company).
1197
+ - Right: "Contact Sales" link + black-pill "Try Studio" CTA.
1198
+
1199
+ ### Signature Components
1200
+
1201
+ **`hero-band-sunset`** — Atmospheric sunset hero band.
1202
+ - Background gradient `linear-gradient(135deg, {colors.sunshine-700} 0%, {colors.sunshine-900} 60%, {colors.primary} 100%)` overlaid on photographic mountain landscape.
1203
+ - Layout: hero headline left in `{typography.hero-display}` ({colors.ink}), subtitle in `{typography.subtitle}` ({colors.ink-tint}), button row (`button-dark` + `button-secondary`), atmospheric mountain photography right.
1204
+
1205
+ **`sunset-stripe-band`** — Horizontal closing band at the foot of every page.
1206
+ - Multi-stop gradient: `{colors.primary}` → `{colors.sunshine-700}` → `{colors.sunshine-500}` → `{colors.yellow-saturated}` → `{colors.cream}`.
1207
+ - Padding `{spacing.lg} 0`. Spans full width, sits above the footer. THIS IS THE BRAND'S MOST RECOGNIZABLE SIGNATURE ELEMENT.
1208
+
1209
+ **`cta-banner-cream`** — Page-bottom CTA band on cream surface.
1210
+ - Background `{colors.cream}`, text `{colors.ink}`, rounded `{rounded.lg}`, padding `{spacing.section}`. "The next chapter of AI is yours." headline in `{typography.heading-1}` (PP Editorial Old), button row below.
1211
+
1212
+ **`footer-region`** — Cream-tinted multi-column footer.
1213
+ - Background `{colors.footer-cream}`, padding `{spacing.section} {spacing.xxl}`.
1214
+ - 5-column link grid (Why Mistral / Explore / Build / Legal + brand mark column).
1215
+ - Bottom: language picker + social icons.
1216
+
1217
+ **`footer-link`** — Individual footer link.
1218
+ - Background transparent, text `{colors.primary}`, typography `{typography.body-sm}`, padding `{spacing.xxs} 0`.
1219
+
1220
+ ## Do's and Don'ts
1221
+
1222
+ ### Do
1223
+ - Reserve `{colors.primary}` (saturated orange) for primary CTAs and active states only
1224
+ - Use the **sunset stripe band** at the foot of every page — it's the brand's most recognizable signature
1225
+ - Pair PP Editorial Old (display) with Inter (UI) — never substitute either with a generic alternative
1226
+ - Apply `{rounded.md}` (8px) to buttons and `{rounded.lg}` (12px) to cards consistently
1227
+ - Use cream-yellow surfaces ({colors.cream}) for form panels, feature cards, and footer
1228
+ - Anchor heroes with photographic mountain-sunset imagery (or its visual equivalent — atmospheric gradient sky)
1229
+ - Use stat-display token (PP Editorial 56px) for stat callouts to maintain editorial character
1230
+
1231
+ ### Don't
1232
+ - Don't use pill-shaped buttons (`{rounded.full}`) — Mistral's geometry is sober and editorial, not playful
1233
+ - Don't introduce additional accent colors beyond the orange/yellow/cream sunset palette
1234
+ - Don't reduce hero leading below 1.05 — the editorial display needs that magazine-grade tightness
1235
+ - Don't replace PP Editorial Old hero displays with Inter — the editorial / sans contrast IS the brand
1236
+ - Don't apply heavy shadows on flat documentation cards; reserve elevation for IDE mockups
1237
+ - Don't drop the sunset stripe band from any page bottom — it's the brand's continuity element
1238
+
1239
+ ## Responsive Behavior
1240
+
1241
+ ### Breakpoints
1242
+ | Name | Width | Key Changes |
1243
+ |---|---|---|
1244
+ | Mobile (small) | < 480px | Single column. Hero scales to 40px (PP Editorial). Pill nav collapses to hamburger. Pricing tiers stack 1-up. |
1245
+ | Mobile (large) | 480 – 767px | Feature tiles 2-up. Hero scales to 52px. |
1246
+ | Tablet | 768 – 1023px | 2-column feature grids. Pill-tab nav returns. Hero 64px. |
1247
+ | Desktop | 1024 – 1279px | Multi-column layouts. Hero 76px. Stat row at full width. |
1248
+ | Wide Desktop | ≥ 1280px | Full 84px hero presentation. |
1249
+
1250
+ ### Touch Targets
1251
+ - Buttons render at 40–44px effective height — at WCAG AAA floor with `10px 20px` padding
1252
+ - Form inputs render at 44px height
1253
+ - Pill tabs render at ~32px tall — bumps to 44px on mobile
1254
+
1255
+ ### Collapsing Strategy
1256
+ - **Promo banner** stays full-width; truncates at < 480px
1257
+ - **Top nav** below 1024px collapses to hamburger
1258
+ - **Hero band**: 2-column hero (text + photography) collapses to stacked at < 1024px
1259
+ - **Pricing tiers**: 4-column desktop → 2-column tablet → 1-column mobile
1260
+ - **Stat row**: 3-column → stacked at < 768px
1261
+ - **Hero typography**: 84px → 64px → 52px → 40px
1262
+ - **Footer**: 5-column desktop → 3-column tablet → 1-column accordion mobile
1263
+ - **Sunset stripe band** stays full-width on all breakpoints
1264
+
1265
+ ### Image Behavior
1266
+ - Mountain-sunset photography uses 16:9 ratio with full-bleed scaling
1267
+ - IDE mockup images maintain aspect ratio across breakpoints
1268
+ - Customer logo wall presents wordmarks at consistent 60–80px height
1269
+
1270
+ ## Iteration Guide
1271
+
1272
+ 1. Focus on ONE component at a time
1273
+ 2. Reference component names and tokens directly (`{colors.primary}`, `{component-name}-pressed`)
1274
+ 3. Run `npx @google/design.md lint DESIGN.md` after edits
1275
+ 4. Add new variants as separate `components:` entries
1276
+ 5. Default to `{typography.body-md}` for body and `{typography.subtitle}` for emphasis. Hero displays use `{typography.hero-display}` (PP Editorial Old).
1277
+ 6. Keep `{colors.primary}` confined to primary CTAs, active states, and the sunset stripe band
1278
+ 7. Cards use `{rounded.lg}` (12px), buttons use `{rounded.md}` (8px). Pills (`{rounded.full}`) reserved for badges only.
1279
+ 8. Always include the sunset-stripe-band component at the foot of every page mockup.
1280
+
1281
+ ## Known Gaps
1282
+
1283
+ - Specific dark-mode token values not surfaced; the brand has not shipped a published dark-mode palette
1284
+ - Animation/transition timings not extracted; recommend 150–200ms ease for hover/focus state transitions
1285
+ - Form validation success state not explicitly captured beyond defaults
1286
+ - Sunset stripe band gradient stops are approximations — the actual values may vary slightly across pages but the visual rhythm is consistent