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

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