PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.4.6
MxChat – AI Chatbot & Content Generation for WordPress v2.4.6
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/knowledge-style.css +35 -1617 3.2.212.4.6 View file →
@@ -266,19 +266,8 @@
266 266 border: 1px solid #e5e5e5;
267 267 text-align: center;
268 268 }
269 269
270 -/* YouTube import: multi-line radio/description stack reads left-aligned,
271 - unlike the single-row URL forms the centered default was made for. */
272 -#mxchat-youtube-input-area {
273 - text-align: left;
274 -}
275 -
276 -/* PDF Upload Area */
277 -#mxchat-pdf-upload-area input[type="file"] {
278 - margin-bottom: 12px;
279 -}
280 -
281 270 .mxchat-url-input-group {
282 271 display: flex;
283 272 gap: 12px;
284 273 max-width: 800px;
@@ -610,19 +599,8 @@
610 599 input:checked + .mxchat-toggle-slider:before {
611 600 transform: translateX(26px);
612 601 }
613 602
614 -/* Group-level ACF toggle, mixed state: some fields in the group are excluded.
615 - Knob parks mid-track on a washed-out tint of the brand gradient until the
616 - owner picks a side (plan bf57e0). */
617 -input:indeterminate + .mxchat-toggle-slider {
618 - background: linear-gradient(135deg, #e3b8dd, #b9b6e8);
619 -}
620 -
621 -input:indeterminate + .mxchat-toggle-slider:before {
622 - transform: translateX(13px);
623 -}
624 -
625 603 .mxchat-toggle-label {
626 604 font-size: 14px;
627 605 color: #333;
628 606 }
@@ -682,9 +660,9 @@
682 660 }
683 661
684 662 /* ===== Search ===== */
685 663 .mxchat-search-form {
686 - display: flex;
664 + position: relative;
687 665 }
688 666
689 667 .mxchat-search-group {
690 668 position: relative;
@@ -702,42 +680,8 @@
702 680 padding-left: 40px;
703 681 width: 300px;
704 682 }
705 683
706 -/* ADDED 2.5.6: Content Type Filter Styles */
707 -.mxchat-filter-group {
708 - position: relative;
709 - display: flex;
710 - align-items: center;
711 - margin-left: 12px;
712 -}
713 -
714 -.mxchat-filter-group select {
715 - padding: 8px 32px 8px 12px;
716 - border: 1px solid #ddd;
717 - border-radius: 8px;
718 - background: white;
719 - color: #333;
720 - font-size: 14px;
721 - cursor: pointer;
722 - transition: all 0.2s ease;
723 - appearance: none;
724 - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
725 - background-repeat: no-repeat;
726 - background-position: right 12px center;
727 -}
728 -
729 -.mxchat-filter-group select:hover {
730 - border-color: #7873f5;
731 - box-shadow: 0 2px 8px rgba(120, 115, 245, 0.1);
732 -}
733 -
734 -.mxchat-filter-group select:focus {
735 - outline: none;
736 - border-color: #7873f5;
737 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
738 -}
739 -
740 684 /* ===== Buttons ===== */
741 685 .mxchat-button-primary {
742 686 background: linear-gradient(135deg, #fa73e6, #7873f5);
743 687 border: none;
@@ -907,14 +851,8 @@
907 851 text-align: left;
908 852 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
909 853 }
910 854
911 -/* Hide ID column (now second column, after checkbox column) */
912 -.mxchat-records-table th:nth-child(2),
913 -.mxchat-records-table td:nth-child(2) {
914 - display: none;
915 -}
916 -
917 855 .mxchat-records-table td {
918 856 padding: 15px;
919 857 border-top: 1px solid rgba(120, 115, 245, 0.1);
920 858 vertical-align: top;
@@ -924,110 +862,11 @@
924 862 background: rgba(120, 115, 245, 0.03);
925 863 }
926 864
927 865 .mxchat-content-cell {
928 - max-width: 600px;
866 + max-width: 400px;
929 867 }
930 868
931 -/* ===== Accordion Styles ===== */
932 -.mxchat-accordion-wrapper {
933 - width: 100%;
934 -}
935 -
936 -.mxchat-content-preview {
937 - display: flex;
938 - align-items: center;
939 - gap: 12px;
940 - padding: 8px 12px;
941 - border-radius: 6px;
942 - transition: all 0.2s ease;
943 -}
944 -
945 -/* Only make it look clickable if there's an expand button */
946 -.mxchat-content-preview:has(.mxchat-expand-toggle) {
947 - cursor: pointer;
948 -}
949 -
950 -.mxchat-content-preview:has(.mxchat-expand-toggle):hover {
951 - background: rgba(120, 115, 245, 0.04);
952 -}
953 -
954 -.mxchat-content-preview .preview-text {
955 - flex: 1;
956 - font-size: 14px;
957 - line-height: 1.6;
958 - color: #333;
959 - overflow: hidden;
960 -}
961 -
962 -.mxchat-expand-toggle {
963 - flex-shrink: 0;
964 - width: 28px;
965 - height: 28px;
966 - border: none;
967 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
968 - border-radius: 6px;
969 - cursor: pointer;
970 - display: inline-flex;
971 - align-items: center;
972 - justify-content: center;
973 - transition: all 0.3s ease;
974 - padding: 0;
975 -}
976 -
977 -.mxchat-expand-toggle:hover {
978 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
979 - transform: scale(1.05);
980 -}
981 -
982 -.mxchat-expand-toggle .dashicons {
983 - font-size: 18px;
984 - width: 18px;
985 - height: 18px;
986 - color: #7873f5;
987 - transition: transform 0.3s ease;
988 -}
989 -
990 -.mxchat-expand-toggle.expanded .dashicons {
991 - transform: rotate(180deg);
992 -}
993 -
994 -.mxchat-content-full {
995 - margin-top: 12px;
996 - padding: 16px;
997 - background: rgba(120, 115, 245, 0.03);
998 - border-radius: 8px;
999 - border-left: 3px solid #7873f5;
1000 - animation: slideDown 0.3s ease;
1001 -}
1002 -
1003 -@keyframes slideDown {
1004 - from {
1005 - opacity: 0;
1006 - max-height: 0;
1007 - transform: translateY(-10px);
1008 - }
1009 - to {
1010 - opacity: 1;
1011 - max-height: 1000px;
1012 - transform: translateY(0);
1013 - }
1014 -}
1015 -
1016 -.mxchat-content-full .content-view {
1017 - font-size: 14px;
1018 - line-height: 1.6;
1019 - color: #333;
1020 -}
1021 -
1022 -.mxchat-content-full .content-view p {
1023 - margin: 0 0 12px 0;
1024 -}
1025 -
1026 -.mxchat-content-full .content-view p:last-child {
1027 - margin-bottom: 0;
1028 -}
1029 -
1030 869 .mxchat-url-cell a {
1031 870 color: #7873f5;
1032 871 text-decoration: none;
1033 872 display: flex;
@@ -1044,9 +883,13 @@
1044 883 display: flex;
1045 884 gap: 8px;
1046 885 }
1047 886
1048 -/* Legacy content-view styling (now within accordion) */
887 +.content-view {
888 + font-size: 14px;
889 + line-height: 1.5;
890 +}
891 +
1049 892 .content-edit {
1050 893 width: 100%;
1051 894 min-height: 100px;
1052 895 border: 1px solid #ddd;
@@ -1222,12 +1065,8 @@
1222 1065 .rtl input:checked + .mxchat-toggle-slider:before {
1223 1066 transform: translateX(-26px);
1224 1067 }
1225 1068
1226 -.rtl input:indeterminate + .mxchat-toggle-slider:before {
1227 - transform: translateX(-13px);
1228 -}
1229 -
1230 1069 .rtl .mxchat-error-notice {
1231 1070 border-left: none;
1232 1071 border-right: 3px solid #f44336;
1233 1072 }
@@ -1295,36 +1134,20 @@
1295 1134
1296 1135 .mxchat-kb-modal-content {
1297 1136 position: relative;
1298 1137 background-color: #fff;
1299 - margin: 24px auto;
1138 + margin: 50px auto;
1300 1139 padding: 0;
1301 1140 border-radius: 8px;
1302 1141 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1303 1142 width: 90%;
1304 1143 max-width: 1000px;
1305 - /* The box is the ONLY place height is constrained; children flex within it.
1306 - dvh tracks the real visible viewport on mobile (vh line = older-browser fallback). */
1307 1144 max-height: 85vh;
1308 - max-height: min(85vh, calc(100dvh - 48px));
1309 1145 display: flex;
1310 1146 flex-direction: column;
1311 1147 animation: mxchat-kb-modal-appear 0.3s ease-out;
1312 1148 }
1313 1149
1314 -/* Fixed chrome rows never grow or shrink — the results list is the only scroller. */
1315 -.mxchat-kb-modal-header,
1316 -.mxchat-kb-modal-filters,
1317 -.mxchat-kb-selection-header,
1318 -.mxchat-kb-modal-footer {
1319 - flex: 0 0 auto;
1320 -}
1321 -
1322 -/* The footer holds the primary actions — it can never be squeezed out of the box. */
1323 -.mxchat-kb-modal-footer {
1324 - flex-shrink: 0;
1325 -}
1326 -
1327 1150 @keyframes mxchat-kb-modal-appear {
1328 1151 from {
1329 1152 opacity: 0;
1330 1153 transform: translateY(-30px);
@@ -1438,15 +1261,12 @@
1438 1261 border-left: 3px solid #1e88e5;
1439 1262 }
1440 1263
1441 1264 .mxchat-kb-content-selection {
1442 - /* Flexible middle region: header row stays put, the list below scrolls.
1443 - min-height: 0 is load-bearing — without it flex refuses to shrink this
1444 - column and the footer gets pushed out of the box (the mobile bug). */
1445 - flex: 1 1 auto;
1446 - min-height: 0;
1447 - display: flex;
1448 - flex-direction: column;
1265 + overflow-y: auto;
1266 + flex: 1;
1267 + min-height: 300px;
1268 + max-height: calc(85vh - 200px);
1449 1269 }
1450 1270
1451 1271 .mxchat-kb-selection-header {
1452 1272 display: flex;
@@ -1474,12 +1294,8 @@
1474 1294 }
1475 1295
1476 1296 .mxchat-kb-content-list {
1477 1297 padding: 0;
1478 - /* The one and only scroller inside the modal. */
1479 - flex: 1 1 auto;
1480 - min-height: 0;
1481 - overflow-y: auto;
1482 1298 }
1483 1299
1484 1300 .mxchat-kb-content-item {
1485 1301 display: flex;
@@ -1508,23 +1324,19 @@
1508 1324 align-items: flex-start;
1509 1325 padding-top: 3px;
1510 1326 }
1511 1327
1512 -/* Native control, brand-tinted — identical to the "select all" checkbox above the
1513 - list, which carries no custom styling at all and renders correctly.
1514 - Do NOT re-add width / height / border / border-radius / background here. WP admin
1515 - draws the tick as a 21px dashicon positioned with negative margins for its OWN
1516 - default box, so forcing a custom box makes the tick overflow it. That mismatch
1517 - shipped for a long time but was invisible while the tick was white-on-white. */
1518 1328 .mxchat-kb-content-checkbox input[type="checkbox"] {
1329 + width: 18px;
1330 + height: 18px;
1331 + border: 1px solid #8c8f94;
1332 + border-radius: 3px;
1333 + background: #fff;
1519 1334 margin: 0;
1520 - cursor: pointer;
1521 - accent-color: var(--mxch-primary, #7873f5);
1522 1335 }
1523 1336
1524 -.mxchat-kb-content-checkbox input[type="checkbox"]:focus-visible {
1525 - outline: 2px solid var(--mxch-primary, #7873f5);
1526 - outline-offset: 2px;
1337 +.mxchat-kb-content-checkbox input[type="checkbox"]:checked {
1338 + border-color: #7873f5;
1527 1339 }
1528 1340
1529 1341 .mxchat-kb-content-details {
1530 1342 flex: 1;
@@ -1598,28 +1410,14 @@
1598 1410 .mxchat-kb-modal-footer {
1599 1411 padding: 15px 20px;
1600 1412 border-top: 1px solid #e5e5e5;
1601 1413 display: flex;
1602 - justify-content: space-between;
1603 - align-items: center;
1604 - gap: 15px;
1414 + justify-content: flex-end;
1415 + gap: 10px;
1605 1416 background-color: #f8f9fa;
1606 1417 border-radius: 0 0 8px 8px;
1607 1418 }
1608 1419
1609 -.mxchat-kb-modal-footer .mxchat-kb-pagination {
1610 - flex: 1;
1611 - margin: 0;
1612 - padding: 0;
1613 - text-align: left;
1614 -}
1615 -
1616 -.mxchat-kb-footer-actions {
1617 - display: flex;
1618 - gap: 10px;
1619 - flex-shrink: 0;
1620 -}
1621 -
1622 1420 .mxchat-kb-button-primary,
1623 1421 .mxchat-kb-button-secondary {
1624 1422 padding: 8px 15px;
1625 1423 border-radius: 4px;
@@ -1869,19 +1667,9 @@
1869 1667
1870 1668 .mxchat-search-group input {
1871 1669 width: 100%;
1872 1670 }
1873 -
1874 - /* ADDED 2.5.6: Responsive filter dropdown */
1875 - .mxchat-filter-group {
1876 - margin-left: 0;
1877 - width: 100%;
1878 - }
1879 -
1880 - .mxchat-filter-group select {
1881 - width: 100%;
1882 - }
1883 -
1671 +
1884 1672 .mxchat-url-input-group {
1885 1673 flex-direction: column;
1886 1674 }
1887 1675
@@ -1896,83 +1684,40 @@
1896 1684
1897 1685 /* Modal responsive adjustments */
1898 1686 .mxchat-kb-modal-content {
1899 1687 width: 95%;
1900 - /* dvh = real visible viewport (mobile vh includes the URL-bar region);
1901 - vh line is the older-browser fallback. */
1902 - max-height: calc(100vh - 24px);
1903 - max-height: calc(100dvh - 24px);
1904 - margin: 12px auto;
1905 - /* Last-resort scroll: on extreme-short viewports (landscape phones)
1906 - the compacted chrome + the list's floor can still exceed the box —
1907 - scroll inside the box rather than clipping the footer. */
1908 - overflow-y: auto;
1688 + max-height: 90vh;
1689 + margin: 20px auto;
1909 1690 }
1910 -
1911 - /* Compact the fixed chrome on mobile — stacked filters + a stacked footer
1912 - are tall, and every saved pixel goes to the content list. */
1913 - .mxchat-kb-modal-header {
1914 - padding: 12px 16px;
1915 - }
1916 -
1917 - .mxchat-kb-modal-header h3 {
1918 - font-size: 16px;
1919 - }
1920 -
1691 +
1921 1692 .mxchat-kb-modal-filters {
1922 1693 flex-direction: column;
1923 1694 align-items: stretch;
1924 - padding: 10px 16px;
1925 - gap: 8px;
1926 1695 }
1927 -
1696 +
1928 1697 .mxchat-kb-search-group {
1929 1698 max-width: none;
1930 1699 }
1931 -
1700 +
1932 1701 .mxchat-kb-filter-group {
1933 1702 flex-direction: column;
1934 - gap: 8px;
1935 1703 }
1936 -
1937 - .mxchat-kb-filter-group select {
1938 - padding: 6px 30px 6px 10px;
1704 +
1705 + .mxchat-kb-content-selection {
1706 + max-height: calc(90vh - 250px);
1939 1707 }
1940 -
1708 +
1941 1709 .mxchat-kb-selection-header {
1942 1710 flex-direction: column;
1943 1711 align-items: flex-start;
1944 - gap: 6px;
1945 - padding: 10px 16px;
1712 + gap: 10px;
1946 1713 }
1947 -
1948 - /* Guarantee a usable slice of visible rows — reachable buttons are no
1949 - help if there is nothing to select above them. */
1950 - .mxchat-kb-content-list {
1951 - min-height: 96px;
1952 - }
1953 -
1954 - .mxchat-kb-content-item {
1955 - padding: 10px 16px;
1956 - }
1957 -
1714 +
1958 1715 .mxchat-kb-modal-footer {
1959 1716 flex-direction: column;
1960 - gap: 8px;
1961 - padding: 10px 16px;
1962 1717 }
1963 -
1964 - .mxchat-kb-modal-footer .mxchat-kb-pagination {
1965 - width: 100%;
1966 - text-align: center;
1967 - }
1968 -
1969 - .mxchat-kb-footer-actions {
1970 - width: 100%;
1971 - flex-direction: column;
1972 - }
1973 -
1974 - .mxchat-kb-button-primary,
1718 +
1719 + .mxchat-kb-button-primary,
1975 1720 .mxchat-kb-button-secondary {
1976 1721 width: 100%;
1977 1722 }
1978 1723
@@ -2753,1331 +2498,4 @@
2753 2498 margin-bottom: 0;
2754 2499 color: #666;
2755 2500 }
2756 2501
2757 -
2758 -
2759 -/* ===== Role-Based Content Restrictions Styles ===== */
2760 -
2761 -/* Role mapping form */
2762 -.mxchat-role-mapping-form {
2763 - margin-top: 20px;
2764 - padding: 20px;
2765 - background-color: #f8f9ff;
2766 - border-radius: 8px;
2767 - border: 1px solid rgba(120, 115, 245, 0.1);
2768 -}
2769 -
2770 -.mxchat-role-mapping-form h4 {
2771 - margin-top: 0;
2772 - margin-bottom: 15px;
2773 - font-size: 16px;
2774 - color: #333;
2775 -}
2776 -
2777 -.mxchat-form-row {
2778 - display: flex;
2779 - gap: 15px;
2780 - align-items: flex-end;
2781 - margin-bottom: 20px;
2782 -}
2783 -
2784 -/* Role mappings table */
2785 -.mxchat-mappings-table {
2786 - width: 100%;
2787 - border-collapse: collapse;
2788 - margin-top: 15px;
2789 - background: #fff;
2790 - box-shadow: 0 1px 3px rgba(120, 115, 245, 0.08);
2791 - border-radius: 8px;
2792 - overflow: hidden;
2793 -}
2794 -
2795 -.mxchat-mappings-table th,
2796 -.mxchat-mappings-table td {
2797 - padding: 15px;
2798 - text-align: left;
2799 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2800 -}
2801 -
2802 -.mxchat-mappings-table th {
2803 - background: #f8f9ff;
2804 - font-weight: 600;
2805 - color: #333;
2806 - font-size: 14px;
2807 -}
2808 -
2809 -.mxchat-mappings-table tbody tr {
2810 - transition: background-color 0.2s ease;
2811 -}
2812 -
2813 -.mxchat-mappings-table tbody tr:hover {
2814 - background: rgba(120, 115, 245, 0.03);
2815 -}
2816 -
2817 -.mxchat-mappings-table tbody tr:last-child td {
2818 - border-bottom: none;
2819 -}
2820 -
2821 -/* Tag and role badges */
2822 -.mxchat-tag-badge {
2823 - display: inline-flex;
2824 - align-items: center;
2825 - gap: 5px;
2826 - padding: 5px 12px;
2827 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2828 - color: #fff;
2829 - border-radius: 4px;
2830 - font-size: 13px;
2831 - font-weight: 500;
2832 -}
2833 -
2834 -.mxchat-tag-badge .dashicons {
2835 - font-size: 16px;
2836 - width: 16px;
2837 - height: 16px;
2838 -}
2839 -
2840 -.mxchat-role-badge {
2841 - display: inline-block;
2842 - padding: 5px 12px;
2843 - background: #f0f0f1;
2844 - color: #2c3338;
2845 - border-radius: 4px;
2846 - font-size: 13px;
2847 - font-weight: 500;
2848 -}
2849 -
2850 -/* Role-specific badge colors */
2851 -.mxchat-role-badge.public {
2852 - background: #e8f5e9;
2853 - color: #2e7d32;
2854 -}
2855 -
2856 -.mxchat-role-badge.logged_in {
2857 - background: #e3f2fd;
2858 - color: #1565c0;
2859 -}
2860 -
2861 -.mxchat-role-badge.subscriber {
2862 - background: #f3e5f5;
2863 - color: #7b1fa2;
2864 -}
2865 -
2866 -.mxchat-role-badge.contributor {
2867 - background: #fff3e0;
2868 - color: #e65100;
2869 -}
2870 -
2871 -.mxchat-role-badge.author {
2872 - background: #fff9c4;
2873 - color: #f57f17;
2874 -}
2875 -
2876 -.mxchat-role-badge.editor {
2877 - background: #fce4ec;
2878 - color: #c2185b;
2879 -}
2880 -
2881 -.mxchat-role-badge.administrator {
2882 - background: #ffebee;
2883 - color: #c62828;
2884 -}
2885 -
2886 -/* Mapping actions */
2887 -.mxchat-mapping-actions {
2888 - display: flex;
2889 - gap: 8px;
2890 - align-items: center;
2891 -}
2892 -
2893 -.mxchat-delete-mapping {
2894 - color: #d63638;
2895 - cursor: pointer;
2896 - padding: 6px 10px;
2897 - border-radius: 4px;
2898 - transition: all 0.2s ease;
2899 - display: inline-flex;
2900 - align-items: center;
2901 - gap: 4px;
2902 - background: transparent;
2903 - border: none;
2904 - font-size: 13px;
2905 -}
2906 -
2907 -.mxchat-delete-mapping:hover {
2908 - background: #fef0f0;
2909 - color: #b32d2e;
2910 -}
2911 -
2912 -.mxchat-delete-mapping .dashicons {
2913 - font-size: 18px;
2914 - width: 18px;
2915 - height: 18px;
2916 -}
2917 -
2918 -/* Post count display */
2919 -.mxchat-post-count {
2920 - color: #666;
2921 - font-size: 13px;
2922 - display: flex;
2923 - align-items: center;
2924 - gap: 4px;
2925 -}
2926 -
2927 -.mxchat-post-count .dashicons {
2928 - font-size: 16px;
2929 - width: 16px;
2930 - height: 16px;
2931 - color: #7873f5;
2932 -}
2933 -
2934 -/* Loading state for mappings */
2935 -.mxchat-loading-mappings {
2936 - text-align: center;
2937 - padding: 40px;
2938 - color: #666;
2939 -}
2940 -
2941 -.mxchat-role-spinner {
2942 - display: inline-block;
2943 - width: 20px;
2944 - height: 20px;
2945 - border: 2px solid rgba(120, 115, 245, 0.2);
2946 - border-top: 2px solid #7873f5;
2947 - border-radius: 50%;
2948 - animation: mxchat-role-spin 1s linear infinite;
2949 - margin-right: 10px;
2950 -}
2951 -
2952 -.mxchat-role-spinner.is-active {
2953 - display: inline-block;
2954 -}
2955 -
2956 -@keyframes mxchat-role-spin {
2957 - 0% { transform: rotate(0deg); }
2958 - 100% { transform: rotate(360deg); }
2959 -}
2960 -
2961 -/* Empty state */
2962 -#mxchat-no-mappings {
2963 - text-align: center;
2964 - padding: 40px;
2965 - color: #666;
2966 -}
2967 -
2968 -#mxchat-no-mappings .dashicons {
2969 - font-size: 48px;
2970 - opacity: 0.3;
2971 - margin-bottom: 15px;
2972 - display: block;
2973 -}
2974 -
2975 -#mxchat-no-mappings p {
2976 - margin: 0;
2977 - font-size: 14px;
2978 -}
2979 -
2980 -/* Bulk update section */
2981 -.mxchat-bulk-update-section {
2982 - margin-top: 30px;
2983 - padding-top: 30px;
2984 - border-top: 1px solid rgba(120, 115, 245, 0.1);
2985 -}
2986 -
2987 -.mxchat-bulk-update-section h4 {
2988 - margin-top: 0;
2989 - margin-bottom: 10px;
2990 - font-size: 16px;
2991 - color: #333;
2992 -}
2993 -
2994 -.mxchat-bulk-update-controls {
2995 - margin-top: 15px;
2996 -}
2997 -
2998 -#mxchat-bulk-update-roles {
2999 - display: inline-flex;
3000 - align-items: center;
3001 - gap: 8px;
3002 -}
3003 -
3004 -#mxchat-bulk-update-progress {
3005 - max-width: 600px;
3006 -}
3007 -
3008 -#mxchat-bulk-update-progress .mxchat-progress-bar {
3009 - height: 10px;
3010 - background: rgba(120, 115, 245, 0.1);
3011 - border-radius: 5px;
3012 - overflow: hidden;
3013 -}
3014 -
3015 -#mxchat-bulk-update-progress .mxchat-progress-fill {
3016 - height: 100%;
3017 - background: linear-gradient(135deg, #fa73e6, #7873f5);
3018 - transition: width 0.3s ease;
3019 -}
3020 -
3021 -.mxchat-progress-text {
3022 - margin-top: 10px;
3023 - color: #666;
3024 - font-size: 14px;
3025 -}
3026 -
3027 -/* Bulk update results */
3028 -#mxchat-bulk-update-result {
3029 - margin-top: 15px;
3030 - padding: 15px;
3031 - border-radius: 8px;
3032 -}
3033 -
3034 -#mxchat-bulk-update-result.success {
3035 - background-color: #f0f9eb;
3036 - border-left: 4px solid #67c23a;
3037 - color: #3c763d;
3038 -}
3039 -
3040 -#mxchat-bulk-update-result.error {
3041 - background-color: #fef0f0;
3042 - border-left: 4px solid #d63638;
3043 - color: #a94442;
3044 -}
3045 -
3046 -#mxchat-bulk-update-result h5 {
3047 - margin: 0 0 10px;
3048 - font-size: 15px;
3049 - font-weight: 600;
3050 -}
3051 -
3052 -#mxchat-bulk-update-result p {
3053 - margin: 5px 0;
3054 - font-size: 14px;
3055 -}
3056 -
3057 -/* Role mappings list container */
3058 -.mxchat-role-mappings-list {
3059 - margin-top: 25px;
3060 -}
3061 -
3062 -.mxchat-role-mappings-list h4 {
3063 - margin-top: 0;
3064 - margin-bottom: 15px;
3065 - font-size: 16px;
3066 - color: #333;
3067 -}
3068 -
3069 -/* Info banner styling (reuse existing pattern) */
3070 -.mxchat-role-info-banner {
3071 - display: flex;
3072 - align-items: center;
3073 - gap: 10px;
3074 - padding: 12px 16px;
3075 - margin-bottom: 20px;
3076 - border-radius: 6px;
3077 - font-size: 14px;
3078 - background: #f8f9ff;
3079 - border-left: 4px solid #7873f5;
3080 - color: #333;
3081 -}
3082 -
3083 -.mxchat-role-info-banner .dashicons {
3084 - color: #7873f5;
3085 - font-size: 18px;
3086 -}
3087 -
3088 -/* Responsive adjustments */
3089 -@media screen and (max-width: 782px) {
3090 - .mxchat-form-row {
3091 - flex-direction: column;
3092 - align-items: stretch;
3093 - }
3094 -
3095 - .mxchat-form-row .mxchat-form-group {
3096 - flex: 1;
3097 - max-width: none;
3098 - }
3099 -
3100 - .mxchat-form-row > div {
3101 - padding-bottom: 0;
3102 - }
3103 -
3104 - .mxchat-mappings-table {
3105 - display: block;
3106 - overflow-x: auto;
3107 - }
3108 -
3109 - .mxchat-mappings-table th,
3110 - .mxchat-mappings-table td {
3111 - padding: 10px;
3112 - font-size: 13px;
3113 - }
3114 -
3115 - .mxchat-mapping-actions {
3116 - flex-direction: column;
3117 - align-items: flex-start;
3118 - }
3119 -}
3120 -
3121 -/* RTL Support */
3122 -.rtl .mxchat-mappings-table th,
3123 -.rtl .mxchat-mappings-table td {
3124 - text-align: right;
3125 -}
3126 -
3127 -.rtl .mxchat-tag-badge {
3128 - flex-direction: row-reverse;
3129 -}
3130 -
3131 -.rtl .mxchat-role-info-banner {
3132 - border-left: none;
3133 - border-right: 4px solid #7873f5;
3134 -}
3135 -
3136 -.rtl .mxchat-bulk-update-section {
3137 - border-right: none;
3138 -}
3139 -
3140 -.rtl #mxchat-bulk-update-result {
3141 - border-left: none;
3142 - border-right: 4px solid;
3143 -}
3144 -
3145 -.rtl .mxchat-role-spinner {
3146 - margin-right: 0;
3147 - margin-left: 10px;
3148 -}
3149 -
3150 -/* ===== Chunk Grouping Styles ===== */
3151 -.mxchat-chunk-group-header {
3152 - background: rgba(120, 115, 245, 0.04) !important;
3153 - border-left: 3px solid #7873f5;
3154 -}
3155 -
3156 -.mxchat-chunk-group-header:hover {
3157 - background: rgba(120, 115, 245, 0.08) !important;
3158 -}
3159 -
3160 -.mxchat-chunk-group-info {
3161 - display: flex;
3162 - align-items: center;
3163 - gap: 12px;
3164 -}
3165 -
3166 -.mxchat-chunk-toggle {
3167 - flex-shrink: 0;
3168 - width: 28px;
3169 - height: 28px;
3170 - border: none;
3171 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
3172 - border-radius: 6px;
3173 - cursor: pointer;
3174 - display: inline-flex;
3175 - align-items: center;
3176 - justify-content: center;
3177 - transition: all 0.3s ease;
3178 - padding: 0;
3179 -}
3180 -
3181 -.mxchat-chunk-toggle:hover {
3182 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
3183 - transform: scale(1.05);
3184 -}
3185 -
3186 -.mxchat-chunk-toggle .dashicons {
3187 - font-size: 16px;
3188 - color: #7873f5;
3189 - transition: transform 0.3s ease;
3190 -}
3191 -
3192 -.mxchat-chunk-toggle.expanded .dashicons {
3193 - transform: rotate(90deg);
3194 -}
3195 -
3196 -.mxchat-chunk-badge {
3197 - display: inline-flex;
3198 - align-items: center;
3199 - padding: 4px 10px;
3200 - background: linear-gradient(135deg, #7873f5, #3ac9d1);
3201 - color: white;
3202 - border-radius: 12px;
3203 - font-size: 12px;
3204 - font-weight: 600;
3205 - white-space: nowrap;
3206 -}
3207 -
3208 -.mxchat-chunk-preview {
3209 - flex: 1;
3210 - color: #666;
3211 - font-size: 13px;
3212 - overflow: hidden;
3213 - text-overflow: ellipsis;
3214 - white-space: nowrap;
3215 -}
3216 -
3217 -.mxchat-chunk-row {
3218 - border-left: 3px solid #e0e0e0;
3219 -}
3220 -
3221 -.mxchat-chunk-row td:first-child {
3222 - padding-left: 30px !important;
3223 -}
3224 -
3225 -.mxchat-chunk-indicator {
3226 - display: inline-flex;
3227 - align-items: center;
3228 - padding: 2px 8px;
3229 - background: #f0f0f0;
3230 - color: #666;
3231 - border-radius: 4px;
3232 - font-size: 11px;
3233 - font-weight: 500;
3234 -}
3235 -
3236 -.mxchat-chunk-label {
3237 - color: #999;
3238 - font-size: 12px;
3239 - font-style: italic;
3240 -}
3241 -
3242 -/* Delete button for chunk groups */
3243 -.delete-button-group {
3244 - background: none;
3245 - border: none;
3246 - cursor: pointer;
3247 - padding: 4px;
3248 - border-radius: 4px;
3249 - transition: all 0.2s ease;
3250 -}
3251 -
3252 -.delete-button-group:hover {
3253 - background: rgba(255, 0, 0, 0.1);
3254 -}
3255 -
3256 -.delete-button-group .dashicons {
3257 - color: #dc3545;
3258 -}
3259 -
3260 -.delete-button-group .dashicons.spin {
3261 - animation: mxchat-spin 1s linear infinite;
3262 -}
3263 -
3264 -@keyframes mxchat-spin {
3265 - from { transform: rotate(0deg); }
3266 - to { transform: rotate(360deg); }
3267 -}
3268 -
3269 -/* ===== Sitemap Detection Styles ===== */
3270 -.dashicons.spin {
3271 - animation: mxchat-spin 1s linear infinite;
3272 -}
3273 -
3274 -.mxchat-sitemap-group.expanded .mxchat-sitemap-sub-list {
3275 - display: block !important;
3276 -}
3277 -
3278 -.mxchat-sitemap-group.expanded .dashicons-arrow-right-alt2 {
3279 - transform: rotate(90deg) !important;
3280 -}
3281 -
3282 -.mxchat-sitemap-row:last-child {
3283 - border-bottom: none !important;
3284 -}
3285 -
3286 -.mxchat-detected-sitemaps {
3287 - margin-top: 24px;
3288 -}
3289 -
3290 -.mxchat-sitemaps-header {
3291 - display: flex;
3292 - align-items: center;
3293 - justify-content: space-between;
3294 - margin-bottom: 16px;
3295 -}
3296 -
3297 -.mxchat-sitemaps-header h4 {
3298 - margin: 0;
3299 - display: flex;
3300 - align-items: center;
3301 - gap: 8px;
3302 -}
3303 -
3304 -.mxchat-sitemaps-header h4 .dashicons {
3305 - color: #7873f5;
3306 -}
3307 -
3308 -.mxchat-sitemap-group {
3309 - margin-bottom: 16px;
3310 - border: 1px solid rgba(120, 115, 245, 0.2);
3311 - border-radius: 8px;
3312 - overflow: hidden;
3313 -}
3314 -
3315 -.mxchat-sitemap-group-header {
3316 - padding: 12px 16px;
3317 - background: #f8fafc;
3318 - display: flex;
3319 - align-items: center;
3320 - justify-content: space-between;
3321 - cursor: pointer;
3322 - transition: background-color 0.2s ease;
3323 -}
3324 -
3325 -.mxchat-sitemap-group-header:hover {
3326 - background: #f0f4f8;
3327 -}
3328 -
3329 -.mxchat-sitemap-sub-list {
3330 - display: none;
3331 - border-top: 1px solid rgba(120, 115, 245, 0.2);
3332 -}
3333 -
3334 -.mxchat-sitemap-row {
3335 - padding: 12px 16px;
3336 - display: flex;
3337 - align-items: center;
3338 - justify-content: space-between;
3339 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
3340 -}
3341 -
3342 -.mxchat-sitemap-row.sub-item {
3343 - padding-left: 40px;
3344 -}
3345 -
3346 -.mxchat-sitemaps-loading {
3347 - margin-top: 24px;
3348 - padding: 20px;
3349 - text-align: center;
3350 -}
3351 -
3352 -.mxchat-sitemaps-loading .dashicons {
3353 - font-size: 20px;
3354 - color: #7873f5;
3355 -}
3356 -
3357 -.mxchat-sitemaps-loading p {
3358 - margin: 8px 0 0;
3359 - color: #666;
3360 -}
3361 -
3362 -.mxchat-no-sitemaps {
3363 - margin-top: 24px;
3364 - padding: 20px;
3365 - background: #f8fafc;
3366 - border-radius: 8px;
3367 - text-align: center;
3368 -}
3369 -
3370 -.mxchat-no-sitemaps .dashicons {
3371 - font-size: 24px;
3372 - color: #999;
3373 - margin-bottom: 8px;
3374 -}
3375 -
3376 -.mxchat-no-sitemaps p {
3377 - margin: 0;
3378 - color: #666;
3379 -}
3380 -
3381 -/* ===== Admin Notice Dismiss Button Styles ===== */
3382 -.notice.is-dismissible {
3383 - position: relative;
3384 - padding-right: 38px;
3385 -}
3386 -
3387 -.notice-dismiss {
3388 - position: absolute;
3389 - top: 50%;
3390 - right: 8px;
3391 - transform: translateY(-50%);
3392 - padding: 0;
3393 - background: none;
3394 - border: none;
3395 - cursor: pointer;
3396 - color: #787c82;
3397 - width: 24px;
3398 - height: 24px;
3399 - display: flex;
3400 - align-items: center;
3401 - justify-content: center;
3402 - transition: color 0.2s ease;
3403 -}
3404 -
3405 -.notice-dismiss:hover {
3406 - color: #d63638;
3407 -}
3408 -
3409 -.notice-dismiss:before {
3410 - content: "\f153";
3411 - font-family: dashicons;
3412 - font-size: 16px;
3413 - line-height: 1;
3414 -}
3415 -
3416 -.notice-dismiss .screen-reader-text {
3417 - position: absolute;
3418 - width: 1px;
3419 - height: 1px;
3420 - padding: 0;
3421 - margin: -1px;
3422 - overflow: hidden;
3423 - clip: rect(0, 0, 0, 0);
3424 - white-space: nowrap;
3425 - border: 0;
3426 -}
3427 -
3428 -/* ===== AJAX Pagination Styles ===== */
3429 -.mxchat-kb-pagination-wrapper {
3430 - background: #f8fafc;
3431 -}
3432 -
3433 -.mxchat-ajax-pagination {
3434 - display: flex;
3435 - align-items: center;
3436 - justify-content: center;
3437 - gap: 8px;
3438 - flex-wrap: wrap;
3439 -}
3440 -
3441 -.mxchat-page-link {
3442 - display: inline-flex;
3443 - align-items: center;
3444 - justify-content: center;
3445 - min-width: 36px;
3446 - height: 36px;
3447 - padding: 0 12px;
3448 - background: #fff;
3449 - border: 1px solid var(--mxch-card-border, #e5e7eb);
3450 - border-radius: 6px;
3451 - color: var(--mxch-text-primary, #1f2937);
3452 - text-decoration: none;
3453 - font-size: 13px;
3454 - font-weight: 500;
3455 - transition: all 0.2s ease;
3456 - cursor: pointer;
3457 -}
3458 -
3459 -.mxchat-page-link:hover {
3460 - background: var(--mxch-primary, #7873f5);
3461 - border-color: var(--mxch-primary, #7873f5);
3462 - color: #fff;
3463 - text-decoration: none;
3464 -}
3465 -
3466 -.mxchat-page-link.loading {
3467 - opacity: 0.6;
3468 - pointer-events: none;
3469 -}
3470 -
3471 -.mxchat-page-current {
3472 - display: inline-flex;
3473 - align-items: center;
3474 - justify-content: center;
3475 - min-width: 36px;
3476 - height: 36px;
3477 - padding: 0 12px;
3478 - background: var(--mxch-primary, #7873f5);
3479 - border: 1px solid var(--mxch-primary, #7873f5);
3480 - border-radius: 6px;
3481 - color: #fff;
3482 - font-size: 13px;
3483 - font-weight: 600;
3484 -}
3485 -
3486 -.mxchat-page-dots {
3487 - display: inline-flex;
3488 - align-items: center;
3489 - justify-content: center;
3490 - min-width: 24px;
3491 - height: 36px;
3492 - color: var(--mxch-text-muted, #9ca3af);
3493 - font-size: 14px;
3494 -}
3495 -
3496 -.mxchat-pagination-loading {
3497 - margin-left: 12px;
3498 -}
3499 -
3500 -.mxchat-pagination-loading .dashicons {
3501 - color: var(--mxch-primary, #7873f5);
3502 -}
3503 -
3504 -/* Spin animation for loading indicator */
3505 -@keyframes mxchat-spin {
3506 - from { transform: rotate(0deg); }
3507 - to { transform: rotate(360deg); }
3508 -}
3509 -
3510 -.mxchat-pagination-loading .spin,
3511 -.mxchat-ajax-pagination .spin {
3512 - animation: mxchat-spin 1s linear infinite;
3513 -}
3514 -
3515 -/* Mobile responsive pagination */
3516 -@media (max-width: 600px) {
3517 - .mxchat-ajax-pagination {
3518 - gap: 4px;
3519 - }
3520 -
3521 - .mxchat-page-link,
3522 - .mxchat-page-current {
3523 - min-width: 32px;
3524 - height: 32px;
3525 - padding: 0 8px;
3526 - font-size: 12px;
3527 - }
3528 -
3529 - .mxchat-page-dots {
3530 - min-width: 20px;
3531 - }
3532 -}
3533 -
3534 -/* ========================================
3535 - BULK SELECTION STYLES
3536 - ======================================== */
3537 -
3538 -/* Bulk Actions Toolbar */
3539 -.mxchat-bulk-toolbar {
3540 - display: flex;
3541 - align-items: center;
3542 - gap: 12px;
3543 - padding: 12px 16px;
3544 - background: #f8fafc;
3545 - border: 1px solid var(--mxch-card-border);
3546 - border-bottom: none;
3547 - border-radius: var(--mxch-radius-md) var(--mxch-radius-md) 0 0;
3548 -}
3549 -
3550 -.mxchat-bulk-select-label {
3551 - display: flex;
3552 - align-items: center;
3553 - gap: 6px;
3554 - font-size: 13px;
3555 - color: var(--mxch-text-secondary);
3556 - cursor: pointer;
3557 -}
3558 -
3559 -.mxchat-bulk-select-label:hover {
3560 - color: var(--mxch-text-primary);
3561 -}
3562 -
3563 -.mxchat-entry-checkbox,
3564 -.mxchat-entry-checkbox-all {
3565 - width: 16px;
3566 - height: 16px;
3567 - cursor: pointer;
3568 - accent-color: var(--mxch-primary, #7873f5);
3569 -}
3570 -
3571 -.mxchat-bulk-actions {
3572 - display: flex;
3573 - align-items: center;
3574 - gap: 8px;
3575 - margin-left: auto;
3576 -}
3577 -
3578 -.mxchat-bulk-delete {
3579 - display: flex;
3580 - align-items: center;
3581 - gap: 6px;
3582 - color: var(--mxch-error, #dc2626) !important;
3583 - border-color: #fecaca !important;
3584 - background: transparent !important;
3585 -}
3586 -
3587 -.mxchat-bulk-delete:hover:not(:disabled) {
3588 - background: #fef2f2 !important;
3589 - border-color: #fca5a5 !important;
3590 -}
3591 -
3592 -.mxchat-bulk-delete:disabled {
3593 - opacity: 0.5;
3594 - cursor: not-allowed;
3595 -}
3596 -
3597 -.mxchat-selected-count {
3598 - font-size: 12px;
3599 - color: var(--mxch-primary, #7873f5);
3600 - font-weight: 600;
3601 - margin-left: 4px;
3602 -}
3603 -
3604 -/* Delete container - holds Delete All form and Delete Selected button */
3605 -.mxchat-delete-container {
3606 - display: flex;
3607 - align-items: center;
3608 -}
3609 -
3610 -/* Selected row highlighting */
3611 -#mxchat-records-table tr.selected {
3612 - background-color: rgba(120, 115, 245, 0.05) !important;
3613 -}
3614 -
3615 -#mxchat-records-table tr.selected td:first-child {
3616 - position: relative;
3617 -}
3618 -
3619 -#mxchat-records-table tr.selected td:first-child::before {
3620 - content: '';
3621 - position: absolute;
3622 - left: 0;
3623 - top: 0;
3624 - bottom: 0;
3625 - width: 3px;
3626 - background: var(--mxch-primary, #7873f5);
3627 -}
3628 -
3629 -/* Deleting state */
3630 -tr.mxchat-row-deleting {
3631 - opacity: 0.5;
3632 - pointer-events: none;
3633 -}
3634 -
3635 -/* Error state for failed deletions */
3636 -tr.mxchat-row-error {
3637 - background-color: rgba(220, 38, 38, 0.05) !important;
3638 -}
3639 -
3640 -tr.mxchat-row-error td:first-child {
3641 - position: relative;
3642 -}
3643 -
3644 -tr.mxchat-row-error td:first-child::before {
3645 - content: '';
3646 - position: absolute;
3647 - left: 0;
3648 - top: 0;
3649 - bottom: 0;
3650 - width: 3px;
3651 - background: var(--mxch-error, #dc2626);
3652 -}
3653 -
3654 -/* Spin animation for loading states */
3655 -.spin {
3656 - animation: mxchat-spin 1s linear infinite;
3657 -}
3658 -
3659 -/* Responsive adjustments for bulk toolbar */
3660 -@media (max-width: 768px) {
3661 - .mxchat-bulk-toolbar {
3662 - flex-wrap: wrap;
3663 - gap: 8px;
3664 - }
3665 -
3666 - .mxchat-bulk-delete-text {
3667 - display: none;
3668 - }
3669 -
3670 - .mxchat-bulk-actions {
3671 - margin-left: 0;
3672 - }
3673 -}
3674 -
3675 -/* ==========================================================================
3676 - Knowledge Base - Mobile Responsive
3677 - ========================================================================== */
3678 -
3679 -/* Desktop defaults for KB header controls */
3680 -.mxch-kb-header-controls {
3681 - display: flex;
3682 - gap: 10px;
3683 - align-items: center;
3684 -}
3685 -
3686 -.mxch-kb-search-form {
3687 - display: flex;
3688 - gap: 10px;
3689 -}
3690 -
3691 -.mxch-kb-search-input {
3692 - width: 200px;
3693 -}
3694 -
3695 -.mxch-kb-type-filter {
3696 - width: auto;
3697 -}
3698 -
3699 -/* Mobile: Knowledge Base card header stacks vertically */
3700 -@media screen and (max-width: 960px) {
3701 - /* Stack card header vertically */
3702 - #knowledge-base .mxch-card-header {
3703 - flex-direction: column;
3704 - align-items: stretch;
3705 - gap: 12px;
3706 - padding: 12px 16px;
3707 - }
3708 -
3709 - /* Title row wraps badges */
3710 - #knowledge-base .mxch-card-title {
3711 - flex-wrap: wrap;
3712 - font-size: 14px;
3713 - }
3714 -
3715 - /* Controls stack vertically */
3716 - .mxch-kb-header-controls {
3717 - flex-direction: column;
3718 - align-items: stretch;
3719 - gap: 8px;
3720 - width: 100%;
3721 - }
3722 -
3723 - /* Search form wraps */
3724 - .mxch-kb-search-form {
3725 - flex-wrap: wrap;
3726 - gap: 8px;
3727 - width: 100%;
3728 - }
3729 -
3730 - /* Search input takes full width */
3731 - .mxch-kb-search-input {
3732 - width: 100% !important;
3733 - flex: 1;
3734 - min-width: 0;
3735 - }
3736 -
3737 - /* Filter dropdown takes full width */
3738 - .mxch-kb-type-filter {
3739 - width: 100% !important;
3740 - flex: 1;
3741 - min-width: 0;
3742 - }
3743 -
3744 - /* Delete container full width */
3745 - .mxchat-delete-container {
3746 - width: 100%;
3747 - }
3748 -
3749 - .mxchat-delete-container form,
3750 - .mxchat-delete-container .mxchat-bulk-delete {
3751 - width: 100%;
3752 - }
3753 -
3754 - .mxchat-delete-container .mxch-btn {
3755 - width: 100%;
3756 - justify-content: center;
3757 - }
3758 -
3759 - /* Table: hide ID and Source columns on mobile to save space */
3760 - .mxchat-records-table th:nth-child(2),
3761 - .mxchat-records-table td:nth-child(2) {
3762 - display: none;
3763 - }
3764 -
3765 - .mxchat-records-table th:nth-child(4),
3766 - .mxchat-records-table td:nth-child(4) {
3767 - display: none;
3768 - }
3769 -
3770 - /* Content column needs more room */
3771 - .mxchat-content-cell {
3772 - max-width: none !important;
3773 - }
3774 -
3775 - /* Table cells padding */
3776 - .mxchat-records-table th,
3777 - .mxchat-records-table td {
3778 - padding: 10px 8px !important;
3779 - }
3780 -
3781 - /* Pagination wraps nicely */
3782 - .mxchat-ajax-pagination {
3783 - flex-wrap: wrap;
3784 - justify-content: center;
3785 - }
3786 -}
3787 -
3788 -/* Small mobile: further adjustments */
3789 -@media screen and (max-width: 480px) {
3790 - #knowledge-base .mxch-card-header {
3791 - padding: 10px 12px;
3792 - }
3793 -
3794 - #knowledge-base .mxch-card-title {
3795 - font-size: 13px;
3796 - }
3797 -
3798 - /* Search form items fully stacked */
3799 - .mxch-kb-search-form {
3800 - flex-direction: column;
3801 - }
3802 -
3803 - /* Smaller table text */
3804 - .mxchat-records-table {
3805 - font-size: 12px;
3806 - }
3807 -
3808 - .mxchat-records-table th,
3809 - .mxchat-records-table td {
3810 - padding: 8px 6px !important;
3811 - }
3812 -
3813 - /* Also hide Actions header text but keep the column for delete buttons */
3814 - .mxchat-records-table th:nth-child(5) {
3815 - font-size: 0;
3816 - padding: 8px 4px !important;
3817 - width: 40px;
3818 - }
3819 -}
3820 -
3821 -/* ─── Edit Entry Modal ─── */
3822 -
3823 -.mxchat-edit-entry-btn {
3824 - color: var(--mxch-primary, #7873f5);
3825 -}
3826 -.mxchat-edit-entry-btn:hover {
3827 - color: var(--mxch-primary-dark, #5b56d6);
3828 - background: rgba(120, 115, 245, 0.08);
3829 -}
3830 -
3831 -.mxchat-kb-edit-modal-content {
3832 - max-width: 760px;
3833 - /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3834 - max-height: 90vh;
3835 - max-height: min(90vh, calc(100dvh - 24px));
3836 -}
3837 -
3838 -.mxchat-kb-edit-body {
3839 - flex: 1 1 auto;
3840 - /* min-height: 0 lets the body shrink inside the capped modal box so the
3841 - footer (Save/Cancel) can never be pushed below the viewport. */
3842 - min-height: 0;
3843 - display: flex;
3844 - flex-direction: column;
3845 - padding: 20px;
3846 - overflow: hidden;
3847 - gap: 12px;
3848 -}
3849 -
3850 -.mxchat-kb-edit-source {
3851 - font-size: 12px;
3852 - color: var(--mxch-text-muted, #6b7280);
3853 - word-break: break-all;
3854 -}
3855 -.mxchat-kb-edit-source a {
3856 - color: var(--mxch-primary, #7873f5);
3857 - text-decoration: none;
3858 -}
3859 -
3860 -.mxchat-kb-edit-textarea {
3861 - flex: 1;
3862 - min-height: 300px;
3863 - max-height: 55vh;
3864 - width: 100%;
3865 - padding: 14px;
3866 - border: 1px solid var(--mxch-input-border, #d1d5db);
3867 - border-radius: 8px;
3868 - font-size: 14px;
3869 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3870 - line-height: 1.6;
3871 - resize: vertical;
3872 - color: var(--mxch-text-primary, #1a1a2e);
3873 - background: var(--mxch-input-bg, #fff);
3874 - box-sizing: border-box;
3875 - transition: border-color 0.2s;
3876 -}
3877 -.mxchat-kb-edit-textarea:focus {
3878 - outline: none;
3879 - border-color: var(--mxch-primary, #7873f5);
3880 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
3881 -}
3882 -
3883 -.mxchat-kb-edit-meta {
3884 - display: flex;
3885 - justify-content: space-between;
3886 - font-size: 12px;
3887 - color: var(--mxch-text-muted, #6b7280);
3888 -}
3889 -
3890 -.mxchat-kb-edit-footer {
3891 - display: flex;
3892 - align-items: center;
3893 - justify-content: space-between;
3894 - padding: 14px 20px;
3895 - border-top: 1px solid #e5e5e5;
3896 - gap: 12px;
3897 - /* Action row can never be squeezed out of the box. */
3898 - flex-shrink: 0;
3899 -}
3900 -
3901 -.mxchat-kb-edit-notice {
3902 - flex: 1;
3903 - font-size: 13px;
3904 -}
3905 -.mxchat-kb-edit-notice.success { color: #16a34a; }
3906 -.mxchat-kb-edit-notice.error { color: #dc2626; }
3907 -
3908 -.mxchat-kb-edit-actions {
3909 - display: flex;
3910 - gap: 8px;
3911 - flex-shrink: 0;
3912 -}
3913 -
3914 -/* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3915 - Read-only "View indexed content" viewer. Reuses the Testing tab's
3916 - match-card / chunk-detail components (admin-testing-tab.css, scoped under
3917 - .mxch-testing-results) so it looks native; this block only adds the modal
3918 - body scroll + the chunk-text container the Testing tab doesn't have. */
3919 -.mxchat-kb-inspect-body {
3920 - flex: 1 1 auto;
3921 - /* Same footer-pushout guard as the edit modal. */
3922 - min-height: 0;
3923 - display: flex;
3924 - flex-direction: column;
3925 - padding: 20px;
3926 - overflow-y: auto;
3927 - gap: 12px;
3928 -}
3929 -/* The modal body is the scroll container — let the inner results grow naturally
3930 - instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3931 -.mxchat-kb-inspect-body .mxch-testing-results {
3932 - max-height: none;
3933 - overflow: visible;
3934 -}
3935 -.mxch-kb-inspect-chunk-text {
3936 - margin: 8px 0 0;
3937 - padding: 12px 14px;
3938 - background: #f8fafc;
3939 - border: 1px solid #e2e8f0;
3940 - border-radius: 6px;
3941 - max-height: 260px;
3942 - overflow-y: auto;
3943 - white-space: pre-wrap;
3944 - word-break: break-word;
3945 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3946 - font-size: 13px;
3947 - line-height: 1.6;
3948 - color: var(--mxch-text-primary, #334155);
3949 -}
3950 -
3951 -.mxchat-kb-edit-save-spinner {
3952 - display: inline-flex;
3953 - align-items: center;
3954 - gap: 6px;
3955 -}
3956 -
3957 -@media (max-width: 782px) {
3958 - .mxchat-kb-edit-modal-content {
3959 - width: 96%;
3960 - max-width: 96%;
3961 - margin: 10px auto;
3962 - max-height: calc(100vh - 20px);
3963 - max-height: calc(100dvh - 20px);
3964 - }
3965 - .mxchat-kb-edit-body {
3966 - padding: 14px;
3967 - }
3968 - .mxchat-kb-edit-textarea {
3969 - min-height: 200px;
3970 - font-size: 15px;
3971 - }
3972 - .mxchat-kb-edit-footer {
3973 - flex-direction: column;
3974 - align-items: stretch;
3975 - }
3976 - .mxchat-kb-edit-actions {
3977 - justify-content: stretch;
3978 - }
3979 - .mxchat-kb-edit-actions .mxch-btn {
3980 - flex: 1;
3981 - text-align: center;
3982 - }
3983 -}
3984 -/* ==========================================================================
3985 - Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
3986 - Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
3987 - ========================================================================== */
3988 -.mxchat-meta-scan-controls {
3989 - display: flex;
3990 - align-items: center;
3991 - flex-wrap: wrap;
3992 - gap: 12px;
3993 - margin-bottom: 12px;
3994 -}
3995 -#mxchat-scan-meta-btn {
3996 - display: inline-flex;
3997 - align-items: center;
3998 - gap: 8px;
3999 -}
4000 -.mxchat-meta-scan-internal {
4001 - display: inline-flex;
4002 - align-items: center;
4003 - gap: 6px;
4004 - font-size: 13px;
4005 - color: var(--mxch-text-secondary, #64748b);
4006 - cursor: pointer;
4007 -}
4008 -.mxchat-meta-scan-loading,
4009 -.mxchat-meta-scan-empty {
4010 - font-size: 13px;
4011 - color: var(--mxch-text-secondary, #64748b);
4012 - margin: 8px 0 0;
4013 -}
4014 -.mxchat-meta-chip-grid {
4015 - display: grid;
4016 - grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4017 - gap: 10px;
4018 - margin-top: 12px;
4019 -}
4020 -.mxchat-meta-chip {
4021 - display: flex;
4022 - flex-direction: column;
4023 - align-items: flex-start;
4024 - gap: 4px;
4025 - text-align: left;
4026 - width: 100%;
4027 - padding: 10px 12px;
4028 - background: var(--mxch-card-bg, #fff);
4029 - border: 1px solid var(--mxch-card-border, #e2e8f0);
4030 - border-radius: var(--mxch-radius-md, 8px);
4031 - cursor: pointer;
4032 - transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4033 -}
4034 -.mxchat-meta-chip:hover {
4035 - border-color: var(--mxch-primary, #7873f5);
4036 - box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4037 -}
4038 -.mxchat-meta-chip-main {
4039 - display: flex;
4040 - align-items: baseline;
4041 - flex-wrap: wrap;
4042 - gap: 8px;
4043 -}
4044 -.mxchat-meta-chip-name {
4045 - font-weight: 600;
4046 - color: var(--mxch-text-primary, #1a1a2e);
4047 - font-size: 13px;
4048 -}
4049 -.mxchat-meta-chip-key {
4050 - font-family: monospace;
4051 - font-size: 11px;
4052 - color: var(--mxch-text-muted, #94a3b8);
4053 - background: #f1f5f9;
4054 - padding: 1px 6px;
4055 - border-radius: 4px;
4056 -}
4057 -.mxchat-meta-chip-meta {
4058 - font-size: 11px;
4059 - color: var(--mxch-text-muted, #94a3b8);
4060 - white-space: nowrap;
4061 - overflow: hidden;
4062 - text-overflow: ellipsis;
4063 - max-width: 100%;
4064 -}
4065 -.mxchat-meta-chip-tick {
4066 - font-size: 11px;
4067 - font-weight: 600;
4068 - color: var(--mxch-primary, #7873f5);
4069 - margin-top: 2px;
4070 -}
4071 -.mxchat-meta-chip.is-added {
4072 - border-color: var(--mxch-success, #10b981);
4073 - background: rgba(16, 185, 129, 0.06);
4074 - cursor: default;
4075 -}
4076 -.mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4077 - color: var(--mxch-success, #10b981);
4078 -}
4079 -@media (max-width: 782px) {
4080 - .mxchat-meta-chip-grid {
4081 - grid-template-columns: 1fr;
4082 - }
4083 -}