@dataengineeringformachinelearning/viking-ui 1.0.1 → 3.0.0-alpha.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.
Files changed (129) hide show
  1. package/README.md +180 -37
  2. package/dist/deml-components.css +1122 -0
  3. package/dist/design-tokens.css +688 -0
  4. package/dist/elements/button/viking-button.d.ts +14 -0
  5. package/dist/elements/card/viking-card.d.ts +8 -0
  6. package/dist/elements/core/dom.d.ts +4 -0
  7. package/dist/elements/core/styles.d.ts +2 -0
  8. package/dist/elements/modal/viking-modal.d.ts +15 -0
  9. package/dist/fonts/inter/InterVariable-Italic.woff2 +0 -0
  10. package/dist/fonts/inter/InterVariable.woff2 +0 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.js +4051 -0
  13. package/dist/lib/core/brand-icons.d.ts +29 -0
  14. package/dist/lib/core/icons.d.ts +132 -0
  15. package/dist/lib/core/integration-brand-icons.d.ts +18 -0
  16. package/dist/lib/core/lucide-paths.generated.d.ts +90 -0
  17. package/dist/lib/site-drakkar/site-drakkar.config.d.ts +50 -0
  18. package/dist/lib/site-drakkar/suite-search-items.d.ts +17 -0
  19. package/dist/viking-components.css +1837 -0
  20. package/dist/viking-tokens.json +318 -0
  21. package/dist/viking-ui-elements.js +1750 -0
  22. package/dist/viking-ui.css +1 -0
  23. package/dist/web/badge/viking-badge-wc.d.ts +28 -0
  24. package/dist/web/button/viking-button-wc.d.ts +28 -0
  25. package/dist/web/callout/viking-callout-wc.d.ts +27 -0
  26. package/dist/web/card/viking-card-wc.d.ts +29 -0
  27. package/dist/web/core/base.d.ts +12 -0
  28. package/dist/web/core/dom.d.ts +11 -0
  29. package/dist/web/core/icons-inline.d.ts +7 -0
  30. package/dist/web/core/styles.d.ts +12 -0
  31. package/dist/web/core/types.d.ts +10 -0
  32. package/dist/web/field/viking-field-wc.d.ts +32 -0
  33. package/dist/web/index.d.ts +15 -0
  34. package/dist/web/input/viking-input-wc.d.ts +32 -0
  35. package/dist/web/modal/viking-modal-wc.d.ts +50 -0
  36. package/dist/web/search-palette/viking-search-palette-wc.d.ts +64 -0
  37. package/dist/web/select/viking-select-wc.d.ts +48 -0
  38. package/dist/web/suite-header/viking-suite-header-wc.d.ts +36 -0
  39. package/dist/web/suite-search-palette/viking-suite-search-palette-wc.d.ts +39 -0
  40. package/dist/web/theme-toggle/viking-theme-toggle-wc.d.ts +19 -0
  41. package/dist/web/types.d.ts +40 -0
  42. package/dist/web-components/index.d.ts +1 -0
  43. package/dist/web-components.js +1750 -0
  44. package/dist/widget.js +1182 -0
  45. package/package.json +89 -30
  46. package/src/assets/fonts/inter/InterVariable-Italic.woff2 +0 -0
  47. package/src/assets/fonts/inter/InterVariable.woff2 +0 -0
  48. package/src/elements/button/viking-button.ts +201 -0
  49. package/src/elements/card/viking-card.ts +60 -0
  50. package/src/elements/core/dom.ts +33 -0
  51. package/src/elements/core/styles.ts +28 -0
  52. package/src/elements/modal/viking-modal.ts +154 -0
  53. package/src/index.ts +1 -0
  54. package/src/lib/core/brand-icons.ts +62 -0
  55. package/src/lib/core/icons.ts +206 -0
  56. package/src/lib/core/integration-brand-icons.ts +77 -0
  57. package/src/lib/core/lucide-paths.generated.ts +130 -0
  58. package/src/lib/site-drakkar/site-drakkar.config.ts +295 -0
  59. package/src/lib/site-drakkar/suite-search-items.ts +246 -0
  60. package/src/styles/_buttons.scss +301 -0
  61. package/src/styles/_component-primitives.scss +183 -0
  62. package/src/styles/_drakkar-buttons.scss +85 -0
  63. package/src/styles/_fonts.scss +22 -0
  64. package/src/styles/_forms.scss +66 -0
  65. package/src/styles/_input.scss +106 -0
  66. package/src/styles/_layout-enforcement.scss +166 -0
  67. package/src/styles/_layout-rhythm.scss +158 -0
  68. package/src/styles/_legacy-aliases.scss +212 -0
  69. package/src/styles/_series-colors.scss +24 -0
  70. package/src/styles/_static-primitives.scss +857 -0
  71. package/src/styles/_typography.scss +87 -0
  72. package/src/styles/_variables.scss +527 -0
  73. package/src/styles/components/a11y.scss +90 -0
  74. package/src/styles/components/badges.scss +102 -0
  75. package/src/styles/components/extracted-utilities.scss +459 -0
  76. package/src/styles/components/footer.scss +155 -0
  77. package/src/styles/components/icon-heading.scss +47 -0
  78. package/src/styles/components/icon-inline.scss +78 -0
  79. package/src/styles/components/layout.scss +59 -0
  80. package/src/styles/components/utilities.scss +131 -0
  81. package/src/styles/components/viking-inspired.scss +204 -0
  82. package/src/styles/components/whitepaper-cta.scss +130 -0
  83. package/src/styles/components-bundle.scss +9 -0
  84. package/src/styles/components.scss +175 -0
  85. package/src/styles/deml-components.scss +10 -0
  86. package/src/styles/index.scss +8 -0
  87. package/src/styles/layout-shell.scss +39 -11
  88. package/src/styles/page-shell.scss +663 -33
  89. package/src/styles/static-navbar.scss +862 -146
  90. package/src/styles/surfaces/backend.scss +142 -0
  91. package/src/styles/surfaces/docs-global.scss +73 -0
  92. package/src/styles/surfaces/docs-shell.scss +412 -0
  93. package/src/styles/surfaces/docs-showcase.scss +1051 -0
  94. package/src/styles/surfaces/marketing-cta.scss +62 -0
  95. package/src/styles/surfaces/marketing-docs-bento.scss +67 -0
  96. package/src/styles/surfaces/marketing-global.scss +748 -0
  97. package/src/styles/surfaces/marketing-landing.scss +1260 -0
  98. package/src/styles/surfaces/marketing-publication.scss +535 -0
  99. package/src/styles/surfaces/marketing-theme.scss +14 -0
  100. package/src/styles/surfaces/swagger-ui.scss +921 -0
  101. package/src/styles/tokens-export.scss +18 -0
  102. package/src/styles/tokens.scss +5 -0
  103. package/src/styles/viking-ui-bundle.scss +21 -2
  104. package/src/styles/viking-ui.scss +213 -51
  105. package/src/tokens/viking-tokens.json +318 -0
  106. package/src/web/badge/viking-badge-wc.ts +116 -0
  107. package/src/web/button/viking-button-wc.ts +165 -0
  108. package/src/web/callout/viking-callout-wc.ts +105 -0
  109. package/src/web/card/viking-card-wc.ts +66 -0
  110. package/src/web/core/base.ts +56 -0
  111. package/src/web/core/dom.ts +53 -0
  112. package/src/web/core/icons-inline.ts +44 -0
  113. package/src/web/core/styles.ts +1138 -0
  114. package/src/web/core/types.ts +19 -0
  115. package/src/web/field/viking-field-wc.ts +154 -0
  116. package/src/web/index.ts +73 -0
  117. package/src/web/input/viking-input-wc.ts +211 -0
  118. package/src/web/modal/viking-modal-wc.ts +187 -0
  119. package/src/web/search-palette/viking-search-palette-wc.ts +494 -0
  120. package/src/web/select/viking-select-wc.ts +218 -0
  121. package/src/web/suite-header/viking-suite-header-wc.ts +714 -0
  122. package/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +234 -0
  123. package/src/web/theme-toggle/viking-theme-toggle-wc.ts +139 -0
  124. package/src/web/types.ts +37 -0
  125. package/src/web-components/index.ts +1 -0
  126. package/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +0 -5949
  127. package/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +0 -1
  128. package/types/dataengineeringformachinelearning-viking-ui.d.ts +0 -1374
  129. package/viking.manifest.json +0 -189
