PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.14
MxChat – AI Chatbot & Content Generation for WordPress v3.2.14
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-style.css

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

2,134 lines 50.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ========================================
2 NOTIFICATION SYSTEM
3 ======================================== */
4 .chat-notification-badge {
5 animation: notification-pulse 2s infinite;
6 box-shadow: 0 0 0 rgba(255, 68, 68, 0.4);
7 transition: all 0.3s ease;
8 }
9
10 @keyframes notification-pulse {
11 0% {
12 transform: scale(1);
13 box-shadow: 0 0 0 0 rgba(255, 68, 68, 0.4);
14 }
15 70% {
16 transform: scale(1.1);
17 box-shadow: 0 0 0 10px rgba(255, 68, 68, 0);
18 }
19 100% {
20 transform: scale(1);
21 box-shadow: 0 0 0 0 rgba(255, 68, 68, 0);
22 }
23 }
24
25 /* ========================================
26 EMAIL COLLECTION SYSTEM
27 ======================================== */
28 .email-blocker {
29 display: flex;
30 flex-direction: column;
31 align-items: center;
32 justify-content: center;
33 border-radius: 12px;
34 padding: 30px 20px;
35 max-width: 100%;
36 margin: auto;
37 text-align: center;
38 animation: fadeIn 0.5s ease-in-out;
39 }
40
41 .email-blocker-header {
42 margin-bottom: 20px;
43 }
44
45 .email-blocker-logo {
46 max-width: 80px;
47 margin-bottom: 10px;
48 }
49
50 .email-blocker h2 {
51 font-size: 24px;
52 font-weight: bold;
53 color: #333333;
54 margin-bottom: 10px;
55 }
56
57 .email-blocker p {
58 font-size: 16px;
59 color: #555555;
60 margin-bottom: 20px;
61 }
62
63 .email-blocker input[type="email"],
64 .email-blocker .mxchat-name-input {
65 width: 100%;
66 padding: 12px;
67 margin-bottom: 15px;
68 border: 1px solid #ddd;
69 border-radius: 8px;
70 font-size: 16px;
71 color: #333333;
72 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
73 transition: border-color 0.3s, box-shadow 0.3s;
74 }
75
76 .email-blocker input[type="email"]:focus,
77 .email-blocker .mxchat-name-input:focus {
78 border-color: #0073aa;
79 box-shadow: 0 0 8px rgba(0, 115, 170, 0.3);
80 outline: none;
81 }
82
83 .email-blocker button {
84 background-color: #0073aa;
85 color: #ffffff;
86 padding: 12px 20px;
87 border: none;
88 border-radius: 8px;
89 font-size: 16px;
90 font-weight: bold;
91 cursor: pointer;
92 width: 100%;
93 transition: background-color 0.3s, transform 0.2s;
94 }
95
96 .email-blocker button:hover {
97 background-color: #005177;
98 transform: translateY(-2px);
99 }
100
101 .email-blocker-footer {
102 margin-top: 20px;
103 font-size: 12px;
104 color: #888888;
105 }
106
107 .sr-only {
108 position: absolute;
109 width: 1px;
110 height: 1px;
111 padding: 0;
112 margin: -1px;
113 overflow: hidden;
114 clip: rect(0, 0, 0, 0);
115 white-space: nowrap;
116 border: 0;
117 }
118
119 @keyframes fadeIn {
120 from {
121 opacity: 0;
122 transform: translateY(-10px);
123 }
124 to {
125 opacity: 1;
126 transform: translateY(0);
127 }
128 }
129
130 .mxchat-chatbot-wrapper {
131 display: none;
132 }
133
134 /* ========================================
135 SEARCH RESULTS SYSTEM
136 ======================================== */
137 .chatbot-title-icon {
138 width: 24px;
139 height: 24px;
140 object-fit: contain;
141 }
142
143 .wp-admin .mxchat-search-results,
144 .wp-content .mxchat-search-results,
145 .site-content .mxchat-search-results,
146 .mxchat-search-results {
147 display: flex;
148 flex-direction: column;
149 gap: 20px;
150 margin: 15px 0;
151 font-size: 14px !important;
152 }
153
154 .mxchat-search-intro {
155 font-size: 16px !important;
156 margin: 0 0 15px 0 !important;
157 line-height: 1.4 !important;
158 font-weight: normal !important;
159 }
160
161 .mxchat-search-item {
162 padding: 15px !important;
163 border-radius: 8px !important;
164 background: #ffffff !important;
165 border: 1px solid rgba(0, 0, 0, 0.1) !important;
166 }
167
168 .mxchat-search-header {
169 display: flex !important;
170 align-items: center !important;
171 gap: 8px !important;
172 margin-bottom: 8px !important;
173 }
174
175 .mxchat-site-icon {
176 width: 16px !important;
177 height: 16px !important;
178 flex-shrink: 0 !important;
179 }
180
181 .mxchat-site-url {
182 font-size: 13px !important;
183 color: #555 !important;
184 line-height: 1 !important;
185 }
186
187 .mxchat-search-content {
188 display: flex !important;
189 flex-direction: column !important;
190 gap: 10px !important;
191 }
192
193 .mxchat-search-title {
194 font-size: 16px !important;
195 line-height: 1.4 !important;
196 margin: 0 !important;
197 padding: 0 !important;
198 font-weight: 600 !important;
199 }
200
201 .mxchat-search-title a {
202 text-decoration: none !important;
203 color: #000 !important;
204 }
205
206 .mxchat-search-title a:hover {
207 text-decoration: underline !important;
208 }
209
210 .mxchat-search-thumbnail {
211 max-width: 200px !important;
212 margin: 10px 0 !important;
213 }
214
215 .mxchat-search-thumbnail img {
216 max-width: 100% !important;
217 height: auto !important;
218 border-radius: 4px !important;
219 }
220
221 .mxchat-search-description {
222 font-size: 14px !important;
223 line-height: 1.6 !important;
224 color: #333 !important;
225 margin: 0 !important;
226 padding: 0 !important;
227 }
228
229 /* ========================================
230 ENHANCED HEADINGS & TEXT STYLING
231 ======================================== */
232 .bot-message .chat-heading {
233 color: inherit;
234 margin: 16px 0 12px 0 !important;
235 font-weight: bold !important;
236 line-height: 1.3 !important;
237 }
238
239 .bot-message h1.chat-heading,
240 .chat-heading-1 {
241 font-size: 1.5em !important;
242 border-bottom: 2px solid rgba(255, 255, 255, 0.3) !important;
243 padding-bottom: 8px !important;
244 }
245
246 .bot-message h2.chat-heading,
247 .chat-heading-2 {
248 font-size: 1.25em !important;
249 border-bottom: 1px solid rgba(255, 255, 255, 0.3) !important;
250 padding-bottom: 6px !important;
251 }
252
253 .bot-message h3.chat-heading,
254 .chat-heading-3 {
255 font-size: 1.125em !important;
256 }
257
258 .bot-message h4.chat-heading,
259 .chat-heading-4 {
260 font-size: 1em !important;
261 }
262
263 .bot-message h5.chat-heading,
264 .chat-heading-5 {
265 font-size: 0.875em !important;
266 text-transform: uppercase !important;
267 letter-spacing: 0.5px !important;
268 }
269
270 .bot-message h6.chat-heading,
271 .chat-heading-6 {
272 font-size: 0.75em !important;
273 text-transform: uppercase !important;
274 letter-spacing: 0.5px !important;
275 }
276
277 .bot-message strong {
278 font-weight: bold !important;
279 }
280
281 .bot-message em {
282 font-style: italic !important;
283 }
284
285 .bot-message del {
286 text-decoration: line-through !important;
287 opacity: 0.7;
288 }
289
290 /* ========================================
291 CODE BLOCKS & INLINE CODE
292 ======================================== */
293 .mxchat-table-wrapper {
294 overflow-x: auto;
295 margin: 12px 0;
296 -webkit-overflow-scrolling: touch;
297 }
298
299 .mxchat-table {
300 width: 100%;
301 border-collapse: collapse;
302 font-size: 0.9em;
303 line-height: 1.4;
304 }
305
306 .mxchat-table th,
307 .mxchat-table td {
308 padding: 8px 12px;
309 border: 1px solid rgba(128, 128, 128, 0.3);
310 word-break: break-word;
311 }
312
313 .mxchat-table thead th {
314 font-weight: 600;
315 background: rgba(128, 128, 128, 0.15);
316 }
317
318 .mxchat-table tbody tr:nth-child(even) {
319 background: rgba(128, 128, 128, 0.05);
320 }
321
322 .mxchat-code-block-container {
323 margin: 16px 0;
324 border-radius: 8px;
325 background: rgba(255, 255, 255, 0.1);
326 border: 1px solid rgba(255, 255, 255, 0.2);
327 overflow: hidden;
328 font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Courier New', monospace;
329 }
330
331 .mxchat-code-header {
332 display: flex;
333 justify-content: space-between;
334 align-items: center;
335 background: rgba(255, 255, 255, 0.15);
336 padding: 8px 12px;
337 border-bottom: 1px solid rgba(255, 255, 255, 0.2);
338 font-size: 11px;
339 min-height: 36px;
340 }
341
342 .mxchat-code-language {
343 color: rgba(255, 255, 255, 0.8);
344 font-weight: 600;
345 text-transform: uppercase;
346 letter-spacing: 0.5px;
347 font-size: 10px;
348 }
349
350 .mxchat-copy-button {
351 background: rgba(255, 255, 255, 0.2);
352 color: white;
353 border: 1px solid rgba(255, 255, 255, 0.3);
354 padding: 4px 8px;
355 border-radius: 4px;
356 font-size: 10px;
357 cursor: pointer;
358 transition: all 0.2s ease;
359 min-height: 24px;
360 line-height: 1;
361 }
362
363 .mxchat-copy-button:hover {
364 background: rgba(255, 255, 255, 0.3);
365 border-color: rgba(255, 255, 255, 0.4);
366 }
367
368 .mxchat-copy-button:active {
369 background: rgba(255, 255, 255, 0.4);
370 }
371
372 .mxchat-code-block {
373 margin: 0;
374 padding: 16px;
375 background: rgba(0, 0, 0, 0.3);
376 overflow-x: auto;
377 font-size: 13px;
378 line-height: 1.4;
379 white-space: pre;
380 border: none;
381 }
382
383 .mxchat-code-block code {
384 font-family: inherit;
385 font-size: inherit;
386 background: none !important;
387 padding: 0 !important;
388 border: none !important;
389 color: rgba(255, 255, 255, 0.95) !important;
390 display: block;
391 }
392
393 .mxchat-inline-code {
394 background: rgba(255, 255, 255, 0.2) !important;
395 padding: 2px 6px !important;
396 border-radius: 3px !important;
397 font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Courier New', monospace !important;
398 font-size: 0.85em !important;
399 color: #81c784 !important;
400 border: 1px solid rgba(255, 255, 255, 0.3) !important;
401 }
402
403 /* ========================================
404 TOOLBAR SYSTEM
405 ======================================== */
406 .active-pdf-container,
407 .active-word-container {
408 display: inline-flex;
409 align-items: center;
410 max-width: 200px;
411 margin: 0;
412 padding: 0;
413 line-height: 13px;
414 }
415
416 .active-pdf-name,
417 .active-word-name {
418 font-size: 11px;
419 white-space: nowrap;
420 overflow: hidden;
421 text-overflow: ellipsis;
422 }
423
424 .remove-pdf-btn,
425 .remove-word-btn,
426 .toolbar-perplexity {
427 background: none;
428 border: none;
429 padding: 2px;
430 margin-left: 4px;
431 cursor: pointer;
432 transition: opacity 0.2s;
433 line-height: 13px;
434 }
435
436 .remove-pdf-btn:hover,
437 .remove-word-btn:hover,
438 .toolbar-perplexity:hover {
439 opacity: 1;
440 background: none;
441 }
442
443 .mxchat-chatbot .chat-toolbar {
444 display: flex;
445 gap: 10px;
446 padding: 8px;
447 background: none;
448 align-items: end;
449 }
450
451 .mxchat-chatbot .toolbar-btn {
452 background: none;
453 border: none;
454 padding: 0;
455 cursor: pointer;
456 width: 16px;
457 height: 16px;
458 align-items: center;
459 justify-content: center;
460 opacity: 0.6;
461 transition: opacity 0.2s;
462 margin: 0;
463 min-width: 0;
464 box-shadow: none;
465 }
466
467 .mxchat-chatbot .toolbar-btn svg {
468 width: 100%;
469 height: 100%;
470 }
471
472 .mxchat-chatbot .toolbar-btn:hover {
473 opacity: 1;
474 background: none;
475 border: none;
476 box-shadow: none;
477 }
478
479 .mxchat-chatbot .toolbar-btn:disabled {
480 opacity: 0.3;
481 cursor: not-allowed;
482 background: none;
483 border: none;
484 }
485
486 .toolbar-btn.active {
487 background-color: rgba(120, 115, 245, 0.2);
488 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.4);
489 }
490
491 .active-perplexity-container {
492 display: flex;
493 align-items: center;
494 margin-left: 8px;
495 font-size: 12px;
496 }
497
498 .perplexity-search-btn {
499 display: none;
500 }
501
502 .perplexity-search-btn.active {
503 opacity: 1;
504 }
505
506 /* ========================================
507 POPULAR QUESTIONS SYSTEM
508 ======================================== */
509 .mxchat-popular-questions {
510 padding: 0 10px 10px;
511 transition: all 0.3s ease;
512 margin-bottom: 12px;
513 position: relative;
514 }
515
516 .mxchat-popular-questions-title {
517 font-size: 14px;
518 line-height: 24px;
519 font-weight: bold;
520 color: #212121;
521 margin-bottom: 10px;
522 }
523
524 .mxchat-popular-questions-container {
525 position: relative;
526 display: flex;
527 flex-direction: column;
528 max-height: 200px;
529 overflow-y: auto;
530 padding: 0 10px 10px;
531 scrollbar-width: thin;
532 scrollbar-color: #212121 #f1f1f1;
533 transition: all 0.3s ease;
534 gap: 8px;
535 }
536
537 .mxchat-popular-questions.collapsed {
538 padding: 0;
539 margin: 0;
540 }
541
542 .mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
543 flex-direction: row;
544 justify-content: center;
545 align-items: center;
546 padding: 0;
547 max-height: 40px;
548 overflow: visible;
549 }
550
551 .mxchat-popular-questions.collapsed .mxchat-popular-question {
552 display: none;
553 }
554
555 .mxchat-popular-questions.collapsed .questions-collapse-btn {
556 display: none;
557 }
558
559 /* MISSING - These need to be inside the container context: */
560 .mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
561 background: none;
562 border: none;
563 padding: 0;
564 margin: 0;
565 cursor: pointer;
566 transition: all 0.2s ease;
567 color: #212121;
568 display: none; /* Hidden by default when open */
569 align-items: center;
570 justify-content: center;
571 width: 32px;
572 height: 32px;
573 box-shadow: none;
574 outline: none;
575 }
576
577 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
578 background: none;
579 border: none;
580 padding: 0;
581 margin: 0px; /* Center and add bottom margin */
582 cursor: pointer;
583 transition: all 0.2s ease;
584 color: #212121;
585 display: none; /* Hidden by default */
586 align-items: center;
587 justify-content: center;
588 width: 32px;
589 height: 32px;
590 box-shadow: none;
591 outline: none;
592 align-self: center; /* Center in flex container */
593 order: -1; /* Make sure it appears first */
594 }
595
596 .questions-toggle-btn:hover,
597 .questions-collapse-btn:hover,
598 .questions-toggle-btn:focus,
599 .questions-collapse-btn:focus,
600 .questions-toggle-btn:active,
601 .questions-collapse-btn:active {
602 background: none;
603 border: none;
604 box-shadow: none;
605 outline: none;
606 }
607
608 .questions-toggle-btn svg,
609 .questions-collapse-btn svg {
610 transition: transform 0.2s ease;
611 fill: none;
612 stroke: #212121;
613 width: 25px;
614 height: 25px;
615 }
616
617 .questions-toggle-btn:hover svg,
618 .questions-collapse-btn:hover svg {
619 opacity: 0.7;
620 }
621
622 .mxchat-popular-questions.collapsed .questions-toggle-btn {
623 display: flex;
624 }
625
626 .mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
627 display: flex;
628 align-self: center;
629 order: -1;
630 }
631
632 .mxchat-popular-question {
633 padding: 12px 20px;
634 background-color: #f5f5f5;
635 border: 1px solid #bbb;
636 border-radius: 8px;
637 color: #212121;
638 font-size: 14px;
639 line-height: 24px;
640 cursor: pointer;
641 text-align: initial;
642 transition: all 0.3s ease;
643 margin-bottom: 0;
644 box-shadow: none;
645 }
646
647 .mxchat-popular-question:hover {
648 background-color: #eaeaea;
649 border-color: #999;
650 box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
651 transform: translateY(-1px);
652 }
653
654 .mxchat-popular-question:focus {
655 outline: none;
656 background-color: #e0e0e0;
657 border-color: #777;
658 box-shadow: 0 0 0 3px rgba(100, 149, 237, 0.5);
659 }
660
661 .mxchat-popular-question:active {
662 background-color: #d8d8d8;
663 border-color: #666;
664 box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
665 transform: translateY(0);
666 }
667
668 .mxchat-popular-questions-container::-webkit-scrollbar {
669 width: 8px;
670 }
671
672 .mxchat-popular-questions-container::-webkit-scrollbar-track {
673 background: #f1f1f1;
674 border-radius: 4px;
675 }
676
677 .mxchat-popular-questions-container::-webkit-scrollbar-thumb {
678 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
679 border-radius: 4px;
680 }
681
682 .mxchat-popular-questions-container::-webkit-scrollbar-thumb:hover {
683 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
684 }
685
686 /* ========================================
687 CORE CHATBOT UI
688 ======================================== */
689 .invisible {
690 display: none;
691 opacity: 0;
692 pointer-events: none;
693 }
694
695 .mxchat-chatbot{
696 background: #fff;
697 overflow: hidden;
698 position: relative;
699 display: flex;
700 flex-direction: column;
701 flex-grow: 1;
702 min-height: 0; /* Allow flex shrinking */
703 box-sizing: border-box;
704 }
705
706 .chat-container {
707 display: flex;
708 flex-direction: column;
709 flex-grow: 1;
710 min-height: 0; /* Critical for flex overflow scrolling */
711 height: 100%;
712 }
713
714 .chat-box {
715 flex-grow: 1;
716 overflow-y: auto;
717 padding: 10px;
718 margin-bottom: 0;
719 font-size: 1rem;
720 min-height: 0; /* Critical for flex overflow scrolling */
721 }
722
723 .chat-box::-webkit-scrollbar {
724 width: 5px;
725 }
726
727 .chat-box::-webkit-scrollbar-thumb {
728 background-color: #212121;
729 border-radius: 20px;
730 }
731
732 .bot-message,
733 .user-message {
734 margin-bottom: 15px;
735 padding: 10px;
736 display: inline-block;
737 max-width: 85%;
738 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
739 font-size: 14px;
740 line-height: 24px;
741 }
742
743 .user-message {
744 background: #fff;
745 color: #212121;
746 text-align: left;
747 float: right;
748 clear: both;
749 border-radius: 18px 0 18px 18px;
750 word-wrap: break-word;
751 border: 1px solid rgba(226, 232, 255, 0.2);
752 }
753
754 .user-message p {
755 margin: 0;
756 }
757
758 .mxchat-chatbot .chat-container .chat-box .bot-message {
759 float: left;
760 clear: both;
761 border: 1px solid rgba(226, 232, 255, 0.2);
762 border-radius: 0 18px 18px;
763 background: #212121;
764 color: #fff;
765 overflow-x: hidden;
766 }
767
768 .mxchat-chatbot .chat-container .chat-box .agent-message {
769 text-align: left;
770 float: left;
771 clear: both;
772 border: 1px solid rgba(226, 232, 255, 0.2);
773 border-radius: 0 18px 18px;
774 background: #212121;
775 color: #fff;
776 overflow-x: hidden;
777 margin-bottom: 15px;
778 padding: 10px;
779 display: inline-block;
780 max-width: 85%;
781 font-size: 14px;
782 line-height: 24px;
783 box-shadow: -2px 2px rgba(250, 115, 230, 0.6), -4px 4px rgba(120, 115, 245, 0.6);
784 }
785
786 .bot-message p {
787 margin: 0 0 1em 0;
788 }
789
790 .bot-message p:last-child {
791 margin-bottom: 0;
792 }
793
794 .bot-message {
795 white-space: pre-line;
796 }
797
798 .bot-message a {
799 color: #ffffff;
800 text-decoration: underline !important;
801 }
802
803 .bot-message a:hover {
804 color: #e0e0e0;
805 text-decoration: underline;
806 }
807
808 .bot-message a:visited {
809 color: #ffffff;
810 }
811
812 .system-message {
813 padding: 8px 12px;
814 margin: 8px 0;
815 background-color: rgba(120, 115, 245, 0.1);
816 border-radius: 8px;
817 color: #555;
818 font-style: italic;
819 font-size: 14px;
820 text-align: center;
821 }
822
823 .mxchat-chatbot-wrapper {
824 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
825 border-radius: 10px;
826 display: flex;
827 flex-direction: column;
828 height: 100%;
829 width: 100%;
830 min-height: 0; /* Allow flex shrinking */
831 overflow: hidden;
832 }
833
834 /* ========================================
835 INPUT & CONTROLS
836 ======================================== */
837 .mxchat-chatbot .chat-container .input-container {
838 position: relative;
839 display: flex;
840 align-items: center;
841 padding-right: 40px;
842 border: 1px solid #ccc;
843 border-radius: 10px;
844 margin: 0 10px 10px;
845 }
846
847 .mxchat-chatbot .chat-container .input-container .chat-input {
848 flex-grow: 1;
849 color: #212121;
850 line-height: 24px;
851 background: transparent;
852 margin-bottom: 0;
853 width: 100%;
854 min-height: 20px;
855 max-height: 65px;
856 resize: none;
857 overflow-y: auto;
858 font-size: 16px;
859 border: none;
860 border-radius: 5px;
861 box-sizing: border-box;
862 padding: 0.4em 0.5em;
863 outline: none;
864 border-radius: 10px;
865 }
866
867 .chat-input::-webkit-scrollbar {
868 width: 8px;
869 }
870
871 .chat-input::-webkit-scrollbar-track {
872 background: #f1f1f1;
873 border-radius: 4px;
874 }
875
876 .chat-input::-webkit-scrollbar-thumb {
877 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
878 border-radius: 4px;
879 }
880
881 .chat-input::-webkit-scrollbar-thumb:hover {
882 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
883 }
884
885 .chat-input {
886 scrollbar-width: thin;
887 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
888 }
889
890 /* Chat input character counter + soft limit feedback (plan 7091a2).
891 Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
892 fades in and ramps neutral -> amber -> red. The input border mirrors the same
893 cue, and an over-limit keystroke/paste triggers a brief shake so the hard
894 maxlength cap (plan a3fae2) is never a silent "input jumps back". */
895 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
896 position: absolute;
897 bottom: 3px;
898 right: 44px; /* clear the absolutely-positioned send button */
899 font-size: 11px;
900 line-height: 1;
901 font-variant-numeric: tabular-nums;
902 color: #9aa0a6;
903 background: rgba(255, 255, 255, 0.85);
904 padding: 1px 5px;
905 border-radius: 8px;
906 pointer-events: none;
907 opacity: 0;
908 visibility: hidden;
909 transition: opacity 0.18s ease, color 0.18s ease;
910 z-index: 2;
911 }
912 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
913 opacity: 1;
914 visibility: visible;
915 }
916 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
917 color: #d98300; /* amber: approaching the cap */
918 }
919 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
920 color: #d93025; /* red: at the cap */
921 font-weight: 600;
922 }
923 /* RTL widgets: counter on the opposite side. */
924 .mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
925 [dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
926 right: auto;
927 left: 44px;
928 }
929 /* Input border affordance mirrors the counter color. */
930 .mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
931 border-color: #f0b048;
932 }
933 .mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
934 border-color: #e5675c;
935 }
936 /* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
937 .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
938 animation: mxchat-input-bump 0.2s ease;
939 }
940 @keyframes mxchat-input-bump {
941 0% { transform: translateX(0); }
942 25% { transform: translateX(-3px); }
943 50% { transform: translateX(3px); }
944 75% { transform: translateX(-2px); }
945 100% { transform: translateX(0); }
946 }
947 /* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
948 @media (prefers-reduced-motion: reduce) {
949 .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
950 animation: none;
951 }
952 }
953
954 .mxchat-chatbot .chat-container .input-container .send-button {
955 position: absolute;
956 right: 10px;
957 top: 50%;
958 transform: translateY(-50%);
959 border: none;
960 border-radius: 50%;
961 width: 30px;
962 height: 30px;
963 display: flex;
964 align-items: center;
965 justify-content: center;
966 background: transparent !important;
967 padding: 5px;
968 margin: 0;
969 transition: background-color 0.3s;
970 color: #fff;
971 font-size: 1rem;
972 cursor: pointer;
973 font-weight: 700;
974 }
975
976 .send-button svg {
977 width: 25px;
978 height: 25px;
979 pointer-events: none;
980 }
981
982 .send-button:hover {
983 opacity: 0.8;
984 }
985
986 /* Stop state while a response is streaming: the send button becomes a Stop
987 control in place — same chrome and position, swapped glyph. Themeable hook;
988 the glyph's size/color are mirrored from the send icon at runtime. */
989 .mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
990 cursor: pointer;
991 }
992
993 .mxchat-chatbot .spinner {
994 animation: rotate 2s linear infinite;
995 width: 20px;
996 height: 20px;
997 }
998
999 .mxchat-chatbot .spinner circle {
1000 stroke: #212121;
1001 stroke-linecap: round;
1002 animation: dash 1.5s ease-in-out infinite;
1003 }
1004
1005 @keyframes rotate {
1006 100% {
1007 transform: rotate(360deg);
1008 }
1009 }
1010
1011 @keyframes dash {
1012 0% {
1013 stroke-dasharray: 1, 150;
1014 stroke-dashoffset: 0;
1015 }
1016 50% {
1017 stroke-dasharray: 90, 150;
1018 stroke-dashoffset: -35;
1019 }
1020 100% {
1021 stroke-dasharray: 90, 150;
1022 stroke-dashoffset: -124;
1023 }
1024 }
1025
1026 /* ========================================
1027 FLOATING CHATBOT & CONTROLS
1028 ======================================== */
1029 .chatbot-title-container {
1030 display: flex;
1031 align-items: center;
1032 justify-content: space-between;
1033 gap: 10px;
1034 flex: 1 1 auto;
1035 min-width: 0;
1036 }
1037
1038 .chatbot-title-group {
1039 display: flex;
1040 align-items: center;
1041 gap: 8px;
1042 }
1043
1044 .chat-mode-indicator {
1045 font-size: 12px;
1046 line-height: 1;
1047 margin-right: 0;
1048 padding: 4px 9px;
1049 border-radius: 999px;
1050 background: rgba(255, 255, 255, 0.18);
1051 color: #ffffff;
1052 display: inline-flex;
1053 align-items: center;
1054 height: 22px;
1055 white-space: nowrap;
1056 flex: 0 0 auto;
1057 }
1058
1059 .floating-chatbot {
1060 position: fixed;
1061 bottom: 25px;
1062 right: 25px;
1063 width: 375px;
1064 /* Use viewport-aware height with fallbacks */
1065 height: min(625px, calc(100vh - 50px)); /* 50px = 25px top + 25px bottom margin */
1066 height: min(625px, calc(100dvh - 50px)); /* Dynamic viewport height for mobile browsers */
1067 max-height: calc(100vh - 50px);
1068 max-height: calc(100dvh - 50px); /* Fallback for browsers supporting dvh */
1069 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1070 border-radius: 20px;
1071 overflow: hidden;
1072 display: flex;
1073 flex-direction: column;
1074 z-index: 100000;
1075 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1076 transform: translateY(20%);
1077 opacity: 0;
1078 pointer-events: none;
1079 }
1080
1081 .floating-chatbot.visible {
1082 transform: translateY(0);
1083 opacity: 1;
1084 pointer-events: auto;
1085 }
1086
1087 /* ========================================
1088 EMBEDDED CHATBOT (Shortcode)
1089 ======================================== */
1090 /* Embedded chatbots are NOT inside .floating-chatbot wrapper */
1091 /* Apply fixed height like floating widget so quick questions overlay properly */
1092 .mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) {
1093 height: 500px;
1094 max-height: 500px;
1095 }
1096
1097 /* Hide the minimize/exit button for embedded chatbots - it doesn't make sense */
1098 .mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) .exit-chat {
1099 display: none !important;
1100 }
1101
1102 .floating-chatbot-button.hidden,
1103 .exit-chat span {
1104 display: none !important;
1105 }
1106
1107 .chatbot-top-bar button.exit-chat:hover {
1108 background: rgba(255, 255, 255, 0.12);
1109 }
1110 .visible {
1111 display: flex;
1112 }
1113
1114 .floating-chatbot-button {
1115 transition: opacity 1s ease-in-out;
1116 font-size: 1.25rem;
1117 position: fixed;
1118 bottom: 30px;
1119 right: 25px;
1120 background-color: #212121;
1121 color: #fff;
1122 width: 60px;
1123 height: 60px;
1124 border-radius: 50%;
1125 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) !important;
1126 justify-content: center;
1127 align-items: center;
1128 cursor: pointer;
1129 transition: 0.3s;
1130 z-index: 100000;
1131 display: flex;
1132 }
1133
1134 .floating-chatbot-button:focus-visible {
1135 outline: 3px solid #7873f5;
1136 outline-offset: 3px;
1137 }
1138
1139 .floating-chatbot-button img {
1140 max-width: 100%;
1141 max-height: 100%;
1142 width: auto;
1143 height: auto;
1144 }
1145
1146 .chatbot-top-bar {
1147 background: #212121;
1148 }
1149
1150 .mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1151 background: transparent;
1152 border: none;
1153 opacity: 0.8;
1154 padding: 0;
1155 width: 32px;
1156 height: 32px;
1157 min-width: 32px;
1158 flex: 0 0 auto;
1159 border-radius: 6px;
1160 transition: opacity 0.15s ease, background 0.15s ease;
1161 }
1162
1163 .mxchat-chatbot-wrapper .chatbot-top-bar {
1164 cursor: pointer;
1165 color: #fff;
1166 padding: 8px 12px;
1167 min-height: 48px;
1168 gap: 8px;
1169 border-top-left-radius: 10px;
1170 border-top-right-radius: 10px;
1171 display: flex;
1172 justify-content: space-between;
1173 align-items: center;
1174 }
1175
1176 .mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1177 font-size: 15px;
1178 line-height: 1.2;
1179 padding: 0;
1180 margin: 0;
1181 font-family: 'Plus Jakarta Sans', sans-serif;
1182 font-weight: 600;
1183 }
1184
1185 .exit-chat {
1186 border: none;
1187 background: transparent;
1188 cursor: pointer;
1189 display: inline-flex;
1190 align-items: center;
1191 justify-content: center;
1192 padding: 0;
1193 margin-left: auto;
1194 opacity: 0.8;
1195 width: 32px;
1196 height: 32px;
1197 min-width: 32px;
1198 flex: 0 0 auto;
1199 }
1200
1201 .exit-chat svg {
1202 width: 18px;
1203 height: 18px;
1204 fill: none;
1205 stroke: currentColor;
1206 }
1207
1208 .mxchat-chatbot-wrapper .chatbot-footer {
1209 text-align: center;
1210 padding-bottom: 10px;
1211 font-size: 0.85em;
1212 }
1213
1214 .mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1215 font-size: 12px;
1216 margin: 0;
1217 color: #71717a;
1218 }
1219
1220 .mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1221 color: #0073aa;
1222 text-decoration: underline;
1223 font-size: 12px;
1224 }
1225
1226 .mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1227 text-decoration: none;
1228 color: inherit;
1229 font-weight: 700;
1230 }
1231
1232 .mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1233 text-decoration: underline;
1234 }
1235
1236 /* ========================================
1237 INIT LOADER (shown while chat initializes)
1238 ======================================== */
1239 .mxchat-init-loader {
1240 display: flex;
1241 align-items: center;
1242 justify-content: center;
1243 flex-grow: 1;
1244 min-height: 0;
1245 animation: fadeIn 0.3s ease-in-out;
1246 }
1247
1248 .mxchat-init-loader-dots {
1249 display: flex;
1250 gap: 8px;
1251 }
1252
1253 .mxchat-init-loader-dots .dot {
1254 width: 8px;
1255 height: 8px;
1256 border-radius: 50%;
1257 background-color: #888;
1258 animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1259 }
1260
1261 .mxchat-init-loader-dots .dot:nth-child(1) {
1262 animation-delay: -0.32s;
1263 }
1264
1265 .mxchat-init-loader-dots .dot:nth-child(2) {
1266 animation-delay: -0.16s;
1267 }
1268
1269 /* ========================================
1270 THINKING DOTS ANIMATION
1271 ======================================== */
1272 .chat-box .bot-message.temporary-message .thinking-dots-container {
1273 display: flex;
1274 justify-content: center;
1275 align-items: center;
1276 overflow: hidden;
1277 height: 20px;
1278 position: relative;
1279 z-index: 1;
1280 flex-shrink: 0;
1281 }
1282
1283 .chat-box .bot-message.temporary-message .thinking-dots {
1284 display: flex;
1285 justify-content: center;
1286 align-items: center;
1287 height: 90%;
1288 gap: 5px;
1289 flex-shrink: 0;
1290 }
1291
1292 .chat-box .bot-message.temporary-message .thinking-dots .dot {
1293 height: 6px;
1294 width: 6px;
1295 margin: 0 3px;
1296 background-color: #fff;
1297 border-radius: 50%;
1298 display: inline-block;
1299 animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1300 vertical-align: middle;
1301 }
1302
1303 .chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1304 animation-delay: -0.32s;
1305 }
1306
1307 .chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1308 animation-delay: -0.16s;
1309 }
1310
1311 @keyframes mxchat-dot-bounce {
1312 0%, 100%, 80% {
1313 transform: scale(1);
1314 }
1315 40% {
1316 transform: scale(1.5);
1317 }
1318 }
1319
1320 /* ========================================
1321 PRE-CHAT MESSAGE
1322 ======================================== */
1323 .pre-chat-message {
1324 position: fixed;
1325 bottom: 85px;
1326 right: 30px;
1327 background-color: #fff;
1328 color: #212121;
1329 padding: 10px;
1330 box-shadow: 0px 0px 10px rgba(150, 150, 150, 0.3);
1331 border-radius: 5px;
1332 z-index: 1000;
1333 cursor: pointer;
1334 max-width: 325px;
1335 font-size: 14px;
1336 display: none;
1337 margin-bottom: 10px;
1338 }
1339
1340 .pre-chat-message .close-pre-chat-message {
1341 position: absolute;
1342 top: -6px;
1343 right: -6px;
1344 background-color: #ccc;
1345 border: none;
1346 color: #212121;
1347 font-size: 14px;
1348 cursor: pointer;
1349 border-radius: 50%;
1350 width: 20px;
1351 min-width: 20px;
1352 min-height: 20px;
1353 height: 20px;
1354 display: flex;
1355 align-items: center;
1356 justify-content: center;
1357 padding: 0;
1358 line-height: 1;
1359 }
1360
1361 /* ========================================
1362 VIEWPORT HEIGHT CONSTRAINTS
1363 Handles bookmarks bar, browser zoom, and smaller screens
1364 ======================================== */
1365 @media screen and (max-height: 700px) {
1366 .floating-chatbot {
1367 bottom: 15px;
1368 height: calc(100vh - 30px);
1369 height: calc(100dvh - 30px);
1370 max-height: calc(100vh - 30px);
1371 max-height: calc(100dvh - 30px);
1372 }
1373
1374 .floating-chatbot-button {
1375 bottom: 20px;
1376 }
1377
1378 .pre-chat-message {
1379 bottom: 75px;
1380 }
1381 }
1382
1383 @media screen and (max-height: 550px) {
1384 .floating-chatbot {
1385 bottom: 10px;
1386 height: calc(100vh - 20px);
1387 height: calc(100dvh - 20px);
1388 max-height: calc(100vh - 20px);
1389 max-height: calc(100dvh - 20px);
1390 }
1391
1392 /* Reduce padding in tight spaces */
1393 .mxchat-popular-questions {
1394 padding: 0 8px 5px;
1395 margin-bottom: 8px;
1396 }
1397
1398 .mxchat-popular-question {
1399 padding: 8px 12px;
1400 font-size: 13px;
1401 line-height: 20px;
1402 }
1403
1404 .mxchat-chatbot .chat-container .input-container {
1405 margin: 0 8px 8px;
1406 }
1407
1408 .mxchat-chatbot-wrapper .chatbot-footer {
1409 padding-bottom: 5px;
1410 }
1411 }
1412
1413 /* ========================================
1414 MOBILE RESPONSIVE
1415 ======================================== */
1416 @media screen and (max-width: 782px) {
1417 .mxchat-search-results {
1418 gap: 15px !important;
1419 }
1420
1421 .mxchat-search-intro {
1422 font-size: 15px !important;
1423 }
1424
1425 .mxchat-search-title {
1426 font-size: 15px !important;
1427 }
1428
1429 .mxchat-search-description {
1430 font-size: 13px !important;
1431 }
1432 }
1433
1434 @media (max-width: 550px) {
1435 .questions-toggle-btn,
1436 .questions-collapse-btn {
1437 width: 28px;
1438 height: 28px;
1439 }
1440
1441 .questions-toggle-btn svg,
1442 .questions-collapse-btn svg {
1443 width: 22px;
1444 height: 22px;
1445 }
1446
1447 .pre-chat-message {
1448 bottom: 70px;
1449 right: 15px;
1450 }
1451
1452 .chat-input {
1453 width: calc(100% - 70px);
1454 }
1455
1456 .bot-message,
1457 .user-message {
1458 padding: 10px;
1459 max-width: 95%;
1460 }
1461
1462 .floating-chatbot-button {
1463 bottom: 15px;
1464 right: 10px;
1465 }
1466
1467 .floating-chatbot {
1468 width: calc(100vw - 16px);
1469 /* Use multiple fallbacks for maximum browser compatibility */
1470 height: calc(100vh - 16px); /* Fallback */
1471 height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1472 height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1473 max-height: calc(100vh - 16px);
1474 max-height: calc(100dvh - 16px);
1475 margin: 0;
1476 padding: 0;
1477 position: fixed;
1478 bottom: 8px;
1479 top: auto;
1480 left: 8px;
1481 right: 8px;
1482 border-radius: 16px;
1483 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1484 }
1485
1486 .floating-chatbot .mxchat-chatbot-wrapper {
1487 border-radius: 16px;
1488 overflow: hidden;
1489 }
1490
1491 .mxchat-chatbot-wrapper .chatbot-top-bar {
1492 border-top-left-radius: 16px;
1493 border-top-right-radius: 16px;
1494 }
1495 }
1496
1497
1498
1499 pre {
1500 background-color: #000;
1501 border: 1px solid #ddd;
1502 border-radius: 20px;
1503 border-left: 3px solid #9e7aff;
1504 color: #fff;
1505 page-break-inside: avoid;
1506 font-family: monospace;
1507 font-size: 15px;
1508 line-height: 1.6;
1509 margin-bottom: 1.6em;
1510 max-width: 100%;
1511 overflow: auto;
1512 padding: 1em 1.5em;
1513 display: block;
1514 word-wrap: break-word;
1515 }
1516
1517 .copy-btn {
1518 padding: 10px 20px;
1519 border: none;
1520 border-radius: 4px;
1521 background-color: #9e7aff;
1522 transition: background-color 0.3s;
1523 color: #fff;
1524 font-size: 1rem;
1525 cursor: pointer;
1526 font-weight: 700;
1527 margin-bottom: 10px;
1528 }
1529
1530 .copy-btn:hover {
1531 opacity: 0.8;
1532 }
1533
1534 .mxchat-product-card {
1535 display: flex;
1536 flex-direction: column;
1537 align-items: center;
1538 margin: 10px 0;
1539 padding: 10px;
1540 border-radius: 5px;
1541 background-color: inherit;
1542 }
1543
1544 .mxchat-product-card img.mxchat-product-image {
1545 max-width: 100%;
1546 height: auto;
1547 margin-bottom: 5px;
1548 border-radius: 4px;
1549 }
1550
1551 .mxchat-product-card h3.mxchat-product-name {
1552 font-size: 16px;
1553 font-weight: bold;
1554 margin: 5px 0;
1555 text-align: center;
1556 color: inherit;
1557 }
1558
1559 .mxchat-product-card .mxchat-product-price {
1560 color: inherit;
1561 font-weight: bold;
1562 margin-bottom: 5px;
1563 }
1564
1565 .mxchat-product-card .mxchat-product-description {
1566 font-size: 14px;
1567 text-align: center;
1568 margin-bottom: 10px;
1569 color: inherit;
1570 }
1571
1572 .mxchat-product-card .mxchat-add-to-cart-button {
1573 background-color: #212121;
1574 color: #fff;
1575 padding: 8px 12px;
1576 border: none;
1577 cursor: pointer;
1578 border-radius: 12px;
1579 transition: background-color 0.3s ease;
1580 }
1581
1582 .mxchat-product-card .mxchat-add-to-cart-button:hover {
1583 background-color: #212121;
1584 }
1585
1586 .mxchat-image-gallery {
1587 display: flex;
1588 flex-wrap: wrap;
1589 gap: 10px;
1590 justify-content: center;
1591 }
1592
1593 .mxchat-image-item {
1594 text-align: center;
1595 overflow: hidden;
1596 word-wrap: break-word;
1597 }
1598
1599 .mxchat-image-title {
1600 display: block;
1601 font-size: 14px;
1602 color: inherit;
1603 white-space: nowrap;
1604 overflow: hidden;
1605 text-overflow: ellipsis;
1606 max-width: 100%;
1607 }
1608
1609 .mxchat-image-link {
1610 text-decoration: none;
1611 }
1612
1613 .mxchat-image-thumbnail {
1614 max-width: 100%;
1615 height: auto;
1616 border-radius: 5px;
1617 transition: transform 0.3s;
1618 }
1619
1620 .mxchat-image-thumbnail:hover {
1621 transform: scale(1.05);
1622 }
1623
1624 .mxchat-generated-image {
1625 max-width: 100%;
1626 height: auto;
1627 border-radius: 0 0 8px 8px;
1628 }
1629
1630 /* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1631 Caption colors INHERIT from the message bubble (same idiom as
1632 .mxchat-product-card) so the embed reads correctly on any widget theme —
1633 bot bubbles commonly force their own text color. */
1634 .mxchat-youtube-embed {
1635 max-width: 340px;
1636 margin-top: 8px;
1637 }
1638
1639 .mxchat-youtube-facade {
1640 position: relative;
1641 display: block;
1642 width: 100%;
1643 padding: 0;
1644 margin: 0;
1645 border: none;
1646 background: #000;
1647 cursor: pointer;
1648 aspect-ratio: 16 / 9;
1649 border-radius: 10px;
1650 overflow: hidden;
1651 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1652 }
1653
1654 .mxchat-youtube-thumb {
1655 width: 100%;
1656 height: 100%;
1657 object-fit: cover;
1658 display: block;
1659 opacity: 0.92;
1660 transition: opacity 0.2s;
1661 }
1662
1663 .mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1664 opacity: 1;
1665 }
1666
1667 .mxchat-youtube-play {
1668 position: absolute;
1669 top: 50%;
1670 left: 50%;
1671 transform: translate(-50%, -50%);
1672 display: flex;
1673 align-items: center;
1674 justify-content: center;
1675 width: 52px;
1676 height: 52px;
1677 border-radius: 50%;
1678 background: rgba(0, 0, 0, 0.72);
1679 color: #fff;
1680 transition: transform 0.2s, background 0.2s;
1681 }
1682
1683 .mxchat-youtube-play svg {
1684 margin-left: 3px;
1685 }
1686
1687 .mxchat-youtube-facade:hover .mxchat-youtube-play {
1688 transform: translate(-50%, -50%) scale(1.08);
1689 background: rgba(0, 0, 0, 0.85);
1690 }
1691
1692 .mxchat-youtube-iframe {
1693 width: 100%;
1694 aspect-ratio: 16 / 9;
1695 border: none;
1696 display: block;
1697 border-radius: 10px;
1698 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1699 }
1700
1701 .mxchat-youtube-caption {
1702 display: flex;
1703 align-items: baseline;
1704 justify-content: space-between;
1705 gap: 10px;
1706 padding: 8px 2px 0;
1707 background: transparent;
1708 color: inherit;
1709 }
1710
1711 .mxchat-youtube-title {
1712 font-size: 13px;
1713 font-weight: 600;
1714 color: inherit;
1715 overflow: hidden;
1716 white-space: nowrap;
1717 text-overflow: ellipsis;
1718 }
1719
1720 .mxchat-youtube-link {
1721 font-size: 12px;
1722 white-space: nowrap;
1723 color: inherit;
1724 opacity: 0.85;
1725 text-decoration: underline;
1726 }
1727
1728 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1729 padding: 10px;
1730 }
1731
1732 #widget_icon_10 {
1733 fill: #fff;
1734 }
1735
1736
1737 /* This selector with more context - showing the collapse button in certain states */
1738 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1739 background: none;
1740 border: none;
1741 padding: 0;
1742 margin: 0px;
1743 cursor: pointer;
1744 transition: all 0.2s ease;
1745 color: #212121;
1746 display: none; /* Hidden by default */
1747 align-items: center;
1748 justify-content: center;
1749 width: 32px;
1750 height: 32px;
1751 box-shadow: none;
1752 outline: none;
1753 align-self: center; /* THIS IS MISSING */
1754 order: -1; /* THIS IS MISSING */
1755 }
1756
1757 /* ALL hover states - these are MISSING from your new CSS */
1758 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1759 background: none;
1760 border: none;
1761 box-shadow: none;
1762 }
1763
1764 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1765 outline: none;
1766 background: none;
1767 border: none;
1768 box-shadow: none;
1769 }
1770
1771 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1772 background: none;
1773 border: none;
1774 box-shadow: none;
1775 }
1776
1777 /* SVG styles - these are MISSING */
1778 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1779 fill: none;
1780 stroke: #212121;
1781 transition: transform 0.2s ease;
1782 width: 25px;
1783 height: 25px;
1784 }
1785
1786 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1787 opacity: 0.7;
1788 }
1789
1790 /* THE CRITICAL DISPLAY RULE - this shows when it's been collapsed before */
1791 .mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1792 display: flex;
1793 }
1794
1795 /* Hide when actually collapsed */
1796 .mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1797 display: none;
1798 }
1799
1800 /* ============================================================
1801 Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1802 Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1803 mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1804
1805 v3.2.10: explicit `order` rules pin the visual order
1806 title (0) | kebab (1) | down-arrow (2)
1807 so the down-arrow is always the rightmost icon regardless of source
1808 order or which sibling has margin-left:auto.
1809 ============================================================ */
1810 .mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1811 .mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1812 .mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1813
1814 .mxchat-header-menu-wrap {
1815 position: relative;
1816 display: inline-flex;
1817 align-items: center;
1818 margin-left: auto; /* push kebab + arrow group to the right edge */
1819 }
1820 .mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1821 .mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1822 margin-left: 4px; /* even, snug gap between kebab and close */
1823 }
1824 .mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1825 background: rgba(255, 255, 255, 0.12);
1826 opacity: 1;
1827 outline: none;
1828 }
1829 .mxchat-header-btn {
1830 border: none;
1831 background: transparent;
1832 cursor: pointer;
1833 display: inline-flex;
1834 align-items: center;
1835 justify-content: center;
1836 padding: 0;
1837 opacity: 0.8;
1838 color: #fff;
1839 transition: opacity 0.15s ease, background 0.15s ease;
1840 border-radius: 6px;
1841 line-height: 0;
1842 width: 32px;
1843 height: 32px;
1844 min-width: 32px;
1845 flex: 0 0 auto;
1846 }
1847 .mxchat-header-btn:hover,
1848 .mxchat-header-btn:focus {
1849 opacity: 1;
1850 background: rgba(255, 255, 255, 0.12);
1851 outline: none;
1852 }
1853 .mxchat-header-btn[aria-expanded="true"] {
1854 opacity: 1;
1855 background: rgba(255, 255, 255, 0.12);
1856 }
1857 .mxchat-menu-trigger svg {
1858 width: 18px;
1859 height: 18px;
1860 }
1861
1862 .mxchat-header-menu {
1863 position: absolute;
1864 top: calc(100% + 6px);
1865 right: 0;
1866 min-width: 220px;
1867 background: var(--mxchat-menu-bg, #ffffff);
1868 color: var(--mxchat-menu-fg, #1a1a1a);
1869 border: 1px solid rgba(127, 127, 127, 0.20);
1870 border-radius: 10px;
1871 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1872 padding: 4px;
1873 z-index: 5;
1874 opacity: 0;
1875 transform: translateY(-4px);
1876 pointer-events: none;
1877 transition: opacity 0.12s ease, transform 0.12s ease;
1878 }
1879 .mxchat-header-menu.is-open {
1880 opacity: 1;
1881 transform: translateY(0);
1882 pointer-events: auto;
1883 }
1884 .mxchat-header-menu[hidden] {
1885 display: none;
1886 }
1887 .mxchat-menu-item {
1888 display: flex;
1889 align-items: center;
1890 gap: 10px;
1891 width: 100%;
1892 padding: 8px 12px;
1893 min-height: 40px;
1894 border: none;
1895 background: transparent;
1896 color: inherit;
1897 font-size: 14px;
1898 line-height: 1.3;
1899 text-align: left;
1900 cursor: pointer;
1901 border-radius: 6px;
1902 transition: background 0.12s ease;
1903 text-decoration: none;
1904 box-sizing: border-box;
1905 }
1906 .mxchat-menu-item:hover,
1907 .mxchat-menu-item:focus {
1908 background: rgba(127, 127, 127, 0.18);
1909 outline: none;
1910 }
1911 .mxchat-menu-item-icon {
1912 display: inline-flex;
1913 align-items: center;
1914 justify-content: center;
1915 width: 16px;
1916 height: 16px;
1917 color: inherit;
1918 opacity: 0.85;
1919 flex-shrink: 0;
1920 }
1921 .mxchat-menu-item-icon svg {
1922 width: 16px;
1923 height: 16px;
1924 display: block;
1925 }
1926 .mxchat-menu-item-label {
1927 flex: 1;
1928 color: inherit;
1929 }
1930
1931 /* RTL — flip the dropdown anchor edge */
1932 [dir="rtl"] .mxchat-header-menu,
1933 .mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
1934 right: auto;
1935 left: 0;
1936 }
1937
1938 /* ============================================================================
1939 Satisfaction rating (v3.2.6 — polished per plan-141a12)
1940 Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
1941 ========================================================================= */
1942 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
1943 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
1944 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
1945 clear: both;
1946 float: left;
1947 max-width: 92%;
1948 box-sizing: border-box;
1949 }
1950
1951 /* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
1952 inline style; the inner rating component supplies its own padding + layout. */
1953 .mxchat-rating-bot-bubble {
1954 padding: 0;
1955 overflow: visible;
1956 }
1957
1958 .mxchat-rating-prompt {
1959 display: flex;
1960 flex-direction: column;
1961 align-items: stretch;
1962 gap: 10px;
1963 padding: 10px 14px;
1964 margin: 10px 0;
1965 font-size: 14px;
1966 color: inherit;
1967 }
1968
1969 .mxchat-rating-question {
1970 color: inherit;
1971 opacity: 0.85;
1972 font-weight: 500;
1973 }
1974
1975 .mxchat-rating-actions {
1976 display: flex;
1977 align-items: center;
1978 gap: 8px;
1979 }
1980
1981 .mxchat-rating-buttons {
1982 display: inline-flex;
1983 gap: 6px;
1984 }
1985
1986 .mxchat-rating-btn {
1987 display: inline-flex;
1988 align-items: center;
1989 justify-content: center;
1990 width: 32px;
1991 height: 32px;
1992 border-radius: 8px;
1993 background: transparent;
1994 border: none;
1995 color: inherit;
1996 opacity: 0.6;
1997 cursor: pointer;
1998 transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
1999 padding: 0;
2000 }
2001
2002 .mxchat-rating-btn:hover {
2003 opacity: 1;
2004 transform: scale(1.12);
2005 background: rgba(255, 255, 255, 0.08);
2006 }
2007
2008 .mxchat-rating-btn:focus-visible {
2009 opacity: 1;
2010 outline: 2px solid currentColor;
2011 outline-offset: 2px;
2012 }
2013
2014 .mxchat-rating-btn svg {
2015 pointer-events: none;
2016 }
2017
2018 .mxchat-rating-dismiss {
2019 width: 24px;
2020 height: 24px;
2021 border-radius: 6px;
2022 background: transparent;
2023 border: none;
2024 color: inherit;
2025 opacity: 0.45;
2026 cursor: pointer;
2027 font-size: 18px;
2028 line-height: 1;
2029 transition: opacity 0.18s ease, background-color 0.18s ease;
2030 }
2031
2032 .mxchat-rating-dismiss:hover {
2033 opacity: 0.9;
2034 background: rgba(255, 255, 255, 0.08);
2035 }
2036
2037 /* Feedback panel that replaces the prompt after a rating is clicked */
2038 .mxchat-rating-feedback {
2039 padding: 12px 14px;
2040 margin: 10px 0;
2041 display: flex;
2042 flex-direction: column;
2043 gap: 10px;
2044 color: inherit;
2045 animation: mxchat-rating-fade-in 0.22s ease;
2046 }
2047
2048 .mxchat-rating-feedback-label {
2049 font-size: 13px;
2050 opacity: 0.85;
2051 font-weight: 500;
2052 }
2053
2054 .mxchat-rating-feedback-input {
2055 width: 100%;
2056 box-sizing: border-box;
2057 padding: 8px 10px;
2058 border: 1px solid rgba(255, 255, 255, 0.25);
2059 border-radius: 8px;
2060 font-size: 14px;
2061 font-family: inherit;
2062 resize: vertical;
2063 background: rgba(255, 255, 255, 0.08);
2064 color: inherit;
2065 }
2066
2067 .mxchat-rating-feedback-input:focus {
2068 outline: none;
2069 border-color: rgba(255, 255, 255, 0.45);
2070 background: rgba(255, 255, 255, 0.15);
2071 }
2072
2073 .mxchat-rating-feedback-actions {
2074 display: flex;
2075 justify-content: flex-end;
2076 gap: 8px;
2077 }
2078
2079 .mxchat-rating-skip,
2080 .mxchat-rating-submit {
2081 padding: 6px 14px;
2082 border-radius: 8px;
2083 font-size: 13px;
2084 font-weight: 500;
2085 cursor: pointer;
2086 border: none;
2087 transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2088 }
2089
2090 .mxchat-rating-skip {
2091 background: transparent;
2092 color: inherit;
2093 opacity: 0.6;
2094 }
2095
2096 .mxchat-rating-skip:hover {
2097 opacity: 1;
2098 background: rgba(255, 255, 255, 0.08);
2099 }
2100
2101 .mxchat-rating-submit {
2102 /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2103 syncRatingBubbleColors() in chat-script.js paints the real bot colors
2104 straight onto this button (inline) from the bubble's COMPUTED style, so
2105 it adapts to both the inline color pickers AND the mxchat-theme AI
2106 customizer. These var()/literal values are the no-JS safety net — the
2107 literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2108 own (no white-on-white). Longhand background-color (not the `background`
2109 shorthand) because Chromium resolves inherited custom properties
2110 unreliably inside the shorthand. Do NOT use currentColor here — setting
2111 `color` would re-poison the background to the same value. */
2112 background-color: var(--mxchat-bot-fg, #212121);
2113 color: var(--mxchat-bot-bg, #ffffff);
2114 }
2115
2116 .mxchat-rating-submit:hover {
2117 transform: translateY(-1px);
2118 opacity: 0.9;
2119 }
2120
2121 .mxchat-rating-saved {
2122 padding: 10px 14px;
2123 margin: 10px 0;
2124 font-size: 13px;
2125 font-weight: 500;
2126 text-align: center;
2127 color: inherit;
2128 animation: mxchat-rating-fade-in 0.22s ease;
2129 }
2130
2131 @keyframes mxchat-rating-fade-in {
2132 from { opacity: 0; transform: translateY(4px); }
2133 to { opacity: 1; transform: translateY(0); }
2134 }