PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.2.0
MxChat – AI Chatbot & Content Generation for WordPress v2.2.0
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 +29 -2027 3.2.172.2.0 View file →
@@ -195,14 +195,8 @@
195 195 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.1);
196 196 transform: translateY(-4px);
197 197 }
198 198
199 -.mxchat-import-box.active {
200 - border-color: #7873f5;
201 - box-shadow: 0 4px 12px rgba(120, 115, 245, 0.1);
202 - transform: translateY(-4px);
203 -}
204 -
205 199 .mxchat-import-wordpress {
206 200 border: 2px solid #7873f5;
207 201 background-color: #f8f9ff;
208 202 }
@@ -266,19 +260,8 @@
266 260 border: 1px solid #e5e5e5;
267 261 text-align: center;
268 262 }
269 263
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 264 .mxchat-url-input-group {
282 265 display: flex;
283 266 gap: 12px;
284 267 max-width: 800px;
@@ -671,9 +654,9 @@
671 654 }
672 655
673 656 /* ===== Search ===== */
674 657 .mxchat-search-form {
675 - display: flex;
658 + position: relative;
676 659 }
677 660
678 661 .mxchat-search-group {
679 662 position: relative;
@@ -691,42 +674,8 @@
691 674 padding-left: 40px;
692 675 width: 300px;
693 676 }
694 677
695 -/* ADDED 2.5.6: Content Type Filter Styles */
696 -.mxchat-filter-group {
697 - position: relative;
698 - display: flex;
699 - align-items: center;
700 - margin-left: 12px;
701 -}
702 -
703 -.mxchat-filter-group select {
704 - padding: 8px 32px 8px 12px;
705 - border: 1px solid #ddd;
706 - border-radius: 8px;
707 - background: white;
708 - color: #333;
709 - font-size: 14px;
710 - cursor: pointer;
711 - transition: all 0.2s ease;
712 - appearance: none;
713 - 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");
714 - background-repeat: no-repeat;
715 - background-position: right 12px center;
716 -}
717 -
718 -.mxchat-filter-group select:hover {
719 - border-color: #7873f5;
720 - box-shadow: 0 2px 8px rgba(120, 115, 245, 0.1);
721 -}
722 -
723 -.mxchat-filter-group select:focus {
724 - outline: none;
725 - border-color: #7873f5;
726 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
727 -}
728 -
729 678 /* ===== Buttons ===== */
730 679 .mxchat-button-primary {
731 680 background: linear-gradient(135deg, #fa73e6, #7873f5);
732 681 border: none;
@@ -896,14 +845,8 @@
896 845 text-align: left;
897 846 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
898 847 }
899 848
900 -/* Hide ID column (now second column, after checkbox column) */
901 -.mxchat-records-table th:nth-child(2),
902 -.mxchat-records-table td:nth-child(2) {
903 - display: none;
904 -}
905 -
906 849 .mxchat-records-table td {
907 850 padding: 15px;
908 851 border-top: 1px solid rgba(120, 115, 245, 0.1);
909 852 vertical-align: top;
@@ -913,110 +856,11 @@
913 856 background: rgba(120, 115, 245, 0.03);
914 857 }
915 858
916 859 .mxchat-content-cell {
917 - max-width: 600px;
860 + max-width: 400px;
918 861 }
919 862
920 -/* ===== Accordion Styles ===== */
921 -.mxchat-accordion-wrapper {
922 - width: 100%;
923 -}
924 -
925 -.mxchat-content-preview {
926 - display: flex;
927 - align-items: center;
928 - gap: 12px;
929 - padding: 8px 12px;
930 - border-radius: 6px;
931 - transition: all 0.2s ease;
932 -}
933 -
934 -/* Only make it look clickable if there's an expand button */
935 -.mxchat-content-preview:has(.mxchat-expand-toggle) {
936 - cursor: pointer;
937 -}
938 -
939 -.mxchat-content-preview:has(.mxchat-expand-toggle):hover {
940 - background: rgba(120, 115, 245, 0.04);
941 -}
942 -
943 -.mxchat-content-preview .preview-text {
944 - flex: 1;
945 - font-size: 14px;
946 - line-height: 1.6;
947 - color: #333;
948 - overflow: hidden;
949 -}
950 -
951 -.mxchat-expand-toggle {
952 - flex-shrink: 0;
953 - width: 28px;
954 - height: 28px;
955 - border: none;
956 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
957 - border-radius: 6px;
958 - cursor: pointer;
959 - display: inline-flex;
960 - align-items: center;
961 - justify-content: center;
962 - transition: all 0.3s ease;
963 - padding: 0;
964 -}
965 -
966 -.mxchat-expand-toggle:hover {
967 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
968 - transform: scale(1.05);
969 -}
970 -
971 -.mxchat-expand-toggle .dashicons {
972 - font-size: 18px;
973 - width: 18px;
974 - height: 18px;
975 - color: #7873f5;
976 - transition: transform 0.3s ease;
977 -}
978 -
979 -.mxchat-expand-toggle.expanded .dashicons {
980 - transform: rotate(180deg);
981 -}
982 -
983 -.mxchat-content-full {
984 - margin-top: 12px;
985 - padding: 16px;
986 - background: rgba(120, 115, 245, 0.03);
987 - border-radius: 8px;
988 - border-left: 3px solid #7873f5;
989 - animation: slideDown 0.3s ease;
990 -}
991 -
992 -@keyframes slideDown {
993 - from {
994 - opacity: 0;
995 - max-height: 0;
996 - transform: translateY(-10px);
997 - }
998 - to {
999 - opacity: 1;
1000 - max-height: 1000px;
1001 - transform: translateY(0);
1002 - }
1003 -}
1004 -
1005 -.mxchat-content-full .content-view {
1006 - font-size: 14px;
1007 - line-height: 1.6;
1008 - color: #333;
1009 -}
1010 -
1011 -.mxchat-content-full .content-view p {
1012 - margin: 0 0 12px 0;
1013 -}
1014 -
1015 -.mxchat-content-full .content-view p:last-child {
1016 - margin-bottom: 0;
1017 -}
1018 -
1019 863 .mxchat-url-cell a {
1020 864 color: #7873f5;
1021 865 text-decoration: none;
1022 866 display: flex;
@@ -1033,9 +877,13 @@
1033 877 display: flex;
1034 878 gap: 8px;
1035 879 }
1036 880
1037 -/* Legacy content-view styling (now within accordion) */
881 +.content-view {
882 + font-size: 14px;
883 + line-height: 1.5;
884 +}
885 +
1038 886 .content-edit {
1039 887 width: 100%;
1040 888 min-height: 100px;
1041 889 border: 1px solid #ddd;
@@ -1280,36 +1128,20 @@
1280 1128
1281 1129 .mxchat-kb-modal-content {
1282 1130 position: relative;
1283 1131 background-color: #fff;
1284 - margin: 24px auto;
1132 + margin: 50px auto;
1285 1133 padding: 0;
1286 1134 border-radius: 8px;
1287 1135 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1288 1136 width: 90%;
1289 1137 max-width: 1000px;
1290 - /* The box is the ONLY place height is constrained; children flex within it.
1291 - dvh tracks the real visible viewport on mobile (vh line = older-browser fallback). */
1292 1138 max-height: 85vh;
1293 - max-height: min(85vh, calc(100dvh - 48px));
1294 1139 display: flex;
1295 1140 flex-direction: column;
1296 1141 animation: mxchat-kb-modal-appear 0.3s ease-out;
1297 1142 }
1298 1143
1299 -/* Fixed chrome rows never grow or shrink — the results list is the only scroller. */
1300 -.mxchat-kb-modal-header,
1301 -.mxchat-kb-modal-filters,
1302 -.mxchat-kb-selection-header,
1303 -.mxchat-kb-modal-footer {
1304 - flex: 0 0 auto;
1305 -}
1306 -
1307 -/* The footer holds the primary actions — it can never be squeezed out of the box. */
1308 -.mxchat-kb-modal-footer {
1309 - flex-shrink: 0;
1310 -}
1311 -
1312 1144 @keyframes mxchat-kb-modal-appear {
1313 1145 from {
1314 1146 opacity: 0;
1315 1147 transform: translateY(-30px);
@@ -1423,15 +1255,12 @@
1423 1255 border-left: 3px solid #1e88e5;
1424 1256 }
1425 1257
1426 1258 .mxchat-kb-content-selection {
1427 - /* Flexible middle region: header row stays put, the list below scrolls.
1428 - min-height: 0 is load-bearing — without it flex refuses to shrink this
1429 - column and the footer gets pushed out of the box (the mobile bug). */
1430 - flex: 1 1 auto;
1431 - min-height: 0;
1432 - display: flex;
1433 - flex-direction: column;
1259 + overflow-y: auto;
1260 + flex: 1;
1261 + min-height: 300px;
1262 + max-height: calc(85vh - 200px);
1434 1263 }
1435 1264
1436 1265 .mxchat-kb-selection-header {
1437 1266 display: flex;
@@ -1459,12 +1288,8 @@
1459 1288 }
1460 1289
1461 1290 .mxchat-kb-content-list {
1462 1291 padding: 0;
1463 - /* The one and only scroller inside the modal. */
1464 - flex: 1 1 auto;
1465 - min-height: 0;
1466 - overflow-y: auto;
1467 1292 }
1468 1293
1469 1294 .mxchat-kb-content-item {
1470 1295 display: flex;
@@ -1579,28 +1404,14 @@
1579 1404 .mxchat-kb-modal-footer {
1580 1405 padding: 15px 20px;
1581 1406 border-top: 1px solid #e5e5e5;
1582 1407 display: flex;
1583 - justify-content: space-between;
1584 - align-items: center;
1585 - gap: 15px;
1408 + justify-content: flex-end;
1409 + gap: 10px;
1586 1410 background-color: #f8f9fa;
1587 1411 border-radius: 0 0 8px 8px;
1588 1412 }
1589 1413
1590 -.mxchat-kb-modal-footer .mxchat-kb-pagination {
1591 - flex: 1;
1592 - margin: 0;
1593 - padding: 0;
1594 - text-align: left;
1595 -}
1596 -
1597 -.mxchat-kb-footer-actions {
1598 - display: flex;
1599 - gap: 10px;
1600 - flex-shrink: 0;
1601 -}
1602 -
1603 1414 .mxchat-kb-button-primary,
1604 1415 .mxchat-kb-button-secondary {
1605 1416 padding: 8px 15px;
1606 1417 border-radius: 4px;
@@ -1850,19 +1661,9 @@
1850 1661
1851 1662 .mxchat-search-group input {
1852 1663 width: 100%;
1853 1664 }
1854 -
1855 - /* ADDED 2.5.6: Responsive filter dropdown */
1856 - .mxchat-filter-group {
1857 - margin-left: 0;
1858 - width: 100%;
1859 - }
1860 -
1861 - .mxchat-filter-group select {
1862 - width: 100%;
1863 - }
1864 -
1665 +
1865 1666 .mxchat-url-input-group {
1866 1667 flex-direction: column;
1867 1668 }
1868 1669
@@ -1877,83 +1678,40 @@
1877 1678
1878 1679 /* Modal responsive adjustments */
1879 1680 .mxchat-kb-modal-content {
1880 1681 width: 95%;
1881 - /* dvh = real visible viewport (mobile vh includes the URL-bar region);
1882 - vh line is the older-browser fallback. */
1883 - max-height: calc(100vh - 24px);
1884 - max-height: calc(100dvh - 24px);
1885 - margin: 12px auto;
1886 - /* Last-resort scroll: on extreme-short viewports (landscape phones)
1887 - the compacted chrome + the list's floor can still exceed the box —
1888 - scroll inside the box rather than clipping the footer. */
1889 - overflow-y: auto;
1682 + max-height: 90vh;
1683 + margin: 20px auto;
1890 1684 }
1891 -
1892 - /* Compact the fixed chrome on mobile — stacked filters + a stacked footer
1893 - are tall, and every saved pixel goes to the content list. */
1894 - .mxchat-kb-modal-header {
1895 - padding: 12px 16px;
1896 - }
1897 -
1898 - .mxchat-kb-modal-header h3 {
1899 - font-size: 16px;
1900 - }
1901 -
1685 +
1902 1686 .mxchat-kb-modal-filters {
1903 1687 flex-direction: column;
1904 1688 align-items: stretch;
1905 - padding: 10px 16px;
1906 - gap: 8px;
1907 1689 }
1908 -
1690 +
1909 1691 .mxchat-kb-search-group {
1910 1692 max-width: none;
1911 1693 }
1912 -
1694 +
1913 1695 .mxchat-kb-filter-group {
1914 1696 flex-direction: column;
1915 - gap: 8px;
1916 1697 }
1917 -
1918 - .mxchat-kb-filter-group select {
1919 - padding: 6px 30px 6px 10px;
1698 +
1699 + .mxchat-kb-content-selection {
1700 + max-height: calc(90vh - 250px);
1920 1701 }
1921 -
1702 +
1922 1703 .mxchat-kb-selection-header {
1923 1704 flex-direction: column;
1924 1705 align-items: flex-start;
1925 - gap: 6px;
1926 - padding: 10px 16px;
1706 + gap: 10px;
1927 1707 }
1928 -
1929 - /* Guarantee a usable slice of visible rows — reachable buttons are no
1930 - help if there is nothing to select above them. */
1931 - .mxchat-kb-content-list {
1932 - min-height: 96px;
1933 - }
1934 -
1935 - .mxchat-kb-content-item {
1936 - padding: 10px 16px;
1937 - }
1938 -
1708 +
1939 1709 .mxchat-kb-modal-footer {
1940 1710 flex-direction: column;
1941 - gap: 8px;
1942 - padding: 10px 16px;
1943 1711 }
1944 -
1945 - .mxchat-kb-modal-footer .mxchat-kb-pagination {
1946 - width: 100%;
1947 - text-align: center;
1948 - }
1949 -
1950 - .mxchat-kb-footer-actions {
1951 - width: 100%;
1952 - flex-direction: column;
1953 - }
1954 -
1955 - .mxchat-kb-button-primary,
1712 +
1713 + .mxchat-kb-button-primary,
1956 1714 .mxchat-kb-button-secondary {
1957 1715 width: 100%;
1958 1716 }
1959 1717
@@ -2304,1761 +2062,5 @@
2304 2062
2305 2063 /* Make the first card in tabs not have top margin */
2306 2064 .mxchat-kb-tab-content .mxchat-card:first-child {
2307 2065 margin-top: 0;
2308 -}
2309 -
2310 -
2311 -
2312 -
2313 -
2314 -
2315 -/* Pinecone Settings Tab Styles */
2316 -.mxchat-pinecone-info-box {
2317 - background: #f8f9ff;
2318 - border: 1px solid rgba(120, 115, 245, 0.2);
2319 - border-radius: 10px;
2320 - padding: 20px;
2321 - margin: 20px 0;
2322 - display: flex;
2323 - align-items: flex-start;
2324 - gap: 15px;
2325 -}
2326 -
2327 -.mxchat-info-icon {
2328 - flex-shrink: 0;
2329 -}
2330 -
2331 -.mxchat-info-icon .dashicons {
2332 - color: #7873f5;
2333 - font-size: 24px;
2334 - width: 24px;
2335 - height: 24px;
2336 -}
2337 -
2338 -.mxchat-info-content {
2339 - flex: 1;
2340 -}
2341 -
2342 -.mxchat-info-content h4 {
2343 - margin: 0 0 10px 0;
2344 - color: #333;
2345 - font-size: 16px;
2346 -}
2347 -
2348 -.mxchat-info-content p {
2349 - margin: 0 0 8px 0;
2350 - color: #666;
2351 - font-size: 14px;
2352 - line-height: 1.5;
2353 -}
2354 -
2355 -.mxchat-info-content p:last-child {
2356 - margin-bottom: 0;
2357 -}
2358 -
2359 -.mxchat-info-content a {
2360 - color: #7873f5;
2361 - text-decoration: none;
2362 - font-weight: 500;
2363 -}
2364 -
2365 -.mxchat-info-content a:hover {
2366 - text-decoration: underline;
2367 -}
2368 -
2369 -/* Database Settings Form */
2370 -.mxchat-database-settings-form {
2371 - margin-top: 25px;
2372 -}
2373 -
2374 -/* Toggle Container */
2375 -.mxchat-toggle-container {
2376 - display: flex;
2377 - align-items: center;
2378 - gap: 12px;
2379 - margin: 20px 0;
2380 - padding: 15px 0;
2381 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2382 -}
2383 -
2384 -.mxchat-toggle-switch {
2385 - position: relative;
2386 - display: inline-block;
2387 - width: 50px;
2388 - height: 26px;
2389 -}
2390 -
2391 -.mxchat-toggle-switch input {
2392 - opacity: 0;
2393 - width: 0;
2394 - height: 0;
2395 -}
2396 -
2397 -.mxchat-toggle-slider {
2398 - position: absolute;
2399 - cursor: pointer;
2400 - top: 0;
2401 - left: 0;
2402 - right: 0;
2403 - bottom: 0;
2404 - background-color: #ddd;
2405 - transition: 0.3s;
2406 - border-radius: 26px;
2407 -}
2408 -
2409 -.mxchat-toggle-slider:before {
2410 - position: absolute;
2411 - content: "";
2412 - height: 20px;
2413 - width: 20px;
2414 - left: 3px;
2415 - bottom: 3px;
2416 - background-color: white;
2417 - transition: 0.3s;
2418 - border-radius: 50%;
2419 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
2420 -}
2421 -
2422 -input:checked + .mxchat-toggle-slider {
2423 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2424 -}
2425 -
2426 -input:checked + .mxchat-toggle-slider:before {
2427 - transform: translateX(24px);
2428 -}
2429 -
2430 -.mxchat-toggle-label {
2431 - font-weight: 500;
2432 - color: #333;
2433 - font-size: 15px;
2434 -}
2435 -
2436 -/* Pinecone Settings Section */
2437 -.mxchat-pinecone-settings {
2438 - background: #f8f9ff;
2439 - border: 1px solid rgba(120, 115, 245, 0.2);
2440 - border-radius: 10px;
2441 - padding: 25px;
2442 - margin: 20px 0;
2443 -}
2444 -
2445 -/* Knowledge Warning (Success State) */
2446 -.mxchat-knowledge-warning.success {
2447 - background: #edfaef;
2448 - border-left: 4px solid #46b450;
2449 - padding: 15px;
2450 - margin: 0 0 20px 0;
2451 - border-radius: 4px;
2452 -}
2453 -
2454 -.mxchat-knowledge-warning.success p {
2455 - margin: 0;
2456 - color: #2a4f30;
2457 - align-items: center;
2458 - gap: 8px;
2459 -}
2460 -
2461 -.mxchat-knowledge-warning.success .dashicons {
2462 - color: #46b450;
2463 -}
2464 -
2465 -/* Form Groups */
2466 -.mxchat-form-group {
2467 - margin-bottom: 20px;
2468 -}
2469 -
2470 -.mxchat-form-group label {
2471 - display: block;
2472 - margin-bottom: 8px;
2473 - color: #333;
2474 - font-weight: 500;
2475 - font-size: 14px;
2476 -}
2477 -
2478 -.mxchat-form-group label .required {
2479 - color: #dc3232;
2480 - margin-left: 4px;
2481 -}
2482 -
2483 -.mxchat-form-group input[type="text"],
2484 -.mxchat-form-group input[type="password"] {
2485 - width: 100%;
2486 - max-width: 400px;
2487 - padding: 10px 12px;
2488 - border: 1px solid rgba(120, 115, 245, 0.2);
2489 - border-radius: 6px;
2490 - background: white;
2491 - font-size: 14px;
2492 - transition: border-color 0.2s ease, box-shadow 0.2s ease;
2493 -}
2494 -
2495 -.mxchat-form-group input[type="text"]:focus,
2496 -.mxchat-form-group input[type="password"]:focus {
2497 - border-color: #7873f5;
2498 - outline: none;
2499 - box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
2500 -}
2501 -
2502 -.mxchat-form-group .description {
2503 - margin: 8px 0 0 0;
2504 - color: #666;
2505 - font-size: 13px;
2506 - line-height: 1.4;
2507 -}
2508 -
2509 -.mxchat-form-group .description a {
2510 - color: #7873f5;
2511 - text-decoration: none;
2512 - font-weight: 500;
2513 -}
2514 -
2515 -.mxchat-form-group .description a:hover {
2516 - text-decoration: underline;
2517 -}
2518 -
2519 -/* Setup Help Section */
2520 -.mxchat-pinecone-setup-help {
2521 - background: white;
2522 - border: 1px solid rgba(120, 115, 245, 0.1);
2523 - border-radius: 8px;
2524 - padding: 20px;
2525 - margin-top: 25px;
2526 -}
2527 -
2528 -.mxchat-pinecone-setup-help h3 {
2529 - margin: 0 0 15px 0;
2530 - color: #333;
2531 - font-size: 16px;
2532 -}
2533 -
2534 -.mxchat-pinecone-setup-help ol {
2535 - margin: 0;
2536 - padding-left: 20px;
2537 -}
2538 -
2539 -.mxchat-pinecone-setup-help li {
2540 - margin-bottom: 12px;
2541 - color: #666;
2542 - line-height: 1.5;
2543 -}
2544 -
2545 -.mxchat-pinecone-setup-help li:last-child {
2546 - margin-bottom: 0;
2547 -}
2548 -
2549 -.mxchat-pinecone-setup-help ul {
2550 - margin: 8px 0;
2551 - padding-left: 20px;
2552 -}
2553 -
2554 -.mxchat-pinecone-setup-help ul li {
2555 - margin-bottom: 6px;
2556 - font-size: 13px;
2557 -}
2558 -
2559 -.mxchat-pinecone-setup-help a {
2560 - color: #7873f5;
2561 - text-decoration: none;
2562 - font-weight: 500;
2563 -}
2564 -
2565 -.mxchat-pinecone-setup-help a:hover {
2566 - text-decoration: underline;
2567 -}
2568 -
2569 -/* Connection Status Section */
2570 -.mxchat-pinecone-status-section {
2571 - background: white;
2572 - border: 1px solid rgba(120, 115, 245, 0.1);
2573 - border-radius: 8px;
2574 - padding: 20px;
2575 - margin-top: 25px;
2576 -}
2577 -
2578 -.mxchat-pinecone-status-section h3 {
2579 - margin: 0 0 15px 0;
2580 - color: #333;
2581 - font-size: 16px;
2582 -}
2583 -
2584 -#mxchat-pinecone-test-connection {
2585 - margin-bottom: 15px;
2586 -}
2587 -
2588 -#test-pinecone-connection {
2589 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2590 - color: white;
2591 - border: none;
2592 - padding: 10px 20px;
2593 - border-radius: 6px;
2594 - cursor: pointer;
2595 - font-size: 14px;
2596 - font-weight: 500;
2597 - transition: all 0.2s ease;
2598 -}
2599 -
2600 -#test-pinecone-connection:hover:not(:disabled) {
2601 - transform: translateY(-1px);
2602 - box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
2603 -}
2604 -
2605 -#test-pinecone-connection:disabled {
2606 - opacity: 0.6;
2607 - cursor: not-allowed;
2608 - transform: none;
2609 -}
2610 -
2611 -/* Test Result Styles */
2612 -.mxchat-test-result {
2613 - margin-top: 15px;
2614 -}
2615 -
2616 -.mxchat-test-result .notice {
2617 - margin: 0;
2618 - padding: 12px 15px;
2619 - border-radius: 6px;
2620 - display: flex;
2621 - align-items: center;
2622 - gap: 8px;
2623 -}
2624 -
2625 -.mxchat-test-result .notice-success {
2626 - background: #edfaef;
2627 - border-left: 4px solid #46b450;
2628 - color: #2a4f30;
2629 -}
2630 -
2631 -.mxchat-test-result .notice-error {
2632 - background: #fbeaea;
2633 - border-left: 4px solid #dc3232;
2634 - color: #721c24;
2635 -}
2636 -
2637 -.mxchat-test-result .notice .dashicons {
2638 - flex-shrink: 0;
2639 -}
2640 -
2641 -.mxchat-test-result .notice p {
2642 - margin: 0;
2643 - font-size: 14px;
2644 -}
2645 -
2646 -/* Compatibility Notice */
2647 -.mxchat-pinecone-compatibility-notice {
2648 - background: #e8f4ff;
2649 - border-left: 4px solid #2196f3;
2650 - padding: 15px;
2651 - margin: 0 0 20px 0;
2652 - border-radius: 4px;
2653 -}
2654 -
2655 -.mxchat-pinecone-compatibility-notice p {
2656 - margin: 0;
2657 - color: #1565c0;
2658 - font-size: 14px;
2659 - line-height: 1.5;
2660 -}
2661 -
2662 -/* Responsive Design */
2663 -@media screen and (max-width: 782px) {
2664 - .mxchat-pinecone-info-box {
2665 - flex-direction: column;
2666 - gap: 10px;
2667 - }
2668 -
2669 - .mxchat-toggle-container {
2670 - flex-direction: column;
2671 - align-items: flex-start;
2672 - gap: 8px;
2673 - }
2674 -
2675 - .mxchat-form-group input[type="text"],
2676 - .mxchat-form-group input[type="password"] {
2677 - max-width: 100%;
2678 - }
2679 -
2680 - .mxchat-pinecone-settings {
2681 - padding: 15px;
2682 - }
2683 -
2684 - .mxchat-pinecone-setup-help,
2685 - .mxchat-pinecone-status-section {
2686 - padding: 15px;
2687 - }
2688 -}
2689 -
2690 -
2691 -/* Setup Steps */
2692 -.mxchat-setup-steps {
2693 - margin: 30px 0;
2694 - padding: 20px;
2695 - background: #fff;
2696 - border-radius: 10px;
2697 -}
2698 -
2699 -.mxchat-setup-step {
2700 - display: flex;
2701 - align-items: flex-start;
2702 - margin-bottom: 20px;
2703 -}
2704 -
2705 -.step-number {
2706 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2707 - color: white;
2708 - width: 28px;
2709 - height: 28px;
2710 - border-radius: 50%;
2711 - display: flex;
2712 - align-items: center;
2713 - justify-content: center;
2714 - font-weight: bold;
2715 - margin-right: 15px;
2716 - flex-shrink: 0;
2717 -}
2718 -
2719 -.step-content {
2720 - flex: 1;
2721 -}
2722 -
2723 -.step-content h4 {
2724 - margin: 0 0 5px 0;
2725 -}
2726 -
2727 -.step-content p {
2728 - margin: 0;
2729 - color: #666;
2730 -}
2731 -
2732 -.step-content ul {
2733 - margin-top: 5px;
2734 - margin-bottom: 0;
2735 - color: #666;
2736 -}
2737 -
2738 -
2739 -
2740 -/* ===== Role-Based Content Restrictions Styles ===== */
2741 -
2742 -/* Role mapping form */
2743 -.mxchat-role-mapping-form {
2744 - margin-top: 20px;
2745 - padding: 20px;
2746 - background-color: #f8f9ff;
2747 - border-radius: 8px;
2748 - border: 1px solid rgba(120, 115, 245, 0.1);
2749 -}
2750 -
2751 -.mxchat-role-mapping-form h4 {
2752 - margin-top: 0;
2753 - margin-bottom: 15px;
2754 - font-size: 16px;
2755 - color: #333;
2756 -}
2757 -
2758 -.mxchat-form-row {
2759 - display: flex;
2760 - gap: 15px;
2761 - align-items: flex-end;
2762 - margin-bottom: 20px;
2763 -}
2764 -
2765 -/* Role mappings table */
2766 -.mxchat-mappings-table {
2767 - width: 100%;
2768 - border-collapse: collapse;
2769 - margin-top: 15px;
2770 - background: #fff;
2771 - box-shadow: 0 1px 3px rgba(120, 115, 245, 0.08);
2772 - border-radius: 8px;
2773 - overflow: hidden;
2774 -}
2775 -
2776 -.mxchat-mappings-table th,
2777 -.mxchat-mappings-table td {
2778 - padding: 15px;
2779 - text-align: left;
2780 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2781 -}
2782 -
2783 -.mxchat-mappings-table th {
2784 - background: #f8f9ff;
2785 - font-weight: 600;
2786 - color: #333;
2787 - font-size: 14px;
2788 -}
2789 -
2790 -.mxchat-mappings-table tbody tr {
2791 - transition: background-color 0.2s ease;
2792 -}
2793 -
2794 -.mxchat-mappings-table tbody tr:hover {
2795 - background: rgba(120, 115, 245, 0.03);
2796 -}
2797 -
2798 -.mxchat-mappings-table tbody tr:last-child td {
2799 - border-bottom: none;
2800 -}
2801 -
2802 -/* Tag and role badges */
2803 -.mxchat-tag-badge {
2804 - display: inline-flex;
2805 - align-items: center;
2806 - gap: 5px;
2807 - padding: 5px 12px;
2808 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2809 - color: #fff;
2810 - border-radius: 4px;
2811 - font-size: 13px;
2812 - font-weight: 500;
2813 -}
2814 -
2815 -.mxchat-tag-badge .dashicons {
2816 - font-size: 16px;
2817 - width: 16px;
2818 - height: 16px;
2819 -}
2820 -
2821 -.mxchat-role-badge {
2822 - display: inline-block;
2823 - padding: 5px 12px;
2824 - background: #f0f0f1;
2825 - color: #2c3338;
2826 - border-radius: 4px;
2827 - font-size: 13px;
2828 - font-weight: 500;
2829 -}
2830 -
2831 -/* Role-specific badge colors */
2832 -.mxchat-role-badge.public {
2833 - background: #e8f5e9;
2834 - color: #2e7d32;
2835 -}
2836 -
2837 -.mxchat-role-badge.logged_in {
2838 - background: #e3f2fd;
2839 - color: #1565c0;
2840 -}
2841 -
2842 -.mxchat-role-badge.subscriber {
2843 - background: #f3e5f5;
2844 - color: #7b1fa2;
2845 -}
2846 -
2847 -.mxchat-role-badge.contributor {
2848 - background: #fff3e0;
2849 - color: #e65100;
2850 -}
2851 -
2852 -.mxchat-role-badge.author {
2853 - background: #fff9c4;
2854 - color: #f57f17;
2855 -}
2856 -
2857 -.mxchat-role-badge.editor {
2858 - background: #fce4ec;
2859 - color: #c2185b;
2860 -}
2861 -
2862 -.mxchat-role-badge.administrator {
2863 - background: #ffebee;
2864 - color: #c62828;
2865 -}
2866 -
2867 -/* Mapping actions */
2868 -.mxchat-mapping-actions {
2869 - display: flex;
2870 - gap: 8px;
2871 - align-items: center;
2872 -}
2873 -
2874 -.mxchat-delete-mapping {
2875 - color: #d63638;
2876 - cursor: pointer;
2877 - padding: 6px 10px;
2878 - border-radius: 4px;
2879 - transition: all 0.2s ease;
2880 - display: inline-flex;
2881 - align-items: center;
2882 - gap: 4px;
2883 - background: transparent;
2884 - border: none;
2885 - font-size: 13px;
2886 -}
2887 -
2888 -.mxchat-delete-mapping:hover {
2889 - background: #fef0f0;
2890 - color: #b32d2e;
2891 -}
2892 -
2893 -.mxchat-delete-mapping .dashicons {
2894 - font-size: 18px;
2895 - width: 18px;
2896 - height: 18px;
2897 -}
2898 -
2899 -/* Post count display */
2900 -.mxchat-post-count {
2901 - color: #666;
2902 - font-size: 13px;
2903 - display: flex;
2904 - align-items: center;
2905 - gap: 4px;
2906 -}
2907 -
2908 -.mxchat-post-count .dashicons {
2909 - font-size: 16px;
2910 - width: 16px;
2911 - height: 16px;
2912 - color: #7873f5;
2913 -}
2914 -
2915 -/* Loading state for mappings */
2916 -.mxchat-loading-mappings {
2917 - text-align: center;
2918 - padding: 40px;
2919 - color: #666;
2920 -}
2921 -
2922 -.mxchat-role-spinner {
2923 - display: inline-block;
2924 - width: 20px;
2925 - height: 20px;
2926 - border: 2px solid rgba(120, 115, 245, 0.2);
2927 - border-top: 2px solid #7873f5;
2928 - border-radius: 50%;
2929 - animation: mxchat-role-spin 1s linear infinite;
2930 - margin-right: 10px;
2931 -}
2932 -
2933 -.mxchat-role-spinner.is-active {
2934 - display: inline-block;
2935 -}
2936 -
2937 -@keyframes mxchat-role-spin {
2938 - 0% { transform: rotate(0deg); }
2939 - 100% { transform: rotate(360deg); }
2940 -}
2941 -
2942 -/* Empty state */
2943 -#mxchat-no-mappings {
2944 - text-align: center;
2945 - padding: 40px;
2946 - color: #666;
2947 -}
2948 -
2949 -#mxchat-no-mappings .dashicons {
2950 - font-size: 48px;
2951 - opacity: 0.3;
2952 - margin-bottom: 15px;
2953 - display: block;
2954 -}
2955 -
2956 -#mxchat-no-mappings p {
2957 - margin: 0;
2958 - font-size: 14px;
2959 -}
2960 -
2961 -/* Bulk update section */
2962 -.mxchat-bulk-update-section {
2963 - margin-top: 30px;
2964 - padding-top: 30px;
2965 - border-top: 1px solid rgba(120, 115, 245, 0.1);
2966 -}
2967 -
2968 -.mxchat-bulk-update-section h4 {
2969 - margin-top: 0;
2970 - margin-bottom: 10px;
2971 - font-size: 16px;
2972 - color: #333;
2973 -}
2974 -
2975 -.mxchat-bulk-update-controls {
2976 - margin-top: 15px;
2977 -}
2978 -
2979 -#mxchat-bulk-update-roles {
2980 - display: inline-flex;
2981 - align-items: center;
2982 - gap: 8px;
2983 -}
2984 -
2985 -#mxchat-bulk-update-progress {
2986 - max-width: 600px;
2987 -}
2988 -
2989 -#mxchat-bulk-update-progress .mxchat-progress-bar {
2990 - height: 10px;
2991 - background: rgba(120, 115, 245, 0.1);
2992 - border-radius: 5px;
2993 - overflow: hidden;
2994 -}
2995 -
2996 -#mxchat-bulk-update-progress .mxchat-progress-fill {
2997 - height: 100%;
2998 - background: linear-gradient(135deg, #fa73e6, #7873f5);
2999 - transition: width 0.3s ease;
3000 -}
3001 -
3002 -.mxchat-progress-text {
3003 - margin-top: 10px;
3004 - color: #666;
3005 - font-size: 14px;
3006 -}
3007 -
3008 -/* Bulk update results */
3009 -#mxchat-bulk-update-result {
3010 - margin-top: 15px;
3011 - padding: 15px;
3012 - border-radius: 8px;
3013 -}
3014 -
3015 -#mxchat-bulk-update-result.success {
3016 - background-color: #f0f9eb;
3017 - border-left: 4px solid #67c23a;
3018 - color: #3c763d;
3019 -}
3020 -
3021 -#mxchat-bulk-update-result.error {
3022 - background-color: #fef0f0;
3023 - border-left: 4px solid #d63638;
3024 - color: #a94442;
3025 -}
3026 -
3027 -#mxchat-bulk-update-result h5 {
3028 - margin: 0 0 10px;
3029 - font-size: 15px;
3030 - font-weight: 600;
3031 -}
3032 -
3033 -#mxchat-bulk-update-result p {
3034 - margin: 5px 0;
3035 - font-size: 14px;
3036 -}
3037 -
3038 -/* Role mappings list container */
3039 -.mxchat-role-mappings-list {
3040 - margin-top: 25px;
3041 -}
3042 -
3043 -.mxchat-role-mappings-list h4 {
3044 - margin-top: 0;
3045 - margin-bottom: 15px;
3046 - font-size: 16px;
3047 - color: #333;
3048 -}
3049 -
3050 -/* Info banner styling (reuse existing pattern) */
3051 -.mxchat-role-info-banner {
3052 - display: flex;
3053 - align-items: center;
3054 - gap: 10px;
3055 - padding: 12px 16px;
3056 - margin-bottom: 20px;
3057 - border-radius: 6px;
3058 - font-size: 14px;
3059 - background: #f8f9ff;
3060 - border-left: 4px solid #7873f5;
3061 - color: #333;
3062 -}
3063 -
3064 -.mxchat-role-info-banner .dashicons {
3065 - color: #7873f5;
3066 - font-size: 18px;
3067 -}
3068 -
3069 -/* Responsive adjustments */
3070 -@media screen and (max-width: 782px) {
3071 - .mxchat-form-row {
3072 - flex-direction: column;
3073 - align-items: stretch;
3074 - }
3075 -
3076 - .mxchat-form-row .mxchat-form-group {
3077 - flex: 1;
3078 - max-width: none;
3079 - }
3080 -
3081 - .mxchat-form-row > div {
3082 - padding-bottom: 0;
3083 - }
3084 -
3085 - .mxchat-mappings-table {
3086 - display: block;
3087 - overflow-x: auto;
3088 - }
3089 -
3090 - .mxchat-mappings-table th,
3091 - .mxchat-mappings-table td {
3092 - padding: 10px;
3093 - font-size: 13px;
3094 - }
3095 -
3096 - .mxchat-mapping-actions {
3097 - flex-direction: column;
3098 - align-items: flex-start;
3099 - }
3100 -}
3101 -
3102 -/* RTL Support */
3103 -.rtl .mxchat-mappings-table th,
3104 -.rtl .mxchat-mappings-table td {
3105 - text-align: right;
3106 -}
3107 -
3108 -.rtl .mxchat-tag-badge {
3109 - flex-direction: row-reverse;
3110 -}
3111 -
3112 -.rtl .mxchat-role-info-banner {
3113 - border-left: none;
3114 - border-right: 4px solid #7873f5;
3115 -}
3116 -
3117 -.rtl .mxchat-bulk-update-section {
3118 - border-right: none;
3119 -}
3120 -
3121 -.rtl #mxchat-bulk-update-result {
3122 - border-left: none;
3123 - border-right: 4px solid;
3124 -}
3125 -
3126 -.rtl .mxchat-role-spinner {
3127 - margin-right: 0;
3128 - margin-left: 10px;
3129 -}
3130 -
3131 -/* ===== Chunk Grouping Styles ===== */
3132 -.mxchat-chunk-group-header {
3133 - background: rgba(120, 115, 245, 0.04) !important;
3134 - border-left: 3px solid #7873f5;
3135 -}
3136 -
3137 -.mxchat-chunk-group-header:hover {
3138 - background: rgba(120, 115, 245, 0.08) !important;
3139 -}
3140 -
3141 -.mxchat-chunk-group-info {
3142 - display: flex;
3143 - align-items: center;
3144 - gap: 12px;
3145 -}
3146 -
3147 -.mxchat-chunk-toggle {
3148 - flex-shrink: 0;
3149 - width: 28px;
3150 - height: 28px;
3151 - border: none;
3152 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
3153 - border-radius: 6px;
3154 - cursor: pointer;
3155 - display: inline-flex;
3156 - align-items: center;
3157 - justify-content: center;
3158 - transition: all 0.3s ease;
3159 - padding: 0;
3160 -}
3161 -
3162 -.mxchat-chunk-toggle:hover {
3163 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
3164 - transform: scale(1.05);
3165 -}
3166 -
3167 -.mxchat-chunk-toggle .dashicons {
3168 - font-size: 16px;
3169 - color: #7873f5;
3170 - transition: transform 0.3s ease;
3171 -}
3172 -
3173 -.mxchat-chunk-toggle.expanded .dashicons {
3174 - transform: rotate(90deg);
3175 -}
3176 -
3177 -.mxchat-chunk-badge {
3178 - display: inline-flex;
3179 - align-items: center;
3180 - padding: 4px 10px;
3181 - background: linear-gradient(135deg, #7873f5, #3ac9d1);
3182 - color: white;
3183 - border-radius: 12px;
3184 - font-size: 12px;
3185 - font-weight: 600;
3186 - white-space: nowrap;
3187 -}
3188 -
3189 -.mxchat-chunk-preview {
3190 - flex: 1;
3191 - color: #666;
3192 - font-size: 13px;
3193 - overflow: hidden;
3194 - text-overflow: ellipsis;
3195 - white-space: nowrap;
3196 -}
3197 -
3198 -.mxchat-chunk-row {
3199 - border-left: 3px solid #e0e0e0;
3200 -}
3201 -
3202 -.mxchat-chunk-row td:first-child {
3203 - padding-left: 30px !important;
3204 -}
3205 -
3206 -.mxchat-chunk-indicator {
3207 - display: inline-flex;
3208 - align-items: center;
3209 - padding: 2px 8px;
3210 - background: #f0f0f0;
3211 - color: #666;
3212 - border-radius: 4px;
3213 - font-size: 11px;
3214 - font-weight: 500;
3215 -}
3216 -
3217 -.mxchat-chunk-label {
3218 - color: #999;
3219 - font-size: 12px;
3220 - font-style: italic;
3221 -}
3222 -
3223 -/* Delete button for chunk groups */
3224 -.delete-button-group {
3225 - background: none;
3226 - border: none;
3227 - cursor: pointer;
3228 - padding: 4px;
3229 - border-radius: 4px;
3230 - transition: all 0.2s ease;
3231 -}
3232 -
3233 -.delete-button-group:hover {
3234 - background: rgba(255, 0, 0, 0.1);
3235 -}
3236 -
3237 -.delete-button-group .dashicons {
3238 - color: #dc3545;
3239 -}
3240 -
3241 -.delete-button-group .dashicons.spin {
3242 - animation: mxchat-spin 1s linear infinite;
3243 -}
3244 -
3245 -@keyframes mxchat-spin {
3246 - from { transform: rotate(0deg); }
3247 - to { transform: rotate(360deg); }
3248 -}
3249 -
3250 -/* ===== Sitemap Detection Styles ===== */
3251 -.dashicons.spin {
3252 - animation: mxchat-spin 1s linear infinite;
3253 -}
3254 -
3255 -.mxchat-sitemap-group.expanded .mxchat-sitemap-sub-list {
3256 - display: block !important;
3257 -}
3258 -
3259 -.mxchat-sitemap-group.expanded .dashicons-arrow-right-alt2 {
3260 - transform: rotate(90deg) !important;
3261 -}
3262 -
3263 -.mxchat-sitemap-row:last-child {
3264 - border-bottom: none !important;
3265 -}
3266 -
3267 -.mxchat-detected-sitemaps {
3268 - margin-top: 24px;
3269 -}
3270 -
3271 -.mxchat-sitemaps-header {
3272 - display: flex;
3273 - align-items: center;
3274 - justify-content: space-between;
3275 - margin-bottom: 16px;
3276 -}
3277 -
3278 -.mxchat-sitemaps-header h4 {
3279 - margin: 0;
3280 - display: flex;
3281 - align-items: center;
3282 - gap: 8px;
3283 -}
3284 -
3285 -.mxchat-sitemaps-header h4 .dashicons {
3286 - color: #7873f5;
3287 -}
3288 -
3289 -.mxchat-sitemap-group {
3290 - margin-bottom: 16px;
3291 - border: 1px solid rgba(120, 115, 245, 0.2);
3292 - border-radius: 8px;
3293 - overflow: hidden;
3294 -}
3295 -
3296 -.mxchat-sitemap-group-header {
3297 - padding: 12px 16px;
3298 - background: #f8fafc;
3299 - display: flex;
3300 - align-items: center;
3301 - justify-content: space-between;
3302 - cursor: pointer;
3303 - transition: background-color 0.2s ease;
3304 -}
3305 -
3306 -.mxchat-sitemap-group-header:hover {
3307 - background: #f0f4f8;
3308 -}
3309 -
3310 -.mxchat-sitemap-sub-list {
3311 - display: none;
3312 - border-top: 1px solid rgba(120, 115, 245, 0.2);
3313 -}
3314 -
3315 -.mxchat-sitemap-row {
3316 - padding: 12px 16px;
3317 - display: flex;
3318 - align-items: center;
3319 - justify-content: space-between;
3320 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
3321 -}
3322 -
3323 -.mxchat-sitemap-row.sub-item {
3324 - padding-left: 40px;
3325 -}
3326 -
3327 -.mxchat-sitemaps-loading {
3328 - margin-top: 24px;
3329 - padding: 20px;
3330 - text-align: center;
3331 -}
3332 -
3333 -.mxchat-sitemaps-loading .dashicons {
3334 - font-size: 20px;
3335 - color: #7873f5;
3336 -}
3337 -
3338 -.mxchat-sitemaps-loading p {
3339 - margin: 8px 0 0;
3340 - color: #666;
3341 -}
3342 -
3343 -.mxchat-no-sitemaps {
3344 - margin-top: 24px;
3345 - padding: 20px;
3346 - background: #f8fafc;
3347 - border-radius: 8px;
3348 - text-align: center;
3349 -}
3350 -
3351 -.mxchat-no-sitemaps .dashicons {
3352 - font-size: 24px;
3353 - color: #999;
3354 - margin-bottom: 8px;
3355 -}
3356 -
3357 -.mxchat-no-sitemaps p {
3358 - margin: 0;
3359 - color: #666;
3360 -}
3361 -
3362 -/* ===== Admin Notice Dismiss Button Styles ===== */
3363 -.notice.is-dismissible {
3364 - position: relative;
3365 - padding-right: 38px;
3366 -}
3367 -
3368 -.notice-dismiss {
3369 - position: absolute;
3370 - top: 50%;
3371 - right: 8px;
3372 - transform: translateY(-50%);
3373 - padding: 0;
3374 - background: none;
3375 - border: none;
3376 - cursor: pointer;
3377 - color: #787c82;
3378 - width: 24px;
3379 - height: 24px;
3380 - display: flex;
3381 - align-items: center;
3382 - justify-content: center;
3383 - transition: color 0.2s ease;
3384 -}
3385 -
3386 -.notice-dismiss:hover {
3387 - color: #d63638;
3388 -}
3389 -
3390 -.notice-dismiss:before {
3391 - content: "\f153";
3392 - font-family: dashicons;
3393 - font-size: 16px;
3394 - line-height: 1;
3395 -}
3396 -
3397 -.notice-dismiss .screen-reader-text {
3398 - position: absolute;
3399 - width: 1px;
3400 - height: 1px;
3401 - padding: 0;
3402 - margin: -1px;
3403 - overflow: hidden;
3404 - clip: rect(0, 0, 0, 0);
3405 - white-space: nowrap;
3406 - border: 0;
3407 -}
3408 -
3409 -/* ===== AJAX Pagination Styles ===== */
3410 -.mxchat-kb-pagination-wrapper {
3411 - background: #f8fafc;
3412 -}
3413 -
3414 -.mxchat-ajax-pagination {
3415 - display: flex;
3416 - align-items: center;
3417 - justify-content: center;
3418 - gap: 8px;
3419 - flex-wrap: wrap;
3420 -}
3421 -
3422 -.mxchat-page-link {
3423 - display: inline-flex;
3424 - align-items: center;
3425 - justify-content: center;
3426 - min-width: 36px;
3427 - height: 36px;
3428 - padding: 0 12px;
3429 - background: #fff;
3430 - border: 1px solid var(--mxch-card-border, #e5e7eb);
3431 - border-radius: 6px;
3432 - color: var(--mxch-text-primary, #1f2937);
3433 - text-decoration: none;
3434 - font-size: 13px;
3435 - font-weight: 500;
3436 - transition: all 0.2s ease;
3437 - cursor: pointer;
3438 -}
3439 -
3440 -.mxchat-page-link:hover {
3441 - background: var(--mxch-primary, #7873f5);
3442 - border-color: var(--mxch-primary, #7873f5);
3443 - color: #fff;
3444 - text-decoration: none;
3445 -}
3446 -
3447 -.mxchat-page-link.loading {
3448 - opacity: 0.6;
3449 - pointer-events: none;
3450 -}
3451 -
3452 -.mxchat-page-current {
3453 - display: inline-flex;
3454 - align-items: center;
3455 - justify-content: center;
3456 - min-width: 36px;
3457 - height: 36px;
3458 - padding: 0 12px;
3459 - background: var(--mxch-primary, #7873f5);
3460 - border: 1px solid var(--mxch-primary, #7873f5);
3461 - border-radius: 6px;
3462 - color: #fff;
3463 - font-size: 13px;
3464 - font-weight: 600;
3465 -}
3466 -
3467 -.mxchat-page-dots {
3468 - display: inline-flex;
3469 - align-items: center;
3470 - justify-content: center;
3471 - min-width: 24px;
3472 - height: 36px;
3473 - color: var(--mxch-text-muted, #9ca3af);
3474 - font-size: 14px;
3475 -}
3476 -
3477 -.mxchat-pagination-loading {
3478 - margin-left: 12px;
3479 -}
3480 -
3481 -.mxchat-pagination-loading .dashicons {
3482 - color: var(--mxch-primary, #7873f5);
3483 -}
3484 -
3485 -/* Spin animation for loading indicator */
3486 -@keyframes mxchat-spin {
3487 - from { transform: rotate(0deg); }
3488 - to { transform: rotate(360deg); }
3489 -}
3490 -
3491 -.mxchat-pagination-loading .spin,
3492 -.mxchat-ajax-pagination .spin {
3493 - animation: mxchat-spin 1s linear infinite;
3494 -}
3495 -
3496 -/* Mobile responsive pagination */
3497 -@media (max-width: 600px) {
3498 - .mxchat-ajax-pagination {
3499 - gap: 4px;
3500 - }
3501 -
3502 - .mxchat-page-link,
3503 - .mxchat-page-current {
3504 - min-width: 32px;
3505 - height: 32px;
3506 - padding: 0 8px;
3507 - font-size: 12px;
3508 - }
3509 -
3510 - .mxchat-page-dots {
3511 - min-width: 20px;
3512 - }
3513 -}
3514 -
3515 -/* ========================================
3516 - BULK SELECTION STYLES
3517 - ======================================== */
3518 -
3519 -/* Bulk Actions Toolbar */
3520 -.mxchat-bulk-toolbar {
3521 - display: flex;
3522 - align-items: center;
3523 - gap: 12px;
3524 - padding: 12px 16px;
3525 - background: #f8fafc;
3526 - border: 1px solid var(--mxch-card-border);
3527 - border-bottom: none;
3528 - border-radius: var(--mxch-radius-md) var(--mxch-radius-md) 0 0;
3529 -}
3530 -
3531 -.mxchat-bulk-select-label {
3532 - display: flex;
3533 - align-items: center;
3534 - gap: 6px;
3535 - font-size: 13px;
3536 - color: var(--mxch-text-secondary);
3537 - cursor: pointer;
3538 -}
3539 -
3540 -.mxchat-bulk-select-label:hover {
3541 - color: var(--mxch-text-primary);
3542 -}
3543 -
3544 -.mxchat-entry-checkbox,
3545 -.mxchat-entry-checkbox-all {
3546 - width: 16px;
3547 - height: 16px;
3548 - cursor: pointer;
3549 - accent-color: var(--mxch-primary, #7873f5);
3550 -}
3551 -
3552 -.mxchat-bulk-actions {
3553 - display: flex;
3554 - align-items: center;
3555 - gap: 8px;
3556 - margin-left: auto;
3557 -}
3558 -
3559 -.mxchat-bulk-delete {
3560 - display: flex;
3561 - align-items: center;
3562 - gap: 6px;
3563 - color: var(--mxch-error, #dc2626) !important;
3564 - border-color: #fecaca !important;
3565 - background: transparent !important;
3566 -}
3567 -
3568 -.mxchat-bulk-delete:hover:not(:disabled) {
3569 - background: #fef2f2 !important;
3570 - border-color: #fca5a5 !important;
3571 -}
3572 -
3573 -.mxchat-bulk-delete:disabled {
3574 - opacity: 0.5;
3575 - cursor: not-allowed;
3576 -}
3577 -
3578 -.mxchat-selected-count {
3579 - font-size: 12px;
3580 - color: var(--mxch-primary, #7873f5);
3581 - font-weight: 600;
3582 - margin-left: 4px;
3583 -}
3584 -
3585 -/* Delete container - holds Delete All form and Delete Selected button */
3586 -.mxchat-delete-container {
3587 - display: flex;
3588 - align-items: center;
3589 -}
3590 -
3591 -/* Selected row highlighting */
3592 -#mxchat-records-table tr.selected {
3593 - background-color: rgba(120, 115, 245, 0.05) !important;
3594 -}
3595 -
3596 -#mxchat-records-table tr.selected td:first-child {
3597 - position: relative;
3598 -}
3599 -
3600 -#mxchat-records-table tr.selected td:first-child::before {
3601 - content: '';
3602 - position: absolute;
3603 - left: 0;
3604 - top: 0;
3605 - bottom: 0;
3606 - width: 3px;
3607 - background: var(--mxch-primary, #7873f5);
3608 -}
3609 -
3610 -/* Deleting state */
3611 -tr.mxchat-row-deleting {
3612 - opacity: 0.5;
3613 - pointer-events: none;
3614 -}
3615 -
3616 -/* Error state for failed deletions */
3617 -tr.mxchat-row-error {
3618 - background-color: rgba(220, 38, 38, 0.05) !important;
3619 -}
3620 -
3621 -tr.mxchat-row-error td:first-child {
3622 - position: relative;
3623 -}
3624 -
3625 -tr.mxchat-row-error td:first-child::before {
3626 - content: '';
3627 - position: absolute;
3628 - left: 0;
3629 - top: 0;
3630 - bottom: 0;
3631 - width: 3px;
3632 - background: var(--mxch-error, #dc2626);
3633 -}
3634 -
3635 -/* Spin animation for loading states */
3636 -.spin {
3637 - animation: mxchat-spin 1s linear infinite;
3638 -}
3639 -
3640 -/* Responsive adjustments for bulk toolbar */
3641 -@media (max-width: 768px) {
3642 - .mxchat-bulk-toolbar {
3643 - flex-wrap: wrap;
3644 - gap: 8px;
3645 - }
3646 -
3647 - .mxchat-bulk-delete-text {
3648 - display: none;
3649 - }
3650 -
3651 - .mxchat-bulk-actions {
3652 - margin-left: 0;
3653 - }
3654 -}
3655 -
3656 -/* ==========================================================================
3657 - Knowledge Base - Mobile Responsive
3658 - ========================================================================== */
3659 -
3660 -/* Desktop defaults for KB header controls */
3661 -.mxch-kb-header-controls {
3662 - display: flex;
3663 - gap: 10px;
3664 - align-items: center;
3665 -}
3666 -
3667 -.mxch-kb-search-form {
3668 - display: flex;
3669 - gap: 10px;
3670 -}
3671 -
3672 -.mxch-kb-search-input {
3673 - width: 200px;
3674 -}
3675 -
3676 -.mxch-kb-type-filter {
3677 - width: auto;
3678 -}
3679 -
3680 -/* Mobile: Knowledge Base card header stacks vertically */
3681 -@media screen and (max-width: 960px) {
3682 - /* Stack card header vertically */
3683 - #knowledge-base .mxch-card-header {
3684 - flex-direction: column;
3685 - align-items: stretch;
3686 - gap: 12px;
3687 - padding: 12px 16px;
3688 - }
3689 -
3690 - /* Title row wraps badges */
3691 - #knowledge-base .mxch-card-title {
3692 - flex-wrap: wrap;
3693 - font-size: 14px;
3694 - }
3695 -
3696 - /* Controls stack vertically */
3697 - .mxch-kb-header-controls {
3698 - flex-direction: column;
3699 - align-items: stretch;
3700 - gap: 8px;
3701 - width: 100%;
3702 - }
3703 -
3704 - /* Search form wraps */
3705 - .mxch-kb-search-form {
3706 - flex-wrap: wrap;
3707 - gap: 8px;
3708 - width: 100%;
3709 - }
3710 -
3711 - /* Search input takes full width */
3712 - .mxch-kb-search-input {
3713 - width: 100% !important;
3714 - flex: 1;
3715 - min-width: 0;
3716 - }
3717 -
3718 - /* Filter dropdown takes full width */
3719 - .mxch-kb-type-filter {
3720 - width: 100% !important;
3721 - flex: 1;
3722 - min-width: 0;
3723 - }
3724 -
3725 - /* Delete container full width */
3726 - .mxchat-delete-container {
3727 - width: 100%;
3728 - }
3729 -
3730 - .mxchat-delete-container form,
3731 - .mxchat-delete-container .mxchat-bulk-delete {
3732 - width: 100%;
3733 - }
3734 -
3735 - .mxchat-delete-container .mxch-btn {
3736 - width: 100%;
3737 - justify-content: center;
3738 - }
3739 -
3740 - /* Table: hide ID and Source columns on mobile to save space */
3741 - .mxchat-records-table th:nth-child(2),
3742 - .mxchat-records-table td:nth-child(2) {
3743 - display: none;
3744 - }
3745 -
3746 - .mxchat-records-table th:nth-child(4),
3747 - .mxchat-records-table td:nth-child(4) {
3748 - display: none;
3749 - }
3750 -
3751 - /* Content column needs more room */
3752 - .mxchat-content-cell {
3753 - max-width: none !important;
3754 - }
3755 -
3756 - /* Table cells padding */
3757 - .mxchat-records-table th,
3758 - .mxchat-records-table td {
3759 - padding: 10px 8px !important;
3760 - }
3761 -
3762 - /* Pagination wraps nicely */
3763 - .mxchat-ajax-pagination {
3764 - flex-wrap: wrap;
3765 - justify-content: center;
3766 - }
3767 -}
3768 -
3769 -/* Small mobile: further adjustments */
3770 -@media screen and (max-width: 480px) {
3771 - #knowledge-base .mxch-card-header {
3772 - padding: 10px 12px;
3773 - }
3774 -
3775 - #knowledge-base .mxch-card-title {
3776 - font-size: 13px;
3777 - }
3778 -
3779 - /* Search form items fully stacked */
3780 - .mxch-kb-search-form {
3781 - flex-direction: column;
3782 - }
3783 -
3784 - /* Smaller table text */
3785 - .mxchat-records-table {
3786 - font-size: 12px;
3787 - }
3788 -
3789 - .mxchat-records-table th,
3790 - .mxchat-records-table td {
3791 - padding: 8px 6px !important;
3792 - }
3793 -
3794 - /* Also hide Actions header text but keep the column for delete buttons */
3795 - .mxchat-records-table th:nth-child(5) {
3796 - font-size: 0;
3797 - padding: 8px 4px !important;
3798 - width: 40px;
3799 - }
3800 -}
3801 -
3802 -/* ─── Edit Entry Modal ─── */
3803 -
3804 -.mxchat-edit-entry-btn {
3805 - color: var(--mxch-primary, #7873f5);
3806 -}
3807 -.mxchat-edit-entry-btn:hover {
3808 - color: var(--mxch-primary-dark, #5b56d6);
3809 - background: rgba(120, 115, 245, 0.08);
3810 -}
3811 -
3812 -.mxchat-kb-edit-modal-content {
3813 - max-width: 760px;
3814 - /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3815 - max-height: 90vh;
3816 - max-height: min(90vh, calc(100dvh - 24px));
3817 -}
3818 -
3819 -.mxchat-kb-edit-body {
3820 - flex: 1 1 auto;
3821 - /* min-height: 0 lets the body shrink inside the capped modal box so the
3822 - footer (Save/Cancel) can never be pushed below the viewport. */
3823 - min-height: 0;
3824 - display: flex;
3825 - flex-direction: column;
3826 - padding: 20px;
3827 - overflow: hidden;
3828 - gap: 12px;
3829 -}
3830 -
3831 -.mxchat-kb-edit-source {
3832 - font-size: 12px;
3833 - color: var(--mxch-text-muted, #6b7280);
3834 - word-break: break-all;
3835 -}
3836 -.mxchat-kb-edit-source a {
3837 - color: var(--mxch-primary, #7873f5);
3838 - text-decoration: none;
3839 -}
3840 -
3841 -.mxchat-kb-edit-textarea {
3842 - flex: 1;
3843 - min-height: 300px;
3844 - max-height: 55vh;
3845 - width: 100%;
3846 - padding: 14px;
3847 - border: 1px solid var(--mxch-input-border, #d1d5db);
3848 - border-radius: 8px;
3849 - font-size: 14px;
3850 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3851 - line-height: 1.6;
3852 - resize: vertical;
3853 - color: var(--mxch-text-primary, #1a1a2e);
3854 - background: var(--mxch-input-bg, #fff);
3855 - box-sizing: border-box;
3856 - transition: border-color 0.2s;
3857 -}
3858 -.mxchat-kb-edit-textarea:focus {
3859 - outline: none;
3860 - border-color: var(--mxch-primary, #7873f5);
3861 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
3862 -}
3863 -
3864 -.mxchat-kb-edit-meta {
3865 - display: flex;
3866 - justify-content: space-between;
3867 - font-size: 12px;
3868 - color: var(--mxch-text-muted, #6b7280);
3869 -}
3870 -
3871 -.mxchat-kb-edit-footer {
3872 - display: flex;
3873 - align-items: center;
3874 - justify-content: space-between;
3875 - padding: 14px 20px;
3876 - border-top: 1px solid #e5e5e5;
3877 - gap: 12px;
3878 - /* Action row can never be squeezed out of the box. */
3879 - flex-shrink: 0;
3880 -}
3881 -
3882 -.mxchat-kb-edit-notice {
3883 - flex: 1;
3884 - font-size: 13px;
3885 -}
3886 -.mxchat-kb-edit-notice.success { color: #16a34a; }
3887 -.mxchat-kb-edit-notice.error { color: #dc2626; }
3888 -
3889 -.mxchat-kb-edit-actions {
3890 - display: flex;
3891 - gap: 8px;
3892 - flex-shrink: 0;
3893 -}
3894 -
3895 -/* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3896 - Read-only "View indexed content" viewer. Reuses the Testing tab's
3897 - match-card / chunk-detail components (admin-testing-tab.css, scoped under
3898 - .mxch-testing-results) so it looks native; this block only adds the modal
3899 - body scroll + the chunk-text container the Testing tab doesn't have. */
3900 -.mxchat-kb-inspect-body {
3901 - flex: 1 1 auto;
3902 - /* Same footer-pushout guard as the edit modal. */
3903 - min-height: 0;
3904 - display: flex;
3905 - flex-direction: column;
3906 - padding: 20px;
3907 - overflow-y: auto;
3908 - gap: 12px;
3909 -}
3910 -/* The modal body is the scroll container — let the inner results grow naturally
3911 - instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3912 -.mxchat-kb-inspect-body .mxch-testing-results {
3913 - max-height: none;
3914 - overflow: visible;
3915 -}
3916 -.mxch-kb-inspect-chunk-text {
3917 - margin: 8px 0 0;
3918 - padding: 12px 14px;
3919 - background: #f8fafc;
3920 - border: 1px solid #e2e8f0;
3921 - border-radius: 6px;
3922 - max-height: 260px;
3923 - overflow-y: auto;
3924 - white-space: pre-wrap;
3925 - word-break: break-word;
3926 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3927 - font-size: 13px;
3928 - line-height: 1.6;
3929 - color: var(--mxch-text-primary, #334155);
3930 -}
3931 -
3932 -.mxchat-kb-edit-save-spinner {
3933 - display: inline-flex;
3934 - align-items: center;
3935 - gap: 6px;
3936 -}
3937 -
3938 -@media (max-width: 782px) {
3939 - .mxchat-kb-edit-modal-content {
3940 - width: 96%;
3941 - max-width: 96%;
3942 - margin: 10px auto;
3943 - max-height: calc(100vh - 20px);
3944 - max-height: calc(100dvh - 20px);
3945 - }
3946 - .mxchat-kb-edit-body {
3947 - padding: 14px;
3948 - }
3949 - .mxchat-kb-edit-textarea {
3950 - min-height: 200px;
3951 - font-size: 15px;
3952 - }
3953 - .mxchat-kb-edit-footer {
3954 - flex-direction: column;
3955 - align-items: stretch;
3956 - }
3957 - .mxchat-kb-edit-actions {
3958 - justify-content: stretch;
3959 - }
3960 - .mxchat-kb-edit-actions .mxch-btn {
3961 - flex: 1;
3962 - text-align: center;
3963 - }
3964 -}
3965 -/* ==========================================================================
3966 - Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
3967 - Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
3968 - ========================================================================== */
3969 -.mxchat-meta-scan-controls {
3970 - display: flex;
3971 - align-items: center;
3972 - flex-wrap: wrap;
3973 - gap: 12px;
3974 - margin-bottom: 12px;
3975 -}
3976 -#mxchat-scan-meta-btn {
3977 - display: inline-flex;
3978 - align-items: center;
3979 - gap: 8px;
3980 -}
3981 -.mxchat-meta-scan-internal {
3982 - display: inline-flex;
3983 - align-items: center;
3984 - gap: 6px;
3985 - font-size: 13px;
3986 - color: var(--mxch-text-secondary, #64748b);
3987 - cursor: pointer;
3988 -}
3989 -.mxchat-meta-scan-loading,
3990 -.mxchat-meta-scan-empty {
3991 - font-size: 13px;
3992 - color: var(--mxch-text-secondary, #64748b);
3993 - margin: 8px 0 0;
3994 -}
3995 -.mxchat-meta-chip-grid {
3996 - display: grid;
3997 - grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
3998 - gap: 10px;
3999 - margin-top: 12px;
4000 -}
4001 -.mxchat-meta-chip {
4002 - display: flex;
4003 - flex-direction: column;
4004 - align-items: flex-start;
4005 - gap: 4px;
4006 - text-align: left;
4007 - width: 100%;
4008 - padding: 10px 12px;
4009 - background: var(--mxch-card-bg, #fff);
4010 - border: 1px solid var(--mxch-card-border, #e2e8f0);
4011 - border-radius: var(--mxch-radius-md, 8px);
4012 - cursor: pointer;
4013 - transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4014 -}
4015 -.mxchat-meta-chip:hover {
4016 - border-color: var(--mxch-primary, #7873f5);
4017 - box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4018 -}
4019 -.mxchat-meta-chip-main {
4020 - display: flex;
4021 - align-items: baseline;
4022 - flex-wrap: wrap;
4023 - gap: 8px;
4024 -}
4025 -.mxchat-meta-chip-name {
4026 - font-weight: 600;
4027 - color: var(--mxch-text-primary, #1a1a2e);
4028 - font-size: 13px;
4029 -}
4030 -.mxchat-meta-chip-key {
4031 - font-family: monospace;
4032 - font-size: 11px;
4033 - color: var(--mxch-text-muted, #94a3b8);
4034 - background: #f1f5f9;
4035 - padding: 1px 6px;
4036 - border-radius: 4px;
4037 -}
4038 -.mxchat-meta-chip-meta {
4039 - font-size: 11px;
4040 - color: var(--mxch-text-muted, #94a3b8);
4041 - white-space: nowrap;
4042 - overflow: hidden;
4043 - text-overflow: ellipsis;
4044 - max-width: 100%;
4045 -}
4046 -.mxchat-meta-chip-tick {
4047 - font-size: 11px;
4048 - font-weight: 600;
4049 - color: var(--mxch-primary, #7873f5);
4050 - margin-top: 2px;
4051 -}
4052 -.mxchat-meta-chip.is-added {
4053 - border-color: var(--mxch-success, #10b981);
4054 - background: rgba(16, 185, 129, 0.06);
4055 - cursor: default;
4056 -}
4057 -.mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4058 - color: var(--mxch-success, #10b981);
4059 -}
4060 -@media (max-width: 782px) {
4061 - .mxchat-meta-chip-grid {
4062 - grid-template-columns: 1fr;
4063 - }
4064 -}
2066 +}