PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.6.1
MxChat – AI Chatbot & Content Generation for WordPress v2.6.1
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 +108 -920 3.2.212.6.1 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 +/* MISSING - These need to be inside the container context: */
531 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
653 532 background: none;
654 533 border: none;
655 534 padding: 0;
656 535 margin: 0;
@@ -665,9 +544,9 @@
665 544 box-shadow: none;
666 545 outline: none;
667 546 }
668 547
669 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
548 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
670 549 background: none;
671 550 border: none;
672 551 padding: 0;
673 552 margin: 0px; /* Center and add bottom margin */
@@ -682,9 +561,8 @@
682 561 box-shadow: none;
683 562 outline: none;
684 563 align-self: center; /* Center in flex container */
685 564 order: -1; /* Make sure it appears first */
686 - flex-shrink: 0; /* same flex auto-minimum caveat as .mxchat-popular-question */
687 565 }
688 566
689 567 .questions-toggle-btn:hover,
690 568 .questions-collapse-btn:hover,
@@ -701,9 +579,8 @@
701 579 .questions-toggle-btn svg,
702 580 .questions-collapse-btn svg {
703 581 transition: transform 0.2s ease;
704 582 fill: none;
705 - stroke: #212121;
706 583 width: 25px;
707 584 height: 25px;
708 585 }
709 586
@@ -711,13 +588,13 @@
711 588 .questions-collapse-btn:hover svg {
712 589 opacity: 0.7;
713 590 }
714 591
715 -.mxchat-popular-questions.collapsed .questions-toggle-btn {
592 +#mxchat-popular-questions.collapsed .questions-toggle-btn {
716 593 display: flex;
717 594 }
718 595
719 -.mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
596 +#mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
720 597 display: flex;
721 598 align-self: center;
722 599 order: -1;
723 600 }
@@ -734,13 +611,8 @@
734 611 text-align: initial;
735 612 transition: all 0.3s ease;
736 613 margin-bottom: 0;
737 614 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 615 }
744 616
745 617 .mxchat-popular-question:hover {
746 618 background-color: #eaeaea;
@@ -789,41 +661,38 @@
789 661 opacity: 0;
790 662 pointer-events: none;
791 663 }
792 664
793 -.mxchat-chatbot{
665 +#mxchat-chatbot {
794 666 background: #fff;
795 667 overflow: hidden;
796 668 position: relative;
797 669 display: flex;
798 670 flex-direction: column;
671 + height: 500px;
672 + box-sizing: border-box;
799 673 flex-grow: 1;
800 - min-height: 0; /* Allow flex shrinking */
801 - box-sizing: border-box;
802 674 }
803 675
804 -.chat-container {
676 +#chat-container {
805 677 display: flex;
806 678 flex-direction: column;
807 - flex-grow: 1;
808 - min-height: 0; /* Critical for flex overflow scrolling */
809 679 height: 100%;
810 680 }
811 681
812 -.chat-box {
682 +#chat-box {
813 683 flex-grow: 1;
814 684 overflow-y: auto;
815 685 padding: 10px;
816 686 margin-bottom: 0;
817 687 font-size: 1rem;
818 - min-height: 0; /* Critical for flex overflow scrolling */
819 688 }
820 689
821 -.chat-box::-webkit-scrollbar {
690 +#chat-box::-webkit-scrollbar {
822 691 width: 5px;
823 692 }
824 693
825 -.chat-box::-webkit-scrollbar-thumb {
694 +#chat-box::-webkit-scrollbar-thumb {
826 695 background-color: #212121;
827 696 border-radius: 20px;
828 697 }
829 698
@@ -852,9 +721,9 @@
852 721 .user-message p {
853 722 margin: 0;
854 723 }
855 724
856 -.mxchat-chatbot .chat-container .chat-box .bot-message {
725 +#mxchat-chatbot #chat-container #chat-box .bot-message {
857 726 float: left;
858 727 clear: both;
859 728 border: 1px solid rgba(226, 232, 255, 0.2);
860 729 border-radius: 0 18px 18px;
@@ -862,9 +731,9 @@
862 731 color: #fff;
863 732 overflow-x: hidden;
864 733 }
865 734
866 -.mxchat-chatbot .chat-container .chat-box .agent-message {
735 +#mxchat-chatbot #chat-container #chat-box .agent-message {
867 736 text-align: left;
868 737 float: left;
869 738 clear: both;
870 739 border: 1px solid rgba(226, 232, 255, 0.2);
@@ -917,9 +786,9 @@
917 786 font-size: 14px;
918 787 text-align: center;
919 788 }
920 789
921 -.mxchat-chatbot-wrapper {
790 +#mxchat-chatbot-wrapper {
922 791 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
923 792 border-radius: 10px;
924 793 display: flex;
925 794 flex-direction: column;
@@ -924,16 +793,14 @@
924 793 display: flex;
925 794 flex-direction: column;
926 795 height: 100%;
927 796 width: 100%;
928 - min-height: 0; /* Allow flex shrinking */
929 - overflow: hidden;
930 797 }
931 798
932 799 /* ========================================
933 800 INPUT & CONTROLS
934 801 ======================================== */
935 -.mxchat-chatbot .chat-container .input-container {
802 +#mxchat-chatbot #chat-container #input-container {
936 803 position: relative;
937 804 display: flex;
938 805 align-items: center;
939 806 padding-right: 40px;
@@ -941,9 +808,9 @@
941 808 border-radius: 10px;
942 809 margin: 0 10px 10px;
943 810 }
944 811
945 -.mxchat-chatbot .chat-container .input-container .chat-input {
812 +#mxchat-chatbot #chat-container #input-container #chat-input {
946 813 flex-grow: 1;
947 814 color: #212121;
948 815 line-height: 24px;
949 816 background: transparent;
@@ -961,97 +828,33 @@
961 828 outline: none;
962 829 border-radius: 10px;
963 830 }
964 831
965 -.chat-input::-webkit-scrollbar {
832 +#chat-input::-webkit-scrollbar {
966 833 width: 8px;
967 834 }
968 835
969 -.chat-input::-webkit-scrollbar-track {
836 +#chat-input::-webkit-scrollbar-track {
970 837 background: #f1f1f1;
971 838 border-radius: 4px;
972 839 }
973 840
974 -.chat-input::-webkit-scrollbar-thumb {
841 +#chat-input::-webkit-scrollbar-thumb {
975 842 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
976 843 border-radius: 4px;
977 844 }
978 845
979 -.chat-input::-webkit-scrollbar-thumb:hover {
846 +#chat-input::-webkit-scrollbar-thumb:hover {
980 847 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
981 848 }
982 849
983 -.chat-input {
850 +#chat-input {
984 851 scrollbar-width: thin;
985 852 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
986 853 }
987 854
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 {
855 +#mxchat-chatbot #chat-container #input-container #send-button {
994 856 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 857 right: 10px;
1055 858 top: 50%;
1056 859 transform: translateY(-50%);
1057 860 border: none;
@@ -1070,32 +873,25 @@
1070 873 cursor: pointer;
1071 874 font-weight: 700;
1072 875 }
1073 876
1074 -.send-button svg {
877 +#send-button svg {
1075 878 width: 25px;
1076 879 height: 25px;
1077 880 pointer-events: none;
1078 881 }
1079 882
1080 -.send-button:hover {
883 +#send-button:hover {
1081 884 opacity: 0.8;
1082 885 }
1083 886
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 {
887 +#mxchat-chatbot .spinner {
1092 888 animation: rotate 2s linear infinite;
1093 889 width: 20px;
1094 890 height: 20px;
1095 891 }
1096 892
1097 -.mxchat-chatbot .spinner circle {
893 +#mxchat-chatbot .spinner circle {
1098 894 stroke: #212121;
1099 895 stroke-linecap: round;
1100 896 animation: dash 1.5s ease-in-out infinite;
1101 897 }
@@ -1127,11 +923,9 @@
1127 923 .chatbot-title-container {
1128 924 display: flex;
1129 925 align-items: center;
1130 926 justify-content: space-between;
1131 - gap: 10px;
1132 - flex: 1 1 auto;
1133 - min-width: 0;
927 + width: 100%;
1134 928 }
1135 929
1136 930 .chatbot-title-group {
1137 931 display: flex;
@@ -1140,36 +934,25 @@
1140 934 }
1141 935
1142 936 .chat-mode-indicator {
1143 937 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);
938 + margin-right: 8px;
939 + padding: 4px 8px;
940 + border-radius: 12px;
941 + background: rgba(255, 255, 255, 0.2);
1149 942 color: #ffffff;
1150 - display: inline-flex;
1151 - align-items: center;
1152 - height: 22px;
1153 - white-space: nowrap;
1154 - flex: 0 0 auto;
1155 943 }
1156 944
1157 -.floating-chatbot {
945 +#floating-chatbot {
1158 946 position: fixed;
1159 947 bottom: 25px;
1160 948 right: 25px;
1161 949 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 */
950 + height: 625px;
1167 951 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1168 952 border-radius: 20px;
1169 953 overflow: hidden;
1170 954 display: flex;
1171 - flex-direction: column;
1172 955 z-index: 100000;
1173 956 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1174 957 transform: translateY(20%);
1175 958 opacity: 0;
@@ -1175,42 +958,27 @@
1175 958 opacity: 0;
1176 959 pointer-events: none;
1177 960 }
1178 961
1179 -.floating-chatbot.visible {
962 +#floating-chatbot.visible {
1180 963 transform: translateY(0);
1181 964 opacity: 1;
1182 965 pointer-events: auto;
1183 966 }
1184 967
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,
968 +#floating-chatbot-button.hidden,
1201 969 .exit-chat span {
1202 970 display: none !important;
1203 971 }
1204 972
1205 -.chatbot-top-bar button.exit-chat:hover {
1206 - background: rgba(255, 255, 255, 0.12);
973 +.chatbot-top-bar#exit-chat-button button.exit-chat:hover {
974 + background: none;
1207 975 }
1208 976 .visible {
1209 977 display: flex;
1210 978 }
1211 979
1212 -.floating-chatbot-button {
980 +#floating-chatbot-button {
1213 981 transition: opacity 1s ease-in-out;
1214 982 font-size: 1.25rem;
1215 983 position: fixed;
1216 984 bottom: 30px;
@@ -1228,14 +996,9 @@
1228 996 z-index: 100000;
1229 997 display: flex;
1230 998 }
1231 999
1232 -.floating-chatbot-button:focus-visible {
1233 - outline: 3px solid #7873f5;
1234 - outline-offset: 3px;
1235 -}
1236 -
1237 -.floating-chatbot-button img {
1000 +#floating-chatbot-button img {
1238 1001 max-width: 100%;
1239 1002 max-height: 100%;
1240 1003 width: auto;
1241 1004 height: auto;
@@ -1244,51 +1007,34 @@
1244 1007 .chatbot-top-bar {
1245 1008 background: #212121;
1246 1009 }
1247 1010
1248 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1011 +#mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1249 1012 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 1013 border: none;
1254 1014 opacity: 0.8;
1255 1015 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;
1016 + min-width: 20px;
1269 1017 }
1270 1018
1271 -.mxchat-chatbot-wrapper .chatbot-top-bar {
1019 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1272 1020 cursor: pointer;
1273 1021 color: #fff;
1274 - padding: 8px 12px;
1275 - min-height: 48px;
1276 - gap: 8px;
1022 + padding: 10px;
1277 1023 border-top-left-radius: 10px;
1278 1024 border-top-right-radius: 10px;
1279 1025 display: flex;
1280 1026 justify-content: space-between;
1281 - align-items: center;
1027 + align-items: start;
1282 1028 }
1283 1029
1284 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1285 - font-size: 15px;
1286 - line-height: 1.2;
1287 - padding: 0;
1030 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1031 + font-size: 16px;
1032 + line-height: 25px;
1033 + padding: 10px;
1288 1034 margin: 0;
1289 1035 font-family: 'Plus Jakarta Sans', sans-serif;
1290 - font-weight: 600;
1036 + font-weight: bold;
1291 1037 }
1292 1038
1293 1039 .exit-chat {
1294 1040 border: none;
@@ -1293,92 +1039,56 @@
1293 1039 .exit-chat {
1294 1040 border: none;
1295 1041 background: transparent;
1296 1042 cursor: pointer;
1297 - display: inline-flex;
1043 + display: flex;
1298 1044 align-items: center;
1299 1045 justify-content: center;
1300 - padding: 0;
1046 + padding: 5px;
1301 1047 margin-left: auto;
1302 1048 opacity: 0.8;
1303 - width: 32px;
1304 - height: 32px;
1305 - min-width: 32px;
1306 - flex: 0 0 auto;
1049 + min-width: 20px;
1307 1050 }
1308 1051
1309 1052 .exit-chat svg {
1310 - width: 18px;
1311 - height: 18px;
1312 - fill: none;
1313 - stroke: currentColor;
1053 + fill: white;
1054 + width: 24px;
1055 + height: 24px;
1056 + transform: rotate(270deg);
1314 1057 }
1315 1058
1316 -.mxchat-chatbot-wrapper .chatbot-footer {
1059 +#mxchat-chatbot-wrapper .chatbot-footer {
1317 1060 text-align: center;
1318 1061 padding-bottom: 10px;
1319 1062 font-size: 0.85em;
1320 1063 }
1321 1064
1322 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1065 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1323 1066 font-size: 12px;
1324 1067 margin: 0;
1325 1068 color: #71717a;
1326 1069 }
1327 1070
1328 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1071 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1329 1072 color: #0073aa;
1330 1073 text-decoration: underline;
1331 1074 font-size: 12px;
1332 1075 }
1333 1076
1334 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1077 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1335 1078 text-decoration: none;
1336 1079 color: inherit;
1337 1080 font-weight: 700;
1338 1081 }
1339 1082
1340 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1083 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1341 1084 text-decoration: underline;
1342 1085 }
1343 1086
1344 1087 /* ========================================
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 1088 THINKING DOTS ANIMATION
1379 1089 ======================================== */
1380 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1090 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1381 1091 display: flex;
1382 1092 justify-content: center;
1383 1093 align-items: center;
1384 1094 overflow: hidden;
@@ -1387,9 +1097,9 @@
1387 1097 z-index: 1;
1388 1098 flex-shrink: 0;
1389 1099 }
1390 1100
1391 -.chat-box .bot-message.temporary-message .thinking-dots {
1101 +#chat-box .bot-message.temporary-message .thinking-dots {
1392 1102 display: flex;
1393 1103 justify-content: center;
1394 1104 align-items: center;
1395 1105 height: 90%;
@@ -1396,9 +1106,9 @@
1396 1106 gap: 5px;
1397 1107 flex-shrink: 0;
1398 1108 }
1399 1109
1400 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1110 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1401 1111 height: 6px;
1402 1112 width: 6px;
1403 1113 margin: 0 3px;
1404 1114 background-color: #fff;
@@ -1403,21 +1113,21 @@
1403 1113 margin: 0 3px;
1404 1114 background-color: #fff;
1405 1115 border-radius: 50%;
1406 1116 display: inline-block;
1407 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1117 + animation: bounce 1.4s ease-in-out infinite both;
1408 1118 vertical-align: middle;
1409 1119 }
1410 1120
1411 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1121 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1412 1122 animation-delay: -0.32s;
1413 1123 }
1414 1124
1415 -.chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1125 +#chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1416 1126 animation-delay: -0.16s;
1417 1127 }
1418 1128
1419 -@keyframes mxchat-dot-bounce {
1129 +@keyframes bounce {
1420 1130 0%, 100%, 80% {
1421 1131 transform: scale(1);
1422 1132 }
1423 1133 40% {
@@ -1427,9 +1137,9 @@
1427 1137
1428 1138 /* ========================================
1429 1139 PRE-CHAT MESSAGE
1430 1140 ======================================== */
1431 -.pre-chat-message {
1141 +#pre-chat-message {
1432 1142 position: fixed;
1433 1143 bottom: 85px;
1434 1144 right: 30px;
1435 1145 background-color: #fff;
@@ -1444,9 +1154,9 @@
1444 1154 display: none;
1445 1155 margin-bottom: 10px;
1446 1156 }
1447 1157
1448 -.pre-chat-message .close-pre-chat-message {
1158 +#pre-chat-message .close-pre-chat-message {
1449 1159 position: absolute;
1450 1160 top: -6px;
1451 1161 right: -6px;
1452 1162 background-color: #ccc;
@@ -1466,60 +1176,8 @@
1466 1176 line-height: 1;
1467 1177 }
1468 1178
1469 1179 /* ========================================
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 1180 MOBILE RESPONSIVE
1523 1181 ======================================== */
1524 1182 @media screen and (max-width: 782px) {
1525 1183 .mxchat-search-results {
@@ -1551,14 +1209,14 @@
1551 1209 width: 22px;
1552 1210 height: 22px;
1553 1211 }
1554 1212
1555 - .pre-chat-message {
1213 + #pre-chat-message {
1556 1214 bottom: 70px;
1557 1215 right: 15px;
1558 1216 }
1559 1217
1560 - .chat-input {
1218 + #chat-input {
1561 1219 width: calc(100% - 70px);
1562 1220 }
1563 1221
1564 1222 .bot-message,
@@ -1566,41 +1224,30 @@
1566 1224 padding: 10px;
1567 1225 max-width: 95%;
1568 1226 }
1569 1227
1570 - .floating-chatbot-button {
1228 + #floating-chatbot-button {
1571 1229 bottom: 15px;
1572 1230 right: 10px;
1573 1231 }
1574 1232
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);
1233 + #floating-chatbot {
1234 + width: 100vw;
1235 + height: calc(var(--vh, 1vh) * 100);
1583 1236 margin: 0;
1584 1237 padding: 0;
1585 1238 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);
1239 + bottom: 0;
1240 + top: 0;
1241 + left: 0;
1242 + right: 0;
1243 + border-radius: 0;
1592 1244 }
1593 1245
1594 - .floating-chatbot .mxchat-chatbot-wrapper {
1595 - border-radius: 16px;
1596 - overflow: hidden;
1246 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1247 + border-top-left-radius: 0;
1248 + border-top-right-radius: 0;
1597 1249 }
1598 -
1599 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1600 - border-top-left-radius: 16px;
1601 - border-top-right-radius: 16px;
1602 - }
1603 1250 }
1604 1251
1605 1252
1606 1253
@@ -1734,106 +1381,8 @@
1734 1381 height: auto;
1735 1382 border-radius: 0 0 8px 8px;
1736 1383 }
1737 1384
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 1385 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1837 1386 padding: 10px;
1838 1387 }
1839 1388
@@ -1842,9 +1391,9 @@
1842 1391 }
1843 1392
1844 1393
1845 1394 /* This selector with more context - showing the collapse button in certain states */
1846 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1395 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1847 1396 background: none;
1848 1397 border: none;
1849 1398 padding: 0;
1850 1399 margin: 0px;
@@ -1862,15 +1411,15 @@
1862 1411 order: -1; /* THIS IS MISSING */
1863 1412 }
1864 1413
1865 1414 /* ALL hover states - these are MISSING from your new CSS */
1866 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1415 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1867 1416 background: none;
1868 1417 border: none;
1869 1418 box-shadow: none;
1870 1419 }
1871 1420
1872 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1421 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1873 1422 outline: none;
1874 1423 background: none;
1875 1424 border: none;
1876 1425 box-shadow: none;
@@ -1875,9 +1424,9 @@
1875 1424 border: none;
1876 1425 box-shadow: none;
1877 1426 }
1878 1427
1879 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1428 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1880 1429 background: none;
1881 1430 border: none;
1882 1431 box-shadow: none;
1883 1432 }
@@ -1882,385 +1431,24 @@
1882 1431 box-shadow: none;
1883 1432 }
1884 1433
1885 1434 /* SVG styles - these are MISSING */
1886 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1435 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1887 1436 fill: none;
1888 - stroke: #212121;
1889 1437 transition: transform 0.2s ease;
1890 1438 width: 25px;
1891 1439 height: 25px;
1892 1440 }
1893 1441
1894 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1442 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1895 1443 opacity: 0.7;
1896 1444 }
1897 1445
1898 1446 /* 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 {
1447 +#mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1900 1448 display: flex;
1901 1449 }
1902 1450
1903 1451 /* Hide when actually collapsed */
1904 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1452 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1905 1453 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 1454 }