@umituz/web-dashboard 6.2.1 → 6.4.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.
@@ -0,0 +1,2526 @@
1
+ :root {
2
+ --udb-font-size-xs: 11px;
3
+ --udb-font-size-sm: 12px;
4
+ --udb-font-size-md: 14px;
5
+ --udb-font-size-lg: 16px;
6
+ --udb-font-size-xl: 20px;
7
+ --udb-font-size-2xl: 24px;
8
+ --udb-font-size-3xl: 30px;
9
+ --udb-font-size-4xl: 36px;
10
+ --udb-space-1: 4px;
11
+ --udb-space-2: 8px;
12
+ --udb-space-3: 12px;
13
+ --udb-space-4: 16px;
14
+ --udb-space-5: 20px;
15
+ --udb-space-6: 24px;
16
+ --udb-space-7: 32px;
17
+ --udb-space-8: 40px;
18
+ --udb-radius-pill: 9999px;
19
+ --udb-border-strong: #cbd5e1;
20
+ --udb-sidebar-width: 240px;
21
+ --udb-sidebar-width-collapsed: 64px;
22
+ --udb-header-height: 56px;
23
+ --udb-sidebar-bg: var(--color-card);
24
+ --udb-sidebar-text: var(--color-foreground);
25
+ --udb-sidebar-muted: var(--color-muted-foreground);
26
+ --udb-sidebar-border: var(--color-border);
27
+ --udb-sidebar-accent: var(--color-muted);
28
+ --udb-sidebar-accent-text: var(--color-foreground);
29
+ }
30
+
31
+ .udb-root,
32
+ .udb-root *,
33
+ .udb-root *::before,
34
+ .udb-root *::after {
35
+ box-sizing: border-box;
36
+ }
37
+ .udb-root {
38
+ font-family: var(--font-sans);
39
+ color: var(--color-foreground);
40
+ background: var(--color-background);
41
+ font-size: var(--udb-font-size-md);
42
+ line-height: 1.5;
43
+ -webkit-font-smoothing: antialiased;
44
+ }
45
+ .udb-sr-only {
46
+ position: absolute;
47
+ width: 1px;
48
+ height: 1px;
49
+ padding: 0;
50
+ margin: -1px;
51
+ overflow: hidden;
52
+ clip: rect(0 0 0 0);
53
+ white-space: nowrap;
54
+ border: 0;
55
+ }
56
+ .udb-stack {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: var(--udb-space-5);
60
+ }
61
+ .udb-row {
62
+ display: flex;
63
+ align-items: center;
64
+ }
65
+ .udb-grid {
66
+ display: grid;
67
+ gap: var(--udb-space-5);
68
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
69
+ }
70
+ .udb-card--sm {
71
+ padding: var(--udb-space-4);
72
+ }
73
+ .udb-card--lg {
74
+ padding: var(--udb-space-8);
75
+ }
76
+ .udb-layout {
77
+ display: flex;
78
+ height: 100vh;
79
+ width: 100%;
80
+ overflow: hidden;
81
+ }
82
+ .udb-layout__sidebar {
83
+ display: none;
84
+ flex-direction: column;
85
+ flex-shrink: 0;
86
+ width: var(--udb-sidebar-width);
87
+ border-right: 1px solid var(--udb-sidebar-border);
88
+ background: var(--udb-sidebar-bg);
89
+ transition: width 0.3s ease;
90
+ }
91
+ .udb-layout__sidebar--collapsed {
92
+ width: var(--udb-sidebar-width-collapsed);
93
+ }
94
+ .udb-layout__mobile {
95
+ position: fixed;
96
+ inset: 0;
97
+ z-index: 50;
98
+ }
99
+ .udb-layout__backdrop {
100
+ position: absolute;
101
+ inset: 0;
102
+ background: rgba(15, 23, 42, 0.45);
103
+ }
104
+ .udb-layout__mobile-sidebar {
105
+ position: absolute;
106
+ left: 0;
107
+ top: 0;
108
+ height: 100%;
109
+ width: var(--udb-sidebar-width);
110
+ border-right: 1px solid var(--udb-sidebar-border);
111
+ background: var(--udb-sidebar-bg);
112
+ box-shadow: var(--shadow-lg);
113
+ }
114
+ .udb-layout__main {
115
+ display: flex;
116
+ flex: 1;
117
+ flex-direction: column;
118
+ overflow: hidden;
119
+ min-width: 0;
120
+ }
121
+ .udb-layout__content {
122
+ flex: 1;
123
+ overflow-y: auto;
124
+ padding: var(--udb-space-4);
125
+ }
126
+ @media (min-width: 768px) {
127
+ .udb-layout__sidebar {
128
+ display: flex;
129
+ }
130
+ .udb-layout__content {
131
+ padding: var(--udb-space-7);
132
+ }
133
+ }
134
+ .udb-page-skeleton {
135
+ margin: 0 auto;
136
+ width: 100%;
137
+ max-width: 1280px;
138
+ display: flex;
139
+ flex-direction: column;
140
+ gap: var(--udb-space-6);
141
+ }
142
+ .udb-skeleton--title {
143
+ height: 32px;
144
+ width: 33%;
145
+ border-radius: var(--radius-lg);
146
+ }
147
+ .udb-skeleton-grid {
148
+ display: grid;
149
+ gap: var(--udb-space-4);
150
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
151
+ }
152
+ .udb-skeleton--card {
153
+ height: 112px;
154
+ border-radius: var(--radius-xl);
155
+ }
156
+ .udb-skeleton--section {
157
+ height: 256px;
158
+ border-radius: var(--radius-xl);
159
+ }
160
+ .udb-sidebar {
161
+ display: flex;
162
+ flex-direction: column;
163
+ height: 100%;
164
+ width: 100%;
165
+ color: var(--udb-sidebar-text);
166
+ }
167
+ .udb-sidebar__brand {
168
+ display: flex;
169
+ height: var(--udb-header-height);
170
+ align-items: center;
171
+ gap: var(--udb-space-3);
172
+ border-bottom: 1px solid var(--udb-sidebar-border);
173
+ padding: 0 var(--udb-space-4);
174
+ }
175
+ .udb-brand-logo {
176
+ flex-shrink: 0;
177
+ }
178
+ .udb-sidebar__brand-text {
179
+ display: flex;
180
+ flex-direction: column;
181
+ min-width: 0;
182
+ }
183
+ .udb-sidebar__brand-name {
184
+ font-size: var(--udb-font-size-2xl);
185
+ font-weight: 900;
186
+ letter-spacing: -0.04em;
187
+ line-height: 1;
188
+ color: var(--udb-sidebar-text);
189
+ }
190
+ .udb-sidebar__brand-tagline {
191
+ margin-top: var(--udb-space-2);
192
+ margin-left: var(--udb-space-1);
193
+ font-size: var(--udb-font-size-xs);
194
+ font-weight: var(--font-weight-bold);
195
+ text-transform: lowercase;
196
+ letter-spacing: -0.02em;
197
+ color: var(--color-primary);
198
+ opacity: 0.75;
199
+ user-select: none;
200
+ }
201
+ .udb-sidebar__create {
202
+ padding: var(--udb-space-4) var(--udb-space-3);
203
+ border-bottom: 1px solid var(--udb-sidebar-border);
204
+ }
205
+ .udb-sidebar__create-btn {
206
+ width: 100%;
207
+ height: 44px;
208
+ justify-content: flex-start;
209
+ padding: 0 var(--udb-space-4);
210
+ border-radius: var(--radius-lg);
211
+ box-shadow: var(--shadow-md);
212
+ }
213
+ .udb-sidebar__create-btn--collapsed {
214
+ width: 40px;
215
+ height: 40px;
216
+ padding: 0;
217
+ margin: 0 auto;
218
+ justify-content: center;
219
+ }
220
+ .udb-sidebar__create-icon {
221
+ width: 16px;
222
+ height: 16px;
223
+ flex-shrink: 0;
224
+ }
225
+ .udb-sidebar__create-label {
226
+ font-weight: var(--font-weight-bold);
227
+ letter-spacing: -0.02em;
228
+ }
229
+ .udb-sidebar__nav {
230
+ flex: 1;
231
+ overflow-y: auto;
232
+ padding: var(--udb-space-3) var(--udb-space-2);
233
+ }
234
+ .udb-sidebar__groups {
235
+ display: flex;
236
+ flex-direction: column;
237
+ gap: var(--udb-space-6);
238
+ }
239
+ .udb-sidebar__group {
240
+ display: flex;
241
+ flex-direction: column;
242
+ gap: var(--udb-space-1);
243
+ }
244
+ .udb-sidebar__group-toggle {
245
+ display: flex;
246
+ width: 100%;
247
+ align-items: center;
248
+ justify-content: space-between;
249
+ margin-bottom: var(--udb-space-1);
250
+ padding: var(--udb-space-2) var(--udb-space-3);
251
+ border: none;
252
+ border-radius: var(--radius-md);
253
+ background: transparent;
254
+ cursor: pointer;
255
+ }
256
+ .udb-sidebar__group-toggle:hover {
257
+ background: var(--udb-sidebar-accent);
258
+ }
259
+ .udb-sidebar__group-title {
260
+ font-size: 10px;
261
+ font-weight: var(--font-weight-bold);
262
+ text-transform: uppercase;
263
+ letter-spacing: 0.12em;
264
+ color: var(--udb-sidebar-muted);
265
+ opacity: 0.75;
266
+ }
267
+ .udb-sidebar__group-chevron {
268
+ display: flex;
269
+ flex-shrink: 0;
270
+ }
271
+ .udb-sidebar__chevron-icon {
272
+ width: 14px;
273
+ height: 14px;
274
+ color: var(--udb-sidebar-muted);
275
+ }
276
+ .udb-sidebar__item {
277
+ display: flex;
278
+ align-items: center;
279
+ gap: var(--udb-space-3);
280
+ padding: 10px var(--udb-space-3);
281
+ border-radius: var(--radius-md);
282
+ font-size: var(--udb-font-size-md);
283
+ font-weight: var(--font-weight-medium);
284
+ color: var(--udb-sidebar-text);
285
+ opacity: 0.75;
286
+ text-decoration: none;
287
+ transition: background-color 0.2s ease, color 0.2s ease;
288
+ }
289
+ .udb-sidebar__item:hover {
290
+ background: var(--udb-sidebar-accent);
291
+ color: var(--udb-sidebar-accent-text);
292
+ opacity: 1;
293
+ }
294
+ .udb-sidebar__item--active {
295
+ background: var(--udb-sidebar-accent);
296
+ color: var(--udb-sidebar-accent-text);
297
+ opacity: 1;
298
+ box-shadow: var(--shadow-sm);
299
+ }
300
+ .udb-sidebar__item-icon {
301
+ width: 16px;
302
+ height: 16px;
303
+ flex-shrink: 0;
304
+ }
305
+ .udb-sidebar--collapsed .udb-sidebar__item {
306
+ justify-content: center;
307
+ }
308
+ .udb-sidebar--collapsed .udb-sidebar__brand,
309
+ .udb-sidebar--collapsed .udb-sidebar__create {
310
+ justify-content: center;
311
+ padding-left: 0;
312
+ padding-right: 0;
313
+ }
314
+ .udb-sidebar__footer {
315
+ border-top: 1px solid var(--udb-sidebar-border);
316
+ padding: var(--udb-space-3);
317
+ display: flex;
318
+ align-items: center;
319
+ justify-content: space-between;
320
+ }
321
+ .udb-sidebar--collapsed .udb-sidebar__footer {
322
+ justify-content: center;
323
+ }
324
+ .udb-sidebar__footer-label {
325
+ padding: 0 var(--udb-space-2);
326
+ font-size: 10px;
327
+ font-weight: var(--font-weight-bold);
328
+ text-transform: uppercase;
329
+ letter-spacing: 0.1em;
330
+ color: var(--udb-sidebar-muted);
331
+ }
332
+ .udb-sidebar__footer-btn {
333
+ color: var(--udb-sidebar-text);
334
+ }
335
+ .udb-sidebar__footer-icon {
336
+ width: 16px;
337
+ height: 16px;
338
+ }
339
+ .udb-header {
340
+ display: flex;
341
+ height: var(--udb-header-height);
342
+ align-items: center;
343
+ justify-content: space-between;
344
+ flex-shrink: 0;
345
+ gap: var(--udb-space-3);
346
+ border-bottom: 1px solid var(--color-border);
347
+ background: var(--color-card);
348
+ padding: 0 var(--udb-space-4);
349
+ z-index: 30;
350
+ }
351
+ .udb-header__lead {
352
+ display: flex;
353
+ align-items: center;
354
+ gap: var(--udb-space-3);
355
+ min-width: 0;
356
+ }
357
+ .udb-header__title {
358
+ margin: 0;
359
+ font-size: var(--udb-font-size-md);
360
+ font-weight: 600;
361
+ color: var(--color-foreground);
362
+ overflow: hidden;
363
+ text-overflow: ellipsis;
364
+ white-space: nowrap;
365
+ }
366
+ .udb-header__mobile-toggle {
367
+ display: inline-flex;
368
+ }
369
+ .udb-header__desktop-toggle {
370
+ display: none;
371
+ }
372
+ @media (min-width: 768px) {
373
+ .udb-header__mobile-toggle {
374
+ display: none;
375
+ }
376
+ .udb-header__desktop-toggle {
377
+ display: inline-flex;
378
+ }
379
+ }
380
+ .udb-header__actions {
381
+ display: flex;
382
+ align-items: center;
383
+ gap: var(--udb-space-2);
384
+ }
385
+ .udb-header__icon-btn {
386
+ height: 36px;
387
+ width: 36px;
388
+ color: var(--color-muted-foreground);
389
+ }
390
+ .udb-header__icon {
391
+ width: 16px;
392
+ height: 16px;
393
+ }
394
+ .udb-header__toggle-icon {
395
+ width: 20px;
396
+ height: 20px;
397
+ }
398
+ .udb-header__anchor {
399
+ position: relative;
400
+ display: inline-flex;
401
+ }
402
+ .udb-header__unread {
403
+ position: absolute;
404
+ top: 6px;
405
+ right: 6px;
406
+ display: flex;
407
+ width: 8px;
408
+ height: 8px;
409
+ }
410
+ .udb-header__unread-core {
411
+ position: relative;
412
+ display: inline-flex;
413
+ width: 8px;
414
+ height: 8px;
415
+ border-radius: 50%;
416
+ background: var(--color-destructive);
417
+ }
418
+ .udb-header__unread-core::before {
419
+ content: "";
420
+ position: absolute;
421
+ inset: 0;
422
+ border-radius: 50%;
423
+ background: var(--color-destructive);
424
+ animation: udb-ping 1.2s cubic-bezier(0, 0, 0.2, 1) infinite;
425
+ }
426
+ @keyframes udb-ping {
427
+ 0% {
428
+ transform: scale(1);
429
+ opacity: 0.7;
430
+ }
431
+ 75%,
432
+ 100% {
433
+ transform: scale(2.2);
434
+ opacity: 0;
435
+ }
436
+ }
437
+ .udb-header__divider {
438
+ width: 1px;
439
+ height: 24px;
440
+ margin: 0 var(--udb-space-1);
441
+ background: var(--color-border);
442
+ }
443
+ .udb-overlay {
444
+ position: fixed;
445
+ inset: 0;
446
+ z-index: 40;
447
+ }
448
+ .udb-menu {
449
+ position: absolute;
450
+ top: 48px;
451
+ right: 0;
452
+ min-width: 224px;
453
+ background: var(--color-card);
454
+ border: 1px solid var(--color-border);
455
+ border-radius: var(--radius-lg);
456
+ box-shadow: var(--shadow-lg);
457
+ overflow: hidden;
458
+ z-index: 50;
459
+ animation: udb-pop 0.18s ease;
460
+ }
461
+ @keyframes udb-pop {
462
+ from {
463
+ opacity: 0;
464
+ transform: scale(0.96) translateY(-4px);
465
+ }
466
+ to {
467
+ opacity: 1;
468
+ transform: none;
469
+ }
470
+ }
471
+ .udb-menu__header {
472
+ display: flex;
473
+ align-items: center;
474
+ justify-content: space-between;
475
+ padding: var(--udb-space-3) var(--udb-space-4);
476
+ border-bottom: 1px solid var(--color-border);
477
+ background: var(--color-muted);
478
+ }
479
+ .udb-menu__heading {
480
+ margin: 0;
481
+ font-size: var(--udb-font-size-sm);
482
+ font-weight: var(--font-weight-bold);
483
+ text-transform: uppercase;
484
+ letter-spacing: 0.08em;
485
+ color: var(--color-foreground);
486
+ }
487
+ .udb-menu__action {
488
+ border: none;
489
+ background: transparent;
490
+ padding: 0;
491
+ font-size: 10px;
492
+ font-weight: var(--font-weight-bold);
493
+ text-transform: uppercase;
494
+ color: var(--color-primary);
495
+ cursor: pointer;
496
+ }
497
+ .udb-menu__action:hover {
498
+ text-decoration: underline;
499
+ }
500
+ .udb-menu__item {
501
+ display: flex;
502
+ width: 100%;
503
+ align-items: center;
504
+ gap: 10px;
505
+ padding: var(--udb-space-2) var(--udb-space-3);
506
+ border: none;
507
+ border-radius: var(--radius-md);
508
+ background: transparent;
509
+ font-family: inherit;
510
+ font-size: var(--udb-font-size-md);
511
+ color: var(--color-foreground);
512
+ cursor: pointer;
513
+ text-align: left;
514
+ }
515
+ .udb-menu__item:hover {
516
+ background: var(--color-muted);
517
+ }
518
+ .udb-menu__item--danger {
519
+ color: var(--color-destructive);
520
+ font-weight: var(--font-weight-medium);
521
+ }
522
+ .udb-menu__item--danger:hover {
523
+ background: var(--color-destructive-soft, color-mix(in srgb, var(--color-destructive, #dc2626) 10%, transparent));
524
+ }
525
+ .udb-menu__item-icon {
526
+ width: 16px;
527
+ height: 16px;
528
+ color: var(--color-muted-foreground);
529
+ flex-shrink: 0;
530
+ }
531
+ .udb-menu__item--danger .udb-menu__item-icon {
532
+ color: var(--color-destructive);
533
+ }
534
+ .udb-notif {
535
+ width: 320px;
536
+ }
537
+ .udb-notif__list {
538
+ max-height: 400px;
539
+ overflow-y: auto;
540
+ }
541
+ .udb-notif__item {
542
+ display: flex;
543
+ align-items: flex-start;
544
+ gap: var(--udb-space-3);
545
+ padding: var(--udb-space-3) var(--udb-space-4);
546
+ border-bottom: 1px solid var(--color-border);
547
+ }
548
+ .udb-notif__item:last-child {
549
+ border-bottom: none;
550
+ }
551
+ .udb-notif__item:hover {
552
+ background: var(--color-muted);
553
+ }
554
+ .udb-notif__item--unread {
555
+ background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
556
+ }
557
+ .udb-notif__body {
558
+ flex: 1;
559
+ min-width: 0;
560
+ }
561
+ .udb-notif__text {
562
+ margin: 0;
563
+ font-size: var(--udb-font-size-md);
564
+ line-height: 1.35;
565
+ color: var(--color-foreground);
566
+ }
567
+ .udb-notif__meta {
568
+ display: flex;
569
+ align-items: center;
570
+ gap: var(--udb-space-1);
571
+ margin: var(--udb-space-1) 0 0;
572
+ font-size: 10px;
573
+ color: var(--color-muted-foreground);
574
+ }
575
+ .udb-notif__dot {
576
+ display: inline-block;
577
+ width: 4px;
578
+ height: 4px;
579
+ border-radius: 50%;
580
+ background: var(--color-muted-foreground);
581
+ opacity: 0.5;
582
+ }
583
+ .udb-notif__dismiss {
584
+ display: flex;
585
+ flex-shrink: 0;
586
+ border: none;
587
+ padding: 0;
588
+ background: transparent;
589
+ color: var(--color-muted-foreground);
590
+ cursor: pointer;
591
+ }
592
+ .udb-notif__dismiss:hover {
593
+ color: var(--color-foreground);
594
+ }
595
+ .udb-notif__dismiss-icon {
596
+ width: 12px;
597
+ height: 12px;
598
+ }
599
+ .udb-notif__empty {
600
+ padding: var(--udb-space-8) var(--udb-space-4);
601
+ text-align: center;
602
+ }
603
+ .udb-notif__empty-icon {
604
+ display: flex;
605
+ width: 40px;
606
+ height: 40px;
607
+ align-items: center;
608
+ justify-content: center;
609
+ margin: 0 auto var(--udb-space-3);
610
+ border-radius: 50%;
611
+ background: var(--color-muted);
612
+ }
613
+ .udb-notif__empty-bell {
614
+ width: 20px;
615
+ height: 20px;
616
+ color: var(--color-muted-foreground);
617
+ opacity: 0.6;
618
+ }
619
+ .udb-notif__empty-text {
620
+ margin: 0;
621
+ font-size: var(--udb-font-size-md);
622
+ color: var(--color-muted-foreground);
623
+ }
624
+ .udb-profile-btn {
625
+ display: flex;
626
+ align-items: center;
627
+ gap: var(--udb-space-2);
628
+ padding: var(--udb-space-1);
629
+ border: none;
630
+ border-radius: var(--udb-radius-pill);
631
+ background: transparent;
632
+ cursor: pointer;
633
+ }
634
+ .udb-profile-btn:hover {
635
+ background: var(--color-muted);
636
+ }
637
+ .udb-avatar {
638
+ display: flex;
639
+ width: 32px;
640
+ height: 32px;
641
+ align-items: center;
642
+ justify-content: center;
643
+ border-radius: 50%;
644
+ border: 1px solid var(--color-primary);
645
+ background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
646
+ color: var(--color-primary);
647
+ font-size: 10px;
648
+ font-weight: var(--font-weight-bold);
649
+ overflow: hidden;
650
+ }
651
+ .udb-avatar__img {
652
+ width: 100%;
653
+ height: 100%;
654
+ object-fit: cover;
655
+ display: block;
656
+ }
657
+ .udb-profile-btn__chevron {
658
+ width: 16px;
659
+ height: 16px;
660
+ color: var(--color-muted-foreground);
661
+ transition: transform 0.2s ease;
662
+ }
663
+ .udb-profile-btn__chevron--open {
664
+ transform: rotate(180deg);
665
+ }
666
+ .udb-profile-menu {
667
+ width: 224px;
668
+ padding: var(--udb-space-2);
669
+ }
670
+ .udb-profile-menu__id {
671
+ padding: var(--udb-space-2) var(--udb-space-3);
672
+ border-bottom: 1px solid var(--color-border);
673
+ margin-bottom: var(--udb-space-1);
674
+ }
675
+ .udb-profile-menu__name {
676
+ margin: 0;
677
+ font-size: var(--udb-font-size-md);
678
+ font-weight: var(--font-weight-bold);
679
+ color: var(--color-foreground);
680
+ }
681
+ .udb-profile-menu__email {
682
+ margin: 0;
683
+ font-size: var(--udb-font-size-sm);
684
+ color: var(--color-muted-foreground);
685
+ overflow: hidden;
686
+ text-overflow: ellipsis;
687
+ white-space: nowrap;
688
+ }
689
+ .udb-profile-menu__items {
690
+ display: flex;
691
+ flex-direction: column;
692
+ }
693
+ .udb-profile-menu__separator {
694
+ height: 1px;
695
+ margin: var(--udb-space-2) 0;
696
+ background: var(--color-border);
697
+ }
698
+ @keyframes udb-spin {
699
+ to {
700
+ transform: rotate(360deg);
701
+ }
702
+ }
703
+ .udb-spin {
704
+ animation: udb-spin 1s linear infinite;
705
+ }
706
+ .udb-settings {
707
+ display: flex;
708
+ width: 100%;
709
+ height: 100vh;
710
+ overflow: hidden;
711
+ background: var(--color-background);
712
+ }
713
+ .udb-settings__sidebar {
714
+ display: none;
715
+ flex-direction: column;
716
+ flex-shrink: 0;
717
+ width: 280px;
718
+ border-right: 1px solid var(--color-border);
719
+ background: var(--color-card);
720
+ transition: width 0.3s ease;
721
+ }
722
+ .udb-settings__sidebar--collapsed {
723
+ width: 72px;
724
+ overflow: hidden;
725
+ }
726
+ .udb-settings__sidebar-header {
727
+ display: flex;
728
+ align-items: center;
729
+ justify-content: space-between;
730
+ gap: var(--udb-space-2);
731
+ padding: var(--udb-space-4);
732
+ border-bottom: 1px solid var(--color-border);
733
+ }
734
+ .udb-settings__sidebar-title {
735
+ margin: 0;
736
+ font-size: var(--udb-font-size-lg);
737
+ font-weight: var(--font-weight-bold);
738
+ color: var(--color-foreground);
739
+ white-space: nowrap;
740
+ overflow: hidden;
741
+ text-overflow: ellipsis;
742
+ }
743
+ .udb-settings__sidebar-toggle {
744
+ display: inline-flex;
745
+ flex-shrink: 0;
746
+ }
747
+ .udb-settings__toggle-icon {
748
+ width: 20px;
749
+ height: 20px;
750
+ }
751
+ .udb-settings__toggle-icon-lg {
752
+ width: 24px;
753
+ height: 24px;
754
+ }
755
+ .udb-settings__nav {
756
+ flex: 1;
757
+ overflow-y: auto;
758
+ padding: var(--udb-space-3) var(--udb-space-2);
759
+ }
760
+ .udb-settings__mobile {
761
+ position: fixed;
762
+ inset: 0;
763
+ z-index: 50;
764
+ }
765
+ .udb-settings__mobile-sidebar {
766
+ position: absolute;
767
+ left: 0;
768
+ top: 0;
769
+ height: 100%;
770
+ width: 280px;
771
+ overflow-y: auto;
772
+ border-right: 1px solid var(--color-border);
773
+ background: var(--color-card);
774
+ box-shadow: var(--shadow-lg);
775
+ }
776
+ .udb-backdrop {
777
+ position: absolute;
778
+ inset: 0;
779
+ background: rgba(15, 23, 42, 0.45);
780
+ }
781
+ .udb-settings__main {
782
+ display: flex;
783
+ flex: 1;
784
+ flex-direction: column;
785
+ overflow: hidden;
786
+ min-width: 0;
787
+ }
788
+ .udb-settings__mobile-header {
789
+ display: flex;
790
+ align-items: center;
791
+ justify-content: space-between;
792
+ gap: var(--udb-space-3);
793
+ padding: var(--udb-space-3) var(--udb-space-4);
794
+ border-bottom: 1px solid var(--color-border);
795
+ background: var(--color-card);
796
+ }
797
+ .udb-settings__mobile-lead {
798
+ display: flex;
799
+ align-items: center;
800
+ gap: var(--udb-space-2);
801
+ min-width: 0;
802
+ }
803
+ .udb-settings__mobile-title {
804
+ margin: 0;
805
+ font-size: var(--udb-font-size-md);
806
+ font-weight: 600;
807
+ color: var(--color-foreground);
808
+ white-space: nowrap;
809
+ overflow: hidden;
810
+ text-overflow: ellipsis;
811
+ }
812
+ .udb-settings__content {
813
+ flex: 1;
814
+ overflow-y: auto;
815
+ padding: var(--udb-space-5) var(--udb-space-4);
816
+ }
817
+ .udb-settings__skeleton {
818
+ display: flex;
819
+ flex-direction: column;
820
+ gap: var(--udb-space-4);
821
+ max-width: 640px;
822
+ }
823
+ .udb-settings__skeleton-list {
824
+ display: flex;
825
+ flex-direction: column;
826
+ gap: var(--udb-space-2);
827
+ }
828
+ .udb-settings__skeleton-row {
829
+ height: 14px;
830
+ width: 100%;
831
+ border-radius: var(--radius-sm);
832
+ }
833
+ @media (min-width: 768px) {
834
+ .udb-settings__sidebar {
835
+ display: flex;
836
+ }
837
+ .udb-settings__mobile,
838
+ .udb-settings__mobile-header {
839
+ display: none;
840
+ }
841
+ .udb-settings__content {
842
+ padding: var(--udb-space-8);
843
+ }
844
+ }
845
+ .udb-settings-nav {
846
+ display: flex;
847
+ flex-direction: column;
848
+ gap: var(--udb-space-5);
849
+ }
850
+ .udb-settings-nav__title {
851
+ margin: 0;
852
+ padding: 0 var(--udb-space-3);
853
+ font-size: 10px;
854
+ font-weight: var(--font-weight-bold);
855
+ text-transform: uppercase;
856
+ letter-spacing: 0.1em;
857
+ color: var(--color-muted-foreground);
858
+ }
859
+ .udb-settings-nav__items {
860
+ display: flex;
861
+ flex-direction: column;
862
+ gap: 2px;
863
+ }
864
+ .udb-settings-nav__item {
865
+ display: flex;
866
+ width: 100%;
867
+ align-items: center;
868
+ gap: var(--udb-space-3);
869
+ padding: var(--udb-space-2) var(--udb-space-3);
870
+ border: none;
871
+ border-radius: var(--radius-md);
872
+ background: transparent;
873
+ font-family: inherit;
874
+ font-size: var(--udb-font-size-md);
875
+ color: var(--color-foreground);
876
+ opacity: 0.75;
877
+ text-align: left;
878
+ text-decoration: none;
879
+ cursor: pointer;
880
+ transition: background-color 0.15s ease, color 0.15s ease;
881
+ }
882
+ .udb-settings-nav__item:hover {
883
+ background: var(--color-muted);
884
+ opacity: 1;
885
+ }
886
+ .udb-settings-nav__item--active {
887
+ background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
888
+ color: var(--color-primary);
889
+ opacity: 1;
890
+ font-weight: var(--font-weight-medium);
891
+ }
892
+ .udb-settings-nav__item-icon {
893
+ width: 16px;
894
+ height: 16px;
895
+ flex-shrink: 0;
896
+ }
897
+ .udb-settings-nav__item-label {
898
+ flex: 1;
899
+ min-width: 0;
900
+ white-space: nowrap;
901
+ overflow: hidden;
902
+ text-overflow: ellipsis;
903
+ }
904
+ .udb-settings-nav__badge {
905
+ padding: 1px var(--udb-space-2);
906
+ border-radius: var(--udb-radius-pill);
907
+ background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
908
+ color: var(--color-primary);
909
+ font-size: 10px;
910
+ font-weight: var(--font-weight-bold);
911
+ }
912
+ .udb-settings-nav__chevron {
913
+ width: 14px;
914
+ height: 14px;
915
+ color: var(--color-muted-foreground);
916
+ flex-shrink: 0;
917
+ }
918
+ .udb-analytics {
919
+ display: flex;
920
+ flex-direction: column;
921
+ gap: var(--udb-space-6);
922
+ width: 100%;
923
+ }
924
+ .udb-analytics__header {
925
+ display: flex;
926
+ align-items: center;
927
+ justify-content: space-between;
928
+ flex-wrap: wrap;
929
+ gap: var(--udb-space-3);
930
+ }
931
+ .udb-analytics__heading {
932
+ min-width: 0;
933
+ }
934
+ .udb-analytics__title {
935
+ margin: 0;
936
+ font-size: var(--udb-font-size-3xl);
937
+ font-weight: var(--font-weight-bold);
938
+ letter-spacing: -0.02em;
939
+ line-height: 1.2;
940
+ color: var(--color-foreground);
941
+ }
942
+ .udb-analytics__description {
943
+ margin: var(--udb-space-1) 0 0;
944
+ font-size: var(--udb-font-size-md);
945
+ color: var(--color-muted-foreground);
946
+ }
947
+ .udb-analytics__actions {
948
+ display: flex;
949
+ align-items: center;
950
+ flex-wrap: wrap;
951
+ gap: var(--udb-space-2);
952
+ }
953
+ .udb-analytics__action-icon {
954
+ width: 16px;
955
+ height: 16px;
956
+ }
957
+ .udb-analytics__loading {
958
+ display: flex;
959
+ align-items: center;
960
+ justify-content: center;
961
+ padding: var(--udb-space-8) 0;
962
+ }
963
+ .udb-analytics__loading-spinner {
964
+ width: 48px;
965
+ height: 48px;
966
+ color: var(--color-muted-foreground);
967
+ }
968
+ .udb-analytics__metrics {
969
+ display: grid;
970
+ grid-template-columns: 1fr;
971
+ gap: var(--udb-space-4);
972
+ }
973
+ .udb-analytics__charts {
974
+ display: grid;
975
+ grid-template-columns: 1fr;
976
+ gap: var(--udb-space-6);
977
+ }
978
+ @media (min-width: 640px) {
979
+ .udb-analytics__metrics {
980
+ grid-template-columns: repeat(2, minmax(0, 1fr));
981
+ }
982
+ }
983
+ @media (min-width: 1024px) {
984
+ .udb-analytics__metrics--wide {
985
+ grid-template-columns: repeat(4, minmax(0, 1fr));
986
+ }
987
+ .udb-analytics__charts {
988
+ grid-template-columns: repeat(2, minmax(0, 1fr));
989
+ }
990
+ }
991
+ .udb-period-select {
992
+ display: flex;
993
+ align-items: center;
994
+ gap: var(--udb-space-2);
995
+ height: 36px;
996
+ padding: 0 var(--udb-space-3);
997
+ border: 1px solid var(--udb-border-strong);
998
+ border-radius: var(--radius-md);
999
+ background: var(--color-card);
1000
+ }
1001
+ .udb-period-select__icon {
1002
+ width: 16px;
1003
+ height: 16px;
1004
+ color: var(--color-muted-foreground);
1005
+ flex-shrink: 0;
1006
+ }
1007
+ .udb-period-select__select {
1008
+ height: 100%;
1009
+ border: none;
1010
+ background: transparent;
1011
+ font-family: inherit;
1012
+ font-size: var(--udb-font-size-sm);
1013
+ color: var(--color-foreground);
1014
+ outline: none;
1015
+ cursor: pointer;
1016
+ }
1017
+ .udb-analytics-card__status {
1018
+ display: flex;
1019
+ align-items: center;
1020
+ justify-content: center;
1021
+ gap: var(--udb-space-3);
1022
+ min-height: 192px;
1023
+ }
1024
+ .udb-analytics-card__status--error {
1025
+ color: var(--color-destructive);
1026
+ }
1027
+ .udb-analytics-card__spinner {
1028
+ width: 32px;
1029
+ height: 32px;
1030
+ color: var(--color-muted-foreground);
1031
+ }
1032
+ .udb-analytics-card__error-icon {
1033
+ width: 20px;
1034
+ height: 20px;
1035
+ flex-shrink: 0;
1036
+ }
1037
+ .udb-analytics-card__error-text {
1038
+ margin: 0;
1039
+ font-size: var(--udb-font-size-md);
1040
+ }
1041
+ .udb-analytics-card__header {
1042
+ margin-bottom: var(--udb-space-6);
1043
+ }
1044
+ .udb-analytics-card__title {
1045
+ margin: 0;
1046
+ font-size: var(--udb-font-size-lg);
1047
+ font-weight: 600;
1048
+ color: var(--color-foreground);
1049
+ }
1050
+ .udb-analytics-card__description {
1051
+ margin: var(--udb-space-1) 0 0;
1052
+ font-size: var(--udb-font-size-sm);
1053
+ color: var(--color-muted-foreground);
1054
+ }
1055
+ .udb-analytics-card__metrics {
1056
+ display: grid;
1057
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1058
+ gap: var(--udb-space-4);
1059
+ margin-top: var(--udb-space-4);
1060
+ }
1061
+ .udb-chart {
1062
+ position: relative;
1063
+ width: 100%;
1064
+ }
1065
+ .udb-chart__empty {
1066
+ display: flex;
1067
+ align-items: center;
1068
+ justify-content: center;
1069
+ height: 100%;
1070
+ min-height: 192px;
1071
+ padding: var(--udb-space-6);
1072
+ text-align: center;
1073
+ font-size: var(--udb-font-size-md);
1074
+ color: var(--color-muted-foreground);
1075
+ }
1076
+ .udb-chart__axis {
1077
+ font-size: var(--udb-font-size-sm);
1078
+ fill: var(--color-muted-foreground);
1079
+ }
1080
+ .udb-chart__grid {
1081
+ stroke: var(--color-border);
1082
+ }
1083
+ .udb-chart__svg {
1084
+ display: block;
1085
+ width: 100%;
1086
+ height: 100%;
1087
+ overflow: visible;
1088
+ }
1089
+ .udb-chart__legend {
1090
+ display: flex;
1091
+ align-items: center;
1092
+ justify-content: center;
1093
+ flex-wrap: wrap;
1094
+ gap: var(--udb-space-3);
1095
+ margin-top: var(--udb-space-3);
1096
+ }
1097
+ .udb-chart__chip {
1098
+ display: inline-flex;
1099
+ align-items: center;
1100
+ gap: var(--udb-space-2);
1101
+ font-size: var(--udb-font-size-sm);
1102
+ color: var(--color-muted-foreground);
1103
+ }
1104
+ .udb-chart__chip-dot {
1105
+ width: 8px;
1106
+ height: 8px;
1107
+ border-radius: 50%;
1108
+ flex-shrink: 0;
1109
+ }
1110
+ .udb-empty {
1111
+ display: flex;
1112
+ flex-direction: column;
1113
+ align-items: center;
1114
+ justify-content: center;
1115
+ gap: var(--udb-space-3);
1116
+ padding: var(--udb-space-8) var(--udb-space-6);
1117
+ text-align: center;
1118
+ color: var(--color-muted-foreground);
1119
+ }
1120
+ .udb-empty__icon {
1121
+ display: flex;
1122
+ align-items: center;
1123
+ justify-content: center;
1124
+ width: 40px;
1125
+ height: 40px;
1126
+ border-radius: 50%;
1127
+ background: var(--color-muted);
1128
+ }
1129
+ .udb-empty__glyph {
1130
+ width: 20px;
1131
+ height: 20px;
1132
+ color: var(--color-muted-foreground);
1133
+ opacity: 0.7;
1134
+ }
1135
+ .udb-empty__text {
1136
+ margin: 0;
1137
+ font-size: var(--udb-font-size-md);
1138
+ font-weight: var(--font-weight-medium);
1139
+ color: var(--color-foreground);
1140
+ }
1141
+ .udb-empty__hint {
1142
+ margin: 0;
1143
+ font-size: var(--udb-font-size-sm);
1144
+ color: var(--color-muted-foreground);
1145
+ }
1146
+ .udb-table__wrap {
1147
+ width: 100%;
1148
+ overflow-x: auto;
1149
+ border: 1px solid var(--color-border);
1150
+ border-radius: var(--radius-lg);
1151
+ background: var(--color-card);
1152
+ }
1153
+ .udb-table {
1154
+ width: 100%;
1155
+ border-collapse: collapse;
1156
+ font-size: var(--udb-font-size-md);
1157
+ }
1158
+ .udb-table__th {
1159
+ padding: var(--udb-space-2) var(--udb-space-3);
1160
+ border-bottom: 1px solid var(--udb-border-strong);
1161
+ text-align: left;
1162
+ font-size: var(--udb-font-size-xs);
1163
+ font-weight: var(--font-weight-bold);
1164
+ text-transform: uppercase;
1165
+ letter-spacing: 0.06em;
1166
+ color: var(--color-muted-foreground);
1167
+ white-space: nowrap;
1168
+ }
1169
+ .udb-table__th--code {
1170
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1171
+ text-transform: none;
1172
+ letter-spacing: 0;
1173
+ }
1174
+ .udb-table__td {
1175
+ padding: var(--udb-space-3);
1176
+ border-bottom: 1px solid var(--color-border);
1177
+ color: var(--color-foreground);
1178
+ }
1179
+ .udb-table__row:last-child .udb-table__td {
1180
+ border-bottom: none;
1181
+ }
1182
+ .udb-table__row:hover .udb-table__td {
1183
+ background: var(--color-muted);
1184
+ }
1185
+ .udb-table__td--strong {
1186
+ font-weight: var(--font-weight-medium);
1187
+ white-space: nowrap;
1188
+ }
1189
+ .udb-table__td--center {
1190
+ text-align: center;
1191
+ }
1192
+ .udb-matrix__cell {
1193
+ display: inline-flex;
1194
+ align-items: center;
1195
+ justify-content: center;
1196
+ width: 28px;
1197
+ height: 28px;
1198
+ border: 1px solid var(--udb-border-strong);
1199
+ border-radius: var(--radius-sm);
1200
+ background: var(--color-card);
1201
+ cursor: pointer;
1202
+ }
1203
+ .udb-matrix__cell:hover {
1204
+ border-color: var(--color-primary);
1205
+ }
1206
+ .udb-matrix__cell--on {
1207
+ border-color: var(--color-primary);
1208
+ background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
1209
+ }
1210
+ .udb-matrix__check {
1211
+ width: 14px;
1212
+ height: 14px;
1213
+ color: var(--color-success);
1214
+ }
1215
+ .udb-matrix__deny {
1216
+ width: 14px;
1217
+ height: 14px;
1218
+ color: var(--color-muted-foreground);
1219
+ opacity: 0.5;
1220
+ }
1221
+ .udb-audit {
1222
+ display: flex;
1223
+ flex-direction: column;
1224
+ margin: 0;
1225
+ padding: 0;
1226
+ list-style: none;
1227
+ border: 1px solid var(--color-border);
1228
+ border-radius: var(--radius-lg);
1229
+ background: var(--color-card);
1230
+ overflow: hidden;
1231
+ }
1232
+ .udb-audit__item {
1233
+ display: flex;
1234
+ align-items: baseline;
1235
+ gap: var(--udb-space-4);
1236
+ padding: var(--udb-space-3) var(--udb-space-4);
1237
+ border-bottom: 1px solid var(--color-border);
1238
+ font-size: var(--udb-font-size-md);
1239
+ }
1240
+ .udb-audit__item:last-child {
1241
+ border-bottom: none;
1242
+ }
1243
+ .udb-audit__at {
1244
+ flex-shrink: 0;
1245
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1246
+ font-size: var(--udb-font-size-sm);
1247
+ color: var(--color-muted-foreground);
1248
+ }
1249
+ .udb-audit__actor {
1250
+ flex-shrink: 0;
1251
+ font-weight: var(--font-weight-medium);
1252
+ color: var(--color-foreground);
1253
+ }
1254
+ .udb-audit__action {
1255
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1256
+ font-size: var(--udb-font-size-sm);
1257
+ color: var(--color-primary);
1258
+ }
1259
+ .udb-audit__target {
1260
+ min-width: 0;
1261
+ overflow: hidden;
1262
+ text-overflow: ellipsis;
1263
+ white-space: nowrap;
1264
+ color: var(--color-muted-foreground);
1265
+ }
1266
+ .udb-chartcard {
1267
+ display: flex;
1268
+ flex-direction: column;
1269
+ min-width: 0;
1270
+ background: var(--color-card);
1271
+ border: 1px solid var(--color-border);
1272
+ border-radius: var(--radius-lg);
1273
+ box-shadow: var(--shadow-sm);
1274
+ }
1275
+ .udb-chartcard__head {
1276
+ display: flex;
1277
+ align-items: flex-start;
1278
+ justify-content: space-between;
1279
+ gap: var(--udb-space-3);
1280
+ padding: 14px 18px 4px;
1281
+ flex-wrap: wrap;
1282
+ }
1283
+ .udb-chartcard__heading {
1284
+ min-width: 0;
1285
+ }
1286
+ .udb-chartcard__title {
1287
+ font-size: var(--udb-font-size-md);
1288
+ font-weight: 600;
1289
+ color: var(--color-foreground);
1290
+ }
1291
+ .udb-chartcard__sub {
1292
+ font-size: var(--udb-font-size-sm);
1293
+ color: var(--color-muted-foreground);
1294
+ margin-top: 1px;
1295
+ }
1296
+ .udb-chartcard__tools {
1297
+ display: flex;
1298
+ align-items: center;
1299
+ gap: 12px;
1300
+ flex-wrap: wrap;
1301
+ }
1302
+ .udb-chartcard__body {
1303
+ padding: 10px 14px 14px;
1304
+ min-width: 0;
1305
+ }
1306
+ .udb-chartcard__body svg {
1307
+ display: block;
1308
+ width: 100%;
1309
+ height: auto;
1310
+ }
1311
+ .udb-chartcard__plot {
1312
+ position: relative;
1313
+ }
1314
+ .udb-chartlegend {
1315
+ display: flex;
1316
+ flex-wrap: wrap;
1317
+ gap: 5px 14px;
1318
+ }
1319
+ .udb-chartlegend__item {
1320
+ display: inline-flex;
1321
+ align-items: center;
1322
+ gap: 6px;
1323
+ font-size: var(--udb-font-size-sm);
1324
+ color: var(--color-foreground);
1325
+ white-space: nowrap;
1326
+ }
1327
+ .udb-chartlegend__dot {
1328
+ width: 8px;
1329
+ height: 8px;
1330
+ border-radius: 2.5px;
1331
+ flex: none;
1332
+ }
1333
+ .udb-chartlegend__value {
1334
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1335
+ color: var(--color-muted-foreground);
1336
+ font-size: var(--udb-font-size-xs);
1337
+ }
1338
+ .udb-chartlegend__hint {
1339
+ color: var(--color-muted-foreground);
1340
+ font-size: var(--udb-font-size-xs);
1341
+ }
1342
+ .udb-charttip {
1343
+ position: absolute;
1344
+ pointer-events: none;
1345
+ background: var(--color-foreground);
1346
+ color: var(--color-background);
1347
+ border-radius: var(--radius-md);
1348
+ padding: 7px 10px;
1349
+ font-size: var(--udb-font-size-sm);
1350
+ box-shadow: var(--shadow-lg);
1351
+ z-index: 30;
1352
+ min-width: 120px;
1353
+ transform: translate(-50%, calc(-100% - 10px));
1354
+ }
1355
+ .udb-charttip__title {
1356
+ font-weight: 600;
1357
+ margin-bottom: 2px;
1358
+ white-space: nowrap;
1359
+ }
1360
+ .udb-charttip__row {
1361
+ display: flex;
1362
+ align-items: center;
1363
+ gap: 6px;
1364
+ justify-content: space-between;
1365
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1366
+ font-size: var(--udb-font-size-xs);
1367
+ }
1368
+ .udb-charttip__row b {
1369
+ font-weight: 600;
1370
+ }
1371
+ .udb-charttip__label {
1372
+ display: inline-flex;
1373
+ align-items: center;
1374
+ gap: 5px;
1375
+ }
1376
+ .udb-hbars {
1377
+ display: flex;
1378
+ flex-direction: column;
1379
+ gap: 10px;
1380
+ }
1381
+ .udb-hbars__row {
1382
+ display: grid;
1383
+ grid-template-columns: minmax(120px, 1.2fr) 2fr auto;
1384
+ align-items: center;
1385
+ gap: 12px;
1386
+ }
1387
+ .udb-hbars__label {
1388
+ min-width: 0;
1389
+ }
1390
+ .udb-hbars__name {
1391
+ font-weight: 600;
1392
+ font-size: var(--udb-font-size-sm);
1393
+ overflow: hidden;
1394
+ text-overflow: ellipsis;
1395
+ white-space: nowrap;
1396
+ color: var(--color-foreground);
1397
+ }
1398
+ .udb-hbars__sub {
1399
+ font-size: var(--udb-font-size-xs);
1400
+ color: var(--color-muted-foreground);
1401
+ }
1402
+ .udb-hbars__track {
1403
+ height: 8px;
1404
+ background: var(--color-border);
1405
+ border-radius: 999px;
1406
+ overflow: hidden;
1407
+ }
1408
+ .udb-hbars__fill {
1409
+ height: 100%;
1410
+ background: var(--color-primary);
1411
+ border-radius: 999px;
1412
+ }
1413
+ .udb-hbars__value {
1414
+ font-size: var(--udb-font-size-sm);
1415
+ color: var(--color-foreground);
1416
+ text-align: right;
1417
+ font-variant-numeric: tabular-nums;
1418
+ }
1419
+ .udb-barchart {
1420
+ position: relative;
1421
+ display: flex;
1422
+ align-items: flex-end;
1423
+ gap: 3px;
1424
+ width: 100%;
1425
+ }
1426
+ .udb-barchart__goal {
1427
+ position: absolute;
1428
+ left: 0;
1429
+ right: 0;
1430
+ z-index: 5;
1431
+ pointer-events: none;
1432
+ border-top: 1.5px dashed var(--udb-chart-goal, #d97706);
1433
+ }
1434
+ .udb-barchart__goallabel {
1435
+ position: absolute;
1436
+ right: 0;
1437
+ bottom: 2px;
1438
+ padding: 0 4px;
1439
+ border: 1px solid var(--udb-chart-goal, #d97706);
1440
+ border-radius: var(--udb-radius-pill);
1441
+ background: var(--color-card);
1442
+ font-size: var(--udb-font-size-xs);
1443
+ line-height: 16px;
1444
+ color: var(--udb-chart-goal, #d97706);
1445
+ }
1446
+ .udb-barchart__col {
1447
+ position: relative;
1448
+ display: flex;
1449
+ flex: 1;
1450
+ align-items: flex-end;
1451
+ min-width: 0;
1452
+ height: 100%;
1453
+ }
1454
+ .udb-barchart__bars {
1455
+ display: flex;
1456
+ align-items: flex-end;
1457
+ justify-content: center;
1458
+ gap: 2px;
1459
+ width: 100%;
1460
+ height: 100%;
1461
+ }
1462
+ .udb-barchart__bars .udb-barchart__bar {
1463
+ flex: 1;
1464
+ width: auto;
1465
+ }
1466
+ .udb-barchart__bar {
1467
+ width: 100%;
1468
+ min-height: 2px;
1469
+ border-radius: 3px 3px 0 0;
1470
+ transition: opacity 150ms ease, height 300ms ease;
1471
+ }
1472
+ .udb-barchart__tip {
1473
+ position: absolute;
1474
+ bottom: calc(100% + 6px);
1475
+ left: 50%;
1476
+ z-index: 10;
1477
+ padding: 4px 8px;
1478
+ white-space: nowrap;
1479
+ pointer-events: none;
1480
+ border: 1px solid var(--color-border);
1481
+ border-radius: var(--radius-sm);
1482
+ background: var(--color-card);
1483
+ box-shadow: var(--shadow-sm);
1484
+ font-size: var(--udb-font-size-xs);
1485
+ color: var(--color-muted-foreground);
1486
+ }
1487
+ .udb-barchart__tiptitle {
1488
+ font-weight: var(--font-weight-medium);
1489
+ color: var(--color-foreground);
1490
+ }
1491
+ .udb-barchart__tiprow {
1492
+ display: flex;
1493
+ align-items: center;
1494
+ justify-content: space-between;
1495
+ gap: 10px;
1496
+ }
1497
+ .udb-barchart__tiplabel {
1498
+ display: inline-flex;
1499
+ align-items: center;
1500
+ gap: 5px;
1501
+ }
1502
+ .udb-barchart__tip b {
1503
+ margin-right: 4px;
1504
+ font-weight: var(--font-weight-medium);
1505
+ color: var(--color-foreground);
1506
+ }
1507
+ .udb-donut {
1508
+ display: flex;
1509
+ align-items: center;
1510
+ gap: 20px;
1511
+ }
1512
+ .udb-donut__wrap {
1513
+ position: relative;
1514
+ flex-shrink: 0;
1515
+ }
1516
+ .udb-donut__seg {
1517
+ cursor: pointer;
1518
+ transition: stroke-width 150ms ease, opacity 150ms ease;
1519
+ }
1520
+ .udb-donut__center {
1521
+ position: absolute;
1522
+ inset: 0;
1523
+ display: flex;
1524
+ flex-direction: column;
1525
+ align-items: center;
1526
+ justify-content: center;
1527
+ }
1528
+ .udb-donut__value {
1529
+ font-size: var(--udb-font-size-lg);
1530
+ font-weight: var(--font-weight-bold);
1531
+ color: var(--color-foreground);
1532
+ font-variant-numeric: tabular-nums;
1533
+ }
1534
+ .udb-donut__label {
1535
+ margin-top: 2px;
1536
+ font-size: var(--udb-font-size-xs);
1537
+ color: var(--color-muted-foreground);
1538
+ }
1539
+ .udb-donut__list {
1540
+ display: flex;
1541
+ min-width: 0;
1542
+ flex: 1;
1543
+ flex-direction: column;
1544
+ gap: 6px;
1545
+ }
1546
+ .udb-donut__item {
1547
+ display: flex;
1548
+ align-items: center;
1549
+ justify-content: space-between;
1550
+ gap: 8px;
1551
+ padding: 4px 6px;
1552
+ border-radius: var(--radius-sm);
1553
+ }
1554
+ .udb-donut__item:hover {
1555
+ background: var(--color-muted);
1556
+ }
1557
+ .udb-donut__itemlabel {
1558
+ display: flex;
1559
+ min-width: 0;
1560
+ align-items: center;
1561
+ gap: 8px;
1562
+ font-size: var(--udb-font-size-sm);
1563
+ color: var(--color-foreground);
1564
+ }
1565
+ .udb-donut__dot {
1566
+ width: 8px;
1567
+ height: 8px;
1568
+ flex-shrink: 0;
1569
+ border-radius: 3px;
1570
+ }
1571
+ .udb-donut__itemvalue {
1572
+ flex-shrink: 0;
1573
+ font-size: var(--udb-font-size-sm);
1574
+ font-weight: var(--font-weight-medium);
1575
+ color: var(--color-foreground);
1576
+ font-variant-numeric: tabular-nums;
1577
+ }
1578
+ .udb-donut__pct {
1579
+ margin-left: 6px;
1580
+ color: var(--color-muted-foreground);
1581
+ }
1582
+ .udb-linechart {
1583
+ position: relative;
1584
+ width: 100%;
1585
+ user-select: none;
1586
+ }
1587
+ .udb-linechart__svg {
1588
+ display: block;
1589
+ width: 100%;
1590
+ }
1591
+ .udb-linechart__axis {
1592
+ fill: var(--color-muted-foreground);
1593
+ font-size: var(--udb-font-size-xs);
1594
+ font-family: var(--font-sans);
1595
+ }
1596
+ .udb-linechart__grid {
1597
+ stroke: var(--color-border);
1598
+ stroke-width: 1;
1599
+ }
1600
+ .udb-linechart__crosshair {
1601
+ stroke: var(--udb-border-strong);
1602
+ stroke-width: 1;
1603
+ stroke-dasharray: 3 3;
1604
+ }
1605
+ .udb-linechart__tip {
1606
+ position: absolute;
1607
+ top: 8px;
1608
+ z-index: 10;
1609
+ min-width: 132px;
1610
+ padding: 8px;
1611
+ pointer-events: none;
1612
+ border: 1px solid var(--color-border);
1613
+ border-radius: var(--radius-md);
1614
+ background: var(--color-card);
1615
+ box-shadow: var(--shadow-md);
1616
+ }
1617
+ .udb-linechart__tiptitle {
1618
+ margin-bottom: 4px;
1619
+ font-size: var(--udb-font-size-xs);
1620
+ color: var(--color-muted-foreground);
1621
+ }
1622
+ .udb-linechart__tiprow {
1623
+ display: flex;
1624
+ align-items: center;
1625
+ justify-content: space-between;
1626
+ gap: 12px;
1627
+ font-size: var(--udb-font-size-sm);
1628
+ }
1629
+ .udb-linechart__tiprow span {
1630
+ display: flex;
1631
+ align-items: center;
1632
+ gap: 6px;
1633
+ color: var(--color-muted-foreground);
1634
+ }
1635
+ .udb-linechart__tiprow b {
1636
+ font-weight: var(--font-weight-medium);
1637
+ color: var(--color-foreground);
1638
+ font-variant-numeric: tabular-nums;
1639
+ }
1640
+ .udb-linechart__swatch {
1641
+ display: inline-block;
1642
+ width: 12px;
1643
+ height: 3px;
1644
+ border-radius: 999px;
1645
+ }
1646
+ .udb-linechart__legendhost {
1647
+ margin-top: 4px;
1648
+ padding: 0 8px;
1649
+ }
1650
+ .udb-pageheader__breadcrumbs .udb-pageheader__crumb + .udb-pageheader__crumb::before {
1651
+ content: "/";
1652
+ margin-right: 0.375rem;
1653
+ color: var(--color-muted-foreground);
1654
+ opacity: 0.6;
1655
+ }
1656
+ .udb-pageheader__breadcrumbs a {
1657
+ color: inherit;
1658
+ text-decoration: none;
1659
+ }
1660
+ .udb-pageheader__breadcrumbs a:hover {
1661
+ text-decoration: underline;
1662
+ }
1663
+ .udb-pageheader__breadcrumbs {
1664
+ display: flex;
1665
+ align-items: center;
1666
+ gap: 0.375rem;
1667
+ font-size: 0.8125rem;
1668
+ color: var(--color-muted-foreground);
1669
+ }
1670
+ .udb-pageheader {
1671
+ display: flex;
1672
+ flex-wrap: wrap;
1673
+ align-items: flex-start;
1674
+ justify-content: space-between;
1675
+ gap: 0.75rem;
1676
+ margin-bottom: 1.25rem;
1677
+ }
1678
+ .udb-pageheader__main {
1679
+ min-width: 0;
1680
+ }
1681
+ .udb-pageheader__kicker {
1682
+ margin: 0 0 0.25rem;
1683
+ font-size: 0.6875rem;
1684
+ font-weight: 600;
1685
+ letter-spacing: 0.08em;
1686
+ text-transform: uppercase;
1687
+ color: var(--color-muted-foreground);
1688
+ }
1689
+ .udb-pageheader__title {
1690
+ margin: 0;
1691
+ font-size: 1.375rem;
1692
+ font-weight: 600;
1693
+ line-height: 1.2;
1694
+ letter-spacing: -0.01em;
1695
+ color: var(--color-foreground);
1696
+ }
1697
+ .udb-pageheader__subtitle {
1698
+ margin: 0.25rem 0 0;
1699
+ font-size: 0.875rem;
1700
+ line-height: 1.45;
1701
+ color: var(--color-muted-foreground);
1702
+ }
1703
+ .udb-pageheader__actions {
1704
+ display: flex;
1705
+ flex-wrap: wrap;
1706
+ align-items: center;
1707
+ gap: 0.5rem;
1708
+ }
1709
+
1710
+ .udb-onb,
1711
+ .udb-onb *,
1712
+ .udb-onb *::before,
1713
+ .udb-onb *::after {
1714
+ box-sizing: border-box;
1715
+ }
1716
+ .udb-onb {
1717
+ font-family: var(--font-sans);
1718
+ color: var(--color-foreground);
1719
+ background: var(--color-background);
1720
+ font-size: var(--udb-font-size-md);
1721
+ line-height: 1.5;
1722
+ }
1723
+ .udb-onb h1,
1724
+ .udb-onb h2,
1725
+ .udb-onb h3,
1726
+ .udb-onb p,
1727
+ .udb-onb ul,
1728
+ .udb-onb ol,
1729
+ .udb-onb figure,
1730
+ .udb-onb blockquote,
1731
+ .udb-onb pre {
1732
+ margin: 0;
1733
+ }
1734
+ .udb-onb ul,
1735
+ .udb-onb ol {
1736
+ list-style: none;
1737
+ padding: 0;
1738
+ }
1739
+ .udb-onb button,
1740
+ .udb-onb input,
1741
+ .udb-onb select,
1742
+ .udb-onb textarea {
1743
+ font: inherit;
1744
+ color: inherit;
1745
+ margin: 0;
1746
+ }
1747
+ .udb-onb button {
1748
+ padding: 0;
1749
+ background: none;
1750
+ border: 0;
1751
+ cursor: pointer;
1752
+ }
1753
+ .udb-onb cite {
1754
+ font-style: normal;
1755
+ }
1756
+ .udb-onb img,
1757
+ .udb-onb svg {
1758
+ display: block;
1759
+ max-width: 100%;
1760
+ }
1761
+ .udb-onb svg {
1762
+ flex-shrink: 0;
1763
+ }
1764
+
1765
+ .udb-onb-screen {
1766
+ display: flex;
1767
+ flex-direction: column;
1768
+ gap: var(--udb-space-6);
1769
+ width: 100%;
1770
+ max-width: 42rem;
1771
+ min-height: 100vh;
1772
+ margin-inline: auto;
1773
+ padding: var(--udb-space-6) var(--udb-space-4) var(--udb-space-8);
1774
+ }
1775
+ .udb-onb-screen__header,
1776
+ .udb-onb-screen__footer {
1777
+ display: flex;
1778
+ flex-direction: column;
1779
+ gap: var(--udb-space-3);
1780
+ }
1781
+ .udb-onb-screen__main {
1782
+ display: flex;
1783
+ flex: 1;
1784
+ flex-direction: column;
1785
+ gap: var(--udb-space-6);
1786
+ }
1787
+ @media (min-width: 640px) {
1788
+ .udb-onb-screen {
1789
+ padding-inline: var(--udb-space-6);
1790
+ }
1791
+ }
1792
+
1793
+ .udb-onb-title {
1794
+ font-size: var(--udb-font-size-2xl);
1795
+ font-weight: 600;
1796
+ }
1797
+ .udb-onb-title--display {
1798
+ font-size: var(--udb-font-size-3xl);
1799
+ font-weight: 700;
1800
+ }
1801
+ @media (min-width: 640px) {
1802
+ .udb-onb-title {
1803
+ font-size: var(--udb-font-size-3xl);
1804
+ }
1805
+ .udb-onb-title--display {
1806
+ font-size: var(--udb-font-size-4xl);
1807
+ }
1808
+ }
1809
+ .udb-onb-lead {
1810
+ font-size: var(--udb-font-size-lg);
1811
+ color: var(--color-muted-foreground);
1812
+ }
1813
+
1814
+ .udb-onb-question {
1815
+ display: flex;
1816
+ flex-direction: column;
1817
+ gap: var(--udb-space-6);
1818
+ width: 100%;
1819
+ }
1820
+ .udb-onb-question__head {
1821
+ display: flex;
1822
+ flex-direction: column;
1823
+ gap: var(--udb-space-2);
1824
+ }
1825
+ .udb-onb-question__body {
1826
+ display: flex;
1827
+ flex-direction: column;
1828
+ gap: var(--udb-space-3);
1829
+ }
1830
+
1831
+ .udb-onb-choice {
1832
+ flex: 1;
1833
+ display: inline-flex;
1834
+ align-items: center;
1835
+ justify-content: center;
1836
+ gap: var(--udb-space-2);
1837
+ padding: var(--udb-space-3);
1838
+ border: 2px solid;
1839
+ border-radius: var(--radius-lg);
1840
+ font-size: var(--udb-font-size-lg);
1841
+ font-weight: 600;
1842
+ transition: background-color 0.15s, border-color 0.15s, color 0.15s;
1843
+ }
1844
+ .udb-onb-choice:focus-visible {
1845
+ outline: 2px solid var(--color-primary);
1846
+ outline-offset: 2px;
1847
+ }
1848
+ .udb-onb-choice:disabled {
1849
+ cursor: not-allowed;
1850
+ opacity: 0.6;
1851
+ }
1852
+ .udb-onb-choice--no {
1853
+ border-color: var(--color-destructive);
1854
+ color: var(--color-destructive);
1855
+ }
1856
+ .udb-onb-choice--no:hover:not(:disabled) {
1857
+ background: var(--color-destructive);
1858
+ color: var(--color-white);
1859
+ }
1860
+ .udb-onb-choice--yes {
1861
+ border-color: var(--color-success);
1862
+ color: var(--color-success);
1863
+ }
1864
+ .udb-onb-choice--yes:hover:not(:disabled) {
1865
+ background: var(--color-success);
1866
+ color: var(--color-white);
1867
+ }
1868
+ .udb-onb-link {
1869
+ font-size: var(--udb-font-size-sm);
1870
+ font-weight: 600;
1871
+ color: var(--color-muted-foreground);
1872
+ text-underline-offset: 4px;
1873
+ }
1874
+ .udb-onb-link:hover:not(:disabled) {
1875
+ color: var(--color-foreground);
1876
+ text-decoration: underline;
1877
+ }
1878
+ .udb-onb-link:disabled {
1879
+ cursor: not-allowed;
1880
+ opacity: 0.5;
1881
+ }
1882
+
1883
+ .udb-onb-progress {
1884
+ display: flex;
1885
+ flex-direction: column;
1886
+ gap: var(--udb-space-2);
1887
+ width: 100%;
1888
+ }
1889
+ .udb-onb-progress__meta {
1890
+ display: flex;
1891
+ justify-content: space-between;
1892
+ font-size: var(--udb-font-size-sm);
1893
+ color: var(--color-muted-foreground);
1894
+ }
1895
+
1896
+ .udb-onb-icon {
1897
+ width: 20px;
1898
+ height: 20px;
1899
+ }
1900
+ .udb-onb-icon--xs {
1901
+ width: 14px;
1902
+ height: 14px;
1903
+ }
1904
+ .udb-onb-icon--sm {
1905
+ width: 16px;
1906
+ height: 16px;
1907
+ }
1908
+ .udb-onb-icon--lg {
1909
+ width: 40px;
1910
+ height: 40px;
1911
+ }
1912
+ .udb-onb-icon--xl {
1913
+ width: 48px;
1914
+ height: 48px;
1915
+ }
1916
+
1917
+ .udb-onb-swipe {
1918
+ position: relative;
1919
+ height: 18rem;
1920
+ width: 100%;
1921
+ user-select: none;
1922
+ }
1923
+ .udb-onb-swipe:focus-visible {
1924
+ outline: 2px solid var(--color-primary);
1925
+ outline-offset: 2px;
1926
+ }
1927
+ .udb-onb-swipe__card {
1928
+ display: flex;
1929
+ height: 100%;
1930
+ width: 100%;
1931
+ flex-direction: column;
1932
+ align-items: center;
1933
+ justify-content: center;
1934
+ padding: var(--udb-space-8);
1935
+ border: 1px solid var(--color-border);
1936
+ border-radius: var(--radius-lg);
1937
+ background: var(--color-card);
1938
+ box-shadow: var(--shadow-sm);
1939
+ text-align: center;
1940
+ cursor: grab;
1941
+ }
1942
+ .udb-onb-swipe__card:active {
1943
+ cursor: grabbing;
1944
+ }
1945
+ .udb-onb-swipe__category {
1946
+ margin-bottom: var(--udb-space-4);
1947
+ font-size: var(--udb-font-size-xs);
1948
+ font-weight: 600;
1949
+ text-transform: uppercase;
1950
+ letter-spacing: 0.025em;
1951
+ color: var(--color-primary);
1952
+ }
1953
+ .udb-onb-swipe__text {
1954
+ font-size: var(--udb-font-size-xl);
1955
+ font-weight: 500;
1956
+ }
1957
+ .udb-onb-swipe__hint {
1958
+ margin-top: var(--udb-space-6);
1959
+ font-size: var(--udb-font-size-sm);
1960
+ color: var(--color-muted-foreground);
1961
+ }
1962
+ .udb-onb-swipe__stamp {
1963
+ position: absolute;
1964
+ top: var(--udb-space-4);
1965
+ padding: var(--udb-space-1) var(--udb-space-3);
1966
+ border: 2px solid;
1967
+ border-radius: var(--radius-md);
1968
+ font-size: var(--udb-font-size-sm);
1969
+ font-weight: 700;
1970
+ text-transform: uppercase;
1971
+ pointer-events: none;
1972
+ }
1973
+ .udb-onb-swipe__stamp--no {
1974
+ left: var(--udb-space-4);
1975
+ border-color: var(--color-destructive);
1976
+ color: var(--color-destructive);
1977
+ }
1978
+ .udb-onb-swipe__stamp--yes {
1979
+ right: var(--udb-space-4);
1980
+ border-color: var(--color-success);
1981
+ color: var(--color-success);
1982
+ }
1983
+
1984
+ .udb-onb-stage {
1985
+ display: flex;
1986
+ flex: 1;
1987
+ flex-direction: column;
1988
+ align-items: center;
1989
+ justify-content: center;
1990
+ gap: var(--udb-space-6);
1991
+ text-align: center;
1992
+ }
1993
+ .udb-onb-stage--wide {
1994
+ gap: var(--udb-space-8);
1995
+ }
1996
+ .udb-onb-hero {
1997
+ display: flex;
1998
+ align-items: center;
1999
+ justify-content: center;
2000
+ border-radius: var(--radius-xl);
2001
+ background: var(--color-primary-soft, var(--color-muted));
2002
+ color: var(--color-primary);
2003
+ }
2004
+ .udb-onb-hero--lg {
2005
+ width: 80px;
2006
+ height: 80px;
2007
+ }
2008
+ .udb-onb-hero--xl {
2009
+ width: 96px;
2010
+ height: 96px;
2011
+ }
2012
+
2013
+ .udb-onb-welcome__group {
2014
+ display: flex;
2015
+ flex-direction: column;
2016
+ gap: var(--udb-space-3);
2017
+ }
2018
+ .udb-onb-welcome__title {
2019
+ font-size: var(--udb-font-size-4xl);
2020
+ font-weight: 700;
2021
+ }
2022
+ .udb-onb-welcome__subtitle {
2023
+ font-size: var(--udb-font-size-lg);
2024
+ }
2025
+ .udb-onb-welcome__highlight {
2026
+ font-size: var(--udb-font-size-sm);
2027
+ font-weight: 600;
2028
+ text-transform: uppercase;
2029
+ letter-spacing: 0.025em;
2030
+ color: var(--color-primary);
2031
+ }
2032
+
2033
+ .udb-onb-proof {
2034
+ display: flex;
2035
+ flex: 1;
2036
+ flex-direction: column;
2037
+ gap: var(--udb-space-8);
2038
+ }
2039
+ .udb-onb-proof__stage {
2040
+ display: flex;
2041
+ flex: 1;
2042
+ flex-direction: column;
2043
+ align-items: center;
2044
+ justify-content: center;
2045
+ }
2046
+ .udb-onb-proof__bar {
2047
+ display: flex;
2048
+ align-items: center;
2049
+ justify-content: space-between;
2050
+ gap: var(--udb-space-4);
2051
+ }
2052
+ .udb-onb-proof__nav {
2053
+ display: flex;
2054
+ gap: var(--udb-space-2);
2055
+ }
2056
+ .udb-onb-quote {
2057
+ display: flex;
2058
+ max-width: 36rem;
2059
+ flex-direction: column;
2060
+ align-items: center;
2061
+ gap: var(--udb-space-4);
2062
+ padding: var(--udb-space-8);
2063
+ border: 1px solid var(--color-border);
2064
+ border-radius: var(--radius-lg);
2065
+ background: var(--color-card);
2066
+ text-align: center;
2067
+ }
2068
+ .udb-onb-quote__stars {
2069
+ display: flex;
2070
+ gap: var(--udb-space-1);
2071
+ }
2072
+ .udb-onb-quote__star {
2073
+ width: 20px;
2074
+ height: 20px;
2075
+ color: var(--color-border);
2076
+ }
2077
+ .udb-onb-quote__star--filled {
2078
+ color: var(--color-warning);
2079
+ fill: currentColor;
2080
+ }
2081
+ .udb-onb-quote__content {
2082
+ font-size: var(--udb-font-size-lg);
2083
+ }
2084
+ .udb-onb-quote__footer {
2085
+ display: flex;
2086
+ flex-direction: column;
2087
+ align-items: center;
2088
+ gap: var(--udb-space-1);
2089
+ }
2090
+ .udb-onb-quote__avatar {
2091
+ width: 48px;
2092
+ height: 48px;
2093
+ border-radius: var(--udb-radius-pill);
2094
+ object-fit: cover;
2095
+ }
2096
+ .udb-onb-quote__cite {
2097
+ font-size: var(--udb-font-size-sm);
2098
+ font-weight: 600;
2099
+ }
2100
+ .udb-onb-quote__role {
2101
+ font-size: var(--udb-font-size-sm);
2102
+ color: var(--color-muted-foreground);
2103
+ }
2104
+ .udb-onb-dots {
2105
+ display: flex;
2106
+ gap: 6px;
2107
+ }
2108
+ .udb-onb-dot {
2109
+ width: 8px;
2110
+ height: 8px;
2111
+ border-radius: var(--udb-radius-pill);
2112
+ background: var(--color-border);
2113
+ transition: width 0.2s, background-color 0.2s;
2114
+ }
2115
+ .udb-onb-dot--active {
2116
+ width: var(--udb-space-6);
2117
+ background: var(--color-primary);
2118
+ }
2119
+
2120
+ .udb-onb-solutions {
2121
+ display: flex;
2122
+ flex-direction: column;
2123
+ gap: var(--udb-space-3);
2124
+ }
2125
+ .udb-onb-solution {
2126
+ display: flex;
2127
+ align-items: flex-start;
2128
+ gap: var(--udb-space-3);
2129
+ padding: var(--udb-space-4);
2130
+ border: 1px solid var(--color-border);
2131
+ border-radius: var(--radius-lg);
2132
+ background: var(--color-card);
2133
+ }
2134
+ .udb-onb-solution__icon {
2135
+ margin-top: 2px;
2136
+ color: var(--color-success);
2137
+ }
2138
+ .udb-onb-solution__body {
2139
+ display: flex;
2140
+ flex: 1;
2141
+ flex-direction: column;
2142
+ gap: var(--udb-space-1);
2143
+ }
2144
+ .udb-onb-solution__stat {
2145
+ font-size: var(--udb-font-size-sm);
2146
+ font-weight: 600;
2147
+ color: var(--color-primary);
2148
+ }
2149
+
2150
+ .udb-onb-compare {
2151
+ display: grid;
2152
+ grid-template-columns: 1fr;
2153
+ gap: var(--udb-space-4);
2154
+ }
2155
+ .udb-onb-compare__col {
2156
+ display: flex;
2157
+ flex-direction: column;
2158
+ gap: var(--udb-space-3);
2159
+ padding: var(--udb-space-5);
2160
+ border: 1px solid;
2161
+ border-radius: var(--radius-lg);
2162
+ background: var(--color-card);
2163
+ }
2164
+ .udb-onb-compare__col--pos {
2165
+ border-color: var(--color-success);
2166
+ }
2167
+ .udb-onb-compare__col--neg {
2168
+ border-color: var(--color-destructive);
2169
+ }
2170
+ .udb-onb-compare__heading {
2171
+ font-size: var(--udb-font-size-lg);
2172
+ font-weight: 600;
2173
+ }
2174
+ .udb-onb-compare__item {
2175
+ display: flex;
2176
+ align-items: flex-start;
2177
+ gap: var(--udb-space-2);
2178
+ font-size: var(--udb-font-size-sm);
2179
+ }
2180
+ .udb-onb-compare__icon {
2181
+ margin-top: 2px;
2182
+ }
2183
+ .udb-onb-compare__icon--pos {
2184
+ color: var(--color-success);
2185
+ }
2186
+ .udb-onb-compare__icon--neg {
2187
+ color: var(--color-destructive);
2188
+ }
2189
+ @media (min-width: 640px) {
2190
+ .udb-onb-compare {
2191
+ grid-template-columns: 1fr 1fr;
2192
+ }
2193
+ }
2194
+
2195
+ .udb-onb-prefs {
2196
+ display: flex;
2197
+ flex-direction: column;
2198
+ gap: var(--udb-space-5);
2199
+ }
2200
+ .udb-onb-field {
2201
+ display: flex;
2202
+ flex-direction: column;
2203
+ gap: var(--udb-space-2);
2204
+ }
2205
+ .udb-onb-field__label {
2206
+ font-size: var(--udb-font-size-sm);
2207
+ font-weight: 600;
2208
+ }
2209
+ .udb-onb-select {
2210
+ width: 100%;
2211
+ padding: var(--udb-space-2);
2212
+ border: 1px solid var(--color-border);
2213
+ border-radius: var(--radius-md);
2214
+ background: var(--color-card);
2215
+ font-size: var(--udb-font-size-sm);
2216
+ }
2217
+ .udb-onb-chips {
2218
+ display: flex;
2219
+ flex-wrap: wrap;
2220
+ gap: var(--udb-space-2);
2221
+ }
2222
+ .udb-onb-chip {
2223
+ padding: var(--udb-space-1) var(--udb-space-3);
2224
+ border: 1px solid var(--color-border);
2225
+ border-radius: var(--udb-radius-pill);
2226
+ background: var(--color-card);
2227
+ font-size: var(--udb-font-size-sm);
2228
+ transition: border-color 0.15s, background-color 0.15s;
2229
+ }
2230
+ .udb-onb-chip:hover {
2231
+ border-color: var(--color-primary);
2232
+ }
2233
+ .udb-onb-chip--on {
2234
+ border-color: transparent;
2235
+ background: var(--color-primary);
2236
+ color: var(--color-primary-foreground);
2237
+ }
2238
+ .udb-onb-switch {
2239
+ width: 44px;
2240
+ height: 24px;
2241
+ padding: 2px;
2242
+ border-radius: var(--udb-radius-pill);
2243
+ background: var(--color-border);
2244
+ transition: background-color 0.15s;
2245
+ }
2246
+ .udb-onb-switch--on {
2247
+ background: var(--color-primary);
2248
+ }
2249
+ .udb-onb-switch__thumb {
2250
+ display: block;
2251
+ width: 20px;
2252
+ height: 20px;
2253
+ border-radius: var(--udb-radius-pill);
2254
+ background: var(--color-white);
2255
+ transition: transform 0.15s;
2256
+ }
2257
+ .udb-onb-switch--on .udb-onb-switch__thumb {
2258
+ transform: translateX(20px);
2259
+ }
2260
+ .udb-onb-slider {
2261
+ display: flex;
2262
+ flex-direction: column;
2263
+ gap: var(--udb-space-1);
2264
+ }
2265
+ .udb-onb-slider input[type='range'] {
2266
+ width: 100%;
2267
+ accent-color: var(--color-primary);
2268
+ }
2269
+ .udb-onb-slider__scale {
2270
+ display: flex;
2271
+ justify-content: space-between;
2272
+ font-size: var(--udb-font-size-xs);
2273
+ color: var(--color-muted-foreground);
2274
+ }
2275
+
2276
+ .udb-onb-list {
2277
+ display: flex;
2278
+ flex-direction: column;
2279
+ gap: var(--udb-space-2);
2280
+ }
2281
+ .udb-onb-benefit {
2282
+ display: flex;
2283
+ align-items: flex-start;
2284
+ gap: var(--udb-space-2);
2285
+ padding: var(--udb-space-3);
2286
+ border: 1px solid var(--color-border);
2287
+ border-radius: var(--radius-md);
2288
+ background: var(--color-card);
2289
+ font-size: var(--udb-font-size-sm);
2290
+ }
2291
+ .udb-onb-benefit__dot {
2292
+ width: 8px;
2293
+ height: 8px;
2294
+ margin-top: 5px;
2295
+ flex-shrink: 0;
2296
+ border-radius: var(--udb-radius-pill);
2297
+ background: var(--color-primary);
2298
+ }
2299
+ .udb-onb-error {
2300
+ padding: var(--udb-space-3);
2301
+ border: 1px solid var(--color-destructive);
2302
+ border-radius: var(--radius-md);
2303
+ background: var(--color-destructive-soft, var(--color-muted));
2304
+ font-size: var(--udb-font-size-sm);
2305
+ color: var(--color-destructive);
2306
+ }
2307
+
2308
+ .udb-onb-steps {
2309
+ display: flex;
2310
+ width: 100%;
2311
+ max-width: 28rem;
2312
+ flex-direction: column;
2313
+ gap: var(--udb-space-3);
2314
+ margin-inline: auto;
2315
+ }
2316
+ .udb-onb-step {
2317
+ display: flex;
2318
+ align-items: center;
2319
+ gap: var(--udb-space-3);
2320
+ padding: var(--udb-space-3);
2321
+ border: 1px solid var(--color-border);
2322
+ border-radius: var(--radius-md);
2323
+ background: var(--color-card);
2324
+ font-size: var(--udb-font-size-sm);
2325
+ text-align: left;
2326
+ }
2327
+ .udb-onb-step--done {
2328
+ border-color: var(--color-success);
2329
+ background: var(--color-success-soft, var(--color-muted));
2330
+ }
2331
+ .udb-onb-step--active {
2332
+ border-color: var(--color-primary);
2333
+ background: var(--color-primary-soft, var(--color-muted));
2334
+ }
2335
+ .udb-onb-step__badge {
2336
+ display: flex;
2337
+ align-items: center;
2338
+ justify-content: center;
2339
+ flex-shrink: 0;
2340
+ width: 24px;
2341
+ height: 24px;
2342
+ border-radius: var(--udb-radius-pill);
2343
+ background: var(--color-border);
2344
+ color: var(--color-muted-foreground);
2345
+ font-size: var(--udb-font-size-xs);
2346
+ }
2347
+ .udb-onb-step--done .udb-onb-step__badge {
2348
+ background: var(--color-success);
2349
+ color: var(--color-primary-foreground);
2350
+ }
2351
+ .udb-onb-step--active .udb-onb-step__badge {
2352
+ background: var(--color-primary);
2353
+ color: var(--color-primary-foreground);
2354
+ }
2355
+ .udb-onb-step__pulse {
2356
+ width: 8px;
2357
+ height: 8px;
2358
+ margin-left: auto;
2359
+ border-radius: var(--udb-radius-pill);
2360
+ background: var(--color-primary);
2361
+ animation: udb-onb-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2362
+ }
2363
+ @keyframes udb-onb-pulse {
2364
+ 50% {
2365
+ opacity: 0.5;
2366
+ }
2367
+ }
2368
+
2369
+ .udb-onb-demo {
2370
+ padding: var(--udb-space-4);
2371
+ border: 1px solid var(--color-border);
2372
+ border-radius: var(--radius-lg);
2373
+ background: var(--color-muted);
2374
+ }
2375
+
2376
+ .udb-onb-result {
2377
+ width: 100%;
2378
+ max-width: 28rem;
2379
+ padding: var(--udb-space-6);
2380
+ border: 1px solid var(--color-border);
2381
+ border-radius: var(--radius-lg);
2382
+ background: var(--color-card);
2383
+ text-align: left;
2384
+ }
2385
+ .udb-onb-result__pre {
2386
+ overflow-x: auto;
2387
+ white-space: pre-wrap;
2388
+ font-size: var(--udb-font-size-sm);
2389
+ }
2390
+ .udb-onb-share {
2391
+ display: flex;
2392
+ flex-direction: column;
2393
+ align-items: center;
2394
+ gap: var(--udb-space-1);
2395
+ font-size: var(--udb-font-size-sm);
2396
+ color: var(--color-muted-foreground);
2397
+ }
2398
+
2399
+ .udb-onb-price {
2400
+ padding: var(--udb-space-6);
2401
+ border: 2px solid var(--color-primary);
2402
+ border-radius: var(--radius-lg);
2403
+ background: var(--color-primary-soft, var(--color-muted));
2404
+ text-align: center;
2405
+ }
2406
+ .udb-onb-price__amount {
2407
+ font-size: var(--udb-font-size-3xl);
2408
+ font-weight: 700;
2409
+ color: var(--color-primary);
2410
+ }
2411
+ .udb-onb-price__terms {
2412
+ margin-top: var(--udb-space-1);
2413
+ font-size: var(--udb-font-size-sm);
2414
+ color: var(--color-muted-foreground);
2415
+ }
2416
+ .udb-onb-feature {
2417
+ display: flex;
2418
+ align-items: flex-start;
2419
+ gap: var(--udb-space-3);
2420
+ padding: var(--udb-space-3);
2421
+ border: 1px solid var(--color-border);
2422
+ border-radius: var(--radius-md);
2423
+ background: var(--color-card);
2424
+ font-size: var(--udb-font-size-sm);
2425
+ }
2426
+ .udb-onb-feature--hl {
2427
+ border-color: var(--color-primary);
2428
+ background: var(--color-primary-soft, var(--color-muted));
2429
+ }
2430
+ .udb-onb-feature__icon {
2431
+ margin-top: 2px;
2432
+ color: var(--color-primary);
2433
+ }
2434
+ .udb-onb-note {
2435
+ display: flex;
2436
+ align-items: center;
2437
+ justify-content: center;
2438
+ gap: var(--udb-space-1);
2439
+ font-size: var(--udb-font-size-xs);
2440
+ color: var(--color-muted-foreground);
2441
+ }
2442
+
2443
+ .udb-onb-nav {
2444
+ display: flex;
2445
+ align-items: center;
2446
+ justify-content: space-between;
2447
+ }
2448
+
2449
+ .udb-onb-errorpage {
2450
+ display: flex;
2451
+ width: 100%;
2452
+ max-width: 28rem;
2453
+ min-height: 100vh;
2454
+ flex-direction: column;
2455
+ align-items: center;
2456
+ justify-content: center;
2457
+ gap: var(--udb-space-4);
2458
+ margin-inline: auto;
2459
+ padding: var(--udb-space-6);
2460
+ text-align: center;
2461
+ }
2462
+ .udb-onb-errorpage__icon {
2463
+ display: flex;
2464
+ align-items: center;
2465
+ justify-content: center;
2466
+ width: 64px;
2467
+ height: 64px;
2468
+ border-radius: var(--radius-lg);
2469
+ background: var(--color-destructive-soft, var(--color-muted));
2470
+ color: var(--color-destructive);
2471
+ }
2472
+ .udb-onb-question__head--center {
2473
+ align-items: center;
2474
+ text-align: center;
2475
+ }
2476
+ .udb-onb-palettes {
2477
+ display: grid;
2478
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2479
+ gap: var(--udb-space-2);
2480
+ }
2481
+ @media (min-width: 640px) {
2482
+ .udb-onb-palettes {
2483
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2484
+ }
2485
+ }
2486
+ .udb-onb-palette {
2487
+ padding: var(--udb-space-2);
2488
+ border: 2px solid transparent;
2489
+ border-radius: var(--radius-md);
2490
+ text-align: left;
2491
+ }
2492
+ .udb-onb-palette:hover {
2493
+ border-color: var(--color-border);
2494
+ }
2495
+ .udb-onb-palette--active {
2496
+ border-color: var(--color-primary);
2497
+ }
2498
+ .udb-onb-palette__strip {
2499
+ display: flex;
2500
+ height: 48px;
2501
+ width: 100%;
2502
+ overflow: hidden;
2503
+ border-radius: var(--radius-sm);
2504
+ }
2505
+ .udb-onb-palette__strip--lg {
2506
+ height: 128px;
2507
+ }
2508
+ .udb-onb-palette__chip {
2509
+ flex: 1;
2510
+ }
2511
+ .udb-onb-palette__name {
2512
+ display: block;
2513
+ margin-top: var(--udb-space-1);
2514
+ font-size: var(--udb-font-size-xs);
2515
+ font-weight: 500;
2516
+ }
2517
+ .udb-onb-palette-preview {
2518
+ padding: var(--udb-space-6);
2519
+ border: 1px solid var(--color-border);
2520
+ border-radius: var(--radius-lg);
2521
+ background: var(--color-card);
2522
+ }
2523
+ .udb-onb-palette-preview p {
2524
+ margin-top: var(--udb-space-3);
2525
+ font-size: var(--udb-font-size-sm);
2526
+ }