PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.0.7
MxChat – AI Chatbot & Content Generation for WordPress v3.0.7
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/chat-style.css +35 -633 3.2.143.0.7 View file →
@@ -289,37 +289,8 @@
289 289
290 290 /* ========================================
291 291 CODE BLOCKS & INLINE CODE
292 292 ======================================== */
293 -.mxchat-table-wrapper {
294 - overflow-x: auto;
295 - margin: 12px 0;
296 - -webkit-overflow-scrolling: touch;
297 -}
298 -
299 -.mxchat-table {
300 - width: 100%;
301 - border-collapse: collapse;
302 - font-size: 0.9em;
303 - line-height: 1.4;
304 -}
305 -
306 -.mxchat-table th,
307 -.mxchat-table td {
308 - padding: 8px 12px;
309 - border: 1px solid rgba(128, 128, 128, 0.3);
310 - word-break: break-word;
311 -}
312 -
313 -.mxchat-table thead th {
314 - font-weight: 600;
315 - background: rgba(128, 128, 128, 0.15);
316 -}
317 -
318 -.mxchat-table tbody tr:nth-child(even) {
319 - background: rgba(128, 128, 128, 0.05);
320 -}
321 -
322 293 .mxchat-code-block-container {
323 294 margin: 16px 0;
324 295 border-radius: 8px;
325 296 background: rgba(255, 255, 255, 0.1);
@@ -608,9 +579,8 @@
608 579 .questions-toggle-btn svg,
609 580 .questions-collapse-btn svg {
610 581 transition: transform 0.2s ease;
611 582 fill: none;
612 - stroke: #212121;
613 583 width: 25px;
614 584 height: 25px;
615 585 }
616 586
@@ -886,72 +856,8 @@
886 856 scrollbar-width: thin;
887 857 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
888 858 }
889 859
890 -/* Chat input character counter + soft limit feedback (plan 7091a2).
891 - Language-neutral: numbers + color only. Hidden until ~80% of the cap, then
892 - fades in and ramps neutral -> amber -> red. The input border mirrors the same
893 - cue, and an over-limit keystroke/paste triggers a brief shake so the hard
894 - maxlength cap (plan a3fae2) is never a silent "input jumps back". */
895 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
896 - position: absolute;
897 - bottom: 3px;
898 - right: 44px; /* clear the absolutely-positioned send button */
899 - font-size: 11px;
900 - line-height: 1;
901 - font-variant-numeric: tabular-nums;
902 - color: #9aa0a6;
903 - background: rgba(255, 255, 255, 0.85);
904 - padding: 1px 5px;
905 - border-radius: 8px;
906 - pointer-events: none;
907 - opacity: 0;
908 - visibility: hidden;
909 - transition: opacity 0.18s ease, color 0.18s ease;
910 - z-index: 2;
911 -}
912 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-visible {
913 - opacity: 1;
914 - visibility: visible;
915 -}
916 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-warn {
917 - color: #d98300; /* amber: approaching the cap */
918 -}
919 -.mxchat-chatbot .chat-container .input-container .mxchat-char-counter.is-full {
920 - color: #d93025; /* red: at the cap */
921 - font-weight: 600;
922 -}
923 -/* RTL widgets: counter on the opposite side. */
924 -.mxchat-chatbot[dir="rtl"] .chat-container .input-container .mxchat-char-counter,
925 -[dir="rtl"] .mxchat-chatbot .chat-container .input-container .mxchat-char-counter {
926 - right: auto;
927 - left: 44px;
928 -}
929 -/* Input border affordance mirrors the counter color. */
930 -.mxchat-chatbot .chat-container .input-container.mxchat-input-near-limit {
931 - border-color: #f0b048;
932 -}
933 -.mxchat-chatbot .chat-container .input-container.mxchat-input-at-limit {
934 - border-color: #e5675c;
935 -}
936 -/* Soft "you hit the edge" bump when an over-limit keystroke/paste is rejected. */
937 -.mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
938 - animation: mxchat-input-bump 0.2s ease;
939 -}
940 -@keyframes mxchat-input-bump {
941 - 0% { transform: translateX(0); }
942 - 25% { transform: translateX(-3px); }
943 - 50% { transform: translateX(3px); }
944 - 75% { transform: translateX(-2px); }
945 - 100% { transform: translateX(0); }
946 -}
947 -/* Respect reduced-motion: drop the shake; the red border/counter still signals the cap. */
948 -@media (prefers-reduced-motion: reduce) {
949 - .mxchat-chatbot .chat-container .input-container.mxchat-input-bump {
950 - animation: none;
951 - }
952 -}
953 -
954 860 .mxchat-chatbot .chat-container .input-container .send-button {
955 861 position: absolute;
956 862 right: 10px;
957 863 top: 50%;
@@ -982,15 +888,8 @@
982 888 .send-button:hover {
983 889 opacity: 0.8;
984 890 }
985 891
986 -/* Stop state while a response is streaming: the send button becomes a Stop
987 - control in place — same chrome and position, swapped glyph. Themeable hook;
988 - the glyph's size/color are mirrored from the send icon at runtime. */
989 -.mxchat-chatbot .chat-container .input-container .send-button.mxchat-stop-mode {
990 - cursor: pointer;
991 -}
992 -
993 892 .mxchat-chatbot .spinner {
994 893 animation: rotate 2s linear infinite;
995 894 width: 20px;
996 895 height: 20px;
@@ -1029,11 +928,9 @@
1029 928 .chatbot-title-container {
1030 929 display: flex;
1031 930 align-items: center;
1032 931 justify-content: space-between;
1033 - gap: 10px;
1034 - flex: 1 1 auto;
1035 - min-width: 0;
932 + width: 100%;
1036 933 }
1037 934
1038 935 .chatbot-title-group {
1039 936 display: flex;
@@ -1042,19 +939,13 @@
1042 939 }
1043 940
1044 941 .chat-mode-indicator {
1045 942 font-size: 12px;
1046 - line-height: 1;
1047 - margin-right: 0;
1048 - padding: 4px 9px;
1049 - border-radius: 999px;
1050 - background: rgba(255, 255, 255, 0.18);
943 + margin-right: 8px;
944 + padding: 4px 8px;
945 + border-radius: 12px;
946 + background: rgba(255, 255, 255, 0.2);
1051 947 color: #ffffff;
1052 - display: inline-flex;
1053 - align-items: center;
1054 - height: 22px;
1055 - white-space: nowrap;
1056 - flex: 0 0 auto;
1057 948 }
1058 949
1059 950 .floating-chatbot {
1060 951 position: fixed;
@@ -1104,9 +995,9 @@
1104 995 display: none !important;
1105 996 }
1106 997
1107 998 .chatbot-top-bar button.exit-chat:hover {
1108 - background: rgba(255, 255, 255, 0.12);
999 + background: none;
1109 1000 }
1110 1001 .visible {
1111 1002 display: flex;
1112 1003 }
@@ -1130,13 +1021,8 @@
1130 1021 z-index: 100000;
1131 1022 display: flex;
1132 1023 }
1133 1024
1134 -.floating-chatbot-button:focus-visible {
1135 - outline: 3px solid #7873f5;
1136 - outline-offset: 3px;
1137 -}
1138 -
1139 1025 .floating-chatbot-button img {
1140 1026 max-width: 100%;
1141 1027 max-height: 100%;
1142 1028 width: auto;
@@ -1151,36 +1037,29 @@
1151 1037 background: transparent;
1152 1038 border: none;
1153 1039 opacity: 0.8;
1154 1040 padding: 0;
1155 - width: 32px;
1156 - height: 32px;
1157 - min-width: 32px;
1158 - flex: 0 0 auto;
1159 - border-radius: 6px;
1160 - transition: opacity 0.15s ease, background 0.15s ease;
1041 + min-width: 20px;
1161 1042 }
1162 1043
1163 1044 .mxchat-chatbot-wrapper .chatbot-top-bar {
1164 1045 cursor: pointer;
1165 1046 color: #fff;
1166 - padding: 8px 12px;
1167 - min-height: 48px;
1168 - gap: 8px;
1047 + padding: 10px;
1169 1048 border-top-left-radius: 10px;
1170 1049 border-top-right-radius: 10px;
1171 1050 display: flex;
1172 1051 justify-content: space-between;
1173 - align-items: center;
1052 + align-items: start;
1174 1053 }
1175 1054
1176 1055 .mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1177 - font-size: 15px;
1178 - line-height: 1.2;
1179 - padding: 0;
1056 + font-size: 16px;
1057 + line-height: 25px;
1058 + padding: 10px;
1180 1059 margin: 0;
1181 1060 font-family: 'Plus Jakarta Sans', sans-serif;
1182 - font-weight: 600;
1061 + font-weight: bold;
1183 1062 }
1184 1063
1185 1064 .exit-chat {
1186 1065 border: none;
@@ -1185,25 +1064,22 @@
1185 1064 .exit-chat {
1186 1065 border: none;
1187 1066 background: transparent;
1188 1067 cursor: pointer;
1189 - display: inline-flex;
1068 + display: flex;
1190 1069 align-items: center;
1191 1070 justify-content: center;
1192 - padding: 0;
1071 + padding: 5px;
1193 1072 margin-left: auto;
1194 1073 opacity: 0.8;
1195 - width: 32px;
1196 - height: 32px;
1197 - min-width: 32px;
1198 - flex: 0 0 auto;
1074 + min-width: 20px;
1199 1075 }
1200 1076
1201 1077 .exit-chat svg {
1202 - width: 18px;
1203 - height: 18px;
1204 - fill: none;
1205 - stroke: currentColor;
1078 + fill: white;
1079 + width: 24px;
1080 + height: 24px;
1081 + transform: rotate(270deg);
1206 1082 }
1207 1083
1208 1084 .mxchat-chatbot-wrapper .chatbot-footer {
1209 1085 text-align: center;
@@ -1233,41 +1109,8 @@
1233 1109 text-decoration: underline;
1234 1110 }
1235 1111
1236 1112 /* ========================================
1237 - INIT LOADER (shown while chat initializes)
1238 - ======================================== */
1239 -.mxchat-init-loader {
1240 - display: flex;
1241 - align-items: center;
1242 - justify-content: center;
1243 - flex-grow: 1;
1244 - min-height: 0;
1245 - animation: fadeIn 0.3s ease-in-out;
1246 -}
1247 -
1248 -.mxchat-init-loader-dots {
1249 - display: flex;
1250 - gap: 8px;
1251 -}
1252 -
1253 -.mxchat-init-loader-dots .dot {
1254 - width: 8px;
1255 - height: 8px;
1256 - border-radius: 50%;
1257 - background-color: #888;
1258 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1259 -}
1260 -
1261 -.mxchat-init-loader-dots .dot:nth-child(1) {
1262 - animation-delay: -0.32s;
1263 -}
1264 -
1265 -.mxchat-init-loader-dots .dot:nth-child(2) {
1266 - animation-delay: -0.16s;
1267 -}
1268 -
1269 -/* ========================================
1270 1113 THINKING DOTS ANIMATION
1271 1114 ======================================== */
1272 1115 .chat-box .bot-message.temporary-message .thinking-dots-container {
1273 1116 display: flex;
@@ -1295,9 +1138,9 @@
1295 1138 margin: 0 3px;
1296 1139 background-color: #fff;
1297 1140 border-radius: 50%;
1298 1141 display: inline-block;
1299 - animation: mxchat-dot-bounce 1.4s ease-in-out infinite both;
1142 + animation: bounce 1.4s ease-in-out infinite both;
1300 1143 vertical-align: middle;
1301 1144 }
1302 1145
1303 1146 .chat-box .bot-message.temporary-message .thinking-dots .dot:first-child {
@@ -1307,9 +1150,9 @@
1307 1150 .chat-box .bot-message.temporary-message .thinking-dots .dot:nth-child(2) {
1308 1151 animation-delay: -0.16s;
1309 1152 }
1310 1153
1311 -@keyframes mxchat-dot-bounce {
1154 +@keyframes bounce {
1312 1155 0%, 100%, 80% {
1313 1156 transform: scale(1);
1314 1157 }
1315 1158 40% {
@@ -1464,34 +1307,28 @@
1464 1307 right: 10px;
1465 1308 }
1466 1309
1467 1310 .floating-chatbot {
1468 - width: calc(100vw - 16px);
1311 + width: 100vw;
1469 1312 /* Use multiple fallbacks for maximum browser compatibility */
1470 - height: calc(100vh - 16px); /* Fallback */
1471 - height: calc(var(--vh, 1vh) * 100 - 16px); /* JS-set custom property fallback */
1472 - height: calc(100dvh - 16px); /* Modern dynamic viewport height */
1473 - max-height: calc(100vh - 16px);
1474 - max-height: calc(100dvh - 16px);
1313 + height: 100vh; /* Fallback */
1314 + height: calc(var(--vh, 1vh) * 100); /* JS-set custom property fallback */
1315 + height: 100dvh; /* Modern dynamic viewport height */
1316 + max-height: 100vh;
1317 + max-height: 100dvh;
1475 1318 margin: 0;
1476 1319 padding: 0;
1477 1320 position: fixed;
1478 - bottom: 8px;
1479 - top: auto;
1480 - left: 8px;
1481 - right: 8px;
1482 - border-radius: 16px;
1483 - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1321 + bottom: 0;
1322 + top: 0;
1323 + left: 0;
1324 + right: 0;
1325 + border-radius: 0;
1484 1326 }
1485 1327
1486 - .floating-chatbot .mxchat-chatbot-wrapper {
1487 - border-radius: 16px;
1488 - overflow: hidden;
1489 - }
1490 -
1491 1328 .mxchat-chatbot-wrapper .chatbot-top-bar {
1492 - border-top-left-radius: 16px;
1493 - border-top-right-radius: 16px;
1329 + border-top-left-radius: 0;
1330 + border-top-right-radius: 0;
1494 1331 }
1495 1332 }
1496 1333
1497 1334
@@ -1626,106 +1463,8 @@
1626 1463 height: auto;
1627 1464 border-radius: 0 0 8px 8px;
1628 1465 }
1629 1466
1630 -/* Consent-safe YouTube embed (click-to-load facade → nocookie iframe).
1631 - Caption colors INHERIT from the message bubble (same idiom as
1632 - .mxchat-product-card) so the embed reads correctly on any widget theme —
1633 - bot bubbles commonly force their own text color. */
1634 -.mxchat-youtube-embed {
1635 - max-width: 340px;
1636 - margin-top: 8px;
1637 -}
1638 -
1639 -.mxchat-youtube-facade {
1640 - position: relative;
1641 - display: block;
1642 - width: 100%;
1643 - padding: 0;
1644 - margin: 0;
1645 - border: none;
1646 - background: #000;
1647 - cursor: pointer;
1648 - aspect-ratio: 16 / 9;
1649 - border-radius: 10px;
1650 - overflow: hidden;
1651 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1652 -}
1653 -
1654 -.mxchat-youtube-thumb {
1655 - width: 100%;
1656 - height: 100%;
1657 - object-fit: cover;
1658 - display: block;
1659 - opacity: 0.92;
1660 - transition: opacity 0.2s;
1661 -}
1662 -
1663 -.mxchat-youtube-facade:hover .mxchat-youtube-thumb {
1664 - opacity: 1;
1665 -}
1666 -
1667 -.mxchat-youtube-play {
1668 - position: absolute;
1669 - top: 50%;
1670 - left: 50%;
1671 - transform: translate(-50%, -50%);
1672 - display: flex;
1673 - align-items: center;
1674 - justify-content: center;
1675 - width: 52px;
1676 - height: 52px;
1677 - border-radius: 50%;
1678 - background: rgba(0, 0, 0, 0.72);
1679 - color: #fff;
1680 - transition: transform 0.2s, background 0.2s;
1681 -}
1682 -
1683 -.mxchat-youtube-play svg {
1684 - margin-left: 3px;
1685 -}
1686 -
1687 -.mxchat-youtube-facade:hover .mxchat-youtube-play {
1688 - transform: translate(-50%, -50%) scale(1.08);
1689 - background: rgba(0, 0, 0, 0.85);
1690 -}
1691 -
1692 -.mxchat-youtube-iframe {
1693 - width: 100%;
1694 - aspect-ratio: 16 / 9;
1695 - border: none;
1696 - display: block;
1697 - border-radius: 10px;
1698 - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
1699 -}
1700 -
1701 -.mxchat-youtube-caption {
1702 - display: flex;
1703 - align-items: baseline;
1704 - justify-content: space-between;
1705 - gap: 10px;
1706 - padding: 8px 2px 0;
1707 - background: transparent;
1708 - color: inherit;
1709 -}
1710 -
1711 -.mxchat-youtube-title {
1712 - font-size: 13px;
1713 - font-weight: 600;
1714 - color: inherit;
1715 - overflow: hidden;
1716 - white-space: nowrap;
1717 - text-overflow: ellipsis;
1718 -}
1719 -
1720 -.mxchat-youtube-link {
1721 - font-size: 12px;
1722 - white-space: nowrap;
1723 - color: inherit;
1724 - opacity: 0.85;
1725 - text-decoration: underline;
1726 -}
1727 -
1728 1467 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1729 1468 padding: 10px;
1730 1469 }
1731 1470
@@ -1776,9 +1515,8 @@
1776 1515
1777 1516 /* SVG styles - these are MISSING */
1778 1517 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1779 1518 fill: none;
1780 - stroke: #212121;
1781 1519 transition: transform 0.2s ease;
1782 1520 width: 25px;
1783 1521 height: 25px;
1784 1522 }
@@ -1794,341 +1532,5 @@
1794 1532
1795 1533 /* Hide when actually collapsed */
1796 1534 .mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1797 1535 display: none;
1798 -}
1799 -
1800 -/* ============================================================
1801 - Header overflow menu — 3-dot kebab + dropdown (v3.2.9 / v3.2.10)
1802 - Lives in .chatbot-top-bar to the LEFT of .exit-chat. Visual treatment
1803 - mirrors .exit-chat: transparent, white-on-dark, 0.8 opacity, 5px pad.
1804 -
1805 - v3.2.10: explicit `order` rules pin the visual order
1806 - title (0) | kebab (1) | down-arrow (2)
1807 - so the down-arrow is always the rightmost icon regardless of source
1808 - order or which sibling has margin-left:auto.
1809 - ============================================================ */
1810 -.mxchat-chatbot-wrapper .chatbot-top-bar > .chatbot-title-container { order: 0; }
1811 -.mxchat-chatbot-wrapper .chatbot-top-bar > .mxchat-header-menu-wrap { order: 1; }
1812 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat { order: 2; }
1813 -
1814 -.mxchat-header-menu-wrap {
1815 - position: relative;
1816 - display: inline-flex;
1817 - align-items: center;
1818 - margin-left: auto; /* push kebab + arrow group to the right edge */
1819 -}
1820 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap ~ .exit-chat,
1821 -.mxchat-chatbot-wrapper .chatbot-top-bar .mxchat-header-menu-wrap + .exit-chat {
1822 - margin-left: 4px; /* even, snug gap between kebab and close */
1823 -}
1824 -.mxchat-chatbot-wrapper .chatbot-top-bar > .exit-chat:focus {
1825 - background: rgba(255, 255, 255, 0.12);
1826 - opacity: 1;
1827 - outline: none;
1828 -}
1829 -.mxchat-header-btn {
1830 - border: none;
1831 - background: transparent;
1832 - cursor: pointer;
1833 - display: inline-flex;
1834 - align-items: center;
1835 - justify-content: center;
1836 - padding: 0;
1837 - opacity: 0.8;
1838 - color: #fff;
1839 - transition: opacity 0.15s ease, background 0.15s ease;
1840 - border-radius: 6px;
1841 - line-height: 0;
1842 - width: 32px;
1843 - height: 32px;
1844 - min-width: 32px;
1845 - flex: 0 0 auto;
1846 -}
1847 -.mxchat-header-btn:hover,
1848 -.mxchat-header-btn:focus {
1849 - opacity: 1;
1850 - background: rgba(255, 255, 255, 0.12);
1851 - outline: none;
1852 -}
1853 -.mxchat-header-btn[aria-expanded="true"] {
1854 - opacity: 1;
1855 - background: rgba(255, 255, 255, 0.12);
1856 -}
1857 -.mxchat-menu-trigger svg {
1858 - width: 18px;
1859 - height: 18px;
1860 -}
1861 -
1862 -.mxchat-header-menu {
1863 - position: absolute;
1864 - top: calc(100% + 6px);
1865 - right: 0;
1866 - min-width: 220px;
1867 - background: var(--mxchat-menu-bg, #ffffff);
1868 - color: var(--mxchat-menu-fg, #1a1a1a);
1869 - border: 1px solid rgba(127, 127, 127, 0.20);
1870 - border-radius: 10px;
1871 - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.10);
1872 - padding: 4px;
1873 - z-index: 5;
1874 - opacity: 0;
1875 - transform: translateY(-4px);
1876 - pointer-events: none;
1877 - transition: opacity 0.12s ease, transform 0.12s ease;
1878 -}
1879 -.mxchat-header-menu.is-open {
1880 - opacity: 1;
1881 - transform: translateY(0);
1882 - pointer-events: auto;
1883 -}
1884 -.mxchat-header-menu[hidden] {
1885 - display: none;
1886 -}
1887 -.mxchat-menu-item {
1888 - display: flex;
1889 - align-items: center;
1890 - gap: 10px;
1891 - width: 100%;
1892 - padding: 8px 12px;
1893 - min-height: 40px;
1894 - border: none;
1895 - background: transparent;
1896 - color: inherit;
1897 - font-size: 14px;
1898 - line-height: 1.3;
1899 - text-align: left;
1900 - cursor: pointer;
1901 - border-radius: 6px;
1902 - transition: background 0.12s ease;
1903 - text-decoration: none;
1904 - box-sizing: border-box;
1905 -}
1906 -.mxchat-menu-item:hover,
1907 -.mxchat-menu-item:focus {
1908 - background: rgba(127, 127, 127, 0.18);
1909 - outline: none;
1910 -}
1911 -.mxchat-menu-item-icon {
1912 - display: inline-flex;
1913 - align-items: center;
1914 - justify-content: center;
1915 - width: 16px;
1916 - height: 16px;
1917 - color: inherit;
1918 - opacity: 0.85;
1919 - flex-shrink: 0;
1920 -}
1921 -.mxchat-menu-item-icon svg {
1922 - width: 16px;
1923 - height: 16px;
1924 - display: block;
1925 -}
1926 -.mxchat-menu-item-label {
1927 - flex: 1;
1928 - color: inherit;
1929 -}
1930 -
1931 -/* RTL — flip the dropdown anchor edge */
1932 -[dir="rtl"] .mxchat-header-menu,
1933 -.mxchat-chatbot-wrapper[dir="rtl"] .mxchat-header-menu {
1934 - right: auto;
1935 - left: 0;
1936 -}
1937 -
1938 -/* ============================================================================
1939 - Satisfaction rating (v3.2.6 — polished per plan-141a12)
1940 - Theme-adaptive via currentColor + inherit. Clean slate — old rules removed.
1941 - ========================================================================= */
1942 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-prompt,
1943 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-feedback,
1944 -.mxchat-chatbot .chat-container .chat-box .mxchat-rating-saved {
1945 - clear: both;
1946 - float: left;
1947 - max-width: 92%;
1948 - box-sizing: border-box;
1949 -}
1950 -
1951 -/* Theme-adaptive wrapper — .bot-message carries the user's custom bg/color via
1952 - inline style; the inner rating component supplies its own padding + layout. */
1953 -.mxchat-rating-bot-bubble {
1954 - padding: 0;
1955 - overflow: visible;
1956 -}
1957 -
1958 -.mxchat-rating-prompt {
1959 - display: flex;
1960 - flex-direction: column;
1961 - align-items: stretch;
1962 - gap: 10px;
1963 - padding: 10px 14px;
1964 - margin: 10px 0;
1965 - font-size: 14px;
1966 - color: inherit;
1967 -}
1968 -
1969 -.mxchat-rating-question {
1970 - color: inherit;
1971 - opacity: 0.85;
1972 - font-weight: 500;
1973 -}
1974 -
1975 -.mxchat-rating-actions {
1976 - display: flex;
1977 - align-items: center;
1978 - gap: 8px;
1979 -}
1980 -
1981 -.mxchat-rating-buttons {
1982 - display: inline-flex;
1983 - gap: 6px;
1984 -}
1985 -
1986 -.mxchat-rating-btn {
1987 - display: inline-flex;
1988 - align-items: center;
1989 - justify-content: center;
1990 - width: 32px;
1991 - height: 32px;
1992 - border-radius: 8px;
1993 - background: transparent;
1994 - border: none;
1995 - color: inherit;
1996 - opacity: 0.6;
1997 - cursor: pointer;
1998 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease, color 0.18s ease;
1999 - padding: 0;
2000 -}
2001 -
2002 -.mxchat-rating-btn:hover {
2003 - opacity: 1;
2004 - transform: scale(1.12);
2005 - background: rgba(255, 255, 255, 0.08);
2006 -}
2007 -
2008 -.mxchat-rating-btn:focus-visible {
2009 - opacity: 1;
2010 - outline: 2px solid currentColor;
2011 - outline-offset: 2px;
2012 -}
2013 -
2014 -.mxchat-rating-btn svg {
2015 - pointer-events: none;
2016 -}
2017 -
2018 -.mxchat-rating-dismiss {
2019 - width: 24px;
2020 - height: 24px;
2021 - border-radius: 6px;
2022 - background: transparent;
2023 - border: none;
2024 - color: inherit;
2025 - opacity: 0.45;
2026 - cursor: pointer;
2027 - font-size: 18px;
2028 - line-height: 1;
2029 - transition: opacity 0.18s ease, background-color 0.18s ease;
2030 -}
2031 -
2032 -.mxchat-rating-dismiss:hover {
2033 - opacity: 0.9;
2034 - background: rgba(255, 255, 255, 0.08);
2035 -}
2036 -
2037 -/* Feedback panel that replaces the prompt after a rating is clicked */
2038 -.mxchat-rating-feedback {
2039 - padding: 12px 14px;
2040 - margin: 10px 0;
2041 - display: flex;
2042 - flex-direction: column;
2043 - gap: 10px;
2044 - color: inherit;
2045 - animation: mxchat-rating-fade-in 0.22s ease;
2046 -}
2047 -
2048 -.mxchat-rating-feedback-label {
2049 - font-size: 13px;
2050 - opacity: 0.85;
2051 - font-weight: 500;
2052 -}
2053 -
2054 -.mxchat-rating-feedback-input {
2055 - width: 100%;
2056 - box-sizing: border-box;
2057 - padding: 8px 10px;
2058 - border: 1px solid rgba(255, 255, 255, 0.25);
2059 - border-radius: 8px;
2060 - font-size: 14px;
2061 - font-family: inherit;
2062 - resize: vertical;
2063 - background: rgba(255, 255, 255, 0.08);
2064 - color: inherit;
2065 -}
2066 -
2067 -.mxchat-rating-feedback-input:focus {
2068 - outline: none;
2069 - border-color: rgba(255, 255, 255, 0.45);
2070 - background: rgba(255, 255, 255, 0.15);
2071 -}
2072 -
2073 -.mxchat-rating-feedback-actions {
2074 - display: flex;
2075 - justify-content: flex-end;
2076 - gap: 8px;
2077 -}
2078 -
2079 -.mxchat-rating-skip,
2080 -.mxchat-rating-submit {
2081 - padding: 6px 14px;
2082 - border-radius: 8px;
2083 - font-size: 13px;
2084 - font-weight: 500;
2085 - cursor: pointer;
2086 - border: none;
2087 - transition: opacity 0.18s ease, transform 0.18s ease, background-color 0.18s ease;
2088 -}
2089 -
2090 -.mxchat-rating-skip {
2091 - background: transparent;
2092 - color: inherit;
2093 - opacity: 0.6;
2094 -}
2095 -
2096 -.mxchat-rating-skip:hover {
2097 - opacity: 1;
2098 - background: rgba(255, 255, 255, 0.08);
2099 -}
2100 -
2101 -.mxchat-rating-submit {
2102 - /* Filled "primary" pill: fill = the bot font color, label = the bubble bg.
2103 - syncRatingBubbleColors() in chat-script.js paints the real bot colors
2104 - straight onto this button (inline) from the bubble's COMPUTED style, so
2105 - it adapts to both the inline color pickers AND the mxchat-theme AI
2106 - customizer. These var()/literal values are the no-JS safety net — the
2107 - literal fallbacks (#212121 fill / #ffffff label) stay legible on their
2108 - own (no white-on-white). Longhand background-color (not the `background`
2109 - shorthand) because Chromium resolves inherited custom properties
2110 - unreliably inside the shorthand. Do NOT use currentColor here — setting
2111 - `color` would re-poison the background to the same value. */
2112 - background-color: var(--mxchat-bot-fg, #212121);
2113 - color: var(--mxchat-bot-bg, #ffffff);
2114 -}
2115 -
2116 -.mxchat-rating-submit:hover {
2117 - transform: translateY(-1px);
2118 - opacity: 0.9;
2119 -}
2120 -
2121 -.mxchat-rating-saved {
2122 - padding: 10px 14px;
2123 - margin: 10px 0;
2124 - font-size: 13px;
2125 - font-weight: 500;
2126 - text-align: center;
2127 - color: inherit;
2128 - animation: mxchat-rating-fade-in 0.22s ease;
2129 -}
2130 -
2131 -@keyframes mxchat-rating-fade-in {
2132 - from { opacity: 0; transform: translateY(4px); }
2133 - to { opacity: 1; transform: translateY(0); }
2134 1536 }