PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.1.3
MxChat – AI Chatbot & Content Generation for WordPress v3.1.3
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 / chat-transcripts.css

chat-transcripts.css in MxChat – AI Chatbot & Content Generation for WordPress 3.1.3, at css/chat-transcripts.css

2,012 lines 42.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ==========================================================================
2 MxChat Transcripts Page Styles - v2.0
3 Uses admin-sidebar.css for core layout/navigation styles
4 ========================================================================== */
5
6 /* ==========================================================================
7 Stats Grid
8 ========================================================================== */
9 .mxch-stats-grid {
10 display: grid;
11 grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
12 gap: var(--mxch-spacing-lg);
13 margin-bottom: var(--mxch-spacing-xl);
14 }
15
16 .mxch-stat-card {
17 background: var(--mxch-card-bg);
18 border: 1px solid var(--mxch-card-border);
19 border-radius: var(--mxch-radius-lg);
20 padding: var(--mxch-spacing-lg);
21 display: flex;
22 align-items: center;
23 gap: var(--mxch-spacing-md);
24 transition: all var(--mxch-transition);
25 }
26
27 .mxch-stat-card:hover {
28 box-shadow: var(--mxch-card-shadow-hover);
29 transform: translateY(-2px);
30 }
31
32 .mxch-stat-icon {
33 width: 48px;
34 height: 48px;
35 border-radius: var(--mxch-radius-md);
36 display: flex;
37 align-items: center;
38 justify-content: center;
39 flex-shrink: 0;
40 }
41
42 .mxch-stat-icon svg {
43 width: 24px;
44 height: 24px;
45 }
46
47 .mxch-stat-icon-primary {
48 background: rgba(120, 115, 245, 0.1);
49 color: var(--mxch-primary);
50 }
51
52 .mxch-stat-icon-success {
53 background: rgba(16, 185, 129, 0.1);
54 color: var(--mxch-success);
55 }
56
57 .mxch-stat-icon-info {
58 background: rgba(59, 130, 246, 0.1);
59 color: var(--mxch-info);
60 }
61
62 .mxch-stat-icon-warning {
63 background: rgba(245, 158, 11, 0.1);
64 color: var(--mxch-warning);
65 }
66
67 .mxch-stat-content {
68 display: flex;
69 flex-direction: column;
70 }
71
72 .mxch-stat-value {
73 font-size: 28px;
74 font-weight: 700;
75 color: var(--mxch-text-primary);
76 line-height: 1.2;
77 }
78
79 .mxch-stat-label {
80 font-size: 13px;
81 color: var(--mxch-text-secondary);
82 margin-top: 2px;
83 }
84
85 .mxch-stat-sublabel {
86 font-size: 11px;
87 color: var(--mxch-text-muted);
88 margin-top: 4px;
89 }
90
91 /* ==========================================================================
92 Cards Row Layout
93 ========================================================================== */
94 .mxch-cards-row {
95 display: grid;
96 grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
97 gap: var(--mxch-spacing-lg);
98 margin-bottom: var(--mxch-spacing-xl);
99 }
100
101 .mxch-card-flex {
102 display: flex;
103 flex-direction: column;
104 }
105
106 /* ==========================================================================
107 Activity Stats
108 ========================================================================== */
109 .mxch-activity-stats {
110 display: flex;
111 flex-direction: column;
112 gap: var(--mxch-spacing-md);
113 }
114
115 .mxch-activity-item {
116 display: flex;
117 align-items: center;
118 gap: var(--mxch-spacing-md);
119 padding: var(--mxch-spacing-sm);
120 background: #f8fafc;
121 border-radius: var(--mxch-radius-md);
122 }
123
124 .mxch-activity-icon {
125 width: 36px;
126 height: 36px;
127 border-radius: var(--mxch-radius-sm);
128 display: flex;
129 align-items: center;
130 justify-content: center;
131 flex-shrink: 0;
132 }
133
134 .mxch-activity-today {
135 background: rgba(16, 185, 129, 0.1);
136 color: var(--mxch-success);
137 }
138
139 .mxch-activity-week {
140 background: rgba(59, 130, 246, 0.1);
141 color: var(--mxch-info);
142 }
143
144 .mxch-activity-month {
145 background: rgba(120, 115, 245, 0.1);
146 color: var(--mxch-primary);
147 }
148
149 .mxch-activity-content {
150 display: flex;
151 flex-direction: column;
152 }
153
154 .mxch-activity-value {
155 font-size: 20px;
156 font-weight: 700;
157 color: var(--mxch-text-primary);
158 }
159
160 .mxch-activity-label {
161 font-size: 12px;
162 color: var(--mxch-text-secondary);
163 }
164
165 /* ==========================================================================
166 Insights List
167 ========================================================================== */
168 .mxch-insights-list {
169 display: flex;
170 flex-direction: column;
171 gap: var(--mxch-spacing-sm);
172 }
173
174 .mxch-insight-item {
175 display: flex;
176 justify-content: space-between;
177 align-items: center;
178 padding: var(--mxch-spacing-sm) 0;
179 border-bottom: 1px solid var(--mxch-card-border);
180 }
181
182 .mxch-insight-item:last-child {
183 border-bottom: none;
184 }
185
186 .mxch-insight-label {
187 font-size: 13px;
188 color: var(--mxch-text-secondary);
189 }
190
191 .mxch-insight-value {
192 font-size: 14px;
193 font-weight: 600;
194 color: var(--mxch-text-primary);
195 }
196
197 /* Status Badges */
198 .mxch-status-badge {
199 display: inline-flex;
200 align-items: center;
201 padding: 4px 10px;
202 border-radius: 20px;
203 font-size: 12px;
204 font-weight: 600;
205 }
206
207 .mxch-status-active {
208 background: rgba(16, 185, 129, 0.1);
209 color: var(--mxch-success);
210 }
211
212 .mxch-status-moderate {
213 background: rgba(245, 158, 11, 0.1);
214 color: var(--mxch-warning);
215 }
216
217 .mxch-status-quiet {
218 background: rgba(100, 116, 139, 0.1);
219 color: var(--mxch-text-muted);
220 }
221
222 /* ==========================================================================
223 Activity Chart
224 ========================================================================== */
225 .mxch-activity-chart-card .mxch-card-header {
226 display: flex;
227 align-items: center;
228 justify-content: space-between;
229 flex-wrap: wrap;
230 gap: var(--mxch-spacing-sm);
231 }
232
233 .mxch-chart-legend {
234 display: flex;
235 align-items: center;
236 gap: var(--mxch-spacing-lg);
237 }
238
239 .mxch-legend-item {
240 display: flex;
241 align-items: center;
242 gap: 6px;
243 font-size: 12px;
244 font-weight: 500;
245 color: var(--mxch-text-secondary);
246 }
247
248 .mxch-legend-dot {
249 width: 10px;
250 height: 10px;
251 border-radius: 50%;
252 }
253
254 .mxch-legend-chats .mxch-legend-dot {
255 background: #667eea;
256 }
257
258 .mxch-legend-messages .mxch-legend-dot {
259 background: #764ba2;
260 }
261
262 .mxch-chart-container {
263 background: #f9fafb;
264 border-radius: var(--mxch-radius-md);
265 padding: var(--mxch-spacing-lg);
266 border: 1px solid #e5e7eb;
267 }
268
269 #mxchat-activity-chart {
270 max-height: 280px;
271 width: 100% !important;
272 height: 280px !important;
273 }
274
275 /* ==========================================================================
276 Quick Actions
277 ========================================================================== */
278 .mxch-quick-actions {
279 display: flex;
280 flex-wrap: wrap;
281 gap: var(--mxch-spacing-md);
282 }
283
284 .mxch-quick-action-btn {
285 display: flex;
286 align-items: center;
287 gap: var(--mxch-spacing-sm);
288 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
289 background: #f8fafc;
290 border: 1px solid var(--mxch-card-border);
291 border-radius: var(--mxch-radius-md);
292 color: var(--mxch-text-primary);
293 font-size: 14px;
294 font-weight: 500;
295 cursor: pointer;
296 transition: all var(--mxch-transition-fast);
297 }
298
299 .mxch-quick-action-btn:hover {
300 background: var(--mxch-primary);
301 border-color: var(--mxch-primary);
302 color: white;
303 }
304
305 .mxch-quick-action-btn svg {
306 flex-shrink: 0;
307 }
308
309 /* ==========================================================================
310 Transcripts Controls
311 ========================================================================== */
312 .mxch-transcripts-controls {
313 display: flex;
314 flex-wrap: wrap;
315 gap: var(--mxch-spacing-md);
316 align-items: center;
317 justify-content: space-between;
318 }
319
320 .mxch-search-wrapper {
321 display: flex;
322 align-items: center;
323 gap: var(--mxch-spacing-sm);
324 flex: 1;
325 max-width: 400px;
326 position: relative;
327 }
328
329 .mxch-search-wrapper svg {
330 position: absolute;
331 left: 12px;
332 color: var(--mxch-text-muted);
333 pointer-events: none;
334 }
335
336 .mxch-search-wrapper .mxch-input {
337 padding-left: 40px;
338 }
339
340 .mxch-controls-actions {
341 display: flex;
342 flex-wrap: wrap;
343 gap: var(--mxch-spacing-sm);
344 }
345
346 /* Danger Button */
347 .mxch-btn-danger {
348 background: white;
349 color: var(--mxch-error);
350 border: 1px solid var(--mxch-error);
351 }
352
353 .mxch-btn-danger:hover:not(:disabled) {
354 background: var(--mxch-error);
355 color: white;
356 }
357
358 .mxch-btn-danger:disabled {
359 opacity: 0.5;
360 cursor: not-allowed;
361 }
362
363 /* ==========================================================================
364 Split Panel Layout - Chat List + Conversation View
365 ========================================================================== */
366
367 /* Override parent content padding and scrolling for split panel view */
368 .mxch-content:has(#all-chats.mxch-section.active) {
369 padding: 0 !important;
370 overflow: hidden !important; /* Prevent content area from scrolling */
371 height: 100%;
372 }
373
374 #all-chats.mxch-section {
375 padding: 0;
376 margin: 0;
377 height: 100%;
378 overflow: hidden;
379 }
380
381 .mxch-split-panel {
382 display: flex;
383 height: 100%;
384 background: #fff;
385 border: none;
386 border-radius: 0;
387 overflow: hidden;
388 }
389
390 /* Hide the expand button - not needed */
391 .mxch-panel-expand {
392 display: none;
393 }
394
395 /* Left Panel - Chat List */
396 .mxch-chat-list-panel {
397 width: 340px;
398 min-width: 280px;
399 max-width: 400px;
400 display: flex;
401 flex-direction: column;
402 border-right: 1px solid #e5e7eb;
403 background: #fff;
404 min-height: 0; /* Important: allows flex child to shrink below content size */
405 overflow: hidden;
406 }
407
408 /* Bulk Actions Toolbar */
409 .mxch-bulk-toolbar {
410 display: flex;
411 align-items: center;
412 gap: 8px;
413 padding: 10px 12px;
414 background: #f8fafc;
415 border-bottom: 1px solid #e5e7eb;
416 }
417
418 .mxch-bulk-select-all {
419 display: flex;
420 align-items: center;
421 gap: 6px;
422 font-size: 12px;
423 color: #6b7280;
424 cursor: pointer;
425 }
426
427 .mxch-bulk-select-all input[type="checkbox"] {
428 width: 16px;
429 height: 16px;
430 cursor: pointer;
431 accent-color: #3b82f6;
432 }
433
434 .mxch-bulk-actions {
435 display: flex;
436 align-items: center;
437 gap: 4px;
438 margin-left: auto;
439 }
440
441 .mxch-bulk-btn {
442 display: flex;
443 align-items: center;
444 gap: 4px;
445 padding: 6px 10px;
446 font-size: 12px;
447 font-weight: 500;
448 background: #fff;
449 border: 1px solid #e5e7eb;
450 border-radius: 6px;
451 color: #374151;
452 cursor: pointer;
453 transition: all 0.15s;
454 }
455
456 .mxch-bulk-btn:hover {
457 background: #f3f4f6;
458 border-color: #d1d5db;
459 }
460
461 .mxch-bulk-btn.mxch-bulk-delete {
462 color: #dc2626;
463 border-color: #fecaca;
464 }
465
466 .mxch-bulk-btn.mxch-bulk-delete:hover {
467 background: #fef2f2;
468 border-color: #fca5a5;
469 }
470
471 .mxch-bulk-btn:disabled {
472 opacity: 0.5;
473 cursor: not-allowed;
474 }
475
476 .mxch-selected-count {
477 font-size: 11px;
478 color: #3b82f6;
479 font-weight: 600;
480 padding: 2px 8px;
481 background: #eff6ff;
482 border-radius: 10px;
483 display: none;
484 }
485
486 .mxch-selected-count.has-selection {
487 display: inline-block;
488 }
489
490 .mxch-panel-header {
491 padding: 0;
492 border-bottom: 1px solid #e5e7eb;
493 }
494
495 .mxch-panel-title-row {
496 display: flex;
497 align-items: center;
498 justify-content: space-between;
499 padding: 10px 12px;
500 border-bottom: 1px solid #f3f4f6;
501 }
502
503 .mxch-panel-count {
504 font-size: 12px;
505 font-weight: 600;
506 color: #374151;
507 }
508
509 .mxch-panel-actions {
510 display: flex;
511 gap: 4px;
512 }
513
514 .mxch-icon-btn {
515 width: 32px;
516 height: 32px;
517 border: none;
518 background: transparent;
519 color: #6b7280;
520 border-radius: 6px;
521 cursor: pointer;
522 display: flex;
523 align-items: center;
524 justify-content: center;
525 transition: all 0.15s;
526 }
527
528 .mxch-icon-btn:hover {
529 background: #f3f4f6;
530 color: #374151;
531 }
532
533 .mxch-icon-btn.spinning svg {
534 animation: spin 0.5s linear;
535 }
536
537 @keyframes spin {
538 from { transform: rotate(0deg); }
539 to { transform: rotate(360deg); }
540 }
541
542 .mxch-search-wrapper {
543 position: relative;
544 background: #fff;
545 }
546
547 .mxch-search-wrapper svg {
548 position: absolute;
549 left: 10px;
550 top: 50%;
551 transform: translateY(-50%);
552 color: #9ca3af;
553 pointer-events: none;
554 width: 14px;
555 height: 14px;
556 z-index: 1;
557 }
558
559 .mxch-search-input {
560 width: 100%;
561 padding: 10px 12px 10px 32px;
562 border: none;
563 border-radius: 0;
564 font-size: 13px;
565 background: #fff;
566 transition: all 0.15s;
567 box-sizing: border-box;
568 }
569
570 .mxch-search-input:focus {
571 outline: none;
572 background: #fff;
573 box-shadow: none;
574 }
575
576 .mxch-search-input::placeholder {
577 color: #9ca3af;
578 }
579
580 /* Chat List */
581 .mxch-chat-list {
582 flex: 1;
583 overflow-y: auto;
584 }
585
586 .mxch-chat-item {
587 display: flex;
588 align-items: center;
589 gap: 10px;
590 padding: 12px;
591 cursor: pointer;
592 border-bottom: 1px solid #f3f4f6;
593 transition: background 0.15s;
594 position: relative;
595 }
596
597 .mxch-chat-item:hover {
598 background: #f9fafb;
599 }
600
601 .mxch-chat-item.active {
602 background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
603 border-left: 3px solid #3b82f6;
604 padding-left: 9px;
605 }
606
607 .mxch-chat-item.selected {
608 background: #eff6ff;
609 }
610
611 /* Checkbox for chat items */
612 .mxch-chat-checkbox {
613 width: 16px;
614 height: 16px;
615 flex-shrink: 0;
616 cursor: pointer;
617 accent-color: #3b82f6;
618 opacity: 0;
619 transition: opacity 0.15s;
620 }
621
622 .mxch-chat-item:hover .mxch-chat-checkbox,
623 .mxch-chat-item.selected .mxch-chat-checkbox,
624 .mxch-chat-list.selection-mode .mxch-chat-checkbox {
625 opacity: 1;
626 }
627
628 /* Always show checkboxes on mobile/touch devices since hover doesn't work */
629 @media screen and (max-width: 782px) {
630 .mxch-chat-checkbox {
631 opacity: 0.4; /* Subtle but visible */
632 }
633
634 .mxch-chat-item.selected .mxch-chat-checkbox,
635 .mxch-chat-list.selection-mode .mxch-chat-checkbox {
636 opacity: 1;
637 }
638 }
639
640 /* Avatar hidden - cleaner look */
641 .mxch-chat-avatar {
642 display: none;
643 }
644
645 .mxch-chat-info {
646 flex: 1;
647 min-width: 0;
648 }
649
650 .mxch-chat-name {
651 font-size: 14px;
652 font-weight: 600;
653 color: #111827;
654 white-space: nowrap;
655 overflow: hidden;
656 text-overflow: ellipsis;
657 }
658
659 .mxch-chat-preview {
660 font-size: 12px;
661 color: #6b7280;
662 white-space: nowrap;
663 overflow: hidden;
664 text-overflow: ellipsis;
665 margin-top: 2px;
666 }
667
668 .mxch-chat-meta {
669 display: flex;
670 flex-direction: column;
671 align-items: flex-end;
672 gap: 4px;
673 flex-shrink: 0;
674 }
675
676 .mxch-chat-time {
677 font-size: 11px;
678 color: #9ca3af;
679 }
680
681 .mxch-chat-count {
682 font-size: 11px;
683 font-weight: 600;
684 color: #6b7280;
685 background: #f3f4f6;
686 padding: 2px 8px;
687 border-radius: 10px;
688 }
689
690 .mxch-list-loading,
691 .mxch-list-empty {
692 display: flex;
693 align-items: center;
694 justify-content: center;
695 padding: 40px 20px;
696 color: #9ca3af;
697 font-size: 13px;
698 }
699
700 .mxch-panel-footer {
701 padding: 8px 12px;
702 border-top: 1px solid #e5e7eb;
703 background: #f9fafb;
704 }
705
706 .mxch-pagination-btns {
707 display: flex;
708 align-items: center;
709 justify-content: center;
710 gap: 8px;
711 }
712
713 .mxch-page-btn {
714 width: 32px;
715 height: 32px;
716 border: 1px solid #e5e7eb;
717 background: #fff;
718 border-radius: 6px;
719 cursor: pointer;
720 display: flex;
721 align-items: center;
722 justify-content: center;
723 font-size: 14px;
724 color: #374151;
725 transition: all 0.15s;
726 }
727
728 .mxch-page-btn:hover {
729 background: #f3f4f6;
730 border-color: #d1d5db;
731 }
732
733 .mxch-page-info {
734 font-size: 12px;
735 color: #6b7280;
736 }
737
738 /* Expand Button */
739 .mxch-panel-expand {
740 width: 24px;
741 background: #f9fafb;
742 border: none;
743 border-left: 1px solid #e5e7eb;
744 border-right: 1px solid #e5e7eb;
745 cursor: pointer;
746 display: flex;
747 align-items: center;
748 justify-content: center;
749 color: #9ca3af;
750 transition: all 0.15s;
751 }
752
753 .mxch-panel-expand:hover {
754 background: #f3f4f6;
755 color: #374151;
756 }
757
758 /* Right Panel - Conversation View */
759 .mxch-conversation-panel {
760 flex: 1;
761 display: flex;
762 flex-direction: column;
763 background: #f9fafb;
764 min-height: 0; /* Important: allows flex child to shrink below content size */
765 overflow: hidden;
766 }
767
768 /* Empty State */
769 .mxch-conversation-empty {
770 flex: 1;
771 display: flex;
772 flex-direction: column;
773 align-items: center;
774 justify-content: center;
775 color: #9ca3af;
776 text-align: center;
777 padding: 40px;
778 }
779
780 .mxch-empty-icon {
781 margin-bottom: 16px;
782 opacity: 0.5;
783 }
784
785 .mxch-conversation-empty h3 {
786 font-size: 16px;
787 font-weight: 600;
788 color: #6b7280;
789 margin: 0 0 8px 0;
790 }
791
792 .mxch-conversation-empty p {
793 font-size: 13px;
794 margin: 0;
795 }
796
797 /* Conversation Content */
798 .mxch-conversation-content {
799 display: flex;
800 flex-direction: column;
801 height: 100%;
802 min-height: 0; /* Important: allows flex child to shrink below content size */
803 overflow: hidden;
804 }
805
806 .mxch-conversation-header {
807 display: flex;
808 align-items: center;
809 gap: 12px;
810 padding: 16px 20px;
811 background: #fff;
812 border-bottom: 1px solid #e5e7eb;
813 }
814
815 .mxch-user-avatar {
816 width: 44px;
817 height: 44px;
818 border-radius: 50%;
819 background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
820 display: flex;
821 align-items: center;
822 justify-content: center;
823 flex-shrink: 0;
824 }
825
826 .mxch-user-avatar span {
827 color: #fff;
828 font-size: 15px;
829 font-weight: 600;
830 }
831
832 .mxch-user-info {
833 flex: 1;
834 min-width: 0; /* Allow flex item to shrink below content size */
835 overflow: hidden;
836 }
837
838 .mxch-user-name {
839 font-size: 15px;
840 font-weight: 600;
841 color: #111827;
842 overflow: hidden;
843 text-overflow: ellipsis;
844 white-space: nowrap;
845 }
846
847 .mxch-user-meta {
848 font-size: 12px;
849 color: #6b7280;
850 margin-top: 2px;
851 overflow: hidden;
852 text-overflow: ellipsis;
853 white-space: nowrap;
854 }
855
856 .mxch-details-toggle {
857 width: 36px;
858 height: 36px;
859 border: 1px solid #e5e7eb;
860 background: #fff;
861 border-radius: 8px;
862 cursor: pointer;
863 display: flex;
864 align-items: center;
865 justify-content: center;
866 color: #6b7280;
867 transition: all 0.15s;
868 }
869
870 .mxch-details-toggle:hover,
871 .mxch-details-toggle.active {
872 background: #f3f4f6;
873 color: #374151;
874 }
875
876 /* Details Drawer */
877 .mxch-details-drawer {
878 background: #fff;
879 border-bottom: 1px solid #e5e7eb;
880 padding: 16px 20px;
881 }
882
883 .mxch-details-section {
884 margin-bottom: 16px;
885 }
886
887 .mxch-details-section:last-child {
888 margin-bottom: 0;
889 }
890
891 .mxch-details-section h4 {
892 font-size: 11px;
893 font-weight: 600;
894 color: #9ca3af;
895 text-transform: uppercase;
896 letter-spacing: 0.5px;
897 margin: 0 0 10px 0;
898 }
899
900 .mxch-detail-row {
901 display: flex;
902 justify-content: space-between;
903 align-items: center;
904 padding: 6px 0;
905 font-size: 13px;
906 }
907
908 .mxch-detail-label {
909 color: #6b7280;
910 }
911
912 .mxch-detail-value {
913 color: #111827;
914 font-weight: 500;
915 }
916
917 .mxch-detail-value a {
918 color: #3b82f6;
919 text-decoration: none;
920 }
921
922 .mxch-detail-value a:hover {
923 text-decoration: underline;
924 }
925
926 .mxch-clicked-links {
927 display: flex;
928 flex-direction: column;
929 gap: 6px;
930 }
931
932 .mxch-clicked-link {
933 font-size: 12px;
934 color: #3b82f6;
935 text-decoration: none;
936 padding: 6px 10px;
937 background: #eff6ff;
938 border-radius: 6px;
939 white-space: nowrap;
940 overflow: hidden;
941 text-overflow: ellipsis;
942 }
943
944 .mxch-clicked-link:hover {
945 background: #dbeafe;
946 }
947
948 .mxch-details-actions {
949 display: flex;
950 gap: 8px;
951 margin-top: 16px;
952 padding-top: 16px;
953 border-top: 1px solid #f3f4f6;
954 }
955
956 .mxch-btn-sm {
957 padding: 8px 12px;
958 font-size: 12px;
959 }
960
961 /* Translate Controls */
962 .mxch-translate-section {
963 margin-top: 12px;
964 padding-top: 12px;
965 border-top: 1px solid #f3f4f6;
966 }
967
968 .mxch-translate-controls {
969 display: flex;
970 align-items: center;
971 gap: 8px;
972 }
973
974 .mxch-translate-select {
975 padding: 6px 10px;
976 font-size: 12px;
977 border: 1px solid #e5e7eb;
978 border-radius: 6px;
979 background: #fff;
980 color: #374151;
981 cursor: pointer;
982 min-width: 100px;
983 }
984
985 .mxch-translate-select:focus {
986 outline: none;
987 border-color: #3b82f6;
988 box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
989 }
990
991 #mxch-translate-btn,
992 #mxch-show-original-btn {
993 display: inline-flex;
994 align-items: center;
995 gap: 6px;
996 }
997
998 #mxch-translate-btn svg,
999 #mxch-show-original-btn svg {
1000 width: 14px;
1001 height: 14px;
1002 flex-shrink: 0;
1003 }
1004
1005 #mxch-translate-btn:disabled {
1006 opacity: 0.6;
1007 cursor: not-allowed;
1008 }
1009
1010 .mxch-translate-spinner {
1011 animation: spin 1s linear infinite;
1012 }
1013
1014 @keyframes mxch-translate-spin {
1015 from { transform: rotate(0deg); }
1016 to { transform: rotate(360deg); }
1017 }
1018
1019 /* Translated message indicator */
1020 .mxch-message-bubble.translated {
1021 position: relative;
1022 }
1023
1024 .mxch-message-bubble.translated::after {
1025 content: '';
1026 position: absolute;
1027 top: 6px;
1028 right: 6px;
1029 width: 6px;
1030 height: 6px;
1031 background: #3b82f6;
1032 border-radius: 50%;
1033 opacity: 0.6;
1034 }
1035
1036 /* Messages Area */
1037 .mxch-messages-area {
1038 flex: 1;
1039 overflow-y: auto;
1040 padding: 20px;
1041 }
1042
1043 /* Mobile back button - hidden by default on desktop */
1044 .mxch-mobile-back-btn {
1045 display: none;
1046 }
1047
1048 .mxch-messages-loading,
1049 .mxch-messages-error {
1050 display: flex;
1051 align-items: center;
1052 justify-content: center;
1053 padding: 40px;
1054 color: #9ca3af;
1055 font-size: 13px;
1056 }
1057
1058 /* Message Styles */
1059 .mxch-message {
1060 margin-bottom: 20px;
1061 }
1062
1063 .mxch-message:last-child {
1064 margin-bottom: 0;
1065 }
1066
1067 /* User Message */
1068 .mxch-message-user {
1069 display: flex;
1070 flex-direction: column;
1071 align-items: flex-end;
1072 }
1073
1074 .mxch-message-user .mxch-message-row {
1075 max-width: 70%;
1076 min-width: 120px;
1077 }
1078
1079 .mxch-message-user .mxch-message-bubble {
1080 background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
1081 color: #fff;
1082 padding: 12px 16px;
1083 border-radius: 18px 18px 4px 18px;
1084 font-size: 14px;
1085 line-height: 1.5;
1086 min-width: 80px;
1087 }
1088
1089 .mxch-message-user .mxch-message-bubble a {
1090 color: #bfdbfe;
1091 text-decoration: underline;
1092 }
1093
1094 .mxch-message-user .mxch-message-time {
1095 font-size: 11px;
1096 color: #9ca3af;
1097 margin-top: 4px;
1098 }
1099
1100 /* Bot Message */
1101 .mxch-message-bot {
1102 display: flex;
1103 flex-direction: column;
1104 align-items: flex-start;
1105 }
1106
1107 .mxch-message-header {
1108 display: flex;
1109 align-items: center;
1110 gap: 10px;
1111 margin-bottom: 6px;
1112 }
1113
1114 .mxch-bot-label {
1115 font-size: 11px;
1116 font-weight: 600;
1117 color: #059669;
1118 text-transform: uppercase;
1119 letter-spacing: 0.5px;
1120 }
1121
1122 .mxch-rag-link {
1123 font-size: 11px;
1124 color: #3b82f6;
1125 text-decoration: none;
1126 font-weight: 500;
1127 padding: 2px 8px;
1128 background: #eff6ff;
1129 border-radius: 4px;
1130 transition: all 0.15s;
1131 }
1132
1133 .mxch-rag-link:hover {
1134 background: #dbeafe;
1135 }
1136
1137 .mxch-message-bot .mxch-message-row {
1138 max-width: 80%;
1139 min-width: 150px;
1140 }
1141
1142 .mxch-message-bot .mxch-message-bubble {
1143 background: #fff;
1144 border: 1px solid #e5e7eb;
1145 color: #374151;
1146 padding: 12px 16px;
1147 border-radius: 18px 18px 18px 4px;
1148 font-size: 14px;
1149 line-height: 1.5;
1150 min-width: 100px;
1151 }
1152
1153 .mxch-message-bot .mxch-message-bubble a {
1154 color: #3b82f6;
1155 }
1156
1157 .mxch-message-bot .mxch-message-time {
1158 font-size: 11px;
1159 color: #9ca3af;
1160 margin-top: 4px;
1161 }
1162
1163 /* Message Content Styles */
1164 .mxch-message-bubble p {
1165 margin: 0 0 10px 0;
1166 }
1167
1168 .mxch-message-bubble p:last-child {
1169 margin-bottom: 0;
1170 }
1171
1172 .mxch-message-bubble ul,
1173 .mxch-message-bubble ol {
1174 margin: 10px 0;
1175 padding-left: 20px;
1176 }
1177
1178 .mxch-message-bubble li {
1179 margin: 4px 0;
1180 }
1181
1182 .mxch-message-bubble code {
1183 background: rgba(0, 0, 0, 0.08);
1184 padding: 2px 6px;
1185 border-radius: 4px;
1186 font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1187 font-size: 0.9em;
1188 }
1189
1190 .mxch-message-user .mxch-message-bubble code {
1191 background: rgba(255, 255, 255, 0.2);
1192 }
1193
1194 .mxch-message-bubble pre {
1195 background: #1e293b;
1196 color: #e2e8f0;
1197 padding: 12px 14px;
1198 border-radius: 8px;
1199 overflow-x: auto;
1200 margin: 10px 0;
1201 font-size: 13px;
1202 }
1203
1204 .mxch-message-bubble pre code {
1205 background: none;
1206 padding: 0;
1207 color: inherit;
1208 }
1209
1210 /* Scrollbar Styling */
1211 .mxch-chat-list::-webkit-scrollbar,
1212 .mxch-messages-area::-webkit-scrollbar {
1213 width: 6px;
1214 }
1215
1216 .mxch-chat-list::-webkit-scrollbar-track,
1217 .mxch-messages-area::-webkit-scrollbar-track {
1218 background: transparent;
1219 }
1220
1221 .mxch-chat-list::-webkit-scrollbar-thumb,
1222 .mxch-messages-area::-webkit-scrollbar-thumb {
1223 background: #d1d5db;
1224 border-radius: 3px;
1225 }
1226
1227 .mxch-chat-list::-webkit-scrollbar-thumb:hover,
1228 .mxch-messages-area::-webkit-scrollbar-thumb:hover {
1229 background: #9ca3af;
1230 }
1231
1232 /* Responsive Split Panel - Tablet */
1233 @media screen and (max-width: 900px) and (min-width: 783px) {
1234 #all-chats.mxch-section {
1235 padding: 0;
1236 }
1237
1238 .mxch-split-panel {
1239 flex-direction: column;
1240 height: auto;
1241 }
1242
1243 .mxch-chat-list-panel {
1244 width: 100%;
1245 max-width: none;
1246 height: 350px;
1247 border-right: none;
1248 border-bottom: 1px solid #e5e7eb;
1249 }
1250
1251 .mxch-panel-expand {
1252 display: none;
1253 }
1254
1255 .mxch-conversation-panel {
1256 min-height: 400px;
1257 }
1258
1259 .mxch-bulk-toolbar {
1260 flex-wrap: wrap;
1261 }
1262
1263 .mxch-bulk-btn span {
1264 display: none;
1265 }
1266 }
1267
1268 /* ==========================================================================
1269 Mobile Split Panel - Full Screen Panels
1270 ========================================================================== */
1271 @media screen and (max-width: 782px) {
1272 #all-chats.mxch-section {
1273 padding: 0;
1274 /* Mobile viewport height with fallbacks for browser address bar */
1275 /* 1. Fallback: standard vh (may be cut off by browser chrome) */
1276 height: calc(100vh - 46px - 32px);
1277 /* 2. Better: dvh (dynamic viewport height) for modern browsers */
1278 height: calc(100dvh - 46px - 32px);
1279 /* 3. Best: JS-calculated actual viewport via CSS custom property */
1280 height: calc(var(--mxch-mobile-vh, 100vh) - 46px - 32px);
1281 overflow: hidden;
1282 }
1283
1284 .mxch-split-panel {
1285 height: 100%;
1286 position: relative;
1287 }
1288
1289 /* Chat List - Full screen on mobile */
1290 .mxch-chat-list-panel {
1291 width: 100%;
1292 max-width: none;
1293 height: 100%;
1294 border-right: none;
1295 position: absolute;
1296 top: 0;
1297 left: 0;
1298 right: 0;
1299 bottom: 0;
1300 z-index: 10;
1301 transition: transform 0.3s ease;
1302 }
1303
1304 .mxch-chat-list-panel.panel-hidden {
1305 transform: translateX(-100%);
1306 }
1307
1308 .mxch-chat-list {
1309 flex: 1;
1310 overflow-y: auto;
1311 -webkit-overflow-scrolling: touch;
1312 }
1313
1314 /* Conversation Panel - Slide over from right */
1315 .mxch-conversation-panel {
1316 position: absolute;
1317 top: 0;
1318 left: 0;
1319 right: 0;
1320 bottom: 0;
1321 z-index: 20;
1322 transform: translateX(100%);
1323 transition: transform 0.3s ease;
1324 min-height: 0;
1325 height: 100%;
1326 display: flex;
1327 flex-direction: column;
1328 }
1329
1330 .mxch-conversation-panel.panel-active {
1331 transform: translateX(0);
1332 }
1333
1334 /* Mobile back button in conversation header */
1335 .mxch-mobile-back-btn {
1336 display: flex !important;
1337 align-items: center;
1338 justify-content: center;
1339 width: 36px;
1340 height: 36px;
1341 background: #f3f4f6;
1342 border: none;
1343 border-radius: 8px;
1344 color: #374151;
1345 cursor: pointer;
1346 margin-right: 8px;
1347 flex-shrink: 0;
1348 }
1349
1350 .mxch-mobile-back-btn:hover {
1351 background: #e5e7eb;
1352 }
1353
1354 /* Ensure conversation content scrolls properly */
1355 .mxch-conversation-content {
1356 flex: 1;
1357 display: flex;
1358 flex-direction: column;
1359 min-height: 0;
1360 overflow: hidden;
1361 }
1362
1363 /* Messages area scroll fix for mobile */
1364 .mxch-messages-area {
1365 flex: 1;
1366 overflow-y: auto;
1367 -webkit-overflow-scrolling: touch;
1368 padding: 16px;
1369 padding-bottom: 24px; /* Extra padding at bottom for visibility */
1370 }
1371
1372 /* Hide expand button on mobile */
1373 .mxch-panel-expand {
1374 display: none;
1375 }
1376
1377 /* Adjust bulk toolbar for mobile */
1378 .mxch-bulk-toolbar {
1379 flex-wrap: wrap;
1380 gap: 6px;
1381 padding: 8px 10px;
1382 }
1383
1384 .mxch-bulk-btn span {
1385 display: none;
1386 }
1387
1388 /* Make chat items more tappable */
1389 .mxch-chat-item {
1390 padding: 14px 12px;
1391 }
1392
1393 /* Adjust conversation header for mobile */
1394 .mxch-conversation-header {
1395 padding: 12px 16px;
1396 flex-shrink: 0;
1397 }
1398
1399 /* Details drawer adjustments */
1400 .mxch-details-drawer {
1401 max-height: 200px;
1402 overflow-y: auto;
1403 flex-shrink: 0;
1404 }
1405
1406 /* Conversation empty state on mobile */
1407 .mxch-conversation-empty {
1408 display: none;
1409 }
1410 }
1411
1412 /* ==========================================================================
1413 Pagination
1414 ========================================================================== */
1415 .mxch-pagination {
1416 display: flex;
1417 flex-wrap: wrap;
1418 justify-content: space-between;
1419 align-items: center;
1420 margin-top: var(--mxch-spacing-lg);
1421 padding: var(--mxch-spacing-md);
1422 background: var(--mxch-card-bg);
1423 border: 1px solid var(--mxch-card-border);
1424 border-radius: var(--mxch-radius-md);
1425 }
1426
1427 .mxch-pagination-info {
1428 font-size: 13px;
1429 color: var(--mxch-text-secondary);
1430 }
1431
1432 .mxch-pagination-controls {
1433 display: flex;
1434 flex-wrap: wrap;
1435 gap: 4px;
1436 }
1437
1438 .mxch-pagination-btn {
1439 padding: 6px 12px;
1440 background: #f8fafc;
1441 border: 1px solid var(--mxch-card-border);
1442 border-radius: var(--mxch-radius-sm);
1443 color: var(--mxch-text-primary);
1444 font-size: 13px;
1445 cursor: pointer;
1446 transition: all var(--mxch-transition-fast);
1447 }
1448
1449 .mxch-pagination-btn:hover {
1450 background: #e2e8f0;
1451 }
1452
1453 .mxch-pagination-btn.active {
1454 background: var(--mxch-primary);
1455 border-color: var(--mxch-primary);
1456 color: white;
1457 }
1458
1459 .mxch-pagination-ellipsis {
1460 padding: 6px 8px;
1461 color: var(--mxch-text-muted);
1462 }
1463
1464 /* ==========================================================================
1465 No Results
1466 ========================================================================== */
1467 .mxch-no-results {
1468 text-align: center;
1469 padding: var(--mxch-spacing-xl) var(--mxch-spacing-lg);
1470 color: var(--mxch-text-muted);
1471 background: #f9fafb;
1472 border: 2px dashed var(--mxch-card-border);
1473 border-radius: var(--mxch-radius-lg);
1474 }
1475
1476 .mxch-no-results svg {
1477 width: 48px;
1478 height: 48px;
1479 margin-bottom: var(--mxch-spacing-md);
1480 opacity: 0.5;
1481 }
1482
1483 .mxch-no-results h3 {
1484 font-size: 16px;
1485 font-weight: 600;
1486 color: var(--mxch-text-secondary);
1487 margin: 0 0 var(--mxch-spacing-xs) 0;
1488 }
1489
1490 .mxch-no-results p {
1491 font-size: 14px;
1492 margin: 0;
1493 }
1494
1495 /* ==========================================================================
1496 Toggle Row
1497 ========================================================================== */
1498 .mxch-toggle-row {
1499 display: flex;
1500 align-items: center;
1501 gap: var(--mxch-spacing-sm);
1502 }
1503
1504 .mxch-toggle-label {
1505 font-size: 14px;
1506 font-weight: 500;
1507 color: var(--mxch-text-primary);
1508 }
1509
1510 /* ==========================================================================
1511 Modal Styles
1512 ========================================================================== */
1513 .mxch-modal-overlay {
1514 position: fixed;
1515 top: 0;
1516 left: 0;
1517 right: 0;
1518 bottom: 0;
1519 background: rgba(0, 0, 0, 0.5);
1520 display: flex;
1521 align-items: center;
1522 justify-content: center;
1523 z-index: 100000;
1524 animation: mxchFadeIn 0.2s ease;
1525 }
1526
1527 .mxch-modal-content {
1528 background: white;
1529 border-radius: var(--mxch-radius-lg);
1530 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
1531 width: 90%;
1532 max-width: 600px;
1533 max-height: 80vh;
1534 display: flex;
1535 flex-direction: column;
1536 animation: mxchSlideIn 0.2s ease;
1537 }
1538
1539 @keyframes mxchSlideIn {
1540 from {
1541 transform: translateY(-20px);
1542 opacity: 0;
1543 }
1544 to {
1545 transform: translateY(0);
1546 opacity: 1;
1547 }
1548 }
1549
1550 .mxch-modal-header {
1551 display: flex;
1552 align-items: center;
1553 justify-content: space-between;
1554 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
1555 border-bottom: 1px solid var(--mxch-card-border);
1556 }
1557
1558 .mxch-modal-header h2 {
1559 font-size: 18px;
1560 font-weight: 600;
1561 color: var(--mxch-text-primary);
1562 margin: 0;
1563 }
1564
1565 .mxch-modal-close {
1566 width: 32px;
1567 height: 32px;
1568 display: flex;
1569 align-items: center;
1570 justify-content: center;
1571 background: none;
1572 border: none;
1573 font-size: 24px;
1574 color: var(--mxch-text-muted);
1575 cursor: pointer;
1576 border-radius: var(--mxch-radius-sm);
1577 transition: all var(--mxch-transition-fast);
1578 }
1579
1580 .mxch-modal-close:hover {
1581 background: #f1f5f9;
1582 color: var(--mxch-text-primary);
1583 }
1584
1585 .mxch-modal-body {
1586 flex: 1;
1587 padding: var(--mxch-spacing-lg);
1588 overflow-y: auto;
1589 }
1590
1591 /* RAG Context Styles */
1592 .mxch-rag-summary {
1593 display: flex;
1594 flex-wrap: wrap;
1595 gap: var(--mxch-spacing-md);
1596 padding: var(--mxch-spacing-md);
1597 background: #f8fafc;
1598 border-radius: var(--mxch-radius-md);
1599 margin-bottom: var(--mxch-spacing-lg);
1600 }
1601
1602 .mxch-rag-summary-item {
1603 font-size: 13px;
1604 }
1605
1606 .mxch-rag-label {
1607 color: var(--mxch-text-secondary);
1608 }
1609
1610 .mxch-rag-value {
1611 font-weight: 600;
1612 color: var(--mxch-text-primary);
1613 }
1614
1615 .mxch-rag-matches h3 {
1616 font-size: 14px;
1617 font-weight: 600;
1618 color: var(--mxch-text-primary);
1619 margin: 0 0 var(--mxch-spacing-md) 0;
1620 }
1621
1622 .mxch-rag-match-card {
1623 border: 1px solid var(--mxch-card-border);
1624 border-radius: var(--mxch-radius-md);
1625 padding: var(--mxch-spacing-md);
1626 margin-bottom: var(--mxch-spacing-sm);
1627 }
1628
1629 .mxch-rag-match-used {
1630 border-color: rgba(16, 185, 129, 0.3);
1631 background: rgba(16, 185, 129, 0.05);
1632 }
1633
1634 .mxch-rag-match-below {
1635 border-color: var(--mxch-card-border);
1636 background: #fafafa;
1637 }
1638
1639 .mxch-rag-match-header {
1640 display: flex;
1641 align-items: center;
1642 gap: var(--mxch-spacing-sm);
1643 margin-bottom: var(--mxch-spacing-sm);
1644 }
1645
1646 .mxch-rag-match-score {
1647 font-size: 14px;
1648 font-weight: 700;
1649 color: var(--mxch-primary);
1650 }
1651
1652 .mxch-rag-chunk-badge {
1653 font-size: 11px;
1654 padding: 2px 8px;
1655 background: rgba(120, 115, 245, 0.1);
1656 color: var(--mxch-primary);
1657 border-radius: 10px;
1658 }
1659
1660 .mxch-rag-match-status {
1661 margin-left: auto;
1662 font-size: 12px;
1663 font-weight: 500;
1664 }
1665
1666 .mxch-rag-match-status.status-used {
1667 color: var(--mxch-success);
1668 }
1669
1670 .mxch-rag-match-status.status-below {
1671 color: var(--mxch-text-muted);
1672 }
1673
1674 .mxch-rag-match-source {
1675 font-size: 13px;
1676 color: var(--mxch-text-secondary);
1677 word-break: break-all;
1678 }
1679
1680 .mxch-rag-match-source a {
1681 color: var(--mxch-primary);
1682 text-decoration: none;
1683 }
1684
1685 .mxch-rag-match-source a:hover {
1686 text-decoration: underline;
1687 }
1688
1689 /* Context Modal Tabs */
1690 .mxch-context-tabs {
1691 display: flex;
1692 gap: 4px;
1693 padding: 4px;
1694 background: #f1f5f9;
1695 border-radius: var(--mxch-radius-md);
1696 margin-bottom: var(--mxch-spacing-md);
1697 }
1698
1699 .mxch-context-tab {
1700 flex: 1;
1701 display: flex;
1702 align-items: center;
1703 justify-content: center;
1704 gap: 8px;
1705 padding: 10px 16px;
1706 border: none;
1707 background: transparent;
1708 border-radius: var(--mxch-radius-sm);
1709 font-size: 13px;
1710 font-weight: 500;
1711 color: var(--mxch-text-secondary);
1712 cursor: pointer;
1713 transition: all var(--mxch-transition-fast);
1714 }
1715
1716 .mxch-context-tab:hover {
1717 color: var(--mxch-text-primary);
1718 background: rgba(255, 255, 255, 0.5);
1719 }
1720
1721 .mxch-context-tab.active {
1722 background: white;
1723 color: var(--mxch-primary);
1724 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1725 }
1726
1727 .mxch-context-tab svg {
1728 width: 16px;
1729 height: 16px;
1730 flex-shrink: 0;
1731 }
1732
1733 .mxch-tab-badge {
1734 display: inline-flex;
1735 align-items: center;
1736 justify-content: center;
1737 min-width: 20px;
1738 height: 20px;
1739 padding: 0 6px;
1740 background: rgba(120, 115, 245, 0.1);
1741 color: var(--mxch-primary);
1742 font-size: 11px;
1743 font-weight: 600;
1744 border-radius: 10px;
1745 }
1746
1747 .mxch-context-tab.active .mxch-tab-badge {
1748 background: var(--mxch-primary);
1749 color: white;
1750 }
1751
1752 .mxch-tab-content {
1753 min-height: 200px;
1754 }
1755
1756 /* Action Specific Styles */
1757 .mxch-action-triggered {
1758 border-color: rgba(245, 158, 11, 0.4);
1759 background: rgba(245, 158, 11, 0.08);
1760 }
1761
1762 .mxch-action-threshold-badge {
1763 font-size: 11px;
1764 padding: 2px 8px;
1765 background: rgba(100, 116, 139, 0.1);
1766 color: var(--mxch-text-secondary);
1767 border-radius: 10px;
1768 }
1769
1770 .mxch-rag-match-status.status-triggered {
1771 color: #f59e0b;
1772 font-weight: 600;
1773 }
1774
1775 .mxch-action-details {
1776 margin-top: var(--mxch-spacing-sm);
1777 }
1778
1779 .mxch-action-label {
1780 font-size: 14px;
1781 font-weight: 600;
1782 color: var(--mxch-text-primary);
1783 margin-bottom: 4px;
1784 }
1785
1786 .mxch-action-callback {
1787 font-size: 12px;
1788 color: var(--mxch-text-muted);
1789 font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
1790 }
1791
1792 .mxch-action-callback-label {
1793 color: var(--mxch-text-secondary);
1794 font-family: inherit;
1795 }
1796
1797 /* Action Score Bar Visualization */
1798 .mxch-action-score-bar {
1799 position: relative;
1800 height: 6px;
1801 background: #e2e8f0;
1802 border-radius: 3px;
1803 margin-top: var(--mxch-spacing-sm);
1804 overflow: visible;
1805 }
1806
1807 .mxch-action-score-fill {
1808 position: absolute;
1809 left: 0;
1810 top: 0;
1811 height: 100%;
1812 background: linear-gradient(90deg, #7873f5, #a5a1fa);
1813 border-radius: 3px;
1814 transition: width 0.3s ease;
1815 }
1816
1817 .mxch-action-triggered .mxch-action-score-fill {
1818 background: linear-gradient(90deg, #f59e0b, #fbbf24);
1819 }
1820
1821 .mxch-action-threshold-marker {
1822 position: absolute;
1823 top: -4px;
1824 width: 2px;
1825 height: 14px;
1826 background: #ef4444;
1827 border-radius: 1px;
1828 transform: translateX(-50%);
1829 }
1830
1831 .mxch-action-threshold-marker::after {
1832 content: '';
1833 position: absolute;
1834 top: -3px;
1835 left: 50%;
1836 transform: translateX(-50%);
1837 width: 0;
1838 height: 0;
1839 border-left: 4px solid transparent;
1840 border-right: 4px solid transparent;
1841 border-top: 4px solid #ef4444;
1842 }
1843
1844 /* No Results State */
1845 .mxch-no-results {
1846 text-align: center;
1847 padding: var(--mxch-spacing-xl);
1848 color: var(--mxch-text-secondary);
1849 }
1850
1851 .mxch-no-results p {
1852 margin: 0;
1853 }
1854
1855 /* ==========================================================================
1856 Responsive Adjustments
1857 ========================================================================== */
1858 @media screen and (max-width: 768px) {
1859 .mxch-stats-grid {
1860 grid-template-columns: repeat(2, 1fr);
1861 }
1862
1863 .mxch-stat-card {
1864 padding: var(--mxch-spacing-md);
1865 }
1866
1867 .mxch-stat-value {
1868 font-size: 22px;
1869 }
1870
1871 .mxch-cards-row {
1872 grid-template-columns: 1fr;
1873 }
1874
1875 .mxch-transcripts-controls {
1876 flex-direction: column;
1877 align-items: stretch;
1878 }
1879
1880 .mxch-search-wrapper {
1881 max-width: none;
1882 }
1883
1884 .mxch-controls-actions {
1885 justify-content: flex-end;
1886 }
1887
1888 .mxch-session-header {
1889 flex-direction: column;
1890 gap: var(--mxch-spacing-sm);
1891 }
1892
1893 .mxch-session-actions {
1894 opacity: 1;
1895 align-self: flex-end;
1896 }
1897
1898 .mxch-pagination {
1899 flex-direction: column;
1900 gap: var(--mxch-spacing-md);
1901 align-items: flex-start;
1902 }
1903
1904 .mxch-quick-actions {
1905 flex-direction: column;
1906 }
1907
1908 .mxch-quick-action-btn {
1909 width: 100%;
1910 justify-content: center;
1911 }
1912
1913 /* Chart responsive */
1914 .mxch-activity-chart-card .mxch-card-header {
1915 flex-direction: column;
1916 align-items: flex-start;
1917 }
1918
1919 .mxch-chart-legend {
1920 margin-top: var(--mxch-spacing-xs);
1921 }
1922
1923 #mxchat-activity-chart {
1924 height: 220px !important;
1925 }
1926 }
1927
1928 @media screen and (max-width: 480px) {
1929 .mxch-stats-grid {
1930 grid-template-columns: 1fr;
1931 }
1932
1933 .mxch-controls-actions {
1934 flex-direction: column;
1935 width: 100%;
1936 }
1937
1938 .mxch-controls-actions .mxch-btn {
1939 width: 100%;
1940 justify-content: center;
1941 }
1942
1943 .mxch-controls-actions form {
1944 width: 100%;
1945 }
1946 }
1947
1948 /* Product Card in Transcripts */
1949 .mxch-message-bubble .mxchat-product-card {
1950 display: flex;
1951 flex-direction: column;
1952 align-items: center;
1953 margin: 8px 0;
1954 padding: 12px;
1955 border-radius: 8px;
1956 background: #f9f9f9;
1957 border: 1px solid #e5e5e5;
1958 max-width: 280px;
1959 }
1960
1961 .mxch-message-bubble .mxchat-product-card a.mxchat-product-link {
1962 text-decoration: none;
1963 color: inherit;
1964 display: flex;
1965 flex-direction: column;
1966 align-items: center;
1967 }
1968
1969 .mxch-message-bubble .mxchat-product-card img.mxchat-product-image {
1970 max-width: 100%;
1971 height: auto;
1972 max-height: 180px;
1973 object-fit: contain;
1974 margin-bottom: 8px;
1975 border-radius: 6px;
1976 }
1977
1978 .mxch-message-bubble .mxchat-product-card h3.mxchat-product-name {
1979 font-size: 14px;
1980 font-weight: 600;
1981 margin: 4px 0;
1982 text-align: center;
1983 color: #1a1a1a;
1984 }
1985
1986 .mxch-message-bubble .mxchat-product-card .mxchat-product-price {
1987 color: #2e7d32;
1988 font-weight: 600;
1989 font-size: 15px;
1990 margin: 4px 0 8px;
1991 }
1992
1993 .mxch-message-bubble .mxchat-product-card .mxchat-add-to-cart-button {
1994 background-color: #212121;
1995 color: #fff;
1996 padding: 7px 16px;
1997 border: none;
1998 border-radius: 6px;
1999 font-size: 13px;
2000 cursor: default;
2001 opacity: 0.6;
2002 }
2003
2004 .mxch-message-bubble .mxchat-product-card select {
2005 width: 100%;
2006 padding: 6px 8px;
2007 margin: 4px 0;
2008 border: 1px solid #ddd;
2009 border-radius: 4px;
2010 font-size: 13px;
2011 }
2012