PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.6.2
MxChat – AI Chatbot & Content Generation for WordPress v2.6.2
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 +116 -861 3.2.202.6.2 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,9 +661,9 @@
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;
@@ -800,9 +672,9 @@
800 672 min-height: 0; /* Allow flex shrinking */
801 673 box-sizing: border-box;
802 674 }
803 675
804 -.chat-container {
676 +#chat-container {
805 677 display: flex;
806 678 flex-direction: column;
807 679 flex-grow: 1;
808 680 min-height: 0; /* Critical for flex overflow scrolling */
@@ -808,9 +680,9 @@
808 680 min-height: 0; /* Critical for flex overflow scrolling */
809 681 height: 100%;
810 682 }
811 683
812 -.chat-box {
684 +#chat-box {
813 685 flex-grow: 1;
814 686 overflow-y: auto;
815 687 padding: 10px;
816 688 margin-bottom: 0;
@@ -817,13 +689,13 @@
817 689 font-size: 1rem;
818 690 min-height: 0; /* Critical for flex overflow scrolling */
819 691 }
820 692
821 -.chat-box::-webkit-scrollbar {
693 +#chat-box::-webkit-scrollbar {
822 694 width: 5px;
823 695 }
824 696
825 -.chat-box::-webkit-scrollbar-thumb {
697 +#chat-box::-webkit-scrollbar-thumb {
826 698 background-color: #212121;
827 699 border-radius: 20px;
828 700 }
829 701
@@ -852,9 +724,9 @@
852 724 .user-message p {
853 725 margin: 0;
854 726 }
855 727
856 -.mxchat-chatbot .chat-container .chat-box .bot-message {
728 +#mxchat-chatbot #chat-container #chat-box .bot-message {
857 729 float: left;
858 730 clear: both;
859 731 border: 1px solid rgba(226, 232, 255, 0.2);
860 732 border-radius: 0 18px 18px;
@@ -862,9 +734,9 @@
862 734 color: #fff;
863 735 overflow-x: hidden;
864 736 }
865 737
866 -.mxchat-chatbot .chat-container .chat-box .agent-message {
738 +#mxchat-chatbot #chat-container #chat-box .agent-message {
867 739 text-align: left;
868 740 float: left;
869 741 clear: both;
870 742 border: 1px solid rgba(226, 232, 255, 0.2);
@@ -917,9 +789,9 @@
917 789 font-size: 14px;
918 790 text-align: center;
919 791 }
920 792
921 -.mxchat-chatbot-wrapper {
793 +#mxchat-chatbot-wrapper {
922 794 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
923 795 border-radius: 10px;
924 796 display: flex;
925 797 flex-direction: column;
@@ -931,9 +803,9 @@
931 803
932 804 /* ========================================
933 805 INPUT & CONTROLS
934 806 ======================================== */
935 -.mxchat-chatbot .chat-container .input-container {
807 +#mxchat-chatbot #chat-container #input-container {
936 808 position: relative;
937 809 display: flex;
938 810 align-items: center;
939 811 padding-right: 40px;
@@ -941,9 +813,9 @@
941 813 border-radius: 10px;
942 814 margin: 0 10px 10px;
943 815 }
944 816
945 -.mxchat-chatbot .chat-container .input-container .chat-input {
817 +#mxchat-chatbot #chat-container #input-container #chat-input {
946 818 flex-grow: 1;
947 819 color: #212121;
948 820 line-height: 24px;
949 821 background: transparent;
@@ -961,97 +833,33 @@
961 833 outline: none;
962 834 border-radius: 10px;
963 835 }
964 836
965 -.chat-input::-webkit-scrollbar {
837 +#chat-input::-webkit-scrollbar {
966 838 width: 8px;
967 839 }
968 840
969 -.chat-input::-webkit-scrollbar-track {
841 +#chat-input::-webkit-scrollbar-track {
970 842 background: #f1f1f1;
971 843 border-radius: 4px;
972 844 }
973 845
974 -.chat-input::-webkit-scrollbar-thumb {
846 +#chat-input::-webkit-scrollbar-thumb {
975 847 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
976 848 border-radius: 4px;
977 849 }
978 850
979 -.chat-input::-webkit-scrollbar-thumb:hover {
851 +#chat-input::-webkit-scrollbar-thumb:hover {
980 852 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
981 853 }
982 854
983 -.chat-input {
855 +#chat-input {
984 856 scrollbar-width: thin;
985 857 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
986 858 }
987 859
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 {
860 +#mxchat-chatbot #chat-container #input-container #send-button {
994 861 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 862 right: 10px;
1055 863 top: 50%;
1056 864 transform: translateY(-50%);
1057 865 border: none;
@@ -1070,32 +878,25 @@
1070 878 cursor: pointer;
1071 879 font-weight: 700;
1072 880 }
1073 881
1074 -.send-button svg {
882 +#send-button svg {
1075 883 width: 25px;
1076 884 height: 25px;
1077 885 pointer-events: none;
1078 886 }
1079 887
1080 -.send-button:hover {
888 +#send-button:hover {
1081 889 opacity: 0.8;
1082 890 }
1083 891
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 {
892 +#mxchat-chatbot .spinner {
1092 893 animation: rotate 2s linear infinite;
1093 894 width: 20px;
1094 895 height: 20px;
1095 896 }
1096 897
1097 -.mxchat-chatbot .spinner circle {
898 +#mxchat-chatbot .spinner circle {
1098 899 stroke: #212121;
1099 900 stroke-linecap: round;
1100 901 animation: dash 1.5s ease-in-out infinite;
1101 902 }
@@ -1127,11 +928,9 @@
1127 928 .chatbot-title-container {
1128 929 display: flex;
1129 930 align-items: center;
1130 931 justify-content: space-between;
1131 - gap: 10px;
1132 - flex: 1 1 auto;
1133 - min-width: 0;
932 + width: 100%;
1134 933 }
1135 934
1136 935 .chatbot-title-group {
1137 936 display: flex;
@@ -1140,22 +939,16 @@
1140 939 }
1141 940
1142 941 .chat-mode-indicator {
1143 942 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);
943 + margin-right: 8px;
944 + padding: 4px 8px;
945 + border-radius: 12px;
946 + background: rgba(255, 255, 255, 0.2);
1149 947 color: #ffffff;
1150 - display: inline-flex;
1151 - align-items: center;
1152 - height: 22px;
1153 - white-space: nowrap;
1154 - flex: 0 0 auto;
1155 948 }
1156 949
1157 -.floating-chatbot {
950 +#floating-chatbot {
1158 951 position: fixed;
1159 952 bottom: 25px;
1160 953 right: 25px;
1161 954 width: 375px;
@@ -1175,42 +968,27 @@
1175 968 opacity: 0;
1176 969 pointer-events: none;
1177 970 }
1178 971
1179 -.floating-chatbot.visible {
972 +#floating-chatbot.visible {
1180 973 transform: translateY(0);
1181 974 opacity: 1;
1182 975 pointer-events: auto;
1183 976 }
1184 977
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,
978 +#floating-chatbot-button.hidden,
1201 979 .exit-chat span {
1202 980 display: none !important;
1203 981 }
1204 982
1205 -.chatbot-top-bar button.exit-chat:hover {
1206 - background: rgba(255, 255, 255, 0.12);
983 +.chatbot-top-bar#exit-chat-button button.exit-chat:hover {
984 + background: none;
1207 985 }
1208 986 .visible {
1209 987 display: flex;
1210 988 }
1211 989
1212 -.floating-chatbot-button {
990 +#floating-chatbot-button {
1213 991 transition: opacity 1s ease-in-out;
1214 992 font-size: 1.25rem;
1215 993 position: fixed;
1216 994 bottom: 30px;
@@ -1228,14 +1006,9 @@
1228 1006 z-index: 100000;
1229 1007 display: flex;
1230 1008 }
1231 1009
1232 -.floating-chatbot-button:focus-visible {
1233 - outline: 3px solid #7873f5;
1234 - outline-offset: 3px;
1235 -}
1236 -
1237 -.floating-chatbot-button img {
1010 +#floating-chatbot-button img {
1238 1011 max-width: 100%;
1239 1012 max-height: 100%;
1240 1013 width: auto;
1241 1014 height: auto;
@@ -1244,51 +1017,34 @@
1244 1017 .chatbot-top-bar {
1245 1018 background: #212121;
1246 1019 }
1247 1020
1248 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1021 +#mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1249 1022 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 1023 border: none;
1254 1024 opacity: 0.8;
1255 1025 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;
1026 + min-width: 20px;
1269 1027 }
1270 1028
1271 -.mxchat-chatbot-wrapper .chatbot-top-bar {
1029 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1272 1030 cursor: pointer;
1273 1031 color: #fff;
1274 - padding: 8px 12px;
1275 - min-height: 48px;
1276 - gap: 8px;
1032 + padding: 10px;
1277 1033 border-top-left-radius: 10px;
1278 1034 border-top-right-radius: 10px;
1279 1035 display: flex;
1280 1036 justify-content: space-between;
1281 - align-items: center;
1037 + align-items: start;
1282 1038 }
1283 1039
1284 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1285 - font-size: 15px;
1286 - line-height: 1.2;
1287 - padding: 0;
1040 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1041 + font-size: 16px;
1042 + line-height: 25px;
1043 + padding: 10px;
1288 1044 margin: 0;
1289 1045 font-family: 'Plus Jakarta Sans', sans-serif;
1290 - font-weight: 600;
1046 + font-weight: bold;
1291 1047 }
1292 1048
1293 1049 .exit-chat {
1294 1050 border: none;
@@ -1293,92 +1049,56 @@
1293 1049 .exit-chat {
1294 1050 border: none;
1295 1051 background: transparent;
1296 1052 cursor: pointer;
1297 - display: inline-flex;
1053 + display: flex;
1298 1054 align-items: center;
1299 1055 justify-content: center;
1300 - padding: 0;
1056 + padding: 5px;
1301 1057 margin-left: auto;
1302 1058 opacity: 0.8;
1303 - width: 32px;
1304 - height: 32px;
1305 - min-width: 32px;
1306 - flex: 0 0 auto;
1059 + min-width: 20px;
1307 1060 }
1308 1061
1309 1062 .exit-chat svg {
1310 - width: 18px;
1311 - height: 18px;
1312 - fill: none;
1313 - stroke: currentColor;
1063 + fill: white;
1064 + width: 24px;
1065 + height: 24px;
1066 + transform: rotate(270deg);
1314 1067 }
1315 1068
1316 -.mxchat-chatbot-wrapper .chatbot-footer {
1069 +#mxchat-chatbot-wrapper .chatbot-footer {
1317 1070 text-align: center;
1318 1071 padding-bottom: 10px;
1319 1072 font-size: 0.85em;
1320 1073 }
1321 1074
1322 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1075 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1323 1076 font-size: 12px;
1324 1077 margin: 0;
1325 1078 color: #71717a;
1326 1079 }
1327 1080
1328 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1081 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1329 1082 color: #0073aa;
1330 1083 text-decoration: underline;
1331 1084 font-size: 12px;
1332 1085 }
1333 1086
1334 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1087 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1335 1088 text-decoration: none;
1336 1089 color: inherit;
1337 1090 font-weight: 700;
1338 1091 }
1339 1092
1340 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1093 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1341 1094 text-decoration: underline;
1342 1095 }
1343 1096
1344 1097 /* ========================================
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 1098 THINKING DOTS ANIMATION
1379 1099 ======================================== */
1380 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1100 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1381 1101 display: flex;
1382 1102 justify-content: center;
1383 1103 align-items: center;
1384 1104 overflow: hidden;
@@ -1387,9 +1107,9 @@
1387 1107 z-index: 1;
1388 1108 flex-shrink: 0;
1389 1109 }
1390 1110
1391 -.chat-box .bot-message.temporary-message .thinking-dots {
1111 +#chat-box .bot-message.temporary-message .thinking-dots {
1392 1112 display: flex;
1393 1113 justify-content: center;
1394 1114 align-items: center;
1395 1115 height: 90%;
@@ -1396,9 +1116,9 @@
1396 1116 gap: 5px;
1397 1117 flex-shrink: 0;
1398 1118 }
1399 1119
1400 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1120 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1401 1121 height: 6px;
1402 1122 width: 6px;
1403 1123 margin: 0 3px;
1404 1124 background-color: #fff;
@@ -1403,21 +1123,21 @@
1403 1123 margin: 0 3px;
1404 1124 background-color: #fff;
1405 1125 border-radius: 50%;
1406 1126 display: inline-block;
1407 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1127 + animation: bounce 1.4s ease-in-out infinite both;
1408 1128 vertical-align: middle;
1409 1129 }
1410 1130
1411 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1131 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1412 1132 animation-delay: -0.32s;
1413 1133 }
1414 1134
1415 -.chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1135 +#chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1416 1136 animation-delay: -0.16s;
1417 1137 }
1418 1138
1419 -@keyframes mxchat-dot-bounce {
1139 +@keyframes bounce {
1420 1140 0%, 100%, 80% {
1421 1141 transform: scale(1);
1422 1142 }
1423 1143 40% {
@@ -1427,9 +1147,9 @@
1427 1147
1428 1148 /* ========================================
1429 1149 PRE-CHAT MESSAGE
1430 1150 ======================================== */
1431 -.pre-chat-message {
1151 +#pre-chat-message {
1432 1152 position: fixed;
1433 1153 bottom: 85px;
1434 1154 right: 30px;
1435 1155 background-color: #fff;
@@ -1444,9 +1164,9 @@
1444 1164 display: none;
1445 1165 margin-bottom: 10px;
1446 1166 }
1447 1167
1448 -.pre-chat-message .close-pre-chat-message {
1168 +#pre-chat-message .close-pre-chat-message {
1449 1169 position: absolute;
1450 1170 top: -6px;
1451 1171 right: -6px;
1452 1172 background-color: #ccc;
@@ -1470,9 +1190,9 @@
1470 1190 VIEWPORT HEIGHT CONSTRAINTS
1471 1191 Handles bookmarks bar, browser zoom, and smaller screens
1472 1192 ======================================== */
1473 1193 @media screen and (max-height: 700px) {
1474 - .floating-chatbot {
1194 + #floating-chatbot {
1475 1195 bottom: 15px;
1476 1196 height: calc(100vh - 30px);
1477 1197 height: calc(100dvh - 30px);
1478 1198 max-height: calc(100vh - 30px);
@@ -1478,19 +1198,19 @@
1478 1198 max-height: calc(100vh - 30px);
1479 1199 max-height: calc(100dvh - 30px);
1480 1200 }
1481 1201
1482 - .floating-chatbot-button {
1202 + #floating-chatbot-button {
1483 1203 bottom: 20px;
1484 1204 }
1485 1205
1486 - .pre-chat-message {
1206 + #pre-chat-message {
1487 1207 bottom: 75px;
1488 1208 }
1489 1209 }
1490 1210
1491 1211 @media screen and (max-height: 550px) {
1492 - .floating-chatbot {
1212 + #floating-chatbot {
1493 1213 bottom: 10px;
1494 1214 height: calc(100vh - 20px);
1495 1215 height: calc(100dvh - 20px);
1496 1216 max-height: calc(100vh - 20px);
@@ -1497,9 +1217,9 @@
1497 1217 max-height: calc(100dvh - 20px);
1498 1218 }
1499 1219
1500 1220 /* Reduce padding in tight spaces */
1501 - .mxchat-popular-questions {
1221 + #mxchat-popular-questions {
1502 1222 padding: 0 8px 5px;
1503 1223 margin-bottom: 8px;
1504 1224 }
1505 1225
@@ -1508,13 +1228,13 @@
1508 1228 font-size: 13px;
1509 1229 line-height: 20px;
1510 1230 }
1511 1231
1512 - .mxchat-chatbot .chat-container .input-container {
1232 + #mxchat-chatbot #chat-container #input-container {
1513 1233 margin: 0 8px 8px;
1514 1234 }
1515 1235
1516 - .mxchat-chatbot-wrapper .chatbot-footer {
1236 + #mxchat-chatbot-wrapper .chatbot-footer {
1517 1237 padding-bottom: 5px;
1518 1238 }
1519 1239 }
1520 1240
@@ -1551,14 +1271,14 @@
1551 1271 width: 22px;
1552 1272 height: 22px;
1553 1273 }
1554 1274
1555 - .pre-chat-message {
1275 + #pre-chat-message {
1556 1276 bottom: 70px;
1557 1277 right: 15px;
1558 1278 }
1559 1279
1560 - .chat-input {
1280 + #chat-input {
1561 1281 width: calc(100% - 70px);
1562 1282 }
1563 1283
1564 1284 .bot-message,
@@ -1566,41 +1286,35 @@
1566 1286 padding: 10px;
1567 1287 max-width: 95%;
1568 1288 }
1569 1289
1570 - .floating-chatbot-button {
1290 + #floating-chatbot-button {
1571 1291 bottom: 15px;
1572 1292 right: 10px;
1573 1293 }
1574 1294
1575 - .floating-chatbot {
1576 - width: calc(100vw - 16px);
1295 + #floating-chatbot {
1296 + width: 100vw;
1577 1297 /* 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);
1298 + height: 100vh; /* Fallback */
1299 + height: calc(var(--vh, 1vh) * 100); /* JS-set custom property fallback */
1300 + height: 100dvh; /* Modern dynamic viewport height */
1301 + max-height: 100vh;
1302 + max-height: 100dvh;
1583 1303 margin: 0;
1584 1304 padding: 0;
1585 1305 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);
1306 + bottom: 0;
1307 + top: 0;
1308 + left: 0;
1309 + right: 0;
1310 + border-radius: 0;
1592 1311 }
1593 1312
1594 - .floating-chatbot .mxchat-chatbot-wrapper {
1595 - border-radius: 16px;
1596 - overflow: hidden;
1313 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1314 + border-top-left-radius: 0;
1315 + border-top-right-radius: 0;
1597 1316 }
1598 -
1599 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1600 - border-top-left-radius: 16px;
1601 - border-top-right-radius: 16px;
1602 - }
1603 1317 }
1604 1318
1605 1319
1606 1320
@@ -1734,106 +1448,8 @@
1734 1448 height: auto;
1735 1449 border-radius: 0 0 8px 8px;
1736 1450 }
1737 1451
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 1452 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1837 1453 padding: 10px;
1838 1454 }
1839 1455
@@ -1842,9 +1458,9 @@
1842 1458 }
1843 1459
1844 1460
1845 1461 /* This selector with more context - showing the collapse button in certain states */
1846 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1462 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1847 1463 background: none;
1848 1464 border: none;
1849 1465 padding: 0;
1850 1466 margin: 0px;
@@ -1862,15 +1478,15 @@
1862 1478 order: -1; /* THIS IS MISSING */
1863 1479 }
1864 1480
1865 1481 /* ALL hover states - these are MISSING from your new CSS */
1866 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1482 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1867 1483 background: none;
1868 1484 border: none;
1869 1485 box-shadow: none;
1870 1486 }
1871 1487
1872 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1488 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1873 1489 outline: none;
1874 1490 background: none;
1875 1491 border: none;
1876 1492 box-shadow: none;
@@ -1875,9 +1491,9 @@
1875 1491 border: none;
1876 1492 box-shadow: none;
1877 1493 }
1878 1494
1879 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1495 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1880 1496 background: none;
1881 1497 border: none;
1882 1498 box-shadow: none;
1883 1499 }
@@ -1882,385 +1498,24 @@
1882 1498 box-shadow: none;
1883 1499 }
1884 1500
1885 1501 /* SVG styles - these are MISSING */
1886 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1502 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1887 1503 fill: none;
1888 - stroke: #212121;
1889 1504 transition: transform 0.2s ease;
1890 1505 width: 25px;
1891 1506 height: 25px;
1892 1507 }
1893 1508
1894 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1509 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1895 1510 opacity: 0.7;
1896 1511 }
1897 1512
1898 1513 /* 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 {
1514 +#mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1900 1515 display: flex;
1901 1516 }
1902 1517
1903 1518 /* Hide when actually collapsed */
1904 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1519 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1905 1520 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 1521 }