PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.4.6
MxChat – AI Chatbot & Content Generation for WordPress v2.4.6
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 +104 -862 3.2.152.4.6 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 {
@@ -167,9 +126,9 @@
167 126 transform: translateY(0);
168 127 }
169 128 }
170 129
171 -.mxchat-chatbot-wrapper {
130 +#mxchat-chatbot-wrapper {
172 131 display: none;
173 132 }
174 133
175 134 /* ========================================
@@ -330,37 +289,8 @@
330 289
331 290 /* ========================================
332 291 CODE BLOCKS & INLINE CODE
333 292 ======================================== */
334 -.mxchat-table-wrapper {
335 - overflow-x: auto;
336 - margin: 12px 0;
337 - -webkit-overflow-scrolling: touch;
338 -}
339 -
340 -.mxchat-table {
341 - width: 100%;
342 - border-collapse: collapse;
343 - font-size: 0.9em;
344 - line-height: 1.4;
345 -}
346 -
347 -.mxchat-table th,
348 -.mxchat-table td {
349 - padding: 8px 12px;
350 - border: 1px solid rgba(128, 128, 128, 0.3);
351 - word-break: break-word;
352 -}
353 -
354 -.mxchat-table thead th {
355 - font-weight: 600;
356 - background: rgba(128, 128, 128, 0.15);
357 -}
358 -
359 -.mxchat-table tbody tr:nth-child(even) {
360 - background: rgba(128, 128, 128, 0.05);
361 -}
362 -
363 293 .mxchat-code-block-container {
364 294 margin: 16px 0;
365 295 border-radius: 8px;
366 296 background: rgba(255, 255, 255, 0.1);
@@ -480,9 +410,9 @@
480 410 opacity: 1;
481 411 background: none;
482 412 }
483 413
484 -.mxchat-chatbot .chat-toolbar {
414 +#mxchat-chatbot .chat-toolbar {
485 415 display: flex;
486 416 gap: 10px;
487 417 padding: 8px;
488 418 background: none;
@@ -488,9 +418,9 @@
488 418 background: none;
489 419 align-items: end;
490 420 }
491 421
492 -.mxchat-chatbot .toolbar-btn {
422 +#mxchat-chatbot .toolbar-btn {
493 423 background: none;
494 424 border: none;
495 425 padding: 0;
496 426 cursor: pointer;
@@ -504,14 +434,14 @@
504 434 min-width: 0;
505 435 box-shadow: none;
506 436 }
507 437
508 -.mxchat-chatbot .toolbar-btn svg {
438 +#mxchat-chatbot .toolbar-btn svg {
509 439 width: 100%;
510 440 height: 100%;
511 441 }
512 442
513 -.mxchat-chatbot .toolbar-btn:hover {
443 +#mxchat-chatbot .toolbar-btn:hover {
514 444 opacity: 1;
515 445 background: none;
516 446 border: none;
517 447 box-shadow: none;
@@ -516,9 +446,9 @@
516 446 border: none;
517 447 box-shadow: none;
518 448 }
519 449
520 -.mxchat-chatbot .toolbar-btn:disabled {
450 +#mxchat-chatbot .toolbar-btn:disabled {
521 451 opacity: 0.3;
522 452 cursor: not-allowed;
523 453 background: none;
524 454 border: none;
@@ -528,9 +458,9 @@
528 458 background-color: rgba(120, 115, 245, 0.2);
529 459 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.4);
530 460 }
531 461
532 -.active-perplexity-container {
462 +#active-perplexity-container {
533 463 display: flex;
534 464 align-items: center;
535 465 margin-left: 8px;
536 466 font-size: 12px;
@@ -535,13 +465,13 @@
535 465 margin-left: 8px;
536 466 font-size: 12px;
537 467 }
538 468
539 -.perplexity-search-btn {
469 +#perplexity-search-btn {
540 470 display: none;
541 471 }
542 472
543 -.perplexity-search-btn.active {
473 +#perplexity-search-btn.active {
544 474 opacity: 1;
545 475 }
546 476
547 477 /* ========================================
@@ -546,9 +476,9 @@
546 476
547 477 /* ========================================
548 478 POPULAR QUESTIONS SYSTEM
549 479 ======================================== */
550 -.mxchat-popular-questions {
480 +#mxchat-popular-questions {
551 481 padding: 0 10px 10px;
552 482 transition: all 0.3s ease;
553 483 margin-bottom: 12px;
554 484 position: relative;
@@ -574,14 +504,14 @@
574 504 transition: all 0.3s ease;
575 505 gap: 8px;
576 506 }
577 507
578 -.mxchat-popular-questions.collapsed {
508 +#mxchat-popular-questions.collapsed {
579 509 padding: 0;
580 510 margin: 0;
581 511 }
582 512
583 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
513 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
584 514 flex-direction: row;
585 515 justify-content: center;
586 516 align-items: center;
587 517 padding: 0;
@@ -588,18 +518,18 @@
588 518 max-height: 40px;
589 519 overflow: visible;
590 520 }
591 521
592 -.mxchat-popular-questions.collapsed .mxchat-popular-question {
522 +#mxchat-popular-questions.collapsed .mxchat-popular-question {
593 523 display: none;
594 524 }
595 525
596 -.mxchat-popular-questions.collapsed .questions-collapse-btn {
526 +#mxchat-popular-questions.collapsed .questions-collapse-btn {
597 527 display: none;
598 528 }
599 529
600 530 /* MISSING - These need to be inside the container context: */
601 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
531 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
602 532 background: none;
603 533 border: none;
604 534 padding: 0;
605 535 margin: 0;
@@ -614,9 +544,9 @@
614 544 box-shadow: none;
615 545 outline: none;
616 546 }
617 547
618 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
548 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
619 549 background: none;
620 550 border: none;
621 551 padding: 0;
622 552 margin: 0px; /* Center and add bottom margin */
@@ -649,9 +579,8 @@
649 579 .questions-toggle-btn svg,
650 580 .questions-collapse-btn svg {
651 581 transition: transform 0.2s ease;
652 582 fill: none;
653 - stroke: #212121;
654 583 width: 25px;
655 584 height: 25px;
656 585 }
657 586
@@ -659,13 +588,13 @@
659 588 .questions-collapse-btn:hover svg {
660 589 opacity: 0.7;
661 590 }
662 591
663 -.mxchat-popular-questions.collapsed .questions-toggle-btn {
592 +#mxchat-popular-questions.collapsed .questions-toggle-btn {
664 593 display: flex;
665 594 }
666 595
667 -.mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
596 +#mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
668 597 display: flex;
669 598 align-self: center;
670 599 order: -1;
671 600 }
@@ -732,41 +661,38 @@
732 661 opacity: 0;
733 662 pointer-events: none;
734 663 }
735 664
736 -.mxchat-chatbot{
665 +#mxchat-chatbot {
737 666 background: #fff;
738 667 overflow: hidden;
739 668 position: relative;
740 669 display: flex;
741 670 flex-direction: column;
671 + height: 500px;
672 + box-sizing: border-box;
742 673 flex-grow: 1;
743 - min-height: 0; /* Allow flex shrinking */
744 - box-sizing: border-box;
745 674 }
746 675
747 -.chat-container {
676 +#chat-container {
748 677 display: flex;
749 678 flex-direction: column;
750 - flex-grow: 1;
751 - min-height: 0; /* Critical for flex overflow scrolling */
752 679 height: 100%;
753 680 }
754 681
755 -.chat-box {
682 +#chat-box {
756 683 flex-grow: 1;
757 684 overflow-y: auto;
758 685 padding: 10px;
759 686 margin-bottom: 0;
760 687 font-size: 1rem;
761 - min-height: 0; /* Critical for flex overflow scrolling */
762 688 }
763 689
764 -.chat-box::-webkit-scrollbar {
690 +#chat-box::-webkit-scrollbar {
765 691 width: 5px;
766 692 }
767 693
768 -.chat-box::-webkit-scrollbar-thumb {
694 +#chat-box::-webkit-scrollbar-thumb {
769 695 background-color: #212121;
770 696 border-radius: 20px;
771 697 }
772 698
@@ -795,9 +721,9 @@
795 721 .user-message p {
796 722 margin: 0;
797 723 }
798 724
799 -.mxchat-chatbot .chat-container .chat-box .bot-message {
725 +#mxchat-chatbot #chat-container #chat-box .bot-message {
800 726 float: left;
801 727 clear: both;
802 728 border: 1px solid rgba(226, 232, 255, 0.2);
803 729 border-radius: 0 18px 18px;
@@ -805,9 +731,9 @@
805 731 color: #fff;
806 732 overflow-x: hidden;
807 733 }
808 734
809 -.mxchat-chatbot .chat-container .chat-box .agent-message {
735 +#mxchat-chatbot #chat-container #chat-box .agent-message {
810 736 text-align: left;
811 737 float: left;
812 738 clear: both;
813 739 border: 1px solid rgba(226, 232, 255, 0.2);
@@ -860,9 +786,9 @@
860 786 font-size: 14px;
861 787 text-align: center;
862 788 }
863 789
864 -.mxchat-chatbot-wrapper {
790 +#mxchat-chatbot-wrapper {
865 791 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
866 792 border-radius: 10px;
867 793 display: flex;
868 794 flex-direction: column;
@@ -867,16 +793,14 @@
867 793 display: flex;
868 794 flex-direction: column;
869 795 height: 100%;
870 796 width: 100%;
871 - min-height: 0; /* Allow flex shrinking */
872 - overflow: hidden;
873 797 }
874 798
875 799 /* ========================================
876 800 INPUT & CONTROLS
877 801 ======================================== */
878 -.mxchat-chatbot .chat-container .input-container {
802 +#mxchat-chatbot #chat-container #input-container {
879 803 position: relative;
880 804 display: flex;
881 805 align-items: center;
882 806 padding-right: 40px;
@@ -884,9 +808,9 @@
884 808 border-radius: 10px;
885 809 margin: 0 10px 10px;
886 810 }
887 811
888 -.mxchat-chatbot .chat-container .input-container .chat-input {
812 +#mxchat-chatbot #chat-container #input-container #chat-input {
889 813 flex-grow: 1;
890 814 color: #212121;
891 815 line-height: 24px;
892 816 background: transparent;
@@ -904,97 +828,33 @@
904 828 outline: none;
905 829 border-radius: 10px;
906 830 }
907 831
908 -.chat-input::-webkit-scrollbar {
832 +#chat-input::-webkit-scrollbar {
909 833 width: 8px;
910 834 }
911 835
912 -.chat-input::-webkit-scrollbar-track {
836 +#chat-input::-webkit-scrollbar-track {
913 837 background: #f1f1f1;
914 838 border-radius: 4px;
915 839 }
916 840
917 -.chat-input::-webkit-scrollbar-thumb {
841 +#chat-input::-webkit-scrollbar-thumb {
918 842 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
919 843 border-radius: 4px;
920 844 }
921 845
922 -.chat-input::-webkit-scrollbar-thumb:hover {
846 +#chat-input::-webkit-scrollbar-thumb:hover {
923 847 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
924 848 }
925 849
926 -.chat-input {
850 +#chat-input {
927 851 scrollbar-width: thin;
928 852 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
929 853 }
930 854
931 -/* Chat input character counter + soft limit feedback (plan 7091a2).
932 - Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
933 - fades in and ramps neutral -> amber -> red. The input border mirrors the same
934 - cue, and an over-limit keystroke/paste triggers a brief shake so the hard
935 - maxlength cap (plan a3fae2) is never a silent "input jumps back". */
936 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
855 +#mxchat-chatbot #chat-container #input-container #send-button {
937 856 position: absolute;
938 - bottom: 3px;
939 - right: 44px; /* clear the absolutely-positioned send button */
940 - font-size: 11px;
941 - line-height: 1;
942 - font-variant-numeric: tabular-nums;
943 - color: #9aa0a6;
944 - background: rgba(255, 255, 255, 0.85);
945 - padding: 1px 5px;
946 - border-radius: 8px;
947 - pointer-events: none;
948 - opacity: 0;
949 - visibility: hidden;
950 - transition: opacity 0.18s ease, color 0.18s ease;
951 - z-index: 2;
952 -}
953 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
954 - opacity: 1;
955 - visibility: visible;
956 -}
957 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
958 - color: #d98300; /* amber: approaching the cap */
959 -}
960 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
961 - color: #d93025; /* red: at the cap */
962 - font-weight: 600;
963 -}
964 -/* RTL widgets: counter on the opposite side. */
965 -.mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
966 -[dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
967 - right: auto;
968 - left: 44px;
969 -}
970 -/* Input border affordance mirrors the counter color. */
971 -.mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
972 - border-color: #f0b048;
973 -}
974 -.mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
975 - border-color: #e5675c;
976 -}
977 -/* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
978 -.mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
979 - animation: mxchat-input-bump 0.2s ease;
980 -}
981 -@keyframes mxchat-input-bump {
982 - 0% { transform: translateX(0); }
983 - 25% { transform: translateX(-3px); }
984 - 50% { transform: translateX(3px); }
985 - 75% { transform: translateX(-2px); }
986 - 100% { transform: translateX(0); }
987 -}
988 -/* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
989 -@media (prefers-reduced-motion: reduce) {
990 - .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
991 - animation: none;
992 - }
993 -}
994 -
995 -.mxchat-chatbot .chat-container .input-container .send-button {
996 - position: absolute;
997 857 right: 10px;
998 858 top: 50%;
999 859 transform: translateY(-50%);
1000 860 border: none;
@@ -1013,32 +873,25 @@
1013 873 cursor: pointer;
1014 874 font-weight: 700;
1015 875 }
1016 876
1017 -.send-button svg {
877 +#send-button svg {
1018 878 width: 25px;
1019 879 height: 25px;
1020 880 pointer-events: none;
1021 881 }
1022 882
1023 -.send-button:hover {
883 +#send-button:hover {
1024 884 opacity: 0.8;
1025 885 }
1026 886
1027 -/* Stop state while a response is streaming: the send button becomes a Stop
1028 - control in place — same chrome and position, swapped glyph. Themeable hook;
1029 - the glyph's size/color are mirrored from the send icon at runtime. */
1030 -.mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
1031 - cursor: pointer;
1032 -}
1033 -
1034 -.mxchat-chatbot .spinner {
887 +#mxchat-chatbot .spinner {
1035 888 animation: rotate 2s linear infinite;
1036 889 width: 20px;
1037 890 height: 20px;
1038 891 }
1039 892
1040 -.mxchat-chatbot .spinner circle {
893 +#mxchat-chatbot .spinner circle {
1041 894 stroke: #212121;
1042 895 stroke-linecap: round;
1043 896 animation: dash 1.5s ease-in-out infinite;
1044 897 }
@@ -1070,11 +923,9 @@
1070 923 .chatbot-title-container {
1071 924 display: flex;
1072 925 align-items: center;
1073 926 justify-content: space-between;
1074 - gap: 10px;
1075 - flex: 1 1 auto;
1076 - min-width: 0;
927 + width: 100%;
1077 928 }
1078 929
1079 930 .chatbot-title-group {
1080 931 display: flex;
@@ -1083,36 +934,25 @@
1083 934 }
1084 935
1085 936 .chat-mode-indicator {
1086 937 font-size: 12px;
1087 - line-height: 1;
1088 - margin-right: 0;
1089 - padding: 4px 9px;
1090 - border-radius: 999px;
1091 - background: rgba(255, 255, 255, 0.18);
938 + margin-right: 8px;
939 + padding: 4px 8px;
940 + border-radius: 12px;
941 + background: rgba(255, 255, 255, 0.2);
1092 942 color: #ffffff;
1093 - display: inline-flex;
1094 - align-items: center;
1095 - height: 22px;
1096 - white-space: nowrap;
1097 - flex: 0 0 auto;
1098 943 }
1099 944
1100 -.floating-chatbot {
945 +#floating-chatbot {
1101 946 position: fixed;
1102 947 bottom: 25px;
1103 948 right: 25px;
1104 949 width: 375px;
1105 - /* Use viewport-aware height with fallbacks */
1106 - height: min(625px, calc(100vh - 50px)); /* 50px = 25px top + 25px bottom margin */
1107 - height: min(625px, calc(100dvh - 50px)); /* Dynamic viewport height for mobile browsers */
1108 - max-height: calc(100vh - 50px);
1109 - max-height: calc(100dvh - 50px); /* Fallback for browsers supporting dvh */
950 + height: 625px;
1110 951 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1111 952 border-radius: 20px;
1112 953 overflow: hidden;
1113 954 display: flex;
1114 - flex-direction: column;
1115 955 z-index: 100000;
1116 956 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1117 957 transform: translateY(20%);
1118 958 opacity: 0;
@@ -1118,42 +958,24 @@
1118 958 opacity: 0;
1119 959 pointer-events: none;
1120 960 }
1121 961
1122 -.floating-chatbot.visible {
962 +#floating-chatbot.visible {
1123 963 transform: translateY(0);
1124 964 opacity: 1;
1125 965 pointer-events: auto;
1126 966 }
1127 967
1128 -/* ========================================
1129 - EMBEDDED CHATBOT (Shortcode)
1130 - ======================================== */
1131 -/* Embedded chatbots are NOT inside .floating-chatbot wrapper */
1132 -/* Apply fixed height like floating widget so quick questions overlay properly */
1133 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) {
1134 - height: 500px;
1135 - max-height: 500px;
1136 -}
1137 -
1138 -/* Hide the minimize/exit button for embedded chatbots - it doesn't make sense */
1139 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) .exit-chat {
1140 - display: none !important;
1141 -}
1142 -
1143 -.floating-chatbot-button.hidden,
968 +#floating-chatbot-button.hidden,
1144 969 .exit-chat span {
1145 970 display: none !important;
1146 971 }
1147 972
1148 -.chatbot-top-bar button.exit-chat:hover {
1149 - background: rgba(255, 255, 255, 0.12);
1150 -}
1151 973 .visible {
1152 974 display: flex;
1153 975 }
1154 976
1155 -.floating-chatbot-button {
977 +#floating-chatbot-button {
1156 978 transition: opacity 1s ease-in-out;
1157 979 font-size: 1.25rem;
1158 980 position: fixed;
1159 981 bottom: 30px;
@@ -1171,14 +993,9 @@
1171 993 z-index: 100000;
1172 994 display: flex;
1173 995 }
1174 996
1175 -.floating-chatbot-button:focus-visible {
1176 - outline: 3px solid #7873f5;
1177 - outline-offset: 3px;
1178 -}
1179 -
1180 -.floating-chatbot-button img {
997 +#floating-chatbot-button img {
1181 998 max-width: 100%;
1182 999 max-height: 100%;
1183 1000 width: auto;
1184 1001 height: auto;
@@ -1187,51 +1004,34 @@
1187 1004 .chatbot-top-bar {
1188 1005 background: #212121;
1189 1006 }
1190 1007
1191 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1008 +#mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1192 1009 background: transparent;
1193 - /* v3.2.15 (plan-52fd4c): explicit guards against host-theme button rules.
1194 - Margin deliberately untouched — .exit-chat relies on margin-left:auto. */
1195 - background-image: none;
1196 1010 border: none;
1197 1011 opacity: 0.8;
1198 1012 padding: 0;
1199 - width: 32px;
1200 - height: 32px;
1201 - min-width: 32px;
1202 - min-height: 32px;
1203 - max-width: none;
1204 - flex: 0 0 auto;
1205 - border-radius: 6px;
1206 - font-family: inherit;
1207 - text-transform: none;
1208 - text-shadow: none;
1209 - appearance: none;
1210 - -webkit-appearance: none;
1211 - transition: opacity 0.15s ease, background 0.15s ease;
1013 + min-width: 20px;
1212 1014 }
1213 1015
1214 -.mxchat-chatbot-wrapper .chatbot-top-bar {
1016 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1215 1017 cursor: pointer;
1216 1018 color: #fff;
1217 - padding: 8px 12px;
1218 - min-height: 48px;
1219 - gap: 8px;
1019 + padding: 10px;
1220 1020 border-top-left-radius: 10px;
1221 1021 border-top-right-radius: 10px;
1222 1022 display: flex;
1223 1023 justify-content: space-between;
1224 - align-items: center;
1024 + align-items: start;
1225 1025 }
1226 1026
1227 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1228 - font-size: 15px;
1229 - line-height: 1.2;
1230 - padding: 0;
1027 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1028 + font-size: 16px;
1029 + line-height: 25px;
1030 + padding: 10px;
1231 1031 margin: 0;
1232 1032 font-family: 'Plus Jakarta Sans', sans-serif;
1233 - font-weight: 600;
1033 + font-weight: bold;
1234 1034 }
1235 1035
1236 1036 .exit-chat {
1237 1037 border: none;
@@ -1236,92 +1036,56 @@
1236 1036 .exit-chat {
1237 1037 border: none;
1238 1038 background: transparent;
1239 1039 cursor: pointer;
1240 - display: inline-flex;
1040 + display: flex;
1241 1041 align-items: center;
1242 1042 justify-content: center;
1243 - padding: 0;
1043 + padding: 5px;
1244 1044 margin-left: auto;
1245 1045 opacity: 0.8;
1246 - width: 32px;
1247 - height: 32px;
1248 - min-width: 32px;
1249 - flex: 0 0 auto;
1046 + min-width: 20px;
1250 1047 }
1251 1048
1252 1049 .exit-chat svg {
1253 - width: 18px;
1254 - height: 18px;
1255 - fill: none;
1256 - stroke: currentColor;
1050 + fill: white;
1051 + width: 24px;
1052 + height: 24px;
1053 + transform: rotate(270deg);
1257 1054 }
1258 1055
1259 -.mxchat-chatbot-wrapper .chatbot-footer {
1056 +#mxchat-chatbot-wrapper .chatbot-footer {
1260 1057 text-align: center;
1261 1058 padding-bottom: 10px;
1262 1059 font-size: 0.85em;
1263 1060 }
1264 1061
1265 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1062 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1266 1063 font-size: 12px;
1267 1064 margin: 0;
1268 1065 color: #71717a;
1269 1066 }
1270 1067
1271 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1068 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1272 1069 color: #0073aa;
1273 1070 text-decoration: underline;
1274 1071 font-size: 12px;
1275 1072 }
1276 1073
1277 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1074 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1278 1075 text-decoration: none;
1279 1076 color: inherit;
1280 1077 font-weight: 700;
1281 1078 }
1282 1079
1283 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1080 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1284 1081 text-decoration: underline;
1285 1082 }
1286 1083
1287 1084 /* ========================================
1288 - INIT LOADER (shown while chat initializes)
1289 - ======================================== */
1290 -.mxchat-init-loader {
1291 - display: flex;
1292 - align-items: center;
1293 - justify-content: center;
1294 - flex-grow: 1;
1295 - min-height: 0;
1296 - animation: fadeIn 0.3s ease-in-out;
1297 -}
1298 -
1299 -.mxchat-init-loader-dots {
1300 - display: flex;
1301 - gap: 8px;
1302 -}
1303 -
1304 -.mxchat-init-loader-dots .dot {
1305 - width: 8px;
1306 - height: 8px;
1307 - border-radius: 50%;
1308 - background-color: #888;
1309 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1310 -}
1311 -
1312 -.mxchat-init-loader-dots .dot:nth-child(1) {
1313 - animation-delay: -0.32s;
1314 -}
1315 -
1316 -.mxchat-init-loader-dots .dot:nth-child(2) {
1317 - animation-delay: -0.16s;
1318 -}
1319 -
1320 -/* ========================================
1321 1085 THINKING DOTS ANIMATION
1322 1086 ======================================== */
1323 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1087 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1324 1088 display: flex;
1325 1089 justify-content: center;
1326 1090 align-items: center;
1327 1091 overflow: hidden;
@@ -1330,9 +1094,9 @@
1330 1094 z-index: 1;
1331 1095 flex-shrink: 0;
1332 1096 }
1333 1097
1334 -.chat-box .bot-message.temporary-message .thinking-dots {
1098 +#chat-box .bot-message.temporary-message .thinking-dots {
1335 1099 display: flex;
1336 1100 justify-content: center;
1337 1101 align-items: center;
1338 1102 height: 90%;
@@ -1339,9 +1103,9 @@
1339 1103 gap: 5px;
1340 1104 flex-shrink: 0;
1341 1105 }
1342 1106
1343 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1107 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1344 1108 height: 6px;
1345 1109 width: 6px;
1346 1110 margin: 0 3px;
1347 1111 background-color: #fff;
@@ -1346,21 +1110,21 @@
1346 1110 margin: 0 3px;
1347 1111 background-color: #fff;
1348 1112 border-radius: 50%;
1349 1113 display: inline-block;
1350 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1114 + animation: bounce 1.4s ease-in-out infinite both;
1351 1115 vertical-align: middle;
1352 1116 }
1353 1117
1354 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1118 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1355 1119 animation-delay: -0.32s;
1356 1120 }
1357 1121
1358 -.chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1122 +#chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1359 1123 animation-delay: -0.16s;
1360 1124 }
1361 1125
1362 -@keyframes mxchat-dot-bounce {
1126 +@keyframes bounce {
1363 1127 0%, 100%, 80% {
1364 1128 transform: scale(1);
1365 1129 }
1366 1130 40% {
@@ -1370,9 +1134,9 @@
1370 1134
1371 1135 /* ========================================
1372 1136 PRE-CHAT MESSAGE
1373 1137 ======================================== */
1374 -.pre-chat-message {
1138 +#pre-chat-message {
1375 1139 position: fixed;
1376 1140 bottom: 85px;
1377 1141 right: 30px;
1378 1142 background-color: #fff;
@@ -1387,9 +1151,9 @@
1387 1151 display: none;
1388 1152 margin-bottom: 10px;
1389 1153 }
1390 1154
1391 -.pre-chat-message .close-pre-chat-message {
1155 +#pre-chat-message .close-pre-chat-message {
1392 1156 position: absolute;
1393 1157 top: -6px;
1394 1158 right: -6px;
1395 1159 background-color: #ccc;
@@ -1409,60 +1173,8 @@
1409 1173 line-height: 1;
1410 1174 }
1411 1175
1412 1176 /* ========================================
1413 - VIEWPORT HEIGHT CONSTRAINTS
1414 - Handles bookmarks bar, browser zoom, and smaller screens
1415 - ======================================== */
1416 -@media screen and (max-height: 700px) {
1417 - .floating-chatbot {
1418 - bottom: 15px;
1419 - height: calc(100vh - 30px);
1420 - height: calc(100dvh - 30px);
1421 - max-height: calc(100vh - 30px);
1422 - max-height: calc(100dvh - 30px);
1423 - }
1424 -
1425 - .floating-chatbot-button {
1426 - bottom: 20px;
1427 - }
1428 -
1429 - .pre-chat-message {
1430 - bottom: 75px;
1431 - }
1432 -}
1433 -
1434 -@media screen and (max-height: 550px) {
1435 - .floating-chatbot {
1436 - bottom: 10px;
1437 - height: calc(100vh - 20px);
1438 - height: calc(100dvh - 20px);
1439 - max-height: calc(100vh - 20px);
1440 - max-height: calc(100dvh - 20px);
1441 - }
1442 -
1443 - /* Reduce padding in tight spaces */
1444 - .mxchat-popular-questions {
1445 - padding: 0 8px 5px;
1446 - margin-bottom: 8px;
1447 - }
1448 -
1449 - .mxchat-popular-question {
1450 - padding: 8px 12px;
1451 - font-size: 13px;
1452 - line-height: 20px;
1453 - }
1454 -
1455 - .mxchat-chatbot .chat-container .input-container {
1456 - margin: 0 8px 8px;
1457 - }
1458 -
1459 - .mxchat-chatbot-wrapper .chatbot-footer {
1460 - padding-bottom: 5px;
1461 - }
1462 -}
1463 -
1464 -/* ========================================
1465 1177 MOBILE RESPONSIVE
1466 1178 ======================================== */
1467 1179 @media screen and (max-width: 782px) {
1468 1180 .mxchat-search-results {
@@ -1494,14 +1206,14 @@
1494 1206 width: 22px;
1495 1207 height: 22px;
1496 1208 }
1497 1209
1498 - .pre-chat-message {
1210 + #pre-chat-message {
1499 1211 bottom: 70px;
1500 1212 right: 15px;
1501 1213 }
1502 1214
1503 - .chat-input {
1215 + #chat-input {
1504 1216 width: calc(100% - 70px);
1505 1217 }
1506 1218
1507 1219 .bot-message,
@@ -1509,41 +1221,30 @@
1509 1221 padding: 10px;
1510 1222 max-width: 95%;
1511 1223 }
1512 1224
1513 - .floating-chatbot-button {
1225 + #floating-chatbot-button {
1514 1226 bottom: 15px;
1515 1227 right: 10px;
1516 1228 }
1517 1229
1518 - .floating-chatbot {
1519 - width: calc(100vw - 16px);
1520 - /* Use multiple fallbacks for maximum browser compatibility */
1521 - height: calc(100vh - 16px); /* Fallback */
1522 - height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1523 - height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1524 - max-height: calc(100vh - 16px);
1525 - max-height: calc(100dvh - 16px);
1230 + #floating-chatbot {
1231 + width: 100vw;
1232 + height: calc(var(--vh, 1vh) * 100);
1526 1233 margin: 0;
1527 1234 padding: 0;
1528 1235 position: fixed;
1529 - bottom: 8px;
1530 - top: auto;
1531 - left: 8px;
1532 - right: 8px;
1533 - border-radius: 16px;
1534 - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1236 + bottom: 0;
1237 + top: 0;
1238 + left: 0;
1239 + right: 0;
1240 + border-radius: 0;
1535 1241 }
1536 1242
1537 - .floating-chatbot .mxchat-chatbot-wrapper {
1538 - border-radius: 16px;
1539 - overflow: hidden;
1243 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1244 + border-top-left-radius: 0;
1245 + border-top-right-radius: 0;
1540 1246 }
1541 -
1542 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1543 - border-top-left-radius: 16px;
1544 - border-top-right-radius: 16px;
1545 - }
1546 1247 }
1547 1248
1548 1249
1549 1250
@@ -1677,106 +1378,8 @@
1677 1378 height: auto;
1678 1379 border-radius: 0 0 8px 8px;
1679 1380 }
1680 1381
1681 -/* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1682 - Caption colors INHERIT from the message bubble (same idiom as
1683 - .mxchat-product-card) so the embed reads correctly on any widget theme —
1684 - bot bubbles commonly force their own text color. */
1685 -.mxchat-youtube-embed {
1686 - max-width: 340px;
1687 - margin-top: 8px;
1688 -}
1689 -
1690 -.mxchat-youtube-facade {
1691 - position: relative;
1692 - display: block;
1693 - width: 100%;
1694 - padding: 0;
1695 - margin: 0;
1696 - border: none;
1697 - background: #000;
1698 - cursor: pointer;
1699 - aspect-ratio: 16 / 9;
1700 - border-radius: 10px;
1701 - overflow: hidden;
1702 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1703 -}
1704 -
1705 -.mxchat-youtube-thumb {
1706 - width: 100%;
1707 - height: 100%;
1708 - object-fit: cover;
1709 - display: block;
1710 - opacity: 0.92;
1711 - transition: opacity 0.2s;
1712 -}
1713 -
1714 -.mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1715 - opacity: 1;
1716 -}
1717 -
1718 -.mxchat-youtube-play {
1719 - position: absolute;
1720 - top: 50%;
1721 - left: 50%;
1722 - transform: translate(-50%, -50%);
1723 - display: flex;
1724 - align-items: center;
1725 - justify-content: center;
1726 - width: 52px;
1727 - height: 52px;
1728 - border-radius: 50%;
1729 - background: rgba(0, 0, 0, 0.72);
1730 - color: #fff;
1731 - transition: transform 0.2s, background 0.2s;
1732 -}
1733 -
1734 -.mxchat-youtube-play svg {
1735 - margin-left: 3px;
1736 -}
1737 -
1738 -.mxchat-youtube-facade:hover .mxchat-youtube-play {
1739 - transform: translate(-50%, -50%) scale(1.08);
1740 - background: rgba(0, 0, 0, 0.85);
1741 -}
1742 -
1743 -.mxchat-youtube-iframe {
1744 - width: 100%;
1745 - aspect-ratio: 16 / 9;
1746 - border: none;
1747 - display: block;
1748 - border-radius: 10px;
1749 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1750 -}
1751 -
1752 -.mxchat-youtube-caption {
1753 - display: flex;
1754 - align-items: baseline;
1755 - justify-content: space-between;
1756 - gap: 10px;
1757 - padding: 8px 2px 0;
1758 - background: transparent;
1759 - color: inherit;
1760 -}
1761 -
1762 -.mxchat-youtube-title {
1763 - font-size: 13px;
1764 - font-weight: 600;
1765 - color: inherit;
1766 - overflow: hidden;
1767 - white-space: nowrap;
1768 - text-overflow: ellipsis;
1769 -}
1770 -
1771 -.mxchat-youtube-link {
1772 - font-size: 12px;
1773 - white-space: nowrap;
1774 - color: inherit;
1775 - opacity: 0.85;
1776 - text-decoration: underline;
1777 -}
1778 -
1779 1382 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1780 1383 padding: 10px;
1781 1384 }
1782 1385
@@ -1785,9 +1388,9 @@
1785 1388 }
1786 1389
1787 1390
1788 1391 /* This selector with more context - showing the collapse button in certain states */
1789 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1392 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1790 1393 background: none;
1791 1394 border: none;
1792 1395 padding: 0;
1793 1396 margin: 0px;
@@ -1805,15 +1408,15 @@
1805 1408 order: -1; /* THIS IS MISSING */
1806 1409 }
1807 1410
1808 1411 /* ALL hover states - these are MISSING from your new CSS */
1809 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1412 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1810 1413 background: none;
1811 1414 border: none;
1812 1415 box-shadow: none;
1813 1416 }
1814 1417
1815 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1418 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1816 1419 outline: none;
1817 1420 background: none;
1818 1421 border: none;
1819 1422 box-shadow: none;
@@ -1818,9 +1421,9 @@
1818 1421 border: none;
1819 1422 box-shadow: none;
1820 1423 }
1821 1424
1822 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1425 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1823 1426 background: none;
1824 1427 border: none;
1825 1428 box-shadow: none;
1826 1429 }
@@ -1825,385 +1428,24 @@
1825 1428 box-shadow: none;
1826 1429 }
1827 1430
1828 1431 /* SVG styles - these are MISSING */
1829 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1432 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1830 1433 fill: none;
1831 - stroke: #212121;
1832 1434 transition: transform 0.2s ease;
1833 1435 width: 25px;
1834 1436 height: 25px;
1835 1437 }
1836 1438
1837 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1439 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover svg {
1838 1440 opacity: 0.7;
1839 1441 }
1840 1442
1841 1443 /* THE CRITICAL DISPLAY RULE - this shows when it's been collapsed before */
1842 -.mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1444 +#mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1843 1445 display: flex;
1844 1446 }
1845 1447
1846 1448 /* Hide when actually collapsed */
1847 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1449 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1848 1450 display: none;
1849 -}
1850 -
1851 -/* ============================================================
1852 - Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1853 - Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1854 - mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1855 -
1856 - v3.2.10: explicit `order` rules pin the visual order
1857 - title (0) | kebab (1) | down-arrow (2)
1858 - so the down-arrow is always the rightmost icon regardless of source
1859 - order or which sibling has margin-left:auto.
1860 - ============================================================ */
1861 -.mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1862 -.mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1863 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1864 -
1865 -.mxchat-header-menu-wrap {
1866 - position: relative;
1867 - display: inline-flex;
1868 - align-items: center;
1869 - margin-left: auto; /* push kebab + arrow group to the right edge */
1870 -}
1871 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1872 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1873 - margin-left: 4px; /* even, snug gap between kebab and close */
1874 -}
1875 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1876 - background: rgba(255, 255, 255, 0.12);
1877 - opacity: 1;
1878 - outline: none;
1879 -}
1880 -/* v3.2.15 (plan-52fd4c): kebab rules scoped under the wrapper + explicit
1881 - guards on every property a theme's button/link rules commonly set
1882 - (font-family, margin, appearance, text-transform, background-image),
1883 - after a customer site's theme visibly mangled the dropdown. */
1884 -.mxchat-chatbot-wrapper .mxchat-header-btn {
1885 - border: none;
1886 - background: transparent;
1887 - background-image: none;
1888 - cursor: pointer;
1889 - display: inline-flex;
1890 - align-items: center;
1891 - justify-content: center;
1892 - padding: 0;
1893 - margin: 0;
1894 - opacity: 0.8;
1895 - color: #fff;
1896 - font-family: inherit;
1897 - text-transform: none;
1898 - text-shadow: none;
1899 - appearance: none;
1900 - -webkit-appearance: none;
1901 - transition: opacity 0.15s ease, background 0.15s ease;
1902 - border-radius: 6px;
1903 - line-height: 0;
1904 - width: 32px;
1905 - height: 32px;
1906 - min-width: 32px;
1907 - min-height: 32px;
1908 - max-width: none;
1909 - flex: 0 0 auto;
1910 -}
1911 -.mxchat-chatbot-wrapper .mxchat-header-btn:hover,
1912 -.mxchat-chatbot-wrapper .mxchat-header-btn:focus {
1913 - opacity: 1;
1914 - background: rgba(255, 255, 255, 0.12);
1915 - outline: none;
1916 -}
1917 -.mxchat-chatbot-wrapper .mxchat-header-btn[aria-expanded="true"] {
1918 - opacity: 1;
1919 - background: rgba(255, 255, 255, 0.12);
1920 -}
1921 -.mxchat-chatbot-wrapper .mxchat-menu-trigger svg {
1922 - width: 18px;
1923 - height: 18px;
1924 -}
1925 -
1926 -.mxchat-chatbot-wrapper .mxchat-header-menu {
1927 - position: absolute;
1928 - top: calc(100% + 6px);
1929 - right: 0;
1930 - min-width: 220px;
1931 - margin: 0;
1932 - background: var(--mxchat-menu-bg, #ffffff);
1933 - color: var(--mxchat-menu-fg, #1a1a1a);
1934 - border: 1px solid rgba(127, 127, 127, 0.20);
1935 - border-radius: 10px;
1936 - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1937 - padding: 4px;
1938 - font-family: inherit;
1939 - z-index: 99;
1940 - opacity: 0;
1941 - transform: translateY(-4px);
1942 - pointer-events: none;
1943 - transition: opacity 0.12s ease, transform 0.12s ease;
1944 -}
1945 -.mxchat-chatbot-wrapper .mxchat-header-menu.is-open {
1946 - opacity: 1;
1947 - transform: translateY(0);
1948 - pointer-events: auto;
1949 -}
1950 -.mxchat-chatbot-wrapper .mxchat-header-menu[hidden] {
1951 - display: none;
1952 -}
1953 -.mxchat-chatbot-wrapper .mxchat-menu-item {
1954 - display: flex;
1955 - align-items: center;
1956 - gap: 10px;
1957 - width: 100%;
1958 - padding: 8px 12px;
1959 - margin: 0;
1960 - min-height: 40px;
1961 - border: none;
1962 - background: transparent;
1963 - background-image: none;
1964 - color: inherit;
1965 - font-family: inherit;
1966 - font-size: 14px;
1967 - line-height: 1.3;
1968 - letter-spacing: normal;
1969 - text-align: left;
1970 - text-transform: none;
1971 - text-shadow: none;
1972 - white-space: nowrap;
1973 - appearance: none;
1974 - -webkit-appearance: none;
1975 - cursor: pointer;
1976 - border-radius: 6px;
1977 - transition: background 0.12s ease;
1978 - text-decoration: none;
1979 - box-sizing: border-box;
1980 -}
1981 -.mxchat-chatbot-wrapper .mxchat-menu-item:hover,
1982 -.mxchat-chatbot-wrapper .mxchat-menu-item:focus {
1983 - background: rgba(127, 127, 127, 0.18);
1984 - outline: none;
1985 -}
1986 -.mxchat-menu-item-icon {
1987 - display: inline-flex;
1988 - align-items: center;
1989 - justify-content: center;
1990 - width: 16px;
1991 - height: 16px;
1992 - color: inherit;
1993 - opacity: 0.85;
1994 - flex-shrink: 0;
1995 -}
1996 -.mxchat-menu-item-icon svg {
1997 - width: 16px;
1998 - height: 16px;
1999 - display: block;
2000 -}
2001 -.mxchat-menu-item-label {
2002 - flex: 1;
2003 - color: inherit;
2004 -}
2005 -
2006 -/* RTL — flip the dropdown anchor edge */
2007 -[dir="rtl"] .mxchat-header-menu,
2008 -.mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
2009 - right: auto;
2010 - left: 0;
2011 -}
2012 -
2013 -/* ============================================================================
2014 - Satisfaction rating (v3.2.6 — polished per plan-141a12)
2015 - Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
2016 - ========================================================================= */
2017 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
2018 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
2019 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
2020 - clear: both;
2021 - float: left;
2022 - max-width: 92%;
2023 - box-sizing: border-box;
2024 -}
2025 -
2026 -/* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
2027 - inline style; the inner rating component supplies its own padding + layout. */
2028 -.mxchat-rating-bot-bubble {
2029 - padding: 0;
2030 - overflow: visible;
2031 -}
2032 -
2033 -.mxchat-rating-prompt {
2034 - display: flex;
2035 - flex-direction: column;
2036 - align-items: stretch;
2037 - gap: 10px;
2038 - padding: 10px 14px;
2039 - margin: 10px 0;
2040 - font-size: 14px;
2041 - color: inherit;
2042 -}
2043 -
2044 -.mxchat-rating-question {
2045 - color: inherit;
2046 - opacity: 0.85;
2047 - font-weight: 500;
2048 -}
2049 -
2050 -.mxchat-rating-actions {
2051 - display: flex;
2052 - align-items: center;
2053 - gap: 8px;
2054 -}
2055 -
2056 -.mxchat-rating-buttons {
2057 - display: inline-flex;
2058 - gap: 6px;
2059 -}
2060 -
2061 -.mxchat-rating-btn {
2062 - display: inline-flex;
2063 - align-items: center;
2064 - justify-content: center;
2065 - width: 32px;
2066 - height: 32px;
2067 - border-radius: 8px;
2068 - background: transparent;
2069 - border: none;
2070 - color: inherit;
2071 - opacity: 0.6;
2072 - cursor: pointer;
2073 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
2074 - padding: 0;
2075 -}
2076 -
2077 -.mxchat-rating-btn:hover {
2078 - opacity: 1;
2079 - transform: scale(1.12);
2080 - background: rgba(255, 255, 255, 0.08);
2081 -}
2082 -
2083 -.mxchat-rating-btn:focus-visible {
2084 - opacity: 1;
2085 - outline: 2px solid currentColor;
2086 - outline-offset: 2px;
2087 -}
2088 -
2089 -.mxchat-rating-btn svg {
2090 - pointer-events: none;
2091 -}
2092 -
2093 -.mxchat-rating-dismiss {
2094 - width: 24px;
2095 - height: 24px;
2096 - border-radius: 6px;
2097 - background: transparent;
2098 - border: none;
2099 - color: inherit;
2100 - opacity: 0.45;
2101 - cursor: pointer;
2102 - font-size: 18px;
2103 - line-height: 1;
2104 - transition: opacity 0.18s ease, background-color 0.18s ease;
2105 -}
2106 -
2107 -.mxchat-rating-dismiss:hover {
2108 - opacity: 0.9;
2109 - background: rgba(255, 255, 255, 0.08);
2110 -}
2111 -
2112 -/* Feedback panel that replaces the prompt after a rating is clicked */
2113 -.mxchat-rating-feedback {
2114 - padding: 12px 14px;
2115 - margin: 10px 0;
2116 - display: flex;
2117 - flex-direction: column;
2118 - gap: 10px;
2119 - color: inherit;
2120 - animation: mxchat-rating-fade-in 0.22s ease;
2121 -}
2122 -
2123 -.mxchat-rating-feedback-label {
2124 - font-size: 13px;
2125 - opacity: 0.85;
2126 - font-weight: 500;
2127 -}
2128 -
2129 -.mxchat-rating-feedback-input {
2130 - width: 100%;
2131 - box-sizing: border-box;
2132 - padding: 8px 10px;
2133 - border: 1px solid rgba(255, 255, 255, 0.25);
2134 - border-radius: 8px;
2135 - font-size: 14px;
2136 - font-family: inherit;
2137 - resize: vertical;
2138 - background: rgba(255, 255, 255, 0.08);
2139 - color: inherit;
2140 -}
2141 -
2142 -.mxchat-rating-feedback-input:focus {
2143 - outline: none;
2144 - border-color: rgba(255, 255, 255, 0.45);
2145 - background: rgba(255, 255, 255, 0.15);
2146 -}
2147 -
2148 -.mxchat-rating-feedback-actions {
2149 - display: flex;
2150 - justify-content: flex-end;
2151 - gap: 8px;
2152 -}
2153 -
2154 -.mxchat-rating-skip,
2155 -.mxchat-rating-submit {
2156 - padding: 6px 14px;
2157 - border-radius: 8px;
2158 - font-size: 13px;
2159 - font-weight: 500;
2160 - cursor: pointer;
2161 - border: none;
2162 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2163 -}
2164 -
2165 -.mxchat-rating-skip {
2166 - background: transparent;
2167 - color: inherit;
2168 - opacity: 0.6;
2169 -}
2170 -
2171 -.mxchat-rating-skip:hover {
2172 - opacity: 1;
2173 - background: rgba(255, 255, 255, 0.08);
2174 -}
2175 -
2176 -.mxchat-rating-submit {
2177 - /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2178 - syncRatingBubbleColors() in chat-script.js paints the real bot colors
2179 - straight onto this button (inline) from the bubble's COMPUTED style, so
2180 - it adapts to both the inline color pickers AND the mxchat-theme AI
2181 - customizer. These var()/literal values are the no-JS safety net — the
2182 - literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2183 - own (no white-on-white). Longhand background-color (not the `background`
2184 - shorthand) because Chromium resolves inherited custom properties
2185 - unreliably inside the shorthand. Do NOT use currentColor here — setting
2186 - `color` would re-poison the background to the same value. */
2187 - background-color: var(--mxchat-bot-fg, #212121);
2188 - color: var(--mxchat-bot-bg, #ffffff);
2189 -}
2190 -
2191 -.mxchat-rating-submit:hover {
2192 - transform: translateY(-1px);
2193 - opacity: 0.9;
2194 -}
2195 -
2196 -.mxchat-rating-saved {
2197 - padding: 10px 14px;
2198 - margin: 10px 0;
2199 - font-size: 13px;
2200 - font-weight: 500;
2201 - text-align: center;
2202 - color: inherit;
2203 - animation: mxchat-rating-fade-in 0.22s ease;
2204 -}
2205 -
2206 -@keyframes mxchat-rating-fade-in {
2207 - from { opacity: 0; transform: translateY(4px); }
2208 - to { opacity: 1; transform: translateY(0); }
2209 1451 }