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

3,400 lines 76.0 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-sort-arrow {
2288 font-size: 9px;
2289 vertical-align: middle;
2290 margin-left: 2px;
2291 }
2292
2293 /* ─── Row Columns ─────────────────────────────────────────────── */
2294
2295 .mxch-seod-cell-date {
2296 width: 90px;
2297 flex-shrink: 0;
2298 justify-content: center;
2299 }
2300
2301 .mxch-seod-date {
2302 font-size: 12px;
2303 color: var(--mxch-text-muted, #6b7280);
2304 }
2305
2306 .mxch-seod-cell-clicks,
2307 .mxch-seod-cell-impressions {
2308 width: 52px;
2309 flex-shrink: 0;
2310 justify-content: center;
2311 font-size: 12px;
2312 color: var(--mxch-text-muted, #6b7280);
2313 }
2314
2315 .mxch-seod-row {
2316 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2317 cursor: pointer;
2318 transition: background 0.15s ease;
2319 }
2320
2321 .mxch-seod-row:last-child {
2322 border-bottom: none;
2323 }
2324
2325 .mxch-seod-row:hover {
2326 background: rgba(120, 115, 245, 0.03);
2327 }
2328
2329 .mxch-seod-row.mxch-seod-active {
2330 background: rgba(120, 115, 245, 0.03);
2331 }
2332
2333 .mxch-seod-row-main {
2334 display: flex;
2335 align-items: center;
2336 padding: 12px 18px;
2337 gap: 12px;
2338 }
2339
2340 .mxch-seod-cell {
2341 display: flex;
2342 align-items: center;
2343 }
2344
2345 .mxch-seod-header-check,
2346 .mxch-seod-cell-check {
2347 width: 28px;
2348 flex-shrink: 0;
2349 display: flex;
2350 align-items: center;
2351 justify-content: center;
2352 }
2353
2354 .mxch-seod-header-check input,
2355 .mxch-seod-cell-check input {
2356 width: 15px;
2357 height: 15px;
2358 margin: 0;
2359 cursor: pointer;
2360 accent-color: var(--mxch-primary, #7873f5);
2361 }
2362
2363 .mxch-seod-row.mxch-seod-row-optimizing {
2364 opacity: 0.7;
2365 pointer-events: none;
2366 }
2367
2368 .mxch-seod-row.mxch-seod-row-optimizing .mxch-seod-score-badge {
2369 visibility: hidden;
2370 }
2371
2372 .mxch-seod-row-spinner-wrap {
2373 position: absolute;
2374 top: 0;
2375 left: 0;
2376 right: 0;
2377 bottom: 0;
2378 display: flex;
2379 align-items: center;
2380 justify-content: center;
2381 }
2382
2383 .mxch-seod-row-spinner {
2384 width: 24px;
2385 height: 24px;
2386 border: 2.5px solid var(--mxch-card-border, #e2e4e9);
2387 border-top-color: var(--mxch-primary, #7873f5);
2388 border-radius: 50%;
2389 animation: mxch-spin 0.6s linear infinite;
2390 box-sizing: border-box;
2391 }
2392
2393 .mxch-seod-cell-title {
2394 flex: 1;
2395 min-width: 0;
2396 flex-direction: column;
2397 align-items: flex-start;
2398 gap: 2px;
2399 }
2400
2401 .mxch-seod-title {
2402 font-size: 13.5px;
2403 font-weight: 500;
2404 color: var(--mxch-text-primary, #1a1a2e);
2405 white-space: nowrap;
2406 overflow: hidden;
2407 text-overflow: ellipsis;
2408 max-width: 100%;
2409 }
2410
2411 .mxch-seod-meta {
2412 font-size: 11.5px;
2413 color: var(--mxch-text-muted, #6b7280);
2414 }
2415
2416 .mxch-seod-cell-score {
2417 width: 48px;
2418 justify-content: center;
2419 flex-shrink: 0;
2420 position: relative;
2421 }
2422
2423 .mxch-seod-score-badge {
2424 width: 36px;
2425 height: 36px;
2426 border-radius: 50%;
2427 display: flex;
2428 align-items: center;
2429 justify-content: center;
2430 font-size: 12px;
2431 font-weight: 700;
2432 border: 2.5px solid;
2433 }
2434
2435 .mxch-seod-score-badge.mxch-seod-good {
2436 color: #10b981;
2437 border-color: #10b981;
2438 background: rgba(16, 185, 129, 0.08);
2439 }
2440
2441 .mxch-seod-score-badge.mxch-seod-ok {
2442 color: #f59e0b;
2443 border-color: #f59e0b;
2444 background: rgba(245, 158, 11, 0.08);
2445 }
2446
2447 .mxch-seod-score-badge.mxch-seod-bad {
2448 color: #ef4444;
2449 border-color: #ef4444;
2450 background: rgba(239, 68, 68, 0.08);
2451 }
2452
2453 .mxch-seod-score-badge.mxch-seod-unscored {
2454 color: var(--mxch-text-muted, #6b7280);
2455 border-color: var(--mxch-input-border, #d1d5db);
2456 background: transparent;
2457 font-size: 14px;
2458 }
2459
2460 .mxch-seod-cell-status {
2461 width: 90px;
2462 justify-content: center;
2463 flex-shrink: 0;
2464 }
2465
2466 .mxch-seod-status {
2467 font-size: 12px;
2468 font-weight: 500;
2469 padding: 3px 10px;
2470 border-radius: 12px;
2471 }
2472
2473 .mxch-seod-status-good {
2474 color: #10b981;
2475 background: rgba(16, 185, 129, 0.1);
2476 }
2477
2478 .mxch-seod-status-warn {
2479 color: #f59e0b;
2480 background: rgba(245, 158, 11, 0.1);
2481 }
2482
2483 .mxch-seod-status-bad {
2484 color: #ef4444;
2485 background: rgba(239, 68, 68, 0.1);
2486 }
2487
2488 .mxch-seod-status-unscored {
2489 color: var(--mxch-text-muted, #6b7280);
2490 background: rgba(107, 114, 128, 0.08);
2491 }
2492
2493 /* ─── SEO Detail Modal ───────────────────────────────────────── */
2494
2495 .mxch-seod-modal-overlay {
2496 position: fixed;
2497 inset: 0;
2498 z-index: 100000;
2499 background: rgba(0, 0, 0, 0);
2500 display: flex;
2501 align-items: center;
2502 justify-content: center;
2503 transition: background 0.2s ease;
2504 }
2505
2506 .mxch-seod-modal-overlay.mxch-seod-modal-visible {
2507 background: rgba(0, 0, 0, 0.45);
2508 }
2509
2510 .mxch-seod-modal {
2511 background: var(--mxch-card-bg, #fff);
2512 border-radius: 12px;
2513 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
2514 width: 90%;
2515 max-width: 580px;
2516 max-height: 80vh;
2517 display: flex;
2518 flex-direction: column;
2519 opacity: 0;
2520 transform: translateY(12px) scale(0.98);
2521 transition: opacity 0.2s ease, transform 0.2s ease;
2522 }
2523
2524 .mxch-seod-modal-visible .mxch-seod-modal {
2525 opacity: 1;
2526 transform: translateY(0) scale(1);
2527 }
2528
2529 .mxch-seod-modal-header {
2530 display: flex;
2531 align-items: center;
2532 justify-content: space-between;
2533 padding: 16px 20px;
2534 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2535 flex-shrink: 0;
2536 }
2537
2538 .mxch-seod-modal-title {
2539 font-size: 15px;
2540 font-weight: 600;
2541 color: var(--mxch-text-primary, #1a1a2e);
2542 margin: 0;
2543 white-space: nowrap;
2544 overflow: hidden;
2545 text-overflow: ellipsis;
2546 min-width: 0;
2547 flex: 1;
2548 padding-right: 12px;
2549 }
2550
2551 .mxch-seod-modal-view-page {
2552 display: inline-flex;
2553 align-items: center;
2554 gap: 4px;
2555 font-size: 12px;
2556 font-weight: 500;
2557 color: var(--mxch-accent, #6366f1);
2558 text-decoration: none;
2559 padding: 4px 10px;
2560 border-radius: 6px;
2561 transition: color 0.15s, background 0.15s;
2562 flex-shrink: 0;
2563 margin-right: 8px;
2564 white-space: nowrap;
2565 }
2566
2567 .mxch-seod-modal-view-page:hover {
2568 color: var(--mxch-accent-hover, #4f46e5);
2569 background: rgba(99, 102, 241, 0.08);
2570 text-decoration: none;
2571 }
2572
2573 .mxch-seod-modal-view-page svg {
2574 flex-shrink: 0;
2575 }
2576
2577 .mxch-seod-modal-close {
2578 background: none;
2579 border: none;
2580 cursor: pointer;
2581 color: var(--mxch-text-muted, #6b7280);
2582 padding: 4px;
2583 border-radius: 6px;
2584 transition: color 0.15s, background 0.15s;
2585 flex-shrink: 0;
2586 }
2587
2588 .mxch-seod-modal-close:hover {
2589 color: var(--mxch-text-primary, #1a1a2e);
2590 background: rgba(0, 0, 0, 0.05);
2591 }
2592
2593 .mxch-seod-modal-body {
2594 padding: 16px 20px;
2595 overflow-y: auto;
2596 flex: 1;
2597 min-height: 0;
2598 }
2599
2600 /* Detail content (reused inside modal) */
2601
2602 .mxch-seod-detail {
2603 cursor: default;
2604 }
2605
2606 .mxch-seod-detail-loading {
2607 display: flex;
2608 align-items: center;
2609 gap: 8px;
2610 padding: 16px 0;
2611 color: var(--mxch-text-muted, #6b7280);
2612 font-size: 13px;
2613 }
2614
2615 .mxch-seod-spinner {
2616 width: 16px;
2617 height: 16px;
2618 border: 2px solid var(--mxch-input-border, #d1d5db);
2619 border-top-color: var(--mxch-primary, #7873f5);
2620 border-radius: 50%;
2621 animation: mxch-spin 0.6s linear infinite;
2622 }
2623
2624 .mxch-seod-detail-error {
2625 padding: 16px 0;
2626 color: #ef4444;
2627 font-size: 13px;
2628 }
2629
2630 .mxch-seod-checks {
2631 background: var(--mxch-card-bg, #fff);
2632 border: 1px solid var(--mxch-card-border, #e2e4e9);
2633 border-radius: 8px;
2634 overflow: hidden;
2635 }
2636
2637 .mxch-seod-check {
2638 display: flex;
2639 align-items: flex-start;
2640 gap: 10px;
2641 padding: 10px 14px;
2642 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
2643 }
2644
2645 .mxch-seod-check:last-child {
2646 border-bottom: none;
2647 }
2648
2649 .mxch-seod-check-sep {
2650 height: 1px;
2651 background: var(--mxch-card-border, #e2e4e9);
2652 opacity: 0.6;
2653 }
2654
2655 .mxch-seod-check-icon {
2656 width: 18px;
2657 height: 18px;
2658 flex-shrink: 0;
2659 margin-top: 1px;
2660 }
2661
2662 .mxch-seod-check-icon svg {
2663 width: 18px;
2664 height: 18px;
2665 }
2666
2667 .mxch-seod-check-pass .mxch-seod-check-icon { color: #10b981; }
2668 .mxch-seod-check-warn .mxch-seod-check-icon { color: #f59e0b; }
2669 .mxch-seod-check-fail .mxch-seod-check-icon { color: #ef4444; }
2670
2671 .mxch-seod-check-text {
2672 display: flex;
2673 flex-direction: column;
2674 gap: 1px;
2675 min-width: 0;
2676 }
2677
2678 .mxch-seod-check-label {
2679 font-size: 13px;
2680 font-weight: 500;
2681 color: var(--mxch-text-primary, #1a1a2e);
2682 }
2683
2684 .mxch-seod-check-detail {
2685 font-size: 12px;
2686 color: var(--mxch-text-muted, #6b7280);
2687 }
2688
2689 .mxch-seod-addon-badge {
2690 display: inline-flex;
2691 align-items: center;
2692 padding: 1px 6px;
2693 margin-left: 6px;
2694 border-radius: 20px;
2695 font-size: 9px;
2696 font-weight: 700;
2697 text-transform: uppercase;
2698 letter-spacing: 0.5px;
2699 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
2700 color: var(--mxch-primary, #7873f5);
2701 line-height: 1;
2702 vertical-align: middle;
2703 text-decoration: none;
2704 cursor: pointer;
2705 }
2706
2707 .mxch-seod-addon-badge:hover {
2708 background: linear-gradient(135deg, rgba(120, 115, 245, 0.25), rgba(168, 139, 250, 0.25));
2709 text-decoration: none;
2710 color: var(--mxch-primary, #7873f5);
2711 }
2712
2713 .mxch-seod-pro-badge {
2714 background: linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 191, 36, 0.15));
2715 color: #d97706;
2716 }
2717
2718 .mxch-seod-pro-badge:hover {
2719 background: linear-gradient(135deg, rgba(245, 158, 11, 0.25), rgba(251, 191, 36, 0.25));
2720 color: #d97706;
2721 }
2722
2723 .mxch-seod-detail-actions {
2724 display: flex;
2725 justify-content: flex-end;
2726 margin-top: 12px;
2727 }
2728
2729 .mxch-seod-optimize-btn {
2730 display: inline-flex;
2731 align-items: center;
2732 gap: 6px;
2733 padding: 7px 16px;
2734 background: linear-gradient(135deg, #7873f5, #6366f1);
2735 color: #fff;
2736 border: none;
2737 border-radius: 6px;
2738 font-size: 12.5px;
2739 font-weight: 600;
2740 cursor: pointer;
2741 transition: filter 0.15s ease, box-shadow 0.15s ease;
2742 }
2743
2744 .mxch-seod-optimize-btn:hover {
2745 filter: brightness(1.08);
2746 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
2747 }
2748
2749 .mxch-seod-optimize-btn:disabled {
2750 opacity: 0.6;
2751 cursor: not-allowed;
2752 }
2753
2754 .mxch-seod-optimize-btn svg {
2755 animation: none;
2756 }
2757
2758 .mxch-seod-optimize-btn:disabled svg {
2759 animation: mxch-spin 0.8s linear infinite;
2760 }
2761
2762 /* Footer */
2763
2764 .mxch-seod-footer {
2765 display: flex;
2766 align-items: center;
2767 gap: 12px;
2768 padding: 12px 18px;
2769 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
2770 flex-wrap: wrap;
2771 }
2772
2773 .mxch-seod-scan-btn {
2774 display: inline-flex;
2775 align-items: center;
2776 gap: 6px;
2777 padding: 7px 14px;
2778 background: var(--mxch-card-bg, #fff);
2779 color: var(--mxch-primary, #7873f5);
2780 border: 1px solid var(--mxch-primary, #7873f5);
2781 border-radius: 6px;
2782 font-size: 12.5px;
2783 font-weight: 600;
2784 cursor: pointer;
2785 transition: all 0.15s ease;
2786 }
2787
2788 .mxch-seod-scan-btn:hover {
2789 background: var(--mxch-primary, #7873f5);
2790 color: #fff;
2791 }
2792
2793 .mxch-seod-scan-btn:disabled {
2794 opacity: 0.6;
2795 cursor: not-allowed;
2796 background: var(--mxch-primary, #7873f5);
2797 color: #fff;
2798 }
2799
2800 .mxch-seod-bulk-note {
2801 font-size: 11px;
2802 color: var(--mxch-text-muted, #94a3b8);
2803 font-style: italic;
2804 }
2805
2806 .mxch-seod-bulk-locked {
2807 opacity: 0.65;
2808 cursor: not-allowed;
2809 background: var(--mxch-card-bg, #1e1e2e);
2810 color: var(--mxch-text-muted, #94a3b8);
2811 border: 1px dashed var(--mxch-card-border, #e2e4e9);
2812 }
2813
2814 .mxch-seod-bulk-locked:hover {
2815 background: var(--mxch-card-bg, #1e1e2e);
2816 color: var(--mxch-text-muted, #94a3b8);
2817 }
2818
2819 .mxch-seod-bulk-locked .mxch-cg-pro-badge {
2820 margin-left: 4px;
2821 opacity: 1;
2822 }
2823
2824 .mxch-seod-optimize-selected-btn {
2825 background: var(--mxch-primary, #7873f5);
2826 color: #fff;
2827 white-space: nowrap;
2828 }
2829
2830 .mxch-seod-optimize-selected-btn:hover {
2831 background: var(--mxch-primary-hover, #6963e6);
2832 color: #fff;
2833 }
2834
2835 .mxch-seod-scan-stop-btn {
2836 color: #ef4444;
2837 border-color: #ef4444;
2838 }
2839
2840 .mxch-seod-scan-stop-btn:hover {
2841 background: #ef4444;
2842 color: #fff;
2843 }
2844
2845 .mxch-seod-scan-stop-btn:disabled {
2846 background: #ef4444;
2847 color: #fff;
2848 border-color: #ef4444;
2849 }
2850
2851 .mxch-seod-scan-status {
2852 font-size: 12.5px;
2853 color: var(--mxch-text-muted, #6b7280);
2854 }
2855
2856 .mxch-seod-scan-progress {
2857 font-weight: 600;
2858 color: var(--mxch-primary, #7873f5);
2859 }
2860
2861 .mxch-seod-pagination {
2862 display: flex;
2863 align-items: center;
2864 gap: 8px;
2865 margin-left: auto;
2866 }
2867
2868 .mxch-seod-page-btn {
2869 padding: 5px 12px;
2870 border: 1px solid var(--mxch-input-border, #d1d5db);
2871 border-radius: 6px;
2872 background: var(--mxch-card-bg, #fff);
2873 color: var(--mxch-text-primary, #1a1a2e);
2874 font-size: 12.5px;
2875 cursor: pointer;
2876 transition: all 0.15s ease;
2877 }
2878
2879 .mxch-seod-page-btn:hover {
2880 border-color: var(--mxch-primary, #7873f5);
2881 color: var(--mxch-primary, #7873f5);
2882 }
2883
2884 .mxch-seod-page-info {
2885 font-size: 12.5px;
2886 color: var(--mxch-text-muted, #6b7280);
2887 }
2888
2889 /* Loading & Empty */
2890
2891 .mxch-seod-loading {
2892 display: flex;
2893 flex-direction: column;
2894 align-items: center;
2895 gap: 10px;
2896 padding: 48px 20px;
2897 color: var(--mxch-text-muted, #6b7280);
2898 font-size: 13px;
2899 }
2900
2901 .mxch-seod-empty {
2902 display: flex;
2903 flex-direction: column;
2904 align-items: center;
2905 gap: 8px;
2906 padding: 48px 20px;
2907 color: var(--mxch-text-muted, #6b7280);
2908 font-size: 13px;
2909 text-align: center;
2910 }
2911
2912 .mxch-seod-empty svg {
2913 opacity: 0.4;
2914 }
2915
2916 .mxch-seod-error {
2917 padding: 24px;
2918 text-align: center;
2919 color: #ef4444;
2920 font-size: 13px;
2921 }
2922
2923 /* ─── Settings Card Header ─────────────────────────────────────── */
2924
2925 .mxch-card-header {
2926 padding: 14px 20px 0;
2927 }
2928
2929 .mxch-card-title {
2930 font-size: 14px;
2931 font-weight: 600;
2932 color: var(--mxch-text-primary, #1a1a2e);
2933 margin: 0;
2934 text-transform: uppercase;
2935 letter-spacing: 0.5px;
2936 opacity: 0.6;
2937 }
2938
2939 /* ─── SEO Optimize Checkbox Grid ───────────────────────────────── */
2940
2941 .mxch-seo-opt-grid {
2942 display: flex;
2943 flex-wrap: wrap;
2944 gap: 6px;
2945 }
2946
2947 .mxch-seo-opt-item {
2948 display: inline-flex;
2949 align-items: center;
2950 gap: 6px;
2951 padding: 6px 12px;
2952 border: 1px solid var(--mxch-card-border, #e2e4e9);
2953 border-radius: 6px;
2954 font-size: 13px;
2955 color: var(--mxch-text-primary, #1a1a2e);
2956 cursor: pointer;
2957 transition: border-color 0.15s, background 0.15s;
2958 user-select: none;
2959 }
2960
2961 .mxch-seo-opt-item:hover {
2962 border-color: var(--mxch-primary, #7873f5);
2963 background: rgba(120, 115, 245, 0.04);
2964 }
2965
2966 .mxch-seo-opt-item:has(input:checked) {
2967 border-color: var(--mxch-primary, #7873f5);
2968 background: rgba(120, 115, 245, 0.06);
2969 }
2970
2971 .mxch-seo-opt-check {
2972 width: 14px;
2973 height: 14px;
2974 accent-color: var(--mxch-primary, #7873f5);
2975 margin: 0;
2976 cursor: pointer;
2977 }
2978
2979 .mxch-seo-opt-locked {
2980 opacity: 0.5;
2981 cursor: not-allowed;
2982 }
2983
2984 .mxch-seo-opt-locked:hover {
2985 border-color: var(--mxch-card-border, #e2e4e9);
2986 background: transparent;
2987 }
2988
2989 .mxch-seo-opt-item .mxch-cg-pro-badge {
2990 margin-left: 2px;
2991 font-size: 9px;
2992 padding: 1px 5px;
2993 }
2994
2995 /* ─── GSC Locked / Placeholder Styles ──────────────────────────── */
2996
2997 .mxch-seod-header-locked {
2998 opacity: 0.5;
2999 cursor: default;
3000 pointer-events: none;
3001 }
3002
3003 .mxch-seod-header-locked svg {
3004 margin-left: 3px;
3005 vertical-align: middle;
3006 opacity: 0.6;
3007 }
3008
3009 .mxch-seod-cell-locked {
3010 opacity: 0.4;
3011 color: var(--mxch-text-muted, #94a3b8);
3012 cursor: default;
3013 }
3014
3015 /* Settings locked GSC card */
3016 .mxch-gsc-settings-locked {
3017 border: 1px dashed var(--mxch-card-border, #e2e4e9);
3018 border-radius: 8px;
3019 padding: 16px;
3020 margin-top: 12px;
3021 background: var(--mxch-card-bg, #fff);
3022 opacity: 0.85;
3023 }
3024
3025 .mxch-gsc-settings-locked-header {
3026 display: flex;
3027 align-items: center;
3028 gap: 8px;
3029 font-size: 14px;
3030 font-weight: 600;
3031 color: var(--mxch-text-primary, #1a1a2e);
3032 margin-bottom: 6px;
3033 }
3034
3035 .mxch-gsc-settings-locked-header svg {
3036 color: var(--mxch-text-muted, #94a3b8);
3037 flex-shrink: 0;
3038 }
3039
3040 .mxch-gsc-settings-locked .mxch-field-description {
3041 margin-bottom: 10px;
3042 }
3043
3044 .mxch-gsc-connect-btn {
3045 display: inline-flex;
3046 align-items: center;
3047 gap: 6px;
3048 padding: 8px 16px;
3049 border: 1px solid var(--mxch-card-border, #e2e4e9);
3050 border-radius: 6px;
3051 background: var(--mxch-card-bg, #fff);
3052 color: var(--mxch-text-muted, #94a3b8);
3053 font-size: 13px;
3054 cursor: not-allowed;
3055 opacity: 0.6;
3056 margin-bottom: 8px;
3057 }
3058
3059 /* Detail modal GSC placeholder */
3060 .mxch-gsc-placeholder {
3061 position: relative;
3062 margin-top: 16px;
3063 padding: 16px;
3064 border: 1px dashed var(--mxch-card-border, #e2e4e9);
3065 border-radius: 8px;
3066 overflow: hidden;
3067 }
3068
3069 .mxch-gsc-placeholder-title {
3070 display: flex;
3071 align-items: center;
3072 gap: 6px;
3073 font-size: 14px;
3074 font-weight: 600;
3075 color: var(--mxch-text-primary, #1a1a2e);
3076 margin: 0 0 12px 0;
3077 opacity: 0.5;
3078 }
3079
3080 .mxch-gsc-placeholder-content {
3081 filter: blur(1.5px);
3082 opacity: 0.5;
3083 pointer-events: none;
3084 user-select: none;
3085 }
3086
3087 .mxch-gsc-stats {
3088 display: grid;
3089 grid-template-columns: repeat(4, 1fr);
3090 gap: 10px;
3091 margin-bottom: 14px;
3092 }
3093
3094 .mxch-gsc-stat {
3095 display: flex;
3096 flex-direction: column;
3097 align-items: center;
3098 padding: 10px 8px;
3099 background: var(--mxch-bg, #f8fafc);
3100 border-radius: 6px;
3101 border: 1px solid var(--mxch-card-border, #e2e4e9);
3102 }
3103
3104 .mxch-gsc-stat-value {
3105 font-size: 18px;
3106 font-weight: 700;
3107 color: var(--mxch-text-primary, #1a1a2e);
3108 }
3109
3110 .mxch-gsc-stat-label {
3111 font-size: 11px;
3112 color: var(--mxch-text-muted, #94a3b8);
3113 margin-top: 2px;
3114 }
3115
3116 .mxch-gsc-table {
3117 width: 100%;
3118 border-collapse: collapse;
3119 font-size: 12px;
3120 }
3121
3122 .mxch-gsc-table th {
3123 text-align: left;
3124 padding: 6px 8px;
3125 font-weight: 600;
3126 color: var(--mxch-text-muted, #94a3b8);
3127 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
3128 font-size: 11px;
3129 }
3130
3131 .mxch-gsc-table td {
3132 padding: 6px 8px;
3133 color: var(--mxch-text-primary, #1a1a2e);
3134 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
3135 }
3136
3137 .mxch-gsc-placeholder-overlay {
3138 position: absolute;
3139 inset: 0;
3140 display: flex;
3141 flex-direction: column;
3142 align-items: center;
3143 justify-content: center;
3144 gap: 6px;
3145 background: rgba(255, 255, 255, 0.4);
3146 z-index: 2;
3147 }
3148
3149 .mxch-gsc-placeholder-overlay svg {
3150 opacity: 0.3;
3151 }
3152
3153 .mxch-gsc-placeholder-overlay .mxch-cg-pro-upgrade-link {
3154 font-size: 12px;
3155 }
3156
3157 /* Responsive */
3158
3159 @media (max-width: 768px) {
3160 .mxch-seod-filters {
3161 flex-direction: column;
3162 align-items: stretch;
3163 gap: 8px;
3164 }
3165 .mxch-seod-search {
3166 width: 100%;
3167 }
3168 .mxch-seod-cell-status {
3169 display: none;
3170 }
3171 .mxch-seod-cell-date,
3172 .mxch-seod-cell-clicks,
3173 .mxch-seod-cell-impressions {
3174 display: none;
3175 }
3176 .mxch-seod-header-date,
3177 .mxch-seod-header-clicks,
3178 .mxch-seod-header-impressions {
3179 display: none;
3180 }
3181 .mxch-seod-modal {
3182 width: 95%;
3183 max-height: 85vh;
3184 }
3185 .mxch-seod-row-main {
3186 padding: 10px 14px;
3187 }
3188 .mxch-seod-header-check,
3189 .mxch-seod-cell-check {
3190 width: 24px;
3191 }
3192 .mxch-seod-filters-right {
3193 flex-wrap: wrap;
3194 gap: 8px;
3195 }
3196 .mxch-seod-optimize-selected-btn {
3197 font-size: 12px;
3198 padding: 6px 10px;
3199 }
3200 .mxch-seod-footer {
3201 flex-direction: column;
3202 align-items: stretch;
3203 gap: 8px;
3204 }
3205 .mxch-seod-pagination {
3206 margin-left: 0;
3207 justify-content: center;
3208 }
3209 }
3210
3211 /* ── Edit Default Prompt Button & Modal ────────────────────── */
3212 .mxch-cg-edit-prompt-btn {
3213 display: inline-flex;
3214 align-items: center;
3215 gap: 5px;
3216 background: none;
3217 border: none;
3218 color: #8a8f98;
3219 font-size: 12px;
3220 cursor: pointer;
3221 padding: 4px 0;
3222 margin-top: 2px;
3223 transition: color 0.2s;
3224 }
3225 .mxch-cg-edit-prompt-btn:hover {
3226 color: #c5c9d1;
3227 }
3228 .mxch-cg-edit-prompt-btn.mxch-cg-prompt-modified {
3229 color: #7c6ee8;
3230 }
3231 .mxch-cg-edit-prompt-btn.mxch-cg-prompt-modified:hover {
3232 color: #9d92f0;
3233 }
3234
3235 /* Modal overlay + container */
3236 .mxch-cg-prompt-modal {
3237 position: fixed;
3238 top: 0;
3239 left: 0;
3240 right: 0;
3241 bottom: 0;
3242 z-index: 100100;
3243 display: flex;
3244 align-items: center;
3245 justify-content: center;
3246 overflow: hidden;
3247 }
3248 .mxch-cg-prompt-modal-overlay {
3249 position: absolute;
3250 top: 0;
3251 left: 0;
3252 right: 0;
3253 bottom: 0;
3254 background: rgba(0, 0, 0, 0.6);
3255 }
3256 .mxch-cg-prompt-modal-content {
3257 position: relative;
3258 background: #1e1e2e;
3259 border: 1px solid rgba(255, 255, 255, 0.08);
3260 border-radius: 12px;
3261 width: 90%;
3262 max-width: 760px;
3263 height: 75vh;
3264 max-height: 600px;
3265 display: flex;
3266 flex-direction: column;
3267 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
3268 overflow: hidden;
3269 }
3270
3271 /* Header */
3272 .mxch-cg-prompt-modal-header {
3273 display: flex;
3274 align-items: center;
3275 justify-content: space-between;
3276 padding: 18px 24px;
3277 border-bottom: 1px solid rgba(255, 255, 255, 0.06);
3278 }
3279 .mxch-cg-prompt-modal-header h3 {
3280 margin: 0;
3281 font-size: 15px;
3282 font-weight: 600;
3283 color: #e2e4e9;
3284 }
3285 .mxch-cg-prompt-modal-close {
3286 background: none;
3287 border: none;
3288 color: #8a8f98;
3289 font-size: 22px;
3290 cursor: pointer;
3291 padding: 0 4px;
3292 line-height: 1;
3293 transition: color 0.2s;
3294 }
3295 .mxch-cg-prompt-modal-close:hover {
3296 color: #fff;
3297 }
3298
3299 /* Body */
3300 .mxch-cg-prompt-modal-body {
3301 padding: 16px 24px;
3302 overflow: hidden;
3303 flex: 1;
3304 display: flex;
3305 flex-direction: column;
3306 min-height: 0;
3307 }
3308 .mxch-cg-prompt-modal-desc {
3309 margin: 0 0 12px;
3310 font-size: 13px;
3311 color: #8a8f98;
3312 line-height: 1.5;
3313 flex-shrink: 0;
3314 }
3315 .mxch-cg-system-prompt-editor {
3316 width: 100%;
3317 flex: 1;
3318 min-height: 200px;
3319 background: #13131f;
3320 border: 1px solid rgba(255, 255, 255, 0.06);
3321 border-radius: 8px;
3322 color: #c5c9d1;
3323 font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
3324 font-size: 12.5px;
3325 line-height: 1.7;
3326 padding: 14px 16px;
3327 resize: none;
3328 box-sizing: border-box;
3329 overflow-y: auto;
3330 }
3331 .mxch-cg-system-prompt-editor:focus {
3332 outline: none;
3333 border-color: rgba(124, 110, 232, 0.4);
3334 box-shadow: 0 0 0 2px rgba(124, 110, 232, 0.1);
3335 }
3336 /* Custom scrollbar for prompt editor */
3337 .mxch-cg-system-prompt-editor::-webkit-scrollbar {
3338 width: 6px;
3339 }
3340 .mxch-cg-system-prompt-editor::-webkit-scrollbar-track {
3341 background: transparent;
3342 border-radius: 3px;
3343 }
3344 .mxch-cg-system-prompt-editor::-webkit-scrollbar-thumb {
3345 background: rgba(124, 110, 232, 0.3);
3346 border-radius: 3px;
3347 }
3348 .mxch-cg-system-prompt-editor::-webkit-scrollbar-thumb:hover {
3349 background: rgba(124, 110, 232, 0.5);
3350 }
3351
3352 /* Footer */
3353 .mxch-cg-prompt-modal-footer {
3354 display: flex;
3355 align-items: center;
3356 justify-content: space-between;
3357 padding: 14px 24px;
3358 border-top: 1px solid rgba(255, 255, 255, 0.06);
3359 }
3360 .mxch-cg-prompt-modal-footer-right {
3361 display: flex;
3362 gap: 8px;
3363 }
3364 .mxch-cg-prompt-modal-footer .button {
3365 background: #2a2a3d;
3366 border: 1px solid rgba(255, 255, 255, 0.08);
3367 color: #c5c9d1;
3368 border-radius: 6px;
3369 padding: 6px 14px;
3370 font-size: 13px;
3371 cursor: pointer;
3372 transition: background 0.2s, border-color 0.2s;
3373 }
3374 .mxch-cg-prompt-modal-footer .button:hover {
3375 background: #333350;
3376 border-color: rgba(255, 255, 255, 0.14);
3377 }
3378 .mxch-cg-prompt-modal-footer .button-primary {
3379 background: #7c6ee8;
3380 border-color: #7c6ee8;
3381 color: #fff;
3382 }
3383 .mxch-cg-prompt-modal-footer .button-primary:hover {
3384 background: #6b5dd3;
3385 border-color: #6b5dd3;
3386 }
3387
3388 @media (max-width: 600px) {
3389 .mxch-cg-prompt-modal-content {
3390 width: 96%;
3391 max-height: 90vh;
3392 }
3393 .mxch-cg-prompt-modal-header,
3394 .mxch-cg-prompt-modal-body,
3395 .mxch-cg-prompt-modal-footer {
3396 padding-left: 16px;
3397 padding-right: 16px;
3398 }
3399 }
3400