PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.6.14
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.6.14
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.14, at admin/css/metasync-dashboard.css

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