@dataengineeringformachinelearning/viking-ui 4.0.6 → 4.1.1

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.
@@ -1,903 +0,0 @@
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 Martin x The Northman battlefield) ──── */
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:
115
- "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
116
- "Helvetica Neue", Arial, sans-serif;
117
- --viking-font-family-mono:
118
- ui-monospace, "JetBrains Mono", "SF Mono", "Cascadia Code", Consolas,
119
- monospace;
120
- --viking-font-size-2xs: 11px;
121
- --viking-font-size-xs: 12px;
122
- --viking-font-size-sm: 14px;
123
- --viking-font-size-base: 16px;
124
- --viking-font-size-md: 18px;
125
- --viking-font-size-lg: 20px;
126
- --viking-font-size-xl: 24px;
127
- --viking-font-size-2xl: 30px;
128
- --viking-font-size-3xl: 36px;
129
- --viking-font-size-4xl: 48px;
130
- --viking-font-size-5xl: 60px;
131
- --viking-font-size-6xl: 72px;
132
- --viking-font-weight-regular: 400;
133
- --viking-font-weight-medium: 500;
134
- --viking-font-weight-semibold: 600;
135
- --viking-font-weight-bold: 700;
136
- --viking-font-weight-extrabold: 800;
137
- --viking-line-height-none: 1;
138
- --viking-line-height-tight: 1.25;
139
- --viking-line-height-snug: 1.375;
140
- --viking-line-height-normal: 1.5;
141
- --viking-line-height-relaxed: 1.625;
142
- --viking-line-height-loose: 1.75;
143
- --viking-letter-spacing-tighter: -0.03em;
144
- --viking-letter-spacing-tight: -0.02em;
145
- --viking-letter-spacing-normal: 0;
146
- --viking-letter-spacing-wide: 0.025em;
147
- --viking-letter-spacing-wider: 0.05em;
148
- --viking-letter-spacing-caps: 0.08em;
149
- --viking-type-caption: var(--viking-font-weight-medium)
150
- var(--viking-font-size-xs) / var(--viking-line-height-normal)
151
- var(--viking-font-family);
152
- --viking-type-body-sm: var(--viking-font-weight-regular)
153
- var(--viking-font-size-sm) / var(--viking-line-height-normal)
154
- var(--viking-font-family);
155
- --viking-type-body: var(--viking-font-weight-regular)
156
- var(--viking-font-size-base) / var(--viking-line-height-normal)
157
- var(--viking-font-family);
158
- --viking-type-body-lg: var(--viking-font-weight-regular)
159
- var(--viking-font-size-md) / var(--viking-line-height-relaxed)
160
- var(--viking-font-family);
161
- --viking-type-heading-sm: var(--viking-font-weight-semibold)
162
- var(--viking-font-size-lg) / var(--viking-line-height-tight)
163
- var(--viking-font-family);
164
- --viking-type-heading: var(--viking-font-weight-bold)
165
- var(--viking-font-size-2xl) / var(--viking-line-height-tight)
166
- var(--viking-font-family);
167
- --viking-type-display: var(--viking-font-weight-extrabold)
168
- var(--viking-font-size-4xl) / var(--viking-line-height-none)
169
- var(--viking-font-family);
170
- /* ── Border radius — 6–12px premium feel ─────────────────────────────────── */
171
- --viking-radius-xs: 4px;
172
- --viking-radius-sm: 6px;
173
- --viking-radius: 8px;
174
- --viking-radius-md: 10px;
175
- --viking-radius-lg: 12px;
176
- --viking-radius-xl: 16px;
177
- --viking-radius-2xl: 24px;
178
- --viking-radius-pill: 999px;
179
- --viking-radius-full: var(--viking-radius-pill);
180
- /* ── Elevation — tactile shadows with subtle metallic top-edge ───────────── */
181
- --viking-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.2);
182
- --viking-shadow-sm:
183
- 0 1px 2px rgba(0, 0, 0, 0.18), 0 1px 3px rgba(0, 0, 0, 0.12),
184
- inset 0 1px 0 rgba(255, 255, 255, 0.04);
185
- --viking-shadow-md:
186
- 0 2px 4px rgba(0, 0, 0, 0.16), 0 4px 8px rgba(0, 0, 0, 0.12),
187
- inset 0 1px 0 rgba(255, 255, 255, 0.05);
188
- --viking-shadow-lg:
189
- 0 4px 8px rgba(0, 0, 0, 0.14), 0 12px 24px rgba(0, 0, 0, 0.18),
190
- inset 0 1px 0 rgba(255, 255, 255, 0.06);
191
- --viking-shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.14);
192
- --viking-shadow-hover:
193
- 0 8px 16px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.1),
194
- inset 0 1px 0 rgba(255, 255, 255, 0.06);
195
- --viking-shadow-focus:
196
- 0 0 0 var(--viking-ring-offset) var(--viking-bg),
197
- 0 0 0 calc(var(--viking-ring-offset) + var(--viking-ring-width))
198
- var(--viking-ring);
199
- --viking-surface-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.06);
200
- /* ── Chart scale — unified responsive min/max (matches 720×240 SVG viewBox) ─ */
201
- --viking-chart-ratio: 3 / 1;
202
- --viking-chart-min-height: clamp(9.5rem, 22vw, 12rem);
203
- --viking-chart-max-height: clamp(13rem, 36vw, 17.5rem);
204
- --viking-chart-fill-min-height: clamp(18rem, 36vw, 20rem);
205
- --viking-chart-fill-max-height: none;
206
- --viking-chart-fill-min-height-lg: clamp(20rem, 40vw, 22rem);
207
- --viking-chart-fill-max-height-lg: none;
208
- --viking-chart-empty-min-height: var(--viking-chart-fill-min-height);
209
- --viking-chart-empty-min-height-lg: var(--viking-chart-fill-min-height-lg);
210
- --viking-chart-panel-min-height-md: 26rem;
211
- --viking-chart-panel-min-height-lg: 30rem;
212
- --viking-chart-panel-body-min-height-md: 22rem;
213
- --viking-chart-panel-body-min-height-lg: 25rem;
214
- --viking-chart-sparkline-height: 2.5rem;
215
- --viking-chart-map-min-height: 22.5rem;
216
- /* ── Breakpoints (mobile-first) ─────────────────────────────────────────── */
217
- --viking-bp-sm: 600px;
218
- --viking-bp-md: 768px;
219
- --viking-bp-sidebar: 901px;
220
- --viking-bp-lg: 1024px;
221
- --viking-bp-xl: 1440px;
222
- --viking-bp-2xl: 1920px;
223
- /* ── Motion ──────────────────────────────────────────────────────────────── */
224
- --viking-ease-default: cubic-bezier(0.4, 0, 0.2, 1);
225
- --viking-ease-in: cubic-bezier(0.4, 0, 1, 1);
226
- --viking-ease-out: cubic-bezier(0, 0, 0.2, 1);
227
- --viking-ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
228
- --viking-duration-instant: 75ms;
229
- --viking-duration-fast: 150ms;
230
- --viking-duration: 250ms;
231
- --viking-duration-slow: 350ms;
232
- --viking-duration-slower: 500ms;
233
- --viking-transition-colors:
234
- color var(--viking-duration) var(--viking-ease-default),
235
- background-color var(--viking-duration) var(--viking-ease-default),
236
- border-color var(--viking-duration) var(--viking-ease-default),
237
- box-shadow var(--viking-duration) var(--viking-ease-default),
238
- fill var(--viking-duration) var(--viking-ease-default),
239
- stroke var(--viking-duration) var(--viking-ease-default);
240
- --viking-transition-interactive:
241
- color var(--viking-duration) var(--viking-ease-default),
242
- background-color var(--viking-duration) var(--viking-ease-default),
243
- border-color var(--viking-duration) var(--viking-ease-default),
244
- box-shadow var(--viking-duration) var(--viking-ease-default),
245
- fill var(--viking-duration) var(--viking-ease-default),
246
- stroke var(--viking-duration) var(--viking-ease-default),
247
- transform var(--viking-duration) var(--viking-ease-default),
248
- opacity var(--viking-duration) var(--viking-ease-default);
249
- --viking-transition: all var(--viking-duration) var(--viking-ease-default);
250
- --viking-transition-fast: all var(--viking-duration-fast)
251
- var(--viking-ease-default);
252
- --viking-transition-transform: transform var(--viking-duration)
253
- var(--viking-ease-emphasized);
254
- /* ── Interactive state ───────────────────────────────────────────────────── */
255
- --viking-state-hover-lift: -1px;
256
- --viking-state-active-scale: 0.985;
257
- --viking-state-disabled-opacity: 0.48;
258
- /* ── Controls ──────────────────────────────────────────────────────────── */
259
- --viking-control-height: 44px;
260
- --viking-control-height-sm: 32px;
261
- --viking-control-height-xs: 24px;
262
- --viking-touch-target-min: 44px;
263
- --viking-control-padding-x: var(--viking-space-2);
264
- --viking-btn-min-width: 120px;
265
- --viking-select-panel-bg: var(--viking-surface-raised);
266
- --viking-select-half-max-width: min(100%, 24rem);
267
- /* ── Layout ────────────────────────────────────────────────────────────── */
268
- --viking-container-max-width: 1260px;
269
- --viking-navbar-height: 64px;
270
- --viking-sidebar-width: 256px;
271
- /* ── Layout rhythm — premium spacing enforcement (THEME.md §3) ─────────── */
272
- --viking-page-gutter: var(--viking-space-3);
273
- --viking-page-gutter-lg: var(--viking-space-4);
274
- --viking-page-gutter-xl: var(--viking-space-6);
275
- --viking-page-stack-gap: var(--viking-space-4);
276
- --viking-page-section-gap: var(--viking-space-6);
277
- --viking-section-padding-y: var(--viking-space-8);
278
- --viking-section-padding-y-compact: var(--viking-space-5);
279
- --viking-card-padding: var(--viking-space-4);
280
- --viking-card-padding-compact: var(--viking-space-3);
281
- --viking-card-content-gap: var(--viking-space-3);
282
- --viking-card-content-gap-compact: var(--viking-space-2);
283
- --viking-panel-padding: var(--viking-space-4);
284
- --viking-panel-header-padding: var(--viking-space-3) var(--viking-space-4);
285
- --viking-form-max-width: 42rem;
286
- --viking-form-narrow-max-width: 28rem;
287
- --viking-content-readable-max-width: 48rem;
288
- --viking-card-min-width: 0;
289
- --viking-card-max-width: none;
290
- --viking-metric-card-min-height: 6.5rem;
291
- --viking-metric-card-tall-min-height: 8.25rem;
292
- --viking-metric-card-min-width: 10rem;
293
- --viking-surface-hairline-strength: 28%;
294
- /* ── Layering ────────────────────────────────────────────────────────────── */
295
- --viking-z-overlay: 1000;
296
- --viking-z-toast: 1100;
297
- --viking-z-tooltip: 1200;
298
- /* ── Chart ───────────────────────────────────────────────────────────────── */
299
- --viking-chart-axis-size: 12px;
300
- /* ── Icons ─────────────────────────────────────────────────────────────────── */
301
- --viking-icon-size-sm: 16px;
302
- --viking-icon-size-md: 20px;
303
- --viking-icon-size-lg: 24px;
304
- --viking-icon-stroke-width: 1.75;
305
- --viking-icon-stroke-width-sm: 1.5;
306
- }
307
-
308
- /* ── Dark mode (default) ─────────────────────────────────────────────────── */
309
- :root,
310
- html[data-theme=dark] {
311
- color-scheme: dark;
312
- --viking-bg: var(--viking-charcoal-900);
313
- --viking-bg-subtle: var(--viking-ink-950);
314
- --viking-bg-inverted: var(--viking-white-pure);
315
- --viking-surface: var(--viking-charcoal-800);
316
- --viking-surface-alt: var(--viking-charcoal-700);
317
- --viking-surface-inset: var(--viking-charcoal-950);
318
- --viking-surface-raised: var(--viking-charcoal-600);
319
- --viking-surface-overlay: var(--viking-ink-800);
320
- --viking-text: var(--viking-white);
321
- --viking-text-muted: var(--viking-metallic-200);
322
- --viking-text-subtle: var(--viking-metallic-300);
323
- --viking-text-disabled: var(--viking-metallic-400);
324
- --viking-text-link: var(--viking-electric-300);
325
- --viking-text-link-hover: var(--viking-electric-200);
326
- --viking-text-inverted: var(--viking-charcoal-900);
327
- --viking-border: color-mix(
328
- in srgb,
329
- var(--viking-metallic-600) 48%,
330
- transparent
331
- );
332
- --viking-border-strong: color-mix(
333
- in srgb,
334
- var(--viking-metallic-400) 68%,
335
- transparent
336
- );
337
- --viking-border-subtle: color-mix(
338
- in srgb,
339
- var(--viking-metallic-600) 28%,
340
- transparent
341
- );
342
- --viking-border-accent: color-mix(
343
- in srgb,
344
- var(--viking-electric-500) 72%,
345
- transparent
346
- );
347
- --viking-accent: var(--viking-electric-500);
348
- --viking-accent-hover: var(--viking-electric-400);
349
- --viking-accent-active: var(--viking-electric-700);
350
- --viking-accent-content: var(--viking-white-pure);
351
- --viking-accent-soft: color-mix(
352
- in srgb,
353
- var(--viking-electric-500) 18%,
354
- transparent
355
- );
356
- --viking-accent-muted: color-mix(
357
- in srgb,
358
- var(--viking-electric-500) 10%,
359
- transparent
360
- );
361
- --viking-accent-strong: var(--viking-electric-300);
362
- --viking-accent-secondary: var(--viking-crimson-600);
363
- --viking-accent-secondary-hover: var(--viking-crimson-500);
364
- --viking-accent-secondary-active: var(--viking-crimson-700);
365
- --viking-accent-secondary-content: var(--viking-white-pure);
366
- --viking-accent-secondary-soft: color-mix(
367
- in srgb,
368
- var(--viking-crimson-600) 16%,
369
- transparent
370
- );
371
- --viking-success: var(--viking-green-500);
372
- --viking-success-soft: color-mix(
373
- in srgb,
374
- var(--viking-green-500) 14%,
375
- transparent
376
- );
377
- --viking-warning: var(--viking-gold-500);
378
- --viking-warning-soft: color-mix(
379
- in srgb,
380
- var(--viking-gold-500) 16%,
381
- transparent
382
- );
383
- --viking-danger: var(--viking-crimson-500);
384
- --viking-danger-soft: color-mix(
385
- in srgb,
386
- var(--viking-crimson-500) 16%,
387
- transparent
388
- );
389
- --viking-info: var(--viking-blue-500);
390
- --viking-info-soft: color-mix(
391
- in srgb,
392
- var(--viking-blue-500) 14%,
393
- transparent
394
- );
395
- --viking-danger-text: var(--viking-crimson-400);
396
- --viking-on-danger: var(--viking-white-pure);
397
- --viking-ring: var(--viking-electric-400);
398
- --viking-ring-width: 2px;
399
- --viking-ring-offset: 2px;
400
- --viking-overlay-backdrop: color-mix(
401
- in srgb,
402
- var(--viking-charcoal-950) 72%,
403
- transparent
404
- );
405
- --viking-surface-glass: color-mix(
406
- in srgb,
407
- var(--viking-charcoal-800) 82%,
408
- transparent
409
- );
410
- --viking-surface-glass-blur: 12px;
411
- --viking-state-hover-bg: color-mix(
412
- in srgb,
413
- var(--viking-electric-500) 10%,
414
- transparent
415
- );
416
- --viking-state-active-bg: color-mix(
417
- in srgb,
418
- var(--viking-electric-700) 14%,
419
- transparent
420
- );
421
- --viking-state-selected-bg: color-mix(
422
- in srgb,
423
- var(--viking-electric-500) 18%,
424
- transparent
425
- );
426
- --viking-state-disabled-bg: color-mix(
427
- in srgb,
428
- var(--viking-metallic-600) 20%,
429
- transparent
430
- );
431
- --viking-shadow-sm:
432
- 0 1px 2px rgba(0, 0, 0, 0.28), 0 1px 3px rgba(0, 0, 0, 0.18),
433
- inset 0 1px 0 rgba(255, 255, 255, 0.04);
434
- --viking-shadow-md:
435
- 0 2px 4px rgba(0, 0, 0, 0.24), 0 4px 8px rgba(0, 0, 0, 0.16),
436
- inset 0 1px 0 rgba(255, 255, 255, 0.05);
437
- --viking-shadow-lg:
438
- 0 4px 8px rgba(0, 0, 0, 0.2), 0 12px 24px rgba(0, 0, 0, 0.24),
439
- inset 0 1px 0 rgba(255, 255, 255, 0.06);
440
- }
441
-
442
- /* ── Light mode ──────────────────────────────────────────────────────────── */
443
- html[data-theme=light] {
444
- color-scheme: light;
445
- --viking-bg: var(--viking-slate-050);
446
- --viking-bg-subtle: var(--viking-slate-100);
447
- --viking-bg-inverted: var(--viking-charcoal-900);
448
- --viking-surface: var(--viking-white-pure);
449
- --viking-surface-alt: var(--viking-slate-100);
450
- --viking-surface-inset: var(--viking-metallic-050);
451
- --viking-surface-raised: var(--viking-white-pure);
452
- --viking-surface-overlay: var(--viking-white-pure);
453
- --viking-text: var(--viking-charcoal-900);
454
- --viking-text-muted: var(--viking-metallic-500);
455
- --viking-text-subtle: var(--viking-metallic-400);
456
- --viking-text-disabled: var(--viking-metallic-300);
457
- --viking-text-link: var(--viking-electric-700);
458
- --viking-text-link-hover: var(--viking-electric-600);
459
- --viking-text-inverted: var(--viking-white-pure);
460
- --viking-border: color-mix(
461
- in srgb,
462
- var(--viking-metallic-600) 32%,
463
- transparent
464
- );
465
- --viking-border-strong: color-mix(
466
- in srgb,
467
- var(--viking-metallic-600) 48%,
468
- transparent
469
- );
470
- --viking-border-subtle: color-mix(
471
- in srgb,
472
- var(--viking-metallic-600) 22%,
473
- transparent
474
- );
475
- --viking-border-accent: color-mix(
476
- in srgb,
477
- var(--viking-electric-600) 58%,
478
- transparent
479
- );
480
- --viking-accent: var(--viking-electric-600);
481
- --viking-accent-hover: var(--viking-electric-500);
482
- --viking-accent-active: var(--viking-electric-700);
483
- --viking-accent-content: var(--viking-white-pure);
484
- --viking-accent-soft: color-mix(
485
- in srgb,
486
- var(--viking-electric-600) 14%,
487
- transparent
488
- );
489
- --viking-accent-muted: color-mix(
490
- in srgb,
491
- var(--viking-electric-600) 8%,
492
- transparent
493
- );
494
- --viking-accent-strong: var(--viking-electric-400);
495
- --viking-accent-secondary: var(--viking-crimson-700);
496
- --viking-accent-secondary-hover: var(--viking-crimson-600);
497
- --viking-accent-secondary-active: var(--viking-crimson-700);
498
- --viking-accent-secondary-content: var(--viking-white-pure);
499
- --viking-accent-secondary-soft: color-mix(
500
- in srgb,
501
- var(--viking-crimson-700) 12%,
502
- transparent
503
- );
504
- --viking-success-soft: color-mix(
505
- in srgb,
506
- var(--viking-green-500) 12%,
507
- transparent
508
- );
509
- --viking-warning-soft: color-mix(
510
- in srgb,
511
- var(--viking-gold-500) 14%,
512
- transparent
513
- );
514
- --viking-danger-soft: color-mix(
515
- in srgb,
516
- var(--viking-crimson-500) 12%,
517
- transparent
518
- );
519
- --viking-info-soft: color-mix(
520
- in srgb,
521
- var(--viking-blue-500) 12%,
522
- transparent
523
- );
524
- --viking-danger-text: var(--viking-crimson-700);
525
- --viking-on-danger: var(--viking-white-pure);
526
- --viking-ring: var(--viking-electric-500);
527
- --viking-overlay-backdrop: color-mix(
528
- in srgb,
529
- var(--viking-charcoal-900) 45%,
530
- transparent
531
- );
532
- --viking-surface-glass: color-mix(
533
- in srgb,
534
- var(--viking-white-pure) 88%,
535
- transparent
536
- );
537
- --viking-surface-glass-blur: 10px;
538
- --viking-state-hover-bg: color-mix(
539
- in srgb,
540
- var(--viking-electric-600) 8%,
541
- transparent
542
- );
543
- --viking-state-active-bg: color-mix(
544
- in srgb,
545
- var(--viking-electric-700) 12%,
546
- transparent
547
- );
548
- --viking-state-selected-bg: color-mix(
549
- in srgb,
550
- var(--viking-electric-600) 14%,
551
- transparent
552
- );
553
- --viking-state-disabled-bg: color-mix(
554
- in srgb,
555
- var(--viking-metallic-600) 12%,
556
- transparent
557
- );
558
- --viking-shadow-sm:
559
- 0 1px 2px rgba(17, 17, 17, 0.06), 0 1px 3px rgba(17, 17, 17, 0.08);
560
- --viking-shadow-md:
561
- 0 2px 4px rgba(17, 17, 17, 0.06), 0 4px 8px rgba(17, 17, 17, 0.08);
562
- --viking-shadow-lg:
563
- 0 4px 8px rgba(17, 17, 17, 0.06), 0 12px 24px rgba(17, 17, 17, 0.1);
564
- }
565
-
566
- /* Respect system preference when no explicit theme is set */
567
- @media (prefers-color-scheme: light) {
568
- html:not([data-theme=dark]) {
569
- color-scheme: light;
570
- --viking-bg: var(--viking-slate-050);
571
- --viking-bg-subtle: var(--viking-slate-100);
572
- --viking-bg-inverted: var(--viking-charcoal-900);
573
- --viking-surface: var(--viking-white-pure);
574
- --viking-surface-alt: var(--viking-slate-100);
575
- --viking-surface-inset: var(--viking-metallic-050);
576
- --viking-surface-raised: var(--viking-white-pure);
577
- --viking-surface-overlay: var(--viking-white-pure);
578
- --viking-text: var(--viking-charcoal-900);
579
- --viking-text-muted: var(--viking-metallic-500);
580
- --viking-text-subtle: var(--viking-metallic-400);
581
- --viking-text-disabled: var(--viking-metallic-300);
582
- --viking-text-link: var(--viking-electric-700);
583
- --viking-text-link-hover: var(--viking-electric-600);
584
- --viking-text-inverted: var(--viking-white-pure);
585
- --viking-border: color-mix(
586
- in srgb,
587
- var(--viking-metallic-600) 22%,
588
- transparent
589
- );
590
- --viking-border-strong: color-mix(
591
- in srgb,
592
- var(--viking-metallic-600) 38%,
593
- transparent
594
- );
595
- --viking-border-subtle: color-mix(
596
- in srgb,
597
- var(--viking-metallic-600) 12%,
598
- transparent
599
- );
600
- --viking-border-accent: color-mix(
601
- in srgb,
602
- var(--viking-electric-600) 58%,
603
- transparent
604
- );
605
- --viking-accent: var(--viking-electric-600);
606
- --viking-accent-hover: var(--viking-electric-500);
607
- --viking-accent-active: var(--viking-electric-700);
608
- --viking-accent-content: var(--viking-white-pure);
609
- --viking-accent-soft: color-mix(
610
- in srgb,
611
- var(--viking-electric-600) 10%,
612
- transparent
613
- );
614
- --viking-accent-muted: color-mix(
615
- in srgb,
616
- var(--viking-electric-600) 8%,
617
- transparent
618
- );
619
- --viking-accent-strong: var(--viking-electric-400);
620
- --viking-accent-secondary: var(--viking-crimson-700);
621
- --viking-accent-secondary-hover: var(--viking-crimson-600);
622
- --viking-accent-secondary-active: var(--viking-crimson-700);
623
- --viking-accent-secondary-content: var(--viking-white-pure);
624
- --viking-accent-secondary-soft: color-mix(
625
- in srgb,
626
- var(--viking-crimson-700) 8%,
627
- transparent
628
- );
629
- --viking-success-soft: color-mix(
630
- in srgb,
631
- var(--viking-green-500) 12%,
632
- transparent
633
- );
634
- --viking-warning-soft: color-mix(
635
- in srgb,
636
- var(--viking-gold-500) 14%,
637
- transparent
638
- );
639
- --viking-danger-soft: color-mix(
640
- in srgb,
641
- var(--viking-crimson-500) 12%,
642
- transparent
643
- );
644
- --viking-info-soft: color-mix(
645
- in srgb,
646
- var(--viking-blue-500) 12%,
647
- transparent
648
- );
649
- --viking-danger-text: var(--viking-crimson-700);
650
- --viking-on-danger: var(--viking-white-pure);
651
- --viking-ring: var(--viking-electric-500);
652
- --viking-overlay-backdrop: color-mix(
653
- in srgb,
654
- var(--viking-charcoal-900) 45%,
655
- transparent
656
- );
657
- --viking-surface-glass: color-mix(
658
- in srgb,
659
- var(--viking-white-pure) 88%,
660
- transparent
661
- );
662
- --viking-surface-glass-blur: 10px;
663
- --viking-state-hover-bg: color-mix(
664
- in srgb,
665
- var(--viking-electric-600) 8%,
666
- transparent
667
- );
668
- --viking-state-active-bg: color-mix(
669
- in srgb,
670
- var(--viking-electric-700) 12%,
671
- transparent
672
- );
673
- --viking-state-selected-bg: color-mix(
674
- in srgb,
675
- var(--viking-electric-600) 14%,
676
- transparent
677
- );
678
- --viking-state-disabled-bg: color-mix(
679
- in srgb,
680
- var(--viking-metallic-600) 12%,
681
- transparent
682
- );
683
- --viking-shadow-sm:
684
- 0 1px 2px rgba(17, 17, 17, 0.06), 0 1px 3px rgba(17, 17, 17, 0.08);
685
- --viking-shadow-md:
686
- 0 2px 4px rgba(17, 17, 17, 0.06), 0 4px 8px rgba(17, 17, 17, 0.08);
687
- --viking-shadow-lg:
688
- 0 4px 8px rgba(17, 17, 17, 0.06), 0 12px 24px rgba(17, 17, 17, 0.1);
689
- }
690
- }
691
- :root {
692
- --viking-series-1: var(--viking-electric-500);
693
- --viking-series-2: var(--viking-crimson-600);
694
- --viking-series-3: var(--viking-green-500);
695
- --viking-series-4: var(--viking-gold-500);
696
- --viking-series-5: var(--viking-crimson-500);
697
- --viking-series-6: var(--viking-blue-500);
698
- --viking-series-7: var(--viking-charcoal-700);
699
- --viking-series-8: var(--viking-metallic-500);
700
- --viking-series-default: var(--viking-series-1);
701
- /* Premium palette v3 — electric primary, crimson secondary, semantic + muted slots */
702
- --viking-series-palette: var(--viking-series-1), var(--viking-series-2),
703
- var(--viking-series-3), var(--viking-series-4), var(--viking-series-5),
704
- var(--viking-series-6), var(--viking-series-7), var(--viking-series-8);
705
- }
706
-
707
- :root {
708
- /* Primitive aliases (short names used in older SCSS) */
709
- --charcoal-950: var(--viking-charcoal-950);
710
- --charcoal-900: var(--viking-charcoal-900);
711
- --charcoal-800: var(--viking-charcoal-800);
712
- --charcoal-700: var(--viking-charcoal-700);
713
- --charcoal-600: var(--viking-charcoal-600);
714
- --charcoal-500: var(--viking-charcoal-500);
715
- --metallic-600: var(--viking-metallic-600);
716
- --metallic-500: var(--viking-metallic-500);
717
- --metallic-400: var(--viking-metallic-400);
718
- --metallic-300: var(--viking-metallic-300);
719
- --metallic-200: var(--viking-metallic-200);
720
- --metallic-100: var(--viking-metallic-100);
721
- --white: var(--viking-white-pure);
722
- --black: var(--viking-black);
723
- /* Typography floors */
724
- --base-font-size: var(--viking-font-size-base);
725
- --ui-font-size: var(--viking-font-size-sm);
726
- --header-letter-spacing: var(--viking-letter-spacing-tight);
727
- /* Spacing — legacy --space-N (4px grid) */
728
- --grid-unit: var(--viking-grid-unit);
729
- --space-0: var(--viking-space-0);
730
- --space-half: var(--viking-space-half);
731
- --space-0-5: var(--viking-space-0-5);
732
- --space-1: var(--viking-space-1);
733
- --space-1-5: var(--viking-space-1-5);
734
- --space-2: var(--viking-space-2);
735
- --space-2-5: var(--viking-space-2-5);
736
- --space-3: var(--viking-space-3);
737
- --space-4: var(--viking-space-4);
738
- --space-5: var(--viking-space-5);
739
- --space-6: var(--viking-space-6);
740
- --space-7: var(--viking-space-7);
741
- --space-8: var(--viking-space-8);
742
- --space-8-5: var(--viking-space-8-5);
743
- --space-9: var(--viking-space-9);
744
- --space-10: var(--viking-space-10);
745
- --space-11: var(--viking-space-11);
746
- --space-12: var(--viking-space-12);
747
- --space-14: var(--viking-space-14);
748
- --space-16: var(--viking-space-16);
749
- --space-20: var(--viking-space-20);
750
- --space-24: var(--viking-space-24);
751
- --grid-gap: var(--viking-space-3);
752
- --card-padding: var(--viking-card-padding);
753
- /* Layout rhythm aliases */
754
- --page-gutter: var(--viking-page-gutter);
755
- --page-gutter-lg: var(--viking-page-gutter-lg);
756
- --page-stack-gap: var(--viking-page-stack-gap);
757
- --page-section-gap: var(--viking-page-section-gap);
758
- --form-max-width: var(--viking-form-max-width);
759
- --form-narrow-max-width: var(--viking-form-narrow-max-width);
760
- --content-readable-max-width: var(--viking-content-readable-max-width);
761
- /* Layout */
762
- --container-max-width: var(--viking-container-max-width);
763
- --navbar-height: var(--viking-navbar-height);
764
- --btn-min-width: var(--viking-btn-min-width);
765
- /* Radii */
766
- --border-radius-xs: var(--viking-radius-xs);
767
- --border-radius-sm: var(--viking-radius-sm);
768
- --border-radius-md: var(--viking-radius);
769
- --border-radius-lg: var(--viking-radius-lg);
770
- --border-radius-xl: var(--viking-radius-xl);
771
- --border-radius-pill: var(--viking-radius-pill);
772
- /* Motion & elevation */
773
- --transition-smooth: var(--viking-transition);
774
- --shadow-sm: var(--viking-shadow-sm);
775
- --shadow-md: var(--viking-shadow-md);
776
- --shadow-lg: var(--viking-shadow-lg);
777
- --shadow-hover: var(--viking-shadow-hover);
778
- /* Semantic short names */
779
- --primary-color: var(--viking-electric-500);
780
- --accent-color: var(--viking-crimson-600);
781
- /* Focus */
782
- --focus-ring-width: var(--viking-ring-width);
783
- --focus-ring-offset: var(--viking-ring-offset);
784
- }
785
-
786
- :root,
787
- html[data-theme=dark] {
788
- --color-primary: var(--viking-electric-500);
789
- --color-on-primary: var(--viking-white-pure);
790
- --color-primary-container: var(--viking-electric-400);
791
- --color-on-primary-container: var(--viking-charcoal-900);
792
- --color-surface: var(--viking-charcoal-800);
793
- --color-on-surface: var(--viking-white);
794
- --color-background: var(--viking-charcoal-900);
795
- --color-on-background: var(--viking-white);
796
- --color-surface-variant: var(--viking-charcoal-700);
797
- --color-success: var(--viking-green-500);
798
- --color-warning: var(--viking-gold-500);
799
- --color-error: var(--viking-crimson-500);
800
- --color-info: var(--viking-blue-500);
801
- --color-gauge-red: var(--color-error);
802
- --border: var(--viking-border);
803
- --border-layout: var(--viking-border-strong);
804
- --hover-color: var(--viking-electric-400);
805
- --bg-color: var(--viking-bg);
806
- --text-color: var(--viking-text);
807
- --text-muted: var(--viking-text-muted);
808
- --card-bg: var(--viking-surface);
809
- --navbar-bg: color-mix(in srgb, var(--viking-bg) 96%, transparent);
810
- --link-color: var(--viking-electric-300);
811
- --link-hover-color: var(--viking-electric-400);
812
- --hero-title-color: var(--viking-white);
813
- --primary-text-color: var(--viking-electric-300);
814
- --button-primary: var(--color-primary);
815
- --button-primary-text: var(--viking-white-pure);
816
- --color-dark-grey-btn-bg: var(--viking-charcoal-700);
817
- --color-dark-grey-btn-text: var(--viking-white);
818
- --focus-ring-color: var(--viking-electric-400);
819
- }
820
-
821
- html[data-theme=light] {
822
- --color-primary: var(--viking-electric-600);
823
- --color-on-primary: var(--viking-white-pure);
824
- --color-primary-container: var(--viking-teal-500);
825
- --color-on-primary-container: var(--viking-white-pure);
826
- --color-surface: var(--viking-white-pure);
827
- --color-on-surface: var(--viking-charcoal-900);
828
- --color-background: var(--viking-white-pure);
829
- --color-on-background: var(--viking-charcoal-900);
830
- --color-surface-variant: var(--viking-surface-alt);
831
- --color-success: var(--viking-green-500);
832
- --color-warning: var(--viking-gold-500);
833
- --color-error: var(--viking-crimson-700);
834
- --color-info: var(--viking-blue-500);
835
- --color-gauge-red: var(--color-error);
836
- --border: var(--viking-border);
837
- --border-layout: var(--viking-border-strong);
838
- --hover-color: var(--viking-electric-500);
839
- --bg-color: var(--viking-bg);
840
- --text-color: var(--viking-text);
841
- --text-muted: var(--viking-text-muted);
842
- --card-bg: var(--viking-surface);
843
- --navbar-bg: color-mix(in srgb, var(--viking-white-pure) 96%, transparent);
844
- --link-color: var(--viking-electric-700);
845
- --link-hover-color: var(--viking-electric-600);
846
- --hero-title-color: var(--viking-charcoal-900);
847
- --primary-text-color: var(--viking-electric-700);
848
- --button-primary: var(--color-primary);
849
- --button-primary-text: var(--color-on-primary);
850
- --color-dark-grey-btn-bg: var(--viking-charcoal-800);
851
- --color-dark-grey-btn-text: var(--viking-white);
852
- --focus-ring-color: var(--viking-electric-500);
853
- }
854
-
855
- @media (prefers-color-scheme: light) {
856
- html:not([data-theme=dark]) {
857
- --color-primary: var(--viking-electric-600);
858
- --color-on-primary: var(--viking-white-pure);
859
- --color-primary-container: var(--viking-teal-500);
860
- --color-on-primary-container: var(--viking-white-pure);
861
- --color-surface: var(--viking-white-pure);
862
- --color-on-surface: var(--viking-charcoal-900);
863
- --color-background: var(--viking-white-pure);
864
- --color-on-background: var(--viking-charcoal-900);
865
- --color-surface-variant: var(--viking-surface-alt);
866
- --color-success: var(--viking-green-500);
867
- --color-warning: var(--viking-gold-500);
868
- --color-error: var(--viking-crimson-700);
869
- --color-info: var(--viking-blue-500);
870
- --color-gauge-red: var(--color-error);
871
- --border: var(--viking-border);
872
- --border-layout: var(--viking-border-strong);
873
- --hover-color: var(--viking-electric-500);
874
- --bg-color: var(--viking-bg);
875
- --text-color: var(--viking-text);
876
- --text-muted: var(--viking-text-muted);
877
- --card-bg: var(--viking-surface);
878
- --navbar-bg: color-mix(in srgb, var(--viking-white-pure) 96%, transparent);
879
- --link-color: var(--viking-electric-700);
880
- --link-hover-color: var(--viking-electric-600);
881
- --hero-title-color: var(--viking-charcoal-900);
882
- --primary-text-color: var(--viking-electric-700);
883
- --button-primary: var(--color-primary);
884
- --button-primary-text: var(--color-on-primary);
885
- --color-dark-grey-btn-bg: var(--viking-charcoal-800);
886
- --color-dark-grey-btn-text: var(--viking-white);
887
- --focus-ring-color: var(--viking-electric-500);
888
- }
889
- }
890
- body {
891
- font-size: var(--base-font-size);
892
- color: var(--text-color);
893
- background-color: var(--bg-color);
894
- }
895
-
896
- h1,
897
- h2,
898
- h3,
899
- h4,
900
- h5,
901
- h6 {
902
- letter-spacing: var(--header-letter-spacing);
903
- }