PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.4.3
MxChat – AI Chatbot & Content Generation for WordPress v2.4.3
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/chat-style.css +96 -1142 3.2.212.4.3 View file →
@@ -1,45 +1,4 @@
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 1 /* ========================================
43 2 NOTIFICATION SYSTEM
44 3 ======================================== */
45 4 .chat-notification-badge {
@@ -69,41 +28,21 @@
69 28 .email-blocker {
70 29 display: flex;
71 30 flex-direction: column;
72 31 align-items: center;
73 - /* No justify-content: center here — on an overflowing flex container it
74 - pushes content past BOTH edges, making the top unreachable by scroll.
75 - The auto margins on the first/last children below center the content
76 - when there is room and collapse to flex-start when there is not. */
32 + justify-content: center;
77 33 border-radius: 12px;
78 34 padding: 30px 20px;
79 35 max-width: 100%;
80 - max-height: 100%;
81 - overflow-y: auto;
82 - scrollbar-width: thin;
83 36 margin: auto;
84 37 text-align: center;
85 38 animation: fadeIn 0.5s ease-in-out;
86 39 }
87 40
88 -.email-blocker::-webkit-scrollbar {
89 - width: 5px;
90 -}
91 -
92 -.email-blocker::-webkit-scrollbar-thumb {
93 - background-color: #212121;
94 - border-radius: 20px;
95 -}
96 -
97 41 .email-blocker-header {
98 - margin-top: auto;
99 42 margin-bottom: 20px;
100 43 }
101 44
102 -.email-blocker .email-collection-form {
103 - margin-bottom: auto;
104 -}
105 -
106 45 .email-blocker-logo {
107 46 max-width: 80px;
108 47 margin-bottom: 10px;
109 48 }
@@ -140,40 +79,8 @@
140 79 box-shadow: 0 0 8px rgba(0, 115, 170, 0.3);
141 80 outline: none;
142 81 }
143 82
144 -/* Consent checkbox row (b062c4). Left-aligned inside the centered form so a
145 - multi-line label reads naturally; sized to stay compact on 320-390px. */
146 -.email-blocker .mxchat-consent-row {
147 - display: flex;
148 - align-items: flex-start;
149 - gap: 8px;
150 - width: 100%;
151 - margin-bottom: 15px;
152 - text-align: left;
153 -}
154 -
155 -.email-blocker .mxchat-consent-checkbox {
156 - flex-shrink: 0;
157 - width: 16px;
158 - height: 16px;
159 - margin: 2px 0 0;
160 - accent-color: #0073aa;
161 - cursor: pointer;
162 -}
163 -
164 -.email-blocker .mxchat-consent-label {
165 - font-size: 13px;
166 - line-height: 1.45;
167 - color: #555555;
168 - cursor: pointer;
169 -}
170 -
171 -.email-blocker .mxchat-consent-label a {
172 - color: #0073aa;
173 - text-decoration: underline;
174 -}
175 -
176 83 .email-blocker button {
177 84 background-color: #0073aa;
178 85 color: #ffffff;
179 86 padding: 12px 20px;
@@ -219,9 +126,9 @@
219 126 transform: translateY(0);
220 127 }
221 128 }
222 129
223 -.mxchat-chatbot-wrapper {
130 +#mxchat-chatbot-wrapper {
224 131 display: none;
225 132 }
226 133
227 134 /* ========================================
@@ -382,37 +289,8 @@
382 289
383 290 /* ========================================
384 291 CODE BLOCKS & INLINE CODE
385 292 ======================================== */
386 -.mxchat-table-wrapper {
387 - overflow-x: auto;
388 - margin: 12px 0;
389 - -webkit-overflow-scrolling: touch;
390 -}
391 -
392 -.mxchat-table {
393 - width: 100%;
394 - border-collapse: collapse;
395 - font-size: 0.9em;
396 - line-height: 1.4;
397 -}
398 -
399 -.mxchat-table th,
400 -.mxchat-table td {
401 - padding: 8px 12px;
402 - border: 1px solid rgba(128, 128, 128, 0.3);
403 - word-break: break-word;
404 -}
405 -
406 -.mxchat-table thead th {
407 - font-weight: 600;
408 - background: rgba(128, 128, 128, 0.15);
409 -}
410 -
411 -.mxchat-table tbody tr:nth-child(even) {
412 - background: rgba(128, 128, 128, 0.05);
413 -}
414 -
415 293 .mxchat-code-block-container {
416 294 margin: 16px 0;
417 295 border-radius: 8px;
418 296 background: rgba(255, 255, 255, 0.1);
@@ -532,9 +410,9 @@
532 410 opacity: 1;
533 411 background: none;
534 412 }
535 413
536 -.mxchat-chatbot .chat-toolbar {
414 +#mxchat-chatbot .chat-toolbar {
537 415 display: flex;
538 416 gap: 10px;
539 417 padding: 8px;
540 418 background: none;
@@ -540,9 +418,9 @@
540 418 background: none;
541 419 align-items: end;
542 420 }
543 421
544 -.mxchat-chatbot .toolbar-btn {
422 +#mxchat-chatbot .toolbar-btn {
545 423 background: none;
546 424 border: none;
547 425 padding: 0;
548 426 cursor: pointer;
@@ -556,14 +434,14 @@
556 434 min-width: 0;
557 435 box-shadow: none;
558 436 }
559 437
560 -.mxchat-chatbot .toolbar-btn svg {
438 +#mxchat-chatbot .toolbar-btn svg {
561 439 width: 100%;
562 440 height: 100%;
563 441 }
564 442
565 -.mxchat-chatbot .toolbar-btn:hover {
443 +#mxchat-chatbot .toolbar-btn:hover {
566 444 opacity: 1;
567 445 background: none;
568 446 border: none;
569 447 box-shadow: none;
@@ -568,9 +446,9 @@
568 446 border: none;
569 447 box-shadow: none;
570 448 }
571 449
572 -.mxchat-chatbot .toolbar-btn:disabled {
450 +#mxchat-chatbot .toolbar-btn:disabled {
573 451 opacity: 0.3;
574 452 cursor: not-allowed;
575 453 background: none;
576 454 border: none;
@@ -580,9 +458,9 @@
580 458 background-color: rgba(120, 115, 245, 0.2);
581 459 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.4);
582 460 }
583 461
584 -.active-perplexity-container {
462 +#active-perplexity-container {
585 463 display: flex;
586 464 align-items: center;
587 465 margin-left: 8px;
588 466 font-size: 12px;
@@ -587,13 +465,13 @@
587 465 margin-left: 8px;
588 466 font-size: 12px;
589 467 }
590 468
591 -.perplexity-search-btn {
469 +#perplexity-search-btn {
592 470 display: none;
593 471 }
594 472
595 -.perplexity-search-btn.active {
473 +#perplexity-search-btn.active {
596 474 opacity: 1;
597 475 }
598 476
599 477 /* ========================================
@@ -598,9 +476,9 @@
598 476
599 477 /* ========================================
600 478 POPULAR QUESTIONS SYSTEM
601 479 ======================================== */
602 -.mxchat-popular-questions {
480 +#mxchat-popular-questions {
603 481 padding: 0 10px 10px;
604 482 transition: all 0.3s ease;
605 483 margin-bottom: 12px;
606 484 position: relative;
@@ -626,14 +504,14 @@
626 504 transition: all 0.3s ease;
627 505 gap: 8px;
628 506 }
629 507
630 -.mxchat-popular-questions.collapsed {
508 +#mxchat-popular-questions.collapsed {
631 509 padding: 0;
632 510 margin: 0;
633 511 }
634 512
635 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
513 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
636 514 flex-direction: row;
637 515 justify-content: center;
638 516 align-items: center;
639 517 padding: 0;
@@ -640,17 +518,18 @@
640 518 max-height: 40px;
641 519 overflow: visible;
642 520 }
643 521
644 -.mxchat-popular-questions.collapsed .mxchat-popular-question {
522 +#mxchat-popular-questions.collapsed .mxchat-popular-question {
645 523 display: none;
646 524 }
647 525
648 -.mxchat-popular-questions.collapsed .questions-collapse-btn {
526 +#mxchat-popular-questions.collapsed .questions-collapse-btn {
649 527 display: none;
650 528 }
651 529
652 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
530 +.questions-toggle-btn,
531 +.questions-collapse-btn {
653 532 background: none;
654 533 border: none;
655 534 padding: 0;
656 535 margin: 0;
@@ -656,9 +535,9 @@
656 535 margin: 0;
657 536 cursor: pointer;
658 537 transition: all 0.2s ease;
659 538 color: #212121;
660 - display: none; /* Hidden by default when open */
539 + display: none;
661 540 align-items: center;
662 541 justify-content: center;
663 542 width: 32px;
664 543 height: 32px;
@@ -665,28 +544,8 @@
665 544 box-shadow: none;
666 545 outline: none;
667 546 }
668 547
669 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
670 - background: none;
671 - border: none;
672 - padding: 0;
673 - margin: 0px; /* Center and add bottom margin */
674 - cursor: pointer;
675 - transition: all 0.2s ease;
676 - color: #212121;
677 - display: none; /* Hidden by default */
678 - align-items: center;
679 - justify-content: center;
680 - width: 32px;
681 - height: 32px;
682 - box-shadow: none;
683 - outline: none;
684 - align-self: center; /* Center in flex container */
685 - order: -1; /* Make sure it appears first */
686 - flex-shrink: 0; /* same flex auto-minimum caveat as .mxchat-popular-question */
687 -}
688 -
689 548 .questions-toggle-btn:hover,
690 549 .questions-collapse-btn:hover,
691 550 .questions-toggle-btn:focus,
692 551 .questions-collapse-btn:focus,
@@ -701,9 +560,8 @@
701 560 .questions-toggle-btn svg,
702 561 .questions-collapse-btn svg {
703 562 transition: transform 0.2s ease;
704 563 fill: none;
705 - stroke: #212121;
706 564 width: 25px;
707 565 height: 25px;
708 566 }
709 567
@@ -711,13 +569,13 @@
711 569 .questions-collapse-btn:hover svg {
712 570 opacity: 0.7;
713 571 }
714 572
715 -.mxchat-popular-questions.collapsed .questions-toggle-btn {
573 +#mxchat-popular-questions.collapsed .questions-toggle-btn {
716 574 display: flex;
717 575 }
718 576
719 -.mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
577 +#mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
720 578 display: flex;
721 579 align-self: center;
722 580 order: -1;
723 581 }
@@ -734,13 +592,8 @@
734 592 text-align: initial;
735 593 transition: all 0.3s ease;
736 594 margin-bottom: 0;
737 595 box-shadow: none;
738 - /* The defensive baseline's min-height:0 on :where(button) removes the
739 - flex automatic minimum size, so without this the column-flex scroll
740 - container compresses all questions to fit 200px and the scrollbox
741 - never appears (plan d51560). */
742 - flex-shrink: 0;
743 596 }
744 597
745 598 .mxchat-popular-question:hover {
746 599 background-color: #eaeaea;
@@ -789,41 +642,38 @@
789 642 opacity: 0;
790 643 pointer-events: none;
791 644 }
792 645
793 -.mxchat-chatbot{
646 +#mxchat-chatbot {
794 647 background: #fff;
795 648 overflow: hidden;
796 649 position: relative;
797 650 display: flex;
798 651 flex-direction: column;
652 + height: 500px;
653 + box-sizing: border-box;
799 654 flex-grow: 1;
800 - min-height: 0; /* Allow flex shrinking */
801 - box-sizing: border-box;
802 655 }
803 656
804 -.chat-container {
657 +#chat-container {
805 658 display: flex;
806 659 flex-direction: column;
807 - flex-grow: 1;
808 - min-height: 0; /* Critical for flex overflow scrolling */
809 660 height: 100%;
810 661 }
811 662
812 -.chat-box {
663 +#chat-box {
813 664 flex-grow: 1;
814 665 overflow-y: auto;
815 666 padding: 10px;
816 667 margin-bottom: 0;
817 668 font-size: 1rem;
818 - min-height: 0; /* Critical for flex overflow scrolling */
819 669 }
820 670
821 -.chat-box::-webkit-scrollbar {
671 +#chat-box::-webkit-scrollbar {
822 672 width: 5px;
823 673 }
824 674
825 -.chat-box::-webkit-scrollbar-thumb {
675 +#chat-box::-webkit-scrollbar-thumb {
826 676 background-color: #212121;
827 677 border-radius: 20px;
828 678 }
829 679
@@ -852,9 +702,9 @@
852 702 .user-message p {
853 703 margin: 0;
854 704 }
855 705
856 -.mxchat-chatbot .chat-container .chat-box .bot-message {
706 +#mxchat-chatbot #chat-container #chat-box .bot-message {
857 707 float: left;
858 708 clear: both;
859 709 border: 1px solid rgba(226, 232, 255, 0.2);
860 710 border-radius: 0 18px 18px;
@@ -862,9 +712,9 @@
862 712 color: #fff;
863 713 overflow-x: hidden;
864 714 }
865 715
866 -.mxchat-chatbot .chat-container .chat-box .agent-message {
716 +#mxchat-chatbot #chat-container #chat-box .agent-message {
867 717 text-align: left;
868 718 float: left;
869 719 clear: both;
870 720 border: 1px solid rgba(226, 232, 255, 0.2);
@@ -917,9 +767,9 @@
917 767 font-size: 14px;
918 768 text-align: center;
919 769 }
920 770
921 -.mxchat-chatbot-wrapper {
771 +#mxchat-chatbot-wrapper {
922 772 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
923 773 border-radius: 10px;
924 774 display: flex;
925 775 flex-direction: column;
@@ -924,16 +774,14 @@
924 774 display: flex;
925 775 flex-direction: column;
926 776 height: 100%;
927 777 width: 100%;
928 - min-height: 0; /* Allow flex shrinking */
929 - overflow: hidden;
930 778 }
931 779
932 780 /* ========================================
933 781 INPUT & CONTROLS
934 782 ======================================== */
935 -.mxchat-chatbot .chat-container .input-container {
783 +#mxchat-chatbot #chat-container #input-container {
936 784 position: relative;
937 785 display: flex;
938 786 align-items: center;
939 787 padding-right: 40px;
@@ -941,9 +789,9 @@
941 789 border-radius: 10px;
942 790 margin: 0 10px 10px;
943 791 }
944 792
945 -.mxchat-chatbot .chat-container .input-container .chat-input {
793 +#mxchat-chatbot #chat-container #input-container #chat-input {
946 794 flex-grow: 1;
947 795 color: #212121;
948 796 line-height: 24px;
949 797 background: transparent;
@@ -961,97 +809,33 @@
961 809 outline: none;
962 810 border-radius: 10px;
963 811 }
964 812
965 -.chat-input::-webkit-scrollbar {
813 +#chat-input::-webkit-scrollbar {
966 814 width: 8px;
967 815 }
968 816
969 -.chat-input::-webkit-scrollbar-track {
817 +#chat-input::-webkit-scrollbar-track {
970 818 background: #f1f1f1;
971 819 border-radius: 4px;
972 820 }
973 821
974 -.chat-input::-webkit-scrollbar-thumb {
822 +#chat-input::-webkit-scrollbar-thumb {
975 823 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
976 824 border-radius: 4px;
977 825 }
978 826
979 -.chat-input::-webkit-scrollbar-thumb:hover {
827 +#chat-input::-webkit-scrollbar-thumb:hover {
980 828 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
981 829 }
982 830
983 -.chat-input {
831 +#chat-input {
984 832 scrollbar-width: thin;
985 833 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
986 834 }
987 835
988 -/* Chat input character counter + soft limit feedback (plan 7091a2).
989 - Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
990 - fades in and ramps neutral -> amber -> red. The input border mirrors the same
991 - cue, and an over-limit keystroke/paste triggers a brief shake so the hard
992 - maxlength cap (plan a3fae2) is never a silent "input jumps back". */
993 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
836 +#mxchat-chatbot #chat-container #input-container #send-button {
994 837 position: absolute;
995 - bottom: 3px;
996 - right: 44px; /* clear the absolutely-positioned send button */
997 - font-size: 11px;
998 - line-height: 1;
999 - font-variant-numeric: tabular-nums;
1000 - color: #9aa0a6;
1001 - background: rgba(255, 255, 255, 0.85);
1002 - padding: 1px 5px;
1003 - border-radius: 8px;
1004 - pointer-events: none;
1005 - opacity: 0;
1006 - visibility: hidden;
1007 - transition: opacity 0.18s ease, color 0.18s ease;
1008 - z-index: 2;
1009 -}
1010 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
1011 - opacity: 1;
1012 - visibility: visible;
1013 -}
1014 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
1015 - color: #d98300; /* amber: approaching the cap */
1016 -}
1017 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
1018 - color: #d93025; /* red: at the cap */
1019 - font-weight: 600;
1020 -}
1021 -/* RTL widgets: counter on the opposite side. */
1022 -.mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
1023 -[dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
1024 - right: auto;
1025 - left: 44px;
1026 -}
1027 -/* Input border affordance mirrors the counter color. */
1028 -.mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
1029 - border-color: #f0b048;
1030 -}
1031 -.mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
1032 - border-color: #e5675c;
1033 -}
1034 -/* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
1035 -.mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
1036 - animation: mxchat-input-bump 0.2s ease;
1037 -}
1038 -@keyframes mxchat-input-bump {
1039 - 0% { transform: translateX(0); }
1040 - 25% { transform: translateX(-3px); }
1041 - 50% { transform: translateX(3px); }
1042 - 75% { transform: translateX(-2px); }
1043 - 100% { transform: translateX(0); }
1044 -}
1045 -/* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
1046 -@media (prefers-reduced-motion: reduce) {
1047 - .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
1048 - animation: none;
1049 - }
1050 -}
1051 -
1052 -.mxchat-chatbot .chat-container .input-container .send-button {
1053 - position: absolute;
1054 838 right: 10px;
1055 839 top: 50%;
1056 840 transform: translateY(-50%);
1057 841 border: none;
@@ -1070,32 +854,25 @@
1070 854 cursor: pointer;
1071 855 font-weight: 700;
1072 856 }
1073 857
1074 -.send-button svg {
858 +#send-button svg {
1075 859 width: 25px;
1076 860 height: 25px;
1077 861 pointer-events: none;
1078 862 }
1079 863
1080 -.send-button:hover {
864 +#send-button:hover {
1081 865 opacity: 0.8;
1082 866 }
1083 867
1084 -/* Stop state while a response is streaming: the send button becomes a Stop
1085 - control in place — same chrome and position, swapped glyph. Themeable hook;
1086 - the glyph's size/color are mirrored from the send icon at runtime. */
1087 -.mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
1088 - cursor: pointer;
1089 -}
1090 -
1091 -.mxchat-chatbot .spinner {
868 +#mxchat-chatbot .spinner {
1092 869 animation: rotate 2s linear infinite;
1093 870 width: 20px;
1094 871 height: 20px;
1095 872 }
1096 873
1097 -.mxchat-chatbot .spinner circle {
874 +#mxchat-chatbot .spinner circle {
1098 875 stroke: #212121;
1099 876 stroke-linecap: round;
1100 877 animation: dash 1.5s ease-in-out infinite;
1101 878 }
@@ -1127,11 +904,9 @@
1127 904 .chatbot-title-container {
1128 905 display: flex;
1129 906 align-items: center;
1130 907 justify-content: space-between;
1131 - gap: 10px;
1132 - flex: 1 1 auto;
1133 - min-width: 0;
908 + width: 100%;
1134 909 }
1135 910
1136 911 .chatbot-title-group {
1137 912 display: flex;
@@ -1140,36 +915,25 @@
1140 915 }
1141 916
1142 917 .chat-mode-indicator {
1143 918 font-size: 12px;
1144 - line-height: 1;
1145 - margin-right: 0;
1146 - padding: 4px 9px;
1147 - border-radius: 999px;
1148 - background: rgba(255, 255, 255, 0.18);
919 + margin-right: 8px;
920 + padding: 4px 8px;
921 + border-radius: 12px;
922 + background: rgba(255, 255, 255, 0.2);
1149 923 color: #ffffff;
1150 - display: inline-flex;
1151 - align-items: center;
1152 - height: 22px;
1153 - white-space: nowrap;
1154 - flex: 0 0 auto;
1155 924 }
1156 925
1157 -.floating-chatbot {
926 +#floating-chatbot {
1158 927 position: fixed;
1159 928 bottom: 25px;
1160 929 right: 25px;
1161 930 width: 375px;
1162 - /* Use viewport-aware height with fallbacks */
1163 - height: min(625px, calc(100vh - 50px)); /* 50px = 25px top + 25px bottom margin */
1164 - height: min(625px, calc(100dvh - 50px)); /* Dynamic viewport height for mobile browsers */
1165 - max-height: calc(100vh - 50px);
1166 - max-height: calc(100dvh - 50px); /* Fallback for browsers supporting dvh */
931 + height: 625px;
1167 932 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1168 933 border-radius: 20px;
1169 934 overflow: hidden;
1170 935 display: flex;
1171 - flex-direction: column;
1172 936 z-index: 100000;
1173 937 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1174 938 transform: translateY(20%);
1175 939 opacity: 0;
@@ -1175,42 +939,24 @@
1175 939 opacity: 0;
1176 940 pointer-events: none;
1177 941 }
1178 942
1179 -.floating-chatbot.visible {
943 +#floating-chatbot.visible {
1180 944 transform: translateY(0);
1181 945 opacity: 1;
1182 946 pointer-events: auto;
1183 947 }
1184 948
1185 -/* ========================================
1186 - EMBEDDED CHATBOT (Shortcode)
1187 - ======================================== */
1188 -/* Embedded chatbots are NOT inside .floating-chatbot wrapper */
1189 -/* Apply fixed height like floating widget so quick questions overlay properly */
1190 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) {
1191 - height: 500px;
1192 - max-height: 500px;
1193 -}
1194 -
1195 -/* Hide the minimize/exit button for embedded chatbots - it doesn't make sense */
1196 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) .exit-chat {
1197 - display: none !important;
1198 -}
1199 -
1200 -.floating-chatbot-button.hidden,
949 +#floating-chatbot-button.hidden,
1201 950 .exit-chat span {
1202 951 display: none !important;
1203 952 }
1204 953
1205 -.chatbot-top-bar button.exit-chat:hover {
1206 - background: rgba(255, 255, 255, 0.12);
1207 -}
1208 954 .visible {
1209 955 display: flex;
1210 956 }
1211 957
1212 -.floating-chatbot-button {
958 +#floating-chatbot-button {
1213 959 transition: opacity 1s ease-in-out;
1214 960 font-size: 1.25rem;
1215 961 position: fixed;
1216 962 bottom: 30px;
@@ -1228,14 +974,9 @@
1228 974 z-index: 100000;
1229 975 display: flex;
1230 976 }
1231 977
1232 -.floating-chatbot-button:focus-visible {
1233 - outline: 3px solid #7873f5;
1234 - outline-offset: 3px;
1235 -}
1236 -
1237 -.floating-chatbot-button img {
978 +#floating-chatbot-button img {
1238 979 max-width: 100%;
1239 980 max-height: 100%;
1240 981 width: auto;
1241 982 height: auto;
@@ -1244,51 +985,26 @@
1244 985 .chatbot-top-bar {
1245 986 background: #212121;
1246 987 }
1247 988
1248 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1249 - background: transparent;
1250 - /* v3.2.15 (plan-52fd4c): explicit guards against host-theme button rules.
1251 - Margin deliberately untouched — .exit-chat relies on margin-left:auto. */
1252 - background-image: none;
1253 - border: none;
1254 - opacity: 0.8;
1255 - padding: 0;
1256 - width: 32px;
1257 - height: 32px;
1258 - min-width: 32px;
1259 - min-height: 32px;
1260 - max-width: none;
1261 - flex: 0 0 auto;
1262 - border-radius: 6px;
1263 - font-family: inherit;
1264 - text-transform: none;
1265 - text-shadow: none;
1266 - appearance: none;
1267 - -webkit-appearance: none;
1268 - transition: opacity 0.15s ease, background 0.15s ease;
1269 -}
1270 -
1271 -.mxchat-chatbot-wrapper .chatbot-top-bar {
989 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1272 990 cursor: pointer;
1273 991 color: #fff;
1274 - padding: 8px 12px;
1275 - min-height: 48px;
1276 - gap: 8px;
992 + padding: 10px;
1277 993 border-top-left-radius: 10px;
1278 994 border-top-right-radius: 10px;
1279 995 display: flex;
1280 996 justify-content: space-between;
1281 - align-items: center;
997 + align-items: start;
1282 998 }
1283 999
1284 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1285 - font-size: 15px;
1286 - line-height: 1.2;
1287 - padding: 0;
1000 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1001 + font-size: 16px;
1002 + line-height: 25px;
1003 + padding: 10px;
1288 1004 margin: 0;
1289 1005 font-family: 'Plus Jakarta Sans', sans-serif;
1290 - font-weight: 600;
1006 + font-weight: bold;
1291 1007 }
1292 1008
1293 1009 .exit-chat {
1294 1010 border: none;
@@ -1293,92 +1009,56 @@
1293 1009 .exit-chat {
1294 1010 border: none;
1295 1011 background: transparent;
1296 1012 cursor: pointer;
1297 - display: inline-flex;
1013 + display: flex;
1298 1014 align-items: center;
1299 1015 justify-content: center;
1300 - padding: 0;
1016 + padding: 5px;
1301 1017 margin-left: auto;
1302 1018 opacity: 0.8;
1303 - width: 32px;
1304 - height: 32px;
1305 - min-width: 32px;
1306 - flex: 0 0 auto;
1019 + min-width: 20px;
1307 1020 }
1308 1021
1309 1022 .exit-chat svg {
1310 - width: 18px;
1311 - height: 18px;
1312 - fill: none;
1313 - stroke: currentColor;
1023 + fill: white;
1024 + width: 24px;
1025 + height: 24px;
1026 + transform: rotate(270deg);
1314 1027 }
1315 1028
1316 -.mxchat-chatbot-wrapper .chatbot-footer {
1029 +#mxchat-chatbot-wrapper .chatbot-footer {
1317 1030 text-align: center;
1318 1031 padding-bottom: 10px;
1319 1032 font-size: 0.85em;
1320 1033 }
1321 1034
1322 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1035 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1323 1036 font-size: 12px;
1324 1037 margin: 0;
1325 1038 color: #71717a;
1326 1039 }
1327 1040
1328 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1041 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1329 1042 color: #0073aa;
1330 1043 text-decoration: underline;
1331 1044 font-size: 12px;
1332 1045 }
1333 1046
1334 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1047 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1335 1048 text-decoration: none;
1336 1049 color: inherit;
1337 1050 font-weight: 700;
1338 1051 }
1339 1052
1340 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1053 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1341 1054 text-decoration: underline;
1342 1055 }
1343 1056
1344 1057 /* ========================================
1345 - INIT LOADER (shown while chat initializes)
1346 - ======================================== */
1347 -.mxchat-init-loader {
1348 - display: flex;
1349 - align-items: center;
1350 - justify-content: center;
1351 - flex-grow: 1;
1352 - min-height: 0;
1353 - animation: fadeIn 0.3s ease-in-out;
1354 -}
1355 -
1356 -.mxchat-init-loader-dots {
1357 - display: flex;
1358 - gap: 8px;
1359 -}
1360 -
1361 -.mxchat-init-loader-dots .dot {
1362 - width: 8px;
1363 - height: 8px;
1364 - border-radius: 50%;
1365 - background-color: #888;
1366 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1367 -}
1368 -
1369 -.mxchat-init-loader-dots .dot:nth-child(1) {
1370 - animation-delay: -0.32s;
1371 -}
1372 -
1373 -.mxchat-init-loader-dots .dot:nth-child(2) {
1374 - animation-delay: -0.16s;
1375 -}
1376 -
1377 -/* ========================================
1378 1058 THINKING DOTS ANIMATION
1379 1059 ======================================== */
1380 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1060 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1381 1061 display: flex;
1382 1062 justify-content: center;
1383 1063 align-items: center;
1384 1064 overflow: hidden;
@@ -1387,9 +1067,9 @@
1387 1067 z-index: 1;
1388 1068 flex-shrink: 0;
1389 1069 }
1390 1070
1391 -.chat-box .bot-message.temporary-message .thinking-dots {
1071 +#chat-box .bot-message.temporary-message .thinking-dots {
1392 1072 display: flex;
1393 1073 justify-content: center;
1394 1074 align-items: center;
1395 1075 height: 90%;
@@ -1396,9 +1076,9 @@
1396 1076 gap: 5px;
1397 1077 flex-shrink: 0;
1398 1078 }
1399 1079
1400 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1080 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1401 1081 height: 6px;
1402 1082 width: 6px;
1403 1083 margin: 0 3px;
1404 1084 background-color: #fff;
@@ -1403,21 +1083,21 @@
1403 1083 margin: 0 3px;
1404 1084 background-color: #fff;
1405 1085 border-radius: 50%;
1406 1086 display: inline-block;
1407 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1087 + animation: bounce 1.4s ease-in-out infinite both;
1408 1088 vertical-align: middle;
1409 1089 }
1410 1090
1411 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1091 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1412 1092 animation-delay: -0.32s;
1413 1093 }
1414 1094
1415 -.chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1095 +#chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1416 1096 animation-delay: -0.16s;
1417 1097 }
1418 1098
1419 -@keyframes mxchat-dot-bounce {
1099 +@keyframes bounce {
1420 1100 0%, 100%, 80% {
1421 1101 transform: scale(1);
1422 1102 }
1423 1103 40% {
@@ -1427,9 +1107,9 @@
1427 1107
1428 1108 /* ========================================
1429 1109 PRE-CHAT MESSAGE
1430 1110 ======================================== */
1431 -.pre-chat-message {
1111 +#pre-chat-message {
1432 1112 position: fixed;
1433 1113 bottom: 85px;
1434 1114 right: 30px;
1435 1115 background-color: #fff;
@@ -1444,9 +1124,9 @@
1444 1124 display: none;
1445 1125 margin-bottom: 10px;
1446 1126 }
1447 1127
1448 -.pre-chat-message .close-pre-chat-message {
1128 +#pre-chat-message .close-pre-chat-message {
1449 1129 position: absolute;
1450 1130 top: -6px;
1451 1131 right: -6px;
1452 1132 background-color: #ccc;
@@ -1466,60 +1146,8 @@
1466 1146 line-height: 1;
1467 1147 }
1468 1148
1469 1149 /* ========================================
1470 - VIEWPORT HEIGHT CONSTRAINTS
1471 - Handles bookmarks bar, browser zoom, and smaller screens
1472 - ======================================== */
1473 -@media screen and (max-height: 700px) {
1474 - .floating-chatbot {
1475 - bottom: 15px;
1476 - height: calc(100vh - 30px);
1477 - height: calc(100dvh - 30px);
1478 - max-height: calc(100vh - 30px);
1479 - max-height: calc(100dvh - 30px);
1480 - }
1481 -
1482 - .floating-chatbot-button {
1483 - bottom: 20px;
1484 - }
1485 -
1486 - .pre-chat-message {
1487 - bottom: 75px;
1488 - }
1489 -}
1490 -
1491 -@media screen and (max-height: 550px) {
1492 - .floating-chatbot {
1493 - bottom: 10px;
1494 - height: calc(100vh - 20px);
1495 - height: calc(100dvh - 20px);
1496 - max-height: calc(100vh - 20px);
1497 - max-height: calc(100dvh - 20px);
1498 - }
1499 -
1500 - /* Reduce padding in tight spaces */
1501 - .mxchat-popular-questions {
1502 - padding: 0 8px 5px;
1503 - margin-bottom: 8px;
1504 - }
1505 -
1506 - .mxchat-popular-question {
1507 - padding: 8px 12px;
1508 - font-size: 13px;
1509 - line-height: 20px;
1510 - }
1511 -
1512 - .mxchat-chatbot .chat-container .input-container {
1513 - margin: 0 8px 8px;
1514 - }
1515 -
1516 - .mxchat-chatbot-wrapper .chatbot-footer {
1517 - padding-bottom: 5px;
1518 - }
1519 -}
1520 -
1521 -/* ========================================
1522 1150 MOBILE RESPONSIVE
1523 1151 ======================================== */
1524 1152 @media screen and (max-width: 782px) {
1525 1153 .mxchat-search-results {
@@ -1551,14 +1179,14 @@
1551 1179 width: 22px;
1552 1180 height: 22px;
1553 1181 }
1554 1182
1555 - .pre-chat-message {
1183 + #pre-chat-message {
1556 1184 bottom: 70px;
1557 1185 right: 15px;
1558 1186 }
1559 1187
1560 - .chat-input {
1188 + #chat-input {
1561 1189 width: calc(100% - 70px);
1562 1190 }
1563 1191
1564 1192 .bot-message,
@@ -1566,701 +1194,27 @@
1566 1194 padding: 10px;
1567 1195 max-width: 95%;
1568 1196 }
1569 1197
1570 - .floating-chatbot-button {
1198 + #floating-chatbot-button {
1571 1199 bottom: 15px;
1572 1200 right: 10px;
1573 1201 }
1574 1202
1575 - .floating-chatbot {
1576 - width: calc(100vw - 16px);
1577 - /* Use multiple fallbacks for maximum browser compatibility */
1578 - height: calc(100vh - 16px); /* Fallback */
1579 - height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1580 - height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1581 - max-height: calc(100vh - 16px);
1582 - max-height: calc(100dvh - 16px);
1203 + #floating-chatbot {
1204 + width: 100vw;
1205 + height: calc(var(--vh, 1vh) * 100);
1583 1206 margin: 0;
1584 1207 padding: 0;
1585 1208 position: fixed;
1586 - bottom: 8px;
1587 - top: auto;
1588 - left: 8px;
1589 - right: 8px;
1590 - border-radius: 16px;
1591 - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1209 + bottom: 0;
1210 + top: 0;
1211 + left: 0;
1212 + right: 0;
1213 + border-radius: 0;
1592 1214 }
1593 1215
1594 - .floating-chatbot .mxchat-chatbot-wrapper {
1595 - border-radius: 16px;
1596 - overflow: hidden;
1216 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1217 + border-top-left-radius: 0;
1218 + border-top-right-radius: 0;
1597 1219 }
1598 -
1599 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1600 - border-top-left-radius: 16px;
1601 - border-top-right-radius: 16px;
1602 - }
1603 1220 }
1604 -
1605 -
1606 -
1607 -pre {
1608 - background-color: #000;
1609 - border: 1px solid #ddd;
1610 - border-radius: 20px;
1611 - border-left: 3px solid #9e7aff;
1612 - color: #fff;
1613 - page-break-inside: avoid;
1614 - font-family: monospace;
1615 - font-size: 15px;
1616 - line-height: 1.6;
1617 - margin-bottom: 1.6em;
1618 - max-width: 100%;
1619 - overflow: auto;
1620 - padding: 1em 1.5em;
1621 - display: block;
1622 - word-wrap: break-word;
1623 -}
1624 -
1625 -.copy-btn {
1626 - padding: 10px 20px;
1627 - border: none;
1628 - border-radius: 4px;
1629 - background-color: #9e7aff;
1630 - transition: background-color 0.3s;
1631 - color: #fff;
1632 - font-size: 1rem;
1633 - cursor: pointer;
1634 - font-weight: 700;
1635 - margin-bottom: 10px;
1636 -}
1637 -
1638 -.copy-btn:hover {
1639 - opacity: 0.8;
1640 -}
1641 -
1642 -.mxchat-product-card {
1643 - display: flex;
1644 - flex-direction: column;
1645 - align-items: center;
1646 - margin: 10px 0;
1647 - padding: 10px;
1648 - border-radius: 5px;
1649 - background-color: inherit;
1650 -}
1651 -
1652 -.mxchat-product-card img.mxchat-product-image {
1653 - max-width: 100%;
1654 - height: auto;
1655 - margin-bottom: 5px;
1656 - border-radius: 4px;
1657 -}
1658 -
1659 -.mxchat-product-card h3.mxchat-product-name {
1660 - font-size: 16px;
1661 - font-weight: bold;
1662 - margin: 5px 0;
1663 - text-align: center;
1664 - color: inherit;
1665 -}
1666 -
1667 -.mxchat-product-card .mxchat-product-price {
1668 - color: inherit;
1669 - font-weight: bold;
1670 - margin-bottom: 5px;
1671 -}
1672 -
1673 -.mxchat-product-card .mxchat-product-description {
1674 - font-size: 14px;
1675 - text-align: center;
1676 - margin-bottom: 10px;
1677 - color: inherit;
1678 -}
1679 -
1680 -.mxchat-product-card .mxchat-add-to-cart-button {
1681 - background-color: #212121;
1682 - color: #fff;
1683 - padding: 8px 12px;
1684 - border: none;
1685 - cursor: pointer;
1686 - border-radius: 12px;
1687 - transition: background-color 0.3s ease;
1688 -}
1689 -
1690 -.mxchat-product-card .mxchat-add-to-cart-button:hover {
1691 - background-color: #212121;
1692 -}
1693 -
1694 -.mxchat-image-gallery {
1695 - display: flex;
1696 - flex-wrap: wrap;
1697 - gap: 10px;
1698 - justify-content: center;
1699 -}
1700 -
1701 -.mxchat-image-item {
1702 - text-align: center;
1703 - overflow: hidden;
1704 - word-wrap: break-word;
1705 -}
1706 -
1707 -.mxchat-image-title {
1708 - display: block;
1709 - font-size: 14px;
1710 - color: inherit;
1711 - white-space: nowrap;
1712 - overflow: hidden;
1713 - text-overflow: ellipsis;
1714 - max-width: 100%;
1715 -}
1716 -
1717 -.mxchat-image-link {
1718 - text-decoration: none;
1719 -}
1720 -
1721 -.mxchat-image-thumbnail {
1722 - max-width: 100%;
1723 - height: auto;
1724 - border-radius: 5px;
1725 - transition: transform 0.3s;
1726 -}
1727 -
1728 -.mxchat-image-thumbnail:hover {
1729 - transform: scale(1.05);
1730 -}
1731 -
1732 -.mxchat-generated-image {
1733 - max-width: 100%;
1734 - height: auto;
1735 - border-radius: 0 0 8px 8px;
1736 -}
1737 -
1738 -/* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1739 - Caption colors INHERIT from the message bubble (same idiom as
1740 - .mxchat-product-card) so the embed reads correctly on any widget theme —
1741 - bot bubbles commonly force their own text color. */
1742 -.mxchat-youtube-embed {
1743 - max-width: 340px;
1744 - margin-top: 8px;
1745 -}
1746 -
1747 -.mxchat-youtube-facade {
1748 - position: relative;
1749 - display: block;
1750 - width: 100%;
1751 - padding: 0;
1752 - margin: 0;
1753 - border: none;
1754 - background: #000;
1755 - cursor: pointer;
1756 - aspect-ratio: 16 / 9;
1757 - border-radius: 10px;
1758 - overflow: hidden;
1759 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1760 -}
1761 -
1762 -.mxchat-youtube-thumb {
1763 - width: 100%;
1764 - height: 100%;
1765 - object-fit: cover;
1766 - display: block;
1767 - opacity: 0.92;
1768 - transition: opacity 0.2s;
1769 -}
1770 -
1771 -.mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1772 - opacity: 1;
1773 -}
1774 -
1775 -.mxchat-youtube-play {
1776 - position: absolute;
1777 - top: 50%;
1778 - left: 50%;
1779 - transform: translate(-50%, -50%);
1780 - display: flex;
1781 - align-items: center;
1782 - justify-content: center;
1783 - width: 52px;
1784 - height: 52px;
1785 - border-radius: 50%;
1786 - background: rgba(0, 0, 0, 0.72);
1787 - color: #fff;
1788 - transition: transform 0.2s, background 0.2s;
1789 -}
1790 -
1791 -.mxchat-youtube-play svg {
1792 - margin-left: 3px;
1793 -}
1794 -
1795 -.mxchat-youtube-facade:hover .mxchat-youtube-play {
1796 - transform: translate(-50%, -50%) scale(1.08);
1797 - background: rgba(0, 0, 0, 0.85);
1798 -}
1799 -
1800 -.mxchat-youtube-iframe {
1801 - width: 100%;
1802 - aspect-ratio: 16 / 9;
1803 - border: none;
1804 - display: block;
1805 - border-radius: 10px;
1806 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1807 -}
1808 -
1809 -.mxchat-youtube-caption {
1810 - display: flex;
1811 - align-items: baseline;
1812 - justify-content: space-between;
1813 - gap: 10px;
1814 - padding: 8px 2px 0;
1815 - background: transparent;
1816 - color: inherit;
1817 -}
1818 -
1819 -.mxchat-youtube-title {
1820 - font-size: 13px;
1821 - font-weight: 600;
1822 - color: inherit;
1823 - overflow: hidden;
1824 - white-space: nowrap;
1825 - text-overflow: ellipsis;
1826 -}
1827 -
1828 -.mxchat-youtube-link {
1829 - font-size: 12px;
1830 - white-space: nowrap;
1831 - color: inherit;
1832 - opacity: 0.85;
1833 - text-decoration: underline;
1834 -}
1835 -
1836 -#widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1837 - padding: 10px;
1838 -}
1839 -
1840 -#widget_icon_10 {
1841 - fill: #fff;
1842 -}
1843 -
1844 -
1845 -/* This selector with more context - showing the collapse button in certain states */
1846 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1847 - background: none;
1848 - border: none;
1849 - padding: 0;
1850 - margin: 0px;
1851 - cursor: pointer;
1852 - transition: all 0.2s ease;
1853 - color: #212121;
1854 - display: none; /* Hidden by default */
1855 - align-items: center;
1856 - justify-content: center;
1857 - width: 32px;
1858 - height: 32px;
1859 - box-shadow: none;
1860 - outline: none;
1861 - align-self: center; /* THIS IS MISSING */
1862 - order: -1; /* THIS IS MISSING */
1863 -}
1864 -
1865 -/* ALL hover states - these are MISSING from your new CSS */
1866 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1867 - background: none;
1868 - border: none;
1869 - box-shadow: none;
1870 -}
1871 -
1872 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1873 - outline: none;
1874 - background: none;
1875 - border: none;
1876 - box-shadow: none;
1877 -}
1878 -
1879 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1880 - background: none;
1881 - border: none;
1882 - box-shadow: none;
1883 -}
1884 -
1885 -/* SVG styles - these are MISSING */
1886 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1887 - fill: none;
1888 - stroke: #212121;
1889 - transition: transform 0.2s ease;
1890 - width: 25px;
1891 - height: 25px;
1892 -}
1893 -
1894 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1895 - opacity: 0.7;
1896 -}
1897 -
1898 -/* THE CRITICAL DISPLAY RULE - this shows when it's been collapsed before */
1899 -.mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1900 - display: flex;
1901 -}
1902 -
1903 -/* Hide when actually collapsed */
1904 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1905 - display: none;
1906 -}
1907 -
1908 -/* ============================================================
1909 - Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1910 - Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1911 - mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1912 -
1913 - v3.2.10: explicit `order` rules pin the visual order
1914 - title (0) | kebab (1) | down-arrow (2)
1915 - so the down-arrow is always the rightmost icon regardless of source
1916 - order or which sibling has margin-left:auto.
1917 - ============================================================ */
1918 -.mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1919 -.mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1920 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1921 -
1922 -.mxchat-header-menu-wrap {
1923 - position: relative;
1924 - display: inline-flex;
1925 - align-items: center;
1926 - margin-left: auto; /* push kebab + arrow group to the right edge */
1927 -}
1928 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1929 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1930 - margin-left: 4px; /* even, snug gap between kebab and close */
1931 -}
1932 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1933 - background: rgba(255, 255, 255, 0.12);
1934 - opacity: 1;
1935 - outline: none;
1936 -}
1937 -/* v3.2.15 (plan-52fd4c): kebab rules scoped under the wrapper + explicit
1938 - guards on every property a theme's button/link rules commonly set
1939 - (font-family, margin, appearance, text-transform, background-image),
1940 - after a customer site's theme visibly mangled the dropdown. */
1941 -.mxchat-chatbot-wrapper .mxchat-header-btn {
1942 - border: none;
1943 - background: transparent;
1944 - background-image: none;
1945 - cursor: pointer;
1946 - display: inline-flex;
1947 - align-items: center;
1948 - justify-content: center;
1949 - padding: 0;
1950 - margin: 0;
1951 - opacity: 0.8;
1952 - color: #fff;
1953 - font-family: inherit;
1954 - text-transform: none;
1955 - text-shadow: none;
1956 - appearance: none;
1957 - -webkit-appearance: none;
1958 - transition: opacity 0.15s ease, background 0.15s ease;
1959 - border-radius: 6px;
1960 - line-height: 0;
1961 - width: 32px;
1962 - height: 32px;
1963 - min-width: 32px;
1964 - min-height: 32px;
1965 - max-width: none;
1966 - flex: 0 0 auto;
1967 -}
1968 -.mxchat-chatbot-wrapper .mxchat-header-btn:hover,
1969 -.mxchat-chatbot-wrapper .mxchat-header-btn:focus {
1970 - opacity: 1;
1971 - background: rgba(255, 255, 255, 0.12);
1972 - outline: none;
1973 -}
1974 -.mxchat-chatbot-wrapper .mxchat-header-btn[aria-expanded="true"] {
1975 - opacity: 1;
1976 - background: rgba(255, 255, 255, 0.12);
1977 -}
1978 -.mxchat-chatbot-wrapper .mxchat-menu-trigger svg {
1979 - width: 18px;
1980 - height: 18px;
1981 -}
1982 -
1983 -.mxchat-chatbot-wrapper .mxchat-header-menu {
1984 - position: absolute;
1985 - top: calc(100% + 6px);
1986 - right: 0;
1987 - min-width: 220px;
1988 - margin: 0;
1989 - background: var(--mxchat-menu-bg, #ffffff);
1990 - color: var(--mxchat-menu-fg, #1a1a1a);
1991 - border: 1px solid rgba(127, 127, 127, 0.20);
1992 - border-radius: 10px;
1993 - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1994 - padding: 4px;
1995 - font-family: inherit;
1996 - z-index: 99;
1997 - opacity: 0;
1998 - transform: translateY(-4px);
1999 - pointer-events: none;
2000 - transition: opacity 0.12s ease, transform 0.12s ease;
2001 -}
2002 -.mxchat-chatbot-wrapper .mxchat-header-menu.is-open {
2003 - opacity: 1;
2004 - transform: translateY(0);
2005 - pointer-events: auto;
2006 -}
2007 -.mxchat-chatbot-wrapper .mxchat-header-menu[hidden] {
2008 - display: none;
2009 -}
2010 -.mxchat-chatbot-wrapper .mxchat-menu-item {
2011 - display: flex;
2012 - align-items: center;
2013 - gap: 10px;
2014 - width: 100%;
2015 - padding: 8px 12px;
2016 - margin: 0;
2017 - min-height: 40px;
2018 - border: none;
2019 - background: transparent;
2020 - background-image: none;
2021 - color: inherit;
2022 - font-family: inherit;
2023 - font-size: 14px;
2024 - line-height: 1.3;
2025 - letter-spacing: normal;
2026 - text-align: left;
2027 - text-transform: none;
2028 - text-shadow: none;
2029 - white-space: nowrap;
2030 - appearance: none;
2031 - -webkit-appearance: none;
2032 - cursor: pointer;
2033 - border-radius: 6px;
2034 - transition: background 0.12s ease;
2035 - text-decoration: none;
2036 - box-sizing: border-box;
2037 -}
2038 -.mxchat-chatbot-wrapper .mxchat-menu-item:hover,
2039 -.mxchat-chatbot-wrapper .mxchat-menu-item:focus {
2040 - background: rgba(127, 127, 127, 0.18);
2041 - outline: none;
2042 -}
2043 -.mxchat-menu-item-icon {
2044 - display: inline-flex;
2045 - align-items: center;
2046 - justify-content: center;
2047 - width: 16px;
2048 - height: 16px;
2049 - color: inherit;
2050 - opacity: 0.85;
2051 - flex-shrink: 0;
2052 -}
2053 -.mxchat-menu-item-icon svg {
2054 - width: 16px;
2055 - height: 16px;
2056 - display: block;
2057 -}
2058 -.mxchat-menu-item-label {
2059 - flex: 1;
2060 - color: inherit;
2061 -}
2062 -
2063 -/* RTL — flip the dropdown anchor edge */
2064 -[dir="rtl"] .mxchat-header-menu,
2065 -.mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
2066 - right: auto;
2067 - left: 0;
2068 -}
2069 -
2070 -/* ============================================================================
2071 - Satisfaction rating (v3.2.6 — polished per plan-141a12)
2072 - Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
2073 - ========================================================================= */
2074 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
2075 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
2076 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
2077 - clear: both;
2078 - float: left;
2079 - max-width: 92%;
2080 - box-sizing: border-box;
2081 -}
2082 -
2083 -/* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
2084 - inline style; the inner rating component supplies its own padding + layout. */
2085 -.mxchat-rating-bot-bubble {
2086 - padding: 0;
2087 - overflow: visible;
2088 -}
2089 -
2090 -.mxchat-rating-prompt {
2091 - display: flex;
2092 - flex-direction: column;
2093 - align-items: stretch;
2094 - gap: 10px;
2095 - padding: 10px 14px;
2096 - margin: 10px 0;
2097 - font-size: 14px;
2098 - color: inherit;
2099 -}
2100 -
2101 -.mxchat-rating-question {
2102 - color: inherit;
2103 - opacity: 0.85;
2104 - font-weight: 500;
2105 -}
2106 -
2107 -.mxchat-rating-actions {
2108 - display: flex;
2109 - align-items: center;
2110 - gap: 8px;
2111 -}
2112 -
2113 -.mxchat-rating-buttons {
2114 - display: inline-flex;
2115 - gap: 6px;
2116 -}
2117 -
2118 -.mxchat-rating-btn {
2119 - display: inline-flex;
2120 - align-items: center;
2121 - justify-content: center;
2122 - width: 32px;
2123 - height: 32px;
2124 - border-radius: 8px;
2125 - background: transparent;
2126 - border: none;
2127 - color: inherit;
2128 - opacity: 0.6;
2129 - cursor: pointer;
2130 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
2131 - padding: 0;
2132 -}
2133 -
2134 -.mxchat-rating-btn:hover {
2135 - opacity: 1;
2136 - transform: scale(1.12);
2137 - background: rgba(255, 255, 255, 0.08);
2138 -}
2139 -
2140 -.mxchat-rating-btn:focus-visible {
2141 - opacity: 1;
2142 - outline: 2px solid currentColor;
2143 - outline-offset: 2px;
2144 -}
2145 -
2146 -.mxchat-rating-btn svg {
2147 - pointer-events: none;
2148 -}
2149 -
2150 -.mxchat-rating-dismiss {
2151 - width: 24px;
2152 - height: 24px;
2153 - border-radius: 6px;
2154 - background: transparent;
2155 - border: none;
2156 - color: inherit;
2157 - opacity: 0.45;
2158 - cursor: pointer;
2159 - font-size: 18px;
2160 - line-height: 1;
2161 - transition: opacity 0.18s ease, background-color 0.18s ease;
2162 -}
2163 -
2164 -.mxchat-rating-dismiss:hover {
2165 - opacity: 0.9;
2166 - background: rgba(255, 255, 255, 0.08);
2167 -}
2168 -
2169 -/* Feedback panel that replaces the prompt after a rating is clicked */
2170 -.mxchat-rating-feedback {
2171 - padding: 12px 14px;
2172 - margin: 10px 0;
2173 - display: flex;
2174 - flex-direction: column;
2175 - gap: 10px;
2176 - color: inherit;
2177 - animation: mxchat-rating-fade-in 0.22s ease;
2178 -}
2179 -
2180 -.mxchat-rating-feedback-label {
2181 - font-size: 13px;
2182 - opacity: 0.85;
2183 - font-weight: 500;
2184 -}
2185 -
2186 -.mxchat-rating-feedback-input {
2187 - width: 100%;
2188 - box-sizing: border-box;
2189 - padding: 8px 10px;
2190 - border: 1px solid rgba(255, 255, 255, 0.25);
2191 - border-radius: 8px;
2192 - font-size: 14px;
2193 - font-family: inherit;
2194 - resize: vertical;
2195 - background: rgba(255, 255, 255, 0.08);
2196 - color: inherit;
2197 -}
2198 -
2199 -.mxchat-rating-feedback-input:focus {
2200 - outline: none;
2201 - border-color: rgba(255, 255, 255, 0.45);
2202 - background: rgba(255, 255, 255, 0.15);
2203 -}
2204 -
2205 -.mxchat-rating-feedback-actions {
2206 - display: flex;
2207 - justify-content: flex-end;
2208 - gap: 8px;
2209 -}
2210 -
2211 -.mxchat-rating-skip,
2212 -.mxchat-rating-submit {
2213 - padding: 6px 14px;
2214 - border-radius: 8px;
2215 - font-size: 13px;
2216 - font-weight: 500;
2217 - cursor: pointer;
2218 - border: none;
2219 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2220 -}
2221 -
2222 -.mxchat-rating-skip {
2223 - background: transparent;
2224 - color: inherit;
2225 - opacity: 0.6;
2226 -}
2227 -
2228 -.mxchat-rating-skip:hover {
2229 - opacity: 1;
2230 - background: rgba(255, 255, 255, 0.08);
2231 -}
2232 -
2233 -.mxchat-rating-submit {
2234 - /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2235 - syncRatingBubbleColors() in chat-script.js paints the real bot colors
2236 - straight onto this button (inline) from the bubble's COMPUTED style, so
2237 - it adapts to both the inline color pickers AND the mxchat-theme AI
2238 - customizer. These var()/literal values are the no-JS safety net — the
2239 - literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2240 - own (no white-on-white). Longhand background-color (not the `background`
2241 - shorthand) because Chromium resolves inherited custom properties
2242 - unreliably inside the shorthand. Do NOT use currentColor here — setting
2243 - `color` would re-poison the background to the same value. */
2244 - background-color: var(--mxchat-bot-fg, #212121);
2245 - color: var(--mxchat-bot-bg, #ffffff);
2246 -}
2247 -
2248 -.mxchat-rating-submit:hover {
2249 - transform: translateY(-1px);
2250 - opacity: 0.9;
2251 -}
2252 -
2253 -.mxchat-rating-saved {
2254 - padding: 10px 14px;
2255 - margin: 10px 0;
2256 - font-size: 13px;
2257 - font-weight: 500;
2258 - text-align: center;
2259 - color: inherit;
2260 - animation: mxchat-rating-fade-in 0.22s ease;
2261 -}
2262 -
2263 -@keyframes mxchat-rating-fade-in {
2264 - from { opacity: 0; transform: translateY(4px); }
2265 - to { opacity: 1; transform: translateY(0); }
2266 -}