PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.6.26
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.6.26
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 / media-optimization / assets / css / media-optimization.css

media-optimization.css in Search Atlas SEO – OTTO AI SEO Automation for WordPress 2.6.26, at media-optimization/assets/css/media-optimization.css

1,532 lines 35.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Media Optimization Admin Page Styles
3 *
4 * @package Search Atlas SEO
5 * @copyright Copyright (C) 2021-2025, Search Atlas Group - support@searchatlas.com
6 * @since 2.6.0
7 */
8
9 /* ── General Layout ── */
10 .metasync-dashboard-wrap .metasync-media-optimization-page {
11 padding: 20px !important;
12 max-width: 100% !important;
13 }
14
15 .metasync-media-container {
16 display: grid;
17 grid-template-columns: 1fr 360px;
18 gap: 24px;
19 margin-top: 20px;
20 width: 100%;
21 }
22
23 .metasync-media-main,
24 .metasync-media-sidebar {
25 width: 100%;
26 min-width: 0;
27 }
28
29 @media (max-width: 1200px) {
30 .metasync-media-container {
31 grid-template-columns: 1fr;
32 }
33 }
34
35 /* Notices */
36 .metasync-notice {
37 display: flex;
38 align-items: center;
39 gap: 10px;
40 padding: 14px 20px;
41 border-radius: 10px;
42 margin-bottom: 20px;
43 font-size: 14px;
44 animation: noticeSlideIn 0.3s ease-out;
45 }
46
47 @keyframes noticeSlideIn {
48 from { opacity: 0; transform: translateY(-10px); }
49 to { opacity: 1; transform: translateY(0); }
50 }
51
52 .metasync-notice-success {
53 background: rgba(16, 185, 129, 0.1);
54 border: 1px solid rgba(16, 185, 129, 0.3);
55 color: #6ee7b7;
56 }
57
58 .metasync-notice-success .dashicons {
59 color: #10b981;
60 }
61
62 /* Cards */
63 .metasync-media-optimization-page .metasync-card {
64 background: var(--dashboard-card-bg, #1a1f26);
65 border: 1px solid var(--dashboard-border, #374151);
66 border-radius: 12px;
67 box-shadow: var(--dashboard-shadow, 0 10px 15px -3px rgba(0, 0, 0, 0.3));
68 margin-bottom: 20px;
69 transition: all 0.3s ease;
70 }
71
72 .metasync-media-optimization-page .metasync-card:hover {
73 box-shadow: var(--dashboard-shadow-hover, 0 20px 25px -5px rgba(0, 0, 0, 0.4));
74 transform: translateY(-2px);
75 }
76
77 .metasync-media-optimization-page .metasync-card-header {
78 padding: 20px 24px;
79 border-bottom: 1px solid var(--dashboard-border, #374151);
80 display: flex;
81 justify-content: space-between;
82 align-items: center;
83 background: rgba(102, 126, 234, 0.05);
84 border-radius: 12px 12px 0 0;
85 }
86
87 .metasync-media-optimization-page .metasync-card-header h2,
88 .metasync-media-optimization-page .metasync-card-header h3 {
89 margin: 0;
90 font-size: 17px;
91 font-weight: 600;
92 color: var(--dashboard-text-primary, #ffffff);
93 }
94
95 .metasync-card-title-group {
96 display: flex;
97 flex-direction: column;
98 gap: 4px;
99 }
100
101 .metasync-card-subtitle {
102 font-size: 13px;
103 color: var(--dashboard-text-secondary, #9ca3af);
104 font-weight: 400;
105 }
106
107 .metasync-card-body {
108 padding: 24px;
109 }
110
111 /* Toggle Switch */
112 .metasync-toggle {
113 position: relative;
114 display: inline-block;
115 width: 48px;
116 height: 26px;
117 flex-shrink: 0;
118 }
119
120 .metasync-toggle input {
121 opacity: 0;
122 width: 0;
123 height: 0;
124 }
125
126 .metasync-toggle-slider {
127 position: absolute;
128 cursor: pointer;
129 inset: 0;
130 background: rgba(255, 255, 255, 0.1);
131 border: 1px solid var(--dashboard-border, #374151);
132 border-radius: 26px;
133 transition: all 0.3s ease;
134 }
135
136 .metasync-toggle-slider::before {
137 content: '';
138 position: absolute;
139 height: 20px;
140 width: 20px;
141 left: 2px;
142 bottom: 2px;
143 background: var(--dashboard-text-secondary, #9ca3af);
144 border-radius: 50%;
145 transition: all 0.3s ease;
146 }
147
148 .metasync-toggle input:checked + .metasync-toggle-slider {
149 background: rgba(102, 126, 234, 0.3);
150 border-color: #667eea;
151 }
152
153 .metasync-toggle input:checked + .metasync-toggle-slider::before {
154 transform: translateX(22px);
155 background: #667eea;
156 box-shadow: 0 0 8px rgba(102, 126, 234, 0.5);
157 }
158
159 /* Field Rows */
160 .metasync-field-row {
161 display: grid;
162 grid-template-columns: 1fr 1fr;
163 gap: 24px;
164 margin-bottom: 20px;
165 align-items: stretch;
166 }
167
168 .metasync-field-row:last-child {
169 margin-bottom: 0;
170 }
171
172 .metasync-field-row > .metasync-field {
173 display: flex;
174 flex-direction: column;
175 }
176
177 .metasync-field--card {
178 padding: 12px 16px;
179 background: rgba(0, 0, 0, 0.2);
180 border: 1px solid var(--dashboard-border, #374151);
181 border-radius: 8px;
182 transition: background 0.3s ease, border-color 0.3s ease;
183 }
184
185 .metasync-field--card:hover {
186 background: rgba(102, 126, 234, 0.05);
187 border-color: rgba(102, 126, 234, 0.3);
188 }
189
190 @media (max-width: 768px) {
191 .metasync-field-row {
192 grid-template-columns: 1fr;
193 }
194 }
195
196 .metasync-field label {
197 display: block;
198 font-size: 14px;
199 font-weight: 500;
200 color: var(--dashboard-text-primary, #ffffff);
201 margin-bottom: 8px;
202 }
203
204 .metasync-field select,
205 .metasync-field .metasync-text-input {
206 width: 100%;
207 padding: 8px 14px;
208 line-height: 1.2;
209 background: rgba(0, 0, 0, 0.3);
210 border: 1px solid var(--dashboard-border, #374151);
211 border-radius: 8px;
212 color: var(--dashboard-text-primary, #ffffff);
213 font-size: 14px;
214 transition: all 0.3s ease;
215 box-sizing: border-box;
216 }
217
218 /* ── Select wrapper: provides the custom dropdown chevron via ::after ── */
219 .metasync-select-wrap {
220 position: relative;
221 display: block;
222 }
223
224 .metasync-select-wrap::after {
225 content: '';
226 position: absolute;
227 right: 14px;
228 top: 50%;
229 transform: translateY(-50%);
230 width: 0;
231 height: 0;
232 border-left: 5px solid transparent;
233 border-right: 5px solid transparent;
234 border-top: 5px solid var(--dashboard-text-secondary, #9ca3af);
235 pointer-events: none;
236 transition: border-top-color 0.2s ease;
237 }
238
239 .metasync-select-wrap:hover::after,
240 .metasync-select-wrap:focus-within::after {
241 border-top-color: var(--dashboard-text-primary, #ffffff);
242 }
243
244 .metasync-field .metasync-select-wrap select {
245 appearance: none;
246 -webkit-appearance: none;
247 -moz-appearance: none;
248 padding-right: 36px;
249 cursor: pointer;
250 }
251
252 .metasync-field select:focus {
253 border-color: var(--dashboard-accent, #3b82f6);
254 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
255 outline: none;
256 background-color: rgba(0, 0, 0, 0.4);
257 }
258
259 .metasync-field .metasync-text-input:focus {
260 border-color: var(--dashboard-accent, #3b82f6);
261 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
262 outline: none;
263 background: rgba(0, 0, 0, 0.4);
264 }
265
266 .metasync-field select option {
267 background: #1a1f26;
268 color: #ffffff;
269 }
270
271 .metasync-field-description {
272 font-size: 12px;
273 color: var(--dashboard-text-secondary, #9ca3af);
274 margin: 8px 0 0;
275 line-height: 1.5;
276 }
277
278 /* Strategy Warning */
279 .metasync-strategy-warning {
280 display: flex;
281 align-items: flex-start;
282 gap: 10px;
283 margin-top: 10px;
284 padding: 12px 16px;
285 background: rgba(239, 68, 68, 0.08);
286 border: 1px solid rgba(239, 68, 68, 0.25);
287 border-radius: 8px;
288 animation: noticeSlideIn 0.3s ease-out;
289 }
290
291 .metasync-strategy-warning .dashicons {
292 color: #ef4444;
293 flex-shrink: 0;
294 margin-top: 1px;
295 }
296
297 .metasync-strategy-warning p {
298 margin: 0;
299 font-size: 13px;
300 line-height: 1.5;
301 color: #fca5a5;
302 }
303
304 /* Range Input */
305 .metasync-range-group {
306 display: flex;
307 align-items: center;
308 gap: 14px;
309 }
310
311 .metasync-range-group input[type="range"] {
312 flex: 1;
313 height: 6px;
314 -webkit-appearance: none;
315 appearance: none;
316 background: rgba(255, 255, 255, 0.1);
317 border-radius: 3px;
318 outline: none;
319 }
320
321 .metasync-range-group input[type="range"]::-webkit-slider-thumb {
322 -webkit-appearance: none;
323 appearance: none;
324 width: 20px;
325 height: 20px;
326 border-radius: 50%;
327 background: var(--dashboard-gradient-primary, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
328 cursor: pointer;
329 box-shadow: 0 2px 6px rgba(102, 126, 234, 0.4);
330 transition: transform 0.2s ease;
331 }
332
333 .metasync-range-group input[type="range"]::-webkit-slider-thumb:hover {
334 transform: scale(1.15);
335 }
336
337 .metasync-range-group input[type="range"]::-moz-range-thumb {
338 width: 20px;
339 height: 20px;
340 border-radius: 50%;
341 background: var(--dashboard-gradient-primary, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
342 cursor: pointer;
343 border: none;
344 box-shadow: 0 2px 6px rgba(102, 126, 234, 0.4);
345 }
346
347 .metasync-range-value {
348 display: inline-flex;
349 align-items: center;
350 justify-content: center;
351 min-width: 44px;
352 padding: 6px 10px;
353 background: rgba(102, 126, 234, 0.15);
354 border: 1px solid rgba(102, 126, 234, 0.3);
355 border-radius: 8px;
356 font-size: 14px;
357 font-weight: 600;
358 color: #667eea;
359 font-family: 'SF Mono', Monaco, Consolas, monospace;
360 }
361
362 /* Number Input */
363 .metasync-number-group {
364 display: flex;
365 align-items: center;
366 gap: 10px;
367 }
368
369 .metasync-number-group input[type="number"] {
370 width: 80px;
371 padding: 8px 14px;
372 line-height: 1.2;
373 background: rgba(0, 0, 0, 0.3);
374 border: 1px solid var(--dashboard-border, #374151);
375 border-radius: 8px;
376 color: var(--dashboard-text-primary, #ffffff);
377 font-size: 14px;
378 text-align: center;
379 transition: all 0.3s ease;
380 }
381
382 .metasync-number-group input[type="number"]:focus {
383 border-color: var(--dashboard-accent, #3b82f6);
384 box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
385 outline: none;
386 }
387
388 .metasync-number-suffix {
389 font-size: 13px;
390 color: var(--dashboard-text-secondary, #9ca3af);
391 }
392
393 /* Checkbox Label */
394 .metasync-checkbox-label {
395 display: flex !important;
396 align-items: center;
397 gap: 10px;
398 cursor: pointer;
399 padding: 8px 14px;
400 background: rgba(0, 0, 0, 0.2);
401 border: 1px solid var(--dashboard-border, #374151);
402 border-radius: 8px;
403 transition: background 0.3s ease, border-color 0.3s ease;
404 }
405
406 .metasync-checkbox-label:hover {
407 background: rgba(102, 126, 234, 0.05);
408 border-color: rgba(102, 126, 234, 0.3);
409 }
410
411 .metasync-checkbox-label input[type="checkbox"] {
412 width: 18px;
413 height: 18px;
414 accent-color: #667eea;
415 flex-shrink: 0;
416 }
417
418 .metasync-checkbox-label span {
419 font-size: 14px;
420 color: var(--dashboard-text-primary, #ffffff);
421 }
422
423 /* Info Box */
424 .metasync-info-box {
425 display: flex;
426 gap: 14px;
427 padding: 16px 20px;
428 background: rgba(59, 130, 246, 0.08);
429 border: 1px solid rgba(59, 130, 246, 0.2);
430 border-radius: 10px;
431 }
432
433 .metasync-info-box .dashicons {
434 color: var(--dashboard-accent, #3b82f6);
435 flex-shrink: 0;
436 margin-top: 2px;
437 }
438
439 .metasync-info-box strong {
440 display: block;
441 font-size: 14px;
442 color: var(--dashboard-text-primary, #ffffff);
443 margin-bottom: 6px;
444 }
445
446 .metasync-info-box p {
447 margin: 0;
448 font-size: 13px;
449 line-height: 1.6;
450 color: var(--dashboard-text-secondary, #9ca3af);
451 }
452
453 /* Form Actions */
454 .metasync-form-actions {
455 display: flex;
456 gap: 12px;
457 flex-wrap: wrap;
458 margin-top: 4px;
459 }
460
461 .metasync-form-actions .button {
462 border-radius: 8px;
463 font-weight: 500;
464 padding: 10px 24px;
465 height: auto;
466 transition: all 0.3s ease;
467 display: inline-flex;
468 align-items: center;
469 gap: 6px;
470 }
471
472 .metasync-form-actions .button-primary {
473 background: var(--dashboard-gradient-primary, linear-gradient(135deg, #667eea 0%, #764ba2 100%));
474 border: none;
475 color: #ffffff;
476 box-shadow: 0 4px 6px rgba(102, 126, 234, 0.3);
477 }
478
479 .metasync-form-actions .button-primary:hover {
480 transform: translateY(-2px);
481 box-shadow: 0 6px 12px rgba(102, 126, 234, 0.4);
482 }
483
484 .metasync-form-actions .button-secondary {
485 background: var(--dashboard-card-hover, #222831);
486 border: 1px solid var(--dashboard-border, #374151);
487 color: var(--dashboard-text-primary, #ffffff);
488 }
489
490 .metasync-form-actions .button-secondary:hover {
491 background: rgba(255, 255, 255, 0.1);
492 border-color: var(--dashboard-accent, #3b82f6);
493 transform: translateY(-1px);
494 }
495
496 /* Sidebar: Capabilities */
497 .metasync-capabilities-list {
498 padding: 20px;
499 }
500
501 .metasync-capability-item {
502 display: flex;
503 justify-content: space-between;
504 align-items: center;
505 padding: 12px 14px;
506 border-bottom: 1px solid var(--dashboard-border, #374151);
507 background: rgba(0, 0, 0, 0.15);
508 border-radius: 8px;
509 margin-bottom: 8px;
510 }
511
512 .metasync-capability-item:last-child {
513 margin-bottom: 0;
514 border-bottom: none;
515 }
516
517 .metasync-capability-label {
518 font-size: 13px;
519 color: var(--dashboard-text-primary, #ffffff);
520 font-weight: 500;
521 }
522
523 .metasync-capability-badge {
524 display: inline-flex;
525 align-items: center;
526 gap: 4px;
527 font-size: 12px;
528 padding: 4px 10px;
529 border-radius: 6px;
530 font-weight: 500;
531 }
532
533 .metasync-capability-badge .dashicons {
534 font-size: 14px;
535 width: 14px;
536 height: 14px;
537 }
538
539 .metasync-badge-success {
540 background: rgba(16, 185, 129, 0.15);
541 color: #6ee7b7;
542 }
543
544 .metasync-badge-warning {
545 background: rgba(245, 158, 11, 0.15);
546 color: #fcd34d;
547 }
548
549 .metasync-badge-error {
550 background: rgba(239, 68, 68, 0.15);
551 color: #fca5a5;
552 }
553
554 /* Sidebar: Feature Status */
555 .metasync-feature-status-list {
556 padding: 20px;
557 }
558
559 .metasync-feature-status-item {
560 display: flex;
561 align-items: center;
562 gap: 10px;
563 padding: 10px 14px;
564 background: rgba(0, 0, 0, 0.15);
565 border-radius: 8px;
566 margin-bottom: 8px;
567 font-size: 13px;
568 color: var(--dashboard-text-primary, #ffffff);
569 }
570
571 .metasync-feature-status-item:last-child {
572 margin-bottom: 0;
573 }
574
575 .metasync-feature-dot {
576 width: 10px;
577 height: 10px;
578 border-radius: 50%;
579 flex-shrink: 0;
580 }
581
582 .metasync-feature-dot.active {
583 background: #10b981;
584 box-shadow: 0 0 8px rgba(16, 185, 129, 0.5);
585 }
586
587 .metasync-feature-dot.inactive {
588 background: var(--dashboard-text-secondary, #9ca3af);
589 opacity: 0.4;
590 }
591
592 .metasync-feature-format {
593 margin-left: auto;
594 font-size: 11px;
595 font-weight: 600;
596 color: #667eea;
597 background: rgba(102, 126, 234, 0.15);
598 padding: 2px 8px;
599 border-radius: 4px;
600 }
601
602 .metasync-feature-format:empty {
603 display: none;
604 }
605
606 /* Tips / Warnings List */
607 .metasync-media-optimization-page .metasync-warnings-list {
608 margin: 0;
609 padding: 20px;
610 list-style: none;
611 }
612
613 .metasync-media-optimization-page .metasync-warnings-list li {
614 display: flex;
615 gap: 12px;
616 margin-bottom: 14px;
617 font-size: 13px;
618 line-height: 1.6;
619 color: var(--dashboard-text-secondary, #9ca3af);
620 padding: 12px;
621 background: rgba(0, 0, 0, 0.15);
622 border-radius: 8px;
623 border-left: 3px solid var(--dashboard-border, #374151);
624 transition: all 0.3s ease;
625 }
626
627 .metasync-media-optimization-page .metasync-warnings-list li:hover {
628 background: rgba(102, 126, 234, 0.05);
629 transform: translateX(4px);
630 }
631
632 .metasync-media-optimization-page .metasync-warnings-list li:last-child {
633 margin-bottom: 0;
634 }
635
636 .metasync-media-optimization-page .metasync-warnings-list .dashicons {
637 flex-shrink: 0;
638 margin-top: 2px;
639 }
640
641 /* Toggle section animation */
642 .metasync-toggle-section {
643 overflow: hidden;
644 transition: all 0.3s ease;
645 }
646
647 /* ── Tab Navigation ── */
648 .metasync-media-optimization-page .metasync-tabs {
649 margin: 0 0 20px 0;
650 background: var(--dashboard-card-bg);
651 border: 1px solid var(--dashboard-border);
652 border-radius: 12px;
653 padding: 6px;
654 box-shadow: var(--dashboard-shadow);
655 }
656
657 .metasync-media-optimization-page .metasync-tab-nav {
658 border-bottom: none;
659 margin: 0;
660 padding: 0;
661 display: flex;
662 gap: 4px;
663 background: transparent;
664 list-style: none;
665 }
666
667 .metasync-media-optimization-page .metasync-tab-nav li {
668 display: inline-block;
669 margin: 0;
670 }
671
672 .metasync-media-optimization-page .metasync-tab-nav a {
673 display: flex;
674 align-items: center;
675 gap: 4px;
676 padding: 12px 20px;
677 text-decoration: none;
678 color: var(--dashboard-text-secondary);
679 border-bottom: none;
680 border-radius: 8px;
681 transition: all 0.3s ease;
682 font-weight: 500;
683 font-size: 14px;
684 background: transparent;
685 position: relative;
686 overflow: hidden;
687 }
688
689 .metasync-media-optimization-page .metasync-tab-nav a .dashicons {
690 font-size: 16px;
691 width: 16px;
692 height: 16px;
693 line-height: 1;
694 flex-shrink: 0;
695 }
696
697 .metasync-media-optimization-page .metasync-tab-nav a:hover {
698 color: var(--dashboard-text-primary);
699 background: rgba(255, 255, 255, 0.05);
700 }
701
702 .metasync-media-optimization-page .metasync-tab-nav a.active {
703 color: var(--dashboard-text-primary);
704 background: var(--dashboard-card-hover);
705 box-shadow: var(--dashboard-shadow);
706 font-weight: 600;
707 }
708
709 .metasync-media-optimization-page .metasync-tab-nav a.active::after {
710 content: '';
711 position: absolute;
712 bottom: 0;
713 left: 0;
714 right: 0;
715 height: 2px;
716 background: var(--dashboard-accent);
717 border-radius: 1px;
718 }
719
720 .metasync-media-optimization-page .metasync-tab-content {
721 display: none;
722 }
723
724 .metasync-media-optimization-page .metasync-tab-content.active {
725 display: block;
726 }
727
728 /* ══════════════════════════════════════════
729 Image Library Styles
730 ══════════════════════════════════════════ */
731
732 /* ── Stats Card ── */
733 .metasync-stats-card {
734 margin-bottom: 20px;
735 }
736
737 .metasync-stats-row {
738 display: flex;
739 gap: 30px;
740 align-items: center;
741 padding: 20px;
742 }
743
744 .metasync-stat-item {
745 display: flex;
746 flex-direction: column;
747 gap: 4px;
748 }
749
750 .metasync-stat-rate {
751 margin-left: auto;
752 }
753
754 .metasync-stat-number {
755 font-size: 28px;
756 font-weight: 700;
757 color: var(--dashboard-text-primary);
758 line-height: 1;
759 }
760
761 .metasync-stat-success .metasync-stat-number {
762 color: var(--dashboard-success);
763 }
764
765 .metasync-stat-pending .metasync-stat-number {
766 color: var(--dashboard-warning);
767 }
768
769 .metasync-stat-label {
770 font-size: 12px;
771 color: var(--dashboard-text-secondary);
772 text-transform: uppercase;
773 letter-spacing: 0.5px;
774 }
775
776 .metasync-stat-progress-wrap {
777 display: flex;
778 align-items: center;
779 gap: 10px;
780 }
781
782 .metasync-stat-rate .metasync-stat-progress-wrap {
783 min-height: 28px;
784 align-items: center;
785 }
786
787 .metasync-stat-progress-bar {
788 width: 200px;
789 height: 8px;
790 background: var(--dashboard-border);
791 border-radius: 4px;
792 overflow: hidden;
793 }
794
795 .metasync-stat-progress-fill {
796 height: 100%;
797 background: var(--dashboard-gradient-primary);
798 border-radius: 4px;
799 transition: width 0.5s ease;
800 }
801
802 .metasync-stat-percentage {
803 font-size: 20px;
804 font-weight: 700;
805 color: var(--dashboard-text-primary);
806 }
807
808 /* ── Batch Progress ── */
809 .metasync-batch-card {
810 margin-bottom: 20px;
811 padding: 20px;
812 border-left: 3px solid var(--dashboard-accent);
813 }
814
815 .metasync-batch-header {
816 display: flex;
817 justify-content: space-between;
818 align-items: center;
819 margin-bottom: 12px;
820 }
821
822 .metasync-batch-info {
823 display: flex;
824 align-items: center;
825 gap: 10px;
826 }
827
828 .metasync-batch-spinner {
829 width: 18px;
830 height: 18px;
831 border: 2px solid var(--dashboard-border);
832 border-top-color: var(--dashboard-accent);
833 border-radius: 50%;
834 animation: metasync-spin 0.8s linear infinite;
835 }
836
837 @keyframes metasync-spin {
838 to { transform: rotate(360deg); }
839 }
840
841 .metasync-batch-text {
842 color: var(--dashboard-text-primary);
843 font-weight: 500;
844 }
845
846 .metasync-batch-progress-bar {
847 width: 100%;
848 height: 6px;
849 background: var(--dashboard-border);
850 border-radius: 3px;
851 overflow: hidden;
852 margin-bottom: 8px;
853 }
854
855 .metasync-batch-progress-fill {
856 height: 100%;
857 background: var(--dashboard-gradient-primary);
858 border-radius: 3px;
859 transition: width 0.3s ease;
860 }
861
862 .metasync-batch-details {
863 font-size: 13px;
864 color: var(--dashboard-text-secondary);
865 }
866
867 .metasync-batch-failed {
868 color: var(--dashboard-error);
869 font-weight: 600;
870 }
871
872 /* ── Batch Complete ── */
873 .metasync-batch-complete-card {
874 margin-bottom: 20px;
875 padding: 14px 20px;
876 display: flex;
877 align-items: center;
878 gap: 10px;
879 border-left: 3px solid var(--dashboard-success);
880 color: var(--dashboard-text-primary);
881 }
882
883 .metasync-batch-complete-card .metasync-dismiss-btn {
884 margin-left: auto;
885 background: none;
886 border: none;
887 color: var(--dashboard-text-secondary);
888 cursor: pointer;
889 padding: 0;
890 }
891
892 .metasync-batch-complete-card .metasync-dismiss-btn:hover {
893 color: var(--dashboard-text-primary);
894 }
895
896 /* ── Unified Toolbar (Optimize All + Search) ── */
897 .metasync-table-toolbar {
898 display: flex;
899 align-items: center;
900 justify-content: space-between;
901 gap: 12px;
902 margin-bottom: 16px;
903 background: var(--dashboard-card-bg);
904 border: 1px solid var(--dashboard-border);
905 border-radius: 8px;
906 padding: 16px 20px;
907 }
908
909 .metasync-toolbar-left {
910 display: flex;
911 align-items: center;
912 gap: 8px;
913 }
914
915 .metasync-toolbar-right {
916 display: flex;
917 align-items: center;
918 gap: 6px;
919 }
920
921 .metasync-toolbar-right .search-box {
922 float: none !important;
923 display: flex;
924 align-items: center;
925 gap: 6px;
926 margin: 0 !important;
927 padding: 0 !important;
928 }
929
930 .metasync-toolbar-right .search-box label {
931 display: none;
932 }
933
934 .metasync-toolbar-right .search-box .metasync-search-input-wrap {
935 position: relative;
936 display: inline-flex;
937 align-items: center;
938 }
939
940 .metasync-toolbar-right .search-box .metasync-search-input-wrap::before {
941 content: '';
942 position: absolute;
943 left: 10px;
944 top: 50%;
945 transform: translateY(-50%);
946 width: 15px;
947 height: 15px;
948 background-image: url("data:image/svg+xml,%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%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
949 background-repeat: no-repeat;
950 background-size: contain;
951 pointer-events: none;
952 z-index: 1;
953 }
954
955 .metasync-toolbar-right .search-box input[type="search"],
956 .metasync-toolbar-right .search-box input[type="text"] {
957 background: var(--dashboard-card-bg);
958 color: var(--dashboard-text-primary);
959 border: 1px solid var(--dashboard-border);
960 border-radius: 6px;
961 padding: 6px 30px 6px 34px;
962 height: 32px;
963 line-height: 32px;
964 font-size: 13px;
965 min-width: 260px;
966 box-sizing: border-box;
967 }
968
969 .metasync-toolbar-right .search-box input[type="search"]::-webkit-search-cancel-button {
970 -webkit-appearance: none;
971 display: none;
972 }
973
974 .metasync-toolbar-right .search-box .metasync-clear-search {
975 position: absolute;
976 right: 10px;
977 top: 50%;
978 transform: translateY(-50%);
979 background: none;
980 border: none;
981 padding: 0;
982 cursor: pointer;
983 color: var(--dashboard-text-secondary);
984 font-size: 16px;
985 line-height: 1;
986 display: none;
987 align-items: center;
988 justify-content: center;
989 width: 16px;
990 height: 16px;
991 }
992
993 .metasync-toolbar-right .search-box .metasync-clear-search:hover {
994 color: var(--dashboard-text-primary);
995 }
996
997 .metasync-toolbar-right .search-box .metasync-clear-search.visible {
998 display: flex;
999 }
1000
1001 .metasync-toolbar-right .search-box input[type="search"]:focus,
1002 .metasync-toolbar-right .search-box input[type="text"]:focus {
1003 border-color: var(--dashboard-accent);
1004 outline: none;
1005 box-shadow: 0 0 0 1px var(--dashboard-accent);
1006 }
1007
1008 .metasync-toolbar-right .search-box .button {
1009 background: var(--dashboard-card-bg);
1010 color: var(--dashboard-text-primary);
1011 border: 1px solid var(--dashboard-border);
1012 border-radius: 6px;
1013 height: 32px;
1014 line-height: 30px;
1015 padding: 0 14px;
1016 font-size: 13px;
1017 cursor: pointer;
1018 box-sizing: border-box;
1019 }
1020
1021 .metasync-toolbar-right .search-box .button:hover {
1022 background: var(--dashboard-card-hover);
1023 border-color: var(--dashboard-text-secondary);
1024 }
1025
1026 #metasync-optimize-all {
1027 display: inline-flex;
1028 align-items: center;
1029 gap: 6px;
1030 height: 32px;
1031 padding: 0 16px;
1032 font-size: 13px;
1033 font-weight: 600;
1034 border-radius: 6px;
1035 background: var(--dashboard-gradient-primary);
1036 border: none;
1037 color: #fff;
1038 cursor: pointer;
1039 white-space: nowrap;
1040 transition: opacity 0.2s;
1041 }
1042
1043 #metasync-optimize-all:hover {
1044 opacity: 0.9;
1045 }
1046
1047 #metasync-optimize-all:disabled {
1048 opacity: 0.5;
1049 cursor: not-allowed;
1050 }
1051
1052 #metasync-optimize-all .dashicons {
1053 font-size: 16px;
1054 width: 16px;
1055 height: 16px;
1056 margin-top: 0;
1057 }
1058
1059 .metasync-count-badge {
1060 display: inline-block;
1061 background: rgba(255, 255, 255, 0.2);
1062 padding: 1px 8px;
1063 border-radius: 10px;
1064 font-size: 11px;
1065 font-weight: 700;
1066 }
1067
1068 /* ── Tablenav (Bulk Actions + Filter | Pagination) ── */
1069 #metasync-image-library-form .tablenav {
1070 display: flex;
1071 align-items: center;
1072 gap: 10px;
1073 height: auto;
1074 padding: 14px 20px;
1075 margin: 0;
1076 float: none;
1077 background: var(--dashboard-card-bg);
1078 border: 1px solid var(--dashboard-border);
1079 border-radius: 8px;
1080 }
1081
1082 #metasync-image-library-form .tablenav.top {
1083 margin-bottom: -1px;
1084 border-bottom-left-radius: 0;
1085 border-bottom-right-radius: 0;
1086 }
1087
1088 #metasync-image-library-form .tablenav.bottom {
1089 margin-top: -1px;
1090 border-top-left-radius: 0;
1091 border-top-right-radius: 0;
1092 }
1093
1094 #metasync-image-library-form .tablenav .actions {
1095 float: none;
1096 display: flex;
1097 align-items: center;
1098 gap: 6px;
1099 padding: 0;
1100 margin: 0;
1101 }
1102
1103 #metasync-image-library-form .tablenav .bulkactions {
1104 margin: 0;
1105 }
1106
1107 #metasync-image-library-form .tablenav .tablenav-pages {
1108 float: none;
1109 margin-left: auto;
1110 display: flex;
1111 align-items: center;
1112 gap: 6px;
1113 }
1114
1115 #metasync-image-library-form .tablenav br.clear {
1116 display: none;
1117 }
1118
1119 /* ── Tablenav Inputs (select, button) ── */
1120 #metasync-image-library-form .tablenav select {
1121 background-color: var(--dashboard-card-bg);
1122 color: var(--dashboard-text-primary);
1123 border: 1px solid var(--dashboard-border);
1124 border-radius: 6px;
1125 height: 34px;
1126 line-height: 32px;
1127 padding: 0 30px 0 10px;
1128 font-size: 13px;
1129 box-sizing: border-box;
1130 cursor: pointer;
1131 appearance: none;
1132 -webkit-appearance: none;
1133 -moz-appearance: none;
1134 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
1135 background-repeat: no-repeat;
1136 background-position: right 10px center;
1137 background-size: 10px 10px;
1138 }
1139
1140 #metasync-image-library-form .tablenav select:focus {
1141 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='18 15 12 9 6 15'/%3E%3C/svg%3E");
1142 }
1143
1144 #metasync-image-library-form .tablenav .actions .button {
1145 background: var(--dashboard-card-hover);
1146 color: var(--dashboard-text-primary);
1147 border: 1px solid var(--dashboard-border);
1148 border-radius: 6px;
1149 height: 34px;
1150 line-height: 32px;
1151 padding: 0 14px;
1152 font-size: 13px;
1153 box-sizing: border-box;
1154 cursor: pointer;
1155 transition: all 0.15s ease;
1156 }
1157
1158 #metasync-image-library-form .tablenav .actions .button:hover {
1159 background: var(--dashboard-card-hover);
1160 border-color: var(--dashboard-text-secondary);
1161 }
1162
1163 /* ── Pagination ── */
1164 #metasync-image-library-form .tablenav-pages .pagination-links {
1165 display: flex;
1166 align-items: center;
1167 gap: 4px;
1168 }
1169
1170 #metasync-image-library-form .tablenav-pages .button,
1171 #metasync-image-library-form .tablenav-pages .tablenav-pages-navspan {
1172 background: var(--dashboard-card-hover);
1173 color: var(--dashboard-text-secondary);
1174 border: 1px solid var(--dashboard-border);
1175 border-radius: 6px;
1176 padding: 0 10px;
1177 min-width: 34px;
1178 height: 34px;
1179 line-height: 32px;
1180 text-align: center;
1181 font-size: 14px;
1182 box-sizing: border-box;
1183 transition: all 0.15s ease;
1184 }
1185
1186 #metasync-image-library-form .tablenav-pages .button:hover {
1187 background: var(--dashboard-accent);
1188 color: #fff;
1189 border-color: var(--dashboard-accent);
1190 }
1191
1192 #metasync-image-library-form .tablenav-pages .tablenav-pages-navspan.disabled {
1193 opacity: 0.4;
1194 }
1195
1196 #metasync-image-library-form .tablenav-pages .current-page {
1197 background: var(--dashboard-card-bg);
1198 color: var(--dashboard-text-primary);
1199 border: 1px solid var(--dashboard-border);
1200 border-radius: 6px;
1201 width: 42px;
1202 height: 34px;
1203 line-height: 32px;
1204 text-align: center;
1205 font-size: 13px;
1206 box-sizing: border-box;
1207 }
1208
1209 #metasync-image-library-form .tablenav-pages .current-page:focus {
1210 border-color: var(--dashboard-accent);
1211 outline: none;
1212 box-shadow: 0 0 0 1px var(--dashboard-accent);
1213 }
1214
1215 #metasync-image-library-form .tablenav .displaying-num {
1216 color: var(--dashboard-text-secondary);
1217 font-size: 13px;
1218 margin-right: 8px;
1219 }
1220
1221 #metasync-image-library-form .tablenav .paging-input {
1222 font-size: 13px;
1223 color: var(--dashboard-text-secondary);
1224 display: inline-flex;
1225 align-items: center;
1226 gap: 6px;
1227 }
1228
1229 /* ── List Table Dark Theme ── */
1230 #metasync-image-library-form .wp-list-table {
1231 border: 1px solid var(--dashboard-border);
1232 border-radius: 0;
1233 overflow: hidden;
1234 border-collapse: separate;
1235 border-spacing: 0;
1236 margin-top: -1px;
1237 margin-bottom: -1px;
1238 }
1239
1240 #metasync-image-library-form .wp-list-table thead th,
1241 #metasync-image-library-form .wp-list-table thead td {
1242 background: var(--dashboard-card-bg);
1243 color: var(--dashboard-text-secondary);
1244 border-bottom: 1px solid var(--dashboard-border);
1245 font-weight: 600;
1246 font-size: 12px;
1247 text-transform: uppercase;
1248 letter-spacing: 0.5px;
1249 padding: 12px 10px;
1250 }
1251
1252 #metasync-image-library-form .wp-list-table thead th a {
1253 color: var(--dashboard-text-secondary);
1254 }
1255
1256 #metasync-image-library-form .wp-list-table thead th a:hover {
1257 color: var(--dashboard-text-primary);
1258 }
1259
1260 #metasync-image-library-form .wp-list-table tbody tr {
1261 background: var(--dashboard-card-bg);
1262 }
1263
1264 #metasync-image-library-form .wp-list-table tbody tr:hover {
1265 background: var(--dashboard-card-hover);
1266 }
1267
1268 #metasync-image-library-form .wp-list-table tbody td {
1269 color: var(--dashboard-text-primary);
1270 border-bottom: 1px solid var(--dashboard-border);
1271 padding: 10px;
1272 vertical-align: middle;
1273 }
1274
1275 #metasync-image-library-form .wp-list-table tfoot th,
1276 #metasync-image-library-form .wp-list-table tfoot td {
1277 background: var(--dashboard-card-bg);
1278 color: var(--dashboard-text-secondary);
1279 border-top: 1px solid var(--dashboard-border);
1280 padding: 12px 10px;
1281 }
1282
1283 /* Column widths */
1284 #metasync-image-library-form .wp-list-table .column-cb { width: 30px; }
1285 #metasync-image-library-form .wp-list-table .column-image { width: 40%; }
1286 #metasync-image-library-form .wp-list-table .column-post { width: 25%; }
1287 #metasync-image-library-form .wp-list-table .column-status { width: 15%; }
1288 #metasync-image-library-form .wp-list-table .column-actions { width: 15%; }
1289
1290 /* ── Image Cell ── */
1291 .metasync-image-cell {
1292 display: flex;
1293 align-items: center;
1294 gap: 12px;
1295 }
1296
1297 .metasync-image-thumb img {
1298 border-radius: 4px;
1299 display: block;
1300 }
1301
1302 /* Placeholder shown when an attachment's file is missing on disk */
1303 .metasync-image-thumb-missing {
1304 width: 50px;
1305 height: 50px;
1306 border-radius: 4px;
1307 display: inline-flex;
1308 align-items: center;
1309 justify-content: center;
1310 background: rgba(239, 68, 68, 0.08);
1311 border: 1px dashed rgba(239, 68, 68, 0.4);
1312 color: #ef4444;
1313 }
1314
1315 .metasync-image-thumb-missing .dashicons {
1316 font-size: 22px;
1317 width: 22px;
1318 height: 22px;
1319 }
1320
1321 .metasync-image-info {
1322 display: flex;
1323 flex-direction: column;
1324 gap: 2px;
1325 min-width: 0;
1326 }
1327
1328 .metasync-image-filename {
1329 color: var(--dashboard-text-primary);
1330 font-size: 13px;
1331 }
1332
1333 .metasync-image-url {
1334 display: flex;
1335 align-items: center;
1336 gap: 4px;
1337 }
1338
1339 .metasync-image-url a {
1340 color: var(--dashboard-text-secondary);
1341 font-size: 12px;
1342 text-decoration: none;
1343 overflow: hidden;
1344 text-overflow: ellipsis;
1345 white-space: nowrap;
1346 }
1347
1348 .metasync-image-url a:hover {
1349 color: var(--dashboard-accent);
1350 }
1351
1352 /* ── Copy Button ── */
1353 .metasync-copy-btn {
1354 background: none;
1355 border: none;
1356 color: var(--dashboard-text-secondary);
1357 cursor: pointer;
1358 padding: 2px;
1359 border-radius: 3px;
1360 display: inline-flex;
1361 align-items: center;
1362 justify-content: center;
1363 transition: all 0.2s ease;
1364 }
1365
1366 .metasync-copy-btn:hover {
1367 color: var(--dashboard-accent);
1368 background: rgba(59, 130, 246, 0.1);
1369 }
1370
1371 .metasync-copy-btn .dashicons {
1372 font-size: 14px;
1373 width: 14px;
1374 height: 14px;
1375 }
1376
1377 .metasync-copy-btn.copied {
1378 color: var(--dashboard-success);
1379 }
1380
1381 /* ── Status Badges ── */
1382 .metasync-status-badge {
1383 display: inline-block;
1384 padding: 4px 10px;
1385 border-radius: 12px;
1386 font-size: 12px;
1387 font-weight: 600;
1388 letter-spacing: 0.3px;
1389 }
1390
1391 .metasync-status-optimized {
1392 background: rgba(16, 185, 129, 0.15);
1393 color: var(--dashboard-success);
1394 }
1395
1396 .metasync-status-unoptimized {
1397 background: rgba(156, 163, 175, 0.15);
1398 color: var(--dashboard-text-secondary);
1399 }
1400
1401 .metasync-status-missing {
1402 background: rgba(239, 68, 68, 0.15);
1403 color: #ef4444;
1404 }
1405
1406 /* ── Size Savings ── */
1407 .metasync-size-savings {
1408 display: flex;
1409 flex-direction: column;
1410 gap: 1px;
1411 margin-top: 6px;
1412 font-size: 12px;
1413 line-height: 1.4;
1414 }
1415
1416 .metasync-savings-pct {
1417 color: var(--dashboard-success);
1418 font-weight: 600;
1419 }
1420
1421 .metasync-savings-detail {
1422 color: var(--dashboard-text-secondary);
1423 font-size: 11px;
1424 }
1425
1426 /* ── Unoptimized Size Info ── */
1427 .metasync-size-info {
1428 margin-top: 6px;
1429 }
1430
1431 .metasync-size-detail {
1432 color: var(--dashboard-text-secondary);
1433 font-size: 12px;
1434 }
1435
1436 /* ── Muted Text ── */
1437 .metasync-text-muted {
1438 color: var(--dashboard-text-secondary);
1439 font-style: italic;
1440 }
1441
1442 /* ── Post Link Rows ── */
1443 .metasync-post-link-row {
1444 display: flex;
1445 align-items: center;
1446 gap: 4px;
1447 }
1448 .metasync-post-link-row + .metasync-post-link-row {
1449 margin-top: 4px;
1450 }
1451
1452 /* ── Action Buttons ── */
1453 .metasync-optimize-btn,
1454 .metasync-revert-btn {
1455 display: inline-flex !important;
1456 align-items: center;
1457 justify-content: center;
1458 gap: 4px;
1459 min-width: 96px;
1460 white-space: nowrap;
1461 box-sizing: border-box;
1462 }
1463
1464 .metasync-optimize-btn .dashicons,
1465 .metasync-revert-btn .dashicons {
1466 font-size: 14px;
1467 width: 14px;
1468 height: 14px;
1469 }
1470
1471 .metasync-optimize-btn.loading,
1472 .metasync-revert-btn.loading {
1473 opacity: 0.7;
1474 pointer-events: none;
1475 }
1476
1477 /* ── No Items ── */
1478 #metasync-image-library-form .wp-list-table .no-items td {
1479 text-align: center;
1480 padding: 40px 20px;
1481 color: var(--dashboard-text-secondary);
1482 font-size: 14px;
1483 }
1484
1485 /* ── Checkbox ── */
1486 #metasync-image-library-form .wp-list-table .column-cb,
1487 #metasync-image-library-form .wp-list-table .check-column {
1488 vertical-align: middle;
1489 text-align: center;
1490 }
1491
1492 #metasync-image-library-form .wp-list-table input[type="checkbox"] {
1493 margin: 0;
1494 vertical-align: middle;
1495 }
1496
1497 /* ── Screen reader text ── */
1498 #metasync-image-library-form .screen-reader-text {
1499 clip: rect(1px, 1px, 1px, 1px);
1500 position: absolute !important;
1501 height: 1px;
1502 width: 1px;
1503 overflow: hidden;
1504 }
1505
1506 /* ── Responsive ── */
1507 @media screen and (max-width: 782px) {
1508 .metasync-stats-row {
1509 flex-wrap: wrap;
1510 gap: 20px;
1511 }
1512
1513 .metasync-stat-item {
1514 min-width: 80px;
1515 }
1516
1517 .metasync-stat-rate {
1518 margin-left: 0;
1519 }
1520
1521 .metasync-table-toolbar {
1522 flex-direction: column;
1523 align-items: stretch;
1524 }
1525
1526 .metasync-toolbar-right .search-box input[type="search"],
1527 .metasync-toolbar-right .search-box input[type="text"] {
1528 min-width: 0;
1529 flex: 1;
1530 }
1531 }
1532