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