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

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