PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.1.4
MxChat – AI Chatbot & Content Generation for WordPress v3.1.4
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/chat-style.css +20 -583 3.2.143.1.4 View file →
@@ -608,9 +608,8 @@
608 608 .questions-toggle-btn svg,
609 609 .questions-collapse-btn svg {
610 610 transition: transform 0.2s ease;
611 611 fill: none;
612 - stroke: #212121;
613 612 width: 25px;
614 613 height: 25px;
615 614 }
616 615
@@ -886,72 +885,8 @@
886 885 scrollbar-width: thin;
887 886 scrollbar-color: linear-gradient(135deg, #fa73e6, #7873f5, #3ac9d1) #f1f1f1;
888 887 }
889 888
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 889 .mxchat-chatbot .chat-container .input-container .send-button {
955 890 position: absolute;
956 891 right: 10px;
957 892 top: 50%;
@@ -982,15 +917,8 @@
982 917 .send-button:hover {
983 918 opacity: 0.8;
984 919 }
985 920
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 921 .mxchat-chatbot .spinner {
994 922 animation: rotate 2s linear infinite;
995 923 width: 20px;
996 924 height: 20px;
@@ -1029,11 +957,9 @@
1029 957 .chatbot-title-container {
1030 958 display: flex;
1031 959 align-items: center;
1032 960 justify-content: space-between;
1033 - gap: 10px;
1034 - flex: 1 1 auto;
1035 - min-width: 0;
961 + width: 100%;
1036 962 }
1037 963
1038 964 .chatbot-title-group {
1039 965 display: flex;
@@ -1042,19 +968,13 @@
1042 968 }
1043 969
1044 970 .chat-mode-indicator {
1045 971 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);
972 + margin-right: 8px;
973 + padding: 4px 8px;
974 + border-radius: 12px;
975 + background: rgba(255, 255, 255, 0.2);
1051 976 color: #ffffff;
1052 - display: inline-flex;
1053 - align-items: center;
1054 - height: 22px;
1055 - white-space: nowrap;
1056 - flex: 0 0 auto;
1057 977 }
1058 978
1059 979 .floating-chatbot {
1060 980 position: fixed;
@@ -1104,9 +1024,9 @@
1104 1024 display: none !important;
1105 1025 }
1106 1026
1107 1027 .chatbot-top-bar button.exit-chat:hover {
1108 - background: rgba(255, 255, 255, 0.12);
1028 + background: none;
1109 1029 }
1110 1030 .visible {
1111 1031 display: flex;
1112 1032 }
@@ -1130,13 +1050,8 @@
1130 1050 z-index: 100000;
1131 1051 display: flex;
1132 1052 }
1133 1053
1134 -.floating-chatbot-button:focus-visible {
1135 - outline: 3px solid #7873f5;
1136 - outline-offset: 3px;
1137 -}
1138 -
1139 1054 .floating-chatbot-button img {
1140 1055 max-width: 100%;
1141 1056 max-height: 100%;
1142 1057 width: auto;
@@ -1151,36 +1066,29 @@
1151 1066 background: transparent;
1152 1067 border: none;
1153 1068 opacity: 0.8;
1154 1069 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;
1070 + min-width: 20px;
1161 1071 }
1162 1072
1163 1073 .mxchat-chatbot-wrapper .chatbot-top-bar {
1164 1074 cursor: pointer;
1165 1075 color: #fff;
1166 - padding: 8px 12px;
1167 - min-height: 48px;
1168 - gap: 8px;
1076 + padding: 10px;
1169 1077 border-top-left-radius: 10px;
1170 1078 border-top-right-radius: 10px;
1171 1079 display: flex;
1172 1080 justify-content: space-between;
1173 - align-items: center;
1081 + align-items: start;
1174 1082 }
1175 1083
1176 1084 .mxchat-chatbot-wrapper .chatbot-top-bar .chatbot-title {
1177 - font-size: 15px;
1178 - line-height: 1.2;
1179 - padding: 0;
1085 + font-size: 16px;
1086 + line-height: 25px;
1087 + padding: 10px;
1180 1088 margin: 0;
1181 1089 font-family: 'Plus Jakarta Sans', sans-serif;
1182 - font-weight: 600;
1090 + font-weight: bold;
1183 1091 }
1184 1092
1185 1093 .exit-chat {
1186 1094 border: none;
@@ -1185,25 +1093,22 @@
1185 1093 .exit-chat {
1186 1094 border: none;
1187 1095 background: transparent;
1188 1096 cursor: pointer;
1189 - display: inline-flex;
1097 + display: flex;
1190 1098 align-items: center;
1191 1099 justify-content: center;
1192 - padding: 0;
1100 + padding: 5px;
1193 1101 margin-left: auto;
1194 1102 opacity: 0.8;
1195 - width: 32px;
1196 - height: 32px;
1197 - min-width: 32px;
1198 - flex: 0 0 auto;
1103 + min-width: 20px;
1199 1104 }
1200 1105
1201 1106 .exit-chat svg {
1202 - width: 18px;
1203 - height: 18px;
1204 - fill: none;
1205 - stroke: currentColor;
1107 + fill: white;
1108 + width: 24px;
1109 + height: 24px;
1110 + transform: rotate(270deg);
1206 1111 }
1207 1112
1208 1113 .mxchat-chatbot-wrapper .chatbot-footer {
1209 1114 text-align: center;
@@ -1233,41 +1138,8 @@
1233 1138 text-decoration: underline;
1234 1139 }
1235 1140
1236 1141 /* ========================================
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 1142 THINKING DOTS ANIMATION
1271 1143 ======================================== */
1272 1144 .chat-box .bot-message.temporary-message .thinking-dots-container {
1273 1145 display: flex;
@@ -1626,106 +1498,8 @@
1626 1498 height: auto;
1627 1499 border-radius: 0 0 8px 8px;
1628 1500 }
1629 1501
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 1502 #widget_icon, #widget_icon_2, #widget_icon_3, #widget_icon_5, #widget_icon_4, #widget_icon_6, #widget_icon_7 {
1729 1503 padding: 10px;
1730 1504 }
1731 1505
@@ -1776,9 +1550,8 @@
1776 1550
1777 1551 /* SVG styles - these are MISSING */
1778 1552 .mxchat-popular-questions .mxchat-popular-questions-container .questions-collapse-btn svg {
1779 1553 fill: none;
1780 - stroke: #212121;
1781 1554 transition: transform 0.2s ease;
1782 1555 width: 25px;
1783 1556 height: 25px;
1784 1557 }
@@ -1794,341 +1567,5 @@
1794 1567
1795 1568 /* Hide when actually collapsed */
1796 1569 .mxchat-popular-questions.collapsed .mxchat-popular-questions-container .questions-collapse-btn {
1797 1570 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 1571 }