@saasira/holi 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/holi.css ADDED
@@ -0,0 +1,3255 @@
1
+ .holi-accordion {
2
+ border: 1px solid #d9dee8;
3
+ border-radius: 10px;
4
+ background: #fff;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .holi-accordion-list {
9
+ display: grid;
10
+ }
11
+
12
+ .holi-accordion .accordion-item + .accordion-item {
13
+ border-top: 1px solid #e6eaf0;
14
+ }
15
+
16
+ .holi-accordion .accordion-trigger {
17
+ width: 100%;
18
+ border: 0;
19
+ background: #f8fafc;
20
+ color: #0f172a;
21
+ text-align: left;
22
+ padding: 12px 14px;
23
+ font-weight: 600;
24
+ cursor: pointer;
25
+ }
26
+
27
+ .holi-accordion .accordion-item.is-open .accordion-trigger {
28
+ background: #eef4fb;
29
+ }
30
+
31
+ .holi-accordion .accordion-panel {
32
+ padding: 12px 14px;
33
+ background: #fff;
34
+ }
35
+
36
+ .holi-calendar {
37
+ border: 1px solid #d9dee8;
38
+ border-radius: 10px;
39
+ padding: 10px;
40
+ background: #ffffff;
41
+ width: min(340px, 100%);
42
+ display: grid;
43
+ gap: 10px;
44
+ }
45
+
46
+ .holi-calendar-nav {
47
+ display: grid;
48
+ grid-template-columns: auto 1fr auto;
49
+ align-items: center;
50
+ gap: 8px;
51
+ }
52
+
53
+ .holi-calendar-nav button {
54
+ border: 1px solid #cfd6df;
55
+ border-radius: 6px;
56
+ background: #fff;
57
+ padding: 4px 8px;
58
+ cursor: pointer;
59
+ }
60
+
61
+ .holi-calendar-title {
62
+ margin: 0;
63
+ text-align: center;
64
+ font-size: 14px;
65
+ color: #0f172a;
66
+ }
67
+
68
+ .holi-calendar-grid {
69
+ width: 100%;
70
+ border-collapse: collapse;
71
+ table-layout: fixed;
72
+ }
73
+
74
+ .holi-calendar-grid th {
75
+ font-size: 12px;
76
+ font-weight: 600;
77
+ color: #64748b;
78
+ padding: 4px 0;
79
+ }
80
+
81
+ .holi-calendar-day {
82
+ text-align: center;
83
+ padding: 8px 0;
84
+ border-radius: 6px;
85
+ cursor: pointer;
86
+ user-select: none;
87
+ }
88
+
89
+ .holi-calendar-day:hover {
90
+ background: #eff6ff;
91
+ }
92
+
93
+ .holi-calendar-day.is-selected {
94
+ background: #2563eb;
95
+ color: #ffffff;
96
+ }
97
+
98
+ .holi-calendar-day.is-today:not(.is-selected) {
99
+ background: #eff6ff;
100
+ color: #1e3a8a;
101
+ box-shadow: inset 0 0 0 1px #93c5fd;
102
+ }
103
+
104
+ .holi-calendar-day.is-outside {
105
+ color: #cbd5e1;
106
+ cursor: default;
107
+ }
108
+
109
+ .holi-calendar-day.is-invalid {
110
+ color: #b91c1c;
111
+ background: #fef2f2;
112
+ cursor: not-allowed;
113
+ }
114
+
115
+ .holi-calendar-day.is-warning {
116
+ color: #92400e;
117
+ background: #fffbeb;
118
+ }
119
+
120
+ .holi-calendar-time {
121
+ display: inline-flex;
122
+ align-items: center;
123
+ gap: 6px;
124
+ }
125
+
126
+ .holi-calendar-time input {
127
+ width: 54px;
128
+ padding: 4px 6px;
129
+ border: 1px solid #cfd6df;
130
+ border-radius: 6px;
131
+ }
132
+
133
+ .holi-calendar-time button {
134
+ border: 1px solid #cfd6df;
135
+ border-radius: 6px;
136
+ background: #fff;
137
+ padding: 4px 8px;
138
+ cursor: pointer;
139
+ }
140
+
141
+ .holi-calendar-messages {
142
+ display: grid;
143
+ gap: 4px;
144
+ }
145
+
146
+ .holi-calendar-message {
147
+ font-size: 12px;
148
+ padding: 6px 8px;
149
+ border-radius: 6px;
150
+ }
151
+
152
+ .holi-calendar-message.is-error {
153
+ background: #fef2f2;
154
+ color: #b91c1c;
155
+ }
156
+
157
+ .holi-calendar-message.is-warning {
158
+ background: #fffbeb;
159
+ color: #92400e;
160
+ }
161
+
162
+ .holi-calendar-live {
163
+ position: absolute;
164
+ inline-size: 1px;
165
+ block-size: 1px;
166
+ overflow: hidden;
167
+ clip: rect(0 0 0 0);
168
+ }
169
+
170
+ .holi-carousel,
171
+ .carousel {
172
+ position: relative;
173
+ max-width: 960px;
174
+ margin: 0 auto;
175
+ border: 1px solid #d6dde8;
176
+ border-radius: 12px;
177
+ background: #fff;
178
+ overflow: hidden;
179
+ }
180
+
181
+ .holi-carousel-viewport {
182
+ position: relative;
183
+ overflow: hidden;
184
+ }
185
+
186
+ .holi-carousel .slides,
187
+ .carousel .slides {
188
+ display: flex;
189
+ transition: transform 320ms ease;
190
+ will-change: transform;
191
+ }
192
+
193
+ .holi-carousel .slide,
194
+ .carousel .slide {
195
+ flex-shrink: 0;
196
+ min-width: 100%;
197
+ position: relative;
198
+ }
199
+
200
+ .holi-carousel .slide img,
201
+ .carousel .slide img {
202
+ width: 100%;
203
+ display: block;
204
+ }
205
+
206
+ .holi-carousel.fade .slide,
207
+ .carousel.fade .slide {
208
+ opacity: 0;
209
+ visibility: hidden;
210
+ position: absolute;
211
+ inset: 0;
212
+ transition: opacity 280ms ease, visibility 280ms ease;
213
+ }
214
+
215
+ .holi-carousel.fade .slide.active,
216
+ .carousel.fade .slide.active {
217
+ opacity: 1;
218
+ visibility: visible;
219
+ position: relative;
220
+ }
221
+
222
+ .holi-carousel .anchors,
223
+ .carousel .anchors {
224
+ position: absolute;
225
+ top: 50%;
226
+ left: 0;
227
+ right: 0;
228
+ transform: translateY(-50%);
229
+ display: flex;
230
+ justify-content: space-between;
231
+ padding: 0 10px;
232
+ pointer-events: none;
233
+ }
234
+
235
+ .holi-carousel .anchors button,
236
+ .carousel .anchors button {
237
+ pointer-events: auto;
238
+ width: 34px;
239
+ height: 34px;
240
+ border: 1px solid rgba(255, 255, 255, 0.6);
241
+ background: rgba(15, 23, 42, 0.48);
242
+ color: #fff;
243
+ border-radius: 50%;
244
+ cursor: pointer;
245
+ }
246
+
247
+ .holi-carousel .anchors button:hover,
248
+ .holi-carousel .anchors button:focus-visible,
249
+ .carousel .anchors button:hover,
250
+ .carousel .anchors button:focus-visible {
251
+ background: rgba(15, 23, 42, 0.72);
252
+ }
253
+
254
+ .holi-carousel-footer {
255
+ border-top: 1px solid #edf1f7;
256
+ background: #f8fafc;
257
+ padding: 10px 12px 12px;
258
+ }
259
+
260
+ .holi-carousel .dots,
261
+ .carousel .dots {
262
+ display: flex;
263
+ justify-content: center;
264
+ align-items: center;
265
+ gap: 7px;
266
+ }
267
+
268
+ .holi-carousel .dot,
269
+ .carousel .dot {
270
+ width: 10px;
271
+ height: 10px;
272
+ border: 0;
273
+ border-radius: 50%;
274
+ background: #c5ceda;
275
+ cursor: pointer;
276
+ }
277
+
278
+ .holi-carousel .dot.selected,
279
+ .carousel .dot.selected {
280
+ background: #2563eb;
281
+ }
282
+
283
+ .holi-carousel .controls,
284
+ .carousel .controls {
285
+ display: flex;
286
+ justify-content: center;
287
+ gap: 8px;
288
+ margin-top: 8px;
289
+ }
290
+
291
+ .holi-carousel .controls button,
292
+ .carousel .controls button {
293
+ border: 1px solid #c9d3e3;
294
+ background: #fff;
295
+ color: #0f172a;
296
+ border-radius: 8px;
297
+ padding: 6px 10px;
298
+ cursor: pointer;
299
+ }
300
+
301
+ .holi-carousel .controls button:hover,
302
+ .holi-carousel .controls button:focus-visible,
303
+ .carousel .controls button:hover,
304
+ .carousel .controls button:focus-visible {
305
+ background: #f1f5f9;
306
+ }
307
+
308
+ .holi-carousel .progress-wrapper,
309
+ .carousel .progress-wrapper {
310
+ margin-top: 10px;
311
+ height: 4px;
312
+ border-radius: 999px;
313
+ background: #e2e8f0;
314
+ overflow: hidden;
315
+ }
316
+
317
+ .holi-carousel .progress-bar,
318
+ .carousel .progress-bar {
319
+ width: 0%;
320
+ height: 100%;
321
+ background: #2563eb;
322
+ }
323
+
324
+ .holi-carousel .skip-link,
325
+ .carousel .skip-link {
326
+ position: absolute;
327
+ top: -48px;
328
+ left: 10px;
329
+ z-index: 20;
330
+ background: #2563eb;
331
+ color: #fff;
332
+ border-radius: 8px;
333
+ padding: 8px 10px;
334
+ text-decoration: none;
335
+ }
336
+
337
+ .holi-carousel .skip-link:focus,
338
+ .carousel .skip-link:focus {
339
+ top: 10px;
340
+ }
341
+
342
+ .holi-carousel .sr-only,
343
+ .carousel .sr-only {
344
+ position: absolute;
345
+ width: 1px;
346
+ height: 1px;
347
+ margin: -1px;
348
+ padding: 0;
349
+ overflow: hidden;
350
+ clip: rect(0, 0, 0, 0);
351
+ border: 0;
352
+ }
353
+
354
+ .holi-chart {
355
+ --chart-height: 220px;
356
+ --chart-border: #d9e2ef;
357
+ --chart-grid: #e8edf5;
358
+ --chart-line: #2563eb;
359
+ --chart-area: rgba(37, 99, 235, 0.18);
360
+ --chart-hole: #ffffff;
361
+ border: 1px solid var(--chart-border);
362
+ border-radius: 12px;
363
+ background: #ffffff;
364
+ padding: 12px;
365
+ }
366
+
367
+ .holi-chart-title {
368
+ margin: 0 0 10px;
369
+ font-size: 14px;
370
+ font-weight: 600;
371
+ color: #0f172a;
372
+ }
373
+
374
+ .holi-chart-svg {
375
+ display: block;
376
+ width: 100%;
377
+ height: var(--chart-height);
378
+ }
379
+
380
+ .holi-chart-empty {
381
+ margin: 0;
382
+ font-size: 13px;
383
+ color: #64748b;
384
+ }
385
+
386
+ .holi-chart-grid line {
387
+ stroke: var(--chart-grid);
388
+ stroke-width: 0.6;
389
+ }
390
+
391
+ .holi-chart-line {
392
+ fill: none;
393
+ stroke: var(--chart-line);
394
+ stroke-width: 2;
395
+ stroke-linecap: round;
396
+ stroke-linejoin: round;
397
+ }
398
+
399
+ .holi-chart-area {
400
+ fill: var(--chart-area);
401
+ }
402
+
403
+ .holi-chart-dot,
404
+ .holi-chart-bar,
405
+ .holi-chart-slice {
406
+ cursor: pointer;
407
+ transition: opacity 0.15s ease;
408
+ }
409
+
410
+ .holi-chart-dot:hover,
411
+ .holi-chart-bar:hover,
412
+ .holi-chart-slice:hover {
413
+ opacity: 0.85;
414
+ }
415
+
416
+ .holi-chart-hole {
417
+ fill: var(--chart-hole);
418
+ }
419
+
420
+ .holi-chart-legend {
421
+ margin: 10px 0 0;
422
+ padding: 0;
423
+ list-style: none;
424
+ display: grid;
425
+ grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
426
+ gap: 6px 12px;
427
+ }
428
+
429
+ .holi-chart-legend-item {
430
+ display: inline-flex;
431
+ align-items: center;
432
+ gap: 6px;
433
+ min-width: 0;
434
+ font-size: 12px;
435
+ color: #334155;
436
+ }
437
+
438
+ .holi-chart-legend-swatch {
439
+ width: 10px;
440
+ height: 10px;
441
+ border-radius: 999px;
442
+ flex: 0 0 auto;
443
+ }
444
+
445
+ .holi-chart-legend-label {
446
+ white-space: nowrap;
447
+ overflow: hidden;
448
+ text-overflow: ellipsis;
449
+ }
450
+
451
+ .holi-breadcrumbs {
452
+ --holi-breadcrumb-separator: "/";
453
+ }
454
+
455
+ .holi-breadcrumbs-list {
456
+ list-style: none;
457
+ margin: 0;
458
+ padding: 0;
459
+ display: flex;
460
+ align-items: center;
461
+ flex-wrap: wrap;
462
+ gap: 6px;
463
+ }
464
+
465
+ .holi-breadcrumb-item {
466
+ display: inline-flex;
467
+ align-items: center;
468
+ gap: 6px;
469
+ color: #334155;
470
+ }
471
+
472
+ .holi-breadcrumb-item + .holi-breadcrumb-item::before {
473
+ content: var(--holi-breadcrumb-separator);
474
+ color: #94a3b8;
475
+ margin-right: 2px;
476
+ }
477
+
478
+ .holi-breadcrumb-link {
479
+ color: #2563eb;
480
+ text-decoration: none;
481
+ }
482
+
483
+ .holi-breadcrumb-link:hover,
484
+ .holi-breadcrumb-link:focus-visible {
485
+ text-decoration: underline;
486
+ }
487
+
488
+ .holi-breadcrumb-current {
489
+ color: #0f172a;
490
+ font-weight: 600;
491
+ }
492
+
493
+ .holi-breadcrumb-ellipsis {
494
+ color: #64748b;
495
+ }
496
+
497
+ .holi-backtotop {
498
+ position: fixed;
499
+ right: 16px;
500
+ bottom: 16px;
501
+ z-index: 900;
502
+ opacity: 0;
503
+ transform: translateY(10px);
504
+ transition: opacity 180ms ease, transform 180ms ease;
505
+ pointer-events: none;
506
+ }
507
+
508
+ .holi-backtotop.is-visible {
509
+ opacity: 1;
510
+ transform: translateY(0);
511
+ pointer-events: auto;
512
+ }
513
+
514
+ .holi-backtotop-button {
515
+ display: inline-flex;
516
+ align-items: center;
517
+ gap: 6px;
518
+ border: 1px solid #cbd5e1;
519
+ border-radius: 999px;
520
+ background: #0f172a;
521
+ color: #ffffff;
522
+ padding: 8px 14px;
523
+ font: inherit;
524
+ line-height: 1.2;
525
+ cursor: pointer;
526
+ }
527
+
528
+ .holi-backtotop-button:hover,
529
+ .holi-backtotop-button:focus-visible {
530
+ background: #1e293b;
531
+ }
532
+
533
+ .holi-backtotop-button:focus-visible {
534
+ outline: 2px solid #93c5fd;
535
+ outline-offset: 2px;
536
+ }
537
+
538
+ .holi-backtotop-prefix:empty,
539
+ .holi-backtotop-suffix:empty {
540
+ display: none;
541
+ }
542
+
543
+ .holi-button {
544
+ display: inline-flex;
545
+ align-items: center;
546
+ gap: 8px;
547
+ border: 1px solid #1d2939;
548
+ border-radius: 8px;
549
+ padding: 8px 12px;
550
+ background: #1d2939;
551
+ color: #ffffff;
552
+ cursor: pointer;
553
+ }
554
+
555
+ .holi-button[data-variant="secondary"] {
556
+ background: #ffffff;
557
+ color: #1d2939;
558
+ }
559
+
560
+ .holi-button:disabled {
561
+ opacity: 0.5;
562
+ cursor: not-allowed;
563
+ }
564
+
565
+ .holi-button-prefix:empty,
566
+ .holi-button-suffix:empty {
567
+ display: none;
568
+ }
569
+
570
+ .holi-radio-group {
571
+ border: 1px solid #d0d5dd;
572
+ border-radius: 8px;
573
+ padding: 10px 12px;
574
+ display: grid;
575
+ gap: 8px;
576
+ }
577
+
578
+ .holi-radio-options {
579
+ display: grid;
580
+ gap: 8px;
581
+ }
582
+
583
+ .holi-radio-option {
584
+ display: inline-flex;
585
+ gap: 8px;
586
+ align-items: center;
587
+ }
588
+
589
+ .holi-radio-group .error {
590
+ color: #b42318;
591
+ font-size: 0.88rem;
592
+ }
593
+
594
+ .holi.datagrid {
595
+ border: 1px solid #d9dee8;
596
+ border-radius: 8px;
597
+ background: #fff;
598
+ overflow: hidden;
599
+ margin: 12px 0 28px;
600
+ padding: 0;
601
+ }
602
+
603
+ .holi.datagrid .datagrid-toolbar {
604
+ display: flex;
605
+ flex-wrap: wrap;
606
+ gap: 10px;
607
+ align-items: center;
608
+ padding: 10px 12px;
609
+ background: #f5f7fa;
610
+ border-bottom: 1px solid #e6eaf0;
611
+ }
612
+
613
+ .holi.datagrid .datagrid-toolbar input[type="search"],
614
+ .holi.datagrid .datagrid-toolbar select {
615
+ min-height: 32px;
616
+ padding: 4px 8px;
617
+ max-width: 100%;
618
+ }
619
+
620
+ .holi.datagrid .datagrid-toolbar button,
621
+ .holi.datagrid .datagrid-card-actions button {
622
+ border: 1px solid #cfd6df;
623
+ background: #fff;
624
+ border-radius: 6px;
625
+ padding: 4px 8px;
626
+ cursor: pointer;
627
+ }
628
+
629
+ .holi.datagrid .datagrid-field-chooser {
630
+ border: 1px solid #d9dee8;
631
+ border-radius: 6px;
632
+ padding: 10px;
633
+ margin: 10px 12px;
634
+ background: #f9fafb;
635
+ }
636
+
637
+ .holi.datagrid .datagrid-field-option {
638
+ display: flex;
639
+ align-items: center;
640
+ gap: 8px;
641
+ margin: 4px 0;
642
+ }
643
+
644
+ .holi.datagrid .datagrid-content {
645
+ padding: 10px 12px;
646
+ }
647
+
648
+ .holi.datagrid .datagrid-content.datagrid-scrollable {
649
+ max-height: 500px;
650
+ overflow-y: auto;
651
+ }
652
+
653
+ .holi.datagrid .datagrid-cards {
654
+ display: grid;
655
+ gap: 12px;
656
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
657
+ }
658
+
659
+ .holi.datagrid[data-cards="1"] .datagrid-cards {
660
+ grid-template-columns: repeat(1, minmax(0, 1fr));
661
+ }
662
+
663
+ .holi.datagrid[data-cards="2"] .datagrid-cards {
664
+ grid-template-columns: repeat(2, minmax(0, 1fr));
665
+ }
666
+
667
+ .holi.datagrid[data-cards="3"] .datagrid-cards {
668
+ grid-template-columns: repeat(3, minmax(0, 1fr));
669
+ }
670
+
671
+ .holi.datagrid[data-cards="4"] .datagrid-cards {
672
+ grid-template-columns: repeat(4, minmax(0, 1fr));
673
+ }
674
+
675
+ .holi.datagrid .datagrid-card {
676
+ border: 1px solid #e5e9f0;
677
+ border-radius: 8px;
678
+ background: #f8fafc;
679
+ padding: 10px;
680
+ }
681
+
682
+ .holi.datagrid .datagrid-card-head {
683
+ display: flex;
684
+ align-items: center;
685
+ gap: 8px;
686
+ margin-bottom: 8px;
687
+ }
688
+
689
+ .holi.datagrid .datagrid-card-avatar {
690
+ width: 32px;
691
+ height: 32px;
692
+ border-radius: 999px;
693
+ object-fit: cover;
694
+ background: #e5e7eb;
695
+ }
696
+
697
+ .holi.datagrid .datagrid-card-icon {
698
+ width: 30px;
699
+ height: 30px;
700
+ border-radius: 999px;
701
+ display: inline-flex;
702
+ align-items: center;
703
+ justify-content: center;
704
+ background: #e5ebf3;
705
+ }
706
+
707
+ .holi.datagrid .datagrid-card-title {
708
+ margin: 0;
709
+ font-size: 14px;
710
+ color: #111827;
711
+ }
712
+
713
+ .holi.datagrid .datagrid-field {
714
+ display: grid;
715
+ grid-template-columns: 1fr 1fr;
716
+ gap: 8px;
717
+ padding: 4px 0;
718
+ border-top: 1px solid #edf1f7;
719
+ }
720
+
721
+ .holi.datagrid .datagrid-field:first-child {
722
+ border-top: 0;
723
+ }
724
+
725
+ .holi.datagrid .datagrid-field-label {
726
+ color: #6b7280;
727
+ font-size: 12px;
728
+ }
729
+
730
+ .holi.datagrid .datagrid-field-value {
731
+ color: #111827;
732
+ font-size: 13px;
733
+ text-align: right;
734
+ }
735
+
736
+ .holi.datagrid .datagrid-card-actions {
737
+ border-top: 1px solid #edf1f7;
738
+ margin-top: 8px;
739
+ padding-top: 8px;
740
+ display: flex;
741
+ flex-wrap: wrap;
742
+ gap: 6px;
743
+ }
744
+
745
+ .holi.datagrid .datagrid-empty {
746
+ border: 1px dashed #d5dbe5;
747
+ border-radius: 8px;
748
+ background: #fbfcfd;
749
+ color: #4b5563;
750
+ padding: 16px;
751
+ text-align: center;
752
+ }
753
+
754
+ .holi.datagrid .datagrid-footer {
755
+ padding: 8px 12px;
756
+ color: #4b5563;
757
+ font-size: 13px;
758
+ display: flex;
759
+ align-items: center;
760
+ justify-content: space-between;
761
+ gap: 8px;
762
+ background: #f5f7fa;
763
+ border-top: 1px solid #e6eaf0;
764
+ }
765
+
766
+ .holi.datagrid [data-role="pagination-controls"] {
767
+ display: inline-flex;
768
+ align-items: center;
769
+ gap: 8px;
770
+ }
771
+
772
+ .holi.datagrid [data-role="pagination-controls"][hidden] {
773
+ display: none;
774
+ }
775
+
776
+ .holi.datagrid [data-role="request-status"] {
777
+ display: inline-flex;
778
+ align-items: center;
779
+ gap: 8px;
780
+ }
781
+
782
+ .holi.datagrid [data-role="request-status"][data-state="idle"] {
783
+ display: none;
784
+ }
785
+
786
+ .holi.datagrid [data-role="request-status"][data-state="loading"]::before {
787
+ content: "";
788
+ width: 12px;
789
+ height: 12px;
790
+ border: 2px solid #cfd6df;
791
+ border-top-color: #6b7280;
792
+ border-radius: 50%;
793
+ display: inline-block;
794
+ animation: datagrid-spin 0.7s linear infinite;
795
+ }
796
+
797
+ .holi.datagrid [data-role="request-status"][data-state="error"] {
798
+ color: #b91c1c;
799
+ }
800
+
801
+ @keyframes datagrid-spin {
802
+ from { transform: rotate(0deg); }
803
+ to { transform: rotate(360deg); }
804
+ }
805
+
806
+ @media (max-width: 1080px) {
807
+ .holi.datagrid[data-cards="3"] .datagrid-cards,
808
+ .holi.datagrid[data-cards="4"] .datagrid-cards {
809
+ grid-template-columns: repeat(2, minmax(0, 1fr));
810
+ }
811
+ }
812
+
813
+ @media (max-width: 700px) {
814
+ .holi.datagrid .datagrid-toolbar > * {
815
+ flex: 1 1 100%;
816
+ }
817
+
818
+ .holi.datagrid .datagrid-toolbar input[type="search"],
819
+ .holi.datagrid .datagrid-toolbar select,
820
+ .holi.datagrid .datagrid-toolbar button {
821
+ width: 100%;
822
+ min-height: 36px;
823
+ }
824
+
825
+ .holi.datagrid .datagrid-footer {
826
+ flex-wrap: wrap;
827
+ align-items: flex-start;
828
+ }
829
+
830
+ .holi.datagrid [data-role="pagination-controls"] {
831
+ flex-wrap: wrap;
832
+ }
833
+
834
+ .holi.datagrid .datagrid-field {
835
+ grid-template-columns: 1fr;
836
+ gap: 2px;
837
+ }
838
+
839
+ .holi.datagrid .datagrid-field-value {
840
+ text-align: left;
841
+ }
842
+
843
+ .holi.datagrid .datagrid-cards {
844
+ grid-template-columns: 1fr;
845
+ }
846
+ }
847
+
848
+
849
+ .holi.datatable {
850
+ width: 100%;
851
+ max-width: 100%;
852
+ min-width: 0;
853
+ box-sizing: border-box;
854
+ border: 1px solid #d9dee8;
855
+ border-radius: 8px;
856
+ padding: 0;
857
+ margin: 12px 0 28px;
858
+ background: #fff;
859
+ overflow: hidden;
860
+ }
861
+
862
+ .holi.datatable .datatable-toolbar {
863
+ display: flex;
864
+ flex-wrap: wrap;
865
+ gap: 10px;
866
+ align-items: center;
867
+ margin-bottom: 0;
868
+ padding: 10px 12px;
869
+ background: #f5f7fa;
870
+ border-bottom: 1px solid #e6eaf0;
871
+ }
872
+
873
+ .holi.datatable .datatable-toolbar input[type="search"],
874
+ .holi.datatable .datatable-toolbar select {
875
+ min-height: 32px;
876
+ padding: 4px 8px;
877
+ max-width: 100%;
878
+ }
879
+
880
+ .holi.datatable .datatable-toolbar button,
881
+ .holi.datatable .datatable-actions-cell button {
882
+ border: 1px solid #cfd6df;
883
+ background: #fff;
884
+ border-radius: 6px;
885
+ padding: 4px 8px;
886
+ cursor: pointer;
887
+ }
888
+
889
+ .holi.datatable .datatable-column-chooser {
890
+ border: 1px solid #d9dee8;
891
+ border-radius: 6px;
892
+ padding: 10px;
893
+ margin: 10px 12px;
894
+ background: #f9fafb;
895
+ }
896
+
897
+ .holi.datatable .datatable-column-option {
898
+ display: flex;
899
+ align-items: center;
900
+ gap: 8px;
901
+ margin: 4px 0;
902
+ }
903
+
904
+ .holi.datatable .datatable-table {
905
+ width: 100%;
906
+ border-collapse: collapse;
907
+ min-width: 680px;
908
+ }
909
+
910
+ .holi.datatable .datatable-content.datatable-scrollable {
911
+ max-height: 420px;
912
+ overflow-y: auto;
913
+ }
914
+
915
+ .holi.datatable .datatable-content {
916
+ width: 100%;
917
+ max-width: 100%;
918
+ min-width: 0;
919
+ overflow-x: auto;
920
+ -webkit-overflow-scrolling: touch;
921
+ }
922
+
923
+ .holi.datatable .datatable-table th,
924
+ .holi.datatable .datatable-table td {
925
+ border-bottom: 1px solid #e7eaf0;
926
+ text-align: left;
927
+ padding: 8px;
928
+ }
929
+
930
+ .holi.datatable .datatable-actions-cell {
931
+ white-space: nowrap;
932
+ display: flex;
933
+ flex-wrap: wrap;
934
+ gap: 6px;
935
+ }
936
+
937
+ .holi.datatable .datatable-table thead th {
938
+ background: #f3f5f8;
939
+ }
940
+
941
+ .holi.datatable .datatable-table .datatable-pinned-left,
942
+ .holi.datatable .datatable-table .datatable-pinned-right {
943
+ position: sticky;
944
+ background: #fff;
945
+ }
946
+
947
+ .holi.datatable .datatable-table .datatable-pinned-left {
948
+ box-shadow: 2px 0 3px rgba(0, 0, 0, 0.05);
949
+ }
950
+
951
+ .holi.datatable .datatable-table .datatable-pinned-right {
952
+ box-shadow: -2px 0 3px rgba(0, 0, 0, 0.05);
953
+ }
954
+
955
+ .holi.datatable .datatable-table tbody .datatable-pinned-left,
956
+ .holi.datatable .datatable-table tbody .datatable-pinned-right {
957
+ z-index: 2;
958
+ }
959
+
960
+ .holi.datatable .datatable-table thead .datatable-pinned-left,
961
+ .holi.datatable .datatable-table thead .datatable-pinned-right {
962
+ z-index: 3;
963
+ }
964
+
965
+ .holi.datatable .datatable-table tbody tr:nth-child(odd) td {
966
+ background: #fbfcfd;
967
+ }
968
+
969
+ .holi.datatable .datatable-table tbody tr:nth-child(even) td {
970
+ background: #f7f9fb;
971
+ }
972
+
973
+ .holi.datatable .datatable-table th button {
974
+ border: 0;
975
+ background: transparent;
976
+ cursor: pointer;
977
+ padding: 0;
978
+ font-weight: 600;
979
+ }
980
+
981
+ .holi.datatable .datatable-footer {
982
+ margin-top: 0;
983
+ padding: 8px 12px;
984
+ color: #4b5563;
985
+ font-size: 13px;
986
+ display: flex;
987
+ align-items: center;
988
+ justify-content: space-between;
989
+ gap: 8px;
990
+ background: #f5f7fa;
991
+ border-top: 1px solid #e6eaf0;
992
+ }
993
+
994
+ .holi.datatable [data-role="pagination-controls"] {
995
+ display: inline-flex;
996
+ align-items: center;
997
+ gap: 8px;
998
+ }
999
+
1000
+ .holi.datatable [data-role="pagination-controls"][hidden] {
1001
+ display: none;
1002
+ }
1003
+
1004
+ .holi.datatable [data-role="request-status"] {
1005
+ display: inline-flex;
1006
+ align-items: center;
1007
+ gap: 8px;
1008
+ }
1009
+
1010
+ .holi.datatable [data-role="request-status"][data-state="idle"] {
1011
+ display: none;
1012
+ }
1013
+
1014
+ .holi.datatable [data-role="request-status"][data-state="loading"] {
1015
+ color: #1f2937;
1016
+ }
1017
+
1018
+ .holi.datatable [data-role="request-status"][data-state="loading"]::before {
1019
+ content: "";
1020
+ width: 12px;
1021
+ height: 12px;
1022
+ border: 2px solid #cfd6df;
1023
+ border-top-color: #6b7280;
1024
+ border-radius: 50%;
1025
+ display: inline-block;
1026
+ animation: datatable-spin 0.7s linear infinite;
1027
+ }
1028
+
1029
+ .holi.datatable [data-role="request-status"][data-state="end"] {
1030
+ color: #374151;
1031
+ }
1032
+
1033
+ .holi.datatable [data-role="request-status"][data-state="error"] {
1034
+ color: #b91c1c;
1035
+ }
1036
+
1037
+ @media (max-width: 900px) {
1038
+ .holi.datatable .datatable-toolbar > * {
1039
+ flex: 1 1 220px;
1040
+ }
1041
+
1042
+ .holi.datatable .datatable-toolbar button {
1043
+ flex: 0 0 auto;
1044
+ }
1045
+
1046
+ .holi.datatable .datatable-footer {
1047
+ flex-wrap: wrap;
1048
+ align-items: flex-start;
1049
+ }
1050
+ }
1051
+
1052
+ @media (max-width: 640px) {
1053
+ .holi.datatable .datatable-toolbar {
1054
+ gap: 8px;
1055
+ }
1056
+
1057
+ .holi.datatable .datatable-toolbar > * {
1058
+ flex: 1 1 100%;
1059
+ }
1060
+
1061
+ .holi.datatable .datatable-toolbar input[type="search"],
1062
+ .holi.datatable .datatable-toolbar select,
1063
+ .holi.datatable .datatable-toolbar button {
1064
+ width: 100%;
1065
+ min-height: 36px;
1066
+ }
1067
+
1068
+ .holi.datatable .datatable-footer {
1069
+ font-size: 12px;
1070
+ gap: 6px;
1071
+ }
1072
+
1073
+ .holi.datatable [data-role="pagination-controls"] {
1074
+ flex-wrap: wrap;
1075
+ }
1076
+
1077
+ .holi.datatable .datatable-table {
1078
+ min-width: 560px;
1079
+ }
1080
+ }
1081
+
1082
+ @keyframes datatable-spin {
1083
+ from { transform: rotate(0deg); }
1084
+ to { transform: rotate(360deg); }
1085
+ }
1086
+
1087
+ .holi-object-details-overlay {
1088
+ position: fixed;
1089
+ inset: 0;
1090
+ z-index: 9999;
1091
+ background: rgba(15, 23, 42, 0.46);
1092
+ display: grid;
1093
+ place-items: center;
1094
+ padding: 12px;
1095
+ }
1096
+
1097
+ .holi-object-details-overlay .dialog-content {
1098
+ width: min(760px, 96vw);
1099
+ max-height: 88vh;
1100
+ border: 1px solid #d9dee8;
1101
+ border-radius: 10px;
1102
+ background: #fff;
1103
+ display: grid;
1104
+ grid-template-rows: auto 1fr auto;
1105
+ overflow: hidden;
1106
+ }
1107
+
1108
+ .holi-object-details-overlay .dialog-header,
1109
+ .holi-object-details-overlay .dialog-footer {
1110
+ display: flex;
1111
+ align-items: center;
1112
+ justify-content: space-between;
1113
+ gap: 8px;
1114
+ padding: 10px 12px;
1115
+ background: #f5f7fa;
1116
+ border-bottom: 1px solid #e6eaf0;
1117
+ }
1118
+
1119
+ .holi-object-details-overlay .dialog-footer {
1120
+ border-bottom: 0;
1121
+ border-top: 1px solid #e6eaf0;
1122
+ justify-content: flex-end;
1123
+ }
1124
+
1125
+ .holi-object-details-overlay .dialog-body {
1126
+ overflow: auto;
1127
+ padding: 12px;
1128
+ display: grid;
1129
+ gap: 8px;
1130
+ }
1131
+
1132
+ .holi-object-details-header-actions {
1133
+ display: flex;
1134
+ gap: 6px;
1135
+ }
1136
+
1137
+ .holi-object-details-btn {
1138
+ border: 1px solid #cfd6df;
1139
+ background: #fff;
1140
+ color: #0f172a;
1141
+ border-radius: 6px;
1142
+ padding: 6px 10px;
1143
+ cursor: pointer;
1144
+ }
1145
+
1146
+ .holi-object-details-btn-secondary {
1147
+ background: #f8fafc;
1148
+ }
1149
+
1150
+ .holi-object-details-row {
1151
+ display: grid;
1152
+ grid-template-columns: minmax(160px, 220px) 1fr;
1153
+ gap: 8px;
1154
+ border: 1px solid #e5eaf1;
1155
+ border-radius: 8px;
1156
+ background: #fafcff;
1157
+ padding: 7px 9px;
1158
+ }
1159
+
1160
+ .holi-object-details-field {
1161
+ display: grid;
1162
+ gap: 6px;
1163
+ }
1164
+
1165
+ .holi-object-details-field input[type="text"],
1166
+ .holi-object-details-field input[type="number"],
1167
+ .holi-object-details-field input[type="date"],
1168
+ .holi-object-details-field input[type="email"],
1169
+ .holi-object-details-field input[type="url"],
1170
+ .holi-object-details-field select,
1171
+ .holi-object-details-field textarea {
1172
+ border: 1px solid #ced6e0;
1173
+ border-radius: 6px;
1174
+ padding: 6px 8px;
1175
+ background: #fff;
1176
+ }
1177
+
1178
+ .holi-object-details-field textarea {
1179
+ min-height: 80px;
1180
+ resize: vertical;
1181
+ }
1182
+
1183
+ .holi-object-details-status {
1184
+ margin: 0;
1185
+ color: #b91c1c;
1186
+ font-size: 12px;
1187
+ }
1188
+
1189
+ .holi-object-details-field-error {
1190
+ margin: 0;
1191
+ color: #b91c1c;
1192
+ font-size: 12px;
1193
+ min-height: 16px;
1194
+ }
1195
+
1196
+ .holi-object-details-overlay .dg-skeleton {
1197
+ display: grid;
1198
+ gap: 0.75rem;
1199
+ }
1200
+
1201
+ .holi-object-details-overlay .sk-line {
1202
+ height: 12px;
1203
+ background: linear-gradient(
1204
+ 90deg,
1205
+ #eee 25%,
1206
+ #f5f5f5 37%,
1207
+ #eee 63%
1208
+ );
1209
+ background-size: 400% 100%;
1210
+ animation: holi-object-details-sk-pulse 1.4s ease infinite;
1211
+ border-radius: 4px;
1212
+ }
1213
+
1214
+ .holi-object-details-overlay .sk-title {
1215
+ height: 18px;
1216
+ width: 60%;
1217
+ }
1218
+
1219
+ @keyframes holi-object-details-sk-pulse {
1220
+ 0% { background-position: 100% 0; }
1221
+ 100% { background-position: 0 0; }
1222
+ }
1223
+
1224
+ .holi-dialog-root {
1225
+ --dialog-width: 640px;
1226
+ --dialog-max-height: 82vh;
1227
+ }
1228
+
1229
+ .holi-dialog-root[data-size="mini"] {
1230
+ --dialog-width: 320px;
1231
+ --dialog-max-height: 40vh;
1232
+ }
1233
+
1234
+ .holi-dialog-root[data-size="small"] {
1235
+ --dialog-width: 460px;
1236
+ --dialog-max-height: 58vh;
1237
+ }
1238
+
1239
+ .holi-dialog-root[data-size="medium"] {
1240
+ --dialog-width: 640px;
1241
+ --dialog-max-height: 82vh;
1242
+ }
1243
+
1244
+ .holi-dialog-root[data-size="large"] {
1245
+ --dialog-width: 920px;
1246
+ --dialog-max-height: 90vh;
1247
+ }
1248
+
1249
+ .holi-dialog-root[data-size="mega"] {
1250
+ --dialog-width: 98vw;
1251
+ --dialog-max-height: 96vh;
1252
+ }
1253
+
1254
+ .holi-dialog-native,
1255
+ .holi-dialog-panel {
1256
+ width: min(var(--dialog-width), 98vw);
1257
+ max-height: var(--dialog-max-height);
1258
+ border: 1px solid #d9dee8;
1259
+ border-radius: 10px;
1260
+ background: #fff;
1261
+ display: grid;
1262
+ grid-template-rows: auto 1fr auto;
1263
+ overflow: hidden;
1264
+ }
1265
+
1266
+ .holi-dialog-native::backdrop {
1267
+ background: rgba(15, 23, 42, 0.46);
1268
+ }
1269
+
1270
+ .holi-dialog-fallback {
1271
+ position: fixed;
1272
+ inset: 0;
1273
+ display: grid;
1274
+ place-items: center;
1275
+ z-index: 9999;
1276
+ }
1277
+
1278
+ .holi-dialog-fallback[hidden],
1279
+ .holi-dialog-native[hidden] {
1280
+ display: none !important;
1281
+ }
1282
+
1283
+ .holi-dialog-overlay {
1284
+ position: absolute;
1285
+ inset: 0;
1286
+ background: rgba(15, 23, 42, 0.46);
1287
+ }
1288
+
1289
+ .holi-dialog-panel {
1290
+ position: relative;
1291
+ z-index: 1;
1292
+ }
1293
+
1294
+ .holi-dialog-header,
1295
+ .holi-dialog-footer {
1296
+ padding: 10px 14px;
1297
+ background: #f5f7fa;
1298
+ border-bottom: 1px solid #e6eaf0;
1299
+ display: flex;
1300
+ align-items: center;
1301
+ justify-content: space-between;
1302
+ gap: 8px;
1303
+ }
1304
+
1305
+ .holi-dialog-footer {
1306
+ border-bottom: 0;
1307
+ border-top: 1px solid #e6eaf0;
1308
+ justify-content: flex-start;
1309
+ }
1310
+
1311
+ .holi-dialog-title {
1312
+ margin: 0;
1313
+ font-size: 15px;
1314
+ color: #111827;
1315
+ }
1316
+
1317
+ .holi-dialog-close {
1318
+ border: 1px solid #d1d7e0;
1319
+ background: #fff;
1320
+ border-radius: 6px;
1321
+ width: 28px;
1322
+ height: 28px;
1323
+ line-height: 1;
1324
+ cursor: pointer;
1325
+ }
1326
+
1327
+ .holi-dialog-body {
1328
+ padding: 14px;
1329
+ overflow: auto;
1330
+ }
1331
+
1332
+ .holi-dialog-root[data-size="mega"] .holi-dialog-body {
1333
+ padding: 0;
1334
+ }
1335
+
1336
+ .holi-dropdown {
1337
+ position: relative;
1338
+ width: 100%;
1339
+ max-width: 360px;
1340
+ }
1341
+
1342
+ .holi-dropdown .dropdown-control {
1343
+ display: grid;
1344
+ grid-template-columns: 1fr auto;
1345
+ border: 1px solid #cfd6df;
1346
+ border-radius: 8px;
1347
+ background: #fff;
1348
+ overflow: hidden;
1349
+ }
1350
+
1351
+ .holi-dropdown .dropdown-control input[data-role="input"] {
1352
+ border: 0;
1353
+ padding: 8px 10px;
1354
+ min-height: 36px;
1355
+ outline: none;
1356
+ }
1357
+
1358
+ .holi-dropdown .dropdown-control button {
1359
+ border: 0;
1360
+ border-left: 1px solid #dbe2ea;
1361
+ background: #f8fafc;
1362
+ color: #0f172a;
1363
+ padding: 0 10px;
1364
+ cursor: pointer;
1365
+ }
1366
+
1367
+ .holi-dropdown .dropdown-panel {
1368
+ position: absolute;
1369
+ top: calc(100% + 4px);
1370
+ left: 0;
1371
+ right: 0;
1372
+ z-index: 20;
1373
+ border: 1px solid #d7dfe8;
1374
+ border-radius: 8px;
1375
+ background: #fff;
1376
+ max-height: 240px;
1377
+ overflow: auto;
1378
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.12);
1379
+ }
1380
+
1381
+ .holi-dropdown .dropdown-options {
1382
+ list-style: none;
1383
+ margin: 0;
1384
+ padding: 4px 0;
1385
+ }
1386
+
1387
+ .holi-dropdown .dropdown-options li {
1388
+ padding: 8px 10px;
1389
+ cursor: pointer;
1390
+ }
1391
+
1392
+ .holi-dropdown .dropdown-options li:hover {
1393
+ background: #f1f5f9;
1394
+ }
1395
+
1396
+ .holi-dropdown .dropdown-options li.is-active {
1397
+ background: #e8f0fb;
1398
+ }
1399
+
1400
+ .holi-dropdown .dropdown-loading,
1401
+ .holi-dropdown .dropdown-empty {
1402
+ margin: 0;
1403
+ padding: 8px 10px;
1404
+ color: #475569;
1405
+ font-size: 13px;
1406
+ }
1407
+
1408
+ body.holi-drawer-lock {
1409
+ overflow: hidden;
1410
+ }
1411
+
1412
+ .holi-drawer-root {
1413
+ --drawer-max-size: 380px;
1414
+ --drawer-duration: 220ms;
1415
+ }
1416
+
1417
+ .holi-drawer-edge-trigger {
1418
+ position: fixed;
1419
+ z-index: 1110;
1420
+ border: 1px solid #d2d9e5;
1421
+ background: #f7f9fc;
1422
+ color: #0f172a;
1423
+ font-size: 12px;
1424
+ line-height: 1;
1425
+ border-radius: 8px;
1426
+ padding: 8px 10px;
1427
+ cursor: pointer;
1428
+ box-shadow: 0 4px 10px rgba(15, 23, 42, 0.08);
1429
+ }
1430
+
1431
+ .holi-drawer-root[data-direction="left"] .holi-drawer-edge-trigger {
1432
+ left: 8px;
1433
+ top: 50%;
1434
+ transform: translateY(-50%);
1435
+ }
1436
+
1437
+ .holi-drawer-root[data-direction="right"] .holi-drawer-edge-trigger {
1438
+ right: 8px;
1439
+ top: 50%;
1440
+ transform: translateY(-50%);
1441
+ }
1442
+
1443
+ .holi-drawer-root[data-direction="top"] .holi-drawer-edge-trigger {
1444
+ top: 8px;
1445
+ left: 50%;
1446
+ transform: translateX(-50%);
1447
+ }
1448
+
1449
+ .holi-drawer-root[data-direction="bottom"] .holi-drawer-edge-trigger {
1450
+ bottom: 8px;
1451
+ left: 50%;
1452
+ transform: translateX(-50%);
1453
+ }
1454
+
1455
+ .holi-drawer-root[data-direction="center"] .holi-drawer-edge-trigger {
1456
+ left: 50%;
1457
+ top: 50%;
1458
+ transform: translate(-50%, -50%);
1459
+ width: 14px;
1460
+ height: 14px;
1461
+ border-radius: 999px;
1462
+ padding: 0;
1463
+ overflow: hidden;
1464
+ color: transparent;
1465
+ }
1466
+
1467
+ .holi-drawer-edge-trigger[data-in-rail="true"] {
1468
+ position: static;
1469
+ transform: none;
1470
+ width: auto;
1471
+ height: auto;
1472
+ color: #0f172a;
1473
+ border-radius: 6px;
1474
+ }
1475
+
1476
+ .holi-drawer-rail {
1477
+ position: fixed;
1478
+ z-index: 1110;
1479
+ display: flex;
1480
+ gap: 6px;
1481
+ padding: 6px;
1482
+ border: 1px solid #d5dce8;
1483
+ background: #eef2f7;
1484
+ box-shadow: 0 6px 14px rgba(15, 23, 42, 0.1);
1485
+ }
1486
+
1487
+ .holi-drawer-rail[data-direction="left"] {
1488
+ left: 0;
1489
+ top: 50%;
1490
+ transform: translateY(-50%);
1491
+ border-left: 0;
1492
+ border-radius: 0 10px 10px 0;
1493
+ flex-direction: column;
1494
+ }
1495
+
1496
+ .holi-drawer-rail[data-direction="right"] {
1497
+ right: 0;
1498
+ top: 50%;
1499
+ transform: translateY(-50%);
1500
+ border-right: 0;
1501
+ border-radius: 10px 0 0 10px;
1502
+ flex-direction: column;
1503
+ }
1504
+
1505
+ .holi-drawer-rail[data-direction="top"] {
1506
+ top: 0;
1507
+ left: 50%;
1508
+ transform: translateX(-50%);
1509
+ border-top: 0;
1510
+ border-radius: 0 0 10px 10px;
1511
+ flex-direction: row;
1512
+ }
1513
+
1514
+ .holi-drawer-rail[data-direction="bottom"] {
1515
+ bottom: 0;
1516
+ left: 50%;
1517
+ transform: translateX(-50%);
1518
+ border-bottom: 0;
1519
+ border-radius: 10px 10px 0 0;
1520
+ flex-direction: row;
1521
+ }
1522
+
1523
+ .holi-drawer-overlay {
1524
+ position: fixed;
1525
+ inset: 0;
1526
+ background: rgba(15, 23, 42, 0.45);
1527
+ z-index: 1090;
1528
+ }
1529
+
1530
+ .holi-drawer-panel {
1531
+ position: fixed;
1532
+ z-index: 1100;
1533
+ background: #fff;
1534
+ border: 1px solid #d9dee8;
1535
+ box-shadow: 0 6px 18px rgba(15, 23, 42, 0.14);
1536
+ display: grid;
1537
+ grid-template-rows: auto 1fr auto;
1538
+ transition: transform var(--drawer-duration) ease;
1539
+ overflow: hidden;
1540
+ }
1541
+
1542
+ .holi-drawer-header,
1543
+ .holi-drawer-footer {
1544
+ padding: 10px 12px;
1545
+ background: #f5f7fa;
1546
+ border-bottom: 1px solid #e6eaf0;
1547
+ }
1548
+
1549
+ .holi-drawer-footer {
1550
+ border-bottom: 0;
1551
+ border-top: 1px solid #e6eaf0;
1552
+ }
1553
+
1554
+ .holi-drawer-body {
1555
+ padding: 12px;
1556
+ overflow: auto;
1557
+ }
1558
+
1559
+ .holi-drawer-root[data-direction="left"] .holi-drawer-panel {
1560
+ top: 0;
1561
+ left: 0;
1562
+ height: 100dvh;
1563
+ width: min(var(--drawer-max-size), 92vw);
1564
+ transform: translateX(-100%);
1565
+ }
1566
+
1567
+ .holi-drawer-root[data-direction="right"] .holi-drawer-panel {
1568
+ top: 0;
1569
+ right: 0;
1570
+ height: 100dvh;
1571
+ width: min(var(--drawer-max-size), 92vw);
1572
+ transform: translateX(100%);
1573
+ }
1574
+
1575
+ .holi-drawer-root[data-direction="top"] .holi-drawer-panel {
1576
+ top: 0;
1577
+ left: 0;
1578
+ width: 100vw;
1579
+ height: min(var(--drawer-max-size), 92vh);
1580
+ transform: translateY(-100%);
1581
+ }
1582
+
1583
+ .holi-drawer-root[data-direction="bottom"] .holi-drawer-panel {
1584
+ bottom: 0;
1585
+ left: 0;
1586
+ width: 100vw;
1587
+ height: min(var(--drawer-max-size), 92vh);
1588
+ transform: translateY(100%);
1589
+ }
1590
+
1591
+ .holi-drawer-root[data-direction="center"] .holi-drawer-panel {
1592
+ top: 50%;
1593
+ left: 50%;
1594
+ width: fit-content;
1595
+ max-width: min(var(--drawer-max-size), 92vw);
1596
+ max-height: var(--drawer-max-height, 90vh);
1597
+ height: auto;
1598
+ transform: translate(-50%, -50%) scale(0.02);
1599
+ transform-origin: center center;
1600
+ border-radius: 999px;
1601
+ opacity: 0.25;
1602
+ }
1603
+
1604
+ .holi-drawer-root[data-state="open"][data-direction="left"] .holi-drawer-panel,
1605
+ .holi-drawer-root[data-state="open"][data-direction="right"] .holi-drawer-panel,
1606
+ .holi-drawer-root[data-state="open"][data-direction="top"] .holi-drawer-panel,
1607
+ .holi-drawer-root[data-state="open"][data-direction="bottom"] .holi-drawer-panel {
1608
+ transform: translate(0, 0);
1609
+ }
1610
+
1611
+ .holi-drawer-root[data-state="open"][data-direction="center"] .holi-drawer-panel {
1612
+ transform: translate(-50%, -50%) scale(1);
1613
+ border-radius: 12px;
1614
+ opacity: 1;
1615
+ }
1616
+
1617
+ /* Desktop: behave as collapsible panel with no overlay */
1618
+ .holi-drawer-root[data-desktop="true"]:not([data-direction="center"]) .holi-drawer-overlay {
1619
+ display: none;
1620
+ }
1621
+
1622
+ .holi-gallery-root {
1623
+ display: grid;
1624
+ gap: 12px;
1625
+ }
1626
+
1627
+ .holi-gallery-toolbar {
1628
+ display: grid;
1629
+ grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
1630
+ gap: 10px;
1631
+ }
1632
+
1633
+ .holi-gallery-field {
1634
+ display: grid;
1635
+ gap: 4px;
1636
+ font-size: 13px;
1637
+ color: #334155;
1638
+ }
1639
+
1640
+ .holi-gallery-field span {
1641
+ font-weight: 600;
1642
+ }
1643
+
1644
+ .holi-gallery-field input,
1645
+ .holi-gallery-field select {
1646
+ border: 1px solid #cdd7e5;
1647
+ border-radius: 8px;
1648
+ padding: 7px 10px;
1649
+ background: #fff;
1650
+ color: #0f172a;
1651
+ }
1652
+
1653
+ .holi-gallery-field-sm {
1654
+ min-width: 140px;
1655
+ }
1656
+
1657
+ .holi-gallery-state {
1658
+ font-size: 13px;
1659
+ border: 1px solid #d9e1ee;
1660
+ border-radius: 8px;
1661
+ background: #f8fafc;
1662
+ color: #334155;
1663
+ padding: 8px 10px;
1664
+ }
1665
+
1666
+ .holi-gallery-grid-wrap {
1667
+ border: 1px solid #e2e8f0;
1668
+ border-radius: 12px;
1669
+ padding: 12px;
1670
+ background: #fff;
1671
+ max-height: 72vh;
1672
+ overflow: auto;
1673
+ }
1674
+
1675
+ .holi-gallery-grid {
1676
+ display: grid;
1677
+ grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
1678
+ gap: 12px;
1679
+ }
1680
+
1681
+ .holi-gallery-thumb {
1682
+ border: 1px solid #d7dee8;
1683
+ border-radius: 10px;
1684
+ padding: 0;
1685
+ overflow: hidden;
1686
+ cursor: pointer;
1687
+ background: #fff;
1688
+ }
1689
+
1690
+ .holi-gallery-thumb:hover,
1691
+ .holi-gallery-thumb:focus-visible {
1692
+ outline: none;
1693
+ border-color: #3b82f6;
1694
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25);
1695
+ }
1696
+
1697
+ .holi-gallery-thumb img {
1698
+ width: 100%;
1699
+ aspect-ratio: 4 / 3;
1700
+ object-fit: cover;
1701
+ display: block;
1702
+ }
1703
+
1704
+ .holi-gallery-sentinel {
1705
+ height: 2px;
1706
+ }
1707
+
1708
+ .holi-gallery-pagination {
1709
+ display: flex;
1710
+ align-items: center;
1711
+ justify-content: center;
1712
+ gap: 10px;
1713
+ }
1714
+
1715
+ .holi-gallery-pagination button {
1716
+ border: 1px solid #c9d3e3;
1717
+ background: #fff;
1718
+ border-radius: 8px;
1719
+ padding: 7px 12px;
1720
+ cursor: pointer;
1721
+ }
1722
+
1723
+ .holi-gallery-pagination button:disabled {
1724
+ cursor: not-allowed;
1725
+ opacity: 0.45;
1726
+ }
1727
+
1728
+ .holi-gallery-pagination [data-role="page-status"] {
1729
+ font-size: 13px;
1730
+ color: #334155;
1731
+ }
1732
+
1733
+ .holi-gallery-lightbox .holi-carousel {
1734
+ border: 0;
1735
+ border-radius: 0;
1736
+ max-width: none;
1737
+ background: #020617;
1738
+ }
1739
+
1740
+ .holi-gallery-lightbox .holi-carousel .slide {
1741
+ background: #020617;
1742
+ }
1743
+
1744
+ .holi-gallery-lightbox .holi-carousel .slide img {
1745
+ width: 100%;
1746
+ max-height: min(78vh, 900px);
1747
+ object-fit: contain;
1748
+ display: block;
1749
+ background: #020617;
1750
+ }
1751
+
1752
+ .holi-gallery-lightbox .holi-carousel-footer {
1753
+ background: #0f172a;
1754
+ border-top-color: #1e293b;
1755
+ }
1756
+
1757
+ .holi-gallery-lightbox .holi-carousel .controls button,
1758
+ .holi-gallery-lightbox .holi-carousel .dot {
1759
+ background: #cbd5e1;
1760
+ }
1761
+
1762
+ .holi-gallery-lightbox .holi-carousel .dot.selected {
1763
+ background: #38bdf8;
1764
+ }
1765
+
1766
+ @media (max-width: 900px) {
1767
+ .holi-gallery-toolbar {
1768
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
1769
+ }
1770
+
1771
+ .holi-gallery-grid {
1772
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
1773
+ }
1774
+ }
1775
+
1776
+ @media (max-width: 640px) {
1777
+ .holi-gallery-toolbar {
1778
+ grid-template-columns: 1fr;
1779
+ }
1780
+
1781
+ .holi-gallery-field-sm {
1782
+ min-width: 0;
1783
+ }
1784
+
1785
+ .holi-gallery-grid-wrap {
1786
+ padding: 8px;
1787
+ max-height: 68vh;
1788
+ }
1789
+
1790
+ .holi-gallery-grid {
1791
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1792
+ gap: 8px;
1793
+ }
1794
+
1795
+ .holi-gallery-pagination {
1796
+ flex-wrap: wrap;
1797
+ gap: 8px;
1798
+ }
1799
+
1800
+ .holi-gallery-pagination button {
1801
+ min-width: 120px;
1802
+ }
1803
+ }
1804
+
1805
+ .holi-input {
1806
+ display: grid;
1807
+ gap: 6px;
1808
+ }
1809
+
1810
+ .holi-input .required {
1811
+ color: #b42318;
1812
+ }
1813
+
1814
+ .holi-input .error {
1815
+ color: #b42318;
1816
+ font-size: 0.88rem;
1817
+ }
1818
+
1819
+ .holi-input [data-role="control-area"] {
1820
+ resize: vertical;
1821
+ min-height: 96px;
1822
+ }
1823
+
1824
+ .holi-input.is-invalid [data-role="control-input"],
1825
+ .holi-input.is-invalid [data-role="control-area"] {
1826
+ border-color: #b42318;
1827
+ }
1828
+
1829
+ .holi-layout {
1830
+ width: 100%;
1831
+ box-sizing: border-box;
1832
+ }
1833
+
1834
+ .holi-layout-content {
1835
+ display: grid;
1836
+ gap: 16px;
1837
+ }
1838
+
1839
+ .holi-layout-content > header,
1840
+ .holi-layout-content > main,
1841
+ .holi-layout-content > footer,
1842
+ .holi-layout-content > section {
1843
+ display: grid;
1844
+ gap: 12px;
1845
+ }
1846
+
1847
+ .holi-block {
1848
+ --holi-block-columns: 12;
1849
+ --holi-block-gap: 12px;
1850
+ }
1851
+
1852
+ .holi-block-content {
1853
+ display: grid;
1854
+ grid-template-columns: repeat(var(--holi-block-columns), minmax(0, 1fr));
1855
+ gap: var(--holi-block-gap);
1856
+ align-items: stretch;
1857
+ }
1858
+
1859
+ .holi-block-content > region,
1860
+ .holi-block-content > [component="region"],
1861
+ .holi-block-content > [role="region"] {
1862
+ display: block;
1863
+ align-self: stretch;
1864
+ }
1865
+
1866
+ .holi-region {
1867
+ --holi-region-span: 12;
1868
+ grid-column: span var(--holi-region-span);
1869
+ height: 100%;
1870
+ min-width: 0;
1871
+ }
1872
+
1873
+ .holi-region-content {
1874
+ height: 100%;
1875
+ box-sizing: border-box;
1876
+ border: 1px solid #dce3ea;
1877
+ border-radius: 8px;
1878
+ background: #f8fafc;
1879
+ padding: 10px 12px;
1880
+ }
1881
+
1882
+ @media (max-width: 900px) {
1883
+ .holi-region {
1884
+ grid-column: 1 / -1;
1885
+ }
1886
+ }
1887
+
1888
+ .holi-loader {
1889
+ position: absolute;
1890
+ inset: 0;
1891
+ display: grid;
1892
+ place-items: center;
1893
+ z-index: 1100;
1894
+ pointer-events: none;
1895
+ }
1896
+
1897
+ .holi-loader[hidden] {
1898
+ display: none;
1899
+ }
1900
+
1901
+ .holi-loader[data-scope="inline"] {
1902
+ position: relative;
1903
+ inset: auto;
1904
+ width: 100%;
1905
+ min-height: 42px;
1906
+ }
1907
+
1908
+ .holi-loader[data-scope="page"] {
1909
+ position: fixed;
1910
+ }
1911
+
1912
+ .holi-loader-backdrop {
1913
+ position: absolute;
1914
+ inset: 0;
1915
+ background: rgba(248, 250, 252, 0.78);
1916
+ border-radius: inherit;
1917
+ }
1918
+
1919
+ .holi-loader-body {
1920
+ position: relative;
1921
+ display: inline-flex;
1922
+ align-items: center;
1923
+ gap: 8px;
1924
+ background: #ffffff;
1925
+ border: 1px solid #d9e2ef;
1926
+ border-radius: 999px;
1927
+ padding: 8px 12px;
1928
+ box-shadow: 0 8px 22px rgba(15, 23, 42, 0.14);
1929
+ color: #334155;
1930
+ font-size: 13px;
1931
+ line-height: 1;
1932
+ }
1933
+
1934
+ .holi-loader-spinner {
1935
+ width: 14px;
1936
+ height: 14px;
1937
+ border-radius: 50%;
1938
+ border: 2px solid #cbd5e1;
1939
+ border-top-color: #2563eb;
1940
+ animation: holi-loader-spin 0.8s linear infinite;
1941
+ }
1942
+
1943
+ @keyframes holi-loader-spin {
1944
+ from { transform: rotate(0deg); }
1945
+ to { transform: rotate(360deg); }
1946
+ }
1947
+
1948
+ .holi-menubar {
1949
+ position: relative;
1950
+ --menubar-border: #d6dde8;
1951
+ --menubar-surface: #ffffff;
1952
+ --menubar-surface-soft: #f8fafc;
1953
+ --menubar-text: #0f172a;
1954
+ --menubar-text-muted: #334155;
1955
+ --menubar-focus: #1d4ed8;
1956
+ }
1957
+
1958
+ .holi-menubar-toggle {
1959
+ display: inline-flex;
1960
+ align-items: center;
1961
+ justify-content: center;
1962
+ gap: 8px;
1963
+ border: 1px solid var(--menubar-border);
1964
+ background: var(--menubar-surface);
1965
+ color: var(--menubar-text);
1966
+ border-radius: 10px;
1967
+ min-height: 40px;
1968
+ padding: 8px 14px;
1969
+ font-weight: 600;
1970
+ cursor: pointer;
1971
+ transition: background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1972
+ }
1973
+
1974
+ .holi-menubar-toggle[hidden] {
1975
+ display: none !important;
1976
+ }
1977
+
1978
+ .holi-menubar-toggle:hover,
1979
+ .holi-menubar-toggle:focus-visible {
1980
+ background: var(--menubar-surface-soft);
1981
+ border-color: #c3cddd;
1982
+ box-shadow: 0 0 0 2px rgba(29, 78, 216, 0.08);
1983
+ }
1984
+
1985
+ .holi-menubar-toggle[data-toggle-appearance="icon"] {
1986
+ width: 40px;
1987
+ min-width: 40px;
1988
+ padding: 0;
1989
+ font-size: 0;
1990
+ }
1991
+
1992
+ .holi-menubar-toggle[data-toggle-appearance="icon"]::before {
1993
+ content: "";
1994
+ width: 16px;
1995
+ height: 12px;
1996
+ background:
1997
+ linear-gradient(var(--menubar-text), var(--menubar-text)) 0 0 / 16px 2px no-repeat,
1998
+ linear-gradient(var(--menubar-text), var(--menubar-text)) 0 5px / 16px 2px no-repeat,
1999
+ linear-gradient(var(--menubar-text), var(--menubar-text)) 0 10px / 16px 2px no-repeat;
2000
+ }
2001
+
2002
+ .holi-menubar .holi-menu-root,
2003
+ .holi-menubar .holi-submenu {
2004
+ list-style: none;
2005
+ margin: 0;
2006
+ padding: 0;
2007
+ }
2008
+
2009
+ .holi-menubar[data-mode="bar"] .holi-menu-root {
2010
+ display: flex;
2011
+ align-items: center;
2012
+ gap: 2px;
2013
+ flex-wrap: nowrap;
2014
+ border: 1px solid var(--menubar-border);
2015
+ border-radius: 12px;
2016
+ background: var(--menubar-surface);
2017
+ padding: 4px;
2018
+ box-shadow: 0 8px 18px rgba(15, 23, 42, 0.05);
2019
+ overflow: visible;
2020
+ }
2021
+
2022
+ .holi-menubar .holi-menu-root[hidden] {
2023
+ display: none !important;
2024
+ }
2025
+
2026
+ .holi-menu-item {
2027
+ position: relative;
2028
+ }
2029
+
2030
+ .holi-menu-trigger {
2031
+ display: inline-flex;
2032
+ align-items: center;
2033
+ gap: 6px;
2034
+ border: 1px solid transparent;
2035
+ background: transparent;
2036
+ color: var(--menubar-text);
2037
+ text-decoration: none;
2038
+ border-radius: 8px;
2039
+ padding: 8px 12px;
2040
+ font-weight: 500;
2041
+ cursor: pointer;
2042
+ transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
2043
+ }
2044
+
2045
+ .holi-menu-trigger:hover,
2046
+ .holi-menu-trigger:focus-visible,
2047
+ .holi-menu-item.open > .holi-menu-trigger {
2048
+ background: var(--menubar-surface-soft);
2049
+ border-color: var(--menubar-border);
2050
+ }
2051
+
2052
+ .holi-menu-item.has-submenu > .holi-menu-trigger::after {
2053
+ content: "";
2054
+ width: 6px;
2055
+ height: 6px;
2056
+ border-right: 1px solid #475569;
2057
+ border-bottom: 1px solid #475569;
2058
+ transform: rotate(45deg);
2059
+ }
2060
+
2061
+ .holi-submenu {
2062
+ position: absolute;
2063
+ top: calc(100% + 4px);
2064
+ left: 0;
2065
+ min-width: 210px;
2066
+ border: 1px solid var(--menubar-border);
2067
+ background: var(--menubar-surface);
2068
+ border-radius: 10px;
2069
+ box-shadow: 0 16px 28px rgba(15, 23, 42, 0.11);
2070
+ padding: 6px;
2071
+ z-index: 1100;
2072
+ }
2073
+
2074
+ .holi-submenu .holi-submenu {
2075
+ top: -6px;
2076
+ left: calc(100% + 4px);
2077
+ }
2078
+
2079
+ .holi-menu-item[data-submenu-align="left"] > .holi-submenu {
2080
+ left: auto;
2081
+ right: calc(100% + 4px);
2082
+ }
2083
+
2084
+ .holi-menu-item[data-submenu-align="right"] > .holi-submenu {
2085
+ left: calc(100% + 4px);
2086
+ right: auto;
2087
+ }
2088
+
2089
+ .holi-menu-item[data-submenu-align="viewport"] > .holi-submenu {
2090
+ left: auto;
2091
+ right: 0;
2092
+ }
2093
+
2094
+ .holi-submenu .holi-menu-item {
2095
+ display: block;
2096
+ }
2097
+
2098
+ .holi-submenu .holi-menu-trigger {
2099
+ width: 100%;
2100
+ justify-content: flex-start;
2101
+ border-color: transparent;
2102
+ }
2103
+
2104
+ .holi-submenu[hidden] {
2105
+ display: none !important;
2106
+ }
2107
+
2108
+ .holi-menubar[data-mode="single"] .holi-menu-root {
2109
+ position: absolute;
2110
+ top: calc(100% + 6px);
2111
+ left: 0;
2112
+ min-width: min(260px, calc(100vw - 24px));
2113
+ border: 1px solid var(--menubar-border);
2114
+ background: var(--menubar-surface);
2115
+ border-radius: 12px;
2116
+ box-shadow: 0 18px 30px rgba(15, 23, 42, 0.12);
2117
+ padding: 6px;
2118
+ z-index: 1100;
2119
+ }
2120
+
2121
+ .holi-menubar[data-mode="single"] .holi-menu-item {
2122
+ display: block;
2123
+ }
2124
+
2125
+ .holi-menubar[data-mode="single"] .holi-menu-trigger {
2126
+ width: 100%;
2127
+ border-color: transparent;
2128
+ background: transparent;
2129
+ color: var(--menubar-text);
2130
+ border-radius: 8px;
2131
+ }
2132
+
2133
+ .holi-menubar[data-mode="single"] .holi-menu-item + .holi-menu-item {
2134
+ border-top: 1px solid #eef2f7;
2135
+ }
2136
+
2137
+ .holi-menubar[data-mode="single"] .holi-submenu {
2138
+ position: static;
2139
+ top: auto;
2140
+ left: auto;
2141
+ min-width: 0;
2142
+ border: 0;
2143
+ box-shadow: none;
2144
+ border-radius: 0;
2145
+ padding: 2px 0 2px 12px;
2146
+ margin-top: 0;
2147
+ }
2148
+
2149
+ .holi-panel {
2150
+ --holi-panel-border: #dce3ea;
2151
+ --holi-panel-bg: #ffffff;
2152
+ --holi-panel-muted: #5f6b7a;
2153
+ --holi-panel-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);
2154
+ display: grid;
2155
+ gap: 14px;
2156
+ padding: 16px;
2157
+ border: 1px solid var(--holi-panel-border);
2158
+ border-radius: 12px;
2159
+ background: var(--holi-panel-bg);
2160
+ box-shadow: var(--holi-panel-shadow);
2161
+ box-sizing: border-box;
2162
+ }
2163
+
2164
+ .holi-panel-header[hidden],
2165
+ .holi-panel-footer[hidden] {
2166
+ display: none;
2167
+ }
2168
+
2169
+ .holi-panel-header,
2170
+ .holi-panel-footer {
2171
+ display: grid;
2172
+ gap: 6px;
2173
+ }
2174
+
2175
+ .holi-panel-title,
2176
+ .holi-panel-subtitle {
2177
+ margin: 0;
2178
+ }
2179
+
2180
+ .holi-panel-title {
2181
+ font-size: 1.125rem;
2182
+ line-height: 1.2;
2183
+ }
2184
+
2185
+ .holi-panel-subtitle {
2186
+ color: var(--holi-panel-muted);
2187
+ font-size: 0.95rem;
2188
+ }
2189
+
2190
+ .holi-panel-content {
2191
+ min-width: 0;
2192
+ }
2193
+
2194
+ .holi-checkbox-group {
2195
+ border: 1px solid #d0d5dd;
2196
+ border-radius: 8px;
2197
+ padding: 10px 12px;
2198
+ }
2199
+
2200
+ .holi-checkbox-options {
2201
+ display: grid;
2202
+ gap: 8px;
2203
+ margin-top: 8px;
2204
+ }
2205
+
2206
+ .holi-checkbox-option {
2207
+ display: inline-flex;
2208
+ gap: 8px;
2209
+ align-items: center;
2210
+ }
2211
+
2212
+ .progress {
2213
+ display: grid;
2214
+ gap: 0.35rem;
2215
+ width: 100%;
2216
+ }
2217
+
2218
+ .progress-track {
2219
+ position: relative;
2220
+ overflow: hidden;
2221
+ width: 100%;
2222
+ background: #e5e7eb;
2223
+ border-radius: 999px;
2224
+ height: 0.5rem;
2225
+ }
2226
+
2227
+ .progress-buffer {
2228
+ position: absolute;
2229
+ inset: 0;
2230
+ width: 100%;
2231
+ opacity: 0.25;
2232
+ background: #93c5fd;
2233
+ }
2234
+
2235
+ .progress-fill {
2236
+ position: absolute;
2237
+ inset-block: 0;
2238
+ inset-inline-start: 0;
2239
+ width: 0%;
2240
+ background: #2563eb;
2241
+ transition: width 180ms ease;
2242
+ }
2243
+
2244
+ .progress-label {
2245
+ color: #111827;
2246
+ font-size: 0.85rem;
2247
+ line-height: 1;
2248
+ }
2249
+
2250
+ .progress--xs .progress-track { height: 0.25rem; }
2251
+ .progress--sm .progress-track { height: 0.375rem; }
2252
+ .progress--md .progress-track { height: 0.5rem; }
2253
+ .progress--lg .progress-track { height: 0.75rem; }
2254
+ .progress--xl .progress-track { height: 1rem; }
2255
+
2256
+ .progress--indeterminate .progress-fill {
2257
+ width: 35%;
2258
+ animation: progress-indeterminate 1.25s ease-in-out infinite;
2259
+ }
2260
+
2261
+ @keyframes progress-indeterminate {
2262
+ 0% { transform: translateX(-120%); }
2263
+ 50% { transform: translateX(80%); }
2264
+ 100% { transform: translateX(220%); }
2265
+ }
2266
+
2267
+ .holi-search {
2268
+ display: grid;
2269
+ gap: 0.75rem;
2270
+ }
2271
+
2272
+ .holi-search-form {
2273
+ display: grid;
2274
+ gap: 0.35rem;
2275
+ }
2276
+
2277
+ .holi-search-label {
2278
+ font-size: 0.85rem;
2279
+ font-weight: 600;
2280
+ color: #243042;
2281
+ }
2282
+
2283
+ .holi-search-input-wrap {
2284
+ position: relative;
2285
+ display: grid;
2286
+ grid-template-columns: 1fr auto;
2287
+ }
2288
+
2289
+ .holi-search-input {
2290
+ width: 100%;
2291
+ min-height: 2.4rem;
2292
+ padding: 0.55rem 0.75rem;
2293
+ border: 1px solid #b9c3cf;
2294
+ border-radius: 0.4rem 0 0 0.4rem;
2295
+ outline: none;
2296
+ }
2297
+
2298
+ .holi-search-input:focus {
2299
+ border-color: #3a71c1;
2300
+ box-shadow: 0 0 0 2px rgba(58, 113, 193, 0.2);
2301
+ }
2302
+
2303
+ .holi-search-submit {
2304
+ min-width: 3.2rem;
2305
+ border: 1px solid #2f5ea2;
2306
+ border-left: 0;
2307
+ border-radius: 0 0.4rem 0.4rem 0;
2308
+ background: #3a71c1;
2309
+ color: #fff;
2310
+ cursor: pointer;
2311
+ }
2312
+
2313
+ .holi-search-suggestions-panel {
2314
+ position: absolute;
2315
+ top: calc(100% + 0.2rem);
2316
+ left: 0;
2317
+ right: 0;
2318
+ z-index: 30;
2319
+ border: 1px solid #c7d1de;
2320
+ border-radius: 0.45rem;
2321
+ background: #fff;
2322
+ box-shadow: 0 8px 20px rgba(17, 34, 68, 0.12);
2323
+ overflow: hidden;
2324
+ }
2325
+
2326
+ .holi-search-suggestions {
2327
+ margin: 0;
2328
+ padding: 0.2rem 0;
2329
+ list-style: none;
2330
+ max-height: 16rem;
2331
+ overflow: auto;
2332
+ }
2333
+
2334
+ .holi-search-suggestion-row {
2335
+ margin: 0;
2336
+ }
2337
+
2338
+ .holi-search-suggestion {
2339
+ width: 100%;
2340
+ padding: 0.5rem 0.75rem;
2341
+ border: 0;
2342
+ background: transparent;
2343
+ text-align: left;
2344
+ cursor: pointer;
2345
+ }
2346
+
2347
+ .holi-search-suggestion:hover,
2348
+ .holi-search-suggestion.is-active {
2349
+ background: #edf3fc;
2350
+ }
2351
+
2352
+ .holi-search-results {
2353
+ border: 1px solid #c7d1de;
2354
+ border-radius: 0.45rem;
2355
+ padding: 0.75rem;
2356
+ background: #fff;
2357
+ }
2358
+
2359
+ .holi-search-results-title {
2360
+ margin: 0 0 0.55rem 0;
2361
+ font-size: 1rem;
2362
+ }
2363
+
2364
+ .holi-search-loading,
2365
+ .holi-search-empty {
2366
+ margin: 0;
2367
+ color: #55657d;
2368
+ }
2369
+
2370
+ .holi-search-results-list {
2371
+ display: grid;
2372
+ gap: 0.6rem;
2373
+ }
2374
+
2375
+ .holi-search-result {
2376
+ border-top: 1px solid #e5ebf3;
2377
+ padding-top: 0.6rem;
2378
+ }
2379
+
2380
+ .holi-search-result:first-child {
2381
+ border-top: 0;
2382
+ padding-top: 0;
2383
+ }
2384
+
2385
+ .holi-search-result-title {
2386
+ margin: 0;
2387
+ font-size: 0.95rem;
2388
+ font-weight: 600;
2389
+ color: #213044;
2390
+ text-decoration: none;
2391
+ }
2392
+
2393
+ .holi-search-result-title:hover {
2394
+ color: #1b5ec0;
2395
+ }
2396
+
2397
+ .holi-search-result-description {
2398
+ margin: 0.2rem 0 0 0;
2399
+ color: #4e6179;
2400
+ font-size: 0.9rem;
2401
+ }
2402
+
2403
+ .holi-select-field {
2404
+ display: grid;
2405
+ gap: 6px;
2406
+ }
2407
+
2408
+ .holi-select-field .error {
2409
+ color: #b42318;
2410
+ font-size: 0.88rem;
2411
+ }
2412
+
2413
+ .holi-select-field.is-invalid [data-role="input"] {
2414
+ border-color: #b42318;
2415
+ }
2416
+
2417
+ .stats-card-view {
2418
+ border: 1px solid #e5e7eb;
2419
+ border-radius: 0.75rem;
2420
+ background: #ffffff;
2421
+ padding: 1rem;
2422
+ display: grid;
2423
+ gap: 0.6rem;
2424
+ min-height: 8rem;
2425
+ }
2426
+
2427
+ .stats-header {
2428
+ display: flex;
2429
+ align-items: center;
2430
+ justify-content: space-between;
2431
+ }
2432
+
2433
+ .stats-icon {
2434
+ width: 2rem;
2435
+ height: 2rem;
2436
+ border-radius: 0.5rem;
2437
+ display: grid;
2438
+ place-items: center;
2439
+ background: #eff6ff;
2440
+ color: #1d4ed8;
2441
+ font-weight: 700;
2442
+ }
2443
+
2444
+ .stats-change {
2445
+ display: inline-flex;
2446
+ gap: 0.3rem;
2447
+ font-size: 0.85rem;
2448
+ align-items: center;
2449
+ }
2450
+
2451
+ .trend-up .stats-change { color: #15803d; }
2452
+ .trend-down .stats-change { color: #b91c1c; }
2453
+ .trend-neutral .stats-change { color: #475569; }
2454
+
2455
+ .stats-value {
2456
+ font-size: 1.5rem;
2457
+ line-height: 1.1;
2458
+ font-weight: 700;
2459
+ color: #0f172a;
2460
+ }
2461
+
2462
+ .stats-label {
2463
+ font-size: 0.9rem;
2464
+ color: #475569;
2465
+ }
2466
+
2467
+ .stats-sparkline {
2468
+ height: 0.35rem;
2469
+ border-radius: 999px;
2470
+ background: linear-gradient(90deg, #bfdbfe, #60a5fa);
2471
+ opacity: 0.45;
2472
+ transition: opacity 160ms ease, transform 160ms ease;
2473
+ }
2474
+
2475
+ .stats-sparkline.spark-active {
2476
+ opacity: 1;
2477
+ transform: scaleX(1.02);
2478
+ }
2479
+
2480
+ .holi-toast-root {
2481
+ position: fixed;
2482
+ z-index: 9200;
2483
+ pointer-events: none;
2484
+ width: min(380px, calc(100vw - 24px));
2485
+ }
2486
+
2487
+ .holi-toast-root[data-scope="inline"] {
2488
+ position: relative;
2489
+ inset: auto;
2490
+ width: 100%;
2491
+ max-width: none;
2492
+ transform: none;
2493
+ }
2494
+
2495
+ .holi-toast-root[data-scope="block"] {
2496
+ position: absolute;
2497
+ width: min(380px, calc(100% - 24px));
2498
+ }
2499
+
2500
+ .holi-toast-root[data-scope="inline"][data-position] {
2501
+ top: auto;
2502
+ right: auto;
2503
+ bottom: auto;
2504
+ left: auto;
2505
+ }
2506
+
2507
+ .holi-toast-root[data-scope="block"][data-position] {
2508
+ top: auto;
2509
+ right: auto;
2510
+ bottom: auto;
2511
+ left: auto;
2512
+ }
2513
+
2514
+ .holi-toast-root[data-position="top-right"] {
2515
+ top: 12px;
2516
+ right: 12px;
2517
+ }
2518
+
2519
+ .holi-toast-root[data-position="top-left"] {
2520
+ top: 12px;
2521
+ left: 12px;
2522
+ }
2523
+
2524
+ .holi-toast-root[data-position="bottom-right"] {
2525
+ bottom: 12px;
2526
+ right: 12px;
2527
+ }
2528
+
2529
+ .holi-toast-root[data-position="bottom-left"] {
2530
+ bottom: 12px;
2531
+ left: 12px;
2532
+ }
2533
+
2534
+ .holi-toast-root[data-position="top-center"] {
2535
+ top: 12px;
2536
+ left: 50%;
2537
+ transform: translateX(-50%);
2538
+ }
2539
+
2540
+ .holi-toast-root[data-position="bottom-center"] {
2541
+ bottom: 12px;
2542
+ left: 50%;
2543
+ transform: translateX(-50%);
2544
+ }
2545
+
2546
+ .holi-toast-stack {
2547
+ display: grid;
2548
+ gap: 8px;
2549
+ align-content: start;
2550
+ }
2551
+
2552
+ .holi-toast-item {
2553
+ pointer-events: auto;
2554
+ border: 1px solid #dbe1ea;
2555
+ border-left-width: 4px;
2556
+ border-radius: 8px;
2557
+ background: #ffffff;
2558
+ color: #111827;
2559
+ padding: 10px 10px 10px 12px;
2560
+ display: grid;
2561
+ grid-template-columns: 1fr auto;
2562
+ gap: 10px;
2563
+ box-shadow: 0 8px 20px rgba(15, 23, 42, 0.14);
2564
+ transition: transform 0.16s ease, opacity 0.16s ease;
2565
+ opacity: 0;
2566
+ transform: translateY(-6px);
2567
+ }
2568
+
2569
+ .holi-toast-item[data-state="shown"] {
2570
+ opacity: 1;
2571
+ transform: translateY(0);
2572
+ }
2573
+
2574
+ .holi-toast-item[data-state="hide"] {
2575
+ opacity: 0;
2576
+ transform: translateY(-6px);
2577
+ }
2578
+
2579
+ .holi-toast-item.toast-info {
2580
+ background: #f8fbff;
2581
+ border-left-color: #60a5fa;
2582
+ }
2583
+
2584
+ .holi-toast-item.toast-success {
2585
+ background: #f4fcf8;
2586
+ border-left-color: #34d399;
2587
+ }
2588
+
2589
+ .holi-toast-item.toast-warning {
2590
+ background: #fffbf1;
2591
+ border-left-color: #fbbf24;
2592
+ }
2593
+
2594
+ .holi-toast-item.toast-error {
2595
+ background: #fff7f7;
2596
+ border-left-color: #f87171;
2597
+ }
2598
+
2599
+ .holi-toast-title {
2600
+ display: block;
2601
+ font-size: 13px;
2602
+ margin-bottom: 2px;
2603
+ }
2604
+
2605
+ .holi-toast-message {
2606
+ font-size: 13px;
2607
+ color: #1f2937;
2608
+ }
2609
+
2610
+ .holi-toast-close {
2611
+ border: 1px solid #d1d7e0;
2612
+ border-radius: 6px;
2613
+ width: 24px;
2614
+ height: 24px;
2615
+ background: #fff;
2616
+ cursor: pointer;
2617
+ line-height: 1;
2618
+ }
2619
+
2620
+ @media (max-width: 600px) {
2621
+ .holi-toast-root[data-scope="page"] {
2622
+ width: calc(100vw - 16px);
2623
+ }
2624
+
2625
+ .holi-toast-root[data-position^="top"] {
2626
+ top: 8px;
2627
+ }
2628
+
2629
+ .holi-toast-root[data-position^="bottom"] {
2630
+ bottom: 8px;
2631
+ }
2632
+ }
2633
+
2634
+ .holi-form {
2635
+ display: grid;
2636
+ gap: 14px;
2637
+ max-width: 560px;
2638
+ }
2639
+
2640
+ .holi-form .form-fields {
2641
+ display: grid;
2642
+ gap: 12px;
2643
+ }
2644
+
2645
+ .holi-form .form-actions {
2646
+ display: flex;
2647
+ gap: 8px;
2648
+ align-items: center;
2649
+ }
2650
+
2651
+ .holi-form .form-errors {
2652
+ color: #b42318;
2653
+ font-size: 0.92rem;
2654
+ }
2655
+
2656
+ .holi-tree {
2657
+ border: 1px solid #d6dde8;
2658
+ border-radius: 10px;
2659
+ background: #fff;
2660
+ padding: 8px;
2661
+ max-height: 460px;
2662
+ overflow: auto;
2663
+ }
2664
+
2665
+ .holi-tree-level {
2666
+ list-style: none;
2667
+ margin: 0;
2668
+ padding: 0;
2669
+ }
2670
+
2671
+ .holi-tree-root > .holi-tree-item + .holi-tree-item {
2672
+ margin-top: 2px;
2673
+ }
2674
+
2675
+ .holi-tree-item {
2676
+ position: relative;
2677
+ }
2678
+
2679
+ .holi-tree-item[data-loading="true"] {
2680
+ opacity: 0.82;
2681
+ }
2682
+
2683
+ .holi-tree-item[aria-expanded="true"] > .holi-tree-children {
2684
+ display: block;
2685
+ }
2686
+
2687
+ .holi-tree-item > .holi-tree-children {
2688
+ margin-left: 22px;
2689
+ margin-top: 2px;
2690
+ }
2691
+
2692
+ .holi-tree-expander {
2693
+ width: 18px;
2694
+ height: 18px;
2695
+ margin-right: 4px;
2696
+ border: 1px solid #cfd6df;
2697
+ border-radius: 4px;
2698
+ background: #f8fafc;
2699
+ color: #334155;
2700
+ font-size: 12px;
2701
+ line-height: 1;
2702
+ cursor: pointer;
2703
+ }
2704
+
2705
+ .holi-tree-expander:disabled,
2706
+ .holi-tree-trigger:disabled {
2707
+ cursor: progress;
2708
+ opacity: 0.75;
2709
+ }
2710
+
2711
+ .holi-tree-trigger {
2712
+ border: 1px solid transparent;
2713
+ border-radius: 6px;
2714
+ background: transparent;
2715
+ color: #0f172a;
2716
+ text-align: left;
2717
+ padding: 4px 6px;
2718
+ cursor: pointer;
2719
+ }
2720
+
2721
+ .holi-tree-trigger:hover {
2722
+ background: #f1f5f9;
2723
+ }
2724
+
2725
+ .holi-tree-trigger:focus {
2726
+ outline: none;
2727
+ border-color: #93c5fd;
2728
+ background: #eff6ff;
2729
+ }
2730
+
2731
+ .holi-tree-item.is-draggable > .holi-tree-trigger {
2732
+ cursor: grab;
2733
+ }
2734
+
2735
+ .holi-tree-item.dragging {
2736
+ opacity: 0.45;
2737
+ }
2738
+
2739
+ .holi-tree-item.drop-target > .holi-tree-trigger {
2740
+ border-color: #60a5fa;
2741
+ background: #dbeafe;
2742
+ }
2743
+
2744
+ .holi-treepanel {
2745
+ display: grid;
2746
+ grid-template-columns: minmax(220px, 340px) 1fr;
2747
+ gap: 12px;
2748
+ }
2749
+
2750
+ .treepanel-left,
2751
+ .treepanel-right {
2752
+ border: 1px solid #d6dde8;
2753
+ border-radius: 10px;
2754
+ background: #fff;
2755
+ padding: 10px;
2756
+ }
2757
+
2758
+ .treepanel-header {
2759
+ display: flex;
2760
+ flex-direction: column;
2761
+ align-items: stretch;
2762
+ gap: 10px;
2763
+ }
2764
+
2765
+ .treepanel-header-default {
2766
+ display: flex;
2767
+ align-items: center;
2768
+ justify-content: space-between;
2769
+ gap: 8px;
2770
+ }
2771
+
2772
+ .treepanel-header-actions {
2773
+ display: flex;
2774
+ align-items: center;
2775
+ gap: 6px;
2776
+ flex-wrap: wrap;
2777
+ }
2778
+
2779
+ .treepanel-header h3 {
2780
+ margin: 0;
2781
+ font-size: 16px;
2782
+ }
2783
+
2784
+ .treepanel-header button {
2785
+ border: 1px solid #cfd6df;
2786
+ background: #f8fafc;
2787
+ color: #0f172a;
2788
+ border-radius: 8px;
2789
+ padding: 6px 10px;
2790
+ cursor: pointer;
2791
+ }
2792
+
2793
+ .treepanel-status {
2794
+ margin: 10px 0;
2795
+ font-size: 13px;
2796
+ color: #334155;
2797
+ }
2798
+
2799
+ .treepanel-status[data-state="loading"] {
2800
+ color: #1d4ed8;
2801
+ }
2802
+
2803
+ .treepanel-content {
2804
+ display: grid;
2805
+ gap: 10px;
2806
+ }
2807
+
2808
+ .treepanel-content-default {
2809
+ display: grid;
2810
+ gap: 10px;
2811
+ }
2812
+
2813
+ .treepanel-panel-body {
2814
+ display: grid;
2815
+ gap: 8px;
2816
+ }
2817
+
2818
+ .treepanel-field {
2819
+ display: grid;
2820
+ grid-template-columns: minmax(120px, 180px) 1fr;
2821
+ gap: 8px;
2822
+ border: 1px solid #e2e8f0;
2823
+ border-radius: 8px;
2824
+ padding: 7px 9px;
2825
+ background: #f8fafc;
2826
+ }
2827
+
2828
+ .treepanel-field-key {
2829
+ font-weight: 600;
2830
+ color: #0f172a;
2831
+ }
2832
+
2833
+ .treepanel-field-value {
2834
+ color: #334155;
2835
+ }
2836
+
2837
+ .treepanel-input {
2838
+ width: 100%;
2839
+ border: 1px solid #cbd5e1;
2840
+ border-radius: 6px;
2841
+ padding: 5px 7px;
2842
+ background: #fff;
2843
+ color: #0f172a;
2844
+ font-size: 13px;
2845
+ }
2846
+
2847
+ .treepanel-table {
2848
+ width: 100%;
2849
+ border-collapse: collapse;
2850
+ border: 1px solid #d6dde8;
2851
+ }
2852
+
2853
+ .treepanel-table th,
2854
+ .treepanel-table td {
2855
+ border: 1px solid #e2e8f0;
2856
+ padding: 6px 8px;
2857
+ text-align: left;
2858
+ }
2859
+
2860
+ .treepanel-table th {
2861
+ background: #f1f5f9;
2862
+ }
2863
+
2864
+ .treepanel-grid {
2865
+ display: grid;
2866
+ grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
2867
+ gap: 10px;
2868
+ }
2869
+
2870
+ .treepanel-grid-card {
2871
+ border: 1px solid #e2e8f0;
2872
+ border-radius: 10px;
2873
+ background: #f8fafc;
2874
+ padding: 9px;
2875
+ display: grid;
2876
+ gap: 8px;
2877
+ }
2878
+
2879
+ .treepanel-grid-field {
2880
+ display: grid;
2881
+ gap: 3px;
2882
+ }
2883
+
2884
+ .treepanel-grid-key {
2885
+ font-size: 12px;
2886
+ color: #475569;
2887
+ font-weight: 600;
2888
+ }
2889
+
2890
+ .treepanel-grid-value {
2891
+ font-size: 13px;
2892
+ color: #0f172a;
2893
+ }
2894
+
2895
+ .treepanel-footer {
2896
+ margin-top: 10px;
2897
+ border-top: 1px solid #e2e8f0;
2898
+ padding-top: 8px;
2899
+ }
2900
+
2901
+ .treepanel-footer-summary {
2902
+ margin: 0;
2903
+ color: #475569;
2904
+ font-size: 12px;
2905
+ }
2906
+
2907
+ @media (max-width: 920px) {
2908
+ .holi-treepanel {
2909
+ grid-template-columns: 1fr;
2910
+ }
2911
+ }
2912
+
2913
+ .tabs {
2914
+ border: 1px solid #d4dbe5;
2915
+ border-radius: 12px;
2916
+ background: #ffffff;
2917
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
2918
+ overflow: hidden;
2919
+ }
2920
+
2921
+ .tabs .tabbar {
2922
+ list-style: none;
2923
+ margin: 0;
2924
+ padding: 10px;
2925
+ display: flex;
2926
+ flex-wrap: nowrap;
2927
+ gap: 8px;
2928
+ border-bottom: 1px solid #e3e8ef;
2929
+ background: linear-gradient(180deg, #f8fafc 0%, #f2f6fb 100%);
2930
+ overflow-x: auto;
2931
+ scrollbar-width: thin;
2932
+ }
2933
+
2934
+ .tabs .tabbar .link {
2935
+ margin: 0;
2936
+ }
2937
+
2938
+ .tabs .tabbar .link > a {
2939
+ display: inline-flex;
2940
+ align-items: center;
2941
+ gap: 8px;
2942
+ border: 1px solid #d6dde7;
2943
+ border-radius: 8px;
2944
+ background: #ffffff;
2945
+ color: #334155;
2946
+ text-decoration: none;
2947
+ font-size: 14px;
2948
+ font-weight: 600;
2949
+ line-height: 1.3;
2950
+ padding: 8px 10px;
2951
+ white-space: nowrap;
2952
+ transition: border-color 120ms ease, background-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
2953
+ }
2954
+
2955
+ .tabs .tabbar .link > a:hover {
2956
+ border-color: #c4cfdd;
2957
+ background: #f8fbff;
2958
+ color: #1e293b;
2959
+ }
2960
+
2961
+ .tabs .tabbar .link > a:focus-visible {
2962
+ outline: none;
2963
+ border-color: #88a6c9;
2964
+ box-shadow: 0 0 0 2px rgba(136, 166, 201, 0.35);
2965
+ }
2966
+
2967
+ .tabs .tabbar .link.active > a {
2968
+ border-color: #9db5d3;
2969
+ background: #eaf2fb;
2970
+ color: #0f172a;
2971
+ }
2972
+
2973
+ .tabs .tab-controls {
2974
+ display: inline-flex;
2975
+ align-items: center;
2976
+ gap: 4px;
2977
+ margin-left: 2px;
2978
+ }
2979
+
2980
+ .tabs .tab-controls button {
2981
+ border: 1px solid #ccd5e1;
2982
+ border-radius: 6px;
2983
+ background: #ffffff;
2984
+ color: #475569;
2985
+ width: 20px;
2986
+ height: 20px;
2987
+ line-height: 1;
2988
+ cursor: pointer;
2989
+ padding: 0;
2990
+ font-size: 12px;
2991
+ transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
2992
+ }
2993
+
2994
+ .tabs .tab-controls button:hover {
2995
+ border-color: #b8c5d6;
2996
+ background: #f1f5f9;
2997
+ color: #1e293b;
2998
+ }
2999
+
3000
+ .tabs .tab-controls button:focus-visible {
3001
+ outline: none;
3002
+ border-color: #88a6c9;
3003
+ box-shadow: 0 0 0 2px rgba(136, 166, 201, 0.3);
3004
+ }
3005
+
3006
+ .tabs .tab_content_panels {
3007
+ padding: 14px;
3008
+ background: #ffffff;
3009
+ }
3010
+
3011
+ .tabs .tab_content_panel {
3012
+ border: 1px solid #e2e8f0;
3013
+ border-radius: 10px;
3014
+ background: #f8fafc;
3015
+ min-height: 90px;
3016
+ padding: 12px;
3017
+ }
3018
+
3019
+ .tabs .tab_content {
3020
+ color: #0f172a;
3021
+ font-size: 14px;
3022
+ line-height: 1.5;
3023
+ }
3024
+
3025
+ .tabs .tab_content .error {
3026
+ color: #b91c1c;
3027
+ font-weight: 600;
3028
+ }
3029
+
3030
+ @media (max-width: 640px) {
3031
+ .tabs .tabbar {
3032
+ padding: 8px;
3033
+ gap: 6px;
3034
+ }
3035
+
3036
+ .tabs .tabbar .link > a {
3037
+ font-size: 13px;
3038
+ padding: 7px 9px;
3039
+ }
3040
+
3041
+ .tabs .tab_content_panels {
3042
+ padding: 10px;
3043
+ }
3044
+ }
3045
+
3046
+ .wizard {
3047
+ border: 1px solid #d5dce6;
3048
+ border-radius: 12px;
3049
+ background: #ffffff;
3050
+ padding: 1rem;
3051
+ box-shadow: 0 8px 22px rgba(15, 32, 55, 0.08);
3052
+ }
3053
+
3054
+ .wizard-progress-bar {
3055
+ height: 10px;
3056
+ background: #ecf1f8;
3057
+ border-radius: 999px;
3058
+ overflow: hidden;
3059
+ margin-bottom: 1rem;
3060
+ }
3061
+
3062
+ .wizard-progress {
3063
+ height: 100%;
3064
+ width: 0;
3065
+ background: linear-gradient(90deg, #2d7ff0 0%, #2b5dd6 100%);
3066
+ transition: width 180ms ease;
3067
+ }
3068
+
3069
+ .wizard-nav {
3070
+ display: grid;
3071
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
3072
+ gap: 0.5rem;
3073
+ margin-bottom: 1rem;
3074
+ }
3075
+
3076
+ .wizard-step {
3077
+ display: flex;
3078
+ align-items: center;
3079
+ gap: 0.55rem;
3080
+ border: 1px solid #cad3e0;
3081
+ border-radius: 10px;
3082
+ padding: 0.5rem 0.65rem;
3083
+ background: #f7f9fc;
3084
+ color: #223246;
3085
+ cursor: pointer;
3086
+ text-align: left;
3087
+ }
3088
+
3089
+ .wizard-step:hover:enabled {
3090
+ border-color: #9db3cf;
3091
+ background: #eef3fb;
3092
+ }
3093
+
3094
+ .wizard-step:disabled {
3095
+ opacity: 0.58;
3096
+ cursor: not-allowed;
3097
+ }
3098
+
3099
+ .wizard-step.current {
3100
+ border-color: #2f6fda;
3101
+ background: #edf4ff;
3102
+ }
3103
+
3104
+ .wizard-step.complete {
3105
+ border-color: #39a36f;
3106
+ background: #effaf4;
3107
+ }
3108
+
3109
+ .wizard-step .step-number {
3110
+ display: inline-flex;
3111
+ align-items: center;
3112
+ justify-content: center;
3113
+ width: 1.6rem;
3114
+ height: 1.6rem;
3115
+ border-radius: 999px;
3116
+ border: 1px solid #b0bfd3;
3117
+ background: #fff;
3118
+ font-size: 0.82rem;
3119
+ font-weight: 700;
3120
+ }
3121
+
3122
+ .wizard-step.current .step-number {
3123
+ border-color: #2f6fda;
3124
+ color: #1d53b6;
3125
+ }
3126
+
3127
+ .wizard-step.complete .step-number {
3128
+ border-color: #39a36f;
3129
+ color: #257651;
3130
+ }
3131
+
3132
+ .wizard-step .step-name {
3133
+ font-size: 0.92rem;
3134
+ line-height: 1.2;
3135
+ }
3136
+
3137
+ .wizard-content {
3138
+ min-height: 180px;
3139
+ border: 1px solid #dde4ee;
3140
+ border-radius: 10px;
3141
+ background: #fbfcff;
3142
+ padding: 0.85rem;
3143
+ margin-bottom: 1rem;
3144
+ }
3145
+
3146
+ .wizard-content:focus {
3147
+ outline: 2px solid #b8cef2;
3148
+ outline-offset: 2px;
3149
+ }
3150
+
3151
+ .wizard-content form {
3152
+ display: grid;
3153
+ gap: 0.7rem;
3154
+ }
3155
+
3156
+ .wizard-content label {
3157
+ display: grid;
3158
+ gap: 0.28rem;
3159
+ font-size: 0.9rem;
3160
+ color: #25374d;
3161
+ }
3162
+
3163
+ .wizard-content input,
3164
+ .wizard-content textarea,
3165
+ .wizard-content select {
3166
+ border: 1px solid #bac6d6;
3167
+ border-radius: 8px;
3168
+ padding: 0.48rem 0.6rem;
3169
+ font: inherit;
3170
+ background: #fff;
3171
+ }
3172
+
3173
+ .wizard-content input:focus,
3174
+ .wizard-content textarea:focus,
3175
+ .wizard-content select:focus {
3176
+ border-color: #2f6fda;
3177
+ outline: 2px solid #c6daf8;
3178
+ outline-offset: 1px;
3179
+ }
3180
+
3181
+ .wizard-footer {
3182
+ display: flex;
3183
+ justify-content: flex-end;
3184
+ gap: 0.5rem;
3185
+ }
3186
+
3187
+ .wizard-footer button {
3188
+ border: 1px solid #b8c6d8;
3189
+ border-radius: 8px;
3190
+ background: #f5f8fc;
3191
+ color: #1f3046;
3192
+ padding: 0.46rem 0.78rem;
3193
+ cursor: pointer;
3194
+ }
3195
+
3196
+ .wizard-footer button:hover:enabled {
3197
+ background: #e9f1fd;
3198
+ border-color: #88a9d1;
3199
+ }
3200
+
3201
+ .wizard-footer button:disabled {
3202
+ opacity: 0.52;
3203
+ cursor: not-allowed;
3204
+ }
3205
+
3206
+ .wizard-footer [data-action="next"],
3207
+ .wizard-footer [data-action="complete"] {
3208
+ background: #2f6fda;
3209
+ border-color: #2f6fda;
3210
+ color: #fff;
3211
+ }
3212
+
3213
+ .wizard-footer [data-action="next"]:hover:enabled,
3214
+ .wizard-footer [data-action="complete"]:hover:enabled {
3215
+ background: #285fb8;
3216
+ border-color: #285fb8;
3217
+ }
3218
+
3219
+ .wizard.complete {
3220
+ border-color: #39a36f;
3221
+ }
3222
+
3223
+ .wizard-empty,
3224
+ .wizard .error {
3225
+ border: 1px dashed #c2ccda;
3226
+ border-radius: 8px;
3227
+ padding: 0.7rem;
3228
+ color: #40536a;
3229
+ background: #f8fbff;
3230
+ }
3231
+
3232
+ .wizard .error {
3233
+ border-color: #e2b6b6;
3234
+ color: #7f2525;
3235
+ background: #fff6f6;
3236
+ }
3237
+
3238
+ .wizard-json-field,
3239
+ .wizard-field {
3240
+ display: grid;
3241
+ gap: 0.28rem;
3242
+ }
3243
+
3244
+ .wizard-summary {
3245
+ display: grid;
3246
+ gap: 0.55rem;
3247
+ }
3248
+
3249
+ .wizard-summary section {
3250
+ border: 1px solid #e0e6f0;
3251
+ border-radius: 8px;
3252
+ padding: 0.55rem;
3253
+ background: #fff;
3254
+ }
3255
+