uidex 0.2.0 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,418 +1,1066 @@
1
- /* Design tokens — :host targets the shadow root, :where(:root) for standalone use */
2
- /* Theme: shadcn lyra monochromatic, sharp, monospace */
1
+ /* ============================================================
2
+ Design tokens COSS defaults + uidex category colors
3
+ :host for Shadow DOM, :where(:root) for standalone use.
4
+ Dark theme default. Light theme via :host(.light).
5
+ ============================================================ */
6
+
3
7
  :where(:host, :root) {
4
- /* Colors — dark theme (lyra neutral) */
5
- --uidex-color-primary: #e5e5e5;
6
- --uidex-color-primary-hover: #ffffff;
7
- --uidex-color-bg: #1c1c1c;
8
- --uidex-color-bg-elevated: #2e2e2e;
9
- --uidex-color-text: #f9f9f9;
10
- --uidex-color-text-strong: #ffffff;
11
- --uidex-color-text-muted: #ababab; /* chrome: labels, counts, placeholders */
12
- --uidex-color-text-secondary: #ababab; /* content: doc text, descriptions */
13
- --uidex-color-surface-hover: rgba(255, 255, 255, 0.08);
14
- --uidex-color-surface-active: rgba(255, 255, 255, 0.12);
15
- --uidex-color-border: rgba(255, 255, 255, 0.1);
16
- --uidex-color-border-light: rgba(255, 255, 255, 0.06);
17
- --uidex-color-backdrop: rgba(0, 0, 0, 0.6);
18
-
19
- /* Category colors */
20
- --uidex-color-pages: #60a5fa;
21
- --uidex-color-features: #a78bfa;
22
- --uidex-color-components: #34d399;
23
-
24
- /* Shadows — minimal, border-driven definition */
25
- --uidex-shadow-sm: none;
26
- --uidex-shadow-md: 0 0 0 1px var(--uidex-color-border);
27
- --uidex-shadow-lg: 0 0 0 1px var(--uidex-color-border);
28
-
29
- /* Border radius — lyra: none */
30
- --uidex-radius-sm: 0;
31
- --uidex-radius-md: 0;
32
- --uidex-radius-lg: 0;
33
- --uidex-radius-full: 0;
34
-
35
- /* Z-index high enough to stay above app UI */
36
- --uidex-z-container: 2147483644;
37
- --uidex-z-overlay: 2147483645;
38
- --uidex-z-modal: 2147483646;
39
-
40
- /* Typography — mono-first (lyra). Both stacks are mono by default;
41
- consumers can override --uidex-font-sans to restore a proportional body font. */
42
- --uidex-font-sans: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
43
- --uidex-font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
44
- --uidex-font-size-xs: 11px;
45
- --uidex-font-size-sm: 12px;
46
- --uidex-font-size-md: 13px;
47
- --uidex-font-size-lg: 14px;
48
-
49
- /* Transitions */
50
- --uidex-transition-fast: 0.1s ease;
51
- --uidex-transition-normal: 0.15s ease;
52
- --uidex-transition-smooth: 0.2s ease;
53
- }
54
-
55
- /* ——— Container ——— */
56
- .uidex-container {
57
- position: fixed;
58
- z-index: var(--uidex-z-container);
59
- pointer-events: auto;
60
- font-family: var(--uidex-font-sans);
61
- -webkit-font-smoothing: antialiased;
62
- -moz-osx-font-smoothing: grayscale;
8
+ --background: #141414;
9
+ --foreground: #f5f5f5;
10
+ --card: #181818;
11
+ --card-foreground: #f5f5f5;
12
+ --popover: #1e1e1e;
13
+ --popover-foreground: #f5f5f5;
14
+ --primary: #f5f5f5;
15
+ --primary-foreground: #262626;
16
+ --secondary: rgba(255, 255, 255, 0.04);
17
+ --secondary-foreground: #f5f5f5;
18
+ --muted: rgba(255, 255, 255, 0.04);
19
+ --muted-foreground: #7f7f7f;
20
+ --accent: rgba(255, 255, 255, 0.04);
21
+ --accent-foreground: #f5f5f5;
22
+ --destructive: #f87171;
23
+ --destructive-foreground: #f87171;
24
+ --border: rgba(255, 255, 255, 0.06);
25
+ --input: rgba(255, 255, 255, 0.08);
26
+ --ring: #737373;
27
+ --info: #60a5fa;
28
+ --radius: 0.625rem;
29
+ --radius-sm: 6px;
30
+ --radius-md: 8px;
31
+ --radius-lg: 10px;
32
+ --radius-xl: 14px;
33
+ --radius-2xl: 16px;
34
+ --font-sans: ui-sans-serif, system-ui, -apple-system,
35
+ BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
36
+ --font-mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo,
37
+ Consolas, monospace;
38
+
39
+ /* Uidex category colors */
40
+ --uidex-component: #34d399;
41
+ --uidex-feature: #a78bfa;
42
+ --uidex-block: #c084fc;
43
+ }
44
+
45
+ /* ——— Light theme ——— */
46
+ :host(.light) {
47
+ --background: #ffffff;
48
+ --foreground: #262626;
49
+ --card: #ffffff;
50
+ --card-foreground: #262626;
51
+ --popover: #ffffff;
52
+ --popover-foreground: #262626;
53
+ --primary: #262626;
54
+ --primary-foreground: #fafafa;
55
+ --secondary: rgba(0, 0, 0, 0.04);
56
+ --secondary-foreground: #262626;
57
+ --muted: rgba(0, 0, 0, 0.04);
58
+ --muted-foreground: #6b6b6b;
59
+ --accent: rgba(0, 0, 0, 0.04);
60
+ --accent-foreground: #262626;
61
+ --destructive: #ef4444;
62
+ --destructive-foreground: #b91c1c;
63
+ --border: rgba(0, 0, 0, 0.08);
64
+ --input: rgba(0, 0, 0, 0.1);
65
+ --ring: #a3a3a3;
66
+ --info: #3b82f6;
67
+ --warning: #f59e0b;
68
+ --warning-foreground: #92400e;
69
+ --success: #10b981;
70
+ --success-foreground: #065f46;
71
+ --info-foreground: #1e40af;
72
+ --purple: #8b5cf6;
73
+ --purple-foreground: #5b21b6;
74
+ }
75
+
76
+ /* ============================================================
77
+ Reset — match Tailwind preflight (border-box + no margin)
78
+ ============================================================ */
79
+
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ box-sizing: border-box;
63
84
  }
64
85
 
65
- .uidex-bottom-right { bottom: 20px; right: 20px; }
66
- .uidex-bottom-left { bottom: 20px; left: 20px; }
67
- .uidex-top-right { top: 20px; right: 20px; }
68
- .uidex-top-left { top: 20px; left: 20px; }
86
+ /* ============================================================
87
+ Icon
88
+ ============================================================ */
69
89
 
