@dashboard-designer/ui 0.1.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,2628 @@
1
+ :root {
2
+ --dd-bg: #eef3f0;
3
+ --dd-surface: #ffffff;
4
+ --dd-ink: #12201a;
5
+ --dd-muted: #5a6d64;
6
+ --dd-accent: #0d6b54;
7
+ --dd-accent-soft: #d5eee5;
8
+ --dd-accent-hover: #0a5744;
9
+ --dd-border: #cfdcd5;
10
+ --dd-border-subtle: #e3ebe6;
11
+ --dd-danger: #b42318;
12
+ --dd-danger-bg: #fef3f2;
13
+ --dd-radius: 12px;
14
+ --dd-radius-sm: 8px;
15
+ --dd-font: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
16
+ --dd-mono: "IBM Plex Mono", ui-monospace, monospace;
17
+ --dd-space: 16px;
18
+ --dd-gap: 12px;
19
+ --dd-sidebar-w: 176px;
20
+ --dd-props-w: 320px;
21
+ --dd-control-h: 36px;
22
+ --dd-shadow: 0 1px 2px rgba(18, 32, 26, 0.04), 0 4px 16px rgba(18, 32, 26, 0.04);
23
+ }
24
+
25
+ .dd-root {
26
+ font-family: var(--dd-font);
27
+ color: var(--dd-ink);
28
+ background:
29
+ radial-gradient(1000px 520px at 8% -8%, #d7ebe3 0%, transparent 55%),
30
+ radial-gradient(800px 420px at 100% 0%, #ebe4d6 0%, transparent 48%),
31
+ var(--dd-bg);
32
+ min-height: 100%;
33
+ height: 100%;
34
+ display: flex;
35
+ flex-direction: column;
36
+ box-sizing: border-box;
37
+ isolation: isolate;
38
+ contain: style;
39
+ }
40
+
41
+ .dd-root *,
42
+ .dd-root *::before,
43
+ .dd-root *::after {
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ .dd-toolbar {
48
+ display: flex;
49
+ justify-content: space-between;
50
+ align-items: center;
51
+ gap: var(--dd-gap);
52
+ min-height: 56px;
53
+ padding: 10px var(--dd-space);
54
+ border-bottom: 1px solid var(--dd-border);
55
+ background: color-mix(in srgb, var(--dd-surface) 92%, transparent);
56
+ backdrop-filter: blur(10px);
57
+ position: sticky;
58
+ top: 0;
59
+ z-index: 20;
60
+ flex-shrink: 0;
61
+ }
62
+
63
+ .dd-toolbar-left,
64
+ .dd-toolbar-right {
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 5px;
68
+ min-width: 0;
69
+ }
70
+
71
+ .dd-toolbar-history {
72
+ display: contents;
73
+ }
74
+
75
+ .dd-toolbar-left strong {
76
+ font-size: 14px;
77
+ letter-spacing: -0.01em;
78
+ white-space: nowrap;
79
+ color: var(--dd-accent);
80
+ }
81
+
82
+ .dd-title-display {
83
+ appearance: none;
84
+ border: 1px solid transparent;
85
+ background: transparent;
86
+ margin: 0;
87
+ padding: 4px 8px;
88
+ margin-left: -8px;
89
+ min-width: 0;
90
+ max-width: 420px;
91
+ height: var(--dd-control-h);
92
+ font: inherit;
93
+ font-weight: 650;
94
+ font-size: 16px;
95
+ letter-spacing: -0.02em;
96
+ color: var(--dd-ink);
97
+ text-align: left;
98
+ border-radius: var(--dd-radius-sm);
99
+ cursor: text;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ .dd-title-display:hover:not(:disabled),
106
+ .dd-title-display:focus-visible {
107
+ border-color: var(--dd-border);
108
+ background: var(--dd-surface);
109
+ outline: none;
110
+ }
111
+
112
+ .dd-title-display-readonly,
113
+ .dd-title-display:disabled {
114
+ cursor: default;
115
+ opacity: 1;
116
+ color: var(--dd-ink);
117
+ }
118
+
119
+ .dd-title-display-readonly:hover,
120
+ .dd-title-display:disabled:hover {
121
+ border-color: transparent;
122
+ background: transparent;
123
+ }
124
+
125
+ .dd-title-input {
126
+ min-width: 200px;
127
+ max-width: 420px;
128
+ height: var(--dd-control-h);
129
+ margin: 0 !important;
130
+ font-weight: 650;
131
+ font-size: 16px;
132
+ letter-spacing: -0.02em;
133
+ }
134
+
135
+ .dd-filters-wrap {
136
+ flex-shrink: 0;
137
+ padding: 10px var(--dd-space) 0;
138
+ }
139
+
140
+ .dd-filters-wrap .dd-filter-bar {
141
+ width: 100%;
142
+ }
143
+
144
+ .dd-main {
145
+ display: grid;
146
+ grid-template-columns: minmax(0, 1fr);
147
+ gap: var(--dd-gap);
148
+ padding: var(--dd-gap) var(--dd-space) var(--dd-space);
149
+ flex: 1;
150
+ min-height: 0;
151
+ align-items: stretch;
152
+ }
153
+
154
+ .dd-main-canvas-only {
155
+ grid-template-columns: minmax(0, 1fr);
156
+ }
157
+
158
+ .dd-readonly .dd-main {
159
+ grid-template-columns: minmax(0, 1fr);
160
+ }
161
+
162
+ .dd-sidebar,
163
+ .dd-panel {
164
+ background: var(--dd-surface);
165
+ border: 1px solid var(--dd-border);
166
+ border-radius: var(--dd-radius);
167
+ padding: 14px;
168
+ box-shadow: var(--dd-shadow);
169
+ min-height: 0;
170
+ }
171
+
172
+ .dd-sidebar {
173
+ display: flex;
174
+ flex-direction: column;
175
+ gap: 8px;
176
+ align-self: start;
177
+ position: sticky;
178
+ top: 68px;
179
+ max-height: calc(100vh - 88px);
180
+ overflow: auto;
181
+ }
182
+
183
+ .dd-sidebar h3,
184
+ .dd-panel h3 {
185
+ margin: 0 0 4px;
186
+ font-size: 11px;
187
+ font-weight: 700;
188
+ letter-spacing: 0.06em;
189
+ text-transform: uppercase;
190
+ color: var(--dd-muted);
191
+ }
192
+
193
+ .dd-canvas {
194
+ min-width: 0;
195
+ min-height: 0;
196
+ height: 100%;
197
+ background: color-mix(in srgb, var(--dd-surface) 55%, transparent);
198
+ border: 1px dashed var(--dd-border);
199
+ border-radius: var(--dd-radius);
200
+ padding: 10px;
201
+ overflow: auto;
202
+ position: relative;
203
+ }
204
+
205
+ .dd-readonly .dd-canvas {
206
+ border-style: solid;
207
+ }
208
+
209
+ .dd-canvas-empty {
210
+ position: absolute;
211
+ inset: 0;
212
+ display: flex;
213
+ flex-direction: column;
214
+ align-items: center;
215
+ justify-content: center;
216
+ gap: 12px;
217
+ color: var(--dd-muted);
218
+ pointer-events: none;
219
+ z-index: 1;
220
+ }
221
+
222
+ .dd-canvas-empty .dd-btn {
223
+ pointer-events: auto;
224
+ }
225
+
226
+ .dd-canvas-empty p {
227
+ margin: 0;
228
+ font-size: 14px;
229
+ }
230
+
231
+ /* Modal */
232
+ .dd-modal-backdrop {
233
+ position: fixed;
234
+ inset: 0;
235
+ z-index: 1000;
236
+ background: rgba(18, 32, 26, 0.45);
237
+ backdrop-filter: blur(4px);
238
+ display: grid;
239
+ place-items: center;
240
+ padding: 24px;
241
+ }
242
+
243
+ .dd-modal {
244
+ width: min(1120px, 100%);
245
+ max-height: min(860px, calc(100vh - 48px));
246
+ background: var(--dd-surface);
247
+ border: 1px solid var(--dd-border);
248
+ border-radius: 16px;
249
+ box-shadow: 0 24px 64px rgba(18, 32, 26, 0.22);
250
+ display: flex;
251
+ flex-direction: column;
252
+ overflow: hidden;
253
+ }
254
+
255
+ .dd-modal-header {
256
+ display: flex;
257
+ align-items: center;
258
+ justify-content: space-between;
259
+ gap: 12px;
260
+ padding: 14px 18px;
261
+ border-bottom: 1px solid var(--dd-border);
262
+ flex-shrink: 0;
263
+ }
264
+
265
+ .dd-modal-header h2 {
266
+ margin: 0;
267
+ font-size: 1.1rem;
268
+ letter-spacing: -0.02em;
269
+ }
270
+
271
+ .dd-modal-body {
272
+ display: grid;
273
+ grid-template-columns: minmax(320px, 1.15fr) minmax(280px, 1fr);
274
+ gap: 0;
275
+ min-height: 0;
276
+ flex: 1;
277
+ overflow: hidden;
278
+ }
279
+
280
+ .dd-modal-config {
281
+ padding: 16px 18px;
282
+ overflow: auto;
283
+ border-left: 1px solid var(--dd-border);
284
+ background: #fbfcfb;
285
+ }
286
+
287
+ .dd-modal-config h3,
288
+ .dd-modal-preview-header h3 {
289
+ margin: 0 0 12px;
290
+ font-size: 11px;
291
+ font-weight: 700;
292
+ letter-spacing: 0.06em;
293
+ text-transform: uppercase;
294
+ color: var(--dd-muted);
295
+ }
296
+
297
+ .dd-modal-preview {
298
+ display: flex;
299
+ flex-direction: column;
300
+ min-height: 0;
301
+ background: var(--dd-surface);
302
+ }
303
+
304
+ .dd-modal-preview-header {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: space-between;
308
+ gap: 8px;
309
+ padding: 14px 18px 0;
310
+ flex-shrink: 0;
311
+ }
312
+
313
+ .dd-modal-preview-header h3 {
314
+ margin: 0;
315
+ }
316
+
317
+ .dd-modal-preview-meta {
318
+ display: flex;
319
+ align-items: center;
320
+ gap: 8px;
321
+ }
322
+
323
+ .dd-preview-status {
324
+ font-size: 11px;
325
+ color: var(--dd-muted);
326
+ }
327
+
328
+ .dd-modal-preview-chart {
329
+ flex: 1;
330
+ min-height: 320px;
331
+ margin: 12px 18px 18px;
332
+ padding: 12px;
333
+ border: 1px solid var(--dd-border);
334
+ border-radius: var(--dd-radius);
335
+ background:
336
+ radial-gradient(600px 280px at 10% 0%, #e8f5f0 0%, transparent 60%),
337
+ #f7faf8;
338
+ display: flex;
339
+ flex-direction: column;
340
+ }
341
+
342
+ .dd-modal-preview-chart.is-loading {
343
+ opacity: 0.85;
344
+ }
345
+
346
+ .dd-drill-preview-banner {
347
+ flex-shrink: 0;
348
+ margin: 0 0 8px;
349
+ padding: 8px 10px;
350
+ border-radius: var(--dd-radius-sm);
351
+ border: 1px solid #c5ddd2;
352
+ background: #eef7f2;
353
+ color: var(--dd-ink);
354
+ font-size: 12px;
355
+ line-height: 1.4;
356
+ }
357
+
358
+ .dd-modal-footer {
359
+ display: flex;
360
+ justify-content: flex-end;
361
+ gap: 8px;
362
+ padding: 12px 18px;
363
+ border-top: 1px solid var(--dd-border);
364
+ background: #f7faf8;
365
+ flex-shrink: 0;
366
+ }
367
+
368
+ .dd-config-form .dd-filter-bar {
369
+ margin: 4px 0 12px;
370
+ }
371
+
372
+ .dd-config-form > .dd-btn {
373
+ width: 100%;
374
+ }
375
+
376
+ @media (max-width: 900px) {
377
+ .dd-modal-body {
378
+ grid-template-columns: 1fr;
379
+ }
380
+
381
+ .dd-modal-config {
382
+ border-left: none;
383
+ border-top: 1px solid var(--dd-border);
384
+ max-height: 42vh;
385
+ }
386
+
387
+ .dd-modal-preview-chart {
388
+ min-height: 240px;
389
+ }
390
+ }
391
+
392
+ .dd-canvas .react-grid-layout {
393
+ min-height: 100%;
394
+ }
395
+
396
+ .dd-canvas .react-grid-item {
397
+ transition: box-shadow 120ms ease;
398
+ }
399
+
400
+ .dd-canvas .react-grid-item > .dd-widget,
401
+ .dd-canvas .react-grid-item > div {
402
+ height: 100%;
403
+ }
404
+
405
+ .dd-canvas .react-resizable-handle::after {
406
+ border-color: var(--dd-accent) !important;
407
+ }
408
+
409
+ .dd-widget {
410
+ height: 100%;
411
+ background: var(--dd-surface);
412
+ border: 1px solid var(--dd-border);
413
+ border-radius: var(--dd-radius);
414
+ display: flex;
415
+ flex-direction: column;
416
+ overflow: hidden;
417
+ box-shadow: var(--dd-shadow);
418
+ }
419
+
420
+ .dd-widget.selected {
421
+ border-color: var(--dd-accent);
422
+ box-shadow: 0 0 0 2px var(--dd-accent-soft), var(--dd-shadow);
423
+ }
424
+
425
+ .dd-widget-header {
426
+ display: flex;
427
+ justify-content: space-between;
428
+ align-items: center;
429
+ gap: 8px;
430
+ min-height: 40px;
431
+ padding: 0 8px 0 0;
432
+ border-bottom: 1px solid var(--dd-border-subtle);
433
+ font-size: 13px;
434
+ font-weight: 600;
435
+ background: linear-gradient(180deg, #fcfdfc, #f5f8f6);
436
+ flex-shrink: 0;
437
+ }
438
+
439
+ .dd-widget-drag {
440
+ display: flex;
441
+ align-items: center;
442
+ gap: 8px;
443
+ min-width: 0;
444
+ flex: 1;
445
+ height: 100%;
446
+ padding: 0 8px 0 10px;
447
+ cursor: grab;
448
+ user-select: none;
449
+ }
450
+
451
+ .dd-widget-title-wrap {
452
+ display: flex;
453
+ align-items: center;
454
+ gap: 8px;
455
+ min-width: 0;
456
+ flex: 1;
457
+ height: 100%;
458
+ padding: 0 8px 0 10px;
459
+ cursor: default;
460
+ user-select: none;
461
+ }
462
+
463
+ .dd-readonly .dd-widget-drag,
464
+ .dd-readonly .dd-widget-drag:active {
465
+ cursor: default;
466
+ }
467
+
468
+ .dd-widget-drag:active {
469
+ cursor: grabbing;
470
+ }
471
+
472
+ .dd-widget-drag-grip {
473
+ width: 10px;
474
+ height: 14px;
475
+ flex-shrink: 0;
476
+ background:
477
+ radial-gradient(circle, var(--dd-muted) 1.1px, transparent 1.2px) 0 0 / 5px 5px,
478
+ radial-gradient(circle, var(--dd-muted) 1.1px, transparent 1.2px) 5px 2.5px / 5px 5px;
479
+ opacity: 0.55;
480
+ }
481
+
482
+ .dd-widget-title {
483
+ overflow: hidden;
484
+ text-overflow: ellipsis;
485
+ white-space: nowrap;
486
+ }
487
+
488
+ .dd-widget-header-actions {
489
+ display: flex;
490
+ align-items: center;
491
+ gap: 6px;
492
+ flex-shrink: 0;
493
+ padding-right: 4px;
494
+ }
495
+
496
+ .dd-widget-edit {
497
+ height: 28px;
498
+ font-size: 12px;
499
+ padding: 0 10px;
500
+ position: relative;
501
+ z-index: 2;
502
+ pointer-events: auto;
503
+ }
504
+
505
+ .dd-widget-delete {
506
+ height: 28px;
507
+ font-size: 12px;
508
+ padding: 0 10px;
509
+ position: relative;
510
+ z-index: 2;
511
+ pointer-events: auto;
512
+ color: var(--dd-danger);
513
+ }
514
+
515
+ .dd-widget-delete:hover:not(:disabled) {
516
+ border-color: var(--dd-danger);
517
+ color: var(--dd-danger);
518
+ background: var(--dd-danger-bg);
519
+ }
520
+
521
+ .dd-chart-fill {
522
+ width: 100%;
523
+ height: 100%;
524
+ min-height: 220px;
525
+ flex: 1;
526
+ }
527
+
528
+ .dd-chart-fill.is-drillable {
529
+ cursor: pointer;
530
+ }
531
+
532
+ .dd-chart-fill.is-drillable .recharts-dot,
533
+ .dd-chart-fill.is-drillable .recharts-bar-rectangle,
534
+ .dd-chart-fill.is-drillable .recharts-pie-sector {
535
+ cursor: pointer;
536
+ }
537
+
538
+ .dd-widget-body {
539
+ flex: 1;
540
+ min-height: 0;
541
+ padding: 10px 12px 12px;
542
+ display: flex;
543
+ flex-direction: column;
544
+ }
545
+
546
+ .dd-widget-body .dd-chart-fill {
547
+ min-height: 0;
548
+ }
549
+
550
+ .dd-modal-preview-chart .dd-chart-fill {
551
+ min-height: 260px;
552
+ }
553
+
554
+ .dd-badge {
555
+ flex-shrink: 0;
556
+ display: inline-flex;
557
+ align-items: center;
558
+ gap: 4px;
559
+ font-size: 10px;
560
+ line-height: 1;
561
+ text-transform: uppercase;
562
+ letter-spacing: 0.05em;
563
+ background: var(--dd-accent-soft);
564
+ color: var(--dd-accent);
565
+ border-radius: 999px;
566
+ padding: 4px 8px;
567
+ }
568
+
569
+ .dd-btn {
570
+ display: inline-flex;
571
+ align-items: center;
572
+ justify-content: center;
573
+ gap: 6px;
574
+ height: var(--dd-control-h);
575
+ border: 1px solid var(--dd-border);
576
+ background: var(--dd-surface);
577
+ color: var(--dd-ink);
578
+ border-radius: var(--dd-radius-sm);
579
+ padding: 0 12px;
580
+ cursor: pointer;
581
+ font: inherit;
582
+ font-size: 13px;
583
+ font-weight: 600;
584
+ transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
585
+ }
586
+
587
+ .dd-btn svg {
588
+ flex-shrink: 0;
589
+ }
590
+
591
+ .dd-btn-icon {
592
+ width: var(--dd-control-h);
593
+ padding: 0;
594
+ }
595
+
596
+ .dd-btn-icon.dd-widget-edit,
597
+ .dd-btn-icon.dd-widget-delete {
598
+ width: 28px;
599
+ height: 28px;
600
+ }
601
+
602
+ .dd-btn:hover:not(:disabled) {
603
+ border-color: var(--dd-accent);
604
+ color: var(--dd-accent);
605
+ }
606
+
607
+ .dd-btn:disabled {
608
+ opacity: 0.45;
609
+ cursor: not-allowed;
610
+ }
611
+
612
+ .dd-btn-primary {
613
+ background: var(--dd-accent);
614
+ border-color: var(--dd-accent);
615
+ color: #fff;
616
+ }
617
+
618
+ .dd-btn-primary:hover:not(:disabled) {
619
+ background: var(--dd-accent-hover);
620
+ border-color: var(--dd-accent-hover);
621
+ color: #fff;
622
+ }
623
+
624
+ .dd-btn-ghost {
625
+ background: transparent;
626
+ border-color: transparent;
627
+ height: 28px;
628
+ padding: 0 8px;
629
+ color: var(--dd-muted);
630
+ }
631
+
632
+ .dd-palette-btn {
633
+ width: 100%;
634
+ justify-content: flex-start;
635
+ background: #f7faf8;
636
+ }
637
+
638
+ .dd-palette-btn:hover:not(:disabled) {
639
+ background: var(--dd-accent-soft);
640
+ }
641
+
642
+ .dd-input,
643
+ .dd-textarea,
644
+ select.dd-input {
645
+ width: 100%;
646
+ height: var(--dd-control-h);
647
+ border: 1px solid var(--dd-border);
648
+ border-radius: var(--dd-radius-sm);
649
+ padding: 0 10px;
650
+ font: inherit;
651
+ font-size: 13px;
652
+ background: #fff;
653
+ color: var(--dd-ink);
654
+ margin: 0;
655
+ }
656
+
657
+ .dd-input:focus,
658
+ .dd-textarea:focus,
659
+ select.dd-input:focus {
660
+ outline: none;
661
+ border-color: var(--dd-accent);
662
+ box-shadow: 0 0 0 3px var(--dd-accent-soft);
663
+ }
664
+
665
+ .dd-textarea {
666
+ height: auto;
667
+ min-height: 96px;
668
+ padding: 10px;
669
+ font-family: var(--dd-mono);
670
+ font-size: 12px;
671
+ line-height: 1.45;
672
+ resize: vertical;
673
+ }
674
+
675
+ select.dd-input[multiple] {
676
+ height: auto;
677
+ min-height: 88px;
678
+ padding: 6px;
679
+ }
680
+
681
+ .dd-field {
682
+ display: flex;
683
+ flex-direction: column;
684
+ gap: 6px;
685
+ margin-bottom: 12px;
686
+ }
687
+
688
+ .dd-label {
689
+ display: inline-flex;
690
+ align-items: center;
691
+ gap: 6px;
692
+ font-size: 12px;
693
+ font-weight: 650;
694
+ margin: 0;
695
+ color: var(--dd-muted);
696
+ }
697
+
698
+ .dd-label-text {
699
+ line-height: 1.2;
700
+ }
701
+
702
+ .dd-field-help {
703
+ position: relative;
704
+ display: inline-flex;
705
+ align-items: center;
706
+ flex-shrink: 0;
707
+ }
708
+
709
+ .dd-field-help-btn {
710
+ display: inline-flex;
711
+ align-items: center;
712
+ justify-content: center;
713
+ width: 18px;
714
+ height: 18px;
715
+ padding: 0;
716
+ border: none;
717
+ border-radius: 999px;
718
+ background: transparent;
719
+ color: var(--dd-muted);
720
+ cursor: help;
721
+ opacity: 0.75;
722
+ }
723
+
724
+ .dd-field-help-btn:hover,
725
+ .dd-field-help.is-open .dd-field-help-btn,
726
+ .dd-field-help-btn:focus-visible {
727
+ opacity: 1;
728
+ color: var(--dd-accent);
729
+ background: var(--dd-accent-soft);
730
+ outline: none;
731
+ }
732
+
733
+ .dd-field-help-tip {
734
+ position: fixed;
735
+ z-index: 10050;
736
+ width: max-content;
737
+ max-width: min(300px, calc(100vw - 20px));
738
+ padding: 8px 10px;
739
+ border-radius: 8px;
740
+ border: 1px solid rgba(255, 255, 255, 0.12);
741
+ background: var(--dd-ink);
742
+ color: #f5faf7;
743
+ font-family: var(--dd-font);
744
+ font-size: 12px;
745
+ font-weight: 500;
746
+ line-height: 1.45;
747
+ box-shadow: 0 10px 28px rgba(18, 32, 26, 0.28);
748
+ pointer-events: none;
749
+ white-space: normal;
750
+ word-wrap: break-word;
751
+ }
752
+
753
+ .dd-field-help-tip::before {
754
+ content: '';
755
+ position: absolute;
756
+ width: 8px;
757
+ height: 8px;
758
+ background: var(--dd-ink);
759
+ border: 1px solid rgba(255, 255, 255, 0.12);
760
+ transform: rotate(45deg);
761
+ }
762
+
763
+ .dd-field-help-tip-below::before {
764
+ top: -4px;
765
+ border-right: none;
766
+ border-bottom: none;
767
+ }
768
+
769
+ .dd-field-help-tip-above::before {
770
+ bottom: -4px;
771
+ border-left: none;
772
+ border-top: none;
773
+ }
774
+
775
+ .dd-field-help-tip-align-start::before {
776
+ left: 10px;
777
+ }
778
+
779
+ .dd-field-help-tip-align-end::before {
780
+ right: 10px;
781
+ }
782
+
783
+ .dd-hint {
784
+ font-size: 11px;
785
+ line-height: 1.35;
786
+ color: var(--dd-muted);
787
+ margin: 0;
788
+ }
789
+
790
+ .dd-hint-warn {
791
+ color: #9a3412;
792
+ background: #fff7ed;
793
+ border: 1px solid #fed7aa;
794
+ border-radius: 8px;
795
+ padding: 8px 10px;
796
+ margin: 0 0 10px;
797
+ }
798
+
799
+ .dd-type-switch {
800
+ display: flex;
801
+ flex-wrap: wrap;
802
+ gap: 6px;
803
+ }
804
+
805
+ .dd-chip {
806
+ border: 1px solid var(--dd-border);
807
+ background: #fff;
808
+ border-radius: 999px;
809
+ padding: 6px 11px;
810
+ font-size: 12px;
811
+ font-weight: 600;
812
+ cursor: pointer;
813
+ color: var(--dd-ink);
814
+ display: inline-flex;
815
+ align-items: center;
816
+ gap: 6px;
817
+ }
818
+
819
+ .dd-chip:hover {
820
+ border-color: var(--dd-accent);
821
+ }
822
+
823
+ .dd-chip.active {
824
+ background: var(--dd-accent);
825
+ border-color: var(--dd-accent);
826
+ color: #fff;
827
+ }
828
+
829
+ .dd-filter-bar {
830
+ margin: 0;
831
+ padding: 12px 14px;
832
+ background: var(--dd-surface);
833
+ border: 1px solid var(--dd-border);
834
+ border-radius: var(--dd-radius);
835
+ box-shadow: var(--dd-shadow);
836
+ }
837
+
838
+ .dd-filter-bar-embedded {
839
+ margin: 0;
840
+ padding: 0;
841
+ border: none;
842
+ box-shadow: none;
843
+ background: transparent;
844
+ border-radius: 0;
845
+ }
846
+
847
+ .dd-filter-bar-toolbar {
848
+ display: flex;
849
+ justify-content: flex-end;
850
+ margin-bottom: 8px;
851
+ }
852
+
853
+ .dd-filters-popover {
854
+ position: relative;
855
+ }
856
+
857
+ .dd-filters-trigger.is-open {
858
+ border-color: var(--dd-accent);
859
+ background: var(--dd-accent-soft);
860
+ color: var(--dd-accent);
861
+ }
862
+
863
+ .dd-filters-trigger.is-side-active {
864
+ border-color: var(--dd-accent);
865
+ background: var(--dd-accent-soft);
866
+ color: var(--dd-accent);
867
+ }
868
+
869
+ .dd-workspace {
870
+ display: flex;
871
+ flex: 1;
872
+ min-height: 0;
873
+ min-width: 0;
874
+ }
875
+
876
+ .dd-workspace .dd-main {
877
+ flex: 1;
878
+ min-width: 0;
879
+ }
880
+
881
+ .dd-filters-side {
882
+ flex: 0 0 320px;
883
+ width: 320px;
884
+ max-width: 42vw;
885
+ display: flex;
886
+ flex-direction: column;
887
+ min-height: 0;
888
+ border-right: 1px solid var(--dd-border);
889
+ background: var(--dd-surface);
890
+ box-shadow: var(--dd-shadow);
891
+ z-index: 5;
892
+ }
893
+
894
+ .dd-filters-side.is-pinned {
895
+ box-shadow: 2px 0 0 color-mix(in srgb, var(--dd-accent) 35%, transparent);
896
+ }
897
+
898
+ .dd-filters-side-collapsed {
899
+ flex-basis: 48px;
900
+ width: 48px;
901
+ max-width: 48px;
902
+ align-items: center;
903
+ padding: 10px 0;
904
+ gap: 6px;
905
+ }
906
+
907
+ .dd-filters-side-close-rail {
908
+ margin-top: auto;
909
+ margin-bottom: 8px;
910
+ }
911
+
912
+ .dd-filters-side-expand {
913
+ position: relative;
914
+ }
915
+
916
+ .dd-filters-side-header {
917
+ display: flex;
918
+ align-items: center;
919
+ justify-content: space-between;
920
+ gap: 8px;
921
+ padding: 12px 12px 8px;
922
+ border-bottom: 1px solid var(--dd-border-subtle);
923
+ flex-shrink: 0;
924
+ }
925
+
926
+ .dd-filters-side-title {
927
+ display: inline-flex;
928
+ align-items: center;
929
+ gap: 8px;
930
+ min-width: 0;
931
+ color: var(--dd-accent);
932
+ }
933
+
934
+ .dd-filters-popover-header strong {
935
+ display: inline-flex;
936
+ align-items: center;
937
+ gap: 6px;
938
+ font-size: 14px;
939
+ font-weight: 650;
940
+ color: var(--dd-ink);
941
+ }
942
+
943
+ .dd-filters-side-title strong {
944
+ font-size: 13px;
945
+ font-weight: 650;
946
+ color: var(--dd-ink);
947
+ white-space: nowrap;
948
+ overflow: hidden;
949
+ text-overflow: ellipsis;
950
+ }
951
+
952
+ .dd-filters-side-actions {
953
+ display: inline-flex;
954
+ align-items: center;
955
+ gap: 2px;
956
+ flex-shrink: 0;
957
+ }
958
+
959
+ .dd-filters-clear-all {
960
+ color: var(--dd-danger);
961
+ white-space: nowrap;
962
+ }
963
+
964
+ .dd-filters-clear-all:hover:not(:disabled) {
965
+ background: var(--dd-danger-bg);
966
+ color: var(--dd-danger);
967
+ }
968
+
969
+ .dd-filters-popover-header-actions {
970
+ display: inline-flex;
971
+ align-items: center;
972
+ gap: 6px;
973
+ flex-shrink: 0;
974
+ flex-wrap: wrap;
975
+ justify-content: flex-end;
976
+ }
977
+
978
+ .dd-filters-side-actions .dd-btn.is-active {
979
+ background: var(--dd-accent-soft);
980
+ border-color: color-mix(in srgb, var(--dd-accent) 40%, var(--dd-border));
981
+ color: var(--dd-accent);
982
+ }
983
+
984
+ .dd-filters-side-hint {
985
+ margin: 0;
986
+ padding: 8px 12px 0;
987
+ flex-shrink: 0;
988
+ }
989
+
990
+ .dd-filters-side-body {
991
+ flex: 1;
992
+ min-height: 0;
993
+ overflow: auto;
994
+ padding: 10px 12px 14px;
995
+ }
996
+
997
+ .dd-filters-side-body .dd-filter-item,
998
+ .dd-filters-side-body .dd-filter-item.has-between,
999
+ .dd-filters-side-body .dd-filter-item.no-value,
1000
+ .dd-filters-side-body .dd-filter-item-readonly,
1001
+ .dd-filters-side-body .dd-filter-item-readonly.has-between {
1002
+ grid-template-columns: 1fr;
1003
+ }
1004
+
1005
+ .dd-filters-side-body .dd-filter-actions {
1006
+ justify-content: flex-start;
1007
+ }
1008
+
1009
+ @media (max-width: 900px) {
1010
+ .dd-filters-side:not(.dd-filters-side-collapsed) {
1011
+ position: absolute;
1012
+ left: 0;
1013
+ top: 56px;
1014
+ bottom: 0;
1015
+ z-index: 25;
1016
+ max-width: min(320px, 90vw);
1017
+ box-shadow: 8px 0 28px rgba(18, 32, 26, 0.12);
1018
+ }
1019
+ }
1020
+
1021
+ .dd-filters-trigger-icon {
1022
+ position: relative;
1023
+ display: inline-flex;
1024
+ align-items: center;
1025
+ justify-content: center;
1026
+ }
1027
+
1028
+ .dd-filters-badge {
1029
+ position: absolute;
1030
+ top: -7px;
1031
+ right: -9px;
1032
+ min-width: 16px;
1033
+ height: 16px;
1034
+ padding: 0 4px;
1035
+ border-radius: 999px;
1036
+ font-size: 10px;
1037
+ font-weight: 700;
1038
+ line-height: 16px;
1039
+ text-align: center;
1040
+ color: #fff;
1041
+ box-shadow: 0 0 0 2px var(--dd-surface);
1042
+ }
1043
+
1044
+ .dd-filters-badge-applied {
1045
+ background: var(--dd-accent);
1046
+ }
1047
+
1048
+ .dd-filters-badge-defined {
1049
+ background: #64748b;
1050
+ }
1051
+
1052
+ .dd-filters-popover-panel {
1053
+ position: absolute;
1054
+ top: calc(100% + 8px);
1055
+ right: 0;
1056
+ z-index: 40;
1057
+ width: min(640px, calc(100vw - 32px));
1058
+ max-height: min(420px, 70vh);
1059
+ overflow: auto;
1060
+ padding: 14px;
1061
+ background: var(--dd-surface);
1062
+ border: 1px solid var(--dd-border);
1063
+ border-radius: var(--dd-radius);
1064
+ box-shadow: 0 10px 40px rgba(18, 32, 26, 0.14);
1065
+ }
1066
+
1067
+ .dd-filters-popover-header {
1068
+ display: flex;
1069
+ align-items: flex-start;
1070
+ justify-content: space-between;
1071
+ gap: 12px;
1072
+ margin-bottom: 10px;
1073
+ }
1074
+
1075
+ .dd-filters-popover-header .dd-hint {
1076
+ margin-top: 4px;
1077
+ }
1078
+
1079
+ .dd-filters-popover-panel .dd-filter-item {
1080
+ grid-template-columns: minmax(140px, 1.4fr) minmax(120px, 0.9fr) minmax(120px, 1.1fr) auto;
1081
+ align-items: center;
1082
+ }
1083
+
1084
+ .dd-filters-popover-panel .dd-filter-item.has-between {
1085
+ grid-template-columns: minmax(120px, 1.2fr) minmax(100px, 0.8fr) minmax(90px, 0.9fr) minmax(90px, 0.9fr) auto;
1086
+ }
1087
+
1088
+ .dd-filters-popover-panel .dd-filter-item.no-value {
1089
+ grid-template-columns: minmax(140px, 1.4fr) minmax(120px, 0.9fr) auto;
1090
+ }
1091
+
1092
+ .dd-filters-popover-panel .dd-filter-item-readonly {
1093
+ grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 1fr);
1094
+ }
1095
+
1096
+ .dd-filters-popover-panel .dd-filter-item-readonly.has-between {
1097
+ grid-template-columns: minmax(140px, 1.2fr) minmax(100px, 0.9fr) minmax(100px, 0.9fr);
1098
+ }
1099
+
1100
+ .dd-filters-popover-panel .dd-filter-actions {
1101
+ justify-content: flex-end;
1102
+ }
1103
+
1104
+ @media (max-width: 560px) {
1105
+ .dd-filters-popover-panel .dd-filter-item,
1106
+ .dd-filters-popover-panel .dd-filter-item.has-between,
1107
+ .dd-filters-popover-panel .dd-filter-item.no-value,
1108
+ .dd-filters-popover-panel .dd-filter-item-readonly,
1109
+ .dd-filters-popover-panel .dd-filter-item-readonly.has-between {
1110
+ grid-template-columns: 1fr;
1111
+ }
1112
+
1113
+ .dd-filters-popover-panel .dd-filter-actions {
1114
+ justify-content: flex-start;
1115
+ }
1116
+ }
1117
+
1118
+ .dd-filter-bar-header {
1119
+ display: flex;
1120
+ justify-content: space-between;
1121
+ align-items: flex-start;
1122
+ gap: 12px;
1123
+ min-height: 32px;
1124
+ margin-bottom: 10px;
1125
+ }
1126
+
1127
+ .dd-filter-bar-heading {
1128
+ display: flex;
1129
+ flex-direction: column;
1130
+ gap: 4px;
1131
+ min-width: 0;
1132
+ flex: 1;
1133
+ }
1134
+
1135
+ .dd-filter-bar-hint {
1136
+ margin: 0;
1137
+ text-transform: none;
1138
+ letter-spacing: 0;
1139
+ font-weight: 500;
1140
+ }
1141
+
1142
+ .dd-filter-bar-title {
1143
+ display: inline-flex;
1144
+ align-items: center;
1145
+ gap: 6px;
1146
+ font-size: 11px;
1147
+ font-weight: 700;
1148
+ letter-spacing: 0.05em;
1149
+ text-transform: uppercase;
1150
+ color: var(--dd-muted);
1151
+ }
1152
+
1153
+ .dd-btn-sm {
1154
+ height: 30px;
1155
+ padding: 0 10px;
1156
+ font-size: 12px;
1157
+ }
1158
+
1159
+ .dd-filter-empty {
1160
+ margin: 0;
1161
+ padding: 10px 12px;
1162
+ font-size: 13px;
1163
+ color: var(--dd-muted);
1164
+ background: #f7faf8;
1165
+ border: 1px dashed var(--dd-border);
1166
+ border-radius: var(--dd-radius-sm);
1167
+ }
1168
+
1169
+ .dd-filter-row {
1170
+ display: flex;
1171
+ flex-direction: column;
1172
+ gap: 8px;
1173
+ width: 100%;
1174
+ }
1175
+
1176
+ .dd-filter-item {
1177
+ display: grid;
1178
+ grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 0.9fr) minmax(140px, 1.2fr) auto;
1179
+ gap: 8px;
1180
+ align-items: center;
1181
+ width: 100%;
1182
+ padding: 8px 10px;
1183
+ background: #f7faf8;
1184
+ border: 1px solid var(--dd-border-subtle);
1185
+ border-radius: var(--dd-radius-sm);
1186
+ }
1187
+
1188
+ .dd-filter-item.has-between {
1189
+ grid-template-columns: minmax(140px, 1.2fr) minmax(110px, 0.8fr) minmax(110px, 1fr) minmax(110px, 1fr) auto;
1190
+ }
1191
+
1192
+ .dd-filter-item.no-value {
1193
+ grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 0.9fr) auto;
1194
+ }
1195
+
1196
+ .dd-filter-item-columns {
1197
+ grid-template-columns: minmax(140px, 1.5fr) minmax(100px, 0.8fr) minmax(110px, 1fr) auto;
1198
+ }
1199
+
1200
+ .dd-filter-item-columns.has-between {
1201
+ grid-template-columns: minmax(120px, 1.3fr) minmax(90px, 0.7fr) minmax(90px, 0.9fr) minmax(90px, 0.9fr) auto;
1202
+ }
1203
+
1204
+ .dd-filter-item-columns.no-value {
1205
+ grid-template-columns: minmax(140px, 1.5fr) minmax(100px, 0.8fr) auto;
1206
+ }
1207
+
1208
+ .dd-filter-field,
1209
+ .dd-filter-operator,
1210
+ .dd-filter-value,
1211
+ .dd-filter-value-to {
1212
+ min-width: 0;
1213
+ }
1214
+
1215
+ .dd-filter-readonly-field {
1216
+ display: flex;
1217
+ align-items: center;
1218
+ gap: 8px;
1219
+ min-width: 0;
1220
+ }
1221
+
1222
+ .dd-filter-item-readonly {
1223
+ grid-template-columns: minmax(180px, 1.6fr) minmax(140px, 1fr);
1224
+ }
1225
+
1226
+ .dd-filter-item-readonly.has-between {
1227
+ grid-template-columns: minmax(160px, 1.3fr) minmax(110px, 1fr) minmax(110px, 1fr);
1228
+ }
1229
+
1230
+ .dd-filter-item-readonly.no-value {
1231
+ grid-template-columns: 1fr;
1232
+ }
1233
+
1234
+ .dd-filter-op-text {
1235
+ font-size: 12px;
1236
+ color: var(--dd-muted);
1237
+ white-space: nowrap;
1238
+ }
1239
+
1240
+ .dd-filter-item-columns .dd-search-select {
1241
+ min-width: 0;
1242
+ }
1243
+
1244
+ .dd-filter-item-columns .dd-search-select-control {
1245
+ min-height: 32px;
1246
+ height: 32px;
1247
+ padding: 0 8px;
1248
+ }
1249
+
1250
+ .dd-filter-item .dd-input {
1251
+ min-width: 0;
1252
+ width: 100%;
1253
+ height: 32px;
1254
+ font-size: 13px;
1255
+ }
1256
+
1257
+ .dd-filter-actions {
1258
+ display: flex;
1259
+ align-items: center;
1260
+ justify-content: flex-end;
1261
+ }
1262
+
1263
+ .dd-filter-item .dd-btn-ghost {
1264
+ width: 32px;
1265
+ height: 32px;
1266
+ padding: 0;
1267
+ }
1268
+
1269
+ .dd-filter-label {
1270
+ font-size: 13px;
1271
+ font-weight: 650;
1272
+ padding: 0;
1273
+ white-space: nowrap;
1274
+ overflow: hidden;
1275
+ text-overflow: ellipsis;
1276
+ }
1277
+
1278
+ @media (max-width: 720px) {
1279
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item,
1280
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item.has-between,
1281
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item.no-value,
1282
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item-columns,
1283
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item-columns.has-between,
1284
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-item-columns.no-value {
1285
+ grid-template-columns: 1fr;
1286
+ align-items: stretch;
1287
+ }
1288
+
1289
+ .dd-filter-bar:not(.dd-filter-bar-embedded) .dd-filter-actions {
1290
+ justify-content: flex-start;
1291
+ }
1292
+ }
1293
+
1294
+ .dd-kpi {
1295
+ height: 100%;
1296
+ display: flex;
1297
+ flex-direction: column;
1298
+ justify-content: center;
1299
+ align-items: flex-start;
1300
+ gap: 4px;
1301
+ padding: 4px 2px;
1302
+ }
1303
+
1304
+ .dd-kpi-value {
1305
+ font-size: clamp(1.6rem, 2.4vw, 2.1rem);
1306
+ font-weight: 700;
1307
+ letter-spacing: -0.03em;
1308
+ line-height: 1.1;
1309
+ color: var(--dd-accent);
1310
+ }
1311
+
1312
+ .dd-kpi-label {
1313
+ color: var(--dd-muted);
1314
+ font-size: 13px;
1315
+ }
1316
+
1317
+ .dd-listbox {
1318
+ display: flex;
1319
+ flex-direction: column;
1320
+ height: 100%;
1321
+ min-height: 0;
1322
+ gap: 6px;
1323
+ }
1324
+
1325
+ .dd-listbox-heading {
1326
+ font-size: 12px;
1327
+ font-weight: 700;
1328
+ color: var(--dd-muted);
1329
+ text-transform: uppercase;
1330
+ letter-spacing: 0.04em;
1331
+ padding: 0 2px;
1332
+ flex-shrink: 0;
1333
+ }
1334
+
1335
+ .dd-listbox-scroll {
1336
+ flex: 1;
1337
+ min-height: 0;
1338
+ overflow-x: hidden;
1339
+ overflow-y: auto;
1340
+ padding-right: 2px;
1341
+ }
1342
+
1343
+ .dd-listbox-item {
1344
+ display: flex;
1345
+ align-items: center;
1346
+ gap: 8px;
1347
+ min-width: 0;
1348
+ margin: 0;
1349
+ padding: 6px 4px;
1350
+ cursor: pointer;
1351
+ font-size: 13px;
1352
+ color: var(--dd-ink);
1353
+ border-radius: var(--dd-radius-sm);
1354
+ user-select: none;
1355
+ }
1356
+
1357
+ .dd-listbox-item:hover {
1358
+ background: #f0f6f3;
1359
+ }
1360
+
1361
+ .dd-listbox-item input[type='checkbox'] {
1362
+ width: 15px;
1363
+ height: 15px;
1364
+ margin: 0;
1365
+ flex-shrink: 0;
1366
+ accent-color: var(--dd-accent);
1367
+ cursor: pointer;
1368
+ }
1369
+
1370
+ .dd-listbox-label {
1371
+ min-width: 0;
1372
+ overflow: hidden;
1373
+ text-overflow: ellipsis;
1374
+ white-space: nowrap;
1375
+ line-height: 1.3;
1376
+ }
1377
+
1378
+ .dd-listbox-all {
1379
+ font-weight: 650;
1380
+ }
1381
+
1382
+ .dd-listbox-divider {
1383
+ height: 1px;
1384
+ margin: 2px 4px 4px;
1385
+ background: var(--dd-border-subtle);
1386
+ flex-shrink: 0;
1387
+ }
1388
+
1389
+ .dd-listbox-empty {
1390
+ padding: 12px 8px;
1391
+ }
1392
+
1393
+ .dd-table-wrap {
1394
+ overflow: auto;
1395
+ height: 100%;
1396
+ border: 1px solid var(--dd-border-subtle);
1397
+ border-radius: var(--dd-radius-sm);
1398
+ }
1399
+
1400
+ .dd-table {
1401
+ width: 100%;
1402
+ border-collapse: collapse;
1403
+ font-size: 12px;
1404
+ }
1405
+
1406
+ .dd-table th,
1407
+ .dd-table td {
1408
+ border-bottom: 1px solid var(--dd-border-subtle);
1409
+ padding: 8px 10px;
1410
+ text-align: left;
1411
+ white-space: nowrap;
1412
+ }
1413
+
1414
+ .dd-table th {
1415
+ position: sticky;
1416
+ top: 0;
1417
+ background: #f4f8f6;
1418
+ font-weight: 700;
1419
+ color: var(--dd-muted);
1420
+ z-index: 1;
1421
+ }
1422
+
1423
+ .dd-muted {
1424
+ color: var(--dd-muted);
1425
+ font-size: 13px;
1426
+ padding: 16px;
1427
+ display: grid;
1428
+ place-items: center;
1429
+ height: 100%;
1430
+ text-align: center;
1431
+ }
1432
+
1433
+ .dd-error {
1434
+ color: var(--dd-danger);
1435
+ background: var(--dd-danger-bg);
1436
+ border: 1px solid #f5c2c0;
1437
+ border-radius: var(--dd-radius-sm);
1438
+ font-size: 12px;
1439
+ padding: 8px 10px;
1440
+ }
1441
+
1442
+ .dd-sql-preview {
1443
+ background: #12201a;
1444
+ color: #d5eee5;
1445
+ padding: 10px 12px;
1446
+ border-radius: var(--dd-radius-sm);
1447
+ font-size: 11px;
1448
+ line-height: 1.45;
1449
+ overflow: auto;
1450
+ max-height: 160px;
1451
+ margin: 10px 0 0;
1452
+ }
1453
+
1454
+ .dd-preview-mode {
1455
+ display: inline-flex;
1456
+ align-items: center;
1457
+ gap: 2px;
1458
+ padding: 2px;
1459
+ border: 1px solid var(--dd-border-subtle);
1460
+ border-radius: 999px;
1461
+ background: #f4f8f6;
1462
+ }
1463
+
1464
+ .dd-preview-mode-btn {
1465
+ appearance: none;
1466
+ border: 0;
1467
+ background: transparent;
1468
+ color: var(--dd-muted);
1469
+ font: inherit;
1470
+ font-size: 12px;
1471
+ font-weight: 650;
1472
+ line-height: 1;
1473
+ padding: 5px 10px;
1474
+ border-radius: 999px;
1475
+ cursor: pointer;
1476
+ }
1477
+
1478
+ .dd-preview-mode-btn.is-active {
1479
+ background: #fff;
1480
+ color: var(--dd-ink);
1481
+ box-shadow: 0 1px 2px rgb(15 40 30 / 8%);
1482
+ }
1483
+
1484
+ .dd-query-data-panel {
1485
+ display: flex;
1486
+ flex-direction: column;
1487
+ gap: 8px;
1488
+ margin-top: 8px;
1489
+ }
1490
+
1491
+ .dd-query-data-toggle {
1492
+ justify-content: flex-start;
1493
+ gap: 8px;
1494
+ padding-inline: 8px;
1495
+ }
1496
+
1497
+ .dd-query-data-toggle-count {
1498
+ color: var(--dd-muted);
1499
+ font-weight: 500;
1500
+ font-size: 12px;
1501
+ }
1502
+
1503
+ .dd-query-data {
1504
+ display: flex;
1505
+ flex-direction: column;
1506
+ gap: 6px;
1507
+ min-height: 0;
1508
+ height: 100%;
1509
+ border: 1px solid var(--dd-border-subtle);
1510
+ border-radius: var(--dd-radius-sm);
1511
+ background: #fff;
1512
+ overflow: hidden;
1513
+ }
1514
+
1515
+ .dd-query-data-preview {
1516
+ height: 100%;
1517
+ }
1518
+
1519
+ .dd-query-data-meta {
1520
+ flex-shrink: 0;
1521
+ padding: 6px 10px;
1522
+ font-size: 11px;
1523
+ color: var(--dd-muted);
1524
+ border-bottom: 1px solid var(--dd-border-subtle);
1525
+ background: #f7faf8;
1526
+ }
1527
+
1528
+ .dd-query-data-scroll {
1529
+ flex: 1;
1530
+ min-height: 0;
1531
+ overflow: auto;
1532
+ max-height: 280px;
1533
+ }
1534
+
1535
+ .dd-query-data-preview .dd-query-data-scroll {
1536
+ max-height: none;
1537
+ }
1538
+
1539
+ .dd-query-data-table {
1540
+ width: max-content;
1541
+ min-width: 100%;
1542
+ border-collapse: collapse;
1543
+ font-size: 12px;
1544
+ }
1545
+
1546
+ .dd-query-data-table th,
1547
+ .dd-query-data-table td {
1548
+ border-bottom: 1px solid var(--dd-border-subtle);
1549
+ padding: 6px 10px;
1550
+ text-align: left;
1551
+ white-space: nowrap;
1552
+ max-width: 240px;
1553
+ overflow: hidden;
1554
+ text-overflow: ellipsis;
1555
+ }
1556
+
1557
+ .dd-query-data-table th {
1558
+ position: sticky;
1559
+ top: 0;
1560
+ z-index: 1;
1561
+ background: #f4f8f6;
1562
+ font-weight: 700;
1563
+ color: var(--dd-muted);
1564
+ }
1565
+
1566
+ .dd-query-data-table tbody tr:hover td {
1567
+ background: #f0f6f3;
1568
+ }
1569
+
1570
+ .dd-query-data-empty,
1571
+ .dd-query-data-empty-cell {
1572
+ color: var(--dd-muted);
1573
+ text-align: center;
1574
+ padding: 16px;
1575
+ }
1576
+
1577
+ .dd-join-row {
1578
+ display: grid;
1579
+ grid-template-columns: 1fr 1fr;
1580
+ gap: 6px;
1581
+ margin-bottom: 10px;
1582
+ padding: 8px;
1583
+ background: #f7faf8;
1584
+ border: 1px solid var(--dd-border-subtle);
1585
+ border-radius: var(--dd-radius-sm);
1586
+ }
1587
+
1588
+ .dd-join-block {
1589
+ display: grid;
1590
+ gap: 8px;
1591
+ margin-bottom: 10px;
1592
+ padding: 10px;
1593
+ background: #f7faf8;
1594
+ border: 1px solid var(--dd-border-subtle);
1595
+ border-radius: var(--dd-radius-sm);
1596
+ }
1597
+
1598
+ .dd-join-block-header {
1599
+ display: flex;
1600
+ align-items: center;
1601
+ justify-content: space-between;
1602
+ gap: 8px;
1603
+ }
1604
+
1605
+ .dd-join-block-title {
1606
+ display: inline-flex;
1607
+ align-items: center;
1608
+ gap: 6px;
1609
+ font-size: 12px;
1610
+ font-weight: 700;
1611
+ color: var(--dd-muted);
1612
+ }
1613
+
1614
+ .dd-search-select {
1615
+ position: relative;
1616
+ width: 100%;
1617
+ margin-bottom: 0;
1618
+ }
1619
+
1620
+ .dd-search-select.is-disabled {
1621
+ opacity: 0.55;
1622
+ pointer-events: none;
1623
+ }
1624
+
1625
+ .dd-search-select-control {
1626
+ display: flex;
1627
+ align-items: flex-start;
1628
+ gap: 8px;
1629
+ min-height: var(--dd-control-h);
1630
+ padding: 6px 10px;
1631
+ border: 1px solid var(--dd-border);
1632
+ border-radius: var(--dd-radius-sm);
1633
+ background: #fff;
1634
+ cursor: text;
1635
+ }
1636
+
1637
+ .dd-search-select-control.is-open {
1638
+ border-color: var(--dd-accent);
1639
+ box-shadow: 0 0 0 3px var(--dd-accent-soft);
1640
+ }
1641
+
1642
+ .dd-search-select-icon,
1643
+ .dd-search-select-caret {
1644
+ color: var(--dd-muted);
1645
+ margin-top: 4px;
1646
+ flex-shrink: 0;
1647
+ }
1648
+
1649
+ .dd-search-select-values {
1650
+ display: flex;
1651
+ flex-wrap: wrap;
1652
+ gap: 6px;
1653
+ align-items: center;
1654
+ flex: 1;
1655
+ min-width: 0;
1656
+ }
1657
+
1658
+ .dd-search-chip {
1659
+ display: inline-flex;
1660
+ align-items: center;
1661
+ gap: 4px;
1662
+ max-width: 100%;
1663
+ padding: 3px 6px 3px 8px;
1664
+ border-radius: 999px;
1665
+ background: var(--dd-accent-soft);
1666
+ color: var(--dd-accent);
1667
+ font-size: 12px;
1668
+ font-weight: 650;
1669
+ }
1670
+
1671
+ .dd-search-chip-remove {
1672
+ display: inline-flex;
1673
+ align-items: center;
1674
+ justify-content: center;
1675
+ width: 16px;
1676
+ height: 16px;
1677
+ border: none;
1678
+ border-radius: 999px;
1679
+ background: transparent;
1680
+ color: inherit;
1681
+ cursor: pointer;
1682
+ padding: 0;
1683
+ }
1684
+
1685
+ .dd-search-chip-remove:hover {
1686
+ background: color-mix(in srgb, var(--dd-accent) 18%, transparent);
1687
+ }
1688
+
1689
+ .dd-search-single {
1690
+ font-size: 13px;
1691
+ color: var(--dd-ink);
1692
+ }
1693
+
1694
+ .dd-search-select-input {
1695
+ flex: 1;
1696
+ min-width: 80px;
1697
+ border: none;
1698
+ outline: none;
1699
+ background: transparent;
1700
+ font: inherit;
1701
+ font-size: 13px;
1702
+ color: var(--dd-ink);
1703
+ padding: 2px 0;
1704
+ }
1705
+
1706
+ .dd-search-select-menu {
1707
+ position: absolute;
1708
+ z-index: 30;
1709
+ left: 0;
1710
+ right: 0;
1711
+ top: calc(100% + 4px);
1712
+ margin: 0;
1713
+ padding: 6px;
1714
+ list-style: none;
1715
+ max-height: 220px;
1716
+ overflow: auto;
1717
+ background: #fff;
1718
+ border: 1px solid var(--dd-border);
1719
+ border-radius: var(--dd-radius-sm);
1720
+ box-shadow: var(--dd-shadow);
1721
+ }
1722
+
1723
+ .dd-search-select-empty {
1724
+ padding: 10px;
1725
+ color: var(--dd-muted);
1726
+ font-size: 12px;
1727
+ }
1728
+
1729
+ .dd-search-select-option {
1730
+ width: 100%;
1731
+ text-align: left;
1732
+ border: none;
1733
+ background: transparent;
1734
+ border-radius: 6px;
1735
+ padding: 8px 10px;
1736
+ font: inherit;
1737
+ font-size: 13px;
1738
+ color: var(--dd-ink);
1739
+ cursor: pointer;
1740
+ }
1741
+
1742
+ .dd-search-select-option.is-active,
1743
+ .dd-search-select-option:hover {
1744
+ background: var(--dd-accent-soft);
1745
+ color: var(--dd-accent);
1746
+ }
1747
+
1748
+ .dd-row-between {
1749
+ display: flex;
1750
+ justify-content: space-between;
1751
+ align-items: center;
1752
+ gap: 8px;
1753
+ margin-bottom: 6px;
1754
+ }
1755
+
1756
+ .dd-properties {
1757
+ overflow: auto;
1758
+ align-self: start;
1759
+ position: sticky;
1760
+ top: 68px;
1761
+ max-height: calc(100vh - 88px);
1762
+ }
1763
+
1764
+ .dd-properties .dd-filter-bar {
1765
+ margin: 4px 0 12px;
1766
+ }
1767
+
1768
+ .dd-properties .dd-btn-primary {
1769
+ width: 100%;
1770
+ margin-top: 4px;
1771
+ }
1772
+
1773
+ .dd-empty-props {
1774
+ display: grid;
1775
+ place-items: center;
1776
+ text-align: center;
1777
+ color: var(--dd-muted);
1778
+ font-size: 13px;
1779
+ min-height: 160px;
1780
+ padding: 20px;
1781
+ }
1782
+
1783
+ @media (max-width: 1100px) {
1784
+ .dd-main {
1785
+ grid-template-columns: minmax(0, 1fr);
1786
+ }
1787
+ }
1788
+
1789
+ @media (max-width: 960px) {
1790
+ .dd-main {
1791
+ grid-template-columns: minmax(0, 1fr);
1792
+ }
1793
+
1794
+ .dd-title-input {
1795
+ max-width: 100%;
1796
+ min-width: 0;
1797
+ flex: 1;
1798
+ }
1799
+
1800
+ .dd-toolbar {
1801
+ flex-wrap: wrap;
1802
+ }
1803
+ }
1804
+
1805
+ /* Version history panel */
1806
+ .dd-history-panel {
1807
+ width: min(1040px, 96vw);
1808
+ height: min(720px, 90vh);
1809
+ background: var(--dd-surface);
1810
+ border-radius: var(--dd-radius);
1811
+ border: 1px solid var(--dd-border);
1812
+ box-shadow: var(--dd-shadow);
1813
+ display: flex;
1814
+ flex-direction: column;
1815
+ overflow: hidden;
1816
+ }
1817
+
1818
+ .dd-history-header {
1819
+ display: flex;
1820
+ align-items: center;
1821
+ justify-content: space-between;
1822
+ gap: 12px;
1823
+ padding: 12px 16px;
1824
+ border-bottom: 1px solid var(--dd-border);
1825
+ flex-shrink: 0;
1826
+ }
1827
+
1828
+ .dd-history-header-title {
1829
+ display: inline-flex;
1830
+ align-items: center;
1831
+ gap: 8px;
1832
+ color: var(--dd-accent);
1833
+ }
1834
+
1835
+ .dd-history-header h2 {
1836
+ margin: 0;
1837
+ font-size: 16px;
1838
+ font-weight: 650;
1839
+ color: var(--dd-ink);
1840
+ }
1841
+
1842
+ .dd-history-body {
1843
+ display: grid;
1844
+ grid-template-columns: minmax(280px, 1.1fr) minmax(240px, 0.9fr);
1845
+ min-height: 0;
1846
+ flex: 1;
1847
+ }
1848
+
1849
+ .dd-history-tree {
1850
+ padding: 12px 14px;
1851
+ overflow: auto;
1852
+ border-right: 1px solid var(--dd-border);
1853
+ background: #f7faf8;
1854
+ }
1855
+
1856
+ .dd-history-hint {
1857
+ display: inline-flex;
1858
+ align-items: center;
1859
+ gap: 6px;
1860
+ margin-bottom: 10px;
1861
+ }
1862
+
1863
+ .dd-history-list {
1864
+ list-style: none;
1865
+ margin: 0;
1866
+ padding: 0;
1867
+ }
1868
+
1869
+ .dd-history-row {
1870
+ display: flex;
1871
+ align-items: stretch;
1872
+ gap: 10px;
1873
+ width: 100%;
1874
+ text-align: left;
1875
+ border: 1px solid transparent;
1876
+ background: transparent;
1877
+ border-radius: var(--dd-radius-sm);
1878
+ padding: 0 8px 0 0;
1879
+ cursor: pointer;
1880
+ color: inherit;
1881
+ font: inherit;
1882
+ }
1883
+
1884
+ .dd-history-row:hover {
1885
+ background: color-mix(in srgb, var(--dd-surface) 80%, var(--dd-accent-soft));
1886
+ }
1887
+
1888
+ .dd-history-row.is-selected {
1889
+ background: var(--dd-surface);
1890
+ border-color: var(--dd-border);
1891
+ box-shadow: var(--dd-shadow);
1892
+ }
1893
+
1894
+ .dd-history-graph {
1895
+ flex-shrink: 0;
1896
+ display: block;
1897
+ }
1898
+
1899
+ .dd-history-row-body {
1900
+ flex: 1;
1901
+ min-width: 0;
1902
+ padding: 12px 0;
1903
+ display: flex;
1904
+ flex-direction: column;
1905
+ justify-content: center;
1906
+ gap: 2px;
1907
+ }
1908
+
1909
+ .dd-history-row-top {
1910
+ display: flex;
1911
+ align-items: center;
1912
+ gap: 6px;
1913
+ flex-wrap: wrap;
1914
+ }
1915
+
1916
+ .dd-history-sha {
1917
+ font-family: var(--dd-mono);
1918
+ font-size: 12px;
1919
+ font-weight: 650;
1920
+ color: var(--dd-accent);
1921
+ }
1922
+
1923
+ .dd-history-badge {
1924
+ font-size: 10px;
1925
+ font-weight: 700;
1926
+ letter-spacing: 0.04em;
1927
+ text-transform: uppercase;
1928
+ padding: 2px 6px;
1929
+ border-radius: 999px;
1930
+ background: var(--dd-accent-soft);
1931
+ color: var(--dd-accent);
1932
+ }
1933
+
1934
+ .dd-history-badge-restore {
1935
+ background: #eef2ff;
1936
+ color: #3730a3;
1937
+ }
1938
+
1939
+ .dd-history-message {
1940
+ font-size: 13px;
1941
+ font-weight: 600;
1942
+ color: var(--dd-ink);
1943
+ }
1944
+
1945
+ .dd-history-meta {
1946
+ font-size: 11px;
1947
+ color: var(--dd-muted);
1948
+ }
1949
+
1950
+ .dd-history-preview {
1951
+ display: flex;
1952
+ flex-direction: column;
1953
+ min-height: 0;
1954
+ padding: 14px 16px;
1955
+ overflow: auto;
1956
+ }
1957
+
1958
+ .dd-history-preview-header {
1959
+ display: flex;
1960
+ align-items: center;
1961
+ justify-content: space-between;
1962
+ gap: 10px;
1963
+ margin-bottom: 12px;
1964
+ }
1965
+
1966
+ .dd-history-preview-header h3 {
1967
+ margin: 0;
1968
+ font-size: 11px;
1969
+ font-weight: 700;
1970
+ letter-spacing: 0.06em;
1971
+ text-transform: uppercase;
1972
+ color: var(--dd-muted);
1973
+ }
1974
+
1975
+ .dd-history-dl {
1976
+ display: grid;
1977
+ gap: 10px;
1978
+ margin: 0 0 16px;
1979
+ }
1980
+
1981
+ .dd-history-dl div {
1982
+ display: grid;
1983
+ gap: 2px;
1984
+ }
1985
+
1986
+ .dd-history-dl dt {
1987
+ font-size: 11px;
1988
+ font-weight: 650;
1989
+ color: var(--dd-muted);
1990
+ text-transform: uppercase;
1991
+ letter-spacing: 0.04em;
1992
+ }
1993
+
1994
+ .dd-history-dl dd {
1995
+ margin: 0;
1996
+ font-size: 14px;
1997
+ }
1998
+
1999
+ .dd-history-preview h4 {
2000
+ margin: 0 0 8px;
2001
+ font-size: 12px;
2002
+ font-weight: 700;
2003
+ }
2004
+
2005
+ .dd-history-widget-list {
2006
+ list-style: none;
2007
+ margin: 0;
2008
+ padding: 0;
2009
+ display: grid;
2010
+ gap: 6px;
2011
+ }
2012
+
2013
+ .dd-history-widget-list li {
2014
+ display: flex;
2015
+ align-items: center;
2016
+ gap: 8px;
2017
+ padding: 8px 10px;
2018
+ border: 1px solid var(--dd-border-subtle);
2019
+ border-radius: var(--dd-radius-sm);
2020
+ background: #fbfcfb;
2021
+ font-size: 13px;
2022
+ }
2023
+
2024
+ @media (max-width: 800px) {
2025
+ .dd-history-body {
2026
+ grid-template-columns: 1fr;
2027
+ }
2028
+
2029
+ .dd-history-tree {
2030
+ border-right: none;
2031
+ border-bottom: 1px solid var(--dd-border);
2032
+ max-height: 45%;
2033
+ }
2034
+ }
2035
+
2036
+ .dd-share-panel,
2037
+ .dd-settings-panel {
2038
+ max-width: 520px;
2039
+ width: min(520px, 94vw);
2040
+ }
2041
+
2042
+ .dd-settings-body {
2043
+ display: flex;
2044
+ flex-direction: column;
2045
+ gap: 12px;
2046
+ }
2047
+
2048
+ .dd-share-list {
2049
+ list-style: none;
2050
+ margin: 12px 0;
2051
+ padding: 0;
2052
+ display: flex;
2053
+ flex-direction: column;
2054
+ gap: 8px;
2055
+ }
2056
+
2057
+ .dd-share-row {
2058
+ display: flex;
2059
+ align-items: center;
2060
+ gap: 8px;
2061
+ }
2062
+
2063
+ .dd-share-user {
2064
+ flex: 1;
2065
+ min-width: 0;
2066
+ display: flex;
2067
+ flex-direction: column;
2068
+ gap: 2px;
2069
+ }
2070
+
2071
+ .dd-share-add {
2072
+ display: flex;
2073
+ flex-wrap: wrap;
2074
+ gap: 8px;
2075
+ margin-top: 12px;
2076
+ }
2077
+
2078
+ .dd-drill-crumb {
2079
+ font-size: 12px;
2080
+ max-width: 280px;
2081
+ overflow: hidden;
2082
+ text-overflow: ellipsis;
2083
+ white-space: nowrap;
2084
+ }
2085
+
2086
+ .dd-inline-error {
2087
+ font-size: 12px;
2088
+ max-width: 200px;
2089
+ }
2090
+
2091
+ /* Compact dialogs (share, settings) — not the 2-col widget editor modal */
2092
+ .dd-dialog {
2093
+ width: min(480px, 100%);
2094
+ max-height: min(720px, calc(100vh - 48px));
2095
+ background: var(--dd-surface);
2096
+ border: 1px solid var(--dd-border);
2097
+ border-radius: 16px;
2098
+ box-shadow: 0 24px 64px rgba(18, 32, 26, 0.22);
2099
+ display: flex;
2100
+ flex-direction: column;
2101
+ overflow: hidden;
2102
+ }
2103
+
2104
+ .dd-dialog-header {
2105
+ display: flex;
2106
+ align-items: center;
2107
+ justify-content: space-between;
2108
+ gap: 12px;
2109
+ padding: 14px 18px;
2110
+ border-bottom: 1px solid var(--dd-border);
2111
+ flex-shrink: 0;
2112
+ }
2113
+
2114
+ .dd-dialog-header h2 {
2115
+ margin: 0;
2116
+ font-size: 1.1rem;
2117
+ letter-spacing: -0.02em;
2118
+ display: inline-flex;
2119
+ align-items: center;
2120
+ gap: 8px;
2121
+ }
2122
+
2123
+ .dd-join-fields {
2124
+ display: flex;
2125
+ flex-direction: column;
2126
+ gap: 8px;
2127
+ }
2128
+
2129
+ .dd-field-tight {
2130
+ margin-bottom: 0;
2131
+ }
2132
+
2133
+ .dd-drill-section {
2134
+ margin: 4px 0 14px;
2135
+ border: 1px solid var(--dd-border-subtle);
2136
+ border-radius: var(--dd-radius-sm);
2137
+ background: #fbfcfb;
2138
+ }
2139
+
2140
+ .dd-drill-section.is-enabled {
2141
+ border-color: var(--dd-border);
2142
+ background: var(--dd-surface);
2143
+ }
2144
+
2145
+ .dd-drill-toggle {
2146
+ display: flex;
2147
+ align-items: center;
2148
+ gap: 8px;
2149
+ padding: 10px 12px;
2150
+ }
2151
+
2152
+ .dd-drill-section.is-enabled .dd-drill-toggle {
2153
+ border-bottom: 1px solid var(--dd-border-subtle);
2154
+ background: #f7faf8;
2155
+ }
2156
+
2157
+ .dd-check-row {
2158
+ display: inline-flex;
2159
+ align-items: center;
2160
+ gap: 10px;
2161
+ min-width: 0;
2162
+ flex: 1;
2163
+ margin: 0;
2164
+ cursor: pointer;
2165
+ font-size: 13px;
2166
+ font-weight: 650;
2167
+ color: var(--dd-ink);
2168
+ user-select: none;
2169
+ }
2170
+
2171
+ .dd-check-field {
2172
+ display: flex;
2173
+ align-items: flex-start;
2174
+ gap: 8px;
2175
+ }
2176
+
2177
+ .dd-check-row input[type='checkbox'] {
2178
+ width: 16px;
2179
+ height: 16px;
2180
+ margin: 0;
2181
+ flex-shrink: 0;
2182
+ accent-color: var(--dd-accent);
2183
+ cursor: pointer;
2184
+ }
2185
+
2186
+ .dd-check-row-text {
2187
+ line-height: 1.25;
2188
+ }
2189
+
2190
+ .dd-drill-options {
2191
+ display: flex;
2192
+ flex-direction: column;
2193
+ gap: 12px;
2194
+ padding: 12px;
2195
+ }
2196
+
2197
+ .dd-filter-legend {
2198
+ display: grid;
2199
+ grid-template-columns: minmax(140px, 1.4fr) minmax(120px, 0.9fr) minmax(120px, 1.1fr) auto;
2200
+ gap: 8px;
2201
+ align-items: center;
2202
+ padding: 0 2px 6px;
2203
+ }
2204
+
2205
+ .dd-filter-legend .dd-label {
2206
+ font-size: 11px;
2207
+ text-transform: uppercase;
2208
+ letter-spacing: 0.04em;
2209
+ }
2210
+
2211
+ .dd-filter-bar-embedded .dd-filter-legend {
2212
+ grid-template-columns: minmax(140px, 1.4fr) minmax(120px, 0.9fr) minmax(120px, 1.1fr) auto;
2213
+ }
2214
+
2215
+ .dd-filter-bar-title {
2216
+ display: inline-flex;
2217
+ align-items: center;
2218
+ gap: 6px;
2219
+ }
2220
+
2221
+ .dd-dialog-body {
2222
+ display: flex;
2223
+ flex-direction: column;
2224
+ gap: 12px;
2225
+ padding: 16px 18px;
2226
+ overflow: auto;
2227
+ min-height: 0;
2228
+ flex: 1;
2229
+ }
2230
+
2231
+ .dd-dialog-empty {
2232
+ padding: 20px 14px;
2233
+ text-align: center;
2234
+ font-size: 13px;
2235
+ color: var(--dd-muted);
2236
+ background: #f7faf8;
2237
+ border: 1px dashed var(--dd-border);
2238
+ border-radius: var(--dd-radius-sm);
2239
+ }
2240
+
2241
+ .dd-dialog-footer {
2242
+ display: flex;
2243
+ align-items: center;
2244
+ gap: 8px;
2245
+ padding: 12px 18px;
2246
+ border-top: 1px solid var(--dd-border);
2247
+ background: #fbfcfb;
2248
+ flex-shrink: 0;
2249
+ }
2250
+
2251
+ .dd-dialog-footer-end {
2252
+ justify-content: flex-end;
2253
+ }
2254
+
2255
+ .dd-share-panel,
2256
+ .dd-settings-panel {
2257
+ width: min(480px, 94vw);
2258
+ max-width: 480px;
2259
+ }
2260
+
2261
+ .dd-share-list {
2262
+ list-style: none;
2263
+ margin: 0;
2264
+ padding: 0;
2265
+ display: flex;
2266
+ flex-direction: column;
2267
+ gap: 8px;
2268
+ }
2269
+
2270
+ .dd-share-row {
2271
+ display: flex;
2272
+ align-items: center;
2273
+ gap: 10px;
2274
+ padding: 10px 12px;
2275
+ border: 1px solid var(--dd-border-subtle);
2276
+ border-radius: var(--dd-radius-sm);
2277
+ background: #fbfcfb;
2278
+ }
2279
+
2280
+ .dd-share-user {
2281
+ flex: 1;
2282
+ min-width: 0;
2283
+ display: flex;
2284
+ flex-direction: column;
2285
+ gap: 2px;
2286
+ }
2287
+
2288
+ .dd-share-name {
2289
+ font-size: 13px;
2290
+ font-weight: 650;
2291
+ overflow: hidden;
2292
+ text-overflow: ellipsis;
2293
+ white-space: nowrap;
2294
+ }
2295
+
2296
+ .dd-share-email {
2297
+ font-size: 11px;
2298
+ overflow: hidden;
2299
+ text-overflow: ellipsis;
2300
+ white-space: nowrap;
2301
+ }
2302
+
2303
+ .dd-share-actions {
2304
+ display: flex;
2305
+ align-items: center;
2306
+ gap: 6px;
2307
+ flex-shrink: 0;
2308
+ }
2309
+
2310
+ .dd-share-perm {
2311
+ width: 110px;
2312
+ flex-shrink: 0;
2313
+ }
2314
+
2315
+ .dd-share-footer {
2316
+ display: grid;
2317
+ grid-template-columns: minmax(0, 1fr) 110px auto;
2318
+ gap: 8px;
2319
+ align-items: center;
2320
+ }
2321
+
2322
+ .dd-share-user-select {
2323
+ min-width: 0;
2324
+ }
2325
+
2326
+ .dd-settings-grid {
2327
+ display: grid;
2328
+ grid-template-columns: 1fr 1fr;
2329
+ gap: 14px 12px;
2330
+ }
2331
+
2332
+ .dd-settings-grid .dd-field {
2333
+ margin-bottom: 0;
2334
+ }
2335
+
2336
+ .dd-theme-section {
2337
+ margin-top: 18px;
2338
+ padding-top: 16px;
2339
+ border-top: 1px solid var(--dd-border-subtle);
2340
+ display: flex;
2341
+ flex-direction: column;
2342
+ gap: 12px;
2343
+ }
2344
+
2345
+ .dd-theme-section-head {
2346
+ display: flex;
2347
+ align-items: flex-start;
2348
+ justify-content: space-between;
2349
+ gap: 12px;
2350
+ }
2351
+
2352
+ .dd-theme-title {
2353
+ margin: 0;
2354
+ font-size: 14px;
2355
+ font-weight: 700;
2356
+ color: var(--dd-ink);
2357
+ }
2358
+
2359
+ .dd-theme-hint {
2360
+ margin: 4px 0 0;
2361
+ }
2362
+
2363
+ .dd-color-row {
2364
+ display: flex;
2365
+ align-items: center;
2366
+ gap: 8px;
2367
+ }
2368
+
2369
+ .dd-color-swatch {
2370
+ width: 36px;
2371
+ height: var(--dd-control-h);
2372
+ padding: 2px;
2373
+ border: 1px solid var(--dd-border);
2374
+ border-radius: var(--dd-radius-sm);
2375
+ background: #fff;
2376
+ cursor: pointer;
2377
+ flex-shrink: 0;
2378
+ }
2379
+
2380
+ .dd-color-hex {
2381
+ font-family: var(--dd-mono);
2382
+ font-size: 12px;
2383
+ min-width: 0;
2384
+ flex: 1;
2385
+ }
2386
+
2387
+ .dd-chart-color-list {
2388
+ display: flex;
2389
+ flex-direction: column;
2390
+ gap: 8px;
2391
+ }
2392
+
2393
+ .dd-add-color {
2394
+ align-self: flex-start;
2395
+ margin-top: 4px;
2396
+ }
2397
+
2398
+ .dd-theme-preview {
2399
+ display: flex;
2400
+ flex-wrap: wrap;
2401
+ gap: 6px;
2402
+ margin-top: 10px;
2403
+ }
2404
+
2405
+ .dd-theme-preview-chip {
2406
+ width: 22px;
2407
+ height: 22px;
2408
+ border-radius: 6px;
2409
+ border: 1px solid rgb(18 32 26 / 12%);
2410
+ box-shadow: inset 0 0 0 1px rgb(255 255 255 / 35%);
2411
+ }
2412
+
2413
+ @media (max-width: 520px) {
2414
+ .dd-settings-grid {
2415
+ grid-template-columns: 1fr;
2416
+ }
2417
+
2418
+ .dd-theme-section-head {
2419
+ flex-direction: column;
2420
+ align-items: stretch;
2421
+ }
2422
+
2423
+ .dd-share-footer {
2424
+ grid-template-columns: 1fr;
2425
+ }
2426
+
2427
+ .dd-share-perm {
2428
+ width: 100%;
2429
+ }
2430
+
2431
+ .dd-share-row {
2432
+ flex-wrap: wrap;
2433
+ }
2434
+
2435
+ .dd-share-actions {
2436
+ width: 100%;
2437
+ justify-content: flex-end;
2438
+ }
2439
+ }
2440
+
2441
+ .dd-drill-crumb {
2442
+ font-size: 12px;
2443
+ max-width: 280px;
2444
+ overflow: hidden;
2445
+ text-overflow: ellipsis;
2446
+ white-space: nowrap;
2447
+ }
2448
+
2449
+ .dd-inline-error {
2450
+ font-size: 12px;
2451
+ max-width: 200px;
2452
+ }
2453
+
2454
+ /* RTL layout mirrors */
2455
+ .dd-root[dir='rtl'] .dd-toolbar,
2456
+ .dd-root[dir='rtl'] .dd-widget-header,
2457
+ .dd-root[dir='rtl'] .dd-share-row,
2458
+ .dd-root[dir='rtl'] .dd-share-actions,
2459
+ .dd-root[dir='rtl'] .dd-dialog-footer-end {
2460
+ flex-direction: row-reverse;
2461
+ }
2462
+
2463
+ .dd-root[dir='rtl'] .dd-toolbar-left,
2464
+ .dd-root[dir='rtl'] .dd-toolbar-right {
2465
+ flex-direction: row-reverse;
2466
+ }
2467
+
2468
+ .dd-root[dir='rtl'] .dd-widget-drag,
2469
+ .dd-root[dir='rtl'] .dd-widget-title-wrap {
2470
+ padding: 0 10px 0 8px;
2471
+ }
2472
+
2473
+ .dd-toolbar-export {
2474
+ display: inline-flex;
2475
+ align-items: center;
2476
+ gap: 5px;
2477
+ }
2478
+
2479
+ /* —— Print / Export PDF ——
2480
+ Grid layout uses absolute positioning; forcing height:auto collapses it to a
2481
+ blank page. In print mode we flatten items into normal document flow. */
2482
+ @media print {
2483
+ @page {
2484
+ size: auto;
2485
+ margin: 10mm;
2486
+ }
2487
+
2488
+ html.dd-print-mode,
2489
+ html.dd-print-mode body,
2490
+ html.dd-print-mode #root {
2491
+ height: auto !important;
2492
+ min-height: 0 !important;
2493
+ overflow: visible !important;
2494
+ background: #fff !important;
2495
+ }
2496
+
2497
+ html.dd-print-mode .app-shell,
2498
+ html.dd-print-mode .app-content,
2499
+ html.dd-print-mode .dd-root,
2500
+ html.dd-print-mode .dd-workspace,
2501
+ html.dd-print-mode .dd-main,
2502
+ html.dd-print-mode .dd-canvas {
2503
+ display: block !important;
2504
+ position: static !important;
2505
+ height: auto !important;
2506
+ min-height: 0 !important;
2507
+ max-height: none !important;
2508
+ overflow: visible !important;
2509
+ flex: none !important;
2510
+ width: 100% !important;
2511
+ margin: 0 !important;
2512
+ padding: 0 !important;
2513
+ border: none !important;
2514
+ box-shadow: none !important;
2515
+ background: #fff !important;
2516
+ contain: none !important;
2517
+ isolation: auto !important;
2518
+ }
2519
+
2520
+ html.dd-print-mode .app-topbar,
2521
+ html.dd-print-mode .app-nav,
2522
+ html.dd-print-mode .app-sidebar,
2523
+ html.dd-print-mode .dd-toolbar,
2524
+ html.dd-print-mode .dd-filters-side,
2525
+ html.dd-print-mode .dd-filter-bar,
2526
+ html.dd-print-mode .dd-modal-backdrop,
2527
+ html.dd-print-mode .dd-widget-edit,
2528
+ html.dd-print-mode .dd-widget-delete,
2529
+ html.dd-print-mode .dd-widget-header-actions,
2530
+ html.dd-print-mode .dd-widget-drag-grip,
2531
+ html.dd-print-mode .dd-canvas-empty,
2532
+ html.dd-print-mode .dd-badge,
2533
+ html.dd-print-mode .react-resizable-handle {
2534
+ display: none !important;
2535
+ }
2536
+
2537
+ html.dd-print-mode .dd-canvas {
2538
+ padding: 0 !important;
2539
+ }
2540
+
2541
+ html.dd-print-mode .dd-canvas .react-grid-layout {
2542
+ display: block !important;
2543
+ position: static !important;
2544
+ height: auto !important;
2545
+ min-height: 0 !important;
2546
+ width: 100% !important;
2547
+ }
2548
+
2549
+ html.dd-print-mode .dd-canvas .react-grid-item {
2550
+ position: static !important;
2551
+ left: auto !important;
2552
+ top: auto !important;
2553
+ right: auto !important;
2554
+ bottom: auto !important;
2555
+ width: 100% !important;
2556
+ height: auto !important;
2557
+ min-height: 0 !important;
2558
+ margin: 0 0 14px !important;
2559
+ padding: 0 !important;
2560
+ transform: none !important;
2561
+ transition: none !important;
2562
+ break-inside: avoid;
2563
+ page-break-inside: avoid;
2564
+ }
2565
+
2566
+ html.dd-print-mode .dd-canvas .react-grid-item > .dd-widget,
2567
+ html.dd-print-mode .dd-canvas .react-grid-item > div {
2568
+ height: auto !important;
2569
+ min-height: 0 !important;
2570
+ }
2571
+
2572
+ html.dd-print-mode .dd-widget {
2573
+ height: auto !important;
2574
+ max-height: none !important;
2575
+ overflow: visible !important;
2576
+ break-inside: avoid;
2577
+ page-break-inside: avoid;
2578
+ box-shadow: none !important;
2579
+ border: 1px solid #cfdcd5 !important;
2580
+ border-radius: 8px !important;
2581
+ background: #fff !important;
2582
+ }
2583
+
2584
+ html.dd-print-mode .dd-widget.selected {
2585
+ outline: none !important;
2586
+ box-shadow: none !important;
2587
+ border-color: #cfdcd5 !important;
2588
+ }
2589
+
2590
+ html.dd-print-mode .dd-widget-body {
2591
+ overflow: visible !important;
2592
+ height: auto !important;
2593
+ min-height: 0 !important;
2594
+ }
2595
+
2596
+ html.dd-print-mode .dd-chart-fill {
2597
+ height: 260px !important;
2598
+ min-height: 260px !important;
2599
+ max-height: none !important;
2600
+ overflow: visible !important;
2601
+ }
2602
+
2603
+ html.dd-print-mode .recharts-responsive-container,
2604
+ html.dd-print-mode .recharts-wrapper,
2605
+ html.dd-print-mode .recharts-surface {
2606
+ width: 100% !important;
2607
+ overflow: visible !important;
2608
+ }
2609
+
2610
+ html.dd-print-mode .dd-kpi {
2611
+ min-height: 80px;
2612
+ padding: 12px !important;
2613
+ }
2614
+
2615
+ html.dd-print-mode .dd-table-wrap,
2616
+ html.dd-print-mode .dd-listbox,
2617
+ html.dd-print-mode .dd-listbox-scroll,
2618
+ html.dd-print-mode .dd-query-data-scroll {
2619
+ height: auto !important;
2620
+ max-height: none !important;
2621
+ overflow: visible !important;
2622
+ }
2623
+
2624
+ html.dd-print-mode .dd-listbox-item {
2625
+ break-inside: avoid;
2626
+ }
2627
+ }
2628
+