get-shit-pretty 0.7.0 → 0.7.3
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.
- package/README.md +301 -124
- package/bin/install.js +1 -1
- package/gsp/agents/gsp-accessibility-auditor.md +1 -60
- package/gsp/agents/gsp-brand-auditor.md +1 -61
- package/gsp/agents/gsp-brand-creative-director.md +10 -0
- package/gsp/agents/gsp-brand-engineer.md +1 -122
- package/gsp/agents/gsp-brand-researcher.md +11 -0
- package/gsp/agents/gsp-brand-strategist.md +1 -65
- package/gsp/agents/gsp-project-builder.md +17 -0
- package/gsp/agents/gsp-project-critic.md +11 -0
- package/gsp/agents/gsp-project-designer.md +11 -0
- package/gsp/agents/gsp-project-researcher.md +1 -74
- package/gsp/agents/gsp-project-reviewer.md +12 -0
- package/gsp/hooks/hooks.json +32 -14
- package/gsp/skills/get-shit-pretty/SKILL.md +2 -5
- package/gsp/skills/gsp-accessibility/SKILL.md +0 -1
- package/gsp/skills/gsp-accessibility-audit/SKILL.md +9 -8
- package/gsp/skills/gsp-accessibility-audit/methodology/gsp-accessibility-auditor.md +59 -0
- package/gsp/skills/gsp-add-reference/SKILL.md +0 -1
- package/gsp/skills/gsp-art/SKILL.md +13 -10
- package/gsp/skills/gsp-brand-audit/SKILL.md +4 -2
- package/gsp/skills/gsp-brand-audit/methodology/gsp-brand-auditor.md +61 -0
- package/gsp/skills/gsp-brand-brief/SKILL.md +129 -0
- package/gsp/skills/gsp-brand-guidelines/SKILL.md +13 -11
- package/gsp/skills/gsp-brand-guidelines/methodology/gsp-brand-engineer.md +122 -0
- package/gsp/skills/gsp-brand-identity/SKILL.md +19 -18
- package/gsp/{agents/gsp-creative-director.md → skills/gsp-brand-identity/methodology/gsp-brand-creative-director.md} +0 -9
- package/gsp/skills/gsp-brand-refine/SKILL.md +0 -1
- package/gsp/skills/gsp-brand-research/SKILL.md +13 -13
- package/gsp/{agents/gsp-researcher.md → skills/gsp-brand-research/methodology/gsp-brand-researcher.md} +0 -10
- package/gsp/skills/gsp-brand-strategy/SKILL.md +14 -14
- package/gsp/skills/gsp-brand-strategy/methodology/gsp-brand-strategist.md +65 -0
- package/gsp/skills/gsp-brand-sync/SKILL.md +60 -10
- package/gsp/skills/gsp-color/SKILL.md +0 -1
- package/gsp/skills/gsp-design-system/SKILL.md +0 -1
- package/gsp/skills/gsp-doctor/SKILL.md +0 -1
- package/gsp/skills/gsp-help/SKILL.md +10 -7
- package/gsp/skills/gsp-icons/SKILL.md +0 -1
- package/gsp/skills/gsp-logo/SKILL.md +0 -1
- package/gsp/skills/gsp-phase-transition/SKILL.md +0 -3
- package/gsp/skills/gsp-pretty/SKILL.md +25 -24
- package/gsp/skills/gsp-progress/SKILL.md +0 -1
- package/gsp/skills/gsp-project-brief/SKILL.md +51 -22
- package/gsp/skills/gsp-project-build/SKILL.md +216 -74
- package/gsp/skills/gsp-project-build/bento-grid.md +114 -0
- package/gsp/{agents/gsp-builder.md → skills/gsp-project-build/methodology/gsp-project-builder.md} +14 -16
- package/gsp/skills/gsp-project-critique/SKILL.md +21 -17
- package/gsp/{agents/gsp-critic.md → skills/gsp-project-critique/methodology/gsp-project-critic.md} +0 -11
- package/gsp/skills/gsp-project-design/SKILL.md +9 -6
- package/gsp/{agents/gsp-designer.md → skills/gsp-project-design/methodology/gsp-project-designer.md} +0 -11
- package/gsp/skills/gsp-project-research/SKILL.md +4 -2
- package/gsp/skills/gsp-project-research/methodology/gsp-project-researcher.md +73 -0
- package/gsp/skills/gsp-project-review/SKILL.md +8 -5
- package/gsp/{agents/gsp-reviewer.md → skills/gsp-project-review/methodology/gsp-project-reviewer.md} +0 -12
- package/gsp/skills/gsp-scaffold/SKILL.md +0 -1
- package/gsp/skills/gsp-start/SKILL.md +59 -210
- package/gsp/skills/gsp-style/SKILL.md +1 -2
- package/gsp/skills/gsp-style/styles/INDEX.yml +7 -1
- package/gsp/skills/gsp-style/styles/academia.md +751 -787
- package/gsp/skills/gsp-style/styles/art-deco.md +316 -352
- package/gsp/skills/gsp-style/styles/bauhaus.md +189 -225
- package/gsp/skills/gsp-style/styles/bold-typography.md +433 -469
- package/gsp/skills/gsp-style/styles/botanical.md +141 -177
- package/gsp/skills/gsp-style/styles/claymorphism.md +377 -413
- package/gsp/skills/gsp-style/styles/cyberpunk.md +419 -455
- package/gsp/skills/gsp-style/styles/enterprise.md +224 -260
- package/gsp/skills/gsp-style/styles/flat-design.md +119 -155
- package/gsp/skills/gsp-style/styles/fluent.md +0 -31
- package/gsp/skills/gsp-style/styles/glassmorphism.md +0 -36
- package/gsp/skills/gsp-style/styles/humanist-literary.md +0 -28
- package/gsp/skills/gsp-style/styles/industrial.md +406 -438
- package/gsp/skills/gsp-style/styles/kinetic.md +531 -563
- package/gsp/skills/gsp-style/styles/liquid-glass.md +0 -36
- package/gsp/skills/gsp-style/styles/luxury.md +402 -438
- package/gsp/skills/gsp-style/styles/material.md +555 -591
- package/gsp/skills/gsp-style/styles/maximalism.md +875 -911
- package/gsp/skills/gsp-style/styles/minimal-dark.md +442 -478
- package/gsp/skills/gsp-style/styles/modern-dark.md +390 -426
- package/gsp/skills/gsp-style/styles/monochrome.md +472 -504
- package/gsp/skills/gsp-style/styles/neubrutalism.md +354 -390
- package/gsp/skills/gsp-style/styles/neumorphism.md +195 -231
- package/gsp/skills/gsp-style/styles/newsprint.md +529 -565
- package/gsp/skills/gsp-style/styles/nothing.md +445 -0
- package/gsp/skills/gsp-style/styles/nothing.yml +146 -0
- package/gsp/skills/gsp-style/styles/organic.md +177 -213
- package/gsp/skills/gsp-style/styles/playful-geometric.md +211 -247
- package/gsp/skills/gsp-style/styles/professional.md +503 -539
- package/gsp/skills/gsp-style/styles/retro.md +664 -700
- package/gsp/skills/gsp-style/styles/saas.md +490 -526
- package/gsp/skills/gsp-style/styles/sketch.md +189 -225
- package/gsp/skills/gsp-style/styles/swiss-minimalist.md +195 -227
- package/gsp/skills/gsp-style/styles/terminal.md +99 -135
- package/gsp/skills/gsp-style/styles/vaporwave.md +356 -392
- package/gsp/skills/gsp-style/styles/web3.md +337 -373
- package/gsp/skills/gsp-typography/SKILL.md +0 -1
- package/gsp/skills/gsp-update/SKILL.md +0 -1
- package/gsp/skills/gsp-visuals/SKILL.md +0 -1
- package/gsp/templates/branding/config.json +3 -2
- package/gsp/templates/exports-index.md +0 -7
- package/gsp/templates/phases/build.md +13 -4
- package/gsp/templates/projects/config.json +3 -2
- package/gsp/templates/projects/roadmap.md +0 -7
- package/gsp/templates/projects/state.md +0 -4
- package/package.json +1 -1
- package/scripts/lint-check.sh +1 -1
- package/gsp/agents/gsp-ascii-artist.md +0 -66
- package/gsp/agents/gsp-brand-syncer.md +0 -126
- package/gsp/agents/gsp-campaign-director.md +0 -79
- package/gsp/agents/gsp-scoper.md +0 -85
- package/gsp/skills/gsp-launch/SKILL.md +0 -97
- package/gsp/skills/gsp-start/questioning.md +0 -87
- package/gsp/templates/phases/launch.md +0 -55
|
@@ -1,787 +1,751 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- **
|
|
60
|
-
- **
|
|
61
|
-
- **
|
|
62
|
-
|
|
63
|
-
**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
**
|
|
94
|
-
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
-
|
|
191
|
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
-
|
|
278
|
-
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
-
|
|
309
|
-
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
-
|
|
318
|
-
|
|
319
|
-
**
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
-
|
|
324
|
-
-
|
|
325
|
-
|
|
326
|
-
**
|
|
327
|
-
|
|
328
|
-
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
-
|
|
345
|
-
-
|
|
346
|
-
-
|
|
347
|
-
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
384
|
-
-
|
|
385
|
-
|
|
386
|
-
**
|
|
387
|
-
|
|
388
|
-
-
|
|
389
|
-
-
|
|
390
|
-
- No
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
-
|
|
403
|
-
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
-
|
|
408
|
-
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
-
|
|
414
|
-
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
###
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
**
|
|
574
|
-
|
|
575
|
-
**
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
-
|
|
581
|
-
|
|
582
|
-
**
|
|
583
|
-
|
|
584
|
-
-
|
|
585
|
-
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
-
|
|
620
|
-
-
|
|
621
|
-
-
|
|
622
|
-
|
|
623
|
-
---
|
|
624
|
-
|
|
625
|
-
##
|
|
626
|
-
|
|
627
|
-
###
|
|
628
|
-
|
|
629
|
-
- **
|
|
630
|
-
- **
|
|
631
|
-
- **
|
|
632
|
-
- **
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
- **
|
|
637
|
-
- **
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
-
|
|
644
|
-
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
-
|
|
650
|
-
-
|
|
651
|
-
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
-
|
|
657
|
-
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
- **
|
|
668
|
-
- **
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
-
|
|
680
|
-
-
|
|
681
|
-
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
-
|
|
687
|
-
-
|
|
688
|
-
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
-
|
|
694
|
-
-
|
|
695
|
-
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
-
|
|
731
|
-
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
body: "'Crimson Pro', serif",
|
|
753
|
-
display: "'Cinzel', serif",
|
|
754
|
-
},
|
|
755
|
-
radius: {
|
|
756
|
-
default: "4px",
|
|
757
|
-
arch: "40% 40% 0 0 / 20% 20% 0 0",
|
|
758
|
-
},
|
|
759
|
-
transitions: {
|
|
760
|
-
fast: "150ms",
|
|
761
|
-
base: "300ms",
|
|
762
|
-
slow: "500ms",
|
|
763
|
-
dramatic: "700ms",
|
|
764
|
-
},
|
|
765
|
-
spacing: {
|
|
766
|
-
section: ["py-24", "py-32"],
|
|
767
|
-
card: ["p-8", "p-12"],
|
|
768
|
-
element: ["gap-4", "gap-8"],
|
|
769
|
-
},
|
|
770
|
-
effects: {
|
|
771
|
-
sepia: "sepia(0.6) contrast(0.95) brightness(0.9)",
|
|
772
|
-
brassGradient: "linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)",
|
|
773
|
-
engraved: "1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)",
|
|
774
|
-
},
|
|
775
|
-
};
|
|
776
|
-
```
|
|
777
|
-
|
|
778
|
-
---
|
|
779
|
-
|
|
780
|
-
## Summary
|
|
781
|
-
|
|
782
|
-
Academia/Classical is defined by its **material authenticity** (aged paper, dark wood, polished brass), **typographic excellence** (three distinct serifs used purposefully), and **signature architectural elements** (arch-tops, corner flourishes, Roman numerals).
|
|
783
|
-
|
|
784
|
-
The style succeeds when every element feels like it could exist in a physical 19th-century university library. It fails when it feels like a generic dark theme with serifs tacked on.
|
|
785
|
-
|
|
786
|
-
The brass/gold accent color is the interactive language. The sepia-to-color transition is the magical moment. The arch-topped images are the architectural signature. Together, these create a cohesive, prestigious, scholarly experience that feels timeless and trustworthy.
|
|
787
|
-
`</design-system>`
|
|
1
|
+
<design-system>
|
|
2
|
+
# Design Style: Academia / Classical
|
|
3
|
+
|
|
4
|
+
## Design Philosophy
|
|
5
|
+
|
|
6
|
+
**Core Principles**: Scholarly gravitas meets timeless elegance. This style channels the atmosphere of centuries-old university libraries, Victorian study halls, and Renaissance manuscripts. Every element must feel like it belongs in a prestigious institution - combining **rich material references** (aged parchment, dark mahogany wood, polished brass hardware, crimson leather bindings) with **traditional typographic excellence** and **measured ornamentation**.
|
|
7
|
+
|
|
8
|
+
**Vibe**: Scholarly, Prestigious, Warm, Timeless, Dignified, Intellectual, Distinguished.
|
|
9
|
+
|
|
10
|
+
**The Academia Promise**: This isn't a modern dark theme with serif fonts. It's a complete transformation into a physical library environment where every interaction feels like turning pages in a leather-bound tome, where brass fixtures catch the light, and where centuries of knowledge create an atmosphere of gravitas and trust.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Design Token System (The DNA)
|
|
15
|
+
|
|
16
|
+
### Color System (Library at Night)
|
|
17
|
+
|
|
18
|
+
**Foundation Colors**:
|
|
19
|
+
|
|
20
|
+
- **background**: `#1C1714` (Deep Mahogany) - The darkest wood tone, foundation of all layouts
|
|
21
|
+
- **backgroundAlt**: `#251E19` (Aged Oak) - Surface elevation, cards, and panel backgrounds
|
|
22
|
+
- **foreground**: `#E8DFD4` (Antique Parchment) - Primary text, warm cream tone
|
|
23
|
+
- **muted**: `#3D332B` (Worn Leather) - Tertiary backgrounds, disabled states
|
|
24
|
+
- **mutedForeground**: `#9C8B7A` (Faded Ink) - Secondary text, labels, metadata
|
|
25
|
+
- **border**: `#4A3F35` (Wood Grain) - Subtle borders and dividers
|
|
26
|
+
|
|
27
|
+
**Accent Colors**:
|
|
28
|
+
|
|
29
|
+
- **accent**: `#C9A962` (Polished Brass) - Primary interactive color, highlights, focus states
|
|
30
|
+
- **accentSecondary**: `#8B2635` (Library Crimson) - Emphasis badges, hover transforms
|
|
31
|
+
- **accentForeground**: `#1C1714` (Dark on Brass) - Text on brass-colored buttons
|
|
32
|
+
|
|
33
|
+
**Color Usage Rules**:
|
|
34
|
+
|
|
35
|
+
1. **Contrast Ratios**: Maintain 8.5:1 for parchment on mahogany, minimum 4.5:1 for muted text
|
|
36
|
+
2. **Layering Strategy**: Always layer backgroundAlt on top of background for depth (cards, panels)
|
|
37
|
+
3. **Brass Application**: Use brass for ALL interactive elements (buttons, links, focus rings, icons)
|
|
38
|
+
4. **Crimson Sparingly**: Reserve crimson for special emphasis (featured pricing tier, wax seals, hover transforms on secondary buttons)
|
|
39
|
+
5. **Border Subtlety**: Borders should be visible but never harsh - wood grain color provides gentle separation
|
|
40
|
+
|
|
41
|
+
**Brass Gradient Formula** (for buttons and metallic elements):
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
background: linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
This creates authentic polished brass with highlights and shadows.
|
|
48
|
+
|
|
49
|
+
### Typography System
|
|
50
|
+
|
|
51
|
+
**Font Families**:
|
|
52
|
+
|
|
53
|
+
- **Heading Font**: `"Cormorant Garamond", serif` - High-contrast old-style serif with calligraphic elegance
|
|
54
|
+
- **Body Font**: `"Crimson Pro", serif` - Book-style serif designed for extended reading
|
|
55
|
+
- **Display Font**: `"Cinzel", serif` - Engraved, all-caps display font for labels and special emphasis
|
|
56
|
+
|
|
57
|
+
**Type Scale & Hierarchy**:
|
|
58
|
+
|
|
59
|
+
- **Display Headings**: `text-5xl` to `text-7xl` (48px-72px), Cormorant Garamond, `leading-[1.1]`, `tracking-tight`
|
|
60
|
+
- **Section Headings**: `text-4xl` to `text-5xl` (36px-48px), Cormorant Garamond
|
|
61
|
+
- **Subsection Headings**: `text-2xl` to `text-3xl` (24px-30px), Cormorant Garamond
|
|
62
|
+
- **Body Text**: `text-base` to `text-lg` (16px-18px), Crimson Pro, `leading-relaxed` (1.625)
|
|
63
|
+
- **Labels/Overlines**: `text-xs` to `text-[10px]` (10px-12px), Cinzel, `uppercase`, `tracking-[0.2em]` to `tracking-[0.3em]`
|
|
64
|
+
|
|
65
|
+
**Font Weight Distribution**:
|
|
66
|
+
|
|
67
|
+
- Headings: Regular/Normal (400-500) - avoid heavy weights, let the serif do the work
|
|
68
|
+
- Body: Regular (400)
|
|
69
|
+
- Labels: Medium (500-600) for Cinzel
|
|
70
|
+
- Emphasis: Italic rather than bold for body text
|
|
71
|
+
|
|
72
|
+
**Special Typography Patterns**:
|
|
73
|
+
|
|
74
|
+
1. **Drop Caps**: First letter of introductory paragraphs
|
|
75
|
+
|
|
76
|
+
- Font: Cinzel (display font)
|
|
77
|
+
- Size: `text-7xl` (72px), `float-left`, `mr-4`, `leading-[0.8]`
|
|
78
|
+
- Color: Brass (`#C9A962`)
|
|
79
|
+
- Shadow: `2px 2px 4px rgba(0,0,0,0.3)` for engraved depth
|
|
80
|
+
2. **Section Numbering**: Use Roman numerals (I, II, III, IV, V...) with "Volume" prefix for major sections
|
|
81
|
+
|
|
82
|
+
- Font: Cinzel, `text-xs`, `uppercase`, `tracking-[0.25em]` to `tracking-[0.3em]`
|
|
83
|
+
- Color: Brass
|
|
84
|
+
- Pattern: "Volume I", "Volume II", etc. for major section headers; standalone Roman numerals for lists and sub-items
|
|
85
|
+
- Placement: Positioned above section headings as overline labels
|
|
86
|
+
3. **Engraved Text Effect** (for buttons and special headings):
|
|
87
|
+
|
|
88
|
+
- `text-shadow: 1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)`
|
|
89
|
+
- Creates pressed-into-metal appearance
|
|
90
|
+
|
|
91
|
+
### Radius & Border System
|
|
92
|
+
|
|
93
|
+
**Border Radius Values**:
|
|
94
|
+
|
|
95
|
+
- **Default**: `4px` (`rounded`) - Subtle, traditional corners for buttons, cards, inputs
|
|
96
|
+
- **Arch-Top Special**: `border-radius: 40% 40% 0 0 / 20% 20% 0 0` - Cathedral arch tops for images
|
|
97
|
+
- **Full Circle**: For icon containers, badges, profile images
|
|
98
|
+
|
|
99
|
+
**The Arch-Top Signature**:
|
|
100
|
+
This is a defining visual element. The formula creates an elegant arch reminiscent of cathedral windows or library alcoves:
|
|
101
|
+
|
|
102
|
+
```css
|
|
103
|
+
.arch-top {
|
|
104
|
+
border-radius: 40% 40% 0 0 / 20% 20% 0 0;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Apply to: Hero images, blog thumbnails, feature images, decorative containers.
|
|
109
|
+
|
|
110
|
+
**Border Styling**:
|
|
111
|
+
|
|
112
|
+
- **Thickness**: `1px` standard, `2px` for decorative frames and focus states
|
|
113
|
+
- **Color**: `#4A3F35` (wood grain) for standard borders, `#C9A962` (brass) for interactive/decorative
|
|
114
|
+
- **Pattern**: Single solid borders, avoid dashed or dotted
|
|
115
|
+
|
|
116
|
+
### Shadows & Depth
|
|
117
|
+
|
|
118
|
+
**Shadow Philosophy**: Shadows should feel like physical depth in a dimly-lit library - soft, warm, and realistic.
|
|
119
|
+
|
|
120
|
+
**Shadow Recipes**:
|
|
121
|
+
|
|
122
|
+
1. **Card Elevation** (default):
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
shadow: none (rely on border and background differentiation)
|
|
126
|
+
hover: 0 8px 24px rgba(0,0,0,0.3)
|
|
127
|
+
```
|
|
128
|
+
2. **Engraved/Embossed Effect** (buttons, decorative elements):
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
inset 0 1px 0 rgba(255,255,255,0.2),
|
|
132
|
+
inset 0 -1px 0 rgba(0,0,0,0.2),
|
|
133
|
+
0 2px 8px rgba(0,0,0,0.3)
|
|
134
|
+
|
|
135
|
+
hover: Add glow via 0 4px 12px rgba(201,169,98,0.3)
|
|
136
|
+
```
|
|
137
|
+
3. **Wax Seal Badge**:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
inset 0 2px 4px rgba(255,255,255,0.2),
|
|
141
|
+
inset 0 -2px 4px rgba(0,0,0,0.3),
|
|
142
|
+
0 4px 8px rgba(0,0,0,0.4)
|
|
143
|
+
```
|
|
144
|
+
4. **Focus Ring**:
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
ring-2 ring-[#C9A962] ring-offset-2 ring-offset-[#1C1714]
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Textures & Atmospheric Effects
|
|
151
|
+
|
|
152
|
+
**1. Aged Paper Texture Overlay**:
|
|
153
|
+
|
|
154
|
+
- SVG noise filter with fractal turbulence
|
|
155
|
+
- Opacity: `0.03` (extremely subtle)
|
|
156
|
+
- Position: Fixed overlay covering entire viewport
|
|
157
|
+
- Blend mode: `overlay`
|
|
158
|
+
- Purpose: Adds tactile paper grain without overpowering content
|
|
159
|
+
|
|
160
|
+
**2. Vignette Effect**:
|
|
161
|
+
|
|
162
|
+
- Radial gradient from center
|
|
163
|
+
- Formula: `radial-gradient(ellipse at center, transparent 0%, transparent 50%, rgba(28,23,20,0.4) 100%)`
|
|
164
|
+
- Position: Fixed overlay
|
|
165
|
+
- Purpose: Focuses attention toward center, mimics library lighting
|
|
166
|
+
|
|
167
|
+
**3. Sepia Image Treatment**:
|
|
168
|
+
|
|
169
|
+
- Default state: `filter: sepia(0.6) contrast(0.95) brightness(0.9)`
|
|
170
|
+
- Hover state: `filter: sepia(0) contrast(1) brightness(1)`
|
|
171
|
+
- Transition: `duration-700 ease-out`
|
|
172
|
+
- Purpose: Images appear as aged photographs that reveal full color on interaction
|
|
173
|
+
|
|
174
|
+
**4. Decorative Patterns**:
|
|
175
|
+
|
|
176
|
+
**Ornate Corner Flourishes** (for major frames and cards):
|
|
177
|
+
|
|
178
|
+
```css
|
|
179
|
+
/* Top-left and bottom-right brass corners */
|
|
180
|
+
.ornate-frame::before,
|
|
181
|
+
.ornate-frame::after {
|
|
182
|
+
content: "";
|
|
183
|
+
position: absolute;
|
|
184
|
+
width: 40px;
|
|
185
|
+
height: 40px;
|
|
186
|
+
border: 2px solid #C9A962;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.ornate-frame::before {
|
|
190
|
+
top: -1px;
|
|
191
|
+
left: -1px;
|
|
192
|
+
border-right: none;
|
|
193
|
+
border-bottom: none;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.ornate-frame::after {
|
|
197
|
+
bottom: -1px;
|
|
198
|
+
right: -1px;
|
|
199
|
+
border-left: none;
|
|
200
|
+
border-top: none;
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Ornate Divider** (section separators):
|
|
205
|
+
|
|
206
|
+
```css
|
|
207
|
+
/* Gradient line with centered decorative glyph */
|
|
208
|
+
.ornate-divider {
|
|
209
|
+
height: 1px;
|
|
210
|
+
background: linear-gradient(90deg, transparent 0%, #4A3F35 20%, #C9A962 50%, #4A3F35 80%, transparent 100%);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.ornate-divider::before {
|
|
214
|
+
content: "✶"; /* or other decorative Unicode character */
|
|
215
|
+
position: absolute;
|
|
216
|
+
left: 50%;
|
|
217
|
+
top: 50%;
|
|
218
|
+
transform: translate(-50%, -50%);
|
|
219
|
+
color: #C9A962;
|
|
220
|
+
font-size: 12px;
|
|
221
|
+
background: #1C1714;
|
|
222
|
+
padding: 0 12px;
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Section Patterns
|
|
229
|
+
|
|
230
|
+
### Product Detail Section
|
|
231
|
+
|
|
232
|
+
This section serves as a formal proclamation or manifesto, positioned after stats to elaborate on the value proposition.
|
|
233
|
+
|
|
234
|
+
**Structure**:
|
|
235
|
+
|
|
236
|
+
- Container: Ornate frame with corner flourishes
|
|
237
|
+
- Background: `#251E19/50` on rounded border
|
|
238
|
+
- Header: Centered "Proclamation" label with flanking brass lines
|
|
239
|
+
- Headline: Large serif (4xl-6xl) centered with tight line-height
|
|
240
|
+
- Ornate divider: Full decorative divider with centered glyph
|
|
241
|
+
- Body: Multi-paragraph content with drop cap on first paragraph
|
|
242
|
+
- Spacing: Generous padding (p-8 to p-12), centered max-width (max-w-4xl)
|
|
243
|
+
|
|
244
|
+
**Typography**:
|
|
245
|
+
|
|
246
|
+
- Label: Cinzel, uppercase, brass color, wide tracking
|
|
247
|
+
- Headline: Cormorant Garamond, extra large, standard color
|
|
248
|
+
- Body: Text-lg, muted foreground color, relaxed leading
|
|
249
|
+
- First paragraph: Drop cap effect automatically applied
|
|
250
|
+
|
|
251
|
+
This creates a "certificate of excellence" feeling - formal, centered, and authoritative.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Component Styling Principles
|
|
256
|
+
|
|
257
|
+
### Buttons
|
|
258
|
+
|
|
259
|
+
**Visual Treatment**:
|
|
260
|
+
|
|
261
|
+
- Font: Cinzel (display font)
|
|
262
|
+
- Text: Uppercase with `tracking-[0.15em]`
|
|
263
|
+
- Size: Small text (`text-xs`) with generous padding for dignified presence
|
|
264
|
+
- Effect: Engraved text shadow for pressed-metal appearance
|
|
265
|
+
|
|
266
|
+
**Primary Button** (brass, main actions):
|
|
267
|
+
|
|
268
|
+
- Background: Brass gradient (`linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)`)
|
|
269
|
+
- Text: Dark mahogany (`#1C1714`) for maximum contrast on brass
|
|
270
|
+
- Radius: `4px` (rounded)
|
|
271
|
+
- Shadow: Inset highlights and depth shadows (see shadow system)
|
|
272
|
+
- Hover: Increase brightness to 110%, add brass glow shadow
|
|
273
|
+
- Active: Deeper inset shadow for pressed effect
|
|
274
|
+
|
|
275
|
+
**Secondary Button** (outlined, alternative actions):
|
|
276
|
+
|
|
277
|
+
- Background: Transparent
|
|
278
|
+
- Border: `2px solid #C9A962` (brass)
|
|
279
|
+
- Text: Brass (`#C9A962`)
|
|
280
|
+
- Hover: Transform to crimson - `border: #8B2635`, `bg: #8B2635`, `text: #E8DFD4`
|
|
281
|
+
- Purpose: Offers elegant alternative that can dramatically transform
|
|
282
|
+
|
|
283
|
+
**Ghost Button** (minimal, tertiary actions):
|
|
284
|
+
|
|
285
|
+
- No background or border
|
|
286
|
+
- Text: Brass with hover underline
|
|
287
|
+
- Underline offset: `4px` for breathing room
|
|
288
|
+
- Hover: Brighten to `#D4B872` with underline
|
|
289
|
+
|
|
290
|
+
**Button Sizes**:
|
|
291
|
+
|
|
292
|
+
- Default: `h-12 px-8`
|
|
293
|
+
- Small: `h-10 px-6`
|
|
294
|
+
- Large: `h-14 px-10`
|
|
295
|
+
|
|
296
|
+
### Cards & Containers
|
|
297
|
+
|
|
298
|
+
**Structure**:
|
|
299
|
+
|
|
300
|
+
- Background: `#251E19` (aged oak - one layer above page background)
|
|
301
|
+
- Border: `1px solid #4A3F35` (wood grain)
|
|
302
|
+
- Radius: `4px` (rounded)
|
|
303
|
+
- Padding: `p-8` to `p-12` depending on content density
|
|
304
|
+
- Position: Relative (for corner flourishes)
|
|
305
|
+
|
|
306
|
+
**Corner Flourish Pattern**:
|
|
307
|
+
|
|
308
|
+
- Apply `.corner-flourish` class
|
|
309
|
+
- Creates subtle brass corner brackets (24px × 24px)
|
|
310
|
+
- Opacity: 0.6 default, 1.0 on hover
|
|
311
|
+
- Purpose: Frames content like a certificate or portrait
|
|
312
|
+
|
|
313
|
+
**Hover Behavior**:
|
|
314
|
+
|
|
315
|
+
- Border: Transition to `#C9A962/50` (brass with transparency)
|
|
316
|
+
- Shadow: Add `0 8px 24px rgba(0,0,0,0.3)` for lift effect
|
|
317
|
+
- Duration: `300ms` ease
|
|
318
|
+
|
|
319
|
+
**Special Card Treatments**:
|
|
320
|
+
|
|
321
|
+
1. **Certificate/Ledger Style** (pricing cards):
|
|
322
|
+
|
|
323
|
+
- Double border effect using box-shadow inset
|
|
324
|
+
- Brass corner accents using pseudo-elements as triangular brackets
|
|
325
|
+
- Featured tier gets brass border and ring
|
|
326
|
+
2. **Arch-Top Image Cards** (blog, features):
|
|
327
|
+
|
|
328
|
+
- Image container uses arch-top border-radius
|
|
329
|
+
- Image has sepia filter with hover reveal
|
|
330
|
+
- Scale image slightly on card hover (`scale-105`)
|
|
331
|
+
3. **Wax Seal Badges** (featured items):
|
|
332
|
+
|
|
333
|
+
- Circular crimson badge positioned at top-right
|
|
334
|
+
- Radial gradient for dimensional wax appearance
|
|
335
|
+
- Contains icon (typically star)
|
|
336
|
+
- Position: `-top-3 absolute right-6`
|
|
337
|
+
|
|
338
|
+
### Form Inputs
|
|
339
|
+
|
|
340
|
+
**Text Inputs**:
|
|
341
|
+
|
|
342
|
+
- Background: `#251E19` (aged oak)
|
|
343
|
+
- Border: `1px solid #4A3F35` (wood grain)
|
|
344
|
+
- Text: `#E8DFD4` (parchment), Crimson Pro font
|
|
345
|
+
- Placeholder: Italic serif, `#9C8B7A` (faded ink)
|
|
346
|
+
- Height: `h-12` (48px)
|
|
347
|
+
- Padding: `px-4 py-2`
|
|
348
|
+
- Radius: `4px` (rounded)
|
|
349
|
+
|
|
350
|
+
**Focus State**:
|
|
351
|
+
|
|
352
|
+
- Border: `#C9A962` (brass)
|
|
353
|
+
- Ring: `ring-2 ring-[#C9A962]/30` with offset
|
|
354
|
+
- No outline, rely on ring for accessibility
|
|
355
|
+
|
|
356
|
+
**Labels**:
|
|
357
|
+
|
|
358
|
+
- Position: Above input
|
|
359
|
+
- Font: Cinzel, uppercase, small tracking
|
|
360
|
+
- Color: `#9C8B7A` or brass for important fields
|
|
361
|
+
|
|
362
|
+
### Interactive States
|
|
363
|
+
|
|
364
|
+
**Hover States**:
|
|
365
|
+
|
|
366
|
+
- Links: Brass text with expanded letter-spacing (tracking increase from 0.2em to 0.25em)
|
|
367
|
+
- Cards: Brass border tint, shadow lift, corner flourish opacity increase
|
|
368
|
+
- Buttons: Brightness increase or color transformation (secondary transforms to crimson)
|
|
369
|
+
- Images: Sepia filter removal over 700ms with subtle scale (105%)
|
|
370
|
+
- Stats: Number scales to 110%, label changes to brass, background darkens
|
|
371
|
+
- Logo: Subtle scale to 105%
|
|
372
|
+
- FAQ toggles: Rotate 180deg on open with color transformation
|
|
373
|
+
|
|
374
|
+
**Focus States** (keyboard navigation):
|
|
375
|
+
|
|
376
|
+
- Ring: `ring-2 ring-[#C9A962]` with `ring-offset-2 ring-offset-[#1C1714]`
|
|
377
|
+
- Must be clearly visible against all backgrounds
|
|
378
|
+
- No outline removal - accessibility critical
|
|
379
|
+
|
|
380
|
+
**Active/Pressed States**:
|
|
381
|
+
|
|
382
|
+
- Buttons: Deeper inset shadow
|
|
383
|
+
- Links: Slightly darker brass tone
|
|
384
|
+
- Cards: No special treatment (hover is sufficient)
|
|
385
|
+
|
|
386
|
+
**Disabled States**:
|
|
387
|
+
|
|
388
|
+
- Opacity: `0.5`
|
|
389
|
+
- Pointer events: `none`
|
|
390
|
+
- No color change - opacity handles it
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Layout Principles
|
|
395
|
+
|
|
396
|
+
### Spacing Rhythm
|
|
397
|
+
|
|
398
|
+
**Base Grid**: 8px spacing system
|
|
399
|
+
|
|
400
|
+
- Micro spacing (icon gaps, inline elements): `gap-2` to `gap-4` (8px-16px)
|
|
401
|
+
- Element spacing (card internals): `gap-4` to `gap-8` (16px-32px)
|
|
402
|
+
- Section spacing (between major blocks): `gap-8` to `gap-12` (32px-48px)
|
|
403
|
+
- Vertical section padding: `py-24` to `py-32` (96px-128px)
|
|
404
|
+
|
|
405
|
+
**Content Width**:
|
|
406
|
+
|
|
407
|
+
- Standard content: `max-w-6xl` (1152px)
|
|
408
|
+
- Narrow content (blog posts, forms): `max-w-4xl` (896px)
|
|
409
|
+
- Full-width sections: `max-w-7xl` (1280px) or full viewport for backgrounds
|
|
410
|
+
|
|
411
|
+
**Grid Patterns**:
|
|
412
|
+
|
|
413
|
+
- Three-column: `grid-cols-1 md:grid-cols-3` (features, pricing, benefits)
|
|
414
|
+
- Two-column: `grid-cols-1 lg:grid-cols-2` (testimonials, hero split)
|
|
415
|
+
- Four-column: `grid-cols-2 md:grid-cols-4` (stats bar)
|
|
416
|
+
|
|
417
|
+
**Asymmetry & Balance**:
|
|
418
|
+
|
|
419
|
+
- Hero sections favor 60/40 or 7/5 column splits
|
|
420
|
+
- Text can slightly "bleed" into adjacent columns for dynamic feel
|
|
421
|
+
- Alternate left/right alignment in timeline-style sections
|
|
422
|
+
|
|
423
|
+
### Section Separators
|
|
424
|
+
|
|
425
|
+
**Border Separators**:
|
|
426
|
+
|
|
427
|
+
- Full-width border: `border-y border-[#4A3F35]`
|
|
428
|
+
- Background: Often pair with `bg-[#251E19]/30` or `bg-[#251E19]/50` for subtle panel effect
|
|
429
|
+
- Use between major sections to create rhythm
|
|
430
|
+
|
|
431
|
+
**Ornate Dividers**:
|
|
432
|
+
|
|
433
|
+
- Use within sections to separate subsections
|
|
434
|
+
- Width: `w-64` centered or full-width
|
|
435
|
+
- Include decorative glyph at center
|
|
436
|
+
|
|
437
|
+
**Visual Breathing Room**:
|
|
438
|
+
|
|
439
|
+
- Allow generous vertical space between sections (96px-128px)
|
|
440
|
+
- Don't pack content tightly - academia values space and contemplation
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## The "Bold Factor" (Non-Genericness)
|
|
445
|
+
|
|
446
|
+
These are the **mandatory signature elements** that define Academia/Classical. A design is not complete without these:
|
|
447
|
+
|
|
448
|
+
### 1. **Arch-Topped Images**
|
|
449
|
+
|
|
450
|
+
Every featured image must use the cathedral arch border-radius (`40% 40% 0 0 / 20% 20% 0 0`). This single element transforms modern web imagery into architectural references of classical libraries and Gothic buildings.
|
|
451
|
+
|
|
452
|
+
### 2. **Sepia-to-Color Image Transitions**
|
|
453
|
+
|
|
454
|
+
All images start with sepia filter (0.6) and transition to full color on hover over 700ms. This creates the magical effect of "aged photographs coming to life" when users interact.
|
|
455
|
+
|
|
456
|
+
### 3. **Roman Numeral Volume System**
|
|
457
|
+
|
|
458
|
+
Every major section must be prefixed with "Volume I", "Volume II", etc. using Roman numerals. List items and sub-elements use standalone Roman numerals (I, II, III...). Use Cinzel font, uppercase, brass color for all numbering.
|
|
459
|
+
|
|
460
|
+
### 4. **Drop Cap Introductions**
|
|
461
|
+
|
|
462
|
+
Opening paragraphs of major sections should feature massive brass drop caps using Cinzel font at `text-7xl`, creating that illuminated manuscript feeling.
|
|
463
|
+
|
|
464
|
+
### 5. **Corner Flourishes**
|
|
465
|
+
|
|
466
|
+
Major frames (hero section) must have large brass corner brackets (40px). Cards should have subtle corner flourishes (24px). This frames content like certificates and portraits.
|
|
467
|
+
|
|
468
|
+
### 6. **Ornate Dividers with Glyphs**
|
|
469
|
+
|
|
470
|
+
Section breaks use gradient dividers (transparent → wood grain → brass → wood grain → transparent) with a centered decorative Unicode character (✶, ❧, ✤, ❦).
|
|
471
|
+
|
|
472
|
+
### 7. **Wax Seal Badges**
|
|
473
|
+
|
|
474
|
+
Featured or highlighted items get circular crimson badges with radial gradients and inset shadows, containing a centered star icon. This mimics traditional wax seals on important documents.
|
|
475
|
+
|
|
476
|
+
### 8. **Brass Interactive Elements**
|
|
477
|
+
|
|
478
|
+
ALL interactive elements (buttons, links, focus rings, hover states) must use the brass color (#C9A962) or brass gradient. This is non-negotiable - brass is the interactive color language.
|
|
479
|
+
|
|
480
|
+
### 9. **Engraved Text Effects**
|
|
481
|
+
|
|
482
|
+
Buttons and special headings use dual text-shadow (dark below, light above) to create pressed-into-metal engraved appearance.
|
|
483
|
+
|
|
484
|
+
### 10. **Texture Overlays**
|
|
485
|
+
|
|
486
|
+
Page must include both subtle paper texture (3% opacity noise) and vignette effect (radial gradient darkening edges). These are fixed overlays that create atmospheric depth.
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
## Animation & Motion
|
|
491
|
+
|
|
492
|
+
**Motion Philosophy**: Dignified, deliberate, and smooth. Nothing should feel snappy, bouncy, or playful. Motion should feel like the weight of leather-bound books, the swing of brass lamps, the turn of old pages.
|
|
493
|
+
|
|
494
|
+
**Timing Functions**:
|
|
495
|
+
|
|
496
|
+
- Default: `ease-out` (natural deceleration)
|
|
497
|
+
- Never use: `ease-in-out` (too mechanical), `bounce`, `spring` (too playful)
|
|
498
|
+
|
|
499
|
+
**Duration Hierarchy**:
|
|
500
|
+
|
|
501
|
+
- Fast interactions (button press, focus): `150ms`
|
|
502
|
+
- Standard transitions (hover, border changes): `300ms`
|
|
503
|
+
- Deliberate transitions (cards lifting, border color): `500ms`
|
|
504
|
+
- Dramatic reveals (sepia to color, scale): `700ms`
|
|
505
|
+
|
|
506
|
+
**Transform Patterns**:
|
|
507
|
+
|
|
508
|
+
- Hover scale: `scale-105` or `scale-[1.02]` (subtle, never dramatic)
|
|
509
|
+
- Hover lift: Increase shadow, don't translate vertically
|
|
510
|
+
- No rotation transforms (except for chevron icons)
|
|
511
|
+
- No slide-in or slide-out animations
|
|
512
|
+
|
|
513
|
+
**Signature Animation - Brass Shimmer** (optional enhancement):
|
|
514
|
+
Subtle brightness oscillation on brass buttons:
|
|
515
|
+
|
|
516
|
+
```
|
|
517
|
+
hover: brightness-110
|
|
518
|
+
animation: Gentle pulse between 100% and 110% over 2s
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
**Respect Motion Preferences**:
|
|
522
|
+
|
|
523
|
+
```css
|
|
524
|
+
@media (prefers-reduced-motion: reduce) {
|
|
525
|
+
* {
|
|
526
|
+
animation-duration: 0.01ms !important;
|
|
527
|
+
animation-iteration-count: 1 !important;
|
|
528
|
+
transition-duration: 0.01ms !important;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
## Iconography
|
|
536
|
+
|
|
537
|
+
**Icon Library**: Use Lucide React or similar minimal icon set
|
|
538
|
+
|
|
539
|
+
**Styling Rules**:
|
|
540
|
+
|
|
541
|
+
- Stroke width: `1.5` (thin, elegant lines)
|
|
542
|
+
- Color: Brass (`#C9A962`) for decorative icons
|
|
543
|
+
- Size: `h-4 w-4` to `h-6 w-6` depending on context
|
|
544
|
+
- Containers: Often enclosed in circular or shield-shaped containers with brass border
|
|
545
|
+
|
|
546
|
+
**Engraved Icon Treatment** (optional):
|
|
547
|
+
|
|
548
|
+
- Place icons in circular containers: `rounded-full border border-[#C9A962]/30 bg-[#1C1714]`
|
|
549
|
+
- Size: `h-12 w-12` with centered icon `h-5 w-5`
|
|
550
|
+
- Creates "carved medallion" effect
|
|
551
|
+
|
|
552
|
+
**Icon Usage**:
|
|
553
|
+
|
|
554
|
+
- Feature icons: Educational symbols (book, scroll, graduation cap, quill)
|
|
555
|
+
- Button icons: Actions (chevrons, external link, check marks)
|
|
556
|
+
- Decorative icons: Stars for ratings, quotes for testimonials
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
## Anti-Patterns (What to Avoid)
|
|
561
|
+
|
|
562
|
+
### Do NOT:
|
|
563
|
+
|
|
564
|
+
1. **Use sans-serif fonts** anywhere except for extreme edge cases (accessibility overrides)
|
|
565
|
+
2. **Use bright, saturated colors** - everything should feel aged and warm
|
|
566
|
+
3. **Use sharp, geometric shapes** - favor organic curves and traditional architecture
|
|
567
|
+
4. **Overuse decorative elements** - restraint is scholarly; excess is gaudy
|
|
568
|
+
5. **Use modern gradients** (except brass metallic effect) - no vibrant color transitions
|
|
569
|
+
6. **Ignore the arch-top pattern** - flat-top images break the aesthetic
|
|
570
|
+
7. **Skip Roman numerals** - they're essential to the classical academic vibe
|
|
571
|
+
8. **Use pure black (#000000)** - always use warm dark browns
|
|
572
|
+
9. **Use pure white (#FFFFFF)** - always use warm cream tones
|
|
573
|
+
10. **Add playful animations** - no bouncing, no elastic effects, no whimsy
|
|
574
|
+
11. **Forget sepia filters** - images must feel aged by default
|
|
575
|
+
12. **Use thin borders everywhere** - let backgrounds do separation work, borders for emphasis
|
|
576
|
+
13. **Mix cold and warm tones** - this is a warm palette exclusively
|
|
577
|
+
|
|
578
|
+
### Common Mistakes:
|
|
579
|
+
|
|
580
|
+
- **Too many corner flourishes** - reserve for hero and cards, not every element
|
|
581
|
+
- **Overusing crimson** - it's for special emphasis only, brass should dominate
|
|
582
|
+
- **Insufficient spacing** - academia needs breathing room for contemplation
|
|
583
|
+
- **Missing texture overlays** - these add essential atmospheric depth
|
|
584
|
+
- **Forgetting focus states** - keyboard navigation must have visible brass rings
|
|
585
|
+
- **Inconsistent font usage** - Cormorant for headings, Crimson for body, Cinzel for labels/display
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## Responsive Strategy
|
|
590
|
+
|
|
591
|
+
### Mobile (< 768px):
|
|
592
|
+
|
|
593
|
+
- **Stack all columns vertically** - maintain hierarchy
|
|
594
|
+
- **Touch targets** - Minimum 48px height for interactive elements (FAQ buttons 40px, general links 48px min-height)
|
|
595
|
+
- **Simplify decorative elements** - hide large corner flourishes, keep small ones
|
|
596
|
+
- **Maintain typography** - reduce sizes slightly (text-lg becomes text-base) but keep font choices
|
|
597
|
+
- **Full-width cards** - preserve arch-tops on images
|
|
598
|
+
- **Single-line borders** - simplify double-border effects
|
|
599
|
+
- **Reduce spacing** - py-16 instead of py-24 for sections, reduce internal padding (pl-6 instead of pl-10)
|
|
600
|
+
- **Simplify navigation** - hamburger menu with same serif styling
|
|
601
|
+
- **Form elements** - Stack email input and button vertically, ensure full-width buttons on mobile
|
|
602
|
+
|
|
603
|
+
### Tablet (768px - 1024px):
|
|
604
|
+
|
|
605
|
+
- **Two-column grids** where appropriate (features, testimonials)
|
|
606
|
+
- **Partial decorative elements** - show corner flourishes on cards
|
|
607
|
+
- **Maintain most effects** - keep sepia transitions, brass interactions
|
|
608
|
+
- **Flexible spacing** - scale between mobile and desktop values
|
|
609
|
+
|
|
610
|
+
### Desktop (> 1024px):
|
|
611
|
+
|
|
612
|
+
- **Full ornate experience** - all decorative elements visible
|
|
613
|
+
- **Three-column grids** - features, pricing, benefits
|
|
614
|
+
- **Maximum visual richness** - large corner flourishes, full texture overlays
|
|
615
|
+
- **Generous spacing** - full py-24 to py-32 section padding
|
|
616
|
+
|
|
617
|
+
### Responsive Image Strategy:
|
|
618
|
+
|
|
619
|
+
- Arch-tops work at all sizes - maintain the effect
|
|
620
|
+
- Use `aspect-[3/4]` or `aspect-[4/5]` for portraits, `aspect-[4/3]` for landscapes
|
|
621
|
+
- Always apply sepia filter at all viewport sizes
|
|
622
|
+
|
|
623
|
+
---
|
|
624
|
+
|
|
625
|
+
## Accessibility Considerations
|
|
626
|
+
|
|
627
|
+
### Contrast Requirements:
|
|
628
|
+
|
|
629
|
+
- **Primary text on background**: 8.5:1 (exceeds WCAG AAA)
|
|
630
|
+
- **Secondary text on background**: 4.5:1 minimum (meets WCAG AA)
|
|
631
|
+
- **Brass on dark backgrounds**: 7:1 (excellent)
|
|
632
|
+
- **Dark text on brass buttons**: 8:1 (excellent)
|
|
633
|
+
|
|
634
|
+
### Focus Indicators:
|
|
635
|
+
|
|
636
|
+
- **Always visible**: 2px brass ring with 2px offset
|
|
637
|
+
- **High contrast**: Brass (#C9A962) against all backgrounds
|
|
638
|
+
- **Never remove**: Critical for keyboard navigation
|
|
639
|
+
- **Ring offset**: Uses background color for clear separation
|
|
640
|
+
|
|
641
|
+
### Motion Preferences:
|
|
642
|
+
|
|
643
|
+
- Respect `prefers-reduced-motion` media query
|
|
644
|
+
- Disable or drastically reduce transition durations
|
|
645
|
+
- Maintain functionality without motion
|
|
646
|
+
|
|
647
|
+
### Semantic HTML:
|
|
648
|
+
|
|
649
|
+
- Use proper heading hierarchy (h1 → h2 → h3)
|
|
650
|
+
- Use `<nav>` for navigation, `<main>` for content, `<footer>` for footer
|
|
651
|
+
- Use `<button>` for actions, `<a>` for navigation
|
|
652
|
+
- Use `aria-label` for icon-only buttons
|
|
653
|
+
|
|
654
|
+
### Screen Reader Considerations:
|
|
655
|
+
|
|
656
|
+
- Decorative elements (flourishes, dividers) should have `aria-hidden="true"`
|
|
657
|
+
- Images must have descriptive alt text
|
|
658
|
+
- Form inputs must have associated labels
|
|
659
|
+
- Focus order must be logical
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## Implementation Constraints
|
|
664
|
+
|
|
665
|
+
### Technology Stack:
|
|
666
|
+
|
|
667
|
+
- **CSS Framework**: Tailwind CSS v4+ with arbitrary value syntax `[#C9A962]`
|
|
668
|
+
- **Fonts**: Google Fonts (Cormorant Garamond, Crimson Pro, Cinzel)
|
|
669
|
+
- **Icons**: Lucide React or similar minimal icon set
|
|
670
|
+
- **Custom CSS**: Required for textures, flourishes, and complex decorative elements
|
|
671
|
+
|
|
672
|
+
### Custom CSS Requirements:
|
|
673
|
+
|
|
674
|
+
The following cannot be achieved with Tailwind alone and require custom CSS:
|
|
675
|
+
|
|
676
|
+
- Paper texture overlay (SVG noise filter)
|
|
677
|
+
- Vignette radial gradient overlay
|
|
678
|
+
- Corner flourishes (pseudo-elements)
|
|
679
|
+
- Ornate dividers with centered glyphs
|
|
680
|
+
- Wax seal badge (complex radial gradient)
|
|
681
|
+
- Drop cap styling (::first-letter pseudo-element)
|
|
682
|
+
- Arch-top border-radius (complex multi-value syntax)
|
|
683
|
+
|
|
684
|
+
### Performance Considerations:
|
|
685
|
+
|
|
686
|
+
- Fixed overlays (texture, vignette) use single elements, not per-component
|
|
687
|
+
- Sepia filters are GPU-accelerated transforms
|
|
688
|
+
- Minimize custom fonts to three families
|
|
689
|
+
- Use font-display: swap for Google Fonts
|
|
690
|
+
|
|
691
|
+
### Browser Support:
|
|
692
|
+
|
|
693
|
+
- Modern browsers (last 2 versions of Chrome, Firefox, Safari, Edge)
|
|
694
|
+
- CSS Grid and Flexbox required
|
|
695
|
+
- CSS custom properties for theme tokens
|
|
696
|
+
- Border-radius complex syntax for arch-tops
|
|
697
|
+
|
|
698
|
+
---
|
|
699
|
+
|
|
700
|
+
## Design Token Reference (Quick Copy)
|
|
701
|
+
|
|
702
|
+
```javascript
|
|
703
|
+
export const academiaTokens = {
|
|
704
|
+
colors: {
|
|
705
|
+
background: "#1C1714",
|
|
706
|
+
backgroundAlt: "#251E19",
|
|
707
|
+
foreground: "#E8DFD4",
|
|
708
|
+
muted: "#3D332B",
|
|
709
|
+
mutedForeground: "#9C8B7A",
|
|
710
|
+
accent: "#C9A962",
|
|
711
|
+
accentSecondary: "#8B2635",
|
|
712
|
+
border: "#4A3F35",
|
|
713
|
+
},
|
|
714
|
+
fonts: {
|
|
715
|
+
heading: "'Cormorant Garamond', serif",
|
|
716
|
+
body: "'Crimson Pro', serif",
|
|
717
|
+
display: "'Cinzel', serif",
|
|
718
|
+
},
|
|
719
|
+
radius: {
|
|
720
|
+
default: "4px",
|
|
721
|
+
arch: "40% 40% 0 0 / 20% 20% 0 0",
|
|
722
|
+
},
|
|
723
|
+
transitions: {
|
|
724
|
+
fast: "150ms",
|
|
725
|
+
base: "300ms",
|
|
726
|
+
slow: "500ms",
|
|
727
|
+
dramatic: "700ms",
|
|
728
|
+
},
|
|
729
|
+
spacing: {
|
|
730
|
+
section: ["py-24", "py-32"],
|
|
731
|
+
card: ["p-8", "p-12"],
|
|
732
|
+
element: ["gap-4", "gap-8"],
|
|
733
|
+
},
|
|
734
|
+
effects: {
|
|
735
|
+
sepia: "sepia(0.6) contrast(0.95) brightness(0.9)",
|
|
736
|
+
brassGradient: "linear-gradient(180deg, #D4B872 0%, #C9A962 50%, #B8953F 100%)",
|
|
737
|
+
engraved: "1px 1px 1px rgba(0,0,0,0.4), -1px -1px 1px rgba(255,255,255,0.1)",
|
|
738
|
+
},
|
|
739
|
+
};
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
## Summary
|
|
745
|
+
|
|
746
|
+
Academia/Classical is defined by its **material authenticity** (aged paper, dark wood, polished brass), **typographic excellence** (three distinct serifs used purposefully), and **signature architectural elements** (arch-tops, corner flourishes, Roman numerals).
|
|
747
|
+
|
|
748
|
+
The style succeeds when every element feels like it could exist in a physical 19th-century university library. It fails when it feels like a generic dark theme with serifs tacked on.
|
|
749
|
+
|
|
750
|
+
The brass/gold accent color is the interactive language. The sepia-to-color transition is the magical moment. The arch-topped images are the architectural signature. Together, these create a cohesive, prestigious, scholarly experience that feels timeless and trustworthy.
|
|
751
|
+
`</design-system>`
|