@dataengineeringformachinelearning/viking-ui 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +7 -5
  2. package/dist/README.md +7 -5
  3. package/dist/deml-components.css +23 -0
  4. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +182 -23
  5. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +1 -1
  6. package/dist/package.json +7 -1
  7. package/dist/src/web/card/viking-card-wc.ts +5 -1
  8. package/dist/src/web/core/styles.ts +125 -2
  9. package/dist/src/web/suite-header/viking-suite-header-wc.ts +15 -0
  10. package/dist/types/dataengineeringformachinelearning-viking-ui.d.ts +2 -1
  11. package/dist/viking-components.css +425 -31
  12. package/dist/viking-ui-elements.js +180 -42
  13. package/dist/viking-ui.css +1 -1
  14. package/dist/web-components.js +145 -3
  15. package/package.json +7 -1
  16. package/src/index.ts +1 -1
  17. package/src/lib/auth-panel/auth-panel.ts +9 -9
  18. package/src/lib/button/button.scss +23 -0
  19. package/src/lib/card/card.ts +33 -5
  20. package/src/lib/site-drakkar/site-navbar.ts +14 -4
  21. package/src/styles/_buttons.scss +92 -7
  22. package/src/styles/_layout-enforcement.scss +66 -3
  23. package/src/styles/components/icon-inline.scss +23 -0
  24. package/src/styles/components.scss +276 -9
  25. package/src/styles/static-navbar.scss +43 -4
  26. package/src/styles/surfaces/backend.scss +22 -10
  27. package/src/styles/surfaces/docs-shell.scss +40 -15
  28. package/src/styles/surfaces/docs-showcase.scss +132 -30
  29. package/src/styles/surfaces/marketing-landing.scss +311 -45
  30. package/src/styles/surfaces/swagger-ui.scss +9 -8
  31. package/src/styles/viking-ui.scss +12 -12
  32. package/src/web/card/viking-card-wc.ts +5 -1
  33. package/src/web/core/styles.ts +125 -2
  34. package/src/web/suite-header/viking-suite-header-wc.ts +15 -0
@@ -1,17 +1,20 @@
1
1
  .landing-container {
2
2
  position: relative;
3
3
  min-height: calc(100vh - 64px);
4
- padding: 48px 16px 32px;
4
+ padding-block: var(--viking-space-6) var(--viking-space-4);
5
5
  overflow: hidden;
6
6
  font-family: var(--viking-font-family);
7
7
 
8
8
  @media (min-width: 768px) {
9
- padding: 72px 32px 64px;
9
+ padding-block: var(--viking-space-9) var(--viking-space-8);
10
10
  }
11
11
  }
12
12
 
13
13
  .showcase-layout {
14
- max-width: var(--container-max-width, 1260px);
14
+ max-width: var(
15
+ --viking-container-max-width,
16
+ var(--container-max-width, 1260px)
17
+ );
15
18
  margin: 0 auto;
16
19
  }
17
20
 
@@ -19,22 +22,68 @@
19
22
  .hero-showcase {
20
23
  display: grid;
21
24
  grid-template-columns: 1fr;
22
- gap: 48px;
25
+ gap: var(--viking-page-section-gap, var(--viking-space-6));
23
26
  align-items: center;
24
- margin-bottom: 72px;
27
+ margin-bottom: var(--viking-space-9);
25
28
  position: relative;
26
29
  z-index: 10;
27
30
  overflow: hidden;
28
31
  @media (min-width: 960px) {
29
32
  grid-template-columns: 1fr 1.1fr;
30
- gap: 64px;
33
+ gap: var(--viking-space-8);
34
+ }
35
+
36
+ &::before {
37
+ content: "";
38
+ position: absolute;
39
+ inset: auto 0 -2px 0;
40
+ height: 1px;
41
+ background: linear-gradient(
42
+ 90deg,
43
+ transparent,
44
+ color-mix(in srgb, var(--viking-accent) 35%, transparent),
45
+ transparent
46
+ );
47
+ opacity: 0.45;
48
+ pointer-events: none;
31
49
  }
32
50
  }
33
51
 
