@visns-studio/visns-components 5.9.8 → 5.9.10

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,2279 @@
1
+ // Use project root CSS variables instead of local SCSS variables
2
+ // This allows the component to adapt to different project themes
3
+
4
+ // Main container
5
+ .reportBuilder {
6
+ width: 100%;
7
+ min-height: 100vh;
8
+ background-color: var(--bg-color);
9
+ }
10
+
11
+ // Header
12
+ .header {
13
+ background-color: var(--tertiary-color);
14
+ border-bottom: 1px solid var(--border-color);
15
+ padding: var(--padding) calc(var(--padding) * 1.5);
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ box-shadow: var(--box-shadow-small);
20
+ position: sticky;
21
+ top: 0;
22
+ z-index: 100;
23
+ }
24
+
25
+ .headerLeft {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: var(--padding);
29
+
30
+ h1 {
31
+ margin: 0;
32
+ font-size: 1.5rem;
33
+ font-weight: var(--title-weight);
34
+ color: var(--header-color);
35
+ }
36
+ }
37
+
38
+ .helpButton {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 6px;
42
+ background-color: var(--bg-color);
43
+ border: 1px solid var(--border-color);
44
+ border-radius: var(--radius);
45
+ padding: 8px var(--padding);
46
+ font-size: 0.875rem;
47
+ color: var(--paragraph-color);
48
+ cursor: pointer;
49
+ transition: all 0.2s ease;
50
+
51
+ &:hover {
52
+ background-color: var(--bg-color);
53
+ color: var(--header-color);
54
+ box-shadow: var(--box-shadow-small);
55
+ filter: brightness(0.95);
56
+ }
57
+
58
+ svg {
59
+ color: var(--primary-color);
60
+ }
61
+ }
62
+
63
+ .headerRight {
64
+ display: flex;
65
+ align-items: center;
66
+ gap: 16px;
67
+ }
68
+
69
+ // Mode toggle
70
+ .modeToggle {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 12px;
74
+ padding: 8px;
75
+ background-color: var(--bg-color);
76
+ border-radius: var(--radius);
77
+
78
+ span {
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 6px;
82
+ font-size: 0.875rem;
83
+ color: var(--paragraph-color);
84
+ transition: color 0.2s ease;
85
+
86
+ &.active {
87
+ color: var(--header-color);
88
+ font-weight: 500;
89
+ }
90
+ }
91
+ }
92
+
93
+ .switch {
94
+ position: relative;
95
+ display: inline-block;
96
+ width: 44px;
97
+ height: 24px;
98
+
99
+ input {
100
+ opacity: 0;
101
+ width: 0;
102
+ height: 0;
103
+
104
+ &:checked + .slider {
105
+ background-color: var(--primary-color);
106
+
107
+ &:before {
108
+ transform: translateX(20px);
109
+ }
110
+ }
111
+ }
112
+ }
113
+
114
+ .slider {
115
+ position: absolute;
116
+ cursor: pointer;
117
+ top: 0;
118
+ left: 0;
119
+ right: 0;
120
+ bottom: 0;
121
+ background-color: var(--border-color);
122
+ transition: 0.3s;
123
+ border-radius: 24px;
124
+
125
+ &:before {
126
+ position: absolute;
127
+ content: '';
128
+ height: 18px;
129
+ width: 18px;
130
+ left: 3px;
131
+ bottom: 3px;
132
+ background-color: var(--tertiary-color);
133
+ transition: 0.3s;
134
+ border-radius: 50%;
135
+ box-shadow: var(--box-shadow-small);
136
+ }
137
+ }
138
+
139
+ // Content
140
+ .content {
141
+ padding: 24px;
142
+ }
143
+
144
+ // Template Selection
145
+ .templateSelection {
146
+ max-width: 1200px;
147
+ margin: 0 auto;
148
+ }
149
+
150
+ .templateHeader {
151
+ text-align: center;
152
+ margin-bottom: 40px;
153
+
154
+ h2 {
155
+ font-size: 2rem;
156
+ font-weight: 700;
157
+ color: var(--header-color);
158
+ margin-bottom: 12px;
159
+ }
160
+
161
+ p {
162
+ font-size: 1.125rem;
163
+ color: var(--paragraph-color);
164
+ }
165
+ }
166
+
167
+ .templateCategories {
168
+ display: grid;
169
+ gap: 32px;
170
+ }
171
+
172
+ .templateCategory {
173
+ background-color: var(--tertiary-color);
174
+ border-radius: var(--radius);
175
+ padding: 24px;
176
+ box-shadow: var(--box-shadow-small);
177
+ border: 1px solid var(--border-color);
178
+ }
179
+
180
+ .categoryHeader {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 12px;
184
+ margin-bottom: 20px;
185
+
186
+ svg {
187
+ color: var(--primary-color);
188
+ }
189
+
190
+ h3 {
191
+ margin: 0;
192
+ font-size: 1.25rem;
193
+ font-weight: 600;
194
+ color: var(--header-color);
195
+ }
196
+ }
197
+
198
+ .templateGrid {
199
+ display: grid;
200
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
201
+ gap: 16px;
202
+ }
203
+
204
+ .templateCard {
205
+ background-color: var(--bg-color);
206
+ border: 2px solid transparent;
207
+ border-radius: var(--radius);
208
+ padding: 20px;
209
+ cursor: pointer;
210
+ transition: all 0.2s ease;
211
+ text-align: center;
212
+
213
+ &:hover {
214
+ border-color: var(--primary-color);
215
+ background-color: var(--tertiary-color);
216
+ box-shadow: var(--box-shadow-small);
217
+ transform: translateY(-2px);
218
+ }
219
+
220
+ svg {
221
+ color: var(--primary-color);
222
+ margin-bottom: 12px;
223
+ }
224
+
225
+ h4 {
226
+ margin: 0 0 8px 0;
227
+ font-size: 1rem;
228
+ font-weight: 600;
229
+ color: var(--header-color);
230
+ }
231
+
232
+ p {
233
+ margin: 0;
234
+ font-size: 0.875rem;
235
+ color: var(--paragraph-color);
236
+ line-height: 1.4;
237
+ }
238
+ }
239
+
240
+ .customTemplate {
241
+ background: linear-gradient(
242
+ 135deg,
243
+ var(--primary-color) 0%,
244
+ var(--primary-color) 100%
245
+ );
246
+ color: var(--tertiary-color);
247
+ border-radius: var(--radius);
248
+ padding: 32px;
249
+ cursor: pointer;
250
+ transition: all 0.2s ease;
251
+ text-align: center;
252
+ display: flex;
253
+ flex-direction: column;
254
+ align-items: center;
255
+ justify-content: center;
256
+ min-height: 200px;
257
+
258
+ &:hover {
259
+ box-shadow: var(--box-shadow-large);
260
+ transform: translateY(-2px);
261
+ }
262
+
263
+ svg {
264
+ color: var(--tertiary-color);
265
+ margin-bottom: 16px;
266
+ }
267
+
268
+ h4 {
269
+ margin: 0 0 8px 0;
270
+ font-size: 1.25rem;
271
+ font-weight: 700;
272
+ }
273
+
274
+ p {
275
+ margin: 0;
276
+ font-size: 0.875rem;
277
+ opacity: 0.9;
278
+ }
279
+ }
280
+
281
+ // Reports Dashboard
282
+ .reportsDashboard {
283
+ max-width: 800px;
284
+ margin: 0 auto;
285
+ }
286
+
287
+ .newReportSection {
288
+ margin-bottom: 32px;
289
+ }
290
+
291
+ .newReportCard {
292
+ background: linear-gradient(
293
+ 135deg,
294
+ var(--primary-color) 0%,
295
+ var(--primary-color) 100%
296
+ );
297
+ color: var(--tertiary-color);
298
+ border-radius: var(--radius);
299
+ padding: 32px;
300
+ text-align: center;
301
+ cursor: pointer;
302
+ transition: all 0.2s ease;
303
+ border: none;
304
+
305
+ &:hover {
306
+ transform: translateY(-2px);
307
+ box-shadow: var(--box-shadow-large);
308
+ }
309
+
310
+ svg {
311
+ margin-bottom: 16px;
312
+ }
313
+
314
+ h4 {
315
+ margin: 0 0 8px 0;
316
+ font-size: 1.25rem;
317
+ font-weight: 700;
318
+ color: var(--tertiary-color);
319
+ }
320
+
321
+ p {
322
+ margin: 0;
323
+ opacity: 0.9;
324
+ font-size: 0.875rem;
325
+ color: var(--tertiary-color);
326
+ }
327
+ }
328
+
329
+ .savedReportsSection {
330
+ h3 {
331
+ margin: 0 0 16px 0;
332
+ font-size: 1.125rem;
333
+ font-weight: 600;
334
+ color: var(--header-color);
335
+ }
336
+ }
337
+
338
+ .reportsGrid {
339
+ display: grid;
340
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
341
+ gap: 16px;
342
+ }
343
+
344
+ .reportCard {
345
+ background-color: var(--tertiary-color);
346
+ border: 2px solid var(--border-color);
347
+ border-radius: var(--radius);
348
+ overflow: hidden;
349
+ transition: all 0.2s ease;
350
+ position: relative;
351
+
352
+ &:hover {
353
+ border-color: var(--primary-color);
354
+ box-shadow: var(--box-shadow-small);
355
+ transform: translateY(-2px);
356
+ }
357
+
358
+ .reportCardContent {
359
+ padding: 16px;
360
+ cursor: pointer;
361
+ min-height: 120px;
362
+ display: flex;
363
+ flex-direction: column;
364
+ justify-content: space-between;
365
+ }
366
+
367
+ .reportHeader {
368
+ margin-bottom: 12px;
369
+
370
+ h4 {
371
+ margin: 0 0 8px 0;
372
+ font-size: 1rem;
373
+ font-weight: 600;
374
+ color: var(--header-color);
375
+ line-height: 1.3;
376
+ overflow: hidden;
377
+ text-overflow: ellipsis;
378
+ white-space: nowrap;
379
+ }
380
+
381
+ .reportMeta {
382
+ display: flex;
383
+ align-items: center;
384
+ gap: 8px;
385
+ font-size: 0.75rem;
386
+ color: var(--paragraph-color);
387
+
388
+ .reportVisibility {
389
+ font-size: 0.875rem;
390
+ }
391
+
392
+ .reportDate {
393
+ color: var(--paragraph-color);
394
+ }
395
+ }
396
+ }
397
+
398
+ .reportTableInfo {
399
+ margin-bottom: 12px;
400
+
401
+ .reportTable {
402
+ display: inline-block;
403
+ font-size: 0.75rem;
404
+ background-color: var(--bg-color);
405
+ color: var(--paragraph-color);
406
+ padding: 4px 8px;
407
+ border-radius: var(--radius);
408
+ border: 1px solid var(--border-color);
409
+ }
410
+ }
411
+
412
+ .reportClickHint {
413
+ font-size: 0.75rem;
414
+ color: var(--paragraph-color);
415
+ font-style: italic;
416
+ margin-top: auto;
417
+ }
418
+
419
+ .reportActions {
420
+ position: absolute;
421
+ top: 8px;
422
+ right: 8px;
423
+
424
+ .deleteReportBtn {
425
+ width: 24px;
426
+ height: 24px;
427
+ border-radius: 50%;
428
+ background-color: rgba(var(--approval-color), 0.1);
429
+ border: 1px solid rgba(var(--approval-color), 0.2);
430
+ color: var(--approval-color);
431
+ font-size: 16px;
432
+ font-weight: bold;
433
+ cursor: pointer;
434
+ display: flex;
435
+ align-items: center;
436
+ justify-content: center;
437
+ transition: all 0.2s ease;
438
+ opacity: 0.7;
439
+
440
+ &:hover {
441
+ background-color: var(--approval-color);
442
+ color: var(--tertiary-color);
443
+ opacity: 1;
444
+ transform: scale(1.1);
445
+ }
446
+ }
447
+ }
448
+ }
449
+
450
+ .noReports {
451
+ text-align: center;
452
+ padding: 48px 24px;
453
+ color: var(--paragraph-color);
454
+
455
+ svg {
456
+ color: var(--paragraph-color);
457
+ margin-bottom: 16px;
458
+ }
459
+
460
+ h3 {
461
+ margin: 0 0 8px 0;
462
+ color: var(--header-color);
463
+ }
464
+
465
+ p {
466
+ margin: 0;
467
+ max-width: 400px;
468
+ margin: 0 auto;
469
+ }
470
+ }
471
+
472
+ // Wizard Mode
473
+ .wizardMode {
474
+ max-width: 1400px; // Expanded from 1000px to fit more content
475
+ margin: 0 auto;
476
+ }
477
+
478
+ .wizardProgress {
479
+ background-color: var(--tertiary-color);
480
+ border-radius: var(--radius);
481
+ padding: 20px;
482
+ margin-bottom: 24px;
483
+ box-shadow: var(--box-shadow-small);
484
+ display: flex;
485
+ justify-content: space-between;
486
+ align-items: center;
487
+ position: relative;
488
+ gap: 16px;
489
+
490
+ // Remove the line - we'll use arrows instead
491
+ &::before {
492
+ display: none;
493
+ }
494
+ }
495
+
496
+ .wizardStep {
497
+ display: flex;
498
+ flex-direction: column;
499
+ align-items: center;
500
+ gap: 8px;
501
+ cursor: pointer;
502
+ position: relative;
503
+ z-index: 1;
504
+ transition: all 0.2s ease;
505
+ flex: 1;
506
+ max-width: 200px;
507
+
508
+ // Add arrow after each step except the last
509
+ &:not(:last-child)::after {
510
+ content: '→';
511
+ position: absolute;
512
+ right: -20px;
513
+ top: 20px; // Align with step icon center
514
+ color: var(--border-color);
515
+ font-size: 20px;
516
+ font-weight: bold;
517
+ z-index: 1;
518
+ transition: color 0.2s ease;
519
+ }
520
+
521
+ &.active {
522
+ background-color: rgba(var(--primary-rgb), 0.05);
523
+ border-radius: var(--radius);
524
+ padding: 12px 8px;
525
+ transform: scale(1.02);
526
+
527
+ .stepIcon {
528
+ background-color: var(--primary-color);
529
+ color: var(--tertiary-color);
530
+ box-shadow: 0 0 0 4px rgba(var(--primary-rgb), 0.15);
531
+ border: 3px solid var(--tertiary-color);
532
+ width: 48px;
533
+ height: 48px;
534
+ font-size: 1.1em;
535
+ }
536
+
537
+ .stepTitle {
538
+ color: var(--primary-color);
539
+ font-weight: 700;
540
+ font-size: 0.95em;
541
+ }
542
+
543
+ .stepDescription {
544
+ color: var(--primary-color);
545
+ opacity: 0.8;
546
+ }
547
+
548
+ // Color the arrow after active step
549
+ &:not(:last-child)::after {
550
+ color: var(--primary-color);
551
+ font-weight: bold;
552
+ }
553
+ }
554
+
555
+ &.complete {
556
+ .stepIcon {
557
+ background-color: rgba(var(--color-valid), 1);
558
+ color: var(--tertiary-color);
559
+ border: 2px solid rgba(var(--color-valid), 0.3);
560
+ }
561
+
562
+ .stepTitle {
563
+ color: rgba(var(--color-valid), 1);
564
+ font-weight: 600;
565
+ }
566
+
567
+ .stepDescription {
568
+ color: rgba(var(--color-valid), 1);
569
+ opacity: 0.7;
570
+ }
571
+
572
+ // Color the arrow after completed step
573
+ &:not(:last-child)::after {
574
+ color: rgba(var(--color-valid), 1);
575
+ }
576
+ }
577
+
578
+ &:hover:not(.active) {
579
+ background-color: rgba(var(--primary-rgb), 0.02);
580
+ border-radius: var(--radius);
581
+ padding: 8px;
582
+
583
+ .stepIcon {
584
+ transform: scale(1.05);
585
+ background-color: rgba(var(--primary-rgb), 0.1);
586
+ color: var(--primary-color);
587
+ }
588
+
589
+ .stepTitle {
590
+ color: var(--primary-color);
591
+ }
592
+ }
593
+ }
594
+
595
+ .stepIcon {
596
+ width: 40px; // Reduced from 48px for more compact look
597
+ height: 40px;
598
+ border-radius: 50%;
599
+ background-color: var(--tertiary-color);
600
+ border: 2px solid var(--border-color);
601
+ display: flex;
602
+ align-items: center;
603
+ justify-content: center;
604
+ transition: all 0.2s ease;
605
+ }
606
+
607
+ .stepInfo {
608
+ text-align: center;
609
+
610
+ .stepTitle {
611
+ display: block;
612
+ font-size: 0.875rem;
613
+ font-weight: 500;
614
+ color: var(--paragraph-color);
615
+ margin-bottom: 2px;
616
+ }
617
+
618
+ .stepDescription {
619
+ display: block;
620
+ font-size: 0.75rem;
621
+ color: var(--paragraph-color);
622
+ max-width: 150px;
623
+ line-height: 1.3;
624
+ }
625
+ }
626
+
627
+ .wizardContent {
628
+ background-color: var(--tertiary-color);
629
+ border-radius: var(--radius);
630
+ box-shadow: var(--box-shadow-small);
631
+ overflow: hidden;
632
+ }
633
+
634
+ .stepHeader {
635
+ display: flex;
636
+ align-items: center;
637
+ gap: 24px;
638
+ padding: 24px 32px;
639
+ border-bottom: 1px solid var(--border-color);
640
+ background: linear-gradient(
641
+ 135deg,
642
+ var(--primary-color) 0%,
643
+ var(--primary-color) 100%
644
+ );
645
+ color: var(--tertiary-color);
646
+
647
+ .stepNumber {
648
+ display: flex;
649
+ align-items: center;
650
+ justify-content: center;
651
+ width: 48px;
652
+ height: 48px;
653
+ background-color: rgba(255, 255, 255, 0.2);
654
+ border-radius: 50%;
655
+ font-size: 1.5rem;
656
+ font-weight: 700;
657
+ color: var(--tertiary-color);
658
+ }
659
+
660
+ .stepHeaderContent {
661
+ display: flex;
662
+ align-items: center;
663
+ gap: 16px;
664
+ flex: 1;
665
+
666
+ .stepIcon {
667
+ display: flex;
668
+ align-items: center;
669
+ justify-content: center;
670
+ width: 40px;
671
+ height: 40px;
672
+ background-color: rgba(255, 255, 255, 0.15);
673
+ border-radius: var(--radius);
674
+
675
+ svg {
676
+ color: var(--tertiary-color);
677
+ }
678
+ }
679
+
680
+ .stepHeaderText {
681
+ h2 {
682
+ margin: 0 0 4px 0;
683
+ font-size: 1.5rem;
684
+ font-weight: 700;
685
+ color: var(--tertiary-color);
686
+ }
687
+
688
+ p {
689
+ margin: 0;
690
+ font-size: 1rem;
691
+ color: rgba(255, 255, 255, 0.9);
692
+ }
693
+ }
694
+ }
695
+ }
696
+
697
+ .stepGuidance {
698
+ padding: 20px 32px;
699
+ background-color: rgba(var(--primary-rgb), 0.05);
700
+ border-top: 1px solid var(--border-color);
701
+ border-bottom: 1px solid var(--border-color);
702
+
703
+ .guidanceContent {
704
+ h3 {
705
+ margin: 0 0 16px 0;
706
+ font-size: 1.125rem;
707
+ font-weight: 600;
708
+ color: var(--header-color);
709
+ }
710
+
711
+ .howToSteps {
712
+ margin-bottom: 16px;
713
+
714
+ h4 {
715
+ margin: 0 0 8px 0;
716
+ font-size: 0.875rem;
717
+ font-weight: 600;
718
+ color: var(--paragraph-color);
719
+ text-transform: uppercase;
720
+ letter-spacing: 0.5px;
721
+ }
722
+
723
+ ol {
724
+ margin: 0;
725
+ padding-left: 20px;
726
+ color: var(--paragraph-color);
727
+
728
+ li {
729
+ margin-bottom: 4px;
730
+ font-size: 0.875rem;
731
+ line-height: 1.4;
732
+ }
733
+ }
734
+ }
735
+
736
+ .guidanceTip {
737
+ display: flex;
738
+ align-items: flex-start;
739
+ gap: 8px;
740
+ padding: 12px;
741
+ background-color: rgba(var(--color-alert), 0.1);
742
+ border: 1px solid rgba(var(--color-alert), 0.2);
743
+ border-radius: var(--radius);
744
+
745
+ svg {
746
+ color: rgba(var(--color-alert), 1);
747
+ flex-shrink: 0;
748
+ margin-top: 2px;
749
+ }
750
+
751
+ span {
752
+ font-size: 0.875rem;
753
+ color: var(--header-color);
754
+ }
755
+ }
756
+ }
757
+ }
758
+
759
+ .stepBody {
760
+ padding: 32px;
761
+ min-height: 500px; // Increased from 400px to accommodate grid layout
762
+ }
763
+
764
+ .wizardNavigation {
765
+ display: flex;
766
+ justify-content: space-between;
767
+ align-items: center;
768
+ padding: 24px 32px;
769
+ border-top: 1px solid var(--border-color);
770
+ background-color: var(--bg-color);
771
+ gap: 16px;
772
+
773
+ .btn {
774
+ min-width: 120px;
775
+ padding: 12px 24px;
776
+ font-weight: 600;
777
+ transition: all 0.2s ease;
778
+
779
+ &:focus {
780
+ outline: 2px solid rgba(var(--primary-rgb), 0.3);
781
+ outline-offset: 2px;
782
+ }
783
+ }
784
+ }
785
+
786
+ // Table Selection
787
+ .tableSelection {
788
+ .noTables {
789
+ text-align: center;
790
+ padding: 48px 24px;
791
+ color: var(--paragraph-color);
792
+
793
+ svg {
794
+ color: var(--paragraph-color);
795
+ margin-bottom: 16px;
796
+ }
797
+
798
+ h3 {
799
+ margin: 0 0 8px 0;
800
+ color: var(--header-color);
801
+ }
802
+
803
+ p {
804
+ margin: 0;
805
+ max-width: 400px;
806
+ margin: 0 auto;
807
+ }
808
+ }
809
+
810
+ .simpleTableList {
811
+ max-width: 100%; // Use full width instead of 600px
812
+ margin: 0 auto;
813
+
814
+ .tableListHeader {
815
+ text-align: center;
816
+ margin-bottom: 24px;
817
+
818
+ h3 {
819
+ margin: 0 0 8px 0;
820
+ font-size: 1.25rem;
821
+ font-weight: 600;
822
+ color: var(--header-color);
823
+ }
824
+
825
+ p {
826
+ margin: 0;
827
+ color: var(--paragraph-color);
828
+ font-size: 0.875rem;
829
+ }
830
+ }
831
+
832
+ .tableGrid {
833
+ display: grid;
834
+ grid-template-columns: repeat(
835
+ auto-fill,
836
+ minmax(220px, 1fr)
837
+ ); // Reduced from 280px for more compact
838
+ gap: 12px; // Reduced from 16px
839
+ }
840
+
841
+ .tableCard {
842
+ display: flex;
843
+ flex-direction: column;
844
+ padding: 16px; // Reduced from 20px
845
+ background-color: var(--tertiary-color);
846
+ border: 2px solid var(--border-color);
847
+ border-radius: var(--radius);
848
+ cursor: pointer;
849
+ transition: all 0.2s ease;
850
+ text-align: center;
851
+ position: relative;
852
+ min-height: 120px; // Reduced from 140px
853
+
854
+ &:hover {
855
+ border-color: var(--primary-color);
856
+ box-shadow: var(--box-shadow-small);
857
+ transform: translateY(-2px);
858
+ }
859
+
860
+ &.selected {
861
+ border-color: var(--primary-color);
862
+ background-color: rgba(var(--primary-rgb), 0.05);
863
+ box-shadow: var(--box-shadow-small);
864
+ }
865
+
866
+ .tableCardIcon {
867
+ display: flex;
868
+ align-items: center;
869
+ justify-content: center;
870
+ width: 40px; // Reduced from 48px
871
+ height: 40px;
872
+ background-color: rgba(var(--primary-rgb), 0.1);
873
+ border-radius: var(--radius);
874
+ margin: 0 auto 12px auto; // Reduced from 16px
875
+ flex-shrink: 0;
876
+
877
+ svg {
878
+ color: var(--primary-color);
879
+ }
880
+ }
881
+
882
+ .tableCardInfo {
883
+ flex: 1;
884
+
885
+ h4 {
886
+ margin: 0 0 6px 0; // Reduced from 8px
887
+ font-size: 0.9rem; // Reduced from 1rem
888
+ font-weight: 600;
889
+ color: var(--header-color);
890
+ line-height: 1.2;
891
+ }
892
+
893
+ p {
894
+ margin: 0;
895
+ font-size: 0.7rem; // Reduced from 0.75rem
896
+ color: var(--paragraph-color);
897
+ line-height: 1.3; // Reduced from 1.4
898
+ display: -webkit-box;
899
+ -webkit-line-clamp: 2; // Reduced from 3 lines
900
+ -webkit-box-orient: vertical;
901
+ overflow: hidden;
902
+ }
903
+ }
904
+
905
+ .tableCardCheck {
906
+ position: absolute;
907
+ top: 12px;
908
+ right: 12px;
909
+ display: flex;
910
+ align-items: center;
911
+ justify-content: center;
912
+ width: 24px;
913
+ height: 24px;
914
+ background-color: var(--primary-color);
915
+ border-radius: 50%;
916
+ color: var(--tertiary-color);
917
+
918
+ svg {
919
+ color: var(--tertiary-color);
920
+ }
921
+ }
922
+ }
923
+
924
+ .selectedTableInfo {
925
+ display: flex;
926
+ align-items: center;
927
+ justify-content: center;
928
+ gap: 8px;
929
+ margin-top: 16px;
930
+ padding: 12px;
931
+ background-color: rgba(var(--color-valid), 0.1);
932
+ border: 1px solid rgba(var(--color-valid), 0.2);
933
+ border-radius: var(--radius);
934
+ color: rgba(var(--color-valid), 1);
935
+ font-weight: 500;
936
+ font-size: 0.875rem;
937
+
938
+ svg {
939
+ color: rgba(var(--color-valid), 1);
940
+ }
941
+ }
942
+ }
943
+ }
944
+
945
+ .tableCategory {
946
+ margin-bottom: 32px;
947
+
948
+ h3 {
949
+ margin: 0 0 16px 0;
950
+ font-size: 1.125rem;
951
+ font-weight: 600;
952
+ color: var(--header-color);
953
+ }
954
+ }
955
+
956
+ .tableGrid {
957
+ display: grid;
958
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
959
+ gap: 12px;
960
+ }
961
+
962
+ .tableCard {
963
+ background-color: var(--bg-color);
964
+ border: 2px solid transparent;
965
+ border-radius: var(--radius);
966
+ padding: 16px;
967
+ cursor: pointer;
968
+ transition: all 0.2s ease;
969
+ display: flex;
970
+ flex-direction: column;
971
+ align-items: center;
972
+ gap: 8px;
973
+ position: relative;
974
+
975
+ &:hover {
976
+ border-color: var(--primary-color);
977
+ background-color: var(--tertiary-color);
978
+ box-shadow: var(--box-shadow-small);
979
+ }
980
+
981
+ &.selected {
982
+ border-color: var(--primary-color);
983
+ background-color: rgba(var(--primary-rgb), 0.05);
984
+ }
985
+
986
+ svg {
987
+ color: var(--primary-color);
988
+ }
989
+
990
+ span {
991
+ font-size: 0.875rem;
992
+ font-weight: 500;
993
+ color: var(--header-color);
994
+ text-align: center;
995
+ }
996
+
997
+ .checkIcon {
998
+ position: absolute;
999
+ top: 8px;
1000
+ right: 8px;
1001
+ color: var(--primary-color);
1002
+ }
1003
+ }
1004
+
1005
+ // Column Selection
1006
+ .columnSelection {
1007
+ .noColumns {
1008
+ text-align: center;
1009
+ padding: 48px 24px;
1010
+ color: var(--paragraph-color);
1011
+
1012
+ svg {
1013
+ color: var(--paragraph-color);
1014
+ margin-bottom: 16px;
1015
+ }
1016
+
1017
+ h3 {
1018
+ margin: 0 0 8px 0;
1019
+ color: var(--header-color);
1020
+ }
1021
+
1022
+ p {
1023
+ margin: 0;
1024
+ max-width: 400px;
1025
+ margin: 0 auto;
1026
+ }
1027
+ }
1028
+
1029
+ .columnSelectionHeader {
1030
+ margin-bottom: 24px;
1031
+
1032
+ p {
1033
+ margin: 0 0 12px 0;
1034
+ font-size: 1rem;
1035
+ color: var(--paragraph-color);
1036
+ }
1037
+ }
1038
+
1039
+ .quickActions {
1040
+ display: flex;
1041
+ gap: 16px;
1042
+ }
1043
+
1044
+ .linkButton {
1045
+ background: none;
1046
+ border: none;
1047
+ color: var(--primary-color);
1048
+ font-size: 0.875rem;
1049
+ font-weight: 500;
1050
+ cursor: pointer;
1051
+ transition: all 0.2s ease;
1052
+
1053
+ &:hover {
1054
+ color: var(--primary-color);
1055
+ text-decoration: underline;
1056
+ }
1057
+ }
1058
+ }
1059
+
1060
+ .columnCategories {
1061
+ display: grid;
1062
+ gap: 16px; // Reduced from 24px for more compact layout
1063
+ }
1064
+
1065
+ .columnCategory {
1066
+ background-color: var(--bg-color);
1067
+ border-radius: var(--radius);
1068
+ padding: 16px; // Reduced from 20px
1069
+ border: 1px solid var(--border-color);
1070
+
1071
+ .categoryHeader {
1072
+ display: flex;
1073
+ align-items: center;
1074
+ gap: 12px;
1075
+ margin-bottom: 16px;
1076
+
1077
+ svg {
1078
+ color: var(--primary-color);
1079
+ }
1080
+
1081
+ h4 {
1082
+ margin: 0;
1083
+ font-size: 1rem;
1084
+ font-weight: 600;
1085
+ color: var(--header-color);
1086
+ }
1087
+
1088
+ span {
1089
+ font-size: 0.875rem;
1090
+ color: var(--paragraph-color);
1091
+ }
1092
+ }
1093
+ }
1094
+
1095
+ .columnList {
1096
+ display: grid;
1097
+ grid-template-columns: repeat(
1098
+ auto-fill,
1099
+ minmax(180px, 1fr)
1100
+ ); // Reduced from 200px
1101
+ gap: 6px; // Reduced from 8px
1102
+ }
1103
+
1104
+ .columnItem {
1105
+ display: flex;
1106
+ align-items: center;
1107
+ gap: 6px; // Reduced from 8px
1108
+ padding: 6px 10px; // Reduced from 8px 12px
1109
+ background-color: var(--tertiary-color);
1110
+ border-radius: var(--radius);
1111
+ cursor: pointer;
1112
+ transition: all 0.2s ease;
1113
+
1114
+ &:hover {
1115
+ background-color: rgba(var(--primary-rgb), 0.05);
1116
+ }
1117
+
1118
+ input[type='checkbox'] {
1119
+ width: 16px;
1120
+ height: 16px;
1121
+ cursor: pointer;
1122
+ accent-color: var(--primary-color);
1123
+ }
1124
+
1125
+ .columnName {
1126
+ flex: 1;
1127
+ font-size: 0.875rem;
1128
+ font-weight: 500;
1129
+ color: var(--header-color);
1130
+ }
1131
+
1132
+ .columnType {
1133
+ font-size: 0.75rem;
1134
+ color: var(--paragraph-color);
1135
+ padding: 2px 8px;
1136
+ background-color: var(--bg-color);
1137
+ border-radius: var(--radius);
1138
+ }
1139
+ }
1140
+
1141
+ .selectedSummary {
1142
+ margin-top: 24px;
1143
+ padding: 16px;
1144
+ background-color: rgba(var(--primary-rgb), 0.05);
1145
+ border: 1px solid rgba(var(--primary-rgb), 0.2);
1146
+ border-radius: var(--radius);
1147
+ text-align: center;
1148
+ font-size: 0.875rem;
1149
+ color: var(--primary-color);
1150
+ }
1151
+
1152
+ .tableColumnSections {
1153
+ display: flex;
1154
+ flex-direction: column;
1155
+ gap: 24px;
1156
+ }
1157
+
1158
+ .tableSection {
1159
+ background-color: var(--tertiary-color);
1160
+ border: 1px solid var(--border-color);
1161
+ border-radius: var(--radius);
1162
+ padding: 16px;
1163
+
1164
+ .tableSectionHeader {
1165
+ display: flex;
1166
+ align-items: center;
1167
+ justify-content: space-between;
1168
+ margin-bottom: 16px;
1169
+ padding-bottom: 12px;
1170
+ border-bottom: 1px solid var(--border-color);
1171
+
1172
+ h3 {
1173
+ margin: 0;
1174
+ font-size: 1.125rem;
1175
+ font-weight: 600;
1176
+ color: var(--header-color);
1177
+ }
1178
+
1179
+ .tableColumnCount {
1180
+ font-size: 0.875rem;
1181
+ color: var(--paragraph-color);
1182
+ background-color: var(--bg-color);
1183
+ padding: 4px 8px;
1184
+ border-radius: var(--radius);
1185
+ }
1186
+ }
1187
+ }
1188
+
1189
+ // Help boxes
1190
+ .helpBox {
1191
+ display: flex;
1192
+ gap: 16px;
1193
+ padding: 16px;
1194
+ background-color: rgba(var(--primary-color), 0.05);
1195
+ border: 1px solid rgba(var(--primary-color), 0.2);
1196
+ border-radius: var(--radius);
1197
+ margin-bottom: 24px;
1198
+
1199
+ svg {
1200
+ color: var(--primary-color);
1201
+ flex-shrink: 0;
1202
+ }
1203
+
1204
+ h4 {
1205
+ margin: 0 0 8px 0;
1206
+ font-size: 1rem;
1207
+ font-weight: 600;
1208
+ color: var(--header-color);
1209
+ }
1210
+
1211
+ p {
1212
+ margin: 0;
1213
+ font-size: 0.875rem;
1214
+ color: var(--paragraph-color);
1215
+ line-height: 1.5;
1216
+ }
1217
+ }
1218
+
1219
+ // Skip options
1220
+ .skipOption {
1221
+ text-align: center;
1222
+ margin-top: 32px;
1223
+ padding-top: 32px;
1224
+ border-top: 1px solid var(--border-color);
1225
+
1226
+ p {
1227
+ margin: 0 0 16px 0;
1228
+ font-size: 0.875rem;
1229
+ color: var(--paragraph-color);
1230
+ }
1231
+ }
1232
+
1233
+ // Advanced Filters section (from original GenericReport)
1234
+ .filtersSection {
1235
+ // Filter operator container
1236
+ .filterOperatorContainer {
1237
+ margin-bottom: 24px;
1238
+ padding: 20px;
1239
+ background-color: var(--tertiary-color);
1240
+ border: 1px solid var(--border-color);
1241
+ border-radius: var(--radius);
1242
+ display: flex;
1243
+ justify-content: space-between;
1244
+ align-items: center;
1245
+ gap: 20px;
1246
+ }
1247
+
1248
+ .mainFilterOperator {
1249
+ flex: 1;
1250
+
1251
+ label {
1252
+ display: block;
1253
+ margin-bottom: 12px;
1254
+ font-size: 1rem;
1255
+ font-weight: 600;
1256
+ color: var(--header-color);
1257
+ }
1258
+ }
1259
+
1260
+ .operatorOptions {
1261
+ display: flex;
1262
+ gap: 16px;
1263
+ }
1264
+
1265
+ .operatorOption {
1266
+ padding: 16px 20px;
1267
+ border: 2px solid var(--border-color);
1268
+ border-radius: var(--radius);
1269
+ cursor: pointer;
1270
+ transition: all 0.2s ease;
1271
+ background-color: var(--tertiary-color);
1272
+ text-align: center;
1273
+ flex: 1;
1274
+
1275
+ &:hover {
1276
+ border-color: var(--primary-color);
1277
+ background-color: rgba(var(--primary-rgb), 0.05);
1278
+ }
1279
+
1280
+ &.operatorOptionSelected {
1281
+ border-color: var(--primary-color);
1282
+ background-color: rgba(var(--primary-rgb), 0.1);
1283
+
1284
+ .operatorName {
1285
+ color: var(--primary-color);
1286
+ }
1287
+ }
1288
+ }
1289
+
1290
+ .operatorName {
1291
+ font-size: 1rem;
1292
+ font-weight: 600;
1293
+ color: var(--header-color);
1294
+ margin-bottom: 4px;
1295
+ }
1296
+
1297
+ .operatorDescription {
1298
+ font-size: 0.875rem;
1299
+ color: var(--paragraph-color);
1300
+ line-height: 1.3;
1301
+ }
1302
+
1303
+ .filterActionButtons {
1304
+ display: flex;
1305
+ gap: 12px;
1306
+ }
1307
+
1308
+ // Filter groups
1309
+ .filterGroup {
1310
+ margin-bottom: 24px;
1311
+ background-color: var(--tertiary-color);
1312
+ border: 1px solid var(--border-color);
1313
+ border-radius: var(--radius);
1314
+ overflow: hidden;
1315
+ }
1316
+
1317
+ .filterGroupHeader {
1318
+ background-color: var(--bg-color);
1319
+ padding: 16px 20px;
1320
+ border-bottom: 1px solid var(--border-color);
1321
+ display: flex;
1322
+ justify-content: space-between;
1323
+ align-items: center;
1324
+ gap: 20px;
1325
+ }
1326
+
1327
+ .filterGroupTitle {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ gap: 24px;
1331
+ flex: 1;
1332
+
1333
+ h4 {
1334
+ margin: 0;
1335
+ font-size: 1.125rem;
1336
+ font-weight: 600;
1337
+ color: var(--header-color);
1338
+ }
1339
+ }
1340
+
1341
+ .filterGroupOperator {
1342
+ display: flex;
1343
+ align-items: center;
1344
+ gap: 12px;
1345
+
1346
+ label {
1347
+ font-size: 0.875rem;
1348
+ font-weight: 500;
1349
+ color: var(--paragraph-color);
1350
+ }
1351
+ }
1352
+
1353
+ .operatorButtonGroup {
1354
+ display: flex;
1355
+ border-radius: var(--radius);
1356
+ overflow: hidden;
1357
+ border: 1px solid var(--border-color);
1358
+ }
1359
+
1360
+ .operatorButton {
1361
+ padding: 8px 16px;
1362
+ background-color: var(--tertiary-color);
1363
+ border: none;
1364
+ font-size: 0.875rem;
1365
+ font-weight: 500;
1366
+ color: var(--paragraph-color);
1367
+ cursor: pointer;
1368
+ transition: all 0.2s ease;
1369
+ border-right: 1px solid var(--border-color);
1370
+
1371
+ &:last-child {
1372
+ border-right: none;
1373
+ }
1374
+
1375
+ &:hover {
1376
+ background-color: rgba(var(--primary-rgb), 0.05);
1377
+ color: var(--primary-color);
1378
+ }
1379
+
1380
+ &.operatorButtonSelected {
1381
+ background-color: var(--primary-color);
1382
+ color: var(--tertiary-color);
1383
+ }
1384
+ }
1385
+
1386
+ .filterGroupActions {
1387
+ display: flex;
1388
+ gap: 12px;
1389
+ align-items: center;
1390
+ }
1391
+
1392
+ // Filter criteria
1393
+ .filterCriteriaContainer {
1394
+ padding: 20px;
1395
+ }
1396
+
1397
+ .filterCriterion {
1398
+ background-color: var(--bg-color);
1399
+ border: 1px solid var(--border-color);
1400
+ border-radius: var(--radius);
1401
+ margin-bottom: 16px;
1402
+ overflow: hidden;
1403
+
1404
+ &:last-child {
1405
+ margin-bottom: 0;
1406
+ }
1407
+ }
1408
+
1409
+ .filterCriterionHeader {
1410
+ padding: 12px 16px;
1411
+ background-color: var(--tertiary-color);
1412
+ border-bottom: 1px solid var(--border-color);
1413
+ display: flex;
1414
+ justify-content: space-between;
1415
+ align-items: center;
1416
+
1417
+ h4 {
1418
+ margin: 0;
1419
+ font-size: 0.875rem;
1420
+ font-weight: 500;
1421
+ color: var(--header-color);
1422
+ }
1423
+ }
1424
+
1425
+ .filterCriterionFields {
1426
+ padding: 16px;
1427
+ display: grid;
1428
+ grid-template-columns: 2fr 1fr 2fr;
1429
+ gap: 16px;
1430
+ align-items: end;
1431
+
1432
+ @media (max-width: 768px) {
1433
+ grid-template-columns: 1fr;
1434
+ gap: 12px;
1435
+ }
1436
+ }
1437
+
1438
+ .filterField {
1439
+ display: flex;
1440
+ flex-direction: column;
1441
+ gap: 4px;
1442
+
1443
+ label {
1444
+ font-size: 0.75rem;
1445
+ font-weight: 500;
1446
+ color: var(--paragraph-color);
1447
+ text-transform: uppercase;
1448
+ letter-spacing: 0.5px;
1449
+ }
1450
+ }
1451
+
1452
+ .filterSelect {
1453
+ padding: 8px 12px;
1454
+ border: 1px solid var(--border-color);
1455
+ border-radius: var(--radius);
1456
+ background-color: var(--tertiary-color);
1457
+ font-size: 0.875rem;
1458
+ color: var(--header-color);
1459
+ cursor: pointer;
1460
+
1461
+ &:focus {
1462
+ outline: none;
1463
+ border-color: var(--primary-color);
1464
+ box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1465
+ }
1466
+ }
1467
+
1468
+ .filterInput {
1469
+ padding: 8px 12px;
1470
+ border: 1px solid var(--border-color);
1471
+ border-radius: var(--radius);
1472
+ font-size: 0.875rem;
1473
+ color: var(--header-color);
1474
+
1475
+ &:focus {
1476
+ outline: none;
1477
+ border-color: var(--primary-color);
1478
+ box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1479
+ }
1480
+
1481
+ &::placeholder {
1482
+ color: var(--paragraph-color);
1483
+ }
1484
+ }
1485
+
1486
+ .removeJoinBtn {
1487
+ background: none;
1488
+ border: none;
1489
+ color: var(--approval-color);
1490
+ font-size: 1.25rem;
1491
+ cursor: pointer;
1492
+ padding: 4px 8px;
1493
+ border-radius: var(--radius);
1494
+ transition: all 0.2s ease;
1495
+ flex-shrink: 0;
1496
+
1497
+ &:hover {
1498
+ background-color: rgba(var(--approval-color), 0.1);
1499
+ }
1500
+ }
1501
+
1502
+ .emptyFilterGroup {
1503
+ padding: 40px 20px;
1504
+ text-align: center;
1505
+ color: var(--paragraph-color);
1506
+ background-color: var(--bg-color) er;
1507
+
1508
+ p {
1509
+ margin: 0;
1510
+ font-style: italic;
1511
+ }
1512
+ }
1513
+ }
1514
+
1515
+ // Report Section (for sorting and other collapsible sections)
1516
+ .reportSection {
1517
+ margin-bottom: calc(var(--padding) * 1.5);
1518
+ background-color: var(--tertiary-color);
1519
+ border: 1px solid var(--border-color);
1520
+ border-radius: var(--radius);
1521
+ overflow: hidden;
1522
+ box-shadow: var(--box-shadow-small);
1523
+ }
1524
+
1525
+ .sectionHeader {
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: space-between;
1529
+ padding: var(--padding) calc(var(--padding) * 1.25);
1530
+ background-color: var(--bg-color);
1531
+ border-bottom: 1px solid var(--border-color);
1532
+ cursor: pointer;
1533
+ transition: all 0.2s ease;
1534
+
1535
+ &:hover {
1536
+ background-color: rgba(var(--primary-rgb), 0.05);
1537
+ }
1538
+
1539
+ h3 {
1540
+ margin: 0;
1541
+ font-size: 1.125rem;
1542
+ font-weight: var(--title-weight);
1543
+ color: var(--header-color);
1544
+ display: flex;
1545
+ align-items: center;
1546
+ gap: 8px;
1547
+ }
1548
+ }
1549
+
1550
+ .sectionHeaderActions {
1551
+ display: flex;
1552
+ align-items: center;
1553
+ gap: 12px;
1554
+ }
1555
+
1556
+ .toggleBtn {
1557
+ display: flex;
1558
+ align-items: center;
1559
+ justify-content: center;
1560
+ width: 32px;
1561
+ height: 32px;
1562
+ background-color: var(--tertiary-color);
1563
+ border: 1px solid var(--border-color);
1564
+ border-radius: var(--radius);
1565
+ color: var(--paragraph-color);
1566
+ cursor: pointer;
1567
+ transition: all 0.2s ease;
1568
+ font-size: 14px;
1569
+ font-weight: bold;
1570
+
1571
+ &:hover {
1572
+ background-color: var(--primary-color);
1573
+ color: var(--tertiary-color);
1574
+ border-color: var(--primary-color);
1575
+ }
1576
+
1577
+ &.toggleBtnActive {
1578
+ background-color: var(--primary-color);
1579
+ color: var(--tertiary-color);
1580
+ border-color: var(--primary-color);
1581
+ }
1582
+ }
1583
+
1584
+ // Sorting specific styles
1585
+ .joinTablesContainer {
1586
+ padding: calc(var(--padding) * 1.25);
1587
+ }
1588
+
1589
+ .joinSection {
1590
+ background-color: var(--bg-color);
1591
+ border: 1px solid var(--border-color);
1592
+ border-radius: var(--radius);
1593
+ margin-bottom: var(--padding);
1594
+ overflow: hidden;
1595
+
1596
+ &:last-child {
1597
+ margin-bottom: 0;
1598
+ }
1599
+ }
1600
+
1601
+ .joinHeader {
1602
+ display: flex;
1603
+ align-items: center;
1604
+ justify-content: space-between;
1605
+ padding: 12px var(--padding);
1606
+ background-color: var(--tertiary-color);
1607
+ border-bottom: 1px solid var(--border-color);
1608
+
1609
+ h4 {
1610
+ margin: 0;
1611
+ font-size: 0.875rem;
1612
+ font-weight: 600;
1613
+ color: var(--header-color);
1614
+ }
1615
+ }
1616
+
1617
+ .joinGrid {
1618
+ display: grid;
1619
+ grid-template-columns: 1fr 1fr;
1620
+ gap: var(--padding);
1621
+ padding: var(--padding);
1622
+
1623
+ @media (max-width: 768px) {
1624
+ grid-template-columns: 1fr;
1625
+ }
1626
+ }
1627
+
1628
+ .joinGridColumn {
1629
+ display: flex;
1630
+ flex-direction: column;
1631
+ }
1632
+
1633
+ .joinField {
1634
+ display: flex;
1635
+ flex-direction: column;
1636
+ gap: 6px;
1637
+
1638
+ label {
1639
+ font-size: 0.75rem;
1640
+ font-weight: 600;
1641
+ color: var(--paragraph-color);
1642
+ text-transform: uppercase;
1643
+ letter-spacing: 0.5px;
1644
+ }
1645
+ }
1646
+
1647
+ .selectControl {
1648
+ padding: 8px 12px;
1649
+ border: 1px solid var(--border-color);
1650
+ border-radius: var(--radius);
1651
+ background-color: var(--tertiary-color);
1652
+ font-size: 0.875rem;
1653
+ color: var(--header-color);
1654
+ cursor: pointer;
1655
+ transition: all 0.2s ease;
1656
+
1657
+ &:focus {
1658
+ outline: none;
1659
+ border-color: var(--primary-color);
1660
+ box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.1);
1661
+ }
1662
+
1663
+ &:hover {
1664
+ border-color: var(--primary-color);
1665
+ }
1666
+
1667
+ optgroup {
1668
+ font-weight: 600;
1669
+ color: var(--header-color);
1670
+ }
1671
+
1672
+ option {
1673
+ padding: 4px 8px;
1674
+ color: var(--paragraph-color);
1675
+ }
1676
+ }
1677
+
1678
+ .removeJoinBtn {
1679
+ background: none;
1680
+ border: none;
1681
+ color: var(--approval-color);
1682
+ font-size: 1.25rem;
1683
+ cursor: pointer;
1684
+ padding: 4px 8px;
1685
+ border-radius: var(--radius);
1686
+ transition: all 0.2s ease;
1687
+ flex-shrink: 0;
1688
+
1689
+ &:hover {
1690
+ background-color: rgba(var(--color-invalid), 0.1);
1691
+ transform: scale(1.1);
1692
+ }
1693
+ }
1694
+
1695
+ // Preview section
1696
+ .previewSection {
1697
+ .previewActions {
1698
+ margin-bottom: 24px;
1699
+ text-align: center;
1700
+ }
1701
+
1702
+ .resultSummary {
1703
+ display: flex;
1704
+ align-items: center;
1705
+ justify-content: center;
1706
+ gap: 8px;
1707
+ padding: var(--padding);
1708
+ background-color: rgba(var(--color-valid), 0.1);
1709
+ border-radius: var(--radius);
1710
+ margin-bottom: calc(var(--padding) * 1.5);
1711
+ font-size: 1rem;
1712
+ font-weight: 500;
1713
+ color: rgba(var(--color-valid), 1);
1714
+
1715
+ svg {
1716
+ color: rgba(var(--color-valid), 1);
1717
+ }
1718
+ }
1719
+
1720
+ .gridContainer {
1721
+ margin-bottom: calc(var(--padding) * 2);
1722
+ border: 1px solid var(--border-color);
1723
+ border-radius: var(--radius);
1724
+ overflow: hidden;
1725
+ }
1726
+
1727
+ .exportOptions {
1728
+ text-align: center;
1729
+
1730
+ h3 {
1731
+ margin: 0 0 var(--padding) 0;
1732
+ font-size: 1.125rem;
1733
+ font-weight: 600;
1734
+ color: var(--header-color);
1735
+ }
1736
+ }
1737
+
1738
+ .exportButtons {
1739
+ display: flex;
1740
+ justify-content: center;
1741
+ gap: 12px;
1742
+ }
1743
+ }
1744
+
1745
+ // Loading state
1746
+ .loading {
1747
+ text-align: center;
1748
+ padding: calc(var(--padding) * 2.5);
1749
+ font-size: 1rem;
1750
+ color: var(--paragraph-color);
1751
+ }
1752
+
1753
+ // Buttons
1754
+ .btn {
1755
+ display: inline-flex;
1756
+ align-items: center;
1757
+ justify-content: center;
1758
+ gap: 8px;
1759
+ padding: 12px calc(var(--padding) * 1.5);
1760
+ border: none;
1761
+ border-radius: var(--radius);
1762
+ font-size: 0.875rem;
1763
+ font-weight: 600;
1764
+ cursor: pointer;
1765
+ transition: all 0.2s ease;
1766
+ text-decoration: none;
1767
+ min-height: 44px;
1768
+ position: relative;
1769
+ overflow: hidden;
1770
+
1771
+ &:disabled {
1772
+ opacity: 0.5;
1773
+ cursor: not-allowed;
1774
+ transform: none !important;
1775
+ }
1776
+
1777
+ &:focus {
1778
+ outline: 2px solid rgba(var(--primary-rgb), 0.3);
1779
+ outline-offset: 2px;
1780
+ }
1781
+
1782
+ &:active:not(:disabled) {
1783
+ transform: translateY(1px);
1784
+ }
1785
+
1786
+ svg {
1787
+ width: 16px;
1788
+ height: 16px;
1789
+ flex-shrink: 0;
1790
+ }
1791
+ }
1792
+
1793
+ .btnPrimary {
1794
+ background-color: var(--primary-color);
1795
+ color: var(--tertiary-color);
1796
+ box-shadow: 0 2px 4px rgba(var(--primary-rgb), 0.2);
1797
+
1798
+ &:hover:not(:disabled) {
1799
+ background-color: var(--primary-color);
1800
+ box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3);
1801
+ transform: translateY(-1px);
1802
+ filter: brightness(0.9);
1803
+ }
1804
+
1805
+ &:focus {
1806
+ outline-color: rgba(var(--primary-rgb), 0.5);
1807
+ }
1808
+ }
1809
+
1810
+ .btnSecondary {
1811
+ background-color: var(--secondary-color);
1812
+ color: var(--tertiary-color);
1813
+ box-shadow: 0 2px 4px rgba(var(--secondary-rgb), 0.2);
1814
+
1815
+ &:hover:not(:disabled) {
1816
+ background-color: var(--secondary-color);
1817
+ box-shadow: 0 4px 12px rgba(var(--secondary-rgb), 0.3);
1818
+ transform: translateY(-1px);
1819
+ filter: brightness(0.9);
1820
+ }
1821
+
1822
+ &:focus {
1823
+ outline-color: rgba(var(--secondary-rgb), 0.5);
1824
+ }
1825
+ }
1826
+
1827
+ .btnSuccess {
1828
+ background-color: rgba(var(--color-valid), 1);
1829
+ color: var(--tertiary-color);
1830
+
1831
+ &:hover:not(:disabled) {
1832
+ background-color: rgba(var(--color-valid), 1);
1833
+ box-shadow: var(--box-shadow-small);
1834
+ filter: brightness(0.9);
1835
+ }
1836
+ }
1837
+
1838
+ // Advanced mode placeholder
1839
+ .advancedMode {
1840
+ background-color: var(--tertiary-color);
1841
+ border-radius: var(--radius);
1842
+ padding: 40px;
1843
+ text-align: center;
1844
+ box-shadow: var(--box-shadow-small);
1845
+
1846
+ p {
1847
+ font-size: 1rem;
1848
+ color: var(--paragraph-color);
1849
+ }
1850
+ }
1851
+
1852
+ // Relationships section
1853
+ .relationshipsSection {
1854
+ .currentJoins {
1855
+ margin-bottom: 24px;
1856
+
1857
+ h3 {
1858
+ margin: 0 0 16px 0;
1859
+ font-size: 1.125rem;
1860
+ font-weight: 600;
1861
+ color: var(--header-color);
1862
+ }
1863
+ }
1864
+
1865
+ .joinItem {
1866
+ display: flex;
1867
+ align-items: center;
1868
+ justify-content: space-between;
1869
+ padding: 12px 16px;
1870
+ background-color: rgba(var(--color-valid), 0.05);
1871
+ border: 1px solid rgba(var(--color-valid), 0.2);
1872
+ border-radius: var(--radius);
1873
+ margin-bottom: 8px;
1874
+
1875
+ .joinInfo {
1876
+ flex: 1;
1877
+
1878
+ .joinDescription {
1879
+ display: block;
1880
+ font-weight: 500;
1881
+ color: var(--header-color);
1882
+ margin-bottom: 4px;
1883
+ }
1884
+
1885
+ .joinDetails {
1886
+ display: block;
1887
+ font-size: 0.875rem;
1888
+ color: var(--paragraph-color);
1889
+ }
1890
+ }
1891
+
1892
+ .removeJoinBtn {
1893
+ background: none;
1894
+ border: none;
1895
+ color: var(--approval-color);
1896
+ font-size: 1.25rem;
1897
+ cursor: pointer;
1898
+ padding: 4px 8px;
1899
+ border-radius: var(--radius);
1900
+ transition: all 0.2s ease;
1901
+
1902
+ &:hover {
1903
+ background-color: rgba(var(--approval-color), 0.1);
1904
+ }
1905
+ }
1906
+ }
1907
+
1908
+ .suggestedJoins {
1909
+ margin-bottom: 24px;
1910
+
1911
+ h3 {
1912
+ margin: 0 0 8px 0;
1913
+ font-size: 1.125rem;
1914
+ font-weight: 600;
1915
+ color: var(--header-color);
1916
+ }
1917
+
1918
+ p {
1919
+ margin: 0 0 16px 0;
1920
+ color: var(--paragraph-color);
1921
+ }
1922
+ }
1923
+
1924
+ .suggestionCard {
1925
+ display: flex;
1926
+ align-items: center;
1927
+ justify-content: space-between;
1928
+ padding: 16px;
1929
+ background-color: var(--tertiary-color);
1930
+ border: 2px solid var(--border-color);
1931
+ border-radius: var(--radius);
1932
+ margin-bottom: 12px;
1933
+ transition: all 0.2s ease;
1934
+
1935
+ &:hover {
1936
+ border-color: var(--primary-color);
1937
+ box-shadow: var(--box-shadow-small);
1938
+ }
1939
+
1940
+ .suggestionInfo {
1941
+ flex: 1;
1942
+
1943
+ .suggestionTitle {
1944
+ display: flex;
1945
+ align-items: center;
1946
+ gap: 8px;
1947
+ margin-bottom: 8px;
1948
+
1949
+ span {
1950
+ font-weight: 500;
1951
+ color: var(--header-color);
1952
+ }
1953
+
1954
+ .confidenceRating {
1955
+ margin-left: auto;
1956
+ font-size: 0.875rem;
1957
+ }
1958
+
1959
+ svg {
1960
+ color: var(--primary-color);
1961
+ }
1962
+ }
1963
+
1964
+ .suggestionDescription {
1965
+ margin: 0;
1966
+ font-size: 0.875rem;
1967
+ color: var(--paragraph-color);
1968
+ }
1969
+ }
1970
+ }
1971
+
1972
+ .currentFilters {
1973
+ margin-bottom: 24px;
1974
+
1975
+ h3 {
1976
+ margin: 0 0 16px 0;
1977
+ font-size: 1.125rem;
1978
+ font-weight: 600;
1979
+ color: var(--header-color);
1980
+ }
1981
+ }
1982
+
1983
+ // Manual join section styling
1984
+ .manualJoinSection {
1985
+ margin-bottom: 24px;
1986
+ padding: 20px;
1987
+ background-color: var(--bg-color) er;
1988
+ border-radius: var(--radius);
1989
+ border: 1px solid var(--border-color);
1990
+
1991
+ h3 {
1992
+ margin: 0 0 8px 0;
1993
+ font-size: 1.125rem;
1994
+ font-weight: 600;
1995
+ color: var(--header-color);
1996
+ }
1997
+
1998
+ p {
1999
+ margin: 0 0 16px 0;
2000
+ color: var(--paragraph-color);
2001
+ font-size: 0.875rem;
2002
+ }
2003
+ }
2004
+
2005
+ .manualJoinForm {
2006
+ background-color: var(--tertiary-color);
2007
+ padding: 20px;
2008
+ border-radius: var(--radius);
2009
+ border: 1px solid var(--border-color);
2010
+ margin-top: 16px;
2011
+ }
2012
+
2013
+ .manualJoinGrid {
2014
+ display: grid;
2015
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2016
+ gap: 16px;
2017
+ margin-bottom: 20px;
2018
+ }
2019
+
2020
+ .manualJoinField {
2021
+ display: flex;
2022
+ flex-direction: column;
2023
+ gap: 6px;
2024
+
2025
+ label {
2026
+ font-size: 0.875rem;
2027
+ font-weight: 500;
2028
+ color: var(--paragraph-color);
2029
+ }
2030
+
2031
+ select {
2032
+ padding: 8px 12px;
2033
+ border: 1px solid var(--border-color);
2034
+ border-radius: var(--radius);
2035
+ background-color: var(--tertiary-color);
2036
+ font-size: 0.875rem;
2037
+ color: var(--header-color);
2038
+
2039
+ &:focus {
2040
+ outline: none;
2041
+ border-color: var(--primary-color);
2042
+ box-shadow: 0 0 0 2px rgba(var(--primary-color), 0.1);
2043
+ }
2044
+
2045
+ &:disabled {
2046
+ background-color: var(--bg-color);
2047
+ color: var(--paragraph-color);
2048
+ cursor: not-allowed;
2049
+ }
2050
+ }
2051
+ }
2052
+
2053
+ .manualJoinActions {
2054
+ display: flex;
2055
+ gap: 12px;
2056
+ justify-content: flex-end;
2057
+ padding-top: 16px;
2058
+ border-top: 1px solid var(--border-color);
2059
+ }
2060
+
2061
+ .filterItem {
2062
+ display: flex;
2063
+ align-items: center;
2064
+ justify-content: space-between;
2065
+ padding: 12px 16px;
2066
+ background-color: rgba(var(--primary-rgb), 0.05);
2067
+ border: 1px solid rgba(var(--primary-rgb), 0.2);
2068
+ border-radius: var(--radius);
2069
+ margin-bottom: 8px;
2070
+
2071
+ .filterInfo {
2072
+ flex: 1;
2073
+
2074
+ .filterDescription {
2075
+ font-weight: 500;
2076
+ color: var(--header-color);
2077
+ }
2078
+ }
2079
+
2080
+ .removeFilterBtn {
2081
+ background: none;
2082
+ border: none;
2083
+ color: var(--approval-color);
2084
+ font-size: 1.25rem;
2085
+ cursor: pointer;
2086
+ padding: 4px 8px;
2087
+ border-radius: var(--radius);
2088
+ transition: all 0.2s ease;
2089
+
2090
+ &:hover {
2091
+ background-color: rgba(var(--approval-color), 0.1);
2092
+ }
2093
+ }
2094
+ }
2095
+
2096
+ .reportActions {
2097
+ display: grid;
2098
+ grid-template-columns: 1fr 1fr;
2099
+ gap: 24px;
2100
+ margin-top: 32px;
2101
+
2102
+ .saveSection,
2103
+ .exportOptions {
2104
+ background-color: var(--bg-color);
2105
+ border-radius: var(--radius);
2106
+ padding: 20px;
2107
+ border: 1px solid var(--border-color);
2108
+
2109
+ h3 {
2110
+ margin: 0 0 8px 0;
2111
+ font-size: 1.125rem;
2112
+ font-weight: 600;
2113
+ color: var(--header-color);
2114
+ }
2115
+
2116
+ p {
2117
+ margin: 0 0 16px 0;
2118
+ font-size: 0.875rem;
2119
+ color: var(--paragraph-color);
2120
+ }
2121
+ }
2122
+
2123
+ .saveButtons {
2124
+ display: flex;
2125
+ gap: 12px;
2126
+ flex-wrap: wrap;
2127
+ }
2128
+ }
2129
+ }
2130
+
2131
+ // Responsive design
2132
+ @media (max-width: 768px) {
2133
+ .header {
2134
+ flex-direction: column;
2135
+ gap: 16px;
2136
+ align-items: stretch;
2137
+ }
2138
+
2139
+ .headerLeft,
2140
+ .headerRight {
2141
+ justify-content: center;
2142
+ }
2143
+
2144
+ .wizardProgress {
2145
+ overflow-x: auto;
2146
+ padding-bottom: 20px;
2147
+
2148
+ &::before {
2149
+ display: none;
2150
+ }
2151
+ }
2152
+
2153
+ .wizardStep {
2154
+ min-width: 120px;
2155
+
2156
+ .stepDescription {
2157
+ display: none;
2158
+ }
2159
+ }
2160
+
2161
+ .tableGrid,
2162
+ .columnList {
2163
+ grid-template-columns: 1fr;
2164
+ }
2165
+
2166
+ .exportButtons {
2167
+ flex-direction: column;
2168
+ align-items: center;
2169
+ }
2170
+ }
2171
+
2172
+ // Human-friendly JSON styling (from original GenericReport)
2173
+ .humanJsonContainer {
2174
+ display: flex;
2175
+ flex-direction: column;
2176
+ gap: 3px;
2177
+ padding: 10px 12px;
2178
+ background-color: var(--bg-color);
2179
+ border: 1px solid var(--border-color);
2180
+ border-radius: var(--radius);
2181
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
2182
+ font-size: 0.9rem;
2183
+ margin: 2px 0;
2184
+ }
2185
+
2186
+ .humanJsonRow {
2187
+ display: flex;
2188
+ align-items: center;
2189
+ padding: 5px 2px;
2190
+ line-height: 1.4;
2191
+ border-radius: 4px;
2192
+ transition: background-color 0.15s ease;
2193
+ min-height: 28px;
2194
+ word-break: break-word;
2195
+ overflow-wrap: break-word;
2196
+
2197
+ &:hover {
2198
+ background-color: rgba(0, 0, 0, 0.03);
2199
+ }
2200
+ }
2201
+
2202
+ .humanJsonKey {
2203
+ font-weight: 600;
2204
+ color: var(--primary-color);
2205
+ margin-right: 12px;
2206
+ min-width: 120px;
2207
+ flex: 0 0 auto;
2208
+ padding-left: 3px;
2209
+ }
2210
+
2211
+ .humanJsonValue {
2212
+ flex: 1;
2213
+ word-break: break-word;
2214
+ padding-right: 5px;
2215
+ color: var(--header-color);
2216
+ font-weight: 500;
2217
+ }
2218
+
2219
+ // Pagination info styling
2220
+ .paginationInfo {
2221
+ display: flex;
2222
+ justify-content: center;
2223
+ align-items: center;
2224
+ padding: 12px 16px;
2225
+ background-color: var(--bg-color);
2226
+ border-top: 1px solid var(--border-color);
2227
+ font-size: 0.875rem;
2228
+ color: var(--paragraph-color);
2229
+ font-weight: 500;
2230
+ }
2231
+
2232
+ // Grid container enhancements for JSON content
2233
+ .gridContainer {
2234
+ // Ensure the grid can handle dynamic row heights
2235
+ :global(.InovuaReactDataGrid) {
2236
+ // Allow rows to expand for JSON content
2237
+ .InovuaReactDataGrid__row {
2238
+ min-height: 40px;
2239
+ // Allow rows to expand to fit content
2240
+ height: auto !important;
2241
+
2242
+ // JSON cell styling
2243
+ .InovuaReactDataGrid__cell {
2244
+ // Ensure proper vertical alignment for JSON content
2245
+ display: flex;
2246
+ align-items: flex-start;
2247
+ padding: 8px 12px;
2248
+
2249
+ // Handle text overflow for JSON content
2250
+ overflow: visible;
2251
+ // Allow cells to expand vertically
2252
+ height: auto !important;
2253
+
2254
+ // JSON content wrapper
2255
+ > div {
2256
+ width: 100%;
2257
+ // Remove height restrictions for JSON content
2258
+ height: auto;
2259
+
2260
+ // JSON container should expand fully
2261
+ .humanJsonContainer {
2262
+ // Remove any height restrictions
2263
+ max-height: none;
2264
+ overflow: visible;
2265
+ }
2266
+ }
2267
+ }
2268
+ }
2269
+
2270
+ // Ensure header alignment
2271
+ .InovuaReactDataGrid__header {
2272
+ .InovuaReactDataGrid__header-cell {
2273
+ display: flex;
2274
+ align-items: center;
2275
+ padding: 8px 12px;
2276
+ }
2277
+ }
2278
+ }
2279
+ }