:root{--primary: #3B82F6;--primary-light: #DBEAFE;--primary-bg: #EFF6FF;--border: #E5E7EB;--text: #000000;--text-2: #6B7280;--danger: #EF4444;--shadow: 0 1px 3px rgba(0, 0, 0, .06)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);font-size:14px;background:#fff}.layout{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--primary);display:flex;flex-direction:column}.sidebar-logo{color:#fff;font-size:18px;font-weight:700;padding:24px 22px;letter-spacing:1px}.sidebar-menu{flex:1}.menu-item{display:flex;align-items:center;padding:15px 22px;color:var(--primary-light);font-size:14px;cursor:pointer;border-left:3px solid transparent;transition:background .15s}.menu-item:hover{background:#ffffff14}.menu-item.active{background:#fff;color:var(--primary);font-weight:600;border-left-color:var(--primary)}.sidebar-footer{padding:18px 22px}.sidebar-logout{color:var(--primary-light);font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.sidebar-logout:hover{color:#fff}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:60px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#fff}.topbar-title{font-size:16px;font-weight:600}.topbar-user{color:var(--text-2);font-size:13px}.page-body{padding:24px 28px}.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px}.card+.card{margin-top:16px}.card-title{font-size:15px;font-weight:600;margin-bottom:16px}.btn{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 16px;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--text);font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap}.btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:#2f6fe0;color:#fff}.btn-sm{height:28px;padding:0 10px;font-size:12px;border-radius:6px}.btn-danger-text{border:none;background:none;color:var(--danger)}.btn-danger-text:hover{background:#fff;border-color:var(--danger)}.btn:disabled{opacity:.55;cursor:not-allowed}.table{width:100%;border-collapse:collapse}.table th{text-align:left;padding:12px 14px;background:var(--primary-bg);color:var(--text);font-size:13px;font-weight:600;border-bottom:1px solid var(--border)}.table th:first-child{border-radius:8px 0 0}.table th:last-child{border-radius:0 8px 0 0}.table td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text)}.table tr:hover td{background:var(--primary-bg)}.tag{display:inline-block;padding:3px 10px;font-size:12px;border-radius:6px}.tag-ok{background:var(--primary-light);color:var(--primary)}.tag-off{background:var(--border);color:var(--text-2)}.tag-danger{background:var(--danger);color:#fff}.tag-plain{background:#fff;color:var(--text-2);border:1px solid var(--border)}.form-item{margin-bottom:16px}.form-label{display:block;font-size:13px;color:var(--text);margin-bottom:6px;font-weight:500}.form-input,.form-select{width:100%;height:38px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:13px;color:var(--text);outline:none;transition:border .15s;background:#fff}.form-input:focus,.form-select:focus{border-color:var(--primary)}.form-input::placeholder{color:var(--text-2)}.form-help{font-size:12px;color:var(--text-2);margin-top:4px}.toolbar{display:flex;gap:12px;margin-bottom:16px;align-items:center}.toolbar .form-input,.toolbar .form-select{width:220px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{width:420px;max-width:92vw;background:#fff;border-radius:14px;padding:24px;box-shadow:0 20px 60px #00000026}.modal-title{font-size:16px;font-weight:700;margin-bottom:18px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:8px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat-card{background:var(--primary-bg);border:1px solid var(--primary-light);border-radius:12px;padding:20px}.stat-value{font-size:32px;font-weight:700;color:var(--primary)}.stat-label{font-size:13px;color:var(--text-2);margin-top:6px}.stat-card.muted{background:#fff;border-color:var(--border)}.stat-card.muted .stat-value{color:var(--text)}.empty-tip{text-align:center;color:var(--text-2);padding:48px 0;font-size:13px}.toast{position:fixed;top:24px;left:50%;transform:translate(-50%);background:#000;color:#fff;font-size:13px;padding:10px 22px;border-radius:8px;z-index:200;animation:fadeIn .2s}.toast.error{background:var(--danger)}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--primary) 0%,#2f6fe0 100%)}.login-card{width:400px;background:#fff;border-radius:18px;padding:44px 40px;box-shadow:0 24px 80px #0003}.login-title{font-size:22px;font-weight:700;text-align:center}.login-sub{text-align:center;color:var(--text-2);font-size:13px;margin:8px 0 28px}.login-btn{width:100%;height:42px;border-radius:10px;font-size:15px}
