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