@fluid-theme/core 0.4.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.
Files changed (48) hide show
  1. package/AGENTS.md +32 -0
  2. package/CHANGELOG.md +159 -0
  3. package/CLAUDE.md +104 -0
  4. package/GEMINI.md +48 -0
  5. package/LICENSE +21 -0
  6. package/README.md +253 -0
  7. package/dist/fluid.min.css +2 -0
  8. package/fluid-agent-kit/README.md +57 -0
  9. package/fluid-agent-kit/skills/accessibility.md +41 -0
  10. package/fluid-agent-kit/skills/css-conventions.md +51 -0
  11. package/fluid-agent-kit/skills/image-optimization.md +115 -0
  12. package/fluid-agent-kit/skills/ux-rules.md +43 -0
  13. package/package.json +68 -0
  14. package/src/animations/scroll-reveal.css +224 -0
  15. package/src/components/accordion.css +250 -0
  16. package/src/components/alert.css +453 -0
  17. package/src/components/avatar.css +192 -0
  18. package/src/components/badge.css +182 -0
  19. package/src/components/button.css +387 -0
  20. package/src/components/card.css +650 -0
  21. package/src/components/chip.css +143 -0
  22. package/src/components/dropdown.css +335 -0
  23. package/src/components/empty-state.css +105 -0
  24. package/src/components/form.css +508 -0
  25. package/src/components/hero.css +293 -0
  26. package/src/components/indicator.css +455 -0
  27. package/src/components/loading.css +274 -0
  28. package/src/components/modal.css +364 -0
  29. package/src/components/nav.css +726 -0
  30. package/src/components/scroll-progress.css +104 -0
  31. package/src/components/search-input.css +125 -0
  32. package/src/components/settings-panel.css +603 -0
  33. package/src/components/step-indicator.css +188 -0
  34. package/src/components/table.css +350 -0
  35. package/src/components/themed-images.css +229 -0
  36. package/src/components/tooltip.css +247 -0
  37. package/src/components/version-badge.css +70 -0
  38. package/src/core/base.css +884 -0
  39. package/src/core/reset.css +159 -0
  40. package/src/core/tokens.css +2416 -0
  41. package/src/fluid.css +242 -0
  42. package/src/layouts/positioning.css +626 -0
  43. package/src/sections/cta.css +210 -0
  44. package/src/sections/features.css +356 -0
  45. package/src/sections/footer.css +283 -0
  46. package/src/sections/stats.css +234 -0
  47. package/src/sections/team.css +181 -0
  48. package/src/sections/testimonials.css +251 -0
