PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.19
MxChat – AI Chatbot & Content Generation for WordPress v3.2.19
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.2.19, at css/admin-content.css

3,448 lines 77.1 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 /* ─── Range slider (Images per article) ─────────────────────────── */
496
497 .mxch-cg-slider-row {
498 display: flex;
499 align-items: center;
500 gap: 12px;
501 }
502
503 .mxch-cg-slider {
504 flex: 1;
505 -webkit-appearance: none;
506 appearance: none;
507 height: 6px;
508 border-radius: 3px;
509 background: #e2e8f0;
510 cursor: pointer;
511 }
512
513 .mxch-cg-slider:disabled {
514 opacity: 0.5;
515 cursor: not-allowed;
516 }
517
518 .mxch-cg-slider::-webkit-slider-thumb {
519 -webkit-appearance: none;
520 appearance: none;
521 width: 18px;
522 height: 18px;
523 border-radius: 50%;
524 background: var(--mxch-primary, #7873f5);
525 border: 2px solid #fff;
526 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
527 cursor: pointer;
528 }
529
530 .mxch-cg-slider::-moz-range-thumb {
531 width: 18px;
532 height: 18px;
533 border-radius: 50%;
534 background: var(--mxch-primary, #7873f5);
535 border: 2px solid #fff;
536 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
537 cursor: pointer;
538 }
539
540 .mxch-cg-slider-value {
541 min-width: 24px;
542 text-align: center;
543 font-size: 14px;
544 font-weight: 600;
545 color: var(--mxch-primary, #7873f5);
546 }
547
548 /* ─── Progress Bar (inside modal) ───────────────────────────────── */
549
550 .mxch-cg-progress {
551 margin-top: 14px;
552 padding-top: 14px;
553 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
554 }
555
556 .mxch-cg-progress-bar {
557 width: 100%;
558 height: 6px;
559 background: #e2e8f0;
560 border-radius: 3px;
561 overflow: hidden;
562 margin-bottom: 8px;
563 }
564
565 .mxch-cg-progress-fill {
566 height: 100%;
567 background: var(--mxch-primary, #7873f5);
568 border-radius: 3px;
569 transition: width 0.4s ease;
570 }
571
572 .mxch-cg-progress-text {
573 font-size: 13px;
574 color: var(--mxch-text-secondary, #64748b);
575 margin: 0;
576 }
577
578 /* ─── Mini Chat Panel (bottom overlay) ──────────────────────────── */
579
580 .mxch-cg-chat-panel {
581 position: fixed;
582 bottom: 20px;
583 right: 20px;
584 width: 380px;
585 max-height: 420px;
586 background: var(--mxch-card-bg, #fff);
587 border: 1px solid var(--mxch-card-border, #e2e4e9);
588 border-radius: 14px;
589 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
590 z-index: 100040;
591 display: flex;
592 flex-direction: column;
593 animation: mxch-chat-in 0.2s ease-out;
594 }
595
596 @keyframes mxch-chat-in {
597 from {
598 opacity: 0;
599 transform: translateY(16px);
600 }
601 to {
602 opacity: 1;
603 transform: translateY(0);
604 }
605 }
606
607 .mxch-cg-chat-panel-header {
608 display: flex;
609 align-items: center;
610 justify-content: space-between;
611 padding: 12px 16px;
612 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
613 flex-shrink: 0;
614 }
615
616 .mxch-cg-chat-panel-title {
617 font-size: 14px;
618 font-weight: 600;
619 color: var(--mxch-text-primary, #1a1a2e);
620 }
621
622 .mxch-cg-chat-panel-close {
623 display: flex;
624 align-items: center;
625 justify-content: center;
626 width: 28px;
627 height: 28px;
628 border: none;
629 border-radius: 6px;
630 background: transparent;
631 color: var(--mxch-text-muted, #94a3b8);
632 cursor: pointer;
633 transition: all 0.15s;
634 }
635
636 .mxch-cg-chat-panel-close:hover {
637 background: #f1f5f9;
638 color: var(--mxch-text-primary, #1a1a2e);
639 }
640
641 .mxch-cg-chat-messages {
642 flex: 1;
643 overflow-y: auto;
644 display: flex;
645 flex-direction: column;
646 gap: 8px;
647 padding: 12px 16px;
648 min-height: 120px;
649 max-height: 260px;
650 }
651
652 .mxch-cg-chat-messages::-webkit-scrollbar {
653 width: 4px;
654 }
655
656 .mxch-cg-chat-messages::-webkit-scrollbar-thumb {
657 background: #cbd5e1;
658 border-radius: 2px;
659 }
660
661 .mxch-cg-chat-msg {
662 display: flex;
663 }
664
665 .mxch-cg-chat-user {
666 justify-content: flex-end;
667 }
668
669 .mxch-cg-chat-assistant {
670 justify-content: flex-start;
671 }
672
673 .mxch-cg-chat-bubble {
674 max-width: 85%;
675 padding: 8px 12px;
676 border-radius: 12px;
677 font-size: 13px;
678 line-height: 1.5;
679 word-break: break-word;
680 }
681
682 .mxch-cg-chat-user .mxch-cg-chat-bubble {
683 background: var(--mxch-primary, #7873f5);
684 color: #fff;
685 border-bottom-right-radius: 4px;
686 }
687
688 .mxch-cg-chat-assistant .mxch-cg-chat-bubble {
689 background: #f1f5f9;
690 color: var(--mxch-text-primary, #1a1a2e);
691 border-bottom-left-radius: 4px;
692 }
693
694 /* Loading dots */
695 .mxch-cg-chat-loading {
696 display: flex;
697 align-items: center;
698 gap: 4px;
699 padding: 12px 16px;
700 }
701
702 .mxch-cg-chat-loading span {
703 width: 6px;
704 height: 6px;
705 background: #94a3b8;
706 border-radius: 50%;
707 animation: mxch-bounce 1.4s infinite both;
708 }
709
710 .mxch-cg-chat-loading span:nth-child(2) {
711 animation-delay: 0.16s;
712 }
713
714 .mxch-cg-chat-loading span:nth-child(3) {
715 animation-delay: 0.32s;
716 }
717
718 @keyframes mxch-bounce {
719 0%, 80%, 100% { transform: scale(0); }
720 40% { transform: scale(1); }
721 }
722
723 /* Chat Input */
724 .mxch-cg-chat-input-wrap {
725 display: flex;
726 gap: 8px;
727 align-items: flex-end;
728 padding: 12px 16px;
729 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
730 flex-shrink: 0;
731 }
732
733 .mxch-cg-chat-input {
734 flex: 1;
735 padding: 8px 12px;
736 border: 1px solid var(--mxch-input-border, #d1d5db);
737 border-radius: 16px;
738 background: var(--mxch-input-bg, #fff);
739 color: var(--mxch-text-primary, #1a1a2e);
740 font-size: 13px;
741 font-family: inherit;
742 outline: none;
743 transition: border-color 0.2s;
744 resize: none;
745 overflow-y: auto;
746 max-height: 150px;
747 line-height: 1.4;
748 }
749
750 .mxch-cg-chat-input:focus {
751 border-color: var(--mxch-input-focus, #7873f5);
752 }
753
754 .mxch-cg-chat-send {
755 display: flex;
756 align-items: center;
757 justify-content: center;
758 width: 34px;
759 height: 34px;
760 border: none;
761 border-radius: 50%;
762 background: var(--mxch-primary, #7873f5);
763 color: #fff;
764 cursor: pointer;
765 transition: all 0.2s;
766 flex-shrink: 0;
767 }
768
769 .mxch-cg-chat-send:hover:not(:disabled) {
770 background: var(--mxch-primary-hover, #6863e5);
771 }
772
773 .mxch-cg-chat-send:disabled {
774 opacity: 0.4;
775 cursor: not-allowed;
776 }
777
778 /* ─── Notices ────────────────────────────────────────────────────── */
779
780 .mxch-cg-notice {
781 padding: 10px 14px;
782 border-radius: 6px;
783 font-size: 13px;
784 margin-bottom: 12px;
785 }
786
787 .mxch-cg-notice-error {
788 background: #fef2f2;
789 color: #991b1b;
790 border: 1px solid #fecaca;
791 }
792
793 .mxch-cg-notice-success {
794 background: #f0fdf4;
795 color: #166534;
796 border: 1px solid #bbf7d0;
797 }
798
799 /* ─── Save Indicators ────────────────────────────────────────────── */
800
801 .mxch-field-label.mxch-saving::after,
802 .mxch-toggle-label.mxch-saving::after {
803 content: '';
804 display: inline-block;
805 width: 12px;
806 height: 12px;
807 margin-left: 6px;
808 border: 2px solid #e5e7eb;
809 border-top-color: var(--mxch-success, #10b981);
810 border-radius: 50%;
811 animation: mxch-spin 0.6s linear infinite;
812 vertical-align: middle;
813 }
814
815 .mxch-field-label.mxch-saved::after,
816 .mxch-toggle-label.mxch-saved::after {
817 content: ' \2713';
818 color: var(--mxch-success, #10b981);
819 font-weight: bold;
820 }
821
822 /* ─── Responsive ─────────────────────────────────────────────────── */
823
824 @media (max-width: 782px) {
825 .mxch-cg-toolbar {
826 flex-direction: column;
827 align-items: flex-start;
828 }
829
830 .mxch-cg-toolbar-right {
831 width: 100%;
832 flex-wrap: wrap;
833 }
834
835 .mxch-cg-status-menu {
836 left: auto;
837 right: 0;
838 }
839
840 .mxch-cg-options {
841 flex-direction: column;
842 }
843
844 .mxch-cg-chat-panel {
845 left: 10px;
846 right: 10px;
847 width: auto;
848 bottom: 10px;
849 max-height: calc(100vh - 60px);
850 }
851
852 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
853 width: auto;
854 flex-direction: column;
855 max-height: calc(100vh - 60px);
856 overflow: hidden;
857 }
858
859 .mxch-cg-images-col {
860 width: 100%;
861 max-height: 50vh;
862 min-height: 260px;
863 border-right: none;
864 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
865 overflow-y: auto;
866 }
867
868 .mxch-cg-images-grid {
869 grid-template-columns: repeat(2, 1fr);
870 gap: 8px;
871 padding: 8px;
872 }
873
874 .mxch-cg-left-tabs {
875 flex-shrink: 0;
876 }
877
878 .mxch-seo-checklist {
879 max-height: none;
880 overflow-y: visible;
881 }
882
883 .mxch-seo-check-label {
884 font-size: 12px;
885 }
886
887 .mxch-seo-check-detail {
888 font-size: 11px;
889 }
890
891 .mxch-seo-check {
892 padding: 8px 12px;
893 }
894
895 .mxch-cg-chat-messages {
896 max-height: 180px;
897 }
898
899 .mxch-cg-inline-form {
900 padding: 20px 12px;
901 min-height: auto;
902 }
903
904 .mxch-cg-inline-form-inner {
905 padding: 20px 16px 18px;
906 }
907 }
908
909 /* ─── Pro Feature Lock Styles ──────────────────────────────────── */
910
911 .mxch-cg-pro-badge {
912 display: inline-flex;
913 align-items: center;
914 padding: 2px 8px;
915 margin-left: 8px;
916 border-radius: 20px;
917 font-size: 10px;
918 font-weight: 700;
919 text-transform: uppercase;
920 letter-spacing: 0.5px;
921 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
922 color: var(--mxch-primary, #7873f5);
923 line-height: 1;
924 vertical-align: middle;
925 }
926
927 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle-switch {
928 opacity: 0.4;
929 cursor: not-allowed;
930 }
931
932 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle {
933 cursor: default;
934 }
935
936 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-field-description {
937 opacity: 0.6;
938 }
939
940 .mxch-cg-pro-upgrade-link {
941 display: inline-flex;
942 align-items: center;
943 gap: 4px;
944 font-size: 12px;
945 color: var(--mxch-primary, #7873f5);
946 text-decoration: none;
947 margin-top: 4px;
948 transition: color 0.2s;
949 }
950
951 .mxch-cg-pro-upgrade-link:hover {
952 color: var(--mxch-primary-hover, #6863e5);
953 text-decoration: underline;
954 }
955
956 /* ─── Image Management Panel (Two-Column Chat) ────────────────── */
957
958 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
959 width: 760px;
960 max-height: 480px;
961 flex-direction: row;
962 }
963
964 .mxch-cg-images-col {
965 width: 280px;
966 flex-shrink: 0;
967 display: flex;
968 flex-direction: column;
969 border-right: 1px solid var(--mxch-card-border, #e2e4e9);
970 position: relative;
971 overflow: hidden;
972 }
973
974 /* ── Left Column Tabs ──────────────────────────────────── */
975
976 .mxch-cg-left-tabs {
977 display: flex;
978 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
979 flex-shrink: 0;
980 }
981
982 .mxch-cg-left-tab {
983 flex: 1;
984 display: flex;
985 align-items: center;
986 justify-content: center;
987 gap: 4px;
988 padding: 10px 8px;
989 border: none;
990 background: transparent;
991 color: var(--mxch-text-muted, #94a3b8);
992 font-size: 12px;
993 font-weight: 500;
994 cursor: pointer;
995 transition: all 0.15s;
996 position: relative;
997 }
998
999 .mxch-cg-left-tab:hover {
1000 color: var(--mxch-text-secondary, #64748b);
1001 background: rgba(0, 0, 0, 0.03);
1002 }
1003
1004 .mxch-cg-left-tab.active {
1005 color: var(--mxch-primary, #7873f5);
1006 font-weight: 600;
1007 }
1008
1009 .mxch-cg-left-tab.active::after {
1010 content: '';
1011 position: absolute;
1012 bottom: -1px;
1013 left: 12px;
1014 right: 12px;
1015 height: 2px;
1016 background: var(--mxch-primary, #7873f5);
1017 border-radius: 1px;
1018 }
1019
1020 .mxch-cg-left-tab .mxch-cg-pro-badge {
1021 margin-left: 2px;
1022 font-size: 8px;
1023 padding: 1px 4px;
1024 }
1025
1026 .mxch-cg-left-tab.mxch-cg-tab-flash {
1027 animation: mxch-tab-flash 0.6s ease 3;
1028 }
1029
1030 @keyframes mxch-tab-flash {
1031 0%, 100% { color: var(--mxch-primary, #7873f5); }
1032 50% { color: #10b981; }
1033 }
1034
1035 .mxch-cg-left-panel {
1036 display: none;
1037 flex: 1;
1038 overflow-y: auto;
1039 }
1040
1041 .mxch-cg-left-panel.active {
1042 display: flex;
1043 flex-direction: column;
1044 }
1045
1046 /* ── Meta/SEO Form ─────────────────────────────────────── */
1047
1048 .mxch-cg-meta-form {
1049 display: flex;
1050 flex-direction: column;
1051 gap: 10px;
1052 padding: 12px;
1053 overflow-y: auto;
1054 flex: 1;
1055 }
1056
1057 .mxch-cg-meta-field {
1058 display: flex;
1059 flex-direction: column;
1060 gap: 3px;
1061 }
1062
1063 .mxch-cg-meta-field label {
1064 font-size: 11px;
1065 font-weight: 600;
1066 color: var(--mxch-text-secondary, #64748b);
1067 text-transform: uppercase;
1068 letter-spacing: 0.3px;
1069 }
1070
1071 .mxch-cg-meta-input {
1072 width: 100%;
1073 padding: 6px 8px;
1074 border: 1px solid var(--mxch-input-border, #d1d5db);
1075 border-radius: 5px;
1076 background: var(--mxch-input-bg, #fff);
1077 color: var(--mxch-text-primary, #1a1a2e);
1078 font-size: 12px;
1079 line-height: 1.4;
1080 transition: border-color 0.2s;
1081 font-family: inherit;
1082 resize: vertical;
1083 box-sizing: border-box;
1084 }
1085
1086 .mxch-cg-meta-input:focus {
1087 outline: none;
1088 border-color: var(--mxch-input-focus, #7873f5);
1089 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
1090 }
1091
1092 .mxch-cg-meta-input:disabled,
1093 .mxch-cg-meta-input[readonly] {
1094 opacity: 0.5;
1095 cursor: not-allowed;
1096 background: #f8fafc;
1097 }
1098
1099 textarea.mxch-cg-meta-input {
1100 min-height: 48px;
1101 }
1102
1103 .mxch-cg-meta-charcount {
1104 font-size: 10px;
1105 color: var(--mxch-text-muted, #94a3b8);
1106 text-align: right;
1107 }
1108
1109 .mxch-cg-meta-charcount-over {
1110 color: #ef4444;
1111 font-weight: 600;
1112 }
1113
1114 .mxch-cg-meta-lock-overlay {
1115 position: absolute;
1116 inset: 0;
1117 display: flex;
1118 flex-direction: column;
1119 align-items: center;
1120 justify-content: center;
1121 gap: 6px;
1122 background: rgba(0, 0, 0, 0.04);
1123 z-index: 2;
1124 pointer-events: none;
1125 }
1126
1127 .mxch-cg-meta-lock-overlay svg {
1128 opacity: 0.3;
1129 }
1130
1131 .mxch-cg-meta-lock-overlay span {
1132 font-size: 11px;
1133 color: var(--mxch-primary, #7873f5);
1134 font-weight: 500;
1135 }
1136
1137 .mxch-cg-meta-field label.mxch-saving::after {
1138 content: '';
1139 display: inline-block;
1140 width: 10px;
1141 height: 10px;
1142 margin-left: 4px;
1143 border: 2px solid #e5e7eb;
1144 border-top-color: var(--mxch-success, #10b981);
1145 border-radius: 50%;
1146 animation: mxch-spin 0.6s linear infinite;
1147 vertical-align: middle;
1148 }
1149
1150 .mxch-cg-meta-field label.mxch-saved::after {
1151 content: ' \2713';
1152 color: var(--mxch-success, #10b981);
1153 font-weight: bold;
1154 }
1155
1156 /* Legacy header (kept for backward compat if needed) */
1157 .mxch-cg-images-header {
1158 display: flex;
1159 align-items: center;
1160 justify-content: space-between;
1161 padding: 12px 14px;
1162 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1163 flex-shrink: 0;
1164 }
1165
1166 .mxch-cg-images-title {
1167 font-size: 13px;
1168 font-weight: 600;
1169 color: var(--mxch-text-primary, #1a1a2e);
1170 display: flex;
1171 align-items: center;
1172 }
1173
1174 .mxch-cg-images-grid {
1175 flex: 1;
1176 display: grid;
1177 grid-template-columns: 1fr 1fr;
1178 gap: 8px;
1179 padding: 12px;
1180 overflow-y: auto;
1181 position: relative;
1182 }
1183
1184 .mxch-cg-image-thumb {
1185 aspect-ratio: 4 / 3;
1186 border-radius: 8px;
1187 position: relative;
1188 background: var(--mxch-input-bg, #fff);
1189 border: 1px solid var(--mxch-card-border, #e2e4e9);
1190 }
1191
1192 .mxch-cg-image-thumb img {
1193 width: 100%;
1194 height: 100%;
1195 object-fit: cover;
1196 }
1197
1198 .mxch-cg-image-placeholder {
1199 display: flex;
1200 align-items: center;
1201 justify-content: center;
1202 background: #f1f5f9;
1203 color: #cbd5e1;
1204 }
1205
1206 /* Empty state (before generation) */
1207 .mxch-cg-images-empty {
1208 grid-column: 1 / -1;
1209 display: flex;
1210 flex-direction: column;
1211 align-items: center;
1212 justify-content: center;
1213 gap: 8px;
1214 padding: 24px 12px;
1215 color: var(--mxch-text-muted, #94a3b8);
1216 text-align: center;
1217 }
1218
1219 .mxch-cg-images-empty svg {
1220 opacity: 0.5;
1221 }
1222
1223 .mxch-cg-images-empty span {
1224 font-size: 11px;
1225 line-height: 1.4;
1226 }
1227
1228 /* Hover actions on images */
1229 .mxch-cg-image-actions {
1230 position: absolute;
1231 bottom: 0;
1232 left: 0;
1233 right: 0;
1234 display: flex;
1235 gap: 4px;
1236 padding: 6px;
1237 background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
1238 opacity: 0;
1239 transition: opacity 0.2s;
1240 }
1241
1242 .mxch-cg-image-thumb:hover .mxch-cg-image-actions {
1243 opacity: 1;
1244 }
1245
1246 .mxch-cg-image-action-btn {
1247 flex: 1;
1248 padding: 5px 4px;
1249 border: none;
1250 border-radius: 4px;
1251 background: rgba(255, 255, 255, 0.9);
1252 color: #1a1a2e;
1253 font-size: 10px;
1254 font-weight: 500;
1255 cursor: pointer;
1256 display: flex;
1257 align-items: center;
1258 justify-content: center;
1259 gap: 3px;
1260 transition: background 0.15s;
1261 line-height: 1;
1262 }
1263
1264 .mxch-cg-image-action-btn:hover {
1265 background: #fff;
1266 }
1267
1268 /* Locked action buttons */
1269 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn {
1270 cursor: not-allowed;
1271 opacity: 0.7;
1272 }
1273
1274 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn:hover {
1275 background: rgba(255, 255, 255, 0.9);
1276 }
1277
1278 /* Per-image PRO lock badge (top-right corner) */
1279 .mxch-cg-image-lock-badge {
1280 position: absolute;
1281 top: 4px;
1282 right: 4px;
1283 display: flex;
1284 align-items: center;
1285 gap: 3px;
1286 padding: 2px 6px;
1287 background: rgba(120, 115, 245, 0.85);
1288 color: #fff;
1289 border-radius: 4px;
1290 font-size: 8px;
1291 font-weight: 700;
1292 letter-spacing: 0.5px;
1293 text-transform: uppercase;
1294 line-height: 1;
1295 z-index: 2;
1296 backdrop-filter: blur(4px);
1297 }
1298
1299 .mxch-cg-image-lock-badge svg {
1300 flex-shrink: 0;
1301 }
1302
1303 /* Image loading state (used by add-on during upload/regenerate) */
1304 .mxch-cg-image-thumb.mxch-cg-image-loading {
1305 position: relative;
1306 pointer-events: none;
1307 }
1308 .mxch-cg-image-thumb.mxch-cg-image-loading::after {
1309 content: '';
1310 position: absolute;
1311 inset: 0;
1312 background: rgba(0, 0, 0, 0.5);
1313 border-radius: 6px;
1314 z-index: 10;
1315 }
1316 .mxch-cg-image-thumb.mxch-cg-image-loading::before {
1317 content: '';
1318 position: absolute;
1319 top: 50%;
1320 left: 50%;
1321 width: 24px;
1322 height: 24px;
1323 margin: -12px 0 0 -12px;
1324 border: 3px solid rgba(255, 255, 255, 0.3);
1325 border-top-color: #fff;
1326 border-radius: 50%;
1327 z-index: 11;
1328 animation: mxch-spin 0.8s linear infinite;
1329 }
1330 @keyframes mxch-spin {
1331 to { transform: rotate(360deg); }
1332 }
1333
1334 /* Image selected state (regen mode) */
1335 .mxch-cg-image-thumb.mxch-cg-image-selected {
1336 outline: 2px solid #7873f5;
1337 outline-offset: -2px;
1338 border-radius: 6px;
1339 box-shadow: 0 0 0 4px rgba(120, 115, 245, 0.25);
1340 }
1341
1342 /* Regen bar — sits above chat input when an image is selected for regeneration */
1343 .mxch-cg-regen-bar {
1344 display: flex;
1345 align-items: center;
1346 gap: 10px;
1347 padding: 8px 12px;
1348 background: rgba(120, 115, 245, 0.1);
1349 border-top: 1px solid rgba(120, 115, 245, 0.3);
1350 animation: mxch-regen-bar-in 0.2s ease;
1351 }
1352 @keyframes mxch-regen-bar-in {
1353 from { opacity: 0; transform: translateY(6px); }
1354 to { opacity: 1; transform: translateY(0); }
1355 }
1356 .mxch-cg-regen-bar-thumb {
1357 width: 36px;
1358 height: 36px;
1359 border-radius: 4px;
1360 object-fit: cover;
1361 border: 1px solid rgba(120, 115, 245, 0.4);
1362 flex-shrink: 0;
1363 }
1364 .mxch-cg-regen-bar-text {
1365 flex: 1;
1366 font-size: 12px;
1367 color: #a0a0b0;
1368 line-height: 1.3;
1369 }
1370 .mxch-cg-regen-bar-cancel {
1371 background: none;
1372 border: none;
1373 color: #a0a0b0;
1374 cursor: pointer;
1375 padding: 4px;
1376 border-radius: 4px;
1377 display: flex;
1378 align-items: center;
1379 flex-shrink: 0;
1380 }
1381 .mxch-cg-regen-bar-cancel:hover {
1382 color: #fff;
1383 background: rgba(255, 255, 255, 0.1);
1384 }
1385
1386 /* Chat column in two-column layout */
1387 .mxch-cg-chat-col {
1388 flex: 1;
1389 display: flex;
1390 flex-direction: column;
1391 min-width: 0;
1392 }
1393
1394 /* ─── Mobile overrides for two-column chat (must come after desktop rules) ── */
1395 @media (max-width: 782px) {
1396 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
1397 width: auto;
1398 flex-direction: column;
1399 max-height: calc(100vh - 60px);
1400 overflow: hidden;
1401 }
1402
1403 .mxch-cg-images-col {
1404 width: 100%;
1405 max-height: 200px;
1406 border-right: none;
1407 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1408 }
1409
1410 .mxch-cg-chat-col {
1411 min-height: 0;
1412 }
1413
1414 .mxch-cg-chat-messages {
1415 max-height: 180px;
1416 }
1417 }
1418
1419 /* ─── History Tab ────────────────────────────────────────────────── */
1420
1421 .mxch-cg-history-loading {
1422 display: flex;
1423 flex-direction: column;
1424 align-items: center;
1425 justify-content: center;
1426 padding: 60px 20px;
1427 color: var(--mxch-text-muted, #94a3b8);
1428 }
1429
1430 .mxch-cg-history-spinner {
1431 width: 28px;
1432 height: 28px;
1433 border: 3px solid #e2e8f0;
1434 border-top-color: var(--mxch-primary, #7873f5);
1435 border-radius: 50%;
1436 animation: mxch-spin 0.6s linear infinite;
1437 margin-bottom: 12px;
1438 }
1439
1440 .mxch-cg-history-loading p {
1441 font-size: 14px;
1442 margin: 0;
1443 }
1444
1445 .mxch-cg-history-empty {
1446 display: flex;
1447 flex-direction: column;
1448 align-items: center;
1449 justify-content: center;
1450 padding: 60px 20px;
1451 color: var(--mxch-text-muted, #94a3b8);
1452 text-align: center;
1453 }
1454
1455 .mxch-cg-history-empty svg {
1456 margin-bottom: 16px;
1457 opacity: 0.4;
1458 }
1459
1460 .mxch-cg-history-empty p {
1461 font-size: 14px;
1462 margin: 0;
1463 max-width: 360px;
1464 }
1465
1466 .mxch-cg-history-list {
1467 display: flex;
1468 flex-direction: column;
1469 }
1470
1471 .mxch-cg-history-item {
1472 display: flex;
1473 align-items: center;
1474 gap: 14px;
1475 padding: 12px 0;
1476 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1477 }
1478
1479 .mxch-cg-history-item:last-child {
1480 border-bottom: none;
1481 }
1482
1483 .mxch-cg-history-thumb {
1484 width: 48px;
1485 height: 48px;
1486 border-radius: 8px;
1487 overflow: hidden;
1488 flex-shrink: 0;
1489 background: #f1f5f9;
1490 border: 1px solid var(--mxch-card-border, #e2e4e9);
1491 }
1492
1493 .mxch-cg-history-thumb-img {
1494 width: 100%;
1495 height: 100%;
1496 object-fit: cover;
1497 display: block;
1498 }
1499
1500 .mxch-cg-history-thumb-placeholder {
1501 width: 100%;
1502 height: 100%;
1503 display: flex;
1504 align-items: center;
1505 justify-content: center;
1506 color: #cbd5e1;
1507 }
1508
1509 .mxch-cg-history-info {
1510 flex: 1;
1511 min-width: 0;
1512 }
1513
1514 .mxch-cg-history-title {
1515 font-size: 14px;
1516 font-weight: 600;
1517 color: var(--mxch-text-primary, #1a1a2e);
1518 white-space: nowrap;
1519 overflow: hidden;
1520 text-overflow: ellipsis;
1521 margin-bottom: 4px;
1522 }
1523
1524 .mxch-cg-history-meta {
1525 display: flex;
1526 align-items: center;
1527 gap: 8px;
1528 flex-wrap: wrap;
1529 }
1530
1531 .mxch-cg-history-meta .mxch-cg-status-badge {
1532 font-size: 10px;
1533 padding: 1px 6px;
1534 cursor: default;
1535 pointer-events: none;
1536 }
1537
1538 .mxch-cg-history-type,
1539 .mxch-cg-history-date {
1540 font-size: 12px;
1541 color: var(--mxch-text-muted, #94a3b8);
1542 }
1543
1544 .mxch-cg-history-actions {
1545 display: flex;
1546 gap: 4px;
1547 flex-shrink: 0;
1548 }
1549
1550 .mxch-cg-history-action-btn {
1551 display: inline-flex;
1552 align-items: center;
1553 justify-content: center;
1554 width: 32px;
1555 height: 32px;
1556 border: 1px solid var(--mxch-input-border, #d1d5db);
1557 border-radius: 6px;
1558 background: transparent;
1559 color: var(--mxch-text-secondary, #64748b);
1560 cursor: pointer;
1561 transition: all 0.2s;
1562 text-decoration: none;
1563 }
1564
1565 .mxch-cg-history-action-btn svg {
1566 width: 15px;
1567 height: 15px;
1568 }
1569
1570 /* View — blue hover */
1571 .mxch-cg-history-view-btn:hover {
1572 border-color: #3b82f6;
1573 color: #3b82f6;
1574 background: rgba(59, 130, 246, 0.1);
1575 }
1576
1577 /* Edit — purple hover */
1578 .mxch-cg-history-edit-btn:hover {
1579 border-color: var(--mxch-primary, #7873f5);
1580 color: var(--mxch-primary, #7873f5);
1581 background: rgba(120, 115, 245, 0.1);
1582 }
1583
1584 /* Delete — red hover */
1585 .mxch-cg-history-delete-btn:hover {
1586 border-color: #ef4444;
1587 color: #ef4444;
1588 background: rgba(239, 68, 68, 0.1);
1589 }
1590
1591 .mxch-cg-history-action-btn:disabled {
1592 opacity: 0.5;
1593 cursor: wait;
1594 }
1595
1596 /* History Pagination */
1597
1598 .mxch-cg-history-pagination {
1599 display: flex;
1600 align-items: center;
1601 justify-content: center;
1602 gap: 4px;
1603 padding-top: 20px;
1604 margin-top: 8px;
1605 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
1606 }
1607
1608 .mxch-cg-history-page-btn {
1609 display: inline-flex;
1610 align-items: center;
1611 justify-content: center;
1612 min-width: 32px;
1613 height: 32px;
1614 padding: 0 8px;
1615 border: 1px solid var(--mxch-input-border, #d1d5db);
1616 border-radius: 6px;
1617 background: transparent;
1618 color: var(--mxch-text-secondary, #64748b);
1619 font-size: 13px;
1620 cursor: pointer;
1621 transition: all 0.15s;
1622 }
1623
1624 .mxch-cg-history-page-btn:hover {
1625 border-color: var(--mxch-primary, #7873f5);
1626 color: var(--mxch-primary, #7873f5);
1627 }
1628
1629 .mxch-cg-history-page-current {
1630 background: var(--mxch-primary, #7873f5);
1631 color: #fff;
1632 border-color: var(--mxch-primary, #7873f5);
1633 cursor: default;
1634 font-weight: 600;
1635 }
1636
1637 .mxch-cg-history-page-current:hover {
1638 background: var(--mxch-primary, #7873f5);
1639 color: #fff;
1640 border-color: var(--mxch-primary, #7873f5);
1641 }
1642
1643 .mxch-cg-history-page-prev,
1644 .mxch-cg-history-page-next {
1645 font-size: 12px;
1646 font-weight: 500;
1647 }
1648
1649 .mxch-cg-history-page-ellipsis {
1650 display: inline-flex;
1651 align-items: center;
1652 justify-content: center;
1653 min-width: 32px;
1654 height: 32px;
1655 color: var(--mxch-text-muted, #94a3b8);
1656 font-size: 13px;
1657 }
1658
1659 @media (max-width: 782px) {
1660 .mxch-cg-history-item {
1661 flex-wrap: wrap;
1662 }
1663
1664 .mxch-cg-history-info {
1665 flex: 1 1 calc(100% - 62px);
1666 }
1667
1668 .mxch-cg-history-actions {
1669 margin-left: auto;
1670 }
1671 }
1672
1673 /* ─── Loading Indicator (preview area) ──────────────────────────── */
1674
1675 .mxch-cg-loading-indicator {
1676 display: flex;
1677 flex-direction: column;
1678 align-items: center;
1679 justify-content: center;
1680 min-height: calc(100vh - 220px);
1681 padding: 40px 20px;
1682 text-align: center;
1683 gap: 24px;
1684 }
1685
1686 /* Spinner: three concentric rings + center icon */
1687 .mxch-cg-loading-spinner {
1688 position: relative;
1689 width: 80px;
1690 height: 80px;
1691 }
1692
1693 .mxch-cg-loading-spinner-ring {
1694 position: absolute;
1695 inset: 0;
1696 border-radius: 50%;
1697 border: 3px solid transparent;
1698 }
1699
1700 .mxch-cg-loading-spinner-ring:nth-child(1) {
1701 border-top-color: var(--mxch-primary, #7873f5);
1702 animation: mxch-spin 1.2s linear infinite;
1703 }
1704
1705 .mxch-cg-loading-spinner-ring:nth-child(2) {
1706 inset: 8px;
1707 border-right-color: rgba(120, 115, 245, 0.5);
1708 animation: mxch-spin 1.8s linear infinite reverse;
1709 }
1710
1711 .mxch-cg-loading-spinner-ring:nth-child(3) {
1712 inset: 16px;
1713 border-bottom-color: rgba(120, 115, 245, 0.3);
1714 animation: mxch-spin 2.4s linear infinite;
1715 }
1716
1717 .mxch-cg-loading-spinner-icon {
1718 position: absolute;
1719 top: 50%;
1720 left: 50%;
1721 transform: translate(-50%, -50%);
1722 color: var(--mxch-primary, #7873f5);
1723 opacity: 0.8;
1724 }
1725
1726 /* Phrase text with fade transition */
1727 .mxch-cg-loading-phrase {
1728 font-size: 17px;
1729 font-weight: 500;
1730 color: var(--mxch-text-secondary, #64748b);
1731 margin: 0;
1732 min-height: 28px;
1733 max-width: 400px;
1734 transition: opacity 0.4s ease, transform 0.4s ease;
1735 opacity: 1;
1736 transform: translateY(0);
1737 }
1738
1739 .mxch-cg-loading-phrase.mxch-cg-phrase-exit {
1740 opacity: 0;
1741 transform: translateY(-8px);
1742 }
1743
1744 .mxch-cg-loading-phrase.mxch-cg-phrase-enter {
1745 opacity: 0;
1746 transform: translateY(8px);
1747 }
1748
1749 /* Mini progress bar beneath the phrase */
1750 .mxch-cg-loading-progress-mini {
1751 width: 100%;
1752 max-width: 280px;
1753 }
1754
1755 .mxch-cg-loading-progress-mini-bar {
1756 width: 100%;
1757 height: 4px;
1758 background: var(--mxch-card-border, #e2e4e9);
1759 border-radius: 2px;
1760 overflow: hidden;
1761 margin-bottom: 6px;
1762 }
1763
1764 .mxch-cg-loading-progress-mini-fill {
1765 height: 100%;
1766 background: var(--mxch-primary, #7873f5);
1767 border-radius: 2px;
1768 transition: width 0.6s ease;
1769 }
1770
1771 .mxch-cg-loading-progress-mini-text {
1772 font-size: 12px;
1773 color: var(--mxch-text-muted, #94a3b8);
1774 margin: 0;
1775 }
1776
1777 /* Error state */
1778 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring {
1779 animation-play-state: paused;
1780 }
1781
1782 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(1) {
1783 border-top-color: #ef4444;
1784 }
1785
1786 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(2) {
1787 border-right-color: rgba(239, 68, 68, 0.5);
1788 }
1789
1790 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(3) {
1791 border-bottom-color: rgba(239, 68, 68, 0.3);
1792 }
1793
1794 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-icon {
1795 color: #ef4444;
1796 }
1797
1798 .mxch-cg-loading-error-actions {
1799 display: flex;
1800 gap: 10px;
1801 margin-top: 4px;
1802 }
1803
1804 .mxch-cg-loading-error-actions .mxch-cg-generate-btn {
1805 font-size: 13px;
1806 padding: 8px 16px;
1807 }
1808
1809 .mxch-cg-loading-error-actions .mxch-cg-action-btn {
1810 font-size: 13px;
1811 padding: 8px 16px;
1812 background: transparent;
1813 border: 1px solid var(--mxch-card-border, #e2e4e9);
1814 border-radius: 6px;
1815 color: var(--mxch-text-secondary, #64748b);
1816 cursor: pointer;
1817 }
1818
1819 .mxch-cg-loading-error-actions .mxch-cg-action-btn:hover {
1820 background: var(--mxch-card-bg, #f8f9fa);
1821 }
1822
1823 /* Success state */
1824 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(1) {
1825 border-top-color: #10b981;
1826 }
1827
1828 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(2) {
1829 border-right-color: rgba(16, 185, 129, 0.5);
1830 }
1831
1832 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(3) {
1833 border-bottom-color: rgba(16, 185, 129, 0.3);
1834 }
1835
1836 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-icon {
1837 color: #10b981;
1838 }
1839
1840 /* Responsive */
1841 @media (max-width: 782px) {
1842 .mxch-cg-loading-phrase {
1843 font-size: 15px;
1844 }
1845
1846 .mxch-cg-loading-spinner {
1847 width: 64px;
1848 height: 64px;
1849 }
1850 }
1851
1852 /* ── SEO Panel ─────────────────────────────────────────── */
1853
1854 .mxch-seo-panel {
1855 display: flex;
1856 flex-direction: column;
1857 height: 100%;
1858 overflow: hidden;
1859 }
1860
1861 .mxch-seo-score-header {
1862 display: flex;
1863 align-items: center;
1864 gap: 10px;
1865 padding: 12px;
1866 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1867 flex-shrink: 0;
1868 }
1869
1870 .mxch-seo-score-ring {
1871 position: relative;
1872 width: 48px;
1873 height: 48px;
1874 flex-shrink: 0;
1875 }
1876
1877 .mxch-seo-score-ring svg {
1878 width: 48px;
1879 height: 48px;
1880 transform: rotate(-90deg);
1881 }
1882
1883 .mxch-seo-ring-bg {
1884 fill: none;
1885 stroke: var(--mxch-card-border, #e2e4e9);
1886 stroke-width: 4;
1887 }
1888
1889 .mxch-seo-ring-fill {
1890 fill: none;
1891 stroke: var(--mxch-text-muted, #94a3b8);
1892 stroke-width: 4;
1893 stroke-linecap: round;
1894 transition: stroke-dashoffset 0.8s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.4s;
1895 }
1896
1897 .mxch-seo-ring-fill.mxch-seo-good { stroke: #10b981; }
1898 .mxch-seo-ring-fill.mxch-seo-ok { stroke: #f59e0b; }
1899 .mxch-seo-ring-fill.mxch-seo-bad { stroke: #ef4444; }
1900
1901 .mxch-seo-score-num {
1902 position: absolute;
1903 inset: 0;
1904 display: flex;
1905 align-items: center;
1906 justify-content: center;
1907 font-size: 14px;
1908 font-weight: 700;
1909 color: var(--mxch-text-primary, #1a1a2e);
1910 line-height: 1;
1911 }
1912
1913 .mxch-seo-score-info {
1914 flex: 1;
1915 min-width: 0;
1916 display: flex;
1917 flex-direction: column;
1918 gap: 2px;
1919 }
1920
1921 .mxch-seo-score-label {
1922 font-size: 12px;
1923 font-weight: 600;
1924 color: var(--mxch-text-primary, #1a1a2e);
1925 }
1926
1927 .mxch-seo-score-summary {
1928 font-size: 10px;
1929 color: var(--mxch-text-muted, #94a3b8);
1930 line-height: 1.3;
1931 }
1932
1933 .mxch-seo-analyze-btn {
1934 width: 30px;
1935 height: 30px;
1936 border: 1px solid var(--mxch-card-border, #e2e4e9);
1937 border-radius: 6px;
1938 background: transparent;
1939 color: var(--mxch-text-muted, #94a3b8);
1940 cursor: pointer;
1941 display: flex;
1942 align-items: center;
1943 justify-content: center;
1944 flex-shrink: 0;
1945 transition: all 0.15s;
1946 }
1947
1948 .mxch-seo-analyze-btn:hover {
1949 color: var(--mxch-primary, #7873f5);
1950 border-color: var(--mxch-primary, #7873f5);
1951 background: rgba(120, 115, 245, 0.05);
1952 }
1953
1954 .mxch-seo-analyze-btn.mxch-spinning svg {
1955 animation: mxch-spin 0.8s linear infinite;
1956 }
1957
1958 .mxch-seo-checklist {
1959 flex: 1;
1960 overflow-y: auto;
1961 padding: 6px 0;
1962 }
1963
1964 .mxch-seo-empty {
1965 display: flex;
1966 flex-direction: column;
1967 align-items: center;
1968 justify-content: center;
1969 gap: 8px;
1970 padding: 32px 16px;
1971 text-align: center;
1972 }
1973
1974 .mxch-seo-empty svg {
1975 opacity: 0.2;
1976 color: var(--mxch-text-muted, #94a3b8);
1977 }
1978
1979 .mxch-seo-empty span {
1980 font-size: 11px;
1981 color: var(--mxch-text-muted, #94a3b8);
1982 line-height: 1.5;
1983 }
1984
1985 .mxch-seo-check {
1986 display: flex;
1987 align-items: flex-start;
1988 gap: 8px;
1989 padding: 7px 12px;
1990 transition: background 0.1s;
1991 }
1992
1993 .mxch-seo-check:hover {
1994 background: rgba(0, 0, 0, 0.02);
1995 }
1996
1997 .mxch-seo-check-icon {
1998 width: 16px;
1999 height: 16px;
2000 flex-shrink: 0;
2001 margin-top: 1px;
2002 display: flex;
2003 align-items: center;
2004 justify-content: center;
2005 }
2006
2007 .mxch-seo-check-icon svg {
2008 width: 14px;
2009 height: 14px;
2010 }
2011
2012 .mxch-seo-check-icon.mxch-seo-pass { color: #10b981; }
2013 .mxch-seo-check-icon.mxch-seo-warn { color: #f59e0b; }
2014 .mxch-seo-check-icon.mxch-seo-fail { color: #ef4444; }
2015
2016 .mxch-seo-check-content {
2017 flex: 1;
2018 min-width: 0;
2019 }
2020
2021 .mxch-seo-check-label {
2022 font-size: 11px;
2023 font-weight: 600;
2024 color: var(--mxch-text-primary, #1a1a2e);
2025 display: block;
2026 line-height: 1.2;
2027 }
2028
2029 .mxch-seo-check-detail {
2030 font-size: 10px;
2031 color: var(--mxch-text-muted, #94a3b8);
2032 display: block;
2033 line-height: 1.4;
2034 margin-top: 1px;
2035 }
2036
2037 .mxch-seo-check-fix {
2038 width: 22px;
2039 height: 22px;
2040 flex-shrink: 0;
2041 display: flex;
2042 align-items: center;
2043 justify-content: center;
2044 border: none;
2045 border-radius: 4px;
2046 background: transparent;
2047 color: var(--mxch-text-muted, #94a3b8);
2048 cursor: pointer;
2049 transition: all 0.15s;
2050 padding: 0;
2051 margin-top: -1px;
2052 }
2053
2054 .mxch-seo-check-fix:hover {
2055 background: rgba(120, 115, 245, 0.1);
2056 color: var(--mxch-primary, #7873f5);
2057 }
2058
2059 .mxch-seo-check-fix:disabled {
2060 cursor: not-allowed;
2061 opacity: 0.5;
2062 }
2063
2064 .mxch-seo-check-fix.mxch-seo-check-fixing {
2065 opacity: 1;
2066 color: var(--mxch-primary, #7873f5);
2067 }
2068
2069 .mxch-seo-check-fix.mxch-seo-check-fixing svg {
2070 animation: mxch-spin 0.8s linear infinite;
2071 }
2072
2073 .mxch-seo-actions {
2074 padding: 10px 12px;
2075 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
2076 flex-shrink: 0;
2077 }
2078
2079 .mxch-seo-fix-btn {
2080 width: 100%;
2081 display: flex;
2082 align-items: center;
2083 justify-content: center;
2084 gap: 6px;
2085 padding: 8px 12px;
2086 border: none;
2087 border-radius: 6px;
2088 background: linear-gradient(135deg, var(--mxch-primary, #7873f5), #6366f1);
2089 color: #fff;
2090 font-size: 12px;
2091 font-weight: 600;
2092 cursor: pointer;
2093 transition: all 0.2s;
2094 }
2095
2096 .mxch-seo-fix-btn:hover {
2097 filter: brightness(1.08);
2098 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
2099 }
2100
2101 .mxch-seo-fix-btn:disabled {
2102 opacity: 0.5;
2103 cursor: not-allowed;
2104 filter: none;
2105 box-shadow: none;
2106 }
2107
2108 .mxch-seo-fix-btn.mxch-seo-fixing svg {
2109 animation: mxch-spin 0.8s linear infinite;
2110 }
2111
2112 .mxch-seo-separator {
2113 height: 1px;
2114 background: var(--mxch-card-border, #e2e4e9);
2115 margin: 4px 12px;
2116 opacity: 0.6;
2117 }
2118
2119 /* ─── SEO Dashboard (Site-wide) ─────────────────────────────────── */
2120
2121 .mxch-seod-filters {
2122 display: flex;
2123 align-items: center;
2124 justify-content: space-between;
2125 gap: 12px;
2126 padding: 14px 18px;
2127 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2128 flex-wrap: wrap;
2129 }
2130
2131 .mxch-seod-filters-left {
2132 display: flex;
2133 align-items: center;
2134 gap: 10px;
2135 flex-wrap: wrap;
2136 }
2137
2138 .mxch-seod-filters-right {
2139 display: flex;
2140 align-items: center;
2141 gap: 8px;
2142 }
2143
2144 .mxch-seod-select {
2145 padding: 6px 10px;
2146 border: 1px solid var(--mxch-input-border, #d1d5db);
2147 border-radius: 6px;
2148 background: var(--mxch-card-bg, #fff);
2149 color: var(--mxch-text-primary, #1a1a2e);
2150 font-size: 13px;
2151 cursor: pointer;
2152 outline: none;
2153 }
2154
2155 .mxch-seod-select:focus {
2156 border-color: var(--mxch-primary, #7873f5);
2157 }
2158
2159 .mxch-seod-filter-pills {
2160 display: flex;
2161 gap: 4px;
2162 }
2163
2164 .mxch-seod-pill {
2165 padding: 5px 12px;
2166 border: 1px solid var(--mxch-input-border, #d1d5db);
2167 border-radius: 20px;
2168 background: transparent;
2169 color: var(--mxch-text-muted, #6b7280);
2170 font-size: 12px;
2171 font-weight: 500;
2172 cursor: pointer;
2173 transition: all 0.15s ease;
2174 }
2175
2176 .mxch-seod-pill:hover {
2177 border-color: var(--mxch-primary, #7873f5);
2178 color: var(--mxch-primary, #7873f5);
2179 }
2180
2181 .mxch-seod-pill.active {
2182 background: var(--mxch-primary, #7873f5);
2183 border-color: var(--mxch-primary, #7873f5);
2184 color: #fff;
2185 }
2186
2187 .mxch-seod-search-wrap {
2188 position: relative;
2189 display: flex;
2190 align-items: center;
2191 }
2192
2193 .mxch-seod-search-wrap svg {
2194 position: absolute;
2195 left: 10px;
2196 width: 14px;
2197 height: 14px;
2198 color: var(--mxch-text-muted, #6b7280);
2199 pointer-events: none;
2200 }
2201
2202 .mxch-seod-search {
2203 padding: 6px 10px 6px 30px;
2204 border: 1px solid var(--mxch-input-border, #d1d5db);
2205 border-radius: 6px;
2206 background: var(--mxch-card-bg, #fff);
2207 color: var(--mxch-text-primary, #1a1a2e);
2208 font-size: 13px;
2209 width: 180px;
2210 outline: none;
2211 }
2212
2213 .mxch-seod-search:focus {
2214 border-color: var(--mxch-primary, #7873f5);
2215 }
2216
2217 /* Table */
2218
2219 .mxch-seod-table-wrap {
2220 min-height: 200px;
2221 position: relative;
2222 }
2223
2224 /* ─── Column Header Row ─────────────────────────────────────────── */
2225
2226 .mxch-seod-header {
2227 display: flex;
2228 align-items: center;
2229 padding: 8px 18px;
2230 gap: 12px;
2231 background: var(--mxch-card-bg, #f8f9fa);
2232 border-bottom: 2px solid var(--mxch-card-border, #e2e4e9);
2233 position: sticky;
2234 top: 0;
2235 z-index: 2;
2236 }
2237
2238 .mxch-seod-header-cell {
2239 font-size: 11px;
2240 font-weight: 600;
2241 text-transform: uppercase;
2242 letter-spacing: 0.5px;
2243 color: var(--mxch-text-muted, #6b7280);
2244 cursor: pointer;
2245 user-select: none;
2246 white-space: nowrap;
2247 transition: color 0.15s ease;
2248 }
2249
2250 .mxch-seod-header-cell:hover {
2251 color: var(--mxch-text-primary, #1a1a2e);
2252 }
2253
2254 .mxch-seod-header-cell.mxch-seod-header-active {
2255 color: var(--mxch-primary, #7873f5);
2256 }
2257
2258 .mxch-seod-header-title {
2259 flex: 1;
2260 min-width: 0;
2261 }
2262
2263 .mxch-seod-header-date {
2264 width: 90px;
2265 text-align: center;
2266 flex-shrink: 0;
2267 }
2268
2269 .mxch-seod-header-score {
2270 width: 48px;
2271 text-align: center;
2272 flex-shrink: 0;
2273 }
2274
2275 .mxch-seod-header-clicks {
2276 width: 52px;
2277 text-align: center;
2278 flex-shrink: 0;
2279 }
2280
2281 .mxch-seod-header-impressions {
2282 width: 52px;
2283 text-align: center;
2284 flex-shrink: 0;
2285 }
2286
2287 .mxch-seod-header-position {
2288 width: 44px;
2289 text-align: center;
2290 flex-shrink: 0;
2291 cursor: default; /* not sortable in v1 */
2292 }
2293
2294 .mxch-seod-sort-arrow {
2295 font-size: 9px;
2296 vertical-align: middle;
2297 margin-left: 2px;
2298 }
2299
2300 /* ─── Row Columns ─────────────────────────────────────────────── */
2301
2302 .mxch-seod-cell-date {
2303 width: 90px;
2304 flex-shrink: 0;
2305 justify-content: center;
2306 }
2307
2308 .mxch-seod-date {
2309 font-size: 12px;
2310 color: var(--mxch-text-muted, #6b7280);
2311 }
2312
2313 .mxch-seod-cell-clicks,
2314 .mxch-seod-cell-impressions {
2315 width: 52px;
2316 flex-shrink: 0;
2317 justify-content: center;
2318 font-size: 12px;
2319 color: var(--mxch-text-muted, #6b7280);
2320 }
2321
2322 .mxch-seod-cell-position {
2323 width: 44px;
2324 flex-shrink: 0;
2325 justify-content: center;
2326 font-size: 12px;
2327 color: var(--mxch-text-muted, #6b7280);
2328 }
2329
2330 .mxch-seod-row {
2331 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2332 cursor: pointer;
2333 transition: background 0.15s ease;
2334 }
2335
2336 .mxch-seod-row:last-child {
2337 border-bottom: none;
2338 }
2339
2340 .mxch-seod-row:hover {
2341 background: rgba(120, 115, 245, 0.03);
2342 }
2343
2344 .mxch-seod-row.mxch-seod-active {
2345 background: rgba(120, 115, 245, 0.03);
2346 }
2347
2348 .mxch-seod-row-main {
2349 display: flex;
2350 align-items: center;
2351 padding: 12px 18px;
2352 gap: 12px;
2353 }
2354
2355 .mxch-seod-cell {
2356 display: flex;
2357 align-items: center;
2358 }
2359
2360 .mxch-seod-header-check,
2361 .mxch-seod-cell-check {
2362 width: 28px;
2363 flex-shrink: 0;
2364 display: flex;
2365 align-items: center;
2366 justify-content: center;
2367 }
2368
2369 .mxch-seod-header-check input,
2370 .mxch-seod-cell-check input {
2371 width: 15px;
2372 height: 15px;
2373 margin: 0;
2374 cursor: pointer;
2375 accent-color: var(--mxch-primary, #7873f5);
2376 }
2377
2378 .mxch-seod-row.mxch-seod-row-optimizing {
2379 opacity: 0.7;
2380 pointer-events: none;
2381 }
2382
2383 .mxch-seod-row.mxch-seod-row-optimizing .mxch-seod-score-badge {
2384 visibility: hidden;
2385 }
2386
2387 .mxch-seod-row-spinner-wrap {
2388 position: absolute;
2389 top: 0;
2390 left: 0;
2391 right: 0;
2392 bottom: 0;
2393 display: flex;
2394 align-items: center;
2395 justify-content: center;
2396 }
2397
2398 .mxch-seod-row-spinner {
2399 width: 24px;
2400 height: 24px;
2401 border: 2.5px solid var(--mxch-card-border, #e2e4e9);
2402 border-top-color: var(--mxch-primary, #7873f5);
2403 border-radius: 50%;
2404 animation: mxch-spin 0.6s linear infinite;
2405 box-sizing: border-box;
2406 }
2407
2408 .mxch-seod-cell-title {
2409 flex: 1;
2410 min-width: 0;
2411 flex-direction: column;
2412 align-items: flex-start;
2413 gap: 2px;
2414 }
2415
2416 .mxch-seod-title {
2417 font-size: 13.5px;
2418 font-weight: 500;
2419 color: var(--mxch-text-primary, #1a1a2e);
2420 white-space: nowrap;
2421 overflow: hidden;
2422 text-overflow: ellipsis;
2423 max-width: 100%;
2424 }
2425
2426 .mxch-seod-meta {
2427 font-size: 11.5px;
2428 color: var(--mxch-text-muted, #6b7280);
2429 }
2430
2431 .mxch-seod-cell-score {
2432 width: 48px;
2433 justify-content: center;
2434 flex-shrink: 0;
2435 position: relative;
2436 }
2437
2438 .mxch-seod-score-badge {
2439 width: 36px;
2440 height: 36px;
2441 border-radius: 50%;
2442 display: flex;
2443 align-items: center;
2444 justify-content: center;
2445 font-size: 12px;
2446 font-weight: 700;
2447 border: 2.5px solid;
2448 }
2449
2450 .mxch-seod-score-badge.mxch-seod-good {
2451 color: #10b981;
2452 border-color: #10b981;
2453 background: rgba(16, 185, 129, 0.08);
2454 }
2455
2456 .mxch-seod-score-badge.mxch-seod-ok {
2457 color: #f59e0b;
2458 border-color: #f59e0b;
2459 background: rgba(245, 158, 11, 0.08);
2460 }
2461
2462 .mxch-seod-score-badge.mxch-seod-bad {
2463 color: #ef4444;
2464 border-color: #ef4444;
2465 background: rgba(239, 68, 68, 0.08);
2466 }
2467
2468 .mxch-seod-score-badge.mxch-seod-unscored {
2469 color: var(--mxch-text-muted, #6b7280);
2470 border-color: var(--mxch-input-border, #d1d5db);
2471 background: transparent;
2472 font-size: 14px;
2473 }
2474
2475 .mxch-seod-cell-status {
2476 width: 90px;
2477 justify-content: center;
2478 flex-shrink: 0;
2479 }
2480
2481 .mxch-seod-status {
2482 font-size: 12px;
2483 font-weight: 500;
2484 padding: 3px 10px;
2485 border-radius: 12px;
2486 }
2487
2488 .mxch-seod-status-good {
2489 color: #10b981;
2490 background: rgba(16, 185, 129, 0.1);
2491 }
2492
2493 .mxch-seod-status-warn {
2494 color: #f59e0b;
2495 background: rgba(245, 158, 11, 0.1);
2496 }
2497
2498 .mxch-seod-status-bad {
2499 color: #ef4444;
2500 background: rgba(239, 68, 68, 0.1);
2501 }
2502
2503 .mxch-seod-status-unscored {
2504 color: var(--mxch-text-muted, #6b7280);
2505 background: rgba(107, 114, 128, 0.08);
2506 }
2507
2508 /* ─── SEO Detail Modal ───────────────────────────────────────── */
2509
2510 .mxch-seod-modal-overlay {
2511 position: fixed;
2512 inset: 0;
2513 z-index: 100000;
2514 background: rgba(0, 0, 0, 0);
2515 display: flex;
2516 align-items: center;
2517 justify-content: center;
2518 transition: background 0.2s ease;
2519 }
2520
2521 .mxch-seod-modal-overlay.mxch-seod-modal-visible {
2522 background: rgba(0, 0, 0, 0.45);
2523 }
2524
2525 .mxch-seod-modal {
2526 background: var(--mxch-card-bg, #fff);
2527 border-radius: 12px;
2528 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
2529 width: 90%;
2530 max-width: 580px;
2531 max-height: 80vh;
2532 display: flex;
2533 flex-direction: column;
2534 opacity: 0;
2535 transform: translateY(12px) scale(0.98);
2536 transition: opacity 0.2s ease, transform 0.2s ease;
2537 }
2538
2539 .mxch-seod-modal-visible .mxch-seod-modal {
2540 opacity: 1;
2541 transform: translateY(0) scale(1);
2542 }
2543
2544 .mxch-seod-modal-header {
2545 display: flex;
2546 align-items: center;
2547 justify-content: space-between;
2548 padding: 16px 20px;
2549 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2550 flex-shrink: 0;
2551 }
2552
2553 .mxch-seod-modal-title {
2554 font-size: 15px;
2555 font-weight: 600;
2556 color: var(--mxch-text-primary, #1a1a2e);
2557 margin: 0;
2558 white-space: nowrap;
2559 overflow: hidden;
2560 text-overflow: ellipsis;
2561 min-width: 0;
2562 flex: 1;
2563 padding-right: 12px;
2564 }
2565
2566 .mxch-seod-modal-view-page {
2567 display: inline-flex;
2568 align-items: center;
2569 gap: 4px;
2570 font-size: 12px;
2571 font-weight: 500;
2572 color: var(--mxch-accent, #6366f1);
2573 text-decoration: none;
2574 padding: 4px 10px;
2575 border-radius: 6px;
2576 transition: color 0.15s, background 0.15s;
2577 flex-shrink: 0;
2578 margin-right: 8px;
2579 white-space: nowrap;
2580 }
2581
2582 .mxch-seod-modal-view-page:hover {
2583 color: var(--mxch-accent-hover, #4f46e5);
2584 background: rgba(99, 102, 241, 0.08);
2585 text-decoration: none;
2586 }
2587
2588 .mxch-seod-modal-view-page svg {
2589 flex-shrink: 0;
2590 }
2591
2592 .mxch-seod-modal-close {
2593 background: none;
2594 border: none;
2595 cursor: pointer;
2596 color: var(--mxch-text-muted, #6b7280);
2597 padding: 4px;
2598 border-radius: 6px;
2599 transition: color 0.15s, background 0.15s;
2600 flex-shrink: 0;
2601 }
2602
2603 .mxch-seod-modal-close:hover {
2604 color: var(--mxch-text-primary, #1a1a2e);
2605 background: rgba(0, 0, 0, 0.05);
2606 }
2607
2608 .mxch-seod-modal-body {
2609 padding: 16px 20px;
2610 overflow-y: auto;
2611 flex: 1;
2612 min-height: 0;
2613 }
2614
2615 /* Detail content (reused inside modal) */
2616
2617 .mxch-seod-detail {
2618 cursor: default;
2619 }
2620
2621 .mxch-seod-detail-loading {
2622 display: flex;
2623 align-items: center;
2624 gap: 8px;
2625 padding: 16px 0;
2626 color: var(--mxch-text-muted, #6b7280);
2627 font-size: 13px;
2628 }
2629
2630 .mxch-seod-spinner {
2631 width: 16px;
2632 height: 16px;
2633 border: 2px solid var(--mxch-input-border, #d1d5db);
2634 border-top-color: var(--mxch-primary, #7873f5);
2635 border-radius: 50%;
2636 animation: mxch-spin 0.6s linear infinite;
2637 }
2638
2639 .mxch-seod-detail-error {
2640 padding: 16px 0;
2641 color: #ef4444;
2642 font-size: 13px;
2643 }
2644
2645 .mxch-seod-checks {
2646 background: var(--mxch-card-bg, #fff);
2647 border: 1px solid var(--mxch-card-border, #e2e4e9);
2648 border-radius: 8px;
2649 overflow: hidden;
2650 }
2651
2652 .mxch-seod-check {
2653 display: flex;
2654 align-items: flex-start;
2655 gap: 10px;
2656 padding: 10px 14px;
2657 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2658 }
2659
2660 .mxch-seod-check:last-child {
2661 border-bottom: none;
2662 }
2663
2664 .mxch-seod-check-sep {
2665 height: 1px;
2666 background: var(--mxch-card-border, #e2e4e9);
2667 opacity: 0.6;
2668 }
2669
2670 .mxch-seod-check-icon {
2671 width: 18px;
2672 height: 18px;
2673 flex-shrink: 0;
2674 margin-top: 1px;
2675 }
2676
2677 .mxch-seod-check-icon svg {
2678 width: 18px;
2679 height: 18px;
2680 }
2681
2682 .mxch-seod-check-pass .mxch-seod-check-icon { color: #10b981; }
2683 .mxch-seod-check-warn .mxch-seod-check-icon { color: #f59e0b; }
2684 .mxch-seod-check-fail .mxch-seod-check-icon { color: #ef4444; }
2685
2686 .mxch-seod-check-text {
2687 display: flex;
2688 flex-direction: column;
2689 gap: 1px;
2690 min-width: 0;
2691 }
2692
2693 .mxch-seod-check-label {
2694 font-size: 13px;
2695 font-weight: 500;
2696 color: var(--mxch-text-primary, #1a1a2e);
2697 }
2698
2699 .mxch-seod-check-detail {
2700 font-size: 12px;
2701 color: var(--mxch-text-muted, #6b7280);
2702 }
2703
2704 .mxch-seod-addon-badge {
2705 display: inline-flex;
2706 align-items: center;
2707 padding: 1px 6px;
2708 margin-left: 6px;
2709 border-radius: 20px;
2710 font-size: 9px;
2711 font-weight: 700;
2712 text-transform: uppercase;
2713 letter-spacing: 0.5px;
2714 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
2715 color: var(--mxch-primary, #7873f5);
2716 line-height: 1;
2717 vertical-align: middle;
2718 text-decoration: none;
2719 cursor: pointer;
2720 }
2721
2722 .mxch-seod-addon-badge:hover {
2723 background: linear-gradient(135deg, rgba(120, 115, 245, 0.25), rgba(168, 139, 250, 0.25));
2724 text-decoration: none;
2725 color: var(--mxch-primary, #7873f5);
2726 }
2727
2728 .mxch-seod-pro-badge {
2729 background: linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 191, 36, 0.15));
2730 color: #d97706;
2731 }
2732
2733 .mxch-seod-pro-badge:hover {
2734 background: linear-gradient(135deg, rgba(245, 158, 11, 0.25), rgba(251, 191, 36, 0.25));
2735 color: #d97706;
2736 }
2737
2738 .mxch-seod-detail-actions {
2739 display: flex;
2740 justify-content: flex-end;
2741 margin-top: 12px;
2742 }
2743
2744 .mxch-seod-optimize-btn {
2745 display: inline-flex;
2746 align-items: center;
2747 gap: 6px;
2748 padding: 7px 16px;
2749 background: linear-gradient(135deg, #7873f5, #6366f1);
2750 color: #fff;
2751 border: none;
2752 border-radius: 6px;
2753 font-size: 12.5px;
2754 font-weight: 600;
2755 cursor: pointer;
2756 transition: filter 0.15s ease, box-shadow 0.15s ease;
2757 }
2758
2759 .mxch-seod-optimize-btn:hover {
2760 filter: brightness(1.08);
2761 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
2762 }
2763
2764 .mxch-seod-optimize-btn:disabled {
2765 opacity: 0.6;
2766 cursor: not-allowed;
2767 }
2768
2769 .mxch-seod-optimize-btn svg {
2770 animation: none;
2771 }
2772
2773 .mxch-seod-optimize-btn:disabled svg {
2774 animation: mxch-spin 0.8s linear infinite;
2775 }
2776
2777 /* Footer */
2778
2779 .mxch-seod-footer {
2780 display: flex;
2781 align-items: center;
2782 gap: 12px;
2783 padding: 12px 18px;
2784 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
2785 flex-wrap: wrap;
2786 }
2787
2788 .mxch-seod-scan-btn {
2789 display: inline-flex;
2790 align-items: center;
2791 gap: 6px;
2792 padding: 7px 14px;
2793 background: var(--mxch-card-bg, #fff);
2794 color: var(--mxch-primary, #7873f5);
2795 border: 1px solid var(--mxch-primary, #7873f5);
2796 border-radius: 6px;
2797 font-size: 12.5px;
2798 font-weight: 600;
2799 cursor: pointer;
2800 transition: all 0.15s ease;
2801 }
2802
2803 .mxch-seod-scan-btn:hover {
2804 background: var(--mxch-primary, #7873f5);
2805 color: #fff;
2806 }
2807
2808 .mxch-seod-scan-btn:disabled {
2809 opacity: 0.6;
2810 cursor: not-allowed;
2811 background: var(--mxch-primary, #7873f5);
2812 color: #fff;
2813 }
2814
2815 .mxch-seod-bulk-note {
2816 font-size: 11px;
2817 color: var(--mxch-text-muted, #94a3b8);
2818 font-style: italic;
2819 }
2820
2821 .mxch-seod-bulk-locked {
2822 opacity: 0.65;
2823 cursor: not-allowed;
2824 background: var(--mxch-card-bg, #1e1e2e);
2825 color: var(--mxch-text-muted, #94a3b8);
2826 border: 1px dashed var(--mxch-card-border, #e2e4e9);
2827 }
2828
2829 .mxch-seod-bulk-locked:hover {
2830 background: var(--mxch-card-bg, #1e1e2e);
2831 color: var(--mxch-text-muted, #94a3b8);
2832 }
2833
2834 .mxch-seod-bulk-locked .mxch-cg-pro-badge {
2835 margin-left: 4px;
2836 opacity: 1;
2837 }
2838
2839 .mxch-seod-optimize-selected-btn {
2840 background: var(--mxch-primary, #7873f5);
2841 color: #fff;
2842 white-space: nowrap;
2843 }
2844
2845 .mxch-seod-optimize-selected-btn:hover {
2846 background: var(--mxch-primary-hover, #6963e6);
2847 color: #fff;
2848 }
2849
2850 .mxch-seod-scan-stop-btn {
2851 color: #ef4444;
2852 border-color: #ef4444;
2853 }
2854
2855 .mxch-seod-scan-stop-btn:hover {
2856 background: #ef4444;
2857 color: #fff;
2858 }
2859
2860 .mxch-seod-scan-stop-btn:disabled {
2861 background: #ef4444;
2862 color: #fff;
2863 border-color: #ef4444;
2864 }
2865
2866 .mxch-seod-scan-status {
2867 font-size: 12.5px;
2868 color: var(--mxch-text-muted, #6b7280);
2869 }
2870
2871 .mxch-seod-scan-progress {
2872 font-weight: 600;
2873 color: var(--mxch-primary, #7873f5);
2874 }
2875
2876 .mxch-seod-pagination {
2877 display: flex;
2878 align-items: center;
2879 gap: 8px;
2880 margin-left: auto;
2881 }
2882
2883 .mxch-seod-page-btn {
2884 padding: 5px 12px;
2885 border: 1px solid var(--mxch-input-border, #d1d5db);
2886 border-radius: 6px;
2887 background: var(--mxch-card-bg, #fff);
2888 color: var(--mxch-text-primary, #1a1a2e);
2889 font-size: 12.5px;
2890 cursor: pointer;
2891 transition: all 0.15s ease;
2892 }
2893
2894 .mxch-seod-page-btn:hover {
2895 border-color: var(--mxch-primary, #7873f5);
2896 color: var(--mxch-primary, #7873f5);
2897 }
2898
2899 .mxch-seod-page-info {
2900 font-size: 12.5px;
2901 color: var(--mxch-text-muted, #6b7280);
2902 }
2903
2904 /* Loading & Empty */
2905
2906 .mxch-seod-loading {
2907 display: flex;
2908 flex-direction: column;
2909 align-items: center;
2910 gap: 10px;
2911 padding: 48px 20px;
2912 color: var(--mxch-text-muted, #6b7280);
2913 font-size: 13px;
2914 }
2915
2916 .mxch-seod-empty {
2917 display: flex;
2918 flex-direction: column;
2919 align-items: center;
2920 gap: 8px;
2921 padding: 48px 20px;
2922 color: var(--mxch-text-muted, #6b7280);
2923 font-size: 13px;
2924 text-align: center;
2925 }
2926
2927 .mxch-seod-empty svg {
2928 opacity: 0.4;
2929 }
2930
2931 .mxch-seod-error {
2932 padding: 24px;
2933 text-align: center;
2934 color: #ef4444;
2935 font-size: 13px;
2936 }
2937
2938 /* Slim "connect Search Console" hint row — GSC add-on active but not linked.
2939 Same amber state language as the add-on settings card's needs-GSC banner. */
2940 .mxch-seod-gsc-hint {
2941 display: flex;
2942 align-items: center;
2943 gap: 8px;
2944 padding: 8px 14px;
2945 background: #fffbeb;
2946 border-bottom: 1px solid #fde68a;
2947 color: var(--mxch-text-secondary, #64748b);
2948 font-size: 12.5px;
2949 }
2950
2951 .mxch-seod-gsc-hint-dot {
2952 flex-shrink: 0;
2953 width: 7px;
2954 height: 7px;
2955 border-radius: 50%;
2956 background: var(--mxch-warning, #d97706);
2957 }
2958
2959 .mxch-seod-gsc-hint a {
2960 color: var(--mxch-primary, #7873f5);
2961 text-decoration: none;
2962 font-weight: 500;
2963 }
2964
2965 .mxch-seod-gsc-hint a:hover {
2966 text-decoration: underline;
2967 }
2968
2969 /* ─── Settings Card Header ─────────────────────────────────────── */
2970
2971 .mxch-card-header {
2972 padding: 14px 20px 0;
2973 }
2974
2975 .mxch-card-title {
2976 font-size: 14px;
2977 font-weight: 600;
2978 color: var(--mxch-text-primary, #1a1a2e);
2979 margin: 0;
2980 text-transform: uppercase;
2981 letter-spacing: 0.5px;
2982 opacity: 0.6;
2983 }
2984
2985 /* ─── SEO Optimize Checkbox Grid ───────────────────────────────── */
2986
2987 .mxch-seo-opt-grid {
2988 display: flex;
2989 flex-wrap: wrap;
2990 gap: 6px;
2991 }
2992
2993 .mxch-seo-opt-item {
2994 display: inline-flex;
2995 align-items: center;
2996 gap: 6px;
2997 padding: 6px 12px;
2998 border: 1px solid var(--mxch-card-border, #e2e4e9);
2999 border-radius: 6px;
3000 font-size: 13px;
3001 color: var(--mxch-text-primary, #1a1a2e);
3002 cursor: pointer;
3003 transition: border-color 0.15s, background 0.15s;
3004 user-select: none;
3005 }
3006
3007 .mxch-seo-opt-item:hover {
3008 border-color: var(--mxch-primary, #7873f5);
3009 background: rgba(120, 115, 245, 0.04);
3010 }
3011
3012 .mxch-seo-opt-item:has(input:checked) {
3013 border-color: var(--mxch-primary, #7873f5);
3014 background: rgba(120, 115, 245, 0.06);
3015 }
3016
3017 .mxch-seo-opt-check {
3018 width: 14px;
3019 height: 14px;
3020 accent-color: var(--mxch-primary, #7873f5);
3021 margin: 0;
3022 cursor: pointer;
3023 }
3024
3025 .mxch-seo-opt-locked {
3026 opacity: 0.5;
3027 cursor: not-allowed;
3028 }
3029
3030 .mxch-seo-opt-locked:hover {
3031 border-color: var(--mxch-card-border, #e2e4e9);
3032 background: transparent;
3033 }
3034
3035 .mxch-seo-opt-item .mxch-cg-pro-badge {
3036 margin-left: 2px;
3037 font-size: 9px;
3038 padding: 1px 5px;
3039 }
3040
3041 /* ─── GSC Locked / Placeholder Styles ──────────────────────────── */
3042
3043 .mxch-seod-header-locked {
3044 opacity: 0.5;
3045 cursor: default;
3046 pointer-events: none;
3047 }
3048
3049 .mxch-seod-header-locked svg {
3050 margin-left: 3px;
3051 vertical-align: middle;
3052 opacity: 0.6;
3053 }
3054
3055 .mxch-seod-cell-locked {
3056 opacity: 0.4;
3057 color: var(--mxch-text-muted, #94a3b8);
3058 cursor: default;
3059 }
3060
3061 /* Settings locked GSC card */
3062 .mxch-gsc-settings-locked {
3063 border: 1px dashed var(--mxch-card-border, #e2e4e9);
3064 border-radius: 8px;
3065 padding: 16px;
3066 margin-top: 12px;
3067 background: var(--mxch-card-bg, #fff);
3068 opacity: 0.85;
3069 }
3070
3071 .mxch-gsc-settings-locked-header {
3072 display: flex;
3073 align-items: center;
3074 gap: 8px;
3075 font-size: 14px;
3076 font-weight: 600;
3077 color: var(--mxch-text-primary, #1a1a2e);
3078 margin-bottom: 6px;
3079 }
3080
3081 .mxch-gsc-settings-locked-header svg {
3082 color: var(--mxch-text-muted, #94a3b8);
3083 flex-shrink: 0;
3084 }
3085
3086 .mxch-gsc-settings-locked .mxch-field-description {
3087 margin-bottom: 10px;
3088 }
3089
3090 .mxch-gsc-connect-btn {
3091 display: inline-flex;
3092 align-items: center;
3093 gap: 6px;
3094 padding: 8px 16px;
3095 border: 1px solid var(--mxch-card-border, #e2e4e9);
3096 border-radius: 6px;
3097 background: var(--mxch-card-bg, #fff);
3098 color: var(--mxch-text-muted, #94a3b8);
3099 font-size: 13px;
3100 cursor: not-allowed;
3101 opacity: 0.6;
3102 margin-bottom: 8px;
3103 }
3104
3105 /* Detail modal GSC placeholder */
3106 .mxch-gsc-placeholder {
3107 position: relative;
3108 margin-top: 16px;
3109 padding: 16px;
3110 border: 1px dashed var(--mxch-card-border, #e2e4e9);
3111 border-radius: 8px;
3112 overflow: hidden;
3113 }
3114
3115 .mxch-gsc-placeholder-title {
3116 display: flex;
3117 align-items: center;
3118 gap: 6px;
3119 font-size: 14px;
3120 font-weight: 600;
3121 color: var(--mxch-text-primary, #1a1a2e);
3122 margin: 0 0 12px 0;
3123 opacity: 0.5;
3124 }
3125
3126 .mxch-gsc-placeholder-content {
3127 filter: blur(1.5px);
3128 opacity: 0.5;
3129 pointer-events: none;
3130 user-select: none;
3131 }
3132
3133 .mxch-gsc-stats {
3134 display: grid;
3135 grid-template-columns: repeat(4, 1fr);
3136 gap: 10px;
3137 margin-bottom: 14px;
3138 }
3139
3140 .mxch-gsc-stat {
3141 display: flex;
3142 flex-direction: column;
3143 align-items: center;
3144 padding: 10px 8px;
3145 background: var(--mxch-bg, #f8fafc);
3146 border-radius: 6px;
3147 border: 1px solid var(--mxch-card-border, #e2e4e9);
3148 }
3149
3150 .mxch-gsc-stat-value {
3151 font-size: 18px;
3152 font-weight: 700;
3153 color: var(--mxch-text-primary, #1a1a2e);
3154 }
3155
3156 .mxch-gsc-stat-label {
3157 font-size: 11px;
3158 color: var(--mxch-text-muted, #94a3b8);
3159 margin-top: 2px;
3160 }
3161
3162 .mxch-gsc-table {
3163 width: 100%;
3164 border-collapse: collapse;
3165 font-size: 12px;
3166 }
3167
3168 .mxch-gsc-table th {
3169 text-align: left;
3170 padding: 6px 8px;
3171 font-weight: 600;
3172 color: var(--mxch-text-muted, #94a3b8);
3173 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
3174 font-size: 11px;
3175 }
3176
3177 .mxch-gsc-table td {
3178 padding: 6px 8px;
3179 color: var(--mxch-text-primary, #1a1a2e);
3180 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
3181 }
3182
3183 .mxch-gsc-placeholder-overlay {
3184 position: absolute;
3185 inset: 0;
3186 display: flex;
3187 flex-direction: column;
3188 align-items: center;
3189 justify-content: center;
3190 gap: 6px;
3191 background: rgba(255, 255, 255, 0.4);
3192 z-index: 2;
3193 }
3194
3195 .mxch-gsc-placeholder-overlay svg {
3196 opacity: 0.3;
3197 }
3198
3199 .mxch-gsc-placeholder-overlay .mxch-cg-pro-upgrade-link {
3200 font-size: 12px;
3201 }
3202
3203 /* Responsive */
3204
3205 @media (max-width: 768px) {
3206 .mxch-seod-filters {
3207 flex-direction: column;
3208 align-items: stretch;
3209 gap: 8px;
3210 }
3211 .mxch-seod-search {
3212 width: 100%;
3213 }
3214 .mxch-seod-cell-status {
3215 display: none;
3216 }
3217 .mxch-seod-cell-date,
3218 .mxch-seod-cell-clicks,
3219 .mxch-seod-cell-impressions,
3220 .mxch-seod-cell-position {
3221 display: none;
3222 }
3223 .mxch-seod-header-date,
3224 .mxch-seod-header-clicks,
3225 .mxch-seod-header-impressions,
3226 .mxch-seod-header-position {
3227 display: none;
3228 }
3229 .mxch-seod-modal {
3230 width: 95%;
3231 max-height: 85vh;
3232 }
3233 .mxch-seod-row-main {
3234 padding: 10px 14px;
3235 }
3236 .mxch-seod-header-check,
3237 .mxch-seod-cell-check {
3238 width: 24px;
3239 }
3240 .mxch-seod-filters-right {
3241 flex-wrap: wrap;
3242 gap: 8px;
3243 }
3244 .mxch-seod-optimize-selected-btn {
3245 font-size: 12px;
3246 padding: 6px 10px;
3247 }
3248 .mxch-seod-footer {
3249 flex-direction: column;
3250 align-items: stretch;
3251 gap: 8px;
3252 }
3253 .mxch-seod-pagination {
3254 margin-left: 0;
3255 justify-content: center;
3256 }
3257 }
3258
3259 /* ── Edit Default Prompt Button & Modal ────────────────────── */
3260 .mxch-cg-edit-prompt-btn {
3261 display: inline-flex;
3262 align-items: center;
3263 gap: 5px;
3264 background: none;
3265 border: none;
3266 color: #8a8f98;
3267 font-size: 12px;
3268 cursor: pointer;
3269 padding: 4px 0;
3270 margin-top: 2px;
3271 transition: color 0.2s;
3272 }
3273 .mxch-cg-edit-prompt-btn:hover {
3274 color: #c5c9d1;
3275 }
3276 .mxch-cg-edit-prompt-btn.mxch-cg-prompt-modified {
3277 color: #7c6ee8;
3278 }
3279 .mxch-cg-edit-prompt-btn.mxch-cg-prompt-modified:hover {
3280 color: #9d92f0;
3281 }
3282
3283 /* Modal overlay + container */
3284 .mxch-cg-prompt-modal {
3285 position: fixed;
3286 top: 0;
3287 left: 0;
3288 right: 0;
3289 bottom: 0;
3290 z-index: 100100;
3291 display: flex;
3292 align-items: center;
3293 justify-content: center;
3294 overflow: hidden;
3295 }
3296 .mxch-cg-prompt-modal-overlay {
3297 position: absolute;
3298 top: 0;
3299 left: 0;
3300 right: 0;
3301 bottom: 0;
3302 background: rgba(0, 0, 0, 0.6);
3303 }
3304 .mxch-cg-prompt-modal-content {
3305 position: relative;
3306 background: #1e1e2e;
3307 border: 1px solid rgba(255, 255, 255, 0.08);
3308 border-radius: 12px;
3309 width: 90%;
3310 max-width: 760px;
3311 height: 75vh;
3312 max-height: 600px;
3313 display: flex;
3314 flex-direction: column;
3315 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
3316 overflow: hidden;
3317 }
3318
3319 /* Header */
3320 .mxch-cg-prompt-modal-header {
3321 display: flex;
3322 align-items: center;
3323 justify-content: space-between;
3324 padding: 18px 24px;
3325 border-bottom: 1px solid rgba(255, 255, 255, 0.06);
3326 }
3327 .mxch-cg-prompt-modal-header h3 {
3328 margin: 0;
3329 font-size: 15px;
3330 font-weight: 600;
3331 color: #e2e4e9;
3332 }
3333 .mxch-cg-prompt-modal-close {
3334 background: none;
3335 border: none;
3336 color: #8a8f98;
3337 font-size: 22px;
3338 cursor: pointer;
3339 padding: 0 4px;
3340 line-height: 1;
3341 transition: color 0.2s;
3342 }
3343 .mxch-cg-prompt-modal-close:hover {
3344 color: #fff;
3345 }
3346
3347 /* Body */
3348 .mxch-cg-prompt-modal-body {
3349 padding: 16px 24px;
3350 overflow: hidden;
3351 flex: 1;
3352 display: flex;
3353 flex-direction: column;
3354 min-height: 0;
3355 }
3356 .mxch-cg-prompt-modal-desc {
3357 margin: 0 0 12px;
3358 font-size: 13px;
3359 color: #8a8f98;
3360 line-height: 1.5;
3361 flex-shrink: 0;
3362 }
3363 .mxch-cg-system-prompt-editor {
3364 width: 100%;
3365 flex: 1;
3366 min-height: 200px;
3367 background: #13131f;
3368 border: 1px solid rgba(255, 255, 255, 0.06);
3369 border-radius: 8px;
3370 color: #c5c9d1;
3371 font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
3372 font-size: 12.5px;
3373 line-height: 1.7;
3374 padding: 14px 16px;
3375 resize: none;
3376 box-sizing: border-box;
3377 overflow-y: auto;
3378 }
3379 .mxch-cg-system-prompt-editor:focus {
3380 outline: none;
3381 border-color: rgba(124, 110, 232, 0.4);
3382 box-shadow: 0 0 0 2px rgba(124, 110, 232, 0.1);
3383 }
3384 /* Custom scrollbar for prompt editor */
3385 .mxch-cg-system-prompt-editor::-webkit-scrollbar {
3386 width: 6px;
3387 }
3388 .mxch-cg-system-prompt-editor::-webkit-scrollbar-track {
3389 background: transparent;
3390 border-radius: 3px;
3391 }
3392 .mxch-cg-system-prompt-editor::-webkit-scrollbar-thumb {
3393 background: rgba(124, 110, 232, 0.3);
3394 border-radius: 3px;
3395 }
3396 .mxch-cg-system-prompt-editor::-webkit-scrollbar-thumb:hover {
3397 background: rgba(124, 110, 232, 0.5);
3398 }
3399
3400 /* Footer */
3401 .mxch-cg-prompt-modal-footer {
3402 display: flex;
3403 align-items: center;
3404 justify-content: space-between;
3405 padding: 14px 24px;
3406 border-top: 1px solid rgba(255, 255, 255, 0.06);
3407 }
3408 .mxch-cg-prompt-modal-footer-right {
3409 display: flex;
3410 gap: 8px;
3411 }
3412 .mxch-cg-prompt-modal-footer .button {
3413 background: #2a2a3d;
3414 border: 1px solid rgba(255, 255, 255, 0.08);
3415 color: #c5c9d1;
3416 border-radius: 6px;
3417 padding: 6px 14px;
3418 font-size: 13px;
3419 cursor: pointer;
3420 transition: background 0.2s, border-color 0.2s;
3421 }
3422 .mxch-cg-prompt-modal-footer .button:hover {
3423 background: #333350;
3424 border-color: rgba(255, 255, 255, 0.14);
3425 }
3426 .mxch-cg-prompt-modal-footer .button-primary {
3427 background: #7c6ee8;
3428 border-color: #7c6ee8;
3429 color: #fff;
3430 }
3431 .mxch-cg-prompt-modal-footer .button-primary:hover {
3432 background: #6b5dd3;
3433 border-color: #6b5dd3;
3434 }
3435
3436 @media (max-width: 600px) {
3437 .mxch-cg-prompt-modal-content {
3438 width: 96%;
3439 max-height: 90vh;
3440 }
3441 .mxch-cg-prompt-modal-header,
3442 .mxch-cg-prompt-modal-body,
3443 .mxch-cg-prompt-modal-footer {
3444 padding-left: 16px;
3445 padding-right: 16px;
3446 }
3447 }
3448