@visns-studio/visns-components 5.14.0 → 5.14.2

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,1226 @@
1
+ // Enhanced OCR Template Styles
2
+ .ocrTemplateContainer {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 1rem;
6
+ padding: 1rem;
7
+ background: #f8f9fa;
8
+ border-radius: 8px;
9
+ border: 1px solid #e9ecef;
10
+ max-width: 1200px;
11
+ margin: 0 auto;
12
+ min-height: 500px;
13
+ }
14
+
15
+ // Journey Progress Component
16
+ .journeyProgress {
17
+ background: #ffffff;
18
+ border-radius: 8px;
19
+ padding: 1rem;
20
+ border: 1px solid #dee2e6;
21
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
22
+
23
+ .progressHeader {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ align-items: center;
27
+ margin-bottom: 1rem;
28
+
29
+ .progressTitle {
30
+ display: flex;
31
+ align-items: center;
32
+ gap: 0.5rem;
33
+
34
+ h2 {
35
+ margin: 0;
36
+ color: #495057;
37
+ font-size: 1rem;
38
+ font-weight: 600;
39
+ }
40
+ }
41
+
42
+ .progressStats {
43
+ background: #e3f2fd;
44
+ color: #1565c0;
45
+ padding: 0.25rem 0.75rem;
46
+ border-radius: 12px;
47
+ font-size: 0.75rem;
48
+ font-weight: 500;
49
+ }
50
+ }
51
+
52
+ .progressSteps {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 0.25rem;
56
+ overflow-x: hidden;
57
+ padding: 0.25rem 0;
58
+ flex-wrap: wrap;
59
+
60
+ @media (max-width: 1024px) {
61
+ flex-wrap: wrap;
62
+ gap: 0.5rem;
63
+ }
64
+
65
+ .progressStep {
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 0.5rem;
69
+ padding: 0.5rem 0.75rem;
70
+ background: #f8f9fa;
71
+ border: 1px solid #dee2e6;
72
+ border-radius: 8px;
73
+ cursor: pointer;
74
+ transition: all 0.3s ease;
75
+ min-width: 140px;
76
+ flex: 1;
77
+ max-width: 180px;
78
+
79
+ &:hover:not(.disabled) {
80
+ background: #e9ecef;
81
+ border-color: #adb5bd;
82
+ transform: translateY(-2px);
83
+ }
84
+
85
+ &.active {
86
+ background: #e3f2fd;
87
+ border-color: #2196f3;
88
+ box-shadow: 0 4px 12px rgba(33, 150, 243, 0.2);
89
+ }
90
+
91
+ &.completed {
92
+ background: #e8f5e8;
93
+ border-color: #4caf50;
94
+
95
+ .stepIcon {
96
+ color: #4caf50;
97
+ }
98
+ }
99
+
100
+ &.disabled {
101
+ opacity: 0.5;
102
+ cursor: not-allowed;
103
+ }
104
+
105
+ .stepIcon {
106
+ color: #6c757d;
107
+ flex-shrink: 0;
108
+ }
109
+
110
+ .stepInfo {
111
+ display: flex;
112
+ flex-direction: column;
113
+ flex: 1;
114
+ min-width: 0;
115
+
116
+ .stepNumber {
117
+ font-size: 0.625rem;
118
+ color: #6c757d;
119
+ font-weight: 500;
120
+ line-height: 1;
121
+ }
122
+
123
+ .stepTitle {
124
+ font-size: 0.75rem;
125
+ color: #495057;
126
+ font-weight: 600;
127
+ margin-top: 0.125rem;
128
+ line-height: 1.2;
129
+ white-space: nowrap;
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ }
133
+ }
134
+
135
+ .stepArrow {
136
+ color: #adb5bd;
137
+ margin: 0 0.25rem;
138
+ flex-shrink: 0;
139
+ display: none;
140
+
141
+ @media (min-width: 1200px) {
142
+ display: block;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ // Step Instructions Component
150
+ .stepInstructions {
151
+ background: #ffffff;
152
+ border-radius: 8px;
153
+ padding: 1rem;
154
+ border: 1px solid #dee2e6;
155
+ border-left: 3px solid #007bff;
156
+
157
+ .instructionHeader {
158
+ display: flex;
159
+ align-items: flex-start;
160
+ gap: 0.75rem;
161
+ margin-bottom: 0.75rem;
162
+
163
+ .instructionIcon {
164
+ background: #e3f2fd;
165
+ padding: 0.5rem;
166
+ border-radius: 6px;
167
+ color: #1565c0;
168
+ flex-shrink: 0;
169
+ }
170
+
171
+ .instructionText {
172
+ flex: 1;
173
+
174
+ h3 {
175
+ margin: 0 0 0.25rem 0;
176
+ color: #495057;
177
+ font-size: 1rem;
178
+ font-weight: 600;
179
+ }
180
+
181
+ p {
182
+ margin: 0;
183
+ color: #6c757d;
184
+ line-height: 1.4;
185
+ font-size: 0.875rem;
186
+ }
187
+ }
188
+
189
+ .instructionToggle {
190
+ .helpBtn {
191
+ display: flex;
192
+ align-items: center;
193
+ gap: 0.5rem;
194
+ background: #f8f9fa;
195
+ border: 1px solid #dee2e6;
196
+ border-radius: 6px;
197
+ padding: 0.5rem 0.75rem;
198
+ font-size: 0.75rem;
199
+ color: #495057;
200
+ cursor: pointer;
201
+ transition: all 0.2s ease;
202
+
203
+ &:hover {
204
+ background: #e9ecef;
205
+ border-color: #adb5bd;
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ .detailedInstructions {
212
+ margin-top: 1rem;
213
+ padding-top: 1rem;
214
+ border-top: 1px solid #e9ecef;
215
+
216
+ .instructionDetails {
217
+ display: flex;
218
+ flex-direction: column;
219
+ gap: 0.75rem;
220
+
221
+ .instructionPoint {
222
+ display: flex;
223
+ align-items: center;
224
+ gap: 0.75rem;
225
+ padding: 0.75rem;
226
+ background: #f8f9fa;
227
+ border-radius: 6px;
228
+ font-size: 0.875rem;
229
+ color: #495057;
230
+
231
+ svg {
232
+ color: #007bff;
233
+ flex-shrink: 0;
234
+ }
235
+ }
236
+ }
237
+ }
238
+ }
239
+
240
+ // Step Content Area
241
+ .stepContent {
242
+ background: #ffffff;
243
+ border-radius: 8px;
244
+ padding: 1rem;
245
+ border: 1px solid #dee2e6;
246
+ overflow-y: auto;
247
+ display: flex;
248
+ flex-direction: column;
249
+ min-height: 200px;
250
+ }
251
+
252
+ // Journey Navigation
253
+ .journeyNavigation {
254
+ display: flex;
255
+ justify-content: space-between;
256
+ align-items: center;
257
+ background: #ffffff;
258
+ border-radius: 8px;
259
+ padding: 0.75rem 1rem;
260
+ border: 1px solid #dee2e6;
261
+ flex-shrink: 0;
262
+ margin-top: auto;
263
+
264
+ .navBtn {
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 0.375rem;
268
+ background: #007bff;
269
+ color: white;
270
+ border: none;
271
+ border-radius: 6px;
272
+ padding: 0.5rem 0.75rem;
273
+ font-size: 0.75rem;
274
+ font-weight: 500;
275
+ cursor: pointer;
276
+ transition: all 0.2s ease;
277
+
278
+ &:hover:not(:disabled) {
279
+ background: #0056b3;
280
+ transform: translateY(-1px);
281
+ }
282
+
283
+ &:disabled {
284
+ background: #6c757d;
285
+ cursor: not-allowed;
286
+ transform: none;
287
+ }
288
+ }
289
+
290
+ .stepIndicator {
291
+ background: #e9ecef;
292
+ color: #495057;
293
+ padding: 0.5rem 1rem;
294
+ border-radius: 20px;
295
+ font-size: 0.875rem;
296
+ font-weight: 500;
297
+ }
298
+ }
299
+
300
+ // Empty State Component (original)
301
+ .emptyStateOrig {
302
+ display: flex;
303
+ flex-direction: column;
304
+ align-items: center;
305
+ justify-content: center;
306
+ padding: 3rem 2rem;
307
+ text-align: center;
308
+ color: #6c757d;
309
+
310
+ svg {
311
+ margin-bottom: 1rem;
312
+ color: #adb5bd;
313
+ }
314
+
315
+ h3 {
316
+ margin: 0 0 0.5rem 0;
317
+ color: #495057;
318
+ font-size: 1.125rem;
319
+ }
320
+
321
+ p {
322
+ margin: 0;
323
+ font-size: 0.875rem;
324
+ line-height: 1.5;
325
+ }
326
+ }
327
+
328
+ // Selection Summary
329
+ .selectionSummary {
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 0.75rem;
333
+ background: #e8f5e8;
334
+ color: #155724;
335
+ padding: 1rem;
336
+ border-radius: 8px;
337
+ margin-top: 1rem;
338
+ font-weight: 500;
339
+
340
+ svg {
341
+ color: #28a745;
342
+ }
343
+ }
344
+
345
+ // Step-specific styling enhancements
346
+ .titleSelectionHeader {
347
+ display: flex;
348
+ align-items: center;
349
+ gap: 1rem;
350
+ margin-bottom: 1.5rem;
351
+ padding-bottom: 1rem;
352
+ border-bottom: 1px solid #e9ecef;
353
+
354
+ svg {
355
+ color: #007bff;
356
+ }
357
+
358
+ div {
359
+ h3 {
360
+ margin: 0 0 0.25rem 0;
361
+ color: #495057;
362
+ }
363
+
364
+ p {
365
+ margin: 0;
366
+ color: #6c757d;
367
+ font-size: 0.875rem;
368
+ }
369
+ }
370
+ }
371
+
372
+ .suggestionHeader {
373
+ display: flex;
374
+ align-items: center;
375
+ gap: 0.75rem;
376
+ margin-bottom: 1rem;
377
+
378
+ svg {
379
+ color: #ffc107;
380
+ }
381
+
382
+ h3 {
383
+ margin: 0;
384
+ color: #495057;
385
+ }
386
+ }
387
+
388
+ .templateHeader {
389
+ display: flex;
390
+ align-items: center;
391
+ gap: 0.75rem;
392
+ margin-bottom: 1.5rem;
393
+
394
+ svg {
395
+ color: #6c757d;
396
+ }
397
+
398
+ h3 {
399
+ margin: 0;
400
+ color: #495057;
401
+ }
402
+ }
403
+
404
+ .folderHeader {
405
+ display: flex;
406
+ align-items: center;
407
+ gap: 1rem;
408
+ margin-bottom: 1.5rem;
409
+ padding-bottom: 1rem;
410
+ border-bottom: 1px solid #e9ecef;
411
+
412
+ svg {
413
+ color: #007bff;
414
+ }
415
+
416
+ div {
417
+ h3 {
418
+ margin: 0 0 0.25rem 0;
419
+ color: #495057;
420
+ }
421
+
422
+ p {
423
+ margin: 0;
424
+ color: #6c757d;
425
+ font-size: 0.875rem;
426
+ }
427
+ }
428
+ }
429
+
430
+ .fieldDescription {
431
+ margin: 0.25rem 0 0.5rem 0;
432
+ color: #6c757d;
433
+ font-size: 0.75rem;
434
+ font-style: italic;
435
+ }
436
+
437
+ // Workflow Preview
438
+ .workflowPreview {
439
+ margin-top: 1.5rem;
440
+ background: #f8f9fa;
441
+ border-radius: 8px;
442
+ padding: 1.5rem;
443
+ border: 1px solid #e9ecef;
444
+
445
+ .workflowHeader {
446
+ display: flex;
447
+ align-items: center;
448
+ gap: 0.75rem;
449
+ margin-bottom: 1rem;
450
+
451
+ svg {
452
+ color: #6c757d;
453
+ }
454
+
455
+ h4 {
456
+ margin: 0;
457
+ color: #495057;
458
+ font-size: 0.875rem;
459
+ }
460
+ }
461
+
462
+ .workflowSteps {
463
+ display: flex;
464
+ align-items: center;
465
+ gap: 0.75rem;
466
+ flex-wrap: wrap;
467
+
468
+ .workflowStep {
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 0.5rem;
472
+ background: #ffffff;
473
+ border: 1px solid #dee2e6;
474
+ border-radius: 6px;
475
+ padding: 0.75rem;
476
+ font-size: 0.75rem;
477
+ color: #495057;
478
+
479
+ svg {
480
+ color: #007bff;
481
+ flex-shrink: 0;
482
+ }
483
+ }
484
+
485
+ .workflowArrow {
486
+ color: #adb5bd;
487
+ flex-shrink: 0;
488
+ }
489
+ }
490
+ }
491
+
492
+ // File Upload Section
493
+ .uploadSection {
494
+ display: flex;
495
+ flex-direction: column;
496
+ width: 100%;
497
+ .dropZone {
498
+ display: flex;
499
+ flex-direction: column;
500
+ align-items: center;
501
+ justify-content: center;
502
+ padding: 1.5rem 1rem;
503
+ border: 2px dashed #dee2e6;
504
+ border-radius: 12px;
505
+ background: #ffffff;
506
+ cursor: pointer;
507
+ transition: all 0.3s ease;
508
+ min-height: 120px;
509
+ max-height: 150px;
510
+ width: 100%;
511
+
512
+ &:hover {
513
+ border-color: #007bff;
514
+ background: #f8f9ff;
515
+ }
516
+
517
+ &.dragActive {
518
+ border-color: #007bff;
519
+ background: #e3f2fd;
520
+ transform: scale(1.02);
521
+ }
522
+
523
+ .uploadIcon {
524
+ color: #6c757d;
525
+ margin-bottom: 0.75rem;
526
+ transition: color 0.3s ease;
527
+ }
528
+
529
+ &:hover .uploadIcon {
530
+ color: #007bff;
531
+ }
532
+
533
+ h3 {
534
+ margin: 0 0 0.25rem 0;
535
+ color: #495057;
536
+ font-size: 1rem;
537
+ font-weight: 600;
538
+ }
539
+
540
+ p {
541
+ margin: 0;
542
+ color: #6c757d;
543
+ font-size: 0.8rem;
544
+ }
545
+ }
546
+
547
+ .filePreview {
548
+ margin-top: 1rem;
549
+ padding: 1rem;
550
+ background: #ffffff;
551
+ border-radius: 8px;
552
+ border: 1px solid #dee2e6;
553
+ width: 100%;
554
+
555
+ .fileInfo {
556
+ display: flex;
557
+ align-items: center;
558
+ gap: 0.75rem;
559
+
560
+ div {
561
+ display: flex;
562
+ flex-direction: column;
563
+
564
+ .fileName {
565
+ font-weight: 600;
566
+ color: #495057;
567
+ }
568
+
569
+ .fileSize {
570
+ font-size: 0.75rem;
571
+ color: #6c757d;
572
+ }
573
+ }
574
+ }
575
+ }
576
+ }
577
+
578
+ // Processing Interface
579
+ .processingContainer {
580
+ background: #ffffff;
581
+ border-radius: 12px;
582
+ padding: 2rem;
583
+ border: 1px solid #dee2e6;
584
+
585
+ h3 {
586
+ margin: 0 0 1.5rem 0;
587
+ color: #495057;
588
+ text-align: center;
589
+ }
590
+
591
+ .processingSteps {
592
+ display: flex;
593
+ flex-direction: column;
594
+ gap: 1rem;
595
+ }
596
+
597
+ .processingStep {
598
+ display: flex;
599
+ align-items: flex-start;
600
+ gap: 1rem;
601
+ padding: 1rem;
602
+ border-radius: 8px;
603
+ background: #f8f9fa;
604
+ transition: all 0.3s ease;
605
+
606
+ &.processing {
607
+ background: #e3f2fd;
608
+ border-left: 4px solid #2196f3;
609
+ }
610
+
611
+ &.completed {
612
+ background: #e8f5e8;
613
+ border-left: 4px solid #4caf50;
614
+ }
615
+
616
+ .stepIcon {
617
+ margin-top: 0.25rem;
618
+
619
+ &.spinning {
620
+ animation: spin 1s linear infinite;
621
+ }
622
+ }
623
+
624
+ .stepContent {
625
+ flex: 1;
626
+
627
+ h4 {
628
+ margin: 0 0 0.25rem 0;
629
+ font-size: 0.875rem;
630
+ font-weight: 600;
631
+ color: #495057;
632
+ }
633
+
634
+ p {
635
+ margin: 0;
636
+ font-size: 0.75rem;
637
+ color: #6c757d;
638
+ }
639
+
640
+ .progressBar {
641
+ margin-top: 0.5rem;
642
+ height: 4px;
643
+ background: #dee2e6;
644
+ border-radius: 2px;
645
+ overflow: hidden;
646
+
647
+ .progressFill {
648
+ height: 100%;
649
+ background: linear-gradient(90deg, #007bff, #28a745);
650
+ transition: width 0.3s ease;
651
+ }
652
+ }
653
+ }
654
+ }
655
+ }
656
+
657
+ // Data Organization
658
+ .dataOrganizer {
659
+ flex: 1;
660
+ display: flex;
661
+ flex-direction: column;
662
+
663
+ .extractedDataSections {
664
+ display: flex;
665
+ flex-direction: column;
666
+ gap: 1rem;
667
+ flex: 1;
668
+ }
669
+
670
+ .dataSection {
671
+ background: #ffffff;
672
+ border-radius: 12px;
673
+ border: 1px solid #dee2e6;
674
+ overflow: hidden;
675
+
676
+ .sectionHeader {
677
+ background: #f8f9fa;
678
+ padding: 1rem 1.5rem;
679
+ border-bottom: 1px solid #dee2e6;
680
+
681
+ .sectionTitle {
682
+ display: flex;
683
+ align-items: center;
684
+ gap: 0.75rem;
685
+
686
+ h3 {
687
+ margin: 0;
688
+ font-size: 1rem;
689
+ font-weight: 600;
690
+ color: #495057;
691
+ }
692
+
693
+ .count {
694
+ background: #6c757d;
695
+ color: white;
696
+ font-size: 0.75rem;
697
+ padding: 0.25rem 0.5rem;
698
+ border-radius: 12px;
699
+ font-weight: 500;
700
+ }
701
+ }
702
+ }
703
+
704
+ .sectionContent {
705
+ padding: 1rem;
706
+ display: grid;
707
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
708
+ gap: 1rem;
709
+ }
710
+ }
711
+
712
+ .dataCard {
713
+ background: #ffffff;
714
+ border: 2px solid #e9ecef;
715
+ border-radius: 8px;
716
+ padding: 1rem;
717
+ cursor: pointer;
718
+ transition: all 0.3s ease;
719
+
720
+ &:hover {
721
+ border-color: #007bff;
722
+ transform: translateY(-2px);
723
+ box-shadow: 0 4px 12px rgba(0, 123, 255, 0.15);
724
+ }
725
+
726
+ &.selected {
727
+ border-color: #28a745;
728
+ background: #f8fff8;
729
+ box-shadow: 0 2px 8px rgba(40, 167, 69, 0.2);
730
+ }
731
+
732
+ // Category-specific styling
733
+ &.contact {
734
+ border-left: 4px solid #17a2b8;
735
+ }
736
+
737
+ &.financial {
738
+ border-left: 4px solid #28a745;
739
+ }
740
+
741
+ &.dates {
742
+ border-left: 4px solid #ffc107;
743
+ }
744
+
745
+ &.identifiers {
746
+ border-left: 4px solid #6f42c1;
747
+ }
748
+
749
+ &.other {
750
+ border-left: 4px solid #6c757d;
751
+ }
752
+
753
+ .cardHeader {
754
+ display: flex;
755
+ justify-content: space-between;
756
+ align-items: flex-start;
757
+ margin-bottom: 0.75rem;
758
+
759
+ .keyName {
760
+ font-weight: 600;
761
+ color: #495057;
762
+ font-size: 0.875rem;
763
+ }
764
+
765
+ .cardMeta {
766
+ display: flex;
767
+ align-items: center;
768
+ gap: 0.5rem;
769
+
770
+ .confidence {
771
+ font-size: 0.75rem;
772
+ padding: 0.25rem 0.5rem;
773
+ border-radius: 12px;
774
+ font-weight: 500;
775
+
776
+ &.high {
777
+ background: #d4edda;
778
+ color: #155724;
779
+ }
780
+
781
+ &.medium {
782
+ background: #fff3cd;
783
+ color: #856404;
784
+ }
785
+
786
+ &.low {
787
+ background: #f8d7da;
788
+ color: #721c24;
789
+ }
790
+ }
791
+ }
792
+ }
793
+
794
+ .cardValue {
795
+ color: #6c757d;
796
+ font-size: 0.875rem;
797
+ line-height: 1.4;
798
+ word-break: break-word;
799
+ }
800
+
801
+ .selectedIcon {
802
+ color: #28a745;
803
+ }
804
+
805
+ .unselectedIcon {
806
+ color: #dee2e6;
807
+ }
808
+ }
809
+ }
810
+
811
+ // Document Text Section
812
+ .documentTextSection {
813
+ flex: 1;
814
+ display: flex;
815
+ flex-direction: column;
816
+ background: #ffffff;
817
+ border-radius: 12px;
818
+ padding: 1.5rem;
819
+ border: 1px solid #dee2e6;
820
+
821
+ h3 {
822
+ margin: 0 0 0.5rem 0;
823
+ color: #495057;
824
+ }
825
+
826
+ p {
827
+ margin: 0 0 1rem 0;
828
+ color: #6c757d;
829
+ font-size: 0.875rem;
830
+ }
831
+
832
+ .textLinesGrid {
833
+ display: grid;
834
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
835
+ gap: 0.75rem;
836
+
837
+ .textLine {
838
+ display: flex;
839
+ align-items: center;
840
+ gap: 0.5rem;
841
+ padding: 0.75rem;
842
+ background: #f8f9fa;
843
+ border: 1px solid #dee2e6;
844
+ border-radius: 6px;
845
+ cursor: pointer;
846
+ transition: all 0.2s ease;
847
+
848
+ &:hover {
849
+ background: #e9ecef;
850
+ border-color: #007bff;
851
+ }
852
+
853
+ &.selected {
854
+ background: #e8f5e8;
855
+ border-color: #28a745;
856
+ }
857
+
858
+ span {
859
+ font-size: 0.875rem;
860
+ color: #495057;
861
+ line-height: 1.3;
862
+ word-break: break-word;
863
+ }
864
+
865
+ .selectedIcon {
866
+ color: #28a745;
867
+ flex-shrink: 0;
868
+ }
869
+
870
+ .unselectedIcon {
871
+ color: #dee2e6;
872
+ flex-shrink: 0;
873
+ }
874
+ }
875
+ }
876
+ }
877
+
878
+ // Template Builder
879
+ .templateBuilder {
880
+ flex: 1;
881
+ display: flex;
882
+ flex-direction: column;
883
+ background: #ffffff;
884
+ border-radius: 12px;
885
+ padding: 1.5rem;
886
+ border: 1px solid #dee2e6;
887
+
888
+ .templateSuggestions {
889
+ margin-bottom: 2rem;
890
+
891
+ h3 {
892
+ margin: 0 0 1rem 0;
893
+ color: #495057;
894
+ }
895
+
896
+ .suggestionGrid {
897
+ display: grid;
898
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
899
+ gap: 1rem;
900
+
901
+ .templateSuggestion {
902
+ background: #f8f9fa;
903
+ border: 2px solid #dee2e6;
904
+ border-radius: 8px;
905
+ padding: 1rem;
906
+ cursor: pointer;
907
+ transition: all 0.3s ease;
908
+
909
+ &:hover {
910
+ border-color: #007bff;
911
+ background: #f8f9ff;
912
+ transform: translateY(-2px);
913
+ }
914
+
915
+ h4 {
916
+ margin: 0 0 0.5rem 0;
917
+ color: #495057;
918
+ font-size: 0.875rem;
919
+ }
920
+
921
+ p {
922
+ margin: 0 0 0.75rem 0;
923
+ color: #6c757d;
924
+ font-size: 0.75rem;
925
+ }
926
+
927
+ code {
928
+ background: #e9ecef;
929
+ padding: 0.25rem 0.5rem;
930
+ border-radius: 4px;
931
+ font-size: 0.75rem;
932
+ color: #495057;
933
+ }
934
+ }
935
+ }
936
+ }
937
+
938
+ .customTemplate {
939
+ h3 {
940
+ margin: 0 0 1rem 0;
941
+ color: #495057;
942
+ }
943
+
944
+ .templateField {
945
+ margin-bottom: 1rem;
946
+
947
+ label {
948
+ display: block;
949
+ margin-bottom: 0.5rem;
950
+ font-weight: 600;
951
+ color: #495057;
952
+ font-size: 0.875rem;
953
+ }
954
+
955
+ input {
956
+ width: 100%;
957
+ padding: 0.75rem;
958
+ border: 1px solid #dee2e6;
959
+ border-radius: 6px;
960
+ font-size: 0.875rem;
961
+ transition: border-color 0.3s ease;
962
+
963
+ &:focus {
964
+ outline: none;
965
+ border-color: #007bff;
966
+ box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
967
+ }
968
+
969
+ &::placeholder {
970
+ color: #adb5bd;
971
+ }
972
+ }
973
+ }
974
+
975
+ .availableVariables {
976
+ margin: 0 0 1.5rem 0;
977
+
978
+ .variableHeader {
979
+ display: flex;
980
+ justify-content: space-between;
981
+ align-items: center;
982
+ margin-bottom: 0.5rem;
983
+
984
+ h4 {
985
+ margin: 0;
986
+ color: #495057;
987
+ font-size: 0.875rem;
988
+ }
989
+
990
+ .quickActions {
991
+ display: flex;
992
+ gap: 0.5rem;
993
+
994
+ .quickBtn {
995
+ background: #f8f9fa;
996
+ border: 1px solid #dee2e6;
997
+ border-radius: 4px;
998
+ padding: 0.25rem 0.5rem;
999
+ font-size: 0.75rem;
1000
+ color: #495057;
1001
+ cursor: pointer;
1002
+ transition: all 0.2s ease;
1003
+
1004
+ &:hover {
1005
+ background: #e9ecef;
1006
+ border-color: #adb5bd;
1007
+ }
1008
+
1009
+ &:active {
1010
+ background: #dee2e6;
1011
+ }
1012
+ }
1013
+ }
1014
+ }
1015
+
1016
+ .variableHelp {
1017
+ margin: 0 0 0.75rem 0;
1018
+ color: #6c757d;
1019
+ font-size: 0.75rem;
1020
+ font-style: italic;
1021
+ }
1022
+
1023
+ .variableChips {
1024
+ display: flex;
1025
+ flex-wrap: wrap;
1026
+ gap: 0.5rem;
1027
+
1028
+ .variableChip {
1029
+ background: #007bff;
1030
+ color: white;
1031
+ padding: 0.375rem 0.75rem;
1032
+ border-radius: 16px;
1033
+ font-size: 0.75rem;
1034
+ font-weight: 500;
1035
+ cursor: pointer;
1036
+ transition: all 0.2s ease;
1037
+ display: flex;
1038
+ flex-direction: column;
1039
+ align-items: flex-start;
1040
+ min-width: 120px;
1041
+
1042
+ &:hover {
1043
+ background: #0056b3;
1044
+ transform: scale(1.05);
1045
+ }
1046
+
1047
+ .variableValue {
1048
+ font-size: 0.625rem;
1049
+ opacity: 0.8;
1050
+ margin-top: 0.25rem;
1051
+ font-weight: 400;
1052
+ color: rgba(255, 255, 255, 0.9);
1053
+ word-break: break-all;
1054
+ }
1055
+ }
1056
+ }
1057
+ }
1058
+
1059
+ .folderConfiguration {
1060
+ display: grid;
1061
+ grid-template-columns: 1fr 1fr;
1062
+ gap: 1rem;
1063
+ margin: 1.5rem 0;
1064
+
1065
+ @media (max-width: 768px) {
1066
+ grid-template-columns: 1fr;
1067
+ }
1068
+ }
1069
+
1070
+ .templatePreview {
1071
+ margin-top: 1.5rem;
1072
+
1073
+ h4 {
1074
+ margin: 0 0 0.75rem 0;
1075
+ color: #495057;
1076
+ font-size: 0.875rem;
1077
+ }
1078
+
1079
+ .previewContainer {
1080
+ .previewBox {
1081
+ background: #f8f9fa;
1082
+ border: 1px solid #dee2e6;
1083
+ border-radius: 6px;
1084
+ padding: 1rem;
1085
+ margin-bottom: 0.75rem;
1086
+
1087
+ .previewLabel {
1088
+ display: block;
1089
+ font-size: 0.75rem;
1090
+ color: #6c757d;
1091
+ margin-bottom: 0.5rem;
1092
+ font-weight: 500;
1093
+ }
1094
+
1095
+ .generatedFilename {
1096
+ color: #28a745;
1097
+ font-size: 0.875rem;
1098
+ word-break: break-all;
1099
+ background: #e8f5e8;
1100
+ padding: 0.5rem;
1101
+ border-radius: 4px;
1102
+ display: block;
1103
+ border: 1px solid #d4edda;
1104
+ }
1105
+ }
1106
+
1107
+ .validationMessage {
1108
+ background: #fff3cd;
1109
+ border: 1px solid #ffeaa7;
1110
+ border-radius: 6px;
1111
+ padding: 0.75rem;
1112
+ margin-bottom: 0.75rem;
1113
+ display: flex;
1114
+ align-items: flex-start;
1115
+ gap: 0.5rem;
1116
+
1117
+ .validationIcon {
1118
+ font-size: 1rem;
1119
+ flex-shrink: 0;
1120
+ }
1121
+
1122
+ color: #856404;
1123
+ font-size: 0.75rem;
1124
+ line-height: 1.4;
1125
+ }
1126
+
1127
+ .templateStats {
1128
+ display: flex;
1129
+ gap: 1rem;
1130
+ font-size: 0.75rem;
1131
+ color: #6c757d;
1132
+
1133
+ span {
1134
+ background: #e9ecef;
1135
+ padding: 0.25rem 0.5rem;
1136
+ border-radius: 4px;
1137
+ }
1138
+ }
1139
+ }
1140
+ }
1141
+ }
1142
+ }
1143
+
1144
+ // Folder Configuration Section
1145
+ .folderConfigSection {
1146
+ flex: 1;
1147
+ display: flex;
1148
+ flex-direction: column;
1149
+ }
1150
+
1151
+ // Empty State
1152
+ .emptyState {
1153
+ flex: 1;
1154
+ display: flex;
1155
+ flex-direction: column;
1156
+ align-items: center;
1157
+ justify-content: center;
1158
+ padding: 3rem 2rem;
1159
+ text-align: center;
1160
+ color: #6c757d;
1161
+
1162
+ svg {
1163
+ margin-bottom: 1rem;
1164
+ color: #adb5bd;
1165
+ }
1166
+
1167
+ h3 {
1168
+ margin: 0 0 0.5rem 0;
1169
+ color: #495057;
1170
+ font-size: 1.125rem;
1171
+ }
1172
+
1173
+ p {
1174
+ margin: 0;
1175
+ font-size: 0.875rem;
1176
+ line-height: 1.5;
1177
+ }
1178
+ }
1179
+
1180
+ // Animations
1181
+ @keyframes spin {
1182
+ from {
1183
+ transform: rotate(0deg);
1184
+ }
1185
+ to {
1186
+ transform: rotate(360deg);
1187
+ }
1188
+ }
1189
+
1190
+ // Responsive Design
1191
+ @media (max-width: 768px) {
1192
+ .ocrTemplateContainer {
1193
+ padding: 1rem;
1194
+ gap: 1.5rem;
1195
+ }
1196
+
1197
+ .dataOrganizer .dataSection .sectionContent {
1198
+ grid-template-columns: 1fr;
1199
+ }
1200
+
1201
+ .documentTextSection .textLinesGrid {
1202
+ grid-template-columns: 1fr;
1203
+ }
1204
+
1205
+ .templateBuilder .templateSuggestions .suggestionGrid {
1206
+ grid-template-columns: 1fr;
1207
+ }
1208
+ }
1209
+
1210
+ @media (max-width: 480px) {
1211
+ .uploadSection .dropZone {
1212
+ padding: 1rem 0.75rem;
1213
+
1214
+ h3 {
1215
+ font-size: 0.9rem;
1216
+ }
1217
+ }
1218
+
1219
+ .processingContainer {
1220
+ padding: 1rem;
1221
+ }
1222
+
1223
+ .templateBuilder {
1224
+ padding: 1rem;
1225
+ }
1226
+ }