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

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