:root{--primary:#1677ff;--primary-light:#e8f3ff;--page-bg:#f5f7fa;--content-bg:#fff;--border:#e5e7eb;--border-soft:#ebeef5;--text:#303133;--text-regular:#606266;--text-secondary:#909399;--danger:#f56c6c;--success:#67c23a;--warning:#e6a23c;color:var(--text);background:var(--page-bg);font-family:Microsoft YaHei,微软雅黑,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--page-bg);margin:0}button,input,select{font:inherit}button{cursor:pointer}.shell{background:var(--page-bg);grid-template-columns:210px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--content-bg);border-right:1px solid var(--border);height:100vh;position:sticky;top:0;box-shadow:2px 0 8px #0015290a}.brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;height:50px;padding:0 16px;display:flex}.brand span{background:var(--primary);color:#fff;border-radius:6px;place-items:center;width:30px;height:30px;font-weight:800;display:grid}.brand b,.brand small{line-height:1.2;display:block}.brand b{font-size:15px}.brand small{color:var(--text-secondary);margin-top:2px;font-size:12px}nav{padding:12px 10px}nav button{width:100%;height:42px;color:var(--text-regular);text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;margin:4px 0;padding:0 12px;display:flex}nav button i{color:#8a8f99;background:#f2f3f5;border-radius:5px;place-items:center;width:22px;height:22px;font-size:12px;font-style:normal;font-weight:700;display:grid}nav button.active,nav button:hover{background:var(--primary-light);color:var(--primary)}nav button.active i,nav button:hover i{background:var(--primary);color:#fff}.logout{height:38px;color:var(--text-regular);border-radius:6px;align-items:center;padding:0 12px;text-decoration:none;display:flex;position:absolute;bottom:12px;left:10px;right:10px}.logout:hover{color:var(--primary);background:#f5f7fa}.content{min-width:0}.navbar{z-index:10;background:var(--content-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;height:50px;padding:0 16px;display:flex;position:sticky;top:0;box-shadow:0 1px 4px #0015290a}.navbar-left,.navbar-actions{align-items:center;gap:12px;display:flex}.fold-btn{width:32px;height:32px;color:var(--text-regular);background:0 0;border:0;border-radius:4px;font-size:17px}.fold-btn:hover{color:var(--primary);background:#f5f7fa}.breadcrumb{color:var(--text-regular);font-size:14px}.admin-dot{color:var(--text-secondary);font-size:13px}.page-container{padding:16px}.page-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px;display:flex}.page-head h1{color:var(--text);margin:0 0 6px;font-size:22px;font-weight:650;line-height:1.3}.page-head p{color:var(--text-secondary);margin:0;font-size:13px}.head-tag,.badge{border-radius:4px;align-items:center;padding:3px 8px;font-size:12px;font-weight:600;line-height:1.4;display:inline-flex}.head-tag{color:#409eff;background:#ecf5ff;border:1px solid #b3d8ff}.notice{color:#529b2e;background:#f0f9eb;border:1px solid #b3e19d;border-radius:4px;margin-bottom:12px;padding:10px 12px;font-size:14px;font-weight:600}.page{gap:12px;display:grid}.page-search,.page-content{background:var(--content-bg);border:1px solid var(--border-soft);border-radius:4px;box-shadow:0 1px 2px #00000005}.page-search{padding:16px 16px 8px}.search-form{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.search-form label{color:var(--text-regular);font-size:14px}.search-form input{width:min(360px,100%)}.page-content{padding:16px;overflow:hidden}.page-toolbar,.content-title{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.page-toolbar h2,.content-title h2,.modal-head h2,.drawer h3{color:var(--text);margin:0 0 4px;font-size:16px;font-weight:650}.page-toolbar p,.content-title p,.modal-head p{color:var(--text-secondary);margin:0;font-size:13px}.stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.stats article{background:var(--content-bg);border:1px solid var(--border-soft);border-radius:4px;min-height:98px;padding:16px}.stats small{color:var(--text-secondary);font-size:13px}.stats strong{color:#1f2d3d;margin-top:10px;font-size:30px;font-weight:650;line-height:1;display:block}.command-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.command-grid span,.operator-row span{color:#337ecc;background:#f4f8ff;border:1px solid #d9ecff;border-radius:4px;padding:8px 10px;font-weight:600}.settings-panel{max-width:620px}.settings-form{gap:8px;display:grid}.settings-form label{color:var(--text-regular);margin-top:8px;font-size:13px;font-weight:600}.settings-form input{width:100%;max-width:420px}.form-actions{margin-top:10px}input,select{min-width:0;height:32px;color:var(--text);background:#fff;border:1px solid #dcdfe6;border-radius:4px;padding:0 11px;font-size:14px;transition:border-color .15s,box-shadow .15s}select{min-width:260px}input:focus,select:focus{border-color:#409eff;outline:0;box-shadow:0 0 0 2px #409eff1f}button:disabled{cursor:not-allowed;opacity:.55}.btn{height:32px;box-shadow:none;background:#fff;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.btn-primary{border-color:var(--primary);background:var(--primary);color:#fff}.btn-primary:hover{background:#409eff;border-color:#409eff}.btn-default{color:var(--text-regular);border-color:#dcdfe6}.btn-default:hover{color:#409eff;background:#ecf5ff;border-color:#c6e2ff}.btn-link,.btn-danger-link{background:0 0;border:0;height:auto;padding:0}.btn-link{color:var(--primary)}.btn-danger-link{color:var(--danger)}table{border-collapse:collapse;border:1px solid var(--border-soft);width:100%;font-size:14px}th,td{border:1px solid var(--border-soft);text-align:left;vertical-align:middle;padding:10px 12px}th{color:var(--text-regular);background:#f5f7fa;font-weight:650}tbody tr:nth-child(2n){background:#fafafa}tbody tr:hover{background:#f5faff}.row-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.operator-row{flex-wrap:wrap;gap:8px;display:flex}.mono{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.empty,.empty-cell{text-align:center;color:var(--text-secondary);padding:28px}.ok{color:#529b2e;background:#f0f9eb;border:1px solid #b3e19d}.neutral,.info{color:#73767a;background:#f4f4f5;border:1px solid #dcdfe6}.danger{color:#c45656;background:#fef0f0;border:1px solid #fab6b6}.modal-mask,.drawer-mask{z-index:30;background:#00000073;position:fixed;inset:0}.modal-mask{place-items:center;padding:20px;display:grid}.modal{background:#fff;border-radius:4px;width:min(560px,94vw);max-height:90vh;overflow:auto;box-shadow:0 12px 32px #00000038}.modal.small{width:min(420px,94vw)}.modal-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:18px 20px 10px;display:flex}.icon-btn{width:28px;height:28px;color:var(--text-secondary);background:0 0;border:0;border-radius:4px;place-items:center;padding:0;font-size:22px;display:grid}.icon-btn:hover{color:var(--text);background:#f5f7fa}.modal label{color:var(--text-regular);margin:12px 20px 7px;font-size:13px;font-weight:600;display:block}.modal input{width:calc(100% - 40px);margin:0 20px}.two-cols{grid-template-columns:1fr 1fr;gap:0;display:grid}.modal-actions{border-top:1px solid var(--border-soft);background:#f7f8fa;justify-content:flex-end;gap:10px;margin-top:18px;padding:12px 20px;display:flex}.drawer-mask{justify-content:flex-end;display:flex}.drawer{background:#fff;width:min(520px,94vw);height:100vh;padding-bottom:24px;overflow:auto;box-shadow:-6px 0 18px #0000001f}.drawer>h3{margin-top:18px;padding:0 20px}.detail-card{border:1px solid var(--border-soft);background:#f8fafc;border-radius:4px;gap:12px;margin:4px 20px 18px;padding:14px;display:grid}.kv-list{border:1px solid var(--border-soft);border-radius:4px;margin:0 20px 20px;display:grid}.kv-list div{border-bottom:1px solid var(--border-soft);justify-content:space-between;gap:12px;padding:11px 12px;display:flex}.kv-list div:last-child{border-bottom:0}.kv-list span,td small{color:var(--text-secondary)}.kv-list b{text-align:right;word-break:break-all}.drawer .operator-row{margin:0 20px}@media (width<=900px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}nav{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.logout{margin:0 10px 12px;position:static}.navbar,.page-head,.page-toolbar,.content-title{flex-direction:column;align-items:flex-start;height:auto}.navbar{padding:10px 16px}.search-form input{width:100%}.search-form select{width:100%;min-width:0}.two-cols{grid-template-columns:1fr}}
