PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.5
MxChat – AI Chatbot & Content Generation for WordPress v3.2.5
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-sidebar.css

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

2,558 lines 60.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ==========================================================================
2 MxChat Admin Sidebar Navigation - v2.0
3 Clean, modern CSS for the redesigned settings page
4 ========================================================================== */
5
6 /* ==========================================================================
7 CSS Variables
8 ========================================================================== */
9 :root {
10 /* Brand Colors */
11 --mxch-primary: #7873f5;
12 --mxch-primary-hover: #6863e5;
13 --mxch-primary-light: rgba(120, 115, 245, 0.1);
14 --mxch-primary-lighter: rgba(120, 115, 245, 0.05);
15
16 /* Sidebar */
17 --mxch-sidebar-width: 260px;
18 --mxch-sidebar-bg: #212121;
19 --mxch-sidebar-text: #a0a0b0;
20 --mxch-sidebar-text-hover: #ffffff;
21 --mxch-sidebar-active-bg: rgba(120, 115, 245, 0.15);
22 --mxch-sidebar-border: rgba(255, 255, 255, 0.08);
23
24 /* Content Area */
25 --mxch-content-bg: #f0f2f5;
26 --mxch-card-bg: #ffffff;
27 --mxch-card-border: #e2e4e9;
28 --mxch-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
29 --mxch-card-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.1);
30
31 /* Text */
32 --mxch-text-primary: #1a1a2e;
33 --mxch-text-secondary: #64748b;
34 --mxch-text-muted: #94a3b8;
35
36 /* Form Elements */
37 --mxch-input-border: #d1d5db;
38 --mxch-input-focus: #7873f5;
39 --mxch-input-bg: #ffffff;
40
41 /* Status Colors */
42 --mxch-success: #10b981;
43 --mxch-warning: #f59e0b;
44 --mxch-error: #ef4444;
45 --mxch-info: #3b82f6;
46
47 /* Spacing */
48 --mxch-spacing-xs: 4px;
49 --mxch-spacing-sm: 8px;
50 --mxch-spacing-md: 16px;
51 --mxch-spacing-lg: 24px;
52 --mxch-spacing-xl: 32px;
53
54 /* Border Radius */
55 --mxch-radius-sm: 4px;
56 --mxch-radius-md: 8px;
57 --mxch-radius-lg: 12px;
58
59 /* Transitions */
60 --mxch-transition-fast: 0.15s ease;
61 --mxch-transition: 0.25s ease;
62 }
63
64 /* ==========================================================================
65 Main Layout Container
66 ========================================================================== */
67 .mxch-admin-wrapper {
68 display: flex;
69 height: calc(100vh - 32px);
70 margin-left: -20px;
71 background: var(--mxch-content-bg);
72 overflow: hidden;
73 position: fixed;
74 top: 32px;
75 left: 160px; /* WordPress admin menu width */
76 right: 0;
77 bottom: 0;
78 }
79
80 /* Account for collapsed admin menu */
81 .folded .mxch-admin-wrapper {
82 left: 36px;
83 }
84
85 /* Account for admin bar on mobile */
86 @media screen and (max-width: 782px) {
87 .mxch-admin-wrapper {
88 top: 46px;
89 height: calc(100vh - 46px);
90 left: 0;
91 margin-left: 0;
92 }
93 }
94
95 /* ==========================================================================
96 Sidebar Navigation
97 ========================================================================== */
98 .mxch-sidebar {
99 width: var(--mxch-sidebar-width);
100 min-width: var(--mxch-sidebar-width);
101 background: var(--mxch-sidebar-bg);
102 display: flex;
103 flex-direction: column;
104 height: 100%;
105 overflow-y: auto;
106 overflow-x: hidden;
107 z-index: 100;
108 flex-shrink: 0;
109 position: relative;
110 }
111
112 /* Custom Scrollbar for Sidebar */
113 .mxch-sidebar::-webkit-scrollbar {
114 width: 6px;
115 }
116
117 .mxch-sidebar::-webkit-scrollbar-track {
118 background: transparent;
119 }
120
121 .mxch-sidebar::-webkit-scrollbar-thumb {
122 background: rgba(255, 255, 255, 0.15);
123 border-radius: 3px;
124 }
125
126 .mxch-sidebar::-webkit-scrollbar-thumb:hover {
127 background: rgba(255, 255, 255, 0.25);
128 }
129
130 /* Firefox scrollbar */
131 .mxch-sidebar {
132 scrollbar-width: thin;
133 scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
134 }
135
136 .mxch-sidebar::before {
137 content: '';
138 position: absolute;
139 top: 0;
140 left: 0;
141 width: 100%;
142 height: 100%;
143 background: radial-gradient(circle at center, rgba(250, 115, 230, 0.08) 0%, rgba(120, 115, 245, 0.08) 50%, rgba(58, 201, 209, 0.08) 100%);
144 z-index: 0;
145 pointer-events: none;
146 }
147
148 /* Sidebar Header / Logo */
149 .mxch-sidebar-header {
150 padding: var(--mxch-spacing-lg);
151 border-bottom: 4px solid transparent;
152 border-image: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
153 border-image-slice: 1;
154 position: relative;
155 z-index: 1;
156 }
157
158 .mxch-sidebar-logo {
159 display: flex;
160 align-items: center;
161 gap: var(--mxch-spacing-sm);
162 text-decoration: none;
163 }
164
165 .mxch-sidebar-logo-icon {
166 width: 32px;
167 height: 32px;
168 flex-shrink: 0;
169 }
170
171 .mxch-sidebar-logo-icon img {
172 width: 100%;
173 height: 100%;
174 object-fit: contain;
175 }
176
177 .mxch-sidebar-logo-text {
178 font-size: 20px;
179 font-weight: 700;
180 color: #ffffff;
181 letter-spacing: -0.5px;
182 }
183
184 .mxch-sidebar-version {
185 font-size: 11px;
186 color: var(--mxch-sidebar-text);
187 margin-left: auto;
188 padding: 2px 8px;
189 background: rgba(255, 255, 255, 0.05);
190 border-radius: 10px;
191 }
192
193 /* Sidebar Navigation */
194 .mxch-sidebar-nav {
195 flex: 1;
196 padding: var(--mxch-spacing-md) 0;
197 overflow-y: auto;
198 position: relative;
199 z-index: 1;
200 }
201
202 .mxch-nav-section {
203 margin-bottom: var(--mxch-spacing-xs);
204 }
205
206 .mxch-nav-section-title {
207 font-size: 11px;
208 font-weight: 600;
209 text-transform: uppercase;
210 letter-spacing: 0.5px;
211 color: var(--mxch-sidebar-text);
212 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg) var(--mxch-spacing-sm);
213 opacity: 0.7;
214 }
215
216 /* Nav Items */
217 .mxch-nav-item {
218 position: relative;
219 }
220
221 .mxch-nav-link {
222 display: flex;
223 align-items: center;
224 gap: var(--mxch-spacing-sm);
225 padding: 10px var(--mxch-spacing-lg);
226 color: var(--mxch-sidebar-text);
227 text-decoration: none;
228 font-size: 14px;
229 font-weight: 500;
230 transition: all var(--mxch-transition-fast);
231 cursor: pointer;
232 border: none;
233 background: none;
234 width: 100%;
235 text-align: left;
236 }
237
238 .mxch-nav-link:hover {
239 color: var(--mxch-sidebar-text-hover);
240 background: rgba(255, 255, 255, 0.05);
241 }
242
243 .mxch-nav-link.active {
244 color: var(--mxch-sidebar-text-hover);
245 background: var(--mxch-sidebar-active-bg);
246 border-right: 3px solid var(--mxch-primary);
247 }
248
249 .mxch-nav-link-icon {
250 width: 20px;
251 height: 20px;
252 display: flex;
253 align-items: center;
254 justify-content: center;
255 opacity: 0.8;
256 }
257
258 .mxch-nav-link-icon svg {
259 width: 18px;
260 height: 18px;
261 stroke-width: 1.5;
262 }
263
264 .mxch-nav-link.active .mxch-nav-link-icon {
265 opacity: 1;
266 color: var(--mxch-primary);
267 }
268
269 .mxch-nav-link-text {
270 flex: 1;
271 }
272
273 .mxch-nav-link-badge {
274 font-size: 10px;
275 padding: 2px 6px;
276 border-radius: 10px;
277 background: var(--mxch-primary);
278 color: white;
279 font-weight: 600;
280 }
281
282 .mxch-nav-link-badge.mxch-active-badge {
283 font-size: 9px;
284 padding: 2px 6px;
285 border-radius: 4px;
286 background: var(--mxch-success, #10b981);
287 color: white;
288 font-weight: 600;
289 text-transform: uppercase;
290 letter-spacing: 0.3px;
291 }
292
293 .mxch-nav-link-arrow {
294 width: 16px;
295 height: 16px;
296 transition: transform var(--mxch-transition-fast);
297 opacity: 0.5;
298 }
299
300 .mxch-nav-item.expanded .mxch-nav-link-arrow {
301 transform: rotate(90deg);
302 }
303
304 /* Sub Navigation */
305 .mxch-nav-sub {
306 display: none;
307 background: rgba(0, 0, 0, 0.15);
308 }
309
310 .mxch-nav-item.expanded .mxch-nav-sub {
311 display: block;
312 }
313
314 .mxch-nav-sub-link {
315 display: flex;
316 align-items: center;
317 gap: var(--mxch-spacing-sm);
318 padding: 8px var(--mxch-spacing-lg) 8px 52px;
319 color: var(--mxch-sidebar-text);
320 text-decoration: none;
321 font-size: 13px;
322 transition: all var(--mxch-transition-fast);
323 cursor: pointer;
324 border: none;
325 background: none;
326 width: 100%;
327 text-align: left;
328 }
329
330 .mxch-nav-sub-link:hover {
331 color: var(--mxch-sidebar-text-hover);
332 background: rgba(255, 255, 255, 0.03);
333 }
334
335 .mxch-nav-sub-link.active {
336 color: var(--mxch-primary);
337 background: rgba(120, 115, 245, 0.1);
338 }
339
340 .mxch-nav-sub-link::before {
341 content: '';
342 width: 6px;
343 height: 6px;
344 border-radius: 50%;
345 background: currentColor;
346 opacity: 0.4;
347 }
348
349 .mxch-nav-sub-link.active::before {
350 opacity: 1;
351 background: var(--mxch-primary);
352 }
353
354 /* Sidebar Footer - Pro Upgrade CTA */
355 .mxch-sidebar-footer {
356 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
357 position: relative;
358 z-index: 1;
359 }
360
361 .mxch-sidebar-upgrade {
362 display: flex;
363 align-items: center;
364 justify-content: center;
365 gap: 10px;
366 padding: 12px 16px;
367 background: transparent;
368 border: 1px solid rgba(120, 115, 245, 0.4);
369 border-radius: var(--mxch-radius-md);
370 color: var(--mxch-sidebar-text);
371 text-decoration: none;
372 font-size: 13px;
373 font-weight: 500;
374 transition: all 0.3s ease;
375 position: relative;
376 overflow: hidden;
377 }
378
379 .mxch-sidebar-upgrade::before {
380 content: '';
381 position: absolute;
382 inset: -1px;
383 border-radius: inherit;
384 padding: 1px;
385 background: linear-gradient(135deg, #7873f5 0%, #a78bfa 50%, #f472b6 100%);
386 -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
387 mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
388 -webkit-mask-composite: xor;
389 mask-composite: exclude;
390 opacity: 0;
391 transition: opacity 0.3s ease;
392 }
393
394 .mxch-sidebar-upgrade:hover::before {
395 opacity: 1;
396 }
397
398 .mxch-sidebar-upgrade:hover {
399 color: white;
400 background: linear-gradient(135deg, rgba(120, 115, 245, 0.15) 0%, rgba(167, 139, 250, 0.15) 50%, rgba(244, 114, 182, 0.1) 100%);
401 border-color: transparent;
402 box-shadow: 0 0 20px rgba(120, 115, 245, 0.3), 0 0 40px rgba(167, 139, 250, 0.15);
403 }
404
405 .mxch-sidebar-upgrade svg {
406 width: 16px;
407 height: 16px;
408 opacity: 0.7;
409 transition: opacity 0.3s ease;
410 }
411
412 .mxch-sidebar-upgrade:hover svg {
413 opacity: 1;
414 }
415
416 .mxch-sidebar-upgrade-text {
417 display: flex;
418 flex-direction: column;
419 align-items: flex-start;
420 line-height: 1.2;
421 }
422
423 .mxch-sidebar-upgrade-label {
424 font-size: 10px;
425 text-transform: uppercase;
426 letter-spacing: 0.5px;
427 opacity: 0.6;
428 }
429
430 .mxch-sidebar-upgrade-title {
431 font-weight: 600;
432 }
433
434 /* ==========================================================================
435 Main Content Area
436 ========================================================================== */
437 .mxch-content {
438 flex: 1;
439 padding: var(--mxch-spacing-xl);
440 overflow-y: auto;
441 overflow-x: hidden;
442 min-height: 0; /* Important for flex child scrolling */
443 }
444
445 .mxch-content::after {
446 content: '';
447 display: block;
448 height: 120px; /* Extra space at bottom for scrolling */
449 }
450
451 /* Content Header */
452 .mxch-content-header {
453 margin-bottom: var(--mxch-spacing-xl);
454 }
455
456 .mxch-content-title {
457 font-size: 24px;
458 font-weight: 700;
459 color: var(--mxch-text-primary);
460 margin: 0 0 var(--mxch-spacing-xs) 0;
461 }
462
463 .mxch-content-subtitle {
464 font-size: 14px;
465 color: var(--mxch-text-secondary);
466 margin: 0;
467 }
468
469 /* Pro Banner - Clean, Professional Design */
470 .mxch-pro-banner {
471 display: flex;
472 align-items: center;
473 justify-content: space-between;
474 gap: var(--mxch-spacing-lg);
475 padding: 16px 24px;
476 background: var(--mxch-card-bg);
477 border: 1px solid var(--mxch-card-border);
478 border-radius: var(--mxch-radius-lg);
479 margin-bottom: var(--mxch-spacing-xl);
480 position: relative;
481 overflow: hidden;
482 }
483
484 /* Subtle gradient accent on left edge */
485 .mxch-pro-banner::before {
486 content: '';
487 position: absolute;
488 left: 0;
489 top: 0;
490 bottom: 0;
491 width: 3px;
492 background: linear-gradient(180deg, #7873f5 0%, #a78bfa 50%, #f472b6 100%);
493 }
494
495 .mxch-pro-banner-content {
496 flex: 1;
497 min-width: 0;
498 }
499
500 .mxch-pro-banner-title {
501 font-size: 14px;
502 font-weight: 600;
503 color: var(--mxch-text-primary);
504 margin: 0 0 4px 0;
505 display: flex;
506 align-items: center;
507 gap: 8px;
508 }
509
510 .mxch-pro-banner-title::before {
511 content: '';
512 font-size: 12px;
513 }
514
515 .mxch-pro-banner-text {
516 font-size: 13px;
517 color: var(--mxch-text-secondary);
518 margin: 0;
519 line-height: 1.5;
520 }
521
522 .mxch-pro-banner-btn {
523 display: inline-flex;
524 align-items: center;
525 gap: 6px;
526 padding: 10px 20px;
527 background: transparent;
528 color: var(--mxch-primary);
529 border: 1px solid var(--mxch-primary);
530 border-radius: var(--mxch-radius-md);
531 text-decoration: none;
532 font-weight: 600;
533 font-size: 13px;
534 transition: all 0.25s ease;
535 white-space: nowrap;
536 position: relative;
537 overflow: hidden;
538 }
539
540 .mxch-pro-banner-btn::before {
541 content: '';
542 position: absolute;
543 inset: 0;
544 background: linear-gradient(135deg, #7873f5 0%, #a78bfa 50%, #f472b6 100%);
545 opacity: 0;
546 transition: opacity 0.25s ease;
547 }
548
549 .mxch-pro-banner-btn span {
550 position: relative;
551 z-index: 1;
552 }
553
554 .mxch-pro-banner-btn:hover {
555 color: white;
556 border-color: transparent;
557 box-shadow: 0 4px 15px rgba(120, 115, 245, 0.35);
558 transform: translateY(-1px);
559 }
560
561 .mxch-pro-banner-btn:hover::before {
562 opacity: 1;
563 }
564
565 /* Dismissible banner close button */
566 .mxch-pro-banner-close {
567 position: absolute;
568 top: 8px;
569 right: 8px;
570 width: 24px;
571 height: 24px;
572 display: flex;
573 align-items: center;
574 justify-content: center;
575 background: transparent;
576 border: none;
577 color: var(--mxch-text-muted);
578 cursor: pointer;
579 border-radius: 4px;
580 transition: all 0.2s ease;
581 opacity: 0;
582 }
583
584 .mxch-pro-banner:hover .mxch-pro-banner-close {
585 opacity: 1;
586 }
587
588 .mxch-pro-banner-close:hover {
589 background: rgba(0, 0, 0, 0.05);
590 color: var(--mxch-text-primary);
591 }
592
593 /* ==========================================================================
594 Settings Cards
595 ========================================================================== */
596 .mxch-card {
597 background: var(--mxch-card-bg);
598 border: 1px solid var(--mxch-card-border);
599 border-radius: var(--mxch-radius-lg);
600 box-shadow: var(--mxch-card-shadow);
601 margin-bottom: var(--mxch-spacing-lg);
602 overflow: hidden;
603 }
604
605 .mxch-card-header {
606 display: flex;
607 align-items: center;
608 justify-content: space-between;
609 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
610 border-bottom: 1px solid var(--mxch-card-border);
611 background: var(--mxch-primary-lighter);
612 }
613
614 .mxch-card-title {
615 font-size: 15px;
616 font-weight: 600;
617 color: var(--mxch-text-primary);
618 margin: 0;
619 display: flex;
620 align-items: center;
621 gap: var(--mxch-spacing-sm);
622 }
623
624 .mxch-card-title-icon {
625 width: 20px;
626 height: 20px;
627 color: var(--mxch-primary);
628 }
629
630 .mxch-card-body {
631 padding: var(--mxch-spacing-lg);
632 }
633
634 .mxch-card-footer {
635 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
636 border-top: 1px solid var(--mxch-card-border);
637 background: #fafbfc;
638 }
639
640 /* ==========================================================================
641 Form Fields
642 ========================================================================== */
643 .mxch-field {
644 margin-bottom: var(--mxch-spacing-lg);
645 }
646
647 .mxch-field:last-child {
648 margin-bottom: 0;
649 }
650
651 .mxch-field-row {
652 display: flex;
653 align-items: flex-start;
654 gap: var(--mxch-spacing-lg);
655 }
656
657 .mxch-field-label {
658 display: flex;
659 align-items: center;
660 gap: var(--mxch-spacing-sm);
661 font-size: 14px;
662 font-weight: 600;
663 color: var(--mxch-text-primary);
664 margin-bottom: var(--mxch-spacing-sm);
665 }
666
667 .mxch-field-label-required {
668 color: var(--mxch-error);
669 }
670
671 .mxch-field-description {
672 font-size: 13px;
673 color: var(--mxch-text-secondary);
674 margin-top: var(--mxch-spacing-xs);
675 line-height: 1.5;
676 }
677
678 .mxch-field-hint {
679 font-size: 12px;
680 color: var(--mxch-text-muted);
681 margin-top: var(--mxch-spacing-xs);
682 }
683
684 /* Input Fields */
685 .mxch-input {
686 width: 100%;
687 padding: 10px 14px;
688 font-size: 14px;
689 border: 1px solid var(--mxch-input-border);
690 border-radius: var(--mxch-radius-md);
691 background: var(--mxch-input-bg);
692 color: var(--mxch-text-primary);
693 transition: all var(--mxch-transition-fast);
694 }
695
696 .mxch-input:focus {
697 outline: none;
698 border-color: var(--mxch-input-focus);
699 box-shadow: 0 0 0 3px var(--mxch-primary-light);
700 }
701
702 .mxch-input::placeholder {
703 color: var(--mxch-text-muted);
704 }
705
706 .mxch-input-sm {
707 padding: 6px 10px;
708 font-size: 13px;
709 }
710
711 .mxch-input-lg {
712 padding: 12px 16px;
713 font-size: 15px;
714 }
715
716 /* Textarea */
717 .mxch-textarea {
718 width: 100%;
719 padding: 10px 14px;
720 font-size: 14px;
721 border: 1px solid var(--mxch-input-border);
722 border-radius: var(--mxch-radius-md);
723 background: var(--mxch-input-bg);
724 color: var(--mxch-text-primary);
725 transition: all var(--mxch-transition-fast);
726 resize: vertical;
727 min-height: 100px;
728 font-family: inherit;
729 }
730
731 .mxch-textarea:focus {
732 outline: none;
733 border-color: var(--mxch-input-focus);
734 box-shadow: 0 0 0 3px var(--mxch-primary-light);
735 }
736
737 /* Select */
738 .mxch-select {
739 width: 100%;
740 padding: 10px 36px 10px 14px;
741 font-size: 14px;
742 border: 1px solid var(--mxch-input-border);
743 border-radius: var(--mxch-radius-md);
744 background: var(--mxch-input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") no-repeat right 12px center;
745 color: var(--mxch-text-primary);
746 cursor: pointer;
747 appearance: none;
748 transition: all var(--mxch-transition-fast);
749 }
750
751 .mxch-select:focus {
752 outline: none;
753 border-color: var(--mxch-input-focus);
754 box-shadow: 0 0 0 3px var(--mxch-primary-light);
755 }
756
757 /* Toggle Switch */
758 .mxch-toggle {
759 position: relative;
760 display: inline-flex;
761 align-items: center;
762 gap: var(--mxch-spacing-sm);
763 cursor: pointer;
764 }
765
766 .mxch-toggle-input {
767 position: absolute;
768 opacity: 0;
769 width: 0;
770 height: 0;
771 }
772
773 .mxch-toggle-switch {
774 position: relative;
775 width: 44px;
776 height: 24px;
777 background: #cbd5e1;
778 border-radius: 12px;
779 transition: all var(--mxch-transition-fast);
780 }
781
782 .mxch-toggle-switch::before {
783 content: '';
784 position: absolute;
785 top: 2px;
786 left: 2px;
787 width: 20px;
788 height: 20px;
789 background: white;
790 border-radius: 50%;
791 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
792 transition: all var(--mxch-transition-fast);
793 }
794
795 .mxch-toggle-input:checked + .mxch-toggle-switch {
796 background: var(--mxch-primary);
797 }
798
799 .mxch-toggle-input:checked + .mxch-toggle-switch::before {
800 transform: translateX(20px);
801 }
802
803 .mxch-toggle-input:focus + .mxch-toggle-switch {
804 box-shadow: 0 0 0 3px var(--mxch-primary-light);
805 }
806
807 .mxch-toggle-label {
808 font-size: 14px;
809 color: var(--mxch-text-primary);
810 }
811
812 /* API Key Input */
813 .mxch-api-key-wrapper {
814 display: flex;
815 gap: var(--mxch-spacing-sm);
816 }
817
818 .mxch-api-key-wrapper .mxch-input {
819 flex: 1;
820 font-family: monospace;
821 }
822
823 .mxch-api-key-toggle {
824 padding: 10px 14px;
825 background: #f1f5f9;
826 border: 1px solid var(--mxch-input-border);
827 border-radius: var(--mxch-radius-md);
828 color: var(--mxch-text-secondary);
829 cursor: pointer;
830 font-size: 13px;
831 transition: all var(--mxch-transition-fast);
832 }
833
834 .mxch-api-key-toggle:hover {
835 background: #e2e8f0;
836 color: var(--mxch-text-primary);
837 }
838
839 .mxch-api-key-status {
840 display: flex;
841 align-items: center;
842 gap: var(--mxch-spacing-xs);
843 font-size: 12px;
844 margin-top: var(--mxch-spacing-xs);
845 }
846
847 .mxch-api-key-status.detected {
848 color: var(--mxch-success);
849 }
850
851 .mxch-api-key-status.missing {
852 color: var(--mxch-text-muted);
853 }
854
855 /* ==========================================================================
856 WordPress Form Table Styling (for do_settings_fields output)
857 ========================================================================== */
858 .mxch-card-body .form-table {
859 margin: 0;
860 border-collapse: collapse;
861 width: 100%;
862 }
863
864 .mxch-card-body .form-table th,
865 .mxch-card-body .form-table td {
866 padding: 0;
867 vertical-align: top;
868 border: none;
869 }
870
871 .mxch-card-body .form-table tr {
872 display: flex;
873 flex-direction: column;
874 margin-bottom: var(--mxch-spacing-lg);
875 }
876
877 .mxch-card-body .form-table tr:last-child {
878 margin-bottom: 0;
879 }
880
881 .mxch-card-body .form-table th {
882 display: block;
883 width: 100%;
884 font-size: 14px;
885 font-weight: 600;
886 color: var(--mxch-text-primary);
887 padding-bottom: var(--mxch-spacing-sm);
888 text-align: left;
889 }
890
891 .mxch-card-body .form-table th label {
892 font-weight: 600;
893 }
894
895 .mxch-card-body .form-table td {
896 display: block;
897 width: 100%;
898 }
899
900 /* Style WordPress default inputs inside form-table */
901 .mxch-card-body .form-table input[type="text"],
902 .mxch-card-body .form-table input[type="password"],
903 .mxch-card-body .form-table input[type="email"],
904 .mxch-card-body .form-table input[type="url"],
905 .mxch-card-body .form-table input[type="number"] {
906 width: 100%;
907 max-width: 100%;
908 padding: 10px 14px;
909 font-size: 14px;
910 border: 1px solid var(--mxch-input-border);
911 border-radius: var(--mxch-radius-md);
912 background: var(--mxch-input-bg);
913 color: var(--mxch-text-primary);
914 transition: all var(--mxch-transition-fast);
915 box-sizing: border-box;
916 }
917
918 .mxch-card-body .form-table input[type="text"]:focus,
919 .mxch-card-body .form-table input[type="password"]:focus,
920 .mxch-card-body .form-table input[type="email"]:focus,
921 .mxch-card-body .form-table input[type="url"]:focus,
922 .mxch-card-body .form-table input[type="number"]:focus {
923 outline: none;
924 border-color: var(--mxch-input-focus);
925 box-shadow: 0 0 0 3px var(--mxch-primary-light);
926 }
927
928 .mxch-card-body .form-table .regular-text {
929 width: 100%;
930 max-width: 100%;
931 }
932
933 .mxch-card-body .form-table select {
934 width: 100%;
935 max-width: 100%;
936 padding: 10px 36px 10px 14px;
937 font-size: 14px;
938 border: 1px solid var(--mxch-input-border);
939 border-radius: var(--mxch-radius-md);
940 background: var(--mxch-input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") no-repeat right 12px center;
941 color: var(--mxch-text-primary);
942 cursor: pointer;
943 appearance: none;
944 -webkit-appearance: none;
945 transition: all var(--mxch-transition-fast);
946 }
947
948 .mxch-card-body .form-table select:focus {
949 outline: none;
950 border-color: var(--mxch-input-focus);
951 box-shadow: 0 0 0 3px var(--mxch-primary-light);
952 }
953
954 .mxch-card-body .form-table textarea {
955 width: 100%;
956 max-width: 100%;
957 padding: 10px 14px;
958 font-size: 14px;
959 border: 1px solid var(--mxch-input-border);
960 border-radius: var(--mxch-radius-md);
961 background: var(--mxch-input-bg);
962 color: var(--mxch-text-primary);
963 transition: all var(--mxch-transition-fast);
964 resize: vertical;
965 min-height: 100px;
966 font-family: inherit;
967 box-sizing: border-box;
968 }
969
970 .mxch-card-body .form-table textarea:focus {
971 outline: none;
972 border-color: var(--mxch-input-focus);
973 box-shadow: 0 0 0 3px var(--mxch-primary-light);
974 }
975
976 /* Style descriptions in form-table */
977 .mxch-card-body .form-table p.description,
978 .mxch-card-body .form-table .description {
979 font-size: 13px;
980 color: var(--mxch-text-secondary);
981 margin-top: var(--mxch-spacing-xs);
982 line-height: 1.5;
983 }
984
985 /* API Key wrappers inside form-table */
986 .mxch-card-body .form-table .api-key-wrapper {
987 display: grid;
988 grid-template-columns: 1fr auto;
989 grid-template-rows: auto auto;
990 gap: var(--mxch-spacing-sm);
991 align-items: center;
992 }
993
994 .mxch-card-body .form-table .api-key-wrapper input {
995 grid-column: 1;
996 grid-row: 1;
997 font-family: monospace;
998 width: 100%;
999 }
1000
1001 .mxch-admin-wrapper .mxch-card-body .form-table .api-key-wrapper button,
1002 .mxch-admin-wrapper .mxch-card-body .api-key-wrapper button,
1003 .mxch-admin-wrapper .mxch-section .api-key-wrapper button {
1004 grid-column: 2;
1005 grid-row: 1;
1006 padding: 10px 16px;
1007 background: #f1f5f9;
1008 border: 1px solid var(--mxch-input-border);
1009 border-radius: var(--mxch-radius-md);
1010 color: var(--mxch-text-secondary);
1011 cursor: pointer;
1012 font-size: 13px;
1013 font-weight: 500;
1014 transition: all var(--mxch-transition-fast);
1015 white-space: nowrap;
1016 min-width: 70px;
1017 text-align: center;
1018 height: auto;
1019 line-height: 1.4;
1020 }
1021
1022 .mxch-admin-wrapper .mxch-card-body .form-table .api-key-wrapper button:hover,
1023 .mxch-admin-wrapper .mxch-card-body .api-key-wrapper button:hover,
1024 .mxch-admin-wrapper .mxch-section .api-key-wrapper button:hover {
1025 background: var(--mxch-primary);
1026 border-color: var(--mxch-primary);
1027 color: white;
1028 }
1029
1030 /* Description inside api-key-wrapper needs to be on its own line */
1031 .mxch-card-body .form-table .api-key-wrapper p.description,
1032 .mxch-card-body .form-table .api-key-wrapper .description {
1033 grid-column: 1 / -1;
1034 grid-row: 2;
1035 margin: 0;
1036 }
1037
1038 /* Checkbox styling */
1039 .mxch-card-body .form-table input[type="checkbox"] {
1040 width: 18px;
1041 height: 18px;
1042 margin: 0;
1043 cursor: pointer;
1044 accent-color: var(--mxch-primary);
1045 }
1046
1047 /* Toggle switches (if using class-based toggles) */
1048 .mxch-card-body .form-table .mxchat-toggle-wrapper {
1049 display: flex;
1050 align-items: center;
1051 gap: var(--mxch-spacing-sm);
1052 }
1053
1054 /* Button styling inside form-table */
1055 .mxch-card-body .form-table .button {
1056 padding: 8px 16px;
1057 font-size: 13px;
1058 border-radius: var(--mxch-radius-md);
1059 transition: all var(--mxch-transition-fast);
1060 }
1061
1062 .mxch-card-body .form-table .button-primary {
1063 background: var(--mxch-primary);
1064 border-color: var(--mxch-primary);
1065 color: white;
1066 }
1067
1068 .mxch-card-body .form-table .button-primary:hover {
1069 background: var(--mxch-primary-hover);
1070 border-color: var(--mxch-primary-hover);
1071 }
1072
1073 /* ==========================================================================
1074 Rate Limits - Collapsible Accordion
1075 ========================================================================== */
1076 .mxch-rate-limits {
1077 border: 1px solid var(--mxch-card-border);
1078 border-radius: var(--mxch-radius-lg);
1079 overflow: hidden;
1080 }
1081
1082 .mxch-rate-limit-item {
1083 border-bottom: 1px solid var(--mxch-card-border);
1084 }
1085
1086 .mxch-rate-limit-item:last-child {
1087 border-bottom: none;
1088 }
1089
1090 .mxch-rate-limit-header {
1091 display: flex;
1092 align-items: center;
1093 justify-content: space-between;
1094 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
1095 background: #fafbfc;
1096 cursor: pointer;
1097 transition: all var(--mxch-transition-fast);
1098 }
1099
1100 .mxch-rate-limit-header:hover {
1101 background: #f1f5f9;
1102 }
1103
1104 .mxch-rate-limit-role {
1105 font-weight: 600;
1106 color: var(--mxch-text-primary);
1107 font-size: 14px;
1108 }
1109
1110 .mxch-rate-limit-summary {
1111 display: flex;
1112 align-items: center;
1113 gap: var(--mxch-spacing-md);
1114 }
1115
1116 .mxch-rate-limit-badge {
1117 padding: 4px 10px;
1118 background: var(--mxch-primary-light);
1119 color: var(--mxch-primary);
1120 border-radius: 20px;
1121 font-size: 12px;
1122 font-weight: 600;
1123 }
1124
1125 .mxch-rate-limit-arrow {
1126 width: 20px;
1127 height: 20px;
1128 color: var(--mxch-text-muted);
1129 transition: transform var(--mxch-transition-fast);
1130 }
1131
1132 .mxch-rate-limit-item.expanded .mxch-rate-limit-arrow {
1133 transform: rotate(180deg);
1134 }
1135
1136 .mxch-rate-limit-body {
1137 display: none;
1138 padding: var(--mxch-spacing-lg);
1139 background: white;
1140 border-top: 1px solid var(--mxch-card-border);
1141 }
1142
1143 .mxch-rate-limit-item.expanded .mxch-rate-limit-body {
1144 display: block;
1145 }
1146
1147 .mxch-rate-limit-controls {
1148 display: flex;
1149 gap: var(--mxch-spacing-lg);
1150 margin-bottom: var(--mxch-spacing-md);
1151 }
1152
1153 .mxch-rate-limit-controls .mxch-field {
1154 flex: 1;
1155 margin-bottom: 0;
1156 }
1157
1158 /* ==========================================================================
1159 Buttons
1160 ========================================================================== */
1161 .mxch-btn {
1162 display: inline-flex;
1163 align-items: center;
1164 justify-content: center;
1165 gap: var(--mxch-spacing-sm);
1166 padding: 10px 18px;
1167 font-size: 14px;
1168 font-weight: 600;
1169 border-radius: var(--mxch-radius-md);
1170 cursor: pointer;
1171 transition: all var(--mxch-transition-fast);
1172 text-decoration: none;
1173 border: none;
1174 }
1175
1176 .mxch-btn-primary {
1177 background: var(--mxch-primary);
1178 color: white;
1179 }
1180
1181 .mxch-btn-primary:hover {
1182 background: var(--mxch-primary-hover);
1183 color: white;
1184 transform: translateY(-1px);
1185 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
1186 }
1187
1188 .mxch-btn-secondary {
1189 background: white;
1190 color: var(--mxch-text-primary);
1191 border: 1px solid var(--mxch-input-border);
1192 }
1193
1194 .mxch-btn-secondary:hover {
1195 background: #f8fafc;
1196 border-color: #c7c7c7;
1197 }
1198
1199 .mxch-btn-ghost {
1200 background: transparent;
1201 color: var(--mxch-text-secondary);
1202 }
1203
1204 .mxch-btn-ghost:hover {
1205 background: #f1f5f9;
1206 color: var(--mxch-text-primary);
1207 }
1208
1209 .mxch-btn-sm {
1210 padding: 6px 12px;
1211 font-size: 13px;
1212 }
1213
1214 .mxch-btn-lg {
1215 padding: 12px 24px;
1216 font-size: 15px;
1217 }
1218
1219 .mxch-btn-icon {
1220 width: 18px;
1221 height: 18px;
1222 }
1223
1224 /* ==========================================================================
1225 Content Sections (hidden by default, shown when active)
1226 ========================================================================== */
1227 .mxch-section {
1228 display: none;
1229 }
1230
1231 .mxch-section.active {
1232 display: block;
1233 animation: mxcFadeIn 0.2s ease;
1234 }
1235
1236 @keyframes mxcFadeIn {
1237 from {
1238 opacity: 0;
1239 transform: translateY(8px);
1240 }
1241 to {
1242 opacity: 1;
1243 transform: translateY(0);
1244 }
1245 }
1246
1247 /* ==========================================================================
1248 Info Notices
1249 ========================================================================== */
1250 .mxch-notice {
1251 display: flex;
1252 align-items: flex-start;
1253 gap: var(--mxch-spacing-sm);
1254 padding: var(--mxch-spacing-md);
1255 border-radius: var(--mxch-radius-md);
1256 font-size: 13px;
1257 line-height: 1.5;
1258 }
1259
1260 .mxch-notice-icon {
1261 width: 18px;
1262 height: 18px;
1263 flex-shrink: 0;
1264 margin-top: 1px;
1265 }
1266
1267 .mxch-notice-info {
1268 background: #eff6ff;
1269 color: #1e40af;
1270 border: 1px solid #bfdbfe;
1271 }
1272
1273 .mxch-notice-warning {
1274 background: #fffbeb;
1275 color: #92400e;
1276 border: 1px solid #fde68a;
1277 }
1278
1279 .mxch-notice-success {
1280 background: #ecfdf5;
1281 color: #065f46;
1282 border: 1px solid #a7f3d0;
1283 }
1284
1285 .mxch-notice-error {
1286 background: #fef2f2;
1287 color: #991b1b;
1288 border: 1px solid #fecaca;
1289 }
1290
1291 /* ==========================================================================
1292 Quick Questions List
1293 ========================================================================== */
1294 .mxch-quick-questions {
1295 display: flex;
1296 flex-direction: column;
1297 gap: var(--mxch-spacing-sm);
1298 }
1299
1300 .mxch-quick-question-item {
1301 display: flex;
1302 align-items: center;
1303 gap: var(--mxch-spacing-sm);
1304 padding: var(--mxch-spacing-sm);
1305 background: #f8fafc;
1306 border: 1px solid var(--mxch-card-border);
1307 border-radius: var(--mxch-radius-md);
1308 }
1309
1310 .mxch-quick-question-item .mxch-input {
1311 flex: 1;
1312 background: white;
1313 }
1314
1315 .mxch-quick-question-remove {
1316 padding: 6px;
1317 background: none;
1318 border: none;
1319 color: var(--mxch-text-muted);
1320 cursor: pointer;
1321 border-radius: var(--mxch-radius-sm);
1322 transition: all var(--mxch-transition-fast);
1323 }
1324
1325 .mxch-quick-question-remove:hover {
1326 background: #fee2e2;
1327 color: var(--mxch-error);
1328 }
1329
1330 .mxch-quick-question-add {
1331 display: flex;
1332 align-items: center;
1333 justify-content: center;
1334 gap: var(--mxch-spacing-xs);
1335 padding: var(--mxch-spacing-sm);
1336 border: 2px dashed var(--mxch-card-border);
1337 border-radius: var(--mxch-radius-md);
1338 color: var(--mxch-text-muted);
1339 background: none;
1340 cursor: pointer;
1341 font-size: 13px;
1342 transition: all var(--mxch-transition-fast);
1343 }
1344
1345 .mxch-quick-question-add:hover {
1346 border-color: var(--mxch-primary);
1347 color: var(--mxch-primary);
1348 background: var(--mxch-primary-lighter);
1349 }
1350
1351 /* ==========================================================================
1352 Tutorials Grid (for YouTube Tutorials section)
1353 ========================================================================== */
1354 .mxch-tutorials-grid {
1355 display: grid;
1356 grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
1357 gap: var(--mxch-spacing-lg);
1358 }
1359
1360 .mxch-tutorial-card {
1361 background: white;
1362 border: 1px solid var(--mxch-card-border);
1363 border-radius: var(--mxch-radius-lg);
1364 overflow: hidden;
1365 transition: all var(--mxch-transition);
1366 }
1367
1368 .mxch-tutorial-card:hover {
1369 box-shadow: var(--mxch-card-shadow-hover);
1370 transform: translateY(-2px);
1371 }
1372
1373 .mxch-tutorial-content {
1374 padding: var(--mxch-spacing-md);
1375 }
1376
1377 .mxch-tutorial-title {
1378 font-size: 15px;
1379 font-weight: 600;
1380 color: var(--mxch-text-primary);
1381 margin: 0 0 var(--mxch-spacing-sm) 0;
1382 }
1383
1384 .mxch-tutorial-description {
1385 font-size: 13px;
1386 color: var(--mxch-text-secondary);
1387 margin: 0 0 var(--mxch-spacing-md) 0;
1388 line-height: 1.5;
1389 }
1390
1391 .mxch-tutorial-link {
1392 display: inline-flex;
1393 align-items: center;
1394 gap: var(--mxch-spacing-xs);
1395 color: var(--mxch-primary);
1396 font-size: 13px;
1397 font-weight: 600;
1398 text-decoration: none;
1399 }
1400
1401 .mxch-tutorial-link:hover {
1402 text-decoration: underline;
1403 }
1404
1405 /* ==========================================================================
1406 Autosave Indicator
1407 ========================================================================== */
1408 .mxch-autosave-indicator {
1409 display: flex;
1410 align-items: center;
1411 gap: var(--mxch-spacing-xs);
1412 font-size: 12px;
1413 color: var(--mxch-text-muted);
1414 padding: var(--mxch-spacing-xs) var(--mxch-spacing-sm);
1415 background: #f1f5f9;
1416 border-radius: 20px;
1417 }
1418
1419 .mxch-autosave-indicator.saving {
1420 color: var(--mxch-warning);
1421 }
1422
1423 .mxch-autosave-indicator.saved {
1424 color: var(--mxch-success);
1425 }
1426
1427 .mxch-autosave-dot {
1428 width: 6px;
1429 height: 6px;
1430 border-radius: 50%;
1431 background: currentColor;
1432 }
1433
1434 /* ==========================================================================
1435 Mobile Header (Hidden on Desktop)
1436 ========================================================================== */
1437 .mxch-mobile-header {
1438 display: none;
1439 }
1440
1441 /* ==========================================================================
1442 Mobile Menu Overlay
1443 ========================================================================== */
1444 .mxch-mobile-overlay {
1445 display: none;
1446 }
1447
1448 /* ==========================================================================
1449 Mobile Menu Modal
1450 ========================================================================== */
1451 .mxch-mobile-menu {
1452 display: none;
1453 }
1454
1455 /* ==========================================================================
1456 Responsive Design
1457 ========================================================================== */
1458 @media screen and (max-width: 1200px) {
1459 .mxch-sidebar {
1460 width: 220px;
1461 min-width: 220px;
1462 }
1463
1464 .mxch-content {
1465 padding: var(--mxch-spacing-lg);
1466 }
1467 }
1468
1469 @media screen and (max-width: 960px) {
1470 /* Hide desktop sidebar on mobile */
1471 .mxch-sidebar {
1472 display: none;
1473 }
1474
1475 /* Show mobile header */
1476 .mxch-mobile-header {
1477 display: flex;
1478 align-items: center;
1479 justify-content: space-between;
1480 padding: 12px 16px;
1481 background: var(--mxch-sidebar-bg);
1482 position: sticky;
1483 top: 0;
1484 z-index: 100;
1485 flex-shrink: 0;
1486 border-bottom: 4px solid transparent;
1487 border-image: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
1488 border-image-slice: 1;
1489 }
1490
1491 .mxch-mobile-header::before {
1492 content: '';
1493 position: absolute;
1494 top: 0;
1495 left: 0;
1496 width: 100%;
1497 height: 100%;
1498 background: radial-gradient(circle at center, rgba(250, 115, 230, 0.08) 0%, rgba(120, 115, 245, 0.08) 50%, rgba(58, 201, 209, 0.08) 100%);
1499 z-index: -1;
1500 }
1501
1502 .mxch-mobile-logo {
1503 display: flex;
1504 align-items: center;
1505 gap: 8px;
1506 text-decoration: none;
1507 }
1508
1509 .mxch-mobile-logo-icon {
1510 width: 28px;
1511 height: 28px;
1512 flex-shrink: 0;
1513 }
1514
1515 .mxch-mobile-logo-icon img {
1516 width: 100%;
1517 height: 100%;
1518 object-fit: contain;
1519 }
1520
1521 .mxch-mobile-logo-text {
1522 font-size: 18px;
1523 font-weight: 700;
1524 color: #ffffff;
1525 letter-spacing: -0.5px;
1526 }
1527
1528 .mxch-mobile-menu-btn {
1529 display: flex;
1530 align-items: center;
1531 justify-content: center;
1532 width: 40px;
1533 height: 40px;
1534 background: rgba(255, 255, 255, 0.1);
1535 border: none;
1536 border-radius: 8px;
1537 color: #ffffff;
1538 cursor: pointer;
1539 transition: background 0.15s ease;
1540 }
1541
1542 .mxch-mobile-menu-btn:hover {
1543 background: rgba(255, 255, 255, 0.15);
1544 }
1545
1546 /* Mobile Overlay */
1547 .mxch-mobile-overlay {
1548 display: block;
1549 position: fixed;
1550 top: 46px; /* Account for WordPress admin bar on mobile (46px on smaller screens) */
1551 left: 0;
1552 right: 0;
1553 bottom: 0;
1554 background: rgba(0, 0, 0, 0.5);
1555 z-index: 998;
1556 opacity: 0;
1557 visibility: hidden;
1558 transition: opacity 0.3s ease, visibility 0.3s ease;
1559 }
1560
1561 .mxch-mobile-overlay.open {
1562 opacity: 1;
1563 visibility: visible;
1564 }
1565
1566 /* Mobile Menu Modal */
1567 .mxch-mobile-menu {
1568 display: flex;
1569 flex-direction: column;
1570 position: fixed;
1571 top: 46px; /* Account for WordPress admin bar on mobile (46px on smaller screens) */
1572 right: 0;
1573 bottom: 0;
1574 width: 300px;
1575 max-width: 85vw;
1576 background: var(--mxch-sidebar-bg);
1577 z-index: 999;
1578 transform: translateX(100%);
1579 transition: transform 0.3s ease;
1580 overflow: hidden;
1581 overflow-x: hidden;
1582 box-sizing: border-box;
1583 }
1584
1585 .mxch-mobile-menu::before {
1586 content: '';
1587 position: absolute;
1588 top: 0;
1589 left: 0;
1590 width: 100%;
1591 height: 100%;
1592 background: radial-gradient(circle at center, rgba(250, 115, 230, 0.08) 0%, rgba(120, 115, 245, 0.08) 50%, rgba(58, 201, 209, 0.08) 100%);
1593 z-index: 0;
1594 pointer-events: none;
1595 }
1596
1597 .mxch-mobile-menu.open {
1598 transform: translateX(0);
1599 }
1600
1601 .mxch-mobile-menu-header {
1602 display: flex;
1603 align-items: center;
1604 justify-content: space-between;
1605 padding: 16px 20px;
1606 border-bottom: 4px solid transparent;
1607 border-image: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
1608 border-image-slice: 1;
1609 position: relative;
1610 z-index: 1;
1611 }
1612
1613 .mxch-mobile-menu-title {
1614 font-size: 16px;
1615 font-weight: 600;
1616 color: #ffffff;
1617 }
1618
1619 .mxch-mobile-menu-close {
1620 display: flex;
1621 align-items: center;
1622 justify-content: center;
1623 width: 36px;
1624 height: 36px;
1625 background: rgba(255, 255, 255, 0.1);
1626 border: none;
1627 border-radius: 8px;
1628 color: #ffffff;
1629 cursor: pointer;
1630 transition: background 0.15s ease;
1631 }
1632
1633 .mxch-mobile-menu-close:hover {
1634 background: rgba(255, 255, 255, 0.15);
1635 }
1636
1637 .mxch-mobile-menu-nav {
1638 flex: 1;
1639 overflow-y: auto;
1640 padding: 16px 0;
1641 position: relative;
1642 z-index: 1;
1643 }
1644
1645 .mxch-mobile-nav-section {
1646 margin-bottom: 8px;
1647 }
1648
1649 .mxch-mobile-nav-section-title {
1650 font-size: 11px;
1651 font-weight: 600;
1652 text-transform: uppercase;
1653 letter-spacing: 0.5px;
1654 color: var(--mxch-sidebar-text);
1655 padding: 12px 20px 8px;
1656 opacity: 0.7;
1657 }
1658
1659 .mxch-mobile-nav-link {
1660 display: flex;
1661 align-items: center;
1662 gap: 10px;
1663 width: 100%;
1664 padding: 12px 20px;
1665 background: none;
1666 border: none;
1667 color: var(--mxch-sidebar-text);
1668 font-size: 14px;
1669 font-weight: 500;
1670 text-align: left;
1671 cursor: pointer;
1672 transition: all 0.15s ease;
1673 }
1674
1675 .mxch-mobile-nav-link:hover {
1676 background: rgba(255, 255, 255, 0.05);
1677 color: #ffffff;
1678 }
1679
1680 .mxch-mobile-nav-link.active {
1681 background: var(--mxch-sidebar-active-bg);
1682 color: #ffffff;
1683 }
1684
1685 .mxch-mobile-nav-link.expanded {
1686 background: rgba(255, 255, 255, 0.05);
1687 color: #ffffff;
1688 }
1689
1690 .mxch-mobile-nav-link span {
1691 flex: 1;
1692 }
1693
1694 /* Prevent addon status dot from expanding - override flex: 1 from above */
1695 .mxch-mobile-nav-link .mxch-addon-status-dot {
1696 flex: 0 0 8px;
1697 width: 8px;
1698 height: 8px;
1699 }
1700
1701 .mxch-mobile-nav-arrow {
1702 opacity: 0.5;
1703 transition: transform 0.2s ease;
1704 }
1705
1706 .mxch-mobile-nav-link.expanded .mxch-mobile-nav-arrow {
1707 transform: rotate(90deg);
1708 opacity: 1;
1709 }
1710
1711 /* Mobile Sub Navigation */
1712 .mxch-mobile-nav-sub {
1713 display: none;
1714 background: rgba(0, 0, 0, 0.2);
1715 }
1716
1717 .mxch-mobile-nav-sub.expanded {
1718 display: block;
1719 }
1720
1721 .mxch-mobile-nav-sub-link {
1722 display: flex;
1723 align-items: center;
1724 gap: 8px;
1725 width: 100%;
1726 padding: 10px 20px 10px 52px;
1727 background: none;
1728 border: none;
1729 color: var(--mxch-sidebar-text);
1730 font-size: 13px;
1731 text-align: left;
1732 cursor: pointer;
1733 transition: all 0.15s ease;
1734 }
1735
1736 .mxch-mobile-nav-sub-link::before {
1737 content: '';
1738 width: 6px;
1739 height: 6px;
1740 border-radius: 50%;
1741 background: currentColor;
1742 opacity: 0.4;
1743 }
1744
1745 .mxch-mobile-nav-sub-link:hover {
1746 background: rgba(255, 255, 255, 0.03);
1747 color: #ffffff;
1748 }
1749
1750 .mxch-mobile-nav-sub-link.active {
1751 color: var(--mxch-primary);
1752 background: rgba(120, 115, 245, 0.1);
1753 }
1754
1755 .mxch-mobile-nav-sub-link.active::before {
1756 opacity: 1;
1757 background: var(--mxch-primary);
1758 }
1759
1760 /* Mobile Menu Footer */
1761 .mxch-mobile-menu-footer {
1762 padding: 16px 20px;
1763 border-top: 1px solid rgba(255, 255, 255, 0.1);
1764 position: relative;
1765 z-index: 1;
1766 box-sizing: border-box;
1767 max-width: 100%;
1768 overflow: hidden;
1769 }
1770
1771 .mxch-mobile-upgrade-btn {
1772 display: flex;
1773 align-items: center;
1774 justify-content: center;
1775 gap: 8px;
1776 width: 100%;
1777 padding: 12px 16px;
1778 background: linear-gradient(135deg, var(--mxch-primary), #a78bfa);
1779 border-radius: 8px;
1780 color: white;
1781 text-decoration: none;
1782 font-size: 14px;
1783 font-weight: 600;
1784 transition: all 0.15s ease;
1785 box-sizing: border-box;
1786 max-width: 100%;
1787 }
1788
1789 .mxch-mobile-upgrade-btn:hover {
1790 transform: translateY(-1px);
1791 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.4);
1792 color: white;
1793 }
1794
1795 /* Adjust main layout for mobile */
1796 .mxch-admin-wrapper {
1797 flex-direction: column;
1798 position: fixed;
1799 left: 0;
1800 right: 0;
1801 overflow: auto;
1802 }
1803
1804 .mxch-content {
1805 height: auto;
1806 overflow: visible;
1807 padding: var(--mxch-spacing-lg);
1808 width: 100%;
1809 box-sizing: border-box;
1810 }
1811
1812 /* Center content sections on mobile */
1813 .mxch-content-section {
1814 max-width: 100%;
1815 margin-left: auto;
1816 margin-right: auto;
1817 }
1818
1819 .mxch-rate-limit-controls {
1820 flex-direction: column;
1821 }
1822
1823 /* Card headers stack on mobile */
1824 .mxch-card-header {
1825 flex-direction: column;
1826 align-items: stretch;
1827 gap: 12px;
1828 }
1829
1830 /* Content header adjustments */
1831 .mxch-content-header {
1832 margin-bottom: var(--mxch-spacing-md);
1833 }
1834
1835 .mxch-content-title {
1836 font-size: 20px;
1837 }
1838 }
1839
1840 @media screen and (max-width: 600px) {
1841 .mxch-content {
1842 padding: var(--mxch-spacing-md);
1843 }
1844
1845 .mxch-card-body {
1846 padding: var(--mxch-spacing-md);
1847 }
1848
1849 .mxch-card {
1850 margin-left: 0;
1851 margin-right: 0;
1852 }
1853
1854 .mxch-pro-banner {
1855 flex-direction: column;
1856 text-align: center;
1857 padding: 16px;
1858 margin-left: 0;
1859 margin-right: 0;
1860 max-width: 100%;
1861 box-sizing: border-box;
1862 }
1863
1864 .mxch-pro-banner-content {
1865 max-width: 100%;
1866 }
1867
1868 .mxch-pro-banner-title {
1869 justify-content: center;
1870 font-size: 13px;
1871 }
1872
1873 .mxch-pro-banner-text {
1874 font-size: 12px;
1875 }
1876
1877 .mxch-pro-banner-btn {
1878 width: auto;
1879 max-width: 100%;
1880 padding: 10px 16px;
1881 font-size: 12px;
1882 justify-content: center;
1883 box-sizing: border-box;
1884 }
1885
1886 .mxch-field-row {
1887 flex-direction: column;
1888 }
1889
1890 .mxch-api-key-wrapper {
1891 flex-direction: column;
1892 }
1893
1894 .mxch-mobile-menu {
1895 width: 100%;
1896 max-width: 100%;
1897 }
1898 }
1899
1900 /* ==========================================================================
1901 WordPress Admin Overrides
1902 ========================================================================== */
1903 .mxch-admin-wrapper .form-table {
1904 margin: 0;
1905 }
1906
1907 .mxch-admin-wrapper .form-table th {
1908 padding: 0;
1909 width: auto;
1910 }
1911
1912 .mxch-admin-wrapper .form-table td {
1913 padding: 0;
1914 }
1915
1916 .mxch-admin-wrapper .form-table tr {
1917 display: block;
1918 margin-bottom: var(--mxch-spacing-lg);
1919 }
1920
1921 .mxch-admin-wrapper .form-table tr:last-child {
1922 margin-bottom: 0;
1923 }
1924
1925 /* ==========================================================================
1926 Autosave Feedback Indicators
1927 ========================================================================== */
1928 .mxch-admin-wrapper .feedback-container {
1929 display: inline-flex;
1930 align-items: center;
1931 margin-left: 10px;
1932 position: relative;
1933 z-index: 10;
1934 vertical-align: middle;
1935 }
1936
1937 .mxch-admin-wrapper .saving-spinner {
1938 width: 16px;
1939 height: 16px;
1940 border: 2px solid #e2e8f0;
1941 border-top-color: var(--mxch-primary);
1942 border-radius: 50%;
1943 animation: mxcSpin 0.6s linear infinite;
1944 }
1945
1946 .mxch-admin-wrapper .success-icon {
1947 display: none;
1948 color: var(--mxch-success);
1949 font-size: 16px;
1950 font-weight: bold;
1951 margin-left: 5px;
1952 }
1953
1954 @keyframes mxcSpin {
1955 to {
1956 transform: rotate(360deg);
1957 }
1958 }
1959
1960 /* Ensure feedback container appears inline with toggles */
1961 .mxch-admin-wrapper .toggle-switch + .feedback-container,
1962 .mxch-admin-wrapper .mxchat-toggle-switch + .feedback-container,
1963 .mxch-admin-wrapper label.toggle-switch ~ .feedback-container {
1964 display: inline-flex;
1965 vertical-align: middle;
1966 }
1967
1968 /* Position feedback near inputs - use inline for form-table context */
1969 .mxch-admin-wrapper .form-table input + .feedback-container,
1970 .mxch-admin-wrapper .form-table select + .feedback-container,
1971 .mxch-admin-wrapper .form-table textarea + .feedback-container {
1972 position: relative;
1973 display: inline-flex;
1974 vertical-align: middle;
1975 margin-left: 10px;
1976 right: auto;
1977 top: auto;
1978 transform: none;
1979 }
1980
1981 /* Position feedback near inputs - absolute for card layouts with field-control */
1982 .mxch-admin-wrapper .mxch-field-control input + .feedback-container,
1983 .mxch-admin-wrapper .mxch-field-control select + .feedback-container,
1984 .mxch-admin-wrapper .mxch-field-control textarea + .feedback-container {
1985 position: absolute;
1986 right: -30px;
1987 top: 50%;
1988 transform: translateY(-50%);
1989 }
1990
1991 /* Make input containers relative for absolute positioning */
1992 .mxch-admin-wrapper .mxch-field-control {
1993 position: relative;
1994 }
1995
1996 /* Feedback inside slider container */
1997 .mxch-admin-wrapper .slider-container + .feedback-container {
1998 margin-left: 15px;
1999 }
2000
2001 /* ==========================================================================
2002 Real-time Entry Updates
2003 ========================================================================== */
2004
2005 /* New entry highlight animation */
2006 .mxchat-new-entry {
2007 background-color: rgba(120, 115, 245, 0.15);
2008 animation: mxchatNewEntryFade 2s ease-out forwards;
2009 }
2010
2011 @keyframes mxchatNewEntryFade {
2012 0% {
2013 background-color: rgba(120, 115, 245, 0.25);
2014 }
2015 100% {
2016 background-color: transparent;
2017 }
2018 }
2019
2020 /* Count update flash */
2021 #mxchat-entry-count.mxchat-count-updated,
2022 #mxchat-sidebar-count.mxchat-count-updated {
2023 animation: mxchatCountPulse 0.5s ease-out;
2024 }
2025
2026 @keyframes mxchatCountPulse {
2027 0% {
2028 color: var(--mxch-primary);
2029 transform: scale(1.2);
2030 }
2031 100% {
2032 color: var(--mxch-text-secondary);
2033 transform: scale(1);
2034 }
2035 }
2036
2037 /* Sidebar badge specific pulse - keep white text on purple background */
2038 #mxchat-sidebar-count.mxchat-count-updated {
2039 animation: mxchatSidebarCountPulse 0.5s ease-out;
2040 }
2041
2042 @keyframes mxchatSidebarCountPulse {
2043 0% {
2044 transform: scale(1.3);
2045 background: var(--mxch-success);
2046 }
2047 100% {
2048 transform: scale(1);
2049 background: var(--mxch-primary);
2050 }
2051 }
2052
2053 /* ==========================================================================
2054 Pro Upgrade v2 - Cleaner, More Professional Design
2055 ========================================================================== */
2056
2057 /* Sidebar Upgrade Button - v2 (Concise) */
2058 .mxch-sidebar-upgrade-v2 {
2059 display: flex;
2060 align-items: center;
2061 justify-content: center;
2062 gap: 8px;
2063 padding: 10px 16px;
2064 background: rgba(120, 115, 245, 0.1);
2065 border: 1px solid rgba(120, 115, 245, 0.25);
2066 border-radius: var(--mxch-radius-md);
2067 color: #c4c1ff;
2068 text-decoration: none;
2069 font-size: 13px;
2070 font-weight: 500;
2071 transition: all 0.2s ease;
2072 position: relative;
2073 }
2074
2075 .mxch-sidebar-upgrade-v2:hover {
2076 background: rgba(120, 115, 245, 0.2);
2077 border-color: rgba(120, 115, 245, 0.5);
2078 color: #ffffff;
2079 text-decoration: none;
2080 }
2081
2082 .mxch-sidebar-upgrade-v2:focus {
2083 outline: none;
2084 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.4);
2085 }
2086
2087 .mxch-sidebar-upgrade-v2 svg {
2088 width: 14px;
2089 height: 14px;
2090 opacity: 0.8;
2091 flex-shrink: 0;
2092 }
2093
2094 .mxch-sidebar-upgrade-v2:hover svg {
2095 opacity: 1;
2096 }
2097
2098 /* Pro Banner - v2 (Clean & Minimal) */
2099 .mxch-pro-banner-v2 {
2100 display: flex;
2101 align-items: center;
2102 justify-content: space-between;
2103 gap: 20px;
2104 padding: 14px 20px;
2105 background: linear-gradient(135deg, rgba(120, 115, 245, 0.08) 0%, rgba(167, 139, 250, 0.06) 100%);
2106 border: 1px solid rgba(120, 115, 245, 0.15);
2107 border-radius: var(--mxch-radius-md);
2108 margin-bottom: var(--mxch-spacing-lg);
2109 }
2110
2111 .mxch-pro-banner-v2-content {
2112 display: flex;
2113 align-items: center;
2114 gap: 12px;
2115 flex: 1;
2116 min-width: 0;
2117 }
2118
2119 .mxch-pro-banner-v2-icon {
2120 width: 32px;
2121 height: 32px;
2122 display: flex;
2123 align-items: center;
2124 justify-content: center;
2125 background: linear-gradient(135deg, var(--mxch-primary) 0%, #a78bfa 100%);
2126 border-radius: 8px;
2127 flex-shrink: 0;
2128 }
2129
2130 .mxch-pro-banner-v2-icon svg {
2131 width: 16px;
2132 height: 16px;
2133 color: white;
2134 }
2135
2136 .mxch-pro-banner-v2-text {
2137 flex: 1;
2138 min-width: 0;
2139 }
2140
2141 .mxch-pro-banner-v2-title {
2142 font-size: 14px;
2143 font-weight: 600;
2144 color: var(--mxch-text-primary);
2145 margin: 0 0 2px 0;
2146 }
2147
2148 .mxch-pro-banner-v2-desc {
2149 font-size: 12px;
2150 color: var(--mxch-text-secondary);
2151 margin: 0;
2152 line-height: 1.4;
2153 }
2154
2155 .mxch-pro-banner-v2-btn {
2156 display: inline-flex;
2157 align-items: center;
2158 gap: 6px;
2159 padding: 8px 16px;
2160 background: var(--mxch-primary);
2161 color: white;
2162 font-size: 13px;
2163 font-weight: 500;
2164 border-radius: 6px;
2165 text-decoration: none;
2166 transition: all 0.2s ease;
2167 white-space: nowrap;
2168 flex-shrink: 0;
2169 }
2170
2171 .mxch-pro-banner-v2-btn:hover {
2172 background: var(--mxch-primary-hover);
2173 color: white;
2174 text-decoration: none;
2175 transform: translateY(-1px);
2176 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
2177 }
2178
2179 .mxch-pro-banner-v2-btn:focus {
2180 outline: none;
2181 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.3);
2182 }
2183
2184 .mxch-pro-banner-v2-btn svg {
2185 width: 14px;
2186 height: 14px;
2187 }
2188
2189 /* Mobile responsive for v2 banner */
2190 @media screen and (max-width: 600px) {
2191 .mxch-pro-banner-v2 {
2192 flex-direction: column;
2193 text-align: center;
2194 padding: 16px;
2195 gap: 12px;
2196 }
2197
2198 .mxch-pro-banner-v2-content {
2199 flex-direction: column;
2200 }
2201
2202 .mxch-pro-banner-v2-btn {
2203 width: 100%;
2204 justify-content: center;
2205 }
2206 }
2207
2208 /* ==========================================================================
2209 API Key Fields - Prevent Browser Autofill
2210 ========================================================================== */
2211
2212 /* Mask API key fields like password fields but avoid browser password autofill */
2213 .mxchat-api-key-field {
2214 -webkit-text-security: disc;
2215 text-security: disc;
2216 font-family: monospace;
2217 }
2218
2219 /* Show actual text when focused or when show button toggled */
2220 .mxchat-api-key-field.mxchat-show-key {
2221 -webkit-text-security: none;
2222 text-security: none;
2223 }
2224
2225 /* ==========================================================================
2226 Debug & Optimization Tools
2227 ========================================================================== */
2228
2229 /* Debug Log Viewer */
2230 .mxchat-debug-log-viewer {
2231 max-height: 400px;
2232 overflow-y: auto;
2233 background: #f8fafc;
2234 border: 1px solid var(--mxch-card-border, #e2e4e9);
2235 border-radius: 8px;
2236 padding: 0;
2237 }
2238
2239 .mxchat-debug-log-empty {
2240 display: flex;
2241 flex-direction: column;
2242 align-items: center;
2243 justify-content: center;
2244 padding: 48px 24px;
2245 text-align: center;
2246 color: #64748b;
2247 }
2248
2249 .mxchat-debug-log-empty p {
2250 margin: 16px 0 0;
2251 font-size: 14px;
2252 }
2253
2254 .mxchat-debug-log-entries {
2255 padding: 12px;
2256 }
2257
2258 .mxchat-debug-log-entry {
2259 background: #ffffff;
2260 border: 1px solid #e2e8f0;
2261 border-radius: 8px;
2262 padding: 12px;
2263 margin-bottom: 8px;
2264 font-size: 13px;
2265 }
2266
2267 .mxchat-debug-log-entry:last-child {
2268 margin-bottom: 0;
2269 }
2270
2271 .mxchat-log-header {
2272 display: flex;
2273 justify-content: space-between;
2274 align-items: center;
2275 margin-bottom: 8px;
2276 }
2277
2278 .mxchat-log-type {
2279 display: inline-block;
2280 padding: 2px 8px;
2281 border-radius: 4px;
2282 font-size: 10px;
2283 font-weight: 600;
2284 text-transform: uppercase;
2285 letter-spacing: 0.5px;
2286 background: #e2e8f0;
2287 color: #475569;
2288 }
2289
2290 .mxchat-log-type-settings_save .mxchat-log-type {
2291 background: #dbeafe;
2292 color: #1e40af;
2293 }
2294
2295 .mxchat-log-type-debug_mode .mxchat-log-type {
2296 background: #fef3c7;
2297 color: #92400e;
2298 }
2299
2300 .mxchat-log-type-api_error .mxchat-log-type {
2301 background: #fee2e2;
2302 color: #991b1b;
2303 }
2304
2305 .mxchat-log-type-reset .mxchat-log-type {
2306 background: #fce7f3;
2307 color: #9d174d;
2308 }
2309
2310 .mxchat-log-type-settings_export .mxchat-log-type {
2311 background: #d1fae5;
2312 color: #065f46;
2313 }
2314
2315 .mxchat-log-time {
2316 font-size: 11px;
2317 color: #94a3b8;
2318 }
2319
2320 .mxchat-log-message {
2321 color: #334155;
2322 line-height: 1.5;
2323 }
2324
2325 .mxchat-log-data {
2326 margin-top: 8px;
2327 padding: 8px;
2328 background: #f1f5f9;
2329 border-radius: 4px;
2330 font-family: monospace;
2331 font-size: 11px;
2332 color: #64748b;
2333 white-space: pre-wrap;
2334 word-break: break-all;
2335 }
2336
2337 /* Settings Tools Grid */
2338 .mxch-tools-grid {
2339 display: grid;
2340 grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
2341 gap: 24px;
2342 }
2343
2344 .mxch-tool-item {
2345 display: flex;
2346 gap: 16px;
2347 padding: 20px;
2348 background: #f8fafc;
2349 border: 1px solid #e2e8f0;
2350 border-radius: 12px;
2351 transition: all 0.2s ease;
2352 }
2353
2354 .mxch-tool-item:hover {
2355 border-color: var(--mxch-primary, #7873f5);
2356 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
2357 }
2358
2359 .mxch-tool-item-danger {
2360 border-color: #fecaca;
2361 background: #fef2f2;
2362 }
2363
2364 .mxch-tool-item-danger:hover {
2365 border-color: #ef4444;
2366 }
2367
2368 .mxch-tool-icon {
2369 flex-shrink: 0;
2370 width: 48px;
2371 height: 48px;
2372 display: flex;
2373 align-items: center;
2374 justify-content: center;
2375 background: #ffffff;
2376 border-radius: 10px;
2377 color: var(--mxch-primary, #7873f5);
2378 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
2379 }
2380
2381 .mxch-tool-item-danger .mxch-tool-icon {
2382 color: #ef4444;
2383 }
2384
2385 .mxch-tool-content h4 {
2386 margin: 0 0 6px;
2387 font-size: 15px;
2388 font-weight: 600;
2389 color: #1e293b;
2390 }
2391
2392 .mxch-tool-content p {
2393 margin: 0 0 12px;
2394 font-size: 13px;
2395 color: #64748b;
2396 line-height: 1.5;
2397 }
2398
2399 /* Danger Button */
2400 .mxch-btn-danger {
2401 background: #ef4444 !important;
2402 color: #ffffff !important;
2403 border-color: #ef4444 !important;
2404 }
2405
2406 .mxch-btn-danger:hover {
2407 background: #dc2626 !important;
2408 border-color: #dc2626 !important;
2409 }
2410
2411 /* Badge Styles */
2412 .mxch-badge {
2413 display: inline-flex;
2414 align-items: center;
2415 padding: 4px 10px;
2416 font-size: 12px;
2417 font-weight: 500;
2418 border-radius: 20px;
2419 background: #e2e8f0;
2420 color: #475569;
2421 }
2422
2423 .mxch-badge-warning {
2424 background: #fef3c7;
2425 color: #92400e;
2426 }
2427
2428 .mxch-badge-success {
2429 background: #d1fae5;
2430 color: #065f46;
2431 }
2432
2433 .mxch-badge-error {
2434 background: #fee2e2;
2435 color: #991b1b;
2436 }
2437
2438 /* Modal Styles */
2439 .mxch-modal {
2440 position: fixed;
2441 top: 0;
2442 left: 0;
2443 right: 0;
2444 bottom: 0;
2445 z-index: 100000;
2446 display: flex;
2447 align-items: center;
2448 justify-content: center;
2449 }
2450
2451 .mxch-modal-backdrop {
2452 position: absolute;
2453 top: 0;
2454 left: 0;
2455 right: 0;
2456 bottom: 0;
2457 background: rgba(0, 0, 0, 0.5);
2458 }
2459
2460 .mxch-modal-content {
2461 position: relative;
2462 width: 100%;
2463 max-width: 480px;
2464 background: #ffffff;
2465 border-radius: 16px;
2466 box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
2467 margin: 20px;
2468 }
2469
2470 .mxch-modal-header {
2471 display: flex;
2472 justify-content: space-between;
2473 align-items: center;
2474 padding: 20px 24px;
2475 border-bottom: 1px solid #e2e8f0;
2476 }
2477
2478 .mxch-modal-header h3 {
2479 margin: 0;
2480 font-size: 18px;
2481 font-weight: 600;
2482 color: #1e293b;
2483 }
2484
2485 .mxch-modal-close {
2486 width: 32px;
2487 height: 32px;
2488 display: flex;
2489 align-items: center;
2490 justify-content: center;
2491 background: none;
2492 border: none;
2493 font-size: 24px;
2494 color: #64748b;
2495 cursor: pointer;
2496 border-radius: 8px;
2497 transition: all 0.2s ease;
2498 }
2499
2500 .mxch-modal-close:hover {
2501 background: #f1f5f9;
2502 color: #1e293b;
2503 }
2504
2505 .mxch-modal-body {
2506 padding: 24px;
2507 }
2508
2509 .mxch-modal-footer {
2510 display: flex;
2511 justify-content: flex-end;
2512 gap: 12px;
2513 padding: 16px 24px;
2514 border-top: 1px solid #e2e8f0;
2515 background: #f8fafc;
2516 border-radius: 0 0 16px 16px;
2517 }
2518
2519 /* Input in modal */
2520 .mxch-input {
2521 width: 100%;
2522 padding: 10px 14px;
2523 font-size: 14px;
2524 border: 1px solid #d1d5db;
2525 border-radius: 8px;
2526 transition: all 0.2s ease;
2527 }
2528
2529 .mxch-input:focus {
2530 outline: none;
2531 border-color: var(--mxch-primary, #7873f5);
2532 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
2533 }
2534
2535 /* Responsive adjustments for tools */
2536 @media screen and (max-width: 768px) {
2537 .mxch-tools-grid {
2538 grid-template-columns: 1fr;
2539 }
2540
2541 .mxch-tool-item {
2542 flex-direction: column;
2543 text-align: center;
2544 }
2545
2546 .mxch-tool-icon {
2547 margin: 0 auto;
2548 }
2549
2550 .mxchat-debug-log-viewer {
2551 max-height: 300px;
2552 }
2553
2554 .mxch-modal-content {
2555 margin: 10px;
2556 }
2557 }
2558