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

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

1,779 lines 40.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * MxChat Content Generator Styles
3 *
4 * @package MxChat
5 * @since 3.1.0
6 */
7
8 /* ─── Toolbar ───────────────────────────────────────────────────── */
9
10 .mxch-cg-toolbar {
11 display: flex;
12 align-items: center;
13 justify-content: space-between;
14 gap: 12px;
15 padding: 10px 16px;
16 background: var(--mxch-card-bg, #fff);
17 border: 1px solid var(--mxch-card-border, #e2e4e9);
18 border-radius: 10px;
19 margin-bottom: 16px;
20 flex-wrap: wrap;
21 }
22
23 .mxch-cg-toolbar-left {
24 display: flex;
25 align-items: center;
26 gap: 12px;
27 flex: 1 1 0;
28 min-width: 0;
29 overflow: visible;
30 }
31
32 .mxch-cg-toolbar-title {
33 font-size: 15px;
34 font-weight: 600;
35 color: var(--mxch-text-primary, #1a1a2e);
36 margin: 0;
37 overflow: hidden;
38 text-overflow: ellipsis;
39 white-space: nowrap;
40 }
41
42 .mxch-cg-toolbar-right {
43 display: flex;
44 align-items: center;
45 gap: 6px;
46 flex-shrink: 0;
47 }
48
49 /* ─── Generate Button (compact) ─────────────────────────────────── */
50
51 .mxch-cg-generate-btn {
52 display: inline-flex;
53 align-items: center;
54 justify-content: center;
55 gap: 6px;
56 padding: 8px 16px;
57 border: none;
58 border-radius: 8px;
59 background: var(--mxch-primary, #7873f5);
60 color: #fff;
61 font-size: 13px;
62 font-weight: 600;
63 cursor: pointer;
64 transition: all 0.2s;
65 white-space: nowrap;
66 flex-shrink: 0;
67 }
68
69 .mxch-cg-generate-btn:hover {
70 background: var(--mxch-primary-hover, #6863e5);
71 box-shadow: 0 2px 8px rgba(120, 115, 245, 0.3);
72 }
73
74 .mxch-cg-generate-btn:disabled {
75 opacity: 0.6;
76 cursor: not-allowed;
77 box-shadow: none;
78 }
79
80 .mxch-cg-generate-btn.mxch-cg-loading {
81 position: relative;
82 color: transparent;
83 }
84
85 .mxch-cg-generate-btn.mxch-cg-loading::after {
86 content: '';
87 position: absolute;
88 width: 18px;
89 height: 18px;
90 border: 2px solid rgba(255, 255, 255, 0.3);
91 border-top-color: #fff;
92 border-radius: 50%;
93 animation: mxch-spin 0.6s linear infinite;
94 }
95
96 .mxch-cg-generate-btn-full {
97 width: 100%;
98 padding: 12px 24px;
99 font-size: 14px;
100 }
101
102 @keyframes mxch-spin {
103 to { transform: rotate(360deg); }
104 }
105
106 /* ─── Action Buttons (toolbar) ──────────────────────────────────── */
107
108 .mxch-cg-action-btn {
109 display: inline-flex;
110 align-items: center;
111 gap: 4px;
112 padding: 6px 10px;
113 border: 1px solid var(--mxch-input-border, #d1d5db);
114 border-radius: 6px;
115 background: transparent;
116 color: var(--mxch-text-secondary, #64748b);
117 font-size: 12px;
118 text-decoration: none;
119 transition: all 0.2s;
120 cursor: pointer;
121 white-space: nowrap;
122 }
123
124 .mxch-cg-action-btn:hover {
125 border-color: var(--mxch-primary, #7873f5);
126 color: var(--mxch-primary, #7873f5);
127 text-decoration: none;
128 }
129
130 /* Status Badge (clickable dropdown trigger) */
131 .mxch-cg-status-badge {
132 display: inline-flex;
133 align-items: center;
134 gap: 4px;
135 padding: 2px 8px;
136 border: none;
137 border-radius: 4px;
138 font-size: 11px;
139 font-weight: 600;
140 text-transform: uppercase;
141 letter-spacing: 0.5px;
142 line-height: 1;
143 cursor: pointer;
144 transition: opacity 0.2s, box-shadow 0.2s;
145 flex-shrink: 0;
146 }
147
148 .mxch-cg-status-badge:hover {
149 opacity: 0.85;
150 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
151 }
152
153 .mxch-cg-badge-draft {
154 background: #fef3c7;
155 color: #92400e;
156 }
157
158 .mxch-cg-badge-publish {
159 background: #d1fae5;
160 color: #065f46;
161 }
162
163 .mxch-cg-badge-future {
164 background: #dbeafe;
165 color: #1e40af;
166 }
167
168 /* ── Status Dropdown ──────────────────────────────────── */
169
170 .mxch-cg-status-dropdown {
171 position: relative;
172 flex-shrink: 0;
173 }
174
175 .mxch-cg-status-chevron {
176 opacity: 0.6;
177 transition: transform 0.2s;
178 flex-shrink: 0;
179 }
180
181 .mxch-cg-status-dropdown.mxch-cg-dropdown-open .mxch-cg-status-chevron {
182 transform: rotate(180deg);
183 }
184
185 .mxch-cg-status-menu {
186 position: absolute;
187 top: calc(100% + 6px);
188 left: 0;
189 min-width: 160px;
190 background: var(--mxch-card-bg, #fff);
191 border: 1px solid var(--mxch-card-border, #e2e4e9);
192 border-radius: 8px;
193 box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
194 z-index: 100060;
195 padding: 4px;
196 animation: mxch-dropdown-in 0.15s ease-out;
197 }
198
199 @keyframes mxch-dropdown-in {
200 from { opacity: 0; transform: translateY(-4px); }
201 to { opacity: 1; transform: translateY(0); }
202 }
203
204 .mxch-cg-status-option {
205 display: flex;
206 align-items: center;
207 gap: 8px;
208 width: 100%;
209 padding: 7px 10px;
210 border: none;
211 border-radius: 5px;
212 background: transparent;
213 color: var(--mxch-text-primary, #1a1a2e);
214 font-size: 12px;
215 font-weight: 500;
216 cursor: pointer;
217 text-align: left;
218 transition: background 0.15s;
219 }
220
221 .mxch-cg-status-option:hover {
222 background: #f1f5f9;
223 }
224
225 .mxch-cg-status-option.mxch-cg-status-active {
226 font-weight: 600;
227 background: #f8fafc;
228 }
229
230 .mxch-cg-status-dot {
231 width: 8px;
232 height: 8px;
233 border-radius: 50%;
234 flex-shrink: 0;
235 }
236
237 .mxch-cg-dot-draft {
238 background: #f59e0b;
239 }
240
241 .mxch-cg-dot-publish {
242 background: #10b981;
243 }
244
245 .mxch-cg-dot-future {
246 background: #3b82f6;
247 }
248
249 .mxch-cg-status-schedule-row {
250 display: flex;
251 align-items: center;
252 gap: 4px;
253 padding: 6px 10px 4px;
254 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
255 margin-top: 4px;
256 }
257
258 .mxch-cg-status-schedule-input {
259 flex: 1;
260 font-size: 11px;
261 padding: 4px 6px;
262 min-width: 0;
263 }
264
265 .mxch-cg-status-schedule-confirm {
266 display: flex;
267 align-items: center;
268 justify-content: center;
269 width: 28px;
270 height: 28px;
271 border: none;
272 border-radius: 5px;
273 background: var(--mxch-primary, #7873f5);
274 color: #fff;
275 cursor: pointer;
276 flex-shrink: 0;
277 transition: background 0.15s;
278 }
279
280 .mxch-cg-status-schedule-confirm:hover {
281 background: var(--mxch-primary-hover, #6863e5);
282 }
283
284 .mxch-cg-status-badge.mxch-cg-status-updating {
285 pointer-events: none;
286 opacity: 0.6;
287 }
288
289 .mxch-cg-status-badge.mxch-cg-status-updating .mxch-cg-status-chevron {
290 animation: mxch-spin 0.6s linear infinite;
291 }
292
293 /* Viewport Toggle */
294 .mxch-cg-viewport-toggle {
295 display: flex;
296 background: #f1f5f9;
297 border-radius: 6px;
298 padding: 2px;
299 }
300
301 .mxch-cg-viewport-btn {
302 display: flex;
303 align-items: center;
304 justify-content: center;
305 width: 28px;
306 height: 28px;
307 border: none;
308 border-radius: 4px;
309 background: transparent;
310 color: var(--mxch-text-muted, #94a3b8);
311 cursor: pointer;
312 transition: all 0.2s;
313 }
314
315 .mxch-cg-viewport-btn.active {
316 background: #fff;
317 color: var(--mxch-primary, #7873f5);
318 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
319 }
320
321 /* ─── Full-Width Preview ────────────────────────────────────────── */
322
323 .mxch-cg-preview-wrap {
324 border: 1px solid var(--mxch-card-border, #e2e4e9);
325 border-radius: 10px;
326 overflow: hidden;
327 background: #f8f9fa;
328 position: relative;
329 }
330
331 .mxch-cg-preview-container {
332 width: 100%;
333 min-height: calc(100vh - 220px);
334 position: relative;
335 overflow: hidden;
336 background: #fff;
337 transition: max-width 0.3s ease;
338 }
339
340 .mxch-cg-preview-container.mxch-cg-viewport-mobile {
341 max-width: 375px;
342 margin: 0 auto;
343 min-height: 667px;
344 border-left: 1px solid var(--mxch-card-border, #e2e4e9);
345 border-right: 1px solid var(--mxch-card-border, #e2e4e9);
346 }
347
348 .mxch-cg-preview-iframe {
349 width: 1400px;
350 height: calc(100vh - 220px);
351 border: none;
352 display: block;
353 transform-origin: 0 0;
354 }
355
356 /* ─── Inline Generation Form ────────────────────────────────────── */
357
358 .mxch-cg-inline-form {
359 display: flex;
360 align-items: center;
361 justify-content: center;
362 min-height: calc(100vh - 220px);
363 padding: 40px 20px;
364 }
365
366 .mxch-cg-inline-form-inner {
367 width: 100%;
368 max-width: 560px;
369 background: var(--mxch-card-bg, #fff);
370 border: 1px solid var(--mxch-card-border, #e2e4e9);
371 border-radius: 14px;
372 padding: 28px 28px 24px;
373 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
374 animation: mxch-inline-form-in 0.3s ease-out;
375 }
376
377 @keyframes mxch-inline-form-in {
378 from { opacity: 0; transform: translateY(12px); }
379 to { opacity: 1; transform: translateY(0); }
380 }
381
382 .mxch-cg-inline-form-header {
383 display: flex;
384 align-items: center;
385 gap: 14px;
386 margin-bottom: 20px;
387 }
388
389 .mxch-cg-inline-form-header svg {
390 color: var(--mxch-primary, #7873f5);
391 opacity: 0.7;
392 flex-shrink: 0;
393 }
394
395 .mxch-cg-inline-form-header h3 {
396 font-size: 18px;
397 font-weight: 600;
398 color: var(--mxch-text-primary, #1a1a2e);
399 margin: 0 0 2px;
400 }
401
402 .mxch-cg-inline-form-header p {
403 font-size: 13px;
404 color: var(--mxch-text-muted, #94a3b8);
405 margin: 0;
406 }
407
408 .mxch-cg-inline-form.mxch-cg-form-collapsing {
409 animation: mxch-inline-form-out 0.3s ease-in forwards;
410 }
411
412 @keyframes mxch-inline-form-out {
413 from { opacity: 1; transform: translateY(0); }
414 to { opacity: 0; transform: translateY(-12px); }
415 }
416
417 /* Toolbar hidden when inline form is visible */
418 .mxch-cg-toolbar.mxch-cg-toolbar-minimal {
419 display: none;
420 }
421
422 /* Preview container transparent when form is showing */
423 .mxch-cg-preview-wrap.mxch-cg-preview-wrap-form {
424 border: none;
425 background: transparent;
426 }
427
428 /* ─── Generation Form ──────────────────────────────────────────── */
429
430 .mxch-cg-form {
431 display: flex;
432 flex-direction: column;
433 gap: 14px;
434 }
435
436 .mxch-cg-prompt {
437 width: 100%;
438 min-height: 80px;
439 padding: 12px 14px;
440 border: 1px solid var(--mxch-input-border, #d1d5db);
441 border-radius: 8px;
442 background: var(--mxch-input-bg, #fff);
443 color: var(--mxch-text-primary, #1a1a2e);
444 font-size: 14px;
445 line-height: 1.5;
446 resize: vertical;
447 transition: border-color 0.2s;
448 font-family: inherit;
449 }
450
451 .mxch-cg-prompt:focus {
452 outline: none;
453 border-color: var(--mxch-input-focus, #7873f5);
454 box-shadow: 0 0 0 3px var(--mxch-primary-light, rgba(120, 115, 245, 0.1));
455 }
456
457 .mxch-cg-options {
458 display: flex;
459 gap: 12px;
460 flex-wrap: wrap;
461 }
462
463 .mxch-cg-option {
464 flex: 1;
465 min-width: 120px;
466 }
467
468 .mxch-cg-option-label {
469 display: block;
470 font-size: 12px;
471 font-weight: 500;
472 color: var(--mxch-text-secondary, #64748b);
473 margin-bottom: 4px;
474 }
475
476 .mxch-cg-select,
477 .mxch-cg-input {
478 width: 100%;
479 padding: 8px 12px;
480 border: 1px solid var(--mxch-input-border, #d1d5db);
481 border-radius: 6px;
482 background: var(--mxch-input-bg, #fff);
483 color: var(--mxch-text-primary, #1a1a2e);
484 font-size: 13px;
485 transition: border-color 0.2s;
486 }
487
488 .mxch-cg-select:focus,
489 .mxch-cg-input:focus {
490 outline: none;
491 border-color: var(--mxch-input-focus, #7873f5);
492 box-shadow: 0 0 0 3px var(--mxch-primary-light, rgba(120, 115, 245, 0.1));
493 }
494
495 /* ─── Progress Bar (inside modal) ───────────────────────────────── */
496
497 .mxch-cg-progress {
498 margin-top: 14px;
499 padding-top: 14px;
500 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
501 }
502
503 .mxch-cg-progress-bar {
504 width: 100%;
505 height: 6px;
506 background: #e2e8f0;
507 border-radius: 3px;
508 overflow: hidden;
509 margin-bottom: 8px;
510 }
511
512 .mxch-cg-progress-fill {
513 height: 100%;
514 background: var(--mxch-primary, #7873f5);
515 border-radius: 3px;
516 transition: width 0.4s ease;
517 }
518
519 .mxch-cg-progress-text {
520 font-size: 13px;
521 color: var(--mxch-text-secondary, #64748b);
522 margin: 0;
523 }
524
525 /* ─── Mini Chat Panel (bottom overlay) ──────────────────────────── */
526
527 .mxch-cg-chat-panel {
528 position: fixed;
529 bottom: 20px;
530 right: 20px;
531 width: 380px;
532 max-height: 420px;
533 background: var(--mxch-card-bg, #fff);
534 border: 1px solid var(--mxch-card-border, #e2e4e9);
535 border-radius: 14px;
536 box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
537 z-index: 100040;
538 display: flex;
539 flex-direction: column;
540 animation: mxch-chat-in 0.2s ease-out;
541 }
542
543 @keyframes mxch-chat-in {
544 from {
545 opacity: 0;
546 transform: translateY(16px);
547 }
548 to {
549 opacity: 1;
550 transform: translateY(0);
551 }
552 }
553
554 .mxch-cg-chat-panel-header {
555 display: flex;
556 align-items: center;
557 justify-content: space-between;
558 padding: 12px 16px;
559 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
560 flex-shrink: 0;
561 }
562
563 .mxch-cg-chat-panel-title {
564 font-size: 14px;
565 font-weight: 600;
566 color: var(--mxch-text-primary, #1a1a2e);
567 }
568
569 .mxch-cg-chat-panel-close {
570 display: flex;
571 align-items: center;
572 justify-content: center;
573 width: 28px;
574 height: 28px;
575 border: none;
576 border-radius: 6px;
577 background: transparent;
578 color: var(--mxch-text-muted, #94a3b8);
579 cursor: pointer;
580 transition: all 0.15s;
581 }
582
583 .mxch-cg-chat-panel-close:hover {
584 background: #f1f5f9;
585 color: var(--mxch-text-primary, #1a1a2e);
586 }
587
588 .mxch-cg-chat-messages {
589 flex: 1;
590 overflow-y: auto;
591 display: flex;
592 flex-direction: column;
593 gap: 8px;
594 padding: 12px 16px;
595 min-height: 120px;
596 max-height: 260px;
597 }
598
599 .mxch-cg-chat-messages::-webkit-scrollbar {
600 width: 4px;
601 }
602
603 .mxch-cg-chat-messages::-webkit-scrollbar-thumb {
604 background: #cbd5e1;
605 border-radius: 2px;
606 }
607
608 .mxch-cg-chat-msg {
609 display: flex;
610 }
611
612 .mxch-cg-chat-user {
613 justify-content: flex-end;
614 }
615
616 .mxch-cg-chat-assistant {
617 justify-content: flex-start;
618 }
619
620 .mxch-cg-chat-bubble {
621 max-width: 85%;
622 padding: 8px 12px;
623 border-radius: 12px;
624 font-size: 13px;
625 line-height: 1.5;
626 word-break: break-word;
627 }
628
629 .mxch-cg-chat-user .mxch-cg-chat-bubble {
630 background: var(--mxch-primary, #7873f5);
631 color: #fff;
632 border-bottom-right-radius: 4px;
633 }
634
635 .mxch-cg-chat-assistant .mxch-cg-chat-bubble {
636 background: #f1f5f9;
637 color: var(--mxch-text-primary, #1a1a2e);
638 border-bottom-left-radius: 4px;
639 }
640
641 /* Loading dots */
642 .mxch-cg-chat-loading {
643 display: flex;
644 align-items: center;
645 gap: 4px;
646 padding: 12px 16px;
647 }
648
649 .mxch-cg-chat-loading span {
650 width: 6px;
651 height: 6px;
652 background: #94a3b8;
653 border-radius: 50%;
654 animation: mxch-bounce 1.4s infinite both;
655 }
656
657 .mxch-cg-chat-loading span:nth-child(2) {
658 animation-delay: 0.16s;
659 }
660
661 .mxch-cg-chat-loading span:nth-child(3) {
662 animation-delay: 0.32s;
663 }
664
665 @keyframes mxch-bounce {
666 0%, 80%, 100% { transform: scale(0); }
667 40% { transform: scale(1); }
668 }
669
670 /* Chat Input */
671 .mxch-cg-chat-input-wrap {
672 display: flex;
673 gap: 8px;
674 align-items: flex-end;
675 padding: 12px 16px;
676 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
677 flex-shrink: 0;
678 }
679
680 .mxch-cg-chat-input {
681 flex: 1;
682 padding: 8px 12px;
683 border: 1px solid var(--mxch-input-border, #d1d5db);
684 border-radius: 16px;
685 background: var(--mxch-input-bg, #fff);
686 color: var(--mxch-text-primary, #1a1a2e);
687 font-size: 13px;
688 font-family: inherit;
689 outline: none;
690 transition: border-color 0.2s;
691 resize: none;
692 overflow-y: auto;
693 max-height: 150px;
694 line-height: 1.4;
695 }
696
697 .mxch-cg-chat-input:focus {
698 border-color: var(--mxch-input-focus, #7873f5);
699 }
700
701 .mxch-cg-chat-send {
702 display: flex;
703 align-items: center;
704 justify-content: center;
705 width: 34px;
706 height: 34px;
707 border: none;
708 border-radius: 50%;
709 background: var(--mxch-primary, #7873f5);
710 color: #fff;
711 cursor: pointer;
712 transition: all 0.2s;
713 flex-shrink: 0;
714 }
715
716 .mxch-cg-chat-send:hover:not(:disabled) {
717 background: var(--mxch-primary-hover, #6863e5);
718 }
719
720 .mxch-cg-chat-send:disabled {
721 opacity: 0.4;
722 cursor: not-allowed;
723 }
724
725 /* ─── Notices ────────────────────────────────────────────────────── */
726
727 .mxch-cg-notice {
728 padding: 10px 14px;
729 border-radius: 6px;
730 font-size: 13px;
731 margin-bottom: 12px;
732 }
733
734 .mxch-cg-notice-error {
735 background: #fef2f2;
736 color: #991b1b;
737 border: 1px solid #fecaca;
738 }
739
740 .mxch-cg-notice-success {
741 background: #f0fdf4;
742 color: #166534;
743 border: 1px solid #bbf7d0;
744 }
745
746 /* ─── Save Indicators ────────────────────────────────────────────── */
747
748 .mxch-field-label.mxch-saving::after,
749 .mxch-toggle-label.mxch-saving::after {
750 content: '';
751 display: inline-block;
752 width: 12px;
753 height: 12px;
754 margin-left: 6px;
755 border: 2px solid #e5e7eb;
756 border-top-color: var(--mxch-success, #10b981);
757 border-radius: 50%;
758 animation: mxch-spin 0.6s linear infinite;
759 vertical-align: middle;
760 }
761
762 .mxch-field-label.mxch-saved::after,
763 .mxch-toggle-label.mxch-saved::after {
764 content: ' \2713';
765 color: var(--mxch-success, #10b981);
766 font-weight: bold;
767 }
768
769 /* ─── Responsive ─────────────────────────────────────────────────── */
770
771 @media (max-width: 782px) {
772 .mxch-cg-toolbar {
773 flex-direction: column;
774 align-items: flex-start;
775 }
776
777 .mxch-cg-toolbar-right {
778 width: 100%;
779 flex-wrap: wrap;
780 }
781
782 .mxch-cg-status-menu {
783 left: auto;
784 right: 0;
785 }
786
787 .mxch-cg-options {
788 flex-direction: column;
789 }
790
791 .mxch-cg-chat-panel {
792 left: 10px;
793 right: 10px;
794 width: auto;
795 bottom: 10px;
796 max-height: calc(100vh - 60px);
797 }
798
799 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
800 width: auto;
801 flex-direction: column;
802 max-height: calc(100vh - 60px);
803 overflow: hidden;
804 }
805
806 .mxch-cg-images-col {
807 width: 100%;
808 max-height: 200px;
809 border-right: none;
810 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
811 }
812
813 .mxch-cg-images-grid {
814 grid-template-columns: repeat(2, 1fr);
815 gap: 8px;
816 padding: 8px;
817 }
818
819 .mxch-cg-left-tabs {
820 flex-shrink: 0;
821 }
822
823 .mxch-cg-chat-messages {
824 max-height: 180px;
825 }
826
827 .mxch-cg-inline-form {
828 padding: 20px 12px;
829 min-height: auto;
830 }
831
832 .mxch-cg-inline-form-inner {
833 padding: 20px 16px 18px;
834 }
835 }
836
837 /* ─── Pro Feature Lock Styles ──────────────────────────────────── */
838
839 .mxch-cg-pro-badge {
840 display: inline-flex;
841 align-items: center;
842 padding: 2px 8px;
843 margin-left: 8px;
844 border-radius: 20px;
845 font-size: 10px;
846 font-weight: 700;
847 text-transform: uppercase;
848 letter-spacing: 0.5px;
849 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15), rgba(168, 139, 250, 0.15));
850 color: var(--mxch-primary, #7873f5);
851 line-height: 1;
852 vertical-align: middle;
853 }
854
855 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle-switch {
856 opacity: 0.4;
857 cursor: not-allowed;
858 }
859
860 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-toggle {
861 cursor: default;
862 }
863
864 .mxch-cg-pro-field.mxch-cg-pro-locked .mxch-field-description {
865 opacity: 0.6;
866 }
867
868 .mxch-cg-pro-upgrade-link {
869 display: inline-flex;
870 align-items: center;
871 gap: 4px;
872 font-size: 12px;
873 color: var(--mxch-primary, #7873f5);
874 text-decoration: none;
875 margin-top: 4px;
876 transition: color 0.2s;
877 }
878
879 .mxch-cg-pro-upgrade-link:hover {
880 color: var(--mxch-primary-hover, #6863e5);
881 text-decoration: underline;
882 }
883
884 /* ─── Image Management Panel (Two-Column Chat) ────────────────── */
885
886 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
887 width: 760px;
888 max-height: 480px;
889 flex-direction: row;
890 }
891
892 .mxch-cg-images-col {
893 width: 280px;
894 flex-shrink: 0;
895 display: flex;
896 flex-direction: column;
897 border-right: 1px solid var(--mxch-card-border, #e2e4e9);
898 position: relative;
899 overflow: hidden;
900 }
901
902 /* ── Left Column Tabs ──────────────────────────────────── */
903
904 .mxch-cg-left-tabs {
905 display: flex;
906 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
907 flex-shrink: 0;
908 }
909
910 .mxch-cg-left-tab {
911 flex: 1;
912 display: flex;
913 align-items: center;
914 justify-content: center;
915 gap: 4px;
916 padding: 10px 8px;
917 border: none;
918 background: transparent;
919 color: var(--mxch-text-muted, #94a3b8);
920 font-size: 12px;
921 font-weight: 500;
922 cursor: pointer;
923 transition: all 0.15s;
924 position: relative;
925 }
926
927 .mxch-cg-left-tab:hover {
928 color: var(--mxch-text-secondary, #64748b);
929 background: rgba(0, 0, 0, 0.03);
930 }
931
932 .mxch-cg-left-tab.active {
933 color: var(--mxch-primary, #7873f5);
934 font-weight: 600;
935 }
936
937 .mxch-cg-left-tab.active::after {
938 content: '';
939 position: absolute;
940 bottom: -1px;
941 left: 12px;
942 right: 12px;
943 height: 2px;
944 background: var(--mxch-primary, #7873f5);
945 border-radius: 1px;
946 }
947
948 .mxch-cg-left-tab .mxch-cg-pro-badge {
949 margin-left: 2px;
950 font-size: 8px;
951 padding: 1px 4px;
952 }
953
954 .mxch-cg-left-tab.mxch-cg-tab-flash {
955 animation: mxch-tab-flash 0.6s ease 3;
956 }
957
958 @keyframes mxch-tab-flash {
959 0%, 100% { color: var(--mxch-primary, #7873f5); }
960 50% { color: #10b981; }
961 }
962
963 .mxch-cg-left-panel {
964 display: none;
965 flex: 1;
966 overflow-y: auto;
967 }
968
969 .mxch-cg-left-panel.active {
970 display: flex;
971 flex-direction: column;
972 }
973
974 /* ── Meta/SEO Form ─────────────────────────────────────── */
975
976 .mxch-cg-meta-form {
977 display: flex;
978 flex-direction: column;
979 gap: 10px;
980 padding: 12px;
981 overflow-y: auto;
982 flex: 1;
983 }
984
985 .mxch-cg-meta-field {
986 display: flex;
987 flex-direction: column;
988 gap: 3px;
989 }
990
991 .mxch-cg-meta-field label {
992 font-size: 11px;
993 font-weight: 600;
994 color: var(--mxch-text-secondary, #64748b);
995 text-transform: uppercase;
996 letter-spacing: 0.3px;
997 }
998
999 .mxch-cg-meta-input {
1000 width: 100%;
1001 padding: 6px 8px;
1002 border: 1px solid var(--mxch-input-border, #d1d5db);
1003 border-radius: 5px;
1004 background: var(--mxch-input-bg, #fff);
1005 color: var(--mxch-text-primary, #1a1a2e);
1006 font-size: 12px;
1007 line-height: 1.4;
1008 transition: border-color 0.2s;
1009 font-family: inherit;
1010 resize: vertical;
1011 box-sizing: border-box;
1012 }
1013
1014 .mxch-cg-meta-input:focus {
1015 outline: none;
1016 border-color: var(--mxch-input-focus, #7873f5);
1017 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
1018 }
1019
1020 .mxch-cg-meta-input:disabled,
1021 .mxch-cg-meta-input[readonly] {
1022 opacity: 0.5;
1023 cursor: not-allowed;
1024 background: #f8fafc;
1025 }
1026
1027 textarea.mxch-cg-meta-input {
1028 min-height: 48px;
1029 }
1030
1031 .mxch-cg-meta-charcount {
1032 font-size: 10px;
1033 color: var(--mxch-text-muted, #94a3b8);
1034 text-align: right;
1035 }
1036
1037 .mxch-cg-meta-charcount-over {
1038 color: #ef4444;
1039 font-weight: 600;
1040 }
1041
1042 .mxch-cg-meta-lock-overlay {
1043 position: absolute;
1044 inset: 0;
1045 display: flex;
1046 flex-direction: column;
1047 align-items: center;
1048 justify-content: center;
1049 gap: 6px;
1050 background: rgba(0, 0, 0, 0.04);
1051 z-index: 2;
1052 pointer-events: none;
1053 }
1054
1055 .mxch-cg-meta-lock-overlay svg {
1056 opacity: 0.3;
1057 }
1058
1059 .mxch-cg-meta-lock-overlay span {
1060 font-size: 11px;
1061 color: var(--mxch-primary, #7873f5);
1062 font-weight: 500;
1063 }
1064
1065 .mxch-cg-meta-field label.mxch-saving::after {
1066 content: '';
1067 display: inline-block;
1068 width: 10px;
1069 height: 10px;
1070 margin-left: 4px;
1071 border: 2px solid #e5e7eb;
1072 border-top-color: var(--mxch-success, #10b981);
1073 border-radius: 50%;
1074 animation: mxch-spin 0.6s linear infinite;
1075 vertical-align: middle;
1076 }
1077
1078 .mxch-cg-meta-field label.mxch-saved::after {
1079 content: ' \2713';
1080 color: var(--mxch-success, #10b981);
1081 font-weight: bold;
1082 }
1083
1084 /* Legacy header (kept for backward compat if needed) */
1085 .mxch-cg-images-header {
1086 display: flex;
1087 align-items: center;
1088 justify-content: space-between;
1089 padding: 12px 14px;
1090 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1091 flex-shrink: 0;
1092 }
1093
1094 .mxch-cg-images-title {
1095 font-size: 13px;
1096 font-weight: 600;
1097 color: var(--mxch-text-primary, #1a1a2e);
1098 display: flex;
1099 align-items: center;
1100 }
1101
1102 .mxch-cg-images-grid {
1103 flex: 1;
1104 display: grid;
1105 grid-template-columns: 1fr 1fr;
1106 gap: 8px;
1107 padding: 12px;
1108 overflow-y: auto;
1109 position: relative;
1110 }
1111
1112 .mxch-cg-image-thumb {
1113 aspect-ratio: 4 / 3;
1114 border-radius: 8px;
1115 position: relative;
1116 background: var(--mxch-input-bg, #fff);
1117 border: 1px solid var(--mxch-card-border, #e2e4e9);
1118 }
1119
1120 .mxch-cg-image-thumb img {
1121 width: 100%;
1122 height: 100%;
1123 object-fit: cover;
1124 }
1125
1126 .mxch-cg-image-placeholder {
1127 display: flex;
1128 align-items: center;
1129 justify-content: center;
1130 background: #f1f5f9;
1131 color: #cbd5e1;
1132 }
1133
1134 /* Empty state (before generation) */
1135 .mxch-cg-images-empty {
1136 grid-column: 1 / -1;
1137 display: flex;
1138 flex-direction: column;
1139 align-items: center;
1140 justify-content: center;
1141 gap: 8px;
1142 padding: 24px 12px;
1143 color: var(--mxch-text-muted, #94a3b8);
1144 text-align: center;
1145 }
1146
1147 .mxch-cg-images-empty svg {
1148 opacity: 0.5;
1149 }
1150
1151 .mxch-cg-images-empty span {
1152 font-size: 11px;
1153 line-height: 1.4;
1154 }
1155
1156 /* Hover actions on images */
1157 .mxch-cg-image-actions {
1158 position: absolute;
1159 bottom: 0;
1160 left: 0;
1161 right: 0;
1162 display: flex;
1163 gap: 4px;
1164 padding: 6px;
1165 background: linear-gradient(transparent, rgba(0, 0, 0, 0.6));
1166 opacity: 0;
1167 transition: opacity 0.2s;
1168 }
1169
1170 .mxch-cg-image-thumb:hover .mxch-cg-image-actions {
1171 opacity: 1;
1172 }
1173
1174 .mxch-cg-image-action-btn {
1175 flex: 1;
1176 padding: 5px 4px;
1177 border: none;
1178 border-radius: 4px;
1179 background: rgba(255, 255, 255, 0.9);
1180 color: #1a1a2e;
1181 font-size: 10px;
1182 font-weight: 500;
1183 cursor: pointer;
1184 display: flex;
1185 align-items: center;
1186 justify-content: center;
1187 gap: 3px;
1188 transition: background 0.15s;
1189 line-height: 1;
1190 }
1191
1192 .mxch-cg-image-action-btn:hover {
1193 background: #fff;
1194 }
1195
1196 /* Locked action buttons */
1197 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn {
1198 cursor: not-allowed;
1199 opacity: 0.7;
1200 }
1201
1202 .mxch-cg-image-actions-locked .mxch-cg-image-action-btn:hover {
1203 background: rgba(255, 255, 255, 0.9);
1204 }
1205
1206 /* Per-image PRO lock badge (top-right corner) */
1207 .mxch-cg-image-lock-badge {
1208 position: absolute;
1209 top: 4px;
1210 right: 4px;
1211 display: flex;
1212 align-items: center;
1213 gap: 3px;
1214 padding: 2px 6px;
1215 background: rgba(120, 115, 245, 0.85);
1216 color: #fff;
1217 border-radius: 4px;
1218 font-size: 8px;
1219 font-weight: 700;
1220 letter-spacing: 0.5px;
1221 text-transform: uppercase;
1222 line-height: 1;
1223 z-index: 2;
1224 backdrop-filter: blur(4px);
1225 }
1226
1227 .mxch-cg-image-lock-badge svg {
1228 flex-shrink: 0;
1229 }
1230
1231 /* Image loading state (used by add-on during upload/regenerate) */
1232 .mxch-cg-image-thumb.mxch-cg-image-loading {
1233 position: relative;
1234 pointer-events: none;
1235 }
1236 .mxch-cg-image-thumb.mxch-cg-image-loading::after {
1237 content: '';
1238 position: absolute;
1239 inset: 0;
1240 background: rgba(0, 0, 0, 0.5);
1241 border-radius: 6px;
1242 z-index: 10;
1243 }
1244 .mxch-cg-image-thumb.mxch-cg-image-loading::before {
1245 content: '';
1246 position: absolute;
1247 top: 50%;
1248 left: 50%;
1249 width: 24px;
1250 height: 24px;
1251 margin: -12px 0 0 -12px;
1252 border: 3px solid rgba(255, 255, 255, 0.3);
1253 border-top-color: #fff;
1254 border-radius: 50%;
1255 z-index: 11;
1256 animation: mxch-spin 0.8s linear infinite;
1257 }
1258 @keyframes mxch-spin {
1259 to { transform: rotate(360deg); }
1260 }
1261
1262 /* Image selected state (regen mode) */
1263 .mxch-cg-image-thumb.mxch-cg-image-selected {
1264 outline: 2px solid #7873f5;
1265 outline-offset: -2px;
1266 border-radius: 6px;
1267 box-shadow: 0 0 0 4px rgba(120, 115, 245, 0.25);
1268 }
1269
1270 /* Regen bar — sits above chat input when an image is selected for regeneration */
1271 .mxch-cg-regen-bar {
1272 display: flex;
1273 align-items: center;
1274 gap: 10px;
1275 padding: 8px 12px;
1276 background: rgba(120, 115, 245, 0.1);
1277 border-top: 1px solid rgba(120, 115, 245, 0.3);
1278 animation: mxch-regen-bar-in 0.2s ease;
1279 }
1280 @keyframes mxch-regen-bar-in {
1281 from { opacity: 0; transform: translateY(6px); }
1282 to { opacity: 1; transform: translateY(0); }
1283 }
1284 .mxch-cg-regen-bar-thumb {
1285 width: 36px;
1286 height: 36px;
1287 border-radius: 4px;
1288 object-fit: cover;
1289 border: 1px solid rgba(120, 115, 245, 0.4);
1290 flex-shrink: 0;
1291 }
1292 .mxch-cg-regen-bar-text {
1293 flex: 1;
1294 font-size: 12px;
1295 color: #a0a0b0;
1296 line-height: 1.3;
1297 }
1298 .mxch-cg-regen-bar-cancel {
1299 background: none;
1300 border: none;
1301 color: #a0a0b0;
1302 cursor: pointer;
1303 padding: 4px;
1304 border-radius: 4px;
1305 display: flex;
1306 align-items: center;
1307 flex-shrink: 0;
1308 }
1309 .mxch-cg-regen-bar-cancel:hover {
1310 color: #fff;
1311 background: rgba(255, 255, 255, 0.1);
1312 }
1313
1314 /* Chat column in two-column layout */
1315 .mxch-cg-chat-col {
1316 flex: 1;
1317 display: flex;
1318 flex-direction: column;
1319 min-width: 0;
1320 }
1321
1322 /* ─── Mobile overrides for two-column chat (must come after desktop rules) ── */
1323 @media (max-width: 782px) {
1324 .mxch-cg-chat-panel.mxch-cg-chat-panel--with-images {
1325 width: auto;
1326 flex-direction: column;
1327 max-height: calc(100vh - 60px);
1328 overflow: hidden;
1329 }
1330
1331 .mxch-cg-images-col {
1332 width: 100%;
1333 max-height: 200px;
1334 border-right: none;
1335 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1336 }
1337
1338 .mxch-cg-chat-col {
1339 min-height: 0;
1340 }
1341
1342 .mxch-cg-chat-messages {
1343 max-height: 180px;
1344 }
1345 }
1346
1347 /* ─── History Tab ────────────────────────────────────────────────── */
1348
1349 .mxch-cg-history-loading {
1350 display: flex;
1351 flex-direction: column;
1352 align-items: center;
1353 justify-content: center;
1354 padding: 60px 20px;
1355 color: var(--mxch-text-muted, #94a3b8);
1356 }
1357
1358 .mxch-cg-history-spinner {
1359 width: 28px;
1360 height: 28px;
1361 border: 3px solid #e2e8f0;
1362 border-top-color: var(--mxch-primary, #7873f5);
1363 border-radius: 50%;
1364 animation: mxch-spin 0.6s linear infinite;
1365 margin-bottom: 12px;
1366 }
1367
1368 .mxch-cg-history-loading p {
1369 font-size: 14px;
1370 margin: 0;
1371 }
1372
1373 .mxch-cg-history-empty {
1374 display: flex;
1375 flex-direction: column;
1376 align-items: center;
1377 justify-content: center;
1378 padding: 60px 20px;
1379 color: var(--mxch-text-muted, #94a3b8);
1380 text-align: center;
1381 }
1382
1383 .mxch-cg-history-empty svg {
1384 margin-bottom: 16px;
1385 opacity: 0.4;
1386 }
1387
1388 .mxch-cg-history-empty p {
1389 font-size: 14px;
1390 margin: 0;
1391 max-width: 360px;
1392 }
1393
1394 .mxch-cg-history-list {
1395 display: flex;
1396 flex-direction: column;
1397 }
1398
1399 .mxch-cg-history-item {
1400 display: flex;
1401 align-items: center;
1402 gap: 14px;
1403 padding: 12px 0;
1404 border-bottom: 1px solid var(--mxch-card-border, #e2e4e9);
1405 }
1406
1407 .mxch-cg-history-item:last-child {
1408 border-bottom: none;
1409 }
1410
1411 .mxch-cg-history-thumb {
1412 width: 48px;
1413 height: 48px;
1414 border-radius: 8px;
1415 overflow: hidden;
1416 flex-shrink: 0;
1417 background: #f1f5f9;
1418 border: 1px solid var(--mxch-card-border, #e2e4e9);
1419 }
1420
1421 .mxch-cg-history-thumb-img {
1422 width: 100%;
1423 height: 100%;
1424 object-fit: cover;
1425 display: block;
1426 }
1427
1428 .mxch-cg-history-thumb-placeholder {
1429 width: 100%;
1430 height: 100%;
1431 display: flex;
1432 align-items: center;
1433 justify-content: center;
1434 color: #cbd5e1;
1435 }
1436
1437 .mxch-cg-history-info {
1438 flex: 1;
1439 min-width: 0;
1440 }
1441
1442 .mxch-cg-history-title {
1443 font-size: 14px;
1444 font-weight: 600;
1445 color: var(--mxch-text-primary, #1a1a2e);
1446 white-space: nowrap;
1447 overflow: hidden;
1448 text-overflow: ellipsis;
1449 margin-bottom: 4px;
1450 }
1451
1452 .mxch-cg-history-meta {
1453 display: flex;
1454 align-items: center;
1455 gap: 8px;
1456 flex-wrap: wrap;
1457 }
1458
1459 .mxch-cg-history-meta .mxch-cg-status-badge {
1460 font-size: 10px;
1461 padding: 1px 6px;
1462 cursor: default;
1463 pointer-events: none;
1464 }
1465
1466 .mxch-cg-history-type,
1467 .mxch-cg-history-date {
1468 font-size: 12px;
1469 color: var(--mxch-text-muted, #94a3b8);
1470 }
1471
1472 .mxch-cg-history-actions {
1473 display: flex;
1474 gap: 4px;
1475 flex-shrink: 0;
1476 }
1477
1478 .mxch-cg-history-action-btn {
1479 display: inline-flex;
1480 align-items: center;
1481 justify-content: center;
1482 width: 32px;
1483 height: 32px;
1484 border: 1px solid var(--mxch-input-border, #d1d5db);
1485 border-radius: 6px;
1486 background: transparent;
1487 color: var(--mxch-text-secondary, #64748b);
1488 cursor: pointer;
1489 transition: all 0.2s;
1490 text-decoration: none;
1491 }
1492
1493 .mxch-cg-history-action-btn svg {
1494 width: 15px;
1495 height: 15px;
1496 }
1497
1498 /* View — blue hover */
1499 .mxch-cg-history-view-btn:hover {
1500 border-color: #3b82f6;
1501 color: #3b82f6;
1502 background: rgba(59, 130, 246, 0.1);
1503 }
1504
1505 /* Edit — purple hover */
1506 .mxch-cg-history-edit-btn:hover {
1507 border-color: var(--mxch-primary, #7873f5);
1508 color: var(--mxch-primary, #7873f5);
1509 background: rgba(120, 115, 245, 0.1);
1510 }
1511
1512 /* Delete — red hover */
1513 .mxch-cg-history-delete-btn:hover {
1514 border-color: #ef4444;
1515 color: #ef4444;
1516 background: rgba(239, 68, 68, 0.1);
1517 }
1518
1519 .mxch-cg-history-action-btn:disabled {
1520 opacity: 0.5;
1521 cursor: wait;
1522 }
1523
1524 /* History Pagination */
1525
1526 .mxch-cg-history-pagination {
1527 display: flex;
1528 align-items: center;
1529 justify-content: center;
1530 gap: 4px;
1531 padding-top: 20px;
1532 margin-top: 8px;
1533 border-top: 1px solid var(--mxch-card-border, #e2e4e9);
1534 }
1535
1536 .mxch-cg-history-page-btn {
1537 display: inline-flex;
1538 align-items: center;
1539 justify-content: center;
1540 min-width: 32px;
1541 height: 32px;
1542 padding: 0 8px;
1543 border: 1px solid var(--mxch-input-border, #d1d5db);
1544 border-radius: 6px;
1545 background: transparent;
1546 color: var(--mxch-text-secondary, #64748b);
1547 font-size: 13px;
1548 cursor: pointer;
1549 transition: all 0.15s;
1550 }
1551
1552 .mxch-cg-history-page-btn:hover {
1553 border-color: var(--mxch-primary, #7873f5);
1554 color: var(--mxch-primary, #7873f5);
1555 }
1556
1557 .mxch-cg-history-page-current {
1558 background: var(--mxch-primary, #7873f5);
1559 color: #fff;
1560 border-color: var(--mxch-primary, #7873f5);
1561 cursor: default;
1562 font-weight: 600;
1563 }
1564
1565 .mxch-cg-history-page-current:hover {
1566 background: var(--mxch-primary, #7873f5);
1567 color: #fff;
1568 border-color: var(--mxch-primary, #7873f5);
1569 }
1570
1571 .mxch-cg-history-page-prev,
1572 .mxch-cg-history-page-next {
1573 font-size: 12px;
1574 font-weight: 500;
1575 }
1576
1577 .mxch-cg-history-page-ellipsis {
1578 display: inline-flex;
1579 align-items: center;
1580 justify-content: center;
1581 min-width: 32px;
1582 height: 32px;
1583 color: var(--mxch-text-muted, #94a3b8);
1584 font-size: 13px;
1585 }
1586
1587 @media (max-width: 782px) {
1588 .mxch-cg-history-item {
1589 flex-wrap: wrap;
1590 }
1591
1592 .mxch-cg-history-info {
1593 flex: 1 1 calc(100% - 62px);
1594 }
1595
1596 .mxch-cg-history-actions {
1597 margin-left: auto;
1598 }
1599 }
1600
1601 /* ─── Loading Indicator (preview area) ──────────────────────────── */
1602
1603 .mxch-cg-loading-indicator {
1604 display: flex;
1605 flex-direction: column;
1606 align-items: center;
1607 justify-content: center;
1608 min-height: calc(100vh - 220px);
1609 padding: 40px 20px;
1610 text-align: center;
1611 gap: 24px;
1612 }
1613
1614 /* Spinner: three concentric rings + center icon */
1615 .mxch-cg-loading-spinner {
1616 position: relative;
1617 width: 80px;
1618 height: 80px;
1619 }
1620
1621 .mxch-cg-loading-spinner-ring {
1622 position: absolute;
1623 inset: 0;
1624 border-radius: 50%;
1625 border: 3px solid transparent;
1626 }
1627
1628 .mxch-cg-loading-spinner-ring:nth-child(1) {
1629 border-top-color: var(--mxch-primary, #7873f5);
1630 animation: mxch-spin 1.2s linear infinite;
1631 }
1632
1633 .mxch-cg-loading-spinner-ring:nth-child(2) {
1634 inset: 8px;
1635 border-right-color: rgba(120, 115, 245, 0.5);
1636 animation: mxch-spin 1.8s linear infinite reverse;
1637 }
1638
1639 .mxch-cg-loading-spinner-ring:nth-child(3) {
1640 inset: 16px;
1641 border-bottom-color: rgba(120, 115, 245, 0.3);
1642 animation: mxch-spin 2.4s linear infinite;
1643 }
1644
1645 .mxch-cg-loading-spinner-icon {
1646 position: absolute;
1647 top: 50%;
1648 left: 50%;
1649 transform: translate(-50%, -50%);
1650 color: var(--mxch-primary, #7873f5);
1651 opacity: 0.8;
1652 }
1653
1654 /* Phrase text with fade transition */
1655 .mxch-cg-loading-phrase {
1656 font-size: 17px;
1657 font-weight: 500;
1658 color: var(--mxch-text-secondary, #64748b);
1659 margin: 0;
1660 min-height: 28px;
1661 max-width: 400px;
1662 transition: opacity 0.4s ease, transform 0.4s ease;
1663 opacity: 1;
1664 transform: translateY(0);
1665 }
1666
1667 .mxch-cg-loading-phrase.mxch-cg-phrase-exit {
1668 opacity: 0;
1669 transform: translateY(-8px);
1670 }
1671
1672 .mxch-cg-loading-phrase.mxch-cg-phrase-enter {
1673 opacity: 0;
1674 transform: translateY(8px);
1675 }
1676
1677 /* Mini progress bar beneath the phrase */
1678 .mxch-cg-loading-progress-mini {
1679 width: 100%;
1680 max-width: 280px;
1681 }
1682
1683 .mxch-cg-loading-progress-mini-bar {
1684 width: 100%;
1685 height: 4px;
1686 background: var(--mxch-card-border, #e2e4e9);
1687 border-radius: 2px;
1688 overflow: hidden;
1689 margin-bottom: 6px;
1690 }
1691
1692 .mxch-cg-loading-progress-mini-fill {
1693 height: 100%;
1694 background: var(--mxch-primary, #7873f5);
1695 border-radius: 2px;
1696 transition: width 0.6s ease;
1697 }
1698
1699 .mxch-cg-loading-progress-mini-text {
1700 font-size: 12px;
1701 color: var(--mxch-text-muted, #94a3b8);
1702 margin: 0;
1703 }
1704
1705 /* Error state */
1706 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring {
1707 animation-play-state: paused;
1708 }
1709
1710 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(1) {
1711 border-top-color: #ef4444;
1712 }
1713
1714 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(2) {
1715 border-right-color: rgba(239, 68, 68, 0.5);
1716 }
1717
1718 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-ring:nth-child(3) {
1719 border-bottom-color: rgba(239, 68, 68, 0.3);
1720 }
1721
1722 .mxch-cg-loading-indicator.mxch-cg-loading-error .mxch-cg-loading-spinner-icon {
1723 color: #ef4444;
1724 }
1725
1726 .mxch-cg-loading-error-actions {
1727 display: flex;
1728 gap: 10px;
1729 margin-top: 4px;
1730 }
1731
1732 .mxch-cg-loading-error-actions .mxch-cg-generate-btn {
1733 font-size: 13px;
1734 padding: 8px 16px;
1735 }
1736
1737 .mxch-cg-loading-error-actions .mxch-cg-action-btn {
1738 font-size: 13px;
1739 padding: 8px 16px;
1740 background: transparent;
1741 border: 1px solid var(--mxch-card-border, #e2e4e9);
1742 border-radius: 6px;
1743 color: var(--mxch-text-secondary, #64748b);
1744 cursor: pointer;
1745 }
1746
1747 .mxch-cg-loading-error-actions .mxch-cg-action-btn:hover {
1748 background: var(--mxch-card-bg, #f8f9fa);
1749 }
1750
1751 /* Success state */
1752 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(1) {
1753 border-top-color: #10b981;
1754 }
1755
1756 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(2) {
1757 border-right-color: rgba(16, 185, 129, 0.5);
1758 }
1759
1760 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-ring:nth-child(3) {
1761 border-bottom-color: rgba(16, 185, 129, 0.3);
1762 }
1763
1764 .mxch-cg-loading-indicator.mxch-cg-loading-success .mxch-cg-loading-spinner-icon {
1765 color: #10b981;
1766 }
1767
1768 /* Responsive */
1769 @media (max-width: 782px) {
1770 .mxch-cg-loading-phrase {
1771 font-size: 15px;
1772 }
1773
1774 .mxch-cg-loading-spinner {
1775 width: 64px;
1776 height: 64px;
1777 }
1778 }
1779