PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.6.20
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.6.20
2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 2.6.4 2.6.3 2.5.23 All 138 releases
metasync / admin / css / metasync-dashboard.css

metasync-dashboard.css in Search Atlas SEO – OTTO AI SEO Automation for WordPress 2.6.20, at admin/css/metasync-dashboard.css

3,365 lines 88.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Dashboard-inspired admin styling for Metasync plugin
3 * Modern dark theme matching the main dashboard design
4 */
5
6 /* Root Variables - Dashboard Color Scheme */
7 /* Dark Theme (Default) */
8 :root,
9 [data-theme="dark"] {
10 --dashboard-bg: #0f1419;
11 --dashboard-card-bg: #1a1f26;
12 --dashboard-card-hover: #222831;
13 --dashboard-input-bg: #22272e;
14 --dashboard-text-primary: #ffffff;
15 --dashboard-text: #ffffff;
16 --dashboard-text-secondary: #9ca3af;
17 --dashboard-accent: #3b82f6;
18 --dashboard-accent-hover: #2563eb;
19 --dashboard-success: #10b981;
20 --dashboard-warning: #f59e0b;
21 --dashboard-error: #ef4444;
22 --dashboard-border: #374151;
23 --dashboard-gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
24 --dashboard-gradient-accent: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
25 --dashboard-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -2px rgba(0, 0, 0, 0.1);
26 --dashboard-shadow-hover: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 10px 10px -5px rgba(0, 0, 0, 0.2);
27 }
28
29 /* Light Theme */
30 [data-theme="light"] {
31 --dashboard-bg: #f8f9fa;
32 --dashboard-card-bg: #ffffff;
33 --dashboard-card-hover: #f1f3f5;
34 --dashboard-input-bg: #ffffff;
35 --dashboard-text-primary: #1a1f26;
36 --dashboard-text: #1a1f26;
37 --dashboard-text-secondary: #6b7280;
38 --dashboard-accent: #3b82f6;
39 --dashboard-accent-hover: #2563eb;
40 --dashboard-success: #10b981;
41 --dashboard-warning: #f59e0b;
42 --dashboard-error: #ef4444;
43 --dashboard-border: #e5e7eb;
44 --dashboard-gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
45 --dashboard-gradient-accent: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
46 --dashboard-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
47 --dashboard-shadow-hover: 0 20px 25px -5px rgba(0, 0, 0, 0.15), 0 10px 10px -5px rgba(0, 0, 0, 0.1);
48 }
49
50 /* Theme Transition */
51 :root,
52 [data-theme] {
53 transition: background-color 0.3s ease, color 0.3s ease;
54 }
55
56 /* Only apply styles within plugin pages - NO LAYOUT CHANGES */
57 .metasync-dashboard-wrap {
58 background: var(--dashboard-bg) !important;
59 color: var(--dashboard-text-primary) !important;
60 font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
61 /* Apply dark background to edges without affecting layout */
62 position: relative;
63 margin: 0 -20px;
64 padding: 20px 40px; /* More lateral padding for content breathing room */
65 min-height: calc(100vh - 32px);
66 opacity: 1 !important;
67 }
68
69 /* Hide Jetpack identity crisis container within plugin pages */
70 .metasync-dashboard-wrap ~ .jp-identity-crisis-container,
71 .wrap.metasync-dashboard-wrap .jp-identity-crisis-container,
72 body.admin_page_searchatlas #jp-identity-crisis-container,
73 body.admin_page_searchatlas .jp-identity-crisis-container,
74 body[class*="admin_page_"][class*="searchatlas"] #jp-identity-crisis-container,
75 body[class*="admin_page_"][class*="searchatlas"] .jp-identity-crisis-container,
76 /* Handle custom whitelabel menu slugs - use presence of metasync-dashboard-wrap as indicator */
77 body:has(.metasync-dashboard-wrap) #jp-identity-crisis-container,
78 body:has(.metasync-dashboard-wrap) .jp-identity-crisis-container {
79 display: none !important;
80 }
81
82 /* Dark background extension - DISABLED to prevent black overlays */
83 /* .metasync-dashboard-wrap::before {
84 content: '';
85 position: absolute;
86 top: 0;
87 left: -50px;
88 right: -50px;
89 bottom: 0;
90 background: var(--dashboard-bg);
91 z-index: -1;
92 } */
93
94 /* Ensure content is above background overlay */
95 .metasync-dashboard-wrap > * {
96 position: relative;
97 z-index: 1;
98 }
99
100 /* Fix WordPress notices ONLY in plugin pages */
101 .metasync-dashboard-wrap .notice,
102 .metasync-dashboard-wrap .error,
103 .metasync-dashboard-wrap .updated {
104 background: var(--dashboard-card-bg) !important;
105 border-left: 4px solid var(--dashboard-accent) !important;
106 color: var(--dashboard-text-primary) !important;
107 border-radius: 8px !important;
108 box-shadow: var(--dashboard-shadow) !important;
109 margin: 20px 0 !important;
110 backdrop-filter: blur(10px) !important;
111 }
112
113 .metasync-dashboard-wrap .notice p,
114 .metasync-dashboard-wrap .error p,
115 .metasync-dashboard-wrap .updated p {
116 color: var(--dashboard-text-primary) !important;
117 }
118
119 .metasync-dashboard-wrap .notice a,
120 .metasync-dashboard-wrap .error a,
121 .metasync-dashboard-wrap .updated a {
122 color: var(--dashboard-accent) !important;
123 }
124
125 /* Specific error notice styling ONLY in plugin */
126 .metasync-dashboard-wrap .notice.notice-error {
127 border-left-color: var(--dashboard-error) !important;
128 background: rgba(239, 68, 68, 0.15) !important;
129 }
130
131 /* License mismatch notice specific styling ONLY in plugin */
132 .metasync-dashboard-wrap .notice:has(.dashicons-warning):before,
133 .metasync-dashboard-wrap .notice[class*="license"]:before,
134 .metasync-dashboard-wrap .notice[class*="mismatch"]:before {
135 content: "⚠️";
136 font-size: 20px;
137 margin-right: 8px;
138 display: inline-block;
139 }
140
141 /* Better button styling in notices ONLY in plugin */
142 .metasync-dashboard-wrap .notice .button,
143 .metasync-dashboard-wrap .error .button,
144 .metasync-dashboard-wrap .updated .button {
145 background: var(--dashboard-accent) !important;
146 color: var(--dashboard-text-primary) !important;
147 border: none !important;
148 border-radius: 6px !important;
149 padding: 8px 16px !important;
150 font-weight: 500 !important;
151 transition: all 0.3s ease !important;
152 }
153
154 .metasync-dashboard-wrap .notice .button:hover,
155 .metasync-dashboard-wrap .error .button:hover,
156 .metasync-dashboard-wrap .updated .button:hover {
157 background: var(--dashboard-accent-hover) !important;
158 transform: translateY(-1px) !important;
159 }
160
161 /* Theme Toggle Button */
162 .metasync-theme-toggle {
163 background: rgba(255, 255, 255, 0.1);
164 border: 1px solid rgba(255, 255, 255, 0.2);
165 border-radius: 20px;
166 padding: 6px;
167 display: flex;
168 align-items: center;
169 gap: 4px;
170 cursor: pointer;
171 transition: all 0.3s ease;
172 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
173 }
174
175 .metasync-theme-toggle:hover {
176 border-color: var(--dashboard-accent);
177 box-shadow: var(--dashboard-shadow);
178 }
179
180 .metasync-theme-option {
181 padding: 6px 12px;
182 border-radius: 16px;
183 font-size: 13px;
184 font-weight: 500;
185 color: var(--dashboard-text-secondary);
186 transition: all 0.3s ease;
187 cursor: pointer;
188 display: flex;
189 align-items: center;
190 gap: 6px;
191 border: none;
192 background: transparent;
193 }
194
195 .metasync-theme-option.active {
196 background: var(--dashboard-gradient-primary);
197 color: #ffffff;
198 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
199 }
200
201 .metasync-theme-option:hover:not(.active) {
202 color: var(--dashboard-text-primary);
203 background: var(--dashboard-card-hover);
204 }
205
206 .metasync-theme-icon {
207 font-size: 16px;
208 display: inline-flex;
209 align-items: center;
210 }
211
212 /* Plugin Header with Logo - Clean Layout */
213 .metasync-dashboard-wrap .metasync-header {
214 display: flex;
215 align-items: center;
216 justify-content: space-between;
217 margin-bottom: 1rem;
218 padding: 20px;
219 background: var(--dashboard-card-bg);
220 border: 1px solid var(--dashboard-border);
221 border-radius: 12px;
222 box-shadow: var(--dashboard-shadow);
223 color: var(--dashboard-text-primary);
224 }
225
226 .metasync-dashboard-wrap .metasync-header-left {
227 display: flex;
228 align-items: center;
229 flex: 1;
230 }
231
232 .metasync-dashboard-wrap .metasync-header-right {
233 display: flex;
234 align-items: center;
235 gap: 12px;
236 flex-shrink: 0;
237 }
238
239 .metasync-dashboard-wrap .metasync-logo-container {
240 flex-shrink: 0;
241 display: flex;
242 align-items: center;
243 background: linear-gradient(135deg, #1a1f26 0%, #2d3748 100%);
244 padding: 12px 20px;
245 border-radius: 12px;
246 border: 1px solid rgba(255, 255, 255, 0.1);
247 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
248 transition: all 0.3s ease;
249 }
250
251 .metasync-dashboard-wrap .metasync-logo-container:hover {
252 transform: translateY(-2px);
253 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
254 border-color: rgba(255, 255, 255, 0.2);
255 }
256
257 .metasync-dashboard-wrap .metasync-logo {
258 height: 48px;
259 width: auto;
260 max-width: 200px;
261 object-fit: contain;
262 filter: brightness(1) contrast(1);
263 transition: all 0.3s ease;
264 }
265
266 .metasync-dashboard-wrap .metasync-logo:hover {
267 filter: brightness(1.1) contrast(1.1);
268 }
269
270 /* Dual-logo theme switching */
271 /* Default: show dark logo, hide light (matches PHP default theme of 'dark') */
272 .metasync-logo-light { display: none; }
273 .metasync-logo-dark { display: block; }
274
275 [data-theme="light"] .metasync-logo-dark {
276 display: none;
277 }
278
279 [data-theme="dark"] .metasync-logo-light {
280 display: none;
281 }
282
283 .metasync-header[data-current-theme="light"] .metasync-logo-dark {
284 display: none;
285 }
286
287 .metasync-header[data-current-theme="dark"] .metasync-logo-light {
288 display: none;
289 }
290
291 /* Light theme must explicitly show the light logo: its base state is
292 display:none, and hiding the dark logo alone would leave no logo visible. */
293 [data-theme="light"] .metasync-logo-light,
294 .metasync-header[data-current-theme="light"] .metasync-logo-light {
295 display: block;
296 }
297
298 /* Default (non-whitelabel) SA logo: invert on light theme so the white asset
299 stays visible against a light background. Dark theme keeps the original. */
300 [data-theme="light"] .metasync-logo-default,
301 .metasync-header[data-current-theme="light"] .metasync-logo-default {
302 filter: invert(1);
303 }
304
305 [data-theme="light"] .metasync-logo-default:hover,
306 .metasync-header[data-current-theme="light"] .metasync-logo-default:hover {
307 filter: invert(1) brightness(1.1) contrast(1.1);
308 }
309
310 [data-theme="dark"] .metasync-logo-default,
311 .metasync-header[data-current-theme="dark"] .metasync-logo-default {
312 filter: brightness(1) contrast(1);
313 }
314
315 /* Page Title Section - Below Header */
316 .metasync-dashboard-wrap .metasync-page-title {
317 margin-bottom: 2rem;
318 padding: 0;
319 }
320
321 .metasync-dashboard-wrap .metasync-page-title h1 {
322 color: var(--dashboard-text-primary);
323 font-size: 2.5rem;
324 font-weight: 700;
325 margin: 0;
326 background: var(--dashboard-gradient-primary);
327 -webkit-background-clip: text;
328 -webkit-text-fill-color: transparent;
329 background-clip: text;
330 text-align: left;
331 line-height: 1.2;
332 }
333
334 /* Fallback for browsers that don't support background-clip */
335 @supports not (-webkit-background-clip: text) {
336 .metasync-dashboard-wrap .metasync-page-title h1 {
337 color: var(--dashboard-accent);
338 background: none;
339 }
340 }
341
342 /* Integration Status */
343 .metasync-dashboard-wrap .metasync-integration-status {
344 display: flex;
345 align-items: center;
346 gap: 8px;
347 padding: 8px 16px;
348 border-radius: 20px;
349 font-size: 12px;
350 font-weight: 600;
351 text-transform: uppercase;
352 letter-spacing: 0.5px;
353 transition: all 0.3s ease;
354 }
355
356 .metasync-dashboard-wrap .metasync-integration-status.integrated {
357 background: rgba(16, 185, 129, 0.15);
358 color: var(--dashboard-success);
359 border: 1px solid rgba(16, 185, 129, 0.3);
360 }
361
362 .metasync-dashboard-wrap .metasync-integration-status.not-integrated {
363 background: rgba(239, 68, 68, 0.15);
364 color: var(--dashboard-error);
365 border: 1px solid rgba(239, 68, 68, 0.3);
366 }
367
368 .metasync-dashboard-wrap .metasync-integration-status.warning {
369 background: rgba(255, 185, 0, 0.15);
370 color: #ffb900;
371 border: 1px solid rgba(255, 185, 0, 0.3);
372 }
373
374 .metasync-dashboard-wrap .metasync-integration-status .status-indicator {
375 width: 8px;
376 height: 8px;
377 border-radius: 50%;
378 display: block;
379 }
380
381 .metasync-dashboard-wrap .metasync-integration-status.integrated .status-indicator {
382 background: var(--dashboard-success);
383 animation: pulse-success 2s infinite;
384 }
385
386 .metasync-dashboard-wrap .metasync-integration-status.not-integrated .status-indicator {
387 background: var(--dashboard-error);
388 }
389
390 .metasync-dashboard-wrap .metasync-integration-status.warning .status-indicator {
391 background: #ffb900;
392 }
393
394 @keyframes pulse-success {
395 0%, 100% { opacity: 1; }
396 50% { opacity: 0.6; }
397 }
398
399
400
401
402
403 /* Dashboard Cards - ONLY in plugin pages */
404 .metasync-dashboard-wrap .dashboard-card {
405 background: var(--dashboard-card-bg);
406 border: 1px solid var(--dashboard-border);
407 border-radius: 16px;
408 padding: 24px;
409 margin-bottom: 24px;
410 box-shadow: var(--dashboard-shadow);
411 /* Removed transition - was too distracting in sections */
412 backdrop-filter: blur(10px);
413 }
414
415 .metasync-dashboard-wrap .dashboard-card:hover {
416 background: var(--dashboard-card-hover);
417 box-shadow: var(--dashboard-shadow-hover);
418 /* Removed translateY animation - was too distracting */
419 }
420
421 .metasync-dashboard-wrap .dashboard-card h2 {
422 color: var(--dashboard-text-primary);
423 font-size: 1.5rem;
424 font-weight: 600;
425 margin: 0 0 16px 0;
426 display: flex;
427 align-items: center;
428 gap: 12px;
429 }
430
431 .metasync-dashboard-wrap .dashboard-card h3 {
432 color: var(--dashboard-text-primary);
433 font-size: 1.25rem;
434 font-weight: 500;
435 margin: 0 0 12px 0;
436 }
437
438 /* New Navigation System */
439 .metasync-dashboard-wrap .metasync-nav-wrapper {
440 margin: 0 0 32px 0;
441 padding: 0;
442 background: transparent;
443 position: relative;
444 z-index: 100;
445 }
446
447 .metasync-dashboard-wrap .metasync-nav-tabs {
448 display: flex;
449 gap: 4px;
450 flex-wrap: wrap;
451 background: var(--dashboard-card-bg);
452 border: 1px solid var(--dashboard-border);
453 border-radius: 12px;
454 padding: 6px;
455 backdrop-filter: blur(10px);
456 }
457
458 .metasync-dashboard-wrap .metasync-nav-tab {
459 display: flex;
460 align-items: center;
461 gap: 8px;
462 padding: 10px 16px;
463 border-radius: 8px;
464 text-decoration: none;
465 color: var(--dashboard-text-secondary);
466 font-weight: 500;
467 font-size: 14px;
468 transition: all 0.3s ease;
469 position: relative;
470 overflow: hidden;
471 border: none;
472 background: transparent;
473 }
474
475 .metasync-dashboard-wrap .metasync-nav-tab:hover {
476 color: var(--dashboard-text-primary);
477 background: rgba(255, 255, 255, 0.05);
478 transform: translateY(-1px);
479 }
480
481 .metasync-dashboard-wrap .metasync-nav-tab.active {
482 background: var(--dashboard-gradient-primary);
483 color: #ffffff;
484 box-shadow: var(--dashboard-shadow);
485 transform: translateY(-1px);
486 }
487
488 .metasync-dashboard-wrap .metasync-nav-tab .tab-icon {
489 font-size: 16px;
490 opacity: 1;
491 transition: all 0.3s ease;
492 filter: brightness(1.2) contrast(1.1);
493 text-shadow: 0 0 8px rgba(255, 255, 255, 0.3);
494 }
495
496 .metasync-dashboard-wrap .metasync-nav-tab.active .tab-icon,
497 .metasync-dashboard-wrap .metasync-nav-tab:hover .tab-icon {
498 opacity: 1;
499 transform: scale(1.1);
500 filter: brightness(1.4) contrast(1.2);
501 text-shadow: 0 0 12px rgba(255, 255, 255, 0.5);
502 }
503
504 .metasync-dashboard-wrap .metasync-nav-tab .tab-text {
505 font-weight: 500;
506 white-space: nowrap;
507 }
508
509 /* New Badge for AI Agent */
510 .metasync-dashboard-wrap .metasync-new-badge {
511 display: inline-block;
512 background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
513 color: #ffffff;
514 font-size: 9px;
515 font-weight: 700;
516 text-transform: uppercase;
517 letter-spacing: 0.5px;
518 padding: 2px 6px;
519 border-radius: 4px;
520 margin-left: 6px;
521 line-height: 1;
522 box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);
523 animation: pulse-badge 2s ease-in-out infinite;
524 }
525
526 .metasync-dashboard-wrap .metasync-nav-tab.active .metasync-new-badge {
527 background: rgba(255, 255, 255, 0.25);
528 color: #ffffff;
529 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
530 }
531
532 @keyframes pulse-badge {
533 0%, 100% {
534 transform: scale(1);
535 opacity: 1;
536 }
537 50% {
538 transform: scale(1.05);
539 opacity: 0.9;
540 }
541 }
542
543 /* Old nav-tab compatibility (fallback) */
544 .metasync-dashboard-wrap .nav-tab-wrapper {
545 display: none !important;
546 }
547
548 /* Hide WordPress settings section titles to prevent duplication */
549 .metasync-dashboard-wrap .dashboard-card h2.hndle,
550 .metasync-dashboard-wrap .dashboard-card .form-table caption,
551 .metasync-dashboard-wrap .dashboard-card > h2:not(.dashboard-card h2:first-child),
552 .metasync-dashboard-wrap .form-table + h2,
553 .metasync-dashboard-wrap .form-table + h3 {
554 display: none !important;
555 }
556
557 /* Also hide any orphaned WordPress section headers */
558 .metasync-dashboard-wrap .wrap > h2:not(.nav-tab-wrapper):not(.metasync-page-title h1),
559 .metasync-dashboard-wrap .wrap > h3:not(.metasync-page-title h1) {
560 display: none !important;
561 }
562
563 /* Form Styling - ONLY in plugin pages */
564 .metasync-dashboard-wrap form {
565 display: grid;
566 gap: 24px;
567 }
568
569 .metasync-dashboard-wrap .form-table {
570 background: transparent;
571 border: none;
572 border-collapse: separate;
573 /* Vertical spacing between each settings row (tr); horizontal stays 0 so th/td join */
574 border-spacing: 0 12px;
575 width: 100%;
576 }
577
578 .metasync-dashboard-wrap .form-table th {
579 background: var(--dashboard-card-bg);
580 border: 1px solid var(--dashboard-border);
581 border-right: none;
582 border-radius: 12px 0 0 12px;
583 color: var(--dashboard-text-primary);
584 font-weight: 500;
585 padding: 16px 20px;
586 text-align: left;
587 vertical-align: top;
588 width: 30%;
589 }
590
591 .metasync-dashboard-wrap .form-table td {
592 background: var(--dashboard-card-bg);
593 border: 1px solid var(--dashboard-border);
594 border-left: none;
595 border-radius: 0 12px 12px 0;
596 padding: 16px 20px;
597 vertical-align: top;
598 }
599
600 /* Each row is a self-contained card; vertical gaps come from border-spacing above */
601 .metasync-dashboard-wrap .form-table th,
602 .metasync-dashboard-wrap .form-table td {
603 padding: 16px 12px;
604 }
605
606 /* Simple Settings Menu Navigation Styles */
607 .metasync-nav-tabs {
608 display: flex;
609 justify-content: space-between;
610 align-items: center;
611 width: 100%;
612 }
613
614 .metasync-nav-left {
615 display: flex;
616 gap: 0;
617 }
618
619 .metasync-nav-right {
620 display: flex;
621 align-items: center;
622 gap: 8px;
623 margin-left: auto;
624 }
625
626 /* Grouped Navigation Styles with Dropdowns */
627 .metasync-nav-grouped {
628 flex-wrap: nowrap;
629 gap: 4px;
630 align-items: center;
631 }
632
633 /* Dropdown Container */
634 .metasync-nav-dropdown {
635 position: relative;
636 display: inline-block;
637 z-index: 999999;
638 }
639
640 .metasync-nav-dropdown.active {
641 z-index: 999999999;
642 }
643
644 /* Dropdown Button */
645 .metasync-nav-dropdown-btn {
646 display: flex;
647 align-items: center;
648 gap: 8px;
649 padding: 10px 16px;
650 border-radius: 8px;
651 text-decoration: none;
652 color: var(--dashboard-text-secondary);
653 font-weight: 500;
654 font-size: 14px;
655 transition: all 0.3s ease;
656 border: none;
657 background: transparent;
658 cursor: pointer;
659 position: relative;
660 }
661
662 .metasync-nav-dropdown-btn:hover {
663 color: var(--dashboard-text-primary);
664 background: rgba(255, 255, 255, 0.05);
665 transform: translateY(-1px);
666 }
667
668 .metasync-nav-dropdown-btn.active {
669 background: var(--dashboard-gradient-primary);
670 color: #ffffff;
671 box-shadow: var(--dashboard-shadow);
672 }
673
674 .metasync-nav-dropdown-btn .dropdown-arrow {
675 font-size: 10px;
676 transition: transform 0.3s ease;
677 margin-left: 4px;
678 }
679
680 .metasync-nav-dropdown:hover .metasync-nav-dropdown-btn .dropdown-arrow,
681 .metasync-nav-dropdown-btn[aria-expanded="true"] .dropdown-arrow {
682 transform: rotate(180deg);
683 }
684
685 /* Dropdown Menu */
686 .metasync-nav-dropdown-menu {
687 position: absolute;
688 top: calc(100% + 8px);
689 left: 0;
690 min-width: 220px;
691 max-width: 300px;
692 max-height: 70vh;
693 overflow-y: auto;
694 background: var(--dashboard-card-bg);
695 border: 1px solid var(--dashboard-border);
696 border-radius: 12px;
697 padding: 8px;
698 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
699 opacity: 0;
700 visibility: hidden;
701 transform: translateY(-10px);
702 transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
703 z-index: 999999999 !important;
704 backdrop-filter: blur(10px);
705 }
706
707 /* When using fixed positioning (via JavaScript) */
708 .metasync-nav-dropdown-menu[style*="position: fixed"] {
709 z-index: 999999999 !important;
710 }
711
712 /* Portal menu (appended to body for reliable positioning) */
713 #metasync-nav-portal-menu {
714 min-width: 220px;
715 max-width: 300px;
716 max-height: 70vh;
717 overflow-y: auto;
718 background: var(--dashboard-card-bg);
719 border: 1px solid var(--dashboard-border);
720 border-radius: 12px;
721 padding: 8px;
722 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
723 backdrop-filter: blur(10px);
724 }
725
726 #metasync-nav-portal-menu .metasync-nav-dropdown-item {
727 display: flex;
728 align-items: center;
729 gap: 10px;
730 padding: 10px 14px;
731 border-radius: 8px;
732 text-decoration: none;
733 color: var(--dashboard-text-secondary);
734 font-weight: 500;
735 font-size: 14px;
736 transition: all 0.2s ease;
737 white-space: nowrap;
738 }
739
740 #metasync-nav-portal-menu .metasync-nav-dropdown-item:hover {
741 background: rgba(255, 255, 255, 0.08);
742 color: var(--dashboard-text-primary);
743 transform: translateX(4px);
744 }
745
746 #metasync-nav-portal-menu .metasync-nav-dropdown-item.active {
747 background: var(--dashboard-gradient-primary);
748 color: #ffffff;
749 box-shadow: var(--dashboard-shadow);
750 }
751
752 #metasync-nav-portal-menu .metasync-nav-dropdown-item .tab-icon {
753 font-size: 16px;
754 opacity: 1;
755 transition: all 0.3s ease;
756 }
757
758 #metasync-nav-portal-menu .metasync-nav-dropdown-item.active .tab-icon,
759 #metasync-nav-portal-menu .metasync-nav-dropdown-item:hover .tab-icon {
760 transform: scale(1.1);
761 }
762
763 #metasync-nav-portal-menu::-webkit-scrollbar {
764 width: 6px;
765 }
766
767 #metasync-nav-portal-menu::-webkit-scrollbar-track {
768 background: rgba(255, 255, 255, 0.05);
769 border-radius: 3px;
770 }
771
772 #metasync-nav-portal-menu::-webkit-scrollbar-thumb {
773 background: rgba(255, 255, 255, 0.2);
774 border-radius: 3px;
775 }
776
777 #metasync-nav-portal-menu::-webkit-scrollbar-thumb:hover {
778 background: rgba(255, 255, 255, 0.3);
779 }
780
781 /* Scrollbar styling for dropdown menu */
782 .metasync-nav-dropdown-menu::-webkit-scrollbar {
783 width: 6px;
784 }
785
786 .metasync-nav-dropdown-menu::-webkit-scrollbar-track {
787 background: rgba(255, 255, 255, 0.05);
788 border-radius: 3px;
789 }
790
791 .metasync-nav-dropdown-menu::-webkit-scrollbar-thumb {
792 background: rgba(255, 255, 255, 0.2);
793 border-radius: 3px;
794 }
795
796 .metasync-nav-dropdown-menu::-webkit-scrollbar-thumb:hover {
797 background: rgba(255, 255, 255, 0.3);
798 }
799
800 .metasync-nav-dropdown:hover .metasync-nav-dropdown-menu,
801 .metasync-nav-dropdown.active .metasync-nav-dropdown-menu,
802 .metasync-nav-dropdown-btn[aria-expanded="true"] + .metasync-nav-dropdown-menu {
803 opacity: 1;
804 visibility: visible;
805 transform: translateY(0);
806 }
807
808 /* Dropdown Items */
809 .metasync-nav-dropdown-item {
810 display: flex;
811 align-items: center;
812 gap: 10px;
813 padding: 10px 14px;
814 border-radius: 8px;
815 text-decoration: none;
816 color: var(--dashboard-text-secondary);
817 font-weight: 500;
818 font-size: 14px;
819 transition: all 0.2s ease;
820 white-space: nowrap;
821 }
822
823 .metasync-nav-dropdown-item:hover {
824 background: rgba(255, 255, 255, 0.08);
825 color: var(--dashboard-text-primary);
826 transform: translateX(4px);
827 }
828
829 .metasync-nav-dropdown-item.active {
830 background: var(--dashboard-gradient-primary);
831 color: #ffffff;
832 box-shadow: var(--dashboard-shadow);
833 }
834
835 .metasync-nav-dropdown-item .tab-icon {
836 font-size: 16px;
837 opacity: 1;
838 transition: all 0.3s ease;
839 }
840
841 .metasync-nav-dropdown-item.active .tab-icon,
842 .metasync-nav-dropdown-item:hover .tab-icon {
843 transform: scale(1.1);
844 }
845
846 /* Right section adjustments for grouped nav */
847 .metasync-nav-grouped .metasync-nav-right {
848 padding-left: 12px;
849 border-left: 1px solid var(--dashboard-border);
850 margin-left: auto;
851 }
852
853 /* Refactored Simple Dropdown */
854 .metasync-simple-dropdown {
855 position: relative;
856 display: inline-block;
857 z-index: 999999999 !important; /* Ensure container is above forms */
858 }
859
860 .metasync-seo-btn,
861 .metasync-settings-btn {
862 background: transparent;
863 border: 2px solid var(--dashboard-border);
864 color: var(--dashboard-text-primary);
865 padding: 12px 16px;
866 cursor: pointer;
867 display: flex;
868 align-items: center;
869 gap: 8px;
870 border-radius: 8px;
871 font-size: 14px;
872 font-weight: 500;
873 transition: all 0.2s ease;
874 min-height: 44px;
875 }
876
877 .metasync-seo-btn:hover,
878 .metasync-settings-btn:hover {
879 background: var(--dashboard-card-hover);
880 border-color: var(--dashboard-accent);
881 }
882
883 .metasync-seo-btn.active,
884 .metasync-settings-btn.active {
885 background: var(--dashboard-accent);
886 border-color: var(--dashboard-accent);
887 color: white;
888 }
889
890 .metasync-seo-btn .dropdown-arrow,
891 .metasync-settings-btn .dropdown-arrow {
892 transition: transform 0.2s ease;
893 font-size: 10px;
894 }
895
896 .metasync-seo-btn[aria-expanded="true"] .dropdown-arrow,
897 .metasync-settings-btn[aria-expanded="true"] .dropdown-arrow {
898 transform: rotate(180deg);
899 }
900
901 /* Portal dropdown menu that bypasses stacking contexts */
902 .metasync-portal-menu {
903 background: var(--dashboard-card-bg);
904 border: 2px solid var(--dashboard-border);
905 border-radius: 8px;
906 min-width: 160px;
907 box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4);
908 overflow: hidden;
909 /* position and z-index set by JavaScript */
910 }
911
912 .metasync-portal-item {
913 display: block;
914 padding: 14px 18px;
915 color: var(--dashboard-text-primary);
916 text-decoration: none;
917 font-size: 14px;
918 font-weight: 500;
919 transition: all 0.2s ease;
920 border-bottom: 1px solid var(--dashboard-border);
921 }
922
923 .metasync-portal-item:last-child {
924 border-bottom: none;
925 }
926
927 .metasync-portal-item:hover {
928 background: var(--dashboard-card-hover);
929 color: var(--dashboard-accent);
930 }
931
932 .metasync-portal-item.active {
933 background: var(--dashboard-accent);
934 color: white;
935 }
936
937 /* Input Fields - ONLY in plugin pages */
938 .metasync-dashboard-wrap input[type="text"],
939 .metasync-dashboard-wrap input[type="email"],
940 .metasync-dashboard-wrap input[type="url"],
941 .metasync-dashboard-wrap input[type="password"],
942 .metasync-dashboard-wrap input[type="number"],
943 .metasync-dashboard-wrap textarea,
944 .metasync-dashboard-wrap select {
945 background: rgba(255, 255, 255, 0.05);
946 border: 1px solid var(--dashboard-border);
947 border-radius: 8px;
948 color: var(--dashboard-text-primary);
949 padding: 12px 16px;
950 font-size: 14px;
951 transition: all 0.3s ease;
952 width: 100%;
953 max-width: 400px;
954 }
955
956 .metasync-dashboard-wrap input[type="text"]:focus,
957 .metasync-dashboard-wrap input[type="email"]:focus,
958 .metasync-dashboard-wrap input[type="url"]:focus,
959 .metasync-dashboard-wrap input[type="password"]:focus,
960 .metasync-dashboard-wrap input[type="number"]:focus,
961 .metasync-dashboard-wrap textarea:focus,
962 .metasync-dashboard-wrap select:focus {
963 background: rgba(255, 255, 255, 0.1);
964 border-color: var(--dashboard-accent);
965 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
966 outline: none;
967 }
968
969 .metasync-dashboard-wrap input[type="text"]::placeholder,
970 .metasync-dashboard-wrap input[type="email"]::placeholder,
971 .metasync-dashboard-wrap input[type="url"]::placeholder,
972 .metasync-dashboard-wrap input[type="password"]::placeholder,
973 .metasync-dashboard-wrap textarea::placeholder {
974 color: var(--dashboard-text-secondary);
975 }
976
977 /* Description Text - ONLY in plugin pages */
978 .metasync-dashboard-wrap .description,
979 .metasync-dashboard-wrap p.description {
980 color: var(--dashboard-text-secondary);
981 font-size: 13px;
982 line-height: 1.5;
983 margin-top: 8px;
984 margin-bottom: 0;
985 }
986
987 /* Checkboxes and Radio Buttons - ONLY in plugin pages */
988 .metasync-dashboard-wrap input[type="checkbox"],
989 .metasync-dashboard-wrap input[type="radio"] {
990 width: 18px;
991 height: 18px;
992 accent-color: var(--dashboard-accent);
993 margin-right: 8px;
994 }
995
996 /* Buttons - ONLY in plugin pages */
997 .metasync-dashboard-wrap .button,
998 .metasync-dashboard-wrap .button-primary,
999 .metasync-dashboard-wrap .button-secondary {
1000 background: var(--dashboard-gradient-primary);
1001 border: none;
1002 border-radius: 8px;
1003 color: #ffffff;
1004 cursor: pointer;
1005 font-weight: 500;
1006 padding: 12px 24px;
1007 text-decoration: none;
1008 transition: all 0.3s ease;
1009 display: inline-flex;
1010 align-items: center;
1011 gap: 8px;
1012 font-size: 14px;
1013 }
1014
1015 .metasync-dashboard-wrap .button .dashicons,
1016 .metasync-dashboard-wrap .button-primary .dashicons,
1017 .metasync-dashboard-wrap .button-secondary .dashicons {
1018 font-size: 15px !important;
1019 width: 15px !important;
1020 height: 15px !important;
1021 line-height: 15px !important;
1022 margin: 0 !important;
1023 vertical-align: middle;
1024 }
1025
1026 .metasync-dashboard-wrap .button:hover:not(:disabled):not([disabled]),
1027 .metasync-dashboard-wrap .button-primary:hover:not(:disabled):not([disabled]) {
1028 background: var(--dashboard-gradient-accent);
1029 transform: translateY(-1px);
1030 box-shadow: var(--dashboard-shadow);
1031 }
1032
1033 /* Disabled state — needed because the base .button-primary rule keeps the
1034 full gradient even when prop('disabled', true) is set. Without this,
1035 the Sync Now button stays blue/purple while the cooldown countdown is
1036 active (QA report).
1037
1038 The .is-throttled class is the primary driver for the Sync Now cooldown
1039 visual because earlier code in the AJAX callback chain calls
1040 .prop('disabled', false) before our refresh runs, and in some browsers
1041 that ordering can leave the disabled attribute off even though we set
1042 it again afterwards. The class-based path doesn't depend on the
1043 disabled attribute reaching the DOM and survives any prop juggling. */
1044 .metasync-dashboard-wrap .button:disabled,
1045 .metasync-dashboard-wrap .button-primary:disabled,
1046 .metasync-dashboard-wrap .button-secondary:disabled,
1047 .metasync-dashboard-wrap .button[disabled],
1048 .metasync-dashboard-wrap .button-primary[disabled],
1049 .metasync-dashboard-wrap .button-secondary[disabled],
1050 .metasync-dashboard-wrap .button.is-throttled,
1051 .metasync-dashboard-wrap .button-primary.is-throttled,
1052 .metasync-dashboard-wrap .button-secondary.is-throttled {
1053 /* Replace the blue/purple gradient with a solid grey. The base rule sets
1054 `background: var(--dashboard-gradient-primary)`, so opacity + grayscale
1055 alone left the button a dimmed blue (QA: "still blue on Elementor").
1056 background/filter/pointer-events carry !important so a page-builder's
1057 admin stylesheet (Elementor ships more than Divi) can't override them. */
1058 background: #d5d7da !important;
1059 background-image: none !important;
1060 color: #6b7280 !important;
1061 opacity: 0.7 !important;
1062 cursor: not-allowed !important;
1063 transform: none !important;
1064 box-shadow: none !important;
1065 filter: grayscale(100%) !important;
1066 pointer-events: none !important;
1067 }
1068
1069 .metasync-dashboard-wrap .button-secondary {
1070 background: transparent;
1071 border: 1px solid var(--dashboard-border);
1072 color: var(--dashboard-text-secondary);
1073 }
1074
1075 .metasync-dashboard-wrap .button-secondary:hover {
1076 background: var(--dashboard-card-hover);
1077 color: var(--dashboard-text-primary);
1078 border-color: var(--dashboard-accent);
1079 }
1080
1081 /* Status Messages - ONLY in plugin pages */
1082 .metasync-dashboard-wrap .notice {
1083 background: var(--dashboard-card-bg);
1084 border: none;
1085 border-left: 4px solid var(--dashboard-accent);
1086 border-radius: 8px;
1087 color: var(--dashboard-text-primary);
1088 margin: 16px 0;
1089 padding: 16px 20px;
1090 box-shadow: var(--dashboard-shadow);
1091 }
1092
1093 .metasync-dashboard-wrap .notice-success {
1094 border-left-color: var(--dashboard-success);
1095 background: rgba(16, 185, 129, 0.1);
1096 }
1097
1098 .metasync-dashboard-wrap .notice-warning {
1099 border-left-color: var(--dashboard-warning);
1100 background: rgba(245, 158, 11, 0.1);
1101 }
1102
1103 .metasync-dashboard-wrap .notice-error {
1104 border-left-color: var(--dashboard-error);
1105 background: rgba(239, 68, 68, 0.1);
1106 }
1107
1108 /* Dashboard Stats Cards - ONLY in plugin pages */
1109 .metasync-dashboard-wrap .dashboard-stats {
1110 display: grid;
1111 grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1112 gap: 20px;
1113 margin-bottom: 32px;
1114 }
1115
1116 .metasync-dashboard-wrap .dashboard-stat-card {
1117 background: var(--dashboard-card-bg);
1118 border: 1px solid var(--dashboard-border);
1119 border-radius: 16px;
1120 padding: 24px 20px;
1121 text-align: center;
1122 transition: all 0.3s ease;
1123 position: relative;
1124 overflow: hidden;
1125 min-height: 120px;
1126 display: flex;
1127 flex-direction: column;
1128 justify-content: center;
1129 align-items: center;
1130 }
1131
1132 /* Dashboard stat card top bar - DISABLED to prevent black subsections */
1133 /* .metasync-dashboard-wrap .dashboard-stat-card::before {
1134 content: '';
1135 position: absolute;
1136 top: 0;
1137 left: 0;
1138 right: 0;
1139 height: 4px;
1140 background: var(--dashboard-gradient-primary);
1141 } */
1142
1143 .metasync-dashboard-wrap .dashboard-stat-card:hover {
1144 /* Removed translateY animation - was too distracting */
1145 box-shadow: var(--dashboard-shadow-hover);
1146 }
1147
1148 .metasync-dashboard-wrap .dashboard-stat-value {
1149 font-size: 1.8rem;
1150 font-weight: 700;
1151 color: var(--dashboard-text-primary);
1152 margin-bottom: 8px;
1153 line-height: 1.2;
1154 word-break: break-word;
1155 hyphens: auto;
1156 max-width: 100%;
1157 overflow: hidden;
1158 text-overflow: ellipsis;
1159 white-space: nowrap;
1160 }
1161
1162 /* Special styling for emoji values - ONLY in plugin pages */
1163 .metasync-dashboard-wrap .dashboard-stat-value:not(:has(text)) {
1164 font-size: 2.5rem;
1165 white-space: normal;
1166 }
1167
1168 .metasync-dashboard-wrap .dashboard-stat-label {
1169 color: var(--dashboard-text-secondary);
1170 font-size: 12px;
1171 font-weight: 500;
1172 text-transform: uppercase;
1173 letter-spacing: 0.5px;
1174 line-height: 1.3;
1175 word-break: break-word;
1176 hyphens: auto;
1177 }
1178
1179 /* Progress Bars - ONLY in plugin pages */
1180 .metasync-dashboard-wrap .dashboard-progress {
1181 background: rgba(255, 255, 255, 0.1);
1182 border-radius: 10px;
1183 height: 8px;
1184 overflow: hidden;
1185 margin: 12px 0;
1186 }
1187
1188 .metasync-dashboard-wrap .dashboard-progress-bar {
1189 background: var(--dashboard-accent);
1190 height: 100%;
1191 border-radius: 10px;
1192 transition: width 0.3s ease;
1193 position: relative;
1194 }
1195
1196 .metasync-dashboard-wrap .dashboard-progress-bar::after {
1197 content: '';
1198 position: absolute;
1199 top: 0;
1200 left: 0;
1201 bottom: 0;
1202 right: 0;
1203 background-image: linear-gradient(
1204 -45deg,
1205 rgba(255, 255, 255, 0.2) 25%,
1206 transparent 25%,
1207 transparent 50%,
1208 rgba(255, 255, 255, 0.2) 50%,
1209 rgba(255, 255, 255, 0.2) 75%,
1210 transparent 75%,
1211 transparent
1212 );
1213 background-size: 20px 20px;
1214 /* Animation removed for static progress bars */
1215 }
1216
1217 /* Settings Sections - ONLY in plugin pages */
1218 .metasync-dashboard-wrap .settings-section {
1219 background: var(--dashboard-card-bg);
1220 border: 1px solid var(--dashboard-border);
1221 border-radius: 16px;
1222 padding: 24px;
1223 margin-bottom: 24px;
1224 position: relative;
1225 overflow: hidden;
1226 /* Removed any transitions that might cause animations */
1227 }
1228
1229 /* Settings section top bar - DISABLED to prevent black subsections */
1230 /* .metasync-dashboard-wrap .settings-section::before {
1231 content: '';
1232 position: absolute;
1233 top: 0;
1234 left: 0;
1235 right: 0;
1236 height: 3px;
1237 background: var(--dashboard-gradient-primary);
1238 } */
1239
1240 .metasync-dashboard-wrap .settings-section h2 {
1241 margin-top: 0;
1242 margin-bottom: 20px;
1243 color: var(--dashboard-text-primary);
1244 font-size: 1.5rem;
1245 font-weight: 600;
1246 }
1247
1248 /* Search Atlas Connect Container - Dashboard Style */
1249 .metasync-dashboard-wrap .metasync-sa-connect-container {
1250 background: var(--dashboard-card-bg);
1251 border: 1px solid var(--dashboard-border);
1252 border-radius: 16px;
1253 padding: 24px;
1254 margin-top: 20px;
1255 box-shadow: var(--dashboard-shadow);
1256 backdrop-filter: blur(10px);
1257 transition: all 0.3s ease;
1258 }
1259
1260 .metasync-dashboard-wrap .metasync-sa-connect-container:hover {
1261 background: var(--dashboard-card-hover);
1262 box-shadow: var(--dashboard-shadow-hover);
1263 /* Removed translateY animation - was too distracting */
1264 }
1265
1266 .metasync-dashboard-wrap .metasync-sa-connect-title {
1267 color: var(--dashboard-text-primary);
1268 font-size: 1.25rem;
1269 font-weight: 600;
1270 margin: 0 0 16px 0;
1271 display: flex;
1272 align-items: center;
1273 gap: 8px;
1274 }
1275
1276 .metasync-dashboard-wrap .metasync-sa-connect-description {
1277 color: var(--dashboard-text-secondary);
1278 margin-bottom: 20px;
1279 line-height: 1.6;
1280 font-size: 14px;
1281 }
1282
1283 /* Connect Buttons Container - Dashboard Style */
1284 .metasync-dashboard-wrap .metasync-sa-connect-buttons {
1285 display: flex;
1286 gap: 12px;
1287 flex-wrap: wrap;
1288 align-items: center;
1289 }
1290
1291 .metasync-dashboard-wrap .metasync-sa-connect-btn,
1292 .metasync-dashboard-wrap #connect-searchatlas-btn {
1293 background: var(--dashboard-gradient-primary);
1294 border: none;
1295 border-radius: 8px;
1296 color: #ffffff;
1297 padding: 12px 24px;
1298 font-weight: 500;
1299 cursor: pointer;
1300 transition: all 0.3s ease;
1301 display: inline-flex;
1302 align-items: center;
1303 gap: 8px;
1304 font-size: 14px;
1305 box-shadow: var(--dashboard-shadow);
1306 }
1307
1308 .metasync-dashboard-wrap .metasync-sa-connect-btn:hover:not(:disabled),
1309 .metasync-dashboard-wrap #connect-searchatlas-btn:hover:not(:disabled) {
1310 background: var(--dashboard-gradient-accent);
1311 transform: translateY(-2px);
1312 box-shadow: var(--dashboard-shadow-hover);
1313 }
1314
1315 .metasync-dashboard-wrap .metasync-sa-connect-btn:disabled,
1316 .metasync-dashboard-wrap #connect-searchatlas-btn:disabled {
1317 opacity: 0.7;
1318 cursor: not-allowed;
1319 transform: none;
1320 background: var(--dashboard-accent);
1321 }
1322
1323 .metasync-dashboard-wrap .metasync-sa-reset-btn,
1324 .metasync-dashboard-wrap #reset-searchatlas-auth {
1325 background: transparent;
1326 border: 1px solid var(--dashboard-border);
1327 border-radius: 8px;
1328 color: var(--dashboard-text-secondary);
1329 padding: 12px 24px;
1330 font-weight: 500;
1331 cursor: pointer;
1332 transition: all 0.3s ease;
1333 display: inline-flex;
1334 align-items: center;
1335 gap: 8px;
1336 font-size: 14px;
1337 }
1338
1339 .metasync-dashboard-wrap .metasync-sa-reset-btn:hover:not(:disabled),
1340 .metasync-dashboard-wrap #reset-searchatlas-auth:hover:not(:disabled) {
1341 background: var(--dashboard-card-hover);
1342 color: var(--dashboard-text-primary);
1343 border-color: var(--dashboard-error);
1344 /* Removed translateY animation - was too distracting */
1345 }
1346
1347 /* Connect Status Messages - Dashboard Style */
1348 .metasync-dashboard-wrap .metasync-sa-connect-status,
1349 .metasync-dashboard-wrap #sa-connect-status-message {
1350 margin-top: 16px;
1351 padding: 16px 20px;
1352 border-radius: 12px;
1353 display: flex;
1354 align-items: flex-start;
1355 gap: 12px;
1356 font-weight: 500;
1357 /* Removed slideInNotice animation - was too distracting */
1358 backdrop-filter: blur(10px);
1359 border: 1px solid;
1360 box-shadow: var(--dashboard-shadow);
1361 }
1362
1363 .metasync-dashboard-wrap .metasync-sa-connect-status.success,
1364 .metasync-dashboard-wrap #sa-connect-status-message.success {
1365 background: rgba(16, 185, 129, 0.15);
1366 border-color: rgba(16, 185, 129, 0.3);
1367 color: var(--dashboard-success);
1368 }
1369
1370 .metasync-dashboard-wrap .metasync-sa-connect-status.error,
1371 .metasync-dashboard-wrap #sa-connect-status-message.error {
1372 background: rgba(239, 68, 68, 0.15);
1373 border-color: rgba(239, 68, 68, 0.3);
1374 color: var(--dashboard-error);
1375 }
1376
1377 .metasync-dashboard-wrap .metasync-sa-connect-status.info,
1378 .metasync-dashboard-wrap #sa-connect-status-message.info {
1379 background: rgba(59, 130, 246, 0.15);
1380 border-color: rgba(59, 130, 246, 0.3);
1381 color: var(--dashboard-accent);
1382 }
1383
1384 .metasync-dashboard-wrap .metasync-sa-connect-status.warning,
1385 .metasync-dashboard-wrap #sa-connect-status-message.warning {
1386 background: rgba(245, 158, 11, 0.15);
1387 border-color: rgba(245, 158, 11, 0.3);
1388 color: var(--dashboard-warning);
1389 }
1390
1391 /* Connect Progress Indicator - Dashboard Style */
1392 .metasync-dashboard-wrap .metasync-sa-connect-progress {
1393 margin-top: 16px;
1394 padding: 16px 20px;
1395 background: rgba(59, 130, 246, 0.1);
1396 border: 1px solid rgba(59, 130, 246, 0.2);
1397 border-radius: 12px;
1398 backdrop-filter: blur(10px);
1399 }
1400
1401 .metasync-dashboard-wrap .metasync-sa-connect-progress-header {
1402 display: flex;
1403 justify-content: space-between;
1404 align-items: center;
1405 margin-bottom: 12px;
1406 font-size: 14px;
1407 font-weight: 500;
1408 color: var(--dashboard-text-primary);
1409 }
1410
1411 .metasync-dashboard-wrap .metasync-sa-connect-progress-time {
1412 color: var(--dashboard-text-secondary);
1413 font-size: 12px;
1414 font-weight: normal;
1415 }
1416
1417 .metasync-dashboard-wrap .metasync-sa-connect-progress-bar {
1418 width: 100%;
1419 height: 8px;
1420 background: rgba(255, 255, 255, 0.1);
1421 border-radius: 4px;
1422 overflow: hidden;
1423 margin: 8px 0;
1424 }
1425
1426 .metasync-dashboard-wrap .metasync-sa-connect-progress-fill {
1427 height: 100%;
1428 background: var(--dashboard-accent);
1429 width: 0%;
1430 transition: width 0.3s ease;
1431 border-radius: 4px;
1432 position: relative;
1433 overflow: hidden;
1434 }
1435
1436 .metasync-dashboard-wrap .metasync-sa-connect-progress-fill::after {
1437 content: '';
1438 position: absolute;
1439 top: 0;
1440 left: 0;
1441 bottom: 0;
1442 right: 0;
1443 background-image: linear-gradient(
1444 -45deg,
1445 rgba(255, 255, 255, 0.2) 25%,
1446 transparent 25%,
1447 transparent 50%,
1448 rgba(255, 255, 255, 0.2) 50%,
1449 rgba(255, 255, 255, 0.2) 75%,
1450 transparent 75%,
1451 transparent
1452 );
1453 background-size: 20px 20px;
1454 /* Animation removed for static progress bars */
1455 }
1456
1457 .metasync-dashboard-wrap .metasync-sa-connect-progress-text {
1458 margin-top: 8px;
1459 color: var(--dashboard-text-secondary);
1460 font-size: 13px;
1461 font-style: italic;
1462 text-align: center;
1463 }
1464
1465 /* Connect Loading States */
1466 .metasync-dashboard-wrap .metasync-sa-connect-loading {
1467 display: inline-block;
1468 width: 16px;
1469 height: 16px;
1470 border: 2px solid rgba(255, 255, 255, 0.3);
1471 border-top: 2px solid var(--dashboard-text-primary);
1472 border-radius: 50%;
1473 animation: spin 1s linear infinite;
1474 vertical-align: middle;
1475 margin-right: 8px;
1476 position: static; /* Keep in normal document flow */
1477 }
1478
1479 /* Authentication Tips Section - Style existing PHP details element */
1480 .metasync-dashboard-wrap .metasync-sa-connect-tips,
1481 .metasync-dashboard-wrap details.metasync-sa-connect-tips {
1482 margin-top: 16px;
1483 padding: 0;
1484 border: none;
1485 background: transparent;
1486 }
1487
1488 .metasync-dashboard-wrap .metasync-sa-connect-tips-toggle,
1489 .metasync-dashboard-wrap details.metasync-sa-connect-tips summary {
1490 background: transparent;
1491 border: none;
1492 color: var(--dashboard-text-secondary) !important;
1493 cursor: pointer;
1494 display: flex;
1495 align-items: center;
1496 gap: 8px;
1497 font-size: 14px !important;
1498 padding: 8px 0;
1499 width: 100%;
1500 text-align: left;
1501 transition: color 0.3s ease;
1502 list-style: none;
1503 outline: none;
1504 }
1505
1506 .metasync-dashboard-wrap .metasync-sa-connect-tips-toggle:hover,
1507 .metasync-dashboard-wrap details.metasync-sa-connect-tips summary:hover {
1508 color: var(--dashboard-text-primary) !important;
1509 }
1510
1511 .metasync-dashboard-wrap .metasync-sa-connect-tips-content,
1512 .metasync-dashboard-wrap details.metasync-sa-connect-tips > div {
1513 margin-top: 12px;
1514 padding: 16px;
1515 background: rgba(255, 255, 255, 0.05);
1516 border-radius: 8px;
1517 border: 1px solid var(--dashboard-border);
1518 font-size: 14px;
1519 line-height: 1.6;
1520 color: var(--dashboard-text-secondary) !important;
1521 }
1522
1523 /* Remove default details styling */
1524 .metasync-dashboard-wrap details.metasync-sa-connect-tips summary::-webkit-details-marker {
1525 display: none;
1526 }
1527
1528 .metasync-dashboard-wrap details.metasync-sa-connect-tips summary::marker {
1529 display: none;
1530 content: '';
1531 }
1532
1533 /* Ensure content is hidden when details is closed */
1534 .metasync-dashboard-wrap details.metasync-sa-connect-tips:not([open]) > div {
1535 display: none;
1536 }
1537
1538 /* Dashboard button styling for header actions */
1539 .metasync-dashboard-wrap .metasync-header-actions {
1540 display: flex;
1541 align-items: center;
1542 gap: 12px;
1543 }
1544
1545 .metasync-dashboard-wrap .metasync-dashboard-btn {
1546 background: var(--dashboard-gradient-primary);
1547 color: #ffffff;
1548 text-decoration: none;
1549 padding: 8px 16px;
1550 border-radius: 8px;
1551 font-size: 13px;
1552 font-weight: 500;
1553 transition: all 0.3s ease;
1554 display: inline-flex;
1555 align-items: center;
1556 gap: 6px;
1557 border: none;
1558 }
1559
1560 .metasync-dashboard-wrap .metasync-dashboard-btn:hover {
1561 background: var(--dashboard-gradient-accent);
1562 transform: translateY(-1px);
1563 box-shadow: var(--dashboard-shadow);
1564 color: #ffffff;
1565 text-decoration: none;
1566 }
1567
1568 /* Connect Action Buttons (existing and new) */
1569 .metasync-dashboard-wrap .metasync-sa-connect-retry-btn,
1570 .metasync-dashboard-wrap .metasync-sa-connect-btn {
1571 background: var(--dashboard-accent);
1572 border: none;
1573 border-radius: 8px;
1574 color: var(--dashboard-text-primary);
1575 padding: 10px 20px;
1576 font-weight: 500;
1577 cursor: pointer;
1578 transition: all 0.3s ease;
1579 display: inline-flex;
1580 align-items: center;
1581 gap: 8px;
1582 font-size: 14px;
1583 margin: 4px 8px 4px 0;
1584 }
1585
1586 .metasync-dashboard-wrap .metasync-sa-connect-retry-btn:hover,
1587 .metasync-dashboard-wrap .metasync-sa-connect-btn:hover {
1588 background: var(--dashboard-accent-hover);
1589 transform: translateY(-1px);
1590 box-shadow: var(--dashboard-shadow);
1591 }
1592
1593 .metasync-dashboard-wrap .metasync-sa-connect-btn.primary {
1594 background: var(--dashboard-gradient-primary);
1595 color: #ffffff;
1596 }
1597
1598 .metasync-dashboard-wrap .metasync-sa-connect-btn.secondary {
1599 background: transparent;
1600 border: 1px solid var(--dashboard-border);
1601 color: var(--dashboard-text-secondary);
1602 }
1603
1604 .metasync-dashboard-wrap .metasync-sa-connect-btn.secondary:hover {
1605 background: var(--dashboard-card-hover);
1606 color: var(--dashboard-text-primary);
1607 border-color: var(--dashboard-accent);
1608 }
1609
1610 /* Connect Status Message Content */
1611 .metasync-dashboard-wrap .metasync-sa-connect-status-content {
1612 flex: 1;
1613 }
1614
1615 .metasync-dashboard-wrap .metasync-sa-connect-status-title {
1616 font-weight: 600;
1617 font-size: 15px;
1618 margin-bottom: 8px;
1619 display: flex;
1620 align-items: center;
1621 gap: 8px;
1622 }
1623
1624 .metasync-dashboard-wrap .metasync-sa-connect-status-message {
1625 font-size: 14px;
1626 line-height: 1.5;
1627 opacity: 0.9;
1628 margin-bottom: 12px;
1629 }
1630
1631 /* Existing Connect Actions Container */
1632 .metasync-dashboard-wrap .metasync-sa-connect-actions {
1633 margin-top: 16px;
1634 display: flex;
1635 gap: 12px;
1636 flex-wrap: wrap;
1637 align-items: center;
1638 }
1639
1640 /* Connect Button States */
1641 .metasync-dashboard-wrap #connect-searchatlas-btn.connecting {
1642 background: linear-gradient(135deg, #f39c12 0%, #e67e22 100%);
1643 }
1644
1645 .metasync-dashboard-wrap #connect-searchatlas-btn.authenticating {
1646 background: linear-gradient(135deg, #3498db 0%, #2980b9 100%);
1647 }
1648
1649 .metasync-dashboard-wrap #connect-searchatlas-btn.success {
1650 background: linear-gradient(135deg, #27ae60 0%, #229954 100%);
1651 }
1652
1653 /* Theme Toggle Mobile Adjustments */
1654 @media (max-width: 768px) {
1655 .metasync-theme-toggle {
1656 order: -1;
1657 margin-bottom: 12px;
1658 }
1659
1660 .metasync-dashboard-wrap .metasync-header-right {
1661 flex-direction: column;
1662 align-items: stretch;
1663 gap: 8px;
1664 width: 100%;
1665 }
1666
1667 .metasync-theme-toggle {
1668 width: fit-content;
1669 align-self: center;
1670 }
1671 }
1672
1673 /* Mobile Connect Adjustments */
1674 @media (max-width: 768px) {
1675 .metasync-dashboard-wrap .metasync-sa-connect-container {
1676 padding: 20px 16px;
1677 margin-top: 16px;
1678 border-radius: 12px;
1679 }
1680
1681 .metasync-dashboard-wrap .metasync-sa-connect-buttons {
1682 flex-direction: column;
1683 align-items: stretch;
1684 gap: 8px;
1685 }
1686
1687 .metasync-dashboard-wrap .metasync-sa-connect-btn,
1688 .metasync-dashboard-wrap #connect-searchatlas-btn,
1689 .metasync-dashboard-wrap .metasync-sa-reset-btn,
1690 .metasync-dashboard-wrap #reset-searchatlas-auth {
1691 width: 100%;
1692 justify-content: center;
1693 padding: 14px 20px;
1694 font-size: 15px;
1695 }
1696
1697 .metasync-dashboard-wrap .metasync-sa-connect-progress {
1698 padding: 16px;
1699 margin-top: 12px;
1700 }
1701
1702 .metasync-dashboard-wrap .metasync-sa-connect-progress-header {
1703 flex-direction: column;
1704 align-items: flex-start;
1705 gap: 6px;
1706 font-size: 13px;
1707 }
1708
1709 .metasync-dashboard-wrap .metasync-sa-connect-status {
1710 padding: 16px;
1711 margin-top: 12px;
1712 flex-direction: column;
1713 align-items: flex-start;
1714 gap: 8px;
1715 }
1716
1717 .metasync-dashboard-wrap .metasync-sa-connect-status-title {
1718 font-size: 16px;
1719 }
1720 }
1721
1722 /* NO GLOBAL LAYOUT CHANGES - removed problematic positioning */
1723
1724 /* Improve stat card text handling - ONLY in plugin pages */
1725 .metasync-dashboard-wrap .dashboard-stat-value {
1726 display: block;
1727 max-width: 100%;
1728 overflow: visible;
1729 white-space: normal;
1730 word-wrap: break-word;
1731 text-overflow: clip;
1732 }
1733
1734 /* Long text handling for theme names - ONLY in plugin pages */
1735 .metasync-dashboard-wrap .dashboard-stat-card:nth-child(3) .dashboard-stat-value {
1736 font-size: 1.2rem;
1737 line-height: 1.3;
1738 text-align: center;
1739 display: -webkit-box;
1740 -webkit-line-clamp: 2;
1741 -webkit-box-orient: vertical;
1742 overflow: hidden;
1743 text-overflow: ellipsis;
1744 max-height: 2.6em;
1745 }
1746
1747 /* Responsive Design - ONLY in plugin pages */
1748 @media (max-width: 1200px) {
1749 .metasync-dashboard-wrap .dashboard-stats {
1750 grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
1751 gap: 16px;
1752 }
1753
1754 .metasync-dashboard-wrap {
1755 padding: 20px 30px; /* Reduced lateral padding for tablets */
1756 }
1757 }
1758
1759 @media (max-width: 768px) {
1760 .metasync-dashboard-wrap {
1761 /* Proper mobile padding with lateral spacing */
1762 padding: 15px 20px;
1763 }
1764
1765 /* Mobile header adjustments */
1766 .metasync-dashboard-wrap .metasync-header {
1767 flex-direction: column;
1768 align-items: center;
1769 gap: 16px;
1770 text-align: center;
1771 padding: 16px 0;
1772 }
1773
1774 .metasync-dashboard-wrap .metasync-header-left {
1775 display: flex;
1776 align-items: center;
1777 justify-content: center;
1778 width: 100%;
1779 }
1780
1781 .metasync-dashboard-wrap .metasync-header-right {
1782 order: -1;
1783 width: 100%;
1784 display: flex;
1785 justify-content: center;
1786 }
1787
1788 .metasync-dashboard-wrap .metasync-header-actions {
1789 flex-direction: column;
1790 gap: 8px;
1791 align-items: center;
1792 width: 100%;
1793 }
1794
1795 .metasync-dashboard-wrap .metasync-dashboard-btn {
1796 padding: 10px 16px;
1797 font-size: 14px;
1798 }
1799
1800 .metasync-dashboard-wrap .metasync-logo {
1801 height: 40px;
1802 max-width: 160px;
1803 }
1804
1805 .metasync-dashboard-wrap .metasync-integration-status {
1806 font-size: 11px;
1807 padding: 6px 12px;
1808 }
1809
1810 /* Mobile page title adjustments */
1811 .metasync-dashboard-wrap .metasync-page-title {
1812 text-align: center;
1813 margin-bottom: 1.5rem;
1814 }
1815
1816 .metasync-dashboard-wrap .metasync-page-title h1 {
1817 font-size: 2rem;
1818 text-align: center;
1819 }
1820
1821 /* Mobile navigation adjustments */
1822 .metasync-dashboard-wrap .metasync-nav-tabs {
1823 flex-direction: column;
1824 gap: 2px;
1825 }
1826
1827 .metasync-dashboard-wrap .metasync-nav-tab {
1828 justify-content: center;
1829 padding: 12px 16px;
1830 }
1831
1832 /* Grouped navigation mobile adjustments */
1833 .metasync-dashboard-wrap .metasync-nav-grouped {
1834 flex-direction: column;
1835 gap: 8px;
1836 }
1837
1838 .metasync-dashboard-wrap .metasync-nav-dropdown {
1839 width: 100%;
1840 }
1841
1842 .metasync-dashboard-wrap .metasync-nav-dropdown-btn {
1843 width: 100%;
1844 justify-content: space-between;
1845 }
1846
1847 .metasync-dashboard-wrap .metasync-nav-dropdown-menu {
1848 position: static;
1849 opacity: 1;
1850 visibility: visible;
1851 transform: none;
1852 box-shadow: none;
1853 border: 1px solid var(--dashboard-border);
1854 margin-top: 8px;
1855 display: none;
1856 }
1857
1858 .metasync-dashboard-wrap .metasync-nav-dropdown.active .metasync-nav-dropdown-menu {
1859 display: block;
1860 }
1861
1862 .metasync-dashboard-wrap .metasync-nav-dropdown-item {
1863 padding: 12px 16px;
1864 }
1865
1866 .metasync-dashboard-wrap .metasync-nav-grouped .metasync-nav-right {
1867 border-left: none;
1868 border-top: 1px solid var(--dashboard-border);
1869 padding-left: 0;
1870 padding-top: 12px;
1871 margin-left: 0;
1872 justify-content: center;
1873 width: 100%;
1874 }
1875
1876 .metasync-dashboard-wrap .nav-tab-wrapper {
1877 flex-direction: column !important;
1878 gap: 8px !important;
1879 }
1880
1881 .metasync-dashboard-wrap .nav-tab {
1882 width: 100% !important;
1883 text-align: center !important;
1884 }
1885
1886 .metasync-dashboard-wrap .dashboard-stats {
1887 grid-template-columns: 1fr;
1888 gap: 16px;
1889 }
1890
1891 .metasync-dashboard-wrap .dashboard-stat-card {
1892 min-height: 100px;
1893 padding: 20px 16px;
1894 }
1895
1896 .metasync-dashboard-wrap .dashboard-stat-value {
1897 font-size: 1.6rem;
1898 }
1899
1900 .metasync-dashboard-wrap .form-table th,
1901 .metasync-dashboard-wrap .form-table td {
1902 display: block;
1903 width: 100%;
1904 border-radius: 12px;
1905 border: 1px solid var(--dashboard-border);
1906 margin-bottom: 8px;
1907 }
1908
1909 .metasync-dashboard-wrap .form-table th {
1910 margin-bottom: 4px;
1911 }
1912
1913 .metasync-dashboard-wrap .metasync-sa-connect-buttons {
1914 flex-direction: column;
1915 align-items: stretch;
1916 }
1917
1918 .metasync-dashboard-wrap .metasync-sa-connect-btn,
1919 .metasync-dashboard-wrap .metasync-sa-reset-btn,
1920 .metasync-dashboard-wrap #connect-searchatlas-btn,
1921 .metasync-dashboard-wrap #reset-searchatlas-auth {
1922 width: 100%;
1923 justify-content: center;
1924 margin: 0 !important;
1925 }
1926 }
1927
1928 /* Loading States - ONLY in plugin pages */
1929 .metasync-dashboard-wrap .dashboard-loading {
1930 position: relative;
1931 opacity: 0.6;
1932 }
1933
1934 .metasync-dashboard-wrap .dashboard-loading::after {
1935 content: '';
1936 position: absolute;
1937 top: 50%;
1938 left: 50%;
1939 width: 24px;
1940 height: 24px;
1941 border: 3px solid rgba(255, 255, 255, 0.2);
1942 border-top-color: var(--dashboard-accent);
1943 border-radius: 50%;
1944 animation: spin 1s linear infinite;
1945 transform: translate(-50%, -50%);
1946 }
1947
1948 @keyframes spin {
1949 0% { transform: rotate(0deg); }
1950 100% { transform: rotate(360deg); }
1951 }
1952
1953 /* Ensure perfect centering for all spinning elements */
1954 .metasync-dashboard-wrap .spinner,
1955 .metasync-dashboard-wrap .metasync-loading-spinner {
1956 display: block;
1957 margin: 0 auto;
1958 position: relative;
1959 }
1960
1961 /* Center spinners within buttons */
1962 .metasync-dashboard-wrap .button .metasync-sa-connect-loading,
1963 .metasync-dashboard-wrap button .metasync-sa-connect-loading {
1964 vertical-align: middle;
1965 margin-right: 6px;
1966 margin-left: 0;
1967 position: static; /* Important: keep in button text flow */
1968 display: inline-block;
1969 }
1970
1971 /* Loading states - general styling */
1972 .metasync-dashboard-wrap .dashboard-loading {
1973 position: relative;
1974 opacity: 0.6;
1975 }
1976
1977 /* Override for buttons - keep normal layout, don't use flex */
1978 .metasync-dashboard-wrap .button.dashboard-loading,
1979 .metasync-dashboard-wrap button.dashboard-loading {
1980 position: relative;
1981 opacity: 0.6;
1982 /* Remove flex - let button content flow naturally */
1983 }
1984
1985 /* Spinner for general loading overlay (not buttons) */
1986 .metasync-dashboard-wrap .dashboard-loading::after {
1987 content: '';
1988 position: absolute;
1989 top: 50%;
1990 left: 50%;
1991 width: 20px;
1992 height: 20px;
1993 border: 2px solid rgba(255, 255, 255, 0.3);
1994 border-top-color: var(--dashboard-accent);
1995 border-radius: 50%;
1996 animation: spin 1s linear infinite;
1997 transform: translate(-50%, -50%);
1998 z-index: 1;
1999 }
2000
2001 /* Don't show overlay spinner on buttons with inline spinners */
2002 .metasync-dashboard-wrap .button.dashboard-loading::after,
2003 .metasync-dashboard-wrap button.dashboard-loading::after {
2004 display: none;
2005 }
2006
2007 /* Center spinning tab icons */
2008 .metasync-dashboard-wrap .metasync-nav-tab .tab-icon {
2009 display: inline-flex;
2010 align-items: center;
2011 justify-content: center;
2012 min-width: 20px;
2013 vertical-align: middle;
2014 }
2015
2016 /* Ensure spinners stay inline in their context */
2017 .metasync-dashboard-wrap .metasync-sa-connect-loading {
2018 /* Force inline positioning - never absolute */
2019 position: static !important;
2020 display: inline-block !important;
2021 vertical-align: middle !important;
2022 transform: none !important; /* Don't translate position */
2023 }
2024
2025 /* Only center text in containers, not the spinners themselves */
2026 .metasync-dashboard-wrap .loading-container {
2027 text-align: center;
2028 }
2029
2030 /* Tooltips - ONLY in plugin pages */
2031 .metasync-dashboard-wrap .dashboard-tooltip {
2032 position: relative;
2033 cursor: help;
2034 display: inline-block;
2035 }
2036
2037 .metasync-dashboard-wrap .dashboard-tooltip:hover::after {
2038 content: attr(data-tooltip);
2039 position: absolute;
2040 bottom: 125%;
2041 left: 50%;
2042 transform: translateX(-50%);
2043 background: var(--dashboard-card-bg);
2044 color: var(--dashboard-text-primary);
2045 padding: 8px 12px;
2046 border-radius: 6px;
2047 font-size: 12px;
2048 white-space: nowrap;
2049 box-shadow: var(--dashboard-shadow);
2050 z-index: 1000;
2051 border: 1px solid var(--dashboard-border);
2052 }
2053
2054 /* Custom Scrollbar - ONLY in plugin pages */
2055 .metasync-dashboard-wrap ::-webkit-scrollbar {
2056 width: 8px;
2057 }
2058
2059 .metasync-dashboard-wrap ::-webkit-scrollbar-track {
2060 background: var(--dashboard-bg);
2061 }
2062
2063 .metasync-dashboard-wrap ::-webkit-scrollbar-thumb {
2064 background: var(--dashboard-border);
2065 border-radius: 4px;
2066 }
2067
2068 .metasync-dashboard-wrap ::-webkit-scrollbar-thumb:hover {
2069 background: var(--dashboard-accent);
2070 }
2071
2072 /* WordPress elements - ONLY in plugin pages */
2073 .metasync-dashboard-wrap select,
2074 .metasync-dashboard-wrap input[type="text"],
2075 .metasync-dashboard-wrap input[type="email"],
2076 .metasync-dashboard-wrap input[type="url"],
2077 .metasync-dashboard-wrap input[type="password"],
2078 .metasync-dashboard-wrap input[type="number"],
2079 .metasync-dashboard-wrap textarea {
2080 color: var(--dashboard-text-primary);
2081 }
2082
2083 .metasync-dashboard-wrap .form-table th {
2084 color: var(--dashboard-text-primary);
2085 }
2086
2087 .metasync-dashboard-wrap .form-table td p {
2088 color: var(--dashboard-text-secondary);
2089 }
2090
2091 /* Table Styling - ONLY in plugin pages */
2092 .metasync-dashboard-wrap .wp-list-table {
2093 background: var(--dashboard-card-bg);
2094 border: 1px solid var(--dashboard-border);
2095 border-radius: 12px;
2096 overflow: hidden;
2097 }
2098
2099 .metasync-dashboard-wrap .wp-list-table th {
2100 background: rgba(255, 255, 255, 0.05);
2101 color: var(--dashboard-text-primary);
2102 border-bottom: 1px solid var(--dashboard-border);
2103 }
2104
2105 .metasync-dashboard-wrap .wp-list-table td {
2106 background: var(--dashboard-card-bg);
2107 color: var(--dashboard-text-primary);
2108 border-bottom: 1px solid var(--dashboard-border);
2109 }
2110
2111 .metasync-dashboard-wrap .wp-list-table tbody tr:hover {
2112 background: var(--dashboard-card-hover);
2113 }
2114
2115 /* Modern Unsaved Changes Design */
2116 .metasync-dashboard-wrap .has-unsaved-changes {
2117 position: relative;
2118 border: 1px solid rgba(59, 130, 246, 0.3) !important;
2119 border-radius: 12px !important;
2120 background: linear-gradient(135deg, rgba(59, 130, 246, 0.02) 0%, rgba(59, 130, 246, 0.01) 100%) !important;
2121 box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.1), 0 2px 8px rgba(59, 130, 246, 0.05) !important;
2122 transition: all 0.3s ease !important;
2123 }
2124
2125 .metasync-dashboard-wrap .has-unsaved-changes::after {
2126 content: "";
2127 position: absolute;
2128 top: 0;
2129 left: 0;
2130 right: 0;
2131 height: 3px;
2132 background: linear-gradient(90deg, #3b82f6, #8b5cf6, #3b82f6);
2133 background-size: 200% 100%;
2134 border-radius: 12px 12px 0 0;
2135 animation: gradient-shift 3s ease-in-out infinite;
2136 }
2137
2138 @keyframes gradient-shift {
2139 0%, 100% {
2140 background-position: 0% 0%;
2141 opacity: 0.6;
2142 }
2143 50% {
2144 background-position: 100% 0%;
2145 opacity: 0.8;
2146 }
2147 }
2148
2149 /* Unsaved indicator dot - subtle pulse instead of blink */
2150 .metasync-dashboard-wrap .unsaved-indicator {
2151 color: #3b82f6 !important;
2152 font-weight: 600 !important;
2153 animation: subtle-pulse 2s ease-in-out infinite;
2154 display: inline-flex;
2155 align-items: center;
2156 margin-right: 6px;
2157 }
2158
2159 @keyframes subtle-pulse {
2160 0%, 100% {
2161 opacity: 0.7;
2162 transform: scale(1);
2163 }
2164 50% {
2165 opacity: 1;
2166 transform: scale(1.05);
2167 }
2168 }
2169
2170 .metasync-dashboard-wrap .button.button-primary .unsaved-indicator {
2171 color: rgba(255, 255, 255, 0.9) !important;
2172 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
2173 }
2174
2175 /* Enhanced save button styling for unsaved changes */
2176 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary {
2177 background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%) !important;
2178 border: none !important;
2179 color: #ffffff !important;
2180 font-weight: 600 !important;
2181 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3) !important;
2182 transform: translateY(-1px);
2183 transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
2184 position: relative;
2185 overflow: hidden;
2186 }
2187
2188 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary::before {
2189 content: "";
2190 position: absolute;
2191 top: 0;
2192 left: -100%;
2193 width: 100%;
2194 height: 100%;
2195 background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
2196 transition: left 0.6s ease;
2197 }
2198
2199 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary:hover::before {
2200 left: 100%;
2201 }
2202
2203 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary:hover {
2204 background: linear-gradient(135deg, #2563eb 0%, #7c3aed 100%) !important;
2205 transform: translateY(-2px) !important;
2206 box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4) !important;
2207 }
2208
2209 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary:active {
2210 transform: translateY(0) !important;
2211 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3) !important;
2212 }
2213
2214 /* Modern Bottom Notification Bar for Unsaved Changes */
2215 .metasync-unsaved-notification {
2216 position: fixed !important;
2217 bottom: 20px !important;
2218 left: 50% !important;
2219 transform: translateX(-50%) translateY(100%) !important;
2220 max-width: 600px !important;
2221 width: calc(100% - 40px) !important;
2222 background: linear-gradient(135deg, rgba(59, 130, 246, 0.95) 0%, rgba(139, 92, 246, 0.95) 100%) !important;
2223 backdrop-filter: blur(10px) !important;
2224 color: #ffffff !important;
2225 padding: 16px 20px !important;
2226 z-index: 999999 !important;
2227 display: flex !important;
2228 align-items: center !important;
2229 justify-content: space-between !important;
2230 font-weight: 500 !important;
2231 box-shadow: 0 8px 32px rgba(59, 130, 246, 0.25),
2232 0 0 0 1px rgba(255, 255, 255, 0.1) !important;
2233 border: 1px solid rgba(255, 255, 255, 0.2) !important;
2234 border-radius: 12px !important;
2235 transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
2236 box-shadow 0.3s ease !important;
2237 }
2238
2239 .metasync-unsaved-notification::before {
2240 content: "" !important;
2241 position: absolute !important;
2242 inset: -1px !important;
2243 background: linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)) !important;
2244 border-radius: 12px !important;
2245 z-index: -1 !important;
2246 }
2247
2248 .metasync-unsaved-notification.show {
2249 transform: translateX(-50%) translateY(0) !important;
2250 }
2251
2252 .metasync-unsaved-notification:hover {
2253 box-shadow: 0 12px 40px rgba(59, 130, 246, 0.35),
2254 0 0 0 1px rgba(255, 255, 255, 0.15) !important;
2255 }
2256
2257 .metasync-unsaved-notification .notification-content {
2258 display: flex !important;
2259 align-items: center !important;
2260 gap: 12px !important;
2261 }
2262
2263 .metasync-unsaved-notification .notification-icon {
2264 width: 20px !important;
2265 height: 20px !important;
2266 border-radius: 50% !important;
2267 background: rgba(255, 255, 255, 0.2) !important;
2268 display: flex !important;
2269 align-items: center !important;
2270 justify-content: center !important;
2271 font-size: 12px !important;
2272 animation: pulse-icon 2s ease-in-out infinite !important;
2273 }
2274
2275 @keyframes pulse-icon {
2276 0%, 100% {
2277 transform: scale(1);
2278 background: rgba(255, 255, 255, 0.2);
2279 }
2280 50% {
2281 transform: scale(1.1);
2282 background: rgba(255, 255, 255, 0.3);
2283 }
2284 }
2285
2286 .metasync-unsaved-notification .notification-actions {
2287 display: flex !important;
2288 align-items: center !important;
2289 gap: 12px !important;
2290 }
2291
2292 .metasync-unsaved-notification .notification-button {
2293 background: rgba(255, 255, 255, 0.15) !important;
2294 border: 1px solid rgba(255, 255, 255, 0.2) !important;
2295 color: #ffffff !important;
2296 padding: 6px 12px !important;
2297 border-radius: 6px !important;
2298 font-size: 12px !important;
2299 font-weight: 500 !important;
2300 cursor: pointer !important;
2301 transition: all 0.2s ease !important;
2302 text-decoration: none !important;
2303 }
2304
2305 .metasync-unsaved-notification .notification-button:hover {
2306 background: rgba(255, 255, 255, 0.25) !important;
2307 transform: translateY(-1px) !important;
2308 }
2309
2310 .metasync-unsaved-notification .notification-button.primary {
2311 background: rgba(255, 255, 255, 0.9) !important;
2312 color: #3b82f6 !important;
2313 }
2314
2315 .metasync-unsaved-notification .notification-button.primary:hover {
2316 background: #ffffff !important;
2317 color: #2563eb !important;
2318 }
2319
2320 .metasync-unsaved-notification .close-notification {
2321 background: none !important;
2322 border: none !important;
2323 color: rgba(255, 255, 255, 0.7) !important;
2324 cursor: pointer !important;
2325 padding: 4px !important;
2326 border-radius: 4px !important;
2327 transition: all 0.2s ease !important;
2328 font-size: 16px !important;
2329 }
2330
2331 .metasync-unsaved-notification .close-notification:hover {
2332 color: #ffffff !important;
2333 background: rgba(255, 255, 255, 0.1) !important;
2334 }
2335
2336 /* Legacy warning banner styles - updated */
2337 .metasync-unsaved-warning {
2338 background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%) !important;
2339 border-left: 4px solid #3b82f6 !important;
2340 color: var(--dashboard-text-primary) !important;
2341 padding: 16px 20px !important;
2342 margin: 20px 0 !important;
2343 border-radius: 8px !important;
2344 display: flex !important;
2345 align-items: center !important;
2346 gap: 12px !important;
2347 font-weight: 500 !important;
2348 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1) !important;
2349 transition: all 0.3s ease !important;
2350 }
2351
2352 @keyframes slideInTop {
2353 from {
2354 opacity: 0;
2355 transform: translateY(-20px);
2356 }
2357 to {
2358 opacity: 1;
2359 transform: translateY(0);
2360 }
2361 }
2362
2363 .metasync-unsaved-warning .dashicons {
2364 color: #3b82f6 !important;
2365 font-size: 20px !important;
2366 animation: gentle-rotate 4s ease-in-out infinite !important;
2367 }
2368
2369 @keyframes gentle-rotate {
2370 0%, 100% { transform: rotate(0deg); }
2371 25% { transform: rotate(5deg); }
2372 75% { transform: rotate(-5deg); }
2373 }
2374
2375 /* Save button highlight animation */
2376 @keyframes save-button-highlight {
2377 0% {
2378 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
2379 transform: translateY(-1px) scale(1);
2380 }
2381 50% {
2382 box-shadow: 0 6px 20px rgba(59, 130, 246, 0.5);
2383 transform: translateY(-2px) scale(1.02);
2384 }
2385 100% {
2386 box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
2387 transform: translateY(-1px) scale(1);
2388 }
2389 }
2390
2391 /* Mobile responsive adjustments */
2392 @media (max-width: 768px) {
2393 .metasync-unsaved-notification {
2394 bottom: 10px !important;
2395 left: 50% !important;
2396 width: calc(100% - 20px) !important;
2397 max-width: none !important;
2398 padding: 12px 16px !important;
2399 flex-direction: column !important;
2400 gap: 10px !important;
2401 text-align: center !important;
2402 border-radius: 8px !important;
2403 }
2404
2405 .metasync-unsaved-notification .notification-content {
2406 justify-content: center !important;
2407 width: 100% !important;
2408 }
2409
2410 .metasync-unsaved-notification .notification-actions {
2411 justify-content: center !important;
2412 flex-wrap: wrap !important;
2413 gap: 8px !important;
2414 width: 100% !important;
2415 }
2416
2417 .metasync-unsaved-notification .notification-button {
2418 flex: 1 !important;
2419 min-width: 70px !important;
2420 max-width: 100px !important;
2421 }
2422
2423 .metasync-unsaved-notification .close-notification {
2424 position: absolute !important;
2425 top: 8px !important;
2426 right: 8px !important;
2427 padding: 2px 6px !important;
2428 font-size: 14px !important;
2429 }
2430 }
2431
2432 /* High contrast mode support */
2433 @media (prefers-contrast: high) {
2434 .metasync-dashboard-wrap .has-unsaved-changes {
2435 border: 2px solid #0066cc !important;
2436 background: rgba(0, 102, 204, 0.1) !important;
2437 }
2438
2439 .metasync-unsaved-notification {
2440 background: #0066cc !important;
2441 border: 1px solid #004499 !important;
2442 }
2443 }
2444
2445 /* Reduced motion support */
2446 @media (prefers-reduced-motion: reduce) {
2447 .metasync-dashboard-wrap .unsaved-indicator,
2448 .metasync-dashboard-wrap .has-unsaved-changes::after,
2449 .metasync-unsaved-notification .notification-icon {
2450 animation: none !important;
2451 }
2452
2453 .metasync-dashboard-wrap .has-unsaved-changes .button.button-primary,
2454 .metasync-unsaved-notification {
2455 transition: none !important;
2456 }
2457 }
2458
2459 /* ========================================
2460 SYNC LOG PAGE STYLES
2461 ======================================== */
2462
2463 /* Sync Log Header */
2464 .sync-log-header {
2465 display: flex;
2466 justify-content: space-between;
2467 align-items: flex-start;
2468 margin-bottom: 30px;
2469 gap: 20px;
2470 }
2471
2472 .sync-log-title-section {
2473 flex: 1;
2474 }
2475
2476 .sync-log-title-section h2 {
2477 color: var(--dashboard-text-primary);
2478 margin-bottom: 8px;
2479 font-size: 24px;
2480 font-weight: 600;
2481 }
2482
2483 /* Sync Log Filters */
2484 .sync-log-filters {
2485 flex-shrink: 0;
2486 display: flex;
2487 align-items: center;
2488 justify-content: flex-end;
2489 gap: 10px;
2490 }
2491
2492 .sync-filters-form {
2493 display: flex !important;
2494 flex-direction: row !important;
2495 flex-wrap: nowrap;
2496 gap: 12px;
2497 align-items: center;
2498 }
2499
2500 /* Large screens - optimize filter spacing */
2501 @media (min-width: 1200px) {
2502 .sync-filters-form {
2503 gap: 16px;
2504 }
2505
2506 .sync-filter-select {
2507 min-width: 150px;
2508 }
2509 }
2510
2511 .sync-filter-select {
2512 background-color: var(--dashboard-card-bg);
2513 border: 1px solid var(--dashboard-border);
2514 color: var(--dashboard-text-primary);
2515 padding: 8px 12px;
2516 border-radius: 6px;
2517 font-size: 14px;
2518 width: 100%;
2519 min-width: 130px;
2520 transition: all 0.2s ease;
2521 cursor: pointer;
2522 appearance: none !important;
2523 -webkit-appearance: none !important;
2524 -moz-appearance: none !important;
2525 background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d1d5db' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e") !important;
2526 background-repeat: no-repeat !important;
2527 background-position: right 10px center !important;
2528 background-size: 14px !important;
2529 padding-right: 34px !important;
2530 white-space: nowrap;
2531 box-sizing: border-box;
2532 }
2533
2534 .sync-filter-select:focus {
2535 outline: none;
2536 border-color: var(--dashboard-accent);
2537 box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
2538 background-color: var(--dashboard-card-hover);
2539 }
2540
2541 .sync-filter-select:hover {
2542 border-color: var(--dashboard-accent);
2543 background-color: var(--dashboard-card-hover);
2544 }
2545
2546 .sync-filter-select:active {
2547 background-color: var(--dashboard-card-hover);
2548 border-color: var(--dashboard-accent);
2549 }
2550
2551 .sync-filter-select option {
2552 background: var(--dashboard-card-bg);
2553 color: var(--dashboard-text-primary);
2554 padding: 8px;
2555 }
2556
2557 /* Type field dropdown arrow — Local Business Configuration */
2558 .metasync-type-select-wrap {
2559 position: relative;
2560 display: inline-block;
2561 width: 100%;
2562 max-width: 400px;
2563 }
2564
2565 .metasync-type-select-wrap select {
2566 appearance: none;
2567 -webkit-appearance: none;
2568 -moz-appearance: none;
2569 padding-right: 36px;
2570 width: 100%;
2571 cursor: pointer;
2572 }
2573
2574 .metasync-type-select-wrap::after {
2575 content: '';
2576 position: absolute;
2577 right: 12px;
2578 top: 50%;
2579 transform: translateY(-50%);
2580 width: 16px;
2581 height: 16px;
2582 background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");
2583 background-repeat: no-repeat;
2584 background-size: contain;
2585 pointer-events: none;
2586 }
2587
2588 /* Sync Log List */
2589 .sync-log-list {
2590 background: var(--dashboard-card-bg);
2591 border-radius: 12px;
2592 overflow: hidden;
2593 border: 1px solid var(--dashboard-border);
2594 }
2595
2596 .sync-log-item {
2597 display: flex;
2598 align-items: center;
2599 padding: 20px;
2600 border-bottom: 1px solid var(--dashboard-border);
2601 transition: all 0.2s ease;
2602 }
2603
2604 .sync-log-item:last-child {
2605 border-bottom: none;
2606 }
2607
2608 .sync-log-item:hover {
2609 background: var(--dashboard-card-hover);
2610 }
2611
2612 /* Sync Log Icon */
2613 .sync-log-icon {
2614 margin-right: 16px;
2615 flex-shrink: 0;
2616 }
2617
2618 .sync-icon-circle {
2619 width: 40px;
2620 height: 40px;
2621 background: var(--dashboard-card-hover);
2622 border-radius: 50%;
2623 display: flex;
2624 align-items: center;
2625 justify-content: center;
2626 border: 1px solid var(--dashboard-border);
2627 }
2628
2629 .sync-icon {
2630 font-size: 18px;
2631 color: var(--dashboard-text-secondary);
2632 }
2633
2634 /* Sync Log Content */
2635 .sync-log-content {
2636 flex: 1;
2637 min-width: 0;
2638 }
2639
2640 .sync-log-title {
2641 font-weight: 600;
2642 color: var(--dashboard-text-primary);
2643 font-size: 16px;
2644 margin-bottom: 4px;
2645 line-height: 1.4;
2646 }
2647
2648 .sync-log-meta {
2649 color: var(--dashboard-text-secondary);
2650 font-size: 14px;
2651 line-height: 1.3;
2652 }
2653
2654 /* Sync Log Status */
2655 .sync-log-status {
2656 margin-left: 16px;
2657 flex-shrink: 0;
2658 }
2659
2660 .sync-status-badge {
2661 display: inline-flex;
2662 align-items: center;
2663 gap: 6px;
2664 padding: 6px 12px;
2665 border-radius: 20px;
2666 font-size: 13px;
2667 font-weight: 500;
2668 text-transform: capitalize;
2669 }
2670
2671 .sync-status-published {
2672 background: rgba(16, 185, 129, 0.15);
2673 color: var(--dashboard-success);
2674 border: 1px solid rgba(16, 185, 129, 0.3);
2675 }
2676
2677 .sync-status-draft {
2678 background: rgba(139, 92, 246, 0.15);
2679 color: #8b5cf6;
2680 border: 1px solid rgba(139, 92, 246, 0.3);
2681 }
2682
2683 .sync-status-icon {
2684 font-size: 12px;
2685 font-weight: bold;
2686 }
2687
2688 /* Sync Log Empty State */
2689 .sync-log-empty {
2690 text-align: center;
2691 padding: 60px 20px;
2692 color: var(--dashboard-text-secondary);
2693 background: var(--dashboard-card-bg);
2694 border-radius: 12px;
2695 border: 1px solid var(--dashboard-border);
2696 }
2697
2698 .sync-log-empty-icon {
2699 font-size: 48px;
2700 margin-bottom: 16px;
2701 opacity: 0.6;
2702 color: var(--dashboard-text-secondary);
2703 }
2704
2705 .sync-log-empty h3 {
2706 color: var(--dashboard-text-primary);
2707 margin-bottom: 8px;
2708 font-size: 18px;
2709 font-weight: 600;
2710 }
2711
2712 .sync-log-empty p {
2713 font-size: 14px;
2714 line-height: 1.5;
2715 max-width: 400px;
2716 margin: 0 auto;
2717 color: var(--dashboard-text-secondary);
2718 }
2719
2720 /* Sync Log Pagination */
2721 .sync-log-pagination {
2722 display: flex;
2723 justify-content: space-between;
2724 align-items: center;
2725 margin-top: 30px;
2726 padding-top: 20px;
2727 border-top: 1px solid var(--dashboard-border);
2728 }
2729
2730 .sync-log-pagination-info {
2731 color: var(--dashboard-text-secondary);
2732 font-size: 14px;
2733 }
2734
2735 .sync-log-pagination-controls {
2736 display: flex;
2737 align-items: center;
2738 gap: 8px;
2739 }
2740
2741 .sync-pagination-btn {
2742 display: inline-flex;
2743 align-items: center;
2744 justify-content: center;
2745 width: 36px;
2746 height: 36px;
2747 background: var(--dashboard-card-bg);
2748 border: 1px solid var(--dashboard-border);
2749 color: var(--dashboard-text-primary);
2750 text-decoration: none;
2751 border-radius: 6px;
2752 font-size: 14px;
2753 font-weight: 500;
2754 transition: all 0.2s ease;
2755 }
2756
2757 .sync-pagination-btn:hover {
2758 background: var(--dashboard-card-hover);
2759 border-color: var(--dashboard-accent);
2760 color: var(--dashboard-accent);
2761 text-decoration: none;
2762 }
2763
2764 .sync-pagination-btn.active {
2765 background: var(--dashboard-accent);
2766 border-color: var(--dashboard-accent);
2767 color: white;
2768 }
2769
2770 .sync-pagination-btn.active:hover {
2771 background: var(--dashboard-accent-hover);
2772 border-color: var(--dashboard-accent-hover);
2773 color: white;
2774 }
2775
2776 /* Responsive Design for Sync Log */
2777 @media (max-width: 768px) {
2778 .sync-log-header {
2779 flex-direction: column;
2780 align-items: stretch;
2781 gap: 15px;
2782 }
2783
2784 .sync-log-title-section {
2785 text-align: center;
2786 }
2787
2788 .sync-log-filters {
2789 align-self: center;
2790 justify-content: center;
2791 }
2792
2793 .sync-filters-form {
2794 display: flex !important;
2795 flex-direction: row !important;
2796 flex-wrap: nowrap;
2797 gap: 10px;
2798 align-items: center;
2799 justify-content: center;
2800 }
2801
2802 .sync-filter-select {
2803 min-width: 120px;
2804 font-size: 13px;
2805 }
2806
2807 .sync-log-item {
2808 flex-direction: column;
2809 align-items: flex-start;
2810 gap: 12px;
2811 }
2812
2813 .sync-log-icon {
2814 margin-right: 0;
2815 }
2816
2817 .sync-log-status {
2818 margin-left: 0;
2819 align-self: flex-end;
2820 }
2821
2822 .sync-log-pagination {
2823 flex-direction: column;
2824 gap: 15px;
2825 text-align: center;
2826 }
2827
2828 .sync-log-pagination-controls {
2829 justify-content: center;
2830 }
2831 }
2832
2833 @media (max-width: 480px) {
2834 .sync-filters-form {
2835 display: flex !important;
2836 flex-direction: row !important;
2837 flex-wrap: nowrap;
2838 gap: 8px;
2839 width: 100%;
2840 }
2841
2842 .sync-filter-select {
2843 min-width: 110px;
2844 font-size: 13px;
2845 padding: 6px 8px;
2846 padding-right: 28px;
2847 }
2848
2849 .sync-log-item {
2850 padding: 16px;
2851 }
2852
2853 .sync-log-title {
2854 font-size: 15px;
2855 }
2856
2857 .sync-log-meta {
2858 font-size: 13px;
2859 }
2860
2861 .sync-status-badge {
2862 font-size: 12px;
2863 padding: 4px 8px;
2864 }
2865 }
2866
2867 /* ========================================
2868 SETTINGS ACCORDION STYLES
2869 ======================================== */
2870
2871 /* Accordion Container */
2872 .metasync-settings-accordion {
2873 display: flex;
2874 flex-direction: column;
2875 gap: 16px;
2876 }
2877
2878 /* Accordion Section */
2879 .metasync-accordion-section {
2880 background: var(--dashboard-card-bg);
2881 border: 1px solid var(--dashboard-border);
2882 border-radius: 12px;
2883 overflow: hidden;
2884 transition: all 0.3s ease;
2885 }
2886
2887 .metasync-accordion-section:hover {
2888 border-color: var(--dashboard-accent);
2889 box-shadow: 0 2px 8px rgba(59, 130, 246, 0.1);
2890 }
2891
2892 /* Accordion Header */
2893 .metasync-accordion-header {
2894 display: flex;
2895 justify-content: space-between;
2896 align-items: center;
2897 padding: 20px 24px;
2898 cursor: pointer;
2899 user-select: none;
2900 transition: background-color 0.2s ease;
2901 position: relative;
2902 }
2903
2904 .metasync-accordion-header:hover {
2905 background: var(--dashboard-card-hover);
2906 }
2907
2908 .metasync-accordion-header:focus {
2909 outline: 2px solid var(--dashboard-accent);
2910 outline-offset: -2px;
2911 }
2912
2913 .metasync-accordion-title {
2914 display: flex;
2915 align-items: center;
2916 gap: 16px;
2917 flex: 1;
2918 }
2919
2920 .metasync-accordion-icon {
2921 width: 36px;
2922 height: 36px;
2923 border-radius: 8px;
2924 background: var(--dashboard-gradient-primary);
2925 display: flex;
2926 align-items: center;
2927 justify-content: center;
2928 flex-shrink: 0;
2929 }
2930
2931 .metasync-accordion-icon .dashicons {
2932 font-size: 18px;
2933 width: 18px;
2934 height: 18px;
2935 color: #ffffff;
2936 }
2937
2938 .metasync-accordion-text h3 {
2939 color: var(--dashboard-text-primary);
2940 font-size: 18px;
2941 font-weight: 600;
2942 margin: 0 0 4px 0;
2943 }
2944
2945 .metasync-accordion-description {
2946 color: var(--dashboard-text-secondary);
2947 font-size: 13px;
2948 margin: 0;
2949 line-height: 1.4;
2950 }
2951
2952 /* Accordion Toggle Button */
2953 .metasync-accordion-toggle {
2954 background: transparent;
2955 border: none;
2956 color: var(--dashboard-text-secondary);
2957 cursor: pointer;
2958 padding: 8px;
2959 transition: all 0.3s ease;
2960 flex-shrink: 0;
2961 }
2962
2963 .metasync-accordion-toggle:hover {
2964 color: var(--dashboard-accent);
2965 transform: scale(1.1);
2966 }
2967
2968 .metasync-accordion-toggle .toggle-icon {
2969 display: inline-block;
2970 font-size: 16px;
2971 transition: transform 0.3s ease;
2972 }
2973
2974 /* Rotate icon when section is open */
2975 .metasync-accordion-header[aria-expanded="true"] .toggle-icon {
2976 transform: rotate(180deg);
2977 }
2978
2979 /* Accordion Content */
2980 .metasync-accordion-content {
2981 overflow: hidden;
2982 transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1),
2983 opacity 0.3s ease,
2984 padding 0.3s ease;
2985 }
2986
2987 .metasync-accordion-content[data-state="closed"] {
2988 max-height: 0;
2989 opacity: 0;
2990 padding: 0 24px;
2991 }
2992
2993 .metasync-accordion-content[data-state="open"] {
2994 max-height: 5000px; /* Large enough for any content */
2995 opacity: 1;
2996 padding: 0 24px 24px 24px;
2997 }
2998
2999 /* Form Table Inside Accordion */
3000 .metasync-accordion-content .form-table {
3001 margin-top: 0;
3002 background: transparent;
3003 border-collapse: separate;
3004 border-spacing: 0 16px;
3005 }
3006
3007 .metasync-accordion-content .form-table th,
3008 .metasync-accordion-content .form-table td {
3009 padding: 18px 20px;
3010 vertical-align: middle;
3011 background: rgba(255, 255, 255, 0.02);
3012 }
3013
3014 .metasync-accordion-content .form-table th {
3015 border-radius: 8px 0 0 8px;
3016 }
3017
3018 .metasync-accordion-content .form-table td {
3019 border-radius: 0 8px 8px 0;
3020 }
3021
3022 .metasync-accordion-content .form-table tr:hover th,
3023 .metasync-accordion-content .form-table tr:hover td {
3024 background: rgba(255, 255, 255, 0.04);
3025 }
3026
3027 .metasync-accordion-content .form-table tr:first-child th,
3028 .metasync-accordion-content .form-table tr:first-child td {
3029 padding-top: 18px;
3030 }
3031
3032 .metasync-accordion-content .form-table tr:last-child th,
3033 .metasync-accordion-content .form-table tr:last-child td {
3034 padding-bottom: 18px;
3035 }
3036
3037 /* Responsive Design */
3038 @media (max-width: 768px) {
3039 .metasync-accordion-header {
3040 padding: 16px 20px;
3041 }
3042
3043 .metasync-accordion-title {
3044 gap: 12px;
3045 }
3046
3047 .metasync-accordion-icon {
3048 font-size: 24px;
3049 }
3050
3051 .metasync-accordion-text h3 {
3052 font-size: 16px;
3053 }
3054
3055 .metasync-accordion-description {
3056 font-size: 12px;
3057 }
3058
3059 .metasync-accordion-content[data-state="open"] {
3060 padding: 0 20px 20px 20px;
3061 }
3062
3063 .metasync-accordion-content .form-table {
3064 border-spacing: 0 12px;
3065 }
3066
3067 .metasync-accordion-content .form-table th,
3068 .metasync-accordion-content .form-table td {
3069 padding: 14px 16px;
3070 }
3071
3072 .metasync-accordion-content .form-table tr:first-child th,
3073 .metasync-accordion-content .form-table tr:first-child td {
3074 padding-top: 14px;
3075 }
3076 }
3077
3078 /* ========================================
3079 TOOLTIP SYSTEM
3080 ======================================== */
3081
3082 /* Field Label Wrapper */
3083 .metasync-field-label-wrapper {
3084 display: flex;
3085 align-items: flex-start;
3086 gap: 8px;
3087 position: relative;
3088 }
3089
3090 .metasync-field-label-wrapper label {
3091 flex: 1 1 auto;
3092 min-width: 0;
3093 word-break: break-word;
3094 }
3095
3096 /* Tooltip Trigger Button */
3097 .metasync-tooltip-trigger {
3098 background: transparent;
3099 border: none;
3100 padding: 0;
3101 cursor: help;
3102 display: inline-flex;
3103 align-items: center;
3104 justify-content: center;
3105 width: 18px;
3106 height: 18px;
3107 flex-shrink: 0;
3108 transition: all 0.2s ease;
3109 position: relative;
3110 }
3111
3112 .metasync-tooltip-trigger:hover,
3113 .metasync-tooltip-trigger:focus {
3114 transform: scale(1.15);
3115 }
3116
3117 .metasync-tooltip-trigger:focus {
3118 outline: 2px solid var(--dashboard-accent);
3119 outline-offset: 2px;
3120 border-radius: 50%;
3121 }
3122
3123 /* Info Icon SVG */
3124 .metasync-info-icon {
3125 width: 18px;
3126 height: 18px;
3127 color: var(--dashboard-text-secondary);
3128 transition: color 0.2s ease;
3129 }
3130
3131 .metasync-tooltip-trigger:hover .metasync-info-icon,
3132 .metasync-tooltip-trigger:focus .metasync-info-icon {
3133 color: var(--dashboard-accent);
3134 }
3135
3136 /* Tooltip Container */
3137 .metasync-tooltip {
3138 position: absolute;
3139 z-index: 10000;
3140 background: var(--dashboard-card-bg);
3141 border: 1px solid var(--dashboard-border);
3142 border-radius: 8px;
3143 box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
3144 padding: 14px 18px;
3145 width: 450px;
3146 max-width: calc(100vw - 40px);
3147 opacity: 0;
3148 visibility: hidden;
3149 pointer-events: none;
3150 transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
3151 transform: translateY(-8px);
3152 left: 100%;
3153 margin-left: 16px;
3154 top: 50%;
3155 transform: translateY(-50%) translateX(-8px);
3156 }
3157
3158 .metasync-tooltip.show {
3159 opacity: 1;
3160 visibility: visible;
3161 pointer-events: auto;
3162 transform: translateY(-50%) translateX(0);
3163 }
3164
3165 /* Tooltip Arrow */
3166 .metasync-tooltip-arrow {
3167 position: absolute;
3168 left: -6px;
3169 top: 50%;
3170 transform: translateY(-50%);
3171 width: 0;
3172 height: 0;
3173 border-style: solid;
3174 border-width: 6px 6px 6px 0;
3175 border-color: transparent var(--dashboard-border) transparent transparent;
3176 }
3177
3178 .metasync-tooltip-arrow::after {
3179 content: '';
3180 position: absolute;
3181 left: 2px;
3182 top: -5px;
3183 width: 0;
3184 height: 0;
3185 border-style: solid;
3186 border-width: 5px 5px 5px 0;
3187 border-color: transparent var(--dashboard-card-bg) transparent transparent;
3188 }
3189
3190 /* Tooltip Content */
3191 .metasync-tooltip-content {
3192 color: var(--dashboard-text-primary);
3193 font-size: 14px;
3194 line-height: 1.65;
3195 font-weight: 400;
3196 letter-spacing: 0.01em;
3197 }
3198
3199 /* Tooltip Positioning - Handle edge cases */
3200 .metasync-tooltip[data-position="left"] {
3201 left: auto;
3202 right: 100%;
3203 margin-left: 0;
3204 margin-right: 12px;
3205 transform: translateY(-50%) translateX(8px);
3206 }
3207
3208 .metasync-tooltip[data-position="left"].show {
3209 transform: translateY(-50%) translateX(0);
3210 }
3211
3212 .metasync-tooltip[data-position="left"] .metasync-tooltip-arrow {
3213 left: auto;
3214 right: -6px;
3215 border-width: 6px 0 6px 6px;
3216 border-color: transparent transparent transparent var(--dashboard-border);
3217 }
3218
3219 .metasync-tooltip[data-position="left"] .metasync-tooltip-arrow::after {
3220 left: -7px;
3221 border-width: 5px 0 5px 5px;
3222 border-color: transparent transparent transparent var(--dashboard-card-bg);
3223 }
3224
3225 /* Responsive Tooltip Widths */
3226 @media (max-width: 1400px) {
3227 .metasync-tooltip {
3228 width: 400px;
3229 }
3230 }
3231
3232 @media (max-width: 1200px) {
3233 .metasync-tooltip {
3234 width: 360px;
3235 }
3236 }
3237
3238 @media (max-width: 992px) {
3239 .metasync-tooltip {
3240 width: 320px;
3241 padding: 12px 16px;
3242 }
3243 }
3244
3245 /* Mobile & Tablet Tooltip Adjustments */
3246 @media (max-width: 768px) {
3247 .metasync-tooltip {
3248 width: calc(100vw - 40px);
3249 max-width: 500px;
3250 font-size: 13px;
3251 padding: 14px 16px;
3252 position: fixed;
3253 left: 50% !important;
3254 top: auto !important;
3255 bottom: 20px;
3256 transform: translateX(-50%) translateY(8px);
3257 margin: 0;
3258 }
3259
3260 .metasync-tooltip.show {
3261 transform: translateX(-50%) translateY(0);
3262 }
3263
3264 .metasync-tooltip-arrow {
3265 display: none;
3266 }
3267 }
3268
3269 /* Small Mobile Devices */
3270 @media (max-width: 480px) {
3271 .metasync-tooltip {
3272 width: calc(100vw - 30px);
3273 font-size: 12px;
3274 padding: 12px 14px;
3275 }
3276 }
3277
3278 /* Accessibility - Keyboard Navigation */
3279 .metasync-accordion-header:focus-visible {
3280 outline: 2px solid var(--dashboard-accent);
3281 outline-offset: -2px;
3282 }
3283
3284 /* Reduced Motion Support */
3285 @media (prefers-reduced-motion: reduce) {
3286 .metasync-accordion-content,
3287 .metasync-accordion-toggle .toggle-icon,
3288 .metasync-tooltip,
3289 .metasync-tooltip-trigger {
3290 transition: none;
3291 }
3292 }
3293
3294 /* ================================================
3295 Universal Gradient Button Text Color
3296 Ensures all elements with gradient backgrounds have white text
3297 ================================================ */
3298
3299 /* Light Mode - Ensure gradient backgrounds always have white text */
3300 [data-theme="light"] .metasync-dashboard-wrap *[style*="--dashboard-gradient-primary"],
3301 [data-theme="light"] .metasync-dashboard-wrap .button-primary,
3302 [data-theme="light"] .metasync-dashboard-wrap .metasync-nav-tab.active,
3303 [data-theme="light"] .metasync-dashboard-wrap .metasync-theme-option.active,
3304 [data-theme="light"] .metasync-dashboard-wrap .metasync-sa-connect-btn.primary,
3305 [data-theme="light"] .metasync-dashboard-wrap .metasync-dashboard-btn,
3306 [data-theme="light"] .metasync-dashboard-wrap .metasync-sa-connect-btn,
3307 [data-theme="light"] .metasync-dashboard-wrap #connect-searchatlas-btn {
3308 color: #ffffff !important;
3309 }
3310
3311 /* Ensure hover states maintain white text */
3312 [data-theme="light"] .metasync-dashboard-wrap .button-primary:hover,
3313 [data-theme="light"] .metasync-dashboard-wrap .metasync-dashboard-btn:hover,
3314 [data-theme="light"] .metasync-dashboard-wrap .metasync-sa-connect-btn:hover,
3315 [data-theme="light"] .metasync-dashboard-wrap #connect-searchatlas-btn:hover {
3316 color: #ffffff !important;
3317 }
3318
3319 /* ================================================
3320 Monochrome Emoji System
3321 Forces all decorative emoji to render as monochrome text glyphs
3322 so they inherit the element's CSS color property (white in dark
3323 theme, dark in light theme) rather than rendering as colorful
3324 emoji pictographs. Applies throughout all admin screens.
3325 ================================================ */
3326
3327 .metasync-dashboard-wrap h1,
3328 .metasync-dashboard-wrap h2,
3329 .metasync-dashboard-wrap h3,
3330 .metasync-dashboard-wrap h4,
3331 .metasync-dashboard-wrap h5,
3332 .metasync-dashboard-wrap h6,
3333 .metasync-dashboard-wrap label,
3334 .metasync-dashboard-wrap th,
3335 .metasync-dashboard-wrap td,
3336 .metasync-dashboard-wrap legend,
3337 .metasync-dashboard-wrap .button,
3338 .metasync-dashboard-wrap .button-primary,
3339 .metasync-dashboard-wrap .button-secondary,
3340 .metasync-dashboard-wrap .metasync-stat-label,
3341 .metasync-dashboard-wrap .metasync-stat-value,
3342 .metasync-dashboard-wrap .dashboard-card-title,
3343 .metasync-dashboard-wrap .notice,
3344 .metasync-dashboard-wrap p,
3345 .metasync-dashboard-wrap .metasync-accordion-icon,
3346 .metasync-dashboard-wrap .sync-log-empty-icon,
3347 .metasync-dashboard-wrap .sync-icon,
3348 .metasync-dashboard-wrap span[class*="icon"],
3349 .metasync-dashboard-wrap div[class*="icon"] {
3350 font-variant-emoji: text;
3351 }
3352
3353 /* Dashicons inside sitemap stat-icon boxes */
3354 .metasync-dashboard-wrap .stat-icon {
3355 display: flex;
3356 align-items: center;
3357 justify-content: center;
3358 }
3359 .metasync-dashboard-wrap .stat-icon .dashicons {
3360 font-size: 24px;
3361 width: 24px;
3362 height: 24px;
3363 color: var(--dashboard-text-secondary);
3364 }
3365