PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.15
MxChat – AI Chatbot & Content Generation for WordPress v3.2.15
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.15, at css/chat-style.css

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