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 +105 -868 3.2.182.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,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,24 @@
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);
1155 -}
1156 973 .visible {
1157 974 display: flex;
1158 975 }
1159 976
1160 -.floating-chatbot-button {
977 +#floating-chatbot-button {
1161 978 transition: opacity 1s ease-in-out;
1162 979 font-size: 1.25rem;
1163 980 position: fixed;
1164 981 bottom: 30px;
@@ -1176,14 +993,9 @@
1176 993 z-index: 100000;
1177 994 display: flex;
1178 995 }
1179 996
1180 -.floating-chatbot-button:focus-visible {
1181 - outline: 3px solid #7873f5;
1182 - outline-offset: 3px;
1183 -}
1184 -
1185 -.floating-chatbot-button img {
997 +#floating-chatbot-button img {
1186 998 max-width: 100%;
1187 999 max-height: 100%;
1188 1000 width: auto;
1189 1001 height: auto;
@@ -1192,51 +1004,34 @@
1192 1004 .chatbot-top-bar {
1193 1005 background: #212121;
1194 1006 }
1195 1007
1196 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1008 +#mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1197 1009 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 1010 border: none;
1202 1011 opacity: 0.8;
1203 1012 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;
1013 + min-width: 20px;
1217 1014 }
1218 1015
1219 -.mxchat-chatbot-wrapper .chatbot-top-bar {
1016 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1220 1017 cursor: pointer;
1221 1018 color: #fff;
1222 - padding: 8px 12px;
1223 - min-height: 48px;
1224 - gap: 8px;
1019 + padding: 10px;
1225 1020 border-top-left-radius: 10px;
1226 1021 border-top-right-radius: 10px;
1227 1022 display: flex;
1228 1023 justify-content: space-between;
1229 - align-items: center;
1024 + align-items: start;
1230 1025 }
1231 1026
1232 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1233 - font-size: 15px;
1234 - line-height: 1.2;
1235 - padding: 0;
1027 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1028 + font-size: 16px;
1029 + line-height: 25px;
1030 + padding: 10px;
1236 1031 margin: 0;
1237 1032 font-family: 'Plus Jakarta Sans', sans-serif;
1238 - font-weight: 600;
1033 + font-weight: bold;
1239 1034 }
1240 1035
1241 1036 .exit-chat {
1242 1037 border: none;
@@ -1241,92 +1036,56 @@
1241 1036 .exit-chat {
1242 1037 border: none;
1243 1038 background: transparent;
1244 1039 cursor: pointer;
1245 - display: inline-flex;
1040 + display: flex;
1246 1041 align-items: center;
1247 1042 justify-content: center;
1248 - padding: 0;
1043 + padding: 5px;
1249 1044 margin-left: auto;
1250 1045 opacity: 0.8;
1251 - width: 32px;
1252 - height: 32px;
1253 - min-width: 32px;
1254 - flex: 0 0 auto;
1046 + min-width: 20px;
1255 1047 }
1256 1048
1257 1049 .exit-chat svg {
1258 - width: 18px;
1259 - height: 18px;
1260 - fill: none;
1261 - stroke: currentColor;
1050 + fill: white;
1051 + width: 24px;
1052 + height: 24px;
1053 + transform: rotate(270deg);
1262 1054 }
1263 1055
1264 -.mxchat-chatbot-wrapper .chatbot-footer {
1056 +#mxchat-chatbot-wrapper .chatbot-footer {
1265 1057 text-align: center;
1266 1058 padding-bottom: 10px;
1267 1059 font-size: 0.85em;
1268 1060 }
1269 1061
1270 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1062 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1271 1063 font-size: 12px;
1272 1064 margin: 0;
1273 1065 color: #71717a;
1274 1066 }
1275 1067
1276 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1068 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1277 1069 color: #0073aa;
1278 1070 text-decoration: underline;
1279 1071 font-size: 12px;
1280 1072 }
1281 1073
1282 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1074 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1283 1075 text-decoration: none;
1284 1076 color: inherit;
1285 1077 font-weight: 700;
1286 1078 }
1287 1079
1288 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1080 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1289 1081 text-decoration: underline;
1290 1082 }
1291 1083
1292 1084 /* ========================================
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 1085 THINKING DOTS ANIMATION
1327 1086 ======================================== */
1328 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1087 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1329 1088 display: flex;
1330 1089 justify-content: center;
1331 1090 align-items: center;
1332 1091 overflow: hidden;
@@ -1335,9 +1094,9 @@
1335 1094 z-index: 1;
1336 1095 flex-shrink: 0;
1337 1096 }
1338 1097
1339 -.chat-box .bot-message.temporary-message .thinking-dots {
1098 +#chat-box .bot-message.temporary-message .thinking-dots {
1340 1099 display: flex;
1341 1100 justify-content: center;
1342 1101 align-items: center;
1343 1102 height: 90%;
@@ -1344,9 +1103,9 @@
1344 1103 gap: 5px;
1345 1104 flex-shrink: 0;
1346 1105 }
1347 1106
1348 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1107 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1349 1108 height: 6px;
1350 1109 width: 6px;
1351 1110 margin: 0 3px;
1352 1111 background-color: #fff;
@@ -1351,21 +1110,21 @@
1351 1110 margin: 0 3px;
1352 1111 background-color: #fff;
1353 1112 border-radius: 50%;
1354 1113 display: inline-block;
1355 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1114 + animation: bounce 1.4s ease-in-out infinite both;
1356 1115 vertical-align: middle;
1357 1116 }
1358 1117
1359 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1118 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1360 1119 animation-delay: -0.32s;
1361 1120 }
1362 1121
1363 -.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) {
1364 1123 animation-delay: -0.16s;
1365 1124 }
1366 1125
1367 -@keyframes mxchat-dot-bounce {
1126 +@keyframes bounce {
1368 1127 0%, 100%, 80% {
1369 1128 transform: scale(1);
1370 1129 }
1371 1130 40% {
@@ -1375,9 +1134,9 @@
1375 1134
1376 1135 /* ========================================
1377 1136 PRE-CHAT MESSAGE
1378 1137 ======================================== */
1379 -.pre-chat-message {
1138 +#pre-chat-message {
1380 1139 position: fixed;
1381 1140 bottom: 85px;
1382 1141 right: 30px;
1383 1142 background-color: #fff;
@@ -1392,9 +1151,9 @@
1392 1151 display: none;
1393 1152 margin-bottom: 10px;
1394 1153 }
1395 1154
1396 -.pre-chat-message .close-pre-chat-message {
1155 +#pre-chat-message .close-pre-chat-message {
1397 1156 position: absolute;
1398 1157 top: -6px;
1399 1158 right: -6px;
1400 1159 background-color: #ccc;
@@ -1414,60 +1173,8 @@
1414 1173 line-height: 1;
1415 1174 }
1416 1175
1417 1176 /* ========================================
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 1177 MOBILE RESPONSIVE
1471 1178 ======================================== */
1472 1179 @media screen and (max-width: 782px) {
1473 1180 .mxchat-search-results {
@@ -1499,14 +1206,14 @@
1499 1206 width: 22px;
1500 1207 height: 22px;
1501 1208 }
1502 1209
1503 - .pre-chat-message {
1210 + #pre-chat-message {
1504 1211 bottom: 70px;
1505 1212 right: 15px;
1506 1213 }
1507 1214
1508 - .chat-input {
1215 + #chat-input {
1509 1216 width: calc(100% - 70px);
1510 1217 }
1511 1218
1512 1219 .bot-message,
@@ -1514,41 +1221,30 @@
1514 1221 padding: 10px;
1515 1222 max-width: 95%;
1516 1223 }
1517 1224
1518 - .floating-chatbot-button {
1225 + #floating-chatbot-button {
1519 1226 bottom: 15px;
1520 1227 right: 10px;
1521 1228 }
1522 1229
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);
1230 + #floating-chatbot {
1231 + width: 100vw;
1232 + height: calc(var(--vh, 1vh) * 100);
1531 1233 margin: 0;
1532 1234 padding: 0;
1533 1235 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);
1236 + bottom: 0;
1237 + top: 0;
1238 + left: 0;
1239 + right: 0;
1240 + border-radius: 0;
1540 1241 }
1541 1242
1542 - .floating-chatbot .mxchat-chatbot-wrapper {
1543 - border-radius: 16px;
1544 - overflow: hidden;
1243 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1244 + border-top-left-radius: 0;
1245 + border-top-right-radius: 0;
1545 1246 }
1546 -
1547 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1548 - border-top-left-radius: 16px;
1549 - border-top-right-radius: 16px;
1550 - }
1551 1247 }
1552 1248
1553 1249
1554 1250
@@ -1682,106 +1378,8 @@
1682 1378 height: auto;
1683 1379 border-radius: 0 0 8px 8px;
1684 1380 }
1685 1381
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 1382 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1785 1383 padding: 10px;
1786 1384 }
1787 1385
@@ -1790,9 +1388,9 @@
1790 1388 }
1791 1389
1792 1390
1793 1391 /* This selector with more context - showing the collapse button in certain states */
1794 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1392 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1795 1393 background: none;
1796 1394 border: none;
1797 1395 padding: 0;
1798 1396 margin: 0px;
@@ -1810,15 +1408,15 @@
1810 1408 order: -1; /* THIS IS MISSING */
1811 1409 }
1812 1410
1813 1411 /* ALL hover states - these are MISSING from your new CSS */
1814 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1412 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1815 1413 background: none;
1816 1414 border: none;
1817 1415 box-shadow: none;
1818 1416 }
1819 1417
1820 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1418 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1821 1419 outline: none;
1822 1420 background: none;
1823 1421 border: none;
1824 1422 box-shadow: none;
@@ -1823,9 +1421,9 @@
1823 1421 border: none;
1824 1422 box-shadow: none;
1825 1423 }
1826 1424
1827 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1425 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1828 1426 background: none;
1829 1427 border: none;
1830 1428 box-shadow: none;
1831 1429 }
@@ -1830,385 +1428,24 @@
1830 1428 box-shadow: none;
1831 1429 }
1832 1430
1833 1431 /* SVG styles - these are MISSING */
1834 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1432 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1835 1433 fill: none;
1836 - stroke: #212121;
1837 1434 transition: transform 0.2s ease;
1838 1435 width: 25px;
1839 1436 height: 25px;
1840 1437 }
1841 1438
1842 -.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 {
1843 1440 opacity: 0.7;
1844 1441 }
1845 1442
1846 1443 /* 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 {
1444 +#mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1848 1445 display: flex;
1849 1446 }
1850 1447
1851 1448 /* Hide when actually collapsed */
1852 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1449 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1853 1450 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 1451 }