PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 3.0.2
MxChat – AI Chatbot & Content Generation for WordPress v3.0.2
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
← All changes | css/admin-sidebar.css +4 -801 3.2.213.0.2 View file →
@@ -1,4 +1,4 @@
1 1 /* ==========================================================================
2 2 MxChat Admin Sidebar Navigation - v2.0
3 3 Clean, modern CSS for the redesigned settings page
4 4 ========================================================================== */
@@ -40,10 +40,8 @@
40 40
41 41 /* Status Colors */
42 42 --mxch-success: #10b981;
43 43 --mxch-warning: #f59e0b;
44 - --mxch-warning-light: rgba(245, 158, 11, 0.12);
45 - --mxch-warning-text: #92400e;
46 44 --mxch-error: #ef4444;
47 45 --mxch-info: #3b82f6;
48 46
49 47 /* Spacing */
@@ -94,49 +92,8 @@
94 92 }
95 93 }
96 94
97 95 /* ==========================================================================
98 - RTL locales (Arabic, Hebrew, Persian, Urdu, …)
99 - On an RTL locale WordPress moves its admin menu to the RIGHT and sets the
100 - `rtl` class + `direction: rtl` on <body>. The base wrapper is pinned
101 - `left: 160px; right: 0` for a LEFT-side admin menu, so under RTL its right
102 - edge slides under the (now right-side) WP menu and a dead 160px gap opens on
103 - the left — the nav ends up hidden/overlapped. Mirror the fixed offsets and
104 - the negative content margin. The internal sidebar/content flex row reverses
105 - automatically under the inherited `direction: rtl`, so the sidebar lands on
106 - the wrapper's right edge (just inside the WP menu) as expected for RTL — no
107 - per-child repositioning needed.
108 - ========================================================================== */
109 -body.rtl .mxch-admin-wrapper {
110 - left: 0;
111 - right: 160px; /* WordPress admin menu width (now on the right) */
112 - margin-left: 0;
113 - margin-right: -20px;
114 -}
115 -
116 -/* Collapsed/folded admin menu (narrower) on RTL */
117 -body.rtl.folded .mxch-admin-wrapper {
118 - left: 0;
119 - right: 36px;
120 -}
121 -
122 -/* On mobile the WP admin menu collapses to the top bar, so the wrapper is
123 - full-width in both directions — clear the RTL right offset too. */
124 -@media screen and (max-width: 782px) {
125 - body.rtl .mxch-admin-wrapper {
126 - left: 0;
127 - right: 0;
128 - margin-right: 0;
129 - }
130 -}
131 -
132 -/* Active nav-item accent sits on the sidebar's inner edge; flip it for RTL. */
133 -body.rtl .mxch-nav-link.active {
134 - border-right: none;
135 - border-left: 3px solid var(--mxch-primary);
136 -}
137 -
138 -/* ==========================================================================
139 96 Sidebar Navigation
140 97 ========================================================================== */
141 98 .mxch-sidebar {
142 99 width: var(--mxch-sidebar-width);
@@ -1197,23 +1154,8 @@
1197 1154 flex: 1;
1198 1155 margin-bottom: 0;
1199 1156 }
1200 1157
1201 -/* Global cap "Current usage" readout (plan-mxchat-20260603-e9b3f9) */
1202 -.mxch-rate-limit-usage {
1203 - margin-top: var(--mxch-spacing-md);
1204 - padding-top: var(--mxch-spacing-md);
1205 - border-top: 1px solid var(--mxch-card-border);
1206 -}
1207 -
1208 -.mxch-rate-limit-usage-head {
1209 - display: flex;
1210 - align-items: center;
1211 - justify-content: space-between;
1212 - gap: var(--mxch-spacing-md);
1213 - margin-bottom: var(--mxch-spacing-xs);
1214 -}
1215 -
1216 1158 /* ==========================================================================
1217 1159 Buttons
1218 1160 ========================================================================== */
1219 1161 .mxch-btn {
@@ -1345,95 +1287,9 @@
1345 1287 color: #991b1b;
1346 1288 border: 1px solid #fecaca;
1347 1289 }
1348 1290
1349 -/* Standalone notice sitting between a content header and the first card.
1350 - Token-based replacement for the inline margin declarations this component
1351 - has been carrying at its call sites (b65e8d). */
1352 -.mxch-notice-block {
1353 - margin-bottom: var(--mxch-spacing-lg);
1354 -}
1355 -
1356 1291 /* ==========================================================================
1357 - Disclosure (collapsible <details>)
1358 - Generic Advanced/opt-in surface — used for static-bearer fallback on
1359 - mxchat-mcp's Connected Apps tab, and any add-on that needs the same
1360 - "advanced/show more" pattern. Originally lived in plugins/mxchat-mcp/css/
1361 - admin-mcp.css; elevated here so every add-on inherits via the standard
1362 - admin-sidebar.css enqueue.
1363 - ========================================================================== */
1364 -.mxch-disclosure {
1365 - margin-top: 16px;
1366 - border: 1px solid var(--mxch-card-border, #e2e4e9);
1367 - border-radius: var(--mxch-radius-md, 6px);
1368 - background: #fbfcfd;
1369 -}
1370 -.mxch-disclosure[open] {
1371 - background: #fff;
1372 -}
1373 -.mxch-disclosure-summary {
1374 - display: flex;
1375 - align-items: center;
1376 - gap: 10px;
1377 - padding: 10px 14px;
1378 - cursor: pointer;
1379 - list-style: none;
1380 - user-select: none;
1381 - color: var(--mxch-text-secondary, #57606a);
1382 - font-size: 13px;
1383 - font-weight: 600;
1384 -}
1385 -.mxch-disclosure-summary::-webkit-details-marker { display: none; }
1386 -.mxch-disclosure-summary::before {
1387 - content: "";
1388 - display: inline-block;
1389 - width: 8px;
1390 - height: 8px;
1391 - border-right: 2px solid currentColor;
1392 - border-bottom: 2px solid currentColor;
1393 - transform: rotate(-45deg);
1394 - transition: transform 0.18s ease;
1395 - margin-right: 2px;
1396 -}
1397 -.mxch-disclosure[open] > .mxch-disclosure-summary::before {
1398 - transform: rotate(45deg);
1399 -}
1400 -.mxch-disclosure-summary svg {
1401 - flex-shrink: 0;
1402 - opacity: 0.7;
1403 -}
1404 -.mxch-disclosure-summary-text {
1405 - color: var(--mxch-text-primary, #1d2327);
1406 - font-weight: 600;
1407 -}
1408 -.mxch-disclosure-summary-hint {
1409 - color: var(--mxch-text-secondary, #57606a);
1410 - font-weight: 400;
1411 - font-size: 12px;
1412 -}
1413 -.mxch-disclosure-summary:hover .mxch-disclosure-summary-text {
1414 - color: var(--mxch-primary, #7873f5);
1415 -}
1416 -.mxch-disclosure-summary:focus-visible {
1417 - outline: 2px solid var(--mxch-primary, #7873f5);
1418 - outline-offset: 2px;
1419 - border-radius: var(--mxch-radius-md, 6px);
1420 -}
1421 -.mxch-disclosure-body {
1422 - padding: 8px 14px 14px 14px;
1423 - border-top: 1px solid var(--mxch-card-border, #e2e4e9);
1424 -}
1425 -@media (max-width: 600px) {
1426 - .mxch-disclosure-summary {
1427 - flex-wrap: wrap;
1428 - }
1429 - .mxch-disclosure-summary-hint {
1430 - flex-basis: 100%;
1431 - margin-left: 18px;
1432 - }
1433 -}
1434 -
1435 -/* ==========================================================================
1436 1292 Quick Questions List
1437 1293 ========================================================================== */
1438 1294 .mxch-quick-questions {
1439 1295 display: flex;
@@ -1962,24 +1818,8 @@
1962 1818
1963 1819 .mxch-rate-limit-controls {
1964 1820 flex-direction: column;
1965 1821 }
1966 -
1967 - /* Card headers stack on mobile */
1968 - .mxch-card-header {
1969 - flex-direction: column;
1970 - align-items: stretch;
1971 - gap: 12px;
1972 - }
1973 -
1974 - /* Content header adjustments */
1975 - .mxch-content-header {
1976 - margin-bottom: var(--mxch-spacing-md);
1977 - }
1978 -
1979 - .mxch-content-title {
1980 - font-size: 20px;
1981 - }
1982 1822 }
1983 1823
1984 1824 @media screen and (max-width: 600px) {
1985 1825 .mxch-content {
@@ -2108,25 +1948,12 @@
2108 1948 display: inline-flex;
2109 1949 vertical-align: middle;
2110 1950 }
2111 1951
2112 -/* Position feedback near inputs - use inline for form-table context */
2113 -.mxch-admin-wrapper .form-table input + .feedback-container,
2114 -.mxch-admin-wrapper .form-table select + .feedback-container,
2115 -.mxch-admin-wrapper .form-table textarea + .feedback-container {
2116 - position: relative;
2117 - display: inline-flex;
2118 - vertical-align: middle;
2119 - margin-left: 10px;
2120 - right: auto;
2121 - top: auto;
2122 - transform: none;
2123 -}
2124 -
2125 -/* Position feedback near inputs - absolute for card layouts with field-control */
2126 -.mxch-admin-wrapper .mxch-field-control input + .feedback-container,
2127 -.mxch-admin-wrapper .mxch-field-control select + .feedback-container,
2128 -.mxch-admin-wrapper .mxch-field-control textarea + .feedback-container {
1952 +/* Position feedback near inputs */
1953 +.mxch-admin-wrapper input + .feedback-container,
1954 +.mxch-admin-wrapper select + .feedback-container,
1955 +.mxch-admin-wrapper textarea + .feedback-container {
2129 1956 position: absolute;
2130 1957 right: -30px;
2131 1958 top: 50%;
2132 1959 transform: translateY(-50%);
@@ -2141,43 +1968,8 @@
2141 1968 .mxch-admin-wrapper .slider-container + .feedback-container {
2142 1969 margin-left: 15px;
2143 1970 }
2144 1971
2145 -/* Persistent unsaved-state badge (plan 7787f8). Quiet warning, not an error:
2146 - a field whose value differs from its last-saved state carries this on its
2147 - label until the autosave round-trip confirms. */
2148 -.mxch-admin-wrapper .mxchat-unsaved-badge {
2149 - display: inline-flex;
2150 - align-items: center;
2151 - gap: 5px;
2152 - margin-left: 8px;
2153 - padding: 1px 8px 1px 6px;
2154 - border-radius: 10px;
2155 - background: var(--mxch-warning-light);
2156 - color: var(--mxch-warning-text);
2157 - font-size: 11px;
2158 - font-weight: 600;
2159 - line-height: 1.6;
2160 - letter-spacing: 0.2px;
2161 - vertical-align: middle;
2162 - white-space: nowrap;
2163 - animation: mxchUnsavedIn 0.15s ease-out;
2164 -}
2165 -
2166 -.mxch-admin-wrapper .mxchat-unsaved-badge::before {
2167 - content: '';
2168 - width: 6px;
2169 - height: 6px;
2170 - border-radius: 50%;
2171 - background: var(--mxch-warning);
2172 - flex: none;
2173 -}
2174 -
2175 -@keyframes mxchUnsavedIn {
2176 - from { opacity: 0; transform: translateY(1px); }
2177 - to { opacity: 1; transform: none; }
2178 -}
2179 -
2180 1972 /* ==========================================================================
2181 1973 Real-time Entry Updates
2182 1974 ========================================================================== */
2183 1975
@@ -2382,593 +2174,4 @@
2382 2174 width: 100%;
2383 2175 justify-content: center;
2384 2176 }
2385 2177 }
2386 -
2387 -/* ==========================================================================
2388 - API Key Fields - Prevent Browser Autofill
2389 - ========================================================================== */
2390 -
2391 -/* Mask API key fields like password fields but avoid browser password autofill */
2392 -.mxchat-api-key-field {
2393 - -webkit-text-security: disc;
2394 - text-security: disc;
2395 - font-family: monospace;
2396 -}
2397 -
2398 -/* Show actual text when focused or when show button toggled */
2399 -.mxchat-api-key-field.mxchat-show-key {
2400 - -webkit-text-security: none;
2401 - text-security: none;
2402 -}
2403 -
2404 -/* ==========================================================================
2405 - Debug & Optimization Tools
2406 - ========================================================================== */
2407 -
2408 -/* Debug Log Viewer */
2409 -.mxchat-debug-log-viewer {
2410 - max-height: 400px;
2411 - overflow-y: auto;
2412 - background: #f8fafc;
2413 - border: 1px solid var(--mxch-card-border, #e2e4e9);
2414 - border-radius: 8px;
2415 - padding: 0;
2416 -}
2417 -
2418 -.mxchat-debug-log-empty {
2419 - display: flex;
2420 - flex-direction: column;
2421 - align-items: center;
2422 - justify-content: center;
2423 - padding: 48px 24px;
2424 - text-align: center;
2425 - color: #64748b;
2426 -}
2427 -
2428 -.mxchat-debug-log-empty p {
2429 - margin: 16px 0 0;
2430 - font-size: 14px;
2431 -}
2432 -
2433 -.mxchat-debug-log-entries {
2434 - padding: 12px;
2435 -}
2436 -
2437 -.mxchat-debug-log-entry {
2438 - background: #ffffff;
2439 - border: 1px solid #e2e8f0;
2440 - border-radius: 8px;
2441 - padding: 12px;
2442 - margin-bottom: 8px;
2443 - font-size: 13px;
2444 -}
2445 -
2446 -.mxchat-debug-log-entry:last-child {
2447 - margin-bottom: 0;
2448 -}
2449 -
2450 -.mxchat-log-header {
2451 - display: flex;
2452 - justify-content: space-between;
2453 - align-items: center;
2454 - margin-bottom: 8px;
2455 -}
2456 -
2457 -.mxchat-log-type {
2458 - display: inline-block;
2459 - padding: 2px 8px;
2460 - border-radius: 4px;
2461 - font-size: 10px;
2462 - font-weight: 600;
2463 - text-transform: uppercase;
2464 - letter-spacing: 0.5px;
2465 - background: #e2e8f0;
2466 - color: #475569;
2467 -}
2468 -
2469 -.mxchat-log-type-settings_save .mxchat-log-type {
2470 - background: #dbeafe;
2471 - color: #1e40af;
2472 -}
2473 -
2474 -.mxchat-log-type-debug_mode .mxchat-log-type {
2475 - background: #fef3c7;
2476 - color: #92400e;
2477 -}
2478 -
2479 -.mxchat-log-type-api_error .mxchat-log-type {
2480 - background: #fee2e2;
2481 - color: #991b1b;
2482 -}
2483 -
2484 -.mxchat-log-type-reset .mxchat-log-type {
2485 - background: #fce7f3;
2486 - color: #9d174d;
2487 -}
2488 -
2489 -.mxchat-log-type-settings_export .mxchat-log-type {
2490 - background: #d1fae5;
2491 - color: #065f46;
2492 -}
2493 -
2494 -.mxchat-log-time {
2495 - font-size: 11px;
2496 - color: #94a3b8;
2497 -}
2498 -
2499 -.mxchat-log-message {
2500 - color: #334155;
2501 - line-height: 1.5;
2502 -}
2503 -
2504 -.mxchat-log-data {
2505 - margin-top: 8px;
2506 - padding: 8px;
2507 - background: #f1f5f9;
2508 - border-radius: 4px;
2509 - font-family: monospace;
2510 - font-size: 11px;
2511 - color: #64748b;
2512 - white-space: pre-wrap;
2513 - word-break: break-all;
2514 -}
2515 -
2516 -/* Settings Tools Grid */
2517 -.mxch-tools-grid {
2518 - display: grid;
2519 - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
2520 - gap: 24px;
2521 -}
2522 -
2523 -.mxch-tool-item {
2524 - display: flex;
2525 - gap: 16px;
2526 - padding: 20px;
2527 - background: #f8fafc;
2528 - border: 1px solid #e2e8f0;
2529 - border-radius: 12px;
2530 - transition: all 0.2s ease;
2531 -}
2532 -
2533 -.mxch-tool-item:hover {
2534 - border-color: var(--mxch-primary, #7873f5);
2535 - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
2536 -}
2537 -
2538 -.mxch-tool-item-danger {
2539 - border-color: #fecaca;
2540 - background: #fef2f2;
2541 -}
2542 -
2543 -.mxch-tool-item-danger:hover {
2544 - border-color: #ef4444;
2545 -}
2546 -
2547 -.mxch-tool-icon {
2548 - flex-shrink: 0;
2549 - width: 48px;
2550 - height: 48px;
2551 - display: flex;
2552 - align-items: center;
2553 - justify-content: center;
2554 - background: #ffffff;
2555 - border-radius: 10px;
2556 - color: var(--mxch-primary, #7873f5);
2557 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
2558 -}
2559 -
2560 -.mxch-tool-item-danger .mxch-tool-icon {
2561 - color: #ef4444;
2562 -}
2563 -
2564 -.mxch-tool-content h4 {
2565 - margin: 0 0 6px;
2566 - font-size: 15px;
2567 - font-weight: 600;
2568 - color: #1e293b;
2569 -}
2570 -
2571 -.mxch-tool-content p {
2572 - margin: 0 0 12px;
2573 - font-size: 13px;
2574 - color: #64748b;
2575 - line-height: 1.5;
2576 -}
2577 -
2578 -/* Danger Button */
2579 -.mxch-btn-danger {
2580 - background: #ef4444 !important;
2581 - color: #ffffff !important;
2582 - border-color: #ef4444 !important;
2583 -}
2584 -
2585 -.mxch-btn-danger:hover {
2586 - background: #dc2626 !important;
2587 - border-color: #dc2626 !important;
2588 -}
2589 -
2590 -/* Badge Styles */
2591 -.mxch-badge {
2592 - display: inline-flex;
2593 - align-items: center;
2594 - padding: 4px 10px;
2595 - font-size: 12px;
2596 - font-weight: 500;
2597 - border-radius: 20px;
2598 - background: #e2e8f0;
2599 - color: #475569;
2600 -}
2601 -
2602 -.mxch-badge-warning {
2603 - background: #fef3c7;
2604 - color: #92400e;
2605 -}
2606 -
2607 -.mxch-badge-success {
2608 - background: #d1fae5;
2609 - color: #065f46;
2610 -}
2611 -
2612 -.mxch-badge-error {
2613 - background: #fee2e2;
2614 - color: #991b1b;
2615 -}
2616 -
2617 -/* Modal Styles */
2618 -.mxch-modal {
2619 - position: fixed;
2620 - top: 0;
2621 - left: 0;
2622 - right: 0;
2623 - bottom: 0;
2624 - z-index: 100000;
2625 - display: flex;
2626 - align-items: center;
2627 - justify-content: center;
2628 -}
2629 -
2630 -.mxch-modal-backdrop {
2631 - position: absolute;
2632 - top: 0;
2633 - left: 0;
2634 - right: 0;
2635 - bottom: 0;
2636 - background: rgba(0, 0, 0, 0.5);
2637 -}
2638 -
2639 -.mxch-modal-content {
2640 - position: relative;
2641 - width: 100%;
2642 - max-width: 480px;
2643 - background: #ffffff;
2644 - border-radius: 16px;
2645 - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
2646 - margin: 20px;
2647 -}
2648 -
2649 -.mxch-modal-header {
2650 - display: flex;
2651 - justify-content: space-between;
2652 - align-items: center;
2653 - padding: 20px 24px;
2654 - border-bottom: 1px solid #e2e8f0;
2655 -}
2656 -
2657 -.mxch-modal-header h3 {
2658 - margin: 0;
2659 - font-size: 18px;
2660 - font-weight: 600;
2661 - color: #1e293b;
2662 -}
2663 -
2664 -.mxch-modal-close {
2665 - width: 32px;
2666 - height: 32px;
2667 - display: flex;
2668 - align-items: center;
2669 - justify-content: center;
2670 - background: none;
2671 - border: none;
2672 - font-size: 24px;
2673 - color: #64748b;
2674 - cursor: pointer;
2675 - border-radius: 8px;
2676 - transition: all 0.2s ease;
2677 -}
2678 -
2679 -.mxch-modal-close:hover {
2680 - background: #f1f5f9;
2681 - color: #1e293b;
2682 -}
2683 -
2684 -.mxch-modal-body {
2685 - padding: 24px;
2686 -}
2687 -
2688 -.mxch-modal-footer {
2689 - display: flex;
2690 - justify-content: flex-end;
2691 - gap: 12px;
2692 - padding: 16px 24px;
2693 - border-top: 1px solid #e2e8f0;
2694 - background: #f8fafc;
2695 - border-radius: 0 0 16px 16px;
2696 -}
2697 -
2698 -/* Input in modal */
2699 -.mxch-input {
2700 - width: 100%;
2701 - padding: 10px 14px;
2702 - font-size: 14px;
2703 - border: 1px solid #d1d5db;
2704 - border-radius: 8px;
2705 - transition: all 0.2s ease;
2706 -}
2707 -
2708 -.mxch-input:focus {
2709 - outline: none;
2710 - border-color: var(--mxch-primary, #7873f5);
2711 - box-shadow: 0 0 0 3px rgba(120, 115, 245, 0.1);
2712 -}
2713 -
2714 -/* Responsive adjustments for tools */
2715 -@media screen and (max-width: 768px) {
2716 - .mxch-tools-grid {
2717 - grid-template-columns: 1fr;
2718 - }
2719 -
2720 - .mxch-tool-item {
2721 - flex-direction: column;
2722 - text-align: center;
2723 - }
2724 -
2725 - .mxch-tool-icon {
2726 - margin: 0 auto;
2727 - }
2728 -
2729 - .mxchat-debug-log-viewer {
2730 - max-height: 300px;
2731 - }
2732 -
2733 - .mxch-modal-content {
2734 - margin: 10px;
2735 - }
2736 -}
2737 -
2738 -/* ============================================================
2739 - Dashboard page (Setup Assistant + dashboard cards)
2740 - Added with plan-mxchat-20260526-704e25.
2741 - ============================================================ */
2742 -
2743 -.mxch-setup-card .mxch-card-body {
2744 - padding-top: var(--mxch-spacing-md);
2745 -}
2746 -
2747 -.mxch-progress-bar {
2748 - height: 6px;
2749 - background: var(--mxch-card-border, #e5e7eb);
2750 - border-radius: 999px;
2751 - overflow: hidden;
2752 - margin: var(--mxch-spacing-sm) 0 var(--mxch-spacing-xs);
2753 -}
2754 -
2755 -.mxch-progress-bar-fill {
2756 - height: 100%;
2757 - background: linear-gradient(90deg, var(--mxch-primary) 0%, #9b96ff 100%);
2758 - border-radius: 999px;
2759 - transition: width 400ms cubic-bezier(0.22, 1, 0.36, 1);
2760 -}
2761 -
2762 -.mxch-progress-label {
2763 - font-size: 12px;
2764 - color: var(--mxch-text-secondary);
2765 - margin: 0 0 var(--mxch-spacing-md);
2766 - font-weight: 500;
2767 -}
2768 -
2769 -.mxch-step-list {
2770 - list-style: none;
2771 - margin: 0;
2772 - padding: 0;
2773 - display: flex;
2774 - flex-direction: column;
2775 - gap: var(--mxch-spacing-sm);
2776 -}
2777 -
2778 -.mxch-step {
2779 - display: grid;
2780 - grid-template-columns: 32px 1fr auto;
2781 - align-items: center;
2782 - gap: var(--mxch-spacing-md);
2783 - padding: var(--mxch-spacing-md);
2784 - background: var(--mxch-content-bg, #f7f8fa);
2785 - border: 1px solid transparent;
2786 - border-radius: var(--mxch-radius-md);
2787 - transition: background 160ms ease, border-color 160ms ease;
2788 -}
2789 -
2790 -.mxch-step.mxch-step-in-progress {
2791 - background: var(--mxch-primary-lighter, rgba(120, 115, 245, 0.05));
2792 - border-color: var(--mxch-primary-light, rgba(120, 115, 245, 0.1));
2793 -}
2794 -
2795 -.mxch-step.mxch-step-done {
2796 - background: rgba(16, 185, 129, 0.06);
2797 -}
2798 -
2799 -.mxch-step-indicator {
2800 - width: 28px;
2801 - height: 28px;
2802 - border-radius: 50%;
2803 - display: flex;
2804 - align-items: center;
2805 - justify-content: center;
2806 - font-size: 13px;
2807 - font-weight: 600;
2808 - background: #fff;
2809 - color: var(--mxch-text-secondary, #64748b);
2810 - border: 1.5px solid var(--mxch-card-border, #e5e7eb);
2811 - flex-shrink: 0;
2812 -}
2813 -
2814 -.mxch-step-in-progress .mxch-step-indicator {
2815 - color: var(--mxch-primary);
2816 - border-color: var(--mxch-primary);
2817 - background: #fff;
2818 - box-shadow: 0 0 0 4px var(--mxch-primary-lighter, rgba(120, 115, 245, 0.06));
2819 -}
2820 -
2821 -.mxch-step-done .mxch-step-indicator {
2822 - background: var(--mxch-success, #10b981);
2823 - border-color: var(--mxch-success, #10b981);
2824 - color: #fff;
2825 -}
2826 -
2827 -.mxch-step-number {
2828 - line-height: 1;
2829 -}
2830 -
2831 -.mxch-step-body {
2832 - min-width: 0;
2833 -}
2834 -
2835 -.mxch-step-title {
2836 - font-size: 14px;
2837 - font-weight: 600;
2838 - color: var(--mxch-text-primary, #1a1a2e);
2839 - margin-bottom: 2px;
2840 -}
2841 -
2842 -.mxch-step-done .mxch-step-title {
2843 - color: var(--mxch-text-secondary, #64748b);
2844 -}
2845 -
2846 -.mxch-step-description {
2847 - font-size: 12.5px;
2848 - color: var(--mxch-text-secondary, #64748b);
2849 - line-height: 1.45;
2850 -}
2851 -
2852 -.mxch-step-action {
2853 - align-self: center;
2854 -}
2855 -
2856 -.mxch-setup-dismiss-row {
2857 - margin-top: var(--mxch-spacing-md);
2858 - text-align: right;
2859 -}
2860 -
2861 -.mxch-setup-dismiss,
2862 -.mxch-setup-resume {
2863 - font-size: 12.5px;
2864 - color: var(--mxch-text-secondary, #64748b);
2865 - text-decoration: none;
2866 - border-bottom: 1px dotted currentColor;
2867 -}
2868 -
2869 -.mxch-setup-dismiss:hover,
2870 -.mxch-setup-resume:hover {
2871 - color: var(--mxch-primary);
2872 -}
2873 -
2874 -.mxch-resume-setup-row {
2875 - margin: 0 0 var(--mxch-spacing-md);
2876 - text-align: right;
2877 -}
2878 -
2879 -.mxch-dashboard-grid {
2880 - display: grid;
2881 - grid-template-columns: repeat(3, minmax(0, 1fr));
2882 - gap: var(--mxch-spacing-md);
2883 - margin-top: var(--mxch-spacing-lg);
2884 -}
2885 -
2886 -.mxch-dashboard-card .mxch-card-body {
2887 - display: flex;
2888 - flex-direction: column;
2889 - gap: var(--mxch-spacing-sm);
2890 -}
2891 -
2892 -.mxch-dashboard-big-number {
2893 - font-size: 36px;
2894 - font-weight: 700;
2895 - color: var(--mxch-text-primary, #1a1a2e);
2896 - line-height: 1.1;
2897 - letter-spacing: -0.02em;
2898 -}
2899 -
2900 -.mxch-dashboard-provider-name {
2901 - font-size: 16px;
2902 - font-weight: 600;
2903 - color: var(--mxch-text-primary, #1a1a2e);
2904 - word-break: break-word;
2905 -}
2906 -
2907 -.mxch-dashboard-card-meta {
2908 - font-size: 13px;
2909 - color: var(--mxch-text-secondary, #64748b);
2910 - margin: 0;
2911 -}
2912 -
2913 -@media (max-width: 1024px) {
2914 - .mxch-dashboard-grid {
2915 - grid-template-columns: 1fr 1fr;
2916 - }
2917 -}
2918 -
2919 -@media (max-width: 782px) {
2920 - .mxch-step {
2921 - grid-template-columns: 32px 1fr;
2922 - grid-template-rows: auto auto;
2923 - gap: var(--mxch-spacing-sm) var(--mxch-spacing-md);
2924 - }
2925 - .mxch-step-action {
2926 - grid-column: 1 / -1;
2927 - text-align: right;
2928 - }
2929 - .mxch-dashboard-grid {
2930 - grid-template-columns: 1fr;
2931 - }
2932 -}
2933 -
2934 -/* ------------------------------------------------------------------
2935 - * Test Streaming Compatibility button (AI Models page)
2936 - * Branded .mxch-btn replacing the legacy WP button + dashicon wrench.
2937 - * ------------------------------------------------------------------ */
2938 -.mxch-streaming-test-row {
2939 - margin-top: var(--mxch-spacing-md, 16px);
2940 -}
2941 -.mxch-streaming-test-row .mxch-streaming-test-icon {
2942 - vertical-align: middle;
2943 - margin-right: 8px;
2944 -}
2945 -.mxch-streaming-test-result {
2946 - margin-top: var(--mxch-spacing-sm, 12px);
2947 - font-weight: 600;
2948 - color: var(--mxch-text-primary, #1a1a2e);
2949 -}
2950 -
2951 -/* ------------------------------------------------------------------
2952 - * Status pill — documented shell component (CLAUDE.md design table).
2953 - * Moved here from admin-api-page.php's inline <style> (plan b6e4d4) so
2954 - * every admin page renders it, not just the API page. Rules are
2955 - * byte-identical to the inline originals.
2956 - * ------------------------------------------------------------------ */
2957 -.mxch-status-pill {
2958 - display: inline-flex;
2959 - align-items: center;
2960 - gap: 6px;
2961 - padding: 4px 10px;
2962 - border-radius: 999px;
2963 - font-size: 12px;
2964 - font-weight: 600;
2965 -}
2966 -.mxch-status-pill .mxch-status-dot {
2967 - width: 8px;
2968 - height: 8px;
2969 - border-radius: 50%;
2970 -}
2971 -.mxch-status-pill-active { background: #e6f4ea; color: #1d7a3a; }
2972 -.mxch-status-pill-active .mxch-status-dot { background: #1d7a3a; }
2973 -.mxch-status-pill-disabled { background: #fef3e2; color: #a04a00; }
2974 -.mxch-status-pill-disabled .mxch-status-dot { background: #a04a00; }