/* Reverse 控制台前端共享样式（零构建，不依赖 @apply） */
/* 组件类为原 Tailwind @apply 的等价手写实现 */

[v-cloak]{display:none}
body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.nav-section-title{padding:18px 16px 6px;font-size:11px;font-weight:700;letter-spacing:.09em;color:#94a3b8;user-select:none}
.nav-section-title:first-child{padding-top:4px}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;color:#475569;transition:.15s}
.nav-item:hover{background:#f1f5f9;color:#0f172a}
.nav-item.active{background:#6366f1;color:white}
.nav-icon{width:24px;text-align:center;font-size:18px}
.toast-container{position:fixed;top:76px;right:24px;z-index:300;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 18px;border-radius:9px;color:#fff;font-size:14px;font-weight:600;box-shadow:0 10px 20px #0002;animation:slide .25s ease-out}
.toast.success{background:#10b981}
.toast.error{background:#ef4444}
.toast.warning{background:#f59e0b}
@keyframes slide{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:none}}
.log-box{background:#1e1e1e;color:#d4d4d4;border-radius:10px;padding:14px;font:12px/1.65 ui-monospace,Menlo,Consolas,monospace;max-height:430px;overflow:auto}
.row-hover:hover{background:#f8fafc}
.modal-mask{position:fixed;inset:0;z-index:200;background:#0f172a88;display:flex;align-items:center;justify-content:center;padding:18px}
.toggle{width:40px;height:22px;border-radius:999px;background:#cbd5e1;padding:2px;transition:.2s;cursor:pointer}
.toggle:after{content:"";display:block;width:18px;height:18px;border-radius:50%;background:white;box-shadow:0 1px 3px #0004;transition:.2s}
.toggle.on{background:#6366f1}
.toggle.on:after{transform:translateX(18px)}
@media(max-width:800px){aside{transform:translateX(-100%)}aside.mobile-open{transform:none}.main-shell{margin-left:0!important}.top-title{font-size:15px}.desktop-user{display:none}.mobile-menu{display:block!important}}

/* 组件类（card/input/button/table/badge/modal），按钮体系对标 wx-bot 控制台 */
.card{background:#fff;border-radius:.75rem;box-shadow:0 1px 2px 0 rgb(0 0 0/.05);border:1px solid #e2e8f0;padding:1.25rem}
.input{width:100%;padding:.625rem .875rem;border:1px solid #cbd5e1;border-radius:.5rem;font-size:.875rem;line-height:1.25rem;outline:none}
.input:focus{box-shadow:0 0 0 2px #6366f1;border-color:transparent}
.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;background:#6366f1;color:#fff;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:background-color .15s,opacity .15s;cursor:pointer}
.btn-primary:hover{background:#4f46e5}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.375rem .75rem;background:#fff;border:1px solid #e2e8f0;color:#64748b;border-radius:.5rem;font-size:.75rem;font-weight:500;transition:color .15s,border-color .15s;cursor:pointer}
.btn-secondary:hover{color:#334155;border-color:#cbd5e1}
.btn-secondary:disabled{opacity:.5;cursor:not-allowed}
/* 小号彩色药丸操作钮：emerald=运行 blue=查看 red=删除（同 wx-bot 列表操作列） */
.run-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:.25rem;background:#ecfdf5;color:#059669;font-size:.75rem;font-weight:500;transition:background-color .15s;cursor:pointer}
.run-btn:hover{background:#d1fae5}
.run-btn:disabled{opacity:.5;cursor:not-allowed}
.link-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:.25rem;background:#eff6ff;color:#2563eb;font-size:.75rem;font-weight:500;transition:background-color .15s;cursor:pointer}
.link-btn:hover{background:#dbeafe}
.link-btn:disabled{opacity:.5;cursor:not-allowed}
.btn-danger{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:.25rem;background:#fef2f2;color:#dc2626;font-size:.75rem;font-weight:500;transition:background-color .15s;cursor:pointer}
.btn-danger:hover{background:#fee2e2}
.back-btn{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:#64748b;transition:color .15s;cursor:pointer}
.back-btn:hover{color:#4f46e5}
.table{width:100%;font-size:.875rem;border-collapse:collapse}
.table thead{background:#f8fafc;font-size:.75rem;text-transform:uppercase;color:#64748b}
.table th{padding:.75rem 1rem;text-align:left;font-weight:600;white-space:nowrap}
.table td{padding:.75rem 1rem;border-top:1px solid #f1f5f9}
.table tbody tr:hover{background:#f8fafc}
.badge{display:inline-flex;padding:.125rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}
.badge-ok{background:#ecfdf5;color:#059669}
.badge-bad{background:#fef2f2;color:#dc2626}
.badge-warn{background:#fffbeb;color:#d97706}
.badge-muted{background:#f1f5f9;color:#64748b}
.modal{background:#fff;border-radius:1rem;box-shadow:0 20px 25px -5px rgb(0 0 0/.1),0 8px 10px -6px rgb(0 0 0/.1);padding:1.5rem;width:100%;max-width:32rem;max-height:92vh;overflow:auto}
.modal-title{font-size:1.125rem;font-weight:700;color:#0f172a;margin-bottom:1.25rem}
.modal label{display:block;font-size:.75rem;font-weight:500;color:#64748b;margin:.75rem 0 .375rem}
.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.5rem}
