@umituz/web-dashboard 6.3.0 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2575 @@
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
+ .udb-pageheader__meta {
1710
+ display: flex;
1711
+ flex-wrap: wrap;
1712
+ align-items: center;
1713
+ gap: 0.5rem;
1714
+ margin: 0.5rem 0 0;
1715
+ font-size: 0.75rem;
1716
+ color: var(--color-muted-foreground);
1717
+ }
1718
+
1719
+ .udb-sectionheader {
1720
+ display: flex;
1721
+ flex-wrap: wrap;
1722
+ align-items: flex-start;
1723
+ justify-content: space-between;
1724
+ gap: 0.75rem;
1725
+ margin-bottom: 0.875rem;
1726
+ }
1727
+ .udb-sectionheader__main {
1728
+ min-width: 0;
1729
+ }
1730
+ .udb-sectionheader__kicker {
1731
+ margin: 0 0 0.25rem;
1732
+ font-size: 0.6875rem;
1733
+ font-weight: 600;
1734
+ letter-spacing: 0.08em;
1735
+ text-transform: uppercase;
1736
+ color: var(--color-muted-foreground);
1737
+ }
1738
+ .udb-sectionheader__title {
1739
+ margin: 0;
1740
+ font-size: 1.0625rem;
1741
+ font-weight: 600;
1742
+ line-height: 1.25;
1743
+ letter-spacing: -0.01em;
1744
+ color: var(--color-foreground);
1745
+ }
1746
+ .udb-sectionheader__subtitle {
1747
+ margin: 0.25rem 0 0;
1748
+ font-size: 0.8125rem;
1749
+ line-height: 1.45;
1750
+ color: var(--color-muted-foreground);
1751
+ }
1752
+ .udb-sectionheader__actions {
1753
+ display: flex;
1754
+ flex-wrap: wrap;
1755
+ align-items: center;
1756
+ gap: 0.5rem;
1757
+ }
1758
+
1759
+ .udb-onb,
1760
+ .udb-onb *,
1761
+ .udb-onb *::before,
1762
+ .udb-onb *::after {
1763
+ box-sizing: border-box;
1764
+ }
1765
+ .udb-onb {
1766
+ font-family: var(--font-sans);
1767
+ color: var(--color-foreground);
1768
+ background: var(--color-background);
1769
+ font-size: var(--udb-font-size-md);
1770
+ line-height: 1.5;
1771
+ }
1772
+ .udb-onb h1,
1773
+ .udb-onb h2,
1774
+ .udb-onb h3,
1775
+ .udb-onb p,
1776
+ .udb-onb ul,
1777
+ .udb-onb ol,
1778
+ .udb-onb figure,
1779
+ .udb-onb blockquote,
1780
+ .udb-onb pre {
1781
+ margin: 0;
1782
+ }
1783
+ .udb-onb ul,
1784
+ .udb-onb ol {
1785
+ list-style: none;
1786
+ padding: 0;
1787
+ }
1788
+ .udb-onb button,
1789
+ .udb-onb input,
1790
+ .udb-onb select,
1791
+ .udb-onb textarea {
1792
+ font: inherit;
1793
+ color: inherit;
1794
+ margin: 0;
1795
+ }
1796
+ .udb-onb button {
1797
+ padding: 0;
1798
+ background: none;
1799
+ border: 0;
1800
+ cursor: pointer;
1801
+ }
1802
+ .udb-onb cite {
1803
+ font-style: normal;
1804
+ }
1805
+ .udb-onb img,
1806
+ .udb-onb svg {
1807
+ display: block;
1808
+ max-width: 100%;
1809
+ }
1810
+ .udb-onb svg {
1811
+ flex-shrink: 0;
1812
+ }
1813
+
1814
+ .udb-onb-screen {
1815
+ display: flex;
1816
+ flex-direction: column;
1817
+ gap: var(--udb-space-6);
1818
+ width: 100%;
1819
+ max-width: 42rem;
1820
+ min-height: 100vh;
1821
+ margin-inline: auto;
1822
+ padding: var(--udb-space-6) var(--udb-space-4) var(--udb-space-8);
1823
+ }
1824
+ .udb-onb-screen__header,
1825
+ .udb-onb-screen__footer {
1826
+ display: flex;
1827
+ flex-direction: column;
1828
+ gap: var(--udb-space-3);
1829
+ }
1830
+ .udb-onb-screen__main {
1831
+ display: flex;
1832
+ flex: 1;
1833
+ flex-direction: column;
1834
+ gap: var(--udb-space-6);
1835
+ }
1836
+ @media (min-width: 640px) {
1837
+ .udb-onb-screen {
1838
+ padding-inline: var(--udb-space-6);
1839
+ }
1840
+ }
1841
+
1842
+ .udb-onb-title {
1843
+ font-size: var(--udb-font-size-2xl);
1844
+ font-weight: 600;
1845
+ }
1846
+ .udb-onb-title--display {
1847
+ font-size: var(--udb-font-size-3xl);
1848
+ font-weight: 700;
1849
+ }
1850
+ @media (min-width: 640px) {
1851
+ .udb-onb-title {
1852
+ font-size: var(--udb-font-size-3xl);
1853
+ }
1854
+ .udb-onb-title--display {
1855
+ font-size: var(--udb-font-size-4xl);
1856
+ }
1857
+ }
1858
+ .udb-onb-lead {
1859
+ font-size: var(--udb-font-size-lg);
1860
+ color: var(--color-muted-foreground);
1861
+ }
1862
+
1863
+ .udb-onb-question {
1864
+ display: flex;
1865
+ flex-direction: column;
1866
+ gap: var(--udb-space-6);
1867
+ width: 100%;
1868
+ }
1869
+ .udb-onb-question__head {
1870
+ display: flex;
1871
+ flex-direction: column;
1872
+ gap: var(--udb-space-2);
1873
+ }
1874
+ .udb-onb-question__body {
1875
+ display: flex;
1876
+ flex-direction: column;
1877
+ gap: var(--udb-space-3);
1878
+ }
1879
+
1880
+ .udb-onb-choice {
1881
+ flex: 1;
1882
+ display: inline-flex;
1883
+ align-items: center;
1884
+ justify-content: center;
1885
+ gap: var(--udb-space-2);
1886
+ padding: var(--udb-space-3);
1887
+ border: 2px solid;
1888
+ border-radius: var(--radius-lg);
1889
+ font-size: var(--udb-font-size-lg);
1890
+ font-weight: 600;
1891
+ transition: background-color 0.15s, border-color 0.15s, color 0.15s;
1892
+ }
1893
+ .udb-onb-choice:focus-visible {
1894
+ outline: 2px solid var(--color-primary);
1895
+ outline-offset: 2px;
1896
+ }
1897
+ .udb-onb-choice:disabled {
1898
+ cursor: not-allowed;
1899
+ opacity: 0.6;
1900
+ }
1901
+ .udb-onb-choice--no {
1902
+ border-color: var(--color-destructive);
1903
+ color: var(--color-destructive);
1904
+ }
1905
+ .udb-onb-choice--no:hover:not(:disabled) {
1906
+ background: var(--color-destructive);
1907
+ color: var(--color-white);
1908
+ }
1909
+ .udb-onb-choice--yes {
1910
+ border-color: var(--color-success);
1911
+ color: var(--color-success);
1912
+ }
1913
+ .udb-onb-choice--yes:hover:not(:disabled) {
1914
+ background: var(--color-success);
1915
+ color: var(--color-white);
1916
+ }
1917
+ .udb-onb-link {
1918
+ font-size: var(--udb-font-size-sm);
1919
+ font-weight: 600;
1920
+ color: var(--color-muted-foreground);
1921
+ text-underline-offset: 4px;
1922
+ }
1923
+ .udb-onb-link:hover:not(:disabled) {
1924
+ color: var(--color-foreground);
1925
+ text-decoration: underline;
1926
+ }
1927
+ .udb-onb-link:disabled {
1928
+ cursor: not-allowed;
1929
+ opacity: 0.5;
1930
+ }
1931
+
1932
+ .udb-onb-progress {
1933
+ display: flex;
1934
+ flex-direction: column;
1935
+ gap: var(--udb-space-2);
1936
+ width: 100%;
1937
+ }
1938
+ .udb-onb-progress__meta {
1939
+ display: flex;
1940
+ justify-content: space-between;
1941
+ font-size: var(--udb-font-size-sm);
1942
+ color: var(--color-muted-foreground);
1943
+ }
1944
+
1945
+ .udb-onb-icon {
1946
+ width: 20px;
1947
+ height: 20px;
1948
+ }
1949
+ .udb-onb-icon--xs {
1950
+ width: 14px;
1951
+ height: 14px;
1952
+ }
1953
+ .udb-onb-icon--sm {
1954
+ width: 16px;
1955
+ height: 16px;
1956
+ }
1957
+ .udb-onb-icon--lg {
1958
+ width: 40px;
1959
+ height: 40px;
1960
+ }
1961
+ .udb-onb-icon--xl {
1962
+ width: 48px;
1963
+ height: 48px;
1964
+ }
1965
+
1966
+ .udb-onb-swipe {
1967
+ position: relative;
1968
+ height: 18rem;
1969
+ width: 100%;
1970
+ user-select: none;
1971
+ }
1972
+ .udb-onb-swipe:focus-visible {
1973
+ outline: 2px solid var(--color-primary);
1974
+ outline-offset: 2px;
1975
+ }
1976
+ .udb-onb-swipe__card {
1977
+ display: flex;
1978
+ height: 100%;
1979
+ width: 100%;
1980
+ flex-direction: column;
1981
+ align-items: center;
1982
+ justify-content: center;
1983
+ padding: var(--udb-space-8);
1984
+ border: 1px solid var(--color-border);
1985
+ border-radius: var(--radius-lg);
1986
+ background: var(--color-card);
1987
+ box-shadow: var(--shadow-sm);
1988
+ text-align: center;
1989
+ cursor: grab;
1990
+ }
1991
+ .udb-onb-swipe__card:active {
1992
+ cursor: grabbing;
1993
+ }
1994
+ .udb-onb-swipe__category {
1995
+ margin-bottom: var(--udb-space-4);
1996
+ font-size: var(--udb-font-size-xs);
1997
+ font-weight: 600;
1998
+ text-transform: uppercase;
1999
+ letter-spacing: 0.025em;
2000
+ color: var(--color-primary);
2001
+ }
2002
+ .udb-onb-swipe__text {
2003
+ font-size: var(--udb-font-size-xl);
2004
+ font-weight: 500;
2005
+ }
2006
+ .udb-onb-swipe__hint {
2007
+ margin-top: var(--udb-space-6);
2008
+ font-size: var(--udb-font-size-sm);
2009
+ color: var(--color-muted-foreground);
2010
+ }
2011
+ .udb-onb-swipe__stamp {
2012
+ position: absolute;
2013
+ top: var(--udb-space-4);
2014
+ padding: var(--udb-space-1) var(--udb-space-3);
2015
+ border: 2px solid;
2016
+ border-radius: var(--radius-md);
2017
+ font-size: var(--udb-font-size-sm);
2018
+ font-weight: 700;
2019
+ text-transform: uppercase;
2020
+ pointer-events: none;
2021
+ }
2022
+ .udb-onb-swipe__stamp--no {
2023
+ left: var(--udb-space-4);
2024
+ border-color: var(--color-destructive);
2025
+ color: var(--color-destructive);
2026
+ }
2027
+ .udb-onb-swipe__stamp--yes {
2028
+ right: var(--udb-space-4);
2029
+ border-color: var(--color-success);
2030
+ color: var(--color-success);
2031
+ }
2032
+
2033
+ .udb-onb-stage {
2034
+ display: flex;
2035
+ flex: 1;
2036
+ flex-direction: column;
2037
+ align-items: center;
2038
+ justify-content: center;
2039
+ gap: var(--udb-space-6);
2040
+ text-align: center;
2041
+ }
2042
+ .udb-onb-stage--wide {
2043
+ gap: var(--udb-space-8);
2044
+ }
2045
+ .udb-onb-hero {
2046
+ display: flex;
2047
+ align-items: center;
2048
+ justify-content: center;
2049
+ border-radius: var(--radius-xl);
2050
+ background: var(--color-primary-soft, var(--color-muted));
2051
+ color: var(--color-primary);
2052
+ }
2053
+ .udb-onb-hero--lg {
2054
+ width: 80px;
2055
+ height: 80px;
2056
+ }
2057
+ .udb-onb-hero--xl {
2058
+ width: 96px;
2059
+ height: 96px;
2060
+ }
2061
+
2062
+ .udb-onb-welcome__group {
2063
+ display: flex;
2064
+ flex-direction: column;
2065
+ gap: var(--udb-space-3);
2066
+ }
2067
+ .udb-onb-welcome__title {
2068
+ font-size: var(--udb-font-size-4xl);
2069
+ font-weight: 700;
2070
+ }
2071
+ .udb-onb-welcome__subtitle {
2072
+ font-size: var(--udb-font-size-lg);
2073
+ }
2074
+ .udb-onb-welcome__highlight {
2075
+ font-size: var(--udb-font-size-sm);
2076
+ font-weight: 600;
2077
+ text-transform: uppercase;
2078
+ letter-spacing: 0.025em;
2079
+ color: var(--color-primary);
2080
+ }
2081
+
2082
+ .udb-onb-proof {
2083
+ display: flex;
2084
+ flex: 1;
2085
+ flex-direction: column;
2086
+ gap: var(--udb-space-8);
2087
+ }
2088
+ .udb-onb-proof__stage {
2089
+ display: flex;
2090
+ flex: 1;
2091
+ flex-direction: column;
2092
+ align-items: center;
2093
+ justify-content: center;
2094
+ }
2095
+ .udb-onb-proof__bar {
2096
+ display: flex;
2097
+ align-items: center;
2098
+ justify-content: space-between;
2099
+ gap: var(--udb-space-4);
2100
+ }
2101
+ .udb-onb-proof__nav {
2102
+ display: flex;
2103
+ gap: var(--udb-space-2);
2104
+ }
2105
+ .udb-onb-quote {
2106
+ display: flex;
2107
+ max-width: 36rem;
2108
+ flex-direction: column;
2109
+ align-items: center;
2110
+ gap: var(--udb-space-4);
2111
+ padding: var(--udb-space-8);
2112
+ border: 1px solid var(--color-border);
2113
+ border-radius: var(--radius-lg);
2114
+ background: var(--color-card);
2115
+ text-align: center;
2116
+ }
2117
+ .udb-onb-quote__stars {
2118
+ display: flex;
2119
+ gap: var(--udb-space-1);
2120
+ }
2121
+ .udb-onb-quote__star {
2122
+ width: 20px;
2123
+ height: 20px;
2124
+ color: var(--color-border);
2125
+ }
2126
+ .udb-onb-quote__star--filled {
2127
+ color: var(--color-warning);
2128
+ fill: currentColor;
2129
+ }
2130
+ .udb-onb-quote__content {
2131
+ font-size: var(--udb-font-size-lg);
2132
+ }
2133
+ .udb-onb-quote__footer {
2134
+ display: flex;
2135
+ flex-direction: column;
2136
+ align-items: center;
2137
+ gap: var(--udb-space-1);
2138
+ }
2139
+ .udb-onb-quote__avatar {
2140
+ width: 48px;
2141
+ height: 48px;
2142
+ border-radius: var(--udb-radius-pill);
2143
+ object-fit: cover;
2144
+ }
2145
+ .udb-onb-quote__cite {
2146
+ font-size: var(--udb-font-size-sm);
2147
+ font-weight: 600;
2148
+ }
2149
+ .udb-onb-quote__role {
2150
+ font-size: var(--udb-font-size-sm);
2151
+ color: var(--color-muted-foreground);
2152
+ }
2153
+ .udb-onb-dots {
2154
+ display: flex;
2155
+ gap: 6px;
2156
+ }
2157
+ .udb-onb-dot {
2158
+ width: 8px;
2159
+ height: 8px;
2160
+ border-radius: var(--udb-radius-pill);
2161
+ background: var(--color-border);
2162
+ transition: width 0.2s, background-color 0.2s;
2163
+ }
2164
+ .udb-onb-dot--active {
2165
+ width: var(--udb-space-6);
2166
+ background: var(--color-primary);
2167
+ }
2168
+
2169
+ .udb-onb-solutions {
2170
+ display: flex;
2171
+ flex-direction: column;
2172
+ gap: var(--udb-space-3);
2173
+ }
2174
+ .udb-onb-solution {
2175
+ display: flex;
2176
+ align-items: flex-start;
2177
+ gap: var(--udb-space-3);
2178
+ padding: var(--udb-space-4);
2179
+ border: 1px solid var(--color-border);
2180
+ border-radius: var(--radius-lg);
2181
+ background: var(--color-card);
2182
+ }
2183
+ .udb-onb-solution__icon {
2184
+ margin-top: 2px;
2185
+ color: var(--color-success);
2186
+ }
2187
+ .udb-onb-solution__body {
2188
+ display: flex;
2189
+ flex: 1;
2190
+ flex-direction: column;
2191
+ gap: var(--udb-space-1);
2192
+ }
2193
+ .udb-onb-solution__stat {
2194
+ font-size: var(--udb-font-size-sm);
2195
+ font-weight: 600;
2196
+ color: var(--color-primary);
2197
+ }
2198
+
2199
+ .udb-onb-compare {
2200
+ display: grid;
2201
+ grid-template-columns: 1fr;
2202
+ gap: var(--udb-space-4);
2203
+ }
2204
+ .udb-onb-compare__col {
2205
+ display: flex;
2206
+ flex-direction: column;
2207
+ gap: var(--udb-space-3);
2208
+ padding: var(--udb-space-5);
2209
+ border: 1px solid;
2210
+ border-radius: var(--radius-lg);
2211
+ background: var(--color-card);
2212
+ }
2213
+ .udb-onb-compare__col--pos {
2214
+ border-color: var(--color-success);
2215
+ }
2216
+ .udb-onb-compare__col--neg {
2217
+ border-color: var(--color-destructive);
2218
+ }
2219
+ .udb-onb-compare__heading {
2220
+ font-size: var(--udb-font-size-lg);
2221
+ font-weight: 600;
2222
+ }
2223
+ .udb-onb-compare__item {
2224
+ display: flex;
2225
+ align-items: flex-start;
2226
+ gap: var(--udb-space-2);
2227
+ font-size: var(--udb-font-size-sm);
2228
+ }
2229
+ .udb-onb-compare__icon {
2230
+ margin-top: 2px;
2231
+ }
2232
+ .udb-onb-compare__icon--pos {
2233
+ color: var(--color-success);
2234
+ }
2235
+ .udb-onb-compare__icon--neg {
2236
+ color: var(--color-destructive);
2237
+ }
2238
+ @media (min-width: 640px) {
2239
+ .udb-onb-compare {
2240
+ grid-template-columns: 1fr 1fr;
2241
+ }
2242
+ }
2243
+
2244
+ .udb-onb-prefs {
2245
+ display: flex;
2246
+ flex-direction: column;
2247
+ gap: var(--udb-space-5);
2248
+ }
2249
+ .udb-onb-field {
2250
+ display: flex;
2251
+ flex-direction: column;
2252
+ gap: var(--udb-space-2);
2253
+ }
2254
+ .udb-onb-field__label {
2255
+ font-size: var(--udb-font-size-sm);
2256
+ font-weight: 600;
2257
+ }
2258
+ .udb-onb-select {
2259
+ width: 100%;
2260
+ padding: var(--udb-space-2);
2261
+ border: 1px solid var(--color-border);
2262
+ border-radius: var(--radius-md);
2263
+ background: var(--color-card);
2264
+ font-size: var(--udb-font-size-sm);
2265
+ }
2266
+ .udb-onb-chips {
2267
+ display: flex;
2268
+ flex-wrap: wrap;
2269
+ gap: var(--udb-space-2);
2270
+ }
2271
+ .udb-onb-chip {
2272
+ padding: var(--udb-space-1) var(--udb-space-3);
2273
+ border: 1px solid var(--color-border);
2274
+ border-radius: var(--udb-radius-pill);
2275
+ background: var(--color-card);
2276
+ font-size: var(--udb-font-size-sm);
2277
+ transition: border-color 0.15s, background-color 0.15s;
2278
+ }
2279
+ .udb-onb-chip:hover {
2280
+ border-color: var(--color-primary);
2281
+ }
2282
+ .udb-onb-chip--on {
2283
+ border-color: transparent;
2284
+ background: var(--color-primary);
2285
+ color: var(--color-primary-foreground);
2286
+ }
2287
+ .udb-onb-switch {
2288
+ width: 44px;
2289
+ height: 24px;
2290
+ padding: 2px;
2291
+ border-radius: var(--udb-radius-pill);
2292
+ background: var(--color-border);
2293
+ transition: background-color 0.15s;
2294
+ }
2295
+ .udb-onb-switch--on {
2296
+ background: var(--color-primary);
2297
+ }
2298
+ .udb-onb-switch__thumb {
2299
+ display: block;
2300
+ width: 20px;
2301
+ height: 20px;
2302
+ border-radius: var(--udb-radius-pill);
2303
+ background: var(--color-white);
2304
+ transition: transform 0.15s;
2305
+ }
2306
+ .udb-onb-switch--on .udb-onb-switch__thumb {
2307
+ transform: translateX(20px);
2308
+ }
2309
+ .udb-onb-slider {
2310
+ display: flex;
2311
+ flex-direction: column;
2312
+ gap: var(--udb-space-1);
2313
+ }
2314
+ .udb-onb-slider input[type='range'] {
2315
+ width: 100%;
2316
+ accent-color: var(--color-primary);
2317
+ }
2318
+ .udb-onb-slider__scale {
2319
+ display: flex;
2320
+ justify-content: space-between;
2321
+ font-size: var(--udb-font-size-xs);
2322
+ color: var(--color-muted-foreground);
2323
+ }
2324
+
2325
+ .udb-onb-list {
2326
+ display: flex;
2327
+ flex-direction: column;
2328
+ gap: var(--udb-space-2);
2329
+ }
2330
+ .udb-onb-benefit {
2331
+ display: flex;
2332
+ align-items: flex-start;
2333
+ gap: var(--udb-space-2);
2334
+ padding: var(--udb-space-3);
2335
+ border: 1px solid var(--color-border);
2336
+ border-radius: var(--radius-md);
2337
+ background: var(--color-card);
2338
+ font-size: var(--udb-font-size-sm);
2339
+ }
2340
+ .udb-onb-benefit__dot {
2341
+ width: 8px;
2342
+ height: 8px;
2343
+ margin-top: 5px;
2344
+ flex-shrink: 0;
2345
+ border-radius: var(--udb-radius-pill);
2346
+ background: var(--color-primary);
2347
+ }
2348
+ .udb-onb-error {
2349
+ padding: var(--udb-space-3);
2350
+ border: 1px solid var(--color-destructive);
2351
+ border-radius: var(--radius-md);
2352
+ background: var(--color-destructive-soft, var(--color-muted));
2353
+ font-size: var(--udb-font-size-sm);
2354
+ color: var(--color-destructive);
2355
+ }
2356
+
2357
+ .udb-onb-steps {
2358
+ display: flex;
2359
+ width: 100%;
2360
+ max-width: 28rem;
2361
+ flex-direction: column;
2362
+ gap: var(--udb-space-3);
2363
+ margin-inline: auto;
2364
+ }
2365
+ .udb-onb-step {
2366
+ display: flex;
2367
+ align-items: center;
2368
+ gap: var(--udb-space-3);
2369
+ padding: var(--udb-space-3);
2370
+ border: 1px solid var(--color-border);
2371
+ border-radius: var(--radius-md);
2372
+ background: var(--color-card);
2373
+ font-size: var(--udb-font-size-sm);
2374
+ text-align: left;
2375
+ }
2376
+ .udb-onb-step--done {
2377
+ border-color: var(--color-success);
2378
+ background: var(--color-success-soft, var(--color-muted));
2379
+ }
2380
+ .udb-onb-step--active {
2381
+ border-color: var(--color-primary);
2382
+ background: var(--color-primary-soft, var(--color-muted));
2383
+ }
2384
+ .udb-onb-step__badge {
2385
+ display: flex;
2386
+ align-items: center;
2387
+ justify-content: center;
2388
+ flex-shrink: 0;
2389
+ width: 24px;
2390
+ height: 24px;
2391
+ border-radius: var(--udb-radius-pill);
2392
+ background: var(--color-border);
2393
+ color: var(--color-muted-foreground);
2394
+ font-size: var(--udb-font-size-xs);
2395
+ }
2396
+ .udb-onb-step--done .udb-onb-step__badge {
2397
+ background: var(--color-success);
2398
+ color: var(--color-primary-foreground);
2399
+ }
2400
+ .udb-onb-step--active .udb-onb-step__badge {
2401
+ background: var(--color-primary);
2402
+ color: var(--color-primary-foreground);
2403
+ }
2404
+ .udb-onb-step__pulse {
2405
+ width: 8px;
2406
+ height: 8px;
2407
+ margin-left: auto;
2408
+ border-radius: var(--udb-radius-pill);
2409
+ background: var(--color-primary);
2410
+ animation: udb-onb-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
2411
+ }
2412
+ @keyframes udb-onb-pulse {
2413
+ 50% {
2414
+ opacity: 0.5;
2415
+ }
2416
+ }
2417
+
2418
+ .udb-onb-demo {
2419
+ padding: var(--udb-space-4);
2420
+ border: 1px solid var(--color-border);
2421
+ border-radius: var(--radius-lg);
2422
+ background: var(--color-muted);
2423
+ }
2424
+
2425
+ .udb-onb-result {
2426
+ width: 100%;
2427
+ max-width: 28rem;
2428
+ padding: var(--udb-space-6);
2429
+ border: 1px solid var(--color-border);
2430
+ border-radius: var(--radius-lg);
2431
+ background: var(--color-card);
2432
+ text-align: left;
2433
+ }
2434
+ .udb-onb-result__pre {
2435
+ overflow-x: auto;
2436
+ white-space: pre-wrap;
2437
+ font-size: var(--udb-font-size-sm);
2438
+ }
2439
+ .udb-onb-share {
2440
+ display: flex;
2441
+ flex-direction: column;
2442
+ align-items: center;
2443
+ gap: var(--udb-space-1);
2444
+ font-size: var(--udb-font-size-sm);
2445
+ color: var(--color-muted-foreground);
2446
+ }
2447
+
2448
+ .udb-onb-price {
2449
+ padding: var(--udb-space-6);
2450
+ border: 2px solid var(--color-primary);
2451
+ border-radius: var(--radius-lg);
2452
+ background: var(--color-primary-soft, var(--color-muted));
2453
+ text-align: center;
2454
+ }
2455
+ .udb-onb-price__amount {
2456
+ font-size: var(--udb-font-size-3xl);
2457
+ font-weight: 700;
2458
+ color: var(--color-primary);
2459
+ }
2460
+ .udb-onb-price__terms {
2461
+ margin-top: var(--udb-space-1);
2462
+ font-size: var(--udb-font-size-sm);
2463
+ color: var(--color-muted-foreground);
2464
+ }
2465
+ .udb-onb-feature {
2466
+ display: flex;
2467
+ align-items: flex-start;
2468
+ gap: var(--udb-space-3);
2469
+ padding: var(--udb-space-3);
2470
+ border: 1px solid var(--color-border);
2471
+ border-radius: var(--radius-md);
2472
+ background: var(--color-card);
2473
+ font-size: var(--udb-font-size-sm);
2474
+ }
2475
+ .udb-onb-feature--hl {
2476
+ border-color: var(--color-primary);
2477
+ background: var(--color-primary-soft, var(--color-muted));
2478
+ }
2479
+ .udb-onb-feature__icon {
2480
+ margin-top: 2px;
2481
+ color: var(--color-primary);
2482
+ }
2483
+ .udb-onb-note {
2484
+ display: flex;
2485
+ align-items: center;
2486
+ justify-content: center;
2487
+ gap: var(--udb-space-1);
2488
+ font-size: var(--udb-font-size-xs);
2489
+ color: var(--color-muted-foreground);
2490
+ }
2491
+
2492
+ .udb-onb-nav {
2493
+ display: flex;
2494
+ align-items: center;
2495
+ justify-content: space-between;
2496
+ }
2497
+
2498
+ .udb-onb-errorpage {
2499
+ display: flex;
2500
+ width: 100%;
2501
+ max-width: 28rem;
2502
+ min-height: 100vh;
2503
+ flex-direction: column;
2504
+ align-items: center;
2505
+ justify-content: center;
2506
+ gap: var(--udb-space-4);
2507
+ margin-inline: auto;
2508
+ padding: var(--udb-space-6);
2509
+ text-align: center;
2510
+ }
2511
+ .udb-onb-errorpage__icon {
2512
+ display: flex;
2513
+ align-items: center;
2514
+ justify-content: center;
2515
+ width: 64px;
2516
+ height: 64px;
2517
+ border-radius: var(--radius-lg);
2518
+ background: var(--color-destructive-soft, var(--color-muted));
2519
+ color: var(--color-destructive);
2520
+ }
2521
+ .udb-onb-question__head--center {
2522
+ align-items: center;
2523
+ text-align: center;
2524
+ }
2525
+ .udb-onb-palettes {
2526
+ display: grid;
2527
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2528
+ gap: var(--udb-space-2);
2529
+ }
2530
+ @media (min-width: 640px) {
2531
+ .udb-onb-palettes {
2532
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2533
+ }
2534
+ }
2535
+ .udb-onb-palette {
2536
+ padding: var(--udb-space-2);
2537
+ border: 2px solid transparent;
2538
+ border-radius: var(--radius-md);
2539
+ text-align: left;
2540
+ }
2541
+ .udb-onb-palette:hover {
2542
+ border-color: var(--color-border);
2543
+ }
2544
+ .udb-onb-palette--active {
2545
+ border-color: var(--color-primary);
2546
+ }
2547
+ .udb-onb-palette__strip {
2548
+ display: flex;
2549
+ height: 48px;
2550
+ width: 100%;
2551
+ overflow: hidden;
2552
+ border-radius: var(--radius-sm);
2553
+ }
2554
+ .udb-onb-palette__strip--lg {
2555
+ height: 128px;
2556
+ }
2557
+ .udb-onb-palette__chip {
2558
+ flex: 1;
2559
+ }
2560
+ .udb-onb-palette__name {
2561
+ display: block;
2562
+ margin-top: var(--udb-space-1);
2563
+ font-size: var(--udb-font-size-xs);
2564
+ font-weight: 500;
2565
+ }
2566
+ .udb-onb-palette-preview {
2567
+ padding: var(--udb-space-6);
2568
+ border: 1px solid var(--color-border);
2569
+ border-radius: var(--radius-lg);
2570
+ background: var(--color-card);
2571
+ }
2572
+ .udb-onb-palette-preview p {
2573
+ margin-top: var(--udb-space-3);
2574
+ font-size: var(--udb-font-size-sm);
2575
+ }