PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.5.4
MxChat – AI Chatbot & Content Generation for WordPress v2.5.4
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/knowledge-style.css +33 -1108 3.2.192.5.4 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;
@@ -671,9 +660,9 @@
671 660 }
672 661
673 662 /* ===== Search ===== */
674 663 .mxchat-search-form {
675 - display: flex;
664 + position: relative;
676 665 }
677 666
678 667 .mxchat-search-group {
679 668 position: relative;
@@ -691,42 +680,8 @@
691 680 padding-left: 40px;
692 681 width: 300px;
693 682 }
694 683
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 684 /* ===== Buttons ===== */
730 685 .mxchat-button-primary {
731 686 background: linear-gradient(135deg, #fa73e6, #7873f5);
732 687 border: none;
@@ -896,11 +851,11 @@
896 851 text-align: left;
897 852 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
898 853 }
899 854
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) {
855 +/* Hide ID column */
856 +.mxchat-records-table th:first-child,
857 +.mxchat-records-table td:first-child {
903 858 display: none;
904 859 }
905 860
906 861 .mxchat-records-table td {
@@ -944,9 +899,8 @@
944 899 flex: 1;
945 900 font-size: 14px;
946 901 line-height: 1.6;
947 902 color: #333;
948 - overflow: hidden;
949 903 }
950 904
951 905 .mxchat-expand-toggle {
952 906 flex-shrink: 0;
@@ -1280,36 +1234,20 @@
1280 1234
1281 1235 .mxchat-kb-modal-content {
1282 1236 position: relative;
1283 1237 background-color: #fff;
1284 - margin: 24px auto;
1238 + margin: 50px auto;
1285 1239 padding: 0;
1286 1240 border-radius: 8px;
1287 1241 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1288 1242 width: 90%;
1289 1243 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 1244 max-height: 85vh;
1293 - max-height: min(85vh, calc(100dvh - 48px));
1294 1245 display: flex;
1295 1246 flex-direction: column;
1296 1247 animation: mxchat-kb-modal-appear 0.3s ease-out;
1297 1248 }
1298 1249
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 1250 @keyframes mxchat-kb-modal-appear {
1313 1251 from {
1314 1252 opacity: 0;
1315 1253 transform: translateY(-30px);
@@ -1423,15 +1361,12 @@
1423 1361 border-left: 3px solid #1e88e5;
1424 1362 }
1425 1363
1426 1364 .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;
1365 + overflow-y: auto;
1366 + flex: 1;
1367 + min-height: 300px;
1368 + max-height: calc(85vh - 200px);
1434 1369 }
1435 1370
1436 1371 .mxchat-kb-selection-header {
1437 1372 display: flex;
@@ -1459,12 +1394,8 @@
1459 1394 }
1460 1395
1461 1396 .mxchat-kb-content-list {
1462 1397 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 1398 }
1468 1399
1469 1400 .mxchat-kb-content-item {
1470 1401 display: flex;
@@ -1493,23 +1424,19 @@
1493 1424 align-items: flex-start;
1494 1425 padding-top: 3px;
1495 1426 }
1496 1427
1497 -/* Native control, brand-tinted — identical to the "select all" checkbox above the
1498 - list, which carries no custom styling at all and renders correctly.
1499 - Do NOT re-add width / height / border / border-radius / background here. WP admin
1500 - draws the tick as a 21px dashicon positioned with negative margins for its OWN
1501 - default box, so forcing a custom box makes the tick overflow it. That mismatch
1502 - shipped for a long time but was invisible while the tick was white-on-white. */
1503 1428 .mxchat-kb-content-checkbox input[type="checkbox"] {
1429 + width: 18px;
1430 + height: 18px;
1431 + border: 1px solid #8c8f94;
1432 + border-radius: 3px;
1433 + background: #fff;
1504 1434 margin: 0;
1505 - cursor: pointer;
1506 - accent-color: var(--mxch-primary, #7873f5);
1507 1435 }
1508 1436
1509 -.mxchat-kb-content-checkbox input[type="checkbox"]:focus-visible {
1510 - outline: 2px solid var(--mxch-primary, #7873f5);
1511 - outline-offset: 2px;
1437 +.mxchat-kb-content-checkbox input[type="checkbox"]:checked {
1438 + border-color: #7873f5;
1512 1439 }
1513 1440
1514 1441 .mxchat-kb-content-details {
1515 1442 flex: 1;
@@ -1583,28 +1510,14 @@
1583 1510 .mxchat-kb-modal-footer {
1584 1511 padding: 15px 20px;
1585 1512 border-top: 1px solid #e5e5e5;
1586 1513 display: flex;
1587 - justify-content: space-between;
1588 - align-items: center;
1589 - gap: 15px;
1514 + justify-content: flex-end;
1515 + gap: 10px;
1590 1516 background-color: #f8f9fa;
1591 1517 border-radius: 0 0 8px 8px;
1592 1518 }
1593 1519
1594 -.mxchat-kb-modal-footer .mxchat-kb-pagination {
1595 - flex: 1;
1596 - margin: 0;
1597 - padding: 0;
1598 - text-align: left;
1599 -}
1600 -
1601 -.mxchat-kb-footer-actions {
1602 - display: flex;
1603 - gap: 10px;
1604 - flex-shrink: 0;
1605 -}
1606 -
1607 1520 .mxchat-kb-button-primary,
1608 1521 .mxchat-kb-button-secondary {
1609 1522 padding: 8px 15px;
1610 1523 border-radius: 4px;
@@ -1854,19 +1767,9 @@
1854 1767
1855 1768 .mxchat-search-group input {
1856 1769 width: 100%;
1857 1770 }
1858 -
1859 - /* ADDED 2.5.6: Responsive filter dropdown */
1860 - .mxchat-filter-group {
1861 - margin-left: 0;
1862 - width: 100%;
1863 - }
1864 -
1865 - .mxchat-filter-group select {
1866 - width: 100%;
1867 - }
1868 -
1771 +
1869 1772 .mxchat-url-input-group {
1870 1773 flex-direction: column;
1871 1774 }
1872 1775
@@ -1881,83 +1784,40 @@
1881 1784
1882 1785 /* Modal responsive adjustments */
1883 1786 .mxchat-kb-modal-content {
1884 1787 width: 95%;
1885 - /* dvh = real visible viewport (mobile vh includes the URL-bar region);
1886 - vh line is the older-browser fallback. */
1887 - max-height: calc(100vh - 24px);
1888 - max-height: calc(100dvh - 24px);
1889 - margin: 12px auto;
1890 - /* Last-resort scroll: on extreme-short viewports (landscape phones)
1891 - the compacted chrome + the list's floor can still exceed the box —
1892 - scroll inside the box rather than clipping the footer. */
1893 - overflow-y: auto;
1788 + max-height: 90vh;
1789 + margin: 20px auto;
1894 1790 }
1895 -
1896 - /* Compact the fixed chrome on mobile — stacked filters + a stacked footer
1897 - are tall, and every saved pixel goes to the content list. */
1898 - .mxchat-kb-modal-header {
1899 - padding: 12px 16px;
1900 - }
1901 -
1902 - .mxchat-kb-modal-header h3 {
1903 - font-size: 16px;
1904 - }
1905 -
1791 +
1906 1792 .mxchat-kb-modal-filters {
1907 1793 flex-direction: column;
1908 1794 align-items: stretch;
1909 - padding: 10px 16px;
1910 - gap: 8px;
1911 1795 }
1912 -
1796 +
1913 1797 .mxchat-kb-search-group {
1914 1798 max-width: none;
1915 1799 }
1916 -
1800 +
1917 1801 .mxchat-kb-filter-group {
1918 1802 flex-direction: column;
1919 - gap: 8px;
1920 1803 }
1921 -
1922 - .mxchat-kb-filter-group select {
1923 - padding: 6px 30px 6px 10px;
1804 +
1805 + .mxchat-kb-content-selection {
1806 + max-height: calc(90vh - 250px);
1924 1807 }
1925 -
1808 +
1926 1809 .mxchat-kb-selection-header {
1927 1810 flex-direction: column;
1928 1811 align-items: flex-start;
1929 - gap: 6px;
1930 - padding: 10px 16px;
1812 + gap: 10px;
1931 1813 }
1932 -
1933 - /* Guarantee a usable slice of visible rows — reachable buttons are no
1934 - help if there is nothing to select above them. */
1935 - .mxchat-kb-content-list {
1936 - min-height: 96px;
1937 - }
1938 -
1939 - .mxchat-kb-content-item {
1940 - padding: 10px 16px;
1941 - }
1942 -
1814 +
1943 1815 .mxchat-kb-modal-footer {
1944 1816 flex-direction: column;
1945 - gap: 8px;
1946 - padding: 10px 16px;
1947 1817 }
1948 -
1949 - .mxchat-kb-modal-footer .mxchat-kb-pagination {
1950 - width: 100%;
1951 - text-align: center;
1952 - }
1953 -
1954 - .mxchat-kb-footer-actions {
1955 - width: 100%;
1956 - flex-direction: column;
1957 - }
1958 -
1959 - .mxchat-kb-button-primary,
1818 +
1819 + .mxchat-kb-button-primary,
1960 1820 .mxchat-kb-button-secondary {
1961 1821 width: 100%;
1962 1822 }
1963 1823
@@ -3129,940 +2989,5 @@
3129 2989
3130 2990 .rtl .mxchat-role-spinner {
3131 2991 margin-right: 0;
3132 2992 margin-left: 10px;
3133 -}
3134 -
3135 -/* ===== Chunk Grouping Styles ===== */
3136 -.mxchat-chunk-group-header {
3137 - background: rgba(120, 115, 245, 0.04) !important;
3138 - border-left: 3px solid #7873f5;
3139 -}
3140 -
3141 -.mxchat-chunk-group-header:hover {
3142 - background: rgba(120, 115, 245, 0.08) !important;
3143 -}
3144 -
3145 -.mxchat-chunk-group-info {
3146 - display: flex;
3147 - align-items: center;
3148 - gap: 12px;
3149 -}
3150 -
3151 -.mxchat-chunk-toggle {
3152 - flex-shrink: 0;
3153 - width: 28px;
3154 - height: 28px;
3155 - border: none;
3156 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
3157 - border-radius: 6px;
3158 - cursor: pointer;
3159 - display: inline-flex;
3160 - align-items: center;
3161 - justify-content: center;
3162 - transition: all 0.3s ease;
3163 - padding: 0;
3164 -}
3165 -
3166 -.mxchat-chunk-toggle:hover {
3167 - background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
3168 - transform: scale(1.05);
3169 -}
3170 -
3171 -.mxchat-chunk-toggle .dashicons {
3172 - font-size: 16px;
3173 - color: #7873f5;
3174 - transition: transform 0.3s ease;
3175 -}
3176 -
3177 -.mxchat-chunk-toggle.expanded .dashicons {
3178 - transform: rotate(90deg);
3179 -}
3180 -
3181 -.mxchat-chunk-badge {
3182 - display: inline-flex;
3183 - align-items: center;
3184 - padding: 4px 10px;
3185 - background: linear-gradient(135deg, #7873f5, #3ac9d1);
3186 - color: white;
3187 - border-radius: 12px;
3188 - font-size: 12px;
3189 - font-weight: 600;
3190 - white-space: nowrap;
3191 -}
3192 -
3193 -.mxchat-chunk-preview {
3194 - flex: 1;
3195 - color: #666;
3196 - font-size: 13px;
3197 - overflow: hidden;
3198 - text-overflow: ellipsis;
3199 - white-space: nowrap;
3200 -}
3201 -
3202 -.mxchat-chunk-row {
3203 - border-left: 3px solid #e0e0e0;
3204 -}
3205 -
3206 -.mxchat-chunk-row td:first-child {
3207 - padding-left: 30px !important;
3208 -}
3209 -
3210 -.mxchat-chunk-indicator {
3211 - display: inline-flex;
3212 - align-items: center;
3213 - padding: 2px 8px;
3214 - background: #f0f0f0;
3215 - color: #666;
3216 - border-radius: 4px;
3217 - font-size: 11px;
3218 - font-weight: 500;
3219 -}
3220 -
3221 -.mxchat-chunk-label {
3222 - color: #999;
3223 - font-size: 12px;
3224 - font-style: italic;
3225 -}
3226 -
3227 -/* Delete button for chunk groups */
3228 -.delete-button-group {
3229 - background: none;
3230 - border: none;
3231 - cursor: pointer;
3232 - padding: 4px;
3233 - border-radius: 4px;
3234 - transition: all 0.2s ease;
3235 -}
3236 -
3237 -.delete-button-group:hover {
3238 - background: rgba(255, 0, 0, 0.1);
3239 -}
3240 -
3241 -.delete-button-group .dashicons {
3242 - color: #dc3545;
3243 -}
3244 -
3245 -.delete-button-group .dashicons.spin {
3246 - animation: mxchat-spin 1s linear infinite;
3247 -}
3248 -
3249 -@keyframes mxchat-spin {
3250 - from { transform: rotate(0deg); }
3251 - to { transform: rotate(360deg); }
3252 -}
3253 -
3254 -/* ===== Sitemap Detection Styles ===== */
3255 -.dashicons.spin {
3256 - animation: mxchat-spin 1s linear infinite;
3257 -}
3258 -
3259 -.mxchat-sitemap-group.expanded .mxchat-sitemap-sub-list {
3260 - display: block !important;
3261 -}
3262 -
3263 -.mxchat-sitemap-group.expanded .dashicons-arrow-right-alt2 {
3264 - transform: rotate(90deg) !important;
3265 -}
3266 -
3267 -.mxchat-sitemap-row:last-child {
3268 - border-bottom: none !important;
3269 -}
3270 -
3271 -.mxchat-detected-sitemaps {
3272 - margin-top: 24px;
3273 -}
3274 -
3275 -.mxchat-sitemaps-header {
3276 - display: flex;
3277 - align-items: center;
3278 - justify-content: space-between;
3279 - margin-bottom: 16px;
3280 -}
3281 -
3282 -.mxchat-sitemaps-header h4 {
3283 - margin: 0;
3284 - display: flex;
3285 - align-items: center;
3286 - gap: 8px;
3287 -}
3288 -
3289 -.mxchat-sitemaps-header h4 .dashicons {
3290 - color: #7873f5;
3291 -}
3292 -
3293 -.mxchat-sitemap-group {
3294 - margin-bottom: 16px;
3295 - border: 1px solid rgba(120, 115, 245, 0.2);
3296 - border-radius: 8px;
3297 - overflow: hidden;
3298 -}
3299 -
3300 -.mxchat-sitemap-group-header {
3301 - padding: 12px 16px;
3302 - background: #f8fafc;
3303 - display: flex;
3304 - align-items: center;
3305 - justify-content: space-between;
3306 - cursor: pointer;
3307 - transition: background-color 0.2s ease;
3308 -}
3309 -
3310 -.mxchat-sitemap-group-header:hover {
3311 - background: #f0f4f8;
3312 -}
3313 -
3314 -.mxchat-sitemap-sub-list {
3315 - display: none;
3316 - border-top: 1px solid rgba(120, 115, 245, 0.2);
3317 -}
3318 -
3319 -.mxchat-sitemap-row {
3320 - padding: 12px 16px;
3321 - display: flex;
3322 - align-items: center;
3323 - justify-content: space-between;
3324 - border-bottom: 1px solid rgba(120, 115, 245, 0.1);
3325 -}
3326 -
3327 -.mxchat-sitemap-row.sub-item {
3328 - padding-left: 40px;
3329 -}
3330 -
3331 -.mxchat-sitemaps-loading {
3332 - margin-top: 24px;
3333 - padding: 20px;
3334 - text-align: center;
3335 -}
3336 -
3337 -.mxchat-sitemaps-loading .dashicons {
3338 - font-size: 20px;
3339 - color: #7873f5;
3340 -}
3341 -
3342 -.mxchat-sitemaps-loading p {
3343 - margin: 8px 0 0;
3344 - color: #666;
3345 -}
3346 -
3347 -.mxchat-no-sitemaps {
3348 - margin-top: 24px;
3349 - padding: 20px;
3350 - background: #f8fafc;
3351 - border-radius: 8px;
3352 - text-align: center;
3353 -}
3354 -
3355 -.mxchat-no-sitemaps .dashicons {
3356 - font-size: 24px;
3357 - color: #999;
3358 - margin-bottom: 8px;
3359 -}
3360 -
3361 -.mxchat-no-sitemaps p {
3362 - margin: 0;
3363 - color: #666;
3364 -}
3365 -
3366 -/* ===== Admin Notice Dismiss Button Styles ===== */
3367 -.notice.is-dismissible {
3368 - position: relative;
3369 - padding-right: 38px;
3370 -}
3371 -
3372 -.notice-dismiss {
3373 - position: absolute;
3374 - top: 50%;
3375 - right: 8px;
3376 - transform: translateY(-50%);
3377 - padding: 0;
3378 - background: none;
3379 - border: none;
3380 - cursor: pointer;
3381 - color: #787c82;
3382 - width: 24px;
3383 - height: 24px;
3384 - display: flex;
3385 - align-items: center;
3386 - justify-content: center;
3387 - transition: color 0.2s ease;
3388 -}
3389 -
3390 -.notice-dismiss:hover {
3391 - color: #d63638;
3392 -}
3393 -
3394 -.notice-dismiss:before {
3395 - content: "\f153";
3396 - font-family: dashicons;
3397 - font-size: 16px;
3398 - line-height: 1;
3399 -}
3400 -
3401 -.notice-dismiss .screen-reader-text {
3402 - position: absolute;
3403 - width: 1px;
3404 - height: 1px;
3405 - padding: 0;
3406 - margin: -1px;
3407 - overflow: hidden;
3408 - clip: rect(0, 0, 0, 0);
3409 - white-space: nowrap;
3410 - border: 0;
3411 -}
3412 -
3413 -/* ===== AJAX Pagination Styles ===== */
3414 -.mxchat-kb-pagination-wrapper {
3415 - background: #f8fafc;
3416 -}
3417 -
3418 -.mxchat-ajax-pagination {
3419 - display: flex;
3420 - align-items: center;
3421 - justify-content: center;
3422 - gap: 8px;
3423 - flex-wrap: wrap;
3424 -}
3425 -
3426 -.mxchat-page-link {
3427 - display: inline-flex;
3428 - align-items: center;
3429 - justify-content: center;
3430 - min-width: 36px;
3431 - height: 36px;
3432 - padding: 0 12px;
3433 - background: #fff;
3434 - border: 1px solid var(--mxch-card-border, #e5e7eb);
3435 - border-radius: 6px;
3436 - color: var(--mxch-text-primary, #1f2937);
3437 - text-decoration: none;
3438 - font-size: 13px;
3439 - font-weight: 500;
3440 - transition: all 0.2s ease;
3441 - cursor: pointer;
3442 -}
3443 -
3444 -.mxchat-page-link:hover {
3445 - background: var(--mxch-primary, #7873f5);
3446 - border-color: var(--mxch-primary, #7873f5);
3447 - color: #fff;
3448 - text-decoration: none;
3449 -}
3450 -
3451 -.mxchat-page-link.loading {
3452 - opacity: 0.6;
3453 - pointer-events: none;
3454 -}
3455 -
3456 -.mxchat-page-current {
3457 - display: inline-flex;
3458 - align-items: center;
3459 - justify-content: center;
3460 - min-width: 36px;
3461 - height: 36px;
3462 - padding: 0 12px;
3463 - background: var(--mxch-primary, #7873f5);
3464 - border: 1px solid var(--mxch-primary, #7873f5);
3465 - border-radius: 6px;
3466 - color: #fff;
3467 - font-size: 13px;
3468 - font-weight: 600;
3469 -}
3470 -
3471 -.mxchat-page-dots {
3472 - display: inline-flex;
3473 - align-items: center;
3474 - justify-content: center;
3475 - min-width: 24px;
3476 - height: 36px;
3477 - color: var(--mxch-text-muted, #9ca3af);
3478 - font-size: 14px;
3479 -}
3480 -
3481 -.mxchat-pagination-loading {
3482 - margin-left: 12px;
3483 -}
3484 -
3485 -.mxchat-pagination-loading .dashicons {
3486 - color: var(--mxch-primary, #7873f5);
3487 -}
3488 -
3489 -/* Spin animation for loading indicator */
3490 -@keyframes mxchat-spin {
3491 - from { transform: rotate(0deg); }
3492 - to { transform: rotate(360deg); }
3493 -}
3494 -
3495 -.mxchat-pagination-loading .spin,
3496 -.mxchat-ajax-pagination .spin {
3497 - animation: mxchat-spin 1s linear infinite;
3498 -}
3499 -
3500 -/* Mobile responsive pagination */
3501 -@media (max-width: 600px) {
3502 - .mxchat-ajax-pagination {
3503 - gap: 4px;
3504 - }
3505 -
3506 - .mxchat-page-link,
3507 - .mxchat-page-current {
3508 - min-width: 32px;
3509 - height: 32px;
3510 - padding: 0 8px;
3511 - font-size: 12px;
3512 - }
3513 -
3514 - .mxchat-page-dots {
3515 - min-width: 20px;
3516 - }
3517 -}
3518 -
3519 -/* ========================================
3520 - BULK SELECTION STYLES
3521 - ======================================== */
3522 -
3523 -/* Bulk Actions Toolbar */
3524 -.mxchat-bulk-toolbar {
3525 - display: flex;
3526 - align-items: center;
3527 - gap: 12px;
3528 - padding: 12px 16px;
3529 - background: #f8fafc;
3530 - border: 1px solid var(--mxch-card-border);
3531 - border-bottom: none;
3532 - border-radius: var(--mxch-radius-md) var(--mxch-radius-md) 0 0;
3533 -}
3534 -
3535 -.mxchat-bulk-select-label {
3536 - display: flex;
3537 - align-items: center;
3538 - gap: 6px;
3539 - font-size: 13px;
3540 - color: var(--mxch-text-secondary);
3541 - cursor: pointer;
3542 -}
3543 -
3544 -.mxchat-bulk-select-label:hover {
3545 - color: var(--mxch-text-primary);
3546 -}
3547 -
3548 -.mxchat-entry-checkbox,
3549 -.mxchat-entry-checkbox-all {
3550 - width: 16px;
3551 - height: 16px;
3552 - cursor: pointer;
3553 - accent-color: var(--mxch-primary, #7873f5);
3554 -}
3555 -
3556 -.mxchat-bulk-actions {
3557 - display: flex;
3558 - align-items: center;
3559 - gap: 8px;
3560 - margin-left: auto;
3561 -}
3562 -
3563 -.mxchat-bulk-delete {
3564 - display: flex;
3565 - align-items: center;
3566 - gap: 6px;
3567 - color: var(--mxch-error, #dc2626) !important;
3568 - border-color: #fecaca !important;
3569 - background: transparent !important;
3570 -}
3571 -
3572 -.mxchat-bulk-delete:hover:not(:disabled) {
3573 - background: #fef2f2 !important;
3574 - border-color: #fca5a5 !important;
3575 -}
3576 -
3577 -.mxchat-bulk-delete:disabled {
3578 - opacity: 0.5;
3579 - cursor: not-allowed;
3580 -}
3581 -
3582 -.mxchat-selected-count {
3583 - font-size: 12px;
3584 - color: var(--mxch-primary, #7873f5);
3585 - font-weight: 600;
3586 - margin-left: 4px;
3587 -}
3588 -
3589 -/* Delete container - holds Delete All form and Delete Selected button */
3590 -.mxchat-delete-container {
3591 - display: flex;
3592 - align-items: center;
3593 -}
3594 -
3595 -/* Selected row highlighting */
3596 -#mxchat-records-table tr.selected {
3597 - background-color: rgba(120, 115, 245, 0.05) !important;
3598 -}
3599 -
3600 -#mxchat-records-table tr.selected td:first-child {
3601 - position: relative;
3602 -}
3603 -
3604 -#mxchat-records-table tr.selected td:first-child::before {
3605 - content: '';
3606 - position: absolute;
3607 - left: 0;
3608 - top: 0;
3609 - bottom: 0;
3610 - width: 3px;
3611 - background: var(--mxch-primary, #7873f5);
3612 -}
3613 -
3614 -/* Deleting state */
3615 -tr.mxchat-row-deleting {
3616 - opacity: 0.5;
3617 - pointer-events: none;
3618 -}
3619 -
3620 -/* Error state for failed deletions */
3621 -tr.mxchat-row-error {
3622 - background-color: rgba(220, 38, 38, 0.05) !important;
3623 -}
3624 -
3625 -tr.mxchat-row-error td:first-child {
3626 - position: relative;
3627 -}
3628 -
3629 -tr.mxchat-row-error td:first-child::before {
3630 - content: '';
3631 - position: absolute;
3632 - left: 0;
3633 - top: 0;
3634 - bottom: 0;
3635 - width: 3px;
3636 - background: var(--mxch-error, #dc2626);
3637 -}
3638 -
3639 -/* Spin animation for loading states */
3640 -.spin {
3641 - animation: mxchat-spin 1s linear infinite;
3642 -}
3643 -
3644 -/* Responsive adjustments for bulk toolbar */
3645 -@media (max-width: 768px) {
3646 - .mxchat-bulk-toolbar {
3647 - flex-wrap: wrap;
3648 - gap: 8px;
3649 - }
3650 -
3651 - .mxchat-bulk-delete-text {
3652 - display: none;
3653 - }
3654 -
3655 - .mxchat-bulk-actions {
3656 - margin-left: 0;
3657 - }
3658 -}
3659 -
3660 -/* ==========================================================================
3661 - Knowledge Base - Mobile Responsive
3662 - ========================================================================== */
3663 -
3664 -/* Desktop defaults for KB header controls */
3665 -.mxch-kb-header-controls {
3666 - display: flex;
3667 - gap: 10px;
3668 - align-items: center;
3669 -}
3670 -
3671 -.mxch-kb-search-form {
3672 - display: flex;
3673 - gap: 10px;
3674 -}
3675 -
3676 -.mxch-kb-search-input {
3677 - width: 200px;
3678 -}
3679 -
3680 -.mxch-kb-type-filter {
3681 - width: auto;
3682 -}
3683 -
3684 -/* Mobile: Knowledge Base card header stacks vertically */
3685 -@media screen and (max-width: 960px) {
3686 - /* Stack card header vertically */
3687 - #knowledge-base .mxch-card-header {
3688 - flex-direction: column;
3689 - align-items: stretch;
3690 - gap: 12px;
3691 - padding: 12px 16px;
3692 - }
3693 -
3694 - /* Title row wraps badges */
3695 - #knowledge-base .mxch-card-title {
3696 - flex-wrap: wrap;
3697 - font-size: 14px;
3698 - }
3699 -
3700 - /* Controls stack vertically */
3701 - .mxch-kb-header-controls {
3702 - flex-direction: column;
3703 - align-items: stretch;
3704 - gap: 8px;
3705 - width: 100%;
3706 - }
3707 -
3708 - /* Search form wraps */
3709 - .mxch-kb-search-form {
3710 - flex-wrap: wrap;
3711 - gap: 8px;
3712 - width: 100%;
3713 - }
3714 -
3715 - /* Search input takes full width */
3716 - .mxch-kb-search-input {
3717 - width: 100% !important;
3718 - flex: 1;
3719 - min-width: 0;
3720 - }
3721 -
3722 - /* Filter dropdown takes full width */
3723 - .mxch-kb-type-filter {
3724 - width: 100% !important;
3725 - flex: 1;
3726 - min-width: 0;
3727 - }
3728 -
3729 - /* Delete container full width */
3730 - .mxchat-delete-container {
3731 - width: 100%;
3732 - }
3733 -
3734 - .mxchat-delete-container form,
3735 - .mxchat-delete-container .mxchat-bulk-delete {
3736 - width: 100%;
3737 - }
3738 -
3739 - .mxchat-delete-container .mxch-btn {
3740 - width: 100%;
3741 - justify-content: center;
3742 - }
3743 -
3744 - /* Table: hide ID and Source columns on mobile to save space */
3745 - .mxchat-records-table th:nth-child(2),
3746 - .mxchat-records-table td:nth-child(2) {
3747 - display: none;
3748 - }
3749 -
3750 - .mxchat-records-table th:nth-child(4),
3751 - .mxchat-records-table td:nth-child(4) {
3752 - display: none;
3753 - }
3754 -
3755 - /* Content column needs more room */
3756 - .mxchat-content-cell {
3757 - max-width: none !important;
3758 - }
3759 -
3760 - /* Table cells padding */
3761 - .mxchat-records-table th,
3762 - .mxchat-records-table td {
3763 - padding: 10px 8px !important;
3764 - }
3765 -
3766 - /* Pagination wraps nicely */
3767 - .mxchat-ajax-pagination {
3768 - flex-wrap: wrap;
3769 - justify-content: center;
3770 - }
3771 -}
3772 -
3773 -/* Small mobile: further adjustments */
3774 -@media screen and (max-width: 480px) {
3775 - #knowledge-base .mxch-card-header {
3776 - padding: 10px 12px;
3777 - }
3778 -
3779 - #knowledge-base .mxch-card-title {
3780 - font-size: 13px;
3781 - }
3782 -
3783 - /* Search form items fully stacked */
3784 - .mxch-kb-search-form {
3785 - flex-direction: column;
3786 - }
3787 -
3788 - /* Smaller table text */
3789 - .mxchat-records-table {
3790 - font-size: 12px;
3791 - }
3792 -
3793 - .mxchat-records-table th,
3794 - .mxchat-records-table td {
3795 - padding: 8px 6px !important;
3796 - }
3797 -
3798 - /* Also hide Actions header text but keep the column for delete buttons */
3799 - .mxchat-records-table th:nth-child(5) {
3800 - font-size: 0;
3801 - padding: 8px 4px !important;
3802 - width: 40px;
3803 - }
3804 -}
3805 -
3806 -/* ─── Edit Entry Modal ─── */
3807 -
3808 -.mxchat-edit-entry-btn {
3809 - color: var(--mxch-primary, #7873f5);
3810 -}
3811 -.mxchat-edit-entry-btn:hover {
3812 - color: var(--mxch-primary-dark, #5b56d6);
3813 - background: rgba(120, 115, 245, 0.08);
3814 -}
3815 -
3816 -.mxchat-kb-edit-modal-content {
3817 - max-width: 760px;
3818 - /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3819 - max-height: 90vh;
3820 - max-height: min(90vh, calc(100dvh - 24px));
3821 -}
3822 -
3823 -.mxchat-kb-edit-body {
3824 - flex: 1 1 auto;
3825 - /* min-height: 0 lets the body shrink inside the capped modal box so the
3826 - footer (Save/Cancel) can never be pushed below the viewport. */
3827 - min-height: 0;
3828 - display: flex;
3829 - flex-direction: column;
3830 - padding: 20px;
3831 - overflow: hidden;
3832 - gap: 12px;
3833 -}
3834 -
3835 -.mxchat-kb-edit-source {
3836 - font-size: 12px;
3837 - color: var(--mxch-text-muted, #6b7280);
3838 - word-break: break-all;
3839 -}
3840 -.mxchat-kb-edit-source a {
3841 - color: var(--mxch-primary, #7873f5);
3842 - text-decoration: none;
3843 -}
3844 -
3845 -.mxchat-kb-edit-textarea {
3846 - flex: 1;
3847 - min-height: 300px;
3848 - max-height: 55vh;
3849 - width: 100%;
3850 - padding: 14px;
3851 - border: 1px solid var(--mxch-input-border, #d1d5db);
3852 - border-radius: 8px;
3853 - font-size: 14px;
3854 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3855 - line-height: 1.6;
3856 - resize: vertical;
3857 - color: var(--mxch-text-primary, #1a1a2e);
3858 - background: var(--mxch-input-bg, #fff);
3859 - box-sizing: border-box;
3860 - transition: border-color 0.2s;
3861 -}
3862 -.mxchat-kb-edit-textarea:focus {
3863 - outline: none;
3864 - border-color: var(--mxch-primary, #7873f5);
3865 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
3866 -}
3867 -
3868 -.mxchat-kb-edit-meta {
3869 - display: flex;
3870 - justify-content: space-between;
3871 - font-size: 12px;
3872 - color: var(--mxch-text-muted, #6b7280);
3873 -}
3874 -
3875 -.mxchat-kb-edit-footer {
3876 - display: flex;
3877 - align-items: center;
3878 - justify-content: space-between;
3879 - padding: 14px 20px;
3880 - border-top: 1px solid #e5e5e5;
3881 - gap: 12px;
3882 - /* Action row can never be squeezed out of the box. */
3883 - flex-shrink: 0;
3884 -}
3885 -
3886 -.mxchat-kb-edit-notice {
3887 - flex: 1;
3888 - font-size: 13px;
3889 -}
3890 -.mxchat-kb-edit-notice.success { color: #16a34a; }
3891 -.mxchat-kb-edit-notice.error { color: #dc2626; }
3892 -
3893 -.mxchat-kb-edit-actions {
3894 - display: flex;
3895 - gap: 8px;
3896 - flex-shrink: 0;
3897 -}
3898 -
3899 -/* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3900 - Read-only "View indexed content" viewer. Reuses the Testing tab's
3901 - match-card / chunk-detail components (admin-testing-tab.css, scoped under
3902 - .mxch-testing-results) so it looks native; this block only adds the modal
3903 - body scroll + the chunk-text container the Testing tab doesn't have. */
3904 -.mxchat-kb-inspect-body {
3905 - flex: 1 1 auto;
3906 - /* Same footer-pushout guard as the edit modal. */
3907 - min-height: 0;
3908 - display: flex;
3909 - flex-direction: column;
3910 - padding: 20px;
3911 - overflow-y: auto;
3912 - gap: 12px;
3913 -}
3914 -/* The modal body is the scroll container — let the inner results grow naturally
3915 - instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3916 -.mxchat-kb-inspect-body .mxch-testing-results {
3917 - max-height: none;
3918 - overflow: visible;
3919 -}
3920 -.mxch-kb-inspect-chunk-text {
3921 - margin: 8px 0 0;
3922 - padding: 12px 14px;
3923 - background: #f8fafc;
3924 - border: 1px solid #e2e8f0;
3925 - border-radius: 6px;
3926 - max-height: 260px;
3927 - overflow-y: auto;
3928 - white-space: pre-wrap;
3929 - word-break: break-word;
3930 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3931 - font-size: 13px;
3932 - line-height: 1.6;
3933 - color: var(--mxch-text-primary, #334155);
3934 -}
3935 -
3936 -.mxchat-kb-edit-save-spinner {
3937 - display: inline-flex;
3938 - align-items: center;
3939 - gap: 6px;
3940 -}
3941 -
3942 -@media (max-width: 782px) {
3943 - .mxchat-kb-edit-modal-content {
3944 - width: 96%;
3945 - max-width: 96%;
3946 - margin: 10px auto;
3947 - max-height: calc(100vh - 20px);
3948 - max-height: calc(100dvh - 20px);
3949 - }
3950 - .mxchat-kb-edit-body {
3951 - padding: 14px;
3952 - }
3953 - .mxchat-kb-edit-textarea {
3954 - min-height: 200px;
3955 - font-size: 15px;
3956 - }
3957 - .mxchat-kb-edit-footer {
3958 - flex-direction: column;
3959 - align-items: stretch;
3960 - }
3961 - .mxchat-kb-edit-actions {
3962 - justify-content: stretch;
3963 - }
3964 - .mxchat-kb-edit-actions .mxch-btn {
3965 - flex: 1;
3966 - text-align: center;
3967 - }
3968 -}
3969 -/* ==========================================================================
3970 - Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
3971 - Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
3972 - ========================================================================== */
3973 -.mxchat-meta-scan-controls {
3974 - display: flex;
3975 - align-items: center;
3976 - flex-wrap: wrap;
3977 - gap: 12px;
3978 - margin-bottom: 12px;
3979 -}
3980 -#mxchat-scan-meta-btn {
3981 - display: inline-flex;
3982 - align-items: center;
3983 - gap: 8px;
3984 -}
3985 -.mxchat-meta-scan-internal {
3986 - display: inline-flex;
3987 - align-items: center;
3988 - gap: 6px;
3989 - font-size: 13px;
3990 - color: var(--mxch-text-secondary, #64748b);
3991 - cursor: pointer;
3992 -}
3993 -.mxchat-meta-scan-loading,
3994 -.mxchat-meta-scan-empty {
3995 - font-size: 13px;
3996 - color: var(--mxch-text-secondary, #64748b);
3997 - margin: 8px 0 0;
3998 -}
3999 -.mxchat-meta-chip-grid {
4000 - display: grid;
4001 - grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4002 - gap: 10px;
4003 - margin-top: 12px;
4004 -}
4005 -.mxchat-meta-chip {
4006 - display: flex;
4007 - flex-direction: column;
4008 - align-items: flex-start;
4009 - gap: 4px;
4010 - text-align: left;
4011 - width: 100%;
4012 - padding: 10px 12px;
4013 - background: var(--mxch-card-bg, #fff);
4014 - border: 1px solid var(--mxch-card-border, #e2e8f0);
4015 - border-radius: var(--mxch-radius-md, 8px);
4016 - cursor: pointer;
4017 - transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4018 -}
4019 -.mxchat-meta-chip:hover {
4020 - border-color: var(--mxch-primary, #7873f5);
4021 - box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4022 -}
4023 -.mxchat-meta-chip-main {
4024 - display: flex;
4025 - align-items: baseline;
4026 - flex-wrap: wrap;
4027 - gap: 8px;
4028 -}
4029 -.mxchat-meta-chip-name {
4030 - font-weight: 600;
4031 - color: var(--mxch-text-primary, #1a1a2e);
4032 - font-size: 13px;
4033 -}
4034 -.mxchat-meta-chip-key {
4035 - font-family: monospace;
4036 - font-size: 11px;
4037 - color: var(--mxch-text-muted, #94a3b8);
4038 - background: #f1f5f9;
4039 - padding: 1px 6px;
4040 - border-radius: 4px;
4041 -}
4042 -.mxchat-meta-chip-meta {
4043 - font-size: 11px;
4044 - color: var(--mxch-text-muted, #94a3b8);
4045 - white-space: nowrap;
4046 - overflow: hidden;
4047 - text-overflow: ellipsis;
4048 - max-width: 100%;
4049 -}
4050 -.mxchat-meta-chip-tick {
4051 - font-size: 11px;
4052 - font-weight: 600;
4053 - color: var(--mxch-primary, #7873f5);
4054 - margin-top: 2px;
4055 -}
4056 -.mxchat-meta-chip.is-added {
4057 - border-color: var(--mxch-success, #10b981);
4058 - background: rgba(16, 185, 129, 0.06);
4059 - cursor: default;
4060 -}
4061 -.mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4062 - color: var(--mxch-success, #10b981);
4063 -}
4064 -@media (max-width: 782px) {
4065 - .mxchat-meta-chip-grid {
4066 - grid-template-columns: 1fr;
4067 - }
4068 -}
2993 +}