@voltstack/bravais 1.0.0

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/dist/index.css ADDED
@@ -0,0 +1,3647 @@
1
+ /* src/shared/presentation/primitives/Loader/Loader.css */
2
+ .loader-fill-parent {
3
+ width: 100%;
4
+ height: 100%;
5
+ min-height: 0;
6
+ }
7
+ .loader-content {
8
+ max-width: 18rem;
9
+ }
10
+ .loader-visual {
11
+ width: 1px;
12
+ height: 1px;
13
+ }
14
+ .loader-label {
15
+ max-width: 18rem;
16
+ }
17
+ .loader-reduced-motion-label {
18
+ display: none;
19
+ }
20
+ .Loader-Item {
21
+ width: 12px;
22
+ height: 3px;
23
+ background: transparent;
24
+ border-radius: 2px;
25
+ }
26
+ .Loader-Item-1 {
27
+ transform: translate(7.8564064606px, 6.5px) rotate(30deg);
28
+ animation: blink 0.6666666667s linear 0.0555555556s infinite;
29
+ }
30
+ .Loader-Item-2 {
31
+ transform: translate(2px, 12.3564064606px) rotate(60deg);
32
+ animation: blink 0.6666666667s linear 0.1111111111s infinite;
33
+ }
34
+ .Loader-Item-3 {
35
+ transform: translate(-6px, 14.5px) rotate(90deg);
36
+ animation: blink 0.6666666667s linear 0.1666666667s infinite;
37
+ }
38
+ .Loader-Item-4 {
39
+ transform: translate(-14px, 12.3564064605px) rotate(120deg);
40
+ animation: blink 0.6666666667s linear 0.2222222222s infinite;
41
+ }
42
+ .Loader-Item-5 {
43
+ transform: translate(-19.8564064605px, 6.5px) rotate(150deg);
44
+ animation: blink 0.6666666667s linear 0.2777777778s infinite;
45
+ }
46
+ .Loader-Item-6 {
47
+ transform: translate(-21.9999999988px, -1.4999999998px) rotate(180deg);
48
+ animation: blink 0.6666666667s linear 0.3333333333s infinite;
49
+ }
50
+ .Loader-Item-7 {
51
+ transform: translate(-19.8564064248px, -9.4999999943px) rotate(210deg);
52
+ animation: blink 0.6666666667s linear 0.3888888889s infinite;
53
+ }
54
+ .Loader-Item-8 {
55
+ transform: translate(-13.9999993307px, -15.3564063383px) rotate(240deg);
56
+ animation: blink 0.6666666667s linear 0.4444444444s infinite;
57
+ }
58
+ .Loader-Item-9 {
59
+ transform: translate(-5.9999911401px, -17.499998179px) rotate(270deg);
60
+ animation: blink 0.6666666667s linear 0.5s infinite;
61
+ }
62
+ .Loader-Item-10 {
63
+ transform: translate(2.0000891502px, -15.356386087px) rotate(300deg);
64
+ animation: blink 0.6666666667s linear 0.5555555556s infinite;
65
+ }
66
+ .Loader-Item-11 {
67
+ transform: translate(7.8571249178px, -9.4998192505px) rotate(330deg);
68
+ animation: blink 0.6666666667s linear 0.6111111111s infinite;
69
+ }
70
+ .Loader-Item-12 {
71
+ transform: translate(10.0048195847px, -1.4986761448px) rotate(360deg);
72
+ animation: blink 0.6666666667s linear 0.6666666667s infinite;
73
+ }
74
+ @keyframes blink {
75
+ 0% {
76
+ background: var(--color-text-muted);
77
+ }
78
+ 100% {
79
+ background: var(--color-surface-3);
80
+ }
81
+ }
82
+ @keyframes rotate {
83
+ 0% {
84
+ transform: rotate(0deg);
85
+ }
86
+ 100% {
87
+ background: rotate(360deg);
88
+ }
89
+ }
90
+ @media (prefers-reduced-motion: reduce) {
91
+ .Loader-Item {
92
+ animation: none !important;
93
+ background: var(--color-text-muted);
94
+ }
95
+ .loader-reduced-motion-label {
96
+ display: inline;
97
+ position: absolute;
98
+ width: 1px;
99
+ height: 1px;
100
+ padding: 0;
101
+ margin: -1px;
102
+ overflow: hidden;
103
+ clip: rect(0, 0, 0, 0);
104
+ white-space: nowrap;
105
+ border: 0;
106
+ }
107
+ }
108
+
109
+ /* src/shared/presentation/primitives/Button/Button.css */
110
+ .button {
111
+ display: inline-flex;
112
+ border: 1px solid transparent;
113
+ text-decoration: none;
114
+ white-space: nowrap;
115
+ line-height: 1;
116
+ font-weight: 500;
117
+ transition:
118
+ background-color 0.15s ease,
119
+ border-color 0.15s ease,
120
+ color 0.15s ease,
121
+ box-shadow 0.15s ease,
122
+ transform 0.15s ease;
123
+ }
124
+ .button:focus-visible {
125
+ outline: none;
126
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
127
+ }
128
+ .button:disabled,
129
+ .button[aria-disabled=true] {
130
+ cursor: not-allowed;
131
+ opacity: 0.5;
132
+ }
133
+ .button.size-sm {
134
+ height: 1.875rem;
135
+ min-height: 2.1rem;
136
+ padding: 0.5rem 0.875rem;
137
+ font-size: 0.8125rem;
138
+ gap: 0.375rem;
139
+ }
140
+ .button.size-md {
141
+ height: 2.5rem;
142
+ padding: 0 0.875rem;
143
+ font-size: 0.875rem;
144
+ gap: 0.5rem;
145
+ }
146
+ .button.size-lg {
147
+ height: 2.75rem;
148
+ padding: 0 1.125rem;
149
+ font-size: 0.9375rem;
150
+ gap: 0.5625rem;
151
+ }
152
+ .button.size-xl {
153
+ height: 3rem;
154
+ padding: 0 1.5rem;
155
+ font-size: 1rem;
156
+ gap: 0.6875rem;
157
+ }
158
+ .button.shape-rounded {
159
+ border-radius: var(--radius-sm);
160
+ }
161
+ .button.shape-rounded.size-sm {
162
+ border-radius: var(--radius-xs);
163
+ }
164
+ .button.shape-rounded.size-md {
165
+ border-radius: 10px;
166
+ }
167
+ .button.shape-rounded.size-lg {
168
+ border-radius: var(--radius-md);
169
+ }
170
+ .button.shape-rounded.size-xl {
171
+ border-radius: 14px;
172
+ }
173
+ .button.shape-pill {
174
+ border-radius: var(--radius-full);
175
+ }
176
+ .button.shape-square {
177
+ border-radius: 0;
178
+ }
179
+ .button.shape-circle {
180
+ padding: 0;
181
+ border-radius: var(--radius-full);
182
+ }
183
+ .button.size-sm.shape-circle {
184
+ width: 2rem;
185
+ }
186
+ .button.size-md.shape-circle {
187
+ width: 2.5rem;
188
+ }
189
+ .button.size-lg.shape-circle {
190
+ width: 2.75rem;
191
+ }
192
+ .button.size-xl.shape-circle {
193
+ width: 3rem;
194
+ }
195
+ .button.block {
196
+ width: 100%;
197
+ display: flex;
198
+ }
199
+ .button.align-start {
200
+ justify-content: flex-start;
201
+ }
202
+ .button.align-end {
203
+ justify-content: flex-end;
204
+ }
205
+ .button.is-loading {
206
+ color: transparent !important;
207
+ pointer-events: none;
208
+ position: relative;
209
+ }
210
+ .button-loader {
211
+ left: 50%;
212
+ top: 50%;
213
+ transform: translate(-50%, -50%);
214
+ color: currentColor;
215
+ }
216
+ .button-icon-only-content,
217
+ .button-icon-left,
218
+ .button-icon-right {
219
+ font-size: var(--button-icon-size, inherit);
220
+ }
221
+ .button.is-loading.intent-neutral .button-loader,
222
+ .button.is-loading.intent-white .button-loader {
223
+ color: var(--color-contrast-high);
224
+ }
225
+ .button.is-loading.intent-brand .button-loader {
226
+ color: #ffffff;
227
+ }
228
+ .button.is-loading.intent-danger .button-loader {
229
+ color: var(--color-contrast-high);
230
+ }
231
+ .button.is-loading.intent-success .button-loader {
232
+ color: var(--color-contrast-high);
233
+ }
234
+ .start-analysis-btn {
235
+ background: var(--color-surface-2) !important;
236
+ border: 1px solid var(--color-border-soft) !important;
237
+ }
238
+ .button.intent-neutral.variant-solid {
239
+ background-color: var(--color-surface-2);
240
+ color: var(--color-text-primary);
241
+ border-color: var(--color-border-soft);
242
+ }
243
+ .button.intent-neutral.variant-solid:hover:not(:disabled) {
244
+ background-color: var(--color-surface-3);
245
+ border-color: var(--color-border);
246
+ }
247
+ .button.intent-neutral.variant-soft {
248
+ background-color: var(--color-surface-2);
249
+ color: var(--color-text-primary);
250
+ border-color: transparent;
251
+ }
252
+ .button.intent-neutral.variant-soft:hover:not(:disabled) {
253
+ background-color: var(--color-surface-3);
254
+ }
255
+ .button.intent-neutral.variant-outline {
256
+ background-color: transparent;
257
+ border-color: var(--color-border);
258
+ color: var(--color-text-primary);
259
+ }
260
+ .button.intent-neutral.variant-outline:hover:not(:disabled) {
261
+ background-color: var(--hover-bg);
262
+ border-color: var(--color-border-strong);
263
+ }
264
+ .button.intent-neutral.variant-ghost {
265
+ background-color: transparent;
266
+ color: var(--color-text-secondary);
267
+ }
268
+ .button.intent-neutral.variant-ghost:hover:not(:disabled) {
269
+ background-color: var(--hover-bg);
270
+ color: var(--color-text-primary);
271
+ }
272
+ .button.intent-brand.variant-solid {
273
+ background-color: var(--color-brand-primary);
274
+ color: #ffffff;
275
+ border-color: var(--color-brand-primary);
276
+ }
277
+ .button.intent-brand.variant-solid:hover:not(:disabled) {
278
+ filter: brightness(1.1);
279
+ background-color: var(--color-brand-primary);
280
+ border-color: var(--color-brand-primary);
281
+ }
282
+ .button.intent-brand.variant-soft {
283
+ background-color: color-mix(in srgb, var(--color-brand-primary) 12%, transparent);
284
+ color: var(--color-brand-primary);
285
+ border-color: transparent;
286
+ }
287
+ .button.intent-brand.variant-soft:hover:not(:disabled) {
288
+ background-color: color-mix(in srgb, var(--color-brand-primary) 20%, transparent);
289
+ }
290
+ .button.intent-brand.variant-outline {
291
+ background-color: transparent;
292
+ border-color: var(--color-brand-primary);
293
+ color: var(--color-brand-primary);
294
+ }
295
+ .button.intent-brand.variant-outline:hover:not(:disabled) {
296
+ background-color: color-mix(in srgb, var(--color-brand-primary) 8%, transparent);
297
+ border-color: var(--color-brand-primary);
298
+ }
299
+ .button.intent-brand.variant-ghost {
300
+ background-color: transparent;
301
+ color: var(--color-brand-primary);
302
+ }
303
+ .button.intent-brand.variant-ghost:hover:not(:disabled) {
304
+ background-color: color-mix(in srgb, var(--color-brand-primary) 8%, transparent);
305
+ }
306
+ .button.intent-danger.variant-solid {
307
+ background-color: var(--accent-red);
308
+ color: var(--color-surface-1);
309
+ border-color: var(--accent-red);
310
+ }
311
+ .button.intent-danger.variant-solid:hover:not(:disabled) {
312
+ filter: brightness(1.1);
313
+ }
314
+ .button.intent-danger.variant-soft {
315
+ background-color: color-mix(in srgb, var(--accent-red) 10%, transparent);
316
+ color: var(--accent-red);
317
+ border-color: transparent;
318
+ }
319
+ .button.intent-danger.variant-soft:hover:not(:disabled) {
320
+ background-color: color-mix(in srgb, var(--accent-red) 18%, transparent);
321
+ }
322
+ .button.intent-danger.variant-outline {
323
+ background-color: transparent;
324
+ border-color: var(--accent-red);
325
+ color: var(--accent-red);
326
+ }
327
+ .button.intent-danger.variant-outline:hover:not(:disabled) {
328
+ background-color: color-mix(in srgb, var(--accent-red) 8%, transparent);
329
+ }
330
+ .button.intent-danger.variant-ghost {
331
+ background-color: transparent;
332
+ color: var(--accent-red);
333
+ }
334
+ .button.intent-danger.variant-ghost:hover:not(:disabled) {
335
+ background-color: color-mix(in srgb, var(--accent-red) 8%, transparent);
336
+ }
337
+ .button.intent-white.variant-solid {
338
+ background-color: var(--color-contrast-high);
339
+ color: var(--color-bg);
340
+ border-color: var(--color-contrast-high);
341
+ }
342
+ .button.intent-white.variant-solid:hover:not(:disabled) {
343
+ background-color: color-mix(in srgb, var(--color-contrast-high) 90%, transparent);
344
+ }
345
+ .button.intent-white.variant-outline {
346
+ background-color: transparent;
347
+ border-color: var(--color-border);
348
+ color: var(--color-contrast-high);
349
+ }
350
+ .button.intent-white.variant-outline:hover:not(:disabled) {
351
+ background-color: var(--hover-bg);
352
+ border-color: var(--color-border-strong);
353
+ }
354
+ .button.intent-white.variant-ghost {
355
+ background-color: transparent;
356
+ color: color-mix(in srgb, var(--color-contrast-high) 70%, transparent);
357
+ }
358
+ .button.intent-white.variant-ghost:hover:not(:disabled) {
359
+ background-color: var(--hover-bg);
360
+ color: var(--color-contrast-high);
361
+ }
362
+ .button.intent-success.variant-solid {
363
+ background-color: var(--accent-green);
364
+ color: var(--color-surface-1);
365
+ border-color: var(--accent-green);
366
+ }
367
+ .button.intent-success.variant-solid:hover:not(:disabled) {
368
+ filter: brightness(1.1);
369
+ }
370
+ .button.intent-success.variant-soft {
371
+ background-color: color-mix(in srgb, var(--accent-green) 10%, transparent);
372
+ color: var(--accent-green);
373
+ border-color: transparent;
374
+ }
375
+ .button.intent-success.variant-soft:hover:not(:disabled) {
376
+ background-color: color-mix(in srgb, var(--accent-green) 18%, transparent);
377
+ }
378
+ .button.intent-success.variant-outline {
379
+ background-color: transparent;
380
+ border-color: var(--accent-green);
381
+ color: var(--accent-green);
382
+ }
383
+ .button.intent-success.variant-outline:hover:not(:disabled) {
384
+ background-color: color-mix(in srgb, var(--accent-green) 8%, transparent);
385
+ }
386
+ .button.intent-success.variant-ghost {
387
+ background-color: transparent;
388
+ color: var(--accent-green);
389
+ }
390
+ .button.intent-success.variant-ghost:hover:not(:disabled) {
391
+ background-color: color-mix(in srgb, var(--accent-green) 8%, transparent);
392
+ }
393
+ .button.intent-canvas.variant-solid {
394
+ background-color: var(--button-bg);
395
+ color: var(--color-text-primary);
396
+ border-color: transparent;
397
+ }
398
+ .button.intent-canvas.variant-solid:hover:not(:disabled) {
399
+ background-color: var(--active-bg);
400
+ }
401
+ .button.intent-canvas.variant-soft {
402
+ background-color: var(--hover-bg);
403
+ color: var(--color-text-secondary);
404
+ border-color: transparent;
405
+ }
406
+ .button.intent-canvas.variant-soft:hover:not(:disabled) {
407
+ background-color: var(--active-bg);
408
+ color: var(--color-text-primary);
409
+ }
410
+ .button.intent-canvas.variant-outline {
411
+ background-color: transparent;
412
+ border-color: var(--color-border-soft);
413
+ color: var(--color-text-secondary);
414
+ }
415
+ .button.intent-canvas.variant-outline:hover:not(:disabled) {
416
+ background-color: var(--hover-bg);
417
+ border-color: var(--color-border);
418
+ color: var(--color-text-primary);
419
+ }
420
+ .button.intent-canvas.variant-ghost {
421
+ background-color: transparent;
422
+ color: var(--color-text-secondary);
423
+ }
424
+ .button.intent-canvas.variant-ghost:hover:not(:disabled) {
425
+ background-color: var(--hover-bg);
426
+ color: var(--color-text-primary);
427
+ }
428
+ .button.icon-only {
429
+ padding: 0;
430
+ display: inline-flex;
431
+ align-items: center;
432
+ justify-content: center;
433
+ }
434
+ .button.icon-only.size-sm {
435
+ width: 2.5rem;
436
+ height: 2.5rem;
437
+ }
438
+ .button.icon-only.size-md {
439
+ width: 2.75rem;
440
+ height: 2.75rem;
441
+ }
442
+ .button.icon-only.size-lg {
443
+ width: 3rem;
444
+ height: 3rem;
445
+ }
446
+ .button.icon-only.size-xl {
447
+ width: 3.25rem;
448
+ height: 3.25rem;
449
+ }
450
+ .button.premium {
451
+ background: var(--color-contrast-high);
452
+ color: var(--color-bg);
453
+ border: 1px solid var(--color-contrast-high);
454
+ }
455
+ .button.premium:hover:not(:disabled) {
456
+ background: color-mix(in srgb, var(--color-contrast-high) 85%, transparent);
457
+ border-color: color-mix(in srgb, var(--color-contrast-high) 85%, transparent);
458
+ }
459
+ :root[data-theme=light] .button.premium {
460
+ background: var(--accent-blue);
461
+ color: var(--color-surface-1);
462
+ border: 1px solid var(--accent-blue);
463
+ }
464
+ :root[data-theme=light] .button.premium:hover:not(:disabled) {
465
+ filter: brightness(1.1);
466
+ }
467
+ .button.variant-toggle {
468
+ background: transparent;
469
+ color: var(--color-text-muted);
470
+ border-color: transparent;
471
+ border-right: 1px solid var(--color-border-soft);
472
+ border-radius: 0;
473
+ font-weight: 500;
474
+ }
475
+ .button.variant-toggle:last-child {
476
+ border-right-color: transparent;
477
+ }
478
+ .button.variant-toggle:hover:not(:disabled):not(.active) {
479
+ color: var(--color-text-secondary);
480
+ background: var(--hover-bg);
481
+ }
482
+ .button.variant-toggle.active {
483
+ color: var(--color-text-primary);
484
+ background: var(--color-surface-3);
485
+ }
486
+ .button.variant-toggle.size-sm {
487
+ height: auto;
488
+ min-height: 2.25rem;
489
+ padding: 0.375rem 0.6875rem;
490
+ font-size: 0.7rem;
491
+ }
492
+ .button.variant-toggle.size-md {
493
+ height: auto;
494
+ min-height: 2.5rem;
495
+ padding: 0.4375rem 0.8125rem;
496
+ font-size: 0.75rem;
497
+ }
498
+ .button.variant-toggle.size-lg {
499
+ height: auto;
500
+ min-height: 2.75rem;
501
+ padding: 0.5rem 0.9375rem;
502
+ font-size: 0.8125rem;
503
+ }
504
+ @media (prefers-reduced-motion: reduce) {
505
+ .button {
506
+ transition: none;
507
+ }
508
+ .button:active:not(:disabled) {
509
+ transform: none;
510
+ }
511
+ }
512
+ @media (pointer: coarse) and (max-width: 1024px) {
513
+ .button.size-sm.shape-circle {
514
+ width: 2.75rem;
515
+ height: 2.75rem;
516
+ }
517
+ .button.size-md.shape-circle {
518
+ width: 2.75rem;
519
+ height: 2.75rem;
520
+ }
521
+ .button.icon-only.size-sm {
522
+ width: 2.75rem;
523
+ height: 2.75rem;
524
+ }
525
+ }
526
+
527
+ /* src/shared/presentation/primitives/IconButton/IconButton.css */
528
+ .volt-icon-button {
529
+ background-color: transparent;
530
+ border: none;
531
+ border-radius: var(--radius-sm);
532
+ cursor: pointer;
533
+ color: var(--color-text-secondary);
534
+ min-width: 2.75rem;
535
+ min-height: 2.75rem;
536
+ }
537
+ .volt-icon-button:hover {
538
+ background-color: var(--hover-bg);
539
+ color: var(--color-text-primary);
540
+ }
541
+ .volt-icon-button:focus-visible {
542
+ background-color: var(--hover-bg);
543
+ color: var(--color-text-primary);
544
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
545
+ }
546
+ .volt-icon-button--disabled {
547
+ cursor: not-allowed;
548
+ opacity: 0.5;
549
+ }
550
+ .volt-icon-button--disabled:hover {
551
+ background-color: transparent;
552
+ color: var(--color-text-secondary);
553
+ }
554
+ .volt-icon-button--sm {
555
+ width: 2.375rem;
556
+ height: 2.375rem;
557
+ padding: 0.4375rem;
558
+ }
559
+ .volt-icon-button--md {
560
+ width: 2.75rem;
561
+ height: 2.75rem;
562
+ padding: 0.625rem;
563
+ }
564
+ .volt-icon-button--lg {
565
+ width: 2.875rem;
566
+ height: 2.875rem;
567
+ padding: 0.6875rem;
568
+ }
569
+ .volt-icon-button--ghost {
570
+ background-color: transparent;
571
+ }
572
+ .volt-icon-button--ghost:hover {
573
+ background-color: var(--hover-bg);
574
+ }
575
+ @media (prefers-reduced-motion: reduce) {
576
+ .volt-icon-button {
577
+ transition: none;
578
+ }
579
+ }
580
+
581
+ /* src/shared/presentation/primitives/SearchInput/SearchInput.css */
582
+ .search-input-container {
583
+ border: 1px solid var(--color-border-soft);
584
+ border-radius: var(--radius-lg);
585
+ padding: 0.4375rem 0.75rem;
586
+ min-height: 2.5rem;
587
+ background-color: transparent;
588
+ transition:
589
+ border-color 0.15s ease,
590
+ box-shadow 0.15s ease,
591
+ background-color 0.15s ease;
592
+ }
593
+ .search-input-container:focus-within {
594
+ border-color: var(--focus-ring);
595
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
596
+ }
597
+ .search-input-container--small {
598
+ display: inline-flex;
599
+ flex: 0 0 auto;
600
+ width: auto;
601
+ min-height: 2.125rem;
602
+ padding: 0 0.375rem;
603
+ gap: 0.25rem;
604
+ border-radius: var(--radius-sm);
605
+ }
606
+ .search-input-icon {
607
+ width: 0.875rem;
608
+ height: 0.875rem;
609
+ }
610
+ .search-input {
611
+ background: transparent;
612
+ border: none;
613
+ outline: none;
614
+ min-width: 0;
615
+ width: 100%;
616
+ position: relative;
617
+ z-index: 1;
618
+ }
619
+ .search-input--small {
620
+ font-size: 0.75rem;
621
+ line-height: 1;
622
+ color: var(--color-text-secondary);
623
+ }
624
+ .search-input-content {
625
+ min-width: 0;
626
+ }
627
+ .search-input-overlay {
628
+ position: absolute;
629
+ inset: 0;
630
+ z-index: 2;
631
+ pointer-events: none;
632
+ overflow: hidden;
633
+ white-space: nowrap;
634
+ }
635
+ .search-input--with-overlay {
636
+ color: transparent;
637
+ caret-color: var(--color-text-primary);
638
+ }
639
+ .search-input::placeholder {
640
+ color: var(--color-text-muted);
641
+ }
642
+ @media (prefers-reduced-motion: reduce) {
643
+ .search-input-container {
644
+ transition: none;
645
+ }
646
+ }
647
+
648
+ /* src/shared/presentation/primitives/Select/Select.css */
649
+ .select-trigger {
650
+ padding: 0.4375rem 0.75rem;
651
+ border-radius: var(--radius-lg);
652
+ background-color: transparent;
653
+ transition: border-color .15s ease;
654
+ border: 1px solid var(--color-border-soft);
655
+ text-align: left;
656
+ text-overflow: ellipsis;
657
+ white-space: nowrap;
658
+ }
659
+ .select-trigger:hover:not(:disabled) {
660
+ border-color: var(--color-border);
661
+ }
662
+ .select-trigger:focus-visible {
663
+ outline: none;
664
+ border-color: var(--focus-ring);
665
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
666
+ }
667
+ .select-trigger:disabled {
668
+ cursor: not-allowed;
669
+ background: var(--color-surface-2);
670
+ color: var(--color-text-muted);
671
+ }
672
+ .select-trigger.on-dark {
673
+ background-color: transparent;
674
+ border-color: transparent;
675
+ }
676
+ .select-trigger.on-dark:hover:not(:disabled) {
677
+ background-color: var(--hover-bg);
678
+ }
679
+ .select-value {
680
+ flex: 1 1 auto;
681
+ min-width: 0;
682
+ text-overflow: ellipsis;
683
+ white-space: nowrap;
684
+ }
685
+ .select-chevron {
686
+ margin-left: auto;
687
+ flex-shrink: 0;
688
+ transition: transform .15s ease;
689
+ }
690
+ .select-chevron.rotated {
691
+ transform: rotate(180deg);
692
+ }
693
+ .select-dropdown {
694
+ border-radius: var(--radius-xl);
695
+ padding: .35rem;
696
+ max-height: 300px;
697
+ box-shadow: var(--shadow-elevated);
698
+ animation: selectDropdownIn .15s cubic-bezier(0.16, 1, 0.3, 1);
699
+ z-index: var(--z-floating);
700
+ }
701
+ @keyframes selectDropdownIn {
702
+ from {
703
+ opacity: 0;
704
+ scale: 0.98;
705
+ }
706
+ to {
707
+ opacity: 1;
708
+ scale: 1;
709
+ }
710
+ }
711
+ .select-option {
712
+ padding: 0.4375rem 0.6rem;
713
+ border-radius: var(--radius-sm);
714
+ transition: background .12s ease;
715
+ min-height: 40px;
716
+ }
717
+ .select-option:hover,
718
+ .select-option.active {
719
+ background-color: var(--hover-bg);
720
+ }
721
+ .select-option.selected {
722
+ font-weight: 600;
723
+ color: var(--accent-blue);
724
+ }
725
+ .select-option-check {
726
+ margin-left: auto;
727
+ flex-shrink: 0;
728
+ }
729
+ .select-option-description {
730
+ margin-top: 2px;
731
+ }
732
+ .select-option-loading {
733
+ padding: 0.4375rem 0.6rem;
734
+ min-height: 40px;
735
+ }
736
+ .select-dropdown-search {
737
+ margin-bottom: 0.25rem;
738
+ }
739
+ .select-trigger--editable {
740
+ cursor: text;
741
+ }
742
+ .select-trigger--editable:focus {
743
+ outline: none;
744
+ border-color: var(--accent-blue);
745
+ }
746
+ .select-trigger--editable:focus-visible {
747
+ border-color: var(--focus-ring);
748
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
749
+ }
750
+ @media (prefers-reduced-motion: reduce) {
751
+ .select-trigger,
752
+ .select-trigger--editable,
753
+ .select-chevron,
754
+ .select-option {
755
+ transition: none;
756
+ }
757
+ .select-dropdown {
758
+ animation: none;
759
+ }
760
+ }
761
+
762
+ /* src/shared/presentation/primitives/SegmentedTabs/SegmentedTabs.css */
763
+ .segmented-tabs {
764
+ display: inline-flex;
765
+ align-items: center;
766
+ gap: 2px;
767
+ padding: 3px;
768
+ background: var(--color-surface-1);
769
+ border: 1px solid var(--color-border-soft);
770
+ border-radius: var(--radius-full);
771
+ width: fit-content;
772
+ }
773
+ .segmented-tabs--full {
774
+ display: flex;
775
+ width: 100%;
776
+ }
777
+ .segmented-tabs--full .segmented-tabs__tab {
778
+ flex: 1;
779
+ justify-content: center;
780
+ }
781
+ .segmented-tabs__tab {
782
+ position: relative;
783
+ display: inline-flex;
784
+ align-items: center;
785
+ border: none;
786
+ background: transparent;
787
+ color: var(--color-text-secondary);
788
+ border-radius: var(--radius-full);
789
+ cursor: pointer;
790
+ transition: color .15s ease;
791
+ white-space: nowrap;
792
+ }
793
+ .segmented-tabs--md .segmented-tabs__tab {
794
+ padding: .375rem .875rem;
795
+ }
796
+ .segmented-tabs--sm .segmented-tabs__tab {
797
+ padding: .25rem .625rem;
798
+ font-size: .75rem;
799
+ }
800
+ .segmented-tabs__tab:hover:not(.is-active) {
801
+ color: var(--color-text-primary);
802
+ }
803
+ .segmented-tabs__tab:focus-visible {
804
+ outline: none;
805
+ box-shadow: 0 0 0 2px var(--focus-ring);
806
+ }
807
+ .segmented-tabs__tab.is-active {
808
+ color: var(--color-text-primary);
809
+ }
810
+ .segmented-tabs__pill {
811
+ position: absolute;
812
+ inset: 0;
813
+ background: var(--color-content-bg);
814
+ border-radius: var(--radius-full);
815
+ box-shadow: var(--shadow-card);
816
+ pointer-events: none;
817
+ z-index: 0;
818
+ }
819
+ .segmented-tabs__label {
820
+ position: relative;
821
+ z-index: 1;
822
+ display: inline-flex;
823
+ align-items: center;
824
+ gap: .375rem;
825
+ font-size: .8125rem;
826
+ line-height: 1;
827
+ font-weight: 500;
828
+ }
829
+ .segmented-tabs__icon {
830
+ color: currentColor;
831
+ }
832
+
833
+ /* src/shared/presentation/primitives/Slider/Slider.css */
834
+ @property --slider-ratio { syntax: "<number>"; inherits: true; initial-value: 0; }
835
+ @property --slider-ring-a { syntax: "<number>"; inherits: true; initial-value: 0; }
836
+ @property --slider-ring-b { syntax: "<number>"; inherits: true; initial-value: 0; }
837
+ @property --slider-elev { syntax: "<number>"; inherits: true; initial-value: 0; }
838
+ @property --slider-scale { syntax: "<number>"; inherits: true; initial-value: 1; }
839
+ @property --slider-aura-opacity { syntax: "<number>"; inherits: true; initial-value: 0; }
840
+ @property --slider-aura-scale { syntax: "<number>"; inherits: true; initial-value: 1; }
841
+ @property --slider-aura-intensity { syntax: "<number>"; inherits: true; initial-value: 0; }
842
+ @property --slider-sheen-opacity { syntax: "<number>"; inherits: true; initial-value: 0; }
843
+ .slider {
844
+ display: inline-flex;
845
+ width: 120px;
846
+ max-width: 380px;
847
+ min-height: 2.75rem;
848
+ align-items: center;
849
+ padding: 0.75rem 0;
850
+ -webkit-tap-highlight-color: transparent;
851
+ }
852
+ .slider__track {
853
+ height: 20px;
854
+ min-width: 120px;
855
+ border-radius: 9999px;
856
+ border: 1px solid var(--button-border);
857
+ background: var(--button-bg-smooth);
858
+ contain: layout paint style;
859
+ touch-action: none;
860
+ will-change: transform, box-shadow;
861
+ transform: scale(var(--slider-scale, 1));
862
+ transition:
863
+ border-color .15s ease,
864
+ transform .18s cubic-bezier(0.34, 1.56, 0.64, 1),
865
+ --slider-ring-a .2s cubic-bezier(0.16, 1, 0.3, 1),
866
+ --slider-ring-b .25s cubic-bezier(0.16, 1, 0.3, 1),
867
+ --slider-elev .2s cubic-bezier(0.16, 1, 0.3, 1),
868
+ --slider-scale .18s cubic-bezier(0.34, 1.56, 0.64, 1);
869
+ }
870
+ .slider__track:hover {
871
+ border-color: var(--color-border);
872
+ }
873
+ .slider__track:focus-visible {
874
+ outline: none;
875
+ box-shadow:
876
+ 0 0 0 1px var(--color-border),
877
+ 0 0 0 calc(4px + var(--slider-ring-b, 0)*8px) color-mix(in srgb, var(--focus-ring) 30%, transparent),
878
+ 0 6px calc(20px + var(--slider-elev, 0)*10px) rgba(0, 0, 0, .08);
879
+ }
880
+ .slider--disabled .slider__track {
881
+ opacity: .55;
882
+ cursor: not-allowed;
883
+ }
884
+ .slider__progress {
885
+ transform-origin: 0% 50%;
886
+ transform: translateZ(0) scaleX(var(--slider-ratio, 0));
887
+ will-change: transform;
888
+ background:
889
+ linear-gradient(
890
+ 180deg,
891
+ color-mix(in srgb, var(--accent-blue) 78%, var(--color-contrast-high)),
892
+ var(--accent-blue));
893
+ box-shadow: inset 0 1px 0 color-mix(in srgb, var(--color-contrast-high) 30%, transparent), inset 0 -1px 0 color-mix(in srgb, var(--accent-indigo) 45%, transparent);
894
+ transition: --slider-ratio .1s cubic-bezier(0.33, 1, 0.68, 1);
895
+ }
896
+ .slider__track[data-dragging] .slider__progress {
897
+ transition: none;
898
+ }
899
+ .slider__gloss {
900
+ top: 0;
901
+ left: 0;
902
+ right: 0;
903
+ height: 56%;
904
+ background:
905
+ linear-gradient(
906
+ 180deg,
907
+ rgba(255, 255, 255, .25),
908
+ rgba(255, 255, 255, 0) 60%);
909
+ pointer-events: none;
910
+ z-index: 2;
911
+ mix-blend-mode: overlay;
912
+ }
913
+ :root[data-theme=light] .slider__gloss {
914
+ background:
915
+ linear-gradient(
916
+ 180deg,
917
+ rgba(255, 255, 255, .55),
918
+ rgba(255, 255, 255, 0) 60%);
919
+ mix-blend-mode: screen;
920
+ }
921
+ .slider__sheen {
922
+ top: 50%;
923
+ left: 0%;
924
+ width: 40%;
925
+ height: 180%;
926
+ transform: translate(calc(var(--slider-ratio, 0) * 100%), -50%) rotate(15deg);
927
+ background:
928
+ linear-gradient(
929
+ 100deg,
930
+ rgba(255, 255, 255, 0) 0%,
931
+ rgba(255, 255, 255, .6) 40%,
932
+ rgba(255, 255, 255, .95) 50%,
933
+ rgba(255, 255, 255, .6) 60%,
934
+ rgba(255, 255, 255, 0) 100%);
935
+ opacity: 0;
936
+ pointer-events: none;
937
+ z-index: 3;
938
+ filter: saturate(130%) brightness(1.1);
939
+ will-change:
940
+ transform,
941
+ opacity,
942
+ scale;
943
+ transform-origin: center;
944
+ transition: --slider-ratio .1s cubic-bezier(0.33, 1, 0.68, 1), opacity .15s cubic-bezier(0.33, 1, 0.68, 1);
945
+ }
946
+ .slider__track[data-dragging] .slider__sheen {
947
+ transition: opacity .15s cubic-bezier(0.33, 1, 0.68, 1);
948
+ animation: slider-sheen-loop 0.55s cubic-bezier(0.33, 1, 0.68, 1) infinite;
949
+ }
950
+ @keyframes slider-sheen-loop {
951
+ 0% {
952
+ opacity: 0;
953
+ transform: translate(calc(var(--slider-ratio, 0) * 100% - 40%), -50%) rotate(15deg) scale(0.8);
954
+ }
955
+ 18% {
956
+ opacity: 0.6;
957
+ transform: translate(calc(var(--slider-ratio, 0) * 100% + 10%), -50%) rotate(15deg) scale(1.1);
958
+ }
959
+ 100% {
960
+ opacity: 0;
961
+ transform: translate(calc(var(--slider-ratio, 0) * 100% + 120%), -50%) rotate(15deg) scale(0.9);
962
+ }
963
+ }
964
+ .slider__aura {
965
+ inset: -25% -15%;
966
+ opacity: var(--slider-aura-opacity, 0);
967
+ pointer-events: none;
968
+ filter: blur(calc(var(--slider-aura-intensity, 0)*32px));
969
+ background:
970
+ radial-gradient(
971
+ 80% 120% at 0% 50%,
972
+ rgba(255, 255, 255, .12),
973
+ rgba(255, 255, 255, 0) 60%);
974
+ mix-blend-mode: screen;
975
+ z-index: 1;
976
+ transform: scale(var(--slider-aura-scale, 1));
977
+ transform-origin: center;
978
+ will-change:
979
+ opacity,
980
+ transform,
981
+ filter;
982
+ transition:
983
+ --slider-aura-opacity .2s cubic-bezier(0.16, 1, 0.3, 1),
984
+ --slider-aura-scale .2s cubic-bezier(0.16, 1, 0.3, 1),
985
+ --slider-aura-intensity .2s cubic-bezier(0.16, 1, 0.3, 1);
986
+ }
987
+ .slider__aura[data-pulse] {
988
+ animation: slider-aura-pulse .25s cubic-bezier(0.33, 1, 0.68, 1);
989
+ }
990
+ @keyframes slider-aura-pulse {
991
+ 0% {
992
+ opacity: 0.6;
993
+ transform: scale(1.1);
994
+ }
995
+ 100% {
996
+ opacity: 0;
997
+ transform: scale(1);
998
+ }
999
+ }
1000
+ :root[data-theme=light] .slider__aura {
1001
+ background:
1002
+ radial-gradient(
1003
+ 80% 120% at 0% 50%,
1004
+ rgba(255, 255, 255, .35),
1005
+ rgba(255, 255, 255, 0) 70%);
1006
+ mix-blend-mode: soft-light;
1007
+ }
1008
+ .slider__sparkles {
1009
+ pointer-events: none;
1010
+ z-index: 4;
1011
+ mix-blend-mode: screen;
1012
+ }
1013
+ .slider__sparkles span {
1014
+ position: absolute;
1015
+ top: 50%;
1016
+ width: 40px;
1017
+ height: 2px;
1018
+ left: -10%;
1019
+ transform-origin: 0 50%;
1020
+ background:
1021
+ linear-gradient(
1022
+ 90deg,
1023
+ rgba(255, 255, 255, 0),
1024
+ rgba(255, 255, 255, .8),
1025
+ rgba(255, 255, 255, 0));
1026
+ opacity: .0;
1027
+ filter: blur(0.3px);
1028
+ will-change: transform, opacity;
1029
+ animation: slider-spk 1.2s linear infinite paused;
1030
+ }
1031
+ .slider__sparkles span:nth-child(1) {
1032
+ top: 28%;
1033
+ animation-delay: .0s;
1034
+ transform: rotate(6deg);
1035
+ }
1036
+ .slider__sparkles span:nth-child(2) {
1037
+ top: 44%;
1038
+ animation-delay: .15s;
1039
+ transform: rotate(3deg);
1040
+ }
1041
+ .slider__sparkles span:nth-child(3) {
1042
+ top: 62%;
1043
+ animation-delay: .3s;
1044
+ transform: rotate(-2deg);
1045
+ }
1046
+ .slider__sparkles span:nth-child(4) {
1047
+ top: 78%;
1048
+ animation-delay: .45s;
1049
+ transform: rotate(5deg);
1050
+ }
1051
+ .slider__sparkles span:nth-child(5) {
1052
+ top: 22%;
1053
+ animation-delay: .6s;
1054
+ transform: rotate(-4deg);
1055
+ }
1056
+ .slider__sparkles span:nth-child(6) {
1057
+ top: 36%;
1058
+ animation-delay: .75s;
1059
+ transform: rotate(2deg);
1060
+ }
1061
+ .slider__sparkles span:nth-child(7) {
1062
+ top: 58%;
1063
+ animation-delay: .9s;
1064
+ transform: rotate(-3deg);
1065
+ }
1066
+ .slider__sparkles span:nth-child(8) {
1067
+ top: 74%;
1068
+ animation-delay: 1.05s;
1069
+ transform: rotate(4deg);
1070
+ }
1071
+ .slider__track:active .slider__sparkles span {
1072
+ animation-play-state: running;
1073
+ }
1074
+ @keyframes slider-spk {
1075
+ 0% {
1076
+ transform: translateX(-15%) rotate(var(--r, 0deg)) scale(0.8);
1077
+ opacity: 0;
1078
+ }
1079
+ 15% {
1080
+ opacity: .7;
1081
+ transform: scale(1.1);
1082
+ }
1083
+ 70% {
1084
+ opacity: .2;
1085
+ transform: scale(0.9);
1086
+ }
1087
+ 100% {
1088
+ transform: translateX(130%) rotate(var(--r, 0deg)) scale(0.7);
1089
+ opacity: 0;
1090
+ }
1091
+ }
1092
+ .slider__noise {
1093
+ pointer-events: none;
1094
+ opacity: .05;
1095
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60' viewBox='0 0 60 60'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.8'/%3E%3C/svg%3E");
1096
+ mix-blend-mode: soft-light;
1097
+ z-index: 1;
1098
+ }
1099
+ @media (prefers-reduced-motion: reduce) {
1100
+ .slider__track,
1101
+ .slider__progress,
1102
+ .slider__sheen,
1103
+ .slider__aura,
1104
+ .slider__sparkles span {
1105
+ transition: none !important;
1106
+ animation: none !important;
1107
+ }
1108
+ .slider__track[data-dragging] .slider__sheen,
1109
+ .slider__aura[data-pulse] {
1110
+ animation: none !important;
1111
+ }
1112
+ }
1113
+
1114
+ /* src/shared/presentation/primitives/LiquidToggle/LiquidToggle.css */
1115
+ @layer normalize, demo, toggle, transitions;
1116
+ @property --complete { syntax: "<number>"; inherits: true; initial-value: 0; }
1117
+ @layer transitions {
1118
+ :root {
1119
+ --transition: 0.15s;
1120
+ --ease: cubic-bezier(0.4, 0, 0.2, 1);
1121
+ }
1122
+ .liquid-toggle {
1123
+ transition-property: --complete, outline;
1124
+ transition-duration: var(--transition);
1125
+ transition-timing-function: var(--ease);
1126
+ }
1127
+ .liquid-toggle[data-active=true] {
1128
+ transition-duration: 0s;
1129
+ }
1130
+ [data-bounce=true]:has(button:active, [data-active=true]) {
1131
+ --transition: 0.4s;
1132
+ --ease: cubic-bezier(0.68, -0.55, 01.55);
1133
+ }
1134
+ .indicator--masked .mask {
1135
+ translate: calc((var(--complete) / 100) * (100cqi - 60cqi - (0 * var(--border)))) -50%;
1136
+ transition-property:
1137
+ height,
1138
+ width,
1139
+ margin,
1140
+ scale;
1141
+ transition-duration: var(--transition);
1142
+ transition-timing-function: var(--ease);
1143
+ will-change:
1144
+ transform,
1145
+ height,
1146
+ width,
1147
+ margin;
1148
+ transform: translate3d(0, 0, 0);
1149
+ }
1150
+ .wrapper {
1151
+ clip-path: inset(0 0 0 0 round 100px);
1152
+ filter: blur(6px);
1153
+ transition: filter var(--transition) var(--ease);
1154
+ }
1155
+ [aria-pressed=true]:not([data-active=true]) .liquid__track {
1156
+ left: calc(var(--border) * 6);
1157
+ }
1158
+ .liquid__track {
1159
+ left: 0;
1160
+ transition-property:
1161
+ height,
1162
+ width,
1163
+ filter,
1164
+ left;
1165
+ transition-duration: var(--transition);
1166
+ transition-timing-function: var(--ease);
1167
+ translate: calc((var(--complete) / 100) * (100cqi - 100% - (6 * var(--border)))) -50%;
1168
+ will-change:
1169
+ transform,
1170
+ height,
1171
+ width,
1172
+ filter,
1173
+ left;
1174
+ transform: translate3d(0, 0, 0);
1175
+ }
1176
+ .indicator__liquid {
1177
+ translate: calc((var(--complete) / 100) * (100cqi - 100% - (2 * var(--border)))) -50%;
1178
+ transition-property: scale;
1179
+ transition-duration: var(--transition);
1180
+ transition-timing-function: var(--ease);
1181
+ will-change: transform, scale;
1182
+ transform: translate3d(0, 0, 0);
1183
+ }
1184
+ .indicator__liquid :is(.cover, .shadow) {
1185
+ transition: opacity var(--transition) var(--ease);
1186
+ will-change: opacity;
1187
+ }
1188
+ [data-active=true] .indicator--masked .mask,
1189
+ .liquid-toggle:active .indicator--masked .mask {
1190
+ height: calc((100% - (2 * var(--border))) * 1.65);
1191
+ width: calc((60% - (2 * var(--border))) * 1.65);
1192
+ margin-left: calc((60% - (2 * var(--border))) * -0.325);
1193
+ }
1194
+ [data-active=true] .indicator__liquid,
1195
+ .liquid-toggle:active .indicator__liquid {
1196
+ scale: 1.65;
1197
+ }
1198
+ [data-active=true] .wrapper,
1199
+ .liquid-toggle:active .wrapper {
1200
+ filter: blur(0px);
1201
+ }
1202
+ [data-active=true] .indicator__liquid .shadow,
1203
+ .liquid-toggle:active .indicator__liquid .shadow {
1204
+ opacity: 1;
1205
+ }
1206
+ [data-active=true] .indicator__liquid .cover,
1207
+ .liquid-toggle:active .indicator__liquid .cover {
1208
+ opacity: 0;
1209
+ }
1210
+ [data-active=true] .indicator__liquid .liquid__track,
1211
+ .liquid-toggle:active .indicator__liquid .liquid__track {
1212
+ left: calc(var(--border) * 3);
1213
+ height: calc((var(--height) * 1px) - (6 * var(--border)));
1214
+ }
1215
+ }
1216
+ @layer toggle {
1217
+ .liquid-toggle {
1218
+ --unchecked: color-mix(in srgb, var(--color-text-muted) 48%, var(--color-surface-3));
1219
+ --checked: color-mix(in srgb, var(--accent-green) calc(var(--complete) * 1%), var(--unchecked));
1220
+ --control: var(--color-surface-1);
1221
+ --border: 3px;
1222
+ --width: 78;
1223
+ --height: 30;
1224
+ height: calc(var(--height) * 1px);
1225
+ width: calc(var(--width) * 1px);
1226
+ border-radius: var(--radius-full);
1227
+ border: 0;
1228
+ padding: 0;
1229
+ cursor: pointer;
1230
+ position: relative;
1231
+ overflow: visible;
1232
+ container-type: inline-size;
1233
+ background: transparent;
1234
+ transition: outline var(--transition) var(--ease);
1235
+ outline-offset: 2px;
1236
+ }
1237
+ .liquid-toggle:focus-visible {
1238
+ outline: 4px solid color-mix(in srgb, var(--focus-ring) 30%, transparent);
1239
+ }
1240
+ .liquid-toggle:active {
1241
+ outline: none;
1242
+ }
1243
+ .liquid-toggle[data-active=true]:focus-visible {
1244
+ outline: 4px solid transparent;
1245
+ }
1246
+ .indicator {
1247
+ border-radius: var(--radius-full);
1248
+ pointer-events: none;
1249
+ height: 100%;
1250
+ width: 100%;
1251
+ background: var(--checked);
1252
+ position: absolute;
1253
+ top: 50%;
1254
+ scale: 1;
1255
+ left: 50%;
1256
+ translate: -50% -50%;
1257
+ }
1258
+ .knockout {
1259
+ height: calc(var(--height) * 1px);
1260
+ width: calc(var(--width) * 1px);
1261
+ border-radius: var(--radius-full);
1262
+ filter: url(#remove-black);
1263
+ position: absolute;
1264
+ inset: 0;
1265
+ will-change: filter, scale;
1266
+ transform: translate3d(0, 0, 0);
1267
+ }
1268
+ .indicator--masked {
1269
+ background: var(--checked);
1270
+ z-index: 12;
1271
+ height: 100%;
1272
+ width: 100%;
1273
+ translate: -50% -50%;
1274
+ container-type: inline-size;
1275
+ }
1276
+ .indicator--masked .mask {
1277
+ position: absolute;
1278
+ height: calc(100% - (2 * var(--border)));
1279
+ width: calc(60% - (2 * var(--border)));
1280
+ top: 50%;
1281
+ background: var(--color-bg);
1282
+ left: var(--border);
1283
+ border-radius: var(--radius-full);
1284
+ }
1285
+ .wrapper {
1286
+ position: absolute;
1287
+ inset: 0;
1288
+ border-radius: var(--radius-full);
1289
+ }
1290
+ .liquids {
1291
+ position: absolute;
1292
+ inset: 0;
1293
+ transform: translate3d(0, 0, 0);
1294
+ border-radius: var(--radius-full);
1295
+ overflow: hidden;
1296
+ filter: url(#goo);
1297
+ }
1298
+ .liquid__shadow {
1299
+ position: absolute;
1300
+ inset: 0;
1301
+ box-shadow: inset 0px 0px 3px 4px var(--checked), inset calc(((var(--complete) / 100) * 8px) + -4px) 0px 3px 4px var(--checked);
1302
+ border-radius: var(--radius-full);
1303
+ }
1304
+ .liquid__track {
1305
+ content: "";
1306
+ height: calc((var(--height) * 1px) - (0 * var(--border)));
1307
+ width: calc((var(--width) * 1px) - (0 * var(--border)));
1308
+ background: var(--checked);
1309
+ border-radius: var(--radius-full);
1310
+ position: absolute;
1311
+ top: 50%;
1312
+ }
1313
+ .indicator__liquid {
1314
+ position: absolute;
1315
+ height: calc(100% - (2 * var(--border)));
1316
+ width: calc(60% - (2 * var(--border)));
1317
+ container-type: inline-size;
1318
+ top: 50%;
1319
+ background: transparent;
1320
+ left: var(--border);
1321
+ border-radius: var(--radius-full);
1322
+ }
1323
+ .indicator__liquid .shadow {
1324
+ opacity: 0;
1325
+ content: "";
1326
+ position: absolute;
1327
+ inset: 0;
1328
+ border-radius: var(--radius-full);
1329
+ box-shadow:
1330
+ 1px -1px 2px color-mix(in srgb, var(--color-contrast-high) 50%, transparent) inset,
1331
+ 0px -1px 2px color-mix(in srgb, var(--color-contrast-high) 50%, transparent) inset,
1332
+ -1px -1px 2px color-mix(in srgb, var(--color-contrast-high) 50%, transparent) inset,
1333
+ 1px 1px 2px color-mix(in srgb, var(--color-bg) 50%, transparent) inset,
1334
+ -8px 4px 10px -6px color-mix(in srgb, var(--color-bg) 25%, transparent) inset,
1335
+ -1px 1px 6px color-mix(in srgb, var(--color-bg) 25%, transparent) inset,
1336
+ -1px -1px 8px color-mix(in srgb, var(--color-text-muted) 15%, transparent),
1337
+ 1px 1px 2px color-mix(in srgb, var(--color-bg) 15%, transparent),
1338
+ 2px 2px 6px color-mix(in srgb, var(--color-bg) 15%, transparent),
1339
+ -2px -1px 2px color-mix(in srgb, var(--color-contrast-high) 25%, transparent) inset,
1340
+ 3px 6px 16px -6px color-mix(in srgb, var(--color-bg) 50%, transparent);
1341
+ z-index: 20;
1342
+ }
1343
+ .indicator__liquid .cover {
1344
+ content: "";
1345
+ position: absolute;
1346
+ inset: 0;
1347
+ background: var(--control);
1348
+ border-radius: var(--radius-full);
1349
+ }
1350
+ .liquid-toggle-wrapper {
1351
+ min-height: 2.5rem;
1352
+ display: inline-flex;
1353
+ align-items: center;
1354
+ }
1355
+ }
1356
+ @media (prefers-reduced-motion: reduce) {
1357
+ .liquid-toggle,
1358
+ .liquid-toggle[data-active=true],
1359
+ .indicator--masked .mask,
1360
+ .wrapper,
1361
+ .liquid__track,
1362
+ .indicator__liquid,
1363
+ .indicator__liquid :is(.cover, .shadow) {
1364
+ transition: none !important;
1365
+ }
1366
+ }
1367
+
1368
+ /* src/shared/presentation/primitives/Stepper/Stepper.css */
1369
+ .stepper-step {
1370
+ will-change: opacity, transform;
1371
+ width: 100%;
1372
+ }
1373
+ .stepper-standalone {
1374
+ width: 100%;
1375
+ }
1376
+ .stepper-with-sidebar {
1377
+ height: 100%;
1378
+ }
1379
+ .stepper-sidebar {
1380
+ width: 260px;
1381
+ flex-shrink: 0;
1382
+ padding: 1.25rem;
1383
+ border-right: 1px solid var(--color-border-soft);
1384
+ }
1385
+ .stepper-indicator {
1386
+ width: 100%;
1387
+ padding: 0.625rem 0.75rem;
1388
+ min-height: 2.5rem;
1389
+ display: flex;
1390
+ align-items: center;
1391
+ border: 1px solid transparent;
1392
+ border-radius: var(--radius-md);
1393
+ background: transparent;
1394
+ color: inherit;
1395
+ text-align: left;
1396
+ transition: opacity 0.2s ease, background-color 0.2s ease;
1397
+ opacity: 0.5;
1398
+ }
1399
+ .stepper-indicator:disabled {
1400
+ cursor: not-allowed;
1401
+ }
1402
+ .stepper-indicator:focus-visible {
1403
+ outline: none;
1404
+ border-color: var(--focus-ring);
1405
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
1406
+ }
1407
+ .stepper-indicator.active {
1408
+ opacity: 1;
1409
+ background: var(--color-surface-2);
1410
+ }
1411
+ .stepper-indicator.complete {
1412
+ opacity: 0.8;
1413
+ }
1414
+ .stepper-indicator-number {
1415
+ width: 26px;
1416
+ height: 26px;
1417
+ background: var(--color-border);
1418
+ border-radius: 50%;
1419
+ font-size: 0.8125rem;
1420
+ color: var(--color-text-muted);
1421
+ flex-shrink: 0;
1422
+ transition: background-color 0.2s ease, color 0.2s ease;
1423
+ }
1424
+ .stepper-indicator.active .stepper-indicator-number {
1425
+ background: var(--accent-blue);
1426
+ color: var(--color-surface-1);
1427
+ }
1428
+ .stepper-indicator-title {
1429
+ font-weight: 600;
1430
+ font-size: 0.875rem;
1431
+ }
1432
+ .stepper-indicator-desc {
1433
+ font-size: 0.7125rem;
1434
+ color: var(--color-text-muted);
1435
+ }
1436
+ .stepper-line {
1437
+ width: 2px;
1438
+ height: 18px;
1439
+ background: var(--color-border-soft);
1440
+ margin-left: 20px;
1441
+ transition: background 0.2s;
1442
+ }
1443
+ .stepper-line.active {
1444
+ background: var(--accent-blue);
1445
+ }
1446
+ .stepper-content {
1447
+ padding: 2rem 3rem;
1448
+ max-width: 900px;
1449
+ }
1450
+ @media (max-width: 900px) {
1451
+ .stepper-with-sidebar {
1452
+ flex-direction: column;
1453
+ }
1454
+ .stepper-sidebar {
1455
+ width: 100%;
1456
+ padding: 1rem;
1457
+ border-right: none;
1458
+ border-bottom: 1px solid var(--color-border-soft);
1459
+ }
1460
+ .stepper-content {
1461
+ padding: 1.5rem;
1462
+ max-width: none;
1463
+ }
1464
+ }
1465
+ @media (prefers-reduced-motion: reduce) {
1466
+ .stepper-step,
1467
+ .stepper-indicator,
1468
+ .stepper-indicator-number,
1469
+ .stepper-line {
1470
+ transition: none;
1471
+ }
1472
+ }
1473
+
1474
+ /* src/shared/presentation/primitives/TextInput/TextInput.css */
1475
+ .volt-text-input {
1476
+ display: inline-flex;
1477
+ align-items: center;
1478
+ gap: 0.5rem;
1479
+ min-height: 2.5rem;
1480
+ padding: 0 0.75rem;
1481
+ background-color: var(--input-bg);
1482
+ border: 1px solid var(--color-border);
1483
+ border-radius: var(--radius-sm);
1484
+ color: var(--color-text-primary);
1485
+ transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
1486
+ }
1487
+ .volt-text-input--full-width {
1488
+ display: flex;
1489
+ width: 100%;
1490
+ }
1491
+ .volt-text-input:hover:not(.volt-text-input--disabled) {
1492
+ border-color: var(--color-border-strong);
1493
+ }
1494
+ .volt-text-input--focused {
1495
+ border-color: var(--focus-ring);
1496
+ box-shadow: var(--focus-ring-shadow);
1497
+ }
1498
+ .volt-text-input--error {
1499
+ border-color: var(--status-error);
1500
+ }
1501
+ .volt-text-input--error.volt-text-input--focused {
1502
+ border-color: var(--status-error);
1503
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--status-error) 30%, transparent);
1504
+ }
1505
+ .volt-text-input--disabled {
1506
+ opacity: 0.55;
1507
+ cursor: not-allowed;
1508
+ }
1509
+ .volt-text-input--sm {
1510
+ min-height: 2.125rem;
1511
+ padding: 0 0.625rem;
1512
+ gap: 0.375rem;
1513
+ }
1514
+ .volt-text-input--md {
1515
+ min-height: 2.5rem;
1516
+ }
1517
+ .volt-text-input--lg {
1518
+ min-height: 2.875rem;
1519
+ padding: 0 0.875rem;
1520
+ }
1521
+ .volt-text-input__field {
1522
+ flex: 1;
1523
+ min-width: 0;
1524
+ width: 100%;
1525
+ height: 100%;
1526
+ border: none;
1527
+ outline: none;
1528
+ background: transparent;
1529
+ color: inherit;
1530
+ font-size: 0.875rem;
1531
+ font-family: inherit;
1532
+ }
1533
+ .volt-text-input--sm .volt-text-input__field {
1534
+ font-size: 0.8125rem;
1535
+ }
1536
+ .volt-text-input--lg .volt-text-input__field {
1537
+ font-size: 0.9375rem;
1538
+ }
1539
+ .volt-text-input__field::placeholder {
1540
+ color: var(--color-text-muted);
1541
+ }
1542
+ .volt-text-input__field:disabled {
1543
+ cursor: not-allowed;
1544
+ }
1545
+ .volt-text-input__affix {
1546
+ display: inline-flex;
1547
+ align-items: center;
1548
+ justify-content: center;
1549
+ flex-shrink: 0;
1550
+ color: var(--color-text-muted);
1551
+ transition: color var(--duration-fast) var(--ease-standard);
1552
+ }
1553
+ .volt-text-input--focused .volt-text-input__affix {
1554
+ color: var(--color-text-primary);
1555
+ }
1556
+ @media (prefers-reduced-motion: reduce) {
1557
+ .volt-text-input,
1558
+ .volt-text-input__affix {
1559
+ transition: none;
1560
+ }
1561
+ }
1562
+
1563
+ /* src/shared/presentation/primitives/Textarea/Textarea.css */
1564
+ .volt-textarea {
1565
+ width: 100%;
1566
+ min-height: 2.5rem;
1567
+ padding: 0.5rem 0.75rem;
1568
+ background-color: var(--input-bg);
1569
+ border: 1px solid var(--color-border);
1570
+ border-radius: var(--radius-sm);
1571
+ color: var(--color-text-primary);
1572
+ font-size: 0.875rem;
1573
+ font-family: inherit;
1574
+ line-height: 1.5;
1575
+ resize: vertical;
1576
+ transition: border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
1577
+ }
1578
+ .volt-textarea--sm {
1579
+ padding: 0.375rem 0.625rem;
1580
+ font-size: 0.8125rem;
1581
+ }
1582
+ .volt-textarea--md {
1583
+ font-size: 0.875rem;
1584
+ }
1585
+ .volt-textarea--lg {
1586
+ padding: 0.625rem 0.875rem;
1587
+ font-size: 0.9375rem;
1588
+ }
1589
+ .volt-textarea::placeholder {
1590
+ color: var(--color-text-muted);
1591
+ }
1592
+ .volt-textarea:hover:not(:disabled) {
1593
+ border-color: var(--color-border-strong);
1594
+ }
1595
+ .volt-textarea:focus {
1596
+ outline: none;
1597
+ border-color: var(--focus-ring);
1598
+ }
1599
+ .volt-textarea:focus-visible {
1600
+ outline: none;
1601
+ border-color: var(--focus-ring);
1602
+ box-shadow: var(--focus-ring-shadow);
1603
+ }
1604
+ .volt-textarea--error {
1605
+ border-color: var(--status-error);
1606
+ }
1607
+ .volt-textarea--error:focus-visible {
1608
+ border-color: var(--status-error);
1609
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--status-error) 30%, transparent);
1610
+ }
1611
+ .volt-textarea:disabled {
1612
+ opacity: 0.55;
1613
+ cursor: not-allowed;
1614
+ }
1615
+ .volt-textarea--autosize {
1616
+ resize: none;
1617
+ overflow-y: auto;
1618
+ }
1619
+ @media (prefers-reduced-motion: reduce) {
1620
+ .volt-textarea {
1621
+ transition: none;
1622
+ }
1623
+ }
1624
+
1625
+ /* src/shared/presentation/primitives/NumberInput/NumberInput.css */
1626
+ .volt-number-input__steppers {
1627
+ display: inline-flex;
1628
+ flex-direction: column;
1629
+ flex-shrink: 0;
1630
+ margin-right: -0.375rem;
1631
+ }
1632
+ .volt-number-input__stepper.volt-icon-button {
1633
+ width: 1.25rem;
1634
+ height: 1rem;
1635
+ min-width: 1.25rem;
1636
+ min-height: 1rem;
1637
+ padding: 0;
1638
+ border-radius: var(--radius-xs);
1639
+ color: var(--color-text-muted);
1640
+ }
1641
+ .volt-number-input__stepper.volt-icon-button:hover:not(.volt-icon-button--disabled) {
1642
+ color: var(--color-text-primary);
1643
+ }
1644
+ .volt-number-input__stepper.volt-icon-button svg {
1645
+ width: 0.875rem;
1646
+ height: 0.875rem;
1647
+ }
1648
+ .volt-number-input .volt-text-input__field::-webkit-outer-spin-button,
1649
+ .volt-number-input .volt-text-input__field::-webkit-inner-spin-button {
1650
+ -webkit-appearance: none;
1651
+ margin: 0;
1652
+ }
1653
+ .volt-number-input .volt-text-input__field[type=number] {
1654
+ -moz-appearance: textfield;
1655
+ appearance: textfield;
1656
+ }
1657
+
1658
+ /* src/shared/presentation/primitives/FormField/FormField.css */
1659
+ .volt-form-field {
1660
+ gap: 0.375rem;
1661
+ }
1662
+ .volt-form-field--inline {
1663
+ display: grid;
1664
+ grid-template-columns: 140px 1fr;
1665
+ align-items: center;
1666
+ gap: 0.75rem;
1667
+ min-height: 2.375rem;
1668
+ }
1669
+ .volt-form-field--inline.volt-form-field--no-label {
1670
+ grid-template-columns: 1fr;
1671
+ }
1672
+ .volt-form-field__label {
1673
+ flex-shrink: 0;
1674
+ }
1675
+ .volt-form-field__required {
1676
+ color: var(--status-error);
1677
+ margin-left: 0.125rem;
1678
+ }
1679
+ .volt-form-field--inline .volt-form-field__body {
1680
+ min-width: 0;
1681
+ display: flex;
1682
+ flex-direction: column;
1683
+ gap: 0.25rem;
1684
+ }
1685
+ .volt-form-field__control {
1686
+ min-width: 0;
1687
+ }
1688
+ .volt-form-field__message {
1689
+ line-height: 1.3;
1690
+ }
1691
+ .volt-form-field__message--error {
1692
+ color: var(--status-error);
1693
+ }
1694
+
1695
+ /* src/shared/presentation/primitives/Checkbox/Checkbox.css */
1696
+ .volt-checkbox {
1697
+ display: inline-flex;
1698
+ align-items: center;
1699
+ gap: 0.5rem;
1700
+ cursor: pointer;
1701
+ -webkit-user-select: none;
1702
+ user-select: none;
1703
+ }
1704
+ .volt-checkbox__input {
1705
+ position: absolute;
1706
+ width: 1px;
1707
+ height: 1px;
1708
+ margin: 0;
1709
+ padding: 0;
1710
+ overflow: hidden;
1711
+ clip: rect(0 0 0 0);
1712
+ clip-path: inset(50%);
1713
+ white-space: nowrap;
1714
+ border: 0;
1715
+ }
1716
+ .volt-checkbox__box {
1717
+ --volt-checkbox-size: 1.125rem;
1718
+ box-sizing: border-box;
1719
+ display: inline-flex;
1720
+ align-items: center;
1721
+ justify-content: center;
1722
+ flex-shrink: 0;
1723
+ width: var(--volt-checkbox-size);
1724
+ height: var(--volt-checkbox-size);
1725
+ background-color: var(--input-bg);
1726
+ border: 1px solid var(--color-border);
1727
+ border-radius: var(--radius-xs);
1728
+ color: var(--color-on-accent);
1729
+ transition:
1730
+ background-color var(--duration-fast) var(--ease-standard),
1731
+ border-color var(--duration-fast) var(--ease-standard),
1732
+ box-shadow var(--duration-fast) var(--ease-standard);
1733
+ }
1734
+ .volt-checkbox__indicator {
1735
+ width: 70%;
1736
+ height: 70%;
1737
+ opacity: 0;
1738
+ transform: scale(0.6);
1739
+ transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);
1740
+ }
1741
+ .volt-checkbox--sm .volt-checkbox__box {
1742
+ --volt-checkbox-size: 1rem;
1743
+ }
1744
+ .volt-checkbox--md .volt-checkbox__box {
1745
+ --volt-checkbox-size: 1.125rem;
1746
+ }
1747
+ .volt-checkbox--lg .volt-checkbox__box {
1748
+ --volt-checkbox-size: 1.375rem;
1749
+ }
1750
+ .volt-checkbox:hover .volt-checkbox__box {
1751
+ border-color: var(--color-border-strong);
1752
+ }
1753
+ .volt-checkbox__input:checked + .volt-checkbox__box,
1754
+ .volt-checkbox__input:indeterminate + .volt-checkbox__box,
1755
+ .volt-checkbox--checked .volt-checkbox__box,
1756
+ .volt-checkbox--indeterminate .volt-checkbox__box {
1757
+ background-color: var(--color-brand-primary);
1758
+ border-color: var(--color-brand-primary);
1759
+ }
1760
+ .volt-checkbox__input:checked + .volt-checkbox__box .volt-checkbox__indicator,
1761
+ .volt-checkbox__input:indeterminate + .volt-checkbox__box .volt-checkbox__indicator,
1762
+ .volt-checkbox--checked .volt-checkbox__box .volt-checkbox__indicator,
1763
+ .volt-checkbox--indeterminate .volt-checkbox__box .volt-checkbox__indicator {
1764
+ opacity: 1;
1765
+ transform: scale(1);
1766
+ }
1767
+ .volt-checkbox__input:focus-visible + .volt-checkbox__box {
1768
+ outline: none;
1769
+ border-color: var(--focus-ring);
1770
+ box-shadow: var(--focus-ring-shadow);
1771
+ }
1772
+ .volt-checkbox--disabled {
1773
+ cursor: not-allowed;
1774
+ opacity: 0.55;
1775
+ }
1776
+ .volt-checkbox__label {
1777
+ cursor: inherit;
1778
+ }
1779
+ @media (prefers-reduced-motion: reduce) {
1780
+ .volt-checkbox__box,
1781
+ .volt-checkbox__indicator {
1782
+ transition: none;
1783
+ }
1784
+ }
1785
+
1786
+ /* src/shared/presentation/primitives/Radio/Radio.css */
1787
+ .volt-radio {
1788
+ display: inline-flex;
1789
+ align-items: center;
1790
+ gap: 0.5rem;
1791
+ cursor: pointer;
1792
+ -webkit-user-select: none;
1793
+ user-select: none;
1794
+ }
1795
+ .volt-radio__input {
1796
+ position: absolute;
1797
+ width: 1px;
1798
+ height: 1px;
1799
+ margin: 0;
1800
+ padding: 0;
1801
+ overflow: hidden;
1802
+ clip: rect(0 0 0 0);
1803
+ clip-path: inset(50%);
1804
+ white-space: nowrap;
1805
+ border: 0;
1806
+ }
1807
+ .volt-radio__box {
1808
+ --volt-radio-size: 1.125rem;
1809
+ box-sizing: border-box;
1810
+ display: inline-flex;
1811
+ align-items: center;
1812
+ justify-content: center;
1813
+ flex-shrink: 0;
1814
+ width: var(--volt-radio-size);
1815
+ height: var(--volt-radio-size);
1816
+ background-color: var(--input-bg);
1817
+ border: 1px solid var(--color-border);
1818
+ border-radius: var(--radius-full);
1819
+ transition:
1820
+ background-color var(--duration-fast) var(--ease-standard),
1821
+ border-color var(--duration-fast) var(--ease-standard),
1822
+ box-shadow var(--duration-fast) var(--ease-standard);
1823
+ }
1824
+ .volt-radio__indicator {
1825
+ width: 45%;
1826
+ height: 45%;
1827
+ border-radius: var(--radius-full);
1828
+ background-color: var(--color-on-accent);
1829
+ opacity: 0;
1830
+ transform: scale(0.4);
1831
+ transition: opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);
1832
+ }
1833
+ .volt-radio--sm .volt-radio__box {
1834
+ --volt-radio-size: 1rem;
1835
+ }
1836
+ .volt-radio--md .volt-radio__box {
1837
+ --volt-radio-size: 1.125rem;
1838
+ }
1839
+ .volt-radio--lg .volt-radio__box {
1840
+ --volt-radio-size: 1.375rem;
1841
+ }
1842
+ .volt-radio:hover .volt-radio__box {
1843
+ border-color: var(--color-border-strong);
1844
+ }
1845
+ .volt-radio__input:checked + .volt-radio__box,
1846
+ .volt-radio--checked .volt-radio__box {
1847
+ background-color: var(--color-brand-primary);
1848
+ border-color: var(--color-brand-primary);
1849
+ }
1850
+ .volt-radio__input:checked + .volt-radio__box .volt-radio__indicator,
1851
+ .volt-radio--checked .volt-radio__box .volt-radio__indicator {
1852
+ opacity: 1;
1853
+ transform: scale(1);
1854
+ }
1855
+ .volt-radio__input:focus-visible + .volt-radio__box {
1856
+ outline: none;
1857
+ border-color: var(--focus-ring);
1858
+ box-shadow: var(--focus-ring-shadow);
1859
+ }
1860
+ .volt-radio--disabled {
1861
+ cursor: not-allowed;
1862
+ opacity: 0.55;
1863
+ }
1864
+ .volt-radio__label {
1865
+ cursor: inherit;
1866
+ }
1867
+ @media (prefers-reduced-motion: reduce) {
1868
+ .volt-radio__box,
1869
+ .volt-radio__indicator {
1870
+ transition: none;
1871
+ }
1872
+ }
1873
+
1874
+ /* src/shared/presentation/primitives/Tabs/Tabs.css */
1875
+ .volt-tabs {
1876
+ display: flex;
1877
+ flex-direction: column;
1878
+ min-width: 0;
1879
+ }
1880
+ .volt-tabs__list {
1881
+ gap: 0.25rem;
1882
+ overflow-x: auto;
1883
+ scrollbar-width: none;
1884
+ }
1885
+ .volt-tabs__list::-webkit-scrollbar {
1886
+ display: none;
1887
+ }
1888
+ .volt-tabs__tab {
1889
+ position: relative;
1890
+ gap: 0.5rem;
1891
+ border: none;
1892
+ background: transparent;
1893
+ color: var(--color-text-secondary);
1894
+ font-weight: 500;
1895
+ line-height: 1;
1896
+ white-space: nowrap;
1897
+ cursor: pointer;
1898
+ transition-property: color, background-color;
1899
+ transition-duration: var(--duration-fast);
1900
+ transition-timing-function: var(--ease-standard);
1901
+ }
1902
+ .volt-tabs__tab--sm {
1903
+ padding: 0.5rem 0.625rem;
1904
+ font-size: 0.75rem;
1905
+ }
1906
+ .volt-tabs__tab--md {
1907
+ padding: 0.625rem 0.75rem;
1908
+ font-size: 0.875rem;
1909
+ }
1910
+ .volt-tabs__tab--lg {
1911
+ padding: 0.75rem 1rem;
1912
+ font-size: 1rem;
1913
+ }
1914
+ .volt-tabs__tab:hover:not(.is-selected):not(.is-disabled) {
1915
+ color: var(--color-text-primary);
1916
+ }
1917
+ .volt-tabs__tab:focus-visible {
1918
+ outline: none;
1919
+ border-radius: var(--radius-sm);
1920
+ box-shadow: var(--focus-ring-shadow);
1921
+ }
1922
+ .volt-tabs__tab.is-selected {
1923
+ color: var(--color-brand-primary);
1924
+ }
1925
+ .volt-tabs__tab.is-disabled {
1926
+ color: var(--color-text-muted);
1927
+ cursor: not-allowed;
1928
+ opacity: 0.6;
1929
+ }
1930
+ .volt-tabs__tab-icon {
1931
+ color: currentColor;
1932
+ font-size: 1em;
1933
+ }
1934
+ .volt-tabs__tab-label {
1935
+ display: inline-flex;
1936
+ align-items: center;
1937
+ }
1938
+ .volt-tabs__indicator {
1939
+ position: absolute;
1940
+ left: 0.5rem;
1941
+ right: 0.5rem;
1942
+ bottom: -1px;
1943
+ height: 2px;
1944
+ border-radius: var(--radius-full);
1945
+ background: var(--color-brand-primary);
1946
+ transform: scaleX(0);
1947
+ transform-origin: center;
1948
+ opacity: 0;
1949
+ pointer-events: none;
1950
+ transition-property: transform, opacity;
1951
+ transition-duration: var(--duration-normal);
1952
+ transition-timing-function: var(--ease-standard);
1953
+ }
1954
+ .volt-tabs__tab.is-selected .volt-tabs__indicator {
1955
+ transform: scaleX(1);
1956
+ opacity: 1;
1957
+ }
1958
+ .volt-tabs__panel {
1959
+ min-width: 0;
1960
+ padding-top: 1rem;
1961
+ }
1962
+ .volt-tabs__panel:focus-visible {
1963
+ outline: none;
1964
+ border-radius: var(--radius-sm);
1965
+ box-shadow: var(--focus-ring-shadow);
1966
+ }
1967
+ @media (prefers-reduced-motion: reduce) {
1968
+ .volt-tabs__tab,
1969
+ .volt-tabs__indicator {
1970
+ transition: none;
1971
+ }
1972
+ }
1973
+
1974
+ /* src/shared/presentation/primitives/Breadcrumbs/Breadcrumbs.css */
1975
+ .volt-breadcrumbs {
1976
+ min-width: 0;
1977
+ flex-wrap: wrap;
1978
+ }
1979
+ .volt-breadcrumbs__list {
1980
+ display: flex;
1981
+ align-items: center;
1982
+ flex-wrap: wrap;
1983
+ gap: 0.25rem;
1984
+ min-width: 0;
1985
+ list-style: none;
1986
+ margin: 0;
1987
+ padding: 0;
1988
+ }
1989
+ .volt-breadcrumbs__item {
1990
+ display: flex;
1991
+ align-items: center;
1992
+ gap: 0.25rem;
1993
+ min-width: 0;
1994
+ }
1995
+ .volt-breadcrumbs__separator {
1996
+ display: inline-flex;
1997
+ align-items: center;
1998
+ color: var(--color-text-muted);
1999
+ flex-shrink: 0;
2000
+ }
2001
+ .volt-breadcrumbs__trigger,
2002
+ .volt-breadcrumbs__current {
2003
+ display: inline-flex;
2004
+ align-items: center;
2005
+ gap: 0.25rem;
2006
+ min-width: 0;
2007
+ padding: 0.5rem 0.625rem;
2008
+ border-radius: var(--radius-sm);
2009
+ max-width: 12rem;
2010
+ overflow: hidden;
2011
+ text-overflow: ellipsis;
2012
+ white-space: nowrap;
2013
+ }
2014
+ .volt-breadcrumbs__trigger {
2015
+ border: none;
2016
+ background: transparent;
2017
+ color: var(--color-text-secondary);
2018
+ font: inherit;
2019
+ text-align: left;
2020
+ cursor: pointer;
2021
+ }
2022
+ .volt-breadcrumbs__trigger:hover {
2023
+ background: var(--hover-bg);
2024
+ color: var(--color-text-primary);
2025
+ }
2026
+ .volt-breadcrumbs__trigger:focus-visible {
2027
+ outline: none;
2028
+ background: var(--hover-bg);
2029
+ color: var(--color-text-primary);
2030
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 4px color-mix(in srgb, var(--focus-ring) 30%, transparent);
2031
+ }
2032
+ .volt-breadcrumbs__current {
2033
+ background: var(--active-bg);
2034
+ color: var(--color-text-primary);
2035
+ font-weight: 600;
2036
+ box-shadow: inset 0 0 0 1px var(--color-border-soft);
2037
+ }
2038
+ .volt-breadcrumbs--compact .volt-breadcrumbs__trigger,
2039
+ .volt-breadcrumbs--compact .volt-breadcrumbs__current {
2040
+ padding: 0;
2041
+ border-radius: 0;
2042
+ box-shadow: none;
2043
+ background: transparent;
2044
+ max-width: 12rem;
2045
+ }
2046
+ .volt-breadcrumbs--compact .volt-breadcrumbs__trigger {
2047
+ color: var(--color-text-muted);
2048
+ }
2049
+ .volt-breadcrumbs--compact .volt-breadcrumbs__trigger:hover,
2050
+ .volt-breadcrumbs--compact .volt-breadcrumbs__trigger:focus-visible {
2051
+ background: transparent;
2052
+ color: var(--color-text-primary);
2053
+ box-shadow: none;
2054
+ }
2055
+ .volt-breadcrumbs--compact .volt-breadcrumbs__current {
2056
+ color: var(--color-text-primary);
2057
+ font-weight: 500;
2058
+ }
2059
+ .volt-breadcrumbs--pill .volt-breadcrumbs__trigger,
2060
+ .volt-breadcrumbs--pill .volt-breadcrumbs__current {
2061
+ padding: 0.375rem 0.5rem;
2062
+ border-radius: var(--radius-sm);
2063
+ box-shadow: none;
2064
+ background: transparent;
2065
+ color: var(--color-text-muted);
2066
+ font-weight: 500;
2067
+ }
2068
+ .volt-breadcrumbs--pill .volt-breadcrumbs__trigger {
2069
+ pointer-events: auto;
2070
+ transition:
2071
+ background-color 0.15s ease,
2072
+ color 0.15s ease,
2073
+ box-shadow 0.15s ease;
2074
+ }
2075
+ .volt-breadcrumbs--pill .volt-breadcrumbs__trigger:hover {
2076
+ background: var(--hover-bg);
2077
+ color: var(--color-text-secondary);
2078
+ }
2079
+ .volt-breadcrumbs--pill .volt-breadcrumbs__trigger:active {
2080
+ background: var(--active-bg);
2081
+ }
2082
+ .volt-breadcrumbs--pill .volt-breadcrumbs__trigger:focus-visible {
2083
+ outline: none;
2084
+ box-shadow: 0 0 0 2px var(--focus-ring);
2085
+ }
2086
+ @media (prefers-reduced-motion: reduce) {
2087
+ .volt-breadcrumbs__trigger {
2088
+ transition: none;
2089
+ }
2090
+ }
2091
+
2092
+ /* src/shared/presentation/primitives/CollapsibleSection/CollapsibleSection.css */
2093
+ .collapsible-section-header {
2094
+ padding: 0.5rem;
2095
+ }
2096
+ .collapsible-section-heading {
2097
+ flex: 1;
2098
+ min-width: 0;
2099
+ margin: 0;
2100
+ }
2101
+ .collapsible-section-header-row {
2102
+ width: 100%;
2103
+ min-width: 0;
2104
+ }
2105
+ .collapsible-section-title {
2106
+ font-size: 0.8125rem;
2107
+ }
2108
+ .collapsible-section-trigger {
2109
+ flex: 1;
2110
+ min-width: 0;
2111
+ min-height: 2.75rem;
2112
+ padding: 0.25rem 0;
2113
+ border: none;
2114
+ background: transparent;
2115
+ text-align: left;
2116
+ }
2117
+ .collapsible-section-trigger-content {
2118
+ flex: 1;
2119
+ min-width: 0;
2120
+ }
2121
+ .collapsible-section-trigger:hover .collapsible-section-arrow,
2122
+ .collapsible-section-trigger:focus-visible .collapsible-section-arrow {
2123
+ color: var(--color-text-primary);
2124
+ }
2125
+ .collapsible-section-trigger:focus-visible {
2126
+ outline: none;
2127
+ border-radius: var(--radius-sm);
2128
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 3px var(--focus-ring);
2129
+ }
2130
+ .collapsible-section-trigger:disabled {
2131
+ cursor: default;
2132
+ }
2133
+ .collapsible-section-actions {
2134
+ flex-shrink: 0;
2135
+ }
2136
+ .collapsible-section-chevron-trigger {
2137
+ flex-shrink: 0;
2138
+ width: 2rem;
2139
+ height: 2rem;
2140
+ padding: 0;
2141
+ border: none;
2142
+ border-radius: var(--radius-sm);
2143
+ background: transparent;
2144
+ }
2145
+ .collapsible-section-chevron-trigger:hover,
2146
+ .collapsible-section-chevron-trigger:focus-visible {
2147
+ color: var(--color-text-primary);
2148
+ }
2149
+ .collapsible-section-chevron-trigger:focus-visible {
2150
+ outline: none;
2151
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 3px var(--focus-ring);
2152
+ }
2153
+ .collapsible-section-arrow {
2154
+ color: inherit;
2155
+ transition: none;
2156
+ }
2157
+ .collapsible-section-arrow--collapsed {
2158
+ transform: rotate(-90deg);
2159
+ }
2160
+ .collapsible-section-body {
2161
+ overflow: hidden;
2162
+ transition: none;
2163
+ padding-left: .5rem;
2164
+ }
2165
+ .collapsible-section-body--static {
2166
+ overflow: visible;
2167
+ }
2168
+ .collapsible-section-title-row {
2169
+ justify-content: space-between;
2170
+ min-height: 2.75rem;
2171
+ }
2172
+ .collapsible-section-action--add:hover {
2173
+ color: var(--accent-green);
2174
+ }
2175
+ .collapsible-section-action--delete {
2176
+ opacity: 0;
2177
+ pointer-events: none;
2178
+ transition: opacity 0.15s ease;
2179
+ }
2180
+ .collapsible-section-action--delete-visible {
2181
+ opacity: 1;
2182
+ pointer-events: auto;
2183
+ }
2184
+ .collapsible-section-header:hover .collapsible-section-action--delete,
2185
+ .collapsible-section-header:focus-within .collapsible-section-action--delete {
2186
+ opacity: 1;
2187
+ pointer-events: auto;
2188
+ }
2189
+ .collapsible-section-action--delete:hover {
2190
+ color: var(--accent-red);
2191
+ }
2192
+ .canvas-right-dropdown-header .collapsible-section-header-row {
2193
+ align-items: center;
2194
+ gap: 0;
2195
+ }
2196
+ .canvas-right-dropdown-header .collapsible-section-actions {
2197
+ margin-left: auto;
2198
+ }
2199
+ .canvas-right-dropdown-header .collapsible-section-chevron-trigger {
2200
+ margin-left: 0.125rem;
2201
+ }
2202
+
2203
+ /* src/shared/presentation/primitives/Modal/Modal.css */
2204
+ dialog.volt-modal {
2205
+ border: 1px solid var(--glass-border);
2206
+ border-radius: var(--radius-lg);
2207
+ padding: 0;
2208
+ width: 100%;
2209
+ max-width: 500px;
2210
+ max-height: calc(100dvh - 2rem);
2211
+ background: transparent;
2212
+ box-shadow: var(--shadow-elevated);
2213
+ color: var(--color-text-primary);
2214
+ margin: auto;
2215
+ opacity: 0;
2216
+ overflow: hidden;
2217
+ overscroll-behavior: contain;
2218
+ position: relative;
2219
+ transition:
2220
+ opacity 0.2s cubic-bezier(0.16, 1, 0.3, 1),
2221
+ transform 0.2s cubic-bezier(0.16, 1, 0.3, 1),
2222
+ overlay 0.2s allow-discrete,
2223
+ display 0.2s allow-discrete;
2224
+ }
2225
+ dialog.volt-modal::before {
2226
+ content: "";
2227
+ position: absolute;
2228
+ inset: 0;
2229
+ border-radius: var(--radius-lg);
2230
+ background: var(--glass-bg);
2231
+ backdrop-filter: var(--glass-blur);
2232
+ -webkit-backdrop-filter: var(--glass-blur);
2233
+ pointer-events: none;
2234
+ z-index: -1;
2235
+ }
2236
+ dialog.volt-modal[open] {
2237
+ opacity: 1;
2238
+ }
2239
+ @starting-style {
2240
+ dialog.volt-modal[open] {
2241
+ opacity: 0;
2242
+ transform: scale(0.95);
2243
+ }
2244
+ }
2245
+ dialog.volt-modal::backdrop {
2246
+ background: color-mix(in srgb, var(--color-overlay) 72%, transparent);
2247
+ backdrop-filter: blur(4px);
2248
+ opacity: 0;
2249
+ transition:
2250
+ opacity 0.2s cubic-bezier(0.16, 1, 0.3, 1),
2251
+ overlay 0.2s allow-discrete,
2252
+ display 0.2s allow-discrete;
2253
+ }
2254
+ dialog.volt-modal[open]::backdrop {
2255
+ opacity: 1;
2256
+ }
2257
+ @starting-style {
2258
+ dialog.volt-modal[open]::backdrop {
2259
+ opacity: 0;
2260
+ }
2261
+ }
2262
+ .volt-modal-header {
2263
+ padding: 1.5rem 1.5rem 1rem;
2264
+ border-bottom: 1px solid var(--glass-border);
2265
+ }
2266
+ .volt-modal-body {
2267
+ max-height: calc(100dvh - 10rem);
2268
+ overflow-y: auto;
2269
+ overscroll-behavior: contain;
2270
+ padding: 0;
2271
+ }
2272
+ .volt-modal-footer {
2273
+ padding: 1rem 1.5rem;
2274
+ border-top: 1px solid var(--glass-border);
2275
+ border-bottom-left-radius: var(--radius-lg);
2276
+ border-bottom-right-radius: var(--radius-lg);
2277
+ }
2278
+
2279
+ /* src/shared/presentation/primitives/Popover/Popover.css */
2280
+ .popover {
2281
+ min-width: 180px;
2282
+ max-width: 320px;
2283
+ box-shadow: var(--shadow-elevated);
2284
+ animation: popoverIn .15s cubic-bezier(0.16, 1, 0.3, 1);
2285
+ overflow-y: auto;
2286
+ overscroll-behavior: contain;
2287
+ z-index: var(--z-floating);
2288
+ }
2289
+ .popover--no-padding {
2290
+ padding: 0;
2291
+ }
2292
+ @keyframes popoverIn {
2293
+ from {
2294
+ opacity: 0;
2295
+ scale: 0.95;
2296
+ }
2297
+ to {
2298
+ opacity: 1;
2299
+ scale: 1;
2300
+ }
2301
+ }
2302
+ @media (prefers-reduced-motion: reduce) {
2303
+ .popover {
2304
+ animation: none;
2305
+ }
2306
+ }
2307
+
2308
+ /* src/shared/presentation/primitives/PopoverMenu/PopoverMenu.css */
2309
+ .popover-menu {
2310
+ min-width: 160px;
2311
+ padding: 0.25rem;
2312
+ overflow-y: scroll;
2313
+ }
2314
+
2315
+ /* src/shared/presentation/primitives/PopoverMenuItem/PopoverMenuItem.css */
2316
+ .popover-menu-item {
2317
+ display: flex;
2318
+ align-items: center;
2319
+ gap: 0.5rem;
2320
+ min-height: 2.75rem;
2321
+ transition: background-color 0.15s ease;
2322
+ color: var(--color-text-primary);
2323
+ }
2324
+ .popover-menu-item--md {
2325
+ padding: 0.625rem 0.75rem;
2326
+ font-size: 0.875rem;
2327
+ }
2328
+ .popover-menu-item--sm {
2329
+ gap: 0.375rem;
2330
+ min-height: 2.5rem;
2331
+ padding: 0.5rem 0.625rem;
2332
+ font-size: 0.75rem;
2333
+ }
2334
+ .popover-menu-item-content {
2335
+ width: 100%;
2336
+ }
2337
+ .popover-menu-item-label {
2338
+ min-width: 0;
2339
+ text-align: left;
2340
+ }
2341
+ .popover-menu-item-adornment {
2342
+ color: var(--color-text-muted);
2343
+ }
2344
+ .popover-menu-item-icon {
2345
+ width: 1rem;
2346
+ height: 1rem;
2347
+ }
2348
+ .popover-menu-item--sm .popover-menu-item-icon {
2349
+ width: 0.875rem;
2350
+ height: 0.875rem;
2351
+ }
2352
+ .popover-menu-item-icon > svg {
2353
+ width: 100%;
2354
+ height: 100%;
2355
+ display: block;
2356
+ }
2357
+ .popover-menu-item:hover {
2358
+ background-color: var(--color-surface-3);
2359
+ }
2360
+ .popover-menu-item.danger {
2361
+ color: var(--status-error);
2362
+ }
2363
+ .popover-menu-item.danger:hover {
2364
+ background-color: var(--status-error-bg);
2365
+ }
2366
+ .popover-menu-item.disabled {
2367
+ opacity: 0.5;
2368
+ cursor: not-allowed;
2369
+ pointer-events: none;
2370
+ }
2371
+
2372
+ /* src/shared/presentation/primitives/Menu/Menu.css */
2373
+ .menu-trigger {
2374
+ display: inline-flex;
2375
+ align-items: center;
2376
+ }
2377
+ .menu-trigger:focus-visible {
2378
+ outline: none;
2379
+ box-shadow: var(--focus-ring-shadow);
2380
+ border-radius: var(--radius-sm);
2381
+ }
2382
+ .menu-separator {
2383
+ height: 1px;
2384
+ margin: 0.25rem 0.25rem;
2385
+ background: var(--color-border-soft);
2386
+ border: none;
2387
+ flex-shrink: 0;
2388
+ }
2389
+ .menu-empty {
2390
+ padding: 0.625rem 0.75rem;
2391
+ color: var(--color-text-muted);
2392
+ font-size: 0.875rem;
2393
+ }
2394
+
2395
+ /* src/shared/presentation/primitives/Tooltip/Tooltip.css */
2396
+ .volt-tooltip {
2397
+ padding: 0.375rem 0.75rem;
2398
+ border-radius: var(--radius-sm);
2399
+ font-size: 0.8125rem;
2400
+ line-height: 1.4;
2401
+ white-space: nowrap;
2402
+ max-width: 280px;
2403
+ text-overflow: ellipsis;
2404
+ overscroll-behavior: contain;
2405
+ background: var(--color-surface-2);
2406
+ border: 1px solid var(--color-border-soft);
2407
+ color: var(--color-text-primary);
2408
+ animation: tooltipIn 0.15s cubic-bezier(0.16, 1, 0.3, 1);
2409
+ pointer-events: none;
2410
+ z-index: var(--z-floating);
2411
+ }
2412
+ .volt-tooltip-trigger {
2413
+ display: inline-flex;
2414
+ }
2415
+ @keyframes tooltipIn {
2416
+ from {
2417
+ opacity: 0;
2418
+ scale: 0.96;
2419
+ }
2420
+ to {
2421
+ opacity: 1;
2422
+ scale: 1;
2423
+ }
2424
+ }
2425
+ .volt-tooltip-top {
2426
+ transform-origin: bottom center;
2427
+ }
2428
+ .volt-tooltip-bottom {
2429
+ transform-origin: top center;
2430
+ }
2431
+ .volt-tooltip-left {
2432
+ transform-origin: right center;
2433
+ }
2434
+ .volt-tooltip-right {
2435
+ transform-origin: left center;
2436
+ }
2437
+ @media (prefers-reduced-motion: reduce) {
2438
+ .volt-tooltip {
2439
+ animation: none;
2440
+ }
2441
+ }
2442
+
2443
+ /* src/shared/presentation/primitives/CursorTooltip/CursorTooltip.css */
2444
+ .cursor-tooltip {
2445
+ pointer-events: none;
2446
+ transition: opacity 0.2s cubic-bezier(0.2, 0, 0, 1), scale 0.2s cubic-bezier(0.2, 0, 0, 1);
2447
+ background: var(--glass-bg);
2448
+ backdrop-filter: var(--glass-blur);
2449
+ -webkit-backdrop-filter: var(--glass-blur);
2450
+ border: 1px solid var(--glass-border);
2451
+ box-shadow: var(--shadow-elevated);
2452
+ border-radius: var(--radius-lg);
2453
+ padding: 12px;
2454
+ min-width: 200px;
2455
+ font-size: 0.9rem;
2456
+ opacity: 0;
2457
+ scale: 0.95;
2458
+ display: flex;
2459
+ flex-direction: column;
2460
+ gap: 8px;
2461
+ z-index: var(--z-floating);
2462
+ }
2463
+ .cursor-tooltip.interactive {
2464
+ pointer-events: auto;
2465
+ }
2466
+ .cursor-tooltip.visible {
2467
+ opacity: 1;
2468
+ scale: 1;
2469
+ }
2470
+ @media (prefers-reduced-motion: reduce) {
2471
+ .cursor-tooltip {
2472
+ transition: none;
2473
+ scale: 1;
2474
+ }
2475
+ }
2476
+
2477
+ /* src/shared/presentation/primitives/FloatingToolbar/FloatingToolbar.css */
2478
+ .volt-floating-toolbar {
2479
+ position: absolute;
2480
+ z-index: 10;
2481
+ display: inline-flex;
2482
+ align-items: center;
2483
+ gap: 0.5rem;
2484
+ padding: 0.375rem 0.5rem;
2485
+ border-radius: var(--radius-full);
2486
+ }
2487
+ .volt-floating-toolbar--align-center {
2488
+ left: 50%;
2489
+ transform: translateX(-50%);
2490
+ }
2491
+ .volt-floating-toolbar--align-start {
2492
+ left: 1rem;
2493
+ }
2494
+ .volt-floating-toolbar--align-end {
2495
+ right: 1rem;
2496
+ }
2497
+
2498
+ /* src/shared/presentation/primitives/Tag/Tag.css */
2499
+ .volt-tag {
2500
+ display: inline-flex;
2501
+ align-items: center;
2502
+ gap: 0.25rem;
2503
+ border: 1px solid transparent;
2504
+ font-weight: 500;
2505
+ line-height: 1;
2506
+ white-space: nowrap;
2507
+ }
2508
+ .volt-tag__icon {
2509
+ display: inline-flex;
2510
+ align-items: center;
2511
+ flex-shrink: 0;
2512
+ }
2513
+ .volt-tag--size-xs {
2514
+ padding: 2px 6px;
2515
+ font-size: 0.65rem;
2516
+ }
2517
+ .volt-tag--size-sm {
2518
+ padding: 3px 8px;
2519
+ font-size: 0.72rem;
2520
+ }
2521
+ .volt-tag--size-md {
2522
+ padding: 4px 10px;
2523
+ font-size: 0.8rem;
2524
+ }
2525
+ .volt-tag--shape-pill {
2526
+ border-radius: var(--radius-full);
2527
+ }
2528
+ .volt-tag--shape-square {
2529
+ border-radius: var(--radius-sm);
2530
+ }
2531
+ .volt-tag--variant-soft.volt-tag--tone-neutral {
2532
+ background: var(--color-surface-2);
2533
+ color: var(--color-text-secondary);
2534
+ border-color: var(--color-border-soft);
2535
+ }
2536
+ .volt-tag--variant-soft.volt-tag--tone-brand {
2537
+ background: var(--status-info-bg);
2538
+ color: var(--color-brand-primary);
2539
+ border-color: var(--status-info-border);
2540
+ }
2541
+ .volt-tag--variant-soft.volt-tag--tone-success {
2542
+ background: var(--status-success-bg);
2543
+ color: var(--status-success);
2544
+ border-color: var(--status-success-border);
2545
+ }
2546
+ .volt-tag--variant-soft.volt-tag--tone-warning {
2547
+ background: var(--status-warning-bg);
2548
+ color: var(--status-warning);
2549
+ border-color: var(--status-warning-border);
2550
+ }
2551
+ .volt-tag--variant-soft.volt-tag--tone-danger {
2552
+ background: var(--status-error-bg);
2553
+ color: var(--status-error);
2554
+ border-color: var(--status-error-border);
2555
+ }
2556
+ .volt-tag--variant-soft.volt-tag--tone-info {
2557
+ background: var(--status-info-bg);
2558
+ color: var(--status-info);
2559
+ border-color: var(--status-info-border);
2560
+ }
2561
+ .volt-tag--variant-solid.volt-tag--tone-neutral {
2562
+ background: var(--color-surface-3);
2563
+ color: var(--color-text-primary);
2564
+ }
2565
+ .volt-tag--variant-solid.volt-tag--tone-brand {
2566
+ background: var(--color-brand-primary);
2567
+ color: #ffffff;
2568
+ }
2569
+ .volt-tag--variant-solid.volt-tag--tone-success {
2570
+ background: var(--status-success);
2571
+ color: #ffffff;
2572
+ }
2573
+ .volt-tag--variant-solid.volt-tag--tone-warning {
2574
+ background: var(--status-warning);
2575
+ color: #0b0b0f;
2576
+ }
2577
+ .volt-tag--variant-solid.volt-tag--tone-danger {
2578
+ background: var(--status-error);
2579
+ color: #ffffff;
2580
+ }
2581
+ .volt-tag--variant-solid.volt-tag--tone-info {
2582
+ background: var(--status-info);
2583
+ color: #ffffff;
2584
+ }
2585
+ .volt-tag--variant-outline {
2586
+ background: transparent;
2587
+ }
2588
+ .volt-tag--variant-outline.volt-tag--tone-neutral {
2589
+ color: var(--color-text-secondary);
2590
+ border-color: var(--color-border);
2591
+ }
2592
+ .volt-tag--variant-outline.volt-tag--tone-brand {
2593
+ color: var(--color-brand-primary);
2594
+ border-color: var(--color-brand-primary);
2595
+ }
2596
+ .volt-tag--variant-outline.volt-tag--tone-success {
2597
+ color: var(--status-success);
2598
+ border-color: var(--status-success);
2599
+ }
2600
+ .volt-tag--variant-outline.volt-tag--tone-warning {
2601
+ color: var(--status-warning);
2602
+ border-color: var(--status-warning);
2603
+ }
2604
+ .volt-tag--variant-outline.volt-tag--tone-danger {
2605
+ color: var(--status-error);
2606
+ border-color: var(--status-error);
2607
+ }
2608
+ .volt-tag--variant-outline.volt-tag--tone-info {
2609
+ color: var(--status-info);
2610
+ border-color: var(--status-info);
2611
+ }
2612
+
2613
+ /* src/shared/presentation/primitives/StatusBadge/StatusBadge.css */
2614
+ .status-badge {
2615
+ display: inline-flex;
2616
+ align-items: center;
2617
+ white-space: nowrap;
2618
+ text-transform: uppercase;
2619
+ }
2620
+ .status-badge.size-compact {
2621
+ padding: 0;
2622
+ border: none !important;
2623
+ border-radius: 0;
2624
+ }
2625
+ .status-badge.variant-active {
2626
+ color: var(--accent-blue);
2627
+ }
2628
+ .status-badge.variant-success {
2629
+ color: var(--status-success);
2630
+ }
2631
+ .status-badge.variant-inactive,
2632
+ .status-badge.variant-neutral {
2633
+ color: var(--color-text-secondary);
2634
+ }
2635
+ .status-badge.variant-warning {
2636
+ color: var(--status-warning);
2637
+ }
2638
+ .status-badge.variant-danger {
2639
+ color: var(--status-error);
2640
+ }
2641
+ .status-badge.variant-brand {
2642
+ color: var(--accent-blue);
2643
+ }
2644
+ .status-badge.variant-primary {
2645
+ color: var(--color-text-primary);
2646
+ }
2647
+
2648
+ /* src/shared/presentation/primitives/StatusDot/StatusDot.css */
2649
+ .status-dot {
2650
+ display: inline-block;
2651
+ position: relative;
2652
+ }
2653
+ .status-dot.size-sm {
2654
+ width: 8px;
2655
+ height: 8px;
2656
+ }
2657
+ .status-dot.size-md {
2658
+ width: 10px;
2659
+ height: 10px;
2660
+ }
2661
+ .status-dot.size-lg {
2662
+ width: 12px;
2663
+ height: 12px;
2664
+ }
2665
+ .status-dot--tone-success {
2666
+ background-color: var(--status-success);
2667
+ box-shadow: 0 0 0 2px var(--color-surface-1);
2668
+ }
2669
+ .status-dot--tone-warning {
2670
+ background-color: var(--status-warning);
2671
+ box-shadow: 0 0 0 2px var(--color-surface-1);
2672
+ }
2673
+ .status-dot--tone-danger {
2674
+ background-color: var(--status-error);
2675
+ box-shadow: 0 0 0 2px var(--color-surface-1);
2676
+ }
2677
+ .status-dot--tone-info,
2678
+ .status-dot--tone-brand {
2679
+ background-color: var(--color-brand-primary);
2680
+ box-shadow: 0 0 0 2px var(--color-surface-1);
2681
+ }
2682
+ .status-dot--tone-neutral {
2683
+ background-color: var(--color-text-muted);
2684
+ box-shadow: 0 0 0 2px var(--color-surface-1);
2685
+ }
2686
+ .status-dot--pulse {
2687
+ animation: animate-pulse 1.5s ease-in-out infinite;
2688
+ }
2689
+ .status-dot--glow::after {
2690
+ content: "";
2691
+ position: absolute;
2692
+ inset: -4px;
2693
+ border-radius: inherit;
2694
+ background: currentColor;
2695
+ opacity: 0;
2696
+ animation: status-dot-glow 1.8s ease-in-out infinite;
2697
+ pointer-events: none;
2698
+ }
2699
+ .status-dot--tone-success.status-dot--glow {
2700
+ color: var(--status-success);
2701
+ }
2702
+ .status-dot--tone-warning.status-dot--glow {
2703
+ color: var(--status-warning);
2704
+ }
2705
+ .status-dot--tone-danger.status-dot--glow {
2706
+ color: var(--status-error);
2707
+ }
2708
+ .status-dot--tone-info.status-dot--glow,
2709
+ .status-dot--tone-brand.status-dot--glow {
2710
+ color: var(--color-brand-primary);
2711
+ }
2712
+ @keyframes status-dot-glow {
2713
+ 0%, 100% {
2714
+ opacity: 0;
2715
+ transform: scale(0.9);
2716
+ }
2717
+ 50% {
2718
+ opacity: 0.45;
2719
+ transform: scale(1.15);
2720
+ }
2721
+ }
2722
+ @media (prefers-reduced-motion: reduce) {
2723
+ .status-dot--pulse,
2724
+ .status-dot--glow::after {
2725
+ animation: none;
2726
+ }
2727
+ }
2728
+
2729
+ /* src/shared/presentation/primitives/Avatar/Avatar.css */
2730
+ .avatar {
2731
+ background: var(--color-surface-2);
2732
+ color: var(--color-text-secondary);
2733
+ overflow: hidden;
2734
+ }
2735
+ .avatar-image {
2736
+ object-fit: cover;
2737
+ }
2738
+ .avatar-xs {
2739
+ width: 1.5rem;
2740
+ height: 1.5rem;
2741
+ }
2742
+ .avatar-xs .avatar-initials {
2743
+ font-size: 0.625rem;
2744
+ }
2745
+ .avatar-sm {
2746
+ width: 2rem;
2747
+ height: 2rem;
2748
+ }
2749
+ .avatar-sm .avatar-initials {
2750
+ font-size: 0.75rem;
2751
+ }
2752
+ .avatar-md {
2753
+ width: 2.5rem;
2754
+ height: 2.5rem;
2755
+ }
2756
+ .avatar-md .avatar-initials {
2757
+ font-size: 0.875rem;
2758
+ }
2759
+ .avatar-lg {
2760
+ width: 3.5rem;
2761
+ height: 3.5rem;
2762
+ }
2763
+ .avatar-lg .avatar-initials {
2764
+ font-size: 1.125rem;
2765
+ }
2766
+
2767
+ /* src/shared/presentation/primitives/AvatarStack/AvatarStack.css */
2768
+ .avatar-stack {
2769
+ flex-direction: row-reverse;
2770
+ }
2771
+ .avatar-stack-item {
2772
+ margin-left: -0.5rem;
2773
+ border: 2px solid var(--color-bg);
2774
+ }
2775
+ .avatar-stack-item:last-child {
2776
+ margin-left: 0;
2777
+ }
2778
+ .avatar-stack-overflow {
2779
+ margin-left: -0.5rem;
2780
+ background: var(--color-surface-2);
2781
+ border: 2px solid var(--color-bg);
2782
+ }
2783
+
2784
+ /* src/shared/presentation/primitives/IconFrame/IconFrame.css */
2785
+ .volt-icon-frame {
2786
+ display: inline-flex;
2787
+ align-items: center;
2788
+ justify-content: center;
2789
+ flex-shrink: 0;
2790
+ border: 1px solid var(--color-border-soft);
2791
+ color: var(--color-text-secondary);
2792
+ }
2793
+ .volt-icon-frame--size-xs {
2794
+ width: 22px;
2795
+ height: 22px;
2796
+ }
2797
+ .volt-icon-frame--size-sm {
2798
+ width: 28px;
2799
+ height: 28px;
2800
+ }
2801
+ .volt-icon-frame--size-md {
2802
+ width: 40px;
2803
+ height: 40px;
2804
+ }
2805
+ .volt-icon-frame--size-lg {
2806
+ width: 56px;
2807
+ height: 56px;
2808
+ }
2809
+ .volt-icon-frame--size-xl {
2810
+ width: 72px;
2811
+ height: 72px;
2812
+ }
2813
+ .volt-icon-frame--shape-square {
2814
+ border-radius: var(--radius-md);
2815
+ }
2816
+ .volt-icon-frame--shape-circle {
2817
+ border-radius: var(--radius-full);
2818
+ }
2819
+ .volt-icon-frame--tone-brand {
2820
+ background: var(--status-info-bg);
2821
+ color: var(--color-brand-primary);
2822
+ border-color: var(--status-info-border);
2823
+ }
2824
+ .volt-icon-frame--tone-success {
2825
+ background: var(--status-success-bg);
2826
+ color: var(--status-success);
2827
+ border-color: var(--status-success-border);
2828
+ }
2829
+ .volt-icon-frame--tone-warning {
2830
+ background: var(--status-warning-bg);
2831
+ color: var(--status-warning);
2832
+ border-color: var(--status-warning-border);
2833
+ }
2834
+ .volt-icon-frame--tone-danger {
2835
+ background: var(--status-error-bg);
2836
+ color: var(--status-error);
2837
+ border-color: var(--status-error-border);
2838
+ }
2839
+ .volt-icon-frame--tone-info {
2840
+ background: var(--status-info-bg);
2841
+ color: var(--status-info);
2842
+ border-color: var(--status-info-border);
2843
+ }
2844
+
2845
+ /* src/shared/presentation/primitives/Card/Card.css */
2846
+ .volt-card {
2847
+ position: relative;
2848
+ display: flex;
2849
+ flex-direction: column;
2850
+ border-radius: var(--radius-lg);
2851
+ overflow: hidden;
2852
+ transition:
2853
+ border-color var(--duration-fast) var(--ease-standard),
2854
+ box-shadow var(--duration-fast) var(--ease-standard),
2855
+ background-color var(--duration-fast) var(--ease-standard),
2856
+ transform var(--duration-fast) var(--ease-standard);
2857
+ }
2858
+ .volt-card--plain {
2859
+ background: var(--color-surface-1);
2860
+ border: 1px solid var(--color-border-soft);
2861
+ }
2862
+ .volt-card--interactive {
2863
+ cursor: pointer;
2864
+ text-align: inherit;
2865
+ width: 100%;
2866
+ color: inherit;
2867
+ font: inherit;
2868
+ appearance: none;
2869
+ }
2870
+ @media (hover: hover) and (pointer: fine) {
2871
+ .volt-card--interactive:hover {
2872
+ border-color: var(--color-border-strong);
2873
+ }
2874
+ }
2875
+ .volt-card--interactive:focus-visible {
2876
+ outline: none;
2877
+ box-shadow: var(--focus-ring-shadow);
2878
+ }
2879
+ .volt-card--selected {
2880
+ border-color: var(--color-brand-primary);
2881
+ box-shadow: 0 0 0 1px var(--color-brand-primary);
2882
+ }
2883
+ .volt-card--selected.volt-card--interactive:focus-visible {
2884
+ box-shadow: var(--focus-ring-shadow);
2885
+ }
2886
+ .volt-card--pad-sm {
2887
+ padding: 0.75rem;
2888
+ }
2889
+ .volt-card--pad-md {
2890
+ padding: 1rem;
2891
+ }
2892
+ .volt-card--pad-lg {
2893
+ padding: 1.5rem;
2894
+ }
2895
+ .volt-card__header {
2896
+ display: flex;
2897
+ align-items: center;
2898
+ flex-shrink: 0;
2899
+ }
2900
+ .volt-card__body {
2901
+ flex: 1;
2902
+ min-height: 0;
2903
+ }
2904
+ .volt-card__body--pad-sm {
2905
+ padding: 0.75rem;
2906
+ }
2907
+ .volt-card__body--pad-md {
2908
+ padding: 1rem;
2909
+ }
2910
+ .volt-card__body--pad-lg {
2911
+ padding: 1.5rem;
2912
+ }
2913
+ .volt-card__footer {
2914
+ display: flex;
2915
+ align-items: center;
2916
+ flex-shrink: 0;
2917
+ }
2918
+ @media (prefers-reduced-motion: reduce) {
2919
+ .volt-card {
2920
+ transition: none;
2921
+ }
2922
+ }
2923
+
2924
+ /* src/shared/presentation/primitives/Skeleton/Skeleton.css */
2925
+ .volt-skeleton {
2926
+ display: block;
2927
+ background-color: var(--color-surface-3);
2928
+ flex-shrink: 0;
2929
+ position: relative;
2930
+ overflow: hidden;
2931
+ }
2932
+ .volt-skeleton--text {
2933
+ height: 1em;
2934
+ border-radius: var(--radius-xs);
2935
+ transform: scale(1, 0.6);
2936
+ transform-origin: 0 55%;
2937
+ margin-top: 0;
2938
+ margin-bottom: 0;
2939
+ }
2940
+ .volt-skeleton--text:empty::before {
2941
+ content: "\a0";
2942
+ }
2943
+ .volt-skeleton--rectangular {
2944
+ border-radius: 0;
2945
+ }
2946
+ .volt-skeleton--rounded {
2947
+ border-radius: var(--radius-md);
2948
+ }
2949
+ .volt-skeleton--circular {
2950
+ border-radius: 50%;
2951
+ }
2952
+ .volt-skeleton--pulse {
2953
+ animation: volt-skeleton-pulse 1.5s ease-in-out 0.5s infinite;
2954
+ }
2955
+ .volt-skeleton--wave {
2956
+ position: relative;
2957
+ overflow: hidden;
2958
+ -webkit-mask-image: -webkit-radial-gradient(white, black);
2959
+ }
2960
+ .volt-skeleton--wave::after {
2961
+ content: "";
2962
+ position: absolute;
2963
+ inset: 0;
2964
+ transform: translateX(-100%);
2965
+ background:
2966
+ linear-gradient(
2967
+ 90deg,
2968
+ transparent,
2969
+ color-mix(in srgb, var(--color-text-primary) 6%, transparent),
2970
+ transparent);
2971
+ animation: volt-skeleton-wave 1.6s linear 0.5s infinite;
2972
+ }
2973
+ @keyframes volt-skeleton-pulse {
2974
+ 0% {
2975
+ opacity: 1;
2976
+ }
2977
+ 50% {
2978
+ opacity: 0.4;
2979
+ }
2980
+ 100% {
2981
+ opacity: 1;
2982
+ }
2983
+ }
2984
+ @keyframes volt-skeleton-wave {
2985
+ 0% {
2986
+ transform: translateX(-100%);
2987
+ }
2988
+ 60% {
2989
+ transform: translateX(100%);
2990
+ }
2991
+ 100% {
2992
+ transform: translateX(100%);
2993
+ }
2994
+ }
2995
+ @media (prefers-reduced-motion: reduce) {
2996
+ .volt-skeleton--pulse,
2997
+ .volt-skeleton--wave::after {
2998
+ animation: none;
2999
+ }
3000
+ }
3001
+
3002
+ /* src/shared/presentation/primitives/StatCard/StatCard.css */
3003
+ .volt-stat-card {
3004
+ transition:
3005
+ background-color 0.15s ease,
3006
+ border-color 0.15s ease,
3007
+ box-shadow 0.15s ease;
3008
+ }
3009
+ .volt-stat-card__icon {
3010
+ display: inline-flex;
3011
+ align-items: center;
3012
+ color: var(--color-text-muted);
3013
+ flex-shrink: 0;
3014
+ }
3015
+ .volt-stat-card__label {
3016
+ line-height: 1;
3017
+ }
3018
+ .volt-stat-card__value {
3019
+ line-height: 1.15;
3020
+ }
3021
+ .volt-stat-card__unit {
3022
+ line-height: 1.15;
3023
+ }
3024
+ .volt-stat-card__trend {
3025
+ display: inline-flex;
3026
+ align-items: center;
3027
+ font-size: 0.75rem;
3028
+ font-weight: 500;
3029
+ }
3030
+ .volt-stat-card__footer {
3031
+ padding-top: 0.25rem;
3032
+ }
3033
+ .volt-stat-card--tone-success .volt-stat-card__icon {
3034
+ color: var(--status-success);
3035
+ }
3036
+ .volt-stat-card--tone-warning .volt-stat-card__icon {
3037
+ color: var(--status-warning);
3038
+ }
3039
+ .volt-stat-card--tone-danger .volt-stat-card__icon {
3040
+ color: var(--status-error);
3041
+ }
3042
+ .volt-stat-card--tone-brand .volt-stat-card__icon {
3043
+ color: var(--color-brand-primary);
3044
+ }
3045
+
3046
+ /* src/shared/presentation/primitives/SelectableCard/SelectableCard.css */
3047
+ .volt-selectable-card {
3048
+ position: relative;
3049
+ padding: 1.25rem 1rem;
3050
+ background: var(--color-surface-1);
3051
+ border: 1px solid var(--color-border-soft);
3052
+ border-radius: var(--radius-lg);
3053
+ text-align: center;
3054
+ cursor: pointer;
3055
+ transition:
3056
+ border-color 0.15s ease,
3057
+ box-shadow 0.15s ease,
3058
+ transform 0.15s ease,
3059
+ background-color 0.15s ease;
3060
+ }
3061
+ @media (hover: hover) and (pointer: fine) {
3062
+ .volt-selectable-card:hover {
3063
+ border-color: var(--color-border-strong);
3064
+ background: var(--color-surface-2);
3065
+ }
3066
+ }
3067
+ .volt-selectable-card:focus-visible {
3068
+ outline: none;
3069
+ border-color: var(--focus-ring);
3070
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus-ring) 25%, transparent);
3071
+ }
3072
+ .volt-selectable-card--selected {
3073
+ border-color: var(--color-brand-primary);
3074
+ box-shadow: 0 0 0 1px var(--color-brand-primary);
3075
+ }
3076
+ .volt-selectable-card__badge {
3077
+ position: absolute;
3078
+ top: 0.5rem;
3079
+ right: 0.5rem;
3080
+ padding: 2px 8px;
3081
+ font-size: 0.65rem;
3082
+ font-weight: 600;
3083
+ text-transform: uppercase;
3084
+ letter-spacing: 0.04em;
3085
+ border-radius: var(--radius-full);
3086
+ background: var(--color-brand-primary);
3087
+ color: #ffffff;
3088
+ }
3089
+
3090
+ /* src/shared/presentation/primitives/DashedActionBox/DashedActionBox.css */
3091
+ .volt-dashed-action {
3092
+ display: inline-flex;
3093
+ align-items: center;
3094
+ justify-content: center;
3095
+ gap: 0.5rem;
3096
+ padding: 0.75rem 1rem;
3097
+ border: 1px dashed var(--color-border-strong);
3098
+ border-radius: var(--radius-md);
3099
+ background: transparent;
3100
+ color: var(--color-text-muted);
3101
+ cursor: pointer;
3102
+ transition:
3103
+ border-color 0.15s ease,
3104
+ background-color 0.15s ease,
3105
+ color 0.15s ease;
3106
+ }
3107
+ .volt-dashed-action--block {
3108
+ display: flex;
3109
+ width: 100%;
3110
+ }
3111
+ .volt-dashed-action--size-sm {
3112
+ padding: 0.5rem 0.75rem;
3113
+ font-size: 0.75rem;
3114
+ }
3115
+ .volt-dashed-action--size-md {
3116
+ padding: 0.75rem 1rem;
3117
+ font-size: 0.875rem;
3118
+ }
3119
+ .volt-dashed-action--size-lg {
3120
+ padding: 1rem 1.5rem;
3121
+ font-size: 1rem;
3122
+ }
3123
+ .volt-dashed-action__icon {
3124
+ display: inline-flex;
3125
+ align-items: center;
3126
+ }
3127
+ @media (hover: hover) and (pointer: fine) {
3128
+ .volt-dashed-action:hover {
3129
+ border-color: var(--color-brand-primary);
3130
+ color: var(--color-text-primary);
3131
+ background: var(--hover-bg);
3132
+ }
3133
+ }
3134
+ .volt-dashed-action:focus-visible {
3135
+ outline: none;
3136
+ border-color: var(--focus-ring);
3137
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus-ring) 25%, transparent);
3138
+ }
3139
+ .volt-dashed-action--tone-brand {
3140
+ color: var(--color-brand-primary);
3141
+ border-color: var(--color-brand-primary);
3142
+ }
3143
+
3144
+ /* src/shared/presentation/primitives/KeyValueList/KeyValueList.css */
3145
+ .volt-kv-list--dividers > * + * {
3146
+ border-top: 1px solid var(--color-border-soft);
3147
+ }
3148
+ .volt-kv-row {
3149
+ display: flex;
3150
+ align-items: center;
3151
+ justify-content: space-between;
3152
+ gap: 1rem;
3153
+ padding: 0.625rem 0;
3154
+ min-width: 0;
3155
+ }
3156
+ .volt-kv-row__label {
3157
+ flex-shrink: 0;
3158
+ min-width: 0;
3159
+ }
3160
+ .volt-kv-row__value-group {
3161
+ min-width: 0;
3162
+ }
3163
+ .volt-kv-row__value {
3164
+ text-align: right;
3165
+ word-break: break-word;
3166
+ overflow-wrap: break-word;
3167
+ min-width: 0;
3168
+ }
3169
+ @media (max-width: 480px) {
3170
+ .volt-kv-row {
3171
+ flex-direction: column;
3172
+ align-items: flex-start;
3173
+ gap: 0.25rem;
3174
+ }
3175
+ .volt-kv-row__value {
3176
+ text-align: left;
3177
+ }
3178
+ }
3179
+
3180
+ /* src/shared/presentation/primitives/ListRow/ListRow.css */
3181
+ .volt-list-row {
3182
+ display: flex;
3183
+ align-items: center;
3184
+ gap: 0.75rem;
3185
+ width: 100%;
3186
+ padding: 0.75rem;
3187
+ border: 1px solid transparent;
3188
+ border-radius: var(--radius-md);
3189
+ background: transparent;
3190
+ color: inherit;
3191
+ text-align: left;
3192
+ text-decoration: none;
3193
+ cursor: pointer;
3194
+ }
3195
+ .volt-list-row[disabled],
3196
+ .volt-list-row--disabled {
3197
+ opacity: 0.5;
3198
+ cursor: not-allowed;
3199
+ }
3200
+ .volt-list-row__leading {
3201
+ display: inline-flex;
3202
+ align-items: center;
3203
+ flex-shrink: 0;
3204
+ }
3205
+ .volt-list-row__content {
3206
+ display: flex;
3207
+ flex-direction: column;
3208
+ gap: 0.125rem;
3209
+ flex: 1;
3210
+ min-width: 0;
3211
+ }
3212
+ .volt-list-row__trailing {
3213
+ display: inline-flex;
3214
+ align-items: center;
3215
+ gap: 0.5rem;
3216
+ flex-shrink: 0;
3217
+ margin-left: auto;
3218
+ color: var(--color-text-muted);
3219
+ }
3220
+ .volt-list-row--active {
3221
+ background: var(--active-bg);
3222
+ }
3223
+ .volt-list-row--selected {
3224
+ background: var(--color-surface-2);
3225
+ border-color: var(--color-border-soft);
3226
+ }
3227
+
3228
+ /* src/shared/presentation/primitives/Table/Table.css */
3229
+ .table {
3230
+ width: 100%;
3231
+ border-collapse: collapse;
3232
+ }
3233
+ .table-caption {
3234
+ width: 1px;
3235
+ height: 1px;
3236
+ padding: 0;
3237
+ margin: -1px;
3238
+ overflow: hidden;
3239
+ clip: rect(0, 0, 0, 0);
3240
+ white-space: nowrap;
3241
+ border: 0;
3242
+ }
3243
+ .table th {
3244
+ text-align: left;
3245
+ padding: 0.625rem 1rem;
3246
+ font-size: 0.6875rem;
3247
+ font-weight: 500;
3248
+ color: var(--color-text-muted);
3249
+ text-transform: uppercase;
3250
+ letter-spacing: 0.06em;
3251
+ border-bottom: 1px solid var(--color-border-soft);
3252
+ position: sticky;
3253
+ top: 0;
3254
+ white-space: nowrap;
3255
+ }
3256
+ .table td {
3257
+ padding: 0.625rem 1rem;
3258
+ border-bottom: 1px solid var(--color-border-soft);
3259
+ color: var(--color-text-primary);
3260
+ font-size: 0.8125rem;
3261
+ }
3262
+ .table tbody tr:last-child td {
3263
+ border-bottom: none;
3264
+ }
3265
+ .table tbody tr:hover {
3266
+ background: var(--hover-bg);
3267
+ }
3268
+ .table tbody tr.clickable {
3269
+ cursor: pointer;
3270
+ }
3271
+ .table-sort-button {
3272
+ padding: 0;
3273
+ border: none;
3274
+ background: transparent;
3275
+ color: inherit;
3276
+ font: inherit;
3277
+ letter-spacing: inherit;
3278
+ text-transform: inherit;
3279
+ cursor: pointer;
3280
+ }
3281
+ .table-sort-button:focus-visible {
3282
+ outline: none;
3283
+ border-radius: var(--radius-sm);
3284
+ box-shadow: 0 0 0 1px var(--color-border), 0 0 0 3px var(--focus-ring);
3285
+ }
3286
+
3287
+ /* src/shared/presentation/primitives/Timeline/Timeline.css */
3288
+ .volt-timeline {
3289
+ display: flex;
3290
+ flex-direction: column;
3291
+ gap: 0.5rem;
3292
+ list-style: none;
3293
+ padding: 0;
3294
+ margin: 0;
3295
+ }
3296
+ .volt-timeline-item {
3297
+ display: grid;
3298
+ grid-template-columns: 28px 1fr;
3299
+ gap: 0.75rem;
3300
+ align-items: flex-start;
3301
+ }
3302
+ .volt-timeline-item__rail {
3303
+ position: relative;
3304
+ display: flex;
3305
+ flex-direction: column;
3306
+ align-items: center;
3307
+ flex-shrink: 0;
3308
+ min-height: 28px;
3309
+ }
3310
+ .volt-timeline-item__dot {
3311
+ display: inline-flex;
3312
+ align-items: center;
3313
+ justify-content: center;
3314
+ width: 22px;
3315
+ height: 22px;
3316
+ border-radius: var(--radius-full);
3317
+ background: var(--color-surface-2);
3318
+ border: 1px solid var(--color-border-soft);
3319
+ color: var(--color-text-secondary);
3320
+ flex-shrink: 0;
3321
+ z-index: 1;
3322
+ }
3323
+ .volt-timeline-item__line {
3324
+ flex: 1;
3325
+ width: 1px;
3326
+ background: var(--color-border-soft);
3327
+ margin-top: 2px;
3328
+ }
3329
+ .volt-timeline-item:last-child .volt-timeline-item__line {
3330
+ display: none;
3331
+ }
3332
+ .volt-timeline-item__content {
3333
+ display: flex;
3334
+ flex-direction: column;
3335
+ gap: 0.25rem;
3336
+ padding: 0 0 0.75rem;
3337
+ min-width: 0;
3338
+ }
3339
+ .volt-timeline-item--tone-brand .volt-timeline-item__dot {
3340
+ background: var(--status-info-bg);
3341
+ color: var(--color-brand-primary);
3342
+ border-color: var(--status-info-border);
3343
+ }
3344
+ .volt-timeline-item--tone-success .volt-timeline-item__dot {
3345
+ background: var(--status-success-bg);
3346
+ color: var(--status-success);
3347
+ border-color: var(--status-success-border);
3348
+ }
3349
+ .volt-timeline-item--tone-warning .volt-timeline-item__dot {
3350
+ background: var(--status-warning-bg);
3351
+ color: var(--status-warning);
3352
+ border-color: var(--status-warning-border);
3353
+ }
3354
+ .volt-timeline-item--tone-danger .volt-timeline-item__dot {
3355
+ background: var(--status-error-bg);
3356
+ color: var(--status-error);
3357
+ border-color: var(--status-error-border);
3358
+ }
3359
+
3360
+ /* src/shared/presentation/primitives/Callout/Callout.css */
3361
+ .volt-callout {
3362
+ border-radius: var(--radius-md);
3363
+ border: 1px solid transparent;
3364
+ }
3365
+ .volt-callout--tone-danger {
3366
+ background: var(--status-error-bg);
3367
+ border-color: var(--status-error-border);
3368
+ }
3369
+ .volt-callout--tone-warning {
3370
+ background: var(--status-warning-bg);
3371
+ border-color: var(--status-warning-border);
3372
+ }
3373
+ .volt-callout--tone-info {
3374
+ background: var(--status-info-bg);
3375
+ border-color: var(--status-info-border);
3376
+ }
3377
+ .volt-callout--tone-success {
3378
+ background: var(--status-success-bg);
3379
+ border-color: var(--status-success-border);
3380
+ }
3381
+ .volt-callout--layout-inline {
3382
+ padding: 0.75rem 1rem;
3383
+ }
3384
+ .volt-callout--layout-stacked {
3385
+ padding: 1rem;
3386
+ }
3387
+ .volt-callout__icon {
3388
+ display: inline-flex;
3389
+ align-items: center;
3390
+ justify-content: center;
3391
+ flex-shrink: 0;
3392
+ }
3393
+ .volt-callout__body {
3394
+ min-width: 0;
3395
+ flex: 1;
3396
+ }
3397
+
3398
+ /* src/shared/presentation/primitives/EmptyState/EmptyState.css */
3399
+ .empty-state-container {
3400
+ display: flex;
3401
+ flex-direction: column;
3402
+ align-items: center;
3403
+ justify-content: center;
3404
+ height: 100%;
3405
+ min-height: auto;
3406
+ }
3407
+ .empty-state-content {
3408
+ max-width: 320px;
3409
+ }
3410
+ .empty-state-icon {
3411
+ width: 56px;
3412
+ height: 56px;
3413
+ border-radius: var(--radius-lg);
3414
+ background: var(--color-surface-2);
3415
+ }
3416
+ .empty-state-live-region {
3417
+ position: absolute;
3418
+ width: 1px;
3419
+ height: 1px;
3420
+ padding: 0;
3421
+ margin: -1px;
3422
+ overflow: hidden;
3423
+ clip: rect(0, 0, 0, 0);
3424
+ white-space: nowrap;
3425
+ border: 0;
3426
+ }
3427
+ @media (max-width: 768px) {
3428
+ .empty-state-container {
3429
+ min-height: 300px;
3430
+ }
3431
+ .empty-state-content {
3432
+ max-width: 90%;
3433
+ }
3434
+ }
3435
+
3436
+ /* src/shared/presentation/primitives/Toast/Toast.css */
3437
+ .volt-toast {
3438
+ position: relative;
3439
+ width: 100%;
3440
+ max-width: 24rem;
3441
+ padding: 0.875rem 1rem;
3442
+ border-radius: var(--radius-lg);
3443
+ border-left: 3px solid var(--color-border-soft);
3444
+ box-shadow: var(--shadow-elevated);
3445
+ animation: volt-toast-in var(--duration-normal) var(--ease-standard);
3446
+ }
3447
+ .volt-toast--tone-brand {
3448
+ border-left-color: var(--color-brand-primary);
3449
+ }
3450
+ .volt-toast--tone-success {
3451
+ border-left-color: var(--status-success);
3452
+ }
3453
+ .volt-toast--tone-warning {
3454
+ border-left-color: var(--status-warning);
3455
+ }
3456
+ .volt-toast--tone-danger {
3457
+ border-left-color: var(--status-error);
3458
+ }
3459
+ .volt-toast--tone-info {
3460
+ border-left-color: var(--status-info);
3461
+ }
3462
+ .volt-toast__layout {
3463
+ min-width: 0;
3464
+ }
3465
+ .volt-toast__icon {
3466
+ margin-top: 0.0625rem;
3467
+ }
3468
+ .volt-toast__body {
3469
+ min-width: 0;
3470
+ flex: 1;
3471
+ }
3472
+ .volt-toast__actions {
3473
+ margin-top: 0.375rem;
3474
+ flex-wrap: wrap;
3475
+ }
3476
+ .volt-toast__dismiss {
3477
+ flex-shrink: 0;
3478
+ margin: -0.25rem -0.375rem 0 0;
3479
+ }
3480
+ @keyframes volt-toast-in {
3481
+ from {
3482
+ opacity: 0;
3483
+ transform: translateY(0.5rem);
3484
+ }
3485
+ to {
3486
+ opacity: 1;
3487
+ transform: translateY(0);
3488
+ }
3489
+ }
3490
+ @media (prefers-reduced-motion: reduce) {
3491
+ .volt-toast {
3492
+ animation: none;
3493
+ }
3494
+ }
3495
+
3496
+ /* src/shared/presentation/primitives/ThinkingDots/ThinkingDots.css */
3497
+ .volt-thinking-dots {
3498
+ display: inline-flex;
3499
+ align-items: center;
3500
+ gap: 0.25rem;
3501
+ }
3502
+ .volt-thinking-dots__dot {
3503
+ width: 6px;
3504
+ height: 6px;
3505
+ border-radius: var(--radius-full);
3506
+ background: var(--color-text-muted);
3507
+ opacity: 0.4;
3508
+ animation: volt-thinking-dot 1.2s ease-in-out infinite;
3509
+ }
3510
+ .volt-thinking-dots--sm .volt-thinking-dots__dot {
3511
+ width: 4px;
3512
+ height: 4px;
3513
+ }
3514
+ .volt-thinking-dots__dot:nth-child(2) {
3515
+ animation-delay: 0.15s;
3516
+ }
3517
+ .volt-thinking-dots__dot:nth-child(3) {
3518
+ animation-delay: 0.3s;
3519
+ }
3520
+ .volt-thinking-dots__dot:nth-child(4) {
3521
+ animation-delay: 0.45s;
3522
+ }
3523
+ @keyframes volt-thinking-dot {
3524
+ 0%, 60%, 100% {
3525
+ opacity: 0.4;
3526
+ transform: translateY(0);
3527
+ }
3528
+ 30% {
3529
+ opacity: 1;
3530
+ transform: translateY(-2px);
3531
+ }
3532
+ }
3533
+ @media (prefers-reduced-motion: reduce) {
3534
+ .volt-thinking-dots__dot {
3535
+ animation: none;
3536
+ opacity: 0.7;
3537
+ }
3538
+ }
3539
+
3540
+ /* src/shared/presentation/primitives/ProgressBar/ProgressBar.css */
3541
+ .volt-progress-root {
3542
+ display: flex;
3543
+ flex-direction: column;
3544
+ gap: 0.375rem;
3545
+ width: 100%;
3546
+ min-width: 0;
3547
+ }
3548
+ .volt-progress-header {
3549
+ width: 100%;
3550
+ }
3551
+ .volt-progress-value {
3552
+ font-variant-numeric: tabular-nums;
3553
+ flex-shrink: 0;
3554
+ }
3555
+ .volt-progress {
3556
+ --progress-fill: var(--color-brand-primary);
3557
+ --progress-value: 0%;
3558
+ position: relative;
3559
+ width: 100%;
3560
+ overflow: hidden;
3561
+ background-color: var(--color-surface-3);
3562
+ border-radius: var(--radius-full);
3563
+ }
3564
+ .volt-progress--size-sm {
3565
+ height: 4px;
3566
+ }
3567
+ .volt-progress--size-md {
3568
+ height: 8px;
3569
+ }
3570
+ .volt-progress-fill {
3571
+ height: 100%;
3572
+ width: var(--progress-value);
3573
+ background-color: var(--progress-fill);
3574
+ border-radius: inherit;
3575
+ transition: width var(--duration-normal) var(--ease-standard);
3576
+ }
3577
+ .volt-progress:focus-visible {
3578
+ outline: none;
3579
+ box-shadow: var(--focus-ring-shadow);
3580
+ }
3581
+ .volt-progress--indeterminate {
3582
+ background-color: var(--color-surface-2);
3583
+ }
3584
+ .volt-progress--indeterminate .volt-progress-fill {
3585
+ width: 40%;
3586
+ transition: none;
3587
+ animation: volt-progress-indeterminate 1.4s var(--ease-standard) infinite;
3588
+ }
3589
+ @keyframes volt-progress-indeterminate {
3590
+ 0% {
3591
+ transform: translateX(-100%);
3592
+ }
3593
+ 100% {
3594
+ transform: translateX(250%);
3595
+ }
3596
+ }
3597
+ @media (prefers-reduced-motion: reduce) {
3598
+ .volt-progress-fill {
3599
+ transition: none;
3600
+ }
3601
+ .volt-progress--indeterminate .volt-progress-fill {
3602
+ animation: none;
3603
+ width: 100%;
3604
+ opacity: 0.5;
3605
+ }
3606
+ }
3607
+
3608
+ /* src/shared/presentation/primitives/Meter/Meter.css */
3609
+ .volt-meter {
3610
+ width: 100%;
3611
+ min-width: 0;
3612
+ }
3613
+ .volt-meter-label {
3614
+ flex-shrink: 0;
3615
+ }
3616
+ .volt-meter-value {
3617
+ flex-shrink: 0;
3618
+ font-variant-numeric: tabular-nums;
3619
+ }
3620
+ .volt-meter-track {
3621
+ --progress-fill: var(--color-brand-primary);
3622
+ --progress-value: 0%;
3623
+ position: relative;
3624
+ flex: 1;
3625
+ min-width: 0;
3626
+ height: 6px;
3627
+ overflow: hidden;
3628
+ background-color: var(--color-surface-3);
3629
+ border-radius: var(--radius-full);
3630
+ }
3631
+ .volt-meter-fill {
3632
+ height: 100%;
3633
+ width: var(--progress-value);
3634
+ background-color: var(--progress-fill);
3635
+ border-radius: inherit;
3636
+ transition: width var(--duration-normal) var(--ease-standard);
3637
+ }
3638
+ .volt-meter-track:focus-visible {
3639
+ outline: none;
3640
+ box-shadow: var(--focus-ring-shadow);
3641
+ }
3642
+ @media (prefers-reduced-motion: reduce) {
3643
+ .volt-meter-fill {
3644
+ transition: none;
3645
+ }
3646
+ }
3647
+ /*# sourceMappingURL=index.css.map */