PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.8
MxChat – AI Chatbot & Content Generation for WordPress v3.2.8
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 +27 -252 3.2.213.2.8 View file →
@@ -266,14 +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 270 /* PDF Upload Area */
277 271 #mxchat-pdf-upload-area input[type="file"] {
278 272 margin-bottom: 12px;
279 273 }
@@ -610,19 +604,8 @@
610 604 input:checked + .mxchat-toggle-slider:before {
611 605 transform: translateX(26px);
612 606 }
613 607
614 -/* Group-level ACF toggle, mixed state: some fields in the group are excluded.
615 - Knob parks mid-track on a washed-out tint of the brand gradient until the
616 - owner picks a side (plan bf57e0). */
617 -input:indeterminate + .mxchat-toggle-slider {
618 - background: linear-gradient(135deg, #e3b8dd, #b9b6e8);
619 -}
620 -
621 -input:indeterminate + .mxchat-toggle-slider:before {
622 - transform: translateX(13px);
623 -}
624 -
625 608 .mxchat-toggle-label {
626 609 font-size: 14px;
627 610 color: #333;
628 611 }
@@ -1222,12 +1205,8 @@
1222 1205 .rtl input:checked + .mxchat-toggle-slider:before {
1223 1206 transform: translateX(-26px);
1224 1207 }
1225 1208
1226 -.rtl input:indeterminate + .mxchat-toggle-slider:before {
1227 - transform: translateX(-13px);
1228 -}
1229 -
1230 1209 .rtl .mxchat-error-notice {
1231 1210 border-left: none;
1232 1211 border-right: 3px solid #f44336;
1233 1212 }
@@ -1295,36 +1274,20 @@
1295 1274
1296 1275 .mxchat-kb-modal-content {
1297 1276 position: relative;
1298 1277 background-color: #fff;
1299 - margin: 24px auto;
1278 + margin: 50px auto;
1300 1279 padding: 0;
1301 1280 border-radius: 8px;
1302 1281 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1303 1282 width: 90%;
1304 1283 max-width: 1000px;
1305 - /* The box is the ONLY place height is constrained; children flex within it.
1306 - dvh tracks the real visible viewport on mobile (vh line = older-browser fallback). */
1307 1284 max-height: 85vh;
1308 - max-height: min(85vh, calc(100dvh - 48px));
1309 1285 display: flex;
1310 1286 flex-direction: column;
1311 1287 animation: mxchat-kb-modal-appear 0.3s ease-out;
1312 1288 }
1313 1289
1314 -/* Fixed chrome rows never grow or shrink — the results list is the only scroller. */
1315 -.mxchat-kb-modal-header,
1316 -.mxchat-kb-modal-filters,
1317 -.mxchat-kb-selection-header,
1318 -.mxchat-kb-modal-footer {
1319 - flex: 0 0 auto;
1320 -}
1321 -
1322 -/* The footer holds the primary actions — it can never be squeezed out of the box. */
1323 -.mxchat-kb-modal-footer {
1324 - flex-shrink: 0;
1325 -}
1326 -
1327 1290 @keyframes mxchat-kb-modal-appear {
1328 1291 from {
1329 1292 opacity: 0;
1330 1293 transform: translateY(-30px);
@@ -1438,15 +1401,12 @@
1438 1401 border-left: 3px solid #1e88e5;
1439 1402 }
1440 1403
1441 1404 .mxchat-kb-content-selection {
1442 - /* Flexible middle region: header row stays put, the list below scrolls.
1443 - min-height: 0 is load-bearing — without it flex refuses to shrink this
1444 - column and the footer gets pushed out of the box (the mobile bug). */
1445 - flex: 1 1 auto;
1446 - min-height: 0;
1447 - display: flex;
1448 - flex-direction: column;
1405 + overflow-y: auto;
1406 + flex: 1;
1407 + min-height: 300px;
1408 + max-height: calc(85vh - 200px);
1449 1409 }
1450 1410
1451 1411 .mxchat-kb-selection-header {
1452 1412 display: flex;
@@ -1474,12 +1434,8 @@
1474 1434 }
1475 1435
1476 1436 .mxchat-kb-content-list {
1477 1437 padding: 0;
1478 - /* The one and only scroller inside the modal. */
1479 - flex: 1 1 auto;
1480 - min-height: 0;
1481 - overflow-y: auto;
1482 1438 }
1483 1439
1484 1440 .mxchat-kb-content-item {
1485 1441 display: flex;
@@ -1508,23 +1464,19 @@
1508 1464 align-items: flex-start;
1509 1465 padding-top: 3px;
1510 1466 }
1511 1467
1512 -/* Native control, brand-tinted — identical to the "select all" checkbox above the
1513 - list, which carries no custom styling at all and renders correctly.
1514 - Do NOT re-add width / height / border / border-radius / background here. WP admin
1515 - draws the tick as a 21px dashicon positioned with negative margins for its OWN
1516 - default box, so forcing a custom box makes the tick overflow it. That mismatch
1517 - shipped for a long time but was invisible while the tick was white-on-white. */
1518 1468 .mxchat-kb-content-checkbox input[type="checkbox"] {
1469 + width: 18px;
1470 + height: 18px;
1471 + border: 1px solid #8c8f94;
1472 + border-radius: 3px;
1473 + background: #fff;
1519 1474 margin: 0;
1520 - cursor: pointer;
1521 - accent-color: var(--mxch-primary, #7873f5);
1522 1475 }
1523 1476
1524 -.mxchat-kb-content-checkbox input[type="checkbox"]:focus-visible {
1525 - outline: 2px solid var(--mxch-primary, #7873f5);
1526 - outline-offset: 2px;
1477 +.mxchat-kb-content-checkbox input[type="checkbox"]:checked {
1478 + border-color: #7873f5;
1527 1479 }
1528 1480
1529 1481 .mxchat-kb-content-details {
1530 1482 flex: 1;
@@ -1896,70 +1848,38 @@
1896 1848
1897 1849 /* Modal responsive adjustments */
1898 1850 .mxchat-kb-modal-content {
1899 1851 width: 95%;
1900 - /* dvh = real visible viewport (mobile vh includes the URL-bar region);
1901 - vh line is the older-browser fallback. */
1902 - max-height: calc(100vh - 24px);
1903 - max-height: calc(100dvh - 24px);
1904 - margin: 12px auto;
1905 - /* Last-resort scroll: on extreme-short viewports (landscape phones)
1906 - the compacted chrome + the list's floor can still exceed the box —
1907 - scroll inside the box rather than clipping the footer. */
1908 - overflow-y: auto;
1852 + max-height: 90vh;
1853 + margin: 20px auto;
1909 1854 }
1910 -
1911 - /* Compact the fixed chrome on mobile — stacked filters + a stacked footer
1912 - are tall, and every saved pixel goes to the content list. */
1913 - .mxchat-kb-modal-header {
1914 - padding: 12px 16px;
1915 - }
1916 -
1917 - .mxchat-kb-modal-header h3 {
1918 - font-size: 16px;
1919 - }
1920 -
1855 +
1921 1856 .mxchat-kb-modal-filters {
1922 1857 flex-direction: column;
1923 1858 align-items: stretch;
1924 - padding: 10px 16px;
1925 - gap: 8px;
1926 1859 }
1927 -
1860 +
1928 1861 .mxchat-kb-search-group {
1929 1862 max-width: none;
1930 1863 }
1931 -
1864 +
1932 1865 .mxchat-kb-filter-group {
1933 1866 flex-direction: column;
1934 - gap: 8px;
1935 1867 }
1936 -
1937 - .mxchat-kb-filter-group select {
1938 - padding: 6px 30px 6px 10px;
1868 +
1869 + .mxchat-kb-content-selection {
1870 + max-height: calc(90vh - 250px);
1939 1871 }
1940 -
1872 +
1941 1873 .mxchat-kb-selection-header {
1942 1874 flex-direction: column;
1943 1875 align-items: flex-start;
1944 - gap: 6px;
1945 - padding: 10px 16px;
1876 + gap: 10px;
1946 1877 }
1947 -
1948 - /* Guarantee a usable slice of visible rows — reachable buttons are no
1949 - help if there is nothing to select above them. */
1950 - .mxchat-kb-content-list {
1951 - min-height: 96px;
1952 - }
1953 -
1954 - .mxchat-kb-content-item {
1955 - padding: 10px 16px;
1956 - }
1957 -
1878 +
1958 1879 .mxchat-kb-modal-footer {
1959 1880 flex-direction: column;
1960 - gap: 8px;
1961 - padding: 10px 16px;
1881 + gap: 10px;
1962 1882 }
1963 1883
1964 1884 .mxchat-kb-modal-footer .mxchat-kb-pagination {
1965 1885 width: 100%;
@@ -3829,18 +3749,13 @@
3829 3749 }
3830 3750
3831 3751 .mxchat-kb-edit-modal-content {
3832 3752 max-width: 760px;
3833 - /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3834 3753 max-height: 90vh;
3835 - max-height: min(90vh, calc(100dvh - 24px));
3836 3754 }
3837 3755
3838 3756 .mxchat-kb-edit-body {
3839 - flex: 1 1 auto;
3840 - /* min-height: 0 lets the body shrink inside the capped modal box so the
3841 - footer (Save/Cancel) can never be pushed below the viewport. */
3842 - min-height: 0;
3757 + flex: 1;
3843 3758 display: flex;
3844 3759 flex-direction: column;
3845 3760 padding: 20px;
3846 3761 overflow: hidden;
@@ -3893,10 +3808,8 @@
3893 3808 justify-content: space-between;
3894 3809 padding: 14px 20px;
3895 3810 border-top: 1px solid #e5e5e5;
3896 3811 gap: 12px;
3897 - /* Action row can never be squeezed out of the box. */
3898 - flex-shrink: 0;
3899 3812 }
3900 3813
3901 3814 .mxchat-kb-edit-notice {
3902 3815 flex: 1;
@@ -3910,45 +3823,8 @@
3910 3823 gap: 8px;
3911 3824 flex-shrink: 0;
3912 3825 }
3913 3826
3914 -/* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3915 - Read-only "View indexed content" viewer. Reuses the Testing tab's
3916 - match-card / chunk-detail components (admin-testing-tab.css, scoped under
3917 - .mxch-testing-results) so it looks native; this block only adds the modal
3918 - body scroll + the chunk-text container the Testing tab doesn't have. */
3919 -.mxchat-kb-inspect-body {
3920 - flex: 1 1 auto;
3921 - /* Same footer-pushout guard as the edit modal. */
3922 - min-height: 0;
3923 - display: flex;
3924 - flex-direction: column;
3925 - padding: 20px;
3926 - overflow-y: auto;
3927 - gap: 12px;
3928 -}
3929 -/* The modal body is the scroll container — let the inner results grow naturally
3930 - instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3931 -.mxchat-kb-inspect-body .mxch-testing-results {
3932 - max-height: none;
3933 - overflow: visible;
3934 -}
3935 -.mxch-kb-inspect-chunk-text {
3936 - margin: 8px 0 0;
3937 - padding: 12px 14px;
3938 - background: #f8fafc;
3939 - border: 1px solid #e2e8f0;
3940 - border-radius: 6px;
3941 - max-height: 260px;
3942 - overflow-y: auto;
3943 - white-space: pre-wrap;
3944 - word-break: break-word;
3945 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3946 - font-size: 13px;
3947 - line-height: 1.6;
3948 - color: var(--mxch-text-primary, #334155);
3949 -}
3950 -
3951 3827 .mxchat-kb-edit-save-spinner {
3952 3828 display: inline-flex;
3953 3829 align-items: center;
3954 3830 gap: 6px;
@@ -3958,10 +3834,9 @@
3958 3834 .mxchat-kb-edit-modal-content {
3959 3835 width: 96%;
3960 3836 max-width: 96%;
3961 3837 margin: 10px auto;
3962 - max-height: calc(100vh - 20px);
3963 - max-height: calc(100dvh - 20px);
3838 + max-height: 95vh;
3964 3839 }
3965 3840 .mxchat-kb-edit-body {
3966 3841 padding: 14px;
3967 3842 }
@@ -3979,105 +3854,5 @@
3979 3854 .mxchat-kb-edit-actions .mxch-btn {
3980 3855 flex: 1;
3981 3856 text-align: center;
3982 3857 }
3983 -}
3984 -/* ==========================================================================
3985 - Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
3986 - Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
3987 - ========================================================================== */
3988 -.mxchat-meta-scan-controls {
3989 - display: flex;
3990 - align-items: center;
3991 - flex-wrap: wrap;
3992 - gap: 12px;
3993 - margin-bottom: 12px;
3994 -}
3995 -#mxchat-scan-meta-btn {
3996 - display: inline-flex;
3997 - align-items: center;
3998 - gap: 8px;
3999 -}
4000 -.mxchat-meta-scan-internal {
4001 - display: inline-flex;
4002 - align-items: center;
4003 - gap: 6px;
4004 - font-size: 13px;
4005 - color: var(--mxch-text-secondary, #64748b);
4006 - cursor: pointer;
4007 -}
4008 -.mxchat-meta-scan-loading,
4009 -.mxchat-meta-scan-empty {
4010 - font-size: 13px;
4011 - color: var(--mxch-text-secondary, #64748b);
4012 - margin: 8px 0 0;
4013 -}
4014 -.mxchat-meta-chip-grid {
4015 - display: grid;
4016 - grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4017 - gap: 10px;
4018 - margin-top: 12px;
4019 -}
4020 -.mxchat-meta-chip {
4021 - display: flex;
4022 - flex-direction: column;
4023 - align-items: flex-start;
4024 - gap: 4px;
4025 - text-align: left;
4026 - width: 100%;
4027 - padding: 10px 12px;
4028 - background: var(--mxch-card-bg, #fff);
4029 - border: 1px solid var(--mxch-card-border, #e2e8f0);
4030 - border-radius: var(--mxch-radius-md, 8px);
4031 - cursor: pointer;
4032 - transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4033 -}
4034 -.mxchat-meta-chip:hover {
4035 - border-color: var(--mxch-primary, #7873f5);
4036 - box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4037 -}
4038 -.mxchat-meta-chip-main {
4039 - display: flex;
4040 - align-items: baseline;
4041 - flex-wrap: wrap;
4042 - gap: 8px;
4043 -}
4044 -.mxchat-meta-chip-name {
4045 - font-weight: 600;
4046 - color: var(--mxch-text-primary, #1a1a2e);
4047 - font-size: 13px;
4048 -}
4049 -.mxchat-meta-chip-key {
4050 - font-family: monospace;
4051 - font-size: 11px;
4052 - color: var(--mxch-text-muted, #94a3b8);
4053 - background: #f1f5f9;
4054 - padding: 1px 6px;
4055 - border-radius: 4px;
4056 -}
4057 -.mxchat-meta-chip-meta {
4058 - font-size: 11px;
4059 - color: var(--mxch-text-muted, #94a3b8);
4060 - white-space: nowrap;
4061 - overflow: hidden;
4062 - text-overflow: ellipsis;
4063 - max-width: 100%;
4064 -}
4065 -.mxchat-meta-chip-tick {
4066 - font-size: 11px;
4067 - font-weight: 600;
4068 - color: var(--mxch-primary, #7873f5);
4069 - margin-top: 2px;
4070 -}
4071 -.mxchat-meta-chip.is-added {
4072 - border-color: var(--mxch-success, #10b981);
4073 - background: rgba(16, 185, 129, 0.06);
4074 - cursor: default;
4075 -}
4076 -.mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4077 - color: var(--mxch-success, #10b981);
4078 -}
4079 -@media (max-width: 782px) {
4080 - .mxchat-meta-chip-grid {
4081 - grid-template-columns: 1fr;
4082 - }
4083 -}
3858 +}