70
- /* ——— Trigger button group ——— */
71
- .uidex-trigger-group {
72
- display: flex;
73
- align-items: center;
74
- border-radius: 0;
75
- background: var(--uidex-color-bg);
76
- border: 1px solid var(--uidex-color-border);
77
- overflow: hidden;
78
- user-select: none;
79
- height: 32px;
90
+ .uidex-icon {
91
+ flex-shrink: 0;
92
+ pointer-events: none;
80
93
  }
81
94
 
82
- .uidex-trigger-group:hover {
83
- border-color: rgba(255, 255, 255, 0.16);
84
- }
95
+ /* ============================================================
96
+ Button mirrors COSS button.tsx variants
97
+ ============================================================ */
85
98
 
86
- .uidex-trigger-btn {
87
- display: flex;
99
+ .uidex-btn {
100
+ position: relative;
101
+ display: inline-flex;
88
102
  align-items: center;
89
103
  justify-content: center;
90
- gap: 6px;
91
- height: 100%;
92
- padding: 0 10px;
93
- border: none;
94
- background: transparent;
95
- color: var(--uidex-color-text-muted);
96
- font-size: var(--uidex-font-size-sm);
104
+ gap: 8px;
105
+ border-radius: var(--radius-lg);
106
+ border: 1px solid transparent;
107
+ font-size: 14px;
97
108
  font-weight: 500;
98
- font-family: var(--uidex-font-mono);
109
+ font-family: var(--font-sans);
110
+ white-space: nowrap;
99
111
  cursor: pointer;
100
- transition: background-color var(--uidex-transition-fast), color var(--uidex-transition-fast);
112
+ outline: none;
113
+ transition:
114
+ background-color 0.2s ease-in-out,
115
+ color 0.2s ease-in-out,
116
+ box-shadow 0.2s ease-in-out,
117
+ border-color 0.2s ease-in-out;
118
+ -webkit-font-smoothing: antialiased;
101
119
  }
102
120
 
103
- .uidex-trigger-btn:hover {
104
- background: var(--uidex-color-surface-hover);
105
- color: var(--uidex-color-text-strong);
121
+ .uidex-btn::before {
122
+ content: '';
123
+ position: absolute;
124
+ inset: 0;
125
+ pointer-events: none;
126
+ border-radius: calc(var(--radius-lg) - 1px);
106
127
  }
107
128
 
108
- .uidex-trigger-btn:active {
109
- background: var(--uidex-color-surface-active);
110
- transform: translateY(1px);
129
+ .uidex-btn:focus-visible {
130
+ outline: 2px solid var(--ring);
131
+ outline-offset: 1px;
111
132
  }
112
133
 
113
- .uidex-trigger-btn--active {
114
- color: var(--uidex-color-text-strong);
115
- background: var(--uidex-color-surface-active);
134
+ .uidex-btn:disabled {
135
+ opacity: 0.64;
136
+ pointer-events: none;
116
137
  }
117
138
 
118
- .uidex-trigger-btn--active:hover {
119
- background: rgba(255, 255, 255, 0.16);
139
+ /* Default variant — primary fill */
140
+ .uidex-btn--default {
141
+ border-color: var(--primary);
142
+ background: var(--primary);
143
+ color: var(--primary-foreground);
144
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05),
145
+ 0 1px 2px color-mix(in srgb, var(--primary) 24%, transparent);
120
146
  }
121
147
 
122
- .uidex-trigger-divider {
123
- width: 1px;
124
- height: 16px;
125
- background: var(--uidex-color-border);
126
- flex-shrink: 0;
148
+ .uidex-btn--default::before {
149
+ box-shadow: inset 0 1px color-mix(in srgb, var(--primary-foreground) 16%, transparent);
127
150
  }
128
151
 
129
- .uidex-trigger-icon {
152
+ .uidex-btn--default:hover {
153
+ opacity: 0.9;
154
+ }
155
+
156
+ .uidex-btn--default:active {
157
+ box-shadow: none;
158
+ }
159
+
160
+ .uidex-btn--default:active::before {
161
+ box-shadow: inset 0 1px rgba(0, 0, 0, 0.08);
162
+ }
163
+
164
+ /* Ghost variant */
165
+ .uidex-btn--ghost {
166
+ background: transparent;
167
+ color: var(--foreground);
168
+ }
169
+
170
+ .uidex-btn--ghost::before {
171
+ display: none;
172
+ }
173
+
174
+ .uidex-btn--ghost:hover {
175
+ background: var(--accent);
176
+ }
177
+
178
+ /* Outline variant */
179
+ .uidex-btn--outline {
180
+ border-color: var(--input);
181
+ background: var(--popover);
182
+ color: var(--foreground);
183
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
184
+ }
185
+
186
+ .uidex-btn--outline::before {
187
+ box-shadow: 0 -1px var(--border);
188
+ }
189
+
190
+ .uidex-btn--outline:hover {
191
+ background: var(--input);
192
+ }
193
+
194
+ .uidex-btn--outline:active {
195
+ box-shadow: none;
196
+ }
197
+
198
+ /* Destructive variant */
199
+ .uidex-btn--destructive {
200
+ border-color: var(--destructive);
201
+ background: var(--destructive);
202
+ color: #ffffff;
203
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
204
+ }
205
+
206
+ .uidex-btn--destructive::before {
207
+ box-shadow: inset 0 1px color-mix(in srgb, var(--primary-foreground) 16%, transparent);
208
+ }
209
+
210
+ .uidex-btn--destructive:hover {
211
+ opacity: 0.9;
212
+ }
213
+
214
+ /* Button sizes */
215
+ .uidex-btn--size-default {
216
+ height: 36px;
217
+ padding: 0 12px;
218
+ }
219
+
220
+ .uidex-btn--size-sm {
221
+ height: 32px;
222
+ padding: 0 10px;
223
+ gap: 6px;
224
+ }
225
+
226
+ .uidex-btn--size-xs {
227
+ height: 28px;
228
+ padding: 0 8px;
229
+ gap: 4px;
230
+ font-size: 12px;
231
+ border-radius: var(--radius-md);
232
+ }
233
+
234
+ .uidex-btn--size-xs::before {
235
+ border-radius: calc(var(--radius-md) - 1px);
236
+ }
237
+
238
+ .uidex-btn--size-icon {
239
+ width: 36px;
240
+ height: 36px;
241
+ padding: 0;
242
+ }
243
+
244
+ .uidex-btn--size-icon-sm {
245
+ width: 32px;
246
+ height: 32px;
247
+ padding: 0;
248
+ }
249
+
250
+ .uidex-btn--size-icon-xs {
251
+ width: 24px;
252
+ height: 24px;
253
+ padding: 0;
254
+ border-radius: var(--radius-md);
255
+ }
256
+
257
+ .uidex-btn--size-icon-xs .uidex-icon {
130
258
  width: 14px;
131
259
  height: 14px;
132
- flex-shrink: 0;
133
260
  }
134
261
 
135
- /* ——— Draggable ——— */
136
- .uidex-container--dragging {
137
- transition: none !important;
262
+ .uidex-btn .uidex-icon {
263
+ width: 16px;
264
+ height: 16px;
265
+ opacity: 0.8;
138
266
  }
139
267
 
140
- .uidex-container--dragging .uidex-trigger-btn {
141
- cursor: grabbing !important;
268
+ .uidex-btn--size-xs .uidex-icon {
269
+ width: 14px;
270
+ height: 14px;
142
271
  }
143
272
 
144
- /* ——— Inspect mode cursor ——— */
145
- body.uidex-inspecting,
146
- body.uidex-inspecting * {
147
- cursor: crosshair !important;
148
- }
273
+ /* ============================================================
274
+ Dialog — mirrors COSS dialog.tsx
275
+ ============================================================ */
149
276
 
150
- /* ——— Modal ——— */
151
- .uidex-modal-backdrop {
277
+ .uidex-dialog-backdrop {
152
278
  position: fixed;
153
279
  inset: 0;
154
- z-index: var(--uidex-z-modal);
280
+ z-index: 2147483646;
155
281
  pointer-events: auto;
156
282
  display: flex;
157
283
  align-items: center;
158
284
  justify-content: center;
159
- background: var(--uidex-color-backdrop);
285
+ background: rgba(0, 0, 0, 0.32);
286
+ backdrop-filter: blur(4px);
287
+ -webkit-backdrop-filter: blur(4px);
288
+ opacity: 0;
289
+ transition: opacity 0.2s ease-in-out;
160
290
  }
161
291
 
162
- .uidex-modal {
163
- background: var(--uidex-color-bg);
164
- border: 1px solid var(--uidex-color-border);
165
- border-radius: 0;
292
+ .uidex-dialog-backdrop--open {
293
+ opacity: 1;
294
+ }
295
+
296
+ .uidex-dialog {
297
+ position: relative;
298
+ display: flex;
299
+ flex-direction: column;
300
+ background: var(--popover);
301
+ color: var(--popover-foreground);
302
+ border: 1px solid var(--border);
303
+ border-radius: var(--radius-2xl);
166
304
  max-width: calc(100vw - 32px);
167
305
  max-height: calc(100vh - 64px);
168
- font-family: var(--uidex-font-sans);
306
+ font-family: var(--font-sans);
307
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
308
+ overflow: hidden;
309
+ -webkit-font-smoothing: antialiased;
310
+ opacity: 0;
311
+ transform: scale(0.98);
312
+ transform-origin: center;
313
+ will-change: transform;
314
+ transition:
315
+ opacity 0.2s ease-in-out,
316
+ transform 0.2s ease-in-out;
169
317
  }
170
318
 
171
- .uidex-modal-header {
319
+ .uidex-dialog--open {
320
+ opacity: 1;
321
+ transform: none;
322
+ }
323
+
324
+ .uidex-dialog::before {
325
+ content: '';
326
+ position: absolute;
327
+ inset: 0;
328
+ pointer-events: none;
329
+ border-radius: calc(var(--radius-2xl) - 1px);
330
+ box-shadow: 0 -1px var(--border);
331
+ }
332
+
333
+ /* Panel variant — sidebar layout */
334
+ .uidex-dialog--panel {
335
+ width: calc(100vw - 32px);
336
+ max-width: 720px;
337
+ height: calc(100vh - 64px);
338
+ max-height: 600px;
339
+ }
340
+
341
+ /* Feedback variant — single column */
342
+ .uidex-dialog--feedback {
343
+ width: calc(100vw - 32px);
344
+ max-width: 400px;
345
+ }
346
+
347
+ .uidex-dialog-header {
172
348
  display: flex;
173
349
  align-items: center;
174
- gap: 12px;
175
- padding: 12px 16px;
176
- border-bottom: 1px solid var(--uidex-color-border);
350
+ gap: 8px;
351
+ padding: 16px 24px;
352
+ padding-right: 48px;
353
+ border-bottom: 1px solid var(--border);
177
354
  }
178
355
 
179
- .uidex-modal-title {
356
+ .uidex-dialog-title {
180
357
  margin: 0;
181
- font-size: var(--uidex-font-size-sm);
358
+ font-size: 20px;
182
359
  font-weight: 600;
183
- color: var(--uidex-color-text-strong);
184
- font-family: var(--uidex-font-mono);
185
- text-transform: uppercase;
186
- letter-spacing: 0.05em;
360
+ line-height: 1;
361
+ color: var(--foreground);
362
+ font-family: var(--font-sans);
363
+ }
364
+
365
+ .uidex-dialog-body {
366
+ flex: 1;
367
+ min-height: 0;
368
+ overflow-y: auto;
369
+ scrollbar-width: thin;
370
+ scrollbar-color: rgba(128, 128, 128, 0.2) transparent;
371
+ }
372
+
373
+ .uidex-dialog-body::-webkit-scrollbar {
374
+ width: 6px;
187
375
  }
188
376
 
189
- .uidex-modal-close {
377
+ .uidex-dialog-body::-webkit-scrollbar-track {
378
+ background: transparent;
379
+ }
380
+
381
+ .uidex-dialog-body::-webkit-scrollbar-thumb {
382
+ background: rgba(128, 128, 128, 0.2);
383
+ border-radius: 9999px;
384
+ }
385
+
386
+ .uidex-dialog-footer {
190
387
  display: flex;
191
388
  align-items: center;
192
- justify-content: center;
193
- width: 28px;
194
- height: 28px;
195
- border: 1px solid transparent;
196
- border-radius: 0;
389
+ justify-content: flex-end;
390
+ gap: 8px;
391
+ padding: 16px 24px;
392
+ border-top: 1px solid var(--border);
393
+ background: var(--muted);
394
+ border-radius: 0 0 calc(var(--radius-2xl) - 1px)
395
+ calc(var(--radius-2xl) - 1px);
396
+ }
397
+
398
+ .uidex-dialog-close {
399
+ position: absolute;
400
+ right: 8px;
401
+ top: 8px;
402
+ z-index: 1;
403
+ }
404
+
405
+ /* ——— Panel body layout (sidebar + main) ——— */
406
+ .uidex-panel-body {
407
+ display: flex;
408
+ flex: 1;
409
+ min-height: 0;
410
+ }
411
+
412
+ .uidex-panel-sidebar {
413
+ width: 200px;
414
+ flex-shrink: 0;
415
+ border-right: 1px solid var(--border);
416
+ overflow-y: auto;
417
+ padding: 0;
418
+ scrollbar-width: thin;
419
+ scrollbar-color: rgba(128, 128, 128, 0.2) transparent;
420
+ }
421
+
422
+ .uidex-panel-sidebar::-webkit-scrollbar {
423
+ width: 6px;
424
+ }
425
+
426
+ .uidex-panel-sidebar::-webkit-scrollbar-track {
197
427
  background: transparent;
198
- color: var(--uidex-color-text-muted);
199
- font-size: 18px;
200
- cursor: pointer;
201
- transition: background-color var(--uidex-transition-fast), color var(--uidex-transition-fast), border-color var(--uidex-transition-fast);
202
428
  }
203
429
 
204
- .uidex-modal-close:hover {
205
- background: var(--uidex-color-surface-hover);
206
- border-color: var(--uidex-color-border);
207
- color: var(--uidex-color-text-strong);
430
+ .uidex-panel-sidebar::-webkit-scrollbar-thumb {
431
+ background: rgba(128, 128, 128, 0.2);
432
+ border-radius: 9999px;
208
433
  }
209
434
 
210
- .uidex-modal-close:active {
211
- transform: translateY(1px);
435
+ .uidex-panel-main {
436
+ flex: 1;
437
+ min-width: 0;
438
+ overflow-y: auto;
439
+ padding: 24px;
440
+ scrollbar-width: thin;
441
+ scrollbar-color: rgba(128, 128, 128, 0.2) transparent;
442
+ }
443
+
444
+ .uidex-panel-main::-webkit-scrollbar {
445
+ width: 6px;
446
+ }
447
+
448
+ .uidex-panel-main::-webkit-scrollbar-track {
449
+ background: transparent;
450
+ }
451
+
452
+ .uidex-panel-main::-webkit-scrollbar-thumb {
453
+ background: rgba(128, 128, 128, 0.2);
454
+ border-radius: 9999px;
455
+ }
456
+
457
+ .uidex-control--flex-fill {
458
+ flex: 1;
459
+ min-width: 0;
212
460
  }
213
461
 
214
- .uidex-modal-body {
462
+ .uidex-dialog-body--padded {
215
463
  padding: 12px 16px;
216
464
  }
217
465
 
218
- .uidex-modal-section {
219
- margin-bottom: 12px;
466
+ /* ============================================================
467
+ Control wrapper — shared base for input, textarea, select
468
+ ============================================================ */
469
+
470
+ .uidex-control {
471
+ position: relative;
472
+ display: inline-flex;
473
+ width: 100%;
474
+ border-radius: var(--radius-lg);
475
+ border: 1px solid var(--input);
476
+ background: var(--background);
477
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
478
+ transition:
479
+ border-color 0.2s ease-in-out,
480
+ box-shadow 0.2s ease-in-out;
481
+ }
482
+
483
+ .uidex-control::before {
484
+ content: '';
485
+ position: absolute;
486
+ inset: 0;
487
+ pointer-events: none;
488
+ border-radius: calc(var(--radius-lg) - 1px);
489
+ box-shadow: 0 -1px var(--border);
220
490
  }
221
491
 
222
- .uidex-modal-section:last-child {
223
- margin-bottom: 0;
492
+ .uidex-control:focus-within {
493
+ border-color: var(--ring);
494
+ outline: 3px solid color-mix(in srgb, var(--ring) 24%, transparent);
495
+ outline-offset: -1px;
496
+ box-shadow: none;
224
497
  }
225
498
 
226
- .uidex-modal-label {
227
- font-size: var(--uidex-font-size-xs);
228
- font-weight: 600;
229
- text-transform: uppercase;
230
- letter-spacing: 0.06em;
231
- color: var(--uidex-color-text-muted);
232
- margin-bottom: 6px;
499
+ .uidex-control:focus-within::before {
500
+ box-shadow: none;
233
501
  }
234
502
 
235
- .uidex-modal-section--spaced {
236
- margin-top: 12px;
503
+ /* ——— Input ——— */
504
+
505
+ .uidex-input {
506
+ width: 100%;
507
+ min-width: 0;
508
+ height: 30px;
509
+ padding: 0 10px;
510
+ border: none;
511
+ border-radius: inherit;
512
+ background: transparent;
513
+ color: var(--foreground);
514
+ font-size: 14px;
515
+ font-family: var(--font-sans);
516
+ outline: none;
517
+ line-height: 30px;
237
518
  }
238
519
 
239
- .uidex-modal-doc {
240
- margin: 0;
241
- font-size: var(--uidex-font-size-sm);
520
+ .uidex-input::placeholder {
521
+ color: var(--muted-foreground);
522
+ opacity: 0.72;
523
+ }
524
+
525
+ .uidex-control--sm .uidex-input {
526
+ height: 26px;
527
+ line-height: 26px;
528
+ padding: 0 8px;
529
+ }
530
+
531
+ /* ——— Textarea ——— */
532
+
533
+ .uidex-textarea {
534
+ width: 100%;
535
+ min-width: 0;
536
+ padding: 8px 10px;
537
+ border: none;
538
+ border-radius: inherit;
539
+ background: transparent;
540
+ color: var(--foreground);
541
+ font-size: 14px;
542
+ font-family: var(--font-sans);
543
+ outline: none;
242
544
  line-height: 1.5;
243
- color: var(--uidex-color-text-secondary);
545
+ resize: vertical;
546
+ min-height: 80px;
547
+ }
548
+
549
+ .uidex-textarea::placeholder {
550
+ color: var(--muted-foreground);
551
+ opacity: 0.72;
552
+ }
553
+
554
+ /* ——— Select ——— */
555
+
556
+ .uidex-select {
557
+ width: 100%;
558
+ height: 30px;
559
+ padding: 0 26px 0 10px;
560
+ border: none;
561
+ border-radius: inherit;
562
+ background: transparent;
563
+ color: var(--foreground);
564
+ font-size: 14px;
565
+ font-family: var(--font-sans);
566
+ outline: none;
567
+ appearance: none;
568
+ cursor: pointer;
569
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 256 256'%3E%3Cpath fill='%237f7f7f' d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80a8,8,0,0,1,11.32-11.32L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z'/%3E%3C/svg%3E");
570
+ background-repeat: no-repeat;
571
+ background-position: right 6px center;
572
+ background-size: 16px;
244
573
  }
245
574
 
246
- .uidex-modal-code {
575
+ /* ============================================================
576
+ Badge — mirrors COSS badge.tsx
577
+ ============================================================ */
578
+
579
+ .uidex-badge {
580
+ display: inline-flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ gap: 4px;
584
+ height: 18px;
585
+ min-width: 18px;
586
+ padding: 0 4px;
587
+ border-radius: var(--radius-sm);
588
+ border: 1px solid transparent;
589
+ font-size: 12px;
590
+ font-weight: 500;
591
+ font-family: var(--font-sans);
592
+ white-space: nowrap;
593
+ }
594
+
595
+ .uidex-badge--sm {
596
+ height: 16px;
597
+ min-width: 16px;
598
+ font-size: 10px;
599
+ }
600
+
601
+ .uidex-badge--default {
602
+ background: var(--primary);
603
+ color: var(--primary-foreground);
604
+ }
605
+
606
+ .uidex-badge--outline {
607
+ border-color: var(--input);
608
+ background: var(--background);
609
+ color: var(--foreground);
610
+ }
611
+
612
+ .uidex-badge--pages {
613
+ color: var(--info);
614
+ border-color: color-mix(
615
+ in srgb,
616
+ var(--info) 30%,
617
+ transparent
618
+ );
619
+ }
620
+
621
+ .uidex-badge--features {
622
+ color: var(--uidex-feature);
623
+ border-color: color-mix(
624
+ in srgb,
625
+ var(--uidex-feature) 30%,
626
+ transparent
627
+ );
628
+ }
629
+
630
+ .uidex-badge--components {
631
+ color: var(--uidex-component);
632
+ border-color: color-mix(
633
+ in srgb,
634
+ var(--uidex-component) 30%,
635
+ transparent
636
+ );
637
+ }
638
+
639
+ .uidex-badge--blocks {
640
+ color: var(--uidex-block);
641
+ border-color: color-mix(
642
+ in srgb,
643
+ var(--uidex-block) 30%,
644
+ transparent
645
+ );
646
+ }
647
+
648
+ .uidex-badge--spaced {
649
+ margin-bottom: 12px;
650
+ }
651
+
652
+ /* ============================================================
653
+ Chip — small clickable tags
654
+ ============================================================ */
655
+
656
+ .uidex-chip {
657
+ display: inline-flex;
658
+ align-items: center;
659
+ padding: 2px 6px;
660
+ border-radius: var(--radius-sm);
661
+ border: 1px solid var(--border);
662
+ background: transparent;
663
+ font-family: var(--font-sans);
664
+ font-size: 12px;
665
+ color: var(--foreground);
666
+ transition: background-color 0.2s ease-in-out;
667
+ }
668
+
669
+ .uidex-chip:hover {
670
+ background: var(--accent);
671
+ }
672
+
673
+ .uidex-chip--dimmed {
674
+ opacity: 0.4;
675
+ }
676
+
677
+ .uidex-chip--pages {
678
+ color: var(--info);
679
+ border-color: color-mix(
680
+ in srgb,
681
+ var(--info) 30%,
682
+ transparent
683
+ );
684
+ }
685
+
686
+ .uidex-chip--features {
687
+ color: var(--uidex-feature);
688
+ border-color: color-mix(
689
+ in srgb,
690
+ var(--uidex-feature) 30%,
691
+ transparent
692
+ );
693
+ }
694
+
695
+ .uidex-chip--components {
696
+ color: var(--uidex-component);
697
+ border-color: color-mix(
698
+ in srgb,
699
+ var(--uidex-component) 30%,
700
+ transparent
701
+ );
702
+ }
703
+
704
+ .uidex-chip--blocks {
705
+ color: var(--uidex-block);
706
+ border-color: color-mix(
707
+ in srgb,
708
+ var(--uidex-block) 30%,
709
+ transparent
710
+ );
711
+ }
712
+
713
+ .uidex-chip-group {
714
+ display: flex;
715
+ flex-wrap: wrap;
716
+ gap: 4px;
717
+ }
718
+
719
+ .uidex-chip-group--spaced {
720
+ margin-bottom: 8px;
721
+ }
722
+
723
+ /* ============================================================
724
+ Separator
725
+ ============================================================ */
726
+
727
+ .uidex-separator {
728
+ background: var(--border);
729
+ height: 1px;
730
+ width: 100%;
731
+ flex-shrink: 0;
732
+ }
733
+
734
+ .uidex-separator--vertical {
735
+ width: 1px;
736
+ height: auto;
737
+ align-self: stretch;
738
+ }
739
+
740
+ /* ============================================================
741
+ Code block
742
+ ============================================================ */
743
+
744
+ .uidex-code {
247
745
  display: block;
248
- font-family: var(--uidex-font-mono);
249
- font-size: var(--uidex-font-size-sm);
250
- color: var(--uidex-color-text);
251
- background: var(--uidex-color-bg-elevated);
746
+ font-family: var(--font-mono);
747
+ font-size: 14px;
748
+ color: var(--foreground);
749
+ background: var(--card);
252
750
  padding: 6px 10px;
253
- border-radius: 0;
254
- border: 1px solid var(--uidex-color-border);
751
+ border-radius: var(--radius-md);
752
+ border: 1px solid var(--border);
255
753
  word-break: break-all;
256
754
  }
257
755
 
258
- .uidex-modal-location {
259
- display: flex;
260
- align-items: center;
261
- gap: 8px;
756
+ .uidex-code--inline {
757
+ display: inline;
758
+ border: none;
759
+ background: none;
760
+ padding: 0;
761
+ word-break: normal;
762
+ }
763
+
764
+ /* ============================================================
765
+ Label — section heading, muted small text
766
+ ============================================================ */
767
+
768
+ .uidex-label {
769
+ font-size: 12px;
770
+ font-weight: 500;
771
+ color: var(--muted-foreground);
262
772
  margin-bottom: 6px;
263
773
  }
264
774
 
265
- .uidex-modal-location:last-child {
266
- margin-bottom: 0;
775
+ /* ============================================================
776
+ Field — form label + control wrapper
777
+ ============================================================ */
778
+
779
+ .uidex-field {
780
+ display: flex;
781
+ flex-direction: column;
782
+ gap: 4px;
267
783
  }
268
784
 
269
- .uidex-modal-location .uidex-modal-code {
270
- flex: 1;
271
- min-width: 0;
785
+ .uidex-field-label {
786
+ font-size: 14px;
787
+ font-weight: 500;
788
+ color: var(--muted-foreground);
789
+ }
790
+
791
+ /* ============================================================
792
+ Form
793
+ ============================================================ */
794
+
795
+ .uidex-form {
796
+ display: flex;
797
+ flex-direction: column;
798
+ gap: 12px;
799
+ }
800
+
801
+ /* ============================================================
802
+ Toggle — checkbox + label
803
+ ============================================================ */
804
+
805
+ .uidex-toggle {
806
+ display: inline-flex;
807
+ align-items: flex-start;
808
+ gap: 8px;
809
+ cursor: pointer;
272
810
  }
273
811
 
274
- .uidex-modal-copy {
812
+ .uidex-toggle-checkbox,
813
+ .uidex-checklist-checkbox {
814
+ -webkit-appearance: none;
815
+ appearance: none;
275
816
  flex-shrink: 0;
276
- padding: 4px 10px;
277
- border: 1px solid var(--uidex-color-border);
278
- border-radius: 0;
279
- background: var(--uidex-color-bg-elevated);
280
- color: var(--uidex-color-text-secondary);
281
- font-size: var(--uidex-font-size-sm);
282
- font-weight: 500;
283
- font-family: var(--uidex-font-mono);
817
+ margin: 0;
818
+ width: 16px;
819
+ height: 16px;
820
+ border: 1px solid var(--input);
821
+ border-radius: 4px;
822
+ background: var(--background);
284
823
  cursor: pointer;
285
- transition: background-color var(--uidex-transition-fast), color var(--uidex-transition-fast);
286
- white-space: nowrap;
824
+ position: relative;
825
+ transition: background-color 0.15s ease-in-out,
826
+ border-color 0.15s ease-in-out;
287
827
  }
288
828
 
289
- .uidex-modal-copy:hover {
290
- background: var(--uidex-color-surface-hover);
291
- color: var(--uidex-color-text-strong);
829
+ .uidex-toggle-checkbox:checked,
830
+ .uidex-checklist-checkbox:checked {
831
+ background: var(--primary);
832
+ border-color: var(--primary);
292
833
  }
293
834
 
294
- .uidex-modal-copy:active {
295
- transform: translateY(1px);
835
+ .uidex-toggle-checkbox:checked::after,
836
+ .uidex-checklist-checkbox:checked::after {
837
+ content: '';
838
+ position: absolute;
839
+ inset: 0;
840
+ background: var(--primary-foreground);
841
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.252 12.7 10.2 18.63 18.748 5.37'/%3E%3C/svg%3E");
842
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5.252 12.7 10.2 18.63 18.748 5.37'/%3E%3C/svg%3E");
843
+ -webkit-mask-size: 12px;
844
+ mask-size: 12px;
845
+ -webkit-mask-repeat: no-repeat;
846
+ mask-repeat: no-repeat;
847
+ -webkit-mask-position: center;
848
+ mask-position: center;
296
849
  }
297
850
 
298
- .uidex-modal-env-item {
299
- font-size: var(--uidex-font-size-sm);
300
- color: var(--uidex-color-text-secondary);
301
- line-height: 1.6;
851
+ .uidex-toggle-checkbox:focus-visible,
852
+ .uidex-checklist-checkbox:focus-visible {
853
+ outline: 2px solid var(--ring);
854
+ outline-offset: 1px;
302
855
  }
303
856
 
304
- .uidex-empty-message {
305
- padding: 16px 12px;
306
- color: var(--uidex-color-text-muted);
307
- font-size: var(--uidex-font-size-sm);
308
- text-align: center;
857
+ .uidex-toggle-text {
858
+ font-size: 14px;
859
+ line-height: 16px;
860
+ font-weight: 500;
861
+ color: var(--foreground);
309
862
  }
310
863
 
311
- /* ——— Panel layout (sidebar modal) ——— */
312
- .uidex-modal--panel {
313
- width: calc(100vw - 32px);
314
- max-width: 720px;
315
- height: calc(100vh - 64px);
316
- max-height: 600px;
864
+ /* ============================================================
865
+ Section — content grouping
866
+ ============================================================ */
867
+
868
+ .uidex-section {
869
+ margin-bottom: 12px;
870
+ }
871
+
872
+ .uidex-section:last-child {
873
+ margin-bottom: 0;
874
+ }
875
+
876
+ .uidex-section--spaced {
877
+ margin-top: 12px;
878
+ }
879
+
880
+ /* ============================================================
881
+ Container — fixed position for trigger group
882
+ ============================================================ */
883
+
884
+ .uidex-container {
885
+ position: fixed;
886
+ z-index: 2147483644;
887
+ pointer-events: auto;
888
+ font-family: var(--font-sans);
889
+ -webkit-font-smoothing: antialiased;
890
+ -moz-osx-font-smoothing: grayscale;
891
+ }
892
+
893
+ .uidex-bottom-right {
894
+ bottom: 20px;
895
+ right: 20px;
896
+ }
897
+ .uidex-bottom-left {
898
+ bottom: 20px;
899
+ left: 20px;
900
+ }
901
+ .uidex-top-right {
902
+ top: 20px;
903
+ right: 20px;
904
+ }
905
+ .uidex-top-left {
906
+ top: 20px;
907
+ left: 20px;
908
+ }
909
+
910
+ /* ============================================================
911
+ Trigger button group — COSS outline button group
912
+ ============================================================ */
913
+
914
+ .uidex-trigger-group {
915
+ position: relative;
317
916
  display: flex;
318
- flex-direction: column;
917
+ align-items: center;
918
+ border-radius: var(--radius-lg);
919
+ background: var(--popover);
920
+ border: 1px solid var(--input);
319
921
  overflow: hidden;
922
+ user-select: none;
923
+ height: 32px;
924
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
320
925
  }
321
926
 
322
- .uidex-panel-body {
927
+ .uidex-trigger-group::before {
928
+ content: '';
929
+ position: absolute;
930
+ inset: 0;
931
+ pointer-events: none;
932
+ border-radius: calc(var(--radius-lg) - 1px);
933
+ box-shadow: 0 -1px var(--border);
934
+ }
935
+
936
+ .uidex-trigger-btn {
323
937
  display: flex;
324
- flex: 1;
325
- min-height: 0;
938
+ align-items: center;
939
+ justify-content: center;
940
+ gap: 6px;
941
+ height: 100%;
942
+ padding: 0 10px;
943
+ border: none;
944
+ background: transparent;
945
+ color: var(--muted-foreground);
946
+ font-size: 14px;
947
+ font-weight: 500;
948
+ font-family: var(--font-sans);
949
+ cursor: pointer;
950
+ outline: none;
951
+ transition:
952
+ background-color 0.2s ease-in-out,
953
+ color 0.2s ease-in-out;
326
954
  }
327
955
 
328
- .uidex-panel-sidebar {
329
- width: 200px;
330
- flex-shrink: 0;
331
- border-right: 1px solid var(--uidex-color-border);
332
- overflow-y: auto;
333
- padding: 0;
334
- scrollbar-width: thin;
335
- scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
956
+ .uidex-trigger-btn:hover {
957
+ background: var(--accent);
958
+ color: var(--foreground);
336
959
  }
337
960
 
338
- .uidex-panel-sidebar::-webkit-scrollbar {
339
- width: 6px;
961
+ .uidex-trigger-btn:active {
962
+ background: var(--input);
340
963
  }
341
964
 
342
- .uidex-panel-sidebar::-webkit-scrollbar-track {
343
- background: transparent;
965
+ .uidex-trigger-btn--active {
966
+ color: var(--foreground);
967
+ background: var(--input);
968
+ }
969
+
970
+ .uidex-trigger-btn--active:hover {
971
+ background: var(--accent);
972
+ }
973
+
974
+ .uidex-trigger-btn:focus-visible {
975
+ outline: 2px solid var(--ring);
976
+ outline-offset: -2px;
977
+ }
978
+
979
+ .uidex-trigger-icon {
980
+ width: 14px;
981
+ height: 14px;
982
+ flex-shrink: 0;
983
+ opacity: 0.8;
984
+ }
985
+
986
+ .uidex-trigger-divider {
987
+ width: 1px;
988
+ height: 16px;
989
+ background: var(--border);
990
+ flex-shrink: 0;
344
991
  }
345
992
 
346
- .uidex-panel-sidebar::-webkit-scrollbar-thumb {
347
- background: rgba(255, 255, 255, 0.1);
348
- border-radius: 0;
993
+ /* Draggable */
994
+ .uidex-container--dragging {
995
+ transition: none !important;
349
996
  }
350
997
 
351
- .uidex-panel-main {
352
- flex: 1;
353
- min-width: 0;
354
- overflow-y: auto;
355
- padding: 16px 20px;
356
- scrollbar-width: thin;
357
- scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
998
+ .uidex-container--dragging .uidex-trigger-btn {
999
+ cursor: grabbing !important;
358
1000
  }
359
1001
 
360
- .uidex-panel-main::-webkit-scrollbar {
361
- width: 6px;
362
- }
1002
+ /* ============================================================
1003
+ Inspect mode cursor
1004
+ ============================================================ */
363
1005
 
364
- .uidex-panel-main::-webkit-scrollbar-track {
365
- background: transparent;
1006
+ body.uidex-inspecting,
1007
+ body.uidex-inspecting * {
1008
+ cursor: crosshair !important;
366
1009
  }
367
1010
 
368
- .uidex-panel-main::-webkit-scrollbar-thumb {
369
- background: rgba(255, 255, 255, 0.1);
370
- border-radius: 0;
371
- }
1011
+ /* ============================================================
1012
+ Sidebar navigation
1013
+ ============================================================ */
372
1014
 
373
- /* ——— Sidebar navigation ——— */
374
1015
  .uidex-sidebar-back {
375
1016
  display: flex;
376
1017
  align-items: center;
377
- gap: 6px;
378
- padding: 6px 8px;
1018
+ gap: 8px;
1019
+ padding: 8px;
379
1020
  margin: 0;
380
- border-bottom: 1px solid var(--uidex-color-border);
381
- font-size: var(--uidex-font-size-sm);
1021
+ border-bottom: 1px solid var(--border);
1022
+ font-size: 14px;
382
1023
  font-weight: 600;
383
- color: var(--uidex-color-text-secondary);
1024
+ color: var(--muted-foreground);
384
1025
  cursor: pointer;
385
- transition: color var(--uidex-transition-fast);
1026
+ transition: color 0.2s ease-in-out;
386
1027
  position: sticky;
387
1028
  top: 0;
388
- background: var(--uidex-color-bg);
1029
+ background: var(--popover);
389
1030
  z-index: 1;
390
1031
  }
391
1032
 
392
1033
  .uidex-sidebar-back:hover {
393
- color: var(--uidex-color-text-strong);
1034
+ color: var(--foreground);
394
1035
  }
395
1036
 
396
- .uidex-sidebar-back-arrow {
397
- font-size: 16px;
398
- line-height: 1;
1037
+ .uidex-sidebar-back-icon {
1038
+ width: 16px;
1039
+ height: 16px;
1040
+ flex-shrink: 0;
399
1041
  }
400
1042
 
401
1043
  .uidex-sidebar-root-item {
402
1044
  display: flex;
403
1045
  align-items: center;
404
- gap: 6px;
405
- padding: 6px 10px;
406
- border-radius: 0;
407
- font-size: var(--uidex-font-size-sm);
1046
+ gap: 8px;
1047
+ padding: 8px;
1048
+ margin: 0 4px;
1049
+ border-radius: var(--radius-lg);
1050
+ min-height: 32px;
1051
+ font-size: 14px;
408
1052
  font-weight: 500;
409
- color: var(--uidex-color-text);
1053
+ color: var(--foreground);
410
1054
  cursor: pointer;
411
- transition: background-color var(--uidex-transition-fast);
1055
+ transition: background-color 0.2s ease-in-out;
412
1056
  }
413
1057
 
414
1058
  .uidex-sidebar-root-item:hover {
415
- background: var(--uidex-color-surface-hover);
1059
+ background: var(--accent);
1060
+ }
1061
+
1062
+ .uidex-sidebar-root-item--active {
1063
+ background: var(--input);
416
1064
  }
417
1065
 
418
1066
  .uidex-sidebar-root-label {
@@ -420,41 +1068,49 @@ body.uidex-inspecting * {
420
1068
  }
421
1069
 
422
1070
  .uidex-sidebar-count {
423
- font-size: var(--uidex-font-size-xs);
424
- color: var(--uidex-color-text-muted);
1071
+ font-size: 12px;
1072
+ color: var(--muted-foreground);
425
1073
  font-weight: 400;
426
1074
  }
427
1075
 
428
1076
  .uidex-sidebar-chevron {
429
1077
  margin-left: auto;
430
- font-size: 16px;
431
- line-height: 1;
432
- color: var(--uidex-color-text-muted);
1078
+ color: var(--muted-foreground);
1079
+ }
1080
+
1081
+ .uidex-sidebar-chevron .uidex-icon {
1082
+ width: 16px;
1083
+ height: 16px;
433
1084
  }
434
1085
 
435
1086
  .uidex-sidebar-item {
436
- padding: 4px 10px;
437
- border-radius: 0;
438
- font-size: var(--uidex-font-size-sm);
439
- color: var(--uidex-color-text);
1087
+ display: flex;
1088
+ align-items: center;
1089
+ padding: 8px;
1090
+ margin: 0 4px;
1091
+ border-radius: var(--radius-lg);
1092
+ min-height: 32px;
1093
+ font-size: 14px;
1094
+ color: var(--foreground);
440
1095
  cursor: pointer;
441
- transition: background-color var(--uidex-transition-fast);
1096
+ transition: background-color 0.2s ease-in-out;
442
1097
  white-space: nowrap;
443
1098
  overflow: hidden;
444
1099
  text-overflow: ellipsis;
445
1100
  }
446
1101
 
447
1102
  .uidex-sidebar-item:hover {
448
- background: var(--uidex-color-surface-hover);
1103
+ background: var(--accent);
449
1104
  }
450
1105
 
451
1106
  .uidex-sidebar-item--active {
452
- background: var(--uidex-color-surface-active);
453
- color: var(--uidex-color-text-strong);
1107
+ background: var(--input);
1108
+ color: var(--foreground);
1109
+ font-weight: 500;
454
1110
  }
455
1111
 
456
1112
  .uidex-sidebar-item--active:hover {
457
- background: var(--uidex-color-surface-active);
1113
+ background: var(--input);
458
1114
  }
459
1115
 
460
1116
  .uidex-sidebar-item--dimmed {
@@ -462,65 +1118,84 @@ body.uidex-inspecting * {
462
1118
  }
463
1119
 
464
1120
  .uidex-sidebar-item--mono {
465
- font-family: var(--uidex-font-mono);
1121
+ font-family: var(--font-mono);
466
1122
  }
467
1123
 
468
1124
  .uidex-sidebar-item--grouped {
469
- padding-left: 24px;
1125
+ padding-left: 28px;
470
1126
  }
471
1127
 
472
1128
  /* Sidebar category colors */
473
1129
  .uidex-sidebar-item--pages.uidex-sidebar-item--active {
474
- color: var(--uidex-color-pages);
1130
+ color: var(--info);
475
1131
  }
476
1132
 
477
1133
  .uidex-sidebar-item--features.uidex-sidebar-item--active {
478
- color: var(--uidex-color-features);
1134
+ color: var(--uidex-feature);
479
1135
  }
480
1136
 
481
1137
  .uidex-sidebar-item--components.uidex-sidebar-item--active {
482
- color: var(--uidex-color-components);
1138
+ color: var(--uidex-component);
1139
+ }
1140
+
1141
+ .uidex-sidebar-item--blocks.uidex-sidebar-item--active {
1142
+ color: var(--uidex-block);
483
1143
  }
484
1144
 
485
1145
  .uidex-sidebar-root-item--pages .uidex-sidebar-root-label {
486
- color: var(--uidex-color-pages);
1146
+ color: var(--info);
487
1147
  }
488
1148
 
489
1149
  .uidex-sidebar-root-item--features .uidex-sidebar-root-label {
490
- color: var(--uidex-color-features);
1150
+ color: var(--uidex-feature);
491
1151
  }
492
1152
 
493
1153
  .uidex-sidebar-root-item--components .uidex-sidebar-root-label {
494
- color: var(--uidex-color-components);
1154
+ color: var(--uidex-component);
1155
+ }
1156
+
1157
+ .uidex-sidebar-root-item--blocks .uidex-sidebar-root-label {
1158
+ color: var(--uidex-block);
495
1159
  }
496
1160
 
497
- /* ——— Sidebar component groups ——— */
1161
+ .uidex-sidebar-item--block {
1162
+ color: var(--uidex-block);
1163
+ font-style: italic;
1164
+ }
1165
+
1166
+ .uidex-sidebar-item--block.uidex-sidebar-item--active {
1167
+ color: var(--uidex-block);
1168
+ }
1169
+
1170
+ /* Sidebar component groups */
498
1171
  .uidex-sidebar-group-header {
499
1172
  display: flex;
500
1173
  align-items: center;
501
- gap: 4px;
502
- padding: 4px 10px;
503
- border-radius: 0;
504
- font-size: var(--uidex-font-size-sm);
1174
+ gap: 8px;
1175
+ padding: 8px;
1176
+ margin: 0 4px;
1177
+ border-radius: var(--radius-lg);
1178
+ min-height: 32px;
1179
+ font-size: 14px;
505
1180
  font-weight: 600;
506
- color: var(--uidex-color-text);
1181
+ color: var(--foreground);
507
1182
  cursor: pointer;
508
- transition: background-color var(--uidex-transition-fast);
1183
+ transition: background-color 0.2s ease-in-out;
509
1184
  user-select: none;
510
1185
  }
511
1186
 
512
1187
  .uidex-sidebar-group-header:hover {
513
- background: var(--uidex-color-surface-hover);
1188
+ background: var(--accent);
514
1189
  }
515
1190
 
516
1191
  .uidex-sidebar-group-chevron {
517
- font-size: 14px;
1192
+ font-size: 16px;
518
1193
  line-height: 1;
519
- color: var(--uidex-color-text-muted);
520
- width: 14px;
1194
+ color: var(--muted-foreground);
1195
+ width: 16px;
521
1196
  text-align: center;
522
1197
  flex-shrink: 0;
523
- transition: transform var(--uidex-transition-normal);
1198
+ transition: transform 0.2s ease-in-out;
524
1199
  transform: rotate(0deg);
525
1200
  }
526
1201
 
@@ -530,95 +1205,46 @@ body.uidex-inspecting * {
530
1205
 
531
1206
  .uidex-sidebar-group-count {
532
1207
  margin-left: auto;
533
- font-size: var(--uidex-font-size-xs);
1208
+ font-size: 12px;
534
1209
  font-weight: 400;
535
- color: var(--uidex-color-text-muted);
536
- }
537
-
538
- /* ——— Search ——— */
539
- .uidex-search-input {
540
- flex: 1;
541
- min-width: 0;
542
- padding: 4px 8px;
543
- border: 1px solid var(--uidex-color-border);
544
- border-radius: 0;
545
- background: transparent;
546
- color: var(--uidex-color-text);
547
- font-size: var(--uidex-font-size-sm);
548
- font-family: var(--uidex-font-mono);
549
- outline: none;
550
- box-sizing: border-box;
551
- }
552
-
553
- .uidex-search-input::placeholder {
554
- color: var(--uidex-color-text-muted);
555
- }
556
-
557
- .uidex-search-input:focus {
558
- border-color: rgba(255, 255, 255, 0.3);
559
- }
560
-
561
- .uidex-search-group-label {
562
- padding: 8px 10px 2px;
563
- font-size: var(--uidex-font-size-xs);
564
- font-weight: 600;
565
- text-transform: uppercase;
566
- letter-spacing: 0.06em;
567
- color: var(--uidex-color-text-muted);
568
- }
569
-
570
- .uidex-search-group-label--pages { color: var(--uidex-color-pages); }
571
- .uidex-search-group-label--features { color: var(--uidex-color-features); }
572
- .uidex-search-group-label--components { color: var(--uidex-color-components); }
573
-
574
- .uidex-search-empty {
575
- padding: 20px 10px;
576
- font-size: var(--uidex-font-size-sm);
577
- color: var(--uidex-color-text-muted);
578
- text-align: center;
1210
+ color: var(--muted-foreground);
579
1211
  }
580
1212
 
581
- .uidex-sidebar-divider {
582
- height: 1px;
583
- background: var(--uidex-color-border);
584
- margin: 4px 10px;
585
- }
1213
+ /* ============================================================
1214
+ Search
1215
+ ============================================================ */
586
1216
 
587
- .uidex-sidebar-root-item--active {
588
- background: var(--uidex-color-surface-active);
589
- }
1217
+ /* ============================================================
1218
+ Main content
1219
+ ============================================================ */
590
1220
 
591
- /* ——— Main content ——— */
592
1221
  .uidex-main-title {
593
1222
  margin: 0 0 8px;
594
- font-size: var(--uidex-font-size-lg);
1223
+ font-size: 20px;
595
1224
  font-weight: 600;
596
- color: var(--uidex-color-text-strong);
1225
+ line-height: 1;
1226
+ color: var(--foreground);
597
1227
  }
598
1228
 
599
1229
  .uidex-main-title--mono {
600
- font-family: var(--uidex-font-mono);
601
- color: var(--uidex-color-text-strong);
602
- }
603
-
604
- .uidex-main-divider {
605
- height: 1px;
606
- background: var(--uidex-color-border);
607
- margin: 16px 0;
1230
+ font-family: var(--font-mono);
608
1231
  }
609
1232
 
610
1233
  .uidex-absent-notice {
611
- font-size: var(--uidex-font-size-sm);
612
- color: var(--uidex-color-text-muted);
1234
+ font-size: 14px;
1235
+ color: var(--muted-foreground);
613
1236
  font-style: italic;
614
1237
  margin-bottom: 12px;
615
1238
  }
616
1239
 
617
- /* ——— Page content in modal ——— */
1240
+ /* ============================================================
1241
+ Page markdown content
1242
+ ============================================================ */
1243
+
618
1244
  .uidex-page-content {
619
- font-size: var(--uidex-font-size-sm);
1245
+ font-size: 14px;
620
1246
  line-height: 1.6;
621
- color: var(--uidex-color-text);
1247
+ color: var(--foreground);
622
1248
  }
623
1249
 
624
1250
  .uidex-page-content h2,
@@ -627,15 +1253,13 @@ body.uidex-inspecting * {
627
1253
  .uidex-page-content h5,
628
1254
  .uidex-page-content h6 {
629
1255
  margin: 12px 0 6px;
630
- font-size: var(--uidex-font-size-sm);
1256
+ font-size: 14px;
631
1257
  font-weight: 600;
632
- color: var(--uidex-color-text-strong);
633
- text-transform: uppercase;
634
- letter-spacing: 0.04em;
1258
+ color: var(--foreground);
635
1259
  }
636
1260
 
637
1261
  .uidex-page-content h2 {
638
- font-size: var(--uidex-font-size-md);
1262
+ font-size: 16px;
639
1263
  }
640
1264
 
641
1265
  .uidex-page-content p {
@@ -653,234 +1277,230 @@ body.uidex-inspecting * {
653
1277
  }
654
1278
 
655
1279
  .uidex-checklist-label {
656
- display: flex;
657
- align-items: baseline;
1280
+ display: inline-flex;
1281
+ align-items: flex-start;
658
1282
  gap: 8px;
659
1283
  cursor: pointer;
1284
+ font-size: 14px;
1285
+ line-height: 16px;
1286
+ font-weight: 500;
1287
+ color: var(--foreground);
660
1288
  }
661
1289
 
662
- .uidex-checklist-checkbox {
663
- flex-shrink: 0;
664
- margin: 0;
665
- accent-color: var(--uidex-color-text-strong);
666
- }
1290
+ /* checkbox styles in shared .uidex-toggle-checkbox / .uidex-checklist-checkbox block above */
667
1291
 
668
- /* ——— Chips ——— */
669
- .uidex-chips {
670
- display: flex;
671
- flex-wrap: wrap;
672
- gap: 4px;
673
- }
1292
+ /* ============================================================
1293
+ Empty state
1294
+ ============================================================ */
674
1295
 
675
- .uidex-chip {
676
- display: inline-block;
677
- padding: 2px 8px;
678
- border-radius: 0;
679
- background: transparent;
680
- border: 1px solid var(--uidex-color-border);
681
- font-family: var(--uidex-font-mono);
682
- font-size: var(--uidex-font-size-xs);
683
- color: var(--uidex-color-text);
684
- transition: background-color var(--uidex-transition-fast);
1296
+ .uidex-empty-message {
1297
+ padding: 16px 12px;
1298
+ color: var(--muted-foreground);
1299
+ font-size: 14px;
1300
+ text-align: center;
685
1301
  }
686
1302
 
687
- .uidex-chip:hover {
688
- background: var(--uidex-color-surface-hover);
689
- }
1303
+ /* ============================================================
1304
+ Input group — mirrors COSS InputGroup (input + inline addon)
1305
+ ============================================================ */
690
1306
 
691
- .uidex-chip--absent {
692
- opacity: 0.4;
1307
+ .uidex-input-group {
1308
+ display: inline-flex;
1309
+ width: 100%;
1310
+ min-width: 0;
1311
+ align-items: center;
1312
+ border-radius: var(--radius-lg);
1313
+ border: 1px solid var(--input);
1314
+ background: var(--background);
1315
+ font-size: 14px;
1316
+ color: var(--foreground);
1317
+ margin-bottom: 6px;
1318
+ box-shadow: 0 -1px var(--border);
693
1319
  }
694
1320
 
695
- .uidex-chip--pages {
696
- color: var(--uidex-color-pages);
697
- border-color: color-mix(in srgb, var(--uidex-color-pages) 30%, transparent);
1321
+ .uidex-input-group:last-child {
1322
+ margin-bottom: 0;
698
1323
  }
699
1324
 
700
- .uidex-chip--features {
701
- color: var(--uidex-color-features);
702
- border-color: color-mix(in srgb, var(--uidex-color-features) 30%, transparent);
1325
+ .uidex-input-group-text {
1326
+ flex: 1;
1327
+ min-width: 0;
1328
+ height: 30px;
1329
+ padding: 0 11px;
1330
+ font-size: 14px;
1331
+ line-height: 30px;
1332
+ word-break: break-all;
1333
+ overflow: hidden;
1334
+ text-overflow: ellipsis;
1335
+ white-space: nowrap;
703
1336
  }
704
1337
 
705
- .uidex-chip--components {
706
- color: var(--uidex-color-components);
707
- border-color: color-mix(in srgb, var(--uidex-color-components) 30%, transparent);
1338
+ .uidex-input-group-addon {
1339
+ display: flex;
1340
+ align-items: center;
1341
+ justify-content: center;
1342
+ padding-right: 7px;
1343
+ flex-shrink: 0;
708
1344
  }
709
1345
 
710
- /* ——— Category badges ——— */
711
- .uidex-badge {
712
- display: inline-block;
713
- padding: 2px 8px;
714
- border-radius: 0;
715
- border: 1px solid var(--uidex-color-border);
716
- background: transparent;
717
- color: var(--uidex-color-text-muted);
718
- font-size: var(--uidex-font-size-xs);
719
- font-weight: 600;
720
- text-transform: uppercase;
721
- letter-spacing: 0.06em;
722
- margin-bottom: 12px;
723
- }
1346
+ /* ============================================================
1347
+ Environment info
1348
+ ============================================================ */
724
1349
 
725
- .uidex-badge--pages {
726
- color: var(--uidex-color-pages);
727
- border-color: color-mix(in srgb, var(--uidex-color-pages) 30%, transparent);
1350
+ .uidex-env-item {
1351
+ font-size: 14px;
1352
+ color: var(--muted-foreground);
1353
+ line-height: 1.6;
728
1354
  }
729
1355
 
730
- .uidex-badge--features {
731
- color: var(--uidex-color-features);
732
- border-color: color-mix(in srgb, var(--uidex-color-features) 30%, transparent);
733
- }
1356
+ /* ============================================================
1357
+ Doc/description text
1358
+ ============================================================ */
734
1359
 
735
- .uidex-badge--components {
736
- color: var(--uidex-color-components);
737
- border-color: color-mix(in srgb, var(--uidex-color-components) 30%, transparent);
1360
+ .uidex-doc {
1361
+ margin: 0;
1362
+ font-size: 14px;
1363
+ line-height: 1.5;
1364
+ color: var(--muted-foreground);
738
1365
  }
739
1366
 
740
- /* ——— Feedback modal ——— */
741
- .uidex-modal--feedback {
742
- width: calc(100vw - 32px);
743
- max-width: 400px;
1367
+ .uidex-doc--spaced {
1368
+ margin-bottom: 12px;
744
1369
  }
745
1370
 
746
- .uidex-modal-code--inline {
747
- border: none;
748
- background: none;
749
- padding: 0;
750
- }
1371
+ /* ============================================================
1372
+ Header spacer (flex grow to push close button right)
1373
+ ============================================================ */
751
1374
 
752
1375
  .uidex-header-spacer {
753
1376
  flex: 1;
754
1377
  }
755
1378
 
756
- .uidex-chips--spaced {
757
- margin-bottom: 8px;
758
- }
759
-
760
- .uidex-modal-doc--spaced {
761
- margin-bottom: 12px;
762
- }
1379
+ /* ============================================================
1380
+ Graph visualization
1381
+ ============================================================ */
763
1382
 
764
- /* ——— Feedback form ——— */
765
- .uidex-form {
766
- display: flex;
767
- flex-direction: column;
768
- gap: 12px;
1383
+ .uidex-graph {
1384
+ margin-top: 8px;
769
1385
  }
770
1386
 
771
- .uidex-form-group {
772
- display: flex;
773
- flex-direction: column;
774
- gap: 4px;
1387
+ .uidex-graph-svg {
1388
+ display: block;
775
1389
  }
776
1390
 
777
- .uidex-form-label {
778
- font-size: var(--uidex-font-size-xs);
1391
+ .uidex-graph-header {
1392
+ font-size: 10px;
779
1393
  font-weight: 600;
780
- text-transform: uppercase;
781
- letter-spacing: 0.06em;
782
- color: var(--uidex-color-text-muted);
783
1394
  }
784
1395
 
785
- .uidex-form-select,
786
- .uidex-form-input,
787
- .uidex-form-textarea {
788
- border: 1px solid var(--uidex-color-border);
789
- border-radius: 0;
790
- background: transparent;
791
- color: var(--uidex-color-text);
792
- font-size: var(--uidex-font-size-sm);
793
- font-family: var(--uidex-font-mono);
794
- outline: none;
1396
+ .uidex-graph-header--pages {
1397
+ fill: var(--info);
795
1398
  }
796
-
797
- .uidex-form-select:focus,
798
- .uidex-form-input:focus,
799
- .uidex-form-textarea:focus {
800
- border-color: rgba(255, 255, 255, 0.3);
1399
+ .uidex-graph-header--features {
1400
+ fill: var(--uidex-feature);
801
1401
  }
802
-
803
- .uidex-form-input::placeholder,
804
- .uidex-form-textarea::placeholder {
805
- color: var(--uidex-color-text-muted);
1402
+ .uidex-graph-header--blocks {
1403
+ fill: var(--uidex-block);
1404
+ }
1405
+ .uidex-graph-header--components {
1406
+ fill: var(--uidex-component);
806
1407
  }
807
1408
 
808
- .uidex-form-select {
809
- appearance: none;
810
- padding: 6px 10px;
1409
+ .uidex-graph-node {
811
1410
  cursor: pointer;
812
- 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='%23ababab' d='M3 5l3 3 3-3'/%3E%3C/svg%3E");
813
- background-repeat: no-repeat;
814
- background-position: right 8px center;
815
- padding-right: 26px;
816
1411
  }
817
1412
 
818
- .uidex-form-input {
819
- padding: 6px 10px;
820
- width: 100%;
821
- box-sizing: border-box;
1413
+ .uidex-graph-node rect {
1414
+ fill: var(--card);
1415
+ stroke: var(--border);
1416
+ stroke-width: 1;
1417
+ rx: 6;
1418
+ ry: 6;
822
1419
  }
823
1420
 
824
- .uidex-form-input + .uidex-form-input {
825
- margin-top: 6px;
1421
+ .uidex-graph-node:hover rect {
1422
+ fill: var(--accent);
1423
+ }
1424
+
1425
+ .uidex-graph-node--page rect {
1426
+ stroke: color-mix(
1427
+ in srgb,
1428
+ var(--info) 50%,
1429
+ transparent
1430
+ );
1431
+ }
1432
+ .uidex-graph-node--feature rect {
1433
+ stroke: color-mix(
1434
+ in srgb,
1435
+ var(--uidex-feature) 50%,
1436
+ transparent
1437
+ );
1438
+ }
1439
+ .uidex-graph-node--block rect {
1440
+ stroke: color-mix(
1441
+ in srgb,
1442
+ var(--uidex-block) 50%,
1443
+ transparent
1444
+ );
1445
+ }
1446
+ .uidex-graph-node--component rect {
1447
+ stroke: color-mix(
1448
+ in srgb,
1449
+ var(--uidex-component) 50%,
1450
+ transparent
1451
+ );
826
1452
  }
827
1453
 
828
- .uidex-form-textarea {
829
- padding: 8px 10px;
830
- line-height: 1.5;
831
- resize: vertical;
832
- min-height: 80px;
1454
+ .uidex-graph-label {
1455
+ font-size: 10px;
1456
+ font-family: var(--font-mono);
1457
+ fill: var(--foreground);
833
1458
  }
834
1459
 
835
- .uidex-form-submit {
836
- padding: 6px 16px;
837
- border: 1px solid var(--uidex-color-border);
838
- border-radius: 0;
839
- background: var(--uidex-color-primary);
840
- color: var(--uidex-color-bg);
841
- font-size: var(--uidex-font-size-sm);
842
- font-weight: 600;
843
- font-family: var(--uidex-font-mono);
844
- cursor: pointer;
845
- transition: background-color var(--uidex-transition-fast);
846
- align-self: flex-end;
1460
+ .uidex-graph-edge {
1461
+ fill: none;
1462
+ stroke-width: 1;
1463
+ opacity: 0.3;
847
1464
  }
848
1465
 
849
- .uidex-form-submit:hover {
850
- background: var(--uidex-color-primary-hover);
1466
+ .uidex-graph-edge--page {
1467
+ stroke: var(--info);
851
1468
  }
852
-
853
- .uidex-form-submit:not(:disabled):active {
854
- transform: translateY(1px);
1469
+ .uidex-graph-edge--feature {
1470
+ stroke: var(--uidex-feature);
855
1471
  }
856
-
857
- .uidex-form-submit:disabled {
858
- opacity: 0.5;
859
- cursor: default;
1472
+ .uidex-graph-edge--block {
1473
+ stroke: var(--uidex-block);
1474
+ stroke-dasharray: 4 3;
860
1475
  }
861
1476
 
862
- /* ——— Form toggle ——— */
863
- .uidex-form-toggle {
864
- display: flex;
865
- align-items: center;
866
- gap: 8px;
867
- cursor: pointer;
1477
+ .uidex-graph-svg.uidex-graph--hover .uidex-graph-edge {
1478
+ opacity: 0.08;
868
1479
  }
869
-
870
- .uidex-form-checkbox {
871
- flex-shrink: 0;
872
- margin: 0;
873
- accent-color: var(--uidex-color-text-strong);
1480
+ .uidex-graph-svg.uidex-graph--hover .uidex-graph-node {
1481
+ opacity: 0.3;
1482
+ }
1483
+ .uidex-graph-svg.uidex-graph--hover .uidex-graph-edge--highlighted {
1484
+ opacity: 0.6;
1485
+ stroke-width: 1.5;
1486
+ }
1487
+ .uidex-graph-svg.uidex-graph--hover .uidex-graph-node--highlighted {
1488
+ opacity: 1;
874
1489
  }
875
1490
 
876
- .uidex-form-toggle-text {
877
- font-size: var(--uidex-font-size-sm);
878
- color: var(--uidex-color-text-secondary);
1491
+ .uidex-graph-note {
1492
+ font-size: 14px;
1493
+ color: var(--muted-foreground);
1494
+ margin-top: 12px;
1495
+ font-style: italic;
879
1496
  }
880
1497
 
881
- /* ——— Responsive ——— */
1498
+ /* ============================================================
1499
+ Responsive
1500
+ ============================================================ */
1501
+
882
1502
  @media (max-width: 600px) {
883
- .uidex-modal--panel {
1503
+ .uidex-dialog--panel {
884
1504
  width: auto;
885
1505
  }
886
1506
 
@@ -892,78 +1512,16 @@ body.uidex-inspecting * {
892
1512
  width: auto;
893
1513
  max-height: 200px;
894
1514
  border-right: none;
895
- border-bottom: 1px solid var(--uidex-color-border);
1515
+ border-bottom: 1px solid var(--border);
896
1516
  }
897
1517
  }
898
1518
 
899
- /* ——— Graph ——— */
900
- .uidex-graph {
901
- margin-top: 8px;
902
- }
903
-
904
- .uidex-graph-svg {
905
- display: block;
906
- }
907
-
908
- .uidex-graph-header {
909
- font-size: 10px;
910
- font-weight: 600;
911
- letter-spacing: 0.08em;
912
- }
913
-
914
- .uidex-graph-header--pages { fill: var(--uidex-color-pages); }
915
- .uidex-graph-header--features { fill: var(--uidex-color-features); }
916
- .uidex-graph-header--components { fill: var(--uidex-color-components); }
917
-
918
- .uidex-graph-node {
919
- cursor: pointer;
920
- }
921
-
922
- .uidex-graph-node rect {
923
- fill: var(--uidex-color-bg-elevated);
924
- stroke: var(--uidex-color-border);
925
- stroke-width: 1;
926
- }
927
-
928
- .uidex-graph-node:hover rect {
929
- fill: var(--uidex-color-surface-hover);
930
- }
931
-
932
- .uidex-graph-node--page rect { stroke: color-mix(in srgb, var(--uidex-color-pages) 50%, transparent); }
933
- .uidex-graph-node--feature rect { stroke: color-mix(in srgb, var(--uidex-color-features) 50%, transparent); }
934
- .uidex-graph-node--component rect { stroke: color-mix(in srgb, var(--uidex-color-components) 50%, transparent); }
935
-
936
- .uidex-graph-label {
937
- font-size: 10px;
938
- font-family: var(--uidex-font-mono);
939
- fill: var(--uidex-color-text);
940
- }
941
-
942
- .uidex-graph-edge {
943
- fill: none;
944
- stroke-width: 1;
945
- opacity: 0.3;
946
- }
947
-
948
- .uidex-graph-edge--page { stroke: var(--uidex-color-pages); }
949
- .uidex-graph-edge--feature { stroke: var(--uidex-color-features); }
950
-
951
- .uidex-graph-svg.uidex-graph--hover .uidex-graph-edge { opacity: 0.08; }
952
- .uidex-graph-svg.uidex-graph--hover .uidex-graph-node { opacity: 0.3; }
953
- .uidex-graph-svg.uidex-graph--hover .uidex-graph-edge--highlighted { opacity: 0.6; stroke-width: 1.5; }
954
- .uidex-graph-svg.uidex-graph--hover .uidex-graph-node--highlighted { opacity: 1; }
955
-
956
- .uidex-graph-note {
957
- font-size: var(--uidex-font-size-sm);
958
- color: var(--uidex-color-text-muted);
959
- margin-top: 12px;
960
- font-style: italic;
961
- }
1519
+ /* ============================================================
1520
+ Overlay — renders in document.body outside Shadow DOM.
1521
+ All styles set inline in overlay.ts. These classes retained
1522
+ for consumers who import style.css standalone.
1523
+ ============================================================ */
962
1524
 
963
- /* ——— Overlay ———
964
- NOTE: The overlay renders in document.body (outside the Shadow DOM)
965
- so all its styles are set inline in overlay.ts. These CSS classes
966
- are retained only for consumers who import style.css standalone. */
967
1525
  .uidex-overlay {
968
1526
  position: fixed;
969
1527
  pointer-events: none;