@stacklist-app/brandkit 1.1.1

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.
@@ -0,0 +1,995 @@
1
+ /* ═══════════════════════════════════════════════════════════════════
2
+ Brandkit — Style Guide Engine
3
+ Self-contained stylesheet, no dependencies.
4
+ CSS custom properties injected by engine.js from config.json.
5
+ ═══════════════════════════════════════════════════════════════════ */
6
+
7
+ * { margin: 0; padding: 0; box-sizing: border-box; }
8
+
9
+ body {
10
+ font-family: var(--font-body), sans-serif;
11
+ background: var(--cloud);
12
+ color: var(--ink);
13
+ -webkit-font-smoothing: antialiased;
14
+ }
15
+
16
+ /* ── Layout ── */
17
+ .layout { display: flex; min-height: 100vh; }
18
+
19
+ .sidebar {
20
+ position: fixed;
21
+ top: 0;
22
+ left: 0;
23
+ width: 200px;
24
+ height: 100vh;
25
+ padding: 32px 0;
26
+ overflow-y: auto;
27
+ background: var(--white);
28
+ border-right: 1px solid var(--mist);
29
+ z-index: 100;
30
+ }
31
+
32
+ .sidebar-brand {
33
+ font-family: var(--font-display), sans-serif;
34
+ font-size: 18px;
35
+ font-weight: 700;
36
+ color: var(--purple);
37
+ padding: 0 24px;
38
+ margin-bottom: 32px;
39
+ letter-spacing: -0.02em;
40
+ }
41
+
42
+ .sidebar-nav { list-style: none; }
43
+
44
+ .sidebar-nav a {
45
+ display: block;
46
+ padding: 8px 24px;
47
+ font-size: 13px;
48
+ color: var(--slate);
49
+ text-decoration: none;
50
+ transition: all 150ms ease;
51
+ border-left: 2px solid transparent;
52
+ }
53
+
54
+ .sidebar-nav a:hover { color: var(--ink); background: var(--cloud); }
55
+ .sidebar-nav a.active { color: var(--purple); border-left-color: var(--purple); background: rgba(var(--purple-rgb), 0.04); font-weight: 500; }
56
+
57
+ /* ── Sidebar Grouped Navigation ── */
58
+ .nav-group {
59
+ padding: 20px 24px 6px;
60
+ font-family: var(--font-body), sans-serif;
61
+ font-size: 10px;
62
+ font-weight: 700;
63
+ letter-spacing: 0.10em;
64
+ text-transform: uppercase;
65
+ color: var(--slate);
66
+ cursor: default;
67
+ user-select: none;
68
+ }
69
+
70
+ .nav-group:first-child { padding-top: 0; }
71
+
72
+ .nav-group-items {
73
+ list-style: none;
74
+ padding: 0;
75
+ margin: 0;
76
+ }
77
+
78
+ .nav-group-items a {
79
+ display: block;
80
+ padding: 6px 24px 6px 32px;
81
+ font-size: 13px;
82
+ color: var(--slate);
83
+ text-decoration: none;
84
+ transition: all 150ms ease;
85
+ border-left: 2px solid transparent;
86
+ }
87
+
88
+ .nav-group-items a:hover { color: var(--ink); background: var(--cloud); }
89
+ .nav-group-items a.active { color: var(--purple); border-left-color: var(--purple); background: rgba(var(--purple-rgb), 0.04); font-weight: 500; }
90
+
91
+ .main { margin-left: 200px; flex: 1; }
92
+
93
+ .page {
94
+ max-width: 1100px;
95
+ margin: 0 auto;
96
+ padding: 60px 60px 80px;
97
+ }
98
+
99
+ /* ── Copy Format Toggle ── */
100
+ .copy-format-bar {
101
+ position: fixed;
102
+ bottom: 24px;
103
+ left: 224px;
104
+ display: flex;
105
+ gap: 2px;
106
+ background: var(--white);
107
+ border: 1px solid var(--mist);
108
+ border-radius: 9999px;
109
+ padding: 3px;
110
+ box-shadow: 0 4px 20px rgba(var(--ink-rgb), 0.1);
111
+ z-index: 200;
112
+ font-size: 12px;
113
+ }
114
+
115
+ .copy-format-bar button {
116
+ padding: 6px 14px;
117
+ border: none;
118
+ border-radius: 9999px;
119
+ background: transparent;
120
+ color: var(--slate);
121
+ cursor: pointer;
122
+ font-family: var(--font-body), sans-serif;
123
+ font-size: 12px;
124
+ font-weight: 500;
125
+ transition: all 150ms ease;
126
+ }
127
+
128
+ .copy-format-bar button.active {
129
+ background: var(--purple);
130
+ color: var(--white);
131
+ }
132
+
133
+ .copy-format-bar button:hover:not(.active) { background: var(--cloud); }
134
+
135
+ /* ── Toast ── */
136
+ .toast-container {
137
+ position: fixed;
138
+ bottom: 24px;
139
+ right: 24px;
140
+ display: flex;
141
+ flex-direction: column-reverse;
142
+ gap: 8px;
143
+ z-index: 300;
144
+ pointer-events: none;
145
+ }
146
+
147
+ .toast {
148
+ background: var(--ink);
149
+ color: var(--white);
150
+ padding: 10px 20px;
151
+ border-radius: 10px;
152
+ font-size: 13px;
153
+ font-weight: 500;
154
+ font-family: var(--font-body), sans-serif;
155
+ box-shadow: 0 4px 20px rgba(var(--ink-rgb), 0.2);
156
+ animation: toast-in 200ms ease forwards;
157
+ display: flex;
158
+ align-items: center;
159
+ gap: 8px;
160
+ }
161
+
162
+ .toast.out { animation: toast-out 200ms ease forwards; }
163
+
164
+ .toast svg { width: 14px; height: 14px; flex-shrink: 0; }
165
+
166
+ @keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
167
+ @keyframes toast-out { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-8px); } }
168
+
169
+ /* ── Header ── */
170
+ .header {
171
+ background: var(--gradient-brand);
172
+ border-radius: 24px;
173
+ padding: 64px 56px;
174
+ margin-bottom: 72px;
175
+ display: flex;
176
+ align-items: flex-end;
177
+ justify-content: space-between;
178
+ position: relative;
179
+ overflow: hidden;
180
+ }
181
+
182
+ .header::before {
183
+ content: '';
184
+ position: absolute;
185
+ top: -40%;
186
+ right: -10%;
187
+ width: 400px;
188
+ height: 400px;
189
+ background: rgba(255, 255, 255, 0.06);
190
+ border-radius: 50%;
191
+ }
192
+
193
+ .header-wordmark {
194
+ font-family: var(--font-display), sans-serif;
195
+ font-size: 56px;
196
+ font-weight: 700;
197
+ color: var(--white);
198
+ letter-spacing: -0.03em;
199
+ position: relative;
200
+ z-index: 1;
201
+ }
202
+
203
+ .header-meta {
204
+ font-size: 13px;
205
+ color: rgba(255, 255, 255, 0.6);
206
+ text-align: right;
207
+ line-height: 1.6;
208
+ position: relative;
209
+ z-index: 1;
210
+ }
211
+
212
+ /* ── Section ── */
213
+ .section { margin-bottom: 72px; scroll-margin-top: 24px; }
214
+
215
+ .section-label {
216
+ font-family: var(--font-body), sans-serif;
217
+ font-size: 11px;
218
+ font-weight: 700;
219
+ letter-spacing: 0.12em;
220
+ text-transform: uppercase;
221
+ color: var(--slate);
222
+ margin-bottom: 32px;
223
+ }
224
+
225
+ .section-intro {
226
+ font-size: 15px;
227
+ line-height: 1.7;
228
+ color: var(--graphite);
229
+ max-width: 640px;
230
+ margin-bottom: 40px;
231
+ }
232
+
233
+ /* ── Copyable ── */
234
+ .copyable {
235
+ cursor: pointer;
236
+ position: relative;
237
+ transition: opacity 150ms ease;
238
+ }
239
+
240
+ .copyable:hover { opacity: 0.8; }
241
+
242
+ .copy-hint {
243
+ position: absolute;
244
+ inset: 0;
245
+ display: flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ background: rgba(var(--ink-rgb), 0.6);
249
+ border-radius: inherit;
250
+ opacity: 0;
251
+ transition: opacity 150ms ease;
252
+ pointer-events: none;
253
+ }
254
+
255
+ .copy-hint span {
256
+ font-size: 11px;
257
+ font-weight: 700;
258
+ color: var(--white);
259
+ letter-spacing: 0.06em;
260
+ text-transform: uppercase;
261
+ }
262
+
263
+ .copyable:hover .copy-hint { opacity: 1; }
264
+
265
+ /* ── Color Palette ── */
266
+ .color-grid {
267
+ display: grid;
268
+ grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
269
+ gap: 20px;
270
+ }
271
+
272
+ .color-card { display: flex; flex-direction: column; }
273
+
274
+ .color-swatch {
275
+ width: 100%;
276
+ aspect-ratio: 1;
277
+ border-radius: 16px;
278
+ margin-bottom: 12px;
279
+ position: relative;
280
+ overflow: hidden;
281
+ }
282
+
283
+ .color-swatch.has-border { box-shadow: inset 0 0 0 1px rgba(var(--ink-rgb), 0.08); }
284
+
285
+ .color-name { font-size: 14px; font-weight: 500; color: var(--ink); margin-bottom: 2px; }
286
+
287
+ .color-value {
288
+ font-size: 11px;
289
+ font-weight: 400;
290
+ color: var(--slate);
291
+ font-variant-numeric: tabular-nums;
292
+ cursor: pointer;
293
+ padding: 2px 0;
294
+ }
295
+
296
+ .color-value:hover { color: var(--purple); }
297
+
298
+ .color-role { font-size: 11px; color: var(--haze); margin-top: 2px; }
299
+
300
+ .color-group-label {
301
+ font-size: 12px;
302
+ font-weight: 500;
303
+ color: var(--slate);
304
+ margin-bottom: 16px;
305
+ margin-top: 8px;
306
+ }
307
+
308
+ /* ── Gradient ── */
309
+ .gradient-display {
310
+ border-radius: 20px;
311
+ height: 140px;
312
+ margin-bottom: 20px;
313
+ position: relative;
314
+ overflow: hidden;
315
+ }
316
+
317
+ .gradient-display.brand { background: var(--gradient-brand); }
318
+ .gradient-display.subtle { background: var(--gradient-brand-subtle); border: 1px solid var(--mist); }
319
+
320
+ .gradient-stops {
321
+ display: flex;
322
+ justify-content: space-between;
323
+ padding: 0 4px;
324
+ margin-bottom: 8px;
325
+ }
326
+
327
+ .gradient-stop {
328
+ display: flex;
329
+ align-items: center;
330
+ gap: 8px;
331
+ font-size: 11px;
332
+ color: var(--slate);
333
+ }
334
+
335
+ .gradient-stop-dot {
336
+ width: 12px;
337
+ height: 12px;
338
+ border-radius: 50%;
339
+ border: 2px solid var(--white);
340
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
341
+ }
342
+
343
+ .gradient-label { font-size: 12px; color: var(--slate); margin-top: 6px; text-align: center; }
344
+
345
+ .gradient-row { margin-bottom: 28px; }
346
+
347
+ .gradient-usage { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 28px; }
348
+
349
+ .gradient-usage-card { background: var(--mist); border-radius: 16px; padding: 28px; }
350
+
351
+ .gradient-usage-card h4 {
352
+ font-family: var(--font-display), sans-serif;
353
+ font-size: 14px;
354
+ font-weight: 600;
355
+ color: var(--ink);
356
+ margin-bottom: 12px;
357
+ }
358
+
359
+ .gradient-usage-card ul { list-style: none; padding: 0; }
360
+
361
+ .gradient-usage-card li {
362
+ font-size: 13px;
363
+ line-height: 1.7;
364
+ color: var(--graphite);
365
+ padding-left: 16px;
366
+ position: relative;
367
+ }
368
+
369
+ .gradient-usage-card li::before {
370
+ content: '';
371
+ position: absolute;
372
+ left: 0;
373
+ top: 9px;
374
+ width: 6px;
375
+ height: 6px;
376
+ border-radius: 50%;
377
+ }
378
+
379
+ .gradient-usage-card.do li::before { background: var(--success); }
380
+ .gradient-usage-card.dont li::before { background: var(--error); }
381
+
382
+ /* ── Typography ── */
383
+ .type-specimen { margin-bottom: 40px; }
384
+
385
+ .type-sample-display {
386
+ font-family: var(--font-display), sans-serif;
387
+ font-size: 56px;
388
+ font-weight: 700;
389
+ letter-spacing: -0.03em;
390
+ line-height: 1.1;
391
+ color: var(--ink);
392
+ margin-bottom: 4px;
393
+ }
394
+
395
+ .type-sample-body {
396
+ font-family: var(--font-body), sans-serif;
397
+ font-size: 42px;
398
+ font-weight: 400;
399
+ letter-spacing: -0.01em;
400
+ line-height: 1.15;
401
+ color: var(--ink);
402
+ margin-bottom: 4px;
403
+ }
404
+
405
+ .type-details { font-size: 12px; color: var(--slate); margin-bottom: 32px; }
406
+
407
+ .type-tester {
408
+ background: var(--white);
409
+ border: 1px solid var(--mist);
410
+ border-radius: 16px;
411
+ padding: 32px;
412
+ margin-bottom: 32px;
413
+ }
414
+
415
+ .type-tester-label {
416
+ font-size: 11px;
417
+ font-weight: 700;
418
+ letter-spacing: 0.08em;
419
+ text-transform: uppercase;
420
+ color: var(--slate);
421
+ margin-bottom: 16px;
422
+ display: flex;
423
+ align-items: center;
424
+ gap: 12px;
425
+ }
426
+
427
+ .type-tester-label select {
428
+ font-family: var(--font-body), sans-serif;
429
+ font-size: 12px;
430
+ font-weight: 500;
431
+ color: var(--purple);
432
+ background: rgba(var(--purple-rgb), 0.06);
433
+ border: 1px solid rgba(var(--purple-rgb), 0.15);
434
+ border-radius: 6px;
435
+ padding: 4px 8px;
436
+ cursor: pointer;
437
+ text-transform: none;
438
+ letter-spacing: 0;
439
+ }
440
+
441
+ .type-tester-input {
442
+ font-size: 32px;
443
+ font-weight: 600;
444
+ letter-spacing: -0.02em;
445
+ color: var(--ink);
446
+ outline: none;
447
+ min-height: 48px;
448
+ line-height: 1.3;
449
+ }
450
+
451
+ .type-tester-input:empty::before {
452
+ content: attr(data-placeholder);
453
+ color: var(--haze);
454
+ }
455
+
456
+ .type-scale { display: flex; flex-direction: column; }
457
+
458
+ .type-row {
459
+ display: grid;
460
+ grid-template-columns: 100px 1fr 200px;
461
+ align-items: baseline;
462
+ padding: 14px 0;
463
+ border-bottom: 1px solid var(--mist);
464
+ }
465
+
466
+ .type-row:first-child { border-top: 1px solid var(--mist); }
467
+
468
+ .type-row-label {
469
+ font-size: 11px;
470
+ font-weight: 500;
471
+ color: var(--slate);
472
+ text-transform: uppercase;
473
+ letter-spacing: 0.06em;
474
+ }
475
+
476
+ .type-row-sample { color: var(--ink); }
477
+ .type-row-spec { font-size: 12px; color: var(--slate); text-align: right; font-variant-numeric: tabular-nums; }
478
+
479
+ /* ── Text Hierarchy ── */
480
+ .hierarchy-demo {
481
+ background: var(--white);
482
+ border-radius: 20px;
483
+ padding: 40px;
484
+ margin-bottom: 20px;
485
+ border: 1px solid var(--mist);
486
+ }
487
+
488
+ .hierarchy-demo .h-primary { font-size: 15px; color: var(--ink); line-height: 1.7; margin-bottom: 14px; }
489
+ .hierarchy-demo .h-secondary { font-size: 15px; color: var(--graphite); line-height: 1.7; margin-bottom: 14px; }
490
+ .hierarchy-demo .h-tertiary { font-size: 13px; color: var(--slate); line-height: 1.6; margin-bottom: 14px; }
491
+ .hierarchy-demo .h-accent { font-size: 15px; font-weight: 500; color: var(--purple); }
492
+
493
+ .hierarchy-labels { display: flex; gap: 28px; flex-wrap: wrap; }
494
+
495
+ .hierarchy-label { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--graphite); }
496
+ .hierarchy-dot { width: 10px; height: 10px; border-radius: 50%; }
497
+
498
+ /* ── Wordmark ── */
499
+ .wordmark-display { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }
500
+
501
+ .wordmark-box {
502
+ aspect-ratio: 16/9;
503
+ border-radius: 16px;
504
+ display: flex;
505
+ align-items: center;
506
+ justify-content: center;
507
+ font-family: var(--font-display), sans-serif;
508
+ font-size: 48px;
509
+ font-weight: 700;
510
+ letter-spacing: -0.03em;
511
+ }
512
+
513
+ .wordmark-box.on-gradient { background: var(--gradient-brand); color: var(--white); }
514
+ .wordmark-box.on-dark { background: var(--ink); color: var(--white); }
515
+ .wordmark-box.on-light { background: var(--mist); color: var(--purple); }
516
+ .wordmark-box.on-white { background: var(--white); color: var(--purple); box-shadow: inset 0 0 0 1px rgba(var(--ink-rgb), 0.08); }
517
+
518
+ .wordmark-note { font-size: 12px; color: var(--slate); text-align: center; margin-top: 6px; }
519
+
520
+ /* ── Logo Section ── */
521
+ .logo-grid {
522
+ display: grid;
523
+ grid-template-columns: 1fr 1fr;
524
+ gap: 24px;
525
+ margin-top: 32px;
526
+ }
527
+
528
+ .logo-card {
529
+ border-radius: 16px;
530
+ padding: 40px;
531
+ display: flex;
532
+ flex-direction: column;
533
+ align-items: center;
534
+ gap: 20px;
535
+ }
536
+
537
+ .logo-card.bg-light {
538
+ background: var(--white);
539
+ border: 1px solid var(--mist);
540
+ }
541
+
542
+ .logo-card.bg-dark {
543
+ background: var(--ink);
544
+ }
545
+
546
+ .logo-card.bg-gradient {
547
+ background: var(--gradient-brand);
548
+ }
549
+
550
+ /* Engine-generated class names */
551
+ .logo-card.on-light { background: var(--white); border: 1px solid var(--mist); }
552
+ .logo-card.on-gradient { background: var(--gradient-brand); }
553
+ .logo-card.on-dark { background: var(--ink); }
554
+
555
+ .logo-card img {
556
+ max-height: 80px;
557
+ width: auto;
558
+ object-fit: contain;
559
+ }
560
+
561
+ .logo-name {
562
+ font-family: var(--font-display), sans-serif;
563
+ font-size: 14px;
564
+ font-weight: 600;
565
+ color: var(--white);
566
+ text-align: center;
567
+ }
568
+
569
+ .logo-card.on-light .logo-name { color: var(--ink); }
570
+
571
+ .logo-description {
572
+ font-size: 12px;
573
+ color: rgba(255, 255, 255, 0.6);
574
+ text-align: center;
575
+ }
576
+
577
+ .logo-card.on-light .logo-description { color: var(--slate); }
578
+
579
+ .logo-controls {
580
+ display: flex;
581
+ align-items: center;
582
+ gap: 12px;
583
+ flex-wrap: wrap;
584
+ justify-content: center;
585
+ }
586
+
587
+ .logo-format-toggle {
588
+ display: flex;
589
+ gap: 2px;
590
+ background: rgba(255, 255, 255, 0.1);
591
+ border: 1px solid rgba(255, 255, 255, 0.15);
592
+ border-radius: 9999px;
593
+ padding: 3px;
594
+ }
595
+
596
+ .logo-format-toggle button {
597
+ padding: 5px 12px;
598
+ border: none;
599
+ border-radius: 9999px;
600
+ background: transparent;
601
+ color: rgba(255, 255, 255, 0.6);
602
+ cursor: pointer;
603
+ font-family: var(--font-body), sans-serif;
604
+ font-size: 11px;
605
+ font-weight: 500;
606
+ transition: all 150ms ease;
607
+ }
608
+
609
+ .logo-format-toggle button.active {
610
+ background: var(--purple);
611
+ color: var(--white);
612
+ }
613
+
614
+ .logo-format-toggle button:hover:not(.active) {
615
+ background: rgba(255, 255, 255, 0.08);
616
+ color: rgba(255, 255, 255, 0.9);
617
+ }
618
+
619
+ /* Light background variant for format toggle */
620
+ .logo-card.bg-light .logo-format-toggle {
621
+ background: var(--cloud);
622
+ border-color: var(--mist);
623
+ }
624
+
625
+ .logo-card.bg-light .logo-format-toggle button {
626
+ color: var(--slate);
627
+ }
628
+
629
+ .logo-card.bg-light .logo-format-toggle button.active {
630
+ background: var(--purple);
631
+ color: var(--white);
632
+ }
633
+
634
+ .logo-card.bg-light .logo-format-toggle button:hover:not(.active) {
635
+ background: var(--mist);
636
+ color: var(--ink);
637
+ }
638
+
639
+ .logo-size-select,
640
+ .logo-size-picker {
641
+ font-family: var(--font-body), sans-serif;
642
+ font-size: 12px;
643
+ font-weight: 500;
644
+ color: rgba(255, 255, 255, 0.8);
645
+ background: rgba(255, 255, 255, 0.1);
646
+ border: 1px solid rgba(255, 255, 255, 0.15);
647
+ border-radius: 8px;
648
+ padding: 5px 10px;
649
+ cursor: pointer;
650
+ transition: all 150ms ease;
651
+ appearance: none;
652
+ -webkit-appearance: none;
653
+ background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='rgba(255,255,255,0.5)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
654
+ background-repeat: no-repeat;
655
+ background-position: right 8px center;
656
+ padding-right: 26px;
657
+ }
658
+
659
+ .logo-size-select:hover {
660
+ background-color: rgba(255, 255, 255, 0.15);
661
+ }
662
+
663
+ /* Light background variant for size select */
664
+ .logo-card.bg-light .logo-size-select {
665
+ color: var(--graphite);
666
+ background-color: var(--cloud);
667
+ border-color: var(--mist);
668
+ background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%236E6584' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
669
+ }
670
+
671
+ .logo-card.bg-light .logo-size-select:hover,
672
+ .logo-card.on-light .logo-size-picker:hover {
673
+ background-color: var(--mist);
674
+ }
675
+
676
+ /* Engine-generated on-light variants */
677
+ .logo-card.on-light .logo-format-toggle {
678
+ background: var(--mist);
679
+ border-color: var(--haze);
680
+ }
681
+ .logo-card.on-light .logo-format-toggle button {
682
+ color: var(--slate);
683
+ }
684
+ .logo-card.on-light .logo-format-toggle button.active {
685
+ background: var(--purple);
686
+ color: var(--white);
687
+ }
688
+ .logo-card.on-light .logo-format-toggle button:hover:not(.active) {
689
+ background: var(--cloud);
690
+ }
691
+ .logo-card.on-light .logo-size-picker {
692
+ color: var(--graphite);
693
+ background-color: var(--cloud);
694
+ border-color: var(--mist);
695
+ }
696
+ .logo-card.on-light .logo-download-btn {
697
+ border-color: var(--haze);
698
+ background: transparent;
699
+ color: var(--purple);
700
+ }
701
+ .logo-card.on-light .logo-download-btn:hover {
702
+ background: var(--cloud);
703
+ }
704
+
705
+ .logo-download-btn {
706
+ display: inline-flex;
707
+ align-items: center;
708
+ gap: 6px;
709
+ padding: 6px 16px;
710
+ border-radius: 9999px;
711
+ border: 1px solid rgba(255, 255, 255, 0.25);
712
+ background: rgba(255, 255, 255, 0.1);
713
+ color: var(--white);
714
+ font-family: var(--font-body), sans-serif;
715
+ font-size: 12px;
716
+ font-weight: 500;
717
+ cursor: pointer;
718
+ transition: all 150ms ease;
719
+ text-decoration: none;
720
+ }
721
+
722
+ .logo-download-btn:hover { background: rgba(255, 255, 255, 0.2); }
723
+
724
+ .logo-download-btn svg { width: 14px; height: 14px; }
725
+
726
+ /* Light background variant for download button */
727
+ .logo-card.bg-light .logo-download-btn {
728
+ border-color: var(--haze);
729
+ background: transparent;
730
+ color: var(--purple);
731
+ }
732
+
733
+ .logo-card.bg-light .logo-download-btn:hover {
734
+ background: rgba(var(--purple-rgb), 0.06);
735
+ }
736
+
737
+ /* ── Voice ── */
738
+ .voice-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
739
+
740
+ .voice-card {
741
+ background: var(--white);
742
+ border: 1px solid var(--mist);
743
+ border-radius: 16px;
744
+ padding: 28px;
745
+ }
746
+
747
+ .voice-card-label {
748
+ font-size: 11px;
749
+ font-weight: 700;
750
+ letter-spacing: 0.08em;
751
+ text-transform: uppercase;
752
+ color: var(--slate);
753
+ margin-bottom: 18px;
754
+ }
755
+
756
+ .voice-example {
757
+ font-size: 15px;
758
+ line-height: 1.7;
759
+ color: var(--ink);
760
+ margin-bottom: 10px;
761
+ padding-left: 16px;
762
+ border-left: 2px solid rgba(var(--purple-rgb), 0.2);
763
+ }
764
+
765
+ .voice-example:last-child { margin-bottom: 0; }
766
+
767
+ .voice-card.dont .voice-example {
768
+ border-left-color: rgba(var(--error-rgb), 0.25);
769
+ color: var(--slate);
770
+ text-decoration: line-through;
771
+ text-decoration-color: rgba(var(--error-rgb), 0.3);
772
+ }
773
+
774
+ /* ── Components ── */
775
+ .component-row { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; margin-bottom: 20px; }
776
+
777
+ .component-label { font-size: 12px; font-weight: 500; color: var(--slate); width: 100%; margin-bottom: 4px; }
778
+
779
+ .btn {
780
+ display: inline-flex;
781
+ align-items: center;
782
+ justify-content: center;
783
+ font-family: var(--font-body), sans-serif;
784
+ font-weight: 500;
785
+ border: none;
786
+ cursor: pointer;
787
+ transition: all 150ms ease;
788
+ text-decoration: none;
789
+ }
790
+
791
+ .btn:active { transform: translateY(1px); }
792
+ .btn-sm { height: 32px; padding: 0 16px; font-size: 13px; border-radius: 9999px; }
793
+ .btn-md { height: 40px; padding: 0 24px; font-size: 14px; border-radius: 9999px; }
794
+ .btn-lg { height: 48px; padding: 0 28px; font-size: 16px; border-radius: 9999px; }
795
+ .btn-primary { background: var(--purple); color: var(--white); }
796
+ .btn-primary:hover { background: #5A2688; }
797
+ .btn-secondary { background: var(--mist); color: var(--ink); }
798
+ .btn-secondary:hover { background: #DDD8E8; }
799
+ .btn-ghost { background: transparent; color: var(--purple); border: 1px solid var(--haze); }
800
+ .btn-ghost:hover { background: var(--cloud); }
801
+ .btn-gradient { background: var(--gradient-brand); color: var(--white); }
802
+ .btn-gradient:hover { opacity: 0.9; }
803
+ .btn-coral { background: var(--coral); color: var(--white); }
804
+ .btn-coral:hover { background: var(--coral-dark); }
805
+
806
+ .card-demo-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 20px; }
807
+
808
+ .card-demo {
809
+ background: var(--white);
810
+ border: 1px solid var(--mist);
811
+ border-radius: 12px;
812
+ padding: 24px;
813
+ transition: box-shadow 200ms ease, transform 200ms ease;
814
+ }
815
+
816
+ .card-demo:hover {
817
+ box-shadow: 0 4px 12px rgba(var(--ink-rgb), 0.08), 0 2px 4px rgba(var(--ink-rgb), 0.04);
818
+ transform: translateY(-2px);
819
+ }
820
+
821
+ .card-demo h4 { font-family: var(--font-display), sans-serif; font-size: 16px; font-weight: 600; color: var(--ink); margin-bottom: 8px; }
822
+ .card-demo p { font-size: 14px; line-height: 1.6; color: var(--graphite); margin-bottom: 14px; }
823
+
824
+ .card-demo .tag {
825
+ display: inline-block;
826
+ font-size: 11px;
827
+ font-weight: 500;
828
+ padding: 3px 10px;
829
+ border-radius: 9999px;
830
+ background: rgba(var(--purple-rgb), 0.08);
831
+ color: var(--purple);
832
+ }
833
+
834
+ .dark-card-demo { background: var(--ink); border-radius: 20px; padding: 36px; margin-top: 20px; }
835
+ .dark-card-demo-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; }
836
+
837
+ .dark-section-label {
838
+ font-size: 11px;
839
+ font-weight: 700;
840
+ letter-spacing: 0.08em;
841
+ text-transform: uppercase;
842
+ color: rgba(255, 255, 255, 0.4);
843
+ margin-bottom: 16px;
844
+ }
845
+
846
+ .dark-card {
847
+ background: rgba(255, 255, 255, 0.05);
848
+ border: 1px solid rgba(255, 255, 255, 0.10);
849
+ border-radius: 12px;
850
+ padding: 24px;
851
+ transition: background 200ms ease;
852
+ }
853
+
854
+ .dark-card:hover { background: rgba(255, 255, 255, 0.08); }
855
+ .dark-card h4 { font-family: var(--font-display), sans-serif; font-size: 28px; font-weight: 700; color: var(--white); margin-bottom: 4px; letter-spacing: -0.01em; }
856
+ .dark-card p { font-size: 13px; color: rgba(255, 255, 255, 0.6); }
857
+
858
+ /* ── Spacing ── */
859
+ .spacing-scale { display: flex; flex-direction: column; gap: 10px; }
860
+
861
+ .spacing-row { display: flex; align-items: center; gap: 16px; }
862
+
863
+ .spacing-label {
864
+ font-size: 12px;
865
+ font-weight: 500;
866
+ color: var(--slate);
867
+ width: 70px;
868
+ text-align: right;
869
+ font-variant-numeric: tabular-nums;
870
+ }
871
+
872
+ .spacing-bar {
873
+ height: 24px;
874
+ border-radius: 6px;
875
+ background: var(--gradient-brand-subtle);
876
+ border: 1px solid var(--mist);
877
+ position: relative;
878
+ }
879
+
880
+ .spacing-value {
881
+ position: absolute;
882
+ right: 8px;
883
+ top: 50%;
884
+ transform: translateY(-50%);
885
+ font-size: 10px;
886
+ color: var(--slate);
887
+ font-variant-numeric: tabular-nums;
888
+ }
889
+
890
+ /* ── Accessibility ── */
891
+ .a11y-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
892
+
893
+ .a11y-card {
894
+ border-radius: 16px;
895
+ padding: 24px;
896
+ display: flex;
897
+ flex-direction: column;
898
+ justify-content: space-between;
899
+ min-height: 130px;
900
+ }
901
+
902
+ .a11y-text { font-size: 16px; font-weight: 500; margin-bottom: 14px; }
903
+
904
+ .a11y-meta { display: flex; justify-content: space-between; align-items: center; }
905
+ .a11y-ratio { font-size: 12px; font-weight: 600; }
906
+
907
+ .a11y-badge {
908
+ font-size: 10px;
909
+ font-weight: 700;
910
+ letter-spacing: 0.06em;
911
+ padding: 3px 8px;
912
+ border-radius: 4px;
913
+ text-transform: uppercase;
914
+ }
915
+
916
+ .a11y-badge.pass { background: rgba(var(--success-rgb), 0.15); color: var(--success); }
917
+ .a11y-badge.fail { background: rgba(var(--error-rgb), 0.12); color: var(--error); }
918
+ .a11y-badge.large { background: rgba(var(--purple-rgb), 0.12); color: var(--purple); }
919
+
920
+ /* ── Code Block ── */
921
+ .code-block {
922
+ background: var(--ink);
923
+ color: var(--mist);
924
+ border-radius: 16px;
925
+ padding: 28px;
926
+ font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
927
+ font-size: 13px;
928
+ line-height: 1.8;
929
+ overflow-x: auto;
930
+ }
931
+
932
+ .code-line {
933
+ display: block;
934
+ padding: 2px 8px;
935
+ margin: 0 -8px;
936
+ border-radius: 4px;
937
+ cursor: pointer;
938
+ transition: background 150ms ease;
939
+ }
940
+
941
+ .code-line:hover { background: rgba(255, 255, 255, 0.06); }
942
+
943
+ .code-section { color: rgba(255, 255, 255, 0.35); display: block; margin-top: 12px; }
944
+ .code-section:first-child { margin-top: 0; }
945
+
946
+ .token-prop { color: var(--lavender); }
947
+ .token-value { color: var(--coral-light); }
948
+ .token-comment { opacity: 0.4; }
949
+
950
+ /* ── Gradient Text ── */
951
+ .gradient-text {
952
+ background: var(--gradient-brand);
953
+ -webkit-background-clip: text;
954
+ -webkit-text-fill-color: transparent;
955
+ background-clip: text;
956
+ }
957
+
958
+ /* ── Empty State ── */
959
+ .empty-state {
960
+ padding: 32px;
961
+ text-align: center;
962
+ color: var(--haze);
963
+ font-size: 13px;
964
+ border: 1px dashed var(--mist);
965
+ border-radius: 12px;
966
+ }
967
+
968
+ /* ── Footer ── */
969
+ .guide-footer {
970
+ margin-top: 60px;
971
+ padding-top: 28px;
972
+ border-top: 1px solid var(--mist);
973
+ font-size: 12px;
974
+ color: var(--slate);
975
+ display: flex;
976
+ justify-content: space-between;
977
+ }
978
+
979
+ /* ── Print ── */
980
+ @media print {
981
+ .sidebar, .copy-format-bar, .toast-container { display: none !important; }
982
+ .main { margin-left: 0; }
983
+ .page { padding: 40px; }
984
+ .section { page-break-inside: avoid; }
985
+ }
986
+
987
+ /* ── Responsive ── */
988
+ @media (max-width: 900px) {
989
+ .sidebar { display: none; }
990
+ .main { margin-left: 0; }
991
+ .copy-format-bar { left: 24px; }
992
+ .card-demo-grid, .dark-card-demo-grid, .a11y-grid { grid-template-columns: 1fr; }
993
+ .voice-grid, .gradient-usage, .wordmark-display, .logo-grid { grid-template-columns: 1fr; }
994
+ .type-row { grid-template-columns: 60px 1fr 140px; }
995
+ }