PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.17
MxChat – AI Chatbot & Content Generation for WordPress v3.2.17
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
mxchat-basic / css / knowledge-style.css

knowledge-style.css in MxChat – AI Chatbot & Content Generation for WordPress 3.2.17, at css/knowledge-style.css

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