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