@dataengineeringformachinelearning/viking-ui 4.1.1 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2351 @@
1
+ @charset "UTF-8";
2
+ /*! Viking-UI Interactive Components — framework-agnostic CSS primitives.
3
+ * Load after design-tokens.css for Astro, Django, or any HTML project.
4
+ * Build: npm run build:viking-ui:package */
5
+ @font-face {
6
+ font-family: "Inter";
7
+ font-style: normal;
8
+ font-weight: 100 900;
9
+ font-display: swap;
10
+ src: url("fonts/inter/InterVariable.woff2") format("woff2 supports variations"), url("fonts/inter/InterVariable.woff2") format("woff2-variations");
11
+ }
12
+ @font-face {
13
+ font-family: "Inter";
14
+ font-style: italic;
15
+ font-weight: 100 900;
16
+ font-display: swap;
17
+ src: url("fonts/inter/InterVariable-Italic.woff2") format("woff2 supports variations"), url("fonts/inter/InterVariable-Italic.woff2") format("woff2-variations");
18
+ }
19
+ :root {
20
+ /* Touch targets — WCAG 2.5.5 / mobile-first minimum hit area */
21
+ --viking-touch-target-min: 44px;
22
+ --viking-touch-target-comfort: 44px;
23
+ /* Interactive state */
24
+ --viking-state-disabled-opacity: 0.48;
25
+ --viking-state-hover-lift: -1px;
26
+ --viking-state-active-scale: 0.985;
27
+ --viking-state-press-inset: inset 0 1px 2px rgba(0, 0, 0, 0.18);
28
+ --viking-shadow-hover: var(
29
+ --shadow-hover,
30
+ 0 8px 16px rgba(0, 0, 0, 0.14),
31
+ 0 4px 8px rgba(0, 0, 0, 0.1),
32
+ inset 0 1px 0 rgba(255, 255, 255, 0.06)
33
+ );
34
+ --viking-surface-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.06);
35
+ --viking-surface-recipe: var(--viking-surface) linear-gradient(180deg, rgba(255, 255, 255, 0.03) 0%, transparent 100%);
36
+ --viking-transition-interactive:
37
+ color var(--viking-duration) var(--viking-ease-default),
38
+ background-color var(--viking-duration) var(--viking-ease-default),
39
+ border-color var(--viking-duration) var(--viking-ease-default),
40
+ box-shadow var(--viking-duration) var(--viking-ease-default),
41
+ transform var(--viking-duration-fast) var(--viking-ease-default),
42
+ opacity var(--viking-duration-fast) var(--viking-ease-default);
43
+ --viking-transition-transform: transform var(--viking-duration-fast) var(--viking-ease-default);
44
+ }
45
+
46
+ /* Shared keyframes */
47
+ @keyframes viking-fade-in {
48
+ from {
49
+ opacity: 0;
50
+ }
51
+ to {
52
+ opacity: 1;
53
+ }
54
+ }
55
+ @keyframes viking-slide-up {
56
+ from {
57
+ opacity: 0;
58
+ transform: translateY(8px);
59
+ }
60
+ to {
61
+ opacity: 1;
62
+ transform: translateY(0);
63
+ }
64
+ }
65
+ @keyframes viking-slide-in-right {
66
+ from {
67
+ opacity: 0;
68
+ transform: translateX(16px);
69
+ }
70
+ to {
71
+ opacity: 1;
72
+ transform: translateX(0);
73
+ }
74
+ }
75
+ @keyframes viking-modal-in {
76
+ from {
77
+ opacity: 0;
78
+ transform: translateY(12px) scale(0.98);
79
+ }
80
+ to {
81
+ opacity: 1;
82
+ transform: translateY(0) scale(1);
83
+ }
84
+ }
85
+ @keyframes viking-backdrop-in {
86
+ from {
87
+ opacity: 0;
88
+ }
89
+ to {
90
+ opacity: 1;
91
+ }
92
+ }
93
+ @keyframes viking-shimmer {
94
+ from {
95
+ background-position: 120% 0;
96
+ }
97
+ to {
98
+ background-position: -80% 0;
99
+ }
100
+ }
101
+ @keyframes viking-pulse-soft {
102
+ 0%, 100% {
103
+ opacity: 1;
104
+ }
105
+ 50% {
106
+ opacity: 0.72;
107
+ }
108
+ }
109
+ @keyframes viking-shake {
110
+ 0%, 100% {
111
+ transform: translateX(0);
112
+ }
113
+ 20%, 60% {
114
+ transform: translateX(-4px);
115
+ }
116
+ 40%, 80% {
117
+ transform: translateX(4px);
118
+ }
119
+ }
120
+ @keyframes viking-tooltip-in {
121
+ from {
122
+ opacity: 0;
123
+ transform: translateY(4px) scale(0.96);
124
+ }
125
+ to {
126
+ opacity: 1;
127
+ transform: translateY(0) scale(1);
128
+ }
129
+ }
130
+ @keyframes viking-spin {
131
+ to {
132
+ transform: rotate(360deg);
133
+ }
134
+ }
135
+ /* Shared focus-ring utilities — use on interactive hosts without duplicating tokens */
136
+ .viking-focus-ring:focus-visible {
137
+ outline: var(--viking-ring-width) solid var(--viking-ring);
138
+ outline-offset: var(--viking-ring-offset);
139
+ }
140
+
141
+ .viking-focus-ring-inset:focus-visible {
142
+ outline: var(--viking-ring-width) solid var(--viking-ring);
143
+ outline-offset: calc(var(--viking-ring-offset) * -1);
144
+ }
145
+
146
+ /* Expand visual-only controls to touch-friendly hit areas without changing layout */
147
+ .viking-touch-target {
148
+ position: relative;
149
+ min-width: var(--viking-touch-target-min);
150
+ min-height: var(--viking-touch-target-min);
151
+ }
152
+
153
+ .viking-touch-target::before {
154
+ content: "";
155
+ position: absolute;
156
+ inset: 50%;
157
+ width: max(100%, var(--viking-touch-target-min));
158
+ height: max(100%, var(--viking-touch-target-min));
159
+ transform: translate(-50%, -50%);
160
+ }
161
+
162
+ @media (min-width: 768px) {
163
+ :root {
164
+ --viking-touch-target-comfort: 36px;
165
+ }
166
+ }
167
+ @media (prefers-reduced-motion: reduce) {
168
+ *,
169
+ ::before,
170
+ ::after {
171
+ animation-duration: 0.01ms !important;
172
+ animation-iteration-count: 1 !important;
173
+ transition-duration: 0.01ms !important;
174
+ }
175
+ }
176
+ .viking-heading {
177
+ margin: 0;
178
+ font-weight: var(--viking-font-weight-bold);
179
+ letter-spacing: var(--viking-letter-spacing-tight);
180
+ line-height: var(--viking-line-height-tight);
181
+ color: var(--viking-text);
182
+ }
183
+
184
+ .viking-heading-xl {
185
+ font-size: clamp(var(--viking-font-size-2xl), 4vw, var(--viking-font-size-4xl));
186
+ }
187
+
188
+ .viking-heading-lg {
189
+ font-size: var(--viking-font-size-xl);
190
+ }
191
+
192
+ .viking-heading-sm {
193
+ font-size: var(--viking-font-size-lg);
194
+ }
195
+
196
+ .viking-text {
197
+ margin: 0;
198
+ line-height: var(--viking-line-height-relaxed);
199
+ color: var(--viking-text);
200
+ }
201
+
202
+ .viking-text-muted {
203
+ margin: 0;
204
+ line-height: var(--viking-line-height-relaxed);
205
+ color: var(--viking-text-muted);
206
+ max-width: var(--viking-content-readable-max-width, 48rem);
207
+ }
208
+
209
+ .viking-label {
210
+ display: block;
211
+ font-size: var(--viking-font-size-xs);
212
+ font-weight: var(--viking-font-weight-semibold);
213
+ letter-spacing: var(--viking-letter-spacing-caps);
214
+ text-transform: uppercase;
215
+ color: var(--viking-text-muted);
216
+ }
217
+
218
+ .viking-metric {
219
+ display: block;
220
+ font-size: var(--viking-font-size-2xl);
221
+ font-weight: var(--viking-font-weight-bold);
222
+ font-variant-numeric: tabular-nums;
223
+ color: var(--viking-text);
224
+ }
225
+
226
+ .viking-badge {
227
+ display: inline-flex;
228
+ align-items: center;
229
+ gap: var(--viking-space-half);
230
+ padding: var(--viking-space-half) var(--viking-space-1);
231
+ font-size: var(--viking-font-size-xs);
232
+ font-weight: var(--viking-font-weight-semibold);
233
+ letter-spacing: var(--viking-letter-spacing-wide);
234
+ border-radius: var(--viking-radius-pill);
235
+ border: 1px solid var(--viking-border);
236
+ background: var(--viking-surface-alt);
237
+ color: var(--viking-text);
238
+ white-space: nowrap;
239
+ }
240
+
241
+ .viking-badge-accent {
242
+ background: var(--viking-accent);
243
+ border-color: color-mix(in srgb, var(--viking-accent) 80%, var(--viking-black));
244
+ color: var(--viking-accent-content);
245
+ }
246
+
247
+ .viking-badge-success {
248
+ background: color-mix(in srgb, var(--viking-success) 18%, var(--viking-surface));
249
+ border-color: color-mix(in srgb, var(--viking-success) 40%, transparent);
250
+ color: var(--viking-success);
251
+ }
252
+
253
+ .viking-badge-warning {
254
+ background: color-mix(in srgb, var(--viking-warning) 18%, var(--viking-surface));
255
+ border-color: color-mix(in srgb, var(--viking-warning) 40%, transparent);
256
+ color: var(--viking-warning);
257
+ }
258
+
259
+ .viking-badge-danger {
260
+ background: color-mix(in srgb, var(--viking-danger) 18%, var(--viking-surface));
261
+ border-color: color-mix(in srgb, var(--viking-danger) 40%, transparent);
262
+ color: var(--viking-danger);
263
+ }
264
+
265
+ .viking-badge-subtle {
266
+ background: var(--viking-surface-alt);
267
+ color: var(--viking-text-muted);
268
+ font-size: var(--viking-font-size-2xs);
269
+ }
270
+
271
+ .viking-callout-static {
272
+ padding: var(--viking-space-2);
273
+ border-radius: var(--viking-radius);
274
+ border: 1px solid var(--viking-border);
275
+ background: var(--viking-surface-alt);
276
+ }
277
+
278
+ .viking-callout-static strong {
279
+ display: block;
280
+ margin-bottom: var(--viking-space-half);
281
+ }
282
+
283
+ .viking-callout-static p {
284
+ margin: 0;
285
+ font-size: var(--viking-font-size-sm);
286
+ color: var(--viking-text-muted);
287
+ }
288
+
289
+ .viking-callout-info {
290
+ border-color: color-mix(in srgb, var(--viking-accent) 35%, var(--viking-border));
291
+ background: color-mix(in srgb, var(--viking-accent) 8%, var(--viking-surface));
292
+ }
293
+
294
+ .viking-callout-warning {
295
+ border-color: color-mix(in srgb, var(--viking-warning) 35%, var(--viking-border));
296
+ background: color-mix(in srgb, var(--viking-warning) 8%, var(--viking-surface));
297
+ }
298
+
299
+ .viking-callout-success {
300
+ border-color: color-mix(in srgb, var(--viking-success) 35%, var(--viking-border));
301
+ background: color-mix(in srgb, var(--viking-success) 8%, var(--viking-surface));
302
+ }
303
+
304
+ .viking-callout-danger {
305
+ border-color: color-mix(in srgb, var(--viking-danger) 35%, var(--viking-border));
306
+ background: color-mix(in srgb, var(--viking-danger) 8%, var(--viking-surface));
307
+ }
308
+
309
+ .viking-progress {
310
+ width: 100%;
311
+ height: var(--viking-space-1);
312
+ border-radius: var(--viking-radius-pill);
313
+ background: var(--viking-surface-alt);
314
+ overflow: hidden;
315
+ }
316
+
317
+ .viking-progress-bar {
318
+ height: 100%;
319
+ width: var(--viking-progress-value, 0%);
320
+ background: var(--viking-accent);
321
+ border-radius: inherit;
322
+ transition: width var(--viking-duration) var(--viking-ease-out);
323
+ }
324
+
325
+ .viking-progress-value-33,
326
+ .viking-bar-value-33 {
327
+ --viking-progress-value: 33%;
328
+ }
329
+
330
+ .viking-progress-value-72,
331
+ .viking-bar-value-72 {
332
+ --viking-progress-value: 72%;
333
+ }
334
+
335
+ .viking-progress-value-94,
336
+ .viking-bar-value-94 {
337
+ --viking-progress-value: 94%;
338
+ }
339
+
340
+ .viking-progress-indeterminate .viking-progress-bar {
341
+ width: 40%;
342
+ animation: viking-progress-slide 1.2s ease-in-out infinite;
343
+ }
344
+
345
+ @keyframes viking-progress-slide {
346
+ 0% {
347
+ transform: translateX(-100%);
348
+ }
349
+ 100% {
350
+ transform: translateX(350%);
351
+ }
352
+ }
353
+ .viking-skeleton-row {
354
+ display: flex;
355
+ align-items: center;
356
+ gap: var(--viking-space-2);
357
+ }
358
+
359
+ .viking-skeleton-lines {
360
+ flex: 1;
361
+ display: flex;
362
+ flex-direction: column;
363
+ gap: var(--viking-space-1);
364
+ }
365
+
366
+ .viking-skeleton {
367
+ background: linear-gradient(90deg, var(--viking-surface-alt) 25%, var(--viking-surface-raised) 50%, var(--viking-surface-alt) 75%);
368
+ background-size: 200% 100%;
369
+ animation: viking-shimmer 1.5s ease-in-out infinite;
370
+ border-radius: var(--viking-radius-sm);
371
+ }
372
+
373
+ .viking-skeleton-circle {
374
+ width: 3rem;
375
+ height: 3rem;
376
+ border-radius: 50%;
377
+ flex-shrink: 0;
378
+ }
379
+
380
+ .viking-skeleton-line {
381
+ height: 0.75rem;
382
+ }
383
+
384
+ .viking-skeleton-line-short {
385
+ width: 60%;
386
+ }
387
+
388
+ @keyframes viking-shimmer {
389
+ 0% {
390
+ background-position: 200% 0;
391
+ }
392
+ 100% {
393
+ background-position: -200% 0;
394
+ }
395
+ }
396
+ .viking-checkbox-label {
397
+ display: inline-flex;
398
+ align-items: center;
399
+ gap: var(--viking-space-1);
400
+ cursor: pointer;
401
+ font-size: var(--viking-font-size-sm);
402
+ min-height: var(--viking-touch-target-min, 44px);
403
+ }
404
+
405
+ .viking-checkbox-label input {
406
+ width: 1.125rem;
407
+ height: 1.125rem;
408
+ accent-color: var(--viking-accent);
409
+ }
410
+
411
+ .viking-select-native {
412
+ width: 100%;
413
+ min-height: var(--viking-control-height, 40px);
414
+ padding: 0 var(--viking-space-2);
415
+ border: 1px solid var(--viking-border);
416
+ border-radius: var(--viking-radius);
417
+ background: var(--viking-surface);
418
+ color: var(--viking-text);
419
+ font-family: inherit;
420
+ font-size: var(--viking-font-size-sm);
421
+ }
422
+
423
+ .viking-select-native:focus-visible {
424
+ outline: var(--viking-ring-width, 2px) solid var(--viking-ring);
425
+ outline-offset: var(--viking-ring-offset, 2px);
426
+ }
427
+
428
+ .viking-table-wrap {
429
+ overflow-x: auto;
430
+ width: 100%;
431
+ }
432
+
433
+ .viking-table {
434
+ width: 100%;
435
+ border-collapse: collapse;
436
+ font-size: var(--viking-font-size-sm);
437
+ }
438
+
439
+ .viking-table th,
440
+ .viking-table td {
441
+ padding: var(--viking-space-1) var(--viking-space-2);
442
+ text-align: left;
443
+ border-bottom: 1px solid var(--viking-border);
444
+ }
445
+
446
+ .viking-table th {
447
+ color: var(--viking-text-muted);
448
+ font-weight: var(--viking-font-weight-semibold);
449
+ }
450
+
451
+ .viking-tabs {
452
+ display: inline-flex;
453
+ gap: var(--viking-space-half);
454
+ padding: var(--viking-space-half);
455
+ border: 1px solid var(--viking-border);
456
+ border-radius: var(--viking-radius);
457
+ background: var(--viking-surface-alt);
458
+ }
459
+
460
+ .viking-tab {
461
+ padding: var(--viking-space-1) var(--viking-space-2);
462
+ border: none;
463
+ border-radius: var(--viking-radius-sm);
464
+ background: transparent;
465
+ color: var(--viking-text-muted);
466
+ font-size: var(--viking-font-size-sm);
467
+ font-weight: var(--viking-font-weight-medium);
468
+ cursor: pointer;
469
+ min-height: var(--viking-touch-target-min, 44px);
470
+ }
471
+
472
+ .viking-tab-active {
473
+ background: var(--viking-surface);
474
+ color: var(--viking-text);
475
+ box-shadow: var(--viking-shadow-xs);
476
+ }
477
+
478
+ .viking-tab:focus-visible {
479
+ outline: var(--viking-ring-width, 2px) solid var(--viking-ring);
480
+ outline-offset: var(--viking-ring-offset, 2px);
481
+ }
482
+
483
+ .viking-page-header-static {
484
+ display: flex;
485
+ flex-direction: column;
486
+ gap: var(--viking-space-2);
487
+ padding: var(--viking-space-4);
488
+ border: 1px solid var(--viking-border);
489
+ border-radius: var(--viking-radius-lg);
490
+ background: var(--viking-surface-recipe, var(--viking-surface));
491
+ box-shadow: var(--viking-shadow-md);
492
+ }
493
+
494
+ .viking-kbd-static {
495
+ display: inline-block;
496
+ font-family: inherit;
497
+ font-size: calc(var(--viking-font-size) * 0.75);
498
+ padding: 2px 6px;
499
+ border-radius: calc(var(--viking-radius) / 2);
500
+ border: 1px solid var(--viking-border);
501
+ background: var(--viking-surface-alt);
502
+ }
503
+
504
+ .viking-divider {
505
+ display: flex;
506
+ align-items: center;
507
+ gap: var(--viking-space-2);
508
+ color: var(--viking-text-muted);
509
+ font-size: var(--viking-font-size-xs);
510
+ }
511
+
512
+ .viking-divider::before,
513
+ .viking-divider::after {
514
+ content: "";
515
+ flex: 1;
516
+ height: 1px;
517
+ background: var(--viking-border);
518
+ }
519
+
520
+ .viking-demo-row {
521
+ display: flex;
522
+ flex-wrap: wrap;
523
+ align-items: center;
524
+ gap: var(--viking-space-2);
525
+ }
526
+
527
+ .viking-demo-row-stack {
528
+ flex-direction: column;
529
+ align-items: stretch;
530
+ }
531
+
532
+ .viking-breadcrumbs-static {
533
+ font-size: var(--viking-font-size-sm);
534
+ }
535
+
536
+ .viking-breadcrumbs-list {
537
+ display: flex;
538
+ flex-wrap: wrap;
539
+ align-items: center;
540
+ gap: var(--viking-space-1);
541
+ margin: 0;
542
+ padding: 0;
543
+ list-style: none;
544
+ }
545
+
546
+ .viking-breadcrumbs-list li:not(:last-child)::after {
547
+ content: "/";
548
+ margin-left: var(--viking-space-1);
549
+ color: var(--viking-text-muted);
550
+ }
551
+
552
+ .viking-breadcrumbs-list a {
553
+ color: var(--viking-accent);
554
+ text-decoration: none;
555
+ }
556
+
557
+ .viking-breadcrumbs-list a:hover {
558
+ text-decoration: underline;
559
+ }
560
+
561
+ .viking-pagination-static {
562
+ display: flex;
563
+ flex-wrap: wrap;
564
+ align-items: center;
565
+ gap: var(--viking-space-2);
566
+ }
567
+
568
+ .viking-switch-static {
569
+ display: inline-flex;
570
+ align-items: center;
571
+ gap: var(--viking-space-1);
572
+ cursor: pointer;
573
+ font-size: var(--viking-font-size-sm);
574
+ min-height: var(--viking-touch-target-min, 44px);
575
+ }
576
+
577
+ .viking-switch-static input {
578
+ width: 2.5rem;
579
+ height: 1.375rem;
580
+ accent-color: var(--viking-accent);
581
+ }
582
+
583
+ .viking-kanban-demo {
584
+ display: flex;
585
+ flex-wrap: wrap;
586
+ gap: var(--viking-space-2);
587
+ }
588
+
589
+ .viking-kanban-col {
590
+ flex: 1;
591
+ min-width: 10rem;
592
+ padding: var(--viking-space-2);
593
+ display: flex;
594
+ flex-direction: column;
595
+ gap: var(--viking-space-1);
596
+ }
597
+
598
+ .viking-kanban-card {
599
+ padding: var(--viking-space-1) var(--viking-space-2);
600
+ border: 1px solid var(--viking-border);
601
+ border-radius: var(--viking-radius-sm);
602
+ background: var(--viking-surface-alt);
603
+ font-size: var(--viking-font-size-sm);
604
+ }
605
+
606
+ .viking-uptime-demo {
607
+ display: flex;
608
+ flex-direction: column;
609
+ gap: var(--viking-space-1);
610
+ max-width: 20rem;
611
+ }
612
+
613
+ .viking-uptime-segments {
614
+ display: flex;
615
+ gap: 2px;
616
+ height: var(--viking-space-2);
617
+ }
618
+
619
+ .viking-uptime-seg {
620
+ flex: 1;
621
+ border-radius: 1px;
622
+ min-width: 4px;
623
+ }
624
+
625
+ .viking-uptime-up {
626
+ background: var(--viking-success);
627
+ }
628
+
629
+ .viking-uptime-degraded {
630
+ background: var(--viking-warning);
631
+ }
632
+
633
+ .viking-uptime-down {
634
+ background: var(--viking-danger);
635
+ }
636
+
637
+ .viking-sheet-demo {
638
+ max-width: 20rem;
639
+ padding: var(--viking-space-2);
640
+ }
641
+
642
+ .viking-wizard-demo {
643
+ max-width: 24rem;
644
+ padding: var(--viking-space-2);
645
+ display: flex;
646
+ flex-direction: column;
647
+ gap: var(--viking-space-2);
648
+ }
649
+
650
+ @media (prefers-reduced-motion: reduce) {
651
+ .viking-skeleton,
652
+ .viking-progress-indeterminate .viking-progress-bar {
653
+ animation: none;
654
+ }
655
+ }
656
+ .viking-hud-panel {
657
+ display: flex;
658
+ flex-direction: column;
659
+ gap: var(--viking-space-1);
660
+ padding: var(--viking-card-padding);
661
+ border: 1px solid var(--viking-border-strong);
662
+ border-radius: var(--viking-radius-lg);
663
+ background: var(--viking-surface-recipe, var(--viking-surface));
664
+ box-shadow: var(--viking-shadow-md);
665
+ max-width: 20rem;
666
+ }
667
+
668
+ .viking-avatar-static {
669
+ display: inline-flex;
670
+ align-items: center;
671
+ justify-content: center;
672
+ width: 2.5rem;
673
+ height: 2.5rem;
674
+ border-radius: 50%;
675
+ border: 1px solid var(--viking-border);
676
+ background: var(--viking-surface-alt);
677
+ font-size: var(--viking-font-size-xs);
678
+ font-weight: var(--viking-font-weight-bold);
679
+ color: var(--viking-text);
680
+ }
681
+
682
+ .viking-avatar-accent {
683
+ background: var(--viking-accent-soft);
684
+ border-color: var(--viking-accent);
685
+ color: var(--viking-accent);
686
+ }
687
+
688
+ .viking-empty-state-static {
689
+ display: flex;
690
+ flex-direction: column;
691
+ align-items: center;
692
+ gap: var(--viking-space-2);
693
+ padding: var(--viking-space-4);
694
+ text-align: center;
695
+ border: 1px dashed var(--viking-border);
696
+ border-radius: var(--viking-radius-lg);
697
+ max-width: 24rem;
698
+ }
699
+
700
+ .viking-spinner-static {
701
+ display: inline-block;
702
+ width: 1.25rem;
703
+ height: 1.25rem;
704
+ border: 2px solid var(--viking-border);
705
+ border-top-color: var(--viking-accent);
706
+ border-radius: 50%;
707
+ animation: viking-spinner-spin 0.8s linear infinite;
708
+ }
709
+
710
+ @keyframes viking-spinner-spin {
711
+ to {
712
+ transform: rotate(360deg);
713
+ }
714
+ }
715
+ .viking-loading-overlay-demo {
716
+ display: flex;
717
+ flex-direction: column;
718
+ align-items: center;
719
+ gap: var(--viking-space-2);
720
+ padding: var(--viking-space-3);
721
+ max-width: 20rem;
722
+ }
723
+
724
+ .viking-separator-static {
725
+ border: 0;
726
+ border-top: 1px solid var(--viking-border);
727
+ margin: var(--viking-space-1) 0;
728
+ }
729
+
730
+ .viking-icon-badge-static {
731
+ display: inline-flex;
732
+ align-items: center;
733
+ justify-content: center;
734
+ width: var(--viking-icon-badge-size, var(--viking-space-6));
735
+ height: var(--viking-icon-badge-size, var(--viking-space-6));
736
+ padding: var(--viking-icon-badge-padding, var(--viking-space-half));
737
+ box-sizing: border-box;
738
+ border-radius: var(--viking-radius-lg);
739
+ border: none;
740
+ background: var(--viking-accent-soft);
741
+ color: var(--viking-accent-strong);
742
+ box-shadow: var(--viking-shadow-sm);
743
+ font-size: var(--viking-font-size-sm);
744
+ }
745
+
746
+ .viking-textarea-static {
747
+ width: 100%;
748
+ min-height: 5rem;
749
+ padding: var(--viking-space-2);
750
+ border: 1px solid var(--viking-border);
751
+ border-radius: var(--viking-radius);
752
+ background: var(--viking-surface);
753
+ color: var(--viking-text);
754
+ font-family: inherit;
755
+ font-size: var(--viking-font-size-sm);
756
+ resize: vertical;
757
+ }
758
+
759
+ .viking-textarea-static:focus-visible {
760
+ outline: var(--viking-ring-width) solid var(--viking-ring);
761
+ outline-offset: var(--viking-ring-offset);
762
+ }
763
+
764
+ .viking-radio-static {
765
+ border: none;
766
+ padding: 0;
767
+ margin: 0;
768
+ display: flex;
769
+ flex-direction: column;
770
+ gap: var(--viking-space-1);
771
+ }
772
+
773
+ .viking-radio-static label {
774
+ display: inline-flex;
775
+ align-items: center;
776
+ gap: var(--viking-space-1);
777
+ font-size: var(--viking-font-size-sm);
778
+ min-height: var(--viking-touch-target-min, 44px);
779
+ }
780
+
781
+ .viking-slider-static {
782
+ width: 100%;
783
+ accent-color: var(--viking-accent);
784
+ }
785
+
786
+ .viking-otp-static {
787
+ display: flex;
788
+ gap: var(--viking-space-1);
789
+ }
790
+
791
+ .viking-otp-static input {
792
+ width: 2.5rem;
793
+ height: 2.5rem;
794
+ text-align: center;
795
+ border: 1px solid var(--viking-border);
796
+ border-radius: var(--viking-radius);
797
+ background: var(--viking-surface);
798
+ color: var(--viking-text);
799
+ font-size: var(--viking-font-size-lg);
800
+ }
801
+
802
+ .viking-file-upload-static {
803
+ display: flex;
804
+ flex-direction: column;
805
+ align-items: center;
806
+ gap: var(--viking-space-2);
807
+ text-align: center;
808
+ }
809
+
810
+ .viking-pillbox-static {
811
+ display: flex;
812
+ flex-wrap: wrap;
813
+ align-items: center;
814
+ gap: var(--viking-space-1);
815
+ padding: var(--viking-space-1);
816
+ border: 1px solid var(--viking-border);
817
+ border-radius: var(--viking-radius);
818
+ background: var(--viking-surface-alt);
819
+ }
820
+
821
+ .viking-gauge-demo,
822
+ .viking-ring-gauge-demo {
823
+ display: flex;
824
+ flex-direction: column;
825
+ align-items: center;
826
+ gap: var(--viking-space-1);
827
+ }
828
+
829
+ .viking-chart-empty-static {
830
+ text-align: center;
831
+ }
832
+
833
+ .viking-status-metric-row {
834
+ display: flex;
835
+ flex-wrap: wrap;
836
+ align-items: center;
837
+ gap: var(--viking-space-2);
838
+ padding: var(--viking-space-2);
839
+ border: 1px solid var(--viking-border);
840
+ border-radius: var(--viking-radius);
841
+ background: var(--viking-surface-alt);
842
+ }
843
+
844
+ .viking-bar-static {
845
+ display: flex;
846
+ flex-direction: column;
847
+ gap: var(--viking-space-half);
848
+ max-width: 16rem;
849
+ }
850
+
851
+ .viking-bar-track {
852
+ width: 100%;
853
+ height: var(--viking-space-1);
854
+ border-radius: var(--viking-radius-pill);
855
+ background: var(--viking-surface-alt);
856
+ overflow: hidden;
857
+ }
858
+
859
+ .viking-bar-fill {
860
+ height: 100%;
861
+ width: var(--viking-progress-value, 0%);
862
+ background: var(--viking-accent);
863
+ border-radius: inherit;
864
+ }
865
+
866
+ .viking-nav-menu-static,
867
+ .viking-sidebar-nav-static {
868
+ display: flex;
869
+ flex-direction: column;
870
+ gap: var(--viking-space-half);
871
+ max-width: 14rem;
872
+ }
873
+
874
+ .viking-nav-item-static,
875
+ .viking-sidebar-nav-item {
876
+ display: block;
877
+ padding: var(--viking-space-1) var(--viking-space-2);
878
+ border-radius: var(--viking-radius-sm);
879
+ color: var(--viking-text-muted);
880
+ text-decoration: none;
881
+ font-size: var(--viking-font-size-sm);
882
+ }
883
+
884
+ .viking-nav-item-static.is-active,
885
+ .viking-sidebar-nav-item.is-active {
886
+ background: var(--viking-accent-soft);
887
+ color: var(--viking-accent);
888
+ font-weight: var(--viking-font-weight-semibold);
889
+ }
890
+
891
+ .viking-menubar-static {
892
+ display: inline-flex;
893
+ gap: var(--viking-space-half);
894
+ padding: var(--viking-space-half);
895
+ border: 1px solid var(--viking-border);
896
+ border-radius: var(--viking-radius);
897
+ background: var(--viking-surface-alt);
898
+ }
899
+
900
+ .viking-command-static {
901
+ display: flex;
902
+ flex-direction: column;
903
+ gap: var(--viking-space-1);
904
+ }
905
+
906
+ .viking-accordion-static {
907
+ padding: var(--viking-space-2);
908
+ border: 1px solid var(--viking-border);
909
+ border-radius: var(--viking-radius);
910
+ background: var(--viking-surface-alt);
911
+ }
912
+
913
+ .viking-accordion-static summary {
914
+ cursor: pointer;
915
+ list-style: none;
916
+ }
917
+
918
+ .viking-accordion-static summary::-webkit-details-marker {
919
+ display: none;
920
+ }
921
+
922
+ .viking-timeline-static {
923
+ margin: 0;
924
+ padding: 0 0 0 var(--viking-space-3);
925
+ border-left: 2px solid var(--viking-border);
926
+ list-style: none;
927
+ display: flex;
928
+ flex-direction: column;
929
+ gap: var(--viking-space-2);
930
+ }
931
+
932
+ .viking-toggle-group-static {
933
+ display: inline-flex;
934
+ gap: var(--viking-space-half);
935
+ padding: var(--viking-space-half);
936
+ border: 1px solid var(--viking-border);
937
+ border-radius: var(--viking-radius);
938
+ background: var(--viking-surface-alt);
939
+ }
940
+
941
+ .viking-fab-static {
942
+ position: absolute;
943
+ right: var(--viking-space-2);
944
+ bottom: var(--viking-space-2);
945
+ display: inline-flex;
946
+ align-items: center;
947
+ justify-content: center;
948
+ width: 3rem;
949
+ height: 3rem;
950
+ border: 1px solid var(--viking-border-strong);
951
+ border-radius: 50%;
952
+ background: var(--viking-accent);
953
+ color: var(--viking-accent-content);
954
+ font-size: var(--viking-font-size-xl);
955
+ cursor: pointer;
956
+ box-shadow: var(--viking-shadow-md);
957
+ }
958
+
959
+ .viking-scroll-area-static {
960
+ max-height: 8rem;
961
+ overflow-y: auto;
962
+ padding: var(--viking-space-2);
963
+ border: 1px solid var(--viking-border);
964
+ border-radius: var(--viking-radius);
965
+ background: var(--viking-surface-alt);
966
+ }
967
+
968
+ .viking-button-group-static {
969
+ display: inline-flex;
970
+ flex-wrap: wrap;
971
+ gap: var(--viking-space-half);
972
+ }
973
+
974
+ .viking-icon-color-accent {
975
+ color: var(--viking-accent);
976
+ }
977
+
978
+ .viking-icon-color-muted {
979
+ color: var(--viking-text-muted);
980
+ }
981
+
982
+ .viking-whitepaper-cta-static {
983
+ display: flex;
984
+ flex-direction: column;
985
+ gap: var(--viking-space-2);
986
+ max-width: 24rem;
987
+ }
988
+
989
+ .viking-search-result-static {
990
+ display: flex;
991
+ align-items: center;
992
+ gap: var(--viking-space-half);
993
+ width: 100%;
994
+ padding: var(--viking-space-1) var(--viking-space-2);
995
+ border-radius: var(--viking-radius);
996
+ border: 1px solid transparent;
997
+ background: transparent;
998
+ cursor: default;
999
+ text-decoration: none;
1000
+ text-align: left;
1001
+ color: inherit;
1002
+ transition: var(--viking-transition-interactive);
1003
+ }
1004
+
1005
+ .viking-search-result-static:hover {
1006
+ background: color-mix(in srgb, var(--viking-accent) 5%, transparent);
1007
+ border-color: color-mix(in srgb, var(--viking-accent) 30%, transparent);
1008
+ }
1009
+
1010
+ .viking-search-result-title {
1011
+ font-size: var(--viking-font-size-sm);
1012
+ font-weight: var(--viking-font-weight-semibold);
1013
+ color: var(--viking-text);
1014
+ }
1015
+
1016
+ .viking-search-result-snippet {
1017
+ font-size: var(--viking-font-size-xs);
1018
+ color: var(--viking-text-muted);
1019
+ }
1020
+
1021
+ @media (prefers-reduced-motion: reduce) {
1022
+ .viking-spinner-static {
1023
+ animation: none;
1024
+ }
1025
+ }
1026
+ .viking-btn,
1027
+ a.viking-btn,
1028
+ button.viking-btn {
1029
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1030
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1031
+ --viking-btn-press-shadow:
1032
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1033
+ var(--viking-shadow-xs);
1034
+ font-family: var(--viking-font-family);
1035
+ font-size: var(--viking-font-size-ui);
1036
+ font-weight: var(--viking-font-weight-semibold);
1037
+ letter-spacing: var(--viking-letter-spacing-wide);
1038
+ line-height: var(--viking-line-height-snug);
1039
+ display: inline-flex;
1040
+ align-items: center;
1041
+ justify-content: center;
1042
+ gap: var(--viking-space-1-5);
1043
+ min-height: var(--viking-control-height);
1044
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1045
+ border-radius: var(--viking-radius-md);
1046
+ border: 1px solid transparent;
1047
+ cursor: pointer;
1048
+ text-decoration: none;
1049
+ transition: var(--viking-transition-interactive);
1050
+ width: auto;
1051
+ min-width: var(--viking-btn-min-width, 120px);
1052
+ white-space: nowrap;
1053
+ position: relative;
1054
+ background-clip: padding-box;
1055
+ isolation: isolate;
1056
+ user-select: none;
1057
+ -webkit-tap-highlight-color: transparent;
1058
+ overflow: hidden;
1059
+ box-shadow: var(--viking-btn-depth-shadow);
1060
+ }
1061
+ .viking-btn:focus-visible,
1062
+ a.viking-btn:focus-visible,
1063
+ button.viking-btn:focus-visible {
1064
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1065
+ outline-offset: var(--viking-ring-offset);
1066
+ z-index: 1;
1067
+ }
1068
+ .viking-btn::before,
1069
+ a.viking-btn::before,
1070
+ button.viking-btn::before {
1071
+ content: "";
1072
+ position: absolute;
1073
+ inset: 1px 1px auto 1px;
1074
+ height: 1px;
1075
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1076
+ pointer-events: none;
1077
+ opacity: 0.88;
1078
+ transition: var(--viking-transition-interactive);
1079
+ }
1080
+ .viking-btn::after,
1081
+ a.viking-btn::after,
1082
+ button.viking-btn::after {
1083
+ content: "";
1084
+ position: absolute;
1085
+ inset: auto 0 0 0;
1086
+ height: 1px;
1087
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1088
+ pointer-events: none;
1089
+ opacity: 0.45;
1090
+ transition: var(--viking-transition-interactive);
1091
+ }
1092
+ .viking-btn:disabled, .viking-btn[aria-busy=true],
1093
+ a.viking-btn:disabled,
1094
+ a.viking-btn[aria-busy=true],
1095
+ button.viking-btn:disabled,
1096
+ button.viking-btn[aria-busy=true] {
1097
+ opacity: var(--viking-state-disabled-opacity);
1098
+ cursor: not-allowed;
1099
+ transform: none !important;
1100
+ box-shadow: none !important;
1101
+ }
1102
+ .viking-btn[aria-busy=true]::before, .viking-btn[aria-busy=true] .viking-btn-label,
1103
+ a.viking-btn[aria-busy=true]::before,
1104
+ a.viking-btn[aria-busy=true] .viking-btn-label,
1105
+ button.viking-btn[aria-busy=true]::before,
1106
+ button.viking-btn[aria-busy=true] .viking-btn-label {
1107
+ opacity: 0.78;
1108
+ transform: translateY(1px);
1109
+ }
1110
+ .viking-btn[aria-busy=true],
1111
+ a.viking-btn[aria-busy=true],
1112
+ button.viking-btn[aria-busy=true] {
1113
+ cursor: wait;
1114
+ }
1115
+ .viking-btn viking-icon,
1116
+ .viking-btn .viking-icon,
1117
+ .viking-btn [data-viking-icon],
1118
+ a.viking-btn viking-icon,
1119
+ a.viking-btn .viking-icon,
1120
+ a.viking-btn [data-viking-icon],
1121
+ button.viking-btn viking-icon,
1122
+ button.viking-btn .viking-icon,
1123
+ button.viking-btn [data-viking-icon] {
1124
+ flex-shrink: 0;
1125
+ display: inline-flex;
1126
+ align-items: center;
1127
+ justify-content: center;
1128
+ width: var(--viking-icon-size-md);
1129
+ height: var(--viking-icon-size-md);
1130
+ line-height: 1;
1131
+ pointer-events: none;
1132
+ flex: 0 0 auto;
1133
+ margin-block: calc(var(--viking-space-half) * -1);
1134
+ }
1135
+ .viking-btn .viking-btn-label,
1136
+ a.viking-btn .viking-btn-label,
1137
+ button.viking-btn .viking-btn-label {
1138
+ display: inline-flex;
1139
+ align-items: center;
1140
+ gap: var(--viking-space-1);
1141
+ line-height: 1.2;
1142
+ min-width: 0;
1143
+ justify-content: center;
1144
+ text-align: center;
1145
+ white-space: nowrap;
1146
+ }
1147
+
1148
+ .viking-btn-primary,
1149
+ a.viking-btn-primary,
1150
+ button.viking-btn-primary {
1151
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1152
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1153
+ --viking-btn-press-shadow:
1154
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1155
+ var(--viking-shadow-xs);
1156
+ font-family: var(--viking-font-family);
1157
+ font-size: var(--viking-font-size-ui);
1158
+ font-weight: var(--viking-font-weight-semibold);
1159
+ letter-spacing: var(--viking-letter-spacing-wide);
1160
+ line-height: var(--viking-line-height-snug);
1161
+ display: inline-flex;
1162
+ align-items: center;
1163
+ justify-content: center;
1164
+ gap: var(--viking-space-1-5);
1165
+ min-height: var(--viking-control-height);
1166
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1167
+ border-radius: var(--viking-radius-md);
1168
+ border: 1px solid transparent;
1169
+ cursor: pointer;
1170
+ text-decoration: none;
1171
+ transition: var(--viking-transition-interactive);
1172
+ width: auto;
1173
+ min-width: var(--viking-btn-min-width, 120px);
1174
+ white-space: nowrap;
1175
+ position: relative;
1176
+ background-clip: padding-box;
1177
+ isolation: isolate;
1178
+ user-select: none;
1179
+ -webkit-tap-highlight-color: transparent;
1180
+ overflow: hidden;
1181
+ box-shadow: var(--viking-btn-depth-shadow);
1182
+ }
1183
+ .viking-btn-primary:focus-visible,
1184
+ a.viking-btn-primary:focus-visible,
1185
+ button.viking-btn-primary:focus-visible {
1186
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1187
+ outline-offset: var(--viking-ring-offset);
1188
+ z-index: 1;
1189
+ }
1190
+ .viking-btn-primary::before,
1191
+ a.viking-btn-primary::before,
1192
+ button.viking-btn-primary::before {
1193
+ content: "";
1194
+ position: absolute;
1195
+ inset: 1px 1px auto 1px;
1196
+ height: 1px;
1197
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1198
+ pointer-events: none;
1199
+ opacity: 0.88;
1200
+ transition: var(--viking-transition-interactive);
1201
+ }
1202
+ .viking-btn-primary::after,
1203
+ a.viking-btn-primary::after,
1204
+ button.viking-btn-primary::after {
1205
+ content: "";
1206
+ position: absolute;
1207
+ inset: auto 0 0 0;
1208
+ height: 1px;
1209
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1210
+ pointer-events: none;
1211
+ opacity: 0.45;
1212
+ transition: var(--viking-transition-interactive);
1213
+ }
1214
+ .viking-btn-primary:disabled, .viking-btn-primary[aria-busy=true],
1215
+ a.viking-btn-primary:disabled,
1216
+ a.viking-btn-primary[aria-busy=true],
1217
+ button.viking-btn-primary:disabled,
1218
+ button.viking-btn-primary[aria-busy=true] {
1219
+ opacity: var(--viking-state-disabled-opacity);
1220
+ cursor: not-allowed;
1221
+ transform: none !important;
1222
+ box-shadow: none !important;
1223
+ }
1224
+ .viking-btn-primary[aria-busy=true]::before, .viking-btn-primary[aria-busy=true] .viking-btn-label,
1225
+ a.viking-btn-primary[aria-busy=true]::before,
1226
+ a.viking-btn-primary[aria-busy=true] .viking-btn-label,
1227
+ button.viking-btn-primary[aria-busy=true]::before,
1228
+ button.viking-btn-primary[aria-busy=true] .viking-btn-label {
1229
+ opacity: 0.78;
1230
+ transform: translateY(1px);
1231
+ }
1232
+ .viking-btn-primary[aria-busy=true],
1233
+ a.viking-btn-primary[aria-busy=true],
1234
+ button.viking-btn-primary[aria-busy=true] {
1235
+ cursor: wait;
1236
+ }
1237
+ .viking-btn-primary viking-icon,
1238
+ .viking-btn-primary .viking-icon,
1239
+ .viking-btn-primary [data-viking-icon],
1240
+ a.viking-btn-primary viking-icon,
1241
+ a.viking-btn-primary .viking-icon,
1242
+ a.viking-btn-primary [data-viking-icon],
1243
+ button.viking-btn-primary viking-icon,
1244
+ button.viking-btn-primary .viking-icon,
1245
+ button.viking-btn-primary [data-viking-icon] {
1246
+ flex-shrink: 0;
1247
+ display: inline-flex;
1248
+ align-items: center;
1249
+ justify-content: center;
1250
+ width: var(--viking-icon-size-md);
1251
+ height: var(--viking-icon-size-md);
1252
+ line-height: 1;
1253
+ pointer-events: none;
1254
+ flex: 0 0 auto;
1255
+ margin-block: calc(var(--viking-space-half) * -1);
1256
+ }
1257
+ .viking-btn-primary .viking-btn-label,
1258
+ a.viking-btn-primary .viking-btn-label,
1259
+ button.viking-btn-primary .viking-btn-label {
1260
+ display: inline-flex;
1261
+ align-items: center;
1262
+ gap: var(--viking-space-1);
1263
+ line-height: 1.2;
1264
+ min-width: 0;
1265
+ justify-content: center;
1266
+ text-align: center;
1267
+ white-space: nowrap;
1268
+ }
1269
+ .viking-btn-primary,
1270
+ a.viking-btn-primary,
1271
+ button.viking-btn-primary {
1272
+ background: var(--viking-accent);
1273
+ color: var(--viking-accent-content);
1274
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
1275
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 12%, transparent);
1276
+ }
1277
+ .viking-btn-primary:hover:not(:disabled):not([aria-busy=true]),
1278
+ a.viking-btn-primary:hover:not(:disabled):not([aria-busy=true]),
1279
+ button.viking-btn-primary:hover:not(:disabled):not([aria-busy=true]) {
1280
+ background: var(--viking-accent-hover);
1281
+ border-color: var(--viking-accent-hover);
1282
+ color: var(--viking-accent-content);
1283
+ box-shadow: var(--viking-btn-hover-shadow);
1284
+ transform: translateY(var(--viking-state-hover-lift));
1285
+ }
1286
+ .viking-btn-primary:active:not(:disabled):not([aria-busy=true]),
1287
+ a.viking-btn-primary:active:not(:disabled):not([aria-busy=true]),
1288
+ button.viking-btn-primary:active:not(:disabled):not([aria-busy=true]) {
1289
+ transform: translateY(0) scale(var(--viking-state-active-scale));
1290
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
1291
+ box-shadow: var(--viking-btn-press-shadow);
1292
+ }
1293
+
1294
+ .viking-btn-secondary,
1295
+ a.viking-btn-secondary,
1296
+ button.viking-btn-secondary {
1297
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1298
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1299
+ --viking-btn-press-shadow:
1300
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1301
+ var(--viking-shadow-xs);
1302
+ font-family: var(--viking-font-family);
1303
+ font-size: var(--viking-font-size-ui);
1304
+ font-weight: var(--viking-font-weight-semibold);
1305
+ letter-spacing: var(--viking-letter-spacing-wide);
1306
+ line-height: var(--viking-line-height-snug);
1307
+ display: inline-flex;
1308
+ align-items: center;
1309
+ justify-content: center;
1310
+ gap: var(--viking-space-1-5);
1311
+ min-height: var(--viking-control-height);
1312
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1313
+ border-radius: var(--viking-radius-md);
1314
+ border: 1px solid transparent;
1315
+ cursor: pointer;
1316
+ text-decoration: none;
1317
+ transition: var(--viking-transition-interactive);
1318
+ width: auto;
1319
+ min-width: var(--viking-btn-min-width, 120px);
1320
+ white-space: nowrap;
1321
+ position: relative;
1322
+ background-clip: padding-box;
1323
+ isolation: isolate;
1324
+ user-select: none;
1325
+ -webkit-tap-highlight-color: transparent;
1326
+ overflow: hidden;
1327
+ box-shadow: var(--viking-btn-depth-shadow);
1328
+ }
1329
+ .viking-btn-secondary:focus-visible,
1330
+ a.viking-btn-secondary:focus-visible,
1331
+ button.viking-btn-secondary:focus-visible {
1332
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1333
+ outline-offset: var(--viking-ring-offset);
1334
+ z-index: 1;
1335
+ }
1336
+ .viking-btn-secondary::before,
1337
+ a.viking-btn-secondary::before,
1338
+ button.viking-btn-secondary::before {
1339
+ content: "";
1340
+ position: absolute;
1341
+ inset: 1px 1px auto 1px;
1342
+ height: 1px;
1343
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1344
+ pointer-events: none;
1345
+ opacity: 0.88;
1346
+ transition: var(--viking-transition-interactive);
1347
+ }
1348
+ .viking-btn-secondary::after,
1349
+ a.viking-btn-secondary::after,
1350
+ button.viking-btn-secondary::after {
1351
+ content: "";
1352
+ position: absolute;
1353
+ inset: auto 0 0 0;
1354
+ height: 1px;
1355
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1356
+ pointer-events: none;
1357
+ opacity: 0.45;
1358
+ transition: var(--viking-transition-interactive);
1359
+ }
1360
+ .viking-btn-secondary:disabled, .viking-btn-secondary[aria-busy=true],
1361
+ a.viking-btn-secondary:disabled,
1362
+ a.viking-btn-secondary[aria-busy=true],
1363
+ button.viking-btn-secondary:disabled,
1364
+ button.viking-btn-secondary[aria-busy=true] {
1365
+ opacity: var(--viking-state-disabled-opacity);
1366
+ cursor: not-allowed;
1367
+ transform: none !important;
1368
+ box-shadow: none !important;
1369
+ }
1370
+ .viking-btn-secondary[aria-busy=true]::before, .viking-btn-secondary[aria-busy=true] .viking-btn-label,
1371
+ a.viking-btn-secondary[aria-busy=true]::before,
1372
+ a.viking-btn-secondary[aria-busy=true] .viking-btn-label,
1373
+ button.viking-btn-secondary[aria-busy=true]::before,
1374
+ button.viking-btn-secondary[aria-busy=true] .viking-btn-label {
1375
+ opacity: 0.78;
1376
+ transform: translateY(1px);
1377
+ }
1378
+ .viking-btn-secondary[aria-busy=true],
1379
+ a.viking-btn-secondary[aria-busy=true],
1380
+ button.viking-btn-secondary[aria-busy=true] {
1381
+ cursor: wait;
1382
+ }
1383
+ .viking-btn-secondary viking-icon,
1384
+ .viking-btn-secondary .viking-icon,
1385
+ .viking-btn-secondary [data-viking-icon],
1386
+ a.viking-btn-secondary viking-icon,
1387
+ a.viking-btn-secondary .viking-icon,
1388
+ a.viking-btn-secondary [data-viking-icon],
1389
+ button.viking-btn-secondary viking-icon,
1390
+ button.viking-btn-secondary .viking-icon,
1391
+ button.viking-btn-secondary [data-viking-icon] {
1392
+ flex-shrink: 0;
1393
+ display: inline-flex;
1394
+ align-items: center;
1395
+ justify-content: center;
1396
+ width: var(--viking-icon-size-md);
1397
+ height: var(--viking-icon-size-md);
1398
+ line-height: 1;
1399
+ pointer-events: none;
1400
+ flex: 0 0 auto;
1401
+ margin-block: calc(var(--viking-space-half) * -1);
1402
+ }
1403
+ .viking-btn-secondary .viking-btn-label,
1404
+ a.viking-btn-secondary .viking-btn-label,
1405
+ button.viking-btn-secondary .viking-btn-label {
1406
+ display: inline-flex;
1407
+ align-items: center;
1408
+ gap: var(--viking-space-1);
1409
+ line-height: 1.2;
1410
+ min-width: 0;
1411
+ justify-content: center;
1412
+ text-align: center;
1413
+ white-space: nowrap;
1414
+ }
1415
+ .viking-btn-secondary,
1416
+ a.viking-btn-secondary,
1417
+ button.viking-btn-secondary {
1418
+ background: var(--viking-accent-secondary);
1419
+ color: var(--viking-accent-secondary-content);
1420
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
1421
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 10%, transparent);
1422
+ }
1423
+ .viking-btn-secondary:hover:not(:disabled):not([aria-busy=true]),
1424
+ a.viking-btn-secondary:hover:not(:disabled):not([aria-busy=true]),
1425
+ button.viking-btn-secondary:hover:not(:disabled):not([aria-busy=true]) {
1426
+ background: var(--viking-accent-secondary-hover);
1427
+ border-color: var(--viking-accent-secondary-hover);
1428
+ color: var(--viking-accent-secondary-content);
1429
+ box-shadow: var(--viking-btn-hover-shadow);
1430
+ transform: translateY(var(--viking-state-hover-lift));
1431
+ }
1432
+ .viking-btn-secondary:active:not(:disabled):not([aria-busy=true]),
1433
+ a.viking-btn-secondary:active:not(:disabled):not([aria-busy=true]),
1434
+ button.viking-btn-secondary:active:not(:disabled):not([aria-busy=true]) {
1435
+ transform: translateY(0) scale(var(--viking-state-active-scale));
1436
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
1437
+ box-shadow: var(--viking-btn-press-shadow);
1438
+ }
1439
+
1440
+ .viking-btn-outline,
1441
+ a.viking-btn-outline,
1442
+ button.viking-btn-outline {
1443
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1444
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1445
+ --viking-btn-press-shadow:
1446
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1447
+ var(--viking-shadow-xs);
1448
+ font-family: var(--viking-font-family);
1449
+ font-size: var(--viking-font-size-ui);
1450
+ font-weight: var(--viking-font-weight-semibold);
1451
+ letter-spacing: var(--viking-letter-spacing-wide);
1452
+ line-height: var(--viking-line-height-snug);
1453
+ display: inline-flex;
1454
+ align-items: center;
1455
+ justify-content: center;
1456
+ gap: var(--viking-space-1-5);
1457
+ min-height: var(--viking-control-height);
1458
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1459
+ border-radius: var(--viking-radius-md);
1460
+ border: 1px solid transparent;
1461
+ cursor: pointer;
1462
+ text-decoration: none;
1463
+ transition: var(--viking-transition-interactive);
1464
+ width: auto;
1465
+ min-width: var(--viking-btn-min-width, 120px);
1466
+ white-space: nowrap;
1467
+ position: relative;
1468
+ background-clip: padding-box;
1469
+ isolation: isolate;
1470
+ user-select: none;
1471
+ -webkit-tap-highlight-color: transparent;
1472
+ overflow: hidden;
1473
+ box-shadow: var(--viking-btn-depth-shadow);
1474
+ }
1475
+ .viking-btn-outline:focus-visible,
1476
+ a.viking-btn-outline:focus-visible,
1477
+ button.viking-btn-outline:focus-visible {
1478
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1479
+ outline-offset: var(--viking-ring-offset);
1480
+ z-index: 1;
1481
+ }
1482
+ .viking-btn-outline::before,
1483
+ a.viking-btn-outline::before,
1484
+ button.viking-btn-outline::before {
1485
+ content: "";
1486
+ position: absolute;
1487
+ inset: 1px 1px auto 1px;
1488
+ height: 1px;
1489
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1490
+ pointer-events: none;
1491
+ opacity: 0.88;
1492
+ transition: var(--viking-transition-interactive);
1493
+ }
1494
+ .viking-btn-outline::after,
1495
+ a.viking-btn-outline::after,
1496
+ button.viking-btn-outline::after {
1497
+ content: "";
1498
+ position: absolute;
1499
+ inset: auto 0 0 0;
1500
+ height: 1px;
1501
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1502
+ pointer-events: none;
1503
+ opacity: 0.45;
1504
+ transition: var(--viking-transition-interactive);
1505
+ }
1506
+ .viking-btn-outline:disabled, .viking-btn-outline[aria-busy=true],
1507
+ a.viking-btn-outline:disabled,
1508
+ a.viking-btn-outline[aria-busy=true],
1509
+ button.viking-btn-outline:disabled,
1510
+ button.viking-btn-outline[aria-busy=true] {
1511
+ opacity: var(--viking-state-disabled-opacity);
1512
+ cursor: not-allowed;
1513
+ transform: none !important;
1514
+ box-shadow: none !important;
1515
+ }
1516
+ .viking-btn-outline[aria-busy=true]::before, .viking-btn-outline[aria-busy=true] .viking-btn-label,
1517
+ a.viking-btn-outline[aria-busy=true]::before,
1518
+ a.viking-btn-outline[aria-busy=true] .viking-btn-label,
1519
+ button.viking-btn-outline[aria-busy=true]::before,
1520
+ button.viking-btn-outline[aria-busy=true] .viking-btn-label {
1521
+ opacity: 0.78;
1522
+ transform: translateY(1px);
1523
+ }
1524
+ .viking-btn-outline[aria-busy=true],
1525
+ a.viking-btn-outline[aria-busy=true],
1526
+ button.viking-btn-outline[aria-busy=true] {
1527
+ cursor: wait;
1528
+ }
1529
+ .viking-btn-outline viking-icon,
1530
+ .viking-btn-outline .viking-icon,
1531
+ .viking-btn-outline [data-viking-icon],
1532
+ a.viking-btn-outline viking-icon,
1533
+ a.viking-btn-outline .viking-icon,
1534
+ a.viking-btn-outline [data-viking-icon],
1535
+ button.viking-btn-outline viking-icon,
1536
+ button.viking-btn-outline .viking-icon,
1537
+ button.viking-btn-outline [data-viking-icon] {
1538
+ flex-shrink: 0;
1539
+ display: inline-flex;
1540
+ align-items: center;
1541
+ justify-content: center;
1542
+ width: var(--viking-icon-size-md);
1543
+ height: var(--viking-icon-size-md);
1544
+ line-height: 1;
1545
+ pointer-events: none;
1546
+ flex: 0 0 auto;
1547
+ margin-block: calc(var(--viking-space-half) * -1);
1548
+ }
1549
+ .viking-btn-outline .viking-btn-label,
1550
+ a.viking-btn-outline .viking-btn-label,
1551
+ button.viking-btn-outline .viking-btn-label {
1552
+ display: inline-flex;
1553
+ align-items: center;
1554
+ gap: var(--viking-space-1);
1555
+ line-height: 1.2;
1556
+ min-width: 0;
1557
+ justify-content: center;
1558
+ text-align: center;
1559
+ white-space: nowrap;
1560
+ }
1561
+ .viking-btn-outline,
1562
+ a.viking-btn-outline,
1563
+ button.viking-btn-outline {
1564
+ background: var(--viking-surface);
1565
+ color: var(--viking-text);
1566
+ border-color: var(--viking-border-strong);
1567
+ box-shadow: var(--viking-btn-depth-shadow);
1568
+ }
1569
+ .viking-btn-outline:hover:not(:disabled):not([aria-busy=true]),
1570
+ a.viking-btn-outline:hover:not(:disabled):not([aria-busy=true]),
1571
+ button.viking-btn-outline:hover:not(:disabled):not([aria-busy=true]) {
1572
+ background: color-mix(in srgb, var(--viking-accent) 5%, var(--viking-surface-alt));
1573
+ border-color: color-mix(in srgb, var(--viking-accent) 45%, var(--viking-border-strong));
1574
+ color: var(--viking-text);
1575
+ box-shadow: var(--viking-btn-hover-shadow);
1576
+ transform: translateY(var(--viking-state-hover-lift));
1577
+ }
1578
+ .viking-btn-outline:active:not(:disabled):not([aria-busy=true]),
1579
+ a.viking-btn-outline:active:not(:disabled):not([aria-busy=true]),
1580
+ button.viking-btn-outline:active:not(:disabled):not([aria-busy=true]) {
1581
+ transform: translateY(0) scale(var(--viking-state-active-scale));
1582
+ border-color: var(--viking-border-strong);
1583
+ box-shadow: var(--viking-btn-press-shadow);
1584
+ }
1585
+
1586
+ .viking-btn-danger,
1587
+ a.viking-btn-danger,
1588
+ button.viking-btn-danger {
1589
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1590
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1591
+ --viking-btn-press-shadow:
1592
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1593
+ var(--viking-shadow-xs);
1594
+ font-family: var(--viking-font-family);
1595
+ font-size: var(--viking-font-size-ui);
1596
+ font-weight: var(--viking-font-weight-semibold);
1597
+ letter-spacing: var(--viking-letter-spacing-wide);
1598
+ line-height: var(--viking-line-height-snug);
1599
+ display: inline-flex;
1600
+ align-items: center;
1601
+ justify-content: center;
1602
+ gap: var(--viking-space-1-5);
1603
+ min-height: var(--viking-control-height);
1604
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1605
+ border-radius: var(--viking-radius-md);
1606
+ border: 1px solid transparent;
1607
+ cursor: pointer;
1608
+ text-decoration: none;
1609
+ transition: var(--viking-transition-interactive);
1610
+ width: auto;
1611
+ min-width: var(--viking-btn-min-width, 120px);
1612
+ white-space: nowrap;
1613
+ position: relative;
1614
+ background-clip: padding-box;
1615
+ isolation: isolate;
1616
+ user-select: none;
1617
+ -webkit-tap-highlight-color: transparent;
1618
+ overflow: hidden;
1619
+ box-shadow: var(--viking-btn-depth-shadow);
1620
+ }
1621
+ .viking-btn-danger:focus-visible,
1622
+ a.viking-btn-danger:focus-visible,
1623
+ button.viking-btn-danger:focus-visible {
1624
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1625
+ outline-offset: var(--viking-ring-offset);
1626
+ z-index: 1;
1627
+ }
1628
+ .viking-btn-danger::before,
1629
+ a.viking-btn-danger::before,
1630
+ button.viking-btn-danger::before {
1631
+ content: "";
1632
+ position: absolute;
1633
+ inset: 1px 1px auto 1px;
1634
+ height: 1px;
1635
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1636
+ pointer-events: none;
1637
+ opacity: 0.88;
1638
+ transition: var(--viking-transition-interactive);
1639
+ }
1640
+ .viking-btn-danger::after,
1641
+ a.viking-btn-danger::after,
1642
+ button.viking-btn-danger::after {
1643
+ content: "";
1644
+ position: absolute;
1645
+ inset: auto 0 0 0;
1646
+ height: 1px;
1647
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1648
+ pointer-events: none;
1649
+ opacity: 0.45;
1650
+ transition: var(--viking-transition-interactive);
1651
+ }
1652
+ .viking-btn-danger:disabled, .viking-btn-danger[aria-busy=true],
1653
+ a.viking-btn-danger:disabled,
1654
+ a.viking-btn-danger[aria-busy=true],
1655
+ button.viking-btn-danger:disabled,
1656
+ button.viking-btn-danger[aria-busy=true] {
1657
+ opacity: var(--viking-state-disabled-opacity);
1658
+ cursor: not-allowed;
1659
+ transform: none !important;
1660
+ box-shadow: none !important;
1661
+ }
1662
+ .viking-btn-danger[aria-busy=true]::before, .viking-btn-danger[aria-busy=true] .viking-btn-label,
1663
+ a.viking-btn-danger[aria-busy=true]::before,
1664
+ a.viking-btn-danger[aria-busy=true] .viking-btn-label,
1665
+ button.viking-btn-danger[aria-busy=true]::before,
1666
+ button.viking-btn-danger[aria-busy=true] .viking-btn-label {
1667
+ opacity: 0.78;
1668
+ transform: translateY(1px);
1669
+ }
1670
+ .viking-btn-danger[aria-busy=true],
1671
+ a.viking-btn-danger[aria-busy=true],
1672
+ button.viking-btn-danger[aria-busy=true] {
1673
+ cursor: wait;
1674
+ }
1675
+ .viking-btn-danger viking-icon,
1676
+ .viking-btn-danger .viking-icon,
1677
+ .viking-btn-danger [data-viking-icon],
1678
+ a.viking-btn-danger viking-icon,
1679
+ a.viking-btn-danger .viking-icon,
1680
+ a.viking-btn-danger [data-viking-icon],
1681
+ button.viking-btn-danger viking-icon,
1682
+ button.viking-btn-danger .viking-icon,
1683
+ button.viking-btn-danger [data-viking-icon] {
1684
+ flex-shrink: 0;
1685
+ display: inline-flex;
1686
+ align-items: center;
1687
+ justify-content: center;
1688
+ width: var(--viking-icon-size-md);
1689
+ height: var(--viking-icon-size-md);
1690
+ line-height: 1;
1691
+ pointer-events: none;
1692
+ flex: 0 0 auto;
1693
+ margin-block: calc(var(--viking-space-half) * -1);
1694
+ }
1695
+ .viking-btn-danger .viking-btn-label,
1696
+ a.viking-btn-danger .viking-btn-label,
1697
+ button.viking-btn-danger .viking-btn-label {
1698
+ display: inline-flex;
1699
+ align-items: center;
1700
+ gap: var(--viking-space-1);
1701
+ line-height: 1.2;
1702
+ min-width: 0;
1703
+ justify-content: center;
1704
+ text-align: center;
1705
+ white-space: nowrap;
1706
+ }
1707
+ .viking-btn-danger,
1708
+ a.viking-btn-danger,
1709
+ button.viking-btn-danger {
1710
+ background: var(--viking-danger);
1711
+ color: var(--viking-on-danger);
1712
+ border-color: color-mix(in srgb, var(--viking-danger) 85%, var(--viking-black));
1713
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 10%, transparent);
1714
+ }
1715
+ .viking-btn-danger:hover:not(:disabled):not([aria-busy=true]),
1716
+ a.viking-btn-danger:hover:not(:disabled):not([aria-busy=true]),
1717
+ button.viking-btn-danger:hover:not(:disabled):not([aria-busy=true]) {
1718
+ background: color-mix(in srgb, var(--viking-danger) 88%, var(--viking-white));
1719
+ border-color: color-mix(in srgb, var(--viking-danger) 92%, var(--viking-white));
1720
+ color: var(--viking-on-danger);
1721
+ box-shadow: var(--viking-btn-hover-shadow);
1722
+ transform: translateY(var(--viking-state-hover-lift));
1723
+ }
1724
+ .viking-btn-danger:active:not(:disabled):not([aria-busy=true]),
1725
+ a.viking-btn-danger:active:not(:disabled):not([aria-busy=true]),
1726
+ button.viking-btn-danger:active:not(:disabled):not([aria-busy=true]) {
1727
+ transform: translateY(0) scale(var(--viking-state-active-scale));
1728
+ border-color: color-mix(in srgb, var(--viking-danger) 72%, var(--viking-black));
1729
+ background: color-mix(in srgb, var(--viking-danger) 84%, var(--viking-black));
1730
+ box-shadow: var(--viking-btn-press-shadow);
1731
+ }
1732
+
1733
+ .viking-btn-ghost,
1734
+ a.viking-btn-ghost,
1735
+ button.viking-btn-ghost {
1736
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1737
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1738
+ --viking-btn-press-shadow:
1739
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1740
+ var(--viking-shadow-xs);
1741
+ font-family: var(--viking-font-family);
1742
+ font-size: var(--viking-font-size-ui);
1743
+ font-weight: var(--viking-font-weight-semibold);
1744
+ letter-spacing: var(--viking-letter-spacing-wide);
1745
+ line-height: var(--viking-line-height-snug);
1746
+ display: inline-flex;
1747
+ align-items: center;
1748
+ justify-content: center;
1749
+ gap: var(--viking-space-1-5);
1750
+ min-height: var(--viking-control-height);
1751
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1752
+ border-radius: var(--viking-radius-md);
1753
+ border: 1px solid transparent;
1754
+ cursor: pointer;
1755
+ text-decoration: none;
1756
+ transition: var(--viking-transition-interactive);
1757
+ width: auto;
1758
+ min-width: var(--viking-btn-min-width, 120px);
1759
+ white-space: nowrap;
1760
+ position: relative;
1761
+ background-clip: padding-box;
1762
+ isolation: isolate;
1763
+ user-select: none;
1764
+ -webkit-tap-highlight-color: transparent;
1765
+ overflow: hidden;
1766
+ box-shadow: var(--viking-btn-depth-shadow);
1767
+ }
1768
+ .viking-btn-ghost:focus-visible,
1769
+ a.viking-btn-ghost:focus-visible,
1770
+ button.viking-btn-ghost:focus-visible {
1771
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1772
+ outline-offset: var(--viking-ring-offset);
1773
+ z-index: 1;
1774
+ }
1775
+ .viking-btn-ghost::before,
1776
+ a.viking-btn-ghost::before,
1777
+ button.viking-btn-ghost::before {
1778
+ content: "";
1779
+ position: absolute;
1780
+ inset: 1px 1px auto 1px;
1781
+ height: 1px;
1782
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1783
+ pointer-events: none;
1784
+ opacity: 0.88;
1785
+ transition: var(--viking-transition-interactive);
1786
+ }
1787
+ .viking-btn-ghost::after,
1788
+ a.viking-btn-ghost::after,
1789
+ button.viking-btn-ghost::after {
1790
+ content: "";
1791
+ position: absolute;
1792
+ inset: auto 0 0 0;
1793
+ height: 1px;
1794
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1795
+ pointer-events: none;
1796
+ opacity: 0.45;
1797
+ transition: var(--viking-transition-interactive);
1798
+ }
1799
+ .viking-btn-ghost:disabled, .viking-btn-ghost[aria-busy=true],
1800
+ a.viking-btn-ghost:disabled,
1801
+ a.viking-btn-ghost[aria-busy=true],
1802
+ button.viking-btn-ghost:disabled,
1803
+ button.viking-btn-ghost[aria-busy=true] {
1804
+ opacity: var(--viking-state-disabled-opacity);
1805
+ cursor: not-allowed;
1806
+ transform: none !important;
1807
+ box-shadow: none !important;
1808
+ }
1809
+ .viking-btn-ghost[aria-busy=true]::before, .viking-btn-ghost[aria-busy=true] .viking-btn-label,
1810
+ a.viking-btn-ghost[aria-busy=true]::before,
1811
+ a.viking-btn-ghost[aria-busy=true] .viking-btn-label,
1812
+ button.viking-btn-ghost[aria-busy=true]::before,
1813
+ button.viking-btn-ghost[aria-busy=true] .viking-btn-label {
1814
+ opacity: 0.78;
1815
+ transform: translateY(1px);
1816
+ }
1817
+ .viking-btn-ghost[aria-busy=true],
1818
+ a.viking-btn-ghost[aria-busy=true],
1819
+ button.viking-btn-ghost[aria-busy=true] {
1820
+ cursor: wait;
1821
+ }
1822
+ .viking-btn-ghost viking-icon,
1823
+ .viking-btn-ghost .viking-icon,
1824
+ .viking-btn-ghost [data-viking-icon],
1825
+ a.viking-btn-ghost viking-icon,
1826
+ a.viking-btn-ghost .viking-icon,
1827
+ a.viking-btn-ghost [data-viking-icon],
1828
+ button.viking-btn-ghost viking-icon,
1829
+ button.viking-btn-ghost .viking-icon,
1830
+ button.viking-btn-ghost [data-viking-icon] {
1831
+ flex-shrink: 0;
1832
+ display: inline-flex;
1833
+ align-items: center;
1834
+ justify-content: center;
1835
+ width: var(--viking-icon-size-md);
1836
+ height: var(--viking-icon-size-md);
1837
+ line-height: 1;
1838
+ pointer-events: none;
1839
+ flex: 0 0 auto;
1840
+ margin-block: calc(var(--viking-space-half) * -1);
1841
+ }
1842
+ .viking-btn-ghost .viking-btn-label,
1843
+ a.viking-btn-ghost .viking-btn-label,
1844
+ button.viking-btn-ghost .viking-btn-label {
1845
+ display: inline-flex;
1846
+ align-items: center;
1847
+ gap: var(--viking-space-1);
1848
+ line-height: 1.2;
1849
+ min-width: 0;
1850
+ justify-content: center;
1851
+ text-align: center;
1852
+ white-space: nowrap;
1853
+ }
1854
+ .viking-btn-ghost,
1855
+ a.viking-btn-ghost,
1856
+ button.viking-btn-ghost {
1857
+ background: transparent;
1858
+ color: var(--viking-text);
1859
+ min-width: auto;
1860
+ box-shadow: none;
1861
+ border-color: transparent;
1862
+ }
1863
+ .viking-btn-ghost:hover:not(:disabled):not([aria-busy=true]),
1864
+ a.viking-btn-ghost:hover:not(:disabled):not([aria-busy=true]),
1865
+ button.viking-btn-ghost:hover:not(:disabled):not([aria-busy=true]) {
1866
+ background: var(--viking-accent-soft);
1867
+ color: var(--viking-accent-strong);
1868
+ border-color: var(--viking-border-subtle);
1869
+ transform: translateY(var(--viking-state-hover-lift));
1870
+ }
1871
+ .viking-btn-ghost:active:not(:disabled):not([aria-busy=true]),
1872
+ a.viking-btn-ghost:active:not(:disabled):not([aria-busy=true]),
1873
+ button.viking-btn-ghost:active:not(:disabled):not([aria-busy=true]) {
1874
+ transform: translateY(0) scale(var(--viking-state-active-scale));
1875
+ background: var(--viking-accent-soft);
1876
+ color: var(--viking-accent-strong);
1877
+ }
1878
+
1879
+ .viking-btn-subtle,
1880
+ a.viking-btn-subtle,
1881
+ button.viking-btn-subtle {
1882
+ --viking-btn-depth-shadow: var(--viking-shadow-sm);
1883
+ --viking-btn-hover-shadow: var(--viking-shadow-hover);
1884
+ --viking-btn-press-shadow:
1885
+ inset 0 1px 2px color-mix(in srgb, var(--viking-black) 28%, transparent),
1886
+ var(--viking-shadow-xs);
1887
+ font-family: var(--viking-font-family);
1888
+ font-size: var(--viking-font-size-ui);
1889
+ font-weight: var(--viking-font-weight-semibold);
1890
+ letter-spacing: var(--viking-letter-spacing-wide);
1891
+ line-height: var(--viking-line-height-snug);
1892
+ display: inline-flex;
1893
+ align-items: center;
1894
+ justify-content: center;
1895
+ gap: var(--viking-space-1-5);
1896
+ min-height: var(--viking-control-height);
1897
+ padding: var(--viking-space-half) var(--viking-control-padding-x);
1898
+ border-radius: var(--viking-radius-md);
1899
+ border: 1px solid transparent;
1900
+ cursor: pointer;
1901
+ text-decoration: none;
1902
+ transition: var(--viking-transition-interactive);
1903
+ width: auto;
1904
+ min-width: var(--viking-btn-min-width, 120px);
1905
+ white-space: nowrap;
1906
+ position: relative;
1907
+ background-clip: padding-box;
1908
+ isolation: isolate;
1909
+ user-select: none;
1910
+ -webkit-tap-highlight-color: transparent;
1911
+ overflow: hidden;
1912
+ box-shadow: var(--viking-btn-depth-shadow);
1913
+ }
1914
+ .viking-btn-subtle:focus-visible,
1915
+ a.viking-btn-subtle:focus-visible,
1916
+ button.viking-btn-subtle:focus-visible {
1917
+ outline: var(--viking-ring-width) solid var(--viking-ring);
1918
+ outline-offset: var(--viking-ring-offset);
1919
+ z-index: 1;
1920
+ }
1921
+ .viking-btn-subtle::before,
1922
+ a.viking-btn-subtle::before,
1923
+ button.viking-btn-subtle::before {
1924
+ content: "";
1925
+ position: absolute;
1926
+ inset: 1px 1px auto 1px;
1927
+ height: 1px;
1928
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 45%, transparent), transparent);
1929
+ pointer-events: none;
1930
+ opacity: 0.88;
1931
+ transition: var(--viking-transition-interactive);
1932
+ }
1933
+ .viking-btn-subtle::after,
1934
+ a.viking-btn-subtle::after,
1935
+ button.viking-btn-subtle::after {
1936
+ content: "";
1937
+ position: absolute;
1938
+ inset: auto 0 0 0;
1939
+ height: 1px;
1940
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--viking-metallic-100) 18%, transparent), transparent);
1941
+ pointer-events: none;
1942
+ opacity: 0.45;
1943
+ transition: var(--viking-transition-interactive);
1944
+ }
1945
+ .viking-btn-subtle:disabled, .viking-btn-subtle[aria-busy=true],
1946
+ a.viking-btn-subtle:disabled,
1947
+ a.viking-btn-subtle[aria-busy=true],
1948
+ button.viking-btn-subtle:disabled,
1949
+ button.viking-btn-subtle[aria-busy=true] {
1950
+ opacity: var(--viking-state-disabled-opacity);
1951
+ cursor: not-allowed;
1952
+ transform: none !important;
1953
+ box-shadow: none !important;
1954
+ }
1955
+ .viking-btn-subtle[aria-busy=true]::before, .viking-btn-subtle[aria-busy=true] .viking-btn-label,
1956
+ a.viking-btn-subtle[aria-busy=true]::before,
1957
+ a.viking-btn-subtle[aria-busy=true] .viking-btn-label,
1958
+ button.viking-btn-subtle[aria-busy=true]::before,
1959
+ button.viking-btn-subtle[aria-busy=true] .viking-btn-label {
1960
+ opacity: 0.78;
1961
+ transform: translateY(1px);
1962
+ }
1963
+ .viking-btn-subtle[aria-busy=true],
1964
+ a.viking-btn-subtle[aria-busy=true],
1965
+ button.viking-btn-subtle[aria-busy=true] {
1966
+ cursor: wait;
1967
+ }
1968
+ .viking-btn-subtle viking-icon,
1969
+ .viking-btn-subtle .viking-icon,
1970
+ .viking-btn-subtle [data-viking-icon],
1971
+ a.viking-btn-subtle viking-icon,
1972
+ a.viking-btn-subtle .viking-icon,
1973
+ a.viking-btn-subtle [data-viking-icon],
1974
+ button.viking-btn-subtle viking-icon,
1975
+ button.viking-btn-subtle .viking-icon,
1976
+ button.viking-btn-subtle [data-viking-icon] {
1977
+ flex-shrink: 0;
1978
+ display: inline-flex;
1979
+ align-items: center;
1980
+ justify-content: center;
1981
+ width: var(--viking-icon-size-md);
1982
+ height: var(--viking-icon-size-md);
1983
+ line-height: 1;
1984
+ pointer-events: none;
1985
+ flex: 0 0 auto;
1986
+ margin-block: calc(var(--viking-space-half) * -1);
1987
+ }
1988
+ .viking-btn-subtle .viking-btn-label,
1989
+ a.viking-btn-subtle .viking-btn-label,
1990
+ button.viking-btn-subtle .viking-btn-label {
1991
+ display: inline-flex;
1992
+ align-items: center;
1993
+ gap: var(--viking-space-1);
1994
+ line-height: 1.2;
1995
+ min-width: 0;
1996
+ justify-content: center;
1997
+ text-align: center;
1998
+ white-space: nowrap;
1999
+ }
2000
+ .viking-btn-subtle,
2001
+ a.viking-btn-subtle,
2002
+ button.viking-btn-subtle {
2003
+ background: transparent;
2004
+ color: var(--viking-text-muted);
2005
+ border-color: var(--viking-border-subtle);
2006
+ min-width: auto;
2007
+ box-shadow: none;
2008
+ }
2009
+ .viking-btn-subtle:hover:not(:disabled):not([aria-busy=true]),
2010
+ a.viking-btn-subtle:hover:not(:disabled):not([aria-busy=true]),
2011
+ button.viking-btn-subtle:hover:not(:disabled):not([aria-busy=true]) {
2012
+ color: var(--viking-text);
2013
+ background: var(--viking-accent-soft);
2014
+ border-color: var(--viking-border-strong);
2015
+ }
2016
+ .viking-btn-subtle:active:not(:disabled):not([aria-busy=true]),
2017
+ a.viking-btn-subtle:active:not(:disabled):not([aria-busy=true]),
2018
+ button.viking-btn-subtle:active:not(:disabled):not([aria-busy=true]) {
2019
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2020
+ border-color: var(--viking-border);
2021
+ background: color-mix(in srgb, var(--viking-accent-soft) 70%, var(--viking-surface));
2022
+ box-shadow: inset 0 1px 2px color-mix(in srgb, var(--viking-black) 24%, transparent);
2023
+ }
2024
+
2025
+ .viking-btn.viking-outline {
2026
+ background: var(--viking-surface);
2027
+ color: var(--viking-text);
2028
+ border-color: var(--viking-border-strong);
2029
+ box-shadow: var(--viking-btn-depth-shadow);
2030
+ }
2031
+ .viking-btn.viking-outline:hover:not(:disabled):not([aria-busy=true]) {
2032
+ background: color-mix(in srgb, var(--viking-accent) 5%, var(--viking-surface-alt));
2033
+ border-color: color-mix(in srgb, var(--viking-accent) 45%, var(--viking-border-strong));
2034
+ color: var(--viking-text);
2035
+ box-shadow: var(--viking-btn-hover-shadow);
2036
+ transform: translateY(var(--viking-state-hover-lift));
2037
+ }
2038
+ .viking-btn.viking-outline:active:not(:disabled):not([aria-busy=true]) {
2039
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2040
+ border-color: var(--viking-border-strong);
2041
+ box-shadow: var(--viking-btn-press-shadow);
2042
+ }
2043
+
2044
+ .viking-btn.viking-primary {
2045
+ background: var(--viking-accent);
2046
+ color: var(--viking-accent-content);
2047
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
2048
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 12%, transparent);
2049
+ }
2050
+ .viking-btn.viking-primary:hover:not(:disabled):not([aria-busy=true]) {
2051
+ background: var(--viking-accent-hover);
2052
+ border-color: var(--viking-accent-hover);
2053
+ color: var(--viking-accent-content);
2054
+ box-shadow: var(--viking-btn-hover-shadow);
2055
+ transform: translateY(var(--viking-state-hover-lift));
2056
+ }
2057
+ .viking-btn.viking-primary:active:not(:disabled):not([aria-busy=true]) {
2058
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2059
+ border-color: color-mix(in srgb, var(--viking-accent) 82%, var(--viking-black));
2060
+ box-shadow: var(--viking-btn-press-shadow);
2061
+ }
2062
+
2063
+ .viking-btn.viking-secondary {
2064
+ background: var(--viking-accent-secondary);
2065
+ color: var(--viking-accent-secondary-content);
2066
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
2067
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 10%, transparent);
2068
+ }
2069
+ .viking-btn.viking-secondary:hover:not(:disabled):not([aria-busy=true]) {
2070
+ background: var(--viking-accent-secondary-hover);
2071
+ border-color: var(--viking-accent-secondary-hover);
2072
+ color: var(--viking-accent-secondary-content);
2073
+ box-shadow: var(--viking-btn-hover-shadow);
2074
+ transform: translateY(var(--viking-state-hover-lift));
2075
+ }
2076
+ .viking-btn.viking-secondary:active:not(:disabled):not([aria-busy=true]) {
2077
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2078
+ border-color: color-mix(in srgb, var(--viking-accent-secondary) 82%, var(--viking-black));
2079
+ box-shadow: var(--viking-btn-press-shadow);
2080
+ }
2081
+
2082
+ .viking-btn.viking-filled {
2083
+ background: var(--viking-surface-alt);
2084
+ color: var(--viking-text);
2085
+ border-color: var(--viking-border);
2086
+ box-shadow: var(--viking-shadow-xs);
2087
+ }
2088
+ .viking-btn.viking-filled:hover:not(:disabled):not([aria-busy=true]) {
2089
+ border-color: color-mix(in srgb, var(--viking-accent) 45%, var(--viking-border));
2090
+ background: color-mix(in srgb, var(--viking-accent) 8%, var(--viking-surface-alt));
2091
+ box-shadow: var(--viking-btn-depth-shadow);
2092
+ transform: translateY(var(--viking-state-hover-lift));
2093
+ }
2094
+ .viking-btn.viking-filled:active:not(:disabled):not([aria-busy=true]) {
2095
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2096
+ box-shadow: var(--viking-btn-press-shadow);
2097
+ border-color: color-mix(in srgb, var(--viking-accent) 20%, var(--viking-border));
2098
+ background: color-mix(in srgb, var(--viking-surface-alt) 84%, var(--viking-accent));
2099
+ }
2100
+
2101
+ .viking-btn.viking-danger {
2102
+ background: var(--viking-danger);
2103
+ color: var(--viking-on-danger);
2104
+ border-color: color-mix(in srgb, var(--viking-danger) 85%, var(--viking-black));
2105
+ box-shadow: var(--viking-btn-depth-shadow), inset 0 1px 0 color-mix(in srgb, var(--viking-white-pure) 10%, transparent);
2106
+ }
2107
+ .viking-btn.viking-danger:hover:not(:disabled):not([aria-busy=true]) {
2108
+ background: color-mix(in srgb, var(--viking-danger) 88%, var(--viking-white));
2109
+ border-color: color-mix(in srgb, var(--viking-danger) 92%, var(--viking-white));
2110
+ color: var(--viking-on-danger);
2111
+ box-shadow: var(--viking-btn-hover-shadow);
2112
+ transform: translateY(var(--viking-state-hover-lift));
2113
+ }
2114
+ .viking-btn.viking-danger:active:not(:disabled):not([aria-busy=true]) {
2115
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2116
+ border-color: color-mix(in srgb, var(--viking-danger) 72%, var(--viking-black));
2117
+ background: color-mix(in srgb, var(--viking-danger) 84%, var(--viking-black));
2118
+ box-shadow: var(--viking-btn-press-shadow);
2119
+ }
2120
+
2121
+ .viking-btn.viking-ghost {
2122
+ background: transparent;
2123
+ color: var(--viking-text);
2124
+ min-width: auto;
2125
+ box-shadow: none;
2126
+ border-color: transparent;
2127
+ }
2128
+ .viking-btn.viking-ghost:hover:not(:disabled):not([aria-busy=true]) {
2129
+ background: var(--viking-accent-soft);
2130
+ color: var(--viking-accent-strong);
2131
+ border-color: var(--viking-border-subtle);
2132
+ transform: translateY(var(--viking-state-hover-lift));
2133
+ }
2134
+ .viking-btn.viking-ghost:active:not(:disabled):not([aria-busy=true]) {
2135
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2136
+ background: var(--viking-accent-soft);
2137
+ color: var(--viking-accent-strong);
2138
+ }
2139
+
2140
+ .viking-btn.viking-subtle {
2141
+ background: transparent;
2142
+ color: var(--viking-text-muted);
2143
+ border-color: var(--viking-border-subtle);
2144
+ min-width: auto;
2145
+ box-shadow: none;
2146
+ }
2147
+ .viking-btn.viking-subtle:hover:not(:disabled):not([aria-busy=true]) {
2148
+ color: var(--viking-text);
2149
+ background: var(--viking-accent-soft);
2150
+ border-color: var(--viking-border-strong);
2151
+ }
2152
+ .viking-btn.viking-subtle:active:not(:disabled):not([aria-busy=true]) {
2153
+ transform: translateY(0) scale(var(--viking-state-active-scale));
2154
+ border-color: var(--viking-border);
2155
+ background: color-mix(in srgb, var(--viking-accent-soft) 70%, var(--viking-surface));
2156
+ box-shadow: inset 0 1px 2px color-mix(in srgb, var(--viking-black) 24%, transparent);
2157
+ }
2158
+
2159
+ .viking-btn.viking-compact {
2160
+ min-width: 0;
2161
+ }
2162
+
2163
+ .viking-btn.viking-full {
2164
+ width: 100%;
2165
+ min-width: 0;
2166
+ }
2167
+
2168
+ .viking-btn-label {
2169
+ display: inline-flex;
2170
+ align-items: center;
2171
+ line-height: inherit;
2172
+ }
2173
+
2174
+ .viking-btn-spinner {
2175
+ flex: 0 0 auto;
2176
+ width: var(--viking-icon-size-sm, 18px);
2177
+ height: var(--viking-icon-size-sm, 18px);
2178
+ border: 2px solid currentColor;
2179
+ border-right-color: transparent;
2180
+ border-radius: var(--viking-radius-pill);
2181
+ animation: viking-spin 0.8s linear infinite;
2182
+ }
2183
+
2184
+ .viking-control {
2185
+ display: flex;
2186
+ align-items: center;
2187
+ gap: var(--viking-space-1);
2188
+ min-height: var(--viking-control-height);
2189
+ padding: 0 var(--viking-space-2);
2190
+ font-family: var(--viking-font-family);
2191
+ font-size: var(--viking-font-size);
2192
+ color: var(--viking-text);
2193
+ background: var(--viking-surface-alt);
2194
+ border: 1px solid var(--viking-border);
2195
+ border-radius: var(--viking-radius-sm);
2196
+ box-shadow: var(--viking-shadow-xs);
2197
+ transition: var(--viking-transition-interactive);
2198
+ width: 100%;
2199
+ min-width: 0;
2200
+ box-sizing: border-box;
2201
+ }
2202
+ .viking-control:hover:not(.viking-disabled):not(.viking-loading):not(:disabled) {
2203
+ border-color: color-mix(in srgb, var(--viking-accent) 35%, var(--viking-border-strong));
2204
+ box-shadow: var(--viking-shadow-sm);
2205
+ }
2206
+ .viking-control:focus-within:not(.viking-loading) {
2207
+ outline: var(--viking-ring-width) solid var(--viking-ring);
2208
+ outline-offset: var(--viking-ring-offset);
2209
+ border-color: var(--viking-accent);
2210
+ box-shadow: var(--viking-shadow-sm);
2211
+ }
2212
+
2213
+ .viking-form-row {
2214
+ display: grid;
2215
+ grid-template-columns: 1fr;
2216
+ gap: var(--viking-space-3);
2217
+ width: 100%;
2218
+ max-width: var(--viking-form-max-width);
2219
+ }
2220
+ @media (min-width: 600px) {
2221
+ .viking-form-row {
2222
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2223
+ }
2224
+ }
2225
+
2226
+ @media (min-width: 768px) {
2227
+ .viking-form-row--3 {
2228
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2229
+ }
2230
+ }
2231
+
2232
+ .viking-form-section-actions viking-button .viking-btn,
2233
+ .viking-modal-footer viking-button .viking-btn,
2234
+ .viking-sheet-footer viking-button .viking-btn,
2235
+ .viking-empty-state-actions viking-button .viking-btn,
2236
+ .viking-chart-empty-actions viking-button .viking-btn {
2237
+ min-width: 0;
2238
+ }
2239
+
2240
+ .viking-input,
2241
+ .viking-input-shell {
2242
+ display: flex;
2243
+ align-items: center;
2244
+ gap: var(--viking-space-1);
2245
+ min-height: var(--viking-control-height);
2246
+ padding: 0 var(--viking-space-2);
2247
+ font-family: var(--viking-font-family);
2248
+ font-size: var(--viking-font-size);
2249
+ color: var(--viking-text);
2250
+ background: var(--viking-surface-alt);
2251
+ border: 1px solid var(--viking-border);
2252
+ border-radius: var(--viking-radius-sm);
2253
+ box-shadow: var(--viking-shadow-xs);
2254
+ transition: var(--viking-transition-interactive);
2255
+ width: 100%;
2256
+ min-width: 0;
2257
+ box-sizing: border-box;
2258
+ }
2259
+ .viking-input:hover:not(.viking-disabled):not(.viking-loading):not(:disabled),
2260
+ .viking-input-shell:hover:not(.viking-disabled):not(.viking-loading):not(:disabled) {
2261
+ border-color: color-mix(in srgb, var(--viking-accent) 35%, var(--viking-border-strong));
2262
+ box-shadow: var(--viking-shadow-sm);
2263
+ }
2264
+ .viking-input:focus-within:not(.viking-loading),
2265
+ .viking-input-shell:focus-within:not(.viking-loading) {
2266
+ outline: var(--viking-ring-width) solid var(--viking-ring);
2267
+ outline-offset: var(--viking-ring-offset);
2268
+ border-color: var(--viking-accent);
2269
+ box-shadow: var(--viking-shadow-sm);
2270
+ }
2271
+
2272
+ .viking-input input,
2273
+ .viking-input-shell input,
2274
+ input.viking-input-native {
2275
+ flex: 1;
2276
+ min-width: 0;
2277
+ border: none;
2278
+ outline: none !important;
2279
+ background: transparent;
2280
+ color: var(--viking-text);
2281
+ font-family: var(--viking-font-family);
2282
+ font-size: var(--viking-font-size);
2283
+ padding: 0;
2284
+ }
2285
+ .viking-input input::placeholder,
2286
+ .viking-input-shell input::placeholder,
2287
+ input.viking-input-native::placeholder {
2288
+ color: var(--viking-text-muted);
2289
+ }
2290
+ .viking-input input:disabled,
2291
+ .viking-input-shell input:disabled,
2292
+ input.viking-input-native:disabled {
2293
+ cursor: not-allowed;
2294
+ }
2295
+
2296
+ .viking-input-clear {
2297
+ display: inline-flex;
2298
+ align-items: center;
2299
+ justify-content: center;
2300
+ min-width: var(--viking-touch-target-comfort);
2301
+ min-height: var(--viking-touch-target-comfort);
2302
+ border: none;
2303
+ background: transparent;
2304
+ color: var(--viking-text-muted);
2305
+ cursor: pointer;
2306
+ padding: var(--viking-space-half);
2307
+ border-radius: var(--viking-radius-pill);
2308
+ transition: var(--viking-transition-interactive);
2309
+ position: relative;
2310
+ flex-shrink: 0;
2311
+ -webkit-tap-highlight-color: transparent;
2312
+ }
2313
+ .viking-input-clear:hover {
2314
+ color: var(--viking-text);
2315
+ background: var(--viking-accent-soft);
2316
+ }
2317
+ .viking-input-clear:focus-visible {
2318
+ outline: var(--viking-ring-width) solid var(--viking-ring);
2319
+ outline-offset: var(--viking-ring-offset);
2320
+ }
2321
+ .viking-input-clear:active {
2322
+ transform: scale(var(--viking-state-active-scale));
2323
+ }
2324
+
2325
+ .viking-input-kbd {
2326
+ font-family: var(--viking-font-family-mono);
2327
+ font-size: var(--viking-font-size-xs);
2328
+ color: var(--viking-text-muted);
2329
+ background: var(--viking-surface-alt);
2330
+ border: 1px solid var(--viking-border);
2331
+ border-radius: var(--viking-radius-xs);
2332
+ padding: 0 var(--viking-space-half);
2333
+ line-height: 1.4;
2334
+ }
2335
+
2336
+ .viking-input-icon {
2337
+ color: var(--viking-text-muted);
2338
+ flex-shrink: 0;
2339
+ }
2340
+
2341
+ .viking-input-shell.viking-disabled,
2342
+ .viking-input-shell.viking-loading,
2343
+ .viking-input.viking-disabled,
2344
+ .viking-input.viking-loading {
2345
+ opacity: var(--viking-state-disabled-opacity);
2346
+ }
2347
+
2348
+ .viking-input-shell.viking-loading,
2349
+ .viking-input.viking-loading {
2350
+ cursor: wait;
2351
+ }