.toast-host[data-v-cdebf7a6]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;align-items:center;gap:8px;width:min(520px,calc(100vw - 32px));pointer-events:none}.toast[data-v-cdebf7a6]{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 12px;border-radius:var(--radius);border:1px solid transparent;box-shadow:var(--shadow-md);font-size:13px;line-height:1.5;pointer-events:auto}.toast-error[data-v-cdebf7a6]{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.toast-success[data-v-cdebf7a6]{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}.toast-text[data-v-cdebf7a6]{flex:1;word-break:break-word}.toast-close[data-v-cdebf7a6]{flex-shrink:0;border:0;background:transparent;color:inherit;cursor:pointer;font-size:15px;line-height:1;padding:0 2px;opacity:.7}.toast-close[data-v-cdebf7a6]:hover{opacity:1}.toast-enter-active[data-v-cdebf7a6],.toast-leave-active[data-v-cdebf7a6]{transition:opacity .18s ease,transform .18s ease}.toast-enter-from[data-v-cdebf7a6],.toast-leave-to[data-v-cdebf7a6]{opacity:0;transform:translateY(-8px)}.layout[data-v-083361c7]{display:flex;flex-direction:column;height:100vh}.topbar[data-v-083361c7]{height:56px;flex-shrink:0;display:flex;align-items:center;gap:12px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--border)}.brand[data-v-083361c7]{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:700}.brand-mark[data-v-083361c7]{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#3b82f6);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;letter-spacing:.3px}.spacer[data-v-083361c7]{flex:1}.user-menu[data-v-083361c7]{position:relative}.user-trigger[data-v-083361c7]{display:flex;align-items:center;gap:9px;padding:4px 8px 4px 4px;border:1px solid transparent;border-radius:999px;background:transparent;transition:background .15s,border-color .15s}.user-trigger[data-v-083361c7]:hover,.user-trigger.open[data-v-083361c7]{background:#f3f4f6;border-color:var(--border)}.chevron[data-v-083361c7]{width:15px;height:15px;color:var(--text-muted);transition:transform .15s}.user-trigger.open .chevron[data-v-083361c7]{transform:rotate(180deg)}.user-dropdown[data-v-083361c7]{position:absolute;top:calc(100% + 8px);right:0;z-index:220;min-width:210px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.dropdown-header[data-v-083361c7]{display:flex;flex-direction:column;gap:2px;padding:8px 10px 10px}.dropdown-name[data-v-083361c7]{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-meta[data-v-083361c7]{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown-divider[data-v-083361c7]{height:1px;margin:0 6px 6px;background:var(--border)}.dropdown-item[data-v-083361c7]{display:block;width:100%;padding:8px 10px;border:0;border-radius:7px;background:transparent;text-align:left;font-size:13px;color:var(--text);transition:background .15s}.dropdown-item[data-v-083361c7]:hover{background:#f3f4f6}.dropdown-item.danger[data-v-083361c7]{color:var(--danger)}.dropdown-item.danger[data-v-083361c7]:hover{background:var(--danger-soft)}.avatar[data-v-083361c7]{width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:600}.user-name[data-v-083361c7]{font-size:13px;font-weight:600}.password-hint[data-v-083361c7]{margin:0;font-size:12px;color:var(--text-muted);line-height:1.6}.body[data-v-083361c7]{flex:1;display:flex;min-height:0}.sidebar[data-v-083361c7]{width:220px;flex-shrink:0;padding:12px 10px;background:var(--surface);border-right:1px solid var(--border)}.sidebar nav[data-v-083361c7]{display:flex;flex-direction:column;gap:4px}.nav-item[data-v-083361c7]{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:#374151;font-size:14px;font-weight:500;transition:background .15s,color .15s}.nav-item svg[data-v-083361c7]{width:18px;height:18px}.nav-item[data-v-083361c7]:hover{background:#f3f4f6}.nav-item.active[data-v-083361c7]{background:var(--primary-soft);color:var(--primary)}.content[data-v-083361c7]{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}:root{--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: #eff6ff;--bg: #f4f5f7;--surface: #ffffff;--border: #e5e7eb;--border-strong: #d1d5db;--text: #1f2937;--text-muted: #6b7280;--danger: #dc2626;--danger-soft: #fef2f2;--radius: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 4px 12px rgba(16, 24, 40, .1);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .16)}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font-family:Segoe UI,Microsoft YaHei,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:13px;font-weight:500;transition:background .15s,border-color .15s,color .15s}.btn:hover:not(:disabled){background:#f9fafb;border-color:#9ca3af}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:#fca5a5}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover:not(:disabled){background:#f3f4f6;border-color:transparent}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:13px;font-weight:500;color:#374151}.input{width:100%;padding:9px 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);font-size:14px;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}select.input{cursor:pointer}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:440px;padding:22px}.modal h3{margin:0 0 16px;font-size:17px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.alert-error{background:var(--danger-soft);border:1px solid #fecaca;color:#b91c1c;padding:9px 12px;border-radius:var(--radius);font-size:13px;margin-bottom:14px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:240px;color:var(--text-muted);gap:8px}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.data-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.table-wrap{overflow-x:auto}.data-table{width:100%;table-layout:fixed;border-collapse:collapse}.data-table th{position:relative;text-align:left;font-size:12px;font-weight:600;color:var(--text-muted);padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table .resizer{position:absolute;top:0;right:-4px;width:9px;height:100%;cursor:col-resize;z-index:2}.data-table .resizer:after{content:"";position:absolute;top:22%;right:4px;width:1px;height:56%;background:var(--border-strong)}.data-table .resizer:hover:after{width:2px;background:var(--primary)}.data-table td{padding:9px 14px;border-bottom:1px solid #f1f5f9;font-size:13px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#f8fafc}.data-table .center{text-align:center;color:var(--text-muted);padding:28px}.data-table .muted{color:var(--text-muted)}.panel-head{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);background:#f9fafb;font-size:13px}.panel-head .count{flex:1;font-weight:600}.panel-foot{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 16px;border-top:1px solid var(--border)}
