*{box-sizing:border-box}
body{margin:0;font:14px/1.6 'Microsoft YaHei',Segoe UI;background:#F5F8FF;color:#1F2937}
a{color:#2F6BFF;text-decoration:none}
a:hover{text-decoration:underline}
.nav{position:fixed;left:0;top:0;bottom:0;width:180px;background:#2F6BFF;color:#fff;padding:18px 12px}
.nav .brand{font-size:17px;font-weight:700;margin:0 0 4px 8px}
.nav .sub{font-size:12px;opacity:.75;margin:0 0 22px 8px}
.nav a{display:block;color:#fff;padding:9px 12px;border-radius:8px;margin-bottom:4px;font-size:13.5px}
.nav a.on{background:#1E5AE0}
.nav a:hover{background:rgba(255,255,255,.12);text-decoration:none}
.main{margin-left:180px;padding:22px 26px 40px}
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.top h1{font-size:19px;margin:0}
.top .who{font-size:12.5px;color:#6B7280}
.card{background:#fff;border:1px solid #EBEEF3;border-radius:12px;padding:18px 20px;margin-bottom:16px}
.card h2{font-size:14px;margin:0 0 14px;padding-left:10px;border-left:3px solid #2F6BFF}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:#6B7280;font-weight:600;background:#FAFBFD;padding:9px 10px;border-bottom:1px solid #EEF1F6}
td{padding:9px 10px;border-bottom:1px solid #F3F5F9;vertical-align:middle}
tr:hover td{background:#FAFCFF}
input[type=text],input[type=password],input[type=number],select{padding:7px 9px;border:1px solid #DDE3EC;border-radius:7px;font:13px 'Microsoft YaHei';outline:none;background:#fff}
input[type=text]:focus,input[type=password]:focus{border-color:#2F6BFF}
button,.btn{background:#2F6BFF;color:#fff;border:0;border-radius:7px;padding:8px 14px;font:13px 'Microsoft YaHei';cursor:pointer}
button:hover{background:#1E5AE0}
.btn2{background:#EEF3FF;color:#2F6BFF;border:0;border-radius:7px;padding:6px 11px;font:12.5px 'Microsoft YaHei';cursor:pointer}
.btn2:hover{background:#E2EBFF}
.btn3{background:#FFF1F0;color:#D93026;border:0;border-radius:7px;padding:6px 11px;font:12.5px 'Microsoft YaHei';cursor:pointer}
.btn3:hover{background:#FFE3E0}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px}
.ok{background:#E7F7EE;color:#12805C}
.off{background:#F1F3F7;color:#6B7280}
.warn{background:#FFF4E5;color:#B25E09}
.deny{background:#FFF1F0;color:#D93026}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:#fff;border:1px solid #EBEEF3;border-radius:12px;padding:16px 18px}
.kpi .n{font-size:26px;font-weight:700;color:#2F6BFF}
.kpi .l{font-size:12.5px;color:#6B7280}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.note{background:#FFF8E6;border:1px solid #F5E2B8;color:#8A5A00;padding:10px 12px;border-radius:8px;font-size:12.5px;margin-bottom:14px}
.note.err{background:#FFF1F0;border-color:#FFD6D2;color:#B3261E}
.note.ok{background:#E7F7EE;border-color:#BFE8D5;color:#12805C}
.mono{font-family:Consolas,monospace}
.login{width:340px;margin:100px auto}
.login h1{font-size:20px;text-align:center;margin-bottom:20px}
.login input{width:100%;margin-bottom:12px}
.login button{width:100%}
.pager{margin-top:10px;font-size:13px;color:#6B7280}
