@zolomedia/bifrost-client 1.7.80 → 1.7.82
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 +168 -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.82",
|
|
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;
|
|
@@ -190,6 +201,51 @@ pre {
|
|
|
190
201
|
white-space: pre;
|
|
191
202
|
}
|
|
192
203
|
|
|
204
|
+
/* ─── Lists (zUL / zOL / zDL) ──────────────────────────────────────────────── */
|
|
205
|
+
/* Bifrost owns the list baseline so a bare zUL/zOL/zDL — and every markdown list
|
|
206
|
+
* — renders deliberately and themed, never on raw browser UA defaults. Marker
|
|
207
|
+
* variants (circle/square/letter/roman) are set inline by the renderer; here we
|
|
208
|
+
* own the rhythm, indent, brand-tinted markers, and the dl term/definition look.
|
|
209
|
+
* Apps re-skin via _zClass — they never SUPPLY the baseline. */
|
|
210
|
+
|
|
211
|
+
ul, ol {
|
|
212
|
+
margin: 0 0 1rem;
|
|
213
|
+
padding-left: 1.4rem;
|
|
214
|
+
line-height: 1.6;
|
|
215
|
+
}
|
|
216
|
+
ul:last-child, ol:last-child { margin-bottom: 0; }
|
|
217
|
+
|
|
218
|
+
li { margin-bottom: 0.4rem; }
|
|
219
|
+
li:last-child { margin-bottom: 0; }
|
|
220
|
+
|
|
221
|
+
/* Themed markers — the modern touch (brand-tinted, not flat UA black). */
|
|
222
|
+
li::marker { color: var(--color-secondary); }
|
|
223
|
+
|
|
224
|
+
/* Nested lists tuck under their parent item with a single tight gap. */
|
|
225
|
+
li > ul, li > ol { margin: 0.4rem 0 0; }
|
|
226
|
+
|
|
227
|
+
/* Definition list (zDL) — term in ink, definition indented & muted. */
|
|
228
|
+
dl { margin: 0 0 1rem; }
|
|
229
|
+
dl:last-child { margin-bottom: 0; }
|
|
230
|
+
dt { font-weight: 700; color: var(--ink); }
|
|
231
|
+
dd {
|
|
232
|
+
margin: 0 0 0.6rem 1.2rem;
|
|
233
|
+
color: var(--ink-muted);
|
|
234
|
+
line-height: 1.6;
|
|
235
|
+
}
|
|
236
|
+
dd:last-child { margin-bottom: 0; }
|
|
237
|
+
|
|
238
|
+
/* Inline list (zList-inline) — horizontal, marker-less row of items. */
|
|
239
|
+
.zList-inline {
|
|
240
|
+
display: flex;
|
|
241
|
+
flex-wrap: wrap;
|
|
242
|
+
gap: 0.5rem 1.25rem;
|
|
243
|
+
margin: 0 0 1rem;
|
|
244
|
+
padding-left: 0;
|
|
245
|
+
list-style: none;
|
|
246
|
+
}
|
|
247
|
+
.zList-inline-item { margin: 0; }
|
|
248
|
+
|
|
193
249
|
/* ─── Form controls — canonical field base (Bootstrap-like) ────────────────── */
|
|
194
250
|
/* The client emits a real field as `.zForm-control` (default) or `.zInput`
|
|
195
251
|
* (input-groups / explicit). Style BOTH so a field on ANY page — not just
|
|
@@ -208,9 +264,9 @@ input.zInput, textarea.zInput, select.zInput {
|
|
|
208
264
|
font-family: inherit;
|
|
209
265
|
font-size: 0.95rem;
|
|
210
266
|
line-height: 1.5;
|
|
211
|
-
color: var(--zinput-color,
|
|
212
|
-
background: var(--zinput-bg,
|
|
213
|
-
border: 1.5px solid var(--zinput-border,
|
|
267
|
+
color: var(--zinput-color, var(--ink));
|
|
268
|
+
background: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
269
|
+
border: 1.5px solid var(--zinput-border, var(--border-strong));
|
|
214
270
|
border-radius: var(--zinput-radius, 10px);
|
|
215
271
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
216
272
|
}
|
|
@@ -221,9 +277,9 @@ input.zInput, textarea.zInput, select.zInput {
|
|
|
221
277
|
.zForm-control:focus,
|
|
222
278
|
input.zInput:focus, textarea.zInput:focus, select.zInput:focus {
|
|
223
279
|
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
|
|
280
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
281
|
+
background: var(--zinput-bg-focus, color-mix(in srgb, var(--ink) 17%, transparent));
|
|
282
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 20%, transparent);
|
|
227
283
|
}
|
|
228
284
|
|
|
229
285
|
.zForm-control:disabled, .zForm-control[readonly],
|
|
@@ -274,7 +330,7 @@ input[type="file"].zInput::file-selector-button {
|
|
|
274
330
|
padding: 0.45rem 1rem;
|
|
275
331
|
border: 0;
|
|
276
332
|
border-radius: 8px;
|
|
277
|
-
background: var(--zinput-accent,
|
|
333
|
+
background: var(--zinput-accent, var(--color-secondary));
|
|
278
334
|
color: #fff;
|
|
279
335
|
font-family: inherit;
|
|
280
336
|
font-size: 0.85rem;
|
|
@@ -304,7 +360,7 @@ input[type="color"].zInput {
|
|
|
304
360
|
}
|
|
305
361
|
input[type="color"].zForm-control:hover,
|
|
306
362
|
input[type="color"].zInput:hover {
|
|
307
|
-
border-color: var(--zinput-border-hover,
|
|
363
|
+
border-color: var(--zinput-border-hover, color-mix(in srgb, var(--ink) 30%, transparent));
|
|
308
364
|
}
|
|
309
365
|
input[type="color"].zForm-control::-webkit-color-swatch-wrapper,
|
|
310
366
|
input[type="color"].zInput::-webkit-color-swatch-wrapper { padding: 0; }
|
|
@@ -345,9 +401,9 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
345
401
|
align-items: center;
|
|
346
402
|
padding: 0.55rem 0.85rem;
|
|
347
403
|
font-size: 0.95rem;
|
|
348
|
-
color: var(--zinput-color,
|
|
349
|
-
background: var(--zinput-affix-bg,
|
|
350
|
-
border: 1.5px solid var(--zinput-border,
|
|
404
|
+
color: var(--zinput-color, var(--ink));
|
|
405
|
+
background: var(--zinput-affix-bg, color-mix(in srgb, var(--color-secondary) 14%, transparent));
|
|
406
|
+
border: 1.5px solid var(--zinput-border, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
351
407
|
white-space: nowrap;
|
|
352
408
|
}
|
|
353
409
|
.zInputGroup > .zInputGroup-text:first-child { border-radius: 10px 0 0 10px; border-right: 0; }
|
|
@@ -380,8 +436,8 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
380
436
|
margin: 0;
|
|
381
437
|
display: inline-grid;
|
|
382
438
|
place-content: center;
|
|
383
|
-
background: var(--zinput-bg,
|
|
384
|
-
border: 1.5px solid var(--zinput-border,
|
|
439
|
+
background: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
440
|
+
border: 1.5px solid var(--zinput-border, color-mix(in srgb, var(--ink) 30%, transparent));
|
|
385
441
|
cursor: pointer;
|
|
386
442
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
387
443
|
}
|
|
@@ -393,8 +449,8 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
393
449
|
.zForm-check input[type="checkbox"]:checked,
|
|
394
450
|
.zForm-check input[type="radio"]:checked,
|
|
395
451
|
.zForm-check-input:checked {
|
|
396
|
-
background: var(--zinput-focus, var(--color-primary
|
|
397
|
-
border-color: var(--zinput-focus, var(--color-primary
|
|
452
|
+
background: var(--zinput-focus, var(--color-primary));
|
|
453
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
398
454
|
}
|
|
399
455
|
/* checkmark glyph */
|
|
400
456
|
.zForm-check input[type="checkbox"]:checked::after,
|
|
@@ -423,7 +479,7 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
423
479
|
.zForm-check input[type="radio"]:focus-visible,
|
|
424
480
|
.zForm-check-input:focus-visible {
|
|
425
481
|
outline: none;
|
|
426
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary
|
|
482
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 30%, transparent);
|
|
427
483
|
}
|
|
428
484
|
|
|
429
485
|
.zForm-check-label {
|
|
@@ -442,7 +498,7 @@ input[type="datetime-local"].zForm-control::-webkit-calendar-picker-indicator:ho
|
|
|
442
498
|
|
|
443
499
|
/* native radios/checkboxes NOT given the custom .zForm-check treatment
|
|
444
500
|
* 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
|
|
501
|
+
input[type="radio"], input[type="checkbox"] { accent-color: var(--color-primary); }
|
|
446
502
|
|
|
447
503
|
/* radio / checkbox group (zSelect type:radio|checkbox) — legend + row rhythm */
|
|
448
504
|
.zForm-check-group .zLabel { margin-bottom: 0.45rem; }
|
|
@@ -464,9 +520,9 @@ select.zInput {
|
|
|
464
520
|
font-family: inherit;
|
|
465
521
|
font-size: 0.95rem;
|
|
466
522
|
line-height: 1.5;
|
|
467
|
-
color: var(--zinput-color,
|
|
468
|
-
background-color: var(--zinput-bg,
|
|
469
|
-
border: 1.5px solid var(--zinput-border,
|
|
523
|
+
color: var(--zinput-color, var(--ink));
|
|
524
|
+
background-color: var(--zinput-bg, color-mix(in srgb, var(--ink) 14%, transparent));
|
|
525
|
+
border: 1.5px solid var(--zinput-border, var(--border-strong));
|
|
470
526
|
border-radius: var(--zinput-radius, 10px);
|
|
471
527
|
cursor: pointer;
|
|
472
528
|
transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
|
|
@@ -481,9 +537,9 @@ select.zSelect:focus,
|
|
|
481
537
|
select.zForm-control:focus,
|
|
482
538
|
select.zInput:focus {
|
|
483
539
|
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
|
|
540
|
+
border-color: var(--zinput-focus, var(--color-primary));
|
|
541
|
+
background-color: var(--zinput-bg-focus, color-mix(in srgb, var(--ink) 17%, transparent));
|
|
542
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--zinput-focus, var(--color-primary)) 20%, transparent);
|
|
487
543
|
}
|
|
488
544
|
|
|
489
545
|
select.zSelect:disabled,
|
|
@@ -495,7 +551,7 @@ select.zSelect option,
|
|
|
495
551
|
select.zForm-control option,
|
|
496
552
|
select.zInput option { color: #1f2937; background: #fff; }
|
|
497
553
|
select.zSelect option:disabled,
|
|
498
|
-
select.zForm-control option:disabled { color:
|
|
554
|
+
select.zForm-control option:disabled { color: var(--ink-muted); }
|
|
499
555
|
|
|
500
556
|
/* multi-select / sized list box — themed box, no caret, themed inline options */
|
|
501
557
|
select.zSelect[multiple],
|
|
@@ -509,7 +565,7 @@ select.zForm-control[multiple] {
|
|
|
509
565
|
select.zSelect[multiple] option,
|
|
510
566
|
select.zSelect[size] option,
|
|
511
567
|
select.zForm-control[multiple] option {
|
|
512
|
-
color: var(--zinput-color,
|
|
568
|
+
color: var(--zinput-color, var(--ink));
|
|
513
569
|
background: transparent;
|
|
514
570
|
padding: 0.35rem 0.55rem;
|
|
515
571
|
border-radius: 6px;
|
|
@@ -520,7 +576,7 @@ select.zSelect[multiple] option:checked,
|
|
|
520
576
|
select.zSelect[size] option:checked,
|
|
521
577
|
select.zForm-control[multiple] option:checked {
|
|
522
578
|
color: #fff;
|
|
523
|
-
background: linear-gradient(var(--color-primary
|
|
579
|
+
background: linear-gradient(var(--color-primary), var(--color-primary));
|
|
524
580
|
}
|
|
525
581
|
select.zSelect[multiple] option:disabled,
|
|
526
582
|
select.zForm-control[multiple] option:disabled { color: var(--zinput-placeholder, rgba(156, 163, 175, 0.55)); }
|
|
@@ -539,9 +595,9 @@ zBifrostBadge {
|
|
|
539
595
|
|
|
540
596
|
/* ─── zBifrostBadge states ─────────────────────────────────────────────────── */
|
|
541
597
|
|
|
542
|
-
.zBadge-pending { color:
|
|
543
|
-
.zBadge-success { color:
|
|
544
|
-
.zBadge-error { color:
|
|
598
|
+
.zBadge-pending { color: var(--color-warning); }
|
|
599
|
+
.zBadge-success { color: var(--color-success); }
|
|
600
|
+
.zBadge-error { color: var(--color-error); }
|
|
545
601
|
.zBadge-dot { border-radius: 50%; background: currentColor; }
|
|
546
602
|
.zIcon { display: inline-block; width: 0.75em; height: 0.75em; fill: currentColor; }
|
|
547
603
|
|
|
@@ -579,7 +635,7 @@ zNavBar .zNavbar {
|
|
|
579
635
|
flex-wrap: wrap;
|
|
580
636
|
padding: 0.75rem 1.5rem;
|
|
581
637
|
background: var(--znav-bg, rgba(10, 14, 39, 0.92));
|
|
582
|
-
border-bottom: 1px solid var(--znav-border,
|
|
638
|
+
border-bottom: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
583
639
|
backdrop-filter: blur(12px);
|
|
584
640
|
font-family: var(--znav-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
|
|
585
641
|
}
|
|
@@ -589,7 +645,7 @@ zNavBar .zNavbar-brand {
|
|
|
589
645
|
font-weight: 800;
|
|
590
646
|
letter-spacing: -0.02em;
|
|
591
647
|
margin-right: 2rem;
|
|
592
|
-
color: var(--znav-brand-color,
|
|
648
|
+
color: var(--znav-brand-color, var(--ink));
|
|
593
649
|
}
|
|
594
650
|
|
|
595
651
|
zNavBar .zNavbar-toggler {
|
|
@@ -599,9 +655,9 @@ zNavBar .zNavbar-toggler {
|
|
|
599
655
|
font-size: 1.1rem;
|
|
600
656
|
line-height: 1;
|
|
601
657
|
cursor: pointer;
|
|
602
|
-
color: var(--znav-brand-color,
|
|
603
|
-
background: var(--znav-link-hover-bg,
|
|
604
|
-
border: 1px solid var(--znav-border,
|
|
658
|
+
color: var(--znav-brand-color, var(--ink));
|
|
659
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
660
|
+
border: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 30%, transparent));
|
|
605
661
|
border-radius: 6px;
|
|
606
662
|
}
|
|
607
663
|
|
|
@@ -628,14 +684,14 @@ zNavBar .zNav-link {
|
|
|
628
684
|
font-size: 0.9rem;
|
|
629
685
|
font-weight: 500;
|
|
630
686
|
border-radius: 8px;
|
|
631
|
-
color: var(--znav-link-color,
|
|
687
|
+
color: var(--znav-link-color, var(--ink-muted));
|
|
632
688
|
transition: color 0.2s, background 0.2s;
|
|
633
689
|
}
|
|
634
690
|
|
|
635
691
|
zNavBar .zNav-link:hover,
|
|
636
692
|
zNavBar .zNav-link.active {
|
|
637
|
-
color: var(--znav-link-hover-color,
|
|
638
|
-
background: var(--znav-link-hover-bg,
|
|
693
|
+
color: var(--znav-link-hover-color, var(--ink));
|
|
694
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
639
695
|
}
|
|
640
696
|
|
|
641
697
|
/* ─── zDropdown (navbar menus) — JS toggles .zShow ─────────────────────────── */
|
|
@@ -649,7 +705,7 @@ zNavBar .zNav-link.active {
|
|
|
649
705
|
min-width: 11rem;
|
|
650
706
|
padding: 0.4rem 0;
|
|
651
707
|
background: var(--zdropdown-bg, rgba(20, 25, 45, 0.97));
|
|
652
|
-
border: 1px solid var(--znav-border,
|
|
708
|
+
border: 1px solid var(--znav-border, color-mix(in srgb, var(--color-secondary) 25%, transparent));
|
|
653
709
|
border-radius: 10px;
|
|
654
710
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
655
711
|
backdrop-filter: blur(12px);
|
|
@@ -660,12 +716,12 @@ zNavBar .zNav-link.active {
|
|
|
660
716
|
display: block;
|
|
661
717
|
padding: 0.5rem 1rem;
|
|
662
718
|
font-size: 0.875rem;
|
|
663
|
-
color: var(--znav-link-color,
|
|
719
|
+
color: var(--znav-link-color, var(--ink-muted));
|
|
664
720
|
transition: color 0.15s, background 0.15s;
|
|
665
721
|
}
|
|
666
722
|
.zDropdown-item:hover {
|
|
667
|
-
color: var(--znav-link-hover-color,
|
|
668
|
-
background: var(--znav-link-hover-bg,
|
|
723
|
+
color: var(--znav-link-hover-color, var(--ink));
|
|
724
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 15%, transparent));
|
|
669
725
|
}
|
|
670
726
|
|
|
671
727
|
/* ─── zNavbar-inblock — light, in-content navbar variant ────────────────────────
|
|
@@ -758,7 +814,7 @@ zNavBar .zNav-link.active {
|
|
|
758
814
|
border: none;
|
|
759
815
|
border-radius: 0;
|
|
760
816
|
padding-left: 0.75rem;
|
|
761
|
-
background: var(--znav-link-hover-bg,
|
|
817
|
+
background: var(--znav-link-hover-bg, color-mix(in srgb, var(--color-secondary) 8%, transparent));
|
|
762
818
|
}
|
|
763
819
|
}
|
|
764
820
|
|
|
@@ -1052,10 +1108,10 @@ zNavBar .zNav-link.active {
|
|
|
1052
1108
|
}
|
|
1053
1109
|
|
|
1054
1110
|
.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:
|
|
1111
|
+
.zText-dark { color: var(--ink); }
|
|
1112
|
+
.zBorder { border: 1px solid var(--border); }
|
|
1113
|
+
.zShadow-sm { box-shadow: 0 1px 3px var(--shadow); }
|
|
1114
|
+
.zBg-white { background: var(--surface-1); }
|
|
1059
1115
|
.zText-center { text-align: center !important; }
|
|
1060
1116
|
.zText-start { text-align: left !important; }
|
|
1061
1117
|
.zText-end { text-align: right !important; }
|
|
@@ -1078,7 +1134,7 @@ zNavBar .zNav-link.active {
|
|
|
1078
1134
|
border: 1px solid transparent;
|
|
1079
1135
|
text-decoration: none;
|
|
1080
1136
|
}
|
|
1081
|
-
.zBtn:focus { outline: 2px solid
|
|
1137
|
+
.zBtn:focus { outline: 2px solid color-mix(in srgb, var(--color-primary) 55%, transparent); outline-offset: 2px; }
|
|
1082
1138
|
|
|
1083
1139
|
/* ─── Button color variants — canonical fills (theme tokens) ───────────────── */
|
|
1084
1140
|
/* The renderer maps a zBtn's `color:` (default primary) to .zBtn-{color}; these
|
|
@@ -1226,7 +1282,7 @@ zNavBar .zNav-link.active {
|
|
|
1226
1282
|
}
|
|
1227
1283
|
.zDash-format-sidebar > .zRow > .zCol-auto {
|
|
1228
1284
|
border-right: none !important;
|
|
1229
|
-
border-bottom: 1px solid
|
|
1285
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1230
1286
|
}
|
|
1231
1287
|
.zDash-format-sidebar .zDash-sidebar {
|
|
1232
1288
|
flex-direction: row !important;
|
|
@@ -1237,7 +1293,7 @@ zNavBar .zNav-link.active {
|
|
|
1237
1293
|
}
|
|
1238
1294
|
.zDash-format-sidebar .zDash-sidebar .zNav-link.zActive {
|
|
1239
1295
|
box-shadow: none !important;
|
|
1240
|
-
border-bottom: 2px solid
|
|
1296
|
+
border-bottom: 2px solid var(--color-secondary);
|
|
1241
1297
|
}
|
|
1242
1298
|
.zDash-panel { padding: 1.25rem 1rem; }
|
|
1243
1299
|
.zDash-container .zDialog-form { grid-template-columns: 1fr 1fr; }
|
|
@@ -1262,7 +1318,7 @@ zNavBar .zNav-link.active {
|
|
|
1262
1318
|
right: 0;
|
|
1263
1319
|
z-index: 50;
|
|
1264
1320
|
background: rgba(10, 14, 39, 0.98);
|
|
1265
|
-
border-bottom: 1px solid
|
|
1321
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1266
1322
|
backdrop-filter: blur(12px);
|
|
1267
1323
|
}
|
|
1268
1324
|
|
|
@@ -1288,18 +1344,18 @@ zNavBar .zNav-link.active {
|
|
|
1288
1344
|
gap: 0.4rem;
|
|
1289
1345
|
margin: 0.75rem 0.75rem 0;
|
|
1290
1346
|
padding: 0.45rem 0.85rem;
|
|
1291
|
-
background:
|
|
1292
|
-
border: 1px solid
|
|
1347
|
+
background: color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1348
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1293
1349
|
border-radius: 8px;
|
|
1294
|
-
color:
|
|
1350
|
+
color: var(--ink);
|
|
1295
1351
|
font-size: 0.875rem;
|
|
1296
1352
|
font-weight: 500;
|
|
1297
1353
|
cursor: pointer;
|
|
1298
1354
|
font-family: inherit;
|
|
1299
1355
|
}
|
|
1300
1356
|
.zDash-sidebar-toggle:hover {
|
|
1301
|
-
background:
|
|
1302
|
-
color:
|
|
1357
|
+
background: color-mix(in srgb, var(--color-secondary) 25%, transparent);
|
|
1358
|
+
color: var(--ink);
|
|
1303
1359
|
}
|
|
1304
1360
|
|
|
1305
1361
|
.zDash-panel { padding: 1rem 0.75rem; }
|
|
@@ -1312,7 +1368,7 @@ zNavBar .zNav-link.active {
|
|
|
1312
1368
|
.zDash-format-tabs .zDash-sidebar {
|
|
1313
1369
|
display: flex;
|
|
1314
1370
|
flex-direction: row;
|
|
1315
|
-
border-bottom: 1px solid
|
|
1371
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1316
1372
|
}
|
|
1317
1373
|
|
|
1318
1374
|
/* accordion format (future) */
|
|
@@ -1327,7 +1383,7 @@ zNavBar .zNav-link.active {
|
|
|
1327
1383
|
/* Sidebar column chrome */
|
|
1328
1384
|
.zDash-format-sidebar > .zRow > .zCol-auto {
|
|
1329
1385
|
background: rgba(10, 14, 39, 0.6);
|
|
1330
|
-
border-right: 1px solid
|
|
1386
|
+
border-right: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1331
1387
|
padding: 0;
|
|
1332
1388
|
}
|
|
1333
1389
|
|
|
@@ -1344,7 +1400,7 @@ zNavBar .zNav-link.active {
|
|
|
1344
1400
|
align-items: center;
|
|
1345
1401
|
padding: 0.55rem 0.85rem;
|
|
1346
1402
|
border-radius: 8px;
|
|
1347
|
-
color:
|
|
1403
|
+
color: var(--ink-muted);
|
|
1348
1404
|
font-size: 0.875rem;
|
|
1349
1405
|
font-weight: 500;
|
|
1350
1406
|
cursor: pointer;
|
|
@@ -1353,13 +1409,13 @@ zNavBar .zNav-link.active {
|
|
|
1353
1409
|
text-decoration: none;
|
|
1354
1410
|
}
|
|
1355
1411
|
.zDash-sidebar .zNav-link:hover {
|
|
1356
|
-
color:
|
|
1357
|
-
background:
|
|
1412
|
+
color: var(--ink);
|
|
1413
|
+
background: color-mix(in srgb, var(--color-secondary) 12%, transparent);
|
|
1358
1414
|
}
|
|
1359
1415
|
.zDash-sidebar .zNav-link.zActive {
|
|
1360
|
-
color:
|
|
1361
|
-
background:
|
|
1362
|
-
box-shadow: inset 3px 0 0
|
|
1416
|
+
color: var(--ink);
|
|
1417
|
+
background: color-mix(in srgb, var(--color-secondary) 22%, transparent);
|
|
1418
|
+
box-shadow: inset 3px 0 0 var(--color-secondary);
|
|
1363
1419
|
}
|
|
1364
1420
|
|
|
1365
1421
|
/* Panel area */
|
|
@@ -1373,7 +1429,7 @@ zNavBar .zNav-link.active {
|
|
|
1373
1429
|
box-sizing: border-box;
|
|
1374
1430
|
margin-bottom: 1.25rem;
|
|
1375
1431
|
background: rgba(15, 20, 48, 0.6);
|
|
1376
|
-
border: 1px solid
|
|
1432
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1377
1433
|
border-radius: 10px;
|
|
1378
1434
|
}
|
|
1379
1435
|
|
|
@@ -1381,10 +1437,10 @@ zNavBar .zNav-link.active {
|
|
|
1381
1437
|
.zDash-container .zDialog-title {
|
|
1382
1438
|
font-size: 1rem;
|
|
1383
1439
|
font-weight: 700;
|
|
1384
|
-
color:
|
|
1440
|
+
color: var(--ink);
|
|
1385
1441
|
margin-bottom: 1rem;
|
|
1386
1442
|
padding-bottom: 0.6rem;
|
|
1387
|
-
border-bottom: 1px solid
|
|
1443
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1388
1444
|
}
|
|
1389
1445
|
|
|
1390
1446
|
/* Multi-column form grid */
|
|
@@ -1403,7 +1459,7 @@ zNavBar .zNav-link.active {
|
|
|
1403
1459
|
font-size: 0.7rem;
|
|
1404
1460
|
text-transform: uppercase;
|
|
1405
1461
|
letter-spacing: 0.06em;
|
|
1406
|
-
color:
|
|
1462
|
+
color: var(--ink-muted);
|
|
1407
1463
|
font-weight: 600;
|
|
1408
1464
|
display: block;
|
|
1409
1465
|
margin-bottom: 0.3rem;
|
|
@@ -1412,10 +1468,10 @@ zNavBar .zNav-link.active {
|
|
|
1412
1468
|
/* Inputs & selects */
|
|
1413
1469
|
.zDash-container .zInput {
|
|
1414
1470
|
appearance: none;
|
|
1415
|
-
background:
|
|
1416
|
-
border: 1px solid
|
|
1471
|
+
background: var(--surface-1);
|
|
1472
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1417
1473
|
border-radius: 7px;
|
|
1418
|
-
color:
|
|
1474
|
+
color: var(--ink);
|
|
1419
1475
|
padding: 0.5rem 0.75rem;
|
|
1420
1476
|
font-size: 0.875rem;
|
|
1421
1477
|
width: 100%;
|
|
@@ -1425,13 +1481,13 @@ zNavBar .zNav-link.active {
|
|
|
1425
1481
|
}
|
|
1426
1482
|
.zDash-container .zInput:focus {
|
|
1427
1483
|
outline: none;
|
|
1428
|
-
border-color:
|
|
1429
|
-
background:
|
|
1484
|
+
border-color: color-mix(in srgb, var(--color-secondary) 60%, transparent);
|
|
1485
|
+
background: color-mix(in srgb, var(--ink) 7%, transparent);
|
|
1430
1486
|
}
|
|
1431
1487
|
|
|
1432
1488
|
/* Primary action button */
|
|
1433
1489
|
.zDash-container .zBtn-primary {
|
|
1434
|
-
background:
|
|
1490
|
+
background: var(--color-secondary);
|
|
1435
1491
|
border: none;
|
|
1436
1492
|
color: #fff;
|
|
1437
1493
|
padding: 0.55rem 1.25rem;
|
|
@@ -1443,7 +1499,7 @@ zNavBar .zNav-link.active {
|
|
|
1443
1499
|
transition: background 0.15s, transform 0.1s;
|
|
1444
1500
|
}
|
|
1445
1501
|
.zDash-container .zBtn-primary:hover {
|
|
1446
|
-
background:
|
|
1502
|
+
background: color-mix(in srgb, var(--color-secondary) 82%, black);
|
|
1447
1503
|
transform: translateY(-1px);
|
|
1448
1504
|
}
|
|
1449
1505
|
|
|
@@ -1454,10 +1510,10 @@ zNavBar .zNav-link.active {
|
|
|
1454
1510
|
gap: 0.4rem;
|
|
1455
1511
|
padding: 0.5rem 1rem;
|
|
1456
1512
|
margin: 0 0.4rem 0.4rem 0;
|
|
1457
|
-
background:
|
|
1458
|
-
border: 1px solid
|
|
1513
|
+
background: color-mix(in srgb, var(--color-secondary) 15%, transparent);
|
|
1514
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1459
1515
|
border-radius: 8px;
|
|
1460
|
-
color:
|
|
1516
|
+
color: var(--ink);
|
|
1461
1517
|
font-size: 0.875rem;
|
|
1462
1518
|
font-weight: 500;
|
|
1463
1519
|
font-family: inherit;
|
|
@@ -1465,9 +1521,9 @@ zNavBar .zNav-link.active {
|
|
|
1465
1521
|
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
|
1466
1522
|
}
|
|
1467
1523
|
.zDash-container button[data-key]:hover {
|
|
1468
|
-
background:
|
|
1469
|
-
border-color:
|
|
1470
|
-
color:
|
|
1524
|
+
background: color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1525
|
+
border-color: color-mix(in srgb, var(--color-secondary) 50%, transparent);
|
|
1526
|
+
color: var(--ink);
|
|
1471
1527
|
}
|
|
1472
1528
|
|
|
1473
1529
|
/* Tables */
|
|
@@ -1475,32 +1531,32 @@ zNavBar .zNav-link.active {
|
|
|
1475
1531
|
width: 100%;
|
|
1476
1532
|
border-collapse: collapse;
|
|
1477
1533
|
font-size: 0.875rem;
|
|
1478
|
-
color:
|
|
1534
|
+
color: var(--ink);
|
|
1479
1535
|
}
|
|
1480
1536
|
.zDash-container th {
|
|
1481
1537
|
padding: 0.6rem 0.9rem;
|
|
1482
|
-
background:
|
|
1483
|
-
color:
|
|
1538
|
+
background: color-mix(in srgb, var(--color-secondary) 12%, transparent);
|
|
1539
|
+
color: var(--color-secondary);
|
|
1484
1540
|
font-weight: 600;
|
|
1485
1541
|
text-align: left;
|
|
1486
|
-
border-bottom: 1px solid
|
|
1542
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1487
1543
|
}
|
|
1488
1544
|
.zDash-container td {
|
|
1489
1545
|
padding: 0.55rem 0.9rem;
|
|
1490
|
-
border-bottom: 1px solid
|
|
1546
|
+
border-bottom: 1px solid color-mix(in srgb, var(--ink) 5%, transparent);
|
|
1491
1547
|
}
|
|
1492
|
-
.zDash-container tr:hover td { background:
|
|
1548
|
+
.zDash-container tr:hover td { background: color-mix(in srgb, var(--color-secondary) 7%, transparent); }
|
|
1493
1549
|
|
|
1494
1550
|
/* Section headings */
|
|
1495
1551
|
.zDash-container h2 {
|
|
1496
1552
|
font-size: 1.2rem;
|
|
1497
1553
|
font-weight: 700;
|
|
1498
|
-
color:
|
|
1554
|
+
color: var(--ink);
|
|
1499
1555
|
margin: 0 0 1rem;
|
|
1500
1556
|
}
|
|
1501
1557
|
|
|
1502
1558
|
/* Spinner */
|
|
1503
|
-
.zSpinner-border { color:
|
|
1559
|
+
.zSpinner-border { color: var(--color-primary); }
|
|
1504
1560
|
|
|
1505
1561
|
/* ============================================================================
|
|
1506
1562
|
Tables (zTable) — canonical dark-theme data tables
|
|
@@ -1511,7 +1567,7 @@ zNavBar .zNav-link.active {
|
|
|
1511
1567
|
.zTable-container { margin: 1.5rem 0; }
|
|
1512
1568
|
|
|
1513
1569
|
.zTable-container h4 {
|
|
1514
|
-
color:
|
|
1570
|
+
color: var(--ink);
|
|
1515
1571
|
font-size: 1.1rem;
|
|
1516
1572
|
font-weight: 700;
|
|
1517
1573
|
margin: 0 0 0.75rem;
|
|
@@ -1520,7 +1576,7 @@ zNavBar .zNav-link.active {
|
|
|
1520
1576
|
.zTable-responsive {
|
|
1521
1577
|
overflow-x: auto;
|
|
1522
1578
|
border-radius: 12px;
|
|
1523
|
-
border: 1px solid
|
|
1579
|
+
border: 1px solid color-mix(in srgb, var(--color-secondary) 20%, transparent);
|
|
1524
1580
|
}
|
|
1525
1581
|
|
|
1526
1582
|
.zTable {
|
|
@@ -1532,30 +1588,30 @@ zNavBar .zNav-link.active {
|
|
|
1532
1588
|
/* Default body text colour lives here so cells INHERIT it. Keeping it off the
|
|
1533
1589
|
td selector lets a per-cell utility (zText-success/-danger…) win — a bare
|
|
1534
1590
|
.zText-* class (0,1,0) would otherwise lose to `.zTable tbody td` (0,1,2). */
|
|
1535
|
-
color:
|
|
1591
|
+
color: var(--ink-muted);
|
|
1536
1592
|
}
|
|
1537
1593
|
|
|
1538
1594
|
.zTable thead th {
|
|
1539
|
-
background:
|
|
1540
|
-
color:
|
|
1595
|
+
background: color-mix(in srgb, var(--color-secondary) 18%, transparent);
|
|
1596
|
+
color: var(--ink);
|
|
1541
1597
|
font-weight: 700;
|
|
1542
1598
|
text-align: left;
|
|
1543
1599
|
padding: 0.85rem 1rem;
|
|
1544
1600
|
letter-spacing: 0.02em;
|
|
1545
|
-
border-bottom: 1px solid
|
|
1601
|
+
border-bottom: 1px solid color-mix(in srgb, var(--color-secondary) 30%, transparent);
|
|
1546
1602
|
white-space: nowrap;
|
|
1547
1603
|
}
|
|
1548
1604
|
|
|
1549
1605
|
.zTable tbody td {
|
|
1550
1606
|
padding: 0.8rem 1rem;
|
|
1551
|
-
border-bottom: 1px solid
|
|
1607
|
+
border-bottom: 1px solid color-mix(in srgb, var(--ink) 6%, transparent);
|
|
1552
1608
|
vertical-align: top;
|
|
1553
1609
|
}
|
|
1554
1610
|
|
|
1555
1611
|
.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:
|
|
1612
|
+
.zTable tbody tr:nth-child(even) td { background: color-mix(in srgb, var(--ink) 2%, transparent); }
|
|
1613
|
+
.zTable tbody tr:hover td { background: color-mix(in srgb, var(--color-secondary) 8%, transparent); }
|
|
1614
|
+
.zTable td strong { color: var(--ink); }
|
|
1559
1615
|
|
|
1560
1616
|
/* ════════════════════════════════════════════════════════════════════════════
|
|
1561
1617
|
Progress bar (zProgress) — canonical animated progress component
|
|
@@ -1576,14 +1632,14 @@ zNavBar .zNav-link.active {
|
|
|
1576
1632
|
align-items: baseline;
|
|
1577
1633
|
margin-bottom: 0.4rem;
|
|
1578
1634
|
}
|
|
1579
|
-
.zProgress-container .zFw-bold { font-weight: 600; color: var(--zprogress-label,
|
|
1635
|
+
.zProgress-container .zFw-bold { font-weight: 600; color: var(--zprogress-label, var(--ink)); }
|
|
1580
1636
|
.zProgress-container .zText-muted { color: var(--zprogress-info, rgba(229, 231, 235, 0.6)); }
|
|
1581
1637
|
|
|
1582
1638
|
/* Track — the rail behind the fill. Inset shadow gives the pill real depth. */
|
|
1583
1639
|
.zProgress {
|
|
1584
1640
|
width: 100%;
|
|
1585
1641
|
height: 1rem; /* default; renderer may override inline via height prop */
|
|
1586
|
-
background: var(--zprogress-track,
|
|
1642
|
+
background: var(--zprogress-track, color-mix(in srgb, var(--ink) 7%, transparent));
|
|
1587
1643
|
border-radius: 999px;
|
|
1588
1644
|
overflow: hidden;
|
|
1589
1645
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.35);
|
|
@@ -1599,11 +1655,11 @@ zNavBar .zNav-link.active {
|
|
|
1599
1655
|
background-color: var(--color-primary, #A2D46E); /* default; zBg-{color} overrides */
|
|
1600
1656
|
background-image:
|
|
1601
1657
|
linear-gradient(to bottom,
|
|
1602
|
-
|
|
1658
|
+
color-mix(in srgb, var(--ink) 28%, transparent), var(--surface-1) 48%, rgba(0, 0, 0, 0.10)),
|
|
1603
1659
|
linear-gradient(-45deg,
|
|
1604
|
-
|
|
1605
|
-
transparent 50%,
|
|
1606
|
-
|
|
1660
|
+
color-mix(in srgb, var(--ink) 16%, transparent) 25%, transparent 25%,
|
|
1661
|
+
transparent 50%, color-mix(in srgb, var(--ink) 16%, transparent) 50%,
|
|
1662
|
+
color-mix(in srgb, var(--ink) 16%, transparent) 75%, transparent 75%, transparent);
|
|
1607
1663
|
background-size: 100% 100%, 1.15rem 1.15rem;
|
|
1608
1664
|
background-repeat: no-repeat, repeat;
|
|
1609
1665
|
border-radius: inherit;
|
|
@@ -1637,11 +1693,11 @@ zNavBar .zNav-link.active {
|
|
|
1637
1693
|
.zProgress-bar-striped {
|
|
1638
1694
|
background-image:
|
|
1639
1695
|
linear-gradient(to bottom,
|
|
1640
|
-
|
|
1696
|
+
color-mix(in srgb, var(--ink) 28%, transparent), var(--surface-1) 48%, rgba(0, 0, 0, 0.10)),
|
|
1641
1697
|
linear-gradient(-45deg,
|
|
1642
|
-
|
|
1643
|
-
transparent 50%,
|
|
1644
|
-
|
|
1698
|
+
color-mix(in srgb, var(--ink) 28%, transparent) 25%, transparent 25%,
|
|
1699
|
+
transparent 50%, color-mix(in srgb, var(--ink) 28%, transparent) 50%,
|
|
1700
|
+
color-mix(in srgb, var(--ink) 28%, transparent) 75%, transparent 75%, transparent);
|
|
1645
1701
|
}
|
|
1646
1702
|
.zProgress-bar-animated { animation: zProgress-flow 0.9s linear infinite; }
|
|
1647
1703
|
|
|
@@ -1726,7 +1782,7 @@ zNavBar .zNav-link.active {
|
|
|
1726
1782
|
.zMenu-nav .zNav-link:focus-visible,
|
|
1727
1783
|
.zMenu-container .zMenu-option button:hover,
|
|
1728
1784
|
.zMenu-container .zMenu-option button:focus-visible {
|
|
1729
|
-
background:
|
|
1785
|
+
background: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
1730
1786
|
border-color: var(--color-primary, #A2D46E);
|
|
1731
1787
|
transform: translateX(2px);
|
|
1732
1788
|
outline: none;
|
|
@@ -1768,7 +1824,7 @@ zNavBar .zNav-link.active {
|
|
|
1768
1824
|
font-weight: 600;
|
|
1769
1825
|
font-variant-numeric: tabular-nums;
|
|
1770
1826
|
color: var(--color-secondary, #9370DB);
|
|
1771
|
-
background:
|
|
1827
|
+
background: color-mix(in srgb, var(--color-secondary) 16%, transparent);
|
|
1772
1828
|
border-radius: 50%;
|
|
1773
1829
|
}
|
|
1774
1830
|
|