PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.22
MxChat – AI Chatbot & Content Generation for WordPress v3.2.22
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.22, at css/knowledge-style.css

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