PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.5.7
MxChat – AI Chatbot & Content Generation for WordPress v2.5.7
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
← All changes | css/knowledge-style.css +24 -1050 3.2.172.5.7 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;
@@ -896,11 +885,11 @@
896 885 text-align: left;
897 886 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
898 887 }
899 888
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) {
889 +/* Hide ID column */
890 +.mxchat-records-table th:first-child,
891 +.mxchat-records-table td:first-child {
903 892 display: none;
904 893 }
905 894
906 895 .mxchat-records-table td {
@@ -1280,36 +1269,20 @@
1280 1269
1281 1270 .mxchat-kb-modal-content {
1282 1271 position: relative;
1283 1272 background-color: #fff;
1284 - margin: 24px auto;
1273 + margin: 50px auto;
1285 1274 padding: 0;
1286 1275 border-radius: 8px;
1287 1276 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1288 1277 width: 90%;
1289 1278 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 1279 max-height: 85vh;
1293 - max-height: min(85vh, calc(100dvh - 48px));
1294 1280 display: flex;
1295 1281 flex-direction: column;
1296 1282 animation: mxchat-kb-modal-appear 0.3s ease-out;
1297 1283 }
1298 1284
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 1285 @keyframes mxchat-kb-modal-appear {
1313 1286 from {
1314 1287 opacity: 0;
1315 1288 transform: translateY(-30px);
@@ -1423,15 +1396,12 @@
1423 1396 border-left: 3px solid #1e88e5;
1424 1397 }
1425 1398
1426 1399 .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;
1400 + overflow-y: auto;
1401 + flex: 1;
1402 + min-height: 300px;
1403 + max-height: calc(85vh - 200px);
1434 1404 }
1435 1405
1436 1406 .mxchat-kb-selection-header {
1437 1407 display: flex;
@@ -1459,12 +1429,8 @@
1459 1429 }
1460 1430
1461 1431 .mxchat-kb-content-list {
1462 1432 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 1433 }
1468 1434
1469 1435 .mxchat-kb-content-item {
1470 1436 display: flex;
@@ -1579,28 +1545,14 @@
1579 1545 .mxchat-kb-modal-footer {
1580 1546 padding: 15px 20px;
1581 1547 border-top: 1px solid #e5e5e5;
1582 1548 display: flex;
1583 - justify-content: space-between;
1584 - align-items: center;
1585 - gap: 15px;
1549 + justify-content: flex-end;
1550 + gap: 10px;
1586 1551 background-color: #f8f9fa;
1587 1552 border-radius: 0 0 8px 8px;
1588 1553 }
1589 1554
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 1555 .mxchat-kb-button-primary,
1604 1556 .mxchat-kb-button-secondary {
1605 1557 padding: 8px 15px;
1606 1558 border-radius: 4px;
@@ -1877,83 +1829,40 @@
1877 1829
1878 1830 /* Modal responsive adjustments */
1879 1831 .mxchat-kb-modal-content {
1880 1832 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;
1833 + max-height: 90vh;
1834 + margin: 20px auto;
1890 1835 }
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 -
1836 +
1902 1837 .mxchat-kb-modal-filters {
1903 1838 flex-direction: column;
1904 1839 align-items: stretch;
1905 - padding: 10px 16px;
1906 - gap: 8px;
1907 1840 }
1908 -
1841 +
1909 1842 .mxchat-kb-search-group {
1910 1843 max-width: none;
1911 1844 }
1912 -
1845 +
1913 1846 .mxchat-kb-filter-group {
1914 1847 flex-direction: column;
1915 - gap: 8px;
1916 1848 }
1917 -
1918 - .mxchat-kb-filter-group select {
1919 - padding: 6px 30px 6px 10px;
1849 +
1850 + .mxchat-kb-content-selection {
1851 + max-height: calc(90vh - 250px);
1920 1852 }
1921 -
1853 +
1922 1854 .mxchat-kb-selection-header {
1923 1855 flex-direction: column;
1924 1856 align-items: flex-start;
1925 - gap: 6px;
1926 - padding: 10px 16px;
1857 + gap: 10px;
1927 1858 }
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 -
1859 +
1939 1860 .mxchat-kb-modal-footer {
1940 1861 flex-direction: column;
1941 - gap: 8px;
1942 - padding: 10px 16px;
1943 1862 }
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,
1863 +
1864 + .mxchat-kb-button-primary,
1956 1865 .mxchat-kb-button-secondary {
1957 1866 width: 100%;
1958 1867 }
1959 1868
@@ -3125,940 +3034,5 @@
3125 3034
3126 3035 .rtl .mxchat-role-spinner {
3127 3036 margin-right: 0;
3128 3037 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 -}
3038 +}