@@ -0,0 +1,726 @@
1
+ /**
2
+ * Fluid Framework - Navigation Component
3
+ * @layer components
4
+ *
5
+ * Navigation should guide, not dominate.
6
+ * Clear hierarchy, gentle transitions, natural flow.
7
+ *
8
+ * Usage:
9
+ * <nav class="nav">
10
+ * <a href="/" class="nav__brand">Brand</a>
11
+ * <ul class="nav__menu" role="list">
12
+ * <li><a href="#" class="nav__link">Link</a></li>
13
+ * <li><a href="#" class="nav__link" aria-current="page">Current</a></li>
14
+ * </ul>
15
+ * </nav>
16
+ *
17
+ * Variants:
18
+ * data-variant="transparent" - Transparent background
19
+ * data-variant="elevated" - With shadow
20
+ * data-sticky - Sticky positioning
21
+ */
22
+
23
+ @layer components {
24
+ /* ========================================
25
+ MAIN NAVIGATION
26
+ ======================================== */
27
+
28
+ .nav {
29
+ /* Layout */
30
+ display: flex;
31
+ align-items: center;
32
+ gap: var(--space-6);
33
+ padding-block: var(--space-4);
34
+ padding-inline: var(--space-5);
35
+
36
+ /* Visual */
37
+ background-color: var(--_nav-bg, var(--color-background));
38
+ border-block-end: 1px solid var(--_nav-border, var(--color-border-subtle));
39
+
40
+ /* Container for responsive behavior */
41
+ container-type: inline-size;
42
+ container-name: nav;
43
+ }
44
+
45
+ /* Sticky navigation */
46
+ .nav[data-sticky] {
47
+ position: sticky;
48
+ inset-block-start: 0;
49
+ z-index: var(--z-sticky);
50
+ backdrop-filter: blur(8px);
51
+ background-color: oklch(from var(--color-background) l c h / 0.9);
52
+ }
53
+
54
+ /* Transparent variant */
55
+ .nav[data-variant="transparent"] {
56
+ --_nav-bg: transparent;
57
+ --_nav-border: transparent;
58
+ }
59
+
60
+ /* Elevated variant */
61
+ .nav[data-variant="elevated"] {
62
+ --_nav-border: transparent;
63
+ box-shadow: var(--shadow-sm);
64
+ }
65
+
66
+
67
+ /* Brand / Logo - adopts active preset's font */
68
+ .nav__brand {
69
+ font-family: var(--font-heading, var(--font-body, var(--font-system)));
70
+ font-size: var(--font-size-lg);
71
+ font-weight: var(--weight-semibold);
72
+ color: var(--color-text);
73
+ text-decoration: none;
74
+ display: flex;
75
+ align-items: center;
76
+ gap: var(--space-2);
77
+ flex-shrink: 0;
78
+ transition:
79
+ opacity var(--duration-normal) var(--ease-fluid),
80
+ font-family var(--duration-normal) var(--ease-fluid);
81
+ }
82
+
83
+ .nav__brand:hover {
84
+ opacity: 0.8;
85
+ }
86
+
87
+ .nav__brand img,
88
+ .nav__brand svg {
89
+ block-size: 2rem;
90
+ inline-size: auto;
91
+ }
92
+
93
+ /* Active preset name indicator */
94
+ .nav__preset-name {
95
+ font-family: var(--font-heading, var(--font-body, var(--font-system)));
96
+ font-size: var(--font-size-xs);
97
+ font-weight: var(--weight-medium);
98
+ color: var(--accent);
99
+ letter-spacing: var(--tracking-wide);
100
+ text-transform: uppercase;
101
+ white-space: nowrap;
102
+ flex-shrink: 0;
103
+ transition:
104
+ color var(--duration-normal) var(--ease-fluid),
105
+ font-family var(--duration-normal) var(--ease-fluid);
106
+ }
107
+
108
+ .nav__preset-name:empty {
109
+ display: none;
110
+ }
111
+
112
+
113
+ /* Menu container */
114
+ .nav__menu {
115
+ display: flex;
116
+ align-items: center;
117
+ gap: var(--space-1);
118
+ margin: 0;
119
+ margin-inline-start: auto; /* Default: push menu to end */
120
+ padding: 0;
121
+ list-style: none;
122
+ overflow: visible; /* Allow dropdowns to overflow */
123
+ }
124
+
125
+ /* Menu items - ensure alignment and reset base styles */
126
+ .nav__menu > li {
127
+ display: flex;
128
+ align-items: center;
129
+ margin: 0; /* Override base li margin that can cause misalignment */
130
+ position: relative; /* For dropdown positioning */
131
+ }
132
+
133
+ /* Keep menu at start (next to brand) */
134
+ .nav__menu[data-align="start"] {
135
+ margin-inline-start: 0;
136
+ }
137
+
138
+ /* Center menu */
139
+ .nav__menu[data-align="center"] {
140
+ margin-inline: auto;
141
+ }
142
+
143
+
144
+ /* Navigation links */
145
+ .nav__link {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: var(--space-2);
149
+ padding: var(--space-2) var(--space-3);
150
+ font-size: var(--font-size-sm);
151
+ font-weight: var(--weight-medium);
152
+ line-height: 1; /* Prevent line-height variance affecting alignment */
153
+ color: var(--color-text-muted);
154
+ text-decoration: none;
155
+ border-radius: var(--radius-md);
156
+ white-space: nowrap; /* Prevent wrapping that can affect height */
157
+ transition:
158
+ color var(--duration-normal) var(--ease-fluid),
159
+ background-color var(--duration-normal) var(--ease-fluid);
160
+ }
161
+
162
+ .nav__link:hover {
163
+ color: var(--color-text);
164
+ background-color: var(--color-surface);
165
+ }
166
+
167
+ .nav__link[aria-current="page"],
168
+ .nav__link[data-active] {
169
+ color: var(--accent);
170
+ background-color: var(--accent-subtle);
171
+ }
172
+
173
+
174
+ /* Actions area (buttons, search, etc.) */
175
+ .nav__actions {
176
+ display: flex;
177
+ align-items: center;
178
+ gap: var(--space-3);
179
+ margin-inline-start: auto;
180
+ }
181
+
182
+
183
+ /* ========================================
184
+ DROPDOWN MENUS
185
+ ======================================== */
186
+
187
+ .nav__dropdown {
188
+ position: relative;
189
+ }
190
+
191
+ .nav__dropdown-trigger {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: var(--space-1);
195
+ padding: var(--space-2) var(--space-3);
196
+ font-size: var(--font-size-sm);
197
+ font-weight: var(--weight-medium);
198
+ color: var(--color-text-muted);
199
+ text-decoration: none;
200
+ background: none;
201
+ border: none;
202
+ border-radius: var(--radius-md);
203
+ cursor: pointer;
204
+ transition:
205
+ color var(--duration-normal) var(--ease-fluid),
206
+ background-color var(--duration-normal) var(--ease-fluid);
207
+ }
208
+
209
+ .nav__dropdown-trigger:hover,
210
+ .nav__dropdown:hover .nav__dropdown-trigger,
211
+ .nav__dropdown:focus-within .nav__dropdown-trigger {
212
+ color: var(--color-text);
213
+ background-color: var(--color-surface);
214
+ }
215
+
216
+ .nav__dropdown-trigger[data-active] {
217
+ color: var(--accent);
218
+ }
219
+
220
+ .nav__dropdown-trigger svg {
221
+ inline-size: 1em;
222
+ block-size: 1em;
223
+ transition: transform var(--duration-normal) var(--ease-fluid);
224
+ }
225
+
226
+ .nav__dropdown:hover .nav__dropdown-trigger svg,
227
+ .nav__dropdown:focus-within .nav__dropdown-trigger svg {
228
+ transform: rotate(180deg);
229
+ }
230
+
231
+ .nav__dropdown-menu {
232
+ position: absolute;
233
+ inset-block-start: 100%;
234
+ inset-inline-start: 0;
235
+ min-inline-size: 12rem;
236
+ padding: var(--space-2);
237
+ margin: 0;
238
+ margin-block-start: var(--space-1);
239
+ list-style: none;
240
+ background-color: var(--color-background);
241
+ border: 1px solid var(--color-border-subtle);
242
+ border-radius: var(--radius-lg);
243
+ box-shadow: var(--shadow-lg);
244
+ opacity: 0;
245
+ visibility: hidden;
246
+ transform: translateY(-0.5rem);
247
+ transition:
248
+ opacity var(--duration-normal) var(--ease-fluid),
249
+ visibility var(--duration-normal) var(--ease-fluid),
250
+ transform var(--duration-normal) var(--ease-fluid);
251
+ z-index: var(--z-dropdown);
252
+ }
253
+
254
+ .nav__dropdown:hover .nav__dropdown-menu,
255
+ .nav__dropdown:focus-within .nav__dropdown-menu {
256
+ opacity: 1;
257
+ visibility: visible;
258
+ transform: translateY(0);
259
+ }
260
+
261
+ .nav__dropdown-menu li {
262
+ margin: 0;
263
+ }
264
+
265
+ .nav__dropdown-link {
266
+ display: block;
267
+ padding: var(--space-2) var(--space-3);
268
+ font-size: var(--font-size-sm);
269
+ color: var(--color-text-muted);
270
+ text-decoration: none;
271
+ border-radius: var(--radius-md);
272
+ transition:
273
+ color var(--duration-normal) var(--ease-fluid),
274
+ background-color var(--duration-normal) var(--ease-fluid);
275
+ }
276
+
277
+ .nav__dropdown-link:hover {
278
+ color: var(--color-text);
279
+ background-color: var(--color-surface);
280
+ }
281
+
282
+ .nav__dropdown-link[aria-current="page"] {
283
+ color: var(--accent);
284
+ background-color: var(--accent-subtle);
285
+ }
286
+
287
+ /* CTA Button in nav */
288
+ .nav__cta {
289
+ display: inline-flex;
290
+ align-items: center;
291
+ gap: var(--space-2);
292
+ padding: var(--space-2) var(--space-4);
293
+ font-size: var(--font-size-sm);
294
+ font-weight: var(--weight-medium);
295
+ color: var(--white);
296
+ text-decoration: none;
297
+ background-color: var(--accent);
298
+ border-radius: var(--radius-md);
299
+ transition:
300
+ background-color var(--duration-normal) var(--ease-fluid),
301
+ transform var(--duration-fast) var(--ease-settle);
302
+ }
303
+
304
+ .nav__cta:hover {
305
+ background-color: var(--accent-hover);
306
+ transform: translateY(-1px);
307
+ }
308
+
309
+
310
+ /* ========================================
311
+ RESPONSIVE NAVIGATION
312
+ Adapts to container width
313
+ ======================================== */
314
+
315
+ /* Mobile toggle button */
316
+ .nav__toggle {
317
+ display: none;
318
+ padding: var(--space-2);
319
+ background: none;
320
+ border: none;
321
+ color: var(--color-text);
322
+ cursor: pointer;
323
+ }
324
+
325
+ .nav__toggle svg {
326
+ inline-size: 1.5rem;
327
+ block-size: 1.5rem;
328
+ }
329
+
330
+ /* Theme Toggle Button */
331
+ .nav__theme-toggle {
332
+ display: flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ padding: var(--space-2);
336
+ background: none;
337
+ border: none;
338
+ border-radius: var(--radius-md);
339
+ color: var(--color-text-muted);
340
+ cursor: pointer;
341
+ transition:
342
+ color var(--duration-normal) var(--ease-fluid),
343
+ background-color var(--duration-normal) var(--ease-fluid);
344
+ }
345
+
346
+ .nav__theme-toggle:hover {
347
+ color: var(--color-text);
348
+ background-color: var(--color-surface);
349
+ }
350
+
351
+ .nav__theme-toggle svg {
352
+ inline-size: 1.25rem;
353
+ block-size: 1.25rem;
354
+ }
355
+
356
+ /* Show appropriate icon based on theme */
357
+ .nav__theme-toggle .icon-sun { display: none; }
358
+ .nav__theme-toggle .icon-moon { display: block; }
359
+
360
+ [data-theme="dark"] .nav__theme-toggle .icon-sun { display: block; }
361
+ [data-theme="dark"] .nav__theme-toggle .icon-moon { display: none; }
362
+
363
+
364
+ /* Narrow container - stack navigation */
365
+ @container nav (max-width: 40rem) {
366
+ .nav {
367
+ flex-wrap: wrap;
368
+ }
369
+
370
+ .nav__toggle {
371
+ display: flex;
372
+ margin-inline-start: auto;
373
+ order: 1;
374
+ }
375
+
376
+ .nav__theme-toggle {
377
+ order: 0;
378
+ margin-inline-start: auto;
379
+ }
380
+
381
+ /* Mobile menu with smooth reveal animation */
382
+ .nav__menu {
383
+ flex-basis: 100%;
384
+ flex-direction: column;
385
+ align-items: stretch;
386
+ gap: var(--space-1);
387
+ padding-block-start: var(--space-4);
388
+ order: 2;
389
+ /* Hidden state */
390
+ display: flex;
391
+ visibility: hidden;
392
+ opacity: 0;
393
+ max-block-size: 0;
394
+ overflow: hidden;
395
+ transition:
396
+ opacity var(--duration-normal) var(--ease-fluid),
397
+ visibility var(--duration-normal) var(--ease-fluid),
398
+ max-block-size var(--duration-normal) var(--ease-fluid);
399
+ }
400
+
401
+ /* Show menu when toggle is open */
402
+ .nav__menu[data-open],
403
+ .nav:has(.nav__toggle[aria-expanded="true"]) .nav__menu {
404
+ visibility: visible;
405
+ opacity: 1;
406
+ max-block-size: 100vh; /* Large enough for any menu */
407
+ }
408
+
409
+ .nav__menu > li {
410
+ display: block;
411
+ opacity: 0;
412
+ transform: translateY(-0.5rem);
413
+ transition:
414
+ opacity var(--duration-fast) var(--ease-fluid),
415
+ transform var(--duration-fast) var(--ease-settle);
416
+ }
417
+
418
+ /* Animate items in when menu opens */
419
+ .nav__menu[data-open] > li,
420
+ .nav:has(.nav__toggle[aria-expanded="true"]) .nav__menu > li {
421
+ opacity: 1;
422
+ transform: translateY(0);
423
+ }
424
+
425
+ /* Stagger the item animations */
426
+ .nav__menu > li:nth-child(1) { transition-delay: 50ms; }
427
+ .nav__menu > li:nth-child(2) { transition-delay: 100ms; }
428
+ .nav__menu > li:nth-child(3) { transition-delay: 150ms; }
429
+ .nav__menu > li:nth-child(4) { transition-delay: 200ms; }
430
+ .nav__menu > li:nth-child(5) { transition-delay: 250ms; }
431
+ .nav__menu > li:nth-child(6) { transition-delay: 300ms; }
432
+
433
+ .nav__link {
434
+ display: block;
435
+ padding: var(--space-3);
436
+ }
437
+
438
+ /* Mobile dropdowns - always visible, stacked */
439
+ .nav__dropdown-menu {
440
+ position: static;
441
+ opacity: 1;
442
+ visibility: visible;
443
+ transform: none;
444
+ box-shadow: none;
445
+ border: none;
446
+ padding-inline-start: var(--space-4);
447
+ margin-block-start: 0;
448
+ background-color: transparent;
449
+ }
450
+
451
+ .nav__dropdown-trigger svg {
452
+ display: none;
453
+ }
454
+
455
+ .nav__dropdown-trigger {
456
+ padding: var(--space-3);
457
+ font-weight: var(--weight-semibold);
458
+ color: var(--color-text);
459
+ }
460
+
461
+ .nav__cta {
462
+ margin-block-start: var(--space-3);
463
+ justify-content: center;
464
+ }
465
+
466
+ .nav__actions {
467
+ flex-basis: 100%;
468
+ padding-block-start: var(--space-4);
469
+ border-block-start: 1px solid var(--color-border-subtle);
470
+ margin-block-start: var(--space-4);
471
+ order: 3;
472
+ }
473
+ }
474
+
475
+
476
+ /* ========================================
477
+ BREADCRUMB NAVIGATION
478
+ ======================================== */
479
+
480
+ .breadcrumb {
481
+ display: flex;
482
+ flex-wrap: wrap;
483
+ align-items: center;
484
+ gap: var(--space-2);
485
+ padding: 0;
486
+ margin: 0;
487
+ list-style: none;
488
+ font-size: var(--font-size-sm);
489
+ }
490
+
491
+ .breadcrumb__item {
492
+ display: inline-flex;
493
+ align-items: center;
494
+ gap: var(--space-2);
495
+ line-height: 1;
496
+ }
497
+
498
+ .breadcrumb__item::after {
499
+ content: "/";
500
+ color: var(--color-text-subtle);
501
+ }
502
+
503
+ .breadcrumb__item:last-child::after {
504
+ content: none;
505
+ }
506
+
507
+ .breadcrumb__link {
508
+ display: inline-flex;
509
+ align-items: center;
510
+ color: var(--color-text-muted);
511
+ text-decoration: none;
512
+ line-height: 1;
513
+ transition: color var(--duration-normal) var(--ease-fluid);
514
+ }
515
+
516
+ .breadcrumb__link:hover {
517
+ color: var(--accent);
518
+ }
519
+
520
+ .breadcrumb__item:last-child .breadcrumb__link,
521
+ .breadcrumb__link[aria-current="page"] {
522
+ color: var(--color-text);
523
+ pointer-events: none;
524
+ }
525
+
526
+ /* Mobile: collapse to "← Back to [Parent]" */
527
+ @media (max-width: 40rem) {
528
+ .breadcrumb .breadcrumb__item {
529
+ display: none;
530
+ }
531
+
532
+ /* Show only the second-to-last item (parent) as a back link */
533
+ .breadcrumb .breadcrumb__item:nth-last-child(2) {
534
+ display: inline-flex;
535
+ }
536
+
537
+ .breadcrumb .breadcrumb__item:nth-last-child(2)::before {
538
+ content: "← ";
539
+ color: var(--color-text-muted);
540
+ }
541
+
542
+ .breadcrumb .breadcrumb__item:nth-last-child(2)::after {
543
+ content: none;
544
+ }
545
+
546
+ .breadcrumb .breadcrumb__item:nth-last-child(2) .breadcrumb__link {
547
+ color: var(--color-text-muted);
548
+ pointer-events: auto;
549
+ }
550
+
551
+ .breadcrumb .breadcrumb__item:nth-last-child(2) .breadcrumb__link::before {
552
+ content: "Back to ";
553
+ }
554
+ }
555
+
556
+
557
+ /* ========================================
558
+ PAGINATION
559
+ ======================================== */
560
+
561
+ .pagination {
562
+ display: flex;
563
+ align-items: center;
564
+ gap: var(--space-1);
565
+ padding: 0;
566
+ margin: 0;
567
+ list-style: none;
568
+ }
569
+
570
+ .pagination__link {
571
+ display: inline-flex;
572
+ align-items: center;
573
+ justify-content: center;
574
+ min-inline-size: 2.5rem;
575
+ min-block-size: 2.5rem;
576
+ padding: var(--space-2);
577
+ font-size: var(--font-size-sm);
578
+ font-weight: var(--weight-medium);
579
+ color: var(--color-text-muted);
580
+ text-decoration: none;
581
+ border-radius: var(--radius-md);
582
+ transition:
583
+ color var(--duration-normal) var(--ease-fluid),
584
+ background-color var(--duration-normal) var(--ease-fluid);
585
+ }
586
+
587
+ .pagination__link:hover {
588
+ color: var(--color-text);
589
+ background-color: var(--color-surface);
590
+ }
591
+
592
+ .pagination__link[aria-current="page"],
593
+ .pagination__link[data-active] {
594
+ color: var(--white);
595
+ background-color: var(--accent);
596
+ }
597
+
598
+ .pagination__link[data-disabled] {
599
+ opacity: 0.5;
600
+ pointer-events: none;
601
+ }
602
+
603
+ /* Prev/Next buttons */
604
+ .pagination__link[data-prev],
605
+ .pagination__link[data-next] {
606
+ gap: var(--space-2);
607
+ }
608
+
609
+ .pagination__ellipsis {
610
+ padding: var(--space-2);
611
+ color: var(--color-text-subtle);
612
+ }
613
+
614
+
615
+ /* ========================================
616
+ TABS NAVIGATION
617
+ ======================================== */
618
+
619
+ .tabs {
620
+ display: flex;
621
+ gap: var(--space-1);
622
+ border-block-end: 1px solid var(--color-border-subtle);
623
+ }
624
+
625
+ .tabs__tab {
626
+ position: relative;
627
+ padding: var(--space-3) var(--space-4);
628
+ font-size: var(--font-size-sm);
629
+ font-weight: var(--weight-medium);
630
+ color: var(--color-text-muted);
631
+ text-decoration: none;
632
+ background: none;
633
+ border: none;
634
+ border-radius: var(--radius-md);
635
+ cursor: pointer;
636
+ outline: 2px solid transparent;
637
+ transition:
638
+ color var(--duration-normal) var(--ease-fluid),
639
+ background-color var(--duration-normal) var(--ease-fluid);
640
+ }
641
+
642
+ /* Focus state - subtle ring */
643
+ .tabs__tab:focus-visible {
644
+ background-color: var(--color-surface);
645
+ box-shadow: 0 0 0 2px var(--accent-subtle);
646
+ }
647
+
648
+ .tabs__tab::after {
649
+ content: "";
650
+ position: absolute;
651
+ inset-inline: var(--space-2); /* Inset from edges for rounded look */
652
+ inset-block-end: -1px;
653
+ block-size: 3px; /* Slightly thicker for visible rounded ends */
654
+ background-color: transparent;
655
+ border-radius: var(--radius-full);
656
+ transition: background-color var(--duration-normal) var(--ease-fluid);
657
+ }
658
+
659
+ .tabs__tab:hover {
660
+ color: var(--color-text);
661
+ background-color: var(--color-surface);
662
+ }
663
+
664
+ .tabs__tab[aria-selected="true"],
665
+ .tabs__tab[data-active] {
666
+ color: var(--accent);
667
+ }
668
+
669
+ .tabs__tab[aria-selected="true"]::after,
670
+ .tabs__tab[data-active]::after {
671
+ background-color: var(--accent);
672
+ }
673
+
674
+ /* Contained tabs variant */
675
+ .tabs[data-variant="contained"] {
676
+ background-color: var(--color-surface);
677
+ border-radius: var(--radius-md);
678
+ border: none;
679
+ padding: var(--space-1);
680
+ }
681
+
682
+ .tabs[data-variant="contained"] .tabs__tab {
683
+ border-radius: var(--radius-sm);
684
+ }
685
+
686
+ .tabs[data-variant="contained"] .tabs__tab::after {
687
+ display: none;
688
+ }
689
+
690
+ .tabs[data-variant="contained"] .tabs__tab[aria-selected="true"],
691
+ .tabs[data-variant="contained"] .tabs__tab[data-active] {
692
+ background-color: var(--color-background);
693
+ box-shadow: var(--shadow-xs);
694
+ }
695
+
696
+
697
+ /* ========================================
698
+ REDUCED MOTION
699
+ ======================================== */
700
+
701
+ @media (prefers-reduced-motion: reduce) {
702
+ .nav__menu > li {
703
+ transition: none;
704
+ opacity: 1;
705
+ transform: none;
706
+ }
707
+
708
+ .nav__menu > li:nth-child(1),
709
+ .nav__menu > li:nth-child(2),
710
+ .nav__menu > li:nth-child(3),
711
+ .nav__menu > li:nth-child(4),
712
+ .nav__menu > li:nth-child(5),
713
+ .nav__menu > li:nth-child(6) {
714
+ transition-delay: 0ms;
715
+ }
716
+
717
+ .nav__link,
718
+ .nav__dropdown-menu,
719
+ .breadcrumb__link,
720
+ .pagination__link,
721
+ .tabs__tab,
722
+ .tabs__tab::after {
723
+ transition: none;
724
+ }
725
+ }
726
+ }