:root{--c-bg:#f6f7f9;--c-card:#fff;--c-border:#e5e7eb;--c-text:#1f2937;--c-muted:#6b7280;--c-primary:#4f46e5;--c-ok:#059669;--c-warn:#d97706;--c-danger:#dc2626}*{box-sizing:border-box}body{background:var(--c-bg);color:var(--c-text);margin:0;font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}a{color:var(--c-primary);text-decoration:none}.layout{min-height:100vh;display:flex}.sidebar{color:#e5e7eb;background:#111827;flex:none;width:190px;padding:18px 12px}.sidebar h1{color:#fff;letter-spacing:.5px;margin:0 0 18px;padding:0 8px;font-size:15px}.sidebar nav a{color:#cbd5e1;border-radius:8px;margin-bottom:4px;padding:9px 12px;font-size:13.5px;display:block}.sidebar nav a:hover{color:#fff;background:#1f2937}.sidebar nav a.router-link-active{background:var(--c-primary);color:#fff}.main{flex:1;min-width:0;padding:22px 26px 60px}.page-title{margin:0 0 4px;font-size:19px;font-weight:600}.page-desc{color:var(--c-muted);margin:0 0 18px;font-size:13px}.card{background:var(--c-card);border:1px solid var(--c-border);border-radius:12px;margin-bottom:16px;padding:16px 18px}.card>h2{margin:0 0 12px;font-size:15px}.stats{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.stat{background:var(--c-card);border:1px solid var(--c-border);border-radius:12px;padding:14px 16px}.stat .label{color:var(--c-muted);font-size:12px}.stat .value{margin-top:4px;font-size:24px;font-weight:600}.btn{border:1px solid var(--c-border);color:var(--c-text);cursor:pointer;background:#fff;border-radius:8px;padding:7px 14px;font-size:13px;transition:all .15s}.btn:hover:not(:disabled){border-color:#9ca3af}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn--ok{background:var(--c-ok);border-color:var(--c-ok);color:#fff}.btn--danger{background:var(--c-danger);border-color:var(--c-danger);color:#fff}.btn--sm{padding:4px 10px;font-size:12px}.table{border-collapse:collapse;width:100%;font-size:13px}.table th,.table td{text-align:left;border-bottom:1px solid var(--c-border);vertical-align:top;padding:9px 10px}.table td.mono{overflow-wrap:anywhere;font-size:12px;line-height:1.5}.table td.nowrap,.table th{white-space:nowrap}.table .sub{color:var(--c-muted);margin-top:2px;font-size:11.5px}.card:has(>.table){overflow-x:auto}.table th{color:var(--c-muted);background:#fafafa;font-size:12px;font-weight:500}.table tr:hover td{background:#fafbff}.badge{color:var(--c-muted);background:#f3f4f6;border-radius:999px;padding:2px 9px;font-size:12px;display:inline-block}.badge--ok{color:var(--c-ok);background:#ecfdf5}.badge--warn{color:var(--c-warn);background:#fffbeb}.badge--danger{color:var(--c-danger);background:#fef2f2}.badge--info{color:#2563eb;background:#eff6ff}.field{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.field>label{width:110px;color:var(--c-muted);flex:none;font-size:13px}.field input[type=text],.field input[type=number],.field select,.field textarea{border:1px solid var(--c-border);border-radius:8px;outline:none;flex:1;padding:8px 11px;font-family:inherit;font-size:13.5px}.field textarea{resize:vertical;min-height:120px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--c-primary)}.hint{color:var(--c-muted);font-size:12px}.field>.hint{flex:0 0 calc(100% - 122px);margin:2px 0 0 122px;line-height:1.7}@media (width<=900px){.field>.hint{flex-basis:100%;margin-left:0}}.empty{color:var(--c-muted);text-align:center;padding:22px 0}.muted{color:var(--c-muted)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.mt{margin-top:12px}
