PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.24
MxChat – AI Chatbot & Content Generation for WordPress v3.2.24
3.2.25 3.2.24 3.2.23 3.2.22 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 All 156 releases
mxchat-basic / css / knowledge-style.css

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

4,235 lines 87.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 /* 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 ===== */
649 .mxchat-form-group {
650 margin-bottom: 20px;
651 }
652
653 .mxchat-form-group label {
654 display: block;
655 margin-bottom: 8px;
656 font-weight: 500;
657 color: #333;
658 }
659
660 .mxchat-form-group input[type="text"],
661 .mxchat-form-group input[type="url"],
662 .mxchat-form-group input[type="search"],
663 .mxchat-form-group textarea {
664 width: 100%;
665 padding: 12px 15px;
666 border: 2px solid rgba(120, 115, 245, 0.2);
667 border-radius: 8px;
668 font-size: 14px;
669 transition: all 0.3s ease;
670 }
671
672 .mxchat-form-group textarea {
673 min-height: 120px;
674 resize: vertical;
675 }
676
677 .mxchat-form-group input:focus,
678 .mxchat-form-group textarea:focus {
679 border-color: #7873f5;
680 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
681 outline: none;
682 }
683
684 /* ===== Search ===== */
685 .mxchat-search-form {
686 display: flex;
687 }
688
689 .mxchat-search-group {
690 position: relative;
691 display: flex;
692 align-items: center;
693 }
694
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 ===== */
741 .mxchat-button-primary {
742 background: linear-gradient(135deg, #fa73e6, #7873f5);
743 border: none;
744 color: white;
745 padding: 10px 20px;
746 border-radius: 8px;
747 font-weight: 600;
748 cursor: pointer;
749 transition: all 0.3s ease;
750 }
751
752 .mxchat-button-primary:hover {
753 transform: translateY(-1px);
754 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.2);
755 }
756
757 .mxchat-button-primary:disabled {
758 background: #a7a7a7;
759 cursor: not-allowed;
760 transform: none;
761 box-shadow: none;
762 }
763
764 .mxchat-button-secondary {
765 background: #f8f9ff;
766 border: 1px solid rgba(120, 115, 245, 0.2);
767 color: #666;
768 padding: 10px 20px;
769 border-radius: 8px;
770 cursor: pointer;
771 transition: all 0.2s ease;
772 }
773
774 .mxchat-button-secondary:hover {
775 background: #eef0ff;
776 }
777
778 .mxchat-button-danger {
779 color: #ff4d4d;
780 background: transparent;
781 border: none;
782 padding: 10px 20px;
783 border-radius: 8px;
784 cursor: pointer;
785 transition: all 0.2s ease;
786 display: flex;
787 align-items: center;
788 gap: 8px;
789 }
790
791 .mxchat-button-danger:hover {
792 background: #fff5f5;
793 }
794
795 .mxchat-button-icon {
796 padding: 8px;
797 border: none;
798 background: transparent;
799 border-radius: 6px;
800 cursor: pointer;
801 transition: all 0.2s ease;
802 color: #666;
803 }
804
805 .mxchat-button-icon:hover {
806 background: #f8f9ff;
807 color: #7873f5;
808 }
809
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 ===== */
891 .mxchat-table-wrapper {
892 overflow-x: auto;
893 margin: 20px 0;
894 }
895
896 .mxchat-records-table {
897 width: 100%;
898 border-collapse: separate;
899 border-spacing: 0;
900 }
901
902 .mxchat-records-table th {
903 background: #f8f9ff;
904 padding: 15px;
905 font-weight: 600;
906 color: #333;
907 text-align: left;
908 border-bottom: 2px solid rgba(120, 115, 245, 0.1);
909 }
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
917 .mxchat-records-table td {
918 padding: 15px;
919 border-top: 1px solid rgba(120, 115, 245, 0.1);
920 vertical-align: top;
921 }
922
923 .mxchat-records-table tr:hover {
924 background: rgba(120, 115, 245, 0.03);
925 }
926
927 .mxchat-content-cell {
928 max-width: 600px;
929 }
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
1030 .mxchat-url-cell a {
1031 color: #7873f5;
1032 text-decoration: none;
1033 display: flex;
1034 align-items: center;
1035 gap: 4px;
1036 }
1037
1038 .mxchat-url-cell a:hover {
1039 color: #fa73e6;
1040 }
1041
1042 .mxchat-actions-cell {
1043 white-space: nowrap;
1044 display: flex;
1045 gap: 8px;
1046 }
1047
1048 /* Legacy content-view styling (now within accordion) */
1049 .content-edit {
1050 width: 100%;
1051 min-height: 100px;
1052 border: 1px solid #ddd;
1053 border-radius: 4px;
1054 padding: 10px;
1055 }
1056
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%;
1284 height: 100%;
1285 background-color: rgba(0, 0, 0, 0.7);
1286 z-index: 999999;
1287 overflow: auto;
1288 justify-content: center;
1289 align-items: center;
1290 }
1291
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;
1342 padding: 20px;
1343 border-bottom: 1px solid #e5e5e5;
1344 background-color: #f8f9fa;
1345 border-radius: 8px 8px 0 0;
1346 }
1347
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;
1371 display: flex;
1372 align-items: center;
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 /* Contextual note under the modal filter strip — only rendered for content types
1437 that need one (currently Media). Continues the filter strip's own surface so it
1438 reads as part of it rather than as a banner dropped on top. */
1439 .mxchat-kb-filter-note {
1440 display: flex;
1441 align-items: center;
1442 gap: 8px;
1443 padding: 10px 20px;
1444 background-color: #f8f9fa;
1445 border-bottom: 1px solid #e5e5e5;
1446 color: #555;
1447 font-size: 13px;
1448 line-height: 1.4;
1449 }
1450
1451 /* An author-level display value outranks the browser default for [hidden], so the
1452 hidden state has to be restated here or the note would never hide. */
1453 .mxchat-kb-filter-note[hidden] {
1454 display: none;
1455 }
1456
1457 .mxchat-kb-filter-note-icon {
1458 width: 16px;
1459 height: 16px;
1460 flex-shrink: 0;
1461 color: #7873f5;
1462 }
1463
1464 /* Special style for the "processed" filter */
1465 #mxchat-kb-processed-filter {
1466 border-left: 3px solid #1e88e5;
1467 }
1468
1469 .mxchat-kb-content-selection {
1470 /* Flexible middle region: header row stays put, the list below scrolls.
1471 min-height: 0 is load-bearing — without it flex refuses to shrink this
1472 column and the footer gets pushed out of the box (the mobile bug). */
1473 flex: 1 1 auto;
1474 min-height: 0;
1475 display: flex;
1476 flex-direction: column;
1477 }
1478
1479 .mxchat-kb-selection-header {
1480 display: flex;
1481 justify-content: space-between;
1482 align-items: center;
1483 gap: var(--mxch-spacing-md, 16px);
1484 padding: 15px 20px;
1485 background-color: #f8f9fa;
1486 border-bottom: 1px solid #eee;
1487 position: sticky;
1488 top: 0;
1489 z-index: 10;
1490 }
1491
1492 .mxchat-kb-selection-header label {
1493 display: flex;
1494 align-items: center;
1495 gap: 8px;
1496 font-weight: 500;
1497 }
1498
1499 .mxchat-kb-selection-count {
1500 font-size: 14px;
1501 color: #666;
1502 font-weight: 500;
1503 }
1504
1505 .mxchat-kb-content-list {
1506 padding: 0;
1507 /* The one and only scroller inside the modal. */
1508 flex: 1 1 auto;
1509 min-height: 0;
1510 overflow-y: auto;
1511 }
1512
1513 .mxchat-kb-content-item {
1514 display: flex;
1515 padding: 15px 20px;
1516 border-bottom: 1px solid #eee;
1517 transition: background-color 0.2s;
1518 }
1519
1520 .mxchat-kb-content-item:hover {
1521 background-color: #f0f7ff;
1522 }
1523
1524 /* Improved visibility for processed items */
1525 .mxchat-kb-content-item.processed {
1526 background-color: #f0f8ff;
1527 border-left: 3px solid #1e88e5;
1528 }
1529
1530 .mxchat-kb-content-item.processed:hover {
1531 background-color: #e3f2fd;
1532 }
1533
1534 .mxchat-kb-content-checkbox {
1535 margin-right: 15px;
1536 display: flex;
1537 align-items: flex-start;
1538 padding-top: 3px;
1539 }
1540
1541 /* Native control, brand-tinted — identical to the "select all" checkbox above the
1542 list, which carries no custom styling at all and renders correctly.
1543 Do NOT re-add width / height / border / border-radius / background here. WP admin
1544 draws the tick as a 21px dashicon positioned with negative margins for its OWN
1545 default box, so forcing a custom box makes the tick overflow it. That mismatch
1546 shipped for a long time but was invisible while the tick was white-on-white. */
1547 .mxchat-kb-content-checkbox input[type="checkbox"] {
1548 margin: 0;
1549 cursor: pointer;
1550 accent-color: var(--mxch-primary, #7873f5);
1551 }
1552
1553 .mxchat-kb-content-checkbox input[type="checkbox"]:focus-visible {
1554 outline: 2px solid var(--mxch-primary, #7873f5);
1555 outline-offset: 2px;
1556 }
1557
1558 .mxchat-kb-content-details {
1559 flex: 1;
1560 }
1561
1562 .mxchat-kb-content-title {
1563 font-size: 16px;
1564 font-weight: 600;
1565 margin-bottom: 8px;
1566 display: flex;
1567 align-items: center;
1568 flex-wrap: wrap;
1569 gap: 8px;
1570 }
1571
1572 .mxchat-kb-content-title a {
1573 color: #7873f5;
1574 text-decoration: none;
1575 }
1576
1577 .mxchat-kb-content-title a:hover {
1578 color: #fa73e6;
1579 text-decoration: underline;
1580 }
1581
1582 /* Style for processed badge */
1583 .mxchat-kb-processed-badge {
1584 display: inline-block;
1585 background-color: #1e88e5;
1586 color: white;
1587 font-size: 11px;
1588 padding: 2px 8px;
1589 border-radius: 10px;
1590 font-weight: normal;
1591 }
1592
1593 /* Style for unprocessed badge */
1594 .mxchat-kb-unprocessed-badge {
1595 display: inline-block;
1596 background-color: #607d8b;
1597 color: white;
1598 font-size: 11px;
1599 padding: 2px 8px;
1600 border-radius: 10px;
1601 font-weight: normal;
1602 }
1603
1604 /* Last updated timestamp */
1605 .mxchat-kb-last-updated {
1606 font-size: 11px;
1607 color: #666;
1608 font-style: italic;
1609 margin-left: 8px;
1610 }
1611
1612 .mxchat-kb-content-meta {
1613 display: flex;
1614 flex-wrap: wrap;
1615 gap: 15px;
1616 color: #666;
1617 font-size: 13px;
1618 margin-bottom: 8px;
1619 }
1620
1621 .mxchat-kb-content-excerpt {
1622 color: #555;
1623 font-size: 14px;
1624 line-height: 1.5;
1625 }
1626
1627 .mxchat-kb-modal-footer {
1628 padding: 15px 20px;
1629 border-top: 1px solid #e5e5e5;
1630 display: flex;
1631 justify-content: space-between;
1632 align-items: center;
1633 gap: 15px;
1634 background-color: #f8f9fa;
1635 border-radius: 0 0 8px 8px;
1636 }
1637
1638 .mxchat-kb-modal-footer .mxchat-kb-pagination {
1639 flex: 1;
1640 margin: 0;
1641 padding: 0;
1642 text-align: left;
1643 }
1644
1645 .mxchat-kb-footer-actions {
1646 display: flex;
1647 gap: 10px;
1648 flex-shrink: 0;
1649 }
1650
1651 .mxchat-kb-button-primary,
1652 .mxchat-kb-button-secondary {
1653 padding: 8px 15px;
1654 border-radius: 4px;
1655 font-size: 14px;
1656 cursor: pointer;
1657 font-weight: 500;
1658 text-align: center;
1659 transition: all 0.2s;
1660 }
1661
1662 .mxchat-kb-button-primary {
1663 background: linear-gradient(135deg, #fa73e6, #7873f5);
1664 color: white;
1665 border: none;
1666 }
1667
1668 .mxchat-kb-button-primary:hover {
1669 background: linear-gradient(135deg, #e56dd6, #6b67db);
1670 }
1671
1672 .mxchat-kb-button-primary:disabled {
1673 background-color: #a7a7a7;
1674 cursor: not-allowed;
1675 }
1676
1677 /* Update mode for the process button */
1678 #mxchat-kb-process-selected.update-mode {
1679 background-color: #ff9800;
1680 }
1681
1682 #mxchat-kb-process-selected.update-mode:hover {
1683 background-color: #f57c00;
1684 }
1685
1686 /* Mixed mode for the process button */
1687 #mxchat-kb-process-selected.mixed-mode {
1688 background-color: #9c27b0;
1689 }
1690
1691 #mxchat-kb-process-selected.mixed-mode:hover {
1692 background-color: #7b1fa2;
1693 }
1694
1695 .mxchat-kb-button-secondary {
1696 background-color: #f6f7f7;
1697 color: #2c3338;
1698 border: 1px solid #ddd;
1699 }
1700
1701 .mxchat-kb-button-secondary:hover {
1702 background-color: #f0f0f0;
1703 border-color: #c3c4c7;
1704 }
1705
1706 .mxchat-kb-pagination {
1707 padding: 15px 20px;
1708 border-top: 1px solid #eee;
1709 text-align: center;
1710 }
1711
1712 .mxchat-kb-pagination-links {
1713 display: flex;
1714 justify-content: center;
1715 align-items: center;
1716 gap: 5px;
1717 flex-wrap: wrap;
1718 }
1719
1720 .mxchat-kb-page-link {
1721 padding: 5px 10px;
1722 text-decoration: none;
1723 border: 1px solid #ddd;
1724 color: #7873f5;
1725 border-radius: 3px;
1726 transition: all 0.2s;
1727 }
1728
1729 .mxchat-kb-page-link:hover {
1730 background-color: #f0f0f0;
1731 color: #fa73e6;
1732 border-color: #c3c4c7;
1733 }
1734
1735 .mxchat-kb-page-current {
1736 padding: 5px 10px;
1737 background: linear-gradient(135deg, #fa73e6, #7873f5);
1738 color: white;
1739 border-radius: 3px;
1740 font-weight: 500;
1741 }
1742
1743 /* ===== Loading and Error States ===== */
1744 .mxchat-kb-no-results,
1745 .mxchat-kb-error {
1746 padding: 30px;
1747 text-align: center;
1748 color: #666;
1749 font-size: 14px;
1750 }
1751
1752 .mxchat-kb-error {
1753 color: #d63638;
1754 }
1755
1756 .mxchat-kb-loading {
1757 display: flex;
1758 flex-direction: column;
1759 align-items: center;
1760 justify-content: center;
1761 padding: 50px;
1762 color: #666;
1763 }
1764
1765 .mxchat-kb-spinner {
1766 display: inline-block;
1767 width: 50px;
1768 height: 50px;
1769 border: 5px solid #f3f3f3;
1770 border-top: 5px solid #7873f5;
1771 border-radius: 50%;
1772 animation: mxchat-kb-spin 1s linear infinite;
1773 margin: 0 0 10px 0;
1774 }
1775
1776 @keyframes mxchat-kb-spin {
1777 0% { transform: rotate(0deg); }
1778 100% { transform: rotate(360deg); }
1779 }
1780
1781 .mxchat-kb-progress-bar {
1782 height: 8px;
1783 background-color: #f0f0f0;
1784 border-radius: 4px;
1785 margin: 10px 0 15px;
1786 overflow: hidden;
1787 }
1788
1789 .mxchat-kb-progress-fill {
1790 height: 100%;
1791 background: linear-gradient(135deg, #fa73e6, #7873f5);
1792 transition: width 0.3s ease;
1793 }
1794
1795 .mxchat-kb-current-item {
1796 font-size: 14px;
1797 color: #555;
1798 margin: 10px 0 0;
1799 font-style: italic;
1800 }
1801
1802 .mxchat-kb-results-details {
1803 margin-top: 15px;
1804 text-align: left;
1805 max-height: 200px;
1806 overflow-y: auto;
1807 padding: 10px;
1808 border-radius: 4px;
1809 }
1810
1811 .mxchat-kb-results-details h5 {
1812 margin-top: 0;
1813 margin-bottom: 10px;
1814 color: #d63638;
1815 }
1816
1817 .mxchat-kb-results-details ul {
1818 margin: 0;
1819 padding-left: 20px;
1820 }
1821
1822 .mxchat-kb-results-details li {
1823 margin-bottom: 5px;
1824 }
1825
1826 /* ===== Processing Overlay ===== */
1827 .mxchat-kb-processing-overlay {
1828 position: fixed;
1829 top: 0;
1830 left: 0;
1831 width: 100%;
1832 height: 100%;
1833 background-color: rgba(0, 0, 0, 0.7);
1834 z-index: 9999999;
1835 display: flex;
1836 justify-content: center;
1837 align-items: center;
1838 }
1839
1840 .mxchat-kb-processing-content {
1841 background-color: white;
1842 padding: 30px;
1843 border-radius: 8px;
1844 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
1845 text-align: center;
1846 max-width: 500px;
1847 width: 90%;
1848 }
1849
1850 .mxchat-kb-processing-content h3 {
1851 margin-top: 0;
1852 margin-bottom: 15px;
1853 font-size: 20px;
1854 color: #7873f5;
1855 }
1856
1857 .mxchat-kb-processing-status {
1858 color: #555;
1859 margin-bottom: 20px;
1860 }
1861
1862 /* ===== Utility Classes ===== */
1863 .mxchat-na {
1864 color: #999;
1865 font-style: italic;
1866 }
1867
1868 .mxchat-no-records {
1869 text-align: center;
1870 color: #666;
1871 padding: 40px !important;
1872 }
1873
1874 /* ===== Responsive Design ===== */
1875 @media screen and (max-width: 782px) {
1876 /* Hero section */
1877 div.mxchat-hero h1.mxchat-main-title {
1878 font-size: 2.5rem;
1879 }
1880
1881 .mxchat-content {
1882 padding: 1rem;
1883 }
1884
1885 .mxchat-card {
1886 padding: 20px;
1887 }
1888
1889 .mxchat-card-header {
1890 flex-direction: column;
1891 gap: 16px;
1892 }
1893
1894 .mxchat-header-actions {
1895 flex-direction: column;
1896 width: 100%;
1897 }
1898
1899 .mxchat-search-group input {
1900 width: 100%;
1901 }
1902
1903 /* ADDED 2.5.6: Responsive filter dropdown */
1904 .mxchat-filter-group {
1905 margin-left: 0;
1906 width: 100%;
1907 }
1908
1909 .mxchat-filter-group select {
1910 width: 100%;
1911 }
1912
1913 .mxchat-url-input-group {
1914 flex-direction: column;
1915 }
1916
1917 .mxchat-records-table {
1918 display: block;
1919 overflow-x: auto;
1920 }
1921
1922 .mxchat-content-cell {
1923 max-width: 200px;
1924 }
1925
1926 /* Modal responsive adjustments */
1927 .mxchat-kb-modal-content {
1928 width: 95%;
1929 /* dvh = real visible viewport (mobile vh includes the URL-bar region);
1930 vh line is the older-browser fallback. */
1931 max-height: calc(100vh - 24px);
1932 max-height: calc(100dvh - 24px);
1933 margin: 12px auto;
1934 /* Last-resort scroll: on extreme-short viewports (landscape phones)
1935 the compacted chrome + the list's floor can still exceed the box —
1936 scroll inside the box rather than clipping the footer. */
1937 overflow-y: auto;
1938 }
1939
1940 /* Compact the fixed chrome on mobile — stacked filters + a stacked footer
1941 are tall, and every saved pixel goes to the content list. */
1942 .mxchat-kb-modal-header {
1943 padding: 12px 16px;
1944 }
1945
1946 .mxchat-kb-modal-header h3 {
1947 font-size: 16px;
1948 }
1949
1950 .mxchat-kb-modal-filters {
1951 flex-direction: column;
1952 align-items: stretch;
1953 padding: 10px 16px;
1954 gap: 8px;
1955 }
1956
1957 .mxchat-kb-search-group {
1958 max-width: none;
1959 }
1960
1961 .mxchat-kb-filter-group {
1962 flex-direction: column;
1963 gap: 8px;
1964 }
1965
1966 .mxchat-kb-filter-group select {
1967 padding: 6px 30px 6px 10px;
1968 }
1969
1970 .mxchat-kb-selection-header {
1971 flex-direction: column;
1972 align-items: flex-start;
1973 gap: 6px;
1974 padding: 10px 16px;
1975 }
1976
1977 /* Guarantee a usable slice of visible rows — reachable buttons are no
1978 help if there is nothing to select above them. */
1979 .mxchat-kb-content-list {
1980 min-height: 96px;
1981 }
1982
1983 .mxchat-kb-content-item {
1984 padding: 10px 16px;
1985 }
1986
1987 .mxchat-kb-modal-footer {
1988 flex-direction: column;
1989 gap: 8px;
1990 padding: 10px 16px;
1991 }
1992
1993 .mxchat-kb-modal-footer .mxchat-kb-pagination {
1994 width: 100%;
1995 text-align: center;
1996 }
1997
1998 .mxchat-kb-footer-actions {
1999 width: 100%;
2000 flex-direction: column;
2001 }
2002
2003 .mxchat-kb-button-primary,
2004 .mxchat-kb-button-secondary {
2005 width: 100%;
2006 }
2007
2008 /* Import methods grid */
2009 .mxchat-import-methods-grid {
2010 grid-template-columns: 1fr;
2011 }
2012
2013 /* Primary import card */
2014 .mxchat-featured-button {
2015 width: 100%;
2016 }
2017 }
2018
2019 /* ===== Notification Styles ===== */
2020
2021 /* Base notification style */
2022 .mxchat-kb-notification {
2023 margin: 15px 20px 15px;
2024 padding: 15px;
2025 border-radius: 6px;
2026 border-left: 4px solid;
2027 position: relative;
2028 animation: mxchat-kb-notification-appear 0.3s ease-out;
2029 }
2030
2031 @keyframes mxchat-kb-notification-appear {
2032 from {
2033 opacity: 0;
2034 transform: translateY(-10px);
2035 }
2036 to {
2037 opacity: 1;
2038 transform: translateY(0);
2039 }
2040 }
2041
2042 /* Success notification */
2043 .mxchat-kb-notification.success {
2044 background-color: #f0f9eb;
2045 border-color: #67c23a;
2046 color: #3c763d;
2047 }
2048
2049 .mxchat-kb-notification.success h4 {
2050 color: #67c23a;
2051 margin: 0 0 5px;
2052 font-size: 16px;
2053 font-weight: 600;
2054 }
2055
2056 .mxchat-kb-notification.success::before {
2057 content: "\f147";
2058 font-family: dashicons;
2059 position: absolute;
2060 right: 15px;
2061 top: 15px;
2062 color: #67c23a;
2063 font-size: 20px;
2064 }
2065
2066 /* Error notification */
2067 .mxchat-kb-notification.error {
2068 background-color: #fef0f0;
2069 border-color: #d63638;
2070 color: #a94442;
2071 }
2072
2073 .mxchat-kb-notification.error h4 {
2074 color: #d63638;
2075 margin: 0 0 5px;
2076 font-size: 16px;
2077 font-weight: 600;
2078 }
2079
2080 .mxchat-kb-notification.error::before {
2081 content: "\f335";
2082 font-family: dashicons;
2083 position: absolute;
2084 right: 15px;
2085 top: 15px;
2086 color: #d63638;
2087 font-size: 20px;
2088 }
2089
2090 /* Warning notification */
2091 .mxchat-kb-notification.warning {
2092 background-color: #fdf6ec;
2093 border-color: #ff9800;
2094 color: #8a6d3b;
2095 }
2096
2097 .mxchat-kb-notification.warning h4 {
2098 color: #ff9800;
2099 margin: 0 0 5px;
2100 font-size: 16px;
2101 font-weight: 600;
2102 }
2103
2104 .mxchat-kb-notification.warning::before {
2105 content: "\f534";
2106 font-family: dashicons;
2107 position: absolute;
2108 right: 15px;
2109 top: 15px;
2110 color: #ff9800;
2111 font-size: 20px;
2112 }
2113
2114 /* Info notification */
2115 .mxchat-kb-notification.info {
2116 background-color: #f4f4fd;
2117 border-color: #7873f5;
2118 color: #31708f;
2119 }
2120
2121 .mxchat-kb-notification.info h4 {
2122 color: #7873f5;
2123 margin: 0 0 5px;
2124 font-size: 16px;
2125 font-weight: 600;
2126 }
2127
2128 .mxchat-kb-notification.info::before {
2129 content: "\f348";
2130 font-family: dashicons;
2131 position: absolute;
2132 right: 15px;
2133 top: 15px;
2134 color: #7873f5;
2135 font-size: 20px;
2136 }
2137
2138 /* Close button for notifications */
2139 .mxchat-kb-notification-close {
2140 position: absolute;
2141 top: 10px;
2142 right: 10px;
2143 cursor: pointer;
2144 color: inherit;
2145 opacity: 0.7;
2146 font-size: 16px;
2147 line-height: 1;
2148 transition: opacity 0.2s;
2149 }
2150
2151 .mxchat-kb-notification-close:hover {
2152 opacity: 1;
2153 }
2154
2155 /* Results details section */
2156 .mxchat-kb-results-details {
2157 margin-top: 12px;
2158 padding: 12px;
2159 border-radius: 4px;
2160 font-size: 13px;
2161 line-height: 1.5;
2162 }
2163
2164 .mxchat-kb-notification.success .mxchat-kb-results-details {
2165 background-color: rgba(103, 194, 58, 0.05);
2166 border: 1px solid rgba(103, 194, 58, 0.2);
2167 }
2168
2169 .mxchat-kb-notification.error .mxchat-kb-results-details {
2170
2171 }
2172
2173 .mxchat-kb-notification.warning .mxchat-kb-results-details {
2174 background-color: rgba(255, 152, 0, 0.05);
2175 border: 1px solid rgba(255, 152, 0, 0.2);
2176 }
2177
2178 .mxchat-kb-notification.info .mxchat-kb-results-details {
2179 background-color: rgba(120, 115, 245, 0.05);
2180 border: 1px solid rgba(120, 115, 245, 0.2);
2181 }
2182
2183 /* Results details title */
2184 .mxchat-kb-results-details h5 {
2185 margin: 0 0 10px;
2186 font-size: 14px;
2187 font-weight: 600;
2188 }
2189
2190 .mxchat-kb-notification.success .mxchat-kb-results-details h5 {
2191 color: #3c763d;
2192 }
2193
2194 .mxchat-kb-notification.error .mxchat-kb-results-details h5 {
2195 color: #a94442;
2196 }
2197
2198 .mxchat-kb-notification.warning .mxchat-kb-results-details h5 {
2199 color: #8a6d3b;
2200 }
2201
2202 .mxchat-kb-notification.info .mxchat-kb-results-details h5 {
2203 color: #31708f;
2204 }
2205
2206 /* List items in results details */
2207 .mxchat-kb-results-details ul {
2208 margin: 0;
2209 padding-left: 20px;
2210 list-style-type: disc;
2211 }
2212
2213 .mxchat-kb-results-details li {
2214 margin-bottom: 8px;
2215 padding-left: 3px;
2216 }
2217
2218 .mxchat-kb-results-details li:last-child {
2219 margin-bottom: 0;
2220 }
2221
2222 .mxchat-kb-results-details li strong {
2223 font-weight: 600;
2224 }
2225
2226 /* Failed items specific styling */
2227 .mxchat-kb-results-details li.failed-item {
2228 color: #d63638;
2229 }
2230
2231 /* Success items specific styling */
2232 .mxchat-kb-results-details li.success-item {
2233 color: #67c23a;
2234 }
2235
2236 /* Updated items specific styling */
2237 .mxchat-kb-results-details li.updated-item {
2238 color: #1e88e5;
2239 }
2240
2241 /* Processing summary information */
2242 .mxchat-kb-processing-summary {
2243 display: flex;
2244 flex-wrap: wrap;
2245 gap: 15px;
2246 margin-top: 10px;
2247 font-size: 14px;
2248 }
2249
2250 .mxchat-kb-summary-item {
2251 display: flex;
2252 align-items: center;
2253 gap: 5px;
2254 }
2255
2256 .mxchat-kb-summary-item .dashicons {
2257 font-size: 18px;
2258 }
2259
2260 .mxchat-kb-summary-item.processed .dashicons {
2261 color: #67c23a;
2262 }
2263
2264 .mxchat-kb-summary-item.updated .dashicons {
2265 color: #1e88e5;
2266 }
2267
2268 .mxchat-kb-summary-item.failed .dashicons {
2269 color: #d63638;
2270 }
2271
2272 /* Show more/less toggle for details */
2273 .mxchat-kb-show-details {
2274 display: inline-block;
2275 margin-top: 8px;
2276 color: #7873f5;
2277 cursor: pointer;
2278 font-size: 13px;
2279 font-weight: 500;
2280 }
2281
2282 .mxchat-kb-show-details:hover {
2283 text-decoration: underline;
2284 }
2285
2286 .mxchat-kb-show-details .dashicons {
2287 font-size: 16px;
2288 vertical-align: middle;
2289 margin-right: 2px;
2290 }
2291
2292 /* Collapsible details section */
2293 .mxchat-kb-results-details.collapsed {
2294 display: none;
2295 }
2296
2297 /* Responsive styles for notifications */
2298 @media screen and (max-width: 782px) {
2299 .mxchat-kb-notification {
2300 margin: 10px 15px 0;
2301 padding: 12px;
2302 }
2303
2304 .mxchat-kb-notification::before {
2305 display: none;
2306 }
2307
2308 .mxchat-kb-processing-summary {
2309 flex-direction: column;
2310 gap: 8px;
2311 }
2312 }
2313
2314
2315
2316
2317
2318 /* Tab Navigation */
2319 .mxchat-kb-tabs-nav {
2320 display: flex;
2321 margin-bottom: 20px;
2322 border-bottom: 1px solid #ccc;
2323 }
2324
2325 .mxchat-kb-tab-button {
2326 padding: 10px 15px;
2327 background: #f1f1f1;
2328 border: 1px solid #ccc;
2329 border-bottom: none;
2330 margin-right: 5px;
2331 cursor: pointer;
2332 font-weight: 500;
2333 border-radius: 5px 5px 0 0;
2334 }
2335
2336 .mxchat-kb-tab-button.active {
2337 background: #fff;
2338 border-bottom: 2px solid #fff;
2339 position: relative;
2340 bottom: -1px;
2341 color: #2271b1;
2342 }
2343
2344 /* Tab Content */
2345 .mxchat-kb-tab-content {
2346 display: none;
2347 }
2348
2349 .mxchat-kb-tab-content.active {
2350 display: block;
2351 }
2352
2353 /* Make the first card in tabs not have top margin */
2354 .mxchat-kb-tab-content .mxchat-card:first-child {
2355 margin-top: 0;
2356 }
2357
2358
2359
2360
2361
2362
2363 /* Pinecone Settings Tab Styles */
2364 .mxchat-pinecone-info-box {
2365 background: #f8f9ff;
2366 border: 1px solid rgba(120, 115, 245, 0.2);
2367 border-radius: 10px;
2368 padding: 20px;
2369 margin: 20px 0;
2370 display: flex;
2371 align-items: flex-start;
2372 gap: 15px;
2373 }
2374
2375 .mxchat-info-icon {
2376 flex-shrink: 0;
2377 }
2378
2379 .mxchat-info-icon .dashicons {
2380 color: #7873f5;
2381 font-size: 24px;
2382 width: 24px;
2383 height: 24px;
2384 }
2385
2386 .mxchat-info-content {
2387 flex: 1;
2388 }
2389
2390 .mxchat-info-content h4 {
2391 margin: 0 0 10px 0;
2392 color: #333;
2393 font-size: 16px;
2394 }
2395
2396 .mxchat-info-content p {
2397 margin: 0 0 8px 0;
2398 color: #666;
2399 font-size: 14px;
2400 line-height: 1.5;
2401 }
2402
2403 .mxchat-info-content p:last-child {
2404 margin-bottom: 0;
2405 }
2406
2407 .mxchat-info-content a {
2408 color: #7873f5;
2409 text-decoration: none;
2410 font-weight: 500;
2411 }
2412
2413 .mxchat-info-content a:hover {
2414 text-decoration: underline;
2415 }
2416
2417 /* Database Settings Form */
2418 .mxchat-database-settings-form {
2419 margin-top: 25px;
2420 }
2421
2422 /* Toggle Container */
2423 .mxchat-toggle-container {
2424 display: flex;
2425 align-items: center;
2426 gap: 12px;
2427 margin: 20px 0;
2428 padding: 15px 0;
2429 border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2430 }
2431
2432 .mxchat-toggle-switch {
2433 position: relative;
2434 display: inline-block;
2435 width: 50px;
2436 height: 26px;
2437 }
2438
2439 .mxchat-toggle-switch input {
2440 opacity: 0;
2441 width: 0;
2442 height: 0;
2443 }
2444
2445 .mxchat-toggle-slider {
2446 position: absolute;
2447 cursor: pointer;
2448 top: 0;
2449 left: 0;
2450 right: 0;
2451 bottom: 0;
2452 background-color: #ddd;
2453 transition: 0.3s;
2454 border-radius: 26px;
2455 }
2456
2457 .mxchat-toggle-slider:before {
2458 position: absolute;
2459 content: "";
2460 height: 20px;
2461 width: 20px;
2462 left: 3px;
2463 bottom: 3px;
2464 background-color: white;
2465 transition: 0.3s;
2466 border-radius: 50%;
2467 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
2468 }
2469
2470 input:checked + .mxchat-toggle-slider {
2471 background: linear-gradient(135deg, #fa73e6, #7873f5);
2472 }
2473
2474 input:checked + .mxchat-toggle-slider:before {
2475 transform: translateX(24px);
2476 }
2477
2478 .mxchat-toggle-label {
2479 font-weight: 500;
2480 color: #333;
2481 font-size: 15px;
2482 }
2483
2484 /* Pinecone Settings Section */
2485 .mxchat-pinecone-settings {
2486 background: #f8f9ff;
2487 border: 1px solid rgba(120, 115, 245, 0.2);
2488 border-radius: 10px;
2489 padding: 25px;
2490 margin: 20px 0;
2491 }
2492
2493 /* Knowledge Warning (Success State) */
2494 .mxchat-knowledge-warning.success {
2495 background: #edfaef;
2496 border-left: 4px solid #46b450;
2497 padding: 15px;
2498 margin: 0 0 20px 0;
2499 border-radius: 4px;
2500 }
2501
2502 .mxchat-knowledge-warning.success p {
2503 margin: 0;
2504 color: #2a4f30;
2505 align-items: center;
2506 gap: 8px;
2507 }
2508
2509 .mxchat-knowledge-warning.success .dashicons {
2510 color: #46b450;
2511 }
2512
2513 /* Form Groups */
2514 .mxchat-form-group {
2515 margin-bottom: 20px;
2516 }
2517
2518 .mxchat-form-group label {
2519 display: block;
2520 margin-bottom: 8px;
2521 color: #333;
2522 font-weight: 500;
2523 font-size: 14px;
2524 }
2525
2526 .mxchat-form-group label .required {
2527 color: #dc3232;
2528 margin-left: 4px;
2529 }
2530
2531 .mxchat-form-group input[type="text"],
2532 .mxchat-form-group input[type="password"] {
2533 width: 100%;
2534 max-width: 400px;
2535 padding: 10px 12px;
2536 border: 1px solid rgba(120, 115, 245, 0.2);
2537 border-radius: 6px;
2538 background: white;
2539 font-size: 14px;
2540 transition: border-color 0.2s ease, box-shadow 0.2s ease;
2541 }
2542
2543 .mxchat-form-group input[type="text"]:focus,
2544 .mxchat-form-group input[type="password"]:focus {
2545 border-color: #7873f5;
2546 outline: none;
2547 box-shadow: 0 0 0 2px rgba(120, 115, 245, 0.1);
2548 }
2549
2550 .mxchat-form-group .description {
2551 margin: 8px 0 0 0;
2552 color: #666;
2553 font-size: 13px;
2554 line-height: 1.4;
2555 }
2556
2557 .mxchat-form-group .description a {
2558 color: #7873f5;
2559 text-decoration: none;
2560 font-weight: 500;
2561 }
2562
2563 .mxchat-form-group .description a:hover {
2564 text-decoration: underline;
2565 }
2566
2567 /* Setup Help Section */
2568 .mxchat-pinecone-setup-help {
2569 background: white;
2570 border: 1px solid rgba(120, 115, 245, 0.1);
2571 border-radius: 8px;
2572 padding: 20px;
2573 margin-top: 25px;
2574 }
2575
2576 .mxchat-pinecone-setup-help h3 {
2577 margin: 0 0 15px 0;
2578 color: #333;
2579 font-size: 16px;
2580 }
2581
2582 .mxchat-pinecone-setup-help ol {
2583 margin: 0;
2584 padding-left: 20px;
2585 }
2586
2587 .mxchat-pinecone-setup-help li {
2588 margin-bottom: 12px;
2589 color: #666;
2590 line-height: 1.5;
2591 }
2592
2593 .mxchat-pinecone-setup-help li:last-child {
2594 margin-bottom: 0;
2595 }
2596
2597 .mxchat-pinecone-setup-help ul {
2598 margin: 8px 0;
2599 padding-left: 20px;
2600 }
2601
2602 .mxchat-pinecone-setup-help ul li {
2603 margin-bottom: 6px;
2604 font-size: 13px;
2605 }
2606
2607 .mxchat-pinecone-setup-help a {
2608 color: #7873f5;
2609 text-decoration: none;
2610 font-weight: 500;
2611 }
2612
2613 .mxchat-pinecone-setup-help a:hover {
2614 text-decoration: underline;
2615 }
2616
2617 /* Connection Status Section */
2618 .mxchat-pinecone-status-section {
2619 background: white;
2620 border: 1px solid rgba(120, 115, 245, 0.1);
2621 border-radius: 8px;
2622 padding: 20px;
2623 margin-top: 25px;
2624 }
2625
2626 .mxchat-pinecone-status-section h3 {
2627 margin: 0 0 15px 0;
2628 color: #333;
2629 font-size: 16px;
2630 }
2631
2632 #mxchat-pinecone-test-connection {
2633 margin-bottom: 15px;
2634 }
2635
2636 #test-pinecone-connection {
2637 background: linear-gradient(135deg, #fa73e6, #7873f5);
2638 color: white;
2639 border: none;
2640 padding: 10px 20px;
2641 border-radius: 6px;
2642 cursor: pointer;
2643 font-size: 14px;
2644 font-weight: 500;
2645 transition: all 0.2s ease;
2646 }
2647
2648 #test-pinecone-connection:hover:not(:disabled) {
2649 transform: translateY(-1px);
2650 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
2651 }
2652
2653 #test-pinecone-connection:disabled {
2654 opacity: 0.6;
2655 cursor: not-allowed;
2656 transform: none;
2657 }
2658
2659 /* Test Result Styles */
2660 .mxchat-test-result {
2661 margin-top: 15px;
2662 }
2663
2664 .mxchat-test-result .notice {
2665 margin: 0;
2666 padding: 12px 15px;
2667 border-radius: 6px;
2668 display: flex;
2669 align-items: center;
2670 gap: 8px;
2671 }
2672
2673 .mxchat-test-result .notice-success {
2674 background: #edfaef;
2675 border-left: 4px solid #46b450;
2676 color: #2a4f30;
2677 }
2678
2679 .mxchat-test-result .notice-error {
2680 background: #fbeaea;
2681 border-left: 4px solid #dc3232;
2682 color: #721c24;
2683 }
2684
2685 .mxchat-test-result .notice .dashicons {
2686 flex-shrink: 0;
2687 }
2688
2689 .mxchat-test-result .notice p {
2690 margin: 0;
2691 font-size: 14px;
2692 }
2693
2694 /* Compatibility Notice */
2695 .mxchat-pinecone-compatibility-notice {
2696 background: #e8f4ff;
2697 border-left: 4px solid #2196f3;
2698 padding: 15px;
2699 margin: 0 0 20px 0;
2700 border-radius: 4px;
2701 }
2702
2703 .mxchat-pinecone-compatibility-notice p {
2704 margin: 0;
2705 color: #1565c0;
2706 font-size: 14px;
2707 line-height: 1.5;
2708 }
2709
2710 /* Responsive Design */
2711 @media screen and (max-width: 782px) {
2712 .mxchat-pinecone-info-box {
2713 flex-direction: column;
2714 gap: 10px;
2715 }
2716
2717 .mxchat-toggle-container {
2718 flex-direction: column;
2719 align-items: flex-start;
2720 gap: 8px;
2721 }
2722
2723 .mxchat-form-group input[type="text"],
2724 .mxchat-form-group input[type="password"] {
2725 max-width: 100%;
2726 }
2727
2728 .mxchat-pinecone-settings {
2729 padding: 15px;
2730 }
2731
2732 .mxchat-pinecone-setup-help,
2733 .mxchat-pinecone-status-section {
2734 padding: 15px;
2735 }
2736 }
2737
2738
2739 /* Setup Steps */
2740 .mxchat-setup-steps {
2741 margin: 30px 0;
2742 padding: 20px;
2743 background: #fff;
2744 border-radius: 10px;
2745 }
2746
2747 .mxchat-setup-step {
2748 display: flex;
2749 align-items: flex-start;
2750 margin-bottom: 20px;
2751 }
2752
2753 .step-number {
2754 background: linear-gradient(135deg, #fa73e6, #7873f5);
2755 color: white;
2756 width: 28px;
2757 height: 28px;
2758 border-radius: 50%;
2759 display: flex;
2760 align-items: center;
2761 justify-content: center;
2762 font-weight: bold;
2763 margin-right: 15px;
2764 flex-shrink: 0;
2765 }
2766
2767 .step-content {
2768 flex: 1;
2769 }
2770
2771 .step-content h4 {
2772 margin: 0 0 5px 0;
2773 }
2774
2775 .step-content p {
2776 margin: 0;
2777 color: #666;
2778 }
2779
2780 .step-content ul {
2781 margin-top: 5px;
2782 margin-bottom: 0;
2783 color: #666;
2784 }
2785
2786
2787
2788 /* ===== Role-Based Content Restrictions Styles ===== */
2789
2790 /* Role mapping form */
2791 .mxchat-role-mapping-form {
2792 margin-top: 20px;
2793 padding: 20px;
2794 background-color: #f8f9ff;
2795 border-radius: 8px;
2796 border: 1px solid rgba(120, 115, 245, 0.1);
2797 }
2798
2799 .mxchat-role-mapping-form h4 {
2800 margin-top: 0;
2801 margin-bottom: 15px;
2802 font-size: 16px;
2803 color: #333;
2804 }
2805
2806 .mxchat-form-row {
2807 display: flex;
2808 gap: 15px;
2809 align-items: flex-end;
2810 margin-bottom: 20px;
2811 }
2812
2813 /* Role mappings table */
2814 .mxchat-mappings-table {
2815 width: 100%;
2816 border-collapse: collapse;
2817 margin-top: 15px;
2818 background: #fff;
2819 box-shadow: 0 1px 3px rgba(120, 115, 245, 0.08);
2820 border-radius: 8px;
2821 overflow: hidden;
2822 }
2823
2824 .mxchat-mappings-table th,
2825 .mxchat-mappings-table td {
2826 padding: 15px;
2827 text-align: left;
2828 border-bottom: 1px solid rgba(120, 115, 245, 0.1);
2829 }
2830
2831 .mxchat-mappings-table th {
2832 background: #f8f9ff;
2833 font-weight: 600;
2834 color: #333;
2835 font-size: 14px;
2836 }
2837
2838 .mxchat-mappings-table tbody tr {
2839 transition: background-color 0.2s ease;
2840 }
2841
2842 .mxchat-mappings-table tbody tr:hover {
2843 background: rgba(120, 115, 245, 0.03);
2844 }
2845
2846 .mxchat-mappings-table tbody tr:last-child td {
2847 border-bottom: none;
2848 }
2849
2850 /* Tag and role badges */
2851 .mxchat-tag-badge {
2852 display: inline-flex;
2853 align-items: center;
2854 gap: 5px;
2855 padding: 5px 12px;
2856 background: linear-gradient(135deg, #fa73e6, #7873f5);
2857 color: #fff;
2858 border-radius: 4px;
2859 font-size: 13px;
2860 font-weight: 500;
2861 }
2862
2863 .mxchat-tag-badge .dashicons {
2864 font-size: 16px;
2865 width: 16px;
2866 height: 16px;
2867 }
2868
2869 .mxchat-role-badge {
2870 display: inline-block;
2871 padding: 5px 12px;
2872 background: #f0f0f1;
2873 color: #2c3338;
2874 border-radius: 4px;
2875 font-size: 13px;
2876 font-weight: 500;
2877 }
2878
2879 /* Role-specific badge colors */
2880 .mxchat-role-badge.public {
2881 background: #e8f5e9;
2882 color: #2e7d32;
2883 }
2884
2885 .mxchat-role-badge.logged_in {
2886 background: #e3f2fd;
2887 color: #1565c0;
2888 }
2889
2890 .mxchat-role-badge.subscriber {
2891 background: #f3e5f5;
2892 color: #7b1fa2;
2893 }
2894
2895 .mxchat-role-badge.contributor {
2896 background: #fff3e0;
2897 color: #e65100;
2898 }
2899
2900 .mxchat-role-badge.author {
2901 background: #fff9c4;
2902 color: #f57f17;
2903 }
2904
2905 .mxchat-role-badge.editor {
2906 background: #fce4ec;
2907 color: #c2185b;
2908 }
2909
2910 .mxchat-role-badge.administrator {
2911 background: #ffebee;
2912 color: #c62828;
2913 }
2914
2915 /* Mapping actions */
2916 .mxchat-mapping-actions {
2917 display: flex;
2918 gap: 8px;
2919 align-items: center;
2920 }
2921
2922 .mxchat-delete-mapping {
2923 color: #d63638;
2924 cursor: pointer;
2925 padding: 6px 10px;
2926 border-radius: 4px;
2927 transition: all 0.2s ease;
2928 display: inline-flex;
2929 align-items: center;
2930 gap: 4px;
2931 background: transparent;
2932 border: none;
2933 font-size: 13px;
2934 }
2935
2936 .mxchat-delete-mapping:hover {
2937 background: #fef0f0;
2938 color: #b32d2e;
2939 }
2940
2941 .mxchat-delete-mapping .dashicons {
2942 font-size: 18px;
2943 width: 18px;
2944 height: 18px;
2945 }
2946
2947 /* Post count display */
2948 .mxchat-post-count {
2949 color: #666;
2950 font-size: 13px;
2951 display: flex;
2952 align-items: center;
2953 gap: 4px;
2954 }
2955
2956 .mxchat-post-count .dashicons {
2957 font-size: 16px;
2958 width: 16px;
2959 height: 16px;
2960 color: #7873f5;
2961 }
2962
2963 /* Loading state for mappings */
2964 .mxchat-loading-mappings {
2965 text-align: center;
2966 padding: 40px;
2967 color: #666;
2968 }
2969
2970 .mxchat-role-spinner {
2971 display: inline-block;
2972 width: 20px;
2973 height: 20px;
2974 border: 2px solid rgba(120, 115, 245, 0.2);
2975 border-top: 2px solid #7873f5;
2976 border-radius: 50%;
2977 animation: mxchat-role-spin 1s linear infinite;
2978 margin-right: 10px;
2979 }
2980
2981 .mxchat-role-spinner.is-active {
2982 display: inline-block;
2983 }
2984
2985 @keyframes mxchat-role-spin {
2986 0% { transform: rotate(0deg); }
2987 100% { transform: rotate(360deg); }
2988 }
2989
2990 /* Empty state */
2991 #mxchat-no-mappings {
2992 text-align: center;
2993 padding: 40px;
2994 color: #666;
2995 }
2996
2997 #mxchat-no-mappings .dashicons {
2998 font-size: 48px;
2999 opacity: 0.3;
3000 margin-bottom: 15px;
3001 display: block;
3002 }
3003
3004 #mxchat-no-mappings p {
3005 margin: 0;
3006 font-size: 14px;
3007 }
3008
3009 /* Bulk update section */
3010 .mxchat-bulk-update-section {
3011 margin-top: 30px;
3012 padding-top: 30px;
3013 border-top: 1px solid rgba(120, 115, 245, 0.1);
3014 }
3015
3016 .mxchat-bulk-update-section h4 {
3017 margin-top: 0;
3018 margin-bottom: 10px;
3019 font-size: 16px;
3020 color: #333;
3021 }
3022
3023 .mxchat-bulk-update-controls {
3024 margin-top: 15px;
3025 }
3026
3027 #mxchat-bulk-update-roles {
3028 display: inline-flex;
3029 align-items: center;
3030 gap: 8px;
3031 }
3032
3033 #mxchat-bulk-update-progress {
3034 max-width: 600px;
3035 }
3036
3037 #mxchat-bulk-update-progress .mxchat-progress-bar {
3038 height: 10px;
3039 background: rgba(120, 115, 245, 0.1);
3040 border-radius: 5px;
3041 overflow: hidden;
3042 }
3043
3044 #mxchat-bulk-update-progress .mxchat-progress-fill {
3045 height: 100%;
3046 background: linear-gradient(135deg, #fa73e6, #7873f5);
3047 transition: width 0.3s ease;
3048 }
3049
3050 .mxchat-progress-text {
3051 margin-top: 10px;
3052 color: #666;
3053 font-size: 14px;
3054 }
3055
3056 /* Bulk update results */
3057 #mxchat-bulk-update-result {
3058 margin-top: 15px;
3059 padding: 15px;
3060 border-radius: 8px;
3061 }
3062
3063 #mxchat-bulk-update-result.success {
3064 background-color: #f0f9eb;
3065 border-left: 4px solid #67c23a;
3066 color: #3c763d;
3067 }
3068
3069 #mxchat-bulk-update-result.error {
3070 background-color: #fef0f0;
3071 border-left: 4px solid #d63638;
3072 color: #a94442;
3073 }
3074
3075 #mxchat-bulk-update-result h5 {
3076 margin: 0 0 10px;
3077 font-size: 15px;
3078 font-weight: 600;
3079 }
3080
3081 #mxchat-bulk-update-result p {
3082 margin: 5px 0;
3083 font-size: 14px;
3084 }
3085
3086 /* Role mappings list container */
3087 .mxchat-role-mappings-list {
3088 margin-top: 25px;
3089 }
3090
3091 .mxchat-role-mappings-list h4 {
3092 margin-top: 0;
3093 margin-bottom: 15px;
3094 font-size: 16px;
3095 color: #333;
3096 }
3097
3098 /* Info banner styling (reuse existing pattern) */
3099 .mxchat-role-info-banner {
3100 display: flex;
3101 align-items: center;
3102 gap: 10px;
3103 padding: 12px 16px;
3104 margin-bottom: 20px;
3105 border-radius: 6px;
3106 font-size: 14px;
3107 background: #f8f9ff;
3108 border-left: 4px solid #7873f5;
3109 color: #333;
3110 }
3111
3112 .mxchat-role-info-banner .dashicons {
3113 color: #7873f5;
3114 font-size: 18px;
3115 }
3116
3117 /* Responsive adjustments */
3118 @media screen and (max-width: 782px) {
3119 .mxchat-form-row {
3120 flex-direction: column;
3121 align-items: stretch;
3122 }
3123
3124 .mxchat-form-row .mxchat-form-group {
3125 flex: 1;
3126 max-width: none;
3127 }
3128
3129 .mxchat-form-row > div {
3130 padding-bottom: 0;
3131 }
3132
3133 .mxchat-mappings-table {
3134 display: block;
3135 overflow-x: auto;
3136 }
3137
3138 .mxchat-mappings-table th,
3139 .mxchat-mappings-table td {
3140 padding: 10px;
3141 font-size: 13px;
3142 }
3143
3144 .mxchat-mapping-actions {
3145 flex-direction: column;
3146 align-items: flex-start;
3147 }
3148 }
3149
3150 /* RTL Support */
3151 .rtl .mxchat-mappings-table th,
3152 .rtl .mxchat-mappings-table td {
3153 text-align: right;
3154 }
3155
3156 .rtl .mxchat-tag-badge {
3157 flex-direction: row-reverse;
3158 }
3159
3160 .rtl .mxchat-role-info-banner {
3161 border-left: none;
3162 border-right: 4px solid #7873f5;
3163 }
3164
3165 .rtl .mxchat-bulk-update-section {
3166 border-right: none;
3167 }
3168
3169 .rtl #mxchat-bulk-update-result {
3170 border-left: none;
3171 border-right: 4px solid;
3172 }
3173
3174 .rtl .mxchat-role-spinner {
3175 margin-right: 0;
3176 margin-left: 10px;
3177 }
3178
3179 /* ===== Chunk Grouping Styles ===== */
3180 .mxchat-chunk-group-header {
3181 background: rgba(120, 115, 245, 0.04) !important;
3182 border-left: 3px solid #7873f5;
3183 }
3184
3185 .mxchat-chunk-group-header:hover {
3186 background: rgba(120, 115, 245, 0.08) !important;
3187 }
3188
3189 .mxchat-chunk-group-info {
3190 display: flex;
3191 align-items: center;
3192 gap: 12px;
3193 }
3194
3195 .mxchat-chunk-toggle {
3196 flex-shrink: 0;
3197 width: 28px;
3198 height: 28px;
3199 border: none;
3200 background: linear-gradient(135deg, rgba(250, 115, 230, 0.1), rgba(120, 115, 245, 0.1));
3201 border-radius: 6px;
3202 cursor: pointer;
3203 display: inline-flex;
3204 align-items: center;
3205 justify-content: center;
3206 transition: all 0.3s ease;
3207 padding: 0;
3208 }
3209
3210 .mxchat-chunk-toggle:hover {
3211 background: linear-gradient(135deg, rgba(250, 115, 230, 0.2), rgba(120, 115, 245, 0.2));
3212 transform: scale(1.05);
3213 }
3214
3215 .mxchat-chunk-toggle .dashicons {
3216 font-size: 16px;
3217 color: #7873f5;
3218 transition: transform 0.3s ease;
3219 }
3220
3221 .mxchat-chunk-toggle.expanded .dashicons {
3222 transform: rotate(90deg);
3223 }
3224
3225 .mxchat-chunk-badge {
3226 display: inline-flex;
3227 align-items: center;
3228 padding: 4px 10px;
3229 background: linear-gradient(135deg, #7873f5, #3ac9d1);
3230 color: white;
3231 border-radius: 12px;
3232 font-size: 12px;
3233 font-weight: 600;
3234 white-space: nowrap;
3235 }
3236
3237 .mxchat-chunk-preview {
3238 flex: 1;
3239 color: #666;
3240 font-size: 13px;
3241 overflow: hidden;
3242 text-overflow: ellipsis;
3243 white-space: nowrap;
3244 }
3245
3246 .mxchat-chunk-row {
3247 border-left: 3px solid #e0e0e0;
3248 }
3249
3250 .mxchat-chunk-row td:first-child {
3251 padding-left: 30px !important;
3252 }
3253
3254 .mxchat-chunk-indicator {
3255 display: inline-flex;
3256 align-items: center;
3257 padding: 2px 8px;
3258 background: #f0f0f0;
3259 color: #666;
3260 border-radius: 4px;
3261 font-size: 11px;
3262 font-weight: 500;
3263 }
3264
3265 .mxchat-chunk-label {
3266 color: #999;
3267 font-size: 12px;
3268 font-style: italic;
3269 }
3270
3271 /* Delete button for chunk groups */
3272 .delete-button-group {
3273 background: none;
3274 border: none;
3275 cursor: pointer;
3276 padding: 4px;
3277 border-radius: 4px;
3278 transition: all 0.2s ease;
3279 }
3280
3281 .delete-button-group:hover {
3282 background: rgba(255, 0, 0, 0.1);
3283 }
3284
3285 .delete-button-group .dashicons {
3286 color: #dc3545;
3287 }
3288
3289 .delete-button-group .dashicons.spin {
3290 animation: mxchat-spin 1s linear infinite;
3291 }
3292
3293 @keyframes mxchat-spin {
3294 from { transform: rotate(0deg); }
3295 to { transform: rotate(360deg); }
3296 }
3297
3298 /* ===== Sitemap Detection Styles ===== */
3299 .dashicons.spin {
3300 animation: mxchat-spin 1s linear infinite;
3301 }
3302
3303 .mxchat-sitemap-group.expanded .mxchat-sitemap-sub-list {
3304 display: block !important;
3305 }
3306
3307 .mxchat-sitemap-group.expanded .dashicons-arrow-right-alt2 {
3308 transform: rotate(90deg) !important;
3309 }
3310
3311 .mxchat-sitemap-row:last-child {
3312 border-bottom: none !important;
3313 }
3314
3315 .mxchat-detected-sitemaps {
3316 margin-top: 24px;
3317 }
3318
3319 .mxchat-sitemaps-header {
3320 display: flex;
3321 align-items: center;
3322 justify-content: space-between;
3323 margin-bottom: 16px;
3324 }
3325
3326 .mxchat-sitemaps-header h4 {
3327 margin: 0;
3328 display: flex;
3329 align-items: center;
3330 gap: 8px;
3331 }
3332
3333 .mxchat-sitemaps-header h4 .dashicons {
3334 color: #7873f5;
3335 }
3336
3337 .mxchat-sitemap-group {
3338 margin-bottom: 16px;
3339 border: 1px solid rgba(120, 115, 245, 0.2);
3340 border-radius: 8px;
3341 overflow: hidden;
3342 }
3343
3344 .mxchat-sitemap-group-header {
3345 padding: 12px 16px;
3346 background: #f8fafc;
3347 display: flex;
3348 align-items: center;
3349 justify-content: space-between;
3350 cursor: pointer;
3351 transition: background-color 0.2s ease;
3352 }
3353
3354 .mxchat-sitemap-group-header:hover {
3355 background: #f0f4f8;
3356 }
3357
3358 .mxchat-sitemap-sub-list {
3359 display: none;
3360 border-top: 1px solid rgba(120, 115, 245, 0.2);
3361 }
3362
3363 .mxchat-sitemap-row {
3364 padding: 12px 16px;
3365 display: flex;
3366 align-items: center;
3367 justify-content: space-between;
3368 border-bottom: 1px solid rgba(120, 115, 245, 0.1);
3369 }
3370
3371 .mxchat-sitemap-row.sub-item {
3372 padding-left: 40px;
3373 }
3374
3375 .mxchat-sitemaps-loading {
3376 margin-top: 24px;
3377 padding: 20px;
3378 text-align: center;
3379 }
3380
3381 .mxchat-sitemaps-loading .dashicons {
3382 font-size: 20px;
3383 color: #7873f5;
3384 }
3385
3386 .mxchat-sitemaps-loading p {
3387 margin: 8px 0 0;
3388 color: #666;
3389 }
3390
3391 .mxchat-no-sitemaps {
3392 margin-top: 24px;
3393 padding: 20px;
3394 background: #f8fafc;
3395 border-radius: 8px;
3396 text-align: center;
3397 }
3398
3399 .mxchat-no-sitemaps .dashicons {
3400 font-size: 24px;
3401 color: #999;
3402 margin-bottom: 8px;
3403 }
3404
3405 .mxchat-no-sitemaps p {
3406 margin: 0;
3407 color: #666;
3408 }
3409
3410 /* ===== Admin Notice Dismiss Button Styles ===== */
3411 .notice.is-dismissible {
3412 position: relative;
3413 padding-right: 38px;
3414 }
3415
3416 .notice-dismiss {
3417 position: absolute;
3418 top: 50%;
3419 right: 8px;
3420 transform: translateY(-50%);
3421 padding: 0;
3422 background: none;
3423 border: none;
3424 cursor: pointer;
3425 color: #787c82;
3426 width: 24px;
3427 height: 24px;
3428 display: flex;
3429 align-items: center;
3430 justify-content: center;
3431 transition: color 0.2s ease;
3432 }
3433
3434 .notice-dismiss:hover {
3435 color: #d63638;
3436 }
3437
3438 .notice-dismiss:before {
3439 content: "\f153";
3440 font-family: dashicons;
3441 font-size: 16px;
3442 line-height: 1;
3443 }
3444
3445 .notice-dismiss .screen-reader-text {
3446 position: absolute;
3447 width: 1px;
3448 height: 1px;
3449 padding: 0;
3450 margin: -1px;
3451 overflow: hidden;
3452 clip: rect(0, 0, 0, 0);
3453 white-space: nowrap;
3454 border: 0;
3455 }
3456
3457 /* ===== AJAX Pagination Styles ===== */
3458 .mxchat-kb-pagination-wrapper {
3459 background: #f8fafc;
3460 }
3461
3462 .mxchat-ajax-pagination {
3463 display: flex;
3464 align-items: center;
3465 justify-content: center;
3466 gap: 8px;
3467 flex-wrap: wrap;
3468 }
3469
3470 .mxchat-page-link {
3471 display: inline-flex;
3472 align-items: center;
3473 justify-content: center;
3474 min-width: 36px;
3475 height: 36px;
3476 padding: 0 12px;
3477 background: #fff;
3478 border: 1px solid var(--mxch-card-border, #e5e7eb);
3479 border-radius: 6px;
3480 color: var(--mxch-text-primary, #1f2937);
3481 text-decoration: none;
3482 font-size: 13px;
3483 font-weight: 500;
3484 transition: all 0.2s ease;
3485 cursor: pointer;
3486 }
3487
3488 .mxchat-page-link:hover {
3489 background: var(--mxch-primary, #7873f5);
3490 border-color: var(--mxch-primary, #7873f5);
3491 color: #fff;
3492 text-decoration: none;
3493 }
3494
3495 .mxchat-page-link.loading {
3496 opacity: 0.6;
3497 pointer-events: none;
3498 }
3499
3500 .mxchat-page-current {
3501 display: inline-flex;
3502 align-items: center;
3503 justify-content: center;
3504 min-width: 36px;
3505 height: 36px;
3506 padding: 0 12px;
3507 background: var(--mxch-primary, #7873f5);
3508 border: 1px solid var(--mxch-primary, #7873f5);
3509 border-radius: 6px;
3510 color: #fff;
3511 font-size: 13px;
3512 font-weight: 600;
3513 }
3514
3515 .mxchat-page-dots {
3516 display: inline-flex;
3517 align-items: center;
3518 justify-content: center;
3519 min-width: 24px;
3520 height: 36px;
3521 color: var(--mxch-text-muted, #9ca3af);
3522 font-size: 14px;
3523 }
3524
3525 .mxchat-pagination-loading {
3526 margin-left: 12px;
3527 }
3528
3529 .mxchat-pagination-loading .dashicons {
3530 color: var(--mxch-primary, #7873f5);
3531 }
3532
3533 /* Spin animation for loading indicator */
3534 @keyframes mxchat-spin {
3535 from { transform: rotate(0deg); }
3536 to { transform: rotate(360deg); }
3537 }
3538
3539 .mxchat-pagination-loading .spin,
3540 .mxchat-ajax-pagination .spin {
3541 animation: mxchat-spin 1s linear infinite;
3542 }
3543
3544 /* Mobile responsive pagination */
3545 @media (max-width: 600px) {
3546 .mxchat-ajax-pagination {
3547 gap: 4px;
3548 }
3549
3550 .mxchat-page-link,
3551 .mxchat-page-current {
3552 min-width: 32px;
3553 height: 32px;
3554 padding: 0 8px;
3555 font-size: 12px;
3556 }
3557
3558 .mxchat-page-dots {
3559 min-width: 20px;
3560 }
3561 }
3562
3563 /* ========================================
3564 BULK SELECTION STYLES
3565 ======================================== */
3566
3567 /* Bulk Actions Toolbar */
3568 .mxchat-bulk-toolbar {
3569 display: flex;
3570 align-items: center;
3571 gap: 12px;
3572 padding: 12px 16px;
3573 background: #f8fafc;
3574 border: 1px solid var(--mxch-card-border);
3575 border-bottom: none;
3576 border-radius: var(--mxch-radius-md) var(--mxch-radius-md) 0 0;
3577 }
3578
3579 .mxchat-bulk-select-label {
3580 display: flex;
3581 align-items: center;
3582 gap: 6px;
3583 font-size: 13px;
3584 color: var(--mxch-text-secondary);
3585 cursor: pointer;
3586 }
3587
3588 .mxchat-bulk-select-label:hover {
3589 color: var(--mxch-text-primary);
3590 }
3591
3592 .mxchat-entry-checkbox,
3593 .mxchat-entry-checkbox-all {
3594 width: 16px;
3595 height: 16px;
3596 cursor: pointer;
3597 accent-color: var(--mxch-primary, #7873f5);
3598 }
3599
3600 .mxchat-bulk-actions {
3601 display: flex;
3602 align-items: center;
3603 gap: 8px;
3604 margin-left: auto;
3605 }
3606
3607 .mxchat-bulk-delete {
3608 display: flex;
3609 align-items: center;
3610 gap: 6px;
3611 color: var(--mxch-error, #dc2626) !important;
3612 border-color: #fecaca !important;
3613 background: transparent !important;
3614 }
3615
3616 .mxchat-bulk-delete:hover:not(:disabled) {
3617 background: #fef2f2 !important;
3618 border-color: #fca5a5 !important;
3619 }
3620
3621 .mxchat-bulk-delete:disabled {
3622 opacity: 0.5;
3623 cursor: not-allowed;
3624 }
3625
3626 .mxchat-selected-count {
3627 font-size: 12px;
3628 color: var(--mxch-primary, #7873f5);
3629 font-weight: 600;
3630 margin-left: 4px;
3631 }
3632
3633 /* Delete container - holds Delete All form and Delete Selected button */
3634 .mxchat-delete-container {
3635 display: flex;
3636 align-items: center;
3637 }
3638
3639 /* Selected row highlighting */
3640 #mxchat-records-table tr.selected {
3641 background-color: rgba(120, 115, 245, 0.05) !important;
3642 }
3643
3644 #mxchat-records-table tr.selected td:first-child {
3645 position: relative;
3646 }
3647
3648 #mxchat-records-table tr.selected td:first-child::before {
3649 content: '';
3650 position: absolute;
3651 left: 0;
3652 top: 0;
3653 bottom: 0;
3654 width: 3px;
3655 background: var(--mxch-primary, #7873f5);
3656 }
3657
3658 /* Deleting state */
3659 tr.mxchat-row-deleting {
3660 opacity: 0.5;
3661 pointer-events: none;
3662 }
3663
3664 /* Error state for failed deletions */
3665 tr.mxchat-row-error {
3666 background-color: rgba(220, 38, 38, 0.05) !important;
3667 }
3668
3669 tr.mxchat-row-error td:first-child {
3670 position: relative;
3671 }
3672
3673 tr.mxchat-row-error td:first-child::before {
3674 content: '';
3675 position: absolute;
3676 left: 0;
3677 top: 0;
3678 bottom: 0;
3679 width: 3px;
3680 background: var(--mxch-error, #dc2626);
3681 }
3682
3683 /* Spin animation for loading states */
3684 .spin {
3685 animation: mxchat-spin 1s linear infinite;
3686 }
3687
3688 /* Responsive adjustments for bulk toolbar */
3689 @media (max-width: 768px) {
3690 .mxchat-bulk-toolbar {
3691 flex-wrap: wrap;
3692 gap: 8px;
3693 }
3694
3695 .mxchat-bulk-delete-text {
3696 display: none;
3697 }
3698
3699 .mxchat-bulk-actions {
3700 margin-left: 0;
3701 }
3702 }
3703
3704 /* ==========================================================================
3705 Knowledge Base - Mobile Responsive
3706 ========================================================================== */
3707
3708 /* Desktop defaults for KB header controls */
3709 .mxch-kb-header-controls {
3710 display: flex;
3711 gap: 10px;
3712 align-items: center;
3713 }
3714
3715 .mxch-kb-search-form {
3716 display: flex;
3717 gap: 10px;
3718 }
3719
3720 .mxch-kb-search-input {
3721 width: 200px;
3722 }
3723
3724 .mxch-kb-type-filter {
3725 width: auto;
3726 }
3727
3728 /* Mobile: Knowledge Base card header stacks vertically */
3729 @media screen and (max-width: 960px) {
3730 /* Stack card header vertically */
3731 #knowledge-base .mxch-card-header {
3732 flex-direction: column;
3733 align-items: stretch;
3734 gap: 12px;
3735 padding: 12px 16px;
3736 }
3737
3738 /* Title row wraps badges */
3739 #knowledge-base .mxch-card-title {
3740 flex-wrap: wrap;
3741 font-size: 14px;
3742 }
3743
3744 /* Controls stack vertically */
3745 .mxch-kb-header-controls {
3746 flex-direction: column;
3747 align-items: stretch;
3748 gap: 8px;
3749 width: 100%;
3750 }
3751
3752 /* Search form wraps */
3753 .mxch-kb-search-form {
3754 flex-wrap: wrap;
3755 gap: 8px;
3756 width: 100%;
3757 }
3758
3759 /* Search input takes full width */
3760 .mxch-kb-search-input {
3761 width: 100% !important;
3762 flex: 1;
3763 min-width: 0;
3764 }
3765
3766 /* Filter dropdown takes full width */
3767 .mxch-kb-type-filter {
3768 width: 100% !important;
3769 flex: 1;
3770 min-width: 0;
3771 }
3772
3773 /* Delete container full width */
3774 .mxchat-delete-container {
3775 width: 100%;
3776 }
3777
3778 .mxchat-delete-container form,
3779 .mxchat-delete-container .mxchat-bulk-delete {
3780 width: 100%;
3781 }
3782
3783 .mxchat-delete-container .mxch-btn {
3784 width: 100%;
3785 justify-content: center;
3786 }
3787
3788 /* Table: hide ID and Source columns on mobile to save space */
3789 .mxchat-records-table th:nth-child(2),
3790 .mxchat-records-table td:nth-child(2) {
3791 display: none;
3792 }
3793
3794 .mxchat-records-table th:nth-child(4),
3795 .mxchat-records-table td:nth-child(4) {
3796 display: none;
3797 }
3798
3799 /* Content column needs more room */
3800 .mxchat-content-cell {
3801 max-width: none !important;
3802 }
3803
3804 /* Table cells padding */
3805 .mxchat-records-table th,
3806 .mxchat-records-table td {
3807 padding: 10px 8px !important;
3808 }
3809
3810 /* Pagination wraps nicely */
3811 .mxchat-ajax-pagination {
3812 flex-wrap: wrap;
3813 justify-content: center;
3814 }
3815 }
3816
3817 /* Small mobile: further adjustments */
3818 @media screen and (max-width: 480px) {
3819 #knowledge-base .mxch-card-header {
3820 padding: 10px 12px;
3821 }
3822
3823 #knowledge-base .mxch-card-title {
3824 font-size: 13px;
3825 }
3826
3827 /* Search form items fully stacked */
3828 .mxch-kb-search-form {
3829 flex-direction: column;
3830 }
3831
3832 /* Smaller table text */
3833 .mxchat-records-table {
3834 font-size: 12px;
3835 }
3836
3837 .mxchat-records-table th,
3838 .mxchat-records-table td {
3839 padding: 8px 6px !important;
3840 }
3841
3842 /* Also hide Actions header text but keep the column for delete buttons */
3843 .mxchat-records-table th:nth-child(5) {
3844 font-size: 0;
3845 padding: 8px 4px !important;
3846 width: 40px;
3847 }
3848 }
3849
3850 /* ─── Edit Entry Modal ─── */
3851
3852 .mxchat-edit-entry-btn {
3853 color: var(--mxch-primary, #7873f5);
3854 }
3855 .mxchat-edit-entry-btn:hover {
3856 color: var(--mxch-primary-dark, #5b56d6);
3857 background: rgba(120, 115, 245, 0.08);
3858 }
3859
3860 .mxchat-kb-edit-modal-content {
3861 max-width: 760px;
3862 /* Same viewport-safe cap as the content-selector modal (vh = fallback). */
3863 max-height: 90vh;
3864 max-height: min(90vh, calc(100dvh - 24px));
3865 }
3866
3867 .mxchat-kb-edit-body {
3868 flex: 1 1 auto;
3869 /* min-height: 0 lets the body shrink inside the capped modal box so the
3870 footer (Save/Cancel) can never be pushed below the viewport. */
3871 min-height: 0;
3872 display: flex;
3873 flex-direction: column;
3874 padding: 20px;
3875 overflow: hidden;
3876 gap: 12px;
3877 }
3878
3879 .mxchat-kb-edit-source {
3880 font-size: 12px;
3881 color: var(--mxch-text-muted, #6b7280);
3882 word-break: break-all;
3883 }
3884 .mxchat-kb-edit-source a {
3885 color: var(--mxch-primary, #7873f5);
3886 text-decoration: none;
3887 }
3888
3889 .mxchat-kb-edit-textarea {
3890 flex: 1;
3891 min-height: 300px;
3892 max-height: 55vh;
3893 width: 100%;
3894 padding: 14px;
3895 border: 1px solid var(--mxch-input-border, #d1d5db);
3896 border-radius: 8px;
3897 font-size: 14px;
3898 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3899 line-height: 1.6;
3900 resize: vertical;
3901 color: var(--mxch-text-primary, #1a1a2e);
3902 background: var(--mxch-input-bg, #fff);
3903 box-sizing: border-box;
3904 transition: border-color 0.2s;
3905 }
3906 .mxchat-kb-edit-textarea:focus {
3907 outline: none;
3908 border-color: var(--mxch-primary, #7873f5);
3909 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
3910 }
3911
3912 .mxchat-kb-edit-meta {
3913 display: flex;
3914 justify-content: space-between;
3915 font-size: 12px;
3916 color: var(--mxch-text-muted, #6b7280);
3917 }
3918
3919 .mxchat-kb-edit-footer {
3920 display: flex;
3921 align-items: center;
3922 justify-content: space-between;
3923 padding: 14px 20px;
3924 border-top: 1px solid #e5e5e5;
3925 gap: 12px;
3926 /* Action row can never be squeezed out of the box. */
3927 flex-shrink: 0;
3928 }
3929
3930 .mxchat-kb-edit-notice {
3931 flex: 1;
3932 font-size: 13px;
3933 }
3934 .mxchat-kb-edit-notice.success { color: #16a34a; }
3935 .mxchat-kb-edit-notice.error { color: #dc2626; }
3936
3937 .mxchat-kb-edit-actions {
3938 display: flex;
3939 gap: 8px;
3940 flex-shrink: 0;
3941 }
3942
3943 /* ── Knowledge Inspector modal (plan-d8cb4b) ──────────────────────────
3944 Read-only "View indexed content" viewer. Reuses the Testing tab's
3945 match-card / chunk-detail components (admin-testing-tab.css, scoped under
3946 .mxch-testing-results) so it looks native; this block only adds the modal
3947 body scroll + the chunk-text container the Testing tab doesn't have. */
3948 .mxchat-kb-inspect-body {
3949 flex: 1 1 auto;
3950 /* Same footer-pushout guard as the edit modal. */
3951 min-height: 0;
3952 display: flex;
3953 flex-direction: column;
3954 padding: 20px;
3955 overflow-y: auto;
3956 gap: 12px;
3957 }
3958 /* The modal body is the scroll container — let the inner results grow naturally
3959 instead of the Testing tab's own 400px inner scroll (avoids a double scrollbar). */
3960 .mxchat-kb-inspect-body .mxch-testing-results {
3961 max-height: none;
3962 overflow: visible;
3963 }
3964 .mxch-kb-inspect-chunk-text {
3965 margin: 8px 0 0;
3966 padding: 12px 14px;
3967 background: #f8fafc;
3968 border: 1px solid #e2e8f0;
3969 border-radius: 6px;
3970 max-height: 260px;
3971 overflow-y: auto;
3972 white-space: pre-wrap;
3973 word-break: break-word;
3974 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
3975 font-size: 13px;
3976 line-height: 1.6;
3977 color: var(--mxch-text-primary, #334155);
3978 }
3979
3980 .mxchat-kb-edit-save-spinner {
3981 display: inline-flex;
3982 align-items: center;
3983 gap: 6px;
3984 }
3985
3986 @media (max-width: 782px) {
3987 .mxchat-kb-edit-modal-content {
3988 width: 96%;
3989 max-width: 96%;
3990 margin: 10px auto;
3991 max-height: calc(100vh - 20px);
3992 max-height: calc(100dvh - 20px);
3993 }
3994 .mxchat-kb-edit-body {
3995 padding: 14px;
3996 }
3997 .mxchat-kb-edit-textarea {
3998 min-height: 200px;
3999 font-size: 15px;
4000 }
4001 .mxchat-kb-edit-footer {
4002 flex-direction: column;
4003 align-items: stretch;
4004 }
4005 .mxchat-kb-edit-actions {
4006 justify-content: stretch;
4007 }
4008 .mxchat-kb-edit-actions .mxch-btn {
4009 flex: 1;
4010 text-align: center;
4011 }
4012 }
4013 /* ==========================================================================
4014 Custom Meta-key discovery picker (plan-mxchat-20260709-fe8e4e)
4015 Canon-token chip picker mirroring the ACF discovery UX for non-ACF meta.
4016 ========================================================================== */
4017 .mxchat-meta-scan-controls {
4018 display: flex;
4019 align-items: center;
4020 flex-wrap: wrap;
4021 gap: 12px;
4022 margin-bottom: 12px;
4023 }
4024 #mxchat-scan-meta-btn {
4025 display: inline-flex;
4026 align-items: center;
4027 gap: 8px;
4028 }
4029 .mxchat-meta-scan-internal {
4030 display: inline-flex;
4031 align-items: center;
4032 gap: 6px;
4033 font-size: 13px;
4034 color: var(--mxch-text-secondary, #64748b);
4035 cursor: pointer;
4036 }
4037 .mxchat-meta-scan-loading,
4038 .mxchat-meta-scan-empty {
4039 font-size: 13px;
4040 color: var(--mxch-text-secondary, #64748b);
4041 margin: 8px 0 0;
4042 }
4043 .mxchat-meta-chip-grid {
4044 display: grid;
4045 grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
4046 gap: 10px;
4047 margin-top: 12px;
4048 }
4049 .mxchat-meta-chip {
4050 display: flex;
4051 flex-direction: column;
4052 align-items: flex-start;
4053 gap: 4px;
4054 text-align: left;
4055 width: 100%;
4056 padding: 10px 12px;
4057 background: var(--mxch-card-bg, #fff);
4058 border: 1px solid var(--mxch-card-border, #e2e8f0);
4059 border-radius: var(--mxch-radius-md, 8px);
4060 cursor: pointer;
4061 transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
4062 }
4063 .mxchat-meta-chip:hover {
4064 border-color: var(--mxch-primary, #7873f5);
4065 box-shadow: 0 1px 4px rgba(120, 115, 245, 0.15);
4066 }
4067 .mxchat-meta-chip-main {
4068 display: flex;
4069 align-items: baseline;
4070 flex-wrap: wrap;
4071 gap: 8px;
4072 }
4073 .mxchat-meta-chip-name {
4074 font-weight: 600;
4075 color: var(--mxch-text-primary, #1a1a2e);
4076 font-size: 13px;
4077 }
4078 .mxchat-meta-chip-key {
4079 font-family: monospace;
4080 font-size: 11px;
4081 color: var(--mxch-text-muted, #94a3b8);
4082 background: #f1f5f9;
4083 padding: 1px 6px;
4084 border-radius: 4px;
4085 }
4086 .mxchat-meta-chip-meta {
4087 font-size: 11px;
4088 color: var(--mxch-text-muted, #94a3b8);
4089 white-space: nowrap;
4090 overflow: hidden;
4091 text-overflow: ellipsis;
4092 max-width: 100%;
4093 }
4094 .mxchat-meta-chip-tick {
4095 font-size: 11px;
4096 font-weight: 600;
4097 color: var(--mxch-primary, #7873f5);
4098 margin-top: 2px;
4099 }
4100 .mxchat-meta-chip.is-added {
4101 border-color: var(--mxch-success, #10b981);
4102 background: rgba(16, 185, 129, 0.06);
4103 cursor: default;
4104 }
4105 .mxchat-meta-chip.is-added .mxchat-meta-chip-tick {
4106 color: var(--mxch-success, #10b981);
4107 }
4108 @media (max-width: 782px) {
4109 .mxchat-meta-chip-grid {
4110 grid-template-columns: 1fr;
4111 }
4112 }
4113
4114 /* ==========================================================================
4115 Re-import affected entries (plan 89739b)
4116 Layout only. Every colour, radius and space is a shell token; the badges,
4117 notices, progress bar and disclosure are the shell's own.
4118 ========================================================================== */
4119 .mxch-kb-reimport [hidden] {
4120 display: none;
4121 }
4122 .mxch-kb-reimport-controls {
4123 display: flex;
4124 align-items: flex-end;
4125 flex-wrap: wrap;
4126 gap: var(--mxch-spacing-md);
4127 margin-top: var(--mxch-spacing-lg);
4128 }
4129 .mxch-kb-reimport-controls .mxch-field {
4130 flex: 0 0 220px;
4131 margin-bottom: 0;
4132 }
4133 .mxch-kb-reimport .mxch-btn[disabled] {
4134 opacity: 0.55;
4135 cursor: default;
4136 }
4137 .mxch-kb-reimport-progress,
4138 .mxch-kb-reimport-error {
4139 margin-top: var(--mxch-spacing-lg);
4140 }
4141 .mxch-kb-reimport-progress .mxch-progress-label {
4142 margin-bottom: 0;
4143 }
4144 .mxch-kb-reimport-results {
4145 margin-top: var(--mxch-spacing-lg);
4146 padding-top: var(--mxch-spacing-lg);
4147 border-top: 1px solid var(--mxch-card-border);
4148 }
4149 .mxch-kb-reimport-done {
4150 margin-bottom: var(--mxch-spacing-md);
4151 }
4152 .mxch-kb-reimport-counts {
4153 display: flex;
4154 flex-wrap: wrap;
4155 gap: var(--mxch-spacing-sm);
4156 }
4157 .mxch-kb-reimport-list {
4158 list-style: none;
4159 margin: var(--mxch-spacing-md) 0 0;
4160 padding: 0;
4161 max-height: 336px;
4162 overflow-y: auto;
4163 border: 1px solid var(--mxch-card-border);
4164 border-radius: var(--mxch-radius-md);
4165 }
4166 .mxch-kb-reimport-list li {
4167 display: flex;
4168 align-items: center;
4169 justify-content: space-between;
4170 gap: var(--mxch-spacing-md);
4171 margin: 0;
4172 padding: var(--mxch-spacing-sm) var(--mxch-spacing-md);
4173 border-top: 1px solid var(--mxch-card-border);
4174 font-size: 13px;
4175 line-height: 1.5;
4176 }
4177 .mxch-kb-reimport-list li:first-child {
4178 border-top: 0;
4179 }
4180 .mxch-kb-reimport-source {
4181 min-width: 0;
4182 overflow-wrap: anywhere;
4183 color: var(--mxch-text-primary);
4184 }
4185 .mxch-kb-reimport-note {
4186 display: block;
4187 font-size: 12px;
4188 color: var(--mxch-text-secondary);
4189 }
4190 .mxch-kb-reimport-reasons {
4191 display: flex;
4192 flex-wrap: wrap;
4193 justify-content: flex-end;
4194 gap: var(--mxch-spacing-xs);
4195 flex-shrink: 0;
4196 }
4197 .mxch-kb-reimport-notes {
4198 margin-top: var(--mxch-spacing-sm);
4199 border: 0;
4200 border-radius: 0;
4201 }
4202 .mxch-kb-reimport-notes li {
4203 padding-left: 0;
4204 padding-right: 0;
4205 }
4206 .mxch-kb-reimport-footer {
4207 display: flex;
4208 align-items: center;
4209 flex-wrap: wrap;
4210 gap: var(--mxch-spacing-sm) var(--mxch-spacing-md);
4211 }
4212 .mxch-kb-reimport-footer .mxch-field-hint {
4213 margin-top: 0;
4214 }
4215 @media (max-width: 600px) {
4216 .mxch-kb-reimport-controls .mxch-field {
4217 flex-basis: 100%;
4218 }
4219 .mxch-kb-reimport-controls .mxch-btn {
4220 width: 100%;
4221 justify-content: center;
4222 }
4223 .mxch-kb-reimport-list li {
4224 flex-direction: column;
4225 align-items: flex-start;
4226 gap: var(--mxch-spacing-xs);
4227 }
4228 .mxch-kb-reimport-reasons {
4229 justify-content: flex-start;
4230 }
4231 .mxch-kb-reimport-list {
4232 max-height: 480px;
4233 }
4234 }
4235