@nuvio/overlay 0.1.0 → 0.5.0

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/dist/index.css ADDED
@@ -0,0 +1,1191 @@
1
+ /* src/styles/overlay.css */
2
+ :host,
3
+ .nuvio-root {
4
+ color-scheme: dark;
5
+ font-family:
6
+ Inter,
7
+ ui-sans-serif,
8
+ system-ui,
9
+ -apple-system,
10
+ BlinkMacSystemFont,
11
+ "Segoe UI",
12
+ sans-serif;
13
+ --nuvio-shell-bg: rgba(3, 7, 18, 0.62);
14
+ --nuvio-shell-bg-strong: rgba(3, 7, 18, 0.72);
15
+ --nuvio-inner-bg: rgba(0, 0, 0, 0.32);
16
+ --nuvio-inner-bg-strong: rgba(0, 0, 0, 0.44);
17
+ --nuvio-control-bg: rgba(0, 0, 0, 0.4);
18
+ --nuvio-border: rgba(255, 255, 255, 0.12);
19
+ --nuvio-border-strong: rgba(255, 255, 255, 0.18);
20
+ --nuvio-text: #ffffff;
21
+ --nuvio-text-soft: rgba(255, 255, 255, 0.9);
22
+ --nuvio-muted: rgba(255, 255, 255, 0.72);
23
+ --nuvio-dim: rgba(255, 255, 255, 0.52);
24
+ --nuvio-accent: #7dd3fc;
25
+ --nuvio-primary: #2563eb;
26
+ --nuvio-primary-bright: #3b82f6;
27
+ --nuvio-primary-hover: #1d4ed8;
28
+ --nuvio-primary-glow: rgba(37, 99, 235, 0.45);
29
+ --nuvio-success: #34d399;
30
+ --nuvio-warning: #facc15;
31
+ --nuvio-error: #fb7185;
32
+ --nuvio-blur: blur(24px) saturate(160%);
33
+ --nuvio-inner-blur: blur(14px) saturate(140%);
34
+ --nuvio-radius-shell: 26px;
35
+ --nuvio-radius-inner: 18px;
36
+ --nuvio-radius-control: 12px;
37
+ --nuvio-muted-dim: var(--nuvio-dim);
38
+ --nuvio-accent-strong: var(--nuvio-primary);
39
+ --nuvio-accent-muted: rgba(59, 130, 246, 0.18);
40
+ --nuvio-warn: var(--nuvio-warning);
41
+ --nuvio-danger: var(--nuvio-error);
42
+ --nuvio-glass-border: var(--nuvio-border);
43
+ --nuvio-glass-border-strong: var(--nuvio-border-strong);
44
+ --nuvio-glass-inner: var(--nuvio-inner-bg);
45
+ --nuvio-z-chip: 9999;
46
+ --nuvio-z-panel: 9998;
47
+ box-sizing: border-box;
48
+ font-size: 13px;
49
+ line-height: 1.4;
50
+ color: var(--nuvio-text);
51
+ -webkit-font-smoothing: antialiased;
52
+ }
53
+ .nuvio-root *,
54
+ .nuvio-root *::before,
55
+ .nuvio-root *::after {
56
+ box-sizing: border-box;
57
+ }
58
+ .nuvio-shadow-mount {
59
+ position: fixed;
60
+ inset: 0;
61
+ z-index: 0;
62
+ pointer-events: none;
63
+ }
64
+ .nuvio-sr-only {
65
+ position: absolute;
66
+ width: 1px;
67
+ height: 1px;
68
+ padding: 0;
69
+ margin: -1px;
70
+ overflow: hidden;
71
+ clip: rect(0, 0, 0, 0);
72
+ white-space: nowrap;
73
+ border: 0;
74
+ }
75
+ .nuvio-glass-shell,
76
+ .nuvio-chrome-surface,
77
+ .nuvio-glass-frame {
78
+ position: relative;
79
+ overflow: hidden;
80
+ background: var(--nuvio-shell-bg);
81
+ -webkit-backdrop-filter: var(--nuvio-blur);
82
+ backdrop-filter: var(--nuvio-blur);
83
+ border: 1px solid var(--nuvio-border);
84
+ box-shadow: 0 28px 80px rgba(0, 0, 0, 0.42), inset 0 1px 0 rgba(255, 255, 255, 0.12);
85
+ color: var(--nuvio-text);
86
+ transform: translateZ(0);
87
+ }
88
+ .nuvio-glass-shell::before,
89
+ .nuvio-chrome-surface::before,
90
+ .nuvio-glass-frame::before {
91
+ content: "";
92
+ position: absolute;
93
+ inset: 0;
94
+ pointer-events: none;
95
+ border-radius: inherit;
96
+ background:
97
+ linear-gradient(
98
+ 180deg,
99
+ rgba(255, 255, 255, 0.08),
100
+ transparent 28%),
101
+ radial-gradient(
102
+ circle at 20% 0%,
103
+ rgba(255, 255, 255, 0.1),
104
+ transparent 32%);
105
+ }
106
+ .nuvio-glass-shell::after,
107
+ .nuvio-chrome-surface::after,
108
+ .nuvio-glass-frame::after {
109
+ content: "";
110
+ position: absolute;
111
+ inset: 0;
112
+ pointer-events: none;
113
+ border-radius: inherit;
114
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), inset 0 -1px 0 rgba(255, 255, 255, 0.03);
115
+ }
116
+ .nuvio-panel.nuvio-glass-shell,
117
+ .nuvio-panel.nuvio-chrome-surface {
118
+ background: var(--nuvio-shell-bg-strong);
119
+ }
120
+ .nuvio-glass-content {
121
+ position: relative;
122
+ z-index: 1;
123
+ display: flex;
124
+ flex-direction: column;
125
+ min-height: 0;
126
+ min-width: 0;
127
+ }
128
+ .nuvio-card,
129
+ .nuvio-chrome-section,
130
+ .nuvio-glass-section,
131
+ .nuvio-meta-block {
132
+ background: var(--nuvio-inner-bg);
133
+ -webkit-backdrop-filter: var(--nuvio-inner-blur);
134
+ backdrop-filter: var(--nuvio-inner-blur);
135
+ border: 1px solid rgba(255, 255, 255, 0.1);
136
+ border-radius: 18px;
137
+ padding: 12px;
138
+ }
139
+ .nuvio-card--strong {
140
+ background: var(--nuvio-inner-bg-strong);
141
+ }
142
+ .nuvio-card--tree {
143
+ padding: 8px 10px;
144
+ }
145
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
146
+ .nuvio-glass-shell,
147
+ .nuvio-chrome-surface,
148
+ .nuvio-glass-frame {
149
+ background: rgba(3, 7, 18, 0.88);
150
+ }
151
+ .nuvio-panel.nuvio-glass-shell,
152
+ .nuvio-panel.nuvio-chrome-surface {
153
+ background: rgba(3, 7, 18, 0.9);
154
+ }
155
+ .nuvio-card,
156
+ .nuvio-chrome-section,
157
+ .nuvio-glass-section,
158
+ .nuvio-meta-block {
159
+ background: rgba(0, 0, 0, 0.65);
160
+ }
161
+ .nuvio-card--strong {
162
+ background: rgba(0, 0, 0, 0.75);
163
+ }
164
+ }
165
+ .nuvio-chip {
166
+ pointer-events: auto;
167
+ position: fixed;
168
+ z-index: var(--nuvio-z-chip);
169
+ min-height: 44px;
170
+ min-width: 0;
171
+ max-width: min(22rem, calc(100vw - 32px));
172
+ padding: 10px 12px;
173
+ border-radius: 24px;
174
+ text-align: left;
175
+ }
176
+ .nuvio-chip--collapsed {
177
+ max-width: min(16rem, calc(100vw - 32px));
178
+ padding: 7px 10px;
179
+ border-radius: 999px;
180
+ }
181
+ .nuvio-chip--collapsed .nuvio-chip-spacer,
182
+ .nuvio-chip--collapsed .nuvio-chip-status {
183
+ display: none;
184
+ }
185
+ .nuvio-chip--collapsed .nuvio-chip-header {
186
+ gap: 6px;
187
+ }
188
+ .nuvio-chip--dragging {
189
+ user-select: none;
190
+ }
191
+ .nuvio-chip-header {
192
+ display: flex;
193
+ align-items: center;
194
+ gap: 8px;
195
+ cursor: grab;
196
+ }
197
+ .nuvio-chip-header--grabbing {
198
+ cursor: grabbing;
199
+ }
200
+ .nuvio-chip-title {
201
+ flex-shrink: 0;
202
+ font-size: 13px;
203
+ font-weight: 600;
204
+ letter-spacing: -0.02em;
205
+ color: var(--nuvio-text);
206
+ }
207
+ .nuvio-chip-spacer {
208
+ flex: 1;
209
+ min-width: 4px;
210
+ }
211
+ .nuvio-chip-status {
212
+ display: flex;
213
+ flex-direction: column;
214
+ gap: 3px;
215
+ margin-top: 5px;
216
+ font-size: 11px;
217
+ line-height: 1.35;
218
+ }
219
+ .nuvio-chip-selected {
220
+ margin: 0;
221
+ }
222
+ .nuvio-chip-warnings {
223
+ display: flex;
224
+ flex-direction: column;
225
+ gap: 2px;
226
+ }
227
+ .nuvio-chip-warning-line {
228
+ margin: 0;
229
+ color: var(--nuvio-warning);
230
+ font-size: 11px;
231
+ line-height: 1.35;
232
+ }
233
+ .nuvio-panel {
234
+ pointer-events: auto;
235
+ position: fixed;
236
+ z-index: var(--nuvio-z-panel);
237
+ display: flex;
238
+ flex-direction: column;
239
+ width: min(400px, calc(100vw - 48px));
240
+ max-height: calc(100vh - 48px);
241
+ height: auto;
242
+ padding: 12px 14px;
243
+ border-radius: var(--nuvio-radius-shell);
244
+ }
245
+ .nuvio-panel--docked {
246
+ left: 24px;
247
+ top: 24px;
248
+ right: auto;
249
+ bottom: auto;
250
+ }
251
+ .nuvio-panel--dragging {
252
+ user-select: none;
253
+ }
254
+ .nuvio-panel > .nuvio-glass-content {
255
+ display: flex;
256
+ flex-direction: column;
257
+ max-height: calc(100vh - 48px);
258
+ min-height: 0;
259
+ }
260
+ .nuvio-panel-header {
261
+ display: flex;
262
+ flex-shrink: 0;
263
+ align-items: center;
264
+ gap: 6px;
265
+ margin: 0 0 4px;
266
+ padding: 0 2px 6px;
267
+ border-bottom: none;
268
+ cursor: grab;
269
+ font-size: 13px;
270
+ font-weight: 600;
271
+ color: var(--nuvio-text);
272
+ }
273
+ .nuvio-editor-versions {
274
+ margin: 0 0 8px;
275
+ padding: 0 2px;
276
+ font-size: 11px;
277
+ color: var(--nuvio-dim);
278
+ line-height: 1.35;
279
+ }
280
+ .nuvio-panel-header--grabbing {
281
+ cursor: grabbing;
282
+ }
283
+ .nuvio-panel-header-title {
284
+ min-width: 0;
285
+ flex: 1;
286
+ }
287
+ .nuvio-toggle-details {
288
+ flex-shrink: 0;
289
+ max-width: 9.5rem;
290
+ padding: 3px 8px;
291
+ border-radius: 999px;
292
+ border: 1px solid var(--nuvio-border, rgba(255, 255, 255, 0.14));
293
+ background: transparent;
294
+ color: var(--nuvio-dim);
295
+ font-size: 10px;
296
+ font-weight: 500;
297
+ line-height: 1.2;
298
+ cursor: pointer;
299
+ white-space: nowrap;
300
+ overflow: hidden;
301
+ text-overflow: ellipsis;
302
+ }
303
+ .nuvio-toggle-details:hover {
304
+ color: var(--nuvio-text);
305
+ border-color: rgba(255, 255, 255, 0.22);
306
+ }
307
+ .nuvio-toggle-details--on {
308
+ color: var(--nuvio-accent, #93c5fd);
309
+ border-color: rgba(147, 197, 253, 0.45);
310
+ background: rgba(147, 197, 253, 0.1);
311
+ }
312
+ .nuvio-selection-strip-id--friendly {
313
+ font-family: inherit;
314
+ font-weight: 600;
315
+ letter-spacing: 0.01em;
316
+ }
317
+ .nuvio-panel-body {
318
+ flex: 1 1 auto;
319
+ min-height: 0;
320
+ overflow-y: auto;
321
+ display: flex;
322
+ flex-direction: column;
323
+ gap: 8px;
324
+ padding-right: 2px;
325
+ scrollbar-width: thin;
326
+ scrollbar-color: rgba(255, 255, 255, 0.18) transparent;
327
+ }
328
+ .nuvio-panel-tab {
329
+ pointer-events: auto;
330
+ position: fixed;
331
+ z-index: var(--nuvio-z-panel);
332
+ min-height: 44px;
333
+ padding: 10px 12px;
334
+ border-radius: var(--nuvio-radius-shell);
335
+ font-size: 12px;
336
+ font-weight: 600;
337
+ border: none;
338
+ cursor: pointer;
339
+ color: var(--nuvio-text);
340
+ }
341
+ .nuvio-panel-tab--left {
342
+ left: 24px;
343
+ top: 50%;
344
+ transform: translateY(-50%);
345
+ }
346
+ .nuvio-panel-tab--right {
347
+ right: 24px;
348
+ top: 50%;
349
+ transform: translateY(-50%);
350
+ }
351
+ .nuvio-flip-x {
352
+ display: inline-block;
353
+ transform: scaleX(-1);
354
+ }
355
+ .nuvio-selection-strip {
356
+ padding: 0 2px 4px;
357
+ font-size: 12px;
358
+ line-height: 1.45;
359
+ }
360
+ .nuvio-selection-strip-id {
361
+ font-family:
362
+ ui-monospace,
363
+ SFMono-Regular,
364
+ Menlo,
365
+ Monaco,
366
+ Consolas,
367
+ monospace;
368
+ font-size: 12px;
369
+ color: var(--nuvio-accent);
370
+ word-break: break-all;
371
+ }
372
+ .nuvio-selection-strip-path {
373
+ display: block;
374
+ margin-top: 2px;
375
+ font-family:
376
+ ui-monospace,
377
+ SFMono-Regular,
378
+ Menlo,
379
+ Monaco,
380
+ Consolas,
381
+ monospace;
382
+ font-size: 11px;
383
+ color: var(--nuvio-muted);
384
+ }
385
+ @media (max-width: 519px) {
386
+ .nuvio-panel {
387
+ width: calc(100vw - 24px);
388
+ max-height: calc(100vh - 24px);
389
+ }
390
+ .nuvio-panel > .nuvio-glass-content {
391
+ max-height: calc(100vh - 24px);
392
+ }
393
+ .nuvio-panel--docked {
394
+ left: 12px;
395
+ top: 12px;
396
+ right: auto;
397
+ }
398
+ .nuvio-chip {
399
+ max-width: calc(100vw - 24px);
400
+ }
401
+ }
402
+ .nuvio-text-xs {
403
+ font-size: 12px;
404
+ }
405
+ .nuvio-text-2xs {
406
+ font-size: 11px;
407
+ }
408
+ .nuvio-text-3xs {
409
+ font-size: 10px;
410
+ }
411
+ .nuvio-text-muted {
412
+ color: var(--nuvio-muted);
413
+ }
414
+ .nuvio-text-muted-dim,
415
+ .nuvio-text-dim {
416
+ color: var(--nuvio-dim);
417
+ }
418
+ .nuvio-text-accent {
419
+ color: var(--nuvio-accent);
420
+ }
421
+ .nuvio-text-mono {
422
+ font-family:
423
+ ui-monospace,
424
+ SFMono-Regular,
425
+ Menlo,
426
+ Monaco,
427
+ Consolas,
428
+ monospace;
429
+ }
430
+ .nuvio-text-success {
431
+ color: var(--nuvio-success);
432
+ }
433
+ .nuvio-text-warn {
434
+ color: var(--nuvio-warning);
435
+ }
436
+ .nuvio-text-error {
437
+ color: var(--nuvio-error);
438
+ }
439
+ .nuvio-font-medium {
440
+ font-weight: 500;
441
+ }
442
+ .nuvio-font-semibold {
443
+ font-weight: 600;
444
+ }
445
+ .nuvio-uppercase {
446
+ text-transform: uppercase;
447
+ letter-spacing: 0.05em;
448
+ }
449
+ .nuvio-leading-snug {
450
+ line-height: 1.35;
451
+ }
452
+ .nuvio-break-all {
453
+ word-break: break-all;
454
+ }
455
+ .nuvio-truncate {
456
+ overflow: hidden;
457
+ text-overflow: ellipsis;
458
+ white-space: nowrap;
459
+ }
460
+ .nuvio-section-title {
461
+ margin: 0 0 8px;
462
+ font-size: 12px;
463
+ font-weight: 600;
464
+ letter-spacing: 0.02em;
465
+ color: var(--nuvio-text-soft);
466
+ }
467
+ .nuvio-group-title {
468
+ margin: 10px 0 2px;
469
+ font-size: 10px;
470
+ font-weight: 600;
471
+ text-transform: uppercase;
472
+ letter-spacing: 0.05em;
473
+ color: var(--nuvio-dim);
474
+ }
475
+ .nuvio-field-row {
476
+ display: grid;
477
+ grid-template-columns: minmax(0, 6.5rem) 1fr;
478
+ align-items: center;
479
+ gap: 4px 8px;
480
+ }
481
+ .nuvio-field-row--start {
482
+ align-items: start;
483
+ }
484
+ .nuvio-label {
485
+ font-size: 12px;
486
+ color: var(--nuvio-muted);
487
+ }
488
+ .nuvio-label--pad-top {
489
+ padding-top: 6px;
490
+ }
491
+ .nuvio-control,
492
+ .nuvio-select,
493
+ .nuvio-textarea {
494
+ appearance: none;
495
+ width: 100%;
496
+ background: var(--nuvio-control-bg);
497
+ border: 1px solid rgba(255, 255, 255, 0.14);
498
+ border-radius: var(--nuvio-radius-control);
499
+ color: var(--nuvio-text);
500
+ min-height: 34px;
501
+ padding: 7px 10px;
502
+ font-size: 13px;
503
+ font-family: inherit;
504
+ }
505
+ .nuvio-select,
506
+ select.nuvio-control {
507
+ padding-right: 28px;
508
+ background-color: var(--nuvio-control-bg);
509
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' fill-opacity='0.72' d='M3 4.5 6 7.5 9 4.5'/%3E%3C/svg%3E");
510
+ background-repeat: no-repeat;
511
+ background-position: right 10px center;
512
+ background-size: 12px;
513
+ }
514
+ .nuvio-textarea {
515
+ min-height: 74px;
516
+ resize: vertical;
517
+ border-radius: 14px;
518
+ font-family:
519
+ ui-monospace,
520
+ SFMono-Regular,
521
+ Menlo,
522
+ Monaco,
523
+ Consolas,
524
+ monospace;
525
+ font-size: 13px;
526
+ }
527
+ .nuvio-control:disabled,
528
+ .nuvio-select:disabled,
529
+ .nuvio-textarea:disabled {
530
+ opacity: 0.42;
531
+ cursor: not-allowed;
532
+ filter: saturate(0.6);
533
+ }
534
+ .nuvio-control:focus-visible,
535
+ .nuvio-select:focus-visible,
536
+ .nuvio-textarea:focus-visible,
537
+ .nuvio-button:focus-visible,
538
+ .nuvio-button-icon:focus-visible,
539
+ .nuvio-button-chip:focus-visible,
540
+ .nuvio-btn:focus-visible,
541
+ .nuvio-btn-icon:focus-visible {
542
+ outline: 2px solid var(--nuvio-accent);
543
+ outline-offset: 2px;
544
+ }
545
+ .nuvio-button,
546
+ .nuvio-btn {
547
+ min-height: 32px;
548
+ padding: 6px 10px;
549
+ border-radius: var(--nuvio-radius-control);
550
+ border: 1px solid rgba(255, 255, 255, 0.1);
551
+ background: rgba(255, 255, 255, 0.07);
552
+ color: var(--nuvio-text-soft);
553
+ font-size: 12px;
554
+ font-weight: 500;
555
+ font-family: inherit;
556
+ cursor: pointer;
557
+ transition: background 120ms ease, border-color 120ms ease;
558
+ }
559
+ .nuvio-button:hover:not(:disabled),
560
+ .nuvio-btn:hover:not(:disabled) {
561
+ background: rgba(255, 255, 255, 0.12);
562
+ }
563
+ .nuvio-button:disabled,
564
+ .nuvio-btn:disabled {
565
+ opacity: 0.42;
566
+ cursor: not-allowed;
567
+ filter: saturate(0.6);
568
+ }
569
+ .nuvio-button-primary,
570
+ .nuvio-btn--primary {
571
+ background:
572
+ linear-gradient(
573
+ 180deg,
574
+ var(--nuvio-primary-bright),
575
+ var(--nuvio-primary));
576
+ border-color: rgba(59, 130, 246, 0.5);
577
+ color: #ffffff;
578
+ box-shadow: 0 10px 28px var(--nuvio-primary-glow), inset 0 1px 0 rgba(255, 255, 255, 0.22);
579
+ }
580
+ .nuvio-button-primary:hover:not(:disabled),
581
+ .nuvio-btn--primary:hover:not(:disabled) {
582
+ background:
583
+ linear-gradient(
584
+ 180deg,
585
+ var(--nuvio-primary-bright),
586
+ var(--nuvio-primary-hover));
587
+ }
588
+ .nuvio-button-ghost,
589
+ .nuvio-btn--ghost {
590
+ background: transparent;
591
+ border-color: var(--nuvio-border-strong);
592
+ color: var(--nuvio-muted);
593
+ }
594
+ .nuvio-button-ghost:hover:not(:disabled),
595
+ .nuvio-btn--ghost:hover:not(:disabled) {
596
+ background: rgba(255, 255, 255, 0.08);
597
+ color: var(--nuvio-text);
598
+ }
599
+ .nuvio-button-icon,
600
+ .nuvio-btn-icon {
601
+ flex-shrink: 0;
602
+ min-height: 28px;
603
+ padding: 4px 8px;
604
+ border: 1px solid transparent;
605
+ border-radius: 999px;
606
+ font-size: 12px;
607
+ cursor: pointer;
608
+ background: var(--nuvio-control-bg);
609
+ color: var(--nuvio-muted);
610
+ font-family: inherit;
611
+ transition: background 120ms ease, color 120ms ease;
612
+ }
613
+ .nuvio-button-icon:hover,
614
+ .nuvio-btn-icon:hover {
615
+ background: rgba(255, 255, 255, 0.14);
616
+ color: var(--nuvio-text);
617
+ }
618
+ .nuvio-button-chip,
619
+ .nuvio-btn-edit {
620
+ flex-shrink: 0;
621
+ min-height: 28px;
622
+ padding: 4px 12px;
623
+ border: 1px solid var(--nuvio-border);
624
+ border-radius: 999px;
625
+ font-size: 12px;
626
+ font-weight: 600;
627
+ cursor: pointer;
628
+ background: var(--nuvio-control-bg);
629
+ color: var(--nuvio-text-soft);
630
+ font-family: inherit;
631
+ transition: background 120ms ease, border-color 120ms ease;
632
+ }
633
+ .nuvio-button-chip:hover,
634
+ .nuvio-btn-edit:hover {
635
+ background: rgba(255, 255, 255, 0.13);
636
+ border-color: var(--nuvio-border-strong);
637
+ }
638
+ .nuvio-button-chip--active,
639
+ .nuvio-btn-edit--active {
640
+ background:
641
+ linear-gradient(
642
+ 180deg,
643
+ var(--nuvio-primary-bright),
644
+ var(--nuvio-primary));
645
+ border-color: rgba(59, 130, 246, 0.55);
646
+ color: #ffffff;
647
+ box-shadow: 0 10px 28px var(--nuvio-primary-glow), inset 0 1px 0 rgba(255, 255, 255, 0.22);
648
+ }
649
+ .nuvio-button-chip--active:hover,
650
+ .nuvio-btn-edit--active:hover {
651
+ background:
652
+ linear-gradient(
653
+ 180deg,
654
+ var(--nuvio-primary-bright),
655
+ var(--nuvio-primary-hover));
656
+ }
657
+ .nuvio-block {
658
+ display: block;
659
+ }
660
+ .nuvio-stack-1 {
661
+ display: flex;
662
+ flex-direction: column;
663
+ gap: 4px;
664
+ }
665
+ .nuvio-stack-2 {
666
+ display: flex;
667
+ flex-direction: column;
668
+ gap: 8px;
669
+ }
670
+ .nuvio-stack-4 {
671
+ display: flex;
672
+ flex-direction: column;
673
+ gap: 16px;
674
+ }
675
+ .nuvio-row-wrap {
676
+ display: flex;
677
+ flex-wrap: wrap;
678
+ gap: 8px;
679
+ }
680
+ .nuvio-pt-1 {
681
+ padding-top: 4px;
682
+ }
683
+ .nuvio-pt-2 {
684
+ padding-top: 8px;
685
+ }
686
+ .nuvio-p-2 {
687
+ padding: 8px;
688
+ }
689
+ .nuvio-min-w-0 {
690
+ min-width: 0;
691
+ }
692
+ .nuvio-relative {
693
+ position: relative;
694
+ }
695
+ .nuvio-banner {
696
+ border-radius: var(--nuvio-radius-control);
697
+ padding: 8px 10px;
698
+ font-size: 12px;
699
+ line-height: 1.4;
700
+ }
701
+ .nuvio-banner--error {
702
+ background: rgba(248, 113, 113, 0.12);
703
+ border: 1px solid rgba(248, 113, 113, 0.24);
704
+ color: #fecdd3;
705
+ }
706
+ .nuvio-banner--warn {
707
+ background: rgba(250, 204, 21, 0.1);
708
+ border: 1px solid rgba(250, 204, 21, 0.28);
709
+ color: #fef9c3;
710
+ }
711
+ .nuvio-banner--info {
712
+ background: rgba(14, 165, 233, 0.12);
713
+ border: 1px solid rgba(125, 211, 252, 0.28);
714
+ color: #e0f2fe;
715
+ }
716
+ .nuvio-banner--neutral {
717
+ background: var(--nuvio-inner-bg);
718
+ border: 1px solid var(--nuvio-border);
719
+ color: var(--nuvio-muted);
720
+ }
721
+ .nuvio-banner--success {
722
+ background: rgba(16, 185, 129, 0.12);
723
+ border: 1px solid rgba(52, 211, 153, 0.24);
724
+ color: #a7f3d0;
725
+ }
726
+ .nuvio-banner--success-mono {
727
+ font-family:
728
+ ui-monospace,
729
+ SFMono-Regular,
730
+ Menlo,
731
+ Monaco,
732
+ Consolas,
733
+ monospace;
734
+ font-size: 11px;
735
+ }
736
+ .nuvio-preview-box {
737
+ border-radius: var(--nuvio-radius-inner);
738
+ border: 1px solid rgba(52, 211, 153, 0.24);
739
+ background: rgba(16, 185, 129, 0.12);
740
+ padding: 10px 12px;
741
+ }
742
+ .nuvio-preview-box-title {
743
+ margin: 0;
744
+ font-size: 10px;
745
+ font-weight: 600;
746
+ text-transform: uppercase;
747
+ letter-spacing: 0.05em;
748
+ color: var(--nuvio-success);
749
+ }
750
+ .nuvio-preview-box-body {
751
+ margin: 4px 0 0;
752
+ font-family:
753
+ ui-monospace,
754
+ SFMono-Regular,
755
+ Menlo,
756
+ Monaco,
757
+ Consolas,
758
+ monospace;
759
+ font-size: 11px;
760
+ line-height: 1.4;
761
+ color: #d1fae5;
762
+ }
763
+ .nuvio-onboarding-steps {
764
+ margin: 0;
765
+ padding-left: 1.1rem;
766
+ display: flex;
767
+ flex-direction: column;
768
+ gap: 4px;
769
+ }
770
+ .nuvio-onboarding-welcome {
771
+ border-color: rgba(125, 211, 252, 0.35);
772
+ background: rgba(14, 165, 233, 0.08);
773
+ }
774
+ .nuvio-onboarding-contextual {
775
+ margin-bottom: 4px;
776
+ }
777
+ .nuvio-tree-title {
778
+ margin: 0 0 8px;
779
+ font-size: 12px;
780
+ font-weight: 600;
781
+ letter-spacing: 0.02em;
782
+ color: var(--nuvio-text-soft);
783
+ }
784
+ .nuvio-tree-filters {
785
+ display: flex;
786
+ flex-wrap: wrap;
787
+ gap: 6px;
788
+ margin: 0 0 8px;
789
+ }
790
+ .nuvio-tree-filter {
791
+ border: 1px solid rgba(255, 255, 255, 0.12);
792
+ border-radius: 999px;
793
+ padding: 2px 8px;
794
+ font-size: 10px;
795
+ text-transform: uppercase;
796
+ letter-spacing: 0.04em;
797
+ color: var(--nuvio-muted);
798
+ background: transparent;
799
+ cursor: pointer;
800
+ }
801
+ .nuvio-tree-filter--active {
802
+ border-color: rgba(59, 130, 246, 0.45);
803
+ background: rgba(59, 130, 246, 0.2);
804
+ color: var(--nuvio-text);
805
+ }
806
+ .nuvio-tree-group {
807
+ margin-bottom: 8px;
808
+ }
809
+ .nuvio-tree-group-title {
810
+ margin: 0 0 4px;
811
+ font-size: 10px;
812
+ color: var(--nuvio-dim);
813
+ text-transform: uppercase;
814
+ letter-spacing: 0.04em;
815
+ }
816
+ .nuvio-tree-list {
817
+ max-height: 160px;
818
+ overflow-y: auto;
819
+ margin: 0;
820
+ padding: 4px;
821
+ list-style: none;
822
+ border-radius: var(--nuvio-radius-control);
823
+ border: 1px solid rgba(255, 255, 255, 0.08);
824
+ background: var(--nuvio-inner-bg);
825
+ }
826
+ .nuvio-tree-item {
827
+ margin: 0;
828
+ }
829
+ .nuvio-tree-btn {
830
+ width: 100%;
831
+ border: none;
832
+ border-radius: 10px;
833
+ padding: 6px 8px;
834
+ text-align: left;
835
+ font-size: 12px;
836
+ line-height: 1.35;
837
+ cursor: pointer;
838
+ background: transparent;
839
+ color: var(--nuvio-muted);
840
+ font-family: inherit;
841
+ }
842
+ .nuvio-tree-btn:hover {
843
+ background: rgba(255, 255, 255, 0.08);
844
+ color: var(--nuvio-text);
845
+ }
846
+ .nuvio-tree-btn--active {
847
+ background: rgba(37, 99, 235, 0.28);
848
+ font-weight: 500;
849
+ color: var(--nuvio-text);
850
+ }
851
+ .nuvio-tree-btn-path {
852
+ display: block;
853
+ font-size: 10px;
854
+ color: var(--nuvio-dim);
855
+ }
856
+ .nuvio-tree-btn-row {
857
+ display: flex;
858
+ align-items: flex-start;
859
+ gap: 6px;
860
+ }
861
+ .nuvio-tree-role {
862
+ border-radius: 6px;
863
+ background: rgba(255, 255, 255, 0.08);
864
+ border: 1px solid rgba(255, 255, 255, 0.12);
865
+ padding: 0 4px;
866
+ font-size: 9px;
867
+ line-height: 1.4;
868
+ text-transform: uppercase;
869
+ letter-spacing: 0.03em;
870
+ color: var(--nuvio-dim);
871
+ }
872
+ .nuvio-tree-dup-title {
873
+ margin: 0;
874
+ font-size: 11px;
875
+ font-family:
876
+ ui-monospace,
877
+ SFMono-Regular,
878
+ Menlo,
879
+ Monaco,
880
+ Consolas,
881
+ monospace;
882
+ color: var(--nuvio-warning);
883
+ }
884
+ .nuvio-tree-risk {
885
+ flex-shrink: 0;
886
+ width: 6px;
887
+ height: 6px;
888
+ margin-top: 5px;
889
+ border-radius: 50%;
890
+ }
891
+ .nuvio-tree-risk--safe {
892
+ background: var(--nuvio-success);
893
+ }
894
+ .nuvio-tree-risk--caution {
895
+ background: var(--nuvio-warning);
896
+ }
897
+ .nuvio-tree-risk--unsupported {
898
+ background: var(--nuvio-error);
899
+ }
900
+ .nuvio-diagnostics {
901
+ display: flex;
902
+ flex-direction: column;
903
+ gap: 4px;
904
+ }
905
+ .nuvio-chip-status-line {
906
+ display: flex;
907
+ align-items: flex-start;
908
+ gap: 8px;
909
+ margin: 0;
910
+ font-size: 12px;
911
+ line-height: 1.4;
912
+ }
913
+ .nuvio-chip-status-text {
914
+ min-width: 0;
915
+ flex: 1;
916
+ }
917
+ .nuvio-status-dot {
918
+ flex-shrink: 0;
919
+ width: 8px;
920
+ height: 8px;
921
+ margin-top: 4px;
922
+ border-radius: 50%;
923
+ background: var(--nuvio-dim);
924
+ }
925
+ .nuvio-status-dot--connected {
926
+ background: var(--nuvio-success);
927
+ box-shadow: 0 0 8px rgba(52, 211, 153, 0.45);
928
+ }
929
+ .nuvio-status-dot--connecting {
930
+ background: var(--nuvio-warning);
931
+ animation: nuvio-pulse 1.2s ease-in-out infinite;
932
+ }
933
+ .nuvio-status-dot--error {
934
+ background: var(--nuvio-error);
935
+ }
936
+ .nuvio-status-dot--warn {
937
+ background: var(--nuvio-warning);
938
+ }
939
+ .nuvio-status-dot--idle {
940
+ background: var(--nuvio-dim);
941
+ }
942
+ .nuvio-chip-mode-badge {
943
+ display: inline-block;
944
+ padding: 1px 6px;
945
+ border-radius: 999px;
946
+ font-size: 9px;
947
+ font-weight: 700;
948
+ text-transform: uppercase;
949
+ letter-spacing: 0.06em;
950
+ color: var(--nuvio-accent);
951
+ background: rgba(125, 211, 252, 0.14);
952
+ border: 1px solid rgba(125, 211, 252, 0.28);
953
+ }
954
+ .nuvio-meta-reasons {
955
+ margin: 6px 0 0;
956
+ padding-left: 1rem;
957
+ font-size: 12px;
958
+ color: var(--nuvio-warning);
959
+ list-style: disc;
960
+ }
961
+ .nuvio-risk-safe {
962
+ color: var(--nuvio-success);
963
+ }
964
+ .nuvio-risk-caution {
965
+ color: var(--nuvio-warning);
966
+ }
967
+ .nuvio-risk-unsupported {
968
+ color: var(--nuvio-error);
969
+ }
970
+ .nuvio-diagnostics-versions {
971
+ word-break: break-word;
972
+ }
973
+ @keyframes nuvio-pulse {
974
+ 0%, 100% {
975
+ opacity: 1;
976
+ }
977
+ 50% {
978
+ opacity: 0.45;
979
+ }
980
+ }
981
+ .nuvio-color-trigger {
982
+ display: flex;
983
+ width: 100%;
984
+ align-items: center;
985
+ gap: 8px;
986
+ min-height: 34px;
987
+ border-radius: var(--nuvio-radius-control);
988
+ border: 1px solid rgba(255, 255, 255, 0.14);
989
+ background: var(--nuvio-control-bg);
990
+ padding: 7px 10px;
991
+ font-size: 12px;
992
+ color: var(--nuvio-text);
993
+ cursor: pointer;
994
+ text-align: left;
995
+ font-family: inherit;
996
+ }
997
+ .nuvio-color-trigger:hover {
998
+ border-color: var(--nuvio-border-strong);
999
+ }
1000
+ .nuvio-color-swatch {
1001
+ height: 20px;
1002
+ width: 20px;
1003
+ flex-shrink: 0;
1004
+ border-radius: 6px;
1005
+ border: 1px solid rgba(255, 255, 255, 0.2);
1006
+ }
1007
+ .nuvio-color-swatch--sm {
1008
+ display: inline-block;
1009
+ height: 14px;
1010
+ width: 14px;
1011
+ border-radius: 4px;
1012
+ border: 1px solid rgba(255, 255, 255, 0.2);
1013
+ }
1014
+ .nuvio-color-popover {
1015
+ position: absolute;
1016
+ left: 0;
1017
+ right: 0;
1018
+ z-index: 20;
1019
+ margin-top: 4px;
1020
+ max-height: min(20rem, 50vh);
1021
+ overflow: auto;
1022
+ border-radius: var(--nuvio-radius-inner);
1023
+ border: 1px solid var(--nuvio-border-strong);
1024
+ background: rgba(3, 7, 18, 0.94);
1025
+ -webkit-backdrop-filter: var(--nuvio-inner-blur);
1026
+ backdrop-filter: var(--nuvio-inner-blur);
1027
+ padding: 10px;
1028
+ box-shadow: 0 28px 80px rgba(0, 0, 0, 0.42);
1029
+ }
1030
+ .nuvio-color-specials {
1031
+ display: flex;
1032
+ flex-wrap: wrap;
1033
+ gap: 4px;
1034
+ margin-bottom: 8px;
1035
+ }
1036
+ .nuvio-color-special-btn {
1037
+ display: flex;
1038
+ align-items: center;
1039
+ gap: 4px;
1040
+ border: none;
1041
+ border-radius: 8px;
1042
+ padding: 4px 8px;
1043
+ font-size: 10px;
1044
+ cursor: pointer;
1045
+ background: transparent;
1046
+ color: var(--nuvio-muted);
1047
+ font-family: inherit;
1048
+ }
1049
+ .nuvio-color-special-btn:hover {
1050
+ background: rgba(255, 255, 255, 0.08);
1051
+ }
1052
+ .nuvio-color-special-btn--active {
1053
+ background: rgba(59, 130, 246, 0.22);
1054
+ color: var(--nuvio-text);
1055
+ box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.45);
1056
+ }
1057
+ .nuvio-palette-grid {
1058
+ display: grid;
1059
+ gap: 1px;
1060
+ font-size: 9px;
1061
+ color: var(--nuvio-dim);
1062
+ }
1063
+ .nuvio-palette-shade {
1064
+ text-align: center;
1065
+ font-variant-numeric: tabular-nums;
1066
+ }
1067
+ .nuvio-palette-family {
1068
+ overflow: hidden;
1069
+ text-overflow: ellipsis;
1070
+ padding-right: 4px;
1071
+ text-align: right;
1072
+ color: var(--nuvio-muted);
1073
+ }
1074
+ .nuvio-palette-swatch {
1075
+ aspect-ratio: 1;
1076
+ min-height: 1.125rem;
1077
+ min-width: 0;
1078
+ border-radius: 3px;
1079
+ border: 1px solid rgba(0, 0, 0, 0.25);
1080
+ padding: 0;
1081
+ cursor: pointer;
1082
+ }
1083
+ .nuvio-palette-swatch:hover {
1084
+ transform: scale(1.08);
1085
+ border-color: rgba(255, 255, 255, 0.5);
1086
+ }
1087
+ .nuvio-palette-swatch--selected {
1088
+ border-color: var(--nuvio-primary-bright);
1089
+ box-shadow: 0 0 0 2px var(--nuvio-primary-glow);
1090
+ }
1091
+ .nuvio-palette-contents {
1092
+ display: contents;
1093
+ }
1094
+ .nuvio-chrome-header,
1095
+ .nuvio-glass-header {
1096
+ background: transparent;
1097
+ border-bottom: none;
1098
+ }
1099
+ .nuvio-task-card {
1100
+ display: flex;
1101
+ align-items: flex-start;
1102
+ gap: 0.75rem;
1103
+ width: 100%;
1104
+ padding: 0.75rem 0.875rem;
1105
+ text-align: left;
1106
+ border: 1px solid var(--nuvio-border-subtle);
1107
+ border-radius: 0.75rem;
1108
+ background: rgba(255, 255, 255, 0.04);
1109
+ color: var(--nuvio-text);
1110
+ cursor: pointer;
1111
+ transition: border-color 0.15s ease, background 0.15s ease;
1112
+ }
1113
+ .nuvio-task-card:hover {
1114
+ border-color: rgba(56, 189, 248, 0.45);
1115
+ background: rgba(56, 189, 248, 0.08);
1116
+ }
1117
+ .nuvio-task-card-icon {
1118
+ flex-shrink: 0;
1119
+ font-size: 1.125rem;
1120
+ line-height: 1.3;
1121
+ }
1122
+ .nuvio-task-card-body {
1123
+ display: flex;
1124
+ flex-direction: column;
1125
+ gap: 0.125rem;
1126
+ min-width: 0;
1127
+ }
1128
+ .nuvio-task-card-title {
1129
+ font-size: 0.8125rem;
1130
+ font-weight: 600;
1131
+ color: var(--nuvio-text);
1132
+ }
1133
+ .nuvio-task-card-hint {
1134
+ font-size: 0.6875rem;
1135
+ line-height: 1.35;
1136
+ color: var(--nuvio-text-muted);
1137
+ }
1138
+ .nuvio-card--actions {
1139
+ border-color: rgba(56, 189, 248, 0.25);
1140
+ }
1141
+ .nuvio-action-stack {
1142
+ display: flex;
1143
+ flex-direction: column;
1144
+ gap: 0.5rem;
1145
+ }
1146
+ .nuvio-button--block {
1147
+ width: 100%;
1148
+ justify-content: center;
1149
+ }
1150
+ .nuvio-device-compact {
1151
+ padding: 0.625rem 0.875rem;
1152
+ border-radius: 0.75rem;
1153
+ border: 1px solid var(--nuvio-border-subtle);
1154
+ background: rgba(255, 255, 255, 0.02);
1155
+ }
1156
+ .nuvio-advanced-panel,
1157
+ .nuvio-outline-panel {
1158
+ margin-top: 0;
1159
+ }
1160
+ .nuvio-back-link {
1161
+ display: block;
1162
+ margin-top: 0.25rem;
1163
+ padding: 0;
1164
+ border: none;
1165
+ background: none;
1166
+ font-size: 0.6875rem;
1167
+ color: var(--nuvio-text-muted);
1168
+ cursor: pointer;
1169
+ text-align: left;
1170
+ }
1171
+ .nuvio-back-link:hover {
1172
+ color: var(--nuvio-text);
1173
+ }
1174
+ .nuvio-pending-label {
1175
+ margin: 0;
1176
+ font-size: 0.6875rem;
1177
+ color: var(--nuvio-text-muted);
1178
+ }
1179
+ .nuvio-preview-box--compact {
1180
+ padding: 0.5rem 0.625rem;
1181
+ }
1182
+ .nuvio-preview-box--compact .nuvio-preview-box-body {
1183
+ font-size: 0.75rem;
1184
+ line-height: 1.45;
1185
+ white-space: pre-wrap;
1186
+ }
1187
+ .nuvio-advanced-summary,
1188
+ .nuvio-more-styles-summary {
1189
+ cursor: pointer;
1190
+ user-select: none;
1191
+ }