PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.1.1
MxChat – AI Chatbot & Content Generation for WordPress v3.1.1
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
mxchat-basic / css / admin-content.css

admin-content.css in MxChat – AI Chatbot & Content Generation for WordPress 3.1.1, at css/admin-content.css

2,998 lines 66.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MxChat Content Generator Styles
3 *
4 * @package MxChat
5 * @since 3.1.0
6 */
7
8 /* ─── Toolbar ───────────────────────────────────────────────────── */
9
10 .mxch-cg-toolbar {
11 display: flex;
12 align-items: center;
13 justify-content: space-between;
14 gap: 12px;
15 padding: 10px 16px;
16 background: var(--mxch-card-bg, #fff);
17 border: 1px solid var(--mxch-card-border, #e2e4e9);
18 border-radius: 10px;
19 margin-bottom: 16px;
20 flex-wrap: wrap;
21 }
22
23 .mxch-cg-toolbar-left {
24 display: flex;
25 align-items: center;
26 gap: 12px;
27 flex: 1 1 0;
28 min-width: 0;
29 overflow: visible;
30 }
31
32 .mxch-cg-toolbar-title {
33 font-size: 15px;
34 font-weight: 600;
35 color: var(--mxch-text-primary, #1a1a2e);
36 margin: 0;
37 overflow: hidden;
38 text-overflow: ellipsis;
39 white-space: nowrap;
40 }
41
42 .mxch-cg-toolbar-right {
43 display: flex;
44 align-items: center;
45 gap: 6px;
46 flex-shrink: 0;
47 }
48
49 /* ─── Generate Button (compact) ─────────────────────────────────── */
50
51 .mxch-cg-generate-btn {
52 display: inline-flex;
53 align-items: center;
54 justify-content: center;
55 gap: 6px;
56 padding: 8px 16px;
57 border: none;
58 border-radius: 8px;
59 background: var(--mxch-primary, #7873f5);
60 color: #fff;
61 font-size: 13px;
62 font-weight: 600;
63 cursor: pointer;
64 transition: all 0.2s;
65 white-space: nowrap;
66 flex-shrink: 0;
67 }
68
69 .mxch-cg-generate-btn:hover {
70 background: var(--mxch-primary-hover, #6863e5);
71 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
72 }
73
74 .mxch-cg-generate-btn:disabled {
75 opacity: 0.6;
76 cursor: not-allowed;
77 box-shadow: none;
78 }
79
80 .mxch-cg-generate-btn.mxch-cg-loading {
81 position: relative;
82 color: transparent;
83 }
84
85 .mxch-cg-generate-btn.mxch-cg-loading::after {
86 content: '';
87 position: absolute;
88 width: 18px;
89 height: 18px;
90 border: 2px solid rgba(255, 255, 255, 0.3);
91 border-top-color: #fff;
92 border-radius: 50%;
93 animation: mxch-spin 0.6s linear infinite;
94 }
95
96 .mxch-cg-generate-btn-full {
97 width: 100%;
98 padding: 12px 24px;
99 font-size: 14px;
100 }
101
102 @keyframes mxch-spin {
103 to { transform: rotate(360deg); }
104 }
105
106 /* ─── Action Buttons (toolbar) ──────────────────────────────────── */
107
108 .mxch-cg-action-btn {
109 display: inline-flex;
110 align-items: center;
111 gap: 4px;
112 padding: 6px 10px;
113 border: 1px solid var(--mxch-input-border, #d1d5db);
114 border-radius: 6px;
115 background: transparent;
116 color: var(--mxch-text-secondary, #64748b);
117 font-size: 12px;
118 text-decoration: none;
119 transition: all 0.2s;
120 cursor: pointer;
121 white-space: nowrap;
122 }
123
124 .mxch-cg-action-btn:hover {
125 border-color: var(--mxch-primary, #7873f5);
126 color: var(--mxch-primary, #7873f5);
127 text-decoration: none;
128 }
129
130 /* Status Badge (clickable dropdown trigger) */
131 .mxch-cg-status-badge {
132 display: inline-flex;
133 align-items: center;
134 gap: 4px;
135 padding: 2px 8px;
136 border: none;
137 border-radius: 4px;
138 font-size: 11px;
139 font-weight: 600;
140 text-transform: uppercase;
141 letter-spacing: 0.5px;
142 line-height: 1;
143 cursor: pointer;
144 transition: opacity 0.2s, box-shadow 0.2s;
145 flex-shrink: 0;
146 }
147
148 .mxch-cg-status-badge:hover {
149 opacity: 0.85;
150 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
151 }
152
153 .mxch-cg-badge-draft {
154 background: #fef3c7;
155 color: #92400e;
156 }
157
158 .mxch-cg-badge-publish {
159 background: #d1fae5;
160 color: #065f46;
161 }
162
163 .mxch-cg-badge-future {
164 background: #dbeafe;
165 color: #1e40af;
166 }
167
168 /* ── Status Dropdown ──────────────────────────────────── */
169
170 .mxch-cg-status-dropdown {
171 position: relative;
172 flex-shrink: 0;
173 }
174
175 .mxch-cg-status-chevron {
176 opacity: 0.6;
177 transition: transform 0.2s;
178 flex-shrink: 0;
179 }
180
181 .mxch-cg-status-dropdown.mxch-cg-dropdown-open .mxch-cg-status-chevron {
182 transform: rotate(180deg);
183 }
184
185 .mxch-cg-status-menu {
186 position: absolute;
187 top: calc(100% + 6px);
188 left: 0;
189 min-width: 160px;
190 background: var(--mxch-card-bg, #fff);
191 border: 1px solid var(--mxch-card-border, #e2e4e9);
192 border-radius: 8px;
193 box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
194 z-index: 100060;
195 padding: 4px;
196 animation: mxch-dropdown-in 0.15s ease-out;
197 }
198
199 @keyframes mxch-dropdown-in {
200 from { opacity: 0; transform: translateY(-4px); }
201 to { opacity: 1; transform: translateY(0); }
202 }
203
204 .mxch-cg-status-option {
205 display: flex;
206 align-items: center;
207 gap: 8px;
208 width: 100%;
209 padding: 7px 10px;
210 border: none;
211 border-radius: 5px;
212 background: transparent;
213 color: var(--mxch-text-primary, #1a1a2e);
214 font-size: 12px;
215 font-weight: 500;
216 cursor: pointer;
217 text-align: left;
218 transition: background 0.15s;
219 }
220
221 .mxch-cg-status-option:hover {
222 background: #f1f5f9;
223 }
224
225 .mxch-cg-status-option.mxch-cg-status-active {
226 font-weight: 600;
227 background: #f8fafc;
228 }
229
230 .mxch-cg-status-dot {
231 width: 8px;
232 height: 8px;
233 border-radius: 50%;
234 flex-shrink: 0;
235 }
236
237 .mxch-cg-dot-draft {
238 background: #f59e0b;
239 }
240
241 .mxch-cg-dot-publish {
242 background: #10b981;
243 }
244
245 .mxch-cg-dot-future {
246 background: #3b82f6;
247 }
248
249 .mxch-cg-status-schedule-row {
250 display: flex;
251 align-items: center;
252 gap: 4px;
253 padding: 6px 10px 4px;
254 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
255 margin-top: 4px;
256 }
257
258 .mxch-cg-status-schedule-input {
259 flex: 1;
260 font-size: 11px;
261 padding: 4px 6px;
262 min-width: 0;
263 }
264
265 .mxch-cg-status-schedule-confirm {
266 display: flex;
267 align-items: center;
268 justify-content: center;
269 width: 28px;
270 height: 28px;
271 border: none;
272 border-radius: 5px;
273 background: var(--mxch-primary, #7873f5);
274 color: #fff;
275 cursor: pointer;
276 flex-shrink: 0;
277 transition: background 0.15s;
278 }
279
280 .mxch-cg-status-schedule-confirm:hover {
281 background: var(--mxch-primary-hover, #6863e5);
282 }
283
284 .mxch-cg-status-badge.mxch-cg-status-updating {
285 pointer-events: none;
286 opacity: 0.6;
287 }
288
289 .mxch-cg-status-badge.mxch-cg-status-updating .mxch-cg-status-chevron {
290 animation: mxch-spin 0.6s linear infinite;
291 }
292
293 /* Viewport Toggle */
294 .mxch-cg-viewport-toggle {
295 display: flex;
296 background: #f1f5f9;
297 border-radius: 6px;
298 padding: 2px;
299 }
300
301 .mxch-cg-viewport-btn {
302 display: flex;
303 align-items: center;
304 justify-content: center;
305 width: 28px;
306 height: 28px;
307 border: none;
308 border-radius: 4px;
309 background: transparent;
310 color: var(--mxch-text-muted, #94a3b8);
311 cursor: pointer;
312 transition: all 0.2s;
313 }
314
315 .mxch-cg-viewport-btn.active {
316 background: #fff;
317 color: var(--mxch-primary, #7873f5);
318 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
319 }
320
321 /* ─── Full-Width Preview ────────────────────────────────────────── */
322
323 .mxch-cg-preview-wrap {
324 border: 1px solid var(--mxch-card-border, #e2e4e9);
325 border-radius: 10px;
326 overflow: hidden;
327 background: #f8f9fa;
328 position: relative;
329 }
330
331 .mxch-cg-preview-container {
332 width: 100%;
333 min-height: calc(100vh - 220px);
334 position: relative;
335 overflow: hidden;
336 background: #fff;
337 transition: max-width 0.3s ease;
338 }
339
340 .mxch-cg-preview-container.mxch-cg-viewport-mobile {
341 max-width: 375px;
342 margin: 0 auto;
343 min-height: 667px;
344 border-left: 1px solid var(--mxch-card-border, #e2e4e9);
345 border-right: 1px solid var(--mxch-card-border, #e2e4e9);
346 }
347
348 .mxch-cg-preview-iframe {
349 width: 1400px;
350 height: calc(100vh - 220px);
351 border: none;
352 display: block;
353 transform-origin: 0 0;
354 }
355
356 /* ─── Inline Generation Form ────────────────────────────────────── */
357
358 .mxch-cg-inline-form {
359 display: flex;
360 align-items: center;
361 justify-content: center;
362 min-height: calc(100vh - 220px);
363 padding: 40px 20px;
364 }
365
366 .mxch-cg-inline-form-inner {
367 width: 100%;
368 max-width: 560px;
369 background: var(--mxch-card-bg, #fff);
370 border: 1px solid var(--mxch-card-border, #e2e4e9);
371 border-radius: 14px;
372 padding: 28px 28px 24px;
373 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
374 animation: mxch-inline-form-in 0.3s ease-out;
375 }
376
377 @keyframes mxch-inline-form-in {
378 from { opacity: 0; transform: translateY(12px); }
379 to { opacity: 1; transform: translateY(0); }
380 }
381
382 .mxch-cg-inline-form-header {
383 display: flex;
384 align-items: center;
385 gap: 14px;
386 margin-bottom: 20px;
387 }
388
389 .mxch-cg-inline-form-header svg {
390 color: var(--mxch-primary, #7873f5);
391 opacity: 0.7;
392 flex-shrink: 0;
393 }
394
395 .mxch-cg-inline-form-header h3 {
396 font-size: 18px;
397 font-weight: 600;
398 color: var(--mxch-text-primary, #1a1a2e);
399 margin: 0 0 2px;
400 }
401
402 .mxch-cg-inline-form-header p {
403 font-size: 13px;
404 color: var(--mxch-text-muted, #94a3b8);
405 margin: 0;
406 }
407
408 .mxch-cg-inline-form.mxch-cg-form-collapsing {
409 animation: mxch-inline-form-out 0.3s ease-in forwards;
410 }
411
412 @keyframes mxch-inline-form-out {
413 from { opacity: 1; transform: translateY(0); }
414 to { opacity: 0; transform: translateY(-12px); }
415 }
416
417 /* Toolbar hidden when inline form is visible */
418 .mxch-cg-toolbar.mxch-cg-toolbar-minimal {
419 display: none;
420 }
421
422 /* Preview container transparent when form is showing */
423 .mxch-cg-preview-wrap.mxch-cg-preview-wrap-form {
424 border: none;
425 background: transparent;
426 }
427
428 /* ─── Generation Form ──────────────────────────────────────────── */
429
430 .mxch-cg-form {
431 display: flex;
432 flex-direction: column;
433 gap: 14px;
434 }
435
436 .mxch-cg-prompt {
437 width: 100%;
438 min-height: 80px;
439 padding: 12px 14px;
440 border: 1px solid var(--mxch-input-border, #d1d5db);
441 border-radius: 8px;
442 background: var(--mxch-input-bg, #fff);
443 color: var(--mxch-text-primary, #1a1a2e);
444 font-size: 14px;
445 line-height: 1.5;
446 resize: vertical;
447 transition: border-color 0.2s;
448 font-family: inherit;
449 }
450
451 .mxch-cg-prompt:focus {
452 outline: none;
453 border-color: var(--mxch-input-focus, #7873f5);
454 box-shadow: 0 0 0 3px var(--mxch-primary-light, rgba(120, 115, 245, 0.1));
455 }
456
457 .mxch-cg-options {
458 display: flex;
459 gap: 12px;
460 flex-wrap: wrap;
461 }
462
463 .mxch-cg-option {
464 flex: 1;
465 min-width: 120px;
466 }
467
468 .mxch-cg-option-label {
469 display: block;
470 font-size: 12px;
471 font-weight: 500;
472 color: var(--mxch-text-secondary, #64748b);
473 margin-bottom: 4px;
474 }
475
476 .mxch-cg-select,
477 .mxch-cg-input {
478 width: 100%;
479 padding: 8px 12px;
480 border: 1px solid var(--mxch-input-border, #d1d5db);
481 border-radius: 6px;
482 background: var(--mxch-input-bg, #fff);
483 color: var(--mxch-text-primary, #1a1a2e);
484 font-size: 13px;
485 transition: border-color 0.2s;
486 }
487
488 .mxch-cg-select:focus,
489 .mxch-cg-input:focus {
490 outline: none;
491 border-color: var(--mxch-input-focus, #7873f5);
492 box-shadow: 0 0 0 3px var(--mxch-primary-light, rgba(120, 115, 245, 0.1));
493 }
494
495 /* ─── Progress Bar (inside modal) ───────────────────────────────── */
496
497 .mxch-cg-progress {
498 margin-top: 14px;
499 padding-top: 14px;
500 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
501 }
502
503 .mxch-cg-progress-bar {
504 width: 100%;
505 height: 6px;
506 background: #e2e8f0;
507 border-radius: 3px;
508 overflow: hidden;
509 margin-bottom: 8px;
510 }
511
512 .mxch-cg-progress-fill {
513 height: 100%;
514 background: var(--mxch-primary, #7873f5);
515 border-radius: 3px;
516 transition: width 0.4s ease;
517 }
518
519 .mxch-cg-progress-text {
520 font-size: 13px;
521 color: var(--mxch-text-secondary, #64748b);
522 margin: 0;
523 }
524
525 /* ─── Mini Chat Panel (bottom overlay) ──────────────────────────── */
526
527 .mxch-cg-chat-panel {
528 position: fixed;
529 bottom: 20px;
530 right: 20px;
531 width: 380px;
532 max-height: 420px;
533 background: var(--mxch-card-bg, #fff);
534 border: 1px solid var(--mxch-card-border, #e2e4e9);
535 border-radius: 14px;
536 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
537 z-index: 100040;
538 display: flex;
539 flex-direction: column;
540 animation: mxch-chat-in 0.2s ease-out;
541 }
542
543 @keyframes mxch-chat-in {
544 from {
545 opacity: 0;
546 transform: translateY(16px);
547 }
548 to {
549 opacity: 1;
550 transform: translateY(0);
551 }
552 }
553
554 .mxch-cg-chat-panel-header {
555 display: flex;
556 align-items: center;
557 justify-content: space-between;
558 padding: 12px 16px;
559 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
560 flex-shrink: 0;
561 }
562
563 .mxch-cg-chat-panel-title {
564 font-size: 14px;
565 font-weight: 600;
566 color: var(--mxch-text-primary, #1a1a2e);
567 }
568
569 .mxch-cg-chat-panel-close {
570 display: flex;
571 align-items: center;
572 justify-content: center;
573 width: 28px;
574 height: 28px;
575 border: none;
576 border-radius: 6px;
577 background: transparent;
578 color: var(--mxch-text-muted, #94a3b8);
579 cursor: pointer;
580 transition: all 0.15s;
581 }
582
583 .mxch-cg-chat-panel-close:hover {
584 background: #f1f5f9;
585 color: var(--mxch-text-primary, #1a1a2e);
586 }
587
588 .mxch-cg-chat-messages {
589 flex: 1;
590 overflow-y: auto;
591 display: flex;
592 flex-direction: column;
593 gap: 8px;
594 padding: 12px 16px;
595 min-height: 120px;
596 max-height: 260px;
597 }
598
599 .mxch-cg-chat-messages::-webkit-scrollbar {
600 width: 4px;
601 }
602
603 .mxch-cg-chat-messages::-webkit-scrollbar-thumb {
604 background: #cbd5e1;
605 border-radius: 2px;
606 }
607
608 .mxch-cg-chat-msg {
609 display: flex;
610 }
611
612 .mxch-cg-chat-user {
613 justify-content: flex-end;
614 }
615
616 .mxch-cg-chat-assistant {
617 justify-content: flex-start;
618 }
619
620 .mxch-cg-chat-bubble {
621 max-width: 85%;
622 padding: 8px 12px;
623 border-radius: 12px;
624 font-size: 13px;
625 line-height: 1.5;
626 word-break: break-word;
627 }
628
629 .mxch-cg-chat-user .mxch-cg-chat-bubble {
630 background: var(--mxch-primary, #7873f5);
631 color: #fff;
632 border-bottom-right-radius: 4px;
633 }
634
635 .mxch-cg-chat-assistant .mxch-cg-chat-bubble {
636 background: #f1f5f9;
637 color: var(--mxch-text-primary, #1a1a2e);
638 border-bottom-left-radius: 4px;
639 }
640
641 /* Loading dots */
642 .mxch-cg-chat-loading {
643 display: flex;
644 align-items: center;
645 gap: 4px;
646 padding: 12px 16px;
647 }
648
649 .mxch-cg-chat-loading span {
650 width: 6px;
651 height: 6px;
652 background: #94a3b8;
653 border-radius: 50%;
654 animation: mxch-bounce 1.4s infinite both;
655 }
656
657 .mxch-cg-chat-loading span:nth-child(2) {
658 animation-delay: 0.16s;
659 }
660
661 .mxch-cg-chat-loading span:nth-child(3) {
662 animation-delay: 0.32s;
663 }
664
665 @keyframes mxch-bounce {
666 0%, 80%, 100% { transform: scale(0); }
667 40% { transform: scale(1); }
668 }
669
670 /* Chat Input */
671 .mxch-cg-chat-input-wrap {
672 display: flex;
673 gap: 8px;
674 align-items: flex-end;
675 padding: 12px 16px;
676 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
677 flex-shrink: 0;
678 }
679
680 .mxch-cg-chat-input {
681 flex: 1;
682 padding: 8px 12px;
683 border: 1px solid var(--mxch-input-border, #d1d5db);
684 border-radius: 16px;
685 background: var(--mxch-input-bg, #fff);
686 color: var(--mxch-text-primary, #1a1a2e);
687 font-size: 13px;
688 font-family: inherit;
689 outline: none;
690 transition: border-color 0.2s;
691 resize: none;
692 overflow-y: auto;
693 max-height: 150px;
694 line-height: 1.4;
695 }
696
697 .mxch-cg-chat-input:focus {
698 border-color: var(--mxch-input-focus, #7873f5);
699 }
700
701 .mxch-cg-chat-send {
702 display: flex;
703 align-items: center;
704 justify-content: center;
705 width: 34px;
706 height: 34px;
707 border: none;
708 border-radius: 50%;
709 background: var(--mxch-primary, #7873f5);
710 color: #fff;
711 cursor: pointer;
712 transition: all 0.2s;
713 flex-shrink: 0;
714 }
715
716 .mxch-cg-chat-send:hover:not(:disabled) {
717 background: var(--mxch-primary-hover, #6863e5);
718 }
719
720 .mxch-cg-chat-send:disabled {
721 opacity: 0.4;
722 cursor: not-allowed;
723 }
724
725 /* ─── Notices ────────────────────────────────────────────────────── */
726
727 .mxch-cg-notice {
728 padding: 10px 14px;
729 border-radius: 6px;
730 font-size: 13px;
731 margin-bottom: 12px;
732 }
733
734 .mxch-cg-notice-error {
735 background: #fef2f2;
736 color: #991b1b;
737 border: 1px solid #fecaca;
738 }
739
740 .mxch-cg-notice-success {
741 background: #f0fdf4;
742 color: #166534;
743 border: 1px solid #bbf7d0;
744 }
745
746 /* ─── Save Indicators ────────────────────────────────────────────── */
747
748 .mxch-field-label.mxch-saving::after,
749 .mxch-toggle-label.mxch-saving::after {
750 content: '';
751 display: inline-block;
752 width: 12px;
753 height: 12px;
754 margin-left: 6px;
755 border: 2px solid #e5e7eb;
756 border-top-color: var(--mxch-success, #10b981);
757 border-radius: 50%;
758 animation: mxch-spin 0.6s linear infinite;
759 vertical-align: middle;
760 }
761
762 .mxch-field-label.mxch-saved::after,
763 .mxch-toggle-label.mxch-saved::after {
764 content: ' \2713';
765 color: var(--mxch-success, #10b981);
766 font-weight: bold;
767 }
768
769 /* ─── Responsive ─────────────────────────────────────────────────── */
770
771 @media (max-width: 782px) {
772 .mxch-cg-toolbar {
773 flex-direction: column;
774 align-items: flex-start;
775 }
776
777 .mxch-cg-toolbar-right {
778 width: 100%;
779 flex-wrap: wrap;
780 }
781
782 .mxch-cg-status-menu {
783 left: auto;
784 right: 0;
785 }
786
787 .mxch-cg-options {
788 flex-direction: column;
789 }
790
791 .mxch-cg-chat-panel {
792 left: 10px;
793 right: 10px;
794 width: auto;
795 bottom: 10px;
796 max-height: calc(100vh - 60px);
797 }
798
799 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
800 width: auto;
801 flex-direction: column;
802 max-height: calc(100vh - 60px);
803 overflow: hidden;
804 }
805
806 .mxch-cg-images-col {
807 width: 100%;
808 max-height: 50vh;
809 min-height: 260px;
810 border-right: none;
811 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
812 overflow-y: auto;
813 }
814
815 .mxch-cg-images-grid {
816 grid-template-columns: repeat(2, 1fr);
817 gap: 8px;
818 padding: 8px;
819 }
820
821 .mxch-cg-left-tabs {
822 flex-shrink: 0;
823 }
824
825 .mxch-seo-checklist {
826 max-height: none;
827 overflow-y: visible;
828 }
829
830 .mxch-seo-check-label {
831 font-size: 12px;
832 }
833
834 .mxch-seo-check-detail {
835 font-size: 11px;
836 }
837
838 .mxch-seo-check {
839 padding: 8px 12px;
840 }
841
842 .mxch-cg-chat-messages {
843 max-height: 180px;
844 }
845
846 .mxch-cg-inline-form {
847 padding: 20px 12px;
848 min-height: auto;
849 }
850
851 .mxch-cg-inline-form-inner {
852 padding: 20px 16px 18px;
853 }
854 }
855
856 /* ─── Pro Feature Lock Styles ──────────────────────────────────── */
857
858 .mxch-cg-pro-badge {
859 display: inline-flex;
860 align-items: center;
861 padding: 2px 8px;
862 margin-left: 8px;
863 border-radius: 20px;
864 font-size: 10px;
865 font-weight: 700;
866 text-transform: uppercase;
867 letter-spacing: 0.5px;
868 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
869 color: var(--mxch-primary, #7873f5);
870 line-height: 1;
871 vertical-align: middle;
872 }
873
874 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle-switch {
875 opacity: 0.4;
876 cursor: not-allowed;
877 }
878
879 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle {
880 cursor: default;
881 }
882
883 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-field-description {
884 opacity: 0.6;
885 }
886
887 .mxch-cg-pro-upgrade-link {
888 display: inline-flex;
889 align-items: center;
890 gap: 4px;
891 font-size: 12px;
892 color: var(--mxch-primary, #7873f5);
893 text-decoration: none;
894 margin-top: 4px;
895 transition: color 0.2s;
896 }
897
898 .mxch-cg-pro-upgrade-link:hover {
899 color: var(--mxch-primary-hover, #6863e5);
900 text-decoration: underline;
901 }
902
903 /* ─── Image Management Panel (Two-Column Chat) ────────────────── */
904
905 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
906 width: 760px;
907 max-height: 480px;
908 flex-direction: row;
909 }
910
911 .mxch-cg-images-col {
912 width: 280px;
913 flex-shrink: 0;
914 display: flex;
915 flex-direction: column;
916 border-right: 1px solid var(--mxch-card-border, #e2e4e9);
917 position: relative;
918 overflow: hidden;
919 }
920
921 /* ── Left Column Tabs ──────────────────────────────────── */
922
923 .mxch-cg-left-tabs {
924 display: flex;
925 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
926 flex-shrink: 0;
927 }
928
929 .mxch-cg-left-tab {
930 flex: 1;
931 display: flex;
932 align-items: center;
933 justify-content: center;
934 gap: 4px;
935 padding: 10px 8px;
936 border: none;
937 background: transparent;
938 color: var(--mxch-text-muted, #94a3b8);
939 font-size: 12px;
940 font-weight: 500;
941 cursor: pointer;
942 transition: all 0.15s;
943 position: relative;
944 }
945
946 .mxch-cg-left-tab:hover {
947 color: var(--mxch-text-secondary, #64748b);
948 background: rgba(0, 0, 0, 0.03);
949 }
950
951 .mxch-cg-left-tab.active {
952 color: var(--mxch-primary, #7873f5);
953 font-weight: 600;
954 }
955
956 .mxch-cg-left-tab.active::after {
957 content: '';
958 position: absolute;
959 bottom: -1px;
960 left: 12px;
961 right: 12px;
962 height: 2px;
963 background: var(--mxch-primary, #7873f5);
964 border-radius: 1px;
965 }
966
967 .mxch-cg-left-tab .mxch-cg-pro-badge {
968 margin-left: 2px;
969 font-size: 8px;
970 padding: 1px 4px;
971 }
972
973 .mxch-cg-left-tab.mxch-cg-tab-flash {
974 animation: mxch-tab-flash 0.6s ease 3;
975 }
976
977 @keyframes mxch-tab-flash {
978 0%, 100% { color: var(--mxch-primary, #7873f5); }
979 50% { color: #10b981; }
980 }
981
982 .mxch-cg-left-panel {
983 display: none;
984 flex: 1;
985 overflow-y: auto;
986 }
987
988 .mxch-cg-left-panel.active {
989 display: flex;
990 flex-direction: column;
991 }
992
993 /* ── Meta/SEO Form ─────────────────────────────────────── */
994
995 .mxch-cg-meta-form {
996 display: flex;
997 flex-direction: column;
998 gap: 10px;
999 padding: 12px;
1000 overflow-y: auto;
1001 flex: 1;
1002 }
1003
1004 .mxch-cg-meta-field {
1005 display: flex;
1006 flex-direction: column;
1007 gap: 3px;
1008 }
1009
1010 .mxch-cg-meta-field label {
1011 font-size: 11px;
1012 font-weight: 600;
1013 color: var(--mxch-text-secondary, #64748b);
1014 text-transform: uppercase;
1015 letter-spacing: 0.3px;
1016 }
1017
1018 .mxch-cg-meta-input {
1019 width: 100%;
1020 padding: 6px 8px;
1021 border: 1px solid var(--mxch-input-border, #d1d5db);
1022 border-radius: 5px;
1023 background: var(--mxch-input-bg, #fff);
1024 color: var(--mxch-text-primary, #1a1a2e);
1025 font-size: 12px;
1026 line-height: 1.4;
1027 transition: border-color 0.2s;
1028 font-family: inherit;
1029 resize: vertical;
1030 box-sizing: border-box;
1031 }
1032
1033 .mxch-cg-meta-input:focus {
1034 outline: none;
1035 border-color: var(--mxch-input-focus, #7873f5);
1036 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
1037 }
1038
1039 .mxch-cg-meta-input:disabled,
1040 .mxch-cg-meta-input[readonly] {
1041 opacity: 0.5;
1042 cursor: not-allowed;
1043 background: #f8fafc;
1044 }
1045
1046 textarea.mxch-cg-meta-input {
1047 min-height: 48px;
1048 }
1049
1050 .mxch-cg-meta-charcount {
1051 font-size: 10px;
1052 color: var(--mxch-text-muted, #94a3b8);
1053 text-align: right;
1054 }
1055
1056 .mxch-cg-meta-charcount-over {
1057 color: #ef4444;
1058 font-weight: 600;
1059 }
1060
1061 .mxch-cg-meta-lock-overlay {
1062 position: absolute;
1063 inset: 0;
1064 display: flex;
1065 flex-direction: column;
1066 align-items: center;
1067 justify-content: center;
1068 gap: 6px;
1069 background: rgba(0, 0, 0, 0.04);
1070 z-index: 2;
1071 pointer-events: none;
1072 }
1073
1074 .mxch-cg-meta-lock-overlay svg {
1075 opacity: 0.3;
1076 }
1077
1078 .mxch-cg-meta-lock-overlay span {
1079 font-size: 11px;
1080 color: var(--mxch-primary, #7873f5);
1081 font-weight: 500;
1082 }
1083
1084 .mxch-cg-meta-field label.mxch-saving::after {
1085 content: '';
1086 display: inline-block;
1087 width: 10px;
1088 height: 10px;
1089 margin-left: 4px;
1090 border: 2px solid #e5e7eb;
1091 border-top-color: var(--mxch-success, #10b981);
1092 border-radius: 50%;
1093 animation: mxch-spin 0.6s linear infinite;
1094 vertical-align: middle;
1095 }
1096
1097 .mxch-cg-meta-field label.mxch-saved::after {
1098 content: ' \2713';
1099 color: var(--mxch-success, #10b981);
1100 font-weight: bold;
1101 }
1102
1103 /* Legacy header (kept for backward compat if needed) */
1104 .mxch-cg-images-header {
1105 display: flex;
1106 align-items: center;
1107 justify-content: space-between;
1108 padding: 12px 14px;
1109 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1110 flex-shrink: 0;
1111 }
1112
1113 .mxch-cg-images-title {
1114 font-size: 13px;
1115 font-weight: 600;
1116 color: var(--mxch-text-primary, #1a1a2e);
1117 display: flex;
1118 align-items: center;
1119 }
1120
1121 .mxch-cg-images-grid {
1122 flex: 1;
1123 display: grid;
1124 grid-template-columns: 1fr 1fr;
1125 gap: 8px;
1126 padding: 12px;
1127 overflow-y: auto;
1128 position: relative;
1129 }
1130
1131 .mxch-cg-image-thumb {
1132 aspect-ratio: 4 / 3;
1133 border-radius: 8px;
1134 position: relative;
1135 background: var(--mxch-input-bg, #fff);
1136 border: 1px solid var(--mxch-card-border, #e2e4e9);
1137 }
1138
1139 .mxch-cg-image-thumb img {
1140 width: 100%;
1141 height: 100%;
1142 object-fit: cover;
1143 }
1144
1145 .mxch-cg-image-placeholder {
1146 display: flex;
1147 align-items: center;
1148 justify-content: center;
1149 background: #f1f5f9;
1150 color: #cbd5e1;
1151 }
1152
1153 /* Empty state (before generation) */
1154 .mxch-cg-images-empty {
1155 grid-column: 1 / -1;
1156 display: flex;
1157 flex-direction: column;
1158 align-items: center;
1159 justify-content: center;
1160 gap: 8px;
1161 padding: 24px 12px;
1162 color: var(--mxch-text-muted, #94a3b8);
1163 text-align: center;
1164 }
1165
1166 .mxch-cg-images-empty svg {
1167 opacity: 0.5;
1168 }
1169
1170 .mxch-cg-images-empty span {
1171 font-size: 11px;
1172 line-height: 1.4;
1173 }
1174
1175 /* Hover actions on images */
1176 .mxch-cg-image-actions {
1177 position: absolute;
1178 bottom: 0;
1179 left: 0;
1180 right: 0;
1181 display: flex;
1182 gap: 4px;
1183 padding: 6px;
1184 background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
1185 opacity: 0;
1186 transition: opacity 0.2s;
1187 }
1188
1189 .mxch-cg-image-thumb:hover .mxch-cg-image-actions {
1190 opacity: 1;
1191 }
1192
1193 .mxch-cg-image-action-btn {
1194 flex: 1;
1195 padding: 5px 4px;
1196 border: none;
1197 border-radius: 4px;
1198 background: rgba(255, 255, 255, 0.9);
1199 color: #1a1a2e;
1200 font-size: 10px;
1201 font-weight: 500;
1202 cursor: pointer;
1203 display: flex;
1204 align-items: center;
1205 justify-content: center;
1206 gap: 3px;
1207 transition: background 0.15s;
1208 line-height: 1;
1209 }
1210
1211 .mxch-cg-image-action-btn:hover {
1212 background: #fff;
1213 }
1214
1215 /* Locked action buttons */
1216 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn {
1217 cursor: not-allowed;
1218 opacity: 0.7;
1219 }
1220
1221 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn:hover {
1222 background: rgba(255, 255, 255, 0.9);
1223 }
1224
1225 /* Per-image PRO lock badge (top-right corner) */
1226 .mxch-cg-image-lock-badge {
1227 position: absolute;
1228 top: 4px;
1229 right: 4px;
1230 display: flex;
1231 align-items: center;
1232 gap: 3px;
1233 padding: 2px 6px;
1234 background: rgba(120, 115, 245, 0.85);
1235 color: #fff;
1236 border-radius: 4px;
1237 font-size: 8px;
1238 font-weight: 700;
1239 letter-spacing: 0.5px;
1240 text-transform: uppercase;
1241 line-height: 1;
1242 z-index: 2;
1243 backdrop-filter: blur(4px);
1244 }
1245
1246 .mxch-cg-image-lock-badge svg {
1247 flex-shrink: 0;
1248 }
1249
1250 /* Image loading state (used by add-on during upload/regenerate) */
1251 .mxch-cg-image-thumb.mxch-cg-image-loading {
1252 position: relative;
1253 pointer-events: none;
1254 }
1255 .mxch-cg-image-thumb.mxch-cg-image-loading::after {
1256 content: '';
1257 position: absolute;
1258 inset: 0;
1259 background: rgba(0, 0, 0, 0.5);
1260 border-radius: 6px;
1261 z-index: 10;
1262 }
1263 .mxch-cg-image-thumb.mxch-cg-image-loading::before {
1264 content: '';
1265 position: absolute;
1266 top: 50%;
1267 left: 50%;
1268 width: 24px;
1269 height: 24px;
1270 margin: -12px 0 0 -12px;
1271 border: 3px solid rgba(255, 255, 255, 0.3);
1272 border-top-color: #fff;
1273 border-radius: 50%;
1274 z-index: 11;
1275 animation: mxch-spin 0.8s linear infinite;
1276 }
1277 @keyframes mxch-spin {
1278 to { transform: rotate(360deg); }
1279 }
1280
1281 /* Image selected state (regen mode) */
1282 .mxch-cg-image-thumb.mxch-cg-image-selected {
1283 outline: 2px solid #7873f5;
1284 outline-offset: -2px;
1285 border-radius: 6px;
1286 box-shadow: 0 0 0 4px rgba(120, 115, 245, 0.25);
1287 }
1288
1289 /* Regen bar — sits above chat input when an image is selected for regeneration */
1290 .mxch-cg-regen-bar {
1291 display: flex;
1292 align-items: center;
1293 gap: 10px;
1294 padding: 8px 12px;
1295 background: rgba(120, 115, 245, 0.1);
1296 border-top: 1px solid rgba(120, 115, 245, 0.3);
1297 animation: mxch-regen-bar-in 0.2s ease;
1298 }
1299 @keyframes mxch-regen-bar-in {
1300 from { opacity: 0; transform: translateY(6px); }
1301 to { opacity: 1; transform: translateY(0); }
1302 }
1303 .mxch-cg-regen-bar-thumb {
1304 width: 36px;
1305 height: 36px;
1306 border-radius: 4px;
1307 object-fit: cover;
1308 border: 1px solid rgba(120, 115, 245, 0.4);
1309 flex-shrink: 0;
1310 }
1311 .mxch-cg-regen-bar-text {
1312 flex: 1;
1313 font-size: 12px;
1314 color: #a0a0b0;
1315 line-height: 1.3;
1316 }
1317 .mxch-cg-regen-bar-cancel {
1318 background: none;
1319 border: none;
1320 color: #a0a0b0;
1321 cursor: pointer;
1322 padding: 4px;
1323 border-radius: 4px;
1324 display: flex;
1325 align-items: center;
1326 flex-shrink: 0;
1327 }
1328 .mxch-cg-regen-bar-cancel:hover {
1329 color: #fff;
1330 background: rgba(255, 255, 255, 0.1);
1331 }
1332
1333 /* Chat column in two-column layout */
1334 .mxch-cg-chat-col {
1335 flex: 1;
1336 display: flex;
1337 flex-direction: column;
1338 min-width: 0;
1339 }
1340
1341 /* ─── Mobile overrides for two-column chat (must come after desktop rules) ── */
1342 @media (max-width: 782px) {
1343 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
1344 width: auto;
1345 flex-direction: column;
1346 max-height: calc(100vh - 60px);
1347 overflow: hidden;
1348 }
1349
1350 .mxch-cg-images-col {
1351 width: 100%;
1352 max-height: 200px;
1353 border-right: none;
1354 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1355 }
1356
1357 .mxch-cg-chat-col {
1358 min-height: 0;
1359 }
1360
1361 .mxch-cg-chat-messages {
1362 max-height: 180px;
1363 }
1364 }
1365
1366 /* ─── History Tab ────────────────────────────────────────────────── */
1367
1368 .mxch-cg-history-loading {
1369 display: flex;
1370 flex-direction: column;
1371 align-items: center;
1372 justify-content: center;
1373 padding: 60px 20px;
1374 color: var(--mxch-text-muted, #94a3b8);
1375 }
1376
1377 .mxch-cg-history-spinner {
1378 width: 28px;
1379 height: 28px;
1380 border: 3px solid #e2e8f0;
1381 border-top-color: var(--mxch-primary, #7873f5);
1382 border-radius: 50%;
1383 animation: mxch-spin 0.6s linear infinite;
1384 margin-bottom: 12px;
1385 }
1386
1387 .mxch-cg-history-loading p {
1388 font-size: 14px;
1389 margin: 0;
1390 }
1391
1392 .mxch-cg-history-empty {
1393 display: flex;
1394 flex-direction: column;
1395 align-items: center;
1396 justify-content: center;
1397 padding: 60px 20px;
1398 color: var(--mxch-text-muted, #94a3b8);
1399 text-align: center;
1400 }
1401
1402 .mxch-cg-history-empty svg {
1403 margin-bottom: 16px;
1404 opacity: 0.4;
1405 }
1406
1407 .mxch-cg-history-empty p {
1408 font-size: 14px;
1409 margin: 0;
1410 max-width: 360px;
1411 }
1412
1413 .mxch-cg-history-list {
1414 display: flex;
1415 flex-direction: column;
1416 }
1417
1418 .mxch-cg-history-item {
1419 display: flex;
1420 align-items: center;
1421 gap: 14px;
1422 padding: 12px 0;
1423 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1424 }
1425
1426 .mxch-cg-history-item:last-child {
1427 border-bottom: none;
1428 }
1429
1430 .mxch-cg-history-thumb {
1431 width: 48px;
1432 height: 48px;
1433 border-radius: 8px;
1434 overflow: hidden;
1435 flex-shrink: 0;
1436 background: #f1f5f9;
1437 border: 1px solid var(--mxch-card-border, #e2e4e9);
1438 }
1439
1440 .mxch-cg-history-thumb-img {
1441 width: 100%;
1442 height: 100%;
1443 object-fit: cover;
1444 display: block;
1445 }
1446
1447 .mxch-cg-history-thumb-placeholder {
1448 width: 100%;
1449 height: 100%;
1450 display: flex;
1451 align-items: center;
1452 justify-content: center;
1453 color: #cbd5e1;
1454 }
1455
1456 .mxch-cg-history-info {
1457 flex: 1;
1458 min-width: 0;
1459 }
1460
1461 .mxch-cg-history-title {
1462 font-size: 14px;
1463 font-weight: 600;
1464 color: var(--mxch-text-primary, #1a1a2e);
1465 white-space: nowrap;
1466 overflow: hidden;
1467 text-overflow: ellipsis;
1468 margin-bottom: 4px;
1469 }
1470
1471 .mxch-cg-history-meta {
1472 display: flex;
1473 align-items: center;
1474 gap: 8px;
1475 flex-wrap: wrap;
1476 }
1477
1478 .mxch-cg-history-meta .mxch-cg-status-badge {
1479 font-size: 10px;
1480 padding: 1px 6px;
1481 cursor: default;
1482 pointer-events: none;
1483 }
1484
1485 .mxch-cg-history-type,
1486 .mxch-cg-history-date {
1487 font-size: 12px;
1488 color: var(--mxch-text-muted, #94a3b8);
1489 }
1490
1491 .mxch-cg-history-actions {
1492 display: flex;
1493 gap: 4px;
1494 flex-shrink: 0;
1495 }
1496
1497 .mxch-cg-history-action-btn {
1498 display: inline-flex;
1499 align-items: center;
1500 justify-content: center;
1501 width: 32px;
1502 height: 32px;
1503 border: 1px solid var(--mxch-input-border, #d1d5db);
1504 border-radius: 6px;
1505 background: transparent;
1506 color: var(--mxch-text-secondary, #64748b);
1507 cursor: pointer;
1508 transition: all 0.2s;
1509 text-decoration: none;
1510 }
1511
1512 .mxch-cg-history-action-btn svg {
1513 width: 15px;
1514 height: 15px;
1515 }
1516
1517 /* View — blue hover */
1518 .mxch-cg-history-view-btn:hover {
1519 border-color: #3b82f6;
1520 color: #3b82f6;
1521 background: rgba(59, 130, 246, 0.1);
1522 }
1523
1524 /* Edit — purple hover */
1525 .mxch-cg-history-edit-btn:hover {
1526 border-color: var(--mxch-primary, #7873f5);
1527 color: var(--mxch-primary, #7873f5);
1528 background: rgba(120, 115, 245, 0.1);
1529 }
1530
1531 /* Delete — red hover */
1532 .mxch-cg-history-delete-btn:hover {
1533 border-color: #ef4444;
1534 color: #ef4444;
1535 background: rgba(239, 68, 68, 0.1);
1536 }
1537
1538 .mxch-cg-history-action-btn:disabled {
1539 opacity: 0.5;
1540 cursor: wait;
1541 }
1542
1543 /* History Pagination */
1544
1545 .mxch-cg-history-pagination {
1546 display: flex;
1547 align-items: center;
1548 justify-content: center;
1549 gap: 4px;
1550 padding-top: 20px;
1551 margin-top: 8px;
1552 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
1553 }
1554
1555 .mxch-cg-history-page-btn {
1556 display: inline-flex;
1557 align-items: center;
1558 justify-content: center;
1559 min-width: 32px;
1560 height: 32px;
1561 padding: 0 8px;
1562 border: 1px solid var(--mxch-input-border, #d1d5db);
1563 border-radius: 6px;
1564 background: transparent;
1565 color: var(--mxch-text-secondary, #64748b);
1566 font-size: 13px;
1567 cursor: pointer;
1568 transition: all 0.15s;
1569 }
1570
1571 .mxch-cg-history-page-btn:hover {
1572 border-color: var(--mxch-primary, #7873f5);
1573 color: var(--mxch-primary, #7873f5);
1574 }
1575
1576 .mxch-cg-history-page-current {
1577 background: var(--mxch-primary, #7873f5);
1578 color: #fff;
1579 border-color: var(--mxch-primary, #7873f5);
1580 cursor: default;
1581 font-weight: 600;
1582 }
1583
1584 .mxch-cg-history-page-current:hover {
1585 background: var(--mxch-primary, #7873f5);
1586 color: #fff;
1587 border-color: var(--mxch-primary, #7873f5);
1588 }
1589
1590 .mxch-cg-history-page-prev,
1591 .mxch-cg-history-page-next {
1592 font-size: 12px;
1593 font-weight: 500;
1594 }
1595
1596 .mxch-cg-history-page-ellipsis {
1597 display: inline-flex;
1598 align-items: center;
1599 justify-content: center;
1600 min-width: 32px;
1601 height: 32px;
1602 color: var(--mxch-text-muted, #94a3b8);
1603 font-size: 13px;
1604 }
1605
1606 @media (max-width: 782px) {
1607 .mxch-cg-history-item {
1608 flex-wrap: wrap;
1609 }
1610
1611 .mxch-cg-history-info {
1612 flex: 1 1 calc(100% - 62px);
1613 }
1614
1615 .mxch-cg-history-actions {
1616 margin-left: auto;
1617 }
1618 }
1619
1620 /* ─── Loading Indicator (preview area) ──────────────────────────── */
1621
1622 .mxch-cg-loading-indicator {
1623 display: flex;
1624 flex-direction: column;
1625 align-items: center;
1626 justify-content: center;
1627 min-height: calc(100vh - 220px);
1628 padding: 40px 20px;
1629 text-align: center;
1630 gap: 24px;
1631 }
1632
1633 /* Spinner: three concentric rings + center icon */
1634 .mxch-cg-loading-spinner {
1635 position: relative;
1636 width: 80px;
1637 height: 80px;
1638 }
1639
1640 .mxch-cg-loading-spinner-ring {
1641 position: absolute;
1642 inset: 0;
1643 border-radius: 50%;
1644 border: 3px solid transparent;
1645 }
1646
1647 .mxch-cg-loading-spinner-ring:nth-child(1) {
1648 border-top-color: var(--mxch-primary, #7873f5);
1649 animation: mxch-spin 1.2s linear infinite;
1650 }
1651
1652 .mxch-cg-loading-spinner-ring:nth-child(2) {
1653 inset: 8px;
1654 border-right-color: rgba(120, 115, 245, 0.5);
1655 animation: mxch-spin 1.8s linear infinite reverse;
1656 }
1657
1658 .mxch-cg-loading-spinner-ring:nth-child(3) {
1659 inset: 16px;
1660 border-bottom-color: rgba(120, 115, 245, 0.3);
1661 animation: mxch-spin 2.4s linear infinite;
1662 }
1663
1664 .mxch-cg-loading-spinner-icon {
1665 position: absolute;
1666 top: 50%;
1667 left: 50%;
1668 transform: translate(-50%, -50%);
1669 color: var(--mxch-primary, #7873f5);
1670 opacity: 0.8;
1671 }
1672
1673 /* Phrase text with fade transition */
1674 .mxch-cg-loading-phrase {
1675 font-size: 17px;
1676 font-weight: 500;
1677 color: var(--mxch-text-secondary, #64748b);
1678 margin: 0;
1679 min-height: 28px;
1680 max-width: 400px;
1681 transition: opacity 0.4s ease, transform 0.4s ease;
1682 opacity: 1;
1683 transform: translateY(0);
1684 }
1685
1686 .mxch-cg-loading-phrase.mxch-cg-phrase-exit {
1687 opacity: 0;
1688 transform: translateY(-8px);
1689 }
1690
1691 .mxch-cg-loading-phrase.mxch-cg-phrase-enter {
1692 opacity: 0;
1693 transform: translateY(8px);
1694 }
1695
1696 /* Mini progress bar beneath the phrase */
1697 .mxch-cg-loading-progress-mini {
1698 width: 100%;
1699 max-width: 280px;
1700 }
1701
1702 .mxch-cg-loading-progress-mini-bar {
1703 width: 100%;
1704 height: 4px;
1705 background: var(--mxch-card-border, #e2e4e9);
1706 border-radius: 2px;
1707 overflow: hidden;
1708 margin-bottom: 6px;
1709 }
1710
1711 .mxch-cg-loading-progress-mini-fill {
1712 height: 100%;
1713 background: var(--mxch-primary, #7873f5);
1714 border-radius: 2px;
1715 transition: width 0.6s ease;
1716 }
1717
1718 .mxch-cg-loading-progress-mini-text {
1719 font-size: 12px;
1720 color: var(--mxch-text-muted, #94a3b8);
1721 margin: 0;
1722 }
1723
1724 /* Error state */
1725 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring {
1726 animation-play-state: paused;
1727 }
1728
1729 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(1) {
1730 border-top-color: #ef4444;
1731 }
1732
1733 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(2) {
1734 border-right-color: rgba(239, 68, 68, 0.5);
1735 }
1736
1737 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(3) {
1738 border-bottom-color: rgba(239, 68, 68, 0.3);
1739 }
1740
1741 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-icon {
1742 color: #ef4444;
1743 }
1744
1745 .mxch-cg-loading-error-actions {
1746 display: flex;
1747 gap: 10px;
1748 margin-top: 4px;
1749 }
1750
1751 .mxch-cg-loading-error-actions .mxch-cg-generate-btn {
1752 font-size: 13px;
1753 padding: 8px 16px;
1754 }
1755
1756 .mxch-cg-loading-error-actions .mxch-cg-action-btn {
1757 font-size: 13px;
1758 padding: 8px 16px;
1759 background: transparent;
1760 border: 1px solid var(--mxch-card-border, #e2e4e9);
1761 border-radius: 6px;
1762 color: var(--mxch-text-secondary, #64748b);
1763 cursor: pointer;
1764 }
1765
1766 .mxch-cg-loading-error-actions .mxch-cg-action-btn:hover {
1767 background: var(--mxch-card-bg, #f8f9fa);
1768 }
1769
1770 /* Success state */
1771 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(1) {
1772 border-top-color: #10b981;
1773 }
1774
1775 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(2) {
1776 border-right-color: rgba(16, 185, 129, 0.5);
1777 }
1778
1779 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(3) {
1780 border-bottom-color: rgba(16, 185, 129, 0.3);
1781 }
1782
1783 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-icon {
1784 color: #10b981;
1785 }
1786
1787 /* Responsive */
1788 @media (max-width: 782px) {
1789 .mxch-cg-loading-phrase {
1790 font-size: 15px;
1791 }
1792
1793 .mxch-cg-loading-spinner {
1794 width: 64px;
1795 height: 64px;
1796 }
1797 }
1798
1799 /* ── SEO Panel ─────────────────────────────────────────── */
1800
1801 .mxch-seo-panel {
1802 display: flex;
1803 flex-direction: column;
1804 height: 100%;
1805 overflow: hidden;
1806 }
1807
1808 .mxch-seo-score-header {
1809 display: flex;
1810 align-items: center;
1811 gap: 10px;
1812 padding: 12px;
1813 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1814 flex-shrink: 0;
1815 }
1816
1817 .mxch-seo-score-ring {
1818 position: relative;
1819 width: 48px;
1820 height: 48px;
1821 flex-shrink: 0;
1822 }
1823
1824 .mxch-seo-score-ring svg {
1825 width: 48px;
1826 height: 48px;
1827 transform: rotate(-90deg);
1828 }
1829
1830 .mxch-seo-ring-bg {
1831 fill: none;
1832 stroke: var(--mxch-card-border, #e2e4e9);
1833 stroke-width: 4;
1834 }
1835
1836 .mxch-seo-ring-fill {
1837 fill: none;
1838 stroke: var(--mxch-text-muted, #94a3b8);
1839 stroke-width: 4;
1840 stroke-linecap: round;
1841 transition: stroke-dashoffset 0.8s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.4s;
1842 }
1843
1844 .mxch-seo-ring-fill.mxch-seo-good { stroke: #10b981; }
1845 .mxch-seo-ring-fill.mxch-seo-ok { stroke: #f59e0b; }
1846 .mxch-seo-ring-fill.mxch-seo-bad { stroke: #ef4444; }
1847
1848 .mxch-seo-score-num {
1849 position: absolute;
1850 inset: 0;
1851 display: flex;
1852 align-items: center;
1853 justify-content: center;
1854 font-size: 14px;
1855 font-weight: 700;
1856 color: var(--mxch-text-primary, #1a1a2e);
1857 line-height: 1;
1858 }
1859
1860 .mxch-seo-score-info {
1861 flex: 1;
1862 min-width: 0;
1863 display: flex;
1864 flex-direction: column;
1865 gap: 2px;
1866 }
1867
1868 .mxch-seo-score-label {
1869 font-size: 12px;
1870 font-weight: 600;
1871 color: var(--mxch-text-primary, #1a1a2e);
1872 }
1873
1874 .mxch-seo-score-summary {
1875 font-size: 10px;
1876 color: var(--mxch-text-muted, #94a3b8);
1877 line-height: 1.3;
1878 }
1879
1880 .mxch-seo-analyze-btn {
1881 width: 30px;
1882 height: 30px;
1883 border: 1px solid var(--mxch-card-border, #e2e4e9);
1884 border-radius: 6px;
1885 background: transparent;
1886 color: var(--mxch-text-muted, #94a3b8);
1887 cursor: pointer;
1888 display: flex;
1889 align-items: center;
1890 justify-content: center;
1891 flex-shrink: 0;
1892 transition: all 0.15s;
1893 }
1894
1895 .mxch-seo-analyze-btn:hover {
1896 color: var(--mxch-primary, #7873f5);
1897 border-color: var(--mxch-primary, #7873f5);
1898 background: rgba(120, 115, 245, 0.05);
1899 }
1900
1901 .mxch-seo-analyze-btn.mxch-spinning svg {
1902 animation: mxch-spin 0.8s linear infinite;
1903 }
1904
1905 .mxch-seo-checklist {
1906 flex: 1;
1907 overflow-y: auto;
1908 padding: 6px 0;
1909 }
1910
1911 .mxch-seo-empty {
1912 display: flex;
1913 flex-direction: column;
1914 align-items: center;
1915 justify-content: center;
1916 gap: 8px;
1917 padding: 32px 16px;
1918 text-align: center;
1919 }
1920
1921 .mxch-seo-empty svg {
1922 opacity: 0.2;
1923 color: var(--mxch-text-muted, #94a3b8);
1924 }
1925
1926 .mxch-seo-empty span {
1927 font-size: 11px;
1928 color: var(--mxch-text-muted, #94a3b8);
1929 line-height: 1.5;
1930 }
1931
1932 .mxch-seo-check {
1933 display: flex;
1934 align-items: flex-start;
1935 gap: 8px;
1936 padding: 7px 12px;
1937 transition: background 0.1s;
1938 }
1939
1940 .mxch-seo-check:hover {
1941 background: rgba(0, 0, 0, 0.02);
1942 }
1943
1944 .mxch-seo-check-icon {
1945 width: 16px;
1946 height: 16px;
1947 flex-shrink: 0;
1948 margin-top: 1px;
1949 display: flex;
1950 align-items: center;
1951 justify-content: center;
1952 }
1953
1954 .mxch-seo-check-icon svg {
1955 width: 14px;
1956 height: 14px;
1957 }
1958
1959 .mxch-seo-check-icon.mxch-seo-pass { color: #10b981; }
1960 .mxch-seo-check-icon.mxch-seo-warn { color: #f59e0b; }
1961 .mxch-seo-check-icon.mxch-seo-fail { color: #ef4444; }
1962
1963 .mxch-seo-check-content {
1964 flex: 1;
1965 min-width: 0;
1966 }
1967
1968 .mxch-seo-check-label {
1969 font-size: 11px;
1970 font-weight: 600;
1971 color: var(--mxch-text-primary, #1a1a2e);
1972 display: block;
1973 line-height: 1.2;
1974 }
1975
1976 .mxch-seo-check-detail {
1977 font-size: 10px;
1978 color: var(--mxch-text-muted, #94a3b8);
1979 display: block;
1980 line-height: 1.4;
1981 margin-top: 1px;
1982 }
1983
1984 .mxch-seo-actions {
1985 padding: 10px 12px;
1986 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
1987 flex-shrink: 0;
1988 }
1989
1990 .mxch-seo-fix-btn {
1991 width: 100%;
1992 display: flex;
1993 align-items: center;
1994 justify-content: center;
1995 gap: 6px;
1996 padding: 8px 12px;
1997 border: none;
1998 border-radius: 6px;
1999 background: linear-gradient(135deg, var(--mxch-primary, #7873f5), #6366f1);
2000 color: #fff;
2001 font-size: 12px;
2002 font-weight: 600;
2003 cursor: pointer;
2004 transition: all 0.2s;
2005 }
2006
2007 .mxch-seo-fix-btn:hover {
2008 filter: brightness(1.08);
2009 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
2010 }
2011
2012 .mxch-seo-fix-btn:disabled {
2013 opacity: 0.5;
2014 cursor: not-allowed;
2015 filter: none;
2016 box-shadow: none;
2017 }
2018
2019 .mxch-seo-fix-btn.mxch-seo-fixing svg {
2020 animation: mxch-spin 0.8s linear infinite;
2021 }
2022
2023 .mxch-seo-separator {
2024 height: 1px;
2025 background: var(--mxch-card-border, #e2e4e9);
2026 margin: 4px 12px;
2027 opacity: 0.6;
2028 }
2029
2030 /* ─── SEO Dashboard (Site-wide) ─────────────────────────────────── */
2031
2032 .mxch-seod-filters {
2033 display: flex;
2034 align-items: center;
2035 justify-content: space-between;
2036 gap: 12px;
2037 padding: 14px 18px;
2038 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2039 flex-wrap: wrap;
2040 }
2041
2042 .mxch-seod-filters-left {
2043 display: flex;
2044 align-items: center;
2045 gap: 10px;
2046 flex-wrap: wrap;
2047 }
2048
2049 .mxch-seod-filters-right {
2050 display: flex;
2051 align-items: center;
2052 }
2053
2054 .mxch-seod-select {
2055 padding: 6px 10px;
2056 border: 1px solid var(--mxch-input-border, #d1d5db);
2057 border-radius: 6px;
2058 background: var(--mxch-card-bg, #fff);
2059 color: var(--mxch-text-primary, #1a1a2e);
2060 font-size: 13px;
2061 cursor: pointer;
2062 outline: none;
2063 }
2064
2065 .mxch-seod-select:focus {
2066 border-color: var(--mxch-primary, #7873f5);
2067 }
2068
2069 .mxch-seod-filter-pills {
2070 display: flex;
2071 gap: 4px;
2072 }
2073
2074 .mxch-seod-pill {
2075 padding: 5px 12px;
2076 border: 1px solid var(--mxch-input-border, #d1d5db);
2077 border-radius: 20px;
2078 background: transparent;
2079 color: var(--mxch-text-muted, #6b7280);
2080 font-size: 12px;
2081 font-weight: 500;
2082 cursor: pointer;
2083 transition: all 0.15s ease;
2084 }
2085
2086 .mxch-seod-pill:hover {
2087 border-color: var(--mxch-primary, #7873f5);
2088 color: var(--mxch-primary, #7873f5);
2089 }
2090
2091 .mxch-seod-pill.active {
2092 background: var(--mxch-primary, #7873f5);
2093 border-color: var(--mxch-primary, #7873f5);
2094 color: #fff;
2095 }
2096
2097 .mxch-seod-search-wrap {
2098 position: relative;
2099 display: flex;
2100 align-items: center;
2101 }
2102
2103 .mxch-seod-search-wrap svg {
2104 position: absolute;
2105 left: 10px;
2106 width: 14px;
2107 height: 14px;
2108 color: var(--mxch-text-muted, #6b7280);
2109 pointer-events: none;
2110 }
2111
2112 .mxch-seod-search {
2113 padding: 6px 10px 6px 30px;
2114 border: 1px solid var(--mxch-input-border, #d1d5db);
2115 border-radius: 6px;
2116 background: var(--mxch-card-bg, #fff);
2117 color: var(--mxch-text-primary, #1a1a2e);
2118 font-size: 13px;
2119 width: 180px;
2120 outline: none;
2121 }
2122
2123 .mxch-seod-search:focus {
2124 border-color: var(--mxch-primary, #7873f5);
2125 }
2126
2127 /* Table */
2128
2129 .mxch-seod-table-wrap {
2130 min-height: 200px;
2131 position: relative;
2132 }
2133
2134 /* ─── Column Header Row ─────────────────────────────────────────── */
2135
2136 .mxch-seod-header {
2137 display: flex;
2138 align-items: center;
2139 padding: 8px 18px;
2140 gap: 12px;
2141 background: var(--mxch-card-bg, #f8f9fa);
2142 border-bottom: 2px solid var(--mxch-card-border, #e2e4e9);
2143 position: sticky;
2144 top: 0;
2145 z-index: 2;
2146 }
2147
2148 .mxch-seod-header-cell {
2149 font-size: 11px;
2150 font-weight: 600;
2151 text-transform: uppercase;
2152 letter-spacing: 0.5px;
2153 color: var(--mxch-text-muted, #6b7280);
2154 cursor: pointer;
2155 user-select: none;
2156 white-space: nowrap;
2157 transition: color 0.15s ease;
2158 }
2159
2160 .mxch-seod-header-cell:hover {
2161 color: var(--mxch-text-primary, #1a1a2e);
2162 }
2163
2164 .mxch-seod-header-cell.mxch-seod-header-active {
2165 color: var(--mxch-primary, #7873f5);
2166 }
2167
2168 .mxch-seod-header-title {
2169 flex: 1;
2170 min-width: 0;
2171 }
2172
2173 .mxch-seod-header-date {
2174 width: 90px;
2175 text-align: center;
2176 flex-shrink: 0;
2177 }
2178
2179 .mxch-seod-header-score {
2180 width: 48px;
2181 text-align: center;
2182 flex-shrink: 0;
2183 }
2184
2185 .mxch-seod-header-clicks {
2186 width: 52px;
2187 text-align: center;
2188 flex-shrink: 0;
2189 }
2190
2191 .mxch-seod-header-impressions {
2192 width: 52px;
2193 text-align: center;
2194 flex-shrink: 0;
2195 }
2196
2197 .mxch-seod-sort-arrow {
2198 font-size: 9px;
2199 vertical-align: middle;
2200 margin-left: 2px;
2201 }
2202
2203 /* ─── Row Columns ─────────────────────────────────────────────── */
2204
2205 .mxch-seod-cell-date {
2206 width: 90px;
2207 flex-shrink: 0;
2208 justify-content: center;
2209 }
2210
2211 .mxch-seod-date {
2212 font-size: 12px;
2213 color: var(--mxch-text-muted, #6b7280);
2214 }
2215
2216 .mxch-seod-cell-clicks,
2217 .mxch-seod-cell-impressions {
2218 width: 52px;
2219 flex-shrink: 0;
2220 justify-content: center;
2221 font-size: 12px;
2222 color: var(--mxch-text-muted, #6b7280);
2223 }
2224
2225 .mxch-seod-row {
2226 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2227 cursor: pointer;
2228 transition: background 0.15s ease;
2229 }
2230
2231 .mxch-seod-row:last-child {
2232 border-bottom: none;
2233 }
2234
2235 .mxch-seod-row:hover {
2236 background: rgba(120, 115, 245, 0.03);
2237 }
2238
2239 .mxch-seod-row.mxch-seod-active {
2240 background: rgba(120, 115, 245, 0.03);
2241 }
2242
2243 .mxch-seod-row-main {
2244 display: flex;
2245 align-items: center;
2246 padding: 12px 18px;
2247 gap: 12px;
2248 }
2249
2250 .mxch-seod-cell {
2251 display: flex;
2252 align-items: center;
2253 }
2254
2255 .mxch-seod-cell-title {
2256 flex: 1;
2257 min-width: 0;
2258 flex-direction: column;
2259 align-items: flex-start;
2260 gap: 2px;
2261 }
2262
2263 .mxch-seod-title {
2264 font-size: 13.5px;
2265 font-weight: 500;
2266 color: var(--mxch-text-primary, #1a1a2e);
2267 white-space: nowrap;
2268 overflow: hidden;
2269 text-overflow: ellipsis;
2270 max-width: 100%;
2271 }
2272
2273 .mxch-seod-meta {
2274 font-size: 11.5px;
2275 color: var(--mxch-text-muted, #6b7280);
2276 }
2277
2278 .mxch-seod-cell-score {
2279 width: 48px;
2280 justify-content: center;
2281 flex-shrink: 0;
2282 }
2283
2284 .mxch-seod-score-badge {
2285 width: 36px;
2286 height: 36px;
2287 border-radius: 50%;
2288 display: flex;
2289 align-items: center;
2290 justify-content: center;
2291 font-size: 12px;
2292 font-weight: 700;
2293 border: 2.5px solid;
2294 }
2295
2296 .mxch-seod-score-badge.mxch-seod-good {
2297 color: #10b981;
2298 border-color: #10b981;
2299 background: rgba(16, 185, 129, 0.08);
2300 }
2301
2302 .mxch-seod-score-badge.mxch-seod-ok {
2303 color: #f59e0b;
2304 border-color: #f59e0b;
2305 background: rgba(245, 158, 11, 0.08);
2306 }
2307
2308 .mxch-seod-score-badge.mxch-seod-bad {
2309 color: #ef4444;
2310 border-color: #ef4444;
2311 background: rgba(239, 68, 68, 0.08);
2312 }
2313
2314 .mxch-seod-score-badge.mxch-seod-unscored {
2315 color: var(--mxch-text-muted, #6b7280);
2316 border-color: var(--mxch-input-border, #d1d5db);
2317 background: transparent;
2318 font-size: 14px;
2319 }
2320
2321 .mxch-seod-cell-status {
2322 width: 90px;
2323 justify-content: center;
2324 flex-shrink: 0;
2325 }
2326
2327 .mxch-seod-status {
2328 font-size: 12px;
2329 font-weight: 500;
2330 padding: 3px 10px;
2331 border-radius: 12px;
2332 }
2333
2334 .mxch-seod-status-good {
2335 color: #10b981;
2336 background: rgba(16, 185, 129, 0.1);
2337 }
2338
2339 .mxch-seod-status-warn {
2340 color: #f59e0b;
2341 background: rgba(245, 158, 11, 0.1);
2342 }
2343
2344 .mxch-seod-status-bad {
2345 color: #ef4444;
2346 background: rgba(239, 68, 68, 0.1);
2347 }
2348
2349 .mxch-seod-status-unscored {
2350 color: var(--mxch-text-muted, #6b7280);
2351 background: rgba(107, 114, 128, 0.08);
2352 }
2353
2354 /* ─── SEO Detail Modal ───────────────────────────────────────── */
2355
2356 .mxch-seod-modal-overlay {
2357 position: fixed;
2358 inset: 0;
2359 z-index: 100000;
2360 background: rgba(0, 0, 0, 0);
2361 display: flex;
2362 align-items: center;
2363 justify-content: center;
2364 transition: background 0.2s ease;
2365 }
2366
2367 .mxch-seod-modal-overlay.mxch-seod-modal-visible {
2368 background: rgba(0, 0, 0, 0.45);
2369 }
2370
2371 .mxch-seod-modal {
2372 background: var(--mxch-card-bg, #fff);
2373 border-radius: 12px;
2374 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
2375 width: 90%;
2376 max-width: 580px;
2377 max-height: 80vh;
2378 display: flex;
2379 flex-direction: column;
2380 opacity: 0;
2381 transform: translateY(12px) scale(0.98);
2382 transition: opacity 0.2s ease, transform 0.2s ease;
2383 }
2384
2385 .mxch-seod-modal-visible .mxch-seod-modal {
2386 opacity: 1;
2387 transform: translateY(0) scale(1);
2388 }
2389
2390 .mxch-seod-modal-header {
2391 display: flex;
2392 align-items: center;
2393 justify-content: space-between;
2394 padding: 16px 20px;
2395 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2396 flex-shrink: 0;
2397 }
2398
2399 .mxch-seod-modal-title {
2400 font-size: 15px;
2401 font-weight: 600;
2402 color: var(--mxch-text-primary, #1a1a2e);
2403 margin: 0;
2404 white-space: nowrap;
2405 overflow: hidden;
2406 text-overflow: ellipsis;
2407 min-width: 0;
2408 flex: 1;
2409 padding-right: 12px;
2410 }
2411
2412 .mxch-seod-modal-close {
2413 background: none;
2414 border: none;
2415 cursor: pointer;
2416 color: var(--mxch-text-muted, #6b7280);
2417 padding: 4px;
2418 border-radius: 6px;
2419 transition: color 0.15s, background 0.15s;
2420 flex-shrink: 0;
2421 }
2422
2423 .mxch-seod-modal-close:hover {
2424 color: var(--mxch-text-primary, #1a1a2e);
2425 background: rgba(0, 0, 0, 0.05);
2426 }
2427
2428 .mxch-seod-modal-body {
2429 padding: 16px 20px;
2430 overflow-y: auto;
2431 flex: 1;
2432 min-height: 0;
2433 }
2434
2435 /* Detail content (reused inside modal) */
2436
2437 .mxch-seod-detail {
2438 cursor: default;
2439 }
2440
2441 .mxch-seod-detail-loading {
2442 display: flex;
2443 align-items: center;
2444 gap: 8px;
2445 padding: 16px 0;
2446 color: var(--mxch-text-muted, #6b7280);
2447 font-size: 13px;
2448 }
2449
2450 .mxch-seod-spinner {
2451 width: 16px;
2452 height: 16px;
2453 border: 2px solid var(--mxch-input-border, #d1d5db);
2454 border-top-color: var(--mxch-primary, #7873f5);
2455 border-radius: 50%;
2456 animation: mxch-spin 0.6s linear infinite;
2457 }
2458
2459 .mxch-seod-detail-error {
2460 padding: 16px 0;
2461 color: #ef4444;
2462 font-size: 13px;
2463 }
2464
2465 .mxch-seod-checks {
2466 background: var(--mxch-card-bg, #fff);
2467 border: 1px solid var(--mxch-card-border, #e2e4e9);
2468 border-radius: 8px;
2469 overflow: hidden;
2470 }
2471
2472 .mxch-seod-check {
2473 display: flex;
2474 align-items: flex-start;
2475 gap: 10px;
2476 padding: 10px 14px;
2477 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2478 }
2479
2480 .mxch-seod-check:last-child {
2481 border-bottom: none;
2482 }
2483
2484 .mxch-seod-check-sep {
2485 height: 1px;
2486 background: var(--mxch-card-border, #e2e4e9);
2487 opacity: 0.6;
2488 }
2489
2490 .mxch-seod-check-icon {
2491 width: 18px;
2492 height: 18px;
2493 flex-shrink: 0;
2494 margin-top: 1px;
2495 }
2496
2497 .mxch-seod-check-icon svg {
2498 width: 18px;
2499 height: 18px;
2500 }
2501
2502 .mxch-seod-check-pass .mxch-seod-check-icon { color: #10b981; }
2503 .mxch-seod-check-warn .mxch-seod-check-icon { color: #f59e0b; }
2504 .mxch-seod-check-fail .mxch-seod-check-icon { color: #ef4444; }
2505
2506 .mxch-seod-check-text {
2507 display: flex;
2508 flex-direction: column;
2509 gap: 1px;
2510 min-width: 0;
2511 }
2512
2513 .mxch-seod-check-label {
2514 font-size: 13px;
2515 font-weight: 500;
2516 color: var(--mxch-text-primary, #1a1a2e);
2517 }
2518
2519 .mxch-seod-check-detail {
2520 font-size: 12px;
2521 color: var(--mxch-text-muted, #6b7280);
2522 }
2523
2524 .mxch-seod-addon-badge {
2525 display: inline-flex;
2526 align-items: center;
2527 padding: 1px 6px;
2528 margin-left: 6px;
2529 border-radius: 20px;
2530 font-size: 9px;
2531 font-weight: 700;
2532 text-transform: uppercase;
2533 letter-spacing: 0.5px;
2534 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
2535 color: var(--mxch-primary, #7873f5);
2536 line-height: 1;
2537 vertical-align: middle;
2538 text-decoration: none;
2539 cursor: pointer;
2540 }
2541
2542 .mxch-seod-addon-badge:hover {
2543 background: linear-gradient(135deg, rgba(120, 115, 245, 0.25), rgba(168, 139, 250, 0.25));
2544 text-decoration: none;
2545 color: var(--mxch-primary, #7873f5);
2546 }
2547
2548 .mxch-seod-pro-badge {
2549 background: linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 191, 36, 0.15));
2550 color: #d97706;
2551 }
2552
2553 .mxch-seod-pro-badge:hover {
2554 background: linear-gradient(135deg, rgba(245, 158, 11, 0.25), rgba(251, 191, 36, 0.25));
2555 color: #d97706;
2556 }
2557
2558 .mxch-seod-detail-actions {
2559 display: flex;
2560 justify-content: flex-end;
2561 margin-top: 12px;
2562 }
2563
2564 .mxch-seod-optimize-btn {
2565 display: inline-flex;
2566 align-items: center;
2567 gap: 6px;
2568 padding: 7px 16px;
2569 background: linear-gradient(135deg, #7873f5, #6366f1);
2570 color: #fff;
2571 border: none;
2572 border-radius: 6px;
2573 font-size: 12.5px;
2574 font-weight: 600;
2575 cursor: pointer;
2576 transition: filter 0.15s ease, box-shadow 0.15s ease;
2577 }
2578
2579 .mxch-seod-optimize-btn:hover {
2580 filter: brightness(1.08);
2581 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
2582 }
2583
2584 .mxch-seod-optimize-btn:disabled {
2585 opacity: 0.6;
2586 cursor: not-allowed;
2587 }
2588
2589 .mxch-seod-optimize-btn svg {
2590 animation: none;
2591 }
2592
2593 .mxch-seod-optimize-btn:disabled svg {
2594 animation: mxch-spin 0.8s linear infinite;
2595 }
2596
2597 /* Footer */
2598
2599 .mxch-seod-footer {
2600 display: flex;
2601 align-items: center;
2602 gap: 12px;
2603 padding: 12px 18px;
2604 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
2605 flex-wrap: wrap;
2606 }
2607
2608 .mxch-seod-scan-btn {
2609 display: inline-flex;
2610 align-items: center;
2611 gap: 6px;
2612 padding: 7px 14px;
2613 background: var(--mxch-card-bg, #fff);
2614 color: var(--mxch-primary, #7873f5);
2615 border: 1px solid var(--mxch-primary, #7873f5);
2616 border-radius: 6px;
2617 font-size: 12.5px;
2618 font-weight: 600;
2619 cursor: pointer;
2620 transition: all 0.15s ease;
2621 }
2622
2623 .mxch-seod-scan-btn:hover {
2624 background: var(--mxch-primary, #7873f5);
2625 color: #fff;
2626 }
2627
2628 .mxch-seod-scan-btn:disabled {
2629 opacity: 0.6;
2630 cursor: not-allowed;
2631 background: var(--mxch-primary, #7873f5);
2632 color: #fff;
2633 }
2634
2635 .mxch-seod-scan-stop-btn {
2636 color: #ef4444;
2637 border-color: #ef4444;
2638 }
2639
2640 .mxch-seod-scan-stop-btn:hover {
2641 background: #ef4444;
2642 color: #fff;
2643 }
2644
2645 .mxch-seod-scan-stop-btn:disabled {
2646 background: #ef4444;
2647 color: #fff;
2648 border-color: #ef4444;
2649 }
2650
2651 .mxch-seod-scan-status {
2652 font-size: 12.5px;
2653 color: var(--mxch-text-muted, #6b7280);
2654 }
2655
2656 .mxch-seod-scan-progress {
2657 font-weight: 600;
2658 color: var(--mxch-primary, #7873f5);
2659 }
2660
2661 .mxch-seod-pagination {
2662 display: flex;
2663 align-items: center;
2664 gap: 8px;
2665 margin-left: auto;
2666 }
2667
2668 .mxch-seod-page-btn {
2669 padding: 5px 12px;
2670 border: 1px solid var(--mxch-input-border, #d1d5db);
2671 border-radius: 6px;
2672 background: var(--mxch-card-bg, #fff);
2673 color: var(--mxch-text-primary, #1a1a2e);
2674 font-size: 12.5px;
2675 cursor: pointer;
2676 transition: all 0.15s ease;
2677 }
2678
2679 .mxch-seod-page-btn:hover {
2680 border-color: var(--mxch-primary, #7873f5);
2681 color: var(--mxch-primary, #7873f5);
2682 }
2683
2684 .mxch-seod-page-info {
2685 font-size: 12.5px;
2686 color: var(--mxch-text-muted, #6b7280);
2687 }
2688
2689 /* Loading & Empty */
2690
2691 .mxch-seod-loading {
2692 display: flex;
2693 flex-direction: column;
2694 align-items: center;
2695 gap: 10px;
2696 padding: 48px 20px;
2697 color: var(--mxch-text-muted, #6b7280);
2698 font-size: 13px;
2699 }
2700
2701 .mxch-seod-empty {
2702 display: flex;
2703 flex-direction: column;
2704 align-items: center;
2705 gap: 8px;
2706 padding: 48px 20px;
2707 color: var(--mxch-text-muted, #6b7280);
2708 font-size: 13px;
2709 text-align: center;
2710 }
2711
2712 .mxch-seod-empty svg {
2713 opacity: 0.4;
2714 }
2715
2716 .mxch-seod-error {
2717 padding: 24px;
2718 text-align: center;
2719 color: #ef4444;
2720 font-size: 13px;
2721 }
2722
2723 /* ─── Settings Card Header ─────────────────────────────────────── */
2724
2725 .mxch-card-header {
2726 padding: 14px 20px 0;
2727 }
2728
2729 .mxch-card-title {
2730 font-size: 14px;
2731 font-weight: 600;
2732 color: var(--mxch-text-primary, #1a1a2e);
2733 margin: 0;
2734 text-transform: uppercase;
2735 letter-spacing: 0.5px;
2736 opacity: 0.6;
2737 }
2738
2739 /* ─── SEO Optimize Checkbox Grid ───────────────────────────────── */
2740
2741 .mxch-seo-opt-grid {
2742 display: flex;
2743 flex-wrap: wrap;
2744 gap: 6px;
2745 }
2746
2747 .mxch-seo-opt-item {
2748 display: inline-flex;
2749 align-items: center;
2750 gap: 6px;
2751 padding: 6px 12px;
2752 border: 1px solid var(--mxch-card-border, #e2e4e9);
2753 border-radius: 6px;
2754 font-size: 13px;
2755 color: var(--mxch-text-primary, #1a1a2e);
2756 cursor: pointer;
2757 transition: border-color 0.15s, background 0.15s;
2758 user-select: none;
2759 }
2760
2761 .mxch-seo-opt-item:hover {
2762 border-color: var(--mxch-primary, #7873f5);
2763 background: rgba(120, 115, 245, 0.04);
2764 }
2765
2766 .mxch-seo-opt-item:has(input:checked) {
2767 border-color: var(--mxch-primary, #7873f5);
2768 background: rgba(120, 115, 245, 0.06);
2769 }
2770
2771 .mxch-seo-opt-check {
2772 width: 14px;
2773 height: 14px;
2774 accent-color: var(--mxch-primary, #7873f5);
2775 margin: 0;
2776 cursor: pointer;
2777 }
2778
2779 .mxch-seo-opt-locked {
2780 opacity: 0.5;
2781 cursor: not-allowed;
2782 }
2783
2784 .mxch-seo-opt-locked:hover {
2785 border-color: var(--mxch-card-border, #e2e4e9);
2786 background: transparent;
2787 }
2788
2789 .mxch-seo-opt-item .mxch-cg-pro-badge {
2790 margin-left: 2px;
2791 font-size: 9px;
2792 padding: 1px 5px;
2793 }
2794
2795 /* ─── GSC Locked / Placeholder Styles ──────────────────────────── */
2796
2797 .mxch-seod-header-locked {
2798 opacity: 0.5;
2799 cursor: default;
2800 pointer-events: none;
2801 }
2802
2803 .mxch-seod-header-locked svg {
2804 margin-left: 3px;
2805 vertical-align: middle;
2806 opacity: 0.6;
2807 }
2808
2809 .mxch-seod-cell-locked {
2810 opacity: 0.4;
2811 color: var(--mxch-text-muted, #94a3b8);
2812 cursor: default;
2813 }
2814
2815 /* Settings locked GSC card */
2816 .mxch-gsc-settings-locked {
2817 border: 1px dashed var(--mxch-card-border, #e2e4e9);
2818 border-radius: 8px;
2819 padding: 16px;
2820 margin-top: 12px;
2821 background: var(--mxch-card-bg, #fff);
2822 opacity: 0.85;
2823 }
2824
2825 .mxch-gsc-settings-locked-header {
2826 display: flex;
2827 align-items: center;
2828 gap: 8px;
2829 font-size: 14px;
2830 font-weight: 600;
2831 color: var(--mxch-text-primary, #1a1a2e);
2832 margin-bottom: 6px;
2833 }
2834
2835 .mxch-gsc-settings-locked-header svg {
2836 color: var(--mxch-text-muted, #94a3b8);
2837 flex-shrink: 0;
2838 }
2839
2840 .mxch-gsc-settings-locked .mxch-field-description {
2841 margin-bottom: 10px;
2842 }
2843
2844 .mxch-gsc-connect-btn {
2845 display: inline-flex;
2846 align-items: center;
2847 gap: 6px;
2848 padding: 8px 16px;
2849 border: 1px solid var(--mxch-card-border, #e2e4e9);
2850 border-radius: 6px;
2851 background: var(--mxch-card-bg, #fff);
2852 color: var(--mxch-text-muted, #94a3b8);
2853 font-size: 13px;
2854 cursor: not-allowed;
2855 opacity: 0.6;
2856 margin-bottom: 8px;
2857 }
2858
2859 /* Detail modal GSC placeholder */
2860 .mxch-gsc-placeholder {
2861 position: relative;
2862 margin-top: 16px;
2863 padding: 16px;
2864 border: 1px dashed var(--mxch-card-border, #e2e4e9);
2865 border-radius: 8px;
2866 overflow: hidden;
2867 }
2868
2869 .mxch-gsc-placeholder-title {
2870 display: flex;
2871 align-items: center;
2872 gap: 6px;
2873 font-size: 14px;
2874 font-weight: 600;
2875 color: var(--mxch-text-primary, #1a1a2e);
2876 margin: 0 0 12px 0;
2877 opacity: 0.5;
2878 }
2879
2880 .mxch-gsc-placeholder-content {
2881 filter: blur(1.5px);
2882 opacity: 0.5;
2883 pointer-events: none;
2884 user-select: none;
2885 }
2886
2887 .mxch-gsc-stats {
2888 display: grid;
2889 grid-template-columns: repeat(4, 1fr);
2890 gap: 10px;
2891 margin-bottom: 14px;
2892 }
2893
2894 .mxch-gsc-stat {
2895 display: flex;
2896 flex-direction: column;
2897 align-items: center;
2898 padding: 10px 8px;
2899 background: var(--mxch-bg, #f8fafc);
2900 border-radius: 6px;
2901 border: 1px solid var(--mxch-card-border, #e2e4e9);
2902 }
2903
2904 .mxch-gsc-stat-value {
2905 font-size: 18px;
2906 font-weight: 700;
2907 color: var(--mxch-text-primary, #1a1a2e);
2908 }
2909
2910 .mxch-gsc-stat-label {
2911 font-size: 11px;
2912 color: var(--mxch-text-muted, #94a3b8);
2913 margin-top: 2px;
2914 }
2915
2916 .mxch-gsc-table {
2917 width: 100%;
2918 border-collapse: collapse;
2919 font-size: 12px;
2920 }
2921
2922 .mxch-gsc-table th {
2923 text-align: left;
2924 padding: 6px 8px;
2925 font-weight: 600;
2926 color: var(--mxch-text-muted, #94a3b8);
2927 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2928 font-size: 11px;
2929 }
2930
2931 .mxch-gsc-table td {
2932 padding: 6px 8px;
2933 color: var(--mxch-text-primary, #1a1a2e);
2934 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2935 }
2936
2937 .mxch-gsc-placeholder-overlay {
2938 position: absolute;
2939 inset: 0;
2940 display: flex;
2941 flex-direction: column;
2942 align-items: center;
2943 justify-content: center;
2944 gap: 6px;
2945 background: rgba(255, 255, 255, 0.4);
2946 z-index: 2;
2947 }
2948
2949 .mxch-gsc-placeholder-overlay svg {
2950 opacity: 0.3;
2951 }
2952
2953 .mxch-gsc-placeholder-overlay .mxch-cg-pro-upgrade-link {
2954 font-size: 12px;
2955 }
2956
2957 /* Responsive */
2958
2959 @media (max-width: 768px) {
2960 .mxch-seod-filters {
2961 flex-direction: column;
2962 align-items: stretch;
2963 gap: 8px;
2964 }
2965 .mxch-seod-search {
2966 width: 100%;
2967 }
2968 .mxch-seod-cell-status {
2969 display: none;
2970 }
2971 .mxch-seod-cell-date,
2972 .mxch-seod-cell-clicks,
2973 .mxch-seod-cell-impressions {
2974 display: none;
2975 }
2976 .mxch-seod-header-date,
2977 .mxch-seod-header-clicks,
2978 .mxch-seod-header-impressions {
2979 display: none;
2980 }
2981 .mxch-seod-modal {
2982 width: 95%;
2983 max-height: 85vh;
2984 }
2985 .mxch-seod-row-main {
2986 padding: 10px 14px;
2987 }
2988 .mxch-seod-footer {
2989 flex-direction: column;
2990 align-items: stretch;
2991 gap: 8px;
2992 }
2993 .mxch-seod-pagination {
2994 margin-left: 0;
2995 justify-content: center;
2996 }
2997 }
2998