PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.0.3
MxChat – AI Chatbot & Content Generation for WordPress v3.0.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.0.3, at css/chat-transcripts.css

1,698 lines 35.6 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 }
835
836 .mxch-user-name {
837 font-size: 15px;
838 font-weight: 600;
839 color: #111827;
840 }
841
842 .mxch-user-meta {
843 font-size: 12px;
844 color: #6b7280;
845 margin-top: 2px;
846 }
847
848 .mxch-details-toggle {
849 width: 36px;
850 height: 36px;
851 border: 1px solid #e5e7eb;
852 background: #fff;
853 border-radius: 8px;
854 cursor: pointer;
855 display: flex;
856 align-items: center;
857 justify-content: center;
858 color: #6b7280;
859 transition: all 0.15s;
860 }
861
862 .mxch-details-toggle:hover,
863 .mxch-details-toggle.active {
864 background: #f3f4f6;
865 color: #374151;
866 }
867
868 /* Details Drawer */
869 .mxch-details-drawer {
870 background: #fff;
871 border-bottom: 1px solid #e5e7eb;
872 padding: 16px 20px;
873 }
874
875 .mxch-details-section {
876 margin-bottom: 16px;
877 }
878
879 .mxch-details-section:last-child {
880 margin-bottom: 0;
881 }
882
883 .mxch-details-section h4 {
884 font-size: 11px;
885 font-weight: 600;
886 color: #9ca3af;
887 text-transform: uppercase;
888 letter-spacing: 0.5px;
889 margin: 0 0 10px 0;
890 }
891
892 .mxch-detail-row {
893 display: flex;
894 justify-content: space-between;
895 align-items: center;
896 padding: 6px 0;
897 font-size: 13px;
898 }
899
900 .mxch-detail-label {
901 color: #6b7280;
902 }
903
904 .mxch-detail-value {
905 color: #111827;
906 font-weight: 500;
907 }
908
909 .mxch-detail-value a {
910 color: #3b82f6;
911 text-decoration: none;
912 }
913
914 .mxch-detail-value a:hover {
915 text-decoration: underline;
916 }
917
918 .mxch-clicked-links {
919 display: flex;
920 flex-direction: column;
921 gap: 6px;
922 }
923
924 .mxch-clicked-link {
925 font-size: 12px;
926 color: #3b82f6;
927 text-decoration: none;
928 padding: 6px 10px;
929 background: #eff6ff;
930 border-radius: 6px;
931 white-space: nowrap;
932 overflow: hidden;
933 text-overflow: ellipsis;
934 }
935
936 .mxch-clicked-link:hover {
937 background: #dbeafe;
938 }
939
940 .mxch-details-actions {
941 display: flex;
942 gap: 8px;
943 margin-top: 16px;
944 padding-top: 16px;
945 border-top: 1px solid #f3f4f6;
946 }
947
948 .mxch-btn-sm {
949 padding: 8px 12px;
950 font-size: 12px;
951 }
952
953 /* Messages Area */
954 .mxch-messages-area {
955 flex: 1;
956 overflow-y: auto;
957 padding: 20px;
958 }
959
960 /* Mobile back button - hidden by default on desktop */
961 .mxch-mobile-back-btn {
962 display: none;
963 }
964
965 .mxch-messages-loading,
966 .mxch-messages-error {
967 display: flex;
968 align-items: center;
969 justify-content: center;
970 padding: 40px;
971 color: #9ca3af;
972 font-size: 13px;
973 }
974
975 /* Message Styles */
976 .mxch-message {
977 margin-bottom: 20px;
978 }
979
980 .mxch-message:last-child {
981 margin-bottom: 0;
982 }
983
984 /* User Message */
985 .mxch-message-user {
986 display: flex;
987 flex-direction: column;
988 align-items: flex-end;
989 }
990
991 .mxch-message-user .mxch-message-row {
992 max-width: 70%;
993 min-width: 120px;
994 }
995
996 .mxch-message-user .mxch-message-bubble {
997 background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
998 color: #fff;
999 padding: 12px 16px;
1000 border-radius: 18px 18px 4px 18px;
1001 font-size: 14px;
1002 line-height: 1.5;
1003 min-width: 80px;
1004 }
1005
1006 .mxch-message-user .mxch-message-bubble a {
1007 color: #bfdbfe;
1008 text-decoration: underline;
1009 }
1010
1011 .mxch-message-user .mxch-message-time {
1012 font-size: 11px;
1013 color: #9ca3af;
1014 margin-top: 4px;
1015 }
1016
1017 /* Bot Message */
1018 .mxch-message-bot {
1019 display: flex;
1020 flex-direction: column;
1021 align-items: flex-start;
1022 }
1023
1024 .mxch-message-header {
1025 display: flex;
1026 align-items: center;
1027 gap: 10px;
1028 margin-bottom: 6px;
1029 }
1030
1031 .mxch-bot-label {
1032 font-size: 11px;
1033 font-weight: 600;
1034 color: #059669;
1035 text-transform: uppercase;
1036 letter-spacing: 0.5px;
1037 }
1038
1039 .mxch-rag-link {
1040 font-size: 11px;
1041 color: #3b82f6;
1042 text-decoration: none;
1043 font-weight: 500;
1044 padding: 2px 8px;
1045 background: #eff6ff;
1046 border-radius: 4px;
1047 transition: all 0.15s;
1048 }
1049
1050 .mxch-rag-link:hover {
1051 background: #dbeafe;
1052 }
1053
1054 .mxch-message-bot .mxch-message-row {
1055 max-width: 80%;
1056 min-width: 150px;
1057 }
1058
1059 .mxch-message-bot .mxch-message-bubble {
1060 background: #fff;
1061 border: 1px solid #e5e7eb;
1062 color: #374151;
1063 padding: 12px 16px;
1064 border-radius: 18px 18px 18px 4px;
1065 font-size: 14px;
1066 line-height: 1.5;
1067 min-width: 100px;
1068 }
1069
1070 .mxch-message-bot .mxch-message-bubble a {
1071 color: #3b82f6;
1072 }
1073
1074 .mxch-message-bot .mxch-message-time {
1075 font-size: 11px;
1076 color: #9ca3af;
1077 margin-top: 4px;
1078 }
1079
1080 /* Message Content Styles */
1081 .mxch-message-bubble p {
1082 margin: 0 0 10px 0;
1083 }
1084
1085 .mxch-message-bubble p:last-child {
1086 margin-bottom: 0;
1087 }
1088
1089 .mxch-message-bubble ul,
1090 .mxch-message-bubble ol {
1091 margin: 10px 0;
1092 padding-left: 20px;
1093 }
1094
1095 .mxch-message-bubble li {
1096 margin: 4px 0;
1097 }
1098
1099 .mxch-message-bubble code {
1100 background: rgba(0, 0, 0, 0.08);
1101 padding: 2px 6px;
1102 border-radius: 4px;
1103 font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1104 font-size: 0.9em;
1105 }
1106
1107 .mxch-message-user .mxch-message-bubble code {
1108 background: rgba(255, 255, 255, 0.2);
1109 }
1110
1111 .mxch-message-bubble pre {
1112 background: #1e293b;
1113 color: #e2e8f0;
1114 padding: 12px 14px;
1115 border-radius: 8px;
1116 overflow-x: auto;
1117 margin: 10px 0;
1118 font-size: 13px;
1119 }
1120
1121 .mxch-message-bubble pre code {
1122 background: none;
1123 padding: 0;
1124 color: inherit;
1125 }
1126
1127 /* Scrollbar Styling */
1128 .mxch-chat-list::-webkit-scrollbar,
1129 .mxch-messages-area::-webkit-scrollbar {
1130 width: 6px;
1131 }
1132
1133 .mxch-chat-list::-webkit-scrollbar-track,
1134 .mxch-messages-area::-webkit-scrollbar-track {
1135 background: transparent;
1136 }
1137
1138 .mxch-chat-list::-webkit-scrollbar-thumb,
1139 .mxch-messages-area::-webkit-scrollbar-thumb {
1140 background: #d1d5db;
1141 border-radius: 3px;
1142 }
1143
1144 .mxch-chat-list::-webkit-scrollbar-thumb:hover,
1145 .mxch-messages-area::-webkit-scrollbar-thumb:hover {
1146 background: #9ca3af;
1147 }
1148
1149 /* Responsive Split Panel - Tablet */
1150 @media screen and (max-width: 900px) and (min-width: 783px) {
1151 #all-chats.mxch-section {
1152 padding: 0;
1153 }
1154
1155 .mxch-split-panel {
1156 flex-direction: column;
1157 height: auto;
1158 }
1159
1160 .mxch-chat-list-panel {
1161 width: 100%;
1162 max-width: none;
1163 height: 350px;
1164 border-right: none;
1165 border-bottom: 1px solid #e5e7eb;
1166 }
1167
1168 .mxch-panel-expand {
1169 display: none;
1170 }
1171
1172 .mxch-conversation-panel {
1173 min-height: 400px;
1174 }
1175
1176 .mxch-bulk-toolbar {
1177 flex-wrap: wrap;
1178 }
1179
1180 .mxch-bulk-btn span {
1181 display: none;
1182 }
1183 }
1184
1185 /* ==========================================================================
1186 Mobile Split Panel - Full Screen Panels
1187 ========================================================================== */
1188 @media screen and (max-width: 782px) {
1189 #all-chats.mxch-section {
1190 padding: 0;
1191 /* Mobile viewport height with fallbacks for browser address bar */
1192 /* 1. Fallback: standard vh (may be cut off by browser chrome) */
1193 height: calc(100vh - 46px - 32px);
1194 /* 2. Better: dvh (dynamic viewport height) for modern browsers */
1195 height: calc(100dvh - 46px - 32px);
1196 /* 3. Best: JS-calculated actual viewport via CSS custom property */
1197 height: calc(var(--mxch-mobile-vh, 100vh) - 46px - 32px);
1198 overflow: hidden;
1199 }
1200
1201 .mxch-split-panel {
1202 height: 100%;
1203 position: relative;
1204 }
1205
1206 /* Chat List - Full screen on mobile */
1207 .mxch-chat-list-panel {
1208 width: 100%;
1209 max-width: none;
1210 height: 100%;
1211 border-right: none;
1212 position: absolute;
1213 top: 0;
1214 left: 0;
1215 right: 0;
1216 bottom: 0;
1217 z-index: 10;
1218 transition: transform 0.3s ease;
1219 }
1220
1221 .mxch-chat-list-panel.panel-hidden {
1222 transform: translateX(-100%);
1223 }
1224
1225 .mxch-chat-list {
1226 flex: 1;
1227 overflow-y: auto;
1228 -webkit-overflow-scrolling: touch;
1229 }
1230
1231 /* Conversation Panel - Slide over from right */
1232 .mxch-conversation-panel {
1233 position: absolute;
1234 top: 0;
1235 left: 0;
1236 right: 0;
1237 bottom: 0;
1238 z-index: 20;
1239 transform: translateX(100%);
1240 transition: transform 0.3s ease;
1241 min-height: 0;
1242 height: 100%;
1243 display: flex;
1244 flex-direction: column;
1245 }
1246
1247 .mxch-conversation-panel.panel-active {
1248 transform: translateX(0);
1249 }
1250
1251 /* Mobile back button in conversation header */
1252 .mxch-mobile-back-btn {
1253 display: flex !important;
1254 align-items: center;
1255 justify-content: center;
1256 width: 36px;
1257 height: 36px;
1258 background: #f3f4f6;
1259 border: none;
1260 border-radius: 8px;
1261 color: #374151;
1262 cursor: pointer;
1263 margin-right: 8px;
1264 flex-shrink: 0;
1265 }
1266
1267 .mxch-mobile-back-btn:hover {
1268 background: #e5e7eb;
1269 }
1270
1271 /* Ensure conversation content scrolls properly */
1272 .mxch-conversation-content {
1273 flex: 1;
1274 display: flex;
1275 flex-direction: column;
1276 min-height: 0;
1277 overflow: hidden;
1278 }
1279
1280 /* Messages area scroll fix for mobile */
1281 .mxch-messages-area {
1282 flex: 1;
1283 overflow-y: auto;
1284 -webkit-overflow-scrolling: touch;
1285 padding: 16px;
1286 padding-bottom: 24px; /* Extra padding at bottom for visibility */
1287 }
1288
1289 /* Hide expand button on mobile */
1290 .mxch-panel-expand {
1291 display: none;
1292 }
1293
1294 /* Adjust bulk toolbar for mobile */
1295 .mxch-bulk-toolbar {
1296 flex-wrap: wrap;
1297 gap: 6px;
1298 padding: 8px 10px;
1299 }
1300
1301 .mxch-bulk-btn span {
1302 display: none;
1303 }
1304
1305 /* Make chat items more tappable */
1306 .mxch-chat-item {
1307 padding: 14px 12px;
1308 }
1309
1310 /* Adjust conversation header for mobile */
1311 .mxch-conversation-header {
1312 padding: 12px 16px;
1313 flex-shrink: 0;
1314 }
1315
1316 /* Details drawer adjustments */
1317 .mxch-details-drawer {
1318 max-height: 200px;
1319 overflow-y: auto;
1320 flex-shrink: 0;
1321 }
1322
1323 /* Conversation empty state on mobile */
1324 .mxch-conversation-empty {
1325 display: none;
1326 }
1327 }
1328
1329 /* ==========================================================================
1330 Pagination
1331 ========================================================================== */
1332 .mxch-pagination {
1333 display: flex;
1334 flex-wrap: wrap;
1335 justify-content: space-between;
1336 align-items: center;
1337 margin-top: var(--mxch-spacing-lg);
1338 padding: var(--mxch-spacing-md);
1339 background: var(--mxch-card-bg);
1340 border: 1px solid var(--mxch-card-border);
1341 border-radius: var(--mxch-radius-md);
1342 }
1343
1344 .mxch-pagination-info {
1345 font-size: 13px;
1346 color: var(--mxch-text-secondary);
1347 }
1348
1349 .mxch-pagination-controls {
1350 display: flex;
1351 flex-wrap: wrap;
1352 gap: 4px;
1353 }
1354
1355 .mxch-pagination-btn {
1356 padding: 6px 12px;
1357 background: #f8fafc;
1358 border: 1px solid var(--mxch-card-border);
1359 border-radius: var(--mxch-radius-sm);
1360 color: var(--mxch-text-primary);
1361 font-size: 13px;
1362 cursor: pointer;
1363 transition: all var(--mxch-transition-fast);
1364 }
1365
1366 .mxch-pagination-btn:hover {
1367 background: #e2e8f0;
1368 }
1369
1370 .mxch-pagination-btn.active {
1371 background: var(--mxch-primary);
1372 border-color: var(--mxch-primary);
1373 color: white;
1374 }
1375
1376 .mxch-pagination-ellipsis {
1377 padding: 6px 8px;
1378 color: var(--mxch-text-muted);
1379 }
1380
1381 /* ==========================================================================
1382 No Results
1383 ========================================================================== */
1384 .mxch-no-results {
1385 text-align: center;
1386 padding: var(--mxch-spacing-xl) var(--mxch-spacing-lg);
1387 color: var(--mxch-text-muted);
1388 background: #f9fafb;
1389 border: 2px dashed var(--mxch-card-border);
1390 border-radius: var(--mxch-radius-lg);
1391 }
1392
1393 .mxch-no-results svg {
1394 width: 48px;
1395 height: 48px;
1396 margin-bottom: var(--mxch-spacing-md);
1397 opacity: 0.5;
1398 }
1399
1400 .mxch-no-results h3 {
1401 font-size: 16px;
1402 font-weight: 600;
1403 color: var(--mxch-text-secondary);
1404 margin: 0 0 var(--mxch-spacing-xs) 0;
1405 }
1406
1407 .mxch-no-results p {
1408 font-size: 14px;
1409 margin: 0;
1410 }
1411
1412 /* ==========================================================================
1413 Toggle Row
1414 ========================================================================== */
1415 .mxch-toggle-row {
1416 display: flex;
1417 align-items: center;
1418 gap: var(--mxch-spacing-sm);
1419 }
1420
1421 .mxch-toggle-label {
1422 font-size: 14px;
1423 font-weight: 500;
1424 color: var(--mxch-text-primary);
1425 }
1426
1427 /* ==========================================================================
1428 Modal Styles
1429 ========================================================================== */
1430 .mxch-modal-overlay {
1431 position: fixed;
1432 top: 0;
1433 left: 0;
1434 right: 0;
1435 bottom: 0;
1436 background: rgba(0, 0, 0, 0.5);
1437 display: flex;
1438 align-items: center;
1439 justify-content: center;
1440 z-index: 100000;
1441 animation: mxchFadeIn 0.2s ease;
1442 }
1443
1444 .mxch-modal-content {
1445 background: white;
1446 border-radius: var(--mxch-radius-lg);
1447 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
1448 width: 90%;
1449 max-width: 600px;
1450 max-height: 80vh;
1451 display: flex;
1452 flex-direction: column;
1453 animation: mxchSlideIn 0.2s ease;
1454 }
1455
1456 @keyframes mxchSlideIn {
1457 from {
1458 transform: translateY(-20px);
1459 opacity: 0;
1460 }
1461 to {
1462 transform: translateY(0);
1463 opacity: 1;
1464 }
1465 }
1466
1467 .mxch-modal-header {
1468 display: flex;
1469 align-items: center;
1470 justify-content: space-between;
1471 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
1472 border-bottom: 1px solid var(--mxch-card-border);
1473 }
1474
1475 .mxch-modal-header h2 {
1476 font-size: 18px;
1477 font-weight: 600;
1478 color: var(--mxch-text-primary);
1479 margin: 0;
1480 }
1481
1482 .mxch-modal-close {
1483 width: 32px;
1484 height: 32px;
1485 display: flex;
1486 align-items: center;
1487 justify-content: center;
1488 background: none;
1489 border: none;
1490 font-size: 24px;
1491 color: var(--mxch-text-muted);
1492 cursor: pointer;
1493 border-radius: var(--mxch-radius-sm);
1494 transition: all var(--mxch-transition-fast);
1495 }
1496
1497 .mxch-modal-close:hover {
1498 background: #f1f5f9;
1499 color: var(--mxch-text-primary);
1500 }
1501
1502 .mxch-modal-body {
1503 flex: 1;
1504 padding: var(--mxch-spacing-lg);
1505 overflow-y: auto;
1506 }
1507
1508 /* RAG Context Styles */
1509 .mxch-rag-summary {
1510 display: flex;
1511 flex-wrap: wrap;
1512 gap: var(--mxch-spacing-md);
1513 padding: var(--mxch-spacing-md);
1514 background: #f8fafc;
1515 border-radius: var(--mxch-radius-md);
1516 margin-bottom: var(--mxch-spacing-lg);
1517 }
1518
1519 .mxch-rag-summary-item {
1520 font-size: 13px;
1521 }
1522
1523 .mxch-rag-label {
1524 color: var(--mxch-text-secondary);
1525 }
1526
1527 .mxch-rag-value {
1528 font-weight: 600;
1529 color: var(--mxch-text-primary);
1530 }
1531
1532 .mxch-rag-matches h3 {
1533 font-size: 14px;
1534 font-weight: 600;
1535 color: var(--mxch-text-primary);
1536 margin: 0 0 var(--mxch-spacing-md) 0;
1537 }
1538
1539 .mxch-rag-match-card {
1540 border: 1px solid var(--mxch-card-border);
1541 border-radius: var(--mxch-radius-md);
1542 padding: var(--mxch-spacing-md);
1543 margin-bottom: var(--mxch-spacing-sm);
1544 }
1545
1546 .mxch-rag-match-used {
1547 border-color: rgba(16, 185, 129, 0.3);
1548 background: rgba(16, 185, 129, 0.05);
1549 }
1550
1551 .mxch-rag-match-below {
1552 border-color: var(--mxch-card-border);
1553 background: #fafafa;
1554 }
1555
1556 .mxch-rag-match-header {
1557 display: flex;
1558 align-items: center;
1559 gap: var(--mxch-spacing-sm);
1560 margin-bottom: var(--mxch-spacing-sm);
1561 }
1562
1563 .mxch-rag-match-score {
1564 font-size: 14px;
1565 font-weight: 700;
1566 color: var(--mxch-primary);
1567 }
1568
1569 .mxch-rag-chunk-badge {
1570 font-size: 11px;
1571 padding: 2px 8px;
1572 background: rgba(120, 115, 245, 0.1);
1573 color: var(--mxch-primary);
1574 border-radius: 10px;
1575 }
1576
1577 .mxch-rag-match-status {
1578 margin-left: auto;
1579 font-size: 12px;
1580 font-weight: 500;
1581 }
1582
1583 .mxch-rag-match-status.status-used {
1584 color: var(--mxch-success);
1585 }
1586
1587 .mxch-rag-match-status.status-below {
1588 color: var(--mxch-text-muted);
1589 }
1590
1591 .mxch-rag-match-source {
1592 font-size: 13px;
1593 color: var(--mxch-text-secondary);
1594 word-break: break-all;
1595 }
1596
1597 .mxch-rag-match-source a {
1598 color: var(--mxch-primary);
1599 text-decoration: none;
1600 }
1601
1602 .mxch-rag-match-source a:hover {
1603 text-decoration: underline;
1604 }
1605
1606 /* ==========================================================================
1607 Responsive Adjustments
1608 ========================================================================== */
1609 @media screen and (max-width: 768px) {
1610 .mxch-stats-grid {
1611 grid-template-columns: repeat(2, 1fr);
1612 }
1613
1614 .mxch-stat-card {
1615 padding: var(--mxch-spacing-md);
1616 }
1617
1618 .mxch-stat-value {
1619 font-size: 22px;
1620 }
1621
1622 .mxch-cards-row {
1623 grid-template-columns: 1fr;
1624 }
1625
1626 .mxch-transcripts-controls {
1627 flex-direction: column;
1628 align-items: stretch;
1629 }
1630
1631 .mxch-search-wrapper {
1632 max-width: none;
1633 }
1634
1635 .mxch-controls-actions {
1636 justify-content: flex-end;
1637 }
1638
1639 .mxch-session-header {
1640 flex-direction: column;
1641 gap: var(--mxch-spacing-sm);
1642 }
1643
1644 .mxch-session-actions {
1645 opacity: 1;
1646 align-self: flex-end;
1647 }
1648
1649 .mxch-pagination {
1650 flex-direction: column;
1651 gap: var(--mxch-spacing-md);
1652 align-items: flex-start;
1653 }
1654
1655 .mxch-quick-actions {
1656 flex-direction: column;
1657 }
1658
1659 .mxch-quick-action-btn {
1660 width: 100%;
1661 justify-content: center;
1662 }
1663
1664 /* Chart responsive */
1665 .mxch-activity-chart-card .mxch-card-header {
1666 flex-direction: column;
1667 align-items: flex-start;
1668 }
1669
1670 .mxch-chart-legend {
1671 margin-top: var(--mxch-spacing-xs);
1672 }
1673
1674 #mxchat-activity-chart {
1675 height: 220px !important;
1676 }
1677 }
1678
1679 @media screen and (max-width: 480px) {
1680 .mxch-stats-grid {
1681 grid-template-columns: 1fr;
1682 }
1683
1684 .mxch-controls-actions {
1685 flex-direction: column;
1686 width: 100%;
1687 }
1688
1689 .mxch-controls-actions .mxch-btn {
1690 width: 100%;
1691 justify-content: center;
1692 }
1693
1694 .mxch-controls-actions form {
1695 width: 100%;
1696 }
1697 }
1698