@zolomedia/bifrost-client 1.7.80 → 1.7.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/zSys/theme/zbase.css +123 -112
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zolomedia/bifrost-client",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.81",
|
|
4
4
|
"description": "Browser client for zBifrost — the WebSocket bridge that turns JSON events from a zOS server into live DOM. Thin bootstrap + server-controlled core.",
|
|
5
5
|
"homepage": "https://github.com/ZoloAi/zbifrost-client#readme",
|
|
6
6
|
"repository": {
|
package/zSys/theme/zbase.css
CHANGED
|
@@ -32,6 +32,17 @@
|
|
|
32
32
|
--color-success: #52B788; /* Manifestation — organic & vibrant */
|
|
33
33
|
--color-warning: #FFB347; /* Caution — warm & approachable */
|
|
34
34
|
--color-error: #E63946; /* Decisive — clear & strong */
|
|
35
|
+
|
|
36
|
+
/* Neutral foundation — surfaces, ink & lines on the dark zOS canvas.
|
|
37
|
+
* SSOT for every NON-accent value so no component carries raw rgba/hex.
|
|
38
|
+
* Apps re-skin the whole chrome by redefining these once. */
|
|
39
|
+
--ink: #f9fafb; /* primary text on dark */
|
|
40
|
+
--ink-muted: rgba(255, 255, 255, 0.65); /* secondary / captions */
|
|
41
|
+
--surface-1: rgba(255, 255, 255, 0.04); /* raised panel */
|
|
42
|
+
--surface-2: rgba(255, 255, 255, 0.08); /* input / hover fill */
|
|
43
|
+
--border: rgba(255, 255, 255, 0.12); /* hairline divider */
|
|
44
|
+
--border-strong: rgba(255, 255, 255, 0.18); /* field / control outline*/
|
|
45
|
+
--shadow: rgba(0, 0, 0, 0.20); /* ambient drop shadow */
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
/* ─── 1. Reset ─────────────────────────────────────────────────────────────── */
|
|
@@ -148,8 +159,8 @@ code:not(pre code) {
|
|
|
148
159
|
font-size: 0.88em;
|
|
149
160
|
font-weight: 600;
|
|
150
161
|
color: var(--color-code, #5CA9FF);
|
|
151
|
-
background:
|
|
152
|
-
border: 1px solid
|
|
162
|
+
background: color-mix(in srgb, var(--color-info) 12%, transparent);
|
|
163
|
+
border: 1px solid color-mix(in srgb, var(--color-info) 25%, transparent);
|
|
153
164
|
border-radius: 5px;
|
|
154
165
|
padding: 0.1em 0.4em;
|
|
155
166
|
letter-spacing: -0.01em;
|
|
@@ -208,9 +219,9 @@ input.zInput, textarea.zInput, select.zInput {
|
|
|
208
219
|
font-family: inherit;
|
|
209
220
|
font-size: 0.95rem;
|
|
210
221
|
line-height: 1.5;
|
|
211
|
-
color: var(--zinput-color,
|
|
212
|
-
background: var(--zinput-bg,
|
|
213
|
-
border: 1.5px solid var(--zinput-border,
|
|
222
|
+
color: var(--zinput-color, var(--ink));
|
|
223
|
+
background: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
224
|
+
border: 1.5px solid var(--zinput-border, var(--border-strong));
|
|
214
225
|
border-radius: var(--zinput-radius, 10px);
|
|
215
226
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
216
227
|
}
|
|
@@ -221,9 +232,9 @@ input.zInput, textarea.zInput, select.zInput {
|
|
|
221
232
|
.zForm-control:focus,
|
|
222
233
|
input.zInput:focus, textarea.zInput:focus, select.zInput:focus {
|
|
223
234
|
outline: none;
|
|
224
|
-
border-color: var(--zinput-focus, var(--color-primary
|
|
225
|
-
background: var(--zinput-bg-focus,
|
|
226
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary
|
|
235
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
236
|
+
background: var(--zinput-bg-focus, color-mix(in srgb, var(--ink) 17%, transparent));
|
|
237
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 20%, transparent);
|
|
227
238
|
}
|
|
228
239
|
|
|
229
240
|
.zForm-control:disabled, .zForm-control[readonly],
|
|
@@ -274,7 +285,7 @@ input[type="file"].zInput::file-selector-button {
|
|
|
274
285
|
padding: 0.45rem 1rem;
|
|
275
286
|
border: 0;
|
|
276
287
|
border-radius: 8px;
|
|
277
|
-
background: var(--zinput-accent,
|
|
288
|
+
background: var(--zinput-accent, var(--color-secondary));
|
|
278
289
|
color: #fff;
|
|
279
290
|
font-family: inherit;
|
|
280
291
|
font-size: 0.85rem;
|
|
@@ -304,7 +315,7 @@ input[type="color"].zInput {
|
|
|
304
315
|
}
|
|
305
316
|
input[type="color"].zForm-control:hover,
|
|
306
317
|
input[type="color"].zInput:hover {
|
|
307
|
-
border-color: var(--zinput-border-hover,
|
|
318
|
+
border-color: var(--zinput-border-hover, color-mix(in srgb, var(--ink) 30%, transparent));
|
|
308
319
|
}
|
|
309
320
|
input[type="color"].zForm-control::-webkit-color-swatch-wrapper,
|
|
310
321
|
input[type="color"].zInput::-webkit-color-swatch-wrapper { padding: 0; }
|
|
@@ -345,9 +356,9 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
345
356
|
align-items: center;
|
|
346
357
|
padding: 0.55rem 0.85rem;
|
|
347
358
|
font-size: 0.95rem;
|
|
348
|
-
color: var(--zinput-color,
|
|
349
|
-
background: var(--zinput-affix-bg,
|
|
350
|
-
border: 1.5px solid var(--zinput-border,
|
|
359
|
+
color: var(--zinput-color, var(--ink));
|
|
360
|
+
background: var(--zinput-affix-bg, color-mix(in srgb, var(--color-secondary) 14%, transparent));
|
|
361
|
+
border: 1.5px solid var(--zinput-border, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
351
362
|
white-space: nowrap;
|
|
352
363
|
}
|
|
353
364
|
.zInputGroup > .zInputGroup-text:first-child { border-radius: 10px 0 0 10px; border-right: 0; }
|
|
@@ -380,8 +391,8 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
380
391
|
margin: 0;
|
|
381
392
|
display: inline-grid;
|
|
382
393
|
place-content: center;
|
|
383
|
-
background: var(--zinput-bg,
|
|
384
|
-
border: 1.5px solid var(--zinput-border,
|
|
394
|
+
background: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
395
|
+
border: 1.5px solid var(--zinput-border, color-mix(in srgb, var(--ink) 30%, transparent));
|
|
385
396
|
cursor: pointer;
|
|
386
397
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
387
398
|
}
|
|
@@ -393,8 +404,8 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
393
404
|
.zForm-check input[type="checkbox"]:checked,
|
|
394
405
|
.zForm-check input[type="radio"]:checked,
|
|
395
406
|
.zForm-check-input:checked {
|
|
396
|
-
background: var(--zinput-focus, var(--color-primary
|
|
397
|
-
border-color: var(--zinput-focus, var(--color-primary
|
|
407
|
+
background: var(--zinput-focus, var(--color-primary));
|
|
408
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
398
409
|
}
|
|
399
410
|
/* checkmark glyph */
|
|
400
411
|
.zForm-check input[type="checkbox"]:checked::after,
|
|
@@ -423,7 +434,7 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
423
434
|
.zForm-check input[type="radio"]:focus-visible,
|
|
424
435
|
.zForm-check-input:focus-visible {
|
|
425
436
|
outline: none;
|
|
426
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary
|
|
437
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 30%, transparent);
|
|
427
438
|
}
|
|
428
439
|
|
|
429
440
|
.zForm-check-label {
|
|
@@ -442,7 +453,7 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
442
453
|
|
|
443
454
|
/* native radios/checkboxes NOT given the custom .zForm-check treatment
|
|
444
455
|
* still pick up the theme color (belt-and-braces — groups now emit .zForm-check). */
|
|
445
|
-
input[type="radio"], input[type="checkbox"] { accent-color: var(--color-primary
|
|
456
|
+
input[type="radio"], input[type="checkbox"] { accent-color: var(--color-primary); }
|
|
446
457
|
|
|
447
458
|
/* radio / checkbox group (zSelect type:radio|checkbox) — legend + row rhythm */
|
|
448
459
|
.zForm-check-group .zLabel { margin-bottom: 0.45rem; }
|
|
@@ -464,9 +475,9 @@ select.zInput {
|
|
|
464
475
|
font-family: inherit;
|
|
465
476
|
font-size: 0.95rem;
|
|
466
477
|
line-height: 1.5;
|
|
467
|
-
color: var(--zinput-color,
|
|
468
|
-
background-color: var(--zinput-bg,
|
|
469
|
-
border: 1.5px solid var(--zinput-border,
|
|
478
|
+
color: var(--zinput-color, var(--ink));
|
|
479
|
+
background-color: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
480
|
+
border: 1.5px solid var(--zinput-border, var(--border-strong));
|
|
470
481
|
border-radius: var(--zinput-radius, 10px);
|
|
471
482
|
cursor: pointer;
|
|
472
483
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
@@ -481,9 +492,9 @@ select.zSelect:focus,
|
|
|
481
492
|
select.zForm-control:focus,
|
|
482
493
|
select.zInput:focus {
|
|
483
494
|
outline: none;
|
|
484
|
-
border-color: var(--zinput-focus, var(--color-primary
|
|
485
|
-
background-color: var(--zinput-bg-focus,
|
|
486
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary
|
|
495
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
496
|
+
background-color: var(--zinput-bg-focus, color-mix(in srgb, var(--ink) 17%, transparent));
|
|
497
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 20%, transparent);
|
|
487
498
|
}
|
|
488
499
|
|
|
489
500
|
select.zSelect:disabled,
|
|
@@ -495,7 +506,7 @@ select.zSelect option,
|
|
|
495
506
|
select.zForm-control option,
|
|
496
507
|
select.zInput option { color: #1f2937; background: #fff; }
|
|
497
508
|
select.zSelect option:disabled,
|
|
498
|
-
select.zForm-control option:disabled { color:
|
|
509
|
+
select.zForm-control option:disabled { color: var(--ink-muted); }
|
|
499
510
|
|
|
500
511
|
/* multi-select / sized list box — themed box, no caret, themed inline options */
|
|
501
512
|
select.zSelect[multiple],
|
|
@@ -509,7 +520,7 @@ select.zForm-control[multiple] {
|
|
|
509
520
|
select.zSelect[multiple] option,
|
|
510
521
|
select.zSelect[size] option,
|
|
511
522
|
select.zForm-control[multiple] option {
|
|
512
|
-
color: var(--zinput-color,
|
|
523
|
+
color: var(--zinput-color, var(--ink));
|
|
513
524
|
background: transparent;
|
|
514
525
|
padding: 0.35rem 0.55rem;
|
|
515
526
|
border-radius: 6px;
|
|
@@ -520,7 +531,7 @@ select.zSelect[multiple] option:checked,
|
|
|
520
531
|
select.zSelect[size] option:checked,
|
|
521
532
|
select.zForm-control[multiple] option:checked {
|
|
522
533
|
color: #fff;
|
|
523
|
-
background: linear-gradient(var(--color-primary
|
|
534
|
+
background: linear-gradient(var(--color-primary), var(--color-primary));
|
|
524
535
|
}
|
|
525
536
|
select.zSelect[multiple] option:disabled,
|
|
526
537
|
select.zForm-control[multiple] option:disabled { color: var(--zinput-placeholder, rgba(156, 163, 175, 0.55)); }
|
|
@@ -539,9 +550,9 @@ zBifrostBadge {
|
|
|
539
550
|
|
|
540
551
|
/* ─── zBifrostBadge states ─────────────────────────────────────────────────── */
|
|
541
552
|
|
|
542
|
-
.zBadge-pending { color:
|
|
543
|
-
.zBadge-success { color:
|
|
544
|
-
.zBadge-error { color:
|
|
553
|
+
.zBadge-pending { color: var(--color-warning); }
|
|
554
|
+
.zBadge-success { color: var(--color-success); }
|
|
555
|
+
.zBadge-error { color: var(--color-error); }
|
|
545
556
|
.zBadge-dot { border-radius: 50%; background: currentColor; }
|
|
546
557
|
.zIcon { display: inline-block; width: 0.75em; height: 0.75em; fill: currentColor; }
|
|
547
558
|
|
|
@@ -579,7 +590,7 @@ zNavBar .zNavbar {
|
|
|
579
590
|
flex-wrap: wrap;
|
|
580
591
|
padding: 0.75rem 1.5rem;
|
|
581
592
|
background: var(--znav-bg, rgba(10, 14, 39, 0.92));
|
|
582
|
-
border-bottom: 1px solid var(--znav-border,
|
|
593
|
+
border-bottom: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
583
594
|
backdrop-filter: blur(12px);
|
|
584
595
|
font-family: var(--znav-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
|
|
585
596
|
}
|
|
@@ -589,7 +600,7 @@ zNavBar .zNavbar-brand {
|
|
|
589
600
|
font-weight: 800;
|
|
590
601
|
letter-spacing: -0.02em;
|
|
591
602
|
margin-right: 2rem;
|
|
592
|
-
color: var(--znav-brand-color,
|
|
603
|
+
color: var(--znav-brand-color, var(--ink));
|
|
593
604
|
}
|
|
594
605
|
|
|
595
606
|
zNavBar .zNavbar-toggler {
|
|
@@ -599,9 +610,9 @@ zNavBar .zNavbar-toggler {
|
|
|
599
610
|
font-size: 1.1rem;
|
|
600
611
|
line-height: 1;
|
|
601
612
|
cursor: pointer;
|
|
602
|
-
color: var(--znav-brand-color,
|
|
603
|
-
background: var(--znav-link-hover-bg,
|
|
604
|
-
border: 1px solid var(--znav-border,
|
|
613
|
+
color: var(--znav-brand-color, var(--ink));
|
|
614
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
615
|
+
border: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 30%, transparent));
|
|
605
616
|
border-radius: 6px;
|
|
606
617
|
}
|
|
607
618
|
|
|
@@ -628,14 +639,14 @@ zNavBar .zNav-link {
|
|
|
628
639
|
font-size: 0.9rem;
|
|
629
640
|
font-weight: 500;
|
|
630
641
|
border-radius: 8px;
|
|
631
|
-
color: var(--znav-link-color,
|
|
642
|
+
color: var(--znav-link-color, var(--ink-muted));
|
|
632
643
|
transition: color 0.2s, background 0.2s;
|
|
633
644
|
}
|
|
634
645
|
|
|
635
646
|
zNavBar .zNav-link:hover,
|
|
636
647
|
zNavBar .zNav-link.active {
|
|
637
|
-
color: var(--znav-link-hover-color,
|
|
638
|
-
background: var(--znav-link-hover-bg,
|
|
648
|
+
color: var(--znav-link-hover-color, var(--ink));
|
|
649
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
639
650
|
}
|
|
640
651
|
|
|
641
652
|
/* ─── zDropdown (navbar menus) — JS toggles .zShow ─────────────────────────── */
|
|
@@ -649,7 +660,7 @@ zNavBar .zNav-link.active {
|
|
|
649
660
|
min-width: 11rem;
|
|
650
661
|
padding: 0.4rem 0;
|
|
651
662
|
background: var(--zdropdown-bg, rgba(20, 25, 45, 0.97));
|
|
652
|
-
border: 1px solid var(--znav-border,
|
|
663
|
+
border: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 25%, transparent));
|
|
653
664
|
border-radius: 10px;
|
|
654
665
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
655
666
|
backdrop-filter: blur(12px);
|
|
@@ -660,12 +671,12 @@ zNavBar .zNav-link.active {
|
|
|
660
671
|
display: block;
|
|
661
672
|
padding: 0.5rem 1rem;
|
|
662
673
|
font-size: 0.875rem;
|
|
663
|
-
color: var(--znav-link-color,
|
|
674
|
+
color: var(--znav-link-color, var(--ink-muted));
|
|
664
675
|
transition: color 0.15s, background 0.15s;
|
|
665
676
|
}
|
|
666
677
|
.zDropdown-item:hover {
|
|
667
|
-
color: var(--znav-link-hover-color,
|
|
668
|
-
background: var(--znav-link-hover-bg,
|
|
678
|
+
color: var(--znav-link-hover-color, var(--ink));
|
|
679
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
669
680
|
}
|
|
670
681
|
|
|
671
682
|
/* ─── zNavbar-inblock — light, in-content navbar variant ────────────────────────
|
|
@@ -758,7 +769,7 @@ zNavBar .zNav-link.active {
|
|
|
758
769
|
border: none;
|
|
759
770
|
border-radius: 0;
|
|
760
771
|
padding-left: 0.75rem;
|
|
761
|
-
background: var(--znav-link-hover-bg,
|
|
772
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 8%, transparent));
|
|
762
773
|
}
|
|
763
774
|
}
|
|
764
775
|
|
|
@@ -1052,10 +1063,10 @@ zNavBar .zNav-link.active {
|
|
|
1052
1063
|
}
|
|
1053
1064
|
|
|
1054
1065
|
.zText-muted { opacity: 0.6; }
|
|
1055
|
-
.zText-dark { color:
|
|
1056
|
-
.zBorder { border: 1px solid
|
|
1057
|
-
.zShadow-sm { box-shadow: 0 1px 3px
|
|
1058
|
-
.zBg-white { background:
|
|
1066
|
+
.zText-dark { color: var(--ink); }
|
|
1067
|
+
.zBorder { border: 1px solid var(--border); }
|
|
1068
|
+
.zShadow-sm { box-shadow: 0 1px 3px var(--shadow); }
|
|
1069
|
+
.zBg-white { background: var(--surface-1); }
|
|
1059
1070
|
.zText-center { text-align: center !important; }
|
|
1060
1071
|
.zText-start { text-align: left !important; }
|
|
1061
1072
|
.zText-end { text-align: right !important; }
|
|
@@ -1078,7 +1089,7 @@ zNavBar .zNav-link.active {
|
|
|
1078
1089
|
border: 1px solid transparent;
|
|
1079
1090
|
text-decoration: none;
|
|
1080
1091
|
}
|
|
1081
|
-
.zBtn:focus { outline: 2px solid
|
|
1092
|
+
.zBtn:focus { outline: 2px solid color-mix(in srgb, var(--color-primary) 55%, transparent); outline-offset: 2px; }
|
|
1082
1093
|
|
|
1083
1094
|
/* ─── Button color variants — canonical fills (theme tokens) ───────────────── */
|
|
1084
1095
|
/* The renderer maps a zBtn's `color:` (default primary) to .zBtn-{color}; these
|
|
@@ -1226,7 +1237,7 @@ zNavBar .zNav-link.active {
|
|
|
1226
1237
|
}
|
|
1227
1238
|
.zDash-format-sidebar > .zRow > .zCol-auto {
|
|
1228
1239
|
border-right: none !important;
|
|
1229
|
-
border-bottom: 1px solid
|
|
1240
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1230
1241
|
}
|
|
1231
1242
|
.zDash-format-sidebar .zDash-sidebar {
|
|
1232
1243
|
flex-direction: row !important;
|
|
@@ -1237,7 +1248,7 @@ zNavBar .zNav-link.active {
|
|
|
1237
1248
|
}
|
|
1238
1249
|
.zDash-format-sidebar .zDash-sidebar .zNav-link.zActive {
|
|
1239
1250
|
box-shadow: none !important;
|
|
1240
|
-
border-bottom: 2px solid
|
|
1251
|
+
border-bottom: 2px solid var(--color-secondary);
|
|
1241
1252
|
}
|
|
1242
1253
|
.zDash-panel { padding: 1.25rem 1rem; }
|
|
1243
1254
|
.zDash-container .zDialog-form { grid-template-columns: 1fr 1fr; }
|
|
@@ -1262,7 +1273,7 @@ zNavBar .zNav-link.active {
|
|
|
1262
1273
|
right: 0;
|
|
1263
1274
|
z-index: 50;
|
|
1264
1275
|
background: rgba(10, 14, 39, 0.98);
|
|
1265
|
-
border-bottom: 1px solid
|
|
1276
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1266
1277
|
backdrop-filter: blur(12px);
|
|
1267
1278
|
}
|
|
1268
1279
|
|
|
@@ -1288,18 +1299,18 @@ zNavBar .zNav-link.active {
|
|
|
1288
1299
|
gap: 0.4rem;
|
|
1289
1300
|
margin: 0.75rem 0.75rem 0;
|
|
1290
1301
|
padding: 0.45rem 0.85rem;
|
|
1291
|
-
background:
|
|
1292
|
-
border: 1px solid
|
|
1302
|
+
background: color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1303
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1293
1304
|
border-radius: 8px;
|
|
1294
|
-
color:
|
|
1305
|
+
color: var(--ink);
|
|
1295
1306
|
font-size: 0.875rem;
|
|
1296
1307
|
font-weight: 500;
|
|
1297
1308
|
cursor: pointer;
|
|
1298
1309
|
font-family: inherit;
|
|
1299
1310
|
}
|
|
1300
1311
|
.zDash-sidebar-toggle:hover {
|
|
1301
|
-
background:
|
|
1302
|
-
color:
|
|
1312
|
+
background: color-mix(in srgb, var(--color-secondary) 25%, transparent);
|
|
1313
|
+
color: var(--ink);
|
|
1303
1314
|
}
|
|
1304
1315
|
|
|
1305
1316
|
.zDash-panel { padding: 1rem 0.75rem; }
|
|
@@ -1312,7 +1323,7 @@ zNavBar .zNav-link.active {
|
|
|
1312
1323
|
.zDash-format-tabs .zDash-sidebar {
|
|
1313
1324
|
display: flex;
|
|
1314
1325
|
flex-direction: row;
|
|
1315
|
-
border-bottom: 1px solid
|
|
1326
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1316
1327
|
}
|
|
1317
1328
|
|
|
1318
1329
|
/* accordion format (future) */
|
|
@@ -1327,7 +1338,7 @@ zNavBar .zNav-link.active {
|
|
|
1327
1338
|
/* Sidebar column chrome */
|
|
1328
1339
|
.zDash-format-sidebar > .zRow > .zCol-auto {
|
|
1329
1340
|
background: rgba(10, 14, 39, 0.6);
|
|
1330
|
-
border-right: 1px solid
|
|
1341
|
+
border-right: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1331
1342
|
padding: 0;
|
|
1332
1343
|
}
|
|
1333
1344
|
|
|
@@ -1344,7 +1355,7 @@ zNavBar .zNav-link.active {
|
|
|
1344
1355
|
align-items: center;
|
|
1345
1356
|
padding: 0.55rem 0.85rem;
|
|
1346
1357
|
border-radius: 8px;
|
|
1347
|
-
color:
|
|
1358
|
+
color: var(--ink-muted);
|
|
1348
1359
|
font-size: 0.875rem;
|
|
1349
1360
|
font-weight: 500;
|
|
1350
1361
|
cursor: pointer;
|
|
@@ -1353,13 +1364,13 @@ zNavBar .zNav-link.active {
|
|
|
1353
1364
|
text-decoration: none;
|
|
1354
1365
|
}
|
|
1355
1366
|
.zDash-sidebar .zNav-link:hover {
|
|
1356
|
-
color:
|
|
1357
|
-
background:
|
|
1367
|
+
color: var(--ink);
|
|
1368
|
+
background: color-mix(in srgb, var(--color-secondary) 12%, transparent);
|
|
1358
1369
|
}
|
|
1359
1370
|
.zDash-sidebar .zNav-link.zActive {
|
|
1360
|
-
color:
|
|
1361
|
-
background:
|
|
1362
|
-
box-shadow: inset 3px 0 0
|
|
1371
|
+
color: var(--ink);
|
|
1372
|
+
background: color-mix(in srgb, var(--color-secondary) 22%, transparent);
|
|
1373
|
+
box-shadow: inset 3px 0 0 var(--color-secondary);
|
|
1363
1374
|
}
|
|
1364
1375
|
|
|
1365
1376
|
/* Panel area */
|
|
@@ -1373,7 +1384,7 @@ zNavBar .zNav-link.active {
|
|
|
1373
1384
|
box-sizing: border-box;
|
|
1374
1385
|
margin-bottom: 1.25rem;
|
|
1375
1386
|
background: rgba(15, 20, 48, 0.6);
|
|
1376
|
-
border: 1px solid
|
|
1387
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1377
1388
|
border-radius: 10px;
|
|
1378
1389
|
}
|
|
1379
1390
|
|
|
@@ -1381,10 +1392,10 @@ zNavBar .zNav-link.active {
|
|
|
1381
1392
|
.zDash-container .zDialog-title {
|
|
1382
1393
|
font-size: 1rem;
|
|
1383
1394
|
font-weight: 700;
|
|
1384
|
-
color:
|
|
1395
|
+
color: var(--ink);
|
|
1385
1396
|
margin-bottom: 1rem;
|
|
1386
1397
|
padding-bottom: 0.6rem;
|
|
1387
|
-
border-bottom: 1px solid
|
|
1398
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1388
1399
|
}
|
|
1389
1400
|
|
|
1390
1401
|
/* Multi-column form grid */
|
|
@@ -1403,7 +1414,7 @@ zNavBar .zNav-link.active {
|
|
|
1403
1414
|
font-size: 0.7rem;
|
|
1404
1415
|
text-transform: uppercase;
|
|
1405
1416
|
letter-spacing: 0.06em;
|
|
1406
|
-
color:
|
|
1417
|
+
color: var(--ink-muted);
|
|
1407
1418
|
font-weight: 600;
|
|
1408
1419
|
display: block;
|
|
1409
1420
|
margin-bottom: 0.3rem;
|
|
@@ -1412,10 +1423,10 @@ zNavBar .zNav-link.active {
|
|
|
1412
1423
|
/* Inputs & selects */
|
|
1413
1424
|
.zDash-container .zInput {
|
|
1414
1425
|
appearance: none;
|
|
1415
|
-
background:
|
|
1416
|
-
border: 1px solid
|
|
1426
|
+
background: var(--surface-1);
|
|
1427
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1417
1428
|
border-radius: 7px;
|
|
1418
|
-
color:
|
|
1429
|
+
color: var(--ink);
|
|
1419
1430
|
padding: 0.5rem 0.75rem;
|
|
1420
1431
|
font-size: 0.875rem;
|
|
1421
1432
|
width: 100%;
|
|
@@ -1425,13 +1436,13 @@ zNavBar .zNav-link.active {
|
|
|
1425
1436
|
}
|
|
1426
1437
|
.zDash-container .zInput:focus {
|
|
1427
1438
|
outline: none;
|
|
1428
|
-
border-color:
|
|
1429
|
-
background:
|
|
1439
|
+
border-color: color-mix(in srgb, var(--color-secondary) 60%, transparent);
|
|
1440
|
+
background: color-mix(in srgb, var(--ink) 7%, transparent);
|
|
1430
1441
|
}
|
|
1431
1442
|
|
|
1432
1443
|
/* Primary action button */
|
|
1433
1444
|
.zDash-container .zBtn-primary {
|
|
1434
|
-
background:
|
|
1445
|
+
background: var(--color-secondary);
|
|
1435
1446
|
border: none;
|
|
1436
1447
|
color: #fff;
|
|
1437
1448
|
padding: 0.55rem 1.25rem;
|
|
@@ -1443,7 +1454,7 @@ zNavBar .zNav-link.active {
|
|
|
1443
1454
|
transition: background 0.15s, transform 0.1s;
|
|
1444
1455
|
}
|
|
1445
1456
|
.zDash-container .zBtn-primary:hover {
|
|
1446
|
-
background:
|
|
1457
|
+
background: color-mix(in srgb, var(--color-secondary) 82%, black);
|
|
1447
1458
|
transform: translateY(-1px);
|
|
1448
1459
|
}
|
|
1449
1460
|
|
|
@@ -1454,10 +1465,10 @@ zNavBar .zNav-link.active {
|
|
|
1454
1465
|
gap: 0.4rem;
|
|
1455
1466
|
padding: 0.5rem 1rem;
|
|
1456
1467
|
margin: 0 0.4rem 0.4rem 0;
|
|
1457
|
-
background:
|
|
1458
|
-
border: 1px solid
|
|
1468
|
+
background: color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1469
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1459
1470
|
border-radius: 8px;
|
|
1460
|
-
color:
|
|
1471
|
+
color: var(--ink);
|
|
1461
1472
|
font-size: 0.875rem;
|
|
1462
1473
|
font-weight: 500;
|
|
1463
1474
|
font-family: inherit;
|
|
@@ -1465,9 +1476,9 @@ zNavBar .zNav-link.active {
|
|
|
1465
1476
|
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
|
1466
1477
|
}
|
|
1467
1478
|
.zDash-container button[data-key]:hover {
|
|
1468
|
-
background:
|
|
1469
|
-
border-color:
|
|
1470
|
-
color:
|
|
1479
|
+
background: color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1480
|
+
border-color: color-mix(in srgb, var(--color-secondary) 50%, transparent);
|
|
1481
|
+
color: var(--ink);
|
|
1471
1482
|
}
|
|
1472
1483
|
|
|
1473
1484
|
/* Tables */
|
|
@@ -1475,32 +1486,32 @@ zNavBar .zNav-link.active {
|
|
|
1475
1486
|
width: 100%;
|
|
1476
1487
|
border-collapse: collapse;
|
|
1477
1488
|
font-size: 0.875rem;
|
|
1478
|
-
color:
|
|
1489
|
+
color: var(--ink);
|
|
1479
1490
|
}
|
|
1480
1491
|
.zDash-container th {
|
|
1481
1492
|
padding: 0.6rem 0.9rem;
|
|
1482
|
-
background:
|
|
1483
|
-
color:
|
|
1493
|
+
background: color-mix(in srgb, var(--color-secondary) 12%, transparent);
|
|
1494
|
+
color: var(--color-secondary);
|
|
1484
1495
|
font-weight: 600;
|
|
1485
1496
|
text-align: left;
|
|
1486
|
-
border-bottom: 1px solid
|
|
1497
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1487
1498
|
}
|
|
1488
1499
|
.zDash-container td {
|
|
1489
1500
|
padding: 0.55rem 0.9rem;
|
|
1490
|
-
border-bottom: 1px solid
|
|
1501
|
+
border-bottom: 1px solid color-mix(in srgb, var(--ink) 5%, transparent);
|
|
1491
1502
|
}
|
|
1492
|
-
.zDash-container tr:hover td { background:
|
|
1503
|
+
.zDash-container tr:hover td { background: color-mix(in srgb, var(--color-secondary) 7%, transparent); }
|
|
1493
1504
|
|
|
1494
1505
|
/* Section headings */
|
|
1495
1506
|
.zDash-container h2 {
|
|
1496
1507
|
font-size: 1.2rem;
|
|
1497
1508
|
font-weight: 700;
|
|
1498
|
-
color:
|
|
1509
|
+
color: var(--ink);
|
|
1499
1510
|
margin: 0 0 1rem;
|
|
1500
1511
|
}
|
|
1501
1512
|
|
|
1502
1513
|
/* Spinner */
|
|
1503
|
-
.zSpinner-border { color:
|
|
1514
|
+
.zSpinner-border { color: var(--color-primary); }
|
|
1504
1515
|
|
|
1505
1516
|
/* ============================================================================
|
|
1506
1517
|
Tables (zTable) — canonical dark-theme data tables
|
|
@@ -1511,7 +1522,7 @@ zNavBar .zNav-link.active {
|
|
|
1511
1522
|
.zTable-container { margin: 1.5rem 0; }
|
|
1512
1523
|
|
|
1513
1524
|
.zTable-container h4 {
|
|
1514
|
-
color:
|
|
1525
|
+
color: var(--ink);
|
|
1515
1526
|
font-size: 1.1rem;
|
|
1516
1527
|
font-weight: 700;
|
|
1517
1528
|
margin: 0 0 0.75rem;
|
|
@@ -1520,7 +1531,7 @@ zNavBar .zNav-link.active {
|
|
|
1520
1531
|
.zTable-responsive {
|
|
1521
1532
|
overflow-x: auto;
|
|
1522
1533
|
border-radius: 12px;
|
|
1523
|
-
border: 1px solid
|
|
1534
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1524
1535
|
}
|
|
1525
1536
|
|
|
1526
1537
|
.zTable {
|
|
@@ -1532,30 +1543,30 @@ zNavBar .zNav-link.active {
|
|
|
1532
1543
|
/* Default body text colour lives here so cells INHERIT it. Keeping it off the
|
|
1533
1544
|
td selector lets a per-cell utility (zText-success/-danger…) win — a bare
|
|
1534
1545
|
.zText-* class (0,1,0) would otherwise lose to `.zTable tbody td` (0,1,2). */
|
|
1535
|
-
color:
|
|
1546
|
+
color: var(--ink-muted);
|
|
1536
1547
|
}
|
|
1537
1548
|
|
|
1538
1549
|
.zTable thead th {
|
|
1539
|
-
background:
|
|
1540
|
-
color:
|
|
1550
|
+
background: color-mix(in srgb, var(--color-secondary) 18%, transparent);
|
|
1551
|
+
color: var(--ink);
|
|
1541
1552
|
font-weight: 700;
|
|
1542
1553
|
text-align: left;
|
|
1543
1554
|
padding: 0.85rem 1rem;
|
|
1544
1555
|
letter-spacing: 0.02em;
|
|
1545
|
-
border-bottom: 1px solid
|
|
1556
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1546
1557
|
white-space: nowrap;
|
|
1547
1558
|
}
|
|
1548
1559
|
|
|
1549
1560
|
.zTable tbody td {
|
|
1550
1561
|
padding: 0.8rem 1rem;
|
|
1551
|
-
border-bottom: 1px solid
|
|
1562
|
+
border-bottom: 1px solid color-mix(in srgb, var(--ink) 6%, transparent);
|
|
1552
1563
|
vertical-align: top;
|
|
1553
1564
|
}
|
|
1554
1565
|
|
|
1555
1566
|
.zTable tbody tr:last-child td { border-bottom: none; }
|
|
1556
|
-
.zTable tbody tr:nth-child(even) td { background:
|
|
1557
|
-
.zTable tbody tr:hover td { background:
|
|
1558
|
-
.zTable td strong { color:
|
|
1567
|
+
.zTable tbody tr:nth-child(even) td { background: color-mix(in srgb, var(--ink) 2%, transparent); }
|
|
1568
|
+
.zTable tbody tr:hover td { background: color-mix(in srgb, var(--color-secondary) 8%, transparent); }
|
|
1569
|
+
.zTable td strong { color: var(--ink); }
|
|
1559
1570
|
|
|
1560
1571
|
/* ════════════════════════════════════════════════════════════════════════════
|
|
1561
1572
|
Progress bar (zProgress) — canonical animated progress component
|
|
@@ -1576,14 +1587,14 @@ zNavBar .zNav-link.active {
|
|
|
1576
1587
|
align-items: baseline;
|
|
1577
1588
|
margin-bottom: 0.4rem;
|
|
1578
1589
|
}
|
|
1579
|
-
.zProgress-container .zFw-bold { font-weight: 600; color: var(--zprogress-label,
|
|
1590
|
+
.zProgress-container .zFw-bold { font-weight: 600; color: var(--zprogress-label, var(--ink)); }
|
|
1580
1591
|
.zProgress-container .zText-muted { color: var(--zprogress-info, rgba(229, 231, 235, 0.6)); }
|
|
1581
1592
|
|
|
1582
1593
|
/* Track — the rail behind the fill. Inset shadow gives the pill real depth. */
|
|
1583
1594
|
.zProgress {
|
|
1584
1595
|
width: 100%;
|
|
1585
1596
|
height: 1rem; /* default; renderer may override inline via height prop */
|
|
1586
|
-
background: var(--zprogress-track,
|
|
1597
|
+
background: var(--zprogress-track, color-mix(in srgb, var(--ink) 7%, transparent));
|
|
1587
1598
|
border-radius: 999px;
|
|
1588
1599
|
overflow: hidden;
|
|
1589
1600
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.35);
|
|
@@ -1599,11 +1610,11 @@ zNavBar .zNav-link.active {
|
|
|
1599
1610
|
background-color: var(--color-primary, #A2D46E); /* default; zBg-{color} overrides */
|
|
1600
1611
|
background-image:
|
|
1601
1612
|
linear-gradient(to bottom,
|
|
1602
|
-
|
|
1613
|
+
color-mix(in srgb, var(--ink) 28%, transparent), var(--surface-1) 48%, rgba(0, 0, 0, 0.10)),
|
|
1603
1614
|
linear-gradient(-45deg,
|
|
1604
|
-
|
|
1605
|
-
transparent 50%,
|
|
1606
|
-
|
|
1615
|
+
color-mix(in srgb, var(--ink) 16%, transparent) 25%, transparent 25%,
|
|
1616
|
+
transparent 50%, color-mix(in srgb, var(--ink) 16%, transparent) 50%,
|
|
1617
|
+
color-mix(in srgb, var(--ink) 16%, transparent) 75%, transparent 75%, transparent);
|
|
1607
1618
|
background-size: 100% 100%, 1.15rem 1.15rem;
|
|
1608
1619
|
background-repeat: no-repeat, repeat;
|
|
1609
1620
|
border-radius: inherit;
|
|
@@ -1637,11 +1648,11 @@ zNavBar .zNav-link.active {
|
|
|
1637
1648
|
.zProgress-bar-striped {
|
|
1638
1649
|
background-image:
|
|
1639
1650
|
linear-gradient(to bottom,
|
|
1640
|
-
|
|
1651
|
+
color-mix(in srgb, var(--ink) 28%, transparent), var(--surface-1) 48%, rgba(0, 0, 0, 0.10)),
|
|
1641
1652
|
linear-gradient(-45deg,
|
|
1642
|
-
|
|
1643
|
-
transparent 50%,
|
|
1644
|
-
|
|
1653
|
+
color-mix(in srgb, var(--ink) 28%, transparent) 25%, transparent 25%,
|
|
1654
|
+
transparent 50%, color-mix(in srgb, var(--ink) 28%, transparent) 50%,
|
|
1655
|
+
color-mix(in srgb, var(--ink) 28%, transparent) 75%, transparent 75%, transparent);
|
|
1645
1656
|
}
|
|
1646
1657
|
.zProgress-bar-animated { animation: zProgress-flow 0.9s linear infinite; }
|
|
1647
1658
|
|
|
@@ -1726,7 +1737,7 @@ zNavBar .zNav-link.active {
|
|
|
1726
1737
|
.zMenu-nav .zNav-link:focus-visible,
|
|
1727
1738
|
.zMenu-container .zMenu-option button:hover,
|
|
1728
1739
|
.zMenu-container .zMenu-option button:focus-visible {
|
|
1729
|
-
background:
|
|
1740
|
+
background: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
1730
1741
|
border-color: var(--color-primary, #A2D46E);
|
|
1731
1742
|
transform: translateX(2px);
|
|
1732
1743
|
outline: none;
|
|
@@ -1768,7 +1779,7 @@ zNavBar .zNav-link.active {
|
|
|
1768
1779
|
font-weight: 600;
|
|
1769
1780
|
font-variant-numeric: tabular-nums;
|
|
1770
1781
|
color: var(--color-secondary, #9370DB);
|
|
1771
|
-
background:
|
|
1782
|
+
background: color-mix(in srgb, var(--color-secondary) 16%, transparent);
|
|
1772
1783
|
border-radius: 50%;
|
|
1773
1784
|
}
|
|
1774
1785
|
|