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

2,214 lines 53.3 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 .mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
601 background: none;
602 border: none;
603 padding: 0;
604 margin: 0;
605 cursor: pointer;
606 transition: all 0.2s ease;
607 color: #212121;
608 display: none; /* Hidden by default when open */
609 align-items: center;
610 justify-content: center;
611 width: 32px;
612 height: 32px;
613 box-shadow: none;
614 outline: none;
615 }
616
617 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
618 background: none;
619 border: none;
620 padding: 0;
621 margin: 0px; /* Center and add bottom margin */
622 cursor: pointer;
623 transition: all 0.2s ease;
624 color: #212121;
625 display: none; /* Hidden by default */
626 align-items: center;
627 justify-content: center;
628 width: 32px;
629 height: 32px;
630 box-shadow: none;
631 outline: none;
632 align-self: center; /* Center in flex container */
633 order: -1; /* Make sure it appears first */
634 flex-shrink: 0; /* same flex auto-minimum caveat as .mxchat-popular-question */
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 /* The defensive baseline's min-height:0 on :where(button) removes the
687 flex automatic minimum size, so without this the column-flex scroll
688 container compresses all questions to fit 200px and the scrollbox
689 never appears (plan d51560). */
690 flex-shrink: 0;
691 }
692
693 .mxchat-popular-question:hover {
694 background-color: #eaeaea;
695 border-color: #999;
696 box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
697 transform: translateY(-1px);
698 }
699
700 .mxchat-popular-question:focus {
701 outline: none;
702 background-color: #e0e0e0;
703 border-color: #777;
704 box-shadow: 0 0 0 3px rgba(100, 149, 237, 0.5);
705 }
706
707 .mxchat-popular-question:active {
708 background-color: #d8d8d8;
709 border-color: #666;
710 box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
711 transform: translateY(0);
712 }
713
714 .mxchat-popular-questions-container::-webkit-scrollbar {
715 width: 8px;
716 }
717
718 .mxchat-popular-questions-container::-webkit-scrollbar-track {
719 background: #f1f1f1;
720 border-radius: 4px;
721 }
722
723 .mxchat-popular-questions-container::-webkit-scrollbar-thumb {
724 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
725 border-radius: 4px;
726 }
727
728 .mxchat-popular-questions-container::-webkit-scrollbar-thumb:hover {
729 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
730 }
731
732 /* ========================================
733 CORE CHATBOT UI
734 ======================================== */
735 .invisible {
736 display: none;
737 opacity: 0;
738 pointer-events: none;
739 }
740
741 .mxchat-chatbot{
742 background: #fff;
743 overflow: hidden;
744 position: relative;
745 display: flex;
746 flex-direction: column;
747 flex-grow: 1;
748 min-height: 0; /* Allow flex shrinking */
749 box-sizing: border-box;
750 }
751
752 .chat-container {
753 display: flex;
754 flex-direction: column;
755 flex-grow: 1;
756 min-height: 0; /* Critical for flex overflow scrolling */
757 height: 100%;
758 }
759
760 .chat-box {
761 flex-grow: 1;
762 overflow-y: auto;
763 padding: 10px;
764 margin-bottom: 0;
765 font-size: 1rem;
766 min-height: 0; /* Critical for flex overflow scrolling */
767 }
768
769 .chat-box::-webkit-scrollbar {
770 width: 5px;
771 }
772
773 .chat-box::-webkit-scrollbar-thumb {
774 background-color: #212121;
775 border-radius: 20px;
776 }
777
778 .bot-message,
779 .user-message {
780 margin-bottom: 15px;
781 padding: 10px;
782 display: inline-block;
783 max-width: 85%;
784 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
785 font-size: 14px;
786 line-height: 24px;
787 }
788
789 .user-message {
790 background: #fff;
791 color: #212121;
792 text-align: left;
793 float: right;
794 clear: both;
795 border-radius: 18px 0 18px 18px;
796 word-wrap: break-word;
797 border: 1px solid rgba(226, 232, 255, 0.2);
798 }
799
800 .user-message p {
801 margin: 0;
802 }
803
804 .mxchat-chatbot .chat-container .chat-box .bot-message {
805 float: left;
806 clear: both;
807 border: 1px solid rgba(226, 232, 255, 0.2);
808 border-radius: 0 18px 18px;
809 background: #212121;
810 color: #fff;
811 overflow-x: hidden;
812 }
813
814 .mxchat-chatbot .chat-container .chat-box .agent-message {
815 text-align: left;
816 float: left;
817 clear: both;
818 border: 1px solid rgba(226, 232, 255, 0.2);
819 border-radius: 0 18px 18px;
820 background: #212121;
821 color: #fff;
822 overflow-x: hidden;
823 margin-bottom: 15px;
824 padding: 10px;
825 display: inline-block;
826 max-width: 85%;
827 font-size: 14px;
828 line-height: 24px;
829 box-shadow: -2px 2px rgba(250, 115, 230, 0.6), -4px 4px rgba(120, 115, 245, 0.6);
830 }
831
832 .bot-message p {
833 margin: 0 0 1em 0;
834 }
835
836 .bot-message p:last-child {
837 margin-bottom: 0;
838 }
839
840 .bot-message {
841 white-space: pre-line;
842 }
843
844 .bot-message a {
845 color: #ffffff;
846 text-decoration: underline !important;
847 }
848
849 .bot-message a:hover {
850 color: #e0e0e0;
851 text-decoration: underline;
852 }
853
854 .bot-message a:visited {
855 color: #ffffff;
856 }
857
858 .system-message {
859 padding: 8px 12px;
860 margin: 8px 0;
861 background-color: rgba(120, 115, 245, 0.1);
862 border-radius: 8px;
863 color: #555;
864 font-style: italic;
865 font-size: 14px;
866 text-align: center;
867 }
868
869 .mxchat-chatbot-wrapper {
870 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
871 border-radius: 10px;
872 display: flex;
873 flex-direction: column;
874 height: 100%;
875 width: 100%;
876 min-height: 0; /* Allow flex shrinking */
877 overflow: hidden;
878 }
879
880 /* ========================================
881 INPUT & CONTROLS
882 ======================================== */
883 .mxchat-chatbot .chat-container .input-container {
884 position: relative;
885 display: flex;
886 align-items: center;
887 padding-right: 40px;
888 border: 1px solid #ccc;
889 border-radius: 10px;
890 margin: 0 10px 10px;
891 }
892
893 .mxchat-chatbot .chat-container .input-container .chat-input {
894 flex-grow: 1;
895 color: #212121;
896 line-height: 24px;
897 background: transparent;
898 margin-bottom: 0;
899 width: 100%;
900 min-height: 20px;
901 max-height: 65px;
902 resize: none;
903 overflow-y: auto;
904 font-size: 16px;
905 border: none;
906 border-radius: 5px;
907 box-sizing: border-box;
908 padding: 0.4em 0.5em;
909 outline: none;
910 border-radius: 10px;
911 }
912
913 .chat-input::-webkit-scrollbar {
914 width: 8px;
915 }
916
917 .chat-input::-webkit-scrollbar-track {
918 background: #f1f1f1;
919 border-radius: 4px;
920 }
921
922 .chat-input::-webkit-scrollbar-thumb {
923 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
924 border-radius: 4px;
925 }
926
927 .chat-input::-webkit-scrollbar-thumb:hover {
928 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
929 }
930
931 .chat-input {
932 scrollbar-width: thin;
933 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
934 }
935
936 /* Chat input character counter + soft limit feedback (plan 7091a2).
937 Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
938 fades in and ramps neutral -> amber -> red. The input border mirrors the same
939 cue, and an over-limit keystroke/paste triggers a brief shake so the hard
940 maxlength cap (plan a3fae2) is never a silent "input jumps back". */
941 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
942 position: absolute;
943 bottom: 3px;
944 right: 44px; /* clear the absolutely-positioned send button */
945 font-size: 11px;
946 line-height: 1;
947 font-variant-numeric: tabular-nums;
948 color: #9aa0a6;
949 background: rgba(255, 255, 255, 0.85);
950 padding: 1px 5px;
951 border-radius: 8px;
952 pointer-events: none;
953 opacity: 0;
954 visibility: hidden;
955 transition: opacity 0.18s ease, color 0.18s ease;
956 z-index: 2;
957 }
958 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
959 opacity: 1;
960 visibility: visible;
961 }
962 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
963 color: #d98300; /* amber: approaching the cap */
964 }
965 .mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
966 color: #d93025; /* red: at the cap */
967 font-weight: 600;
968 }
969 /* RTL widgets: counter on the opposite side. */
970 .mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
971 [dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
972 right: auto;
973 left: 44px;
974 }
975 /* Input border affordance mirrors the counter color. */
976 .mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
977 border-color: #f0b048;
978 }
979 .mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
980 border-color: #e5675c;
981 }
982 /* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
983 .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
984 animation: mxchat-input-bump 0.2s ease;
985 }
986 @keyframes mxchat-input-bump {
987 0% { transform: translateX(0); }
988 25% { transform: translateX(-3px); }
989 50% { transform: translateX(3px); }
990 75% { transform: translateX(-2px); }
991 100% { transform: translateX(0); }
992 }
993 /* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
994 @media (prefers-reduced-motion: reduce) {
995 .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
996 animation: none;
997 }
998 }
999
1000 .mxchat-chatbot .chat-container .input-container .send-button {
1001 position: absolute;
1002 right: 10px;
1003 top: 50%;
1004 transform: translateY(-50%);
1005 border: none;
1006 border-radius: 50%;
1007 width: 30px;
1008 height: 30px;
1009 display: flex;
1010 align-items: center;
1011 justify-content: center;
1012 background: transparent !important;
1013 padding: 5px;
1014 margin: 0;
1015 transition: background-color 0.3s;
1016 color: #fff;
1017 font-size: 1rem;
1018 cursor: pointer;
1019 font-weight: 700;
1020 }
1021
1022 .send-button svg {
1023 width: 25px;
1024 height: 25px;
1025 pointer-events: none;
1026 }
1027
1028 .send-button:hover {
1029 opacity: 0.8;
1030 }
1031
1032 /* Stop state while a response is streaming: the send button becomes a Stop
1033 control in place — same chrome and position, swapped glyph. Themeable hook;
1034 the glyph's size/color are mirrored from the send icon at runtime. */
1035 .mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
1036 cursor: pointer;
1037 }
1038
1039 .mxchat-chatbot .spinner {
1040 animation: rotate 2s linear infinite;
1041 width: 20px;
1042 height: 20px;
1043 }
1044
1045 .mxchat-chatbot .spinner circle {
1046 stroke: #212121;
1047 stroke-linecap: round;
1048 animation: dash 1.5s ease-in-out infinite;
1049 }
1050
1051 @keyframes rotate {
1052 100% {
1053 transform: rotate(360deg);
1054 }
1055 }
1056
1057 @keyframes dash {
1058 0% {
1059 stroke-dasharray: 1, 150;
1060 stroke-dashoffset: 0;
1061 }
1062 50% {
1063 stroke-dasharray: 90, 150;
1064 stroke-dashoffset: -35;
1065 }
1066 100% {
1067 stroke-dasharray: 90, 150;
1068 stroke-dashoffset: -124;
1069 }
1070 }
1071
1072 /* ========================================
1073 FLOATING CHATBOT & CONTROLS
1074 ======================================== */
1075 .chatbot-title-container {
1076 display: flex;
1077 align-items: center;
1078 justify-content: space-between;
1079 gap: 10px;
1080 flex: 1 1 auto;
1081 min-width: 0;
1082 }
1083
1084 .chatbot-title-group {
1085 display: flex;
1086 align-items: center;
1087 gap: 8px;
1088 }
1089
1090 .chat-mode-indicator {
1091 font-size: 12px;
1092 line-height: 1;
1093 margin-right: 0;
1094 padding: 4px 9px;
1095 border-radius: 999px;
1096 background: rgba(255, 255, 255, 0.18);
1097 color: #ffffff;
1098 display: inline-flex;
1099 align-items: center;
1100 height: 22px;
1101 white-space: nowrap;
1102 flex: 0 0 auto;
1103 }
1104
1105 .floating-chatbot {
1106 position: fixed;
1107 bottom: 25px;
1108 right: 25px;
1109 width: 375px;
1110 /* Use viewport-aware height with fallbacks */
1111 height: min(625px, calc(100vh - 50px)); /* 50px = 25px top + 25px bottom margin */
1112 height: min(625px, calc(100dvh - 50px)); /* Dynamic viewport height for mobile browsers */
1113 max-height: calc(100vh - 50px);
1114 max-height: calc(100dvh - 50px); /* Fallback for browsers supporting dvh */
1115 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1116 border-radius: 20px;
1117 overflow: hidden;
1118 display: flex;
1119 flex-direction: column;
1120 z-index: 100000;
1121 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1122 transform: translateY(20%);
1123 opacity: 0;
1124 pointer-events: none;
1125 }
1126
1127 .floating-chatbot.visible {
1128 transform: translateY(0);
1129 opacity: 1;
1130 pointer-events: auto;
1131 }
1132
1133 /* ========================================
1134 EMBEDDED CHATBOT (Shortcode)
1135 ======================================== */
1136 /* Embedded chatbots are NOT inside .floating-chatbot wrapper */
1137 /* Apply fixed height like floating widget so quick questions overlay properly */
1138 .mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) {
1139 height: 500px;
1140 max-height: 500px;
1141 }
1142
1143 /* Hide the minimize/exit button for embedded chatbots - it doesn't make sense */
1144 .mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) .exit-chat {
1145 display: none !important;
1146 }
1147
1148 .floating-chatbot-button.hidden,
1149 .exit-chat span {
1150 display: none !important;
1151 }
1152
1153 .chatbot-top-bar button.exit-chat:hover {
1154 background: rgba(255, 255, 255, 0.12);
1155 }
1156 .visible {
1157 display: flex;
1158 }
1159
1160 .floating-chatbot-button {
1161 transition: opacity 1s ease-in-out;
1162 font-size: 1.25rem;
1163 position: fixed;
1164 bottom: 30px;
1165 right: 25px;
1166 background-color: #212121;
1167 color: #fff;
1168 width: 60px;
1169 height: 60px;
1170 border-radius: 50%;
1171 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) !important;
1172 justify-content: center;
1173 align-items: center;
1174 cursor: pointer;
1175 transition: 0.3s;
1176 z-index: 100000;
1177 display: flex;
1178 }
1179
1180 .floating-chatbot-button:focus-visible {
1181 outline: 3px solid #7873f5;
1182 outline-offset: 3px;
1183 }
1184
1185 .floating-chatbot-button img {
1186 max-width: 100%;
1187 max-height: 100%;
1188 width: auto;
1189 height: auto;
1190 }
1191
1192 .chatbot-top-bar {
1193 background: #212121;
1194 }
1195
1196 .mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1197 background: transparent;
1198 /* v3.2.15 (plan-52fd4c): explicit guards against host-theme button rules.
1199 Margin deliberately untouched — .exit-chat relies on margin-left:auto. */
1200 background-image: none;
1201 border: none;
1202 opacity: 0.8;
1203 padding: 0;
1204 width: 32px;
1205 height: 32px;
1206 min-width: 32px;
1207 min-height: 32px;
1208 max-width: none;
1209 flex: 0 0 auto;
1210 border-radius: 6px;
1211 font-family: inherit;
1212 text-transform: none;
1213 text-shadow: none;
1214 appearance: none;
1215 -webkit-appearance: none;
1216 transition: opacity 0.15s ease, background 0.15s ease;
1217 }
1218
1219 .mxchat-chatbot-wrapper .chatbot-top-bar {
1220 cursor: pointer;
1221 color: #fff;
1222 padding: 8px 12px;
1223 min-height: 48px;
1224 gap: 8px;
1225 border-top-left-radius: 10px;
1226 border-top-right-radius: 10px;
1227 display: flex;
1228 justify-content: space-between;
1229 align-items: center;
1230 }
1231
1232 .mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1233 font-size: 15px;
1234 line-height: 1.2;
1235 padding: 0;
1236 margin: 0;
1237 font-family: 'Plus Jakarta Sans', sans-serif;
1238 font-weight: 600;
1239 }
1240
1241 .exit-chat {
1242 border: none;
1243 background: transparent;
1244 cursor: pointer;
1245 display: inline-flex;
1246 align-items: center;
1247 justify-content: center;
1248 padding: 0;
1249 margin-left: auto;
1250 opacity: 0.8;
1251 width: 32px;
1252 height: 32px;
1253 min-width: 32px;
1254 flex: 0 0 auto;
1255 }
1256
1257 .exit-chat svg {
1258 width: 18px;
1259 height: 18px;
1260 fill: none;
1261 stroke: currentColor;
1262 }
1263
1264 .mxchat-chatbot-wrapper .chatbot-footer {
1265 text-align: center;
1266 padding-bottom: 10px;
1267 font-size: 0.85em;
1268 }
1269
1270 .mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1271 font-size: 12px;
1272 margin: 0;
1273 color: #71717a;
1274 }
1275
1276 .mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1277 color: #0073aa;
1278 text-decoration: underline;
1279 font-size: 12px;
1280 }
1281
1282 .mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1283 text-decoration: none;
1284 color: inherit;
1285 font-weight: 700;
1286 }
1287
1288 .mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1289 text-decoration: underline;
1290 }
1291
1292 /* ========================================
1293 INIT LOADER (shown while chat initializes)
1294 ======================================== */
1295 .mxchat-init-loader {
1296 display: flex;
1297 align-items: center;
1298 justify-content: center;
1299 flex-grow: 1;
1300 min-height: 0;
1301 animation: fadeIn 0.3s ease-in-out;
1302 }
1303
1304 .mxchat-init-loader-dots {
1305 display: flex;
1306 gap: 8px;
1307 }
1308
1309 .mxchat-init-loader-dots .dot {
1310 width: 8px;
1311 height: 8px;
1312 border-radius: 50%;
1313 background-color: #888;
1314 animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1315 }
1316
1317 .mxchat-init-loader-dots .dot:nth-child(1) {
1318 animation-delay: -0.32s;
1319 }
1320
1321 .mxchat-init-loader-dots .dot:nth-child(2) {
1322 animation-delay: -0.16s;
1323 }
1324
1325 /* ========================================
1326 THINKING DOTS ANIMATION
1327 ======================================== */
1328 .chat-box .bot-message.temporary-message .thinking-dots-container {
1329 display: flex;
1330 justify-content: center;
1331 align-items: center;
1332 overflow: hidden;
1333 height: 20px;
1334 position: relative;
1335 z-index: 1;
1336 flex-shrink: 0;
1337 }
1338
1339 .chat-box .bot-message.temporary-message .thinking-dots {
1340 display: flex;
1341 justify-content: center;
1342 align-items: center;
1343 height: 90%;
1344 gap: 5px;
1345 flex-shrink: 0;
1346 }
1347
1348 .chat-box .bot-message.temporary-message .thinking-dots .dot {
1349 height: 6px;
1350 width: 6px;
1351 margin: 0 3px;
1352 background-color: #fff;
1353 border-radius: 50%;
1354 display: inline-block;
1355 animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1356 vertical-align: middle;
1357 }
1358
1359 .chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1360 animation-delay: -0.32s;
1361 }
1362
1363 .chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1364 animation-delay: -0.16s;
1365 }
1366
1367 @keyframes mxchat-dot-bounce {
1368 0%, 100%, 80% {
1369 transform: scale(1);
1370 }
1371 40% {
1372 transform: scale(1.5);
1373 }
1374 }
1375
1376 /* ========================================
1377 PRE-CHAT MESSAGE
1378 ======================================== */
1379 .pre-chat-message {
1380 position: fixed;
1381 bottom: 85px;
1382 right: 30px;
1383 background-color: #fff;
1384 color: #212121;
1385 padding: 10px;
1386 box-shadow: 0px 0px 10px rgba(150, 150, 150, 0.3);
1387 border-radius: 5px;
1388 z-index: 1000;
1389 cursor: pointer;
1390 max-width: 325px;
1391 font-size: 14px;
1392 display: none;
1393 margin-bottom: 10px;
1394 }
1395
1396 .pre-chat-message .close-pre-chat-message {
1397 position: absolute;
1398 top: -6px;
1399 right: -6px;
1400 background-color: #ccc;
1401 border: none;
1402 color: #212121;
1403 font-size: 14px;
1404 cursor: pointer;
1405 border-radius: 50%;
1406 width: 20px;
1407 min-width: 20px;
1408 min-height: 20px;
1409 height: 20px;
1410 display: flex;
1411 align-items: center;
1412 justify-content: center;
1413 padding: 0;
1414 line-height: 1;
1415 }
1416
1417 /* ========================================
1418 VIEWPORT HEIGHT CONSTRAINTS
1419 Handles bookmarks bar, browser zoom, and smaller screens
1420 ======================================== */
1421 @media screen and (max-height: 700px) {
1422 .floating-chatbot {
1423 bottom: 15px;
1424 height: calc(100vh - 30px);
1425 height: calc(100dvh - 30px);
1426 max-height: calc(100vh - 30px);
1427 max-height: calc(100dvh - 30px);
1428 }
1429
1430 .floating-chatbot-button {
1431 bottom: 20px;
1432 }
1433
1434 .pre-chat-message {
1435 bottom: 75px;
1436 }
1437 }
1438
1439 @media screen and (max-height: 550px) {
1440 .floating-chatbot {
1441 bottom: 10px;
1442 height: calc(100vh - 20px);
1443 height: calc(100dvh - 20px);
1444 max-height: calc(100vh - 20px);
1445 max-height: calc(100dvh - 20px);
1446 }
1447
1448 /* Reduce padding in tight spaces */
1449 .mxchat-popular-questions {
1450 padding: 0 8px 5px;
1451 margin-bottom: 8px;
1452 }
1453
1454 .mxchat-popular-question {
1455 padding: 8px 12px;
1456 font-size: 13px;
1457 line-height: 20px;
1458 }
1459
1460 .mxchat-chatbot .chat-container .input-container {
1461 margin: 0 8px 8px;
1462 }
1463
1464 .mxchat-chatbot-wrapper .chatbot-footer {
1465 padding-bottom: 5px;
1466 }
1467 }
1468
1469 /* ========================================
1470 MOBILE RESPONSIVE
1471 ======================================== */
1472 @media screen and (max-width: 782px) {
1473 .mxchat-search-results {
1474 gap: 15px !important;
1475 }
1476
1477 .mxchat-search-intro {
1478 font-size: 15px !important;
1479 }
1480
1481 .mxchat-search-title {
1482 font-size: 15px !important;
1483 }
1484
1485 .mxchat-search-description {
1486 font-size: 13px !important;
1487 }
1488 }
1489
1490 @media (max-width: 550px) {
1491 .questions-toggle-btn,
1492 .questions-collapse-btn {
1493 width: 28px;
1494 height: 28px;
1495 }
1496
1497 .questions-toggle-btn svg,
1498 .questions-collapse-btn svg {
1499 width: 22px;
1500 height: 22px;
1501 }
1502
1503 .pre-chat-message {
1504 bottom: 70px;
1505 right: 15px;
1506 }
1507
1508 .chat-input {
1509 width: calc(100% - 70px);
1510 }
1511
1512 .bot-message,
1513 .user-message {
1514 padding: 10px;
1515 max-width: 95%;
1516 }
1517
1518 .floating-chatbot-button {
1519 bottom: 15px;
1520 right: 10px;
1521 }
1522
1523 .floating-chatbot {
1524 width: calc(100vw - 16px);
1525 /* Use multiple fallbacks for maximum browser compatibility */
1526 height: calc(100vh - 16px); /* Fallback */
1527 height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1528 height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1529 max-height: calc(100vh - 16px);
1530 max-height: calc(100dvh - 16px);
1531 margin: 0;
1532 padding: 0;
1533 position: fixed;
1534 bottom: 8px;
1535 top: auto;
1536 left: 8px;
1537 right: 8px;
1538 border-radius: 16px;
1539 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1540 }
1541
1542 .floating-chatbot .mxchat-chatbot-wrapper {
1543 border-radius: 16px;
1544 overflow: hidden;
1545 }
1546
1547 .mxchat-chatbot-wrapper .chatbot-top-bar {
1548 border-top-left-radius: 16px;
1549 border-top-right-radius: 16px;
1550 }
1551 }
1552
1553
1554
1555 pre {
1556 background-color: #000;
1557 border: 1px solid #ddd;
1558 border-radius: 20px;
1559 border-left: 3px solid #9e7aff;
1560 color: #fff;
1561 page-break-inside: avoid;
1562 font-family: monospace;
1563 font-size: 15px;
1564 line-height: 1.6;
1565 margin-bottom: 1.6em;
1566 max-width: 100%;
1567 overflow: auto;
1568 padding: 1em 1.5em;
1569 display: block;
1570 word-wrap: break-word;
1571 }
1572
1573 .copy-btn {
1574 padding: 10px 20px;
1575 border: none;
1576 border-radius: 4px;
1577 background-color: #9e7aff;
1578 transition: background-color 0.3s;
1579 color: #fff;
1580 font-size: 1rem;
1581 cursor: pointer;
1582 font-weight: 700;
1583 margin-bottom: 10px;
1584 }
1585
1586 .copy-btn:hover {
1587 opacity: 0.8;
1588 }
1589
1590 .mxchat-product-card {
1591 display: flex;
1592 flex-direction: column;
1593 align-items: center;
1594 margin: 10px 0;
1595 padding: 10px;
1596 border-radius: 5px;
1597 background-color: inherit;
1598 }
1599
1600 .mxchat-product-card img.mxchat-product-image {
1601 max-width: 100%;
1602 height: auto;
1603 margin-bottom: 5px;
1604 border-radius: 4px;
1605 }
1606
1607 .mxchat-product-card h3.mxchat-product-name {
1608 font-size: 16px;
1609 font-weight: bold;
1610 margin: 5px 0;
1611 text-align: center;
1612 color: inherit;
1613 }
1614
1615 .mxchat-product-card .mxchat-product-price {
1616 color: inherit;
1617 font-weight: bold;
1618 margin-bottom: 5px;
1619 }
1620
1621 .mxchat-product-card .mxchat-product-description {
1622 font-size: 14px;
1623 text-align: center;
1624 margin-bottom: 10px;
1625 color: inherit;
1626 }
1627
1628 .mxchat-product-card .mxchat-add-to-cart-button {
1629 background-color: #212121;
1630 color: #fff;
1631 padding: 8px 12px;
1632 border: none;
1633 cursor: pointer;
1634 border-radius: 12px;
1635 transition: background-color 0.3s ease;
1636 }
1637
1638 .mxchat-product-card .mxchat-add-to-cart-button:hover {
1639 background-color: #212121;
1640 }
1641
1642 .mxchat-image-gallery {
1643 display: flex;
1644 flex-wrap: wrap;
1645 gap: 10px;
1646 justify-content: center;
1647 }
1648
1649 .mxchat-image-item {
1650 text-align: center;
1651 overflow: hidden;
1652 word-wrap: break-word;
1653 }
1654
1655 .mxchat-image-title {
1656 display: block;
1657 font-size: 14px;
1658 color: inherit;
1659 white-space: nowrap;
1660 overflow: hidden;
1661 text-overflow: ellipsis;
1662 max-width: 100%;
1663 }
1664
1665 .mxchat-image-link {
1666 text-decoration: none;
1667 }
1668
1669 .mxchat-image-thumbnail {
1670 max-width: 100%;
1671 height: auto;
1672 border-radius: 5px;
1673 transition: transform 0.3s;
1674 }
1675
1676 .mxchat-image-thumbnail:hover {
1677 transform: scale(1.05);
1678 }
1679
1680 .mxchat-generated-image {
1681 max-width: 100%;
1682 height: auto;
1683 border-radius: 0 0 8px 8px;
1684 }
1685
1686 /* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1687 Caption colors INHERIT from the message bubble (same idiom as
1688 .mxchat-product-card) so the embed reads correctly on any widget theme —
1689 bot bubbles commonly force their own text color. */
1690 .mxchat-youtube-embed {
1691 max-width: 340px;
1692 margin-top: 8px;
1693 }
1694
1695 .mxchat-youtube-facade {
1696 position: relative;
1697 display: block;
1698 width: 100%;
1699 padding: 0;
1700 margin: 0;
1701 border: none;
1702 background: #000;
1703 cursor: pointer;
1704 aspect-ratio: 16 / 9;
1705 border-radius: 10px;
1706 overflow: hidden;
1707 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1708 }
1709
1710 .mxchat-youtube-thumb {
1711 width: 100%;
1712 height: 100%;
1713 object-fit: cover;
1714 display: block;
1715 opacity: 0.92;
1716 transition: opacity 0.2s;
1717 }
1718
1719 .mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1720 opacity: 1;
1721 }
1722
1723 .mxchat-youtube-play {
1724 position: absolute;
1725 top: 50%;
1726 left: 50%;
1727 transform: translate(-50%, -50%);
1728 display: flex;
1729 align-items: center;
1730 justify-content: center;
1731 width: 52px;
1732 height: 52px;
1733 border-radius: 50%;
1734 background: rgba(0, 0, 0, 0.72);
1735 color: #fff;
1736 transition: transform 0.2s, background 0.2s;
1737 }
1738
1739 .mxchat-youtube-play svg {
1740 margin-left: 3px;
1741 }
1742
1743 .mxchat-youtube-facade:hover .mxchat-youtube-play {
1744 transform: translate(-50%, -50%) scale(1.08);
1745 background: rgba(0, 0, 0, 0.85);
1746 }
1747
1748 .mxchat-youtube-iframe {
1749 width: 100%;
1750 aspect-ratio: 16 / 9;
1751 border: none;
1752 display: block;
1753 border-radius: 10px;
1754 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1755 }
1756
1757 .mxchat-youtube-caption {
1758 display: flex;
1759 align-items: baseline;
1760 justify-content: space-between;
1761 gap: 10px;
1762 padding: 8px 2px 0;
1763 background: transparent;
1764 color: inherit;
1765 }
1766
1767 .mxchat-youtube-title {
1768 font-size: 13px;
1769 font-weight: 600;
1770 color: inherit;
1771 overflow: hidden;
1772 white-space: nowrap;
1773 text-overflow: ellipsis;
1774 }
1775
1776 .mxchat-youtube-link {
1777 font-size: 12px;
1778 white-space: nowrap;
1779 color: inherit;
1780 opacity: 0.85;
1781 text-decoration: underline;
1782 }
1783
1784 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1785 padding: 10px;
1786 }
1787
1788 #widget_icon_10 {
1789 fill: #fff;
1790 }
1791
1792
1793 /* This selector with more context - showing the collapse button in certain states */
1794 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1795 background: none;
1796 border: none;
1797 padding: 0;
1798 margin: 0px;
1799 cursor: pointer;
1800 transition: all 0.2s ease;
1801 color: #212121;
1802 display: none; /* Hidden by default */
1803 align-items: center;
1804 justify-content: center;
1805 width: 32px;
1806 height: 32px;
1807 box-shadow: none;
1808 outline: none;
1809 align-self: center; /* THIS IS MISSING */
1810 order: -1; /* THIS IS MISSING */
1811 }
1812
1813 /* ALL hover states - these are MISSING from your new CSS */
1814 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1815 background: none;
1816 border: none;
1817 box-shadow: none;
1818 }
1819
1820 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1821 outline: none;
1822 background: none;
1823 border: none;
1824 box-shadow: none;
1825 }
1826
1827 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1828 background: none;
1829 border: none;
1830 box-shadow: none;
1831 }
1832
1833 /* SVG styles - these are MISSING */
1834 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1835 fill: none;
1836 stroke: #212121;
1837 transition: transform 0.2s ease;
1838 width: 25px;
1839 height: 25px;
1840 }
1841
1842 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1843 opacity: 0.7;
1844 }
1845
1846 /* THE CRITICAL DISPLAY RULE - this shows when it's been collapsed before */
1847 .mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1848 display: flex;
1849 }
1850
1851 /* Hide when actually collapsed */
1852 .mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1853 display: none;
1854 }
1855
1856 /* ============================================================
1857 Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1858 Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1859 mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1860
1861 v3.2.10: explicit `order` rules pin the visual order
1862 title (0) | kebab (1) | down-arrow (2)
1863 so the down-arrow is always the rightmost icon regardless of source
1864 order or which sibling has margin-left:auto.
1865 ============================================================ */
1866 .mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1867 .mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1868 .mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1869
1870 .mxchat-header-menu-wrap {
1871 position: relative;
1872 display: inline-flex;
1873 align-items: center;
1874 margin-left: auto; /* push kebab + arrow group to the right edge */
1875 }
1876 .mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1877 .mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1878 margin-left: 4px; /* even, snug gap between kebab and close */
1879 }
1880 .mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1881 background: rgba(255, 255, 255, 0.12);
1882 opacity: 1;
1883 outline: none;
1884 }
1885 /* v3.2.15 (plan-52fd4c): kebab rules scoped under the wrapper + explicit
1886 guards on every property a theme's button/link rules commonly set
1887 (font-family, margin, appearance, text-transform, background-image),
1888 after a customer site's theme visibly mangled the dropdown. */
1889 .mxchat-chatbot-wrapper .mxchat-header-btn {
1890 border: none;
1891 background: transparent;
1892 background-image: none;
1893 cursor: pointer;
1894 display: inline-flex;
1895 align-items: center;
1896 justify-content: center;
1897 padding: 0;
1898 margin: 0;
1899 opacity: 0.8;
1900 color: #fff;
1901 font-family: inherit;
1902 text-transform: none;
1903 text-shadow: none;
1904 appearance: none;
1905 -webkit-appearance: none;
1906 transition: opacity 0.15s ease, background 0.15s ease;
1907 border-radius: 6px;
1908 line-height: 0;
1909 width: 32px;
1910 height: 32px;
1911 min-width: 32px;
1912 min-height: 32px;
1913 max-width: none;
1914 flex: 0 0 auto;
1915 }
1916 .mxchat-chatbot-wrapper .mxchat-header-btn:hover,
1917 .mxchat-chatbot-wrapper .mxchat-header-btn:focus {
1918 opacity: 1;
1919 background: rgba(255, 255, 255, 0.12);
1920 outline: none;
1921 }
1922 .mxchat-chatbot-wrapper .mxchat-header-btn[aria-expanded="true"] {
1923 opacity: 1;
1924 background: rgba(255, 255, 255, 0.12);
1925 }
1926 .mxchat-chatbot-wrapper .mxchat-menu-trigger svg {
1927 width: 18px;
1928 height: 18px;
1929 }
1930
1931 .mxchat-chatbot-wrapper .mxchat-header-menu {
1932 position: absolute;
1933 top: calc(100% + 6px);
1934 right: 0;
1935 min-width: 220px;
1936 margin: 0;
1937 background: var(--mxchat-menu-bg, #ffffff);
1938 color: var(--mxchat-menu-fg, #1a1a1a);
1939 border: 1px solid rgba(127, 127, 127, 0.20);
1940 border-radius: 10px;
1941 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1942 padding: 4px;
1943 font-family: inherit;
1944 z-index: 99;
1945 opacity: 0;
1946 transform: translateY(-4px);
1947 pointer-events: none;
1948 transition: opacity 0.12s ease, transform 0.12s ease;
1949 }
1950 .mxchat-chatbot-wrapper .mxchat-header-menu.is-open {
1951 opacity: 1;
1952 transform: translateY(0);
1953 pointer-events: auto;
1954 }
1955 .mxchat-chatbot-wrapper .mxchat-header-menu[hidden] {
1956 display: none;
1957 }
1958 .mxchat-chatbot-wrapper .mxchat-menu-item {
1959 display: flex;
1960 align-items: center;
1961 gap: 10px;
1962 width: 100%;
1963 padding: 8px 12px;
1964 margin: 0;
1965 min-height: 40px;
1966 border: none;
1967 background: transparent;
1968 background-image: none;
1969 color: inherit;
1970 font-family: inherit;
1971 font-size: 14px;
1972 line-height: 1.3;
1973 letter-spacing: normal;
1974 text-align: left;
1975 text-transform: none;
1976 text-shadow: none;
1977 white-space: nowrap;
1978 appearance: none;
1979 -webkit-appearance: none;
1980 cursor: pointer;
1981 border-radius: 6px;
1982 transition: background 0.12s ease;
1983 text-decoration: none;
1984 box-sizing: border-box;
1985 }
1986 .mxchat-chatbot-wrapper .mxchat-menu-item:hover,
1987 .mxchat-chatbot-wrapper .mxchat-menu-item:focus {
1988 background: rgba(127, 127, 127, 0.18);
1989 outline: none;
1990 }
1991 .mxchat-menu-item-icon {
1992 display: inline-flex;
1993 align-items: center;
1994 justify-content: center;
1995 width: 16px;
1996 height: 16px;
1997 color: inherit;
1998 opacity: 0.85;
1999 flex-shrink: 0;
2000 }
2001 .mxchat-menu-item-icon svg {
2002 width: 16px;
2003 height: 16px;
2004 display: block;
2005 }
2006 .mxchat-menu-item-label {
2007 flex: 1;
2008 color: inherit;
2009 }
2010
2011 /* RTL — flip the dropdown anchor edge */
2012 [dir="rtl"] .mxchat-header-menu,
2013 .mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
2014 right: auto;
2015 left: 0;
2016 }
2017
2018 /* ============================================================================
2019 Satisfaction rating (v3.2.6 — polished per plan-141a12)
2020 Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
2021 ========================================================================= */
2022 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
2023 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
2024 .mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
2025 clear: both;
2026 float: left;
2027 max-width: 92%;
2028 box-sizing: border-box;
2029 }
2030
2031 /* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
2032 inline style; the inner rating component supplies its own padding + layout. */
2033 .mxchat-rating-bot-bubble {
2034 padding: 0;
2035 overflow: visible;
2036 }
2037
2038 .mxchat-rating-prompt {
2039 display: flex;
2040 flex-direction: column;
2041 align-items: stretch;
2042 gap: 10px;
2043 padding: 10px 14px;
2044 margin: 10px 0;
2045 font-size: 14px;
2046 color: inherit;
2047 }
2048
2049 .mxchat-rating-question {
2050 color: inherit;
2051 opacity: 0.85;
2052 font-weight: 500;
2053 }
2054
2055 .mxchat-rating-actions {
2056 display: flex;
2057 align-items: center;
2058 gap: 8px;
2059 }
2060
2061 .mxchat-rating-buttons {
2062 display: inline-flex;
2063 gap: 6px;
2064 }
2065
2066 .mxchat-rating-btn {
2067 display: inline-flex;
2068 align-items: center;
2069 justify-content: center;
2070 width: 32px;
2071 height: 32px;
2072 border-radius: 8px;
2073 background: transparent;
2074 border: none;
2075 color: inherit;
2076 opacity: 0.6;
2077 cursor: pointer;
2078 transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
2079 padding: 0;
2080 }
2081
2082 .mxchat-rating-btn:hover {
2083 opacity: 1;
2084 transform: scale(1.12);
2085 background: rgba(255, 255, 255, 0.08);
2086 }
2087
2088 .mxchat-rating-btn:focus-visible {
2089 opacity: 1;
2090 outline: 2px solid currentColor;
2091 outline-offset: 2px;
2092 }
2093
2094 .mxchat-rating-btn svg {
2095 pointer-events: none;
2096 }
2097
2098 .mxchat-rating-dismiss {
2099 width: 24px;
2100 height: 24px;
2101 border-radius: 6px;
2102 background: transparent;
2103 border: none;
2104 color: inherit;
2105 opacity: 0.45;
2106 cursor: pointer;
2107 font-size: 18px;
2108 line-height: 1;
2109 transition: opacity 0.18s ease, background-color 0.18s ease;
2110 }
2111
2112 .mxchat-rating-dismiss:hover {
2113 opacity: 0.9;
2114 background: rgba(255, 255, 255, 0.08);
2115 }
2116
2117 /* Feedback panel that replaces the prompt after a rating is clicked */
2118 .mxchat-rating-feedback {
2119 padding: 12px 14px;
2120 margin: 10px 0;
2121 display: flex;
2122 flex-direction: column;
2123 gap: 10px;
2124 color: inherit;
2125 animation: mxchat-rating-fade-in 0.22s ease;
2126 }
2127
2128 .mxchat-rating-feedback-label {
2129 font-size: 13px;
2130 opacity: 0.85;
2131 font-weight: 500;
2132 }
2133
2134 .mxchat-rating-feedback-input {
2135 width: 100%;
2136 box-sizing: border-box;
2137 padding: 8px 10px;
2138 border: 1px solid rgba(255, 255, 255, 0.25);
2139 border-radius: 8px;
2140 font-size: 14px;
2141 font-family: inherit;
2142 resize: vertical;
2143 background: rgba(255, 255, 255, 0.08);
2144 color: inherit;
2145 }
2146
2147 .mxchat-rating-feedback-input:focus {
2148 outline: none;
2149 border-color: rgba(255, 255, 255, 0.45);
2150 background: rgba(255, 255, 255, 0.15);
2151 }
2152
2153 .mxchat-rating-feedback-actions {
2154 display: flex;
2155 justify-content: flex-end;
2156 gap: 8px;
2157 }
2158
2159 .mxchat-rating-skip,
2160 .mxchat-rating-submit {
2161 padding: 6px 14px;
2162 border-radius: 8px;
2163 font-size: 13px;
2164 font-weight: 500;
2165 cursor: pointer;
2166 border: none;
2167 transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2168 }
2169
2170 .mxchat-rating-skip {
2171 background: transparent;
2172 color: inherit;
2173 opacity: 0.6;
2174 }
2175
2176 .mxchat-rating-skip:hover {
2177 opacity: 1;
2178 background: rgba(255, 255, 255, 0.08);
2179 }
2180
2181 .mxchat-rating-submit {
2182 /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2183 syncRatingBubbleColors() in chat-script.js paints the real bot colors
2184 straight onto this button (inline) from the bubble's COMPUTED style, so
2185 it adapts to both the inline color pickers AND the mxchat-theme AI
2186 customizer. These var()/literal values are the no-JS safety net — the
2187 literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2188 own (no white-on-white). Longhand background-color (not the `background`
2189 shorthand) because Chromium resolves inherited custom properties
2190 unreliably inside the shorthand. Do NOT use currentColor here — setting
2191 `color` would re-poison the background to the same value. */
2192 background-color: var(--mxchat-bot-fg, #212121);
2193 color: var(--mxchat-bot-bg, #ffffff);
2194 }
2195
2196 .mxchat-rating-submit:hover {
2197 transform: translateY(-1px);
2198 opacity: 0.9;
2199 }
2200
2201 .mxchat-rating-saved {
2202 padding: 10px 14px;
2203 margin: 10px 0;
2204 font-size: 13px;
2205 font-weight: 500;
2206 text-align: center;
2207 color: inherit;
2208 animation: mxchat-rating-fade-in 0.22s ease;
2209 }
2210
2211 @keyframes mxchat-rating-fade-in {
2212 from { opacity: 0; transform: translateY(4px); }
2213 to { opacity: 1; transform: translateY(0); }
2214 }