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 +106 -921 3.2.212.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 {
@@ -69,41 +28,21 @@
69 28 .email-blocker {
70 29 display: flex;
71 30 flex-direction: column;
72 31 align-items: center;
73 - /* No justify-content: center here — on an overflowing flex container it
74 - pushes content past BOTH edges, making the top unreachable by scroll.
75 - The auto margins on the first/last children below center the content
76 - when there is room and collapse to flex-start when there is not. */
32 + justify-content: center;
77 33 border-radius: 12px;
78 34 padding: 30px 20px;
79 35 max-width: 100%;
80 - max-height: 100%;
81 - overflow-y: auto;
82 - scrollbar-width: thin;
83 36 margin: auto;
84 37 text-align: center;
85 38 animation: fadeIn 0.5s ease-in-out;
86 39 }
87 40
88 -.email-blocker::-webkit-scrollbar {
89 - width: 5px;
90 -}
91 -
92 -.email-blocker::-webkit-scrollbar-thumb {
93 - background-color: #212121;
94 - border-radius: 20px;
95 -}
96 -
97 41 .email-blocker-header {
98 - margin-top: auto;
99 42 margin-bottom: 20px;
100 43 }
101 44
102 -.email-blocker .email-collection-form {
103 - margin-bottom: auto;
104 -}
105 -
106 45 .email-blocker-logo {
107 46 max-width: 80px;
108 47 margin-bottom: 10px;
109 48 }
@@ -140,40 +79,8 @@
140 79 box-shadow: 0 0 8px rgba(0, 115, 170, 0.3);
141 80 outline: none;
142 81 }
143 82
144 -/* Consent checkbox row (b062c4). Left-aligned inside the centered form so a
145 - multi-line label reads naturally; sized to stay compact on 320-390px. */
146 -.email-blocker .mxchat-consent-row {
147 - display: flex;
148 - align-items: flex-start;
149 - gap: 8px;
150 - width: 100%;
151 - margin-bottom: 15px;
152 - text-align: left;
153 -}
154 -
155 -.email-blocker .mxchat-consent-checkbox {
156 - flex-shrink: 0;
157 - width: 16px;
158 - height: 16px;
159 - margin: 2px 0 0;
160 - accent-color: #0073aa;
161 - cursor: pointer;
162 -}
163 -
164 -.email-blocker .mxchat-consent-label {
165 - font-size: 13px;
166 - line-height: 1.45;
167 - color: #555555;
168 - cursor: pointer;
169 -}
170 -
171 -.email-blocker .mxchat-consent-label a {
172 - color: #0073aa;
173 - text-decoration: underline;
174 -}
175 -
176 83 .email-blocker button {
177 84 background-color: #0073aa;
178 85 color: #ffffff;
179 86 padding: 12px 20px;
@@ -219,9 +126,9 @@
219 126 transform: translateY(0);
220 127 }
221 128 }
222 129
223 -.mxchat-chatbot-wrapper {
130 +#mxchat-chatbot-wrapper {
224 131 display: none;
225 132 }
226 133
227 134 /* ========================================
@@ -382,37 +289,8 @@
382 289
383 290 /* ========================================
384 291 CODE BLOCKS & INLINE CODE
385 292 ======================================== */
386 -.mxchat-table-wrapper {
387 - overflow-x: auto;
388 - margin: 12px 0;
389 - -webkit-overflow-scrolling: touch;
390 -}
391 -
392 -.mxchat-table {
393 - width: 100%;
394 - border-collapse: collapse;
395 - font-size: 0.9em;
396 - line-height: 1.4;
397 -}
398 -
399 -.mxchat-table th,
400 -.mxchat-table td {
401 - padding: 8px 12px;
402 - border: 1px solid rgba(128, 128, 128, 0.3);
403 - word-break: break-word;
404 -}
405 -
406 -.mxchat-table thead th {
407 - font-weight: 600;
408 - background: rgba(128, 128, 128, 0.15);
409 -}
410 -
411 -.mxchat-table tbody tr:nth-child(even) {
412 - background: rgba(128, 128, 128, 0.05);
413 -}
414 -
415 293 .mxchat-code-block-container {
416 294 margin: 16px 0;
417 295 border-radius: 8px;
418 296 background: rgba(255, 255, 255, 0.1);
@@ -532,9 +410,9 @@
532 410 opacity: 1;
533 411 background: none;
534 412 }
535 413
536 -.mxchat-chatbot .chat-toolbar {
414 +#mxchat-chatbot .chat-toolbar {
537 415 display: flex;
538 416 gap: 10px;
539 417 padding: 8px;
540 418 background: none;
@@ -540,9 +418,9 @@
540 418 background: none;
541 419 align-items: end;
542 420 }
543 421
544 -.mxchat-chatbot .toolbar-btn {
422 +#mxchat-chatbot .toolbar-btn {
545 423 background: none;
546 424 border: none;
547 425 padding: 0;
548 426 cursor: pointer;
@@ -556,14 +434,14 @@
556 434 min-width: 0;
557 435 box-shadow: none;
558 436 }
559 437
560 -.mxchat-chatbot .toolbar-btn svg {
438 +#mxchat-chatbot .toolbar-btn svg {
561 439 width: 100%;
562 440 height: 100%;
563 441 }
564 442
565 -.mxchat-chatbot .toolbar-btn:hover {
443 +#mxchat-chatbot .toolbar-btn:hover {
566 444 opacity: 1;
567 445 background: none;
568 446 border: none;
569 447 box-shadow: none;
@@ -568,9 +446,9 @@
568 446 border: none;
569 447 box-shadow: none;
570 448 }
571 449
572 -.mxchat-chatbot .toolbar-btn:disabled {
450 +#mxchat-chatbot .toolbar-btn:disabled {
573 451 opacity: 0.3;
574 452 cursor: not-allowed;
575 453 background: none;
576 454 border: none;
@@ -580,9 +458,9 @@
580 458 background-color: rgba(120, 115, 245, 0.2);
581 459 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.4);
582 460 }
583 461
584 -.active-perplexity-container {
462 +#active-perplexity-container {
585 463 display: flex;
586 464 align-items: center;
587 465 margin-left: 8px;
588 466 font-size: 12px;
@@ -587,13 +465,13 @@
587 465 margin-left: 8px;
588 466 font-size: 12px;
589 467 }
590 468
591 -.perplexity-search-btn {
469 +#perplexity-search-btn {
592 470 display: none;
593 471 }
594 472
595 -.perplexity-search-btn.active {
473 +#perplexity-search-btn.active {
596 474 opacity: 1;
597 475 }
598 476
599 477 /* ========================================
@@ -598,9 +476,9 @@
598 476
599 477 /* ========================================
600 478 POPULAR QUESTIONS SYSTEM
601 479 ======================================== */
602 -.mxchat-popular-questions {
480 +#mxchat-popular-questions {
603 481 padding: 0 10px 10px;
604 482 transition: all 0.3s ease;
605 483 margin-bottom: 12px;
606 484 position: relative;
@@ -626,14 +504,14 @@
626 504 transition: all 0.3s ease;
627 505 gap: 8px;
628 506 }
629 507
630 -.mxchat-popular-questions.collapsed {
508 +#mxchat-popular-questions.collapsed {
631 509 padding: 0;
632 510 margin: 0;
633 511 }
634 512
635 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
513 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container {
636 514 flex-direction: row;
637 515 justify-content: center;
638 516 align-items: center;
639 517 padding: 0;
@@ -640,17 +518,18 @@
640 518 max-height: 40px;
641 519 overflow: visible;
642 520 }
643 521
644 -.mxchat-popular-questions.collapsed .mxchat-popular-question {
522 +#mxchat-popular-questions.collapsed .mxchat-popular-question {
645 523 display: none;
646 524 }
647 525
648 -.mxchat-popular-questions.collapsed .questions-collapse-btn {
526 +#mxchat-popular-questions.collapsed .questions-collapse-btn {
649 527 display: none;
650 528 }
651 529
652 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
530 +/* MISSING - These need to be inside the container context: */
531 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-toggle-btn {
653 532 background: none;
654 533 border: none;
655 534 padding: 0;
656 535 margin: 0;
@@ -665,9 +544,9 @@
665 544 box-shadow: none;
666 545 outline: none;
667 546 }
668 547
669 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
548 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
670 549 background: none;
671 550 border: none;
672 551 padding: 0;
673 552 margin: 0px; /* Center and add bottom margin */
@@ -682,9 +561,8 @@
682 561 box-shadow: none;
683 562 outline: none;
684 563 align-self: center; /* Center in flex container */
685 564 order: -1; /* Make sure it appears first */
686 - flex-shrink: 0; /* same flex auto-minimum caveat as .mxchat-popular-question */
687 565 }
688 566
689 567 .questions-toggle-btn:hover,
690 568 .questions-collapse-btn:hover,
@@ -701,9 +579,8 @@
701 579 .questions-toggle-btn svg,
702 580 .questions-collapse-btn svg {
703 581 transition: transform 0.2s ease;
704 582 fill: none;
705 - stroke: #212121;
706 583 width: 25px;
707 584 height: 25px;
708 585 }
709 586
@@ -711,13 +588,13 @@
711 588 .questions-collapse-btn:hover svg {
712 589 opacity: 0.7;
713 590 }
714 591
715 -.mxchat-popular-questions.collapsed .questions-toggle-btn {
592 +#mxchat-popular-questions.collapsed .questions-toggle-btn {
716 593 display: flex;
717 594 }
718 595
719 -.mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
596 +#mxchat-popular-questions.has-been-collapsed .questions-collapse-btn {
720 597 display: flex;
721 598 align-self: center;
722 599 order: -1;
723 600 }
@@ -734,13 +611,8 @@
734 611 text-align: initial;
735 612 transition: all 0.3s ease;
736 613 margin-bottom: 0;
737 614 box-shadow: none;
738 - /* The defensive baseline's min-height:0 on :where(button) removes the
739 - flex automatic minimum size, so without this the column-flex scroll
740 - container compresses all questions to fit 200px and the scrollbox
741 - never appears (plan d51560). */
742 - flex-shrink: 0;
743 615 }
744 616
745 617 .mxchat-popular-question:hover {
746 618 background-color: #eaeaea;
@@ -789,41 +661,38 @@
789 661 opacity: 0;
790 662 pointer-events: none;
791 663 }
792 664
793 -.mxchat-chatbot{
665 +#mxchat-chatbot {
794 666 background: #fff;
795 667 overflow: hidden;
796 668 position: relative;
797 669 display: flex;
798 670 flex-direction: column;
671 + height: 500px;
672 + box-sizing: border-box;
799 673 flex-grow: 1;
800 - min-height: 0; /* Allow flex shrinking */
801 - box-sizing: border-box;
802 674 }
803 675
804 -.chat-container {
676 +#chat-container {
805 677 display: flex;
806 678 flex-direction: column;
807 - flex-grow: 1;
808 - min-height: 0; /* Critical for flex overflow scrolling */
809 679 height: 100%;
810 680 }
811 681
812 -.chat-box {
682 +#chat-box {
813 683 flex-grow: 1;
814 684 overflow-y: auto;
815 685 padding: 10px;
816 686 margin-bottom: 0;
817 687 font-size: 1rem;
818 - min-height: 0; /* Critical for flex overflow scrolling */
819 688 }
820 689
821 -.chat-box::-webkit-scrollbar {
690 +#chat-box::-webkit-scrollbar {
822 691 width: 5px;
823 692 }
824 693
825 -.chat-box::-webkit-scrollbar-thumb {
694 +#chat-box::-webkit-scrollbar-thumb {
826 695 background-color: #212121;
827 696 border-radius: 20px;
828 697 }
829 698
@@ -852,9 +721,9 @@
852 721 .user-message p {
853 722 margin: 0;
854 723 }
855 724
856 -.mxchat-chatbot .chat-container .chat-box .bot-message {
725 +#mxchat-chatbot #chat-container #chat-box .bot-message {
857 726 float: left;
858 727 clear: both;
859 728 border: 1px solid rgba(226, 232, 255, 0.2);
860 729 border-radius: 0 18px 18px;
@@ -862,9 +731,9 @@
862 731 color: #fff;
863 732 overflow-x: hidden;
864 733 }
865 734
866 -.mxchat-chatbot .chat-container .chat-box .agent-message {
735 +#mxchat-chatbot #chat-container #chat-box .agent-message {
867 736 text-align: left;
868 737 float: left;
869 738 clear: both;
870 739 border: 1px solid rgba(226, 232, 255, 0.2);
@@ -917,9 +786,9 @@
917 786 font-size: 14px;
918 787 text-align: center;
919 788 }
920 789
921 -.mxchat-chatbot-wrapper {
790 +#mxchat-chatbot-wrapper {
922 791 box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
923 792 border-radius: 10px;
924 793 display: flex;
925 794 flex-direction: column;
@@ -924,16 +793,14 @@
924 793 display: flex;
925 794 flex-direction: column;
926 795 height: 100%;
927 796 width: 100%;
928 - min-height: 0; /* Allow flex shrinking */
929 - overflow: hidden;
930 797 }
931 798
932 799 /* ========================================
933 800 INPUT & CONTROLS
934 801 ======================================== */
935 -.mxchat-chatbot .chat-container .input-container {
802 +#mxchat-chatbot #chat-container #input-container {
936 803 position: relative;
937 804 display: flex;
938 805 align-items: center;
939 806 padding-right: 40px;
@@ -941,9 +808,9 @@
941 808 border-radius: 10px;
942 809 margin: 0 10px 10px;
943 810 }
944 811
945 -.mxchat-chatbot .chat-container .input-container .chat-input {
812 +#mxchat-chatbot #chat-container #input-container #chat-input {
946 813 flex-grow: 1;
947 814 color: #212121;
948 815 line-height: 24px;
949 816 background: transparent;
@@ -961,97 +828,33 @@
961 828 outline: none;
962 829 border-radius: 10px;
963 830 }
964 831
965 -.chat-input::-webkit-scrollbar {
832 +#chat-input::-webkit-scrollbar {
966 833 width: 8px;
967 834 }
968 835
969 -.chat-input::-webkit-scrollbar-track {
836 +#chat-input::-webkit-scrollbar-track {
970 837 background: #f1f1f1;
971 838 border-radius: 4px;
972 839 }
973 840
974 -.chat-input::-webkit-scrollbar-thumb {
841 +#chat-input::-webkit-scrollbar-thumb {
975 842 background: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1);
976 843 border-radius: 4px;
977 844 }
978 845
979 -.chat-input::-webkit-scrollbar-thumb:hover {
846 +#chat-input::-webkit-scrollbar-thumb:hover {
980 847 background: linear-gradient(135deg, #d164ce, #6568d8, #2daeb8);
981 848 }
982 849
983 -.chat-input {
850 +#chat-input {
984 851 scrollbar-width: thin;
985 852 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
986 853 }
987 854
988 -/* Chat input character counter + soft limit feedback (plan 7091a2).
989 - Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
990 - fades in and ramps neutral -> amber -> red. The input border mirrors the same
991 - cue, and an over-limit keystroke/paste triggers a brief shake so the hard
992 - maxlength cap (plan a3fae2) is never a silent "input jumps back". */
993 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
855 +#mxchat-chatbot #chat-container #input-container #send-button {
994 856 position: absolute;
995 - bottom: 3px;
996 - right: 44px; /* clear the absolutely-positioned send button */
997 - font-size: 11px;
998 - line-height: 1;
999 - font-variant-numeric: tabular-nums;
1000 - color: #9aa0a6;
1001 - background: rgba(255, 255, 255, 0.85);
1002 - padding: 1px 5px;
1003 - border-radius: 8px;
1004 - pointer-events: none;
1005 - opacity: 0;
1006 - visibility: hidden;
1007 - transition: opacity 0.18s ease, color 0.18s ease;
1008 - z-index: 2;
1009 -}
1010 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
1011 - opacity: 1;
1012 - visibility: visible;
1013 -}
1014 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
1015 - color: #d98300; /* amber: approaching the cap */
1016 -}
1017 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
1018 - color: #d93025; /* red: at the cap */
1019 - font-weight: 600;
1020 -}
1021 -/* RTL widgets: counter on the opposite side. */
1022 -.mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
1023 -[dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
1024 - right: auto;
1025 - left: 44px;
1026 -}
1027 -/* Input border affordance mirrors the counter color. */
1028 -.mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
1029 - border-color: #f0b048;
1030 -}
1031 -.mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
1032 - border-color: #e5675c;
1033 -}
1034 -/* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
1035 -.mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
1036 - animation: mxchat-input-bump 0.2s ease;
1037 -}
1038 -@keyframes mxchat-input-bump {
1039 - 0% { transform: translateX(0); }
1040 - 25% { transform: translateX(-3px); }
1041 - 50% { transform: translateX(3px); }
1042 - 75% { transform: translateX(-2px); }
1043 - 100% { transform: translateX(0); }
1044 -}
1045 -/* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
1046 -@media (prefers-reduced-motion: reduce) {
1047 - .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
1048 - animation: none;
1049 - }
1050 -}
1051 -
1052 -.mxchat-chatbot .chat-container .input-container .send-button {
1053 - position: absolute;
1054 857 right: 10px;
1055 858 top: 50%;
1056 859 transform: translateY(-50%);
1057 860 border: none;
@@ -1070,32 +873,25 @@
1070 873 cursor: pointer;
1071 874 font-weight: 700;
1072 875 }
1073 876
1074 -.send-button svg {
877 +#send-button svg {
1075 878 width: 25px;
1076 879 height: 25px;
1077 880 pointer-events: none;
1078 881 }
1079 882
1080 -.send-button:hover {
883 +#send-button:hover {
1081 884 opacity: 0.8;
1082 885 }
1083 886
1084 -/* Stop state while a response is streaming: the send button becomes a Stop
1085 - control in place — same chrome and position, swapped glyph. Themeable hook;
1086 - the glyph's size/color are mirrored from the send icon at runtime. */
1087 -.mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
1088 - cursor: pointer;
1089 -}
1090 -
1091 -.mxchat-chatbot .spinner {
887 +#mxchat-chatbot .spinner {
1092 888 animation: rotate 2s linear infinite;
1093 889 width: 20px;
1094 890 height: 20px;
1095 891 }
1096 892
1097 -.mxchat-chatbot .spinner circle {
893 +#mxchat-chatbot .spinner circle {
1098 894 stroke: #212121;
1099 895 stroke-linecap: round;
1100 896 animation: dash 1.5s ease-in-out infinite;
1101 897 }
@@ -1127,11 +923,9 @@
1127 923 .chatbot-title-container {
1128 924 display: flex;
1129 925 align-items: center;
1130 926 justify-content: space-between;
1131 - gap: 10px;
1132 - flex: 1 1 auto;
1133 - min-width: 0;
927 + width: 100%;
1134 928 }
1135 929
1136 930 .chatbot-title-group {
1137 931 display: flex;
@@ -1140,36 +934,25 @@
1140 934 }
1141 935
1142 936 .chat-mode-indicator {
1143 937 font-size: 12px;
1144 - line-height: 1;
1145 - margin-right: 0;
1146 - padding: 4px 9px;
1147 - border-radius: 999px;
1148 - background: rgba(255, 255, 255, 0.18);
938 + margin-right: 8px;
939 + padding: 4px 8px;
940 + border-radius: 12px;
941 + background: rgba(255, 255, 255, 0.2);
1149 942 color: #ffffff;
1150 - display: inline-flex;
1151 - align-items: center;
1152 - height: 22px;
1153 - white-space: nowrap;
1154 - flex: 0 0 auto;
1155 943 }
1156 944
1157 -.floating-chatbot {
945 +#floating-chatbot {
1158 946 position: fixed;
1159 947 bottom: 25px;
1160 948 right: 25px;
1161 949 width: 375px;
1162 - /* Use viewport-aware height with fallbacks */
1163 - height: min(625px, calc(100vh - 50px)); /* 50px = 25px top + 25px bottom margin */
1164 - height: min(625px, calc(100dvh - 50px)); /* Dynamic viewport height for mobile browsers */
1165 - max-height: calc(100vh - 50px);
1166 - max-height: calc(100dvh - 50px); /* Fallback for browsers supporting dvh */
950 + height: 625px;
1167 951 box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
1168 952 border-radius: 20px;
1169 953 overflow: hidden;
1170 954 display: flex;
1171 - flex-direction: column;
1172 955 z-index: 100000;
1173 956 transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
1174 957 transform: translateY(20%);
1175 958 opacity: 0;
@@ -1175,42 +958,24 @@
1175 958 opacity: 0;
1176 959 pointer-events: none;
1177 960 }
1178 961
1179 -.floating-chatbot.visible {
962 +#floating-chatbot.visible {
1180 963 transform: translateY(0);
1181 964 opacity: 1;
1182 965 pointer-events: auto;
1183 966 }
1184 967
1185 -/* ========================================
1186 - EMBEDDED CHATBOT (Shortcode)
1187 - ======================================== */
1188 -/* Embedded chatbots are NOT inside .floating-chatbot wrapper */
1189 -/* Apply fixed height like floating widget so quick questions overlay properly */
1190 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) {
1191 - height: 500px;
1192 - max-height: 500px;
1193 -}
1194 -
1195 -/* Hide the minimize/exit button for embedded chatbots - it doesn't make sense */
1196 -.mxchat-chatbot-wrapper:not(.floating-chatbot .mxchat-chatbot-wrapper) .exit-chat {
1197 - display: none !important;
1198 -}
1199 -
1200 -.floating-chatbot-button.hidden,
968 +#floating-chatbot-button.hidden,
1201 969 .exit-chat span {
1202 970 display: none !important;
1203 971 }
1204 972
1205 -.chatbot-top-bar button.exit-chat:hover {
1206 - background: rgba(255, 255, 255, 0.12);
1207 -}
1208 973 .visible {
1209 974 display: flex;
1210 975 }
1211 976
1212 -.floating-chatbot-button {
977 +#floating-chatbot-button {
1213 978 transition: opacity 1s ease-in-out;
1214 979 font-size: 1.25rem;
1215 980 position: fixed;
1216 981 bottom: 30px;
@@ -1228,14 +993,9 @@
1228 993 z-index: 100000;
1229 994 display: flex;
1230 995 }
1231 996
1232 -.floating-chatbot-button:focus-visible {
1233 - outline: 3px solid #7873f5;
1234 - outline-offset: 3px;
1235 -}
1236 -
1237 -.floating-chatbot-button img {
997 +#floating-chatbot-button img {
1238 998 max-width: 100%;
1239 999 max-height: 100%;
1240 1000 width: auto;
1241 1001 height: auto;
@@ -1244,51 +1004,34 @@
1244 1004 .chatbot-top-bar {
1245 1005 background: #212121;
1246 1006 }
1247 1007
1248 -.mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1008 +#mxchat-chatbot-wrapper .chatbot-top-bar button.exit-chat {
1249 1009 background: transparent;
1250 - /* v3.2.15 (plan-52fd4c): explicit guards against host-theme button rules.
1251 - Margin deliberately untouched — .exit-chat relies on margin-left:auto. */
1252 - background-image: none;
1253 1010 border: none;
1254 1011 opacity: 0.8;
1255 1012 padding: 0;
1256 - width: 32px;
1257 - height: 32px;
1258 - min-width: 32px;
1259 - min-height: 32px;
1260 - max-width: none;
1261 - flex: 0 0 auto;
1262 - border-radius: 6px;
1263 - font-family: inherit;
1264 - text-transform: none;
1265 - text-shadow: none;
1266 - appearance: none;
1267 - -webkit-appearance: none;
1268 - transition: opacity 0.15s ease, background 0.15s ease;
1013 + min-width: 20px;
1269 1014 }
1270 1015
1271 -.mxchat-chatbot-wrapper .chatbot-top-bar {
1016 +#mxchat-chatbot-wrapper .chatbot-top-bar {
1272 1017 cursor: pointer;
1273 1018 color: #fff;
1274 - padding: 8px 12px;
1275 - min-height: 48px;
1276 - gap: 8px;
1019 + padding: 10px;
1277 1020 border-top-left-radius: 10px;
1278 1021 border-top-right-radius: 10px;
1279 1022 display: flex;
1280 1023 justify-content: space-between;
1281 - align-items: center;
1024 + align-items: start;
1282 1025 }
1283 1026
1284 -.mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1285 - font-size: 15px;
1286 - line-height: 1.2;
1287 - padding: 0;
1027 +#mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1028 + font-size: 16px;
1029 + line-height: 25px;
1030 + padding: 10px;
1288 1031 margin: 0;
1289 1032 font-family: 'Plus Jakarta Sans', sans-serif;
1290 - font-weight: 600;
1033 + font-weight: bold;
1291 1034 }
1292 1035
1293 1036 .exit-chat {
1294 1037 border: none;
@@ -1293,92 +1036,56 @@
1293 1036 .exit-chat {
1294 1037 border: none;
1295 1038 background: transparent;
1296 1039 cursor: pointer;
1297 - display: inline-flex;
1040 + display: flex;
1298 1041 align-items: center;
1299 1042 justify-content: center;
1300 - padding: 0;
1043 + padding: 5px;
1301 1044 margin-left: auto;
1302 1045 opacity: 0.8;
1303 - width: 32px;
1304 - height: 32px;
1305 - min-width: 32px;
1306 - flex: 0 0 auto;
1046 + min-width: 20px;
1307 1047 }
1308 1048
1309 1049 .exit-chat svg {
1310 - width: 18px;
1311 - height: 18px;
1312 - fill: none;
1313 - stroke: currentColor;
1050 + fill: white;
1051 + width: 24px;
1052 + height: 24px;
1053 + transform: rotate(270deg);
1314 1054 }
1315 1055
1316 -.mxchat-chatbot-wrapper .chatbot-footer {
1056 +#mxchat-chatbot-wrapper .chatbot-footer {
1317 1057 text-align: center;
1318 1058 padding-bottom: 10px;
1319 1059 font-size: 0.85em;
1320 1060 }
1321 1061
1322 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1062 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice {
1323 1063 font-size: 12px;
1324 1064 margin: 0;
1325 1065 color: #71717a;
1326 1066 }
1327 1067
1328 -.mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1068 +#mxchat-chatbot-wrapper .chatbot-footer .privacy-notice a {
1329 1069 color: #0073aa;
1330 1070 text-decoration: underline;
1331 1071 font-size: 12px;
1332 1072 }
1333 1073
1334 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1074 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by {
1335 1075 text-decoration: none;
1336 1076 color: inherit;
1337 1077 font-weight: 700;
1338 1078 }
1339 1079
1340 -.mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1080 +#mxchat-chatbot-wrapper .chatbot-footer .powered-by span {
1341 1081 text-decoration: underline;
1342 1082 }
1343 1083
1344 1084 /* ========================================
1345 - INIT LOADER (shown while chat initializes)
1346 - ======================================== */
1347 -.mxchat-init-loader {
1348 - display: flex;
1349 - align-items: center;
1350 - justify-content: center;
1351 - flex-grow: 1;
1352 - min-height: 0;
1353 - animation: fadeIn 0.3s ease-in-out;
1354 -}
1355 -
1356 -.mxchat-init-loader-dots {
1357 - display: flex;
1358 - gap: 8px;
1359 -}
1360 -
1361 -.mxchat-init-loader-dots .dot {
1362 - width: 8px;
1363 - height: 8px;
1364 - border-radius: 50%;
1365 - background-color: #888;
1366 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1367 -}
1368 -
1369 -.mxchat-init-loader-dots .dot:nth-child(1) {
1370 - animation-delay: -0.32s;
1371 -}
1372 -
1373 -.mxchat-init-loader-dots .dot:nth-child(2) {
1374 - animation-delay: -0.16s;
1375 -}
1376 -
1377 -/* ========================================
1378 1085 THINKING DOTS ANIMATION
1379 1086 ======================================== */
1380 -.chat-box .bot-message.temporary-message .thinking-dots-container {
1087 +#chat-box .bot-message.temporary-message .thinking-dots-container {
1381 1088 display: flex;
1382 1089 justify-content: center;
1383 1090 align-items: center;
1384 1091 overflow: hidden;
@@ -1387,9 +1094,9 @@
1387 1094 z-index: 1;
1388 1095 flex-shrink: 0;
1389 1096 }
1390 1097
1391 -.chat-box .bot-message.temporary-message .thinking-dots {
1098 +#chat-box .bot-message.temporary-message .thinking-dots {
1392 1099 display: flex;
1393 1100 justify-content: center;
1394 1101 align-items: center;
1395 1102 height: 90%;
@@ -1396,9 +1103,9 @@
1396 1103 gap: 5px;
1397 1104 flex-shrink: 0;
1398 1105 }
1399 1106
1400 -.chat-box .bot-message.temporary-message .thinking-dots .dot {
1107 +#chat-box .bot-message.temporary-message .thinking-dots .dot {
1401 1108 height: 6px;
1402 1109 width: 6px;
1403 1110 margin: 0 3px;
1404 1111 background-color: #fff;
@@ -1403,21 +1110,21 @@
1403 1110 margin: 0 3px;
1404 1111 background-color: #fff;
1405 1112 border-radius: 50%;
1406 1113 display: inline-block;
1407 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1114 + animation: bounce 1.4s ease-in-out infinite both;
1408 1115 vertical-align: middle;
1409 1116 }
1410 1117
1411 -.chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1118 +#chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
1412 1119 animation-delay: -0.32s;
1413 1120 }
1414 1121
1415 -.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) {
1416 1123 animation-delay: -0.16s;
1417 1124 }
1418 1125
1419 -@keyframes mxchat-dot-bounce {
1126 +@keyframes bounce {
1420 1127 0%, 100%, 80% {
1421 1128 transform: scale(1);
1422 1129 }
1423 1130 40% {
@@ -1427,9 +1134,9 @@
1427 1134
1428 1135 /* ========================================
1429 1136 PRE-CHAT MESSAGE
1430 1137 ======================================== */
1431 -.pre-chat-message {
1138 +#pre-chat-message {
1432 1139 position: fixed;
1433 1140 bottom: 85px;
1434 1141 right: 30px;
1435 1142 background-color: #fff;
@@ -1444,9 +1151,9 @@
1444 1151 display: none;
1445 1152 margin-bottom: 10px;
1446 1153 }
1447 1154
1448 -.pre-chat-message .close-pre-chat-message {
1155 +#pre-chat-message .close-pre-chat-message {
1449 1156 position: absolute;
1450 1157 top: -6px;
1451 1158 right: -6px;
1452 1159 background-color: #ccc;
@@ -1466,60 +1173,8 @@
1466 1173 line-height: 1;
1467 1174 }
1468 1175
1469 1176 /* ========================================
1470 - VIEWPORT HEIGHT CONSTRAINTS
1471 - Handles bookmarks bar, browser zoom, and smaller screens
1472 - ======================================== */
1473 -@media screen and (max-height: 700px) {
1474 - .floating-chatbot {
1475 - bottom: 15px;
1476 - height: calc(100vh - 30px);
1477 - height: calc(100dvh - 30px);
1478 - max-height: calc(100vh - 30px);
1479 - max-height: calc(100dvh - 30px);
1480 - }
1481 -
1482 - .floating-chatbot-button {
1483 - bottom: 20px;
1484 - }
1485 -
1486 - .pre-chat-message {
1487 - bottom: 75px;
1488 - }
1489 -}
1490 -
1491 -@media screen and (max-height: 550px) {
1492 - .floating-chatbot {
1493 - bottom: 10px;
1494 - height: calc(100vh - 20px);
1495 - height: calc(100dvh - 20px);
1496 - max-height: calc(100vh - 20px);
1497 - max-height: calc(100dvh - 20px);
1498 - }
1499 -
1500 - /* Reduce padding in tight spaces */
1501 - .mxchat-popular-questions {
1502 - padding: 0 8px 5px;
1503 - margin-bottom: 8px;
1504 - }
1505 -
1506 - .mxchat-popular-question {
1507 - padding: 8px 12px;
1508 - font-size: 13px;
1509 - line-height: 20px;
1510 - }
1511 -
1512 - .mxchat-chatbot .chat-container .input-container {
1513 - margin: 0 8px 8px;
1514 - }
1515 -
1516 - .mxchat-chatbot-wrapper .chatbot-footer {
1517 - padding-bottom: 5px;
1518 - }
1519 -}
1520 -
1521 -/* ========================================
1522 1177 MOBILE RESPONSIVE
1523 1178 ======================================== */
1524 1179 @media screen and (max-width: 782px) {
1525 1180 .mxchat-search-results {
@@ -1551,14 +1206,14 @@
1551 1206 width: 22px;
1552 1207 height: 22px;
1553 1208 }
1554 1209
1555 - .pre-chat-message {
1210 + #pre-chat-message {
1556 1211 bottom: 70px;
1557 1212 right: 15px;
1558 1213 }
1559 1214
1560 - .chat-input {
1215 + #chat-input {
1561 1216 width: calc(100% - 70px);
1562 1217 }
1563 1218
1564 1219 .bot-message,
@@ -1566,41 +1221,30 @@
1566 1221 padding: 10px;
1567 1222 max-width: 95%;
1568 1223 }
1569 1224
1570 - .floating-chatbot-button {
1225 + #floating-chatbot-button {
1571 1226 bottom: 15px;
1572 1227 right: 10px;
1573 1228 }
1574 1229
1575 - .floating-chatbot {
1576 - width: calc(100vw - 16px);
1577 - /* Use multiple fallbacks for maximum browser compatibility */
1578 - height: calc(100vh - 16px); /* Fallback */
1579 - height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1580 - height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1581 - max-height: calc(100vh - 16px);
1582 - max-height: calc(100dvh - 16px);
1230 + #floating-chatbot {
1231 + width: 100vw;
1232 + height: calc(var(--vh, 1vh) * 100);
1583 1233 margin: 0;
1584 1234 padding: 0;
1585 1235 position: fixed;
1586 - bottom: 8px;
1587 - top: auto;
1588 - left: 8px;
1589 - right: 8px;
1590 - border-radius: 16px;
1591 - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1236 + bottom: 0;
1237 + top: 0;
1238 + left: 0;
1239 + right: 0;
1240 + border-radius: 0;
1592 1241 }
1593 1242
1594 - .floating-chatbot .mxchat-chatbot-wrapper {
1595 - border-radius: 16px;
1596 - overflow: hidden;
1243 + #mxchat-chatbot-wrapper .chatbot-top-bar {
1244 + border-top-left-radius: 0;
1245 + border-top-right-radius: 0;
1597 1246 }
1598 -
1599 - .mxchat-chatbot-wrapper .chatbot-top-bar {
1600 - border-top-left-radius: 16px;
1601 - border-top-right-radius: 16px;
1602 - }
1603 1247 }
1604 1248
1605 1249
1606 1250
@@ -1734,106 +1378,8 @@
1734 1378 height: auto;
1735 1379 border-radius: 0 0 8px 8px;
1736 1380 }
1737 1381
1738 -/* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1739 - Caption colors INHERIT from the message bubble (same idiom as
1740 - .mxchat-product-card) so the embed reads correctly on any widget theme —
1741 - bot bubbles commonly force their own text color. */
1742 -.mxchat-youtube-embed {
1743 - max-width: 340px;
1744 - margin-top: 8px;
1745 -}
1746 -
1747 -.mxchat-youtube-facade {
1748 - position: relative;
1749 - display: block;
1750 - width: 100%;
1751 - padding: 0;
1752 - margin: 0;
1753 - border: none;
1754 - background: #000;
1755 - cursor: pointer;
1756 - aspect-ratio: 16 / 9;
1757 - border-radius: 10px;
1758 - overflow: hidden;
1759 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1760 -}
1761 -
1762 -.mxchat-youtube-thumb {
1763 - width: 100%;
1764 - height: 100%;
1765 - object-fit: cover;
1766 - display: block;
1767 - opacity: 0.92;
1768 - transition: opacity 0.2s;
1769 -}
1770 -
1771 -.mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1772 - opacity: 1;
1773 -}
1774 -
1775 -.mxchat-youtube-play {
1776 - position: absolute;
1777 - top: 50%;
1778 - left: 50%;
1779 - transform: translate(-50%, -50%);
1780 - display: flex;
1781 - align-items: center;
1782 - justify-content: center;
1783 - width: 52px;
1784 - height: 52px;
1785 - border-radius: 50%;
1786 - background: rgba(0, 0, 0, 0.72);
1787 - color: #fff;
1788 - transition: transform 0.2s, background 0.2s;
1789 -}
1790 -
1791 -.mxchat-youtube-play svg {
1792 - margin-left: 3px;
1793 -}
1794 -
1795 -.mxchat-youtube-facade:hover .mxchat-youtube-play {
1796 - transform: translate(-50%, -50%) scale(1.08);
1797 - background: rgba(0, 0, 0, 0.85);
1798 -}
1799 -
1800 -.mxchat-youtube-iframe {
1801 - width: 100%;
1802 - aspect-ratio: 16 / 9;
1803 - border: none;
1804 - display: block;
1805 - border-radius: 10px;
1806 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1807 -}
1808 -
1809 -.mxchat-youtube-caption {
1810 - display: flex;
1811 - align-items: baseline;
1812 - justify-content: space-between;
1813 - gap: 10px;
1814 - padding: 8px 2px 0;
1815 - background: transparent;
1816 - color: inherit;
1817 -}
1818 -
1819 -.mxchat-youtube-title {
1820 - font-size: 13px;
1821 - font-weight: 600;
1822 - color: inherit;
1823 - overflow: hidden;
1824 - white-space: nowrap;
1825 - text-overflow: ellipsis;
1826 -}
1827 -
1828 -.mxchat-youtube-link {
1829 - font-size: 12px;
1830 - white-space: nowrap;
1831 - color: inherit;
1832 - opacity: 0.85;
1833 - text-decoration: underline;
1834 -}
1835 -
1836 1382 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1837 1383 padding: 10px;
1838 1384 }
1839 1385
@@ -1842,9 +1388,9 @@
1842 1388 }
1843 1389
1844 1390
1845 1391 /* This selector with more context - showing the collapse button in certain states */
1846 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1392 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn {
1847 1393 background: none;
1848 1394 border: none;
1849 1395 padding: 0;
1850 1396 margin: 0px;
@@ -1862,15 +1408,15 @@
1862 1408 order: -1; /* THIS IS MISSING */
1863 1409 }
1864 1410
1865 1411 /* ALL hover states - these are MISSING from your new CSS */
1866 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1412 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:hover {
1867 1413 background: none;
1868 1414 border: none;
1869 1415 box-shadow: none;
1870 1416 }
1871 1417
1872 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1418 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:focus {
1873 1419 outline: none;
1874 1420 background: none;
1875 1421 border: none;
1876 1422 box-shadow: none;
@@ -1875,9 +1421,9 @@
1875 1421 border: none;
1876 1422 box-shadow: none;
1877 1423 }
1878 1424
1879 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1425 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn:active {
1880 1426 background: none;
1881 1427 border: none;
1882 1428 box-shadow: none;
1883 1429 }
@@ -1882,385 +1428,24 @@
1882 1428 box-shadow: none;
1883 1429 }
1884 1430
1885 1431 /* SVG styles - these are MISSING */
1886 -.mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1432 +#mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1887 1433 fill: none;
1888 - stroke: #212121;
1889 1434 transition: transform 0.2s ease;
1890 1435 width: 25px;
1891 1436 height: 25px;
1892 1437 }
1893 1438
1894 -.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 {
1895 1440 opacity: 0.7;
1896 1441 }
1897 1442
1898 1443 /* THE CRITICAL DISPLAY RULE - this shows when it's been collapsed before */
1899 -.mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1444 +#mxchat-popular-questions.has-been-collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1900 1445 display: flex;
1901 1446 }
1902 1447
1903 1448 /* Hide when actually collapsed */
1904 -.mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1449 +#mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1905 1450 display: none;
1906 -}
1907 -
1908 -/* ============================================================
1909 - Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1910 - Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1911 - mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1912 -
1913 - v3.2.10: explicit `order` rules pin the visual order
1914 - title (0) | kebab (1) | down-arrow (2)
1915 - so the down-arrow is always the rightmost icon regardless of source
1916 - order or which sibling has margin-left:auto.
1917 - ============================================================ */
1918 -.mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1919 -.mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1920 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1921 -
1922 -.mxchat-header-menu-wrap {
1923 - position: relative;
1924 - display: inline-flex;
1925 - align-items: center;
1926 - margin-left: auto; /* push kebab + arrow group to the right edge */
1927 -}
1928 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1929 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1930 - margin-left: 4px; /* even, snug gap between kebab and close */
1931 -}
1932 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1933 - background: rgba(255, 255, 255, 0.12);
1934 - opacity: 1;
1935 - outline: none;
1936 -}
1937 -/* v3.2.15 (plan-52fd4c): kebab rules scoped under the wrapper + explicit
1938 - guards on every property a theme's button/link rules commonly set
1939 - (font-family, margin, appearance, text-transform, background-image),
1940 - after a customer site's theme visibly mangled the dropdown. */
1941 -.mxchat-chatbot-wrapper .mxchat-header-btn {
1942 - border: none;
1943 - background: transparent;
1944 - background-image: none;
1945 - cursor: pointer;
1946 - display: inline-flex;
1947 - align-items: center;
1948 - justify-content: center;
1949 - padding: 0;
1950 - margin: 0;
1951 - opacity: 0.8;
1952 - color: #fff;
1953 - font-family: inherit;
1954 - text-transform: none;
1955 - text-shadow: none;
1956 - appearance: none;
1957 - -webkit-appearance: none;
1958 - transition: opacity 0.15s ease, background 0.15s ease;
1959 - border-radius: 6px;
1960 - line-height: 0;
1961 - width: 32px;
1962 - height: 32px;
1963 - min-width: 32px;
1964 - min-height: 32px;
1965 - max-width: none;
1966 - flex: 0 0 auto;
1967 -}
1968 -.mxchat-chatbot-wrapper .mxchat-header-btn:hover,
1969 -.mxchat-chatbot-wrapper .mxchat-header-btn:focus {
1970 - opacity: 1;
1971 - background: rgba(255, 255, 255, 0.12);
1972 - outline: none;
1973 -}
1974 -.mxchat-chatbot-wrapper .mxchat-header-btn[aria-expanded="true"] {
1975 - opacity: 1;
1976 - background: rgba(255, 255, 255, 0.12);
1977 -}
1978 -.mxchat-chatbot-wrapper .mxchat-menu-trigger svg {
1979 - width: 18px;
1980 - height: 18px;
1981 -}
1982 -
1983 -.mxchat-chatbot-wrapper .mxchat-header-menu {
1984 - position: absolute;
1985 - top: calc(100% + 6px);
1986 - right: 0;
1987 - min-width: 220px;
1988 - margin: 0;
1989 - background: var(--mxchat-menu-bg, #ffffff);
1990 - color: var(--mxchat-menu-fg, #1a1a1a);
1991 - border: 1px solid rgba(127, 127, 127, 0.20);
1992 - border-radius: 10px;
1993 - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1994 - padding: 4px;
1995 - font-family: inherit;
1996 - z-index: 99;
1997 - opacity: 0;
1998 - transform: translateY(-4px);
1999 - pointer-events: none;
2000 - transition: opacity 0.12s ease, transform 0.12s ease;
2001 -}
2002 -.mxchat-chatbot-wrapper .mxchat-header-menu.is-open {
2003 - opacity: 1;
2004 - transform: translateY(0);
2005 - pointer-events: auto;
2006 -}
2007 -.mxchat-chatbot-wrapper .mxchat-header-menu[hidden] {
2008 - display: none;
2009 -}
2010 -.mxchat-chatbot-wrapper .mxchat-menu-item {
2011 - display: flex;
2012 - align-items: center;
2013 - gap: 10px;
2014 - width: 100%;
2015 - padding: 8px 12px;
2016 - margin: 0;
2017 - min-height: 40px;
2018 - border: none;
2019 - background: transparent;
2020 - background-image: none;
2021 - color: inherit;
2022 - font-family: inherit;
2023 - font-size: 14px;
2024 - line-height: 1.3;
2025 - letter-spacing: normal;
2026 - text-align: left;
2027 - text-transform: none;
2028 - text-shadow: none;
2029 - white-space: nowrap;
2030 - appearance: none;
2031 - -webkit-appearance: none;
2032 - cursor: pointer;
2033 - border-radius: 6px;
2034 - transition: background 0.12s ease;
2035 - text-decoration: none;
2036 - box-sizing: border-box;
2037 -}
2038 -.mxchat-chatbot-wrapper .mxchat-menu-item:hover,
2039 -.mxchat-chatbot-wrapper .mxchat-menu-item:focus {
2040 - background: rgba(127, 127, 127, 0.18);
2041 - outline: none;
2042 -}
2043 -.mxchat-menu-item-icon {
2044 - display: inline-flex;
2045 - align-items: center;
2046 - justify-content: center;
2047 - width: 16px;
2048 - height: 16px;
2049 - color: inherit;
2050 - opacity: 0.85;
2051 - flex-shrink: 0;
2052 -}
2053 -.mxchat-menu-item-icon svg {
2054 - width: 16px;
2055 - height: 16px;
2056 - display: block;
2057 -}
2058 -.mxchat-menu-item-label {
2059 - flex: 1;
2060 - color: inherit;
2061 -}
2062 -
2063 -/* RTL — flip the dropdown anchor edge */
2064 -[dir="rtl"] .mxchat-header-menu,
2065 -.mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
2066 - right: auto;
2067 - left: 0;
2068 -}
2069 -
2070 -/* ============================================================================
2071 - Satisfaction rating (v3.2.6 — polished per plan-141a12)
2072 - Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
2073 - ========================================================================= */
2074 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
2075 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
2076 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
2077 - clear: both;
2078 - float: left;
2079 - max-width: 92%;
2080 - box-sizing: border-box;
2081 -}
2082 -
2083 -/* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
2084 - inline style; the inner rating component supplies its own padding + layout. */
2085 -.mxchat-rating-bot-bubble {
2086 - padding: 0;
2087 - overflow: visible;
2088 -}
2089 -
2090 -.mxchat-rating-prompt {
2091 - display: flex;
2092 - flex-direction: column;
2093 - align-items: stretch;
2094 - gap: 10px;
2095 - padding: 10px 14px;
2096 - margin: 10px 0;
2097 - font-size: 14px;
2098 - color: inherit;
2099 -}
2100 -
2101 -.mxchat-rating-question {
2102 - color: inherit;
2103 - opacity: 0.85;
2104 - font-weight: 500;
2105 -}
2106 -
2107 -.mxchat-rating-actions {
2108 - display: flex;
2109 - align-items: center;
2110 - gap: 8px;
2111 -}
2112 -
2113 -.mxchat-rating-buttons {
2114 - display: inline-flex;
2115 - gap: 6px;
2116 -}
2117 -
2118 -.mxchat-rating-btn {
2119 - display: inline-flex;
2120 - align-items: center;
2121 - justify-content: center;
2122 - width: 32px;
2123 - height: 32px;
2124 - border-radius: 8px;
2125 - background: transparent;
2126 - border: none;
2127 - color: inherit;
2128 - opacity: 0.6;
2129 - cursor: pointer;
2130 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
2131 - padding: 0;
2132 -}
2133 -
2134 -.mxchat-rating-btn:hover {
2135 - opacity: 1;
2136 - transform: scale(1.12);
2137 - background: rgba(255, 255, 255, 0.08);
2138 -}
2139 -
2140 -.mxchat-rating-btn:focus-visible {
2141 - opacity: 1;
2142 - outline: 2px solid currentColor;
2143 - outline-offset: 2px;
2144 -}
2145 -
2146 -.mxchat-rating-btn svg {
2147 - pointer-events: none;
2148 -}
2149 -
2150 -.mxchat-rating-dismiss {
2151 - width: 24px;
2152 - height: 24px;
2153 - border-radius: 6px;
2154 - background: transparent;
2155 - border: none;
2156 - color: inherit;
2157 - opacity: 0.45;
2158 - cursor: pointer;
2159 - font-size: 18px;
2160 - line-height: 1;
2161 - transition: opacity 0.18s ease, background-color 0.18s ease;
2162 -}
2163 -
2164 -.mxchat-rating-dismiss:hover {
2165 - opacity: 0.9;
2166 - background: rgba(255, 255, 255, 0.08);
2167 -}
2168 -
2169 -/* Feedback panel that replaces the prompt after a rating is clicked */
2170 -.mxchat-rating-feedback {
2171 - padding: 12px 14px;
2172 - margin: 10px 0;
2173 - display: flex;
2174 - flex-direction: column;
2175 - gap: 10px;
2176 - color: inherit;
2177 - animation: mxchat-rating-fade-in 0.22s ease;
2178 -}
2179 -
2180 -.mxchat-rating-feedback-label {
2181 - font-size: 13px;
2182 - opacity: 0.85;
2183 - font-weight: 500;
2184 -}
2185 -
2186 -.mxchat-rating-feedback-input {
2187 - width: 100%;
2188 - box-sizing: border-box;
2189 - padding: 8px 10px;
2190 - border: 1px solid rgba(255, 255, 255, 0.25);
2191 - border-radius: 8px;
2192 - font-size: 14px;
2193 - font-family: inherit;
2194 - resize: vertical;
2195 - background: rgba(255, 255, 255, 0.08);
2196 - color: inherit;
2197 -}
2198 -
2199 -.mxchat-rating-feedback-input:focus {
2200 - outline: none;
2201 - border-color: rgba(255, 255, 255, 0.45);
2202 - background: rgba(255, 255, 255, 0.15);
2203 -}
2204 -
2205 -.mxchat-rating-feedback-actions {
2206 - display: flex;
2207 - justify-content: flex-end;
2208 - gap: 8px;
2209 -}
2210 -
2211 -.mxchat-rating-skip,
2212 -.mxchat-rating-submit {
2213 - padding: 6px 14px;
2214 - border-radius: 8px;
2215 - font-size: 13px;
2216 - font-weight: 500;
2217 - cursor: pointer;
2218 - border: none;
2219 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2220 -}
2221 -
2222 -.mxchat-rating-skip {
2223 - background: transparent;
2224 - color: inherit;
2225 - opacity: 0.6;
2226 -}
2227 -
2228 -.mxchat-rating-skip:hover {
2229 - opacity: 1;
2230 - background: rgba(255, 255, 255, 0.08);
2231 -}
2232 -
2233 -.mxchat-rating-submit {
2234 - /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2235 - syncRatingBubbleColors() in chat-script.js paints the real bot colors
2236 - straight onto this button (inline) from the bubble's COMPUTED style, so
2237 - it adapts to both the inline color pickers AND the mxchat-theme AI
2238 - customizer. These var()/literal values are the no-JS safety net — the
2239 - literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2240 - own (no white-on-white). Longhand background-color (not the `background`
2241 - shorthand) because Chromium resolves inherited custom properties
2242 - unreliably inside the shorthand. Do NOT use currentColor here — setting
2243 - `color` would re-poison the background to the same value. */
2244 - background-color: var(--mxchat-bot-fg, #212121);
2245 - color: var(--mxchat-bot-bg, #ffffff);
2246 -}
2247 -
2248 -.mxchat-rating-submit:hover {
2249 - transform: translateY(-1px);
2250 - opacity: 0.9;
2251 -}
2252 -
2253 -.mxchat-rating-saved {
2254 - padding: 10px 14px;
2255 - margin: 10px 0;
2256 - font-size: 13px;
2257 - font-weight: 500;
2258 - text-align: center;
2259 - color: inherit;
2260 - animation: mxchat-rating-fade-in 0.22s ease;
2261 -}
2262 -
2263 -@keyframes mxchat-rating-fade-in {
2264 - from { opacity: 0; transform: translateY(4px); }
2265 - to { opacity: 1; transform: translateY(0); }
2266 1451 }