@prosophia/lab-minimal 0.0.2 → 0.0.4

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,820 @@
1
+ /* globals.css - Minimal Template */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
3
+
4
+ /* ===================================
5
+ DESIGN SYSTEM - MINIMAL TEMPLATE
6
+ Clean • Simple • Content-Focused
7
+ Minimal Edition v1.0
8
+ =================================== */
9
+
10
+ :root {
11
+ /* Minimal Color Scheme - Neutral + Blue Accent */
12
+ /* Light Mode Colors (Default) */
13
+ --light-bg-primary: #FFFFFF;
14
+ --light-bg-secondary: #F8F9FA;
15
+ --light-bg-tertiary: #F1F3F4;
16
+ --light-text-primary: #1A1A1A;
17
+ --light-text-secondary: #4A4A4A;
18
+ --light-text-muted: #7A7A7A;
19
+ --light-border: #E5E5E5;
20
+ --light-card-bg: #FFFFFF;
21
+
22
+ /* Dark Mode Colors */
23
+ --dark-bg-primary: #0A0A0A;
24
+ --dark-bg-secondary: #141414;
25
+ --dark-bg-tertiary: #1E1E1E;
26
+ --dark-text-primary: #FAFAFA;
27
+ --dark-text-secondary: #B0B0B0;
28
+ --dark-text-muted: #707070;
29
+ --dark-border: #2A2A2A;
30
+ --dark-card-bg: #1A1A1A;
31
+
32
+ /* Single Accent Color - Blue */
33
+ --accent-primary: #2563EB;
34
+ --accent-hover: #1D4ED8;
35
+ --accent-light: #3B82F6;
36
+ --accent-muted: rgba(37, 99, 235, 0.1);
37
+
38
+ /* Legacy Compatibility */
39
+ --color-brand-primary: var(--accent-primary);
40
+ --color-brand-secondary: var(--accent-hover);
41
+ --color-brand-tertiary: var(--accent-light);
42
+ --color-brand-accent: var(--accent-primary);
43
+ --color-brand-neutral: var(--accent-primary);
44
+
45
+ /* Background Colors (light mode default) */
46
+ --color-background-primary: var(--light-bg-primary);
47
+ --color-background-secondary: var(--light-bg-secondary);
48
+ --color-background-tertiary: var(--light-bg-tertiary);
49
+ --color-background-card: var(--light-card-bg);
50
+ --color-background-elevated: #FFFFFF;
51
+ --color-footer-background: var(--dark-bg-primary);
52
+
53
+ /* Text Colors */
54
+ --color-text-primary: var(--light-text-primary);
55
+ --color-text-secondary: var(--light-text-secondary);
56
+ --color-text-tertiary: var(--light-text-muted);
57
+ --color-text-muted: var(--light-text-muted);
58
+ --color-text-accent: var(--accent-primary);
59
+ --color-text-purple: var(--accent-primary);
60
+ --color-text-inverse: #FFFFFF;
61
+
62
+ /* Border Colors */
63
+ --color-border: var(--light-border);
64
+ --color-border-light: var(--light-border);
65
+ --color-border-medium: #D0D0D0;
66
+ --color-border-dark: #B0B0B0;
67
+ --color-border-accent: var(--accent-primary);
68
+
69
+ /* Status Colors */
70
+ --color-success: #10B981;
71
+ --color-warning: #F59E0B;
72
+ --color-error: #EF4444;
73
+ --color-info: #3B82F6;
74
+
75
+ /* Gradients (Minimal - mostly solid) */
76
+ --gradient-primary: var(--accent-primary);
77
+ --gradient-secondary: var(--accent-hover);
78
+ --gradient-accent: var(--accent-primary);
79
+ --gradient-hero: var(--light-bg-primary);
80
+ --gradient-card-hover: transparent;
81
+
82
+ /* Typography - Single Font Family */
83
+ --font-heading: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
84
+ --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
85
+ --font-mono: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
86
+
87
+ /* Font Sizes - Slightly Smaller Scale */
88
+ --font-size-xs: 0.75rem;
89
+ --font-size-sm: 0.8125rem;
90
+ --font-size-base: 0.9375rem;
91
+ --font-size-lg: 1rem;
92
+ --font-size-xl: 1.125rem;
93
+ --font-size-2xl: 1.25rem;
94
+ --font-size-3xl: 1.5rem;
95
+ --font-size-4xl: 1.875rem;
96
+ --font-size-5xl: 2.25rem;
97
+ --font-size-6xl: 2.75rem;
98
+
99
+ /* Font Weights */
100
+ --font-weight-light: 300;
101
+ --font-weight-normal: 400;
102
+ --font-weight-medium: 500;
103
+ --font-weight-semibold: 600;
104
+ --font-weight-bold: 700;
105
+ --font-weight-black: 800;
106
+
107
+ /* Line Heights */
108
+ --line-height-tight: 1.2;
109
+ --line-height-snug: 1.375;
110
+ --line-height-normal: 1.5;
111
+ --line-height-relaxed: 1.625;
112
+ --line-height-loose: 1.75;
113
+
114
+ /* Spacing - Tighter Values */
115
+ --spacing-xs: 0.25rem;
116
+ --spacing-sm: 0.5rem;
117
+ --spacing-md: 0.75rem;
118
+ --spacing-lg: 1rem;
119
+ --spacing-xl: 1.25rem;
120
+ --spacing-2xl: 1.5rem;
121
+ --spacing-3xl: 2rem;
122
+ --spacing-4xl: 3rem;
123
+ --spacing-5xl: 4rem;
124
+ --spacing-6xl: 6rem;
125
+
126
+ /* Space aliases */
127
+ --space-xs: 0.25rem;
128
+ --space-sm: 0.5rem;
129
+ --space-md: 1rem;
130
+ --space-lg: 1.5rem;
131
+ --space-xl: 2rem;
132
+ --space-2xl: 3rem;
133
+ --space-3xl: 4rem;
134
+
135
+ /* Border Radius - Minimal */
136
+ --border-radius-none: 0;
137
+ --border-radius-sm: 2px;
138
+ --border-radius-md: 4px;
139
+ --border-radius-lg: 6px;
140
+ --border-radius-xl: 8px;
141
+ --border-radius-2xl: 12px;
142
+ --border-radius-full: 9999px;
143
+
144
+ /* Radius aliases */
145
+ --radius-sm: 4px;
146
+ --radius-md: 6px;
147
+ --radius-lg: 8px;
148
+ --radius-xl: 12px;
149
+ --radius-2xl: 16px;
150
+ --radius-full: 9999px;
151
+
152
+ /* Shadows - Minimal (mostly borders instead) */
153
+ --shadow-xs: none;
154
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
155
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.06);
156
+ --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.08);
157
+ --shadow-xl: 0 8px 16px rgba(0, 0, 0, 0.1);
158
+ --shadow-2xl: 0 12px 24px rgba(0, 0, 0, 0.12);
159
+ --shadow-accent: 0 4px 12px rgba(37, 99, 235, 0.15);
160
+ --shadow-inner: none;
161
+
162
+ /* Transitions - Smooth */
163
+ --transition-fast: 0.15s ease;
164
+ --transition-base: 0.2s ease;
165
+ --transition-slow: 0.3s ease;
166
+ --transition-bounce: 0.3s ease;
167
+
168
+ /* Layout */
169
+ --max-width-content: 1200px;
170
+ --max-width-prose: 65ch;
171
+ --max-width-narrow: 600px;
172
+ --header-height: 64px;
173
+
174
+ /* Z-Index Scale */
175
+ --z-dropdown: 100;
176
+ --z-sticky: 200;
177
+ --z-fixed: 300;
178
+ --z-modal-backdrop: 400;
179
+ --z-modal: 500;
180
+ --z-popover: 600;
181
+ --z-tooltip: 700;
182
+ }
183
+
184
+ @media (max-width: 1023.98px) {
185
+ :root {
186
+ --header-height: 56px;
187
+ }
188
+ }
189
+
190
+ /* Dark Mode */
191
+ body.dark-mode,
192
+ .dark {
193
+ --color-background-primary: var(--dark-bg-primary);
194
+ --color-background-secondary: var(--dark-bg-secondary);
195
+ --color-background-tertiary: var(--dark-bg-tertiary);
196
+ --color-background-card: var(--dark-card-bg);
197
+ --color-background-elevated: var(--dark-bg-tertiary);
198
+ --color-footer-background: var(--dark-bg-secondary);
199
+
200
+ --color-text-primary: var(--dark-text-primary);
201
+ --color-text-secondary: var(--dark-text-secondary);
202
+ --color-text-tertiary: var(--dark-text-muted);
203
+ --color-text-muted: var(--dark-text-muted);
204
+ --color-text-accent: var(--accent-light);
205
+ --color-text-purple: var(--accent-light);
206
+ --color-text-inverse: var(--dark-bg-primary);
207
+
208
+ --color-border: var(--dark-border);
209
+ --color-border-light: var(--dark-border);
210
+ --color-border-medium: #3A3A3A;
211
+ --color-border-dark: #4A4A4A;
212
+ --color-border-accent: var(--accent-light);
213
+
214
+ --gradient-hero: var(--dark-bg-primary);
215
+ --gradient-card-hover: transparent;
216
+
217
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
218
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.3);
219
+ --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.4);
220
+ --shadow-xl: 0 8px 16px rgba(0, 0, 0, 0.5);
221
+ --shadow-accent: 0 4px 12px rgba(59, 130, 246, 0.2);
222
+ }
223
+
224
+ /* Light Mode */
225
+ body.light-mode {
226
+ background-color: var(--light-bg-primary);
227
+ color: var(--light-text-primary);
228
+ }
229
+
230
+ /* ===================================
231
+ GLOBAL RESETS & BASE STYLES
232
+ =================================== */
233
+
234
+ *,
235
+ *::before,
236
+ *::after {
237
+ margin: 0;
238
+ padding: 0;
239
+ box-sizing: border-box;
240
+ }
241
+
242
+ html {
243
+ -webkit-font-smoothing: antialiased;
244
+ -moz-osx-font-smoothing: grayscale;
245
+ text-rendering: optimizeLegibility;
246
+ scroll-behavior: smooth;
247
+ }
248
+
249
+ @media (prefers-reduced-motion: reduce) {
250
+ html {
251
+ scroll-behavior: auto;
252
+ }
253
+ }
254
+
255
+ body {
256
+ font-family: var(--font-body);
257
+ font-size: var(--font-size-base);
258
+ line-height: var(--line-height-normal);
259
+ color: var(--color-text-primary);
260
+ background-color: var(--color-background-primary);
261
+ min-height: 100vh;
262
+ overflow-x: hidden;
263
+ }
264
+
265
+ /* Typography Defaults */
266
+ h1, h2, h3, h4, h5, h6 {
267
+ font-family: var(--font-heading);
268
+ font-weight: var(--font-weight-semibold);
269
+ line-height: var(--line-height-tight);
270
+ color: var(--color-text-primary);
271
+ letter-spacing: -0.01em;
272
+ }
273
+
274
+ p {
275
+ line-height: var(--line-height-relaxed);
276
+ }
277
+
278
+ a {
279
+ color: var(--color-text-accent);
280
+ text-decoration: none;
281
+ transition: color var(--transition-fast);
282
+ }
283
+
284
+ a:hover {
285
+ color: var(--accent-hover);
286
+ }
287
+
288
+ a:focus-visible {
289
+ outline: 2px solid var(--accent-primary);
290
+ outline-offset: 2px;
291
+ border-radius: var(--border-radius-sm);
292
+ }
293
+
294
+ img {
295
+ max-width: 100%;
296
+ height: auto;
297
+ display: block;
298
+ }
299
+
300
+ button {
301
+ font-family: inherit;
302
+ cursor: pointer;
303
+ }
304
+
305
+ button:focus-visible {
306
+ outline: 2px solid var(--accent-primary);
307
+ outline-offset: 2px;
308
+ }
309
+
310
+ /* Selection */
311
+ ::selection {
312
+ background-color: rgba(37, 99, 235, 0.15);
313
+ color: var(--color-text-primary);
314
+ }
315
+
316
+ /* Scrollbar Styling - Minimal */
317
+ ::-webkit-scrollbar {
318
+ width: 8px;
319
+ height: 8px;
320
+ }
321
+
322
+ ::-webkit-scrollbar-track {
323
+ background: var(--color-background-secondary);
324
+ }
325
+
326
+ ::-webkit-scrollbar-thumb {
327
+ background: var(--color-border-medium);
328
+ border-radius: var(--border-radius-full);
329
+ }
330
+
331
+ ::-webkit-scrollbar-thumb:hover {
332
+ background: var(--color-border-dark);
333
+ }
334
+
335
+ /* ===================================
336
+ UTILITY CLASSES
337
+ =================================== */
338
+
339
+ .container {
340
+ max-width: var(--max-width-content);
341
+ margin: 0 auto;
342
+ padding: 0 var(--spacing-lg);
343
+ }
344
+
345
+ .prose {
346
+ max-width: var(--max-width-prose);
347
+ }
348
+
349
+ .visually-hidden {
350
+ position: absolute;
351
+ width: 1px;
352
+ height: 1px;
353
+ padding: 0;
354
+ margin: -1px;
355
+ overflow: hidden;
356
+ clip: rect(0, 0, 0, 0);
357
+ white-space: nowrap;
358
+ border-width: 0;
359
+ }
360
+
361
+ /* Skip Link for Accessibility */
362
+ .skip-link {
363
+ position: absolute;
364
+ top: -100%;
365
+ left: 50%;
366
+ transform: translateX(-50%);
367
+ background: var(--accent-primary);
368
+ color: var(--color-text-inverse);
369
+ padding: var(--spacing-sm) var(--spacing-lg);
370
+ border-radius: var(--border-radius-md);
371
+ z-index: var(--z-tooltip);
372
+ transition: top var(--transition-fast);
373
+ }
374
+
375
+ .skip-link:focus {
376
+ top: var(--spacing-lg);
377
+ }
378
+
379
+ /* Section Divider - Minimal */
380
+ .section-divider {
381
+ width: 100%;
382
+ height: 1px;
383
+ background: var(--color-border);
384
+ margin: var(--spacing-4xl) 0;
385
+ }
386
+
387
+ /* Page Wrapper */
388
+ .pageWrapper {
389
+ background-color: var(--color-background-primary);
390
+ color: var(--color-text-primary);
391
+ font-family: var(--font-body);
392
+ position: relative;
393
+ overflow-x: hidden;
394
+ min-height: 100vh;
395
+ display: flex;
396
+ flex-direction: column;
397
+ }
398
+
399
+ .pageWrapper > main {
400
+ flex: 1;
401
+ }
402
+
403
+ /* ===================================
404
+ GRID SYSTEMS - Clean and Simple
405
+ =================================== */
406
+
407
+ .grid {
408
+ display: grid;
409
+ gap: var(--spacing-lg);
410
+ width: 100%;
411
+ }
412
+
413
+ .grid-2 {
414
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
415
+ }
416
+
417
+ .grid-3 {
418
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
419
+ }
420
+
421
+ .grid-4 {
422
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
423
+ }
424
+
425
+ @media (max-width: 768px) {
426
+ .grid-2,
427
+ .grid-3,
428
+ .grid-4 {
429
+ grid-template-columns: 1fr;
430
+ }
431
+ }
432
+
433
+ /* ===================================
434
+ CARD - Minimal Style
435
+ =================================== */
436
+
437
+ .card {
438
+ background: var(--color-background-card);
439
+ border: 1px solid var(--color-border);
440
+ border-radius: var(--border-radius-lg);
441
+ overflow: hidden;
442
+ transition: border-color var(--transition-base);
443
+ }
444
+
445
+ .card:hover {
446
+ border-color: var(--color-border-medium);
447
+ }
448
+
449
+ .card-image {
450
+ width: 100%;
451
+ aspect-ratio: 16 / 9;
452
+ overflow: hidden;
453
+ }
454
+
455
+ .card-image img {
456
+ width: 100%;
457
+ height: 100%;
458
+ object-fit: cover;
459
+ transition: transform var(--transition-slow);
460
+ }
461
+
462
+ .card:hover .card-image img {
463
+ transform: scale(1.02);
464
+ }
465
+
466
+ .card-content {
467
+ padding: var(--spacing-lg);
468
+ }
469
+
470
+ .card-category {
471
+ font-size: var(--font-size-xs);
472
+ font-weight: var(--font-weight-medium);
473
+ letter-spacing: 0.05em;
474
+ text-transform: uppercase;
475
+ color: var(--color-text-muted);
476
+ margin-bottom: var(--spacing-xs);
477
+ }
478
+
479
+ .card-title {
480
+ font-size: var(--font-size-lg);
481
+ font-weight: var(--font-weight-semibold);
482
+ margin-bottom: var(--spacing-sm);
483
+ color: var(--color-text-primary);
484
+ }
485
+
486
+ .card:hover .card-title {
487
+ color: var(--accent-primary);
488
+ }
489
+
490
+ .card-description {
491
+ font-size: var(--font-size-sm);
492
+ color: var(--color-text-secondary);
493
+ line-height: var(--line-height-relaxed);
494
+ display: -webkit-box;
495
+ -webkit-line-clamp: 2;
496
+ -webkit-box-orient: vertical;
497
+ overflow: hidden;
498
+ }
499
+
500
+ .card-meta {
501
+ display: flex;
502
+ gap: var(--spacing-md);
503
+ font-size: var(--font-size-xs);
504
+ color: var(--color-text-muted);
505
+ margin-top: var(--spacing-sm);
506
+ }
507
+
508
+ .card-link {
509
+ display: inline-flex;
510
+ align-items: center;
511
+ gap: 0.25rem;
512
+ font-size: var(--font-size-sm);
513
+ font-weight: var(--font-weight-medium);
514
+ color: var(--accent-primary);
515
+ margin-top: var(--spacing-md);
516
+ }
517
+
518
+ .card-link:hover {
519
+ color: var(--accent-hover);
520
+ }
521
+
522
+ /* Team Card - Compact Horizontal */
523
+ .team-card {
524
+ display: flex;
525
+ align-items: center;
526
+ gap: var(--spacing-md);
527
+ padding: var(--spacing-md);
528
+ }
529
+
530
+ .team-card .card-image {
531
+ width: 64px;
532
+ height: 64px;
533
+ border-radius: var(--border-radius-full);
534
+ flex-shrink: 0;
535
+ aspect-ratio: 1;
536
+ }
537
+
538
+ .team-name {
539
+ font-size: var(--font-size-base);
540
+ font-weight: var(--font-weight-semibold);
541
+ margin-bottom: 0;
542
+ }
543
+
544
+ .team-role {
545
+ font-size: var(--font-size-xs);
546
+ color: var(--color-text-muted);
547
+ }
548
+
549
+ /* Gallery Grid - Tight */
550
+ .gallery-grid {
551
+ display: grid;
552
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
553
+ gap: var(--spacing-sm);
554
+ width: 100%;
555
+ }
556
+
557
+ .gallery-item {
558
+ aspect-ratio: 1;
559
+ overflow: hidden;
560
+ position: relative;
561
+ cursor: pointer;
562
+ }
563
+
564
+ .gallery-item img {
565
+ width: 100%;
566
+ height: 100%;
567
+ object-fit: cover;
568
+ transition: transform var(--transition-base);
569
+ }
570
+
571
+ .gallery-item:hover img {
572
+ transform: scale(1.05);
573
+ }
574
+
575
+ .gallery-caption {
576
+ position: absolute;
577
+ bottom: 0;
578
+ left: 0;
579
+ right: 0;
580
+ padding: var(--spacing-sm);
581
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
582
+ color: white;
583
+ font-size: var(--font-size-xs);
584
+ opacity: 0;
585
+ transition: opacity var(--transition-base);
586
+ }
587
+
588
+ .gallery-item:hover .gallery-caption {
589
+ opacity: 1;
590
+ }
591
+
592
+ /* ===================================
593
+ SECTION HEADERS - Minimal
594
+ =================================== */
595
+
596
+ .section {
597
+ padding: var(--spacing-4xl) var(--spacing-lg);
598
+ }
599
+
600
+ .section-header {
601
+ margin-bottom: var(--spacing-3xl);
602
+ }
603
+
604
+ .section-label {
605
+ font-size: var(--font-size-xs);
606
+ font-weight: var(--font-weight-medium);
607
+ letter-spacing: 0.1em;
608
+ text-transform: uppercase;
609
+ color: var(--color-text-muted);
610
+ margin-bottom: var(--spacing-sm);
611
+ }
612
+
613
+ .section-title {
614
+ font-size: var(--font-size-4xl);
615
+ font-weight: var(--font-weight-semibold);
616
+ margin-bottom: var(--spacing-md);
617
+ }
618
+
619
+ .section-description {
620
+ font-size: var(--font-size-lg);
621
+ color: var(--color-text-secondary);
622
+ max-width: 600px;
623
+ }
624
+
625
+ /* ===================================
626
+ PUBLICATION LIST - Minimal
627
+ =================================== */
628
+
629
+ .publication-list {
630
+ display: flex;
631
+ flex-direction: column;
632
+ gap: var(--spacing-md);
633
+ width: 100%;
634
+ }
635
+
636
+ .publication-item {
637
+ padding: var(--spacing-lg);
638
+ border: 1px solid var(--color-border);
639
+ border-radius: var(--border-radius-md);
640
+ display: flex;
641
+ justify-content: space-between;
642
+ align-items: flex-start;
643
+ gap: var(--spacing-lg);
644
+ transition: border-color var(--transition-base);
645
+ }
646
+
647
+ .publication-item:hover {
648
+ border-color: var(--accent-primary);
649
+ }
650
+
651
+ .publication-date {
652
+ font-size: var(--font-size-xs);
653
+ font-weight: var(--font-weight-medium);
654
+ color: var(--accent-primary);
655
+ white-space: nowrap;
656
+ }
657
+
658
+ .publication-info {
659
+ flex: 1;
660
+ }
661
+
662
+ .publication-title {
663
+ font-size: var(--font-size-base);
664
+ font-weight: var(--font-weight-semibold);
665
+ margin-bottom: var(--spacing-xs);
666
+ }
667
+
668
+ .publication-authors {
669
+ font-size: var(--font-size-sm);
670
+ color: var(--color-text-muted);
671
+ }
672
+
673
+ /* ===================================
674
+ BUTTONS - Minimal
675
+ =================================== */
676
+
677
+ .btn {
678
+ display: inline-flex;
679
+ align-items: center;
680
+ justify-content: center;
681
+ gap: var(--spacing-sm);
682
+ padding: var(--spacing-sm) var(--spacing-lg);
683
+ border-radius: var(--border-radius-md);
684
+ font-weight: var(--font-weight-medium);
685
+ font-size: var(--font-size-sm);
686
+ text-decoration: none;
687
+ transition: all var(--transition-base);
688
+ border: none;
689
+ cursor: pointer;
690
+ }
691
+
692
+ .btn-primary {
693
+ background: var(--accent-primary);
694
+ color: var(--color-text-inverse);
695
+ }
696
+
697
+ .btn-primary:hover {
698
+ background: var(--accent-hover);
699
+ }
700
+
701
+ .btn-secondary {
702
+ background: transparent;
703
+ color: var(--color-text-primary);
704
+ border: 1px solid var(--color-border);
705
+ }
706
+
707
+ .btn-secondary:hover {
708
+ border-color: var(--accent-primary);
709
+ color: var(--accent-primary);
710
+ }
711
+
712
+ /* Badge - Minimal */
713
+ .badge {
714
+ display: inline-flex;
715
+ align-items: center;
716
+ padding: var(--spacing-xs) var(--spacing-sm);
717
+ border-radius: var(--border-radius-sm);
718
+ font-size: var(--font-size-xs);
719
+ font-weight: var(--font-weight-medium);
720
+ }
721
+
722
+ .badge-primary {
723
+ background: var(--accent-muted);
724
+ color: var(--accent-primary);
725
+ }
726
+
727
+ /* ===================================
728
+ ACCESSIBILITY
729
+ =================================== */
730
+
731
+ @media (prefers-reduced-motion: reduce) {
732
+ *,
733
+ *::before,
734
+ *::after {
735
+ animation-duration: 0.01ms !important;
736
+ animation-iteration-count: 1 !important;
737
+ transition-duration: 0.01ms !important;
738
+ scroll-behavior: auto !important;
739
+ }
740
+ }
741
+
742
+ :focus-visible {
743
+ outline: 2px solid var(--accent-primary);
744
+ outline-offset: 2px;
745
+ }
746
+
747
+ @media (prefers-contrast: high) {
748
+ :root {
749
+ --color-border: #000000;
750
+ --color-border-light: #000000;
751
+ --color-border-medium: #000000;
752
+ }
753
+ }
754
+
755
+ /* ===================================
756
+ PRINT STYLES
757
+ =================================== */
758
+
759
+ @media print {
760
+ *,
761
+ *::before,
762
+ *::after {
763
+ background: transparent !important;
764
+ color: #000 !important;
765
+ box-shadow: none !important;
766
+ }
767
+
768
+ body {
769
+ font-size: 12pt;
770
+ line-height: 1.5;
771
+ }
772
+
773
+ h1, h2, h3 {
774
+ page-break-after: avoid;
775
+ }
776
+
777
+ img {
778
+ max-width: 100% !important;
779
+ page-break-inside: avoid;
780
+ }
781
+
782
+ .no-print,
783
+ header,
784
+ footer,
785
+ nav {
786
+ display: none !important;
787
+ }
788
+ }
789
+
790
+ /* ===================================
791
+ ANIMATIONS - Subtle Reveal
792
+ =================================== */
793
+
794
+ @keyframes fadeIn {
795
+ from {
796
+ opacity: 0;
797
+ }
798
+ to {
799
+ opacity: 1;
800
+ }
801
+ }
802
+
803
+ @keyframes fadeInUp {
804
+ from {
805
+ opacity: 0;
806
+ transform: translateY(15px);
807
+ }
808
+ to {
809
+ opacity: 1;
810
+ transform: translateY(0);
811
+ }
812
+ }
813
+
814
+ .animate-fade-in {
815
+ animation: fadeIn var(--transition-base) ease-out;
816
+ }
817
+
818
+ .animate-fade-in-up {
819
+ animation: fadeInUp var(--transition-slow) ease-out;
820
+ }