@@ -0,0 +1,688 @@
1
+ @charset "UTF-8";
2
+ /*! DEML Design Tokens — compiled from Viking-UI canonical tokens.
3
+ * Static CSS: npm run build:viking-ui:package */
4
+ /*! DEML Design Tokens — canonical source: packages/viking-ui/src/styles/_variables.scss
5
+ * Static CSS: npm run build:viking-ui:package (or python scripts/sync_design_system.py) */
6
+ :root {
7
+ color-scheme: dark light;
8
+ /* ── Deep navy surfaces (Lockheed × SpaceX precision aesthetic) ──────── */
9
+ --viking-navy-1000: #01030a;
10
+ --viking-navy-950: #030818;
11
+ --viking-navy-900: #0a1024;
12
+ --viking-navy-800: #101b33;
13
+ --viking-navy-700: #162544;
14
+ --viking-navy-600: #1e3054;
15
+ --viking-navy-500: #284068;
16
+ --viking-navy-400: #39547f;
17
+ --viking-navy-300: #58719e;
18
+ --viking-navy-200: #8fa2c2;
19
+ --viking-navy-100: #d7e0ef;
20
+ /* ── Electric blue accents (primary CTA, focus, links) ───────────────── */
21
+ --viking-electric-900: #04225f;
22
+ --viking-electric-800: #073a99;
23
+ --viking-electric-700: #0a4fd4;
24
+ --viking-electric-600: #1565f0;
25
+ --viking-electric-500: #2176ff;
26
+ --viking-electric-400: #4d94ff;
27
+ --viking-electric-300: #7ab0ff;
28
+ --viking-electric-200: #b6d3ff;
29
+ --viking-electric-100: #e7f1ff;
30
+ /* ── Charcoal surfaces (legacy alias — maps to navy in semantic tokens) ─ */
31
+ --viking-charcoal-950: var(--viking-navy-950);
32
+ --viking-charcoal-900: var(--viking-navy-900);
33
+ --viking-charcoal-800: var(--viking-navy-800);
34
+ --viking-charcoal-700: var(--viking-navy-700);
35
+ --viking-charcoal-600: var(--viking-navy-600);
36
+ --viking-charcoal-500: var(--viking-navy-500);
37
+ --viking-charcoal-400: var(--viking-navy-400);
38
+ --viking-charcoal-300: var(--viking-navy-300);
39
+ --viking-charcoal-200: var(--viking-navy-200);
40
+ --viking-charcoal-100: var(--viking-navy-100);
41
+ /* ── Metallic accents (borders, dividers, subtle depth) ────────────────── */
42
+ --viking-metallic-600: #555555;
43
+ --viking-metallic-500: #666666;
44
+ --viking-metallic-400: #777777;
45
+ --viking-metallic-300: #999999;
46
+ --viking-metallic-200: #aaaaaa;
47
+ --viking-metallic-100: #bbbbbb;
48
+ --viking-metallic-050: #e6e8ec;
49
+ /* ── Primary accent — electric blue (CTAs, focus, links) ───────────────── */
50
+ --viking-teal-700: var(--viking-electric-700);
51
+ --viking-teal-600: var(--viking-electric-600);
52
+ --viking-teal-500: var(--viking-electric-500);
53
+ --viking-teal-400: var(--viking-electric-400);
54
+ --viking-teal-300: var(--viking-electric-300);
55
+ /* ── Secondary accent — rich crimson (emphasis, destructive) ───────────── */
56
+ --viking-crimson-700: #7a2231;
57
+ --viking-crimson-600: #922b3e;
58
+ --viking-crimson-500: #a83344;
59
+ --viking-crimson-400: #c44355;
60
+ --viking-crimson-300: #dc6b78;
61
+ --viking-crimson-100: #fde8ec;
62
+ /* ── Refined accents — data, info, and product moments ────────────────── */
63
+ --viking-cyan-600: #168aad;
64
+ --viking-cyan-500: #1fa2c9;
65
+ --viking-cyan-400: #47bee0;
66
+ --viking-violet-600: #6f5bd7;
67
+ --viking-violet-500: #8674f0;
68
+ --viking-amber-600: #a77912;
69
+ --viking-amber-500: #d69e2e;
70
+ /* ── Status (refined for premium palette) ──────────────────────────────── */
71
+ --viking-green-500: #2a9d8f;
72
+ --viking-gold-500: #c4a035;
73
+ /* Info / chart series 6 — electric blue family */
74
+ --viking-blue-500: var(--viking-electric-400);
75
+ --viking-red-500: var(--viking-crimson-500);
76
+ /* ── Neutrals ──────────────────────────────────────────────────────────── */
77
+ --viking-ink-1000: #000000;
78
+ --viking-ink-950: #050609;
79
+ --viking-ink-900: #0c0f14;
80
+ --viking-ink-800: #151a22;
81
+ --viking-ink-700: #202735;
82
+ --viking-slate-100: #f4f7fb;
83
+ --viking-slate-050: #fbfcfe;
84
+ --viking-white: #f5f5f5;
85
+ --viking-white-pure: #ffffff;
86
+ --viking-black: #000000;
87
+ /* ── Spacing — 8px scale with 4px micro-grid aliases preserved ─────────── */
88
+ --viking-grid-unit: 4px;
89
+ --viking-space-unit: 8px;
90
+ --viking-space-0: 0;
91
+ --viking-space-px: 1px;
92
+ --viking-space-half: 4px;
93
+ --viking-space-0-5: 4px;
94
+ --viking-space-1: 8px;
95
+ --viking-space-1-5: 12px;
96
+ --viking-space-2: 16px;
97
+ --viking-space-2-5: 20px;
98
+ --viking-space-3: 24px;
99
+ --viking-space-4: 32px;
100
+ --viking-space-5: 40px;
101
+ --viking-space-6: 48px;
102
+ --viking-space-7: 56px;
103
+ --viking-space-8: 64px;
104
+ --viking-space-8-5: 72px;
105
+ --viking-space-9: 80px;
106
+ --viking-space-10: 96px;
107
+ --viking-space-11: 112px;
108
+ --viking-space-12: 128px;
109
+ --viking-space-14: 160px;
110
+ --viking-space-16: 192px;
111
+ --viking-space-20: 256px;
112
+ --viking-space-24: 320px;
113
+ /* ── Typography (Inter self-hosted — see _fonts.scss) ───────────────────── */
114
+ --viking-font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto,
115
+ 'Helvetica Neue', Arial, sans-serif;
116
+ --viking-font-family-mono: ui-monospace, 'JetBrains Mono', 'SF Mono', 'Cascadia Code', Consolas,
117
+ monospace;
118
+ --viking-font-size-2xs: 11px;
119
+ --viking-font-size-xs: 12px;
120
+ --viking-font-size-sm: 14px;
121
+ --viking-font-size-base: 16px;
122
+ --viking-font-size-md: 18px;
123
+ --viking-font-size-lg: 20px;
124
+ --viking-font-size-xl: 24px;
125
+ --viking-font-size-2xl: 30px;
126
+ --viking-font-size-3xl: 36px;
127
+ --viking-font-size-4xl: 48px;
128
+ --viking-font-size-5xl: 60px;
129
+ --viking-font-size-6xl: 72px;
130
+ --viking-font-weight-regular: 400;
131
+ --viking-font-weight-medium: 500;
132
+ --viking-font-weight-semibold: 600;
133
+ --viking-font-weight-bold: 700;
134
+ --viking-font-weight-extrabold: 800;
135
+ --viking-line-height-none: 1;
136
+ --viking-line-height-tight: 1.25;
137
+ --viking-line-height-snug: 1.375;
138
+ --viking-line-height-normal: 1.5;
139
+ --viking-line-height-relaxed: 1.625;
140
+ --viking-line-height-loose: 1.75;
141
+ --viking-letter-spacing-tighter: -0.03em;
142
+ --viking-letter-spacing-tight: -0.02em;
143
+ --viking-letter-spacing-normal: 0;
144
+ --viking-letter-spacing-wide: 0.025em;
145
+ --viking-letter-spacing-wider: 0.05em;
146
+ --viking-letter-spacing-caps: 0.08em;
147
+ --viking-type-caption:
148
+ var(--viking-font-weight-medium) var(--viking-font-size-xs) /
149
+ var(--viking-line-height-normal) var(--viking-font-family);
150
+ --viking-type-body-sm:
151
+ var(--viking-font-weight-regular) var(--viking-font-size-sm) /
152
+ var(--viking-line-height-normal) var(--viking-font-family);
153
+ --viking-type-body:
154
+ var(--viking-font-weight-regular) var(--viking-font-size-base) /
155
+ var(--viking-line-height-normal) var(--viking-font-family);
156
+ --viking-type-body-lg:
157
+ var(--viking-font-weight-regular) var(--viking-font-size-md) /
158
+ var(--viking-line-height-relaxed) var(--viking-font-family);
159
+ --viking-type-heading-sm:
160
+ var(--viking-font-weight-semibold) var(--viking-font-size-lg) /
161
+ var(--viking-line-height-tight) var(--viking-font-family);
162
+ --viking-type-heading:
163
+ var(--viking-font-weight-bold) var(--viking-font-size-2xl) /
164
+ var(--viking-line-height-tight) var(--viking-font-family);
165
+ --viking-type-display:
166
+ var(--viking-font-weight-extrabold) var(--viking-font-size-4xl) /
167
+ var(--viking-line-height-none) var(--viking-font-family);
168
+ /* ── Border radius — 6–12px premium feel ─────────────────────────────────── */
169
+ --viking-radius-xs: 4px;
170
+ --viking-radius-sm: 6px;
171
+ --viking-radius: 8px;
172
+ --viking-radius-md: 10px;
173
+ --viking-radius-lg: 12px;
174
+ --viking-radius-xl: 16px;
175
+ --viking-radius-2xl: 24px;
176
+ --viking-radius-pill: 999px;
177
+ --viking-radius-full: var(--viking-radius-pill);
178
+ /* ── Elevation — soft shadows with subtle metallic top-edge ──────────────── */
179
+ --viking-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
180
+ --viking-shadow-sm:
181
+ 0 1px 2px rgba(0, 0, 0, 0.18), 0 1px 3px rgba(0, 0, 0, 0.12),
182
+ inset 0 1px 0 rgba(255, 255, 255, 0.04);
183
+ --viking-shadow-md:
184
+ 0 2px 4px rgba(0, 0, 0, 0.16), 0 4px 8px rgba(0, 0, 0, 0.12),
185
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
186
+ --viking-shadow-lg:
187
+ 0 4px 8px rgba(0, 0, 0, 0.14), 0 12px 24px rgba(0, 0, 0, 0.18),
188
+ inset 0 1px 0 rgba(255, 255, 255, 0.06);
189
+ --viking-shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.14);
190
+ --viking-shadow-hover:
191
+ 0 8px 16px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.1),
192
+ inset 0 1px 0 rgba(255, 255, 255, 0.06);
193
+ --viking-shadow-focus: 0 0 0 var(--viking-ring-offset) var(--viking-bg),
194
+ 0 0 0 calc(var(--viking-ring-offset) + var(--viking-ring-width)) var(--viking-ring);
195
+ --viking-surface-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.06);
196
+ /* ── Chart scale — unified responsive min/max (matches 720×240 SVG viewBox) ─ */
197
+ --viking-chart-ratio: 3 / 1;
198
+ --viking-chart-min-height: clamp(9.5rem, 22vw, 12rem);
199
+ --viking-chart-max-height: clamp(13rem, 36vw, 17.5rem);
200
+ --viking-chart-fill-min-height: clamp(18rem, 36vw, 20rem);
201
+ --viking-chart-fill-max-height: none;
202
+ --viking-chart-fill-min-height-lg: clamp(20rem, 40vw, 22rem);
203
+ --viking-chart-fill-max-height-lg: none;
204
+ --viking-chart-empty-min-height: var(--viking-chart-fill-min-height);
205
+ --viking-chart-empty-min-height-lg: var(--viking-chart-fill-min-height-lg);
206
+ --viking-chart-panel-min-height-md: 26rem;
207
+ --viking-chart-panel-min-height-lg: 30rem;
208
+ --viking-chart-panel-body-min-height-md: 22rem;
209
+ --viking-chart-panel-body-min-height-lg: 25rem;
210
+ --viking-chart-sparkline-height: 2.5rem;
211
+ --viking-chart-map-min-height: 22.5rem;
212
+ /* ── Breakpoints (mobile-first) ─────────────────────────────────────────── */
213
+ --viking-bp-sm: 600px;
214
+ --viking-bp-md: 768px;
215
+ --viking-bp-sidebar: 901px;
216
+ --viking-bp-lg: 1024px;
217
+ --viking-bp-xl: 1440px;
218
+ --viking-bp-2xl: 1920px;
219
+ /* ── Motion ──────────────────────────────────────────────────────────────── */
220
+ --viking-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
221
+ --viking-ease-in: cubic-bezier(0.4, 0, 1, 1);
222
+ --viking-ease-out: cubic-bezier(0, 0, 0.2, 1);
223
+ --viking-ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
224
+ --viking-duration-instant: 75ms;
225
+ --viking-duration-fast: 150ms;
226
+ --viking-duration: 250ms;
227
+ --viking-duration-slow: 350ms;
228
+ --viking-duration-slower: 500ms;
229
+ --viking-transition-colors:
230
+ color var(--viking-duration) var(--viking-ease-default),
231
+ background-color var(--viking-duration) var(--viking-ease-default),
232
+ border-color var(--viking-duration) var(--viking-ease-default),
233
+ box-shadow var(--viking-duration) var(--viking-ease-default),
234
+ fill var(--viking-duration) var(--viking-ease-default),
235
+ stroke var(--viking-duration) var(--viking-ease-default);
236
+ --viking-transition-interactive:
237
+ color var(--viking-duration) var(--viking-ease-default),
238
+ background-color var(--viking-duration) var(--viking-ease-default),
239
+ border-color var(--viking-duration) var(--viking-ease-default),
240
+ box-shadow var(--viking-duration) var(--viking-ease-default),
241
+ fill var(--viking-duration) var(--viking-ease-default),
242
+ stroke var(--viking-duration) var(--viking-ease-default),
243
+ transform var(--viking-duration) var(--viking-ease-default),
244
+ opacity var(--viking-duration) var(--viking-ease-default);
245
+ --viking-transition: all var(--viking-duration) var(--viking-ease-default);
246
+ --viking-transition-fast: all var(--viking-duration-fast) var(--viking-ease-default);
247
+ --viking-transition-transform: transform var(--viking-duration) var(--viking-ease-emphasized);
248
+ /* ── Interactive state ───────────────────────────────────────────────────── */
249
+ --viking-state-hover-lift: -1px;
250
+ --viking-state-active-scale: 0.985;
251
+ --viking-state-disabled-opacity: 0.48;
252
+ /* ── Controls ──────────────────────────────────────────────────────────── */
253
+ --viking-control-height: 44px;
254
+ --viking-control-height-sm: 32px;
255
+ --viking-control-height-xs: 24px;
256
+ --viking-touch-target-min: 44px;
257
+ --viking-control-padding-x: var(--viking-space-2);
258
+ --viking-btn-min-width: 120px;
259
+ --viking-select-panel-bg: var(--viking-surface-raised);
260
+ --viking-select-half-max-width: min(100%, 24rem);
261
+ /* ── Layout ────────────────────────────────────────────────────────────── */
262
+ --viking-container-max-width: 1260px;
263
+ --viking-navbar-height: 64px;
264
+ --viking-sidebar-width: 256px;
265
+ /* ── Layout rhythm — premium spacing enforcement (THEME.md §3) ─────────── */
266
+ --viking-page-gutter: var(--viking-space-3);
267
+ --viking-page-gutter-lg: var(--viking-space-4);
268
+ --viking-page-gutter-xl: var(--viking-space-6);
269
+ --viking-page-stack-gap: var(--viking-space-4);
270
+ --viking-page-section-gap: var(--viking-space-6);
271
+ --viking-section-padding-y: var(--viking-space-8);
272
+ --viking-section-padding-y-compact: var(--viking-space-5);
273
+ --viking-card-padding: var(--viking-space-4);
274
+ --viking-card-padding-compact: var(--viking-space-3);
275
+ --viking-panel-padding: var(--viking-space-4);
276
+ --viking-panel-header-padding: var(--viking-space-3) var(--viking-space-4);
277
+ --viking-form-max-width: 42rem;
278
+ --viking-form-narrow-max-width: 28rem;
279
+ --viking-content-readable-max-width: 48rem;
280
+ --viking-card-min-width: 0;
281
+ --viking-card-max-width: none;
282
+ --viking-metric-card-min-height: 6.5rem;
283
+ --viking-metric-card-tall-min-height: 8.25rem;
284
+ --viking-metric-card-min-width: 10rem;
285
+ --viking-surface-hairline-strength: 22%;
286
+ /* ── Layering ────────────────────────────────────────────────────────────── */
287
+ --viking-z-overlay: 1000;
288
+ --viking-z-toast: 1100;
289
+ --viking-z-tooltip: 1200;
290
+ /* ── Chart ───────────────────────────────────────────────────────────────── */
291
+ --viking-chart-axis-size: 12px;
292
+ /* ── Icons ─────────────────────────────────────────────────────────────────── */
293
+ --viking-icon-size-sm: 16px;
294
+ --viking-icon-size-md: 20px;
295
+ --viking-icon-size-lg: 24px;
296
+ --viking-icon-stroke-width: 1.75;
297
+ --viking-icon-stroke-width-sm: 1.5;
298
+ }
299
+
300
+ /* ── Dark mode (default) ─────────────────────────────────────────────────── */
301
+ :root,
302
+ html[data-theme=dark] {
303
+ color-scheme: dark;
304
+ --viking-bg: var(--viking-charcoal-900);
305
+ --viking-bg-subtle: var(--viking-ink-950);
306
+ --viking-bg-inverted: var(--viking-white-pure);
307
+ --viking-surface: var(--viking-charcoal-800);
308
+ --viking-surface-alt: var(--viking-charcoal-700);
309
+ --viking-surface-inset: var(--viking-charcoal-950);
310
+ --viking-surface-raised: var(--viking-charcoal-600);
311
+ --viking-surface-overlay: var(--viking-ink-800);
312
+ --viking-text: var(--viking-white);
313
+ --viking-text-muted: var(--viking-metallic-200);
314
+ --viking-text-subtle: var(--viking-metallic-300);
315
+ --viking-text-disabled: var(--viking-metallic-400);
316
+ --viking-text-link: var(--viking-electric-300);
317
+ --viking-text-link-hover: var(--viking-electric-200);
318
+ --viking-text-inverted: var(--viking-charcoal-900);
319
+ --viking-border: color-mix(in srgb, var(--viking-metallic-600) 48%, transparent);
320
+ --viking-border-strong: color-mix(in srgb, var(--viking-metallic-400) 68%, transparent);
321
+ --viking-border-subtle: color-mix(in srgb, var(--viking-metallic-600) 28%, transparent);
322
+ --viking-border-accent: color-mix(in srgb, var(--viking-electric-500) 72%, transparent);
323
+ --viking-accent: var(--viking-electric-500);
324
+ --viking-accent-hover: var(--viking-electric-400);
325
+ --viking-accent-active: var(--viking-electric-700);
326
+ --viking-accent-content: var(--viking-white-pure);
327
+ --viking-accent-soft: color-mix(in srgb, var(--viking-electric-500) 18%, transparent);
328
+ --viking-accent-muted: color-mix(in srgb, var(--viking-electric-500) 10%, transparent);
329
+ --viking-accent-strong: var(--viking-electric-300);
330
+ --viking-accent-secondary: var(--viking-crimson-600);
331
+ --viking-accent-secondary-hover: var(--viking-crimson-500);
332
+ --viking-accent-secondary-active: var(--viking-crimson-700);
333
+ --viking-accent-secondary-content: var(--viking-white-pure);
334
+ --viking-accent-secondary-soft: color-mix(in srgb, var(--viking-crimson-600) 16%, transparent);
335
+ --viking-success: var(--viking-green-500);
336
+ --viking-success-soft: color-mix(in srgb, var(--viking-green-500) 14%, transparent);
337
+ --viking-warning: var(--viking-gold-500);
338
+ --viking-warning-soft: color-mix(in srgb, var(--viking-gold-500) 16%, transparent);
339
+ --viking-danger: var(--viking-crimson-500);
340
+ --viking-danger-soft: color-mix(in srgb, var(--viking-crimson-500) 16%, transparent);
341
+ --viking-info: var(--viking-blue-500);
342
+ --viking-info-soft: color-mix(in srgb, var(--viking-blue-500) 14%, transparent);
343
+ --viking-danger-text: var(--viking-crimson-400);
344
+ --viking-on-danger: var(--viking-white-pure);
345
+ --viking-ring: var(--viking-electric-400);
346
+ --viking-ring-width: 2px;
347
+ --viking-ring-offset: 2px;
348
+ --viking-overlay-backdrop: color-mix(in srgb, var(--viking-charcoal-950) 72%, transparent);
349
+ --viking-surface-glass: color-mix(in srgb, var(--viking-charcoal-800) 82%, transparent);
350
+ --viking-surface-glass-blur: 12px;
351
+ --viking-state-hover-bg: color-mix(in srgb, var(--viking-electric-500) 10%, transparent);
352
+ --viking-state-active-bg: color-mix(in srgb, var(--viking-electric-700) 14%, transparent);
353
+ --viking-state-selected-bg: color-mix(in srgb, var(--viking-electric-500) 18%, transparent);
354
+ --viking-state-disabled-bg: color-mix(in srgb, var(--viking-metallic-600) 20%, transparent);
355
+ --viking-shadow-sm:
356
+ 0 1px 2px rgba(0, 0, 0, 0.28), 0 1px 3px rgba(0, 0, 0, 0.18),
357
+ inset 0 1px 0 rgba(255, 255, 255, 0.04);
358
+ --viking-shadow-md:
359
+ 0 2px 4px rgba(0, 0, 0, 0.24), 0 4px 8px rgba(0, 0, 0, 0.16),
360
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
361
+ --viking-shadow-lg:
362
+ 0 4px 8px rgba(0, 0, 0, 0.2), 0 12px 24px rgba(0, 0, 0, 0.24),
363
+ inset 0 1px 0 rgba(255, 255, 255, 0.06);
364
+ }
365
+
366
+ /* ── Light mode ──────────────────────────────────────────────────────────── */
367
+ html[data-theme=light] {
368
+ color-scheme: light;
369
+ --viking-bg: var(--viking-slate-050);
370
+ --viking-bg-subtle: var(--viking-slate-100);
371
+ --viking-bg-inverted: var(--viking-charcoal-900);
372
+ --viking-surface: var(--viking-white-pure);
373
+ --viking-surface-alt: var(--viking-slate-100);
374
+ --viking-surface-inset: var(--viking-metallic-050);
375
+ --viking-surface-raised: var(--viking-white-pure);
376
+ --viking-surface-overlay: var(--viking-white-pure);
377
+ --viking-text: var(--viking-charcoal-900);
378
+ --viking-text-muted: var(--viking-metallic-500);
379
+ --viking-text-subtle: var(--viking-metallic-400);
380
+ --viking-text-disabled: var(--viking-metallic-300);
381
+ --viking-text-link: var(--viking-electric-700);
382
+ --viking-text-link-hover: var(--viking-electric-600);
383
+ --viking-text-inverted: var(--viking-white-pure);
384
+ --viking-border: color-mix(in srgb, var(--viking-metallic-600) 32%, transparent);
385
+ --viking-border-strong: color-mix(in srgb, var(--viking-metallic-600) 48%, transparent);
386
+ --viking-border-subtle: color-mix(in srgb, var(--viking-metallic-600) 22%, transparent);
387
+ --viking-border-accent: color-mix(in srgb, var(--viking-electric-600) 58%, transparent);
388
+ --viking-accent: var(--viking-electric-600);
389
+ --viking-accent-hover: var(--viking-electric-500);
390
+ --viking-accent-active: var(--viking-electric-700);
391
+ --viking-accent-content: var(--viking-white-pure);
392
+ --viking-accent-soft: color-mix(in srgb, var(--viking-electric-600) 14%, transparent);
393
+ --viking-accent-muted: color-mix(in srgb, var(--viking-electric-600) 8%, transparent);
394
+ --viking-accent-strong: var(--viking-electric-400);
395
+ --viking-accent-secondary: var(--viking-crimson-700);
396
+ --viking-accent-secondary-hover: var(--viking-crimson-600);
397
+ --viking-accent-secondary-active: var(--viking-crimson-700);
398
+ --viking-accent-secondary-content: var(--viking-white-pure);
399
+ --viking-accent-secondary-soft: color-mix(in srgb, var(--viking-crimson-700) 12%, transparent);
400
+ --viking-success-soft: color-mix(in srgb, var(--viking-green-500) 12%, transparent);
401
+ --viking-warning-soft: color-mix(in srgb, var(--viking-gold-500) 14%, transparent);
402
+ --viking-danger-soft: color-mix(in srgb, var(--viking-crimson-500) 12%, transparent);
403
+ --viking-info-soft: color-mix(in srgb, var(--viking-blue-500) 12%, transparent);
404
+ --viking-danger-text: var(--viking-crimson-700);
405
+ --viking-on-danger: var(--viking-white-pure);
406
+ --viking-ring: var(--viking-electric-500);
407
+ --viking-overlay-backdrop: color-mix(in srgb, var(--viking-charcoal-900) 45%, transparent);
408
+ --viking-surface-glass: color-mix(in srgb, var(--viking-white-pure) 88%, transparent);
409
+ --viking-surface-glass-blur: 10px;
410
+ --viking-state-hover-bg: color-mix(in srgb, var(--viking-electric-600) 8%, transparent);
411
+ --viking-state-active-bg: color-mix(in srgb, var(--viking-electric-700) 12%, transparent);
412
+ --viking-state-selected-bg: color-mix(in srgb, var(--viking-electric-600) 14%, transparent);
413
+ --viking-state-disabled-bg: color-mix(in srgb, var(--viking-metallic-600) 12%, transparent);
414
+ --viking-shadow-sm:
415
+ 0 1px 2px rgba(17, 17, 17, 0.06), 0 1px 3px rgba(17, 17, 17, 0.08);
416
+ --viking-shadow-md:
417
+ 0 2px 4px rgba(17, 17, 17, 0.06), 0 4px 8px rgba(17, 17, 17, 0.08);
418
+ --viking-shadow-lg:
419
+ 0 4px 8px rgba(17, 17, 17, 0.06), 0 12px 24px rgba(17, 17, 17, 0.1);
420
+ }
421
+
422
+ /* Respect system preference when no explicit theme is set */
423
+ @media (prefers-color-scheme: light) {
424
+ html:not([data-theme=dark]) {
425
+ color-scheme: light;
426
+ --viking-bg: var(--viking-slate-050);
427
+ --viking-bg-subtle: var(--viking-slate-100);
428
+ --viking-bg-inverted: var(--viking-charcoal-900);
429
+ --viking-surface: var(--viking-white-pure);
430
+ --viking-surface-alt: var(--viking-slate-100);
431
+ --viking-surface-inset: var(--viking-metallic-050);
432
+ --viking-surface-raised: var(--viking-white-pure);
433
+ --viking-surface-overlay: var(--viking-white-pure);
434
+ --viking-text: var(--viking-charcoal-900);
435
+ --viking-text-muted: var(--viking-metallic-500);
436
+ --viking-text-subtle: var(--viking-metallic-400);
437
+ --viking-text-disabled: var(--viking-metallic-300);
438
+ --viking-text-link: var(--viking-electric-700);
439
+ --viking-text-link-hover: var(--viking-electric-600);
440
+ --viking-text-inverted: var(--viking-white-pure);
441
+ --viking-border: color-mix(in srgb, var(--viking-metallic-600) 22%, transparent);
442
+ --viking-border-strong: color-mix(in srgb, var(--viking-metallic-600) 38%, transparent);
443
+ --viking-border-subtle: color-mix(in srgb, var(--viking-metallic-600) 12%, transparent);
444
+ --viking-border-accent: color-mix(in srgb, var(--viking-electric-600) 58%, transparent);
445
+ --viking-accent: var(--viking-electric-600);
446
+ --viking-accent-hover: var(--viking-electric-500);
447
+ --viking-accent-active: var(--viking-electric-700);
448
+ --viking-accent-content: var(--viking-white-pure);
449
+ --viking-accent-soft: color-mix(in srgb, var(--viking-electric-600) 10%, transparent);
450
+ --viking-accent-muted: color-mix(in srgb, var(--viking-electric-600) 8%, transparent);
451
+ --viking-accent-strong: var(--viking-electric-400);
452
+ --viking-accent-secondary: var(--viking-crimson-700);
453
+ --viking-accent-secondary-hover: var(--viking-crimson-600);
454
+ --viking-accent-secondary-active: var(--viking-crimson-700);
455
+ --viking-accent-secondary-content: var(--viking-white-pure);
456
+ --viking-accent-secondary-soft: color-mix(in srgb, var(--viking-crimson-700) 8%, transparent);
457
+ --viking-success-soft: color-mix(in srgb, var(--viking-green-500) 12%, transparent);
458
+ --viking-warning-soft: color-mix(in srgb, var(--viking-gold-500) 14%, transparent);
459
+ --viking-danger-soft: color-mix(in srgb, var(--viking-crimson-500) 12%, transparent);
460
+ --viking-info-soft: color-mix(in srgb, var(--viking-blue-500) 12%, transparent);
461
+ --viking-danger-text: var(--viking-crimson-700);
462
+ --viking-on-danger: var(--viking-white-pure);
463
+ --viking-ring: var(--viking-electric-500);
464
+ --viking-overlay-backdrop: color-mix(in srgb, var(--viking-charcoal-900) 45%, transparent);
465
+ --viking-surface-glass: color-mix(in srgb, var(--viking-white-pure) 88%, transparent);
466
+ --viking-surface-glass-blur: 10px;
467
+ --viking-state-hover-bg: color-mix(in srgb, var(--viking-electric-600) 8%, transparent);
468
+ --viking-state-active-bg: color-mix(in srgb, var(--viking-electric-700) 12%, transparent);
469
+ --viking-state-selected-bg: color-mix(in srgb, var(--viking-electric-600) 14%, transparent);
470
+ --viking-state-disabled-bg: color-mix(in srgb, var(--viking-metallic-600) 12%, transparent);
471
+ --viking-shadow-sm: 0 1px 2px rgba(17, 17, 17, 0.06), 0 1px 3px rgba(17, 17, 17, 0.08);
472
+ --viking-shadow-md: 0 2px 4px rgba(17, 17, 17, 0.06), 0 4px 8px rgba(17, 17, 17, 0.08);
473
+ --viking-shadow-lg: 0 4px 8px rgba(17, 17, 17, 0.06), 0 12px 24px rgba(17, 17, 17, 0.1);
474
+ }
475
+ }
476
+ :root {
477
+ --viking-series-1: var(--viking-electric-500);
478
+ --viking-series-2: var(--viking-crimson-600);
479
+ --viking-series-3: var(--viking-green-500);
480
+ --viking-series-4: var(--viking-gold-500);
481
+ --viking-series-5: var(--viking-crimson-500);
482
+ --viking-series-6: var(--viking-blue-500);
483
+ --viking-series-7: var(--viking-charcoal-700);
484
+ --viking-series-8: var(--viking-metallic-500);
485
+ --viking-series-default: var(--viking-series-1);
486
+ /* Premium palette v3 — electric primary, crimson secondary, semantic + muted slots */
487
+ --viking-series-palette: var(--viking-series-1), var(--viking-series-2),
488
+ var(--viking-series-3), var(--viking-series-4), var(--viking-series-5),
489
+ var(--viking-series-6), var(--viking-series-7), var(--viking-series-8);
490
+ }
491
+
492
+ :root {
493
+ /* Primitive aliases (short names used in older SCSS) */
494
+ --charcoal-950: var(--viking-charcoal-950);
495
+ --charcoal-900: var(--viking-charcoal-900);
496
+ --charcoal-800: var(--viking-charcoal-800);
497
+ --charcoal-700: var(--viking-charcoal-700);
498
+ --charcoal-600: var(--viking-charcoal-600);
499
+ --charcoal-500: var(--viking-charcoal-500);
500
+ --metallic-600: var(--viking-metallic-600);
501
+ --metallic-500: var(--viking-metallic-500);
502
+ --metallic-400: var(--viking-metallic-400);
503
+ --metallic-300: var(--viking-metallic-300);
504
+ --metallic-200: var(--viking-metallic-200);
505
+ --metallic-100: var(--viking-metallic-100);
506
+ --white: var(--viking-white-pure);
507
+ --black: var(--viking-black);
508
+ /* Typography floors */
509
+ --base-font-size: var(--viking-font-size-base);
510
+ --ui-font-size: var(--viking-font-size-sm);
511
+ --header-letter-spacing: var(--viking-letter-spacing-tight);
512
+ /* Spacing — legacy --space-N (4px grid) */
513
+ --grid-unit: var(--viking-grid-unit);
514
+ --space-0: var(--viking-space-0);
515
+ --space-half: var(--viking-space-half);
516
+ --space-0-5: var(--viking-space-0-5);
517
+ --space-1: var(--viking-space-1);
518
+ --space-1-5: var(--viking-space-1-5);
519
+ --space-2: var(--viking-space-2);
520
+ --space-2-5: var(--viking-space-2-5);
521
+ --space-3: var(--viking-space-3);
522
+ --space-4: var(--viking-space-4);
523
+ --space-5: var(--viking-space-5);
524
+ --space-6: var(--viking-space-6);
525
+ --space-7: var(--viking-space-7);
526
+ --space-8: var(--viking-space-8);
527
+ --space-8-5: var(--viking-space-8-5);
528
+ --space-9: var(--viking-space-9);
529
+ --space-10: var(--viking-space-10);
530
+ --space-11: var(--viking-space-11);
531
+ --space-12: var(--viking-space-12);
532
+ --space-14: var(--viking-space-14);
533
+ --space-16: var(--viking-space-16);
534
+ --space-20: var(--viking-space-20);
535
+ --space-24: var(--viking-space-24);
536
+ --grid-gap: var(--viking-space-3);
537
+ --card-padding: var(--viking-card-padding);
538
+ /* Layout rhythm aliases */
539
+ --page-gutter: var(--viking-page-gutter);
540
+ --page-gutter-lg: var(--viking-page-gutter-lg);
541
+ --page-stack-gap: var(--viking-page-stack-gap);
542
+ --page-section-gap: var(--viking-page-section-gap);
543
+ --form-max-width: var(--viking-form-max-width);
544
+ --form-narrow-max-width: var(--viking-form-narrow-max-width);
545
+ --content-readable-max-width: var(--viking-content-readable-max-width);
546
+ /* Layout */
547
+ --container-max-width: var(--viking-container-max-width);
548
+ --navbar-height: var(--viking-navbar-height);
549
+ --btn-min-width: var(--viking-btn-min-width);
550
+ /* Radii */
551
+ --border-radius-xs: var(--viking-radius-xs);
552
+ --border-radius-sm: var(--viking-radius-sm);
553
+ --border-radius-md: var(--viking-radius);
554
+ --border-radius-lg: var(--viking-radius-lg);
555
+ --border-radius-xl: var(--viking-radius-xl);
556
+ --border-radius-pill: var(--viking-radius-pill);
557
+ /* Motion & elevation */
558
+ --transition-smooth: var(--viking-transition);
559
+ --shadow-sm: var(--viking-shadow-sm);
560
+ --shadow-md: var(--viking-shadow-md);
561
+ --shadow-lg: var(--viking-shadow-lg);
562
+ --shadow-hover: var(--viking-shadow-hover);
563
+ /* Semantic short names */
564
+ --primary-color: var(--viking-electric-500);
565
+ --accent-color: var(--viking-crimson-600);
566
+ /* Focus */
567
+ --focus-ring-width: var(--viking-ring-width);
568
+ --focus-ring-offset: var(--viking-ring-offset);
569
+ }
570
+
571
+ :root,
572
+ html[data-theme=dark] {
573
+ --color-primary: var(--viking-electric-500);
574
+ --color-on-primary: var(--viking-white-pure);
575
+ --color-primary-container: var(--viking-electric-400);
576
+ --color-on-primary-container: var(--viking-charcoal-900);
577
+ --color-surface: var(--viking-charcoal-800);
578
+ --color-on-surface: var(--viking-white);
579
+ --color-background: var(--viking-charcoal-900);
580
+ --color-on-background: var(--viking-white);
581
+ --color-surface-variant: var(--viking-charcoal-700);
582
+ --color-success: var(--viking-green-500);
583
+ --color-warning: var(--viking-gold-500);
584
+ --color-error: var(--viking-crimson-500);
585
+ --color-info: var(--viking-blue-500);
586
+ --color-gauge-red: var(--color-error);
587
+ --border: var(--viking-border);
588
+ --border-layout: var(--viking-border-strong);
589
+ --hover-color: var(--viking-electric-400);
590
+ --bg-color: var(--viking-bg);
591
+ --text-color: var(--viking-text);
592
+ --text-muted: var(--viking-text-muted);
593
+ --card-bg: var(--viking-surface);
594
+ --navbar-bg: color-mix(in srgb, var(--viking-bg) 96%, transparent);
595
+ --link-color: var(--viking-electric-300);
596
+ --link-hover-color: var(--viking-electric-400);
597
+ --hero-title-color: var(--viking-white);
598
+ --primary-text-color: var(--viking-electric-300);
599
+ --button-primary: var(--color-primary);
600
+ --button-primary-text: var(--viking-white-pure);
601
+ --color-dark-grey-btn-bg: var(--viking-charcoal-700);
602
+ --color-dark-grey-btn-text: var(--viking-white);
603
+ --focus-ring-color: var(--viking-electric-400);
604
+ }
605
+
606
+ html[data-theme=light] {
607
+ --color-primary: var(--viking-electric-600);
608
+ --color-on-primary: var(--viking-white-pure);
609
+ --color-primary-container: var(--viking-teal-500);
610
+ --color-on-primary-container: var(--viking-white-pure);
611
+ --color-surface: var(--viking-white-pure);
612
+ --color-on-surface: var(--viking-charcoal-900);
613
+ --color-background: var(--viking-white-pure);
614
+ --color-on-background: var(--viking-charcoal-900);
615
+ --color-surface-variant: var(--viking-surface-alt);
616
+ --color-success: var(--viking-green-500);
617
+ --color-warning: var(--viking-gold-500);
618
+ --color-error: var(--viking-crimson-700);
619
+ --color-info: var(--viking-blue-500);
620
+ --color-gauge-red: var(--color-error);
621
+ --border: var(--viking-border);
622
+ --border-layout: var(--viking-border-strong);
623
+ --hover-color: var(--viking-electric-500);
624
+ --bg-color: var(--viking-bg);
625
+ --text-color: var(--viking-text);
626
+ --text-muted: var(--viking-text-muted);
627
+ --card-bg: var(--viking-surface);
628
+ --navbar-bg: color-mix(in srgb, var(--viking-white-pure) 96%, transparent);
629
+ --link-color: var(--viking-electric-700);
630
+ --link-hover-color: var(--viking-electric-600);
631
+ --hero-title-color: var(--viking-charcoal-900);
632
+ --primary-text-color: var(--viking-electric-700);
633
+ --button-primary: var(--color-primary);
634
+ --button-primary-text: var(--color-on-primary);
635
+ --color-dark-grey-btn-bg: var(--viking-charcoal-800);
636
+ --color-dark-grey-btn-text: var(--viking-white);
637
+ --focus-ring-color: var(--viking-electric-500);
638
+ }
639
+
640
+ @media (prefers-color-scheme: light) {
641
+ html:not([data-theme=dark]) {
642
+ --color-primary: var(--viking-electric-600);
643
+ --color-on-primary: var(--viking-white-pure);
644
+ --color-primary-container: var(--viking-teal-500);
645
+ --color-on-primary-container: var(--viking-white-pure);
646
+ --color-surface: var(--viking-white-pure);
647
+ --color-on-surface: var(--viking-charcoal-900);
648
+ --color-background: var(--viking-white-pure);
649
+ --color-on-background: var(--viking-charcoal-900);
650
+ --color-surface-variant: var(--viking-surface-alt);
651
+ --color-success: var(--viking-green-500);
652
+ --color-warning: var(--viking-gold-500);
653
+ --color-error: var(--viking-crimson-700);
654
+ --color-info: var(--viking-blue-500);
655
+ --color-gauge-red: var(--color-error);
656
+ --border: var(--viking-border);
657
+ --border-layout: var(--viking-border-strong);
658
+ --hover-color: var(--viking-electric-500);
659
+ --bg-color: var(--viking-bg);
660
+ --text-color: var(--viking-text);
661
+ --text-muted: var(--viking-text-muted);
662
+ --card-bg: var(--viking-surface);
663
+ --navbar-bg: color-mix(in srgb, var(--viking-white-pure) 96%, transparent);
664
+ --link-color: var(--viking-electric-700);
665
+ --link-hover-color: var(--viking-electric-600);
666
+ --hero-title-color: var(--viking-charcoal-900);
667
+ --primary-text-color: var(--viking-electric-700);
668
+ --button-primary: var(--color-primary);
669
+ --button-primary-text: var(--color-on-primary);
670
+ --color-dark-grey-btn-bg: var(--viking-charcoal-800);
671
+ --color-dark-grey-btn-text: var(--viking-white);
672
+ --focus-ring-color: var(--viking-electric-500);
673
+ }
674
+ }
675
+ body {
676
+ font-size: var(--base-font-size);
677
+ color: var(--text-color);
678
+ background-color: var(--bg-color);
679
+ }
680
+
681
+ h1,
682
+ h2,
683
+ h3,
684
+ h4,
685
+ h5,
686
+ h6 {
687
+ letter-spacing: var(--header-letter-spacing);
688
+ }