PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / trunk
MxChat – AI Chatbot & Content Generation for WordPress vtrunk
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 +3647 -87 2.0.4trunk View file →
@@ -1,15 +1,28 @@
1 -/* Core Layout */
1 +/*
2 + * MxChat Knowledge Base Styles
3 + * Consolidated stylesheet for the Knowledge Base Manager
4 + */
2 5
6 +#wpcontent, .auto-fold #wpcontent {
7 + padding: 0px;
8 +}
9 +.mxchat-kb-header-note {
10 + font-size: 12px;
11 + font-weight: normal;
12 + color: #666;
13 + font-style: italic;
14 +}
15 +/* ===== Core Layout ===== */
3 16 .mxchat-wrapper, .mxchat-admin-activation {
4 - width: calc(100% + 40px); /* Add 40px to account for left and right padding */
5 - margin: 0 -20px; /* Negative margin to counteract the padding */
17 + width: 100%;
18 + margin: 0px;
6 19 padding: 0;
7 20 background-color: #f8f9ff;
8 21 min-height: 100vh;
9 22 }
10 23
11 -/* Hero Section */
24 +/* ===== Hero Section ===== */
12 25 .mxchat-hero {
13 26 text-align: center;
14 27 padding: 3.5rem 2rem;
15 28 position: relative;
@@ -61,9 +74,9 @@
61 74 z-index: 2;
62 75 line-height: 1.6;
63 76 }
64 77
65 -/* Content Area */
78 +/* ===== Content Area ===== */
66 79 .mxchat-content {
67 80 padding: 2rem;
68 81 max-width: 1400px;
69 82 margin: 0 auto;
@@ -70,9 +83,9 @@
70 83 width: 100%;
71 84 box-sizing: border-box;
72 85 }
73 86
74 -/* Card Styles */
87 +/* ===== Card Styles ===== */
75 88 .mxchat-card {
76 89 background: #fff;
77 90 border-radius: 16px;
78 91 box-shadow: 0 4px 20px rgba(120, 115, 245, 0.08);
@@ -91,9 +104,331 @@
91 104 color: #333;
92 105 font-size: 1.5rem;
93 106 }
94 107
95 -/* Import Methods */
108 +.mxchat-card-header {
109 + display: flex;
110 + justify-content: space-between;
111 + align-items: center;
112 + margin-bottom: 20px;
113 +}
114 +
115 +.mxchat-header-actions {
116 + display: flex;
117 + gap: 16px;
118 + align-items: center;
119 +}
120 +
121 +/* ===== Knowledge Warning ===== */
122 +.mxchat-knowledge-warning {
123 + padding: 15px;
124 + border-radius: 8px;
125 + margin-bottom: 20px;
126 +}
127 +
128 +.mxchat-knowledge-warning.success {
129 + background-color: #eefbe8;
130 + border-left: 4px solid #4caf50;
131 +}
132 +
133 +.mxchat-knowledge-warning.warning {
134 + background-color: #fff9e6;
135 + border-left: 4px solid #ff9800;
136 +}
137 +
138 +.mxchat-knowledge-warning p {
139 + align-items: center;
140 + margin: 0;
141 + color: #333;
142 +}
143 +
144 +.mxchat-knowledge-warning .dashicons {
145 + margin-right: 10px;
146 + font-size: 20px;
147 +}
148 +
149 +.mxchat-knowledge-warning .dashicons-yes-alt {
150 + color: #4caf50;
151 +}
152 +
153 +.mxchat-knowledge-warning .dashicons-warning {
154 + color: #ff9800;
155 +}
156 +
157 +/* ===== Import Section ===== */
158 +.mxchat-import-section {
159 + margin-top: 30px;
160 +}
161 +
162 +.mxchat-import-section h3 {
163 + margin-top: 0;
164 + margin-bottom: 20px;
165 + font-size: 18px;
166 + color: #333;
167 +}
168 +
169 +/* Import Options */
170 +.mxchat-import-options {
171 + display: grid;
172 + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
173 + gap: 16px;
174 + margin-bottom: 24px;
175 +}
176 +
177 +/* Import Box Styling */
178 +.mxchat-import-box {
179 + display: flex;
180 + align-items: flex-start;
181 + padding: 0;
182 + background: #fff;
183 + border: 1px solid #e5e5e5;
184 + border-radius: 10px;
185 + cursor: pointer;
186 + transition: all 0.2s ease;
187 + position: relative;
188 + overflow: hidden;
189 + text-align: left;
190 + width: 100%;
191 +}
192 +
193 +.mxchat-import-box:hover {
194 + border-color: #7873f5;
195 + box-shadow: 0 4px 12px rgba(120, 115, 245, 0.1);
196 + transform: translateY(-4px);
197 +}
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 +.mxchat-import-wordpress {
206 + border: 2px solid #7873f5;
207 + background-color: #f8f9ff;
208 +}
209 +
210 +.mxchat-import-icon {
211 + width: 48px;
212 + height: 48px;
213 + display: flex;
214 + align-items: center;
215 + justify-content: center;
216 + background-color: #f0f0f0;
217 + border-radius: 8px;
218 + margin: 16px;
219 + flex-shrink: 0;
220 +}
221 +
222 +.mxchat-import-wordpress .mxchat-import-icon {
223 + background-color: #f0e6ff;
224 +}
225 +
226 +.mxchat-import-icon .dashicons {
227 + font-size: 24px;
228 + color: #7873f5;
229 +}
230 +
231 +.mxchat-import-content {
232 + flex: 1;
233 + padding: 18px 18px 18px 0;
234 +}
235 +
236 +.mxchat-import-content h4 {
237 + margin: 0 0 8px;
238 + font-size: 16px;
239 + color: #333;
240 +}
241 +
242 +.mxchat-import-content p {
243 + margin: 0;
244 + font-size: 14px;
245 + color: #666;
246 + line-height: 1.5;
247 +}
248 +
249 +.mxchat-recommended-tag {
250 + position: absolute;
251 + top: 0;
252 + right: 0;
253 + background-color: #7873f5;
254 + color: white;
255 + padding: 4px 10px;
256 + font-size: 10px;
257 + border-bottom-left-radius: 8px;
258 +}
259 +
260 +/* Import Input Areas */
261 +.mxchat-import-input-area {
262 + background-color: #f9f9fd;
263 + border-radius: 10px;
264 + padding: 24px;
265 + margin-bottom: 24px;
266 + border: 1px solid #e5e5e5;
267 + text-align: center;
268 +}
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 +.mxchat-url-input-group {
282 + display: flex;
283 + gap: 12px;
284 + max-width: 800px;
285 + margin: 0 auto;
286 +}
287 +
288 +.mxchat-url-input-group input {
289 + flex: 1;
290 + padding: 12px 16px;
291 + border: 1px solid #ddd;
292 + border-radius: 8px;
293 + font-size: 14px;
294 +}
295 +
296 +.mxchat-url-input-group input:focus {
297 + border-color: #7873f5;
298 + box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
299 + outline: none;
300 +}
301 +
302 +.mxchat-url-description {
303 + font-size: 14px;
304 + color: #666;
305 + margin-top: 16px;
306 + font-style: italic;
307 +}
308 +
309 +.mxchat-content-input-group {
310 + max-width: 800px;
311 + margin: 0 auto;
312 +}
313 +
314 +.mxchat-content-input-group textarea {
315 + width: 100%;
316 + min-height: 150px;
317 + padding: 12px 16px;
318 + border: 1px solid #ddd;
319 + border-radius: 8px;
320 + margin-bottom: 16px;
321 + font-size: 14px;
322 + resize: vertical;
323 +}
324 +
325 +.mxchat-content-input-group textarea:focus {
326 + border-color: #7873f5;
327 + box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
328 + outline: none;
329 +}
330 +
331 +/* Primary Import Card */
332 +.mxchat-primary-import-card {
333 + background-color: #fff;
334 + border: 2px solid #7873f5;
335 + border-radius: 8px;
336 + box-shadow: 0 4px 12px rgba(120, 115, 245, 0.1);
337 + margin-bottom: 30px;
338 + overflow: hidden;
339 + transition: all 0.3s ease;
340 +}
341 +
342 +.mxchat-primary-import-card:hover {
343 + box-shadow: 0 6px 16px rgba(120, 115, 245, 0.2);
344 + transform: translateY(-2px);
345 +}
346 +
347 +.mxchat-card-header {
348 + padding: 15px 20px;
349 + display: flex;
350 + align-items: center;
351 + justify-content: space-between;
352 + border-bottom: 1px solid #e2d9ff;
353 +}
354 +
355 +.mxchat-card-header h3 {
356 + margin: 0;
357 + color: #7873f5;
358 + font-size: 18px;
359 + font-weight: 600;
360 +}
361 +
362 +.mxchat-recommended-badge {
363 + background-color: #7873f5;
364 + color: white;
365 + font-size: 12px;
366 + padding: 4px 10px;
367 + border-radius: 12px;
368 + font-weight: 500;
369 +}
370 +
371 +.mxchat-card-content {
372 + padding: 20px;
373 +}
374 +
375 +.mxchat-method-description {
376 + font-size: 15px;
377 + line-height: 1.5;
378 + color: #555;
379 + margin-bottom: 20px;
380 +}
381 +
382 +.mxchat-card-actions {
383 + text-align: center;
384 +}
385 +
386 +.mxchat-featured-button {
387 + background: linear-gradient(135deg, #fa73e6, #7873f5) !important;
388 + color: white !important;
389 + font-size: 15px !important;
390 + padding: 10px 20px !important;
391 + border: none !important;
392 + box-shadow: 0 4px 8px rgba(120, 115, 245, 0.2) !important;
393 + transition: all 0.3s ease !important;
394 + display: inline-flex !important;
395 + align-items: center !important;
396 + gap: 8px !important;
397 +}
398 +
399 +.mxchat-featured-button:hover {
400 + background: linear-gradient(135deg, #e56dd6, #6b67db) !important;
401 + box-shadow: 0 6px 12px rgba(120, 115, 245, 0.3) !important;
402 + transform: translateY(-2px) !important;
403 +}
404 +
405 +/* Alternative Import Methods */
406 +.mxchat-alternative-imports {
407 + background-color: #fff;
408 + border: 1px solid #e5e5e5;
409 + border-radius: 8px;
410 + padding: 20px;
411 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
412 +}
413 +
414 +.mxchat-alt-header {
415 + font-size: 16px;
416 + color: #666;
417 + margin-top: 0;
418 + margin-bottom: 15px;
419 + padding-bottom: 10px;
420 + border-bottom: 1px solid #eee;
421 +}
422 +
423 +.mxchat-import-methods-grid {
424 + display: grid;
425 + grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
426 + gap: 20px;
427 + margin-bottom: 25px;
428 +}
429 +
430 +/* ===== Import Methods ===== */
96 431 .mxchat-import-methods {
97 432 display: grid;
98 433 grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
99 434 gap: 20px;
@@ -100,26 +435,85 @@
100 435 margin: 30px 0;
101 436 }
102 437
103 438 .mxchat-method-card {
104 - background: #f8f9ff;
105 - padding: 20px;
106 - border-radius: 10px;
107 - border: 1px solid rgba(120, 115, 245, 0.1);
439 + background-color: #f9f9f9;
440 + border: 1px solid #eee;
441 + border-radius: 8px;
442 + padding: 15px;
443 + transition: all 0.2s ease;
444 + height: 100%;
108 445 }
109 446
110 -.mxchat-method-card h4 {
447 +.mxchat-method-card:hover {
448 + background-color: #f5f5f5;
449 + border-color: #ddd;
450 +}
451 +
452 +.mxchat-method-icon {
453 + display: flex;
454 + justify-content: center;
455 + margin-bottom: 10px;
456 +}
457 +
458 +.mxchat-method-icon .dashicons {
459 + font-size: 24px;
460 + width: 24px;
461 + height: 24px;
462 + color: #666;
463 +}
464 +
465 +.mxchat-method-card h4,
466 +.mxchat-method-card h5 {
467 + margin: 0 0 10px 0;
468 + font-size: 15px;
469 + text-align: center;
470 + color: #444;
471 +}
472 +
473 +.mxchat-method-card p {
474 + margin: 0;
475 + font-size: 13px;
476 + color: #666;
477 + text-align: center;
478 +}
479 +
480 +.mxchat-note,
481 +.red-warning {
482 + color: #ff5722;
483 + font-weight: 500;
484 +}
485 +
486 +/* Legacy Import Form */
487 +.mxchat-legacy-import-form {
488 + margin-top: 20px;
489 + padding-top: 20px;
490 + border-top: 1px dashed #ddd;
491 +}
492 +
493 +/* ===== Settings Section ===== */
494 +.mxchat-settings-section {
495 + margin-bottom: 30px;
496 +}
497 +
498 +.mxchat-settings-section h3 {
499 + margin-top: 0;
500 + margin-bottom: 12px;
111 501 color: #333;
112 - margin: 0 0 10px;
502 + font-size: 1.3rem;
113 503 }
114 504
115 -.mxchat-method-card p {
505 +.mxchat-description {
116 506 color: #666;
117 - margin: 0;
118 - font-size: 0.9rem;
507 + font-size: 14px;
508 + margin-bottom: 20px;
119 509 }
120 510
121 -/* Tabs */
511 +.mxchat-section-content {
512 + margin-top: 15px;
513 +}
514 +
515 +/* ===== Tabs ===== */
122 516 .mxchat-tabs {
123 517 border-bottom: 1px solid rgba(120, 115, 245, 0.1);
124 518 margin-bottom: 20px;
125 519 display: flex;
@@ -145,9 +539,21 @@
145 539 color: #7873f5;
146 540 border-bottom-color: #7873f5;
147 541 }
148 542
149 -/* Toggle Switches */
543 +.mxchat-tab-contents {
544 + margin-top: 20px;
545 +}
546 +
547 +.mxchat-tab-content {
548 + display: none;
549 +}
550 +
551 +.mxchat-tab-content.active {
552 + display: block;
553 +}
554 +
555 +/* ===== Toggle Switches ===== */
150 556 .mxchat-toggle-group {
151 557 display: flex;
152 558 flex-direction: column;
153 559 gap: 15px;
@@ -204,9 +610,43 @@
204 610 input:checked + .mxchat-toggle-slider:before {
205 611 transform: translateX(26px);
206 612 }
207 613
208 -/* Form Elements */
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 +.mxchat-toggle-label {
626 + font-size: 14px;
627 + color: #333;
628 +}
629 +
630 +/* ===== Custom Post Types ===== */
631 +.mxchat-custom-post-types-header {
632 + margin-top: 20px;
633 +}
634 +
635 +.mxchat-custom-post-types-container {
636 + margin-top: 15px;
637 + padding: 15px;
638 + background-color: #f8f9ff;
639 + border-radius: 8px;
640 + border: 1px solid rgba(120, 115, 245, 0.1);
641 +}
642 +
643 +.mxchat-toggle-icon {
644 + margin-left: 5px;
645 + font-size: 12px;
646 +}
647 +
648 +/* ===== Form Elements ===== */
209 649 .mxchat-form-group {
210 650 margin-bottom: 20px;
211 651 }
212 652
@@ -218,8 +658,9 @@
218 658 }
219 659
220 660 .mxchat-form-group input[type="text"],
221 661 .mxchat-form-group input[type="url"],
662 +.mxchat-form-group input[type="search"],
222 663 .mxchat-form-group textarea {
223 664 width: 100%;
224 665 padding: 12px 15px;
225 666 border: 2px solid rgba(120, 115, 245, 0.2);
@@ -239,19 +680,65 @@
239 680 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
240 681 outline: none;
241 682 }
242 683
243 -/* URL Input Group */
244 -.mxchat-url-input-group {
684 +/* ===== Search ===== */
685 +.mxchat-search-form {
245 686 display: flex;
246 - gap: 10px;
247 687 }
248 688
249 -.mxchat-url-input-group input {
250 - flex: 1;
689 +.mxchat-search-group {
690 + position: relative;
691 + display: flex;
692 + align-items: center;
251 693 }
252 694
253 -/* Buttons */
695 +.mxchat-search-group .dashicons {
696 + position: absolute;
697 + left: 12px;
698 + color: #666;
699 +}
700 +
701 +.mxchat-search-group input {
702 + padding-left: 40px;
703 + width: 300px;
704 +}
705 +
706 +/* ADDED 2.5.6: Content Type Filter Styles */
707 +.mxchat-filter-group {
708 + position: relative;
709 + display: flex;
710 + align-items: center;
711 + margin-left: 12px;
712 +}
713 +
714 +.mxchat-filter-group select {
715 + padding: 8px 32px 8px 12px;
716 + border: 1px solid #ddd;
717 + border-radius: 8px;
718 + background: white;
719 + color: #333;
720 + font-size: 14px;
721 + cursor: pointer;
722 + transition: all 0.2s ease;
723 + appearance: none;
724 + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
725 + background-repeat: no-repeat;
726 + background-position: right 12px center;
727 +}
728 +
729 +.mxchat-filter-group select:hover {
730 + border-color: #7873f5;
731 + box-shadow: 0 2px 8px rgba(120, 115, 245, 0.1);
732 +}
733 +
734 +.mxchat-filter-group select:focus {
735 + outline: none;
736 + border-color: #7873f5;
737 + box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
738 +}
739 +
740 +/* ===== Buttons ===== */
254 741 .mxchat-button-primary {
255 742 background: linear-gradient(135deg, #fa73e6, #7873f5);
256 743 border: none;
257 744 color: white;
@@ -266,8 +753,15 @@
266 753 transform: translateY(-1px);
267 754 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.2);
268 755 }
269 756
757 +.mxchat-button-primary:disabled {
758 + background: #a7a7a7;
759 + cursor: not-allowed;
760 + transform: none;
761 + box-shadow: none;
762 +}
763 +
270 764 .mxchat-button-secondary {
271 765 background: #f8f9ff;
272 766 border: 1px solid rgba(120, 115, 245, 0.2);
273 767 color: #666;
@@ -312,9 +806,89 @@
312 806 background: #f8f9ff;
313 807 color: #7873f5;
314 808 }
315 809
316 -/* Table Styles */
810 +/* ===== Status Cards ===== */
811 +.mxchat-status-card {
812 + background: #f8f9ff;
813 + border-radius: 10px;
814 + padding: 20px;
815 + margin-top: 20px;
816 + border: 1px solid rgba(120, 115, 245, 0.1);
817 +}
818 +
819 +.mxchat-status-header {
820 + display: flex;
821 + justify-content: space-between;
822 + align-items: center;
823 + margin-bottom: 15px;
824 +}
825 +
826 +.mxchat-status-details {
827 + margin-top: 10px;
828 + color: #666;
829 +}
830 +
831 +.mxchat-status-badge {
832 + display: inline-block;
833 + padding: 3px 8px;
834 + border-radius: 3px;
835 + font-size: 12px;
836 + font-weight: 500;
837 + text-transform: uppercase;
838 + margin-left: 10px;
839 +}
840 +
841 +.mxchat-status-failed {
842 + background-color: #f44336;
843 + color: white;
844 +}
845 +
846 +.mxchat-status-success {
847 + background-color: #4caf50;
848 + color: white;
849 +}
850 +
851 +.mxchat-error-notice {
852 + margin-top: 15px;
853 + padding: 10px;
854 + background-color: #fff5f5;
855 + border-left: 3px solid #f44336;
856 + color: #d32f2f;
857 + border-radius: 4px;
858 +}
859 +
860 +.mxchat-failed-urls {
861 + margin-top: 15px;
862 +}
863 +
864 +.mxchat-failed-urls h5 {
865 + margin-top: 0;
866 + margin-bottom: 10px;
867 + color: #333;
868 +}
869 +
870 +.mxchat-failed-urls-list {
871 + max-height: 200px;
872 + overflow-y: auto;
873 +}
874 +
875 +/* ===== Progress Bar ===== */
876 +.mxchat-progress-bar {
877 + height: 8px;
878 + background: rgba(120, 115, 245, 0.1);
879 + border-radius: 4px;
880 + overflow: hidden;
881 + margin: 15px 0;
882 +}
883 +
884 +.mxchat-progress-fill {
885 + height: 100%;
886 + background: linear-gradient(135deg, #fa73e6, #7873f5);
887 + transition: width 0.3s ease;
888 +}
889 +
890 +/* ===== Table Styles ===== */
317 891 .mxchat-table-wrapper {
318 892 overflow-x: auto;
319 893 margin: 20px 0;
320 894 }
@@ -333,8 +907,14 @@
333 907 text-align: left;
334 908 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
335 909 }
336 910
911 +/* Hide ID column (now second column, after checkbox column) */
912 +.mxchat-records-table th:nth-child(2),
913 +.mxchat-records-table td:nth-child(2) {
914 + display: none;
915 +}
916 +
337 917 .mxchat-records-table td {
338 918 padding: 15px;
339 919 border-top: 1px solid rgba(120, 115, 245, 0.1);
340 920 vertical-align: top;
@@ -344,11 +924,110 @@
344 924 background: rgba(120, 115, 245, 0.03);
345 925 }
346 926
347 927 .mxchat-content-cell {
348 - max-width: 400px;
928 + max-width: 600px;
349 929 }
350 930
931 +/* ===== Accordion Styles ===== */
932 +.mxchat-accordion-wrapper {
933 + width: 100%;
934 +}
935 +
936 +.mxchat-content-preview {
937 + display: flex;
938 + align-items: center;
939 + gap: 12px;
940 + padding: 8px 12px;
941 + border-radius: 6px;
942 + transition: all 0.2s ease;
943 +}
944 +
945 +/* Only make it look clickable if there's an expand button */
946 +.mxchat-content-preview:has(.mxchat-expand-toggle) {
947 + cursor: pointer;
948 +}
949 +
950 +.mxchat-content-preview:has(.mxchat-expand-toggle):hover {
951 + background: rgba(120, 115, 245, 0.04);
952 +}
953 +
954 +.mxchat-content-preview .preview-text {
955 + flex: 1;
956 + font-size: 14px;
957 + line-height: 1.6;
958 + color: #333;
959 + overflow: hidden;
960 +}
961 +
962 +.mxchat-expand-toggle {
963 + flex-shrink: 0;
964 + width: 28px;
965 + height: 28px;
966 + border: none;
967 + background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
968 + border-radius: 6px;
969 + cursor: pointer;
970 + display: inline-flex;
971 + align-items: center;
972 + justify-content: center;
973 + transition: all 0.3s ease;
974 + padding: 0;
975 +}
976 +
977 +.mxchat-expand-toggle:hover {
978 + background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
979 + transform: scale(1.05);
980 +}
981 +
982 +.mxchat-expand-toggle .dashicons {
983 + font-size: 18px;
984 + width: 18px;
985 + height: 18px;
986 + color: #7873f5;
987 + transition: transform 0.3s ease;
988 +}
989 +
990 +.mxchat-expand-toggle.expanded .dashicons {
991 + transform: rotate(180deg);
992 +}
993 +
994 +.mxchat-content-full {
995 + margin-top: 12px;
996 + padding: 16px;
997 + background: rgba(120, 115, 245, 0.03);
998 + border-radius: 8px;
999 + border-left: 3px solid #7873f5;
1000 + animation: slideDown 0.3s ease;
1001 +}
1002 +
1003 +@keyframes slideDown {
1004 + from {
1005 + opacity: 0;
1006 + max-height: 0;
1007 + transform: translateY(-10px);
1008 + }
1009 + to {
1010 + opacity: 1;
1011 + max-height: 1000px;
1012 + transform: translateY(0);
1013 + }
1014 +}
1015 +
1016 +.mxchat-content-full .content-view {
1017 + font-size: 14px;
1018 + line-height: 1.6;
1019 + color: #333;
1020 +}
1021 +
1022 +.mxchat-content-full .content-view p {
1023 + margin: 0 0 12px 0;
1024 +}
1025 +
1026 +.mxchat-content-full .content-view p:last-child {
1027 + margin-bottom: 0;
1028 +}
1029 +
351 1030 .mxchat-url-cell a {
352 1031 color: #7873f5;
353 1032 text-decoration: none;
354 1033 display: flex;
@@ -365,111 +1044,808 @@
365 1044 display: flex;
366 1045 gap: 8px;
367 1046 }
368 1047
369 -/* Progress Bar */
370 -.mxchat-progress-bar {
371 - height: 8px;
372 - background: rgba(120, 115, 245, 0.1);
1048 +/* Legacy content-view styling (now within accordion) */
1049 +.content-edit {
1050 + width: 100%;
1051 + min-height: 100px;
1052 + border: 1px solid #ddd;
373 1053 border-radius: 4px;
374 - overflow: hidden;
375 - margin: 10px 0;
1054 + padding: 10px;
376 1055 }
377 1056
378 -.mxchat-progress-fill {
1057 +.url-view a {
1058 + color: #7873f5;
1059 + text-decoration: none;
1060 +}
1061 +
1062 +.url-edit {
1063 + width: 100%;
1064 +}
1065 +
1066 +/* ===== Pagination ===== */
1067 +.mxchat-pagination {
1068 + margin-top: 20px;
1069 + padding-top: 20px;
1070 + text-align: center;
1071 + border-top: 1px solid rgba(120, 115, 245, 0.1);
1072 +}
1073 +
1074 +.mxchat-pagination .page-numbers {
1075 + display: inline-flex;
1076 + align-items: center;
1077 + justify-content: center;
1078 + min-width: 32px;
1079 + height: 32px;
1080 + padding: 0 8px;
1081 + margin: 0 4px;
1082 + border-radius: 6px;
1083 + background: white;
1084 + border: 1px solid rgba(120, 115, 245, 0.2);
1085 + color: #333;
1086 + text-decoration: none;
1087 + transition: all 0.2s ease;
1088 +}
1089 +
1090 +.mxchat-pagination .page-numbers.current {
1091 + background: linear-gradient(135deg, #fa73e6, #7873f5);
1092 + color: white;
1093 + border: none;
1094 +}
1095 +
1096 +/* ===== Notifications ===== */
1097 +.mxchat-notification {
1098 + margin: 15px 20px 0;
1099 + padding: 10px 15px;
1100 + border-radius: 4px;
1101 + font-size: 14px;
1102 +}
1103 +
1104 +.mxchat-notification.success {
1105 + background-color: #d4edda;
1106 + color: #155724;
1107 + border: 1px solid #c3e6cb;
1108 +}
1109 +
1110 +.mxchat-notification.error {
1111 + background-color: #f8d7da;
1112 + color: #721c24;
1113 + border: 1px solid #f5c6cb;
1114 +}
1115 +
1116 +/* ===== Responsive Design ===== */
1117 +@media (max-width: 768px) {
1118 + .mxchat-hero h1.mxchat-main-title {
1119 + font-size: 2.5rem;
1120 + }
1121 +
1122 + .mxchat-card {
1123 + padding: 20px;
1124 + }
1125 +
1126 + .mxchat-import-options {
1127 + grid-template-columns: 1fr;
1128 + }
1129 +
1130 + .mxchat-url-input-group {
1131 + flex-direction: column;
1132 + }
1133 +
1134 + .mxchat-url-input-group input,
1135 + .mxchat-url-input-group button {
1136 + width: 100%;
1137 + }
1138 +
1139 + .mxchat-content-input-group textarea {
1140 + min-height: 120px;
1141 + }
1142 +
1143 + .mxchat-status-header {
1144 + flex-direction: column;
1145 + align-items: flex-start;
1146 + gap: 10px;
1147 + }
1148 +
1149 + .mxchat-records-table {
1150 + display: block;
1151 + overflow-x: auto;
1152 + }
1153 +
1154 + .mxchat-stop-form button {
1155 + width: 100%;
1156 + }
1157 +}
1158 +
1159 +@media (max-width: 480px) {
1160 + .mxchat-card {
1161 + padding: 15px;
1162 + }
1163 +
1164 + .mxchat-import-box {
1165 + flex-direction: column;
1166 + align-items: center;
1167 + text-align: center;
1168 + }
1169 +
1170 + .mxchat-import-icon {
1171 + margin: 16px 16px 0 16px;
1172 + }
1173 +
1174 + .mxchat-import-content {
1175 + padding: 16px;
1176 + }
1177 +
1178 + .mxchat-recommended-tag {
1179 + border-radius: 0 0 0 8px;
1180 + }
1181 +}
1182 +
1183 +/* RTL Support */
1184 +.rtl .mxchat-knowledge-warning {
1185 + border-left: none;
1186 + border-right: 4px solid;
1187 +}
1188 +
1189 +.rtl .mxchat-knowledge-warning .dashicons {
1190 + margin-right: 0;
1191 + margin-left: 10px;
1192 +}
1193 +
1194 +.rtl .mxchat-import-box {
1195 + flex-direction: row-reverse;
1196 +}
1197 +
1198 +.rtl .mxchat-import-content {
1199 + padding: 16px 0 16px 16px;
1200 +}
1201 +
1202 +.rtl .mxchat-import-icon {
1203 + margin: 16px;
1204 +}
1205 +
1206 +.rtl .mxchat-recommended-tag {
1207 + right: auto;
1208 + left: 0;
1209 + border-bottom-left-radius: 0;
1210 + border-bottom-right-radius: 8px;
1211 +}
1212 +
1213 +.rtl .mxchat-toggle-container {
1214 + flex-direction: row-reverse;
1215 +}
1216 +
1217 +.rtl .mxchat-toggle-slider:before {
1218 + left: auto;
1219 + right: 2px;
1220 +}
1221 +
1222 +.rtl input:checked + .mxchat-toggle-slider:before {
1223 + transform: translateX(-26px);
1224 +}
1225 +
1226 +.rtl input:indeterminate + .mxchat-toggle-slider:before {
1227 + transform: translateX(-13px);
1228 +}
1229 +
1230 +.rtl .mxchat-error-notice {
1231 + border-left: none;
1232 + border-right: 3px solid #f44336;
1233 +}
1234 +
1235 +.rtl .mxchat-records-table th,
1236 +.rtl .mxchat-records-table td {
1237 + text-align: right;
1238 +}
1239 +
1240 +.rtl .mxchat-search-group .dashicons {
1241 + left: auto;
1242 + right: 12px;
1243 +}
1244 +
1245 +.rtl .mxchat-search-group input {
1246 + padding-left: 12px;
1247 + padding-right: 40px;
1248 +}
1249 +
1250 +
1251 +
1252 +
1253 +
1254 +
1255 +
1256 +
1257 +
1258 +
1259 +
1260 +
1261 +
1262 +
1263 +
1264 +
1265 +
1266 +
1267 +
1268 +
1269 +
1270 +
1271 +
1272 +
1273 +
1274 +
1275 +
1276 +
1277 +/* ===== Modal Styles ===== */
1278 +.mxchat-kb-modal {
1279 + display: none;
1280 + position: fixed;
1281 + top: 0;
1282 + left: 0;
1283 + width: 100%;
379 1284 height: 100%;
380 - background: linear-gradient(135deg, #fa73e6, #7873f5);
381 - transition: width 0.3s ease;
1285 + background-color: rgba(0, 0, 0, 0.7);
1286 + z-index: 999999;
1287 + overflow: auto;
1288 + justify-content: center;
1289 + align-items: center;
382 1290 }
383 1291
384 -/* Status Card */
385 -.mxchat-status-card {
386 - background: #f8f9ff;
387 - border-radius: 10px;
1292 +.mxchat-kb-modal.active {
1293 + display: flex;
1294 +}
1295 +
1296 +.mxchat-kb-modal-content {
1297 + position: relative;
1298 + background-color: #fff;
1299 + margin: 24px auto;
1300 + padding: 0;
1301 + border-radius: 8px;
1302 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1303 + width: 90%;
1304 + 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 + max-height: 85vh;
1308 + max-height: min(85vh, calc(100dvh - 48px));
1309 + display: flex;
1310 + flex-direction: column;
1311 + animation: mxchat-kb-modal-appear 0.3s ease-out;
1312 +}
1313 +
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 +@keyframes mxchat-kb-modal-appear {
1328 + from {
1329 + opacity: 0;
1330 + transform: translateY(-30px);
1331 + }
1332 + to {
1333 + opacity: 1;
1334 + transform: translateY(0);
1335 + }
1336 +}
1337 +
1338 +.mxchat-kb-modal-header {
1339 + display: flex;
1340 + align-items: center;
1341 + justify-content: space-between;
388 1342 padding: 20px;
389 - margin-top: 20px;
1343 + border-bottom: 1px solid #e5e5e5;
1344 + background-color: #f8f9fa;
1345 + border-radius: 8px 8px 0 0;
390 1346 }
391 1347
392 -.mxchat-status-header {
1348 +.mxchat-kb-modal-header h3 {
1349 + margin: 0;
1350 + font-size: 20px;
1351 + font-weight: 600;
1352 + color: #23282d;
1353 +}
1354 +
1355 +.mxchat-kb-modal-close {
1356 + font-size: 28px;
1357 + font-weight: bold;
1358 + cursor: pointer;
1359 + color: #666;
1360 + line-height: 1;
1361 + transition: color 0.2s;
1362 +}
1363 +
1364 +.mxchat-kb-modal-close:hover {
1365 + color: #d63638;
1366 +}
1367 +
1368 +.mxchat-kb-modal-filters {
1369 + padding: 15px 20px;
1370 + background-color: #f8f9fa;
393 1371 display: flex;
1372 + align-items: center;
394 1373 justify-content: space-between;
1374 + border-bottom: 1px solid #e5e5e5;
1375 + flex-wrap: wrap;
1376 + gap: 10px;
1377 +}
1378 +
1379 +.mxchat-kb-search-group {
1380 + position: relative;
1381 + flex: 1;
1382 + min-width: 200px;
1383 + max-width: 400px;
1384 +}
1385 +
1386 +.mxchat-kb-search-group input {
1387 + width: 100%;
1388 + padding: 8px 12px 8px 35px;
1389 + border-radius: 4px;
1390 + border: 1px solid #ddd;
1391 + font-size: 14px;
1392 + transition: border-color 0.2s;
1393 +}
1394 +
1395 +.mxchat-kb-search-group input:focus {
1396 + border-color: #7873f5;
1397 + outline: none;
1398 + box-shadow: 0 0 0 1px #7873f5;
1399 +}
1400 +
1401 +.mxchat-kb-search-group::before {
1402 + content: "\f179";
1403 + font-family: dashicons;
1404 + position: absolute;
1405 + left: 10px;
1406 + top: 50%;
1407 + transform: translateY(-50%);
1408 + color: #666;
1409 +}
1410 +
1411 +.mxchat-kb-filter-group {
1412 + display: flex;
1413 + gap: 10px;
1414 + flex-wrap: wrap;
1415 +}
1416 +
1417 +.mxchat-kb-filter-group select {
1418 + padding: 8px 12px;
1419 + border-radius: 4px;
1420 + border: 1px solid #ddd;
1421 + font-size: 14px;
1422 + background-color: white;
1423 + min-width: 150px;
1424 + appearance: none;
1425 + background-repeat: no-repeat;
1426 + background-position: right 10px center;
1427 + padding-right: 30px;
1428 +}
1429 +
1430 +.mxchat-kb-filter-group select:focus {
1431 + border-color: #7873f5;
1432 + outline: none;
1433 + box-shadow: 0 0 0 1px #7873f5;
1434 +}
1435 +
1436 +/* Special style for the "processed" filter */
1437 +#mxchat-kb-processed-filter {
1438 + border-left: 3px solid #1e88e5;
1439 +}
1440 +
1441 +.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;
1449 +}
1450 +
1451 +.mxchat-kb-selection-header {
1452 + display: flex;
1453 + justify-content: space-between;
395 1454 align-items: center;
396 - margin-bottom: 15px;
1455 + padding: 15px 20px;
1456 + background-color: #f8f9fa;
1457 + border-bottom: 1px solid #eee;
1458 + position: sticky;
1459 + top: 0;
1460 + z-index: 10;
397 1461 }
398 1462
399 -.mxchat-status-details {
400 - margin-top: 10px;
1463 +.mxchat-kb-selection-header label {
1464 + display: flex;
1465 + align-items: center;
1466 + gap: 8px;
1467 + font-weight: 500;
1468 +}
1469 +
1470 +.mxchat-kb-selection-count {
1471 + font-size: 14px;
401 1472 color: #666;
1473 + font-weight: 500;
402 1474 }
403 1475
404 -/* Search */
405 -.mxchat-search-form {
406 - position: relative;
1476 +.mxchat-kb-content-list {
1477 + padding: 0;
1478 + /* The one and only scroller inside the modal. */
1479 + flex: 1 1 auto;
1480 + min-height: 0;
1481 + overflow-y: auto;
407 1482 }
408 1483
409 -.mxchat-search-group {
410 - position: relative;
1484 +.mxchat-kb-content-item {
411 1485 display: flex;
1486 + padding: 15px 20px;
1487 + border-bottom: 1px solid #eee;
1488 + transition: background-color 0.2s;
1489 +}
1490 +
1491 +.mxchat-kb-content-item:hover {
1492 + background-color: #f0f7ff;
1493 +}
1494 +
1495 +/* Improved visibility for processed items */
1496 +.mxchat-kb-content-item.processed {
1497 + background-color: #f0f8ff;
1498 + border-left: 3px solid #1e88e5;
1499 +}
1500 +
1501 +.mxchat-kb-content-item.processed:hover {
1502 + background-color: #e3f2fd;
1503 +}
1504 +
1505 +.mxchat-kb-content-checkbox {
1506 + margin-right: 15px;
1507 + display: flex;
1508 + align-items: flex-start;
1509 + padding-top: 3px;
1510 +}
1511 +
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 +.mxchat-kb-content-checkbox input[type="checkbox"] {
1519 + margin: 0;
1520 + cursor: pointer;
1521 + accent-color: var(--mxch-primary, #7873f5);
1522 +}
1523 +
1524 +.mxchat-kb-content-checkbox input[type="checkbox"]:focus-visible {
1525 + outline: 2px solid var(--mxch-primary, #7873f5);
1526 + outline-offset: 2px;
1527 +}
1528 +
1529 +.mxchat-kb-content-details {
1530 + flex: 1;
1531 +}
1532 +
1533 +.mxchat-kb-content-title {
1534 + font-size: 16px;
1535 + font-weight: 600;
1536 + margin-bottom: 8px;
1537 + display: flex;
412 1538 align-items: center;
1539 + flex-wrap: wrap;
1540 + gap: 8px;
413 1541 }
414 1542
415 -.mxchat-search-group .dashicons {
416 - position: absolute;
417 - left: 12px;
1543 +.mxchat-kb-content-title a {
1544 + color: #7873f5;
1545 + text-decoration: none;
1546 +}
1547 +
1548 +.mxchat-kb-content-title a:hover {
1549 + color: #fa73e6;
1550 + text-decoration: underline;
1551 +}
1552 +
1553 +/* Style for processed badge */
1554 +.mxchat-kb-processed-badge {
1555 + display: inline-block;
1556 + background-color: #1e88e5;
1557 + color: white;
1558 + font-size: 11px;
1559 + padding: 2px 8px;
1560 + border-radius: 10px;
1561 + font-weight: normal;
1562 +}
1563 +
1564 +/* Style for unprocessed badge */
1565 +.mxchat-kb-unprocessed-badge {
1566 + display: inline-block;
1567 + background-color: #607d8b;
1568 + color: white;
1569 + font-size: 11px;
1570 + padding: 2px 8px;
1571 + border-radius: 10px;
1572 + font-weight: normal;
1573 +}
1574 +
1575 +/* Last updated timestamp */
1576 +.mxchat-kb-last-updated {
1577 + font-size: 11px;
418 1578 color: #666;
1579 + font-style: italic;
1580 + margin-left: 8px;
419 1581 }
420 1582
421 -.mxchat-search-group input {
422 - padding-left: 40px;
423 - width: 300px;
1583 +.mxchat-kb-content-meta {
1584 + display: flex;
1585 + flex-wrap: wrap;
1586 + gap: 15px;
1587 + color: #666;
1588 + font-size: 13px;
1589 + margin-bottom: 8px;
424 1590 }
425 1591
426 -/* Header Actions */
427 -.mxchat-card-header {
1592 +.mxchat-kb-content-excerpt {
1593 + color: #555;
1594 + font-size: 14px;
1595 + line-height: 1.5;
1596 +}
1597 +
1598 +.mxchat-kb-modal-footer {
1599 + padding: 15px 20px;
1600 + border-top: 1px solid #e5e5e5;
428 1601 display: flex;
429 1602 justify-content: space-between;
430 1603 align-items: center;
431 - margin-bottom: 20px;
1604 + gap: 15px;
1605 + background-color: #f8f9fa;
1606 + border-radius: 0 0 8px 8px;
432 1607 }
433 1608
434 -.mxchat-header-actions {
1609 +.mxchat-kb-modal-footer .mxchat-kb-pagination {
1610 + flex: 1;
1611 + margin: 0;
1612 + padding: 0;
1613 + text-align: left;
1614 +}
1615 +
1616 +.mxchat-kb-footer-actions {
435 1617 display: flex;
436 - gap: 16px;
1618 + gap: 10px;
1619 + flex-shrink: 0;
1620 +}
1621 +
1622 +.mxchat-kb-button-primary,
1623 +.mxchat-kb-button-secondary {
1624 + padding: 8px 15px;
1625 + border-radius: 4px;
1626 + font-size: 14px;
1627 + cursor: pointer;
1628 + font-weight: 500;
1629 + text-align: center;
1630 + transition: all 0.2s;
1631 +}
1632 +
1633 +.mxchat-kb-button-primary {
1634 + background: linear-gradient(135deg, #fa73e6, #7873f5);
1635 + color: white;
1636 + border: none;
1637 +}
1638 +
1639 +.mxchat-kb-button-primary:hover {
1640 + background: linear-gradient(135deg, #e56dd6, #6b67db);
1641 +}
1642 +
1643 +.mxchat-kb-button-primary:disabled {
1644 + background-color: #a7a7a7;
1645 + cursor: not-allowed;
1646 +}
1647 +
1648 +/* Update mode for the process button */
1649 +#mxchat-kb-process-selected.update-mode {
1650 + background-color: #ff9800;
1651 +}
1652 +
1653 +#mxchat-kb-process-selected.update-mode:hover {
1654 + background-color: #f57c00;
1655 +}
1656 +
1657 +/* Mixed mode for the process button */
1658 +#mxchat-kb-process-selected.mixed-mode {
1659 + background-color: #9c27b0;
1660 +}
1661 +
1662 +#mxchat-kb-process-selected.mixed-mode:hover {
1663 + background-color: #7b1fa2;
1664 +}
1665 +
1666 +.mxchat-kb-button-secondary {
1667 + background-color: #f6f7f7;
1668 + color: #2c3338;
1669 + border: 1px solid #ddd;
1670 +}
1671 +
1672 +.mxchat-kb-button-secondary:hover {
1673 + background-color: #f0f0f0;
1674 + border-color: #c3c4c7;
1675 +}
1676 +
1677 +.mxchat-kb-pagination {
1678 + padding: 15px 20px;
1679 + border-top: 1px solid #eee;
1680 + text-align: center;
1681 +}
1682 +
1683 +.mxchat-kb-pagination-links {
1684 + display: flex;
1685 + justify-content: center;
437 1686 align-items: center;
1687 + gap: 5px;
1688 + flex-wrap: wrap;
438 1689 }
439 1690
440 -/* Pagination */
441 -.mxchat-pagination {
442 - margin-top: 20px;
443 - padding-top: 20px;
1691 +.mxchat-kb-page-link {
1692 + padding: 5px 10px;
1693 + text-decoration: none;
1694 + border: 1px solid #ddd;
1695 + color: #7873f5;
1696 + border-radius: 3px;
1697 + transition: all 0.2s;
1698 +}
1699 +
1700 +.mxchat-kb-page-link:hover {
1701 + background-color: #f0f0f0;
1702 + color: #fa73e6;
1703 + border-color: #c3c4c7;
1704 +}
1705 +
1706 +.mxchat-kb-page-current {
1707 + padding: 5px 10px;
1708 + background: linear-gradient(135deg, #fa73e6, #7873f5);
1709 + color: white;
1710 + border-radius: 3px;
1711 + font-weight: 500;
1712 +}
1713 +
1714 +/* ===== Loading and Error States ===== */
1715 +.mxchat-kb-no-results,
1716 +.mxchat-kb-error {
1717 + padding: 30px;
444 1718 text-align: center;
445 - border-top: 1px solid rgba(120, 115, 245, 0.1);
1719 + color: #666;
1720 + font-size: 14px;
446 1721 }
447 1722
448 -.mxchat-pagination .page-numbers {
449 - display: inline-flex;
1723 +.mxchat-kb-error {
1724 + color: #d63638;
1725 +}
1726 +
1727 +.mxchat-kb-loading {
1728 + display: flex;
1729 + flex-direction: column;
450 1730 align-items: center;
451 1731 justify-content: center;
452 - min-width: 32px;
453 - height: 32px;
454 - padding: 0 8px;
455 - margin: 0 4px;
456 - border-radius: 6px;
457 - background: white;
458 - border: 1px solid rgba(120, 115, 245, 0.2);
459 - color: #333;
460 - text-decoration: none;
461 - transition: all 0.2s ease;
1732 + padding: 50px;
1733 + color: #666;
462 1734 }
463 1735
464 -.mxchat-pagination .page-numbers.current {
1736 +.mxchat-kb-spinner {
1737 + display: inline-block;
1738 + width: 50px;
1739 + height: 50px;
1740 + border: 5px solid #f3f3f3;
1741 + border-top: 5px solid #7873f5;
1742 + border-radius: 50%;
1743 + animation: mxchat-kb-spin 1s linear infinite;
1744 + margin: 0 0 10px 0;
1745 +}
1746 +
1747 +@keyframes mxchat-kb-spin {
1748 + 0% { transform: rotate(0deg); }
1749 + 100% { transform: rotate(360deg); }
1750 +}
1751 +
1752 +.mxchat-kb-progress-bar {
1753 + height: 8px;
1754 + background-color: #f0f0f0;
1755 + border-radius: 4px;
1756 + margin: 10px 0 15px;
1757 + overflow: hidden;
1758 +}
1759 +
1760 +.mxchat-kb-progress-fill {
1761 + height: 100%;
465 1762 background: linear-gradient(135deg, #fa73e6, #7873f5);
466 - color: white;
467 - border: none;
1763 + transition: width 0.3s ease;
468 1764 }
469 1765
470 -/* Responsive Design */
1766 +.mxchat-kb-current-item {
1767 + font-size: 14px;
1768 + color: #555;
1769 + margin: 10px 0 0;
1770 + font-style: italic;
1771 +}
1772 +
1773 +.mxchat-kb-results-details {
1774 + margin-top: 15px;
1775 + text-align: left;
1776 + max-height: 200px;
1777 + overflow-y: auto;
1778 + padding: 10px;
1779 + border-radius: 4px;
1780 +}
1781 +
1782 +.mxchat-kb-results-details h5 {
1783 + margin-top: 0;
1784 + margin-bottom: 10px;
1785 + color: #d63638;
1786 +}
1787 +
1788 +.mxchat-kb-results-details ul {
1789 + margin: 0;
1790 + padding-left: 20px;
1791 +}
1792 +
1793 +.mxchat-kb-results-details li {
1794 + margin-bottom: 5px;
1795 +}
1796 +
1797 +/* ===== Processing Overlay ===== */
1798 +.mxchat-kb-processing-overlay {
1799 + position: fixed;
1800 + top: 0;
1801 + left: 0;
1802 + width: 100%;
1803 + height: 100%;
1804 + background-color: rgba(0, 0, 0, 0.7);
1805 + z-index: 9999999;
1806 + display: flex;
1807 + justify-content: center;
1808 + align-items: center;
1809 +}
1810 +
1811 +.mxchat-kb-processing-content {
1812 + background-color: white;
1813 + padding: 30px;
1814 + border-radius: 8px;
1815 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1816 + text-align: center;
1817 + max-width: 500px;
1818 + width: 90%;
1819 +}
1820 +
1821 +.mxchat-kb-processing-content h3 {
1822 + margin-top: 0;
1823 + margin-bottom: 15px;
1824 + font-size: 20px;
1825 + color: #7873f5;
1826 +}
1827 +
1828 +.mxchat-kb-processing-status {
1829 + color: #555;
1830 + margin-bottom: 20px;
1831 +}
1832 +
1833 +/* ===== Utility Classes ===== */
1834 +.mxchat-na {
1835 + color: #999;
1836 + font-style: italic;
1837 +}
1838 +
1839 +.mxchat-no-records {
1840 + text-align: center;
1841 + color: #666;
1842 + padding: 40px !important;
1843 +}
1844 +
1845 +/* ===== Responsive Design ===== */
471 1846 @media screen and (max-width: 782px) {
1847 + /* Hero section */
472 1848 div.mxchat-hero h1.mxchat-main-title {
473 1849 font-size: 2.5rem;
474 1850 }
475 1851
@@ -493,9 +1869,19 @@
493 1869
494 1870 .mxchat-search-group input {
495 1871 width: 100%;
496 1872 }
497 -
1873 +
1874 + /* ADDED 2.5.6: Responsive filter dropdown */
1875 + .mxchat-filter-group {
1876 + margin-left: 0;
1877 + width: 100%;
1878 + }
1879 +
1880 + .mxchat-filter-group select {
1881 + width: 100%;
1882 + }
1883 +
498 1884 .mxchat-url-input-group {
499 1885 flex-direction: column;
500 1886 }
501 1887
@@ -506,18 +1892,2192 @@
506 1892
507 1893 .mxchat-content-cell {
508 1894 max-width: 200px;
509 1895 }
1896 +
1897 + /* Modal responsive adjustments */
1898 + .mxchat-kb-modal-content {
1899 + 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;
1909 + }
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 +
1921 + .mxchat-kb-modal-filters {
1922 + flex-direction: column;
1923 + align-items: stretch;
1924 + padding: 10px 16px;
1925 + gap: 8px;
1926 + }
1927 +
1928 + .mxchat-kb-search-group {
1929 + max-width: none;
1930 + }
1931 +
1932 + .mxchat-kb-filter-group {
1933 + flex-direction: column;
1934 + gap: 8px;
1935 + }
1936 +
1937 + .mxchat-kb-filter-group select {
1938 + padding: 6px 30px 6px 10px;
1939 + }
1940 +
1941 + .mxchat-kb-selection-header {
1942 + flex-direction: column;
1943 + align-items: flex-start;
1944 + gap: 6px;
1945 + padding: 10px 16px;
1946 + }
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 +
1958 + .mxchat-kb-modal-footer {
1959 + flex-direction: column;
1960 + gap: 8px;
1961 + padding: 10px 16px;
1962 + }
1963 +
1964 + .mxchat-kb-modal-footer .mxchat-kb-pagination {
1965 + width: 100%;
1966 + text-align: center;
1967 + }
1968 +
1969 + .mxchat-kb-footer-actions {
1970 + width: 100%;
1971 + flex-direction: column;
1972 + }
1973 +
1974 + .mxchat-kb-button-primary,
1975 + .mxchat-kb-button-secondary {
1976 + width: 100%;
1977 + }
1978 +
1979 + /* Import methods grid */
1980 + .mxchat-import-methods-grid {
1981 + grid-template-columns: 1fr;
1982 + }
1983 +
1984 + /* Primary import card */
1985 + .mxchat-featured-button {
1986 + width: 100%;
1987 + }
510 1988 }
511 1989
512 -/* Utility Classes */
513 -.mxchat-na {
1990 +/* ===== Notification Styles ===== */
1991 +
1992 +/* Base notification style */
1993 +.mxchat-kb-notification {
1994 + margin: 15px 20px 15px;
1995 + padding: 15px;
1996 + border-radius: 6px;
1997 + border-left: 4px solid;
1998 + position: relative;
1999 + animation: mxchat-kb-notification-appear 0.3s ease-out;
2000 +}
2001 +
2002 +@keyframes mxchat-kb-notification-appear {
2003 + from {
2004 + opacity: 0;
2005 + transform: translateY(-10px);
2006 + }
2007 + to {
2008 + opacity: 1;
2009 + transform: translateY(0);
2010 + }
2011 +}
2012 +
2013 +/* Success notification */
2014 +.mxchat-kb-notification.success {
2015 + background-color: #f0f9eb;
2016 + border-color: #67c23a;
2017 + color: #3c763d;
2018 +}
2019 +
2020 +.mxchat-kb-notification.success h4 {
2021 + color: #67c23a;
2022 + margin: 0 0 5px;
2023 + font-size: 16px;
2024 + font-weight: 600;
2025 +}
2026 +
2027 +.mxchat-kb-notification.success::before {
2028 + content: "\f147";
2029 + font-family: dashicons;
2030 + position: absolute;
2031 + right: 15px;
2032 + top: 15px;
2033 + color: #67c23a;
2034 + font-size: 20px;
2035 +}
2036 +
2037 +/* Error notification */
2038 +.mxchat-kb-notification.error {
2039 + background-color: #fef0f0;
2040 + border-color: #d63638;
2041 + color: #a94442;
2042 +}
2043 +
2044 +.mxchat-kb-notification.error h4 {
2045 + color: #d63638;
2046 + margin: 0 0 5px;
2047 + font-size: 16px;
2048 + font-weight: 600;
2049 +}
2050 +
2051 +.mxchat-kb-notification.error::before {
2052 + content: "\f335";
2053 + font-family: dashicons;
2054 + position: absolute;
2055 + right: 15px;
2056 + top: 15px;
2057 + color: #d63638;
2058 + font-size: 20px;
2059 +}
2060 +
2061 +/* Warning notification */
2062 +.mxchat-kb-notification.warning {
2063 + background-color: #fdf6ec;
2064 + border-color: #ff9800;
2065 + color: #8a6d3b;
2066 +}
2067 +
2068 +.mxchat-kb-notification.warning h4 {
2069 + color: #ff9800;
2070 + margin: 0 0 5px;
2071 + font-size: 16px;
2072 + font-weight: 600;
2073 +}
2074 +
2075 +.mxchat-kb-notification.warning::before {
2076 + content: "\f534";
2077 + font-family: dashicons;
2078 + position: absolute;
2079 + right: 15px;
2080 + top: 15px;
2081 + color: #ff9800;
2082 + font-size: 20px;
2083 +}
2084 +
2085 +/* Info notification */
2086 +.mxchat-kb-notification.info {
2087 + background-color: #f4f4fd;
2088 + border-color: #7873f5;
2089 + color: #31708f;
2090 +}
2091 +
2092 +.mxchat-kb-notification.info h4 {
2093 + color: #7873f5;
2094 + margin: 0 0 5px;
2095 + font-size: 16px;
2096 + font-weight: 600;
2097 +}
2098 +
2099 +.mxchat-kb-notification.info::before {
2100 + content: "\f348";
2101 + font-family: dashicons;
2102 + position: absolute;
2103 + right: 15px;
2104 + top: 15px;
2105 + color: #7873f5;
2106 + font-size: 20px;
2107 +}
2108 +
2109 +/* Close button for notifications */
2110 +.mxchat-kb-notification-close {
2111 + position: absolute;
2112 + top: 10px;
2113 + right: 10px;
2114 + cursor: pointer;
2115 + color: inherit;
2116 + opacity: 0.7;
2117 + font-size: 16px;
2118 + line-height: 1;
2119 + transition: opacity 0.2s;
2120 +}
2121 +
2122 +.mxchat-kb-notification-close:hover {
2123 + opacity: 1;
2124 +}
2125 +
2126 +/* Results details section */
2127 +.mxchat-kb-results-details {
2128 + margin-top: 12px;
2129 + padding: 12px;
2130 + border-radius: 4px;
2131 + font-size: 13px;
2132 + line-height: 1.5;
2133 +}
2134 +
2135 +.mxchat-kb-notification.success .mxchat-kb-results-details {
2136 + background-color: rgba(103, 194, 58, 0.05);
2137 + border: 1px solid rgba(103, 194, 58, 0.2);
2138 +}
2139 +
2140 +.mxchat-kb-notification.error .mxchat-kb-results-details {
2141 +
2142 +}
2143 +
2144 +.mxchat-kb-notification.warning .mxchat-kb-results-details {
2145 + background-color: rgba(255, 152, 0, 0.05);
2146 + border: 1px solid rgba(255, 152, 0, 0.2);
2147 +}
2148 +
2149 +.mxchat-kb-notification.info .mxchat-kb-results-details {
2150 + background-color: rgba(120, 115, 245, 0.05);
2151 + border: 1px solid rgba(120, 115, 245, 0.2);
2152 +}
2153 +
2154 +/* Results details title */
2155 +.mxchat-kb-results-details h5 {
2156 + margin: 0 0 10px;
2157 + font-size: 14px;
2158 + font-weight: 600;
2159 +}
2160 +
2161 +.mxchat-kb-notification.success .mxchat-kb-results-details h5 {
2162 + color: #3c763d;
2163 +}
2164 +
2165 +.mxchat-kb-notification.error .mxchat-kb-results-details h5 {
2166 + color: #a94442;
2167 +}
2168 +
2169 +.mxchat-kb-notification.warning .mxchat-kb-results-details h5 {
2170 + color: #8a6d3b;
2171 +}
2172 +
2173 +.mxchat-kb-notification.info .mxchat-kb-results-details h5 {
2174 + color: #31708f;
2175 +}
2176 +
2177 +/* List items in results details */
2178 +.mxchat-kb-results-details ul {
2179 + margin: 0;
2180 + padding-left: 20px;
2181 + list-style-type: disc;
2182 +}
2183 +
2184 +.mxchat-kb-results-details li {
2185 + margin-bottom: 8px;
2186 + padding-left: 3px;
2187 +}
2188 +
2189 +.mxchat-kb-results-details li:last-child {
2190 + margin-bottom: 0;
2191 +}
2192 +
2193 +.mxchat-kb-results-details li strong {
2194 + font-weight: 600;
2195 +}
2196 +
2197 +/* Failed items specific styling */
2198 +.mxchat-kb-results-details li.failed-item {
2199 + color: #d63638;
2200 +}
2201 +
2202 +/* Success items specific styling */
2203 +.mxchat-kb-results-details li.success-item {
2204 + color: #67c23a;
2205 +}
2206 +
2207 +/* Updated items specific styling */
2208 +.mxchat-kb-results-details li.updated-item {
2209 + color: #1e88e5;
2210 +}
2211 +
2212 +/* Processing summary information */
2213 +.mxchat-kb-processing-summary {
2214 + display: flex;
2215 + flex-wrap: wrap;
2216 + gap: 15px;
2217 + margin-top: 10px;
2218 + font-size: 14px;
2219 +}
2220 +
2221 +.mxchat-kb-summary-item {
2222 + display: flex;
2223 + align-items: center;
2224 + gap: 5px;
2225 +}
2226 +
2227 +.mxchat-kb-summary-item .dashicons {
2228 + font-size: 18px;
2229 +}
2230 +
2231 +.mxchat-kb-summary-item.processed .dashicons {
2232 + color: #67c23a;
2233 +}
2234 +
2235 +.mxchat-kb-summary-item.updated .dashicons {
2236 + color: #1e88e5;
2237 +}
2238 +
2239 +.mxchat-kb-summary-item.failed .dashicons {
2240 + color: #d63638;
2241 +}
2242 +
2243 +/* Show more/less toggle for details */
2244 +.mxchat-kb-show-details {
2245 + display: inline-block;
2246 + margin-top: 8px;
2247 + color: #7873f5;
2248 + cursor: pointer;
2249 + font-size: 13px;
2250 + font-weight: 500;
2251 +}
2252 +
2253 +.mxchat-kb-show-details:hover {
2254 + text-decoration: underline;
2255 +}
2256 +
2257 +.mxchat-kb-show-details .dashicons {
2258 + font-size: 16px;
2259 + vertical-align: middle;
2260 + margin-right: 2px;
2261 +}
2262 +
2263 +/* Collapsible details section */
2264 +.mxchat-kb-results-details.collapsed {
2265 + display: none;
2266 +}
2267 +
2268 +/* Responsive styles for notifications */
2269 +@media screen and (max-width: 782px) {
2270 + .mxchat-kb-notification {
2271 + margin: 10px 15px 0;
2272 + padding: 12px;
2273 + }
2274 +
2275 + .mxchat-kb-notification::before {
2276 + display: none;
2277 + }
2278 +
2279 + .mxchat-kb-processing-summary {
2280 + flex-direction: column;
2281 + gap: 8px;
2282 + }
2283 +}
2284 +
2285 +
2286 +
2287 +
2288 +
2289 +/* Tab Navigation */
2290 +.mxchat-kb-tabs-nav {
2291 + display: flex;
2292 + margin-bottom: 20px;
2293 + border-bottom: 1px solid #ccc;
2294 +}
2295 +
2296 +.mxchat-kb-tab-button {
2297 + padding: 10px 15px;
2298 + background: #f1f1f1;
2299 + border: 1px solid #ccc;
2300 + border-bottom: none;
2301 + margin-right: 5px;
2302 + cursor: pointer;
2303 + font-weight: 500;
2304 + border-radius: 5px 5px 0 0;
2305 +}
2306 +
2307 +.mxchat-kb-tab-button.active {
2308 + background: #fff;
2309 + border-bottom: 2px solid #fff;
2310 + position: relative;
2311 + bottom: -1px;
2312 + color: #2271b1;
2313 +}
2314 +
2315 +/* Tab Content */
2316 +.mxchat-kb-tab-content {
2317 + display: none;
2318 +}
2319 +
2320 +.mxchat-kb-tab-content.active {
2321 + display: block;
2322 +}
2323 +
2324 +/* Make the first card in tabs not have top margin */
2325 +.mxchat-kb-tab-content .mxchat-card:first-child {
2326 + margin-top: 0;
2327 +}
2328 +
2329 +
2330 +
2331 +
2332 +
2333 +
2334 +/* Pinecone Settings Tab Styles */
2335 +.mxchat-pinecone-info-box {
2336 + background: #f8f9ff;
2337 + border: 1px solid rgba(120, 115, 245, 0.2);
2338 + border-radius: 10px;
2339 + padding: 20px;
2340 + margin: 20px 0;
2341 + display: flex;
2342 + align-items: flex-start;
2343 + gap: 15px;
2344 +}
2345 +
2346 +.mxchat-info-icon {
2347 + flex-shrink: 0;
2348 +}
2349 +
2350 +.mxchat-info-icon .dashicons {
2351 + color: #7873f5;
2352 + font-size: 24px;
2353 + width: 24px;
2354 + height: 24px;
2355 +}
2356 +
2357 +.mxchat-info-content {
2358 + flex: 1;
2359 +}
2360 +
2361 +.mxchat-info-content h4 {
2362 + margin: 0 0 10px 0;
2363 + color: #333;
2364 + font-size: 16px;
2365 +}
2366 +
2367 +.mxchat-info-content p {
2368 + margin: 0 0 8px 0;
2369 + color: #666;
2370 + font-size: 14px;
2371 + line-height: 1.5;
2372 +}
2373 +
2374 +.mxchat-info-content p:last-child {
2375 + margin-bottom: 0;
2376 +}
2377 +
2378 +.mxchat-info-content a {
2379 + color: #7873f5;
2380 + text-decoration: none;
2381 + font-weight: 500;
2382 +}
2383 +
2384 +.mxchat-info-content a:hover {
2385 + text-decoration: underline;
2386 +}
2387 +
2388 +/* Database Settings Form */
2389 +.mxchat-database-settings-form {
2390 + margin-top: 25px;
2391 +}
2392 +
2393 +/* Toggle Container */
2394 +.mxchat-toggle-container {
2395 + display: flex;
2396 + align-items: center;
2397 + gap: 12px;
2398 + margin: 20px 0;
2399 + padding: 15px 0;
2400 + border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2401 +}
2402 +
2403 +.mxchat-toggle-switch {
2404 + position: relative;
2405 + display: inline-block;
2406 + width: 50px;
2407 + height: 26px;
2408 +}
2409 +
2410 +.mxchat-toggle-switch input {
2411 + opacity: 0;
2412 + width: 0;
2413 + height: 0;
2414 +}
2415 +
2416 +.mxchat-toggle-slider {
2417 + position: absolute;
2418 + cursor: pointer;
2419 + top: 0;
2420 + left: 0;
2421 + right: 0;
2422 + bottom: 0;
2423 + background-color: #ddd;
2424 + transition: 0.3s;
2425 + border-radius: 26px;
2426 +}
2427 +
2428 +.mxchat-toggle-slider:before {
2429 + position: absolute;
2430 + content: "";
2431 + height: 20px;
2432 + width: 20px;
2433 + left: 3px;
2434 + bottom: 3px;
2435 + background-color: white;
2436 + transition: 0.3s;
2437 + border-radius: 50%;
2438 + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
2439 +}
2440 +
2441 +input:checked + .mxchat-toggle-slider {
2442 + background: linear-gradient(135deg, #fa73e6, #7873f5);
2443 +}
2444 +
2445 +input:checked + .mxchat-toggle-slider:before {
2446 + transform: translateX(24px);
2447 +}
2448 +
2449 +.mxchat-toggle-label {
2450 + font-weight: 500;
2451 + color: #333;
2452 + font-size: 15px;
2453 +}
2454 +
2455 +/* Pinecone Settings Section */
2456 +.mxchat-pinecone-settings {
2457 + background: #f8f9ff;
2458 + border: 1px solid rgba(120, 115, 245, 0.2);
2459 + border-radius: 10px;
2460 + padding: 25px;
2461 + margin: 20px 0;
2462 +}
2463 +
2464 +/* Knowledge Warning (Success State) */
2465 +.mxchat-knowledge-warning.success {
2466 + background: #edfaef;
2467 + border-left: 4px solid #46b450;
2468 + padding: 15px;
2469 + margin: 0 0 20px 0;
2470 + border-radius: 4px;
2471 +}
2472 +
2473 +.mxchat-knowledge-warning.success p {
2474 + margin: 0;
2475 + color: #2a4f30;
2476 + align-items: center;
2477 + gap: 8px;
2478 +}
2479 +
2480 +.mxchat-knowledge-warning.success .dashicons {
2481 + color: #46b450;
2482 +}
2483 +
2484 +/* Form Groups */
2485 +.mxchat-form-group {
2486 + margin-bottom: 20px;
2487 +}
2488 +
2489 +.mxchat-form-group label {
2490 + display: block;
2491 + margin-bottom: 8px;
2492 + color: #333;
2493 + font-weight: 500;
2494 + font-size: 14px;
2495 +}
2496 +
2497 +.mxchat-form-group label .required {
2498 + color: #dc3232;
2499 + margin-left: 4px;
2500 +}
2501 +
2502 +.mxchat-form-group input[type="text"],
2503 +.mxchat-form-group input[type="password"] {
2504 + width: 100%;
2505 + max-width: 400px;
2506 + padding: 10px 12px;
2507 + border: 1px solid rgba(120, 115, 245, 0.2);
2508 + border-radius: 6px;
2509 + background: white;
2510 + font-size: 14px;
2511 + transition: border-color 0.2s ease, box-shadow 0.2s ease;
2512 +}
2513 +
2514 +.mxchat-form-group input[type="text"]:focus,
2515 +.mxchat-form-group input[type="password"]:focus {
2516 + border-color: #7873f5;
2517 + outline: none;
2518 + box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
2519 +}
2520 +
2521 +.mxchat-form-group .description {
2522 + margin: 8px 0 0 0;
2523 + color: #666;
2524 + font-size: 13px;
2525 + line-height: 1.4;
2526 +}
2527 +
2528 +.mxchat-form-group .description a {
2529 + color: #7873f5;
2530 + text-decoration: none;
2531 + font-weight: 500;
2532 +}
2533 +
2534 +.mxchat-form-group .description a:hover {
2535 + text-decoration: underline;
2536 +}
2537 +
2538 +/* Setup Help Section */
2539 +.mxchat-pinecone-setup-help {
2540 + background: white;
2541 + border: 1px solid rgba(120, 115, 245, 0.1);
2542 + border-radius: 8px;
2543 + padding: 20px;
2544 + margin-top: 25px;
2545 +}
2546 +
2547 +.mxchat-pinecone-setup-help h3 {
2548 + margin: 0 0 15px 0;
2549 + color: #333;
2550 + font-size: 16px;
2551 +}
2552 +
2553 +.mxchat-pinecone-setup-help ol {
2554 + margin: 0;
2555 + padding-left: 20px;
2556 +}
2557 +
2558 +.mxchat-pinecone-setup-help li {
2559 + margin-bottom: 12px;
2560 + color: #666;
2561 + line-height: 1.5;
2562 +}
2563 +
2564 +.mxchat-pinecone-setup-help li:last-child {
2565 + margin-bottom: 0;
2566 +}
2567 +
2568 +.mxchat-pinecone-setup-help ul {
2569 + margin: 8px 0;
2570 + padding-left: 20px;
2571 +}
2572 +
2573 +.mxchat-pinecone-setup-help ul li {
2574 + margin-bottom: 6px;
2575 + font-size: 13px;
2576 +}
2577 +
2578 +.mxchat-pinecone-setup-help a {
2579 + color: #7873f5;
2580 + text-decoration: none;
2581 + font-weight: 500;
2582 +}
2583 +
2584 +.mxchat-pinecone-setup-help a:hover {
2585 + text-decoration: underline;
2586 +}
2587 +
2588 +/* Connection Status Section */
2589 +.mxchat-pinecone-status-section {
2590 + background: white;
2591 + border: 1px solid rgba(120, 115, 245, 0.1);
2592 + border-radius: 8px;
2593 + padding: 20px;
2594 + margin-top: 25px;
2595 +}
2596 +
2597 +.mxchat-pinecone-status-section h3 {
2598 + margin: 0 0 15px 0;
2599 + color: #333;
2600 + font-size: 16px;
2601 +}
2602 +
2603 +#mxchat-pinecone-test-connection {
2604 + margin-bottom: 15px;
2605 +}
2606 +
2607 +#test-pinecone-connection {
2608 + background: linear-gradient(135deg, #fa73e6, #7873f5);
2609 + color: white;
2610 + border: none;
2611 + padding: 10px 20px;
2612 + border-radius: 6px;
2613 + cursor: pointer;
2614 + font-size: 14px;
2615 + font-weight: 500;
2616 + transition: all 0.2s ease;
2617 +}
2618 +
2619 +#test-pinecone-connection:hover:not(:disabled) {
2620 + transform: translateY(-1px);
2621 + box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
2622 +}
2623 +
2624 +#test-pinecone-connection:disabled {
2625 + opacity: 0.6;
2626 + cursor: not-allowed;
2627 + transform: none;
2628 +}
2629 +
2630 +/* Test Result Styles */
2631 +.mxchat-test-result {
2632 + margin-top: 15px;
2633 +}
2634 +
2635 +.mxchat-test-result .notice {
2636 + margin: 0;
2637 + padding: 12px 15px;
2638 + border-radius: 6px;
2639 + display: flex;
2640 + align-items: center;
2641 + gap: 8px;
2642 +}
2643 +
2644 +.mxchat-test-result .notice-success {
2645 + background: #edfaef;
2646 + border-left: 4px solid #46b450;
2647 + color: #2a4f30;
2648 +}
2649 +
2650 +.mxchat-test-result .notice-error {
2651 + background: #fbeaea;
2652 + border-left: 4px solid #dc3232;
2653 + color: #721c24;
2654 +}
2655 +
2656 +.mxchat-test-result .notice .dashicons {
2657 + flex-shrink: 0;
2658 +}
2659 +
2660 +.mxchat-test-result .notice p {
2661 + margin: 0;
2662 + font-size: 14px;
2663 +}
2664 +
2665 +/* Compatibility Notice */
2666 +.mxchat-pinecone-compatibility-notice {
2667 + background: #e8f4ff;
2668 + border-left: 4px solid #2196f3;
2669 + padding: 15px;
2670 + margin: 0 0 20px 0;
2671 + border-radius: 4px;
2672 +}
2673 +
2674 +.mxchat-pinecone-compatibility-notice p {
2675 + margin: 0;
2676 + color: #1565c0;
2677 + font-size: 14px;
2678 + line-height: 1.5;
2679 +}
2680 +
2681 +/* Responsive Design */
2682 +@media screen and (max-width: 782px) {
2683 + .mxchat-pinecone-info-box {
2684 + flex-direction: column;
2685 + gap: 10px;
2686 + }
2687 +
2688 + .mxchat-toggle-container {
2689 + flex-direction: column;
2690 + align-items: flex-start;
2691 + gap: 8px;
2692 + }
2693 +
2694 + .mxchat-form-group input[type="text"],
2695 + .mxchat-form-group input[type="password"] {
2696 + max-width: 100%;
2697 + }
2698 +
2699 + .mxchat-pinecone-settings {
2700 + padding: 15px;
2701 + }
2702 +
2703 + .mxchat-pinecone-setup-help,
2704 + .mxchat-pinecone-status-section {
2705 + padding: 15px;
2706 + }
2707 +}
2708 +
2709 +
2710 +/* Setup Steps */
2711 +.mxchat-setup-steps {
2712 + margin: 30px 0;
2713 + padding: 20px;
2714 + background: #fff;
2715 + border-radius: 10px;
2716 +}
2717 +
2718 +.mxchat-setup-step {
2719 + display: flex;
2720 + align-items: flex-start;
2721 + margin-bottom: 20px;
2722 +}
2723 +
2724 +.step-number {
2725 + background: linear-gradient(135deg, #fa73e6, #7873f5);
2726 + color: white;
2727 + width: 28px;
2728 + height: 28px;
2729 + border-radius: 50%;
2730 + display: flex;
2731 + align-items: center;
2732 + justify-content: center;
2733 + font-weight: bold;
2734 + margin-right: 15px;
2735 + flex-shrink: 0;
2736 +}
2737 +
2738 +.step-content {
2739 + flex: 1;
2740 +}
2741 +
2742 +.step-content h4 {
2743 + margin: 0 0 5px 0;
2744 +}
2745 +
2746 +.step-content p {
2747 + margin: 0;
2748 + color: #666;
2749 +}
2750 +
2751 +.step-content ul {
2752 + margin-top: 5px;
2753 + margin-bottom: 0;
2754 + color: #666;
2755 +}
2756 +
2757 +
2758 +
2759 +/* ===== Role-Based Content Restrictions Styles ===== */
2760 +
2761 +/* Role mapping form */
2762 +.mxchat-role-mapping-form {
2763 + margin-top: 20px;
2764 + padding: 20px;
2765 + background-color: #f8f9ff;
2766 + border-radius: 8px;
2767 + border: 1px solid rgba(120, 115, 245, 0.1);
2768 +}
2769 +
2770 +.mxchat-role-mapping-form h4 {
2771 + margin-top: 0;
2772 + margin-bottom: 15px;
2773 + font-size: 16px;
2774 + color: #333;
2775 +}
2776 +
2777 +.mxchat-form-row {
2778 + display: flex;
2779 + gap: 15px;
2780 + align-items: flex-end;
2781 + margin-bottom: 20px;
2782 +}
2783 +
2784 +/* Role mappings table */
2785 +.mxchat-mappings-table {
2786 + width: 100%;
2787 + border-collapse: collapse;
2788 + margin-top: 15px;
2789 + background: #fff;
2790 + box-shadow: 0 1px 3px rgba(120, 115, 245, 0.08);
2791 + border-radius: 8px;
2792 + overflow: hidden;
2793 +}
2794 +
2795 +.mxchat-mappings-table th,
2796 +.mxchat-mappings-table td {
2797 + padding: 15px;
2798 + text-align: left;
2799 + border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2800 +}
2801 +
2802 +.mxchat-mappings-table th {
2803 + background: #f8f9ff;
2804 + font-weight: 600;
2805 + color: #333;
2806 + font-size: 14px;
2807 +}
2808 +
2809 +.mxchat-mappings-table tbody tr {
2810 + transition: background-color 0.2s ease;
2811 +}
2812 +
2813 +.mxchat-mappings-table tbody tr:hover {
2814 + background: rgba(120, 115, 245, 0.03);
2815 +}
2816 +
2817 +.mxchat-mappings-table tbody tr:last-child td {
2818 + border-bottom: none;
2819 +}
2820 +
2821 +/* Tag and role badges */
2822 +.mxchat-tag-badge {
2823 + display: inline-flex;
2824 + align-items: center;
2825 + gap: 5px;
2826 + padding: 5px 12px;
2827 + background: linear-gradient(135deg, #fa73e6, #7873f5);
2828 + color: #fff;
2829 + border-radius: 4px;
2830 + font-size: 13px;
2831 + font-weight: 500;
2832 +}
2833 +
2834 +.mxchat-tag-badge .dashicons {
2835 + font-size: 16px;
2836 + width: 16px;
2837 + height: 16px;
2838 +}
2839 +
2840 +.mxchat-role-badge {
2841 + display: inline-block;
2842 + padding: 5px 12px;
2843 + background: #f0f0f1;
2844 + color: #2c3338;
2845 + border-radius: 4px;
2846 + font-size: 13px;
2847 + font-weight: 500;
2848 +}
2849 +
2850 +/* Role-specific badge colors */
2851 +.mxchat-role-badge.public {
2852 + background: #e8f5e9;
2853 + color: #2e7d32;
2854 +}
2855 +
2856 +.mxchat-role-badge.logged_in {
2857 + background: #e3f2fd;
2858 + color: #1565c0;
2859 +}
2860 +
2861 +.mxchat-role-badge.subscriber {
2862 + background: #f3e5f5;
2863 + color: #7b1fa2;
2864 +}
2865 +
2866 +.mxchat-role-badge.contributor {
2867 + background: #fff3e0;
2868 + color: #e65100;
2869 +}
2870 +
2871 +.mxchat-role-badge.author {
2872 + background: #fff9c4;
2873 + color: #f57f17;
2874 +}
2875 +
2876 +.mxchat-role-badge.editor {
2877 + background: #fce4ec;
2878 + color: #c2185b;
2879 +}
2880 +
2881 +.mxchat-role-badge.administrator {
2882 + background: #ffebee;
2883 + color: #c62828;
2884 +}
2885 +
2886 +/* Mapping actions */
2887 +.mxchat-mapping-actions {
2888 + display: flex;
2889 + gap: 8px;
2890 + align-items: center;
2891 +}
2892 +
2893 +.mxchat-delete-mapping {
2894 + color: #d63638;
2895 + cursor: pointer;
2896 + padding: 6px 10px;
2897 + border-radius: 4px;
2898 + transition: all 0.2s ease;
2899 + display: inline-flex;
2900 + align-items: center;
2901 + gap: 4px;
2902 + background: transparent;
2903 + border: none;
2904 + font-size: 13px;
2905 +}
2906 +
2907 +.mxchat-delete-mapping:hover {
2908 + background: #fef0f0;
2909 + color: #b32d2e;
2910 +}
2911 +
2912 +.mxchat-delete-mapping .dashicons {
2913 + font-size: 18px;
2914 + width: 18px;
2915 + height: 18px;
2916 +}
2917 +
2918 +/* Post count display */
2919 +.mxchat-post-count {
2920 + color: #666;
2921 + font-size: 13px;
2922 + display: flex;
2923 + align-items: center;
2924 + gap: 4px;
2925 +}
2926 +
2927 +.mxchat-post-count .dashicons {
2928 + font-size: 16px;
2929 + width: 16px;
2930 + height: 16px;
2931 + color: #7873f5;
2932 +}
2933 +
2934 +/* Loading state for mappings */
2935 +.mxchat-loading-mappings {
2936 + text-align: center;
2937 + padding: 40px;
2938 + color: #666;
2939 +}
2940 +
2941 +.mxchat-role-spinner {
2942 + display: inline-block;
2943 + width: 20px;
2944 + height: 20px;
2945 + border: 2px solid rgba(120, 115, 245, 0.2);
2946 + border-top: 2px solid #7873f5;
2947 + border-radius: 50%;
2948 + animation: mxchat-role-spin 1s linear infinite;
2949 + margin-right: 10px;
2950 +}
2951 +
2952 +.mxchat-role-spinner.is-active {
2953 + display: inline-block;
2954 +}
2955 +
2956 +@keyframes mxchat-role-spin {
2957 + 0% { transform: rotate(0deg); }
2958 + 100% { transform: rotate(360deg); }
2959 +}
2960 +
2961 +/* Empty state */
2962 +#mxchat-no-mappings {
2963 + text-align: center;
2964 + padding: 40px;
2965 + color: #666;
2966 +}
2967 +
2968 +#mxchat-no-mappings .dashicons {
2969 + font-size: 48px;
2970 + opacity: 0.3;
2971 + margin-bottom: 15px;
2972 + display: block;
2973 +}
2974 +
2975 +#mxchat-no-mappings p {
2976 + margin: 0;
2977 + font-size: 14px;
2978 +}
2979 +
2980 +/* Bulk update section */
2981 +.mxchat-bulk-update-section {
2982 + margin-top: 30px;
2983 + padding-top: 30px;
2984 + border-top: 1px solid rgba(120, 115, 245, 0.1);
2985 +}
2986 +
2987 +.mxchat-bulk-update-section h4 {
2988 + margin-top: 0;
2989 + margin-bottom: 10px;
2990 + font-size: 16px;
2991 + color: #333;
2992 +}
2993 +
2994 +.mxchat-bulk-update-controls {
2995 + margin-top: 15px;
2996 +}
2997 +
2998 +#mxchat-bulk-update-roles {
2999 + display: inline-flex;
3000 + align-items: center;
3001 + gap: 8px;
3002 +}
3003 +
3004 +#mxchat-bulk-update-progress {
3005 + max-width: 600px;
3006 +}
3007 +
3008 +#mxchat-bulk-update-progress .mxchat-progress-bar {
3009 + height: 10px;
3010 + background: rgba(120, 115, 245, 0.1);
3011 + border-radius: 5px;
3012 + overflow: hidden;
3013 +}
3014 +
3015 +#mxchat-bulk-update-progress .mxchat-progress-fill {
3016 + height: 100%;
3017 + background: linear-gradient(135deg, #fa73e6, #7873f5);
3018 + transition: width 0.3s ease;
3019 +}
3020 +
3021 +.mxchat-progress-text {
3022 + margin-top: 10px;
3023 + color: #666;
3024 + font-size: 14px;
3025 +}
3026 +
3027 +/* Bulk update results */
3028 +#mxchat-bulk-update-result {
3029 + margin-top: 15px;
3030 + padding: 15px;
3031 + border-radius: 8px;
3032 +}
3033 +
3034 +#mxchat-bulk-update-result.success {
3035 + background-color: #f0f9eb;
3036 + border-left: 4px solid #67c23a;
3037 + color: #3c763d;
3038 +}
3039 +
3040 +#mxchat-bulk-update-result.error {
3041 + background-color: #fef0f0;
3042 + border-left: 4px solid #d63638;
3043 + color: #a94442;
3044 +}
3045 +
3046 +#mxchat-bulk-update-result h5 {
3047 + margin: 0 0 10px;
3048 + font-size: 15px;
3049 + font-weight: 600;
3050 +}
3051 +
3052 +#mxchat-bulk-update-result p {
3053 + margin: 5px 0;
3054 + font-size: 14px;
3055 +}
3056 +
3057 +/* Role mappings list container */
3058 +.mxchat-role-mappings-list {
3059 + margin-top: 25px;
3060 +}
3061 +
3062 +.mxchat-role-mappings-list h4 {
3063 + margin-top: 0;
3064 + margin-bottom: 15px;
3065 + font-size: 16px;
3066 + color: #333;
3067 +}
3068 +
3069 +/* Info banner styling (reuse existing pattern) */
3070 +.mxchat-role-info-banner {
3071 + display: flex;
3072 + align-items: center;
3073 + gap: 10px;
3074 + padding: 12px 16px;
3075 + margin-bottom: 20px;
3076 + border-radius: 6px;
3077 + font-size: 14px;
3078 + background: #f8f9ff;
3079 + border-left: 4px solid #7873f5;
3080 + color: #333;
3081 +}
3082 +
3083 +.mxchat-role-info-banner .dashicons {
3084 + color: #7873f5;
3085 + font-size: 18px;
3086 +}
3087 +
3088 +/* Responsive adjustments */
3089 +@media screen and (max-width: 782px) {
3090 + .mxchat-form-row {
3091 + flex-direction: column;
3092 + align-items: stretch;
3093 + }
3094 +
3095 + .mxchat-form-row .mxchat-form-group {
3096 + flex: 1;
3097 + max-width: none;
3098 + }
3099 +
3100 + .mxchat-form-row > div {
3101 + padding-bottom: 0;
3102 + }
3103 +
3104 + .mxchat-mappings-table {
3105 + display: block;
3106 + overflow-x: auto;
3107 + }
3108 +
3109 + .mxchat-mappings-table th,
3110 + .mxchat-mappings-table td {
3111 + padding: 10px;
3112 + font-size: 13px;
3113 + }
3114 +
3115 + .mxchat-mapping-actions {
3116 + flex-direction: column;
3117 + align-items: flex-start;
3118 + }
3119 +}
3120 +
3121 +/* RTL Support */
3122 +.rtl .mxchat-mappings-table th,
3123 +.rtl .mxchat-mappings-table td {
3124 + text-align: right;
3125 +}
3126 +
3127 +.rtl .mxchat-tag-badge {
3128 + flex-direction: row-reverse;
3129 +}
3130 +
3131 +.rtl .mxchat-role-info-banner {
3132 + border-left: none;
3133 + border-right: 4px solid #7873f5;
3134 +}
3135 +
3136 +.rtl .mxchat-bulk-update-section {
3137 + border-right: none;
3138 +}
3139 +
3140 +.rtl #mxchat-bulk-update-result {
3141 + border-left: none;
3142 + border-right: 4px solid;
3143 +}
3144 +
3145 +.rtl .mxchat-role-spinner {
3146 + margin-right: 0;
3147 + margin-left: 10px;
3148 +}
3149 +
3150 +/* ===== Chunk Grouping Styles ===== */
3151 +.mxchat-chunk-group-header {
3152 + background: rgba(120, 115, 245, 0.04) !important;
3153 + border-left: 3px solid #7873f5;
3154 +}
3155 +
3156 +.mxchat-chunk-group-header:hover {
3157 + background: rgba(120, 115, 245, 0.08) !important;
3158 +}
3159 +
3160 +.mxchat-chunk-group-info {
3161 + display: flex;
3162 + align-items: center;
3163 + gap: 12px;
3164 +}
3165 +
3166 +.mxchat-chunk-toggle {
3167 + flex-shrink: 0;
3168 + width: 28px;
3169 + height: 28px;
3170 + border: none;
3171 + background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
3172 + border-radius: 6px;
3173 + cursor: pointer;
3174 + display: inline-flex;
3175 + align-items: center;
3176 + justify-content: center;
3177 + transition: all 0.3s ease;
3178 + padding: 0;
3179 +}
3180 +
3181 +.mxchat-chunk-toggle:hover {
3182 + background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
3183 + transform: scale(1.05);
3184 +}
3185 +
3186 +.mxchat-chunk-toggle .dashicons {
3187 + font-size: 16px;
3188 + color: #7873f5;
3189 + transition: transform 0.3s ease;
3190 +}
3191 +
3192 +.mxchat-chunk-toggle.expanded .dashicons {
3193 + transform: rotate(90deg);
3194 +}
3195 +
3196 +.mxchat-chunk-badge {
3197 + display: inline-flex;
3198 + align-items: center;
3199 + padding: 4px 10px;
3200 + background: linear-gradient(135deg, #7873f5, #3ac9d1);
3201 + color: white;
3202 + border-radius: 12px;
3203 + font-size: 12px;
3204 + font-weight: 600;
3205 + white-space: nowrap;
3206 +}
3207 +
3208 +.mxchat-chunk-preview {
3209 + flex: 1;
3210 + color: #666;
3211 + font-size: 13px;
3212 + overflow: hidden;
3213 + text-overflow: ellipsis;
3214 + white-space: nowrap;
3215 +}
3216 +
3217 +.mxchat-chunk-row {
3218 + border-left: 3px solid #e0e0e0;
3219 +}
3220 +
3221 +.mxchat-chunk-row td:first-child {
3222 + padding-left: 30px !important;
3223 +}
3224 +
3225 +.mxchat-chunk-indicator {
3226 + display: inline-flex;
3227 + align-items: center;
3228 + padding: 2px 8px;
3229 + background: #f0f0f0;
3230 + color: #666;
3231 + border-radius: 4px;
3232 + font-size: 11px;
3233 + font-weight: 500;
3234 +}
3235 +
3236 +.mxchat-chunk-label {
514 3237 color: #999;
3238 + font-size: 12px;
515 3239 font-style: italic;
516 3240 }
517 3241
518 -.mxchat-no-records {
3242 +/* Delete button for chunk groups */
3243 +.delete-button-group {
3244 + background: none;
3245 + border: none;
3246 + cursor: pointer;
3247 + padding: 4px;
3248 + border-radius: 4px;
3249 + transition: all 0.2s ease;
3250 +}
3251 +
3252 +.delete-button-group:hover {
3253 + background: rgba(255, 0, 0, 0.1);
3254 +}
3255 +
3256 +.delete-button-group .dashicons {
3257 + color: #dc3545;
3258 +}
3259 +
3260 +.delete-button-group .dashicons.spin {
3261 + animation: mxchat-spin 1s linear infinite;
3262 +}
3263 +
3264 +@keyframes mxchat-spin {
3265 + from { transform: rotate(0deg); }
3266 + to { transform: rotate(360deg); }
3267 +}
3268 +
3269 +/* ===== Sitemap Detection Styles ===== */
3270 +.dashicons.spin {
3271 + animation: mxchat-spin 1s linear infinite;
3272 +}
3273 +
3274 +.mxchat-sitemap-group.expanded .mxchat-sitemap-sub-list {
3275 + display: block !important;
3276 +}
3277 +
3278 +.mxchat-sitemap-group.expanded .dashicons-arrow-right-alt2 {
3279 + transform: rotate(90deg) !important;
3280 +}
3281 +
3282 +.mxchat-sitemap-row:last-child {
3283 + border-bottom: none !important;
3284 +}
3285 +
3286 +.mxchat-detected-sitemaps {
3287 + margin-top: 24px;
3288 +}
3289 +
3290 +.mxchat-sitemaps-header {
3291 + display: flex;
3292 + align-items: center;
3293 + justify-content: space-between;
3294 + margin-bottom: 16px;
3295 +}
3296 +
3297 +.mxchat-sitemaps-header h4 {
3298 + margin: 0;
3299 + display: flex;
3300 + align-items: center;
3301 + gap: 8px;
3302 +}
3303 +
3304 +.mxchat-sitemaps-header h4 .dashicons {
3305 + color: #7873f5;
3306 +}
3307 +
3308 +.mxchat-sitemap-group {
3309 + margin-bottom: 16px;
3310 + border: 1px solid rgba(120, 115, 245, 0.2);
3311 + border-radius: 8px;
3312 + overflow: hidden;
3313 +}
3314 +
3315 +.mxchat-sitemap-group-header {
3316 + padding: 12px 16px;
3317 + background: #f8fafc;
3318 + display: flex;
3319 + align-items: center;
3320 + justify-content: space-between;
3321 + cursor: pointer;
3322 + transition: background-color 0.2s ease;
3323 +}
3324 +
3325 +.mxchat-sitemap-group-header:hover {
3326 + background: #f0f4f8;
3327 +}
3328 +
3329 +.mxchat-sitemap-sub-list {
3330 + display: none;
3331 + border-top: 1px solid rgba(120, 115, 245, 0.2);
3332 +}
3333 +
3334 +.mxchat-sitemap-row {
3335 + padding: 12px 16px;
3336 + display: flex;
3337 + align-items: center;
3338 + justify-content: space-between;
3339 + border-bottom: 1px solid rgba(120, 115, 245, 0.1);
3340 +}
3341 +
3342 +.mxchat-sitemap-row.sub-item {
3343 + padding-left: 40px;
3344 +}
3345 +
3346 +.mxchat-sitemaps-loading {
3347 + margin-top: 24px;
3348 + padding: 20px;
519 3349 text-align: center;
3350 +}
3351 +
3352 +.mxchat-sitemaps-loading .dashicons {
3353 + font-size: 20px;
3354 + color: #7873f5;
3355 +}
3356 +
3357 +.mxchat-sitemaps-loading p {
3358 + margin: 8px 0 0;
520 3359 color: #666;
521 - padding: 40px !important;
522 3360 }
523 3361
3362 +.mxchat-no-sitemaps {
3363 + margin-top: 24px;
3364 + padding: 20px;
3365 + background: #f8fafc;
3366 + border-radius: 8px;
3367 + text-align: center;
3368 +}
3369 +
3370 +.mxchat-no-sitemaps .dashicons {
3371 + font-size: 24px;
3372 + color: #999;
3373 + margin-bottom: 8px;
3374 +}
3375 +
3376 +.mxchat-no-sitemaps p {
3377 + margin: 0;
3378 + color: #666;
3379 +}
3380 +
3381 +/* ===== Admin Notice Dismiss Button Styles ===== */
3382 +.notice.is-dismissible {
3383 + position: relative;
3384 + padding-right: 38px;
3385 +}
3386 +
3387 +.notice-dismiss {
3388 + position: absolute;
3389 + top: 50%;
3390 + right: 8px;
3391 + transform: translateY(-50%);
3392 + padding: 0;
3393 + background: none;
3394 + border: none;
3395 + cursor: pointer;
3396 + color: #787c82;
3397 + width: 24px;
3398 + height: 24px;
3399 + display: flex;
3400 + align-items: center;
3401 + justify-content: center;
3402 + transition: color 0.2s ease;
3403 +}
3404 +
3405 +.notice-dismiss:hover {
3406 + color: #d63638;
3407 +}
3408 +
3409 +.notice-dismiss:before {
3410 + content: "\f153";
3411 + font-family: dashicons;
3412 + font-size: 16px;
3413 + line-height: 1;
3414 +}
3415 +
3416 +.notice-dismiss .screen-reader-text {
3417 + position: absolute;
3418 + width: 1px;
3419 + height: 1px;
3420 + padding: 0;
3421 + margin: -1px;
3422 + overflow: hidden;
3423 + clip: rect(0, 0, 0, 0);
3424 + white-space: nowrap;
3425 + border: 0;
3426 +}
3427 +
3428 +/* ===== AJAX Pagination Styles ===== */
3429 +.mxchat-kb-pagination-wrapper {
3430 + background: #f8fafc;
3431 +}
3432 +
3433 +.mxchat-ajax-pagination {
3434 + display: flex;
3435 + align-items: center;
3436 + justify-content: center;
3437 + gap: 8px;
3438 + flex-wrap: wrap;
3439 +}
3440 +
3441 +.mxchat-page-link {
3442 + display: inline-flex;
3443 + align-items: center;
3444 + justify-content: center;
3445 + min-width: 36px;
3446 + height: 36px;
3447 + padding: 0 12px;
3448 + background: #fff;
3449 + border: 1px solid var(--mxch-card-border, #e5e7eb);
3450 + border-radius: 6px;
3451 + color: var(--mxch-text-primary, #1f2937);
3452 + text-decoration: none;
3453 + font-size: 13px;
3454 + font-weight: 500;
3455 + transition: all 0.2s ease;
3456 + cursor: pointer;
3457 +}
3458 +
3459 +.mxchat-page-link:hover {
3460 + background: var(--mxch-primary, #7873f5);
3461 + border-color: var(--mxch-primary, #7873f5);
3462 + color: #fff;
3463 + text-decoration: none;
3464 +}
3465 +
3466 +.mxchat-page-link.loading {
3467 + opacity: 0.6;
3468 + pointer-events: none;
3469 +}
3470 +
3471 +.mxchat-page-current {
3472 + display: inline-flex;
3473 + align-items: center;
3474 + justify-content: center;
3475 + min-width: 36px;
3476 + height: 36px;
3477 + padding: 0 12px;
3478 + background: var(--mxch-primary, #7873f5);
3479 + border: 1px solid var(--mxch-primary, #7873f5);
3480 + border-radius: 6px;
3481 + color: #fff;
3482 + font-size: 13px;
3483 + font-weight: 600;
3484 +}
3485 +
3486 +.mxchat-page-dots {
3487 + display: inline-flex;
3488 + align-items: center;
3489 + justify-content: center;
3490 + min-width: 24px;
3491 + height: 36px;
3492 + color: var(--mxch-text-muted, #9ca3af);
3493 + font-size: 14px;
3494 +}
3495 +
3496 +.mxchat-pagination-loading {
3497 + margin-left: 12px;
3498 +}
3499 +
3500 +.mxchat-pagination-loading .dashicons {
3501 + color: var(--mxch-primary, #7873f5);
3502 +}
3503 +
3504 +/* Spin animation for loading indicator */
3505 +@keyframes mxchat-spin {
3506 + from { transform: rotate(0deg); }
3507 + to { transform: rotate(360deg); }
3508 +}
3509 +
3510 +.mxchat-pagination-loading .spin,
3511 +.mxchat-ajax-pagination .spin {
3512 + animation: mxchat-spin 1s linear infinite;
3513 +}
3514 +
3515 +/* Mobile responsive pagination */
3516 +@media (max-width: 600px) {
3517 + .mxchat-ajax-pagination {
3518 + gap: 4px;
3519 + }
3520 +
3521 + .mxchat-page-link,
3522 + .mxchat-page-current {
3523 + min-width: 32px;
3524 + height: 32px;
3525 + padding: 0 8px;
3526 + font-size: 12px;
3527 + }
3528 +
3529 + .mxchat-page-dots {
3530 + min-width: 20px;
3531 + }
3532 +}
3533 +
3534 +/* ========================================
3535 + BULK SELECTION STYLES
3536 + ======================================== */
3537 +
3538 +/* Bulk Actions Toolbar */
3539 +.mxchat-bulk-toolbar {
3540 + display: flex;
3541 + align-items: center;
3542 + gap: 12px;
3543 + padding: 12px 16px;
3544 + background: #f8fafc;
3545 + border: 1px solid var(--mxch-card-border);
3546 + border-bottom: none;
3547 + border-radius: var(--mxch-radius-md) var(--mxch-radius-md) 0 0;
3548 +}
3549 +
3550 +.mxchat-bulk-select-label {
3551 + display: flex;
3552 + align-items: center;
3553 + gap: 6px;
3554 + font-size: 13px;
3555 + color: var(--mxch-text-secondary);
3556 + cursor: pointer;
3557 +}
3558 +
3559 +.mxchat-bulk-select-label:hover {
3560 + color: var(--mxch-text-primary);
3561 +}
3562 +
3563 +.mxchat-entry-checkbox,
3564 +.mxchat-entry-checkbox-all {
3565 + width: 16px;
3566 + height: 16px;
3567 + cursor: pointer;
3568 + accent-color: var(--mxch-primary, #7873f5);
3569 +}
3570 +
3571 +.mxchat-bulk-actions {
3572 + display: flex;
3573 + align-items: center;
3574 + gap: 8px;
3575 + margin-left: auto;
3576 +}
3577 +
3578 +.mxchat-bulk-delete {
3579 + display: flex;
3580 + align-items: center;
3581 + gap: 6px;
3582 + color: var(--mxch-error, #dc2626) !important;
3583 + border-color: #fecaca !important;
3584 + background: transparent !important;
3585 +}
3586 +
3587 +.mxchat-bulk-delete:hover:not(:disabled) {
3588 + background: #fef2f2 !important;
3589 + border-color: #fca5a5 !important;
3590 +}
3591 +
3592 +.mxchat-bulk-delete:disabled {
3593 + opacity: 0.5;
3594 + cursor: not-allowed;
3595 +}
3596 +
3597 +.mxchat-selected-count {
3598 + font-size: 12px;
3599 + color: var(--mxch-primary, #7873f5);
3600 + font-weight: 600;
3601 + margin-left: 4px;
3602 +}
3603 +
3604 +/* Delete container - holds Delete All form and Delete Selected button */
3605 +.mxchat-delete-container {
3606 + display: flex;
3607 + align-items: center;
3608 +}
3609 +
3610 +/* Selected row highlighting */
3611 +#mxchat-records-table tr.selected {
3612 + background-color: rgba(120, 115, 245, 0.05) !important;
3613 +}
3614 +
3615 +#mxchat-records-table tr.selected td:first-child {
3616 + position: relative;
3617 +}
3618 +
3619 +#mxchat-records-table tr.selected td:first-child::before {
3620 + content: '';
3621 + position: absolute;
3622 + left: 0;
3623 + top: 0;
3624 + bottom: 0;
3625 + width: 3px;
3626 + background: var(--mxch-primary, #7873f5);
3627 +}
3628 +
3629 +/* Deleting state */
3630 +tr.mxchat-row-deleting {
3631 + opacity: 0.5;
3632 + pointer-events: none;
3633 +}
3634 +
3635 +/* Error state for failed deletions */
3636 +tr.mxchat-row-error {
3637 + background-color: rgba(220, 38, 38, 0.05) !important;
3638 +}
3639 +
3640 +tr.mxchat-row-error td:first-child {
3641 + position: relative;
3642 +}
3643 +
3644 +tr.mxchat-row-error td:first-child::before {
3645 + content: '';
3646 + position: absolute;
3647 + left: 0;
3648 + top: 0;
3649 + bottom: 0;
3650 + width: 3px;
3651 + background: var(--mxch-error, #dc2626);
3652 +}
3653 +
3654 +/* Spin animation for loading states */
3655 +.spin {
3656 + animation: mxchat-spin 1s linear infinite;
3657 +}
3658 +
3659 +/* Responsive adjustments for bulk toolbar */
3660 +@media (max-width: 768px) {
3661 + .mxchat-bulk-toolbar {
3662 + flex-wrap: wrap;
3663 + gap: 8px;
3664 + }
3665 +
3666 + .mxchat-bulk-delete-text {
3667 + display: none;
3668 + }
3669 +
3670 + .mxchat-bulk-actions {
3671 + margin-left: 0;
3672 + }
3673 +}
3674 +
3675 +/* ==========================================================================
3676 + Knowledge Base - Mobile Responsive
3677 + ========================================================================== */
3678 +
3679 +/* Desktop defaults for KB header controls */
3680 +.mxch-kb-header-controls {
3681 + display: flex;
3682 + gap: 10px;
3683 + align-items: center;
3684 +}
3685 +
3686 +.mxch-kb-search-form {
3687 + display: flex;
3688 + gap: 10px;
3689 +}
3690 +
3691 +.mxch-kb-search-input {
3692 + width: 200px;
3693 +}
3694 +
3695 +.mxch-kb-type-filter {
3696 + width: auto;
3697 +}
3698 +
3699 +/* Mobile: Knowledge Base card header stacks vertically */
3700 +@media screen and (max-width: 960px) {
3701 + /* Stack card header vertically */
3702 + #knowledge-base .mxch-card-header {
3703 + flex-direction: column;
3704 + align-items: stretch;
3705 + gap: 12px;
3706 + padding: 12px 16px;
3707 + }
3708 +
3709 + /* Title row wraps badges */
3710 + #knowledge-base .mxch-card-title {
3711 + flex-wrap: wrap;
3712 + font-size: 14px;
3713 + }
3714 +
3715 + /* Controls stack vertically */
3716 + .mxch-kb-header-controls {
3717 + flex-direction: column;
3718 + align-items: stretch;
3719 + gap: 8px;
3720 + width: 100%;
3721 + }
3722 +
3723 + /* Search form wraps */
3724 + .mxch-kb-search-form {
3725 + flex-wrap: wrap;
3726 + gap: 8px;
3727 + width: 100%;
3728 + }
3729 +
3730 + /* Search input takes full width */
3731 + .mxch-kb-search-input {
3732 + width: 100% !important;
3733 + flex: 1;
3734 + min-width: 0;
3735 + }
3736 +
3737 + /* Filter dropdown takes full width */
3738 + .mxch-kb-type-filter {
3739 + width: 100% !important;
3740 + flex: 1;
3741 + min-width: 0;
3742 + }
3743 +
3744 + /* Delete container full width */
3745 + .mxchat-delete-container {
3746 + width: 100%;
3747 + }
3748 +
3749 + .mxchat-delete-container form,
3750 + .mxchat-delete-container .mxchat-bulk-delete {
3751 + width: 100%;
3752 + }
3753 +
3754 + .mxchat-delete-container .mxch-btn {
3755 + width: 100%;
3756 + justify-content: center;
3757 + }
3758 +
3759 + /* Table: hide ID and Source columns on mobile to save space */
3760 + .mxchat-records-table th:nth-child(2),
3761 + .mxchat-records-table td:nth-child(2) {
3762 + display: none;
3763 + }
3764 +
3765 + .mxchat-records-table th:nth-child(4),
3766 + .mxchat-records-table td:nth-child(4) {
3767 + display: none;
3768 + }
3769 +
3770 + /* Content column needs more room */
3771 + .mxchat-content-cell {
3772 + max-width: none !important;
3773 + }
3774 +
3775 + /* Table cells padding */
3776 + .mxchat-records-table th,
3777 + .mxchat-records-table td {
3778 + padding: 10px 8px !important;
3779 + }
3780 +
3781 + /* Pagination wraps nicely */
3782 + .mxchat-ajax-pagination {
3783 + flex-wrap: wrap;
3784 + justify-content: center;
3785 + }
3786 +}
3787 +
3788 +/* Small mobile: further adjustments */
3789 +@media screen and (max-width: 480px) {
3790 + #knowledge-base .mxch-card-header {
3791 + padding: 10px 12px;
3792 + }
3793 +
3794 + #knowledge-base .mxch-card-title {
3795 + font-size: 13px;
3796 + }
3797 +
3798 + /* Search form items fully stacked */
3799 + .mxch-kb-search-form {
3800 + flex-direction: column;
3801 + }
3802 +
3803 + /* Smaller table text */
3804 + .mxchat-records-table {
3805 + font-size: 12px;
3806 + }
3807 +
3808 + .mxchat-records-table th,
3809 + .mxchat-records-table td {
3810 + padding: 8px 6px !important;
3811 + }
3812 +
3813 + /* Also hide Actions header text but keep the column for delete buttons */
3814 + .mxchat-records-table th:nth-child(5) {
3815 + font-size: 0;
3816 + padding: 8px 4px !important;
3817 + width: 40px;
3818 + }
3819 +}
3820 +
3821 +/* ─── Edit Entry Modal ─── */
3822 +
3823 +.mxchat-edit-entry-btn {
3824 + color: var(--mxch-primary, #7873f5);
3825 +}
3826 +.mxchat-edit-entry-btn:hover {
3827 + color: var(--mxch-primary-dark, #5b56d6);
3828 + background: rgba(120, 115, 245, 0.08);
3829 +}
3830 +
3831 +.mxchat-kb-edit-modal-content {
3832 + max-width: 760px;
3833 + /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3834 + max-height: 90vh;
3835 + max-height: min(90vh, calc(100dvh - 24px));
3836 +}
3837 +
3838 +.mxchat-kb-edit-body {
3839 + flex: 1 1 auto;
3840 + /* min-height: 0 lets the body shrink inside the capped modal box so the
3841 + footer (Save/Cancel) can never be pushed below the viewport. */
3842 + min-height: 0;
3843 + display: flex;
3844 + flex-direction: column;
3845 + padding: 20px;
3846 + overflow: hidden;
3847 + gap: 12px;
3848 +}
3849 +
3850 +.mxchat-kb-edit-source {
3851 + font-size: 12px;
3852 + color: var(--mxch-text-muted, #6b7280);
3853 + word-break: break-all;
3854 +}
3855 +.mxchat-kb-edit-source a {
3856 + color: var(--mxch-primary, #7873f5);
3857 + text-decoration: none;
3858 +}
3859 +
3860 +.mxchat-kb-edit-textarea {
3861 + flex: 1;
3862 + min-height: 300px;
3863 + max-height: 55vh;
3864 + width: 100%;
3865 + padding: 14px;
3866 + border: 1px solid var(--mxch-input-border, #d1d5db);
3867 + border-radius: 8px;
3868 + font-size: 14px;
3869 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3870 + line-height: 1.6;
3871 + resize: vertical;
3872 + color: var(--mxch-text-primary, #1a1a2e);
3873 + background: var(--mxch-input-bg, #fff);
3874 + box-sizing: border-box;
3875 + transition: border-color 0.2s;
3876 +}
3877 +.mxchat-kb-edit-textarea:focus {
3878 + outline: none;
3879 + border-color: var(--mxch-primary, #7873f5);
3880 + box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
3881 +}
3882 +
3883 +.mxchat-kb-edit-meta {
3884 + display: flex;
3885 + justify-content: space-between;
3886 + font-size: 12px;
3887 + color: var(--mxch-text-muted, #6b7280);
3888 +}
3889 +
3890 +.mxchat-kb-edit-footer {
3891 + display: flex;
3892 + align-items: center;
3893 + justify-content: space-between;
3894 + padding: 14px 20px;
3895 + border-top: 1px solid #e5e5e5;
3896 + gap: 12px;
3897 + /* Action row can never be squeezed out of the box. */
3898 + flex-shrink: 0;
3899 +}
3900 +
3901 +.mxchat-kb-edit-notice {
3902 + flex: 1;
3903 + font-size: 13px;
3904 +}
3905 +.mxchat-kb-edit-notice.success { color: #16a34a; }
3906 +.mxchat-kb-edit-notice.error { color: #dc2626; }
3907 +
3908 +.mxchat-kb-edit-actions {
3909 + display: flex;
3910 + gap: 8px;
3911 + flex-shrink: 0;
3912 +}
3913 +
3914 +/* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3915 + Read-only "View indexed content" viewer. Reuses the Testing tab's
3916 + match-card / chunk-detail components (admin-testing-tab.css, scoped under
3917 + .mxch-testing-results) so it looks native; this block only adds the modal
3918 + body scroll + the chunk-text container the Testing tab doesn't have. */
3919 +.mxchat-kb-inspect-body {
3920 + flex: 1 1 auto;
3921 + /* Same footer-pushout guard as the edit modal. */
3922 + min-height: 0;
3923 + display: flex;
3924 + flex-direction: column;
3925 + padding: 20px;
3926 + overflow-y: auto;
3927 + gap: 12px;
3928 +}
3929 +/* The modal body is the scroll container — let the inner results grow naturally
3930 + instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3931 +.mxchat-kb-inspect-body .mxch-testing-results {
3932 + max-height: none;
3933 + overflow: visible;
3934 +}
3935 +.mxch-kb-inspect-chunk-text {
3936 + margin: 8px 0 0;
3937 + padding: 12px 14px;
3938 + background: #f8fafc;
3939 + border: 1px solid #e2e8f0;
3940 + border-radius: 6px;
3941 + max-height: 260px;
3942 + overflow-y: auto;
3943 + white-space: pre-wrap;
3944 + word-break: break-word;
3945 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3946 + font-size: 13px;
3947 + line-height: 1.6;
3948 + color: var(--mxch-text-primary, #334155);
3949 +}
3950 +
3951 +.mxchat-kb-edit-save-spinner {
3952 + display: inline-flex;
3953 + align-items: center;
3954 + gap: 6px;
3955 +}
3956 +
3957 +@media (max-width: 782px) {
3958 + .mxchat-kb-edit-modal-content {
3959 + width: 96%;
3960 + max-width: 96%;
3961 + margin: 10px auto;
3962 + max-height: calc(100vh - 20px);
3963 + max-height: calc(100dvh - 20px);
3964 + }
3965 + .mxchat-kb-edit-body {
3966 + padding: 14px;
3967 + }
3968 + .mxchat-kb-edit-textarea {
3969 + min-height: 200px;
3970 + font-size: 15px;
3971 + }
3972 + .mxchat-kb-edit-footer {
3973 + flex-direction: column;
3974 + align-items: stretch;
3975 + }
3976 + .mxchat-kb-edit-actions {
3977 + justify-content: stretch;
3978 + }
3979 + .mxchat-kb-edit-actions .mxch-btn {
3980 + flex: 1;
3981 + text-align: center;
3982 + }
3983 +}
3984 +/* ==========================================================================
3985 + Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
3986 + Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
3987 + ========================================================================== */
3988 +.mxchat-meta-scan-controls {
3989 + display: flex;
3990 + align-items: center;
3991 + flex-wrap: wrap;
3992 + gap: 12px;
3993 + margin-bottom: 12px;
3994 +}
3995 +#mxchat-scan-meta-btn {
3996 + display: inline-flex;
3997 + align-items: center;
3998 + gap: 8px;
3999 +}
4000 +.mxchat-meta-scan-internal {
4001 + display: inline-flex;
4002 + align-items: center;
4003 + gap: 6px;
4004 + font-size: 13px;
4005 + color: var(--mxch-text-secondary, #64748b);
4006 + cursor: pointer;
4007 +}
4008 +.mxchat-meta-scan-loading,
4009 +.mxchat-meta-scan-empty {
4010 + font-size: 13px;
4011 + color: var(--mxch-text-secondary, #64748b);
4012 + margin: 8px 0 0;
4013 +}
4014 +.mxchat-meta-chip-grid {
4015 + display: grid;
4016 + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4017 + gap: 10px;
4018 + margin-top: 12px;
4019 +}
4020 +.mxchat-meta-chip {
4021 + display: flex;
4022 + flex-direction: column;
4023 + align-items: flex-start;
4024 + gap: 4px;
4025 + text-align: left;
4026 + width: 100%;
4027 + padding: 10px 12px;
4028 + background: var(--mxch-card-bg, #fff);
4029 + border: 1px solid var(--mxch-card-border, #e2e8f0);
4030 + border-radius: var(--mxch-radius-md, 8px);
4031 + cursor: pointer;
4032 + transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4033 +}
4034 +.mxchat-meta-chip:hover {
4035 + border-color: var(--mxch-primary, #7873f5);
4036 + box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4037 +}
4038 +.mxchat-meta-chip-main {
4039 + display: flex;
4040 + align-items: baseline;
4041 + flex-wrap: wrap;
4042 + gap: 8px;
4043 +}
4044 +.mxchat-meta-chip-name {
4045 + font-weight: 600;
4046 + color: var(--mxch-text-primary, #1a1a2e);
4047 + font-size: 13px;
4048 +}
4049 +.mxchat-meta-chip-key {
4050 + font-family: monospace;
4051 + font-size: 11px;
4052 + color: var(--mxch-text-muted, #94a3b8);
4053 + background: #f1f5f9;
4054 + padding: 1px 6px;
4055 + border-radius: 4px;
4056 +}
4057 +.mxchat-meta-chip-meta {
4058 + font-size: 11px;
4059 + color: var(--mxch-text-muted, #94a3b8);
4060 + white-space: nowrap;
4061 + overflow: hidden;
4062 + text-overflow: ellipsis;
4063 + max-width: 100%;
4064 +}
4065 +.mxchat-meta-chip-tick {
4066 + font-size: 11px;
4067 + font-weight: 600;
4068 + color: var(--mxch-primary, #7873f5);
4069 + margin-top: 2px;
4070 +}
4071 +.mxchat-meta-chip.is-added {
4072 + border-color: var(--mxch-success, #10b981);
4073 + background: rgba(16, 185, 129, 0.06);
4074 + cursor: default;
4075 +}
4076 +.mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4077 + color: var(--mxch-success, #10b981);
4078 +}
4079 +@media (max-width: 782px) {
4080 + .mxchat-meta-chip-grid {
4081 + grid-template-columns: 1fr;
4082 + }
4083 +}