PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / trunk
MxChat – AI Chatbot & Content Generation for WordPress vtrunk
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
mxchat-basic / css / knowledge-style.css

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

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