PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.2.19
MxChat – AI Chatbot & Content Generation for WordPress v3.2.19
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 / actions.css

actions.css in MxChat – AI Chatbot & Content Generation for WordPress 3.2.19, at css/actions.css

2,309 lines 52.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* ==========================================================================
2 MxChat Actions Page Styles - v2.0
3 Uses admin-sidebar.css for core layout/navigation styles
4 ========================================================================== */
5
6 /* ==========================================================================
7 Override parent content padding for split panel view
8 ========================================================================== */
9 .mxch-content:has(#all-actions.mxch-section.active),
10 .mxch-content:has(#ai-tools.mxch-section.active) {
11 padding: 0 !important;
12 overflow: hidden;
13 }
14
15 #all-actions.mxch-section,
16 #ai-tools.mxch-section {
17 padding: 0;
18 margin: 0;
19 height: calc(100vh - 32px); /* Account for WP admin bar */
20 overflow: hidden;
21 }
22
23 /* AI Tools keeps an extra #mxch-fc-settings wrapper (autosave nonce + JS target),
24 so unlike #all-actions its split panel is NOT a direct child of the section.
25 Make the wrapper a layout-neutral full-height flex column so the split panel sits
26 edge-to-edge identical to Trigger Phrases (plan 183856). A model-not-capable or
27 Brave-key notice, when present, stacks above (with a small inset so it isn't flush
28 to the viewport edge) and the split panel flexes to fill the remaining height. */
29 #mxch-fc-settings {
30 display: flex;
31 flex-direction: column;
32 height: 100%;
33 overflow: hidden;
34 }
35 #mxch-fc-settings > .mxch-split-panel {
36 flex: 1 1 auto;
37 min-height: 0;
38 }
39 #mxch-fc-settings > .mxch-notice {
40 margin-top: 16px;
41 margin-left: 16px;
42 margin-right: 16px;
43 }
44
45 /* Fixed-viewport content for the split-panel tabs (All Actions + AI Tools — their
46 inner list + detail panels scroll independently). The Dashboard tab keeps the
47 shared scrollable .mxch-content from admin-sidebar.css (flex:1 + overflow-y:auto)
48 so it scrolls normally on desktop AND mobile — previously this rule was unscoped
49 and forced overflow:hidden on every tab, clipping tall content with no scroll
50 (worst on mobile). plan a41dee fix; AI Tools added for full-bleed parity (plan 183856). */
51 .mxch-actions-wrapper .mxch-content:has(#all-actions.mxch-section.active),
52 .mxch-actions-wrapper .mxch-content:has(#ai-tools.mxch-section.active) {
53 height: calc(100vh - 32px);
54 overflow: hidden;
55 }
56
57 .mxch-actions-wrapper {
58 height: calc(100vh - 32px);
59 }
60
61 /* ==========================================================================
62 Stats Grid
63 ========================================================================== */
64 .mxch-stats-grid {
65 display: grid;
66 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
67 gap: var(--mxch-spacing-lg);
68 margin-bottom: var(--mxch-spacing-xl);
69 }
70
71 .mxch-stat-card {
72 background: var(--mxch-card-bg);
73 border: 1px solid var(--mxch-card-border);
74 border-radius: var(--mxch-radius-lg);
75 padding: var(--mxch-spacing-lg);
76 display: flex;
77 align-items: center;
78 gap: var(--mxch-spacing-md);
79 transition: all var(--mxch-transition);
80 }
81
82 .mxch-stat-card:hover {
83 box-shadow: var(--mxch-card-shadow-hover);
84 transform: translateY(-2px);
85 }
86
87 .mxch-stat-icon {
88 width: 48px;
89 height: 48px;
90 border-radius: var(--mxch-radius-md);
91 display: flex;
92 align-items: center;
93 justify-content: center;
94 flex-shrink: 0;
95 }
96
97 .mxch-stat-icon svg {
98 width: 24px;
99 height: 24px;
100 }
101
102 .mxch-stat-icon-primary {
103 background: rgba(120, 115, 245, 0.1);
104 color: var(--mxch-primary);
105 }
106
107 .mxch-stat-icon-success {
108 background: rgba(16, 185, 129, 0.1);
109 color: var(--mxch-success);
110 }
111
112 .mxch-stat-icon-info {
113 background: rgba(59, 130, 246, 0.1);
114 color: var(--mxch-info);
115 }
116
117 .mxch-stat-icon-warning {
118 background: rgba(245, 158, 11, 0.1);
119 color: var(--mxch-warning);
120 }
121
122 .mxch-stat-content {
123 display: flex;
124 flex-direction: column;
125 }
126
127 .mxch-stat-value {
128 font-size: 28px;
129 font-weight: 700;
130 color: var(--mxch-text-primary);
131 line-height: 1.2;
132 }
133
134 .mxch-stat-label {
135 font-size: 13px;
136 color: var(--mxch-text-secondary);
137 margin-top: 2px;
138 }
139
140 /* ==========================================================================
141 Quick Actions
142 ========================================================================== */
143 .mxch-quick-actions {
144 display: flex;
145 flex-wrap: wrap;
146 gap: var(--mxch-spacing-md);
147 }
148
149 .mxch-quick-action-btn {
150 display: flex;
151 align-items: center;
152 gap: var(--mxch-spacing-sm);
153 padding: var(--mxch-spacing-md) var(--mxch-spacing-lg);
154 background: #f8fafc;
155 border: 1px solid var(--mxch-card-border);
156 border-radius: var(--mxch-radius-md);
157 color: var(--mxch-text-primary);
158 font-size: 14px;
159 font-weight: 500;
160 cursor: pointer;
161 transition: all var(--mxch-transition-fast);
162 }
163
164 .mxch-quick-action-btn:hover {
165 background: var(--mxch-primary);
166 border-color: var(--mxch-primary);
167 color: white;
168 }
169
170 .mxch-quick-action-btn svg {
171 flex-shrink: 0;
172 }
173
174 /* ==========================================================================
175 Info Section - What are Actions
176 ========================================================================== */
177 .mxch-info-section {
178 background: var(--mxch-card-bg);
179 border: 1px solid var(--mxch-card-border);
180 border-radius: var(--mxch-radius-lg);
181 padding: var(--mxch-spacing-lg);
182 margin-top: var(--mxch-spacing-lg);
183 }
184
185 .mxch-info-section-header {
186 display: flex;
187 align-items: center;
188 gap: var(--mxch-spacing-sm);
189 margin-bottom: var(--mxch-spacing-md);
190 }
191
192 .mxch-info-section-icon {
193 display: flex;
194 align-items: center;
195 justify-content: center;
196 width: 40px;
197 height: 40px;
198 background: var(--mxch-primary);
199 border-radius: 10px;
200 color: white;
201 flex-shrink: 0;
202 }
203
204 .mxch-info-section-title {
205 font-size: 18px;
206 font-weight: 600;
207 color: var(--mxch-text-primary);
208 margin: 0;
209 }
210
211 .mxch-info-section-desc {
212 font-size: 14px;
213 line-height: 1.7;
214 color: var(--mxch-text-secondary);
215 margin: 0 0 var(--mxch-spacing-lg) 0;
216 }
217
218 .mxch-info-features {
219 display: grid;
220 grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
221 gap: var(--mxch-spacing-md);
222 }
223
224 .mxch-info-feature {
225 display: flex;
226 gap: var(--mxch-spacing-sm);
227 padding: var(--mxch-spacing-md);
228 background: #f9fafb;
229 border: 1px solid var(--mxch-card-border);
230 border-radius: var(--mxch-radius-md);
231 }
232
233 .mxch-info-feature-icon {
234 display: flex;
235 align-items: center;
236 justify-content: center;
237 width: 36px;
238 height: 36px;
239 background: var(--mxch-primary);
240 border-radius: 8px;
241 color: white;
242 flex-shrink: 0;
243 }
244
245 .mxch-info-feature-content {
246 display: flex;
247 flex-direction: column;
248 gap: 2px;
249 }
250
251 .mxch-info-feature-title {
252 font-size: 14px;
253 font-weight: 600;
254 color: var(--mxch-text-primary);
255 }
256
257 .mxch-info-feature-desc {
258 font-size: 12px;
259 color: var(--mxch-text-secondary);
260 line-height: 1.5;
261 }
262
263 /* ==========================================================================
264 Actions landing — "two ways to set up" explainer (plan 8bbf98)
265 AI Tools (recommended) vs Trigger Phrases, side by side.
266 ========================================================================== */
267 .mxch-approach-grid {
268 display: grid;
269 grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
270 gap: var(--mxch-spacing-md);
271 margin-bottom: var(--mxch-spacing-md);
272 }
273
274 .mxch-approach-card {
275 display: flex;
276 flex-direction: column;
277 background: #f9fafb;
278 border: 1px solid var(--mxch-card-border);
279 border-radius: var(--mxch-radius-md);
280 padding: var(--mxch-spacing-lg);
281 }
282
283 .mxch-approach-card-primary {
284 background: var(--mxch-primary-light);
285 border-color: var(--mxch-primary);
286 }
287
288 .mxch-approach-card-head {
289 display: flex;
290 align-items: center;
291 gap: var(--mxch-spacing-sm);
292 margin-bottom: var(--mxch-spacing-md);
293 }
294
295 .mxch-approach-icon {
296 display: flex;
297 align-items: center;
298 justify-content: center;
299 width: 40px;
300 height: 40px;
301 background: var(--mxch-primary);
302 border-radius: 10px;
303 color: #fff;
304 flex-shrink: 0;
305 }
306
307 .mxch-approach-icon-muted {
308 background: var(--mxch-text-secondary);
309 }
310
311 .mxch-approach-titles {
312 display: flex;
313 align-items: center;
314 gap: var(--mxch-spacing-sm);
315 flex-wrap: wrap;
316 }
317
318 .mxch-approach-title {
319 font-size: 16px;
320 font-weight: 600;
321 color: var(--mxch-text-primary);
322 margin: 0;
323 }
324
325 .mxch-approach-pill {
326 display: inline-flex;
327 align-items: center;
328 font-size: 11px;
329 font-weight: 600;
330 text-transform: uppercase;
331 letter-spacing: 0.4px;
332 padding: 2px 8px;
333 border-radius: 999px;
334 background: var(--mxch-primary);
335 color: #fff;
336 }
337
338 .mxch-approach-desc {
339 font-size: 13px;
340 line-height: 1.6;
341 color: var(--mxch-text-secondary);
342 margin: 0 0 var(--mxch-spacing-md) 0;
343 flex: 1 1 auto;
344 }
345
346 .mxch-approach-btn {
347 align-self: flex-start;
348 }
349
350 .mxch-approach-note {
351 display: flex;
352 align-items: flex-start;
353 gap: var(--mxch-spacing-sm);
354 padding: var(--mxch-spacing-md);
355 background: #f9fafb;
356 border: 1px dashed var(--mxch-card-border);
357 border-radius: var(--mxch-radius-md);
358 font-size: 13px;
359 line-height: 1.6;
360 color: var(--mxch-text-secondary);
361 }
362
363 .mxch-approach-note svg {
364 flex-shrink: 0;
365 color: var(--mxch-primary);
366 margin-top: 1px;
367 }
368
369 .mxch-approach-note strong {
370 color: var(--mxch-text-primary);
371 }
372
373 /* ==========================================================================
374 Empty Text
375 ========================================================================== */
376 .mxch-empty-text {
377 font-size: 13px;
378 color: var(--mxch-text-secondary);
379 text-align: center;
380 padding: var(--mxch-spacing-md);
381 margin: 0;
382 background: rgba(120, 115, 245, 0.1);
383 padding: 2px 10px;
384 border-radius: 12px;
385 }
386
387 .mxch-empty-text {
388 color: #9ca3af;
389 font-size: 13px;
390 text-align: center;
391 padding: 20px;
392 }
393
394 /* ==========================================================================
395 Split Panel Layout - Action List + Editor
396 ========================================================================== */
397 .mxch-split-panel {
398 display: flex;
399 height: 100%;
400 background: #fff;
401 border: none;
402 border-radius: 0;
403 overflow: hidden;
404 }
405
406 /* Left Panel - Action List */
407 .mxch-action-list-panel {
408 width: 360px;
409 min-width: 300px;
410 max-width: 440px;
411 display: flex;
412 height: 100%;
413 overflow: hidden;
414 flex-direction: column;
415 border-right: 1px solid #e5e7eb;
416 background: #fff;
417 }
418
419 /* Bulk Actions Toolbar */
420 .mxch-bulk-toolbar {
421 display: flex;
422 align-items: center;
423 gap: 8px;
424 padding: 10px 12px;
425 background: #f8fafc;
426 border-bottom: 1px solid #e5e7eb;
427 }
428
429 .mxch-bulk-select-all {
430 display: flex;
431 align-items: center;
432 gap: 6px;
433 font-size: 12px;
434 color: #6b7280;
435 cursor: pointer;
436 }
437
438 .mxch-bulk-select-all input[type="checkbox"] {
439 width: 16px;
440 height: 16px;
441 cursor: pointer;
442 accent-color: #3b82f6;
443 }
444
445 .mxch-bulk-actions {
446 display: flex;
447 align-items: center;
448 gap: 4px;
449 margin-left: auto;
450 }
451
452 .mxch-bulk-btn {
453 display: flex;
454 align-items: center;
455 gap: 4px;
456 padding: 6px 10px;
457 font-size: 12px;
458 font-weight: 500;
459 background: #fff;
460 border: 1px solid #e5e7eb;
461 border-radius: 6px;
462 color: #374151;
463 cursor: pointer;
464 transition: all 0.15s;
465 }
466
467 .mxch-bulk-btn:hover {
468 background: #f3f4f6;
469 border-color: #d1d5db;
470 }
471
472 .mxch-bulk-btn.mxch-bulk-delete {
473 color: #dc2626;
474 border-color: #fecaca;
475 }
476
477 .mxch-bulk-btn.mxch-bulk-delete:hover {
478 background: #fef2f2;
479 border-color: #fca5a5;
480 }
481
482 .mxch-bulk-btn:disabled {
483 opacity: 0.5;
484 cursor: not-allowed;
485 }
486
487 .mxch-filter-select {
488 padding: 6px 10px;
489 font-size: 12px;
490 border: 1px solid #e5e7eb;
491 border-radius: 6px;
492 background: #fff;
493 color: #374151;
494 cursor: pointer;
495 max-width: 140px;
496 }
497
498 .mxch-selected-count {
499 font-size: 11px;
500 color: #3b82f6;
501 font-weight: 600;
502 padding: 2px 8px;
503 background: #eff6ff;
504 border-radius: 10px;
505 display: none;
506 }
507
508 .mxch-selected-count.has-selection {
509 display: inline-block;
510 }
511
512 .mxch-panel-header {
513 padding: 0;
514 border-bottom: 1px solid #e5e7eb;
515 }
516
517 .mxch-panel-title-row {
518 display: flex;
519 align-items: center;
520 justify-content: space-between;
521 padding: 10px 12px;
522 border-bottom: 1px solid #f3f4f6;
523 }
524
525 .mxch-panel-count {
526 font-size: 12px;
527 font-weight: 600;
528 color: #374151;
529 }
530
531 .mxch-panel-actions {
532 display: flex;
533 gap: 4px;
534 }
535
536 .mxch-icon-btn {
537 width: 32px;
538 height: 32px;
539 border: none;
540 background: transparent;
541 color: #6b7280;
542 border-radius: 6px;
543 cursor: pointer;
544 display: flex;
545 align-items: center;
546 justify-content: center;
547 transition: all 0.15s;
548 }
549
550 .mxch-icon-btn:hover {
551 background: #f3f4f6;
552 color: #374151;
553 }
554
555 .mxch-btn-danger-icon:hover {
556 background: #fef2f2;
557 color: #dc2626;
558 }
559
560 .mxch-icon-btn.spinning svg {
561 animation: spin 0.5s linear;
562 }
563
564 @keyframes spin {
565 from { transform: rotate(0deg); }
566 to { transform: rotate(360deg); }
567 }
568
569 /* Search */
570 .mxch-search-wrapper {
571 position: relative;
572 background: #fff;
573 }
574
575 .mxch-search-wrapper svg {
576 position: absolute;
577 left: 12px;
578 top: 50%;
579 transform: translateY(-50%);
580 color: #9ca3af;
581 pointer-events: none;
582 width: 14px;
583 height: 14px;
584 z-index: 1;
585 }
586
587 .mxch-search-input {
588 width: 100%;
589 padding: 10px 12px 10px 34px;
590 border: none;
591 border-radius: 0;
592 font-size: 13px;
593 background: #fff;
594 transition: all 0.15s;
595 box-sizing: border-box;
596 }
597
598 .mxch-search-input:focus {
599 outline: none;
600 background: #fff;
601 box-shadow: none;
602 }
603
604 .mxch-search-input::placeholder {
605 color: #9ca3af;
606 }
607
608 /* Action List */
609 .mxch-action-list {
610 flex: 1;
611 overflow-y: auto;
612 overflow-x: hidden;
613 min-height: 0; /* Important for flex children to allow scroll */
614 }
615
616 .mxch-action-item {
617 display: flex;
618 align-items: center;
619 gap: 10px;
620 padding: 12px;
621 cursor: pointer;
622 border-bottom: 1px solid #f3f4f6;
623 transition: background 0.15s;
624 position: relative;
625 }
626
627 .mxch-action-item:hover {
628 background: #f9fafb;
629 }
630
631 .mxch-action-item.active {
632 background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
633 border-left: 3px solid var(--mxch-primary);
634 padding-left: 9px;
635 }
636
637 .mxch-action-item.selected {
638 background: #f5f3ff;
639 }
640
641 .mxch-action-item.disabled {
642 opacity: 0.6;
643 }
644
645 /* Checkbox for action items */
646 .mxch-action-checkbox {
647 width: 16px;
648 height: 16px;
649 flex-shrink: 0;
650 cursor: pointer;
651 accent-color: var(--mxch-primary);
652 opacity: 0;
653 transition: opacity 0.15s;
654 }
655
656 .mxch-action-item:hover .mxch-action-checkbox,
657 .mxch-action-item.selected .mxch-action-checkbox,
658 .mxch-action-list.selection-mode .mxch-action-checkbox {
659 opacity: 1;
660 }
661
662 .mxch-action-icon {
663 width: 36px;
664 height: 36px;
665 border-radius: 8px;
666 background: rgba(120, 115, 245, 0.1);
667 display: flex;
668 align-items: center;
669 justify-content: center;
670 flex-shrink: 0;
671 }
672
673 .mxch-action-icon .dashicons {
674 color: var(--mxch-primary);
675 font-size: 18px;
676 width: 18px;
677 height: 18px;
678 }
679
680 .mxch-action-info {
681 flex: 1;
682 min-width: 0;
683 }
684
685 .mxch-action-name {
686 font-size: 14px;
687 font-weight: 600;
688 color: #111827;
689 white-space: nowrap;
690 overflow: hidden;
691 text-overflow: ellipsis;
692 }
693
694 .mxch-action-type-label {
695 font-size: 12px;
696 color: #6b7280;
697 white-space: nowrap;
698 overflow: hidden;
699 text-overflow: ellipsis;
700 margin-top: 2px;
701 }
702
703 .mxch-action-meta {
704 display: flex;
705 flex-direction: column;
706 align-items: flex-end;
707 gap: 4px;
708 flex-shrink: 0;
709 }
710
711 .mxch-action-status {
712 display: inline-flex;
713 align-items: center;
714 padding: 2px 8px;
715 border-radius: 10px;
716 font-size: 10px;
717 font-weight: 600;
718 text-transform: uppercase;
719 }
720
721 .mxch-action-status.enabled {
722 background: rgba(16, 185, 129, 0.1);
723 color: #059669;
724 }
725
726 .mxch-action-status.disabled {
727 background: rgba(100, 116, 139, 0.1);
728 color: #64748b;
729 }
730
731 .mxch-list-loading,
732 .mxch-list-empty {
733 display: flex;
734 align-items: center;
735 justify-content: center;
736 padding: 40px 20px;
737 color: #9ca3af;
738 font-size: 13px;
739 }
740
741 .mxch-panel-footer {
742 padding: 8px 12px;
743 border-top: 1px solid #e5e7eb;
744 background: #f9fafb;
745 }
746
747 .mxch-pagination-btns {
748 display: flex;
749 align-items: center;
750 justify-content: center;
751 gap: 8px;
752 }
753
754 .mxch-page-btn {
755 width: 32px;
756 height: 32px;
757 border: 1px solid #e5e7eb;
758 background: #fff;
759 border-radius: 6px;
760 cursor: pointer;
761 display: flex;
762 align-items: center;
763 justify-content: center;
764 font-size: 14px;
765 color: #374151;
766 transition: all 0.15s;
767 }
768
769 .mxch-page-btn:hover {
770 background: #f3f4f6;
771 border-color: #d1d5db;
772 }
773
774 .mxch-page-info {
775 font-size: 12px;
776 color: #6b7280;
777 }
778
779 /* ==========================================================================
780 Right Panel - Action Details/Editor
781 ========================================================================== */
782 .mxch-action-detail-panel {
783 flex: 1;
784 display: flex;
785 flex-direction: column;
786 background: #f9fafb;
787 overflow: hidden;
788 height: 100%;
789 min-height: 0;
790 }
791
792 /* Empty State */
793 .mxch-action-empty {
794 flex: 1;
795 display: flex;
796 flex-direction: column;
797 align-items: center;
798 justify-content: center;
799 color: #9ca3af;
800 text-align: center;
801 padding: 40px;
802 }
803
804 .mxch-empty-icon {
805 margin-bottom: 16px;
806 opacity: 0.5;
807 }
808
809 .mxch-action-empty h3 {
810 font-size: 16px;
811 font-weight: 600;
812 color: #6b7280;
813 margin: 0 0 8px 0;
814 }
815
816 .mxch-action-empty p {
817 font-size: 13px;
818 margin: 0 0 20px 0;
819 }
820
821 /* ==========================================================================
822 Editor Steps
823 ========================================================================== */
824 .mxch-action-editor {
825 display: flex;
826 flex-direction: column;
827 height: 100%;
828 overflow: hidden;
829 min-height: 0;
830 }
831
832 .mxch-editor-step {
833 display: none;
834 flex-direction: column;
835 height: 100%;
836 overflow: hidden;
837 min-height: 0;
838 }
839
840 .mxch-editor-step.active {
841 display: flex;
842 }
843
844 .mxch-editor-header {
845 display: flex;
846 align-items: center;
847 gap: 12px;
848 padding: 16px 20px;
849 background: #fff;
850 border-bottom: 1px solid #e5e7eb;
851 flex-shrink: 0;
852 }
853
854 .mxch-editor-title {
855 flex: 1;
856 font-size: 16px;
857 font-weight: 600;
858 color: #111827;
859 margin: 0;
860 }
861
862 .mxch-header-actions {
863 display: flex;
864 align-items: center;
865 gap: 8px;
866 }
867
868 .mxch-editor-close {
869 width: 32px;
870 height: 32px;
871 border: none;
872 background: transparent;
873 color: #6b7280;
874 border-radius: 6px;
875 cursor: pointer;
876 display: flex;
877 align-items: center;
878 justify-content: center;
879 transition: all 0.15s;
880 }
881
882 .mxch-editor-close:hover {
883 background: #f3f4f6;
884 color: #111827;
885 }
886
887 .mxch-back-btn {
888 display: flex;
889 align-items: center;
890 gap: 6px;
891 padding: 6px 12px;
892 font-size: 13px;
893 font-weight: 500;
894 background: transparent;
895 border: none;
896 color: var(--mxch-primary);
897 cursor: pointer;
898 transition: all 0.15s;
899 }
900
901 .mxch-back-btn:hover {
902 color: #6366f1;
903 }
904
905 /* Type Search & Categories */
906 .mxch-type-search {
907 position: relative;
908 padding: 16px 20px;
909 background: #fff;
910 border-bottom: 1px solid #e5e7eb;
911 }
912
913 .mxch-type-search svg {
914 position: absolute;
915 left: 32px;
916 top: 50%;
917 transform: translateY(-50%);
918 color: #9ca3af;
919 pointer-events: none;
920 }
921
922 .mxch-type-search input {
923 width: 100%;
924 padding: 10px 12px 10px 40px;
925 border: 1px solid #e5e7eb;
926 border-radius: 8px;
927 font-size: 14px;
928 background: #f9fafb;
929 transition: all 0.15s;
930 }
931
932 .mxch-type-search input:focus {
933 outline: none;
934 border-color: var(--mxch-primary);
935 background: #fff;
936 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
937 }
938
939 .mxch-type-categories {
940 display: flex;
941 gap: 8px;
942 padding: 12px 20px;
943 background: #fff;
944 border-bottom: 1px solid #e5e7eb;
945 flex-wrap: wrap;
946 }
947
948 .mxch-category-btn {
949 padding: 6px 14px;
950 font-size: 13px;
951 font-weight: 500;
952 background: #f3f4f6;
953 border: 1px solid transparent;
954 border-radius: 20px;
955 color: #6b7280;
956 cursor: pointer;
957 transition: all 0.15s;
958 }
959
960 .mxch-category-btn:hover {
961 background: #e5e7eb;
962 color: #374151;
963 }
964
965 .mxch-category-btn.active {
966 background: var(--mxch-primary);
967 color: #fff;
968 }
969
970 /* Types Grid */
971 .mxch-types-grid {
972 display: grid;
973 grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
974 gap: 12px;
975 padding: 20px;
976 flex: 1;
977 overflow-y: auto;
978 overflow-x: hidden;
979 align-content: start;
980 min-height: 0;
981 }
982
983 .mxch-type-card {
984 display: flex;
985 align-items: center;
986 gap: 14px;
987 padding: 14px;
988 background: #fff;
989 border: 1px solid #e5e7eb;
990 border-radius: 10px;
991 cursor: pointer;
992 transition: all 0.15s;
993 }
994
995 .mxch-type-card:hover {
996 border-color: var(--mxch-primary);
997 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.1);
998 transform: translateY(-2px);
999 }
1000
1001 .mxch-type-card.selected {
1002 border-color: var(--mxch-primary);
1003 background: #f5f3ff;
1004 }
1005
1006 .mxch-type-card.mxch-type-pro {
1007 opacity: 0.7;
1008 }
1009
1010 .mxch-type-card.mxch-type-addon {
1011 opacity: 0.7;
1012 }
1013
1014 .mxch-type-icon {
1015 width: 44px;
1016 height: 44px;
1017 border-radius: 10px;
1018 background: rgba(120, 115, 245, 0.1);
1019 display: flex;
1020 align-items: center;
1021 justify-content: center;
1022 flex-shrink: 0;
1023 }
1024
1025 .mxch-type-icon .dashicons {
1026 color: var(--mxch-primary);
1027 font-size: 22px;
1028 width: 22px;
1029 height: 22px;
1030 }
1031
1032 .mxch-type-pro .mxch-type-icon {
1033 background: linear-gradient(135deg, #7873f5, #fa73e6);
1034 }
1035
1036 .mxch-type-pro .mxch-type-icon .dashicons {
1037 color: #fff;
1038 }
1039
1040 .mxch-type-info {
1041 flex: 1;
1042 min-width: 0;
1043 }
1044
1045 .mxch-type-info h4 {
1046 font-size: 14px;
1047 font-weight: 600;
1048 color: #111827;
1049 margin: 0 0 4px 0;
1050 }
1051
1052 .mxch-type-info p {
1053 font-size: 12px;
1054 color: #6b7280;
1055 margin: 0;
1056 line-height: 1.4;
1057 }
1058
1059 .mxch-badge {
1060 display: inline-block;
1061 padding: 2px 8px;
1062 border-radius: 10px;
1063 font-size: 10px;
1064 font-weight: 600;
1065 margin-top: 6px;
1066 }
1067
1068 .mxch-badge-pro {
1069 background: linear-gradient(135deg, #7873f5, #fa73e6);
1070 color: #fff;
1071 }
1072
1073 .mxch-badge-addon {
1074 background: rgba(245, 158, 11, 0.1);
1075 color: #b45309;
1076 }
1077
1078 /* ==========================================================================
1079 Step 2 - Configure Action
1080 ========================================================================== */
1081 .mxch-selected-type {
1082 display: flex;
1083 align-items: center;
1084 gap: 14px;
1085 padding: 16px 20px;
1086 background: #f5f3ff;
1087 border-bottom: 1px solid #e5e7eb;
1088 }
1089
1090 .mxch-selected-type-icon {
1091 width: 44px;
1092 height: 44px;
1093 border-radius: 10px;
1094 background: rgba(120, 115, 245, 0.2);
1095 display: flex;
1096 align-items: center;
1097 justify-content: center;
1098 flex-shrink: 0;
1099 }
1100
1101 .mxch-selected-type-icon .dashicons {
1102 color: var(--mxch-primary);
1103 font-size: 22px;
1104 width: 22px;
1105 height: 22px;
1106 }
1107
1108 .mxch-selected-type-info {
1109 flex: 1;
1110 }
1111
1112 .mxch-selected-type-info h4 {
1113 font-size: 15px;
1114 font-weight: 600;
1115 color: #111827;
1116 margin: 0 0 4px 0;
1117 }
1118
1119 .mxch-selected-type-info p {
1120 font-size: 13px;
1121 color: #6b7280;
1122 margin: 0;
1123 }
1124
1125 /* Form Styles */
1126 #mxch-action-form {
1127 flex: 1;
1128 display: flex;
1129 flex-direction: column;
1130 padding: 20px;
1131 overflow-y: auto;
1132 overflow-x: hidden;
1133 background: #fff;
1134 min-height: 0;
1135 }
1136
1137 .mxch-form-group {
1138 margin-bottom: 20px;
1139 }
1140
1141 .mxch-form-group label {
1142 display: flex;
1143 align-items: center;
1144 justify-content: space-between;
1145 margin-bottom: 8px;
1146 font-size: 14px;
1147 font-weight: 600;
1148 color: #374151;
1149 }
1150
1151 .mxch-form-group input[type="text"],
1152 .mxch-form-group textarea {
1153 width: 100%;
1154 padding: 12px 14px;
1155 border: 1px solid #e5e7eb;
1156 border-radius: 8px;
1157 font-size: 14px;
1158 background: #f9fafb;
1159 transition: all 0.15s;
1160 box-sizing: border-box;
1161 }
1162
1163 .mxch-form-group input[type="text"]:focus,
1164 .mxch-form-group textarea:focus {
1165 outline: none;
1166 border-color: var(--mxch-primary);
1167 background: #fff;
1168 box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
1169 }
1170
1171 .mxch-form-group textarea {
1172 resize: vertical;
1173 min-height: 100px;
1174 }
1175
1176 .mxch-form-hint {
1177 font-size: 12px;
1178 color: #9ca3af;
1179 margin-top: 6px;
1180 }
1181
1182 /* Threshold Slider */
1183 .mxch-threshold-value {
1184 font-size: 14px;
1185 font-weight: 600;
1186 color: var(--mxch-primary);
1187 background: rgba(120, 115, 245, 0.1);
1188 padding: 2px 8px;
1189 border-radius: 6px;
1190 }
1191
1192 .mxch-form-group input[type="range"] {
1193 width: 100%;
1194 height: 6px;
1195 border-radius: 3px;
1196 background: rgba(120, 115, 245, 0.2);
1197 outline: none;
1198 -webkit-appearance: none;
1199 margin: 10px 0;
1200 }
1201
1202 .mxch-form-group input[type="range"]::-webkit-slider-thumb {
1203 -webkit-appearance: none;
1204 width: 18px;
1205 height: 18px;
1206 border-radius: 50%;
1207 background: linear-gradient(135deg, #7873f5, #fa73e6);
1208 cursor: pointer;
1209 border: 2px solid #fff;
1210 box-shadow: 0 2px 6px rgba(120, 115, 245, 0.3);
1211 }
1212
1213 .mxch-form-group input[type="range"]::-moz-range-thumb {
1214 width: 18px;
1215 height: 18px;
1216 border-radius: 50%;
1217 background: linear-gradient(135deg, #7873f5, #fa73e6);
1218 cursor: pointer;
1219 border: 2px solid #fff;
1220 box-shadow: 0 2px 6px rgba(120, 115, 245, 0.3);
1221 }
1222
1223 /* Bot Selector */
1224 .mxch-bot-selector {
1225 display: flex;
1226 flex-direction: column;
1227 gap: 10px;
1228 }
1229
1230 .mxch-checkbox-label {
1231 display: flex;
1232 align-items: center;
1233 gap: 10px;
1234 font-size: 14px;
1235 color: #374151;
1236 cursor: pointer;
1237 padding: 10px 14px;
1238 background: #f9fafb;
1239 border-radius: 8px;
1240 border: 1px solid #e5e7eb;
1241 transition: all 0.15s;
1242 }
1243
1244 .mxch-checkbox-label:hover {
1245 background: #f3f4f6;
1246 border-color: #d1d5db;
1247 }
1248
1249 .mxch-checkbox-label input[type="checkbox"] {
1250 width: 18px;
1251 height: 18px;
1252 accent-color: var(--mxch-primary);
1253 cursor: pointer;
1254 }
1255
1256 /* Form Actions */
1257 .mxch-form-actions {
1258 display: flex;
1259 justify-content: flex-end;
1260 gap: 10px;
1261 padding-top: 20px;
1262 margin-top: auto;
1263 border-top: 1px solid #e5e7eb;
1264 }
1265
1266 /* ==========================================================================
1267 Action View (Viewing Details)
1268 ========================================================================== */
1269 .mxch-header-actions {
1270 display: flex;
1271 align-items: center;
1272 gap: 8px;
1273 }
1274
1275 .mxch-toggle-switch {
1276 position: relative;
1277 display: inline-block;
1278 width: 44px;
1279 height: 24px;
1280 }
1281
1282 .mxch-toggle-switch input {
1283 opacity: 0;
1284 width: 0;
1285 height: 0;
1286 }
1287
1288 .mxch-toggle-slider {
1289 position: absolute;
1290 cursor: pointer;
1291 top: 0;
1292 left: 0;
1293 right: 0;
1294 bottom: 0;
1295 background-color: #d1d5db;
1296 transition: 0.3s;
1297 border-radius: 24px;
1298 }
1299
1300 .mxch-toggle-slider:before {
1301 position: absolute;
1302 content: "";
1303 height: 18px;
1304 width: 18px;
1305 left: 3px;
1306 bottom: 3px;
1307 background-color: white;
1308 transition: 0.3s;
1309 border-radius: 50%;
1310 }
1311
1312 .mxch-toggle-switch input:checked + .mxch-toggle-slider {
1313 background: linear-gradient(135deg, #7873f5, #fa73e6);
1314 }
1315
1316 .mxch-toggle-switch input:checked + .mxch-toggle-slider:before {
1317 transform: translateX(20px);
1318 }
1319
1320 .mxch-action-details {
1321 padding: 20px;
1322 flex: 1;
1323 overflow-y: auto;
1324 overflow-x: hidden;
1325 min-height: 0;
1326 }
1327
1328 .mxch-detail-card {
1329 display: flex;
1330 align-items: center;
1331 gap: 16px;
1332 padding: 16px;
1333 background: #fff;
1334 border: 1px solid #e5e7eb;
1335 border-radius: 12px;
1336 margin-bottom: 20px;
1337 }
1338
1339 .mxch-detail-icon {
1340 width: 52px;
1341 height: 52px;
1342 border-radius: 12px;
1343 background: rgba(120, 115, 245, 0.1);
1344 display: flex;
1345 align-items: center;
1346 justify-content: center;
1347 flex-shrink: 0;
1348 }
1349
1350 .mxch-detail-icon .dashicons {
1351 color: var(--mxch-primary);
1352 font-size: 26px;
1353 width: 26px;
1354 height: 26px;
1355 }
1356
1357 .mxch-detail-content h4 {
1358 font-size: 18px;
1359 font-weight: 600;
1360 color: #111827;
1361 margin: 0 0 4px 0;
1362 }
1363
1364 .mxch-detail-type {
1365 font-size: 13px;
1366 color: #6b7280;
1367 margin: 0;
1368 }
1369
1370 .mxch-detail-section {
1371 background: #fff;
1372 border: 1px solid #e5e7eb;
1373 border-radius: 12px;
1374 padding: 16px;
1375 margin-bottom: 16px;
1376 }
1377
1378 .mxch-detail-section h5 {
1379 font-size: 13px;
1380 font-weight: 600;
1381 color: #6b7280;
1382 text-transform: uppercase;
1383 letter-spacing: 0.5px;
1384 margin: 0 0 12px 0;
1385 }
1386
1387 .mxch-phrases-list {
1388 display: flex;
1389 flex-wrap: wrap;
1390 gap: 8px;
1391 }
1392
1393 .mxch-phrase-tag {
1394 display: inline-block;
1395 padding: 6px 12px;
1396 background: #f3f4f6;
1397 border-radius: 6px;
1398 font-size: 13px;
1399 color: #374151;
1400 }
1401
1402 .mxch-settings-grid {
1403 display: grid;
1404 grid-template-columns: repeat(2, 1fr);
1405 gap: 12px;
1406 }
1407
1408 .mxch-setting-item {
1409 display: flex;
1410 flex-direction: column;
1411 gap: 4px;
1412 }
1413
1414 .mxch-setting-label {
1415 font-size: 12px;
1416 color: #9ca3af;
1417 }
1418
1419 .mxch-setting-value {
1420 font-size: 14px;
1421 font-weight: 600;
1422 color: #111827;
1423 }
1424
1425 .mxch-setting-value.mxch-status-badge {
1426 display: inline-block;
1427 padding: 4px 10px;
1428 border-radius: 6px;
1429 font-size: 12px;
1430 width: fit-content;
1431 }
1432
1433 .mxch-setting-value.mxch-status-enabled {
1434 background: rgba(16, 185, 129, 0.1);
1435 color: #059669;
1436 }
1437
1438 .mxch-setting-value.mxch-status-disabled {
1439 background: rgba(100, 116, 139, 0.1);
1440 color: #64748b;
1441 }
1442
1443 .mxch-bots-list {
1444 display: flex;
1445 flex-wrap: wrap;
1446 gap: 8px;
1447 }
1448
1449 .mxch-bot-tag {
1450 display: inline-flex;
1451 align-items: center;
1452 gap: 6px;
1453 padding: 6px 12px;
1454 background: rgba(120, 115, 245, 0.1);
1455 border-radius: 6px;
1456 font-size: 13px;
1457 color: var(--mxch-primary);
1458 font-weight: 500;
1459 }
1460
1461 /* ==========================================================================
1462 Buttons
1463 ========================================================================== */
1464 .mxch-btn {
1465 display: inline-flex;
1466 align-items: center;
1467 justify-content: center;
1468 gap: 8px;
1469 padding: 10px 18px;
1470 font-size: 14px;
1471 font-weight: 500;
1472 border-radius: 8px;
1473 cursor: pointer;
1474 transition: all 0.15s;
1475 border: none;
1476 }
1477
1478 .mxch-btn-sm {
1479 padding: 8px 14px;
1480 font-size: 13px;
1481 }
1482
1483 .mxch-btn-primary {
1484 background: linear-gradient(135deg, #7873f5, #8b5cf6);
1485 color: #fff;
1486 }
1487
1488 .mxch-btn-primary:hover {
1489 background: linear-gradient(135deg, #6366f1, #7c3aed);
1490 transform: translateY(-1px);
1491 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.3);
1492 }
1493
1494 .mxch-btn-secondary {
1495 background: #f3f4f6;
1496 color: #374151;
1497 border: 1px solid #e5e7eb;
1498 }
1499
1500 .mxch-btn-secondary:hover {
1501 background: #e5e7eb;
1502 }
1503
1504 .mxch-btn-danger {
1505 background: #dc2626;
1506 color: #fff;
1507 }
1508
1509 .mxch-btn-danger:hover {
1510 background: #b91c1c;
1511 }
1512
1513 /* ==========================================================================
1514 Loading & Modal
1515 ========================================================================== */
1516 .mxch-loading-overlay {
1517 position: fixed;
1518 top: 0;
1519 left: 0;
1520 right: 0;
1521 bottom: 0;
1522 background: rgba(0, 0, 0, 0.5);
1523 display: flex;
1524 flex-direction: column;
1525 align-items: center;
1526 justify-content: center;
1527 z-index: 100001;
1528 }
1529
1530 .mxch-loading-spinner {
1531 width: 40px;
1532 height: 40px;
1533 border-radius: 50%;
1534 border: 3px solid transparent;
1535 border-top-color: var(--mxch-primary);
1536 border-right-color: var(--mxch-primary);
1537 animation: spin 0.8s linear infinite;
1538 margin-bottom: 16px;
1539 }
1540
1541 .mxch-loading-text {
1542 color: #fff;
1543 font-size: 14px;
1544 font-weight: 500;
1545 }
1546
1547 .mxch-modal-overlay {
1548 position: fixed;
1549 top: 0;
1550 left: 0;
1551 right: 0;
1552 bottom: 0;
1553 background: rgba(0, 0, 0, 0.5);
1554 display: flex;
1555 align-items: center;
1556 justify-content: center;
1557 z-index: 100000;
1558 }
1559
1560 .mxch-modal-content {
1561 background: #fff;
1562 border-radius: 12px;
1563 width: 90%;
1564 max-width: 500px;
1565 box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
1566 }
1567
1568 .mxch-modal-sm {
1569 max-width: 400px;
1570 }
1571
1572 .mxch-modal-header {
1573 display: flex;
1574 align-items: center;
1575 justify-content: space-between;
1576 padding: 16px 20px;
1577 border-bottom: 1px solid #e5e7eb;
1578 }
1579
1580 .mxch-modal-header h2 {
1581 font-size: 16px;
1582 font-weight: 600;
1583 color: #111827;
1584 margin: 0;
1585 }
1586
1587 .mxch-modal-close {
1588 width: 32px;
1589 height: 32px;
1590 border: none;
1591 background: transparent;
1592 color: #6b7280;
1593 font-size: 24px;
1594 cursor: pointer;
1595 display: flex;
1596 align-items: center;
1597 justify-content: center;
1598 border-radius: 6px;
1599 transition: all 0.15s;
1600 }
1601
1602 .mxch-modal-close:hover {
1603 background: #f3f4f6;
1604 color: #111827;
1605 }
1606
1607 .mxch-modal-body {
1608 padding: 20px;
1609 }
1610
1611 .mxch-modal-body p {
1612 font-size: 14px;
1613 color: #6b7280;
1614 margin: 0;
1615 }
1616
1617 .mxch-modal-footer {
1618 display: flex;
1619 justify-content: flex-end;
1620 gap: 10px;
1621 padding: 16px 20px;
1622 border-top: 1px solid #e5e7eb;
1623 }
1624
1625 /* ==========================================================================
1626 Responsive
1627 ========================================================================== */
1628
1629 /* Mobile-first: Show list by default, hide detail panel until action selected */
1630 @media screen and (max-width: 782px) {
1631 /* The wrapper is position:fixed (admin-sidebar.css), so the PAGE body can't
1632 scroll it — scrolling has to happen INSIDE .mxch-content (same as desktop
1633 and every other MxChat admin page). The previous rules set the wrapper +
1634 content to height:auto + overflow:visible, which on a FIXED wrapper just
1635 pushed the overflow below the viewport with no way to reach it (the page
1636 "didn't move"). Fix: make .mxch-content the bounded internal scroll
1637 container on mobile, for every tab. plan a41dee follow-up. */
1638 .mxch-actions-wrapper {
1639 height: calc(100vh - 46px); /* WP admin bar is 46px on mobile */
1640 overflow: hidden;
1641 }
1642 .mxch-actions-wrapper .mxch-content,
1643 .mxch-actions-wrapper .mxch-content:has(#all-actions.mxch-section.active) {
1644 height: 100%;
1645 overflow-y: auto;
1646 overflow-x: hidden;
1647 -webkit-overflow-scrolling: touch;
1648 }
1649 /* The split-panel tabs flow + scroll inside the scrollable content on mobile. */
1650 #all-actions.mxch-section,
1651 #ai-tools.mxch-section {
1652 height: auto;
1653 min-height: 0;
1654 overflow: visible;
1655 }
1656 /* AI Tools wrapper flows naturally on mobile (no fixed height / flex column) so
1657 its split panel stacks + scrolls in the bounded .mxch-content (plan 183856). */
1658 #mxch-fc-settings {
1659 display: block;
1660 height: auto;
1661 overflow: visible;
1662 }
1663
1664 .mxch-split-panel {
1665 flex-direction: column;
1666 height: auto;
1667 min-height: 0;
1668 overflow: visible;
1669 }
1670
1671 /* List panel takes full width and reasonable height */
1672 .mxch-action-list-panel {
1673 width: 100%;
1674 max-width: none;
1675 min-width: 0;
1676 height: auto;
1677 max-height: none;
1678 border-right: none;
1679 border-bottom: 1px solid #e5e7eb;
1680 overflow: visible;
1681 }
1682
1683 /* Action list scrolls within container */
1684 .mxch-action-list {
1685 max-height: 50vh;
1686 min-height: 200px;
1687 overflow-y: auto;
1688 }
1689
1690 /* Detail panel hidden by default on mobile */
1691 .mxch-action-detail-panel {
1692 display: none;
1693 min-height: auto;
1694 height: auto;
1695 }
1696
1697 /* When an action is selected, show detail panel */
1698 .mxch-action-detail-panel.mobile-active {
1699 display: flex;
1700 flex-direction: column;
1701 position: fixed;
1702 top: 46px; /* Below WP admin bar */
1703 left: 0;
1704 right: 0;
1705 bottom: 0;
1706 z-index: 1000;
1707 background: #f9fafb;
1708 height: auto;
1709 }
1710
1711 /* Mobile back button */
1712 .mxch-mobile-back-btn {
1713 display: flex !important;
1714 align-items: center;
1715 gap: 6px;
1716 padding: 8px 12px;
1717 background: transparent;
1718 border: none;
1719 color: var(--mxch-primary);
1720 font-size: 14px;
1721 font-weight: 500;
1722 cursor: pointer;
1723 }
1724
1725 .mxch-mobile-back-btn:hover {
1726 background: rgba(120, 115, 245, 0.1);
1727 }
1728
1729 /* Adjust editor header for mobile */
1730 .mxch-editor-header {
1731 flex-wrap: wrap;
1732 gap: 8px;
1733 }
1734
1735 .mxch-view-header {
1736 flex-wrap: wrap;
1737 gap: 8px;
1738 padding: 12px;
1739 }
1740
1741 .mxch-view-header-actions {
1742 width: 100%;
1743 justify-content: flex-end;
1744 }
1745
1746 /* Stats grid */
1747 .mxch-stats-grid {
1748 grid-template-columns: repeat(2, 1fr);
1749 gap: var(--mxch-spacing-md);
1750 }
1751
1752 /* Type cards grid */
1753 .mxch-types-grid {
1754 grid-template-columns: 1fr;
1755 padding: 12px;
1756 }
1757
1758 .mxch-type-card {
1759 padding: 12px;
1760 }
1761
1762 /* Settings grid */
1763 .mxch-settings-grid {
1764 grid-template-columns: 1fr;
1765 }
1766
1767 /* Form actions */
1768 .mxch-form-actions {
1769 flex-direction: column-reverse;
1770 gap: 8px;
1771 }
1772
1773 .mxch-form-actions .mxch-btn {
1774 width: 100%;
1775 }
1776
1777 /* Bulk toolbar adjustments */
1778 .mxch-bulk-toolbar {
1779 flex-wrap: wrap;
1780 padding: 8px;
1781 }
1782
1783 .mxch-bulk-btn span {
1784 display: none;
1785 }
1786
1787 .mxch-filter-select {
1788 flex: 1;
1789 min-width: 120px;
1790 }
1791
1792 /* Action items tighter on mobile */
1793 .mxch-action-item,
1794 .mxch-fc-list-item {
1795 padding: 10px;
1796 }
1797
1798 .mxch-action-icon {
1799 width: 36px;
1800 height: 36px;
1801 }
1802
1803 .mxch-action-name {
1804 font-size: 13px;
1805 }
1806
1807 .mxch-action-type-label {
1808 font-size: 11px;
1809 }
1810
1811 /* Panel header adjustments */
1812 .mxch-panel-header {
1813 padding: 0;
1814 }
1815
1816 .mxch-panel-title-row {
1817 padding: 8px 10px;
1818 }
1819
1820 .mxch-search-input {
1821 padding: 8px 10px 8px 34px;
1822 }
1823
1824 /* Form padding on mobile */
1825 #mxch-action-form {
1826 padding: 12px;
1827 }
1828
1829 .mxch-action-details {
1830 padding: 12px;
1831 }
1832
1833 /* Editor step content scrollable */
1834 .mxch-editor-step.active {
1835 overflow-y: auto;
1836 }
1837
1838 /* Category buttons scroll horizontally */
1839 .mxch-category-btns {
1840 overflow-x: auto;
1841 padding: 12px;
1842 gap: 6px;
1843 flex-wrap: nowrap;
1844 }
1845
1846 .mxch-category-btn {
1847 flex-shrink: 0;
1848 padding: 6px 12px;
1849 font-size: 12px;
1850 }
1851
1852 /* Hide close button on mobile (use back button instead) */
1853 .mxch-editor-close {
1854 display: none;
1855 }
1856 }
1857
1858 /* Hide mobile back button on desktop */
1859 .mxch-mobile-back-btn {
1860 display: none;
1861 }
1862
1863 /* Prevent body scroll when mobile panel is open */
1864 body.mxch-mobile-panel-open {
1865 overflow: hidden;
1866 }
1867
1868 /* Tablet adjustments */
1869 @media screen and (min-width: 783px) and (max-width: 1024px) {
1870 .mxch-split-panel {
1871 flex-direction: column;
1872 }
1873
1874 .mxch-action-list-panel {
1875 width: 100%;
1876 max-width: none;
1877 border-right: none;
1878 border-bottom: 1px solid #e5e7eb;
1879 max-height: 350px;
1880 }
1881
1882 .mxch-action-detail-panel {
1883 flex: 1;
1884 min-height: 400px;
1885 }
1886
1887 .mxch-types-grid {
1888 grid-template-columns: repeat(2, 1fr);
1889 }
1890 }
1891
1892 /* ==========================================================================
1893 Phrase Tag Input
1894 ========================================================================== */
1895
1896 .mxch-phrase-input-wrapper {
1897 border: 1px solid var(--mxch-card-border, #e5e7eb);
1898 border-radius: 8px;
1899 padding: 10px;
1900 background: var(--mxch-card-bg, #fff);
1901 }
1902
1903 .mxch-phrase-tags {
1904 display: flex;
1905 flex-wrap: wrap;
1906 gap: 6px;
1907 margin-bottom: 8px;
1908 min-height: 28px;
1909 }
1910
1911 .mxch-phrase-tags:empty {
1912 margin-bottom: 0;
1913 }
1914
1915 .mxch-phrase-pill {
1916 display: inline-flex;
1917 align-items: center;
1918 gap: 6px;
1919 padding: 5px 10px;
1920 background: #f3f4f6;
1921 border-radius: 16px;
1922 font-size: 13px;
1923 color: #374151;
1924 border: 1px solid #e5e7eb;
1925 line-height: 1.4;
1926 max-width: 100%;
1927 word-break: break-word;
1928 }
1929
1930 .mxch-phrase-pill .mxch-phrase-remove {
1931 background: none;
1932 border: none;
1933 cursor: pointer;
1934 color: #9ca3af;
1935 font-size: 16px;
1936 line-height: 1;
1937 padding: 0 2px;
1938 flex-shrink: 0;
1939 }
1940
1941 .mxch-phrase-pill .mxch-phrase-remove:hover {
1942 color: #ef4444;
1943 }
1944
1945 /* Legacy phrase pill */
1946 .mxch-phrase-pill.mxch-phrase-legacy {
1947 background: #fef3c7;
1948 border-color: #fcd34d;
1949 color: #92400e;
1950 }
1951
1952 .mxch-legacy-badge {
1953 font-size: 10px;
1954 text-transform: uppercase;
1955 background: #f59e0b;
1956 color: #fff;
1957 padding: 1px 5px;
1958 border-radius: 4px;
1959 font-weight: 600;
1960 flex-shrink: 0;
1961 }
1962
1963 /* Legacy tag in view mode */
1964 .mxch-phrase-tag.mxch-phrase-legacy {
1965 background: #fef3c7;
1966 border: 1px solid #fcd34d;
1967 color: #92400e;
1968 }
1969
1970 .mxch-phrase-add-row {
1971 display: flex;
1972 gap: 8px;
1973 }
1974
1975 .mxch-phrase-add-row input {
1976 flex: 1;
1977 padding: 6px 10px;
1978 border: 1px solid #d1d5db;
1979 border-radius: 6px;
1980 font-size: 13px;
1981 }
1982
1983 .mxch-phrase-add-row input:focus {
1984 outline: none;
1985 border-color: #6366f1;
1986 box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
1987 }
1988
1989 .mxch-phrase-add-row .mxch-btn-sm {
1990 padding: 6px 14px;
1991 font-size: 13px;
1992 white-space: nowrap;
1993 }
1994
1995 .mxch-no-phrases {
1996 font-size: 13px;
1997 color: #9ca3af;
1998 font-style: italic;
1999 }
2000
2001 /* ============================================================
2002 * AI Tools section (native function calling) — plan a41dee
2003 * ============================================================ */
2004 .mxch-fc-intro {
2005 font-size: 14px;
2006 color: var(--mxch-text-secondary, #64748b);
2007 margin: 0 0 var(--mxch-spacing-md, 16px);
2008 line-height: 1.5;
2009 }
2010 .mxch-fc-toggle-row {
2011 display: flex;
2012 align-items: center;
2013 gap: var(--mxch-spacing-md, 16px);
2014 }
2015 .mxch-fc-toggle-row .mxch-fc-toggle-text {
2016 font-size: 14px;
2017 font-weight: 600;
2018 color: var(--mxch-text-primary, #1a1a2e);
2019 }
2020 .mxch-fc-note {
2021 display: flex;
2022 gap: 8px;
2023 align-items: flex-start;
2024 margin: var(--mxch-spacing-md, 16px) 0 0;
2025 padding: 10px 12px;
2026 border-radius: var(--mxch-radius-md, 8px);
2027 background: #fff7ed;
2028 border: 1px solid #fed7aa;
2029 color: #9a3412;
2030 font-size: 13px;
2031 line-height: 1.45;
2032 }
2033 .mxch-fc-note svg { flex: 0 0 auto; margin-top: 1px; }
2034 .mxch-fc-saved-notice {
2035 display: flex;
2036 gap: 8px;
2037 align-items: center;
2038 margin: 0 0 var(--mxch-spacing-md, 16px);
2039 padding: 10px 12px;
2040 border-radius: var(--mxch-radius-md, 8px);
2041 background: #ecfdf5;
2042 border: 1px solid #a7f3d0;
2043 color: #065f46;
2044 font-size: 13px;
2045 font-weight: 600;
2046 }
2047 .mxch-fc-tool-list {
2048 display: flex;
2049 flex-direction: column;
2050 gap: 2px;
2051 }
2052 .mxch-fc-tool-row {
2053 display: flex;
2054 align-items: flex-start;
2055 gap: 12px;
2056 padding: 12px 8px;
2057 border-radius: var(--mxch-radius-md, 8px);
2058 cursor: pointer;
2059 transition: background 0.15s ease;
2060 }
2061 .mxch-fc-tool + .mxch-fc-tool { border-top: 1px solid var(--mxch-card-border, #e5e7eb); }
2062 .mxch-fc-tool-row:hover { background: var(--mxch-content-bg, #f0f2f5); }
2063 .mxch-fc-tool-row input[type="checkbox"] { margin-top: 3px; flex: 0 0 auto; }
2064 .mxch-fc-tool-meta { display: flex; flex-direction: column; gap: 3px; }
2065 .mxch-fc-tool-label {
2066 font-size: 14px;
2067 font-weight: 600;
2068 color: var(--mxch-text-primary, #1a1a2e);
2069 display: flex;
2070 align-items: center;
2071 gap: 8px;
2072 flex-wrap: wrap;
2073 }
2074 .mxch-fc-tool-desc {
2075 font-size: 13px;
2076 color: var(--mxch-text-secondary, #64748b);
2077 line-height: 1.45;
2078 }
2079 .mxch-fc-badge {
2080 font-size: 10px;
2081 font-weight: 700;
2082 text-transform: uppercase;
2083 letter-spacing: 0.04em;
2084 padding: 2px 7px;
2085 border-radius: 999px;
2086 line-height: 1.4;
2087 }
2088 .mxch-fc-badge-addon { background: #ede9fe; color: #5b21b6; }
2089 .mxch-fc-badge-sensitive { background: #fef3c7; color: #92400e; }
2090 /* Per-tool "when to use" hint (plan 27d3e6) — indented under each tool row,
2091 shown only while the tool is enabled. */
2092 .mxch-fc-tool-hint {
2093 display: flex;
2094 flex-direction: column;
2095 gap: 4px;
2096 padding: 0 8px 12px 40px;
2097 }
2098 .mxch-fc-tool-hint.is-hidden { display: none; }
2099 .mxch-fc-hint-label {
2100 font-size: 12px;
2101 font-weight: 600;
2102 color: var(--mxch-text-secondary, #64748b);
2103 }
2104 .mxch-fc-hint-input {
2105 width: 100%;
2106 box-sizing: border-box;
2107 min-height: 44px;
2108 resize: vertical;
2109 padding: 8px 10px;
2110 font-size: 13px;
2111 line-height: 1.45;
2112 color: var(--mxch-text-primary, #1a1a2e);
2113 background: var(--mxch-card-bg, #fff);
2114 border: 1px solid var(--mxch-card-border, #e5e7eb);
2115 border-radius: var(--mxch-radius-md, 8px);
2116 font-family: inherit;
2117 transition: border-color 0.15s ease, box-shadow 0.15s ease;
2118 }
2119 .mxch-fc-hint-input:focus {
2120 outline: none;
2121 border-color: var(--mxch-primary, #7873f5);
2122 box-shadow: 0 0 0 3px var(--mxch-primary-light, rgba(120, 115, 245, 0.15));
2123 }
2124 .mxch-fc-hint-input::placeholder { color: var(--mxch-text-muted, #94a3b8); }
2125 @media (max-width: 782px) {
2126 .mxch-fc-tool-hint { padding-left: 8px; }
2127 }
2128 .mxch-fc-actions {
2129 display: flex;
2130 align-items: center;
2131 gap: 10px;
2132 margin-top: var(--mxch-spacing-lg, 24px);
2133 }
2134 .mxch-fc-autosave-hint {
2135 font-size: 13px;
2136 color: var(--mxch-text-muted, #94a3b8);
2137 }
2138 .mxch-fc-save-status {
2139 font-size: 13px;
2140 font-weight: 600;
2141 color: var(--mxch-text-secondary, #64748b);
2142 min-height: 18px;
2143 }
2144 .mxch-fc-save-status.is-saved { color: #059669; }
2145 .mxch-fc-save-status.is-error { color: #dc2626; }
2146
2147 /* ==========================================================================
2148 AI Tools — master-detail list + detail view (plan d450a7)
2149 The left list reuses the Trigger Phrases inner classes (.mxch-action-icon,
2150 .mxch-action-info, .mxch-action-name, .mxch-action-type-label,
2151 .mxch-action-meta, .mxch-action-status) directly. Only the OUTER row needs a
2152 dedicated class — a clone of .mxch-action-item's look — so the Trigger Phrases
2153 JS (which binds clicks to .mxch-action-item) never touches these rows.
2154 ========================================================================== */
2155 .mxch-fc-list-item {
2156 display: flex;
2157 align-items: center;
2158 gap: 10px;
2159 padding: 12px;
2160 cursor: pointer;
2161 border-bottom: 1px solid #f3f4f6;
2162 transition: background 0.15s;
2163 position: relative;
2164 }
2165 .mxch-fc-list-item:hover {
2166 background: #f9fafb;
2167 }
2168 .mxch-fc-list-item.active {
2169 background: linear-gradient(135deg, #f5f3ff 0%, #ede9fe 100%);
2170 border-left: 3px solid var(--mxch-primary);
2171 padding-left: 9px;
2172 }
2173 .mxch-fc-list-item.selected {
2174 background: #f5f3ff;
2175 }
2176
2177 /* Bulk-select checkbox on AI Tools rows — mirrors .mxch-action-checkbox so the
2178 two list panes behave identically: hidden until hover / selection (plan 5f7409). */
2179 .mxch-fc-checkbox {
2180 width: 16px;
2181 height: 16px;
2182 flex-shrink: 0;
2183 cursor: pointer;
2184 accent-color: var(--mxch-primary);
2185 opacity: 0;
2186 transition: opacity 0.15s;
2187 }
2188 .mxch-fc-list-item:hover .mxch-fc-checkbox,
2189 .mxch-fc-list-item.selected .mxch-fc-checkbox,
2190 .mxch-action-list.selection-mode .mxch-fc-checkbox {
2191 opacity: 1;
2192 }
2193
2194 /* Detail-view body text (description + the "when to use" note). */
2195 .mxch-fc-view-desc,
2196 .mxch-fc-view-hint {
2197 margin: 0;
2198 font-size: 14px;
2199 line-height: 1.6;
2200 color: var(--mxch-text-primary, #1a1a2e);
2201 white-space: pre-wrap;
2202 }
2203 .mxch-fc-view-hint.is-muted {
2204 color: var(--mxch-text-muted, #94a3b8);
2205 font-style: italic;
2206 }
2207
2208 /* ==========================================================================
2209 AI Tools — add/remove card flow (plan 8bbf98 part 4)
2210 A view layer over the hidden #mxch-fc-tool-store inputs.
2211 ========================================================================== */
2212 .mxch-fc-tool-store { display: none; }
2213
2214 .mxch-fc-card-list {
2215 display: flex;
2216 flex-direction: column;
2217 gap: 10px;
2218 margin-top: var(--mxch-spacing-md, 16px);
2219 }
2220 .mxch-fc-card {
2221 display: flex;
2222 align-items: flex-start;
2223 gap: 14px;
2224 padding: 14px;
2225 background: var(--mxch-card-bg, #fff);
2226 border: 1px solid var(--mxch-card-border, #e5e7eb);
2227 border-radius: var(--mxch-radius-lg, 12px);
2228 transition: border-color 0.15s ease, box-shadow 0.15s ease;
2229 }
2230 .mxch-fc-card:hover {
2231 border-color: var(--mxch-primary, #7873f5);
2232 box-shadow: 0 4px 12px rgba(120, 115, 245, 0.08);
2233 }
2234 .mxch-fc-card-icon {
2235 width: 40px;
2236 height: 40px;
2237 border-radius: 10px;
2238 background: rgba(120, 115, 245, 0.1);
2239 display: flex;
2240 align-items: center;
2241 justify-content: center;
2242 flex-shrink: 0;
2243 }
2244 .mxch-fc-card-icon .dashicons { color: var(--mxch-primary, #7873f5); font-size: 20px; width: 20px; height: 20px; }
2245 .mxch-fc-card-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
2246 .mxch-fc-card-label {
2247 font-size: 14px;
2248 font-weight: 600;
2249 color: var(--mxch-text-primary, #1a1a2e);
2250 display: flex;
2251 align-items: center;
2252 gap: 8px;
2253 flex-wrap: wrap;
2254 }
2255 .mxch-fc-card-hint { font-size: 13px; color: var(--mxch-text-secondary, #64748b); line-height: 1.45; }
2256 .mxch-fc-card-hint.is-muted { color: var(--mxch-text-muted, #94a3b8); font-style: italic; }
2257 .mxch-fc-card-actions { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
2258
2259 /* Empty state */
2260 .mxch-fc-empty { text-align: center; padding: 32px 20px; }
2261 .mxch-fc-empty-icon {
2262 width: 56px;
2263 height: 56px;
2264 margin: 0 auto 14px;
2265 border-radius: 14px;
2266 background: rgba(120, 115, 245, 0.1);
2267 color: var(--mxch-primary, #7873f5);
2268 display: flex;
2269 align-items: center;
2270 justify-content: center;
2271 }
2272 .mxch-fc-empty h4 { margin: 0 0 6px; font-size: 15px; font-weight: 600; color: var(--mxch-text-primary, #1a1a2e); }
2273 .mxch-fc-empty p { margin: 0 auto 16px; max-width: 420px; font-size: 13px; color: var(--mxch-text-secondary, #64748b); line-height: 1.5; }
2274
2275 /* Add-Tool modal */
2276 .mxch-modal-lg { max-width: 640px; }
2277 .mxch-fc-modal-step .mxch-modal-body { max-height: 70vh; overflow-y: auto; }
2278 .mxch-fc-modal-grid {
2279 grid-template-columns: 1fr;
2280 padding: 0;
2281 gap: 10px;
2282 flex: none;
2283 overflow: visible;
2284 }
2285 .mxch-fc-modal-allset {
2286 margin: 8px 0 0;
2287 font-size: 13px;
2288 color: var(--mxch-text-secondary, #64748b);
2289 }
2290 .mxch-fc-modal-sensitive-note {
2291 display: flex;
2292 gap: 8px;
2293 align-items: flex-start;
2294 margin-top: 12px;
2295 padding: 10px 12px;
2296 background: #fef3c7;
2297 color: #92400e;
2298 border-radius: var(--mxch-radius-md, 8px);
2299 font-size: 12.5px;
2300 line-height: 1.45;
2301 }
2302 .mxch-fc-modal-sensitive-note svg { flex-shrink: 0; margin-top: 1px; }
2303
2304 @media screen and (max-width: 782px) {
2305 .mxch-fc-card { padding: 12px; }
2306 .mxch-fc-card-actions { gap: 2px; }
2307 .mxch-modal-lg { width: 94%; }
2308 }
2309