34
52
  .hero-copy {
35
53
  display: flex;
36
54
  flex-direction: column;
37
- gap: 24px;
55
+ gap: var(--viking-space-3);
56
+ position: relative;
57
+
58
+ &::before {
59
+ content: "";
60
+ position: absolute;
61
+ left: 0;
62
+ right: 0;
63
+ top: 0;
64
+ height: 1px;
65
+ background: linear-gradient(
66
+ 90deg,
67
+ transparent,
68
+ color-mix(in srgb, var(--viking-metallic-400) 48%, transparent),
69
+ transparent
70
+ );
71
+ opacity: 0.4;
72
+ pointer-events: none;
73
+ }
74
+
75
+ &::after {
76
+ content: "";
77
+ position: absolute;
78
+ top: -10px;
79
+ left: 0;
80
+ width: 24px;
81
+ height: 16px;
82
+ border-top: 1px solid color-mix(in srgb, var(--viking-accent) 45%, transparent);
83
+ border-left: 1px solid color-mix(in srgb, var(--viking-accent) 22%, transparent);
84
+ opacity: 0.55;
85
+ pointer-events: none;
86
+ }
38
87
  }
39
88
 
40
89
  .hero-badge {
@@ -47,6 +96,21 @@
47
96
  border-radius: 1000px;
48
97
  width: fit-content;
49
98
  box-shadow: var(--shadow-sm);
99
+ position: relative;
100
+ overflow: hidden;
101
+ border-color: var(--viking-border-strong);
102
+
103
+ &::after {
104
+ content: "";
105
+ position: absolute;
106
+ left: 1px;
107
+ right: 1px;
108
+ top: 0;
109
+ height: 1px;
110
+ background: color-mix(in srgb, var(--viking-accent) 35%, transparent);
111
+ opacity: 0.6;
112
+ pointer-events: none;
113
+ }
50
114
 
51
115
  .badge-dot {
52
116
  width: var(--grid-unit, 8px);
@@ -93,12 +157,30 @@
93
157
  gap: 8px;
94
158
  padding: 8px 14px;
95
159
  border-radius: 1000px;
96
- background: color-mix(in srgb, var(--viking-accent) 10%, var(--color-surface));
160
+ background: color-mix(
161
+ in srgb,
162
+ var(--viking-accent) 10%,
163
+ var(--color-surface)
164
+ );
97
165
  border: 1px solid color-mix(in srgb, var(--viking-accent) 25%, transparent);
98
166
  font-size: 0.85rem;
99
167
  font-weight: 600;
100
168
  color: var(--text-color);
101
169
  letter-spacing: 0.02em;
170
+ position: relative;
171
+ overflow: hidden;
172
+ border-color: color-mix(in srgb, var(--viking-accent) 28%, var(--border));
173
+ box-shadow: var(--shadow-sm);
174
+
175
+ &::before {
176
+ content: "";
177
+ position: absolute;
178
+ inset: 0 0 auto 0;
179
+ height: 1px;
180
+ background: color-mix(in srgb, var(--viking-accent) 40%, transparent);
181
+ opacity: 0.45;
182
+ pointer-events: none;
183
+ }
102
184
 
103
185
  svg {
104
186
  width: 18px;
@@ -115,7 +197,8 @@
115
197
  @keyframes pulseDot {
116
198
  0%,
117
199
  100% {
118
- box-shadow: 0 0 0 0 color-mix(in srgb, var(--viking-accent) 60%, transparent);
200
+ box-shadow: 0 0 0 0
201
+ color-mix(in srgb, var(--viking-accent) 60%, transparent);
119
202
  }
120
203
  50% {
121
204
  box-shadow: 0 0 0 6px
@@ -140,6 +223,40 @@
140
223
  0 0 0 1px color-mix(in srgb, var(--viking-accent) 15%, transparent);
141
224
  transform: rotateY(-4deg) rotateX(2deg);
142
225
  transition: transform 0.4s ease;
226
+ position: relative;
227
+
228
+ &::before {
229
+ content: "";
230
+ position: absolute;
231
+ inset: 0;
232
+ border-radius: inherit;
233
+ pointer-events: none;
234
+ border: 1px solid color-mix(in srgb, var(--viking-metallic-500) 28%, transparent);
235
+ box-shadow: inset 0 1px 0 color-mix(in srgb, var(--viking-white) 7%, transparent);
236
+ opacity: 0.75;
237
+ background:
238
+ linear-gradient(
239
+ 135deg,
240
+ transparent,
241
+ color-mix(in srgb, var(--viking-accent) 12%, transparent) 50%,
242
+ transparent
243
+ );
244
+ }
245
+
246
+ &::after {
247
+ content: "";
248
+ position: absolute;
249
+ top: 0;
250
+ right: 28px;
251
+ width: 30px;
252
+ height: 18px;
253
+ border-bottom: 1px solid color-mix(in srgb, var(--viking-accent) 24%, transparent);
254
+ border-right: 1px solid color-mix(in srgb, var(--viking-accent) 18%, transparent);
255
+ transform: skewX(-18deg);
256
+ pointer-events: none;
257
+ opacity: 0.55;
258
+ z-index: 2;
259
+ }
143
260
 
144
261
  &:hover {
145
262
  transform: rotateY(0deg) rotateX(0deg);
@@ -151,7 +268,11 @@
151
268
  align-items: center;
152
269
  gap: 8px;
153
270
  padding: 12px 16px;
154
- background: color-mix(in srgb, var(--viking-charcoal-900) 60%, var(--color-surface));
271
+ background: color-mix(
272
+ in srgb,
273
+ var(--viking-charcoal-900) 60%,
274
+ var(--color-surface)
275
+ );
155
276
  border-bottom: 1px solid var(--border);
156
277
 
157
278
  .mockup-dot {
@@ -229,7 +350,11 @@
229
350
  }
230
351
 
231
352
  .mockup-gauge {
232
- background: color-mix(in srgb, var(--viking-charcoal-900) 40%, var(--color-surface));
353
+ background: color-mix(
354
+ in srgb,
355
+ var(--viking-charcoal-900) 40%,
356
+ var(--color-surface)
357
+ );
233
358
  border: 1px solid var(--border);
234
359
  border-radius: 10px;
235
360
  padding: 12px;
@@ -270,7 +395,11 @@
270
395
 
271
396
  .chart-bar {
272
397
  flex: 1;
273
- background: linear-gradient(180deg, var(--viking-accent), var(--viking-accent-strong));
398
+ background: linear-gradient(
399
+ 180deg,
400
+ var(--viking-accent),
401
+ var(--viking-accent-strong)
402
+ );
274
403
  border-radius: 4px 4px 0 0;
275
404
  opacity: 0.85;
276
405
  animation: barPulse 3s ease-in-out infinite;
@@ -283,7 +412,7 @@
283
412
  }
284
413
 
285
414
  @for $h from 40 through 95 {
286
- &[data-height='#{$h}'] {
415
+ &[data-height="#{$h}"] {
287
416
  --chart-bar-height: #{$h};
288
417
  }
289
418
  }
@@ -332,13 +461,13 @@
332
461
 
333
462
  /* ── Quick start ── */
334
463
  .quick-start-band {
335
- padding: 56px 0 64px;
336
- margin-bottom: 32px;
464
+ padding: var(--viking-space-7) 0 var(--viking-space-8);
465
+ margin-bottom: var(--viking-space-4);
337
466
  border-bottom: 1px solid var(--border);
338
467
  position: relative;
339
468
  }
340
469
 
341
- /* pola.rs-inspired minimal geometric rule (subtle, high-contrast, works in light/dark) */
470
+ /* Structural command-line divider for section cadence */
342
471
  .quick-start-band::after {
343
472
  content: "";
344
473
  position: absolute;
@@ -359,7 +488,7 @@
359
488
  .quick-start-header {
360
489
  text-align: center;
361
490
  max-width: 640px;
362
- margin: 0 auto 48px;
491
+ margin: 0 auto var(--viking-page-section-gap, var(--viking-space-6));
363
492
 
364
493
  h2 {
365
494
  font-size: clamp(1.75rem, 3vw, 2.25rem);
@@ -380,14 +509,14 @@
380
509
  .quick-start-steps {
381
510
  display: grid;
382
511
  grid-template-columns: 1fr;
383
- gap: 24px;
512
+ gap: var(--viking-space-3);
384
513
  list-style: none;
385
514
  padding: 0;
386
515
  margin: 0;
387
516
 
388
517
  @media (min-width: 768px) {
389
518
  grid-template-columns: repeat(2, 1fr);
390
- gap: 32px;
519
+ gap: var(--viking-space-4);
391
520
  }
392
521
 
393
522
  @media (min-width: 1100px) {
@@ -406,10 +535,28 @@
406
535
  border-color 0.25s ease,
407
536
  transform 0.25s ease,
408
537
  box-shadow 0.25s ease;
538
+ box-shadow: var(--shadow-sm);
539
+ overflow: hidden;
540
+
541
+ &::before {
542
+ content: "";
543
+ position: absolute;
544
+ left: 0;
545
+ right: 0;
546
+ top: 0;
547
+ height: 1px;
548
+ background: linear-gradient(
549
+ 90deg,
550
+ color-mix(in srgb, var(--viking-accent) 35%, transparent),
551
+ transparent
552
+ );
553
+ opacity: 0.45;
554
+ pointer-events: none;
555
+ }
409
556
 
410
557
  &:hover {
411
558
  border-color: var(--viking-accent);
412
- transform: translateY(-4px);
559
+ transform: translateY(-2px);
413
560
  box-shadow: var(--shadow-hover);
414
561
  }
415
562
 
@@ -522,6 +669,8 @@
522
669
  border-radius: 16px;
523
670
  background: color-mix(in srgb, var(--viking-accent) 6%, var(--color-surface));
524
671
  border: 1px solid color-mix(in srgb, var(--viking-accent) 18%, transparent);
672
+ position: relative;
673
+ overflow: hidden;
525
674
  transition:
526
675
  border-color 0.2s ease,
527
676
  box-shadow 0.2s ease;
@@ -551,6 +700,16 @@
551
700
  color: var(--text-muted);
552
701
  line-height: 1.45;
553
702
  }
703
+
704
+ &::after {
705
+ content: "";
706
+ position: absolute;
707
+ inset: 8px;
708
+ border: 1px solid color-mix(in srgb, var(--viking-metallic-400) 26%, transparent);
709
+ border-radius: inherit;
710
+ opacity: 0.5;
711
+ pointer-events: none;
712
+ }
554
713
  }
555
714
 
556
715
  /* ── Integrations strip ── */
@@ -633,19 +792,35 @@
633
792
  .showcase-band {
634
793
  display: grid;
635
794
  grid-template-columns: 1fr;
636
- gap: 40px;
795
+ gap: var(--viking-space-5);
637
796
  align-items: center;
638
- padding: 56px 0;
797
+ padding: var(--viking-space-7) 0;
639
798
  border-bottom: 1px solid var(--border);
640
799
  position: relative;
641
800
 
642
801
  @media (min-width: 900px) {
643
802
  grid-template-columns: 1fr 1fr;
644
- gap: 64px;
645
- padding: 72px 0;
803
+ gap: var(--viking-space-8);
804
+ padding: var(--viking-space-9) 0;
646
805
  }
647
806
 
648
- /* double divider accent for each capability showcase */
807
+ &::before {
808
+ content: "";
809
+ position: absolute;
810
+ left: 0;
811
+ top: 0;
812
+ right: 0;
813
+ height: 1px;
814
+ background: linear-gradient(
815
+ 90deg,
816
+ transparent,
817
+ color-mix(in srgb, var(--viking-accent) 22%, transparent),
818
+ transparent
819
+ );
820
+ opacity: 0.25;
821
+ }
822
+
823
+ /* Structured divider marker for each capability showcase */
649
824
  &::after {
650
825
  content: "";
651
826
  position: absolute;
@@ -701,6 +876,20 @@
701
876
  line-height: 1.65;
702
877
  margin: 0 0 24px 0;
703
878
  }
879
+
880
+ &::after {
881
+ content: "";
882
+ display: block;
883
+ width: 42px;
884
+ height: 1px;
885
+ margin-top: 18px;
886
+ background: linear-gradient(
887
+ 90deg,
888
+ var(--viking-accent),
889
+ transparent
890
+ );
891
+ opacity: 0.35;
892
+ }
704
893
  }
705
894
 
706
895
  .showcase-link {
@@ -727,8 +916,33 @@
727
916
  background: var(--color-surface);
728
917
  border: 1px solid var(--border);
729
918
  border-radius: var(--viking-radius-xl, 16px);
730
- padding: 28px;
919
+ padding: var(--viking-card-padding, var(--viking-space-4));
731
920
  box-shadow: var(--shadow-md);
921
+ position: relative;
922
+ overflow: hidden;
923
+
924
+ &::before {
925
+ content: "";
926
+ position: absolute;
927
+ inset: 0;
928
+ border: 1px solid color-mix(in srgb, var(--viking-metallic-500) 24%, transparent);
929
+ border-radius: inherit;
930
+ box-shadow: inset 0 1px 0 color-mix(in srgb, var(--viking-white) 6%, transparent);
931
+ pointer-events: none;
932
+ }
933
+
934
+ &::after {
935
+ content: "";
936
+ position: absolute;
937
+ top: 0;
938
+ left: 18px;
939
+ width: 36px;
940
+ height: 12px;
941
+ border-bottom: 1px solid color-mix(in srgb, var(--viking-accent) 35%, transparent);
942
+ border-left: 1px solid color-mix(in srgb, var(--viking-accent) 18%, transparent);
943
+ opacity: 0.45;
944
+ pointer-events: none;
945
+ }
732
946
  }
733
947
 
734
948
  .visual-panel-header {
@@ -752,12 +966,12 @@
752
966
  .visual-metrics {
753
967
  display: grid;
754
968
  grid-template-columns: 1fr;
755
- gap: 12px;
756
- margin-bottom: 24px;
969
+ gap: var(--viking-space-2);
970
+ margin-bottom: var(--viking-space-3);
757
971
 
758
972
  @media (min-width: 600px) {
759
973
  grid-template-columns: repeat(2, 1fr);
760
- gap: 16px;
974
+ gap: var(--viking-space-2);
761
975
  }
762
976
 
763
977
  @media (min-width: 900px) {
@@ -766,11 +980,17 @@
766
980
  }
767
981
 
768
982
  .visual-metric {
769
- background: color-mix(in srgb, var(--viking-charcoal-900) 35%, var(--color-surface));
983
+ background: color-mix(
984
+ in srgb,
985
+ var(--viking-charcoal-900) 35%,
986
+ var(--color-surface)
987
+ );
770
988
  border: 1px solid var(--border);
771
989
  border-radius: var(--viking-radius-lg);
772
- padding: 16px;
990
+ padding: var(--viking-card-padding-compact, var(--viking-space-3));
773
991
  position: relative;
992
+ border-color: color-mix(in srgb, var(--viking-accent) 12%, var(--border));
993
+ box-shadow: var(--shadow-sm);
774
994
 
775
995
  .metric-label {
776
996
  display: block;
@@ -818,12 +1038,12 @@
818
1038
 
819
1039
  /* ── Widget showcase ── */
820
1040
  .widget-showcase {
821
- padding: 72px 0;
1041
+ padding: var(--viking-space-9) 0;
822
1042
  border-bottom: 1px solid var(--border);
823
1043
  position: relative;
824
1044
  }
825
1045
 
826
- /* pola.rs-inspired double divider accent */
1046
+ /* Structured double divider accent */
827
1047
  .widget-showcase::after {
828
1048
  content: "";
829
1049
  position: absolute;
@@ -844,12 +1064,12 @@
844
1064
  .widget-showcase-inner {
845
1065
  display: grid;
846
1066
  grid-template-columns: 1fr;
847
- gap: 40px;
1067
+ gap: var(--viking-space-5);
848
1068
  align-items: center;
849
1069
 
850
1070
  @media (min-width: 900px) {
851
1071
  grid-template-columns: 1fr 1fr;
852
- gap: 64px;
1072
+ gap: var(--viking-space-8);
853
1073
  }
854
1074
  }
855
1075
 
@@ -902,19 +1122,42 @@
902
1122
  background: var(--color-surface);
903
1123
  border: 1px solid var(--border);
904
1124
  border-radius: var(--viking-radius-xl, 16px);
905
- padding: 32px;
1125
+ padding: var(--viking-card-padding, var(--viking-space-4));
906
1126
  box-shadow: var(--shadow-md);
1127
+ position: relative;
1128
+ overflow: hidden;
1129
+ border-color: color-mix(in srgb, var(--viking-border-strong) 85%, transparent);
1130
+
1131
+ &::before {
1132
+ content: "";
1133
+ position: absolute;
1134
+ inset: 0;
1135
+ pointer-events: none;
1136
+ background:
1137
+ radial-gradient(
1138
+ 140px 42px at 16px 0,
1139
+ color-mix(in srgb, var(--viking-accent) 10%, transparent),
1140
+ transparent
1141
+ ),
1142
+ linear-gradient(
1143
+ 90deg,
1144
+ transparent,
1145
+ color-mix(in srgb, var(--viking-accent-strong) 16%, transparent),
1146
+ transparent
1147
+ );
1148
+ opacity: 0.35;
1149
+ }
907
1150
  }
908
1151
 
909
1152
  /* ── Pricing ── */
910
1153
  .pricing-showcase {
911
- padding: 72px 0;
1154
+ padding: var(--viking-space-9) 0;
912
1155
  text-align: center;
913
1156
  border-bottom: 1px solid var(--border);
914
1157
  position: relative;
915
1158
  }
916
1159
 
917
- /* pola.rs-inspired double divider accent */
1160
+ /* Structured double divider accent */
918
1161
  .pricing-showcase::after {
919
1162
  content: "";
920
1163
  position: absolute;
@@ -933,7 +1176,7 @@
933
1176
  }
934
1177
 
935
1178
  .pricing-header {
936
- margin-bottom: 48px;
1179
+ margin-bottom: var(--viking-page-section-gap, var(--viking-space-6));
937
1180
 
938
1181
  .section-tag {
939
1182
  font-size: 0.85rem;
@@ -960,7 +1203,7 @@
960
1203
 
961
1204
  .pricing-cards-container {
962
1205
  display: flex;
963
- gap: 2rem;
1206
+ gap: var(--viking-space-4);
964
1207
  flex-direction: column;
965
1208
  align-items: center;
966
1209
  justify-content: center;
@@ -977,10 +1220,13 @@
977
1220
  width: 100%;
978
1221
  min-width: 0;
979
1222
  max-width: 100%;
980
- padding: 2.5rem 2rem;
981
- border-radius: 1.5rem;
1223
+ padding: var(--viking-space-5) var(--viking-card-padding);
1224
+ border-radius: var(--viking-radius-xl);
982
1225
  background: var(--color-surface);
983
1226
  border: 1px solid var(--border);
1227
+ box-shadow: var(--shadow-sm);
1228
+ position: relative;
1229
+ overflow: hidden;
984
1230
  transition:
985
1231
  transform 0.3s ease,
986
1232
  box-shadow 0.3s ease;
@@ -996,16 +1242,34 @@
996
1242
  }
997
1243
 
998
1244
  &:hover {
999
- transform: translateY(-8px);
1245
+ transform: translateY(-2px);
1246
+ border-color: var(--viking-accent);
1000
1247
  box-shadow: var(--shadow-hover);
1001
1248
  }
1002
1249
 
1250
+ &::before {
1251
+ content: "";
1252
+ position: absolute;
1253
+ left: 0;
1254
+ right: 0;
1255
+ top: 0;
1256
+ height: 1px;
1257
+ background: linear-gradient(
1258
+ 90deg,
1259
+ color-mix(in srgb, var(--viking-accent) 24%, transparent),
1260
+ transparent
1261
+ );
1262
+ opacity: 0.45;
1263
+ pointer-events: none;
1264
+ }
1265
+
1003
1266
  h3 {
1004
1267
  font-size: 1.1rem;
1005
1268
  color: var(--text-muted);
1006
1269
  margin: 0;
1007
1270
  text-transform: uppercase;
1008
1271
  letter-spacing: 0.1em;
1272
+ font-weight: var(--viking-font-weight-semibold);
1009
1273
  }
1010
1274
 
1011
1275
  .price {
@@ -1057,6 +1321,7 @@
1057
1321
  var(--viking-accent) 6%,
1058
1322
  var(--color-surface)
1059
1323
  );
1324
+ box-shadow: inset 0 1px 0 color-mix(in srgb, var(--viking-white) 8%, transparent);
1060
1325
 
1061
1326
  .recommended-badge {
1062
1327
  position: absolute;
@@ -1159,7 +1424,8 @@
1159
1424
  padding: 64px 24px;
1160
1425
  position: relative;
1161
1426
  z-index: 10;
1162
- border-top: 1px solid color-mix(in srgb, var(--viking-accent) 25%, transparent);
1427
+ border-top: 1px solid
1428
+ color-mix(in srgb, var(--viking-accent) 25%, transparent);
1163
1429
  display: flex;
1164
1430
  flex-direction: column;
1165
1431
  align-items: center;
@@ -1249,7 +1515,7 @@
1249
1515
  }
1250
1516
 
1251
1517
  /* Inline Viking SVG icons must not clip in marketing pages */
1252
- .landing-container svg[aria-hidden='true'] {
1518
+ .landing-container svg[aria-hidden="true"] {
1253
1519
  overflow: visible;
1254
1520
  line-height: 1;
1255
1521
  display: inline-flex;
@@ -8,7 +8,7 @@ body.backend-swagger {
8
8
  }
9
9
 
10
10
  .backend-swagger-shell {
11
- padding-block: var(--viking-space-3) var(--viking-space-6);
11
+ padding-block: var(--viking-space-6) var(--viking-space-8);
12
12
  }
13
13
 
14
14
  /* ── VikingCard panel wrapping Swagger UI ──────────────────────────────────── */
@@ -26,7 +26,7 @@ body.backend-swagger {
26
26
  }
27
27
 
28
28
  .backend-swagger-toolbar {
29
- padding: var(--viking-space-2) var(--viking-space-3);
29
+ padding: var(--viking-space-3) var(--viking-card-padding);
30
30
  border-bottom: 1px solid var(--viking-border);
31
31
  background: color-mix(in srgb, var(--viking-surface-alt) 40%, transparent);
32
32
  }
@@ -41,7 +41,8 @@ body.backend-swagger {
41
41
  }
42
42
 
43
43
  .backend-swagger-panel #swagger-ui {
44
- padding: 0 var(--viking-space-3) var(--viking-space-3);
44
+ padding: var(--viking-space-2) var(--viking-card-padding)
45
+ var(--viking-card-padding);
45
46
  }
46
47
 
47
48
  .swagger-ui .opblock .opblock-summary {
@@ -290,7 +291,7 @@ body.backend-swagger {
290
291
  .swagger-ui .opblock .opblock-summary {
291
292
  border: none;
292
293
  background: transparent !important;
293
- padding: var(--viking-space-2, 16px) 0;
294
+ padding: var(--viking-space-3, 24px) 0;
294
295
  }
295
296
 
296
297
  .swagger-ui .opblock.is-open .opblock-summary {
@@ -411,7 +412,7 @@ body.backend-swagger {
411
412
  }
412
413
 
413
414
  .swagger-ui .opblock-body {
414
- padding: var(--viking-space-2, 16px) 0;
415
+ padding: var(--viking-space-3, 24px) 0;
415
416
  }
416
417
 
417
418
  .swagger-ui .opblock-description-wrapper,
@@ -422,7 +423,7 @@ body.backend-swagger {
422
423
  font-family: inherit;
423
424
  font-size: 0.88rem;
424
425
  margin: 0;
425
- padding: var(--viking-space-1, 8px) 0;
426
+ padding: var(--viking-space-2, 16px) 0;
426
427
  }
427
428
 
428
429
  .swagger-ui .opblock-description-wrapper h4,
@@ -438,7 +439,7 @@ body.backend-swagger {
438
439
 
439
440
  .swagger-ui .table-container {
440
441
  background: transparent;
441
- padding: var(--viking-space-1, 8px) 0;
442
+ padding: var(--viking-space-2, 16px) 0;
442
443
  }
443
444
 
444
445
  .swagger-ui .parameters-col_description,
@@ -634,7 +635,7 @@ body.backend-swagger {
634
635
  color: var(--viking-text, var(--text-color));
635
636
  font-family: var(--viking-font-family-mono, "JetBrains Mono", monospace);
636
637
  font-size: 0.88rem;
637
- min-height: 32px;
638
+ min-height: var(--viking-control-height, 44px);
638
639
  padding: var(--viking-space-1, 8px) var(--viking-space-2, 16px);
639
640
  }
640
641