PluginProbe
Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification / 5.5.0
Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification v5.5.0
5.5.0 5.4.0 5.3.2 5.3.1 5.1.6 5.1.5 trunk 2.1.5 2.11 2.12 2.13 2.15 3.0.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.51 3.0.60 3.0.61 3.0.62 3.0.70 3.0.71 3.0.72 3.1.0 All 34 releases
double-opt-in / assets / css / forms-management.css

forms-management.css in Double Opt-In for Contact Form 7 – Secure, GDPR-Compliant Email Verification 5.5.0, at assets/css/forms-management.css

1,153 lines 20.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Forms Management Page Styles
3 *
4 * @package Forge12\DoubleOptIn
5 * @since 4.1.0
6 */
7
8 /* ==========================================================================
9 Container & Layout
10 ========================================================================== */
11
12 .doi-forms-container {
13 clear: both;
14 max-width: 100%;
15 }
16
17 .doi-forms-container::after {
18 content: "";
19 display: table;
20 clear: both;
21 }
22
23 /* ==========================================================================
24 Header
25 ========================================================================== */
26
27 .doi-forms-header {
28 margin-bottom: 30px;
29 }
30
31 .doi-forms-header h1 {
32 margin: 0 0 5px 0;
33 font-size: 28px;
34 font-weight: 600;
35 color: #1d2327;
36 }
37
38 .doi-forms-header p {
39 margin: 0;
40 color: #646970;
41 font-size: 14px;
42 }
43
44 /* ==========================================================================
45 Statistics Cards
46 ========================================================================== */
47
48 .doi-forms-stats {
49 display: flex;
50 gap: 24px;
51 margin-bottom: 30px;
52 }
53
54 .doi-forms-stat {
55 background: #fff;
56 border: 1px solid #c3c4c7;
57 border-radius: 8px;
58 padding: 20px 28px;
59 display: flex;
60 align-items: center;
61 gap: 16px;
62 min-width: 180px;
63 }
64
65 .doi-forms-stat-icon {
66 width: 48px;
67 height: 48px;
68 border-radius: 50%;
69 display: flex;
70 align-items: center;
71 justify-content: center;
72 font-size: 24px;
73 }
74
75 .doi-forms-stat-icon.total {
76 background: rgba(34, 113, 177, 0.1);
77 color: #2271b1;
78 }
79
80 .doi-forms-stat-icon.active {
81 background: rgba(0, 163, 42, 0.1);
82 color: #00a32a;
83 }
84
85 .doi-forms-stat-icon.inactive {
86 background: rgba(219, 166, 23, 0.1);
87 color: #996800;
88 }
89
90 .doi-forms-stat-content strong {
91 display: block;
92 font-size: 28px;
93 font-weight: 700;
94 color: #1d2327;
95 line-height: 1.2;
96 }
97
98 .doi-forms-stat-content span {
99 font-size: 13px;
100 color: #646970;
101 text-transform: uppercase;
102 letter-spacing: 0.5px;
103 }
104
105 /* ==========================================================================
106 Integration Sections
107 ========================================================================== */
108
109 .doi-integration-section {
110 background: #fff;
111 border: 1px solid #c3c4c7;
112 border-radius: 8px;
113 margin-bottom: 24px;
114 overflow: hidden;
115 }
116
117 .doi-integration-header {
118 display: flex;
119 align-items: center;
120 justify-content: space-between;
121 padding: 16px 20px;
122 border-bottom: 1px solid #e0e0e0;
123 background: #f6f7f7;
124 }
125
126 .doi-integration-header h2 {
127 margin: 0;
128 font-size: 15px;
129 font-weight: 600;
130 color: #1d2327;
131 display: flex;
132 align-items: center;
133 gap: 10px;
134 }
135
136 .doi-integration-header h2 .dashicons {
137 color: #646970;
138 }
139
140 .doi-integration-count {
141 background: #2271b1;
142 color: #fff;
143 font-size: 12px;
144 font-weight: 600;
145 padding: 2px 10px;
146 border-radius: 10px;
147 }
148
149 /* Legacy Integration Groups (backwards compatibility) */
150 .doi-integration-group {
151 margin-bottom: 30px;
152 background: #fff;
153 border: 1px solid #c3c4c7;
154 border-radius: 4px;
155 overflow: hidden;
156 }
157
158 .doi-integration-title {
159 margin: 0;
160 padding: 15px 20px;
161 background: #f6f7f7;
162 border-bottom: 1px solid #c3c4c7;
163 font-size: 14px;
164 font-weight: 600;
165 }
166
167 .doi-form-count {
168 font-weight: normal;
169 color: #666;
170 }
171
172 /* ==========================================================================
173 Elementor Info Box
174 ========================================================================== */
175
176 .doi-elementor-info {
177 background: #f0f6fc;
178 border-left: 4px solid #72aee6;
179 padding: 16px 20px;
180 margin: 0;
181 }
182
183 .doi-elementor-info p {
184 margin: 0 0 12px 0;
185 color: #1d2327;
186 }
187
188 .doi-elementor-info ol {
189 margin: 0;
190 padding-left: 20px;
191 color: #646970;
192 }
193
194 .doi-elementor-info li {
195 margin-bottom: 4px;
196 }
197
198 .doi-elementor-notice {
199 margin: 0 !important;
200 padding: 15px 20px !important;
201 border-left: 4px solid #2271b1 !important;
202 background: #f0f6fc !important;
203 border-radius: 0 !important;
204 }
205
206 .doi-elementor-notice p {
207 margin: 0 0 10px 0;
208 }
209
210 .doi-elementor-notice ol {
211 margin: 0;
212 padding-left: 20px;
213 }
214
215 .doi-elementor-notice ol li {
216 margin-bottom: 5px;
217 color: #50575e;
218 }
219
220 .doi-elementor-notice ol li:last-child {
221 margin-bottom: 0;
222 }
223
224 /* ==========================================================================
225 Forms Table
226 ========================================================================== */
227
228 .doi-forms-table-wrapper {
229 overflow-x: auto;
230 }
231
232 .doi-forms-table {
233 width: 100%;
234 border-collapse: collapse;
235 margin: 0;
236 border: none;
237 border-radius: 0;
238 }
239
240 .doi-forms-table th {
241 text-align: left;
242 padding: 14px 20px;
243 font-size: 12px;
244 font-weight: 600;
245 color: #646970;
246 text-transform: uppercase;
247 letter-spacing: 0.5px;
248 background: #f9f9f9;
249 border-bottom: 1px solid #e0e0e0;
250 }
251
252 .doi-forms-table td {
253 padding: 16px 20px;
254 font-size: 14px;
255 color: #1d2327;
256 border-bottom: 1px solid #f0f0f0;
257 vertical-align: middle;
258 }
259
260 .doi-forms-table tr:last-child td {
261 border-bottom: none;
262 }
263
264 .doi-forms-table tr:hover td {
265 background: #f9f9f9;
266 }
267
268 .doi-forms-table .column-status {
269 width: 100px;
270 }
271
272 .doi-forms-table .column-id {
273 width: 80px;
274 }
275
276 .doi-forms-table .column-actions {
277 width: 220px;
278 text-align: right;
279 }
280
281 .doi-forms-table a {
282 color: #2271b1;
283 text-decoration: none;
284 font-weight: 500;
285 }
286
287 .doi-forms-table a:hover {
288 color: #135e96;
289 text-decoration: underline;
290 }
291
292 .doi-forms-table .column-title a {
293 text-decoration: none;
294 color: #2271b1;
295 }
296
297 .doi-forms-table .column-title a:hover {
298 color: #135e96;
299 text-decoration: underline;
300 }
301
302 /* ==========================================================================
303 Form ID Badge
304 ========================================================================== */
305
306 .doi-form-id {
307 display: inline-block;
308 background: #f0f0f1;
309 padding: 4px 10px;
310 border-radius: 4px;
311 font-family: Consolas, Monaco, monospace;
312 font-size: 12px;
313 color: #50575e;
314 }
315
316 /* ==========================================================================
317 Status Badges
318 ========================================================================== */
319
320 .doi-status-badge {
321 display: inline-flex;
322 align-items: center;
323 padding: 5px 12px;
324 border-radius: 12px;
325 font-size: 12px;
326 font-weight: 500;
327 gap: 5px;
328 white-space: nowrap;
329 }
330
331 .doi-status-badge .dashicons {
332 font-size: 14px;
333 width: 14px;
334 height: 14px;
335 }
336
337 .doi-status-enabled,
338 .doi-status-badge.enabled {
339 background: rgba(0, 163, 42, 0.1);
340 color: #007017;
341 }
342
343 .doi-status-disabled,
344 .doi-status-badge.disabled {
345 background: rgba(219, 166, 23, 0.15);
346 color: #996800;
347 }
348
349 /* Status Badge in Panel */
350 #doi-status-badge-container {
351 margin-top: 5px;
352 }
353
354 #doi-status-badge-container .doi-status-badge {
355 font-size: 13px;
356 padding: 6px 12px;
357 }
358
359 #doi-status-field .description {
360 margin-top: 10px;
361 }
362
363 /* ==========================================================================
364 Toggle Switch
365 ========================================================================== */
366
367 .doi-toggle {
368 position: relative;
369 display: inline-block;
370 width: 44px;
371 height: 24px;
372 }
373
374 .doi-toggle-input {
375 opacity: 0;
376 width: 0;
377 height: 0;
378 position: absolute;
379 }
380
381 .doi-toggle-slider {
382 position: absolute;
383 cursor: pointer;
384 top: 0;
385 left: 0;
386 right: 0;
387 bottom: 0;
388 background-color: #c3c4c7;
389 transition: 0.3s;
390 border-radius: 24px;
391 }
392
393 .doi-toggle-slider::before {
394 position: absolute;
395 content: "";
396 height: 18px;
397 width: 18px;
398 left: 3px;
399 bottom: 3px;
400 background-color: white;
401 transition: 0.3s;
402 border-radius: 50%;
403 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
404 }
405
406 .doi-toggle-input:checked + .doi-toggle-slider {
407 background-color: #00a32a;
408 }
409
410 .doi-toggle-input:focus + .doi-toggle-slider {
411 box-shadow: 0 0 0 2px rgba(34, 113, 177, 0.4);
412 }
413
414 .doi-toggle-input:checked + .doi-toggle-slider::before {
415 transform: translateX(20px);
416 }
417
418 .doi-toggle.loading .doi-toggle-slider {
419 opacity: 0.5;
420 cursor: wait;
421 }
422
423 /* ==========================================================================
424 Action Buttons
425 ========================================================================== */
426
427 .doi-actions {
428 display: flex;
429 gap: 8px;
430 justify-content: flex-end;
431 }
432
433 .doi-actions .button {
434 display: inline-flex;
435 align-items: center;
436 gap: 5px;
437 }
438
439 .doi-actions .button .dashicons {
440 font-size: 16px;
441 width: 16px;
442 height: 16px;
443 }
444
445 .doi-configure-btn {
446 background: #2271b1 !important;
447 border-color: #2271b1 !important;
448 color: #fff !important;
449 margin-right: 8px !important;
450 }
451
452 .doi-configure-btn:hover {
453 background: #135e96 !important;
454 border-color: #135e96 !important;
455 }
456
457 .doi-configure-btn:focus {
458 box-shadow: 0 0 0 1px #fff, 0 0 0 3px #2271b1 !important;
459 }
460
461 .doi-configure-btn:disabled {
462 background: #c3c4c7 !important;
463 border-color: #c3c4c7 !important;
464 cursor: not-allowed;
465 }
466
467 /* ==========================================================================
468 Empty State
469 ========================================================================== */
470
471 .doi-empty-state {
472 padding: 60px 20px;
473 text-align: center;
474 background: #fff;
475 border: 1px solid #c3c4c7;
476 border-radius: 8px;
477 }
478
479 .doi-empty-state .dashicons {
480 font-size: 64px;
481 width: 64px;
482 height: 64px;
483 color: #c3c4c7;
484 margin-bottom: 16px;
485 }
486
487 .doi-empty-state h3 {
488 margin: 0 0 8px 0;
489 font-size: 18px;
490 color: #1d2327;
491 }
492
493 .doi-empty-state p {
494 margin: 0;
495 color: #646970;
496 }
497
498 .doi-no-forms {
499 padding: 40px;
500 text-align: center;
501 background: #fff;
502 border: 1px solid #c3c4c7;
503 border-radius: 4px;
504 }
505
506 .doi-no-forms p {
507 margin: 0;
508 color: #666;
509 font-size: 14px;
510 }
511
512 /* ==========================================================================
513 Slide-out Panel
514 ========================================================================== */
515
516 .doi-panel {
517 position: fixed;
518 top: 0;
519 left: 0;
520 right: 0;
521 bottom: 0;
522 z-index: 100000;
523 visibility: hidden;
524 opacity: 0;
525 transition: visibility 0s 0.3s, opacity 0.3s;
526 }
527
528 .doi-panel.open {
529 visibility: visible;
530 opacity: 1;
531 transition: visibility 0s, opacity 0.3s;
532 }
533
534 .doi-panel-overlay {
535 position: absolute;
536 top: 0;
537 left: 0;
538 right: 0;
539 bottom: 0;
540 background: rgba(0, 0, 0, 0.5);
541 cursor: pointer;
542 }
543
544 .doi-panel-content {
545 position: absolute;
546 top: 0;
547 right: -500px;
548 bottom: 0;
549 width: 500px;
550 max-width: 100%;
551 background: #fff;
552 box-shadow: -2px 0 10px rgba(0, 0, 0, 0.15);
553 display: flex;
554 flex-direction: column;
555 transition: right 0.3s ease-out;
556 }
557
558 .doi-panel.open .doi-panel-content {
559 right: 0;
560 }
561
562 .doi-panel-header {
563 display: flex;
564 align-items: center;
565 justify-content: space-between;
566 padding: 15px 20px;
567 background: #f6f7f7;
568 border-bottom: 1px solid #c3c4c7;
569 flex-shrink: 0;
570 }
571
572 .doi-panel-title {
573 margin: 0;
574 font-size: 16px;
575 font-weight: 600;
576 }
577
578 .doi-panel-close {
579 background: none;
580 border: none;
581 cursor: pointer;
582 padding: 5px;
583 color: #666;
584 }
585
586 .doi-panel-close:hover {
587 color: #d63638;
588 }
589
590 .doi-panel-close:focus {
591 outline: 2px solid #2271b1;
592 outline-offset: 2px;
593 }
594
595 .doi-panel-body {
596 flex: 1;
597 overflow-y: auto;
598 padding: 20px;
599 }
600
601 .doi-panel-footer {
602 display: flex;
603 justify-content: flex-end;
604 gap: 10px;
605 padding: 15px 20px;
606 background: #f6f7f7;
607 border-top: 1px solid #c3c4c7;
608 flex-shrink: 0;
609 }
610
611 /* ==========================================================================
612 Loading State
613 ========================================================================== */
614
615 .doi-panel-loading {
616 display: flex;
617 flex-direction: column;
618 align-items: center;
619 justify-content: center;
620 padding: 60px 20px;
621 text-align: center;
622 }
623
624 .doi-panel-loading .spinner {
625 margin-bottom: 15px;
626 }
627
628 .doi-panel-loading p {
629 margin: 0;
630 color: #666;
631 }
632
633 /* ==========================================================================
634 Pro Label
635 ========================================================================== */
636
637 .doi-pro-label {
638 display: inline-block;
639 background: linear-gradient(135deg, #e6a817, #d4941a);
640 color: #fff;
641 font-size: 10px;
642 font-weight: 700;
643 line-height: 1;
644 padding: 3px 6px;
645 border-radius: 3px;
646 letter-spacing: 0.5px;
647 text-transform: uppercase;
648 vertical-align: middle;
649 margin-left: 6px;
650 }
651
652 /* ==========================================================================
653 Settings Form
654 ========================================================================== */
655
656 .doi-settings-form {
657 display: flex;
658 flex-direction: column;
659 gap: 20px;
660 }
661
662 .doi-settings-form hr {
663 margin: 10px 0;
664 border: none;
665 border-top: 1px solid #e0e0e0;
666 }
667
668 .doi-settings-form h3 {
669 margin: 0;
670 font-size: 14px;
671 font-weight: 600;
672 }
673
674 .doi-field {
675 display: flex;
676 flex-direction: column;
677 }
678
679 .doi-field > label {
680 margin-bottom: 5px;
681 font-weight: 500;
682 }
683
684 .doi-field-label {
685 display: flex;
686 align-items: center;
687 gap: 8px;
688 font-weight: 500 !important;
689 }
690
691 .doi-field .description {
692 margin-top: 5px;
693 font-size: 12px;
694 color: #666;
695 }
696
697 .doi-field input[type="text"],
698 .doi-field select,
699 .doi-field textarea {
700 width: 100%;
701 }
702
703 .doi-field textarea {
704 font-family: Consolas, Monaco, monospace;
705 font-size: 13px;
706 line-height: 1.5;
707 }
708
709 /* Recipient wrapper with toggle button */
710 .doi-recipient-wrapper {
711 display: flex;
712 gap: 8px;
713 align-items: center;
714 }
715
716 .doi-recipient-wrapper select,
717 .doi-recipient-wrapper input[type="text"] {
718 flex: 1;
719 }
720
721 .doi-toggle-manual-input {
722 padding: 4px 8px !important;
723 min-height: 30px;
724 }
725
726 .doi-toggle-manual-input .dashicons {
727 font-size: 16px;
728 width: 16px;
729 height: 16px;
730 line-height: 1;
731 }
732
733 /* ==========================================================================
734 Custom Template Notice Box
735 ========================================================================== */
736
737 .doi-custom-template-box {
738 display: flex;
739 align-items: flex-start;
740 gap: 20px;
741 padding: 20px;
742 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
743 border-radius: 8px;
744 color: #fff;
745 }
746
747 .doi-custom-template-icon {
748 flex-shrink: 0;
749 width: 50px;
750 height: 50px;
751 background: rgba(255, 255, 255, 0.2);
752 border-radius: 50%;
753 display: flex;
754 align-items: center;
755 justify-content: center;
756 }
757
758 .doi-custom-template-icon .dashicons {
759 font-size: 24px;
760 width: 24px;
761 height: 24px;
762 }
763
764 .doi-custom-template-content {
765 flex: 1;
766 }
767
768 .doi-custom-template-content h4 {
769 margin: 0 0 8px 0;
770 font-size: 16px;
771 font-weight: 600;
772 color: #fff;
773 }
774
775 .doi-custom-template-content p {
776 margin: 0 0 15px 0;
777 opacity: 0.9;
778 font-size: 13px;
779 line-height: 1.5;
780 }
781
782 .doi-custom-template-content .button {
783 display: inline-flex;
784 align-items: center;
785 gap: 6px;
786 background: #fff;
787 color: #667eea;
788 border: none;
789 font-weight: 500;
790 }
791
792 .doi-custom-template-content .button:hover {
793 background: #f0f0f0;
794 color: #764ba2;
795 }
796
797 .doi-custom-template-content .button .dashicons {
798 font-size: 16px;
799 width: 16px;
800 height: 16px;
801 }
802
803 /* ==========================================================================
804 Placeholders Section
805 ========================================================================== */
806
807 .doi-placeholders {
808 margin-top: 10px;
809 padding: 10px;
810 background: #f6f7f7;
811 border-radius: 4px;
812 font-size: 12px;
813 }
814
815 .doi-placeholders strong {
816 display: block;
817 margin-bottom: 8px;
818 }
819
820 .doi-placeholders code {
821 display: inline-block;
822 margin: 2px 4px 2px 0;
823 padding: 2px 6px;
824 background: #fff;
825 border: 1px solid #ddd;
826 border-radius: 3px;
827 font-size: 11px;
828 cursor: pointer;
829 }
830
831 .doi-placeholders code:hover {
832 background: #e0e0e0;
833 }
834
835 /* ==========================================================================
836 Saving State
837 ========================================================================== */
838
839 .doi-panel.saving .doi-panel-footer button {
840 opacity: 0.5;
841 pointer-events: none;
842 }
843
844 .doi-panel.saving #doi-panel-save::after {
845 content: "...";
846 }
847
848 /* ==========================================================================
849 Toast Notifications
850 ========================================================================== */
851
852 .doi-toast {
853 position: fixed !important;
854 bottom: 30px !important;
855 right: 30px !important;
856 left: auto !important;
857 top: auto !important;
858 padding: 12px 20px;
859 background: #1d2327;
860 color: #fff;
861 border-radius: 4px;
862 box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
863 z-index: 100001 !important;
864 opacity: 0;
865 transform: translateY(10px);
866 transition: opacity 0.3s, transform 0.3s;
867 max-width: 420px;
868 min-width: 280px;
869 box-sizing: border-box;
870 }
871
872 .doi-toast.show {
873 opacity: 1;
874 transform: translateY(0);
875 }
876
877 .doi-toast.success {
878 background: #00a32a;
879 }
880
881 .doi-toast.error {
882 background: #d63638;
883 }
884
885 .doi-toast.doi-toast-detailed {
886 padding: 16px 20px;
887 line-height: 1.5;
888 }
889
890 .doi-toast-close {
891 position: absolute;
892 top: 8px;
893 right: 10px;
894 background: none;
895 border: none;
896 color: rgba(255, 255, 255, 0.7);
897 font-size: 18px;
898 cursor: pointer;
899 padding: 0;
900 line-height: 1;
901 }
902
903 .doi-toast-close:hover {
904 color: #fff;
905 }
906
907 .doi-toast-detailed {
908 position: relative;
909 padding-right: 36px;
910 }
911
912 .doi-toast-errors {
913 margin: 8px 0 0 0;
914 padding: 0 0 0 18px;
915 list-style: disc;
916 }
917
918 .doi-toast-errors li {
919 margin-bottom: 4px;
920 font-size: 13px;
921 }
922
923 /* ==========================================================================
924 Field-level Error Highlighting
925 ========================================================================== */
926
927 .doi-field-error {
928 border-color: #d63638 !important;
929 box-shadow: 0 0 0 1px #d63638 !important;
930 }
931
932 .doi-field-error-msg {
933 display: block;
934 color: #d63638;
935 font-size: 12px;
936 margin-top: 4px;
937 }
938
939 /* ==========================================================================
940 Accessibility
941 ========================================================================== */
942
943 .screen-reader-text {
944 border: 0;
945 clip: rect(1px, 1px, 1px, 1px);
946 clip-path: inset(50%);
947 height: 1px;
948 margin: -1px;
949 overflow: hidden;
950 padding: 0;
951 position: absolute;
952 width: 1px;
953 word-wrap: normal !important;
954 }
955
956 /* ==========================================================================
957 Responsive Design
958 ========================================================================== */
959
960 @media screen and (max-width: 782px) {
961 .doi-forms-stats {
962 flex-direction: column;
963 }
964
965 .doi-forms-stat {
966 min-width: auto;
967 }
968
969 .doi-forms-table .column-id {
970 display: none;
971 }
972
973 .doi-forms-table .column-actions {
974 width: auto;
975 }
976
977 .doi-actions {
978 flex-direction: column;
979 }
980
981 .doi-panel-content {
982 width: 100%;
983 right: -100%;
984 }
985
986 /* Toast responsive */
987 .doi-toast {
988 right: 15px !important;
989 left: 15px !important;
990 bottom: 15px !important;
991 max-width: none !important;
992 width: auto !important;
993 }
994 }
995
996 /* ==========================================================================
997 Tooltips
998 ========================================================================== */
999
1000 .doi-tooltip {
1001 position: relative;
1002 display: inline-block;
1003 cursor: help;
1004 margin-left: 4px;
1005 vertical-align: middle;
1006 }
1007
1008 .doi-tooltip .dashicons {
1009 font-size: 16px;
1010 width: 16px;
1011 height: 16px;
1012 color: #8c8f94;
1013 transition: color .2s;
1014 }
1015
1016 .doi-tooltip:hover .dashicons {
1017 color: #2271b1;
1018 }
1019
1020 .doi-tooltip-text {
1021 display: none;
1022 position: fixed;
1023 background: #1d2327;
1024 color: #fff;
1025 padding: 8px 12px;
1026 border-radius: 4px;
1027 font-size: 12px;
1028 font-weight: 400;
1029 line-height: 1.5;
1030 white-space: normal;
1031 width: 260px;
1032 z-index: 100002;
1033 box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
1034 pointer-events: none;
1035 }
1036
1037 .doi-tooltip:hover .doi-tooltip-text {
1038 display: block;
1039 }
1040
1041 .doi-tooltip-text::after {
1042 content: '';
1043 position: absolute;
1044 top: 100%;
1045 left: 50%;
1046 transform: translateX(-50%);
1047 border: 6px solid transparent;
1048 border-top-color: #1d2327;
1049 }
1050
1051 /* ==========================================================================
1052 Field Mapping Grid
1053 ========================================================================== */
1054
1055 .doi-field-mapping-grid {
1056 display: flex;
1057 flex-direction: column;
1058 gap: 8px;
1059 background: #f9f9f9;
1060 border: 1px solid #e0e0e0;
1061 border-radius: 4px;
1062 padding: 12px;
1063 }
1064
1065 .doi-mapping-row {
1066 display: flex;
1067 align-items: center;
1068 gap: 10px;
1069 padding: 6px 0;
1070 border-bottom: 1px solid #eee;
1071 }
1072
1073 .doi-mapping-row:last-child {
1074 border-bottom: none;
1075 }
1076
1077 .doi-mapping-label {
1078 flex: 0 0 180px;
1079 display: flex;
1080 align-items: center;
1081 gap: 8px;
1082 }
1083
1084 .doi-mapping-label code {
1085 background: #e8f0fe;
1086 color: #1967d2;
1087 padding: 2px 6px;
1088 border-radius: 3px;
1089 font-size: 11px;
1090 font-weight: 500;
1091 }
1092
1093 .doi-mapping-label-text {
1094 color: #666;
1095 font-size: 12px;
1096 }
1097
1098 .doi-mapping-arrow {
1099 color: #999;
1100 font-size: 14px;
1101 }
1102
1103 .doi-mapping-field {
1104 flex: 1;
1105 }
1106
1107 .doi-mapping-select {
1108 width: 100%;
1109 max-width: 250px;
1110 padding: 4px 8px;
1111 border: 1px solid #ddd;
1112 border-radius: 3px;
1113 font-size: 13px;
1114 }
1115
1116 .doi-mapping-select:focus {
1117 border-color: #2271b1;
1118 box-shadow: 0 0 0 1px #2271b1;
1119 outline: none;
1120 }
1121
1122 .doi-mapping-empty {
1123 color: #666;
1124 font-style: italic;
1125 margin: 0;
1126 padding: 10px;
1127 text-align: center;
1128 }
1129
1130 /* Responsive adjustments for field mapping */
1131 @media screen and (max-width: 782px) {
1132 .doi-mapping-row {
1133 flex-wrap: wrap;
1134 }
1135
1136 .doi-mapping-label {
1137 flex: 0 0 100%;
1138 margin-bottom: 5px;
1139 }
1140
1141 .doi-mapping-arrow {
1142 display: none;
1143 }
1144
1145 .doi-mapping-field {
1146 flex: 0 0 100%;
1147 }
1148
1149 .doi-mapping-select {
1150 max-width: 100%;
1151 }
1152 }
1153