:root{--bg:#0d1117;--bg-2:#161b22;--bg-3:#1c2230;--border:#2a3038;--text:#e6edf3;--text-dim:#8b949e;--accent:#4f8cff;--accent-dim:#1f3a66;--green:#3fb950;--yellow:#d29922;--red:#f85149;--orange:#db6d28}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}textarea{resize:vertical;min-height:64px}.app{display:flex;min-height:100vh}.sidebar{width:230px;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;height:100vh}.brand{padding:18px 20px;border-bottom:1px solid var(--border)}.brand h1{font-size:15px;font-weight:600}.brand span{color:var(--text-dim);font-size:11px}.nav{flex:1 1;padding:10px 0;overflow-y:auto}.nav a{display:flex;align-items:center;gap:10px;padding:9px 20px;color:var(--text-dim);font-size:13.5px}.nav a:hover{background:var(--bg-3);color:var(--text)}.nav a.active{background:var(--accent-dim);color:var(--text);border-left:3px solid var(--accent);padding-left:17px}.nav .ico{width:18px;text-align:center}.sidebar-foot{padding:14px 20px;border-top:1px solid var(--border);font-size:12px;color:var(--text-dim)}.sidebar-foot button{background:none;border:none;color:var(--accent);padding:0;font-size:12px}.main{margin-left:230px;flex:1 1;padding:26px 32px;max-width:1400px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-head h2{font-size:20px;font-weight:600}.page-head .sub{color:var(--text-dim);font-size:13px;margin-top:2px}.btn{background:var(--bg-3);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 14px;font-size:13px}.btn-primary,.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.9}.btn-danger{color:var(--red);border-color:var(--red);background:transparent}.btn-sm{padding:4px 9px;font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px;margin-bottom:24px}.card{background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:14px 16px}.card .n{font-size:26px;font-weight:700}.card .l{color:var(--text-dim);font-size:12px;margin-top:2px}.card.clickable:hover{border-color:var(--accent);cursor:pointer}.panel{background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:16px 18px;margin-bottom:18px}.panel h3{font-size:14px;margin-bottom:12px}table{width:100%;border-collapse:collapse}.tbl{background:var(--bg-2);border:1px solid var(--border);border-radius:8px;overflow:hidden}.tbl th{text-align:left;font-size:11px;text-transform:uppercase;color:var(--text-dim);letter-spacing:.04em}.tbl td,.tbl th{padding:10px 14px;border-bottom:1px solid var(--border)}.tbl td{font-size:13px}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr:hover{background:var(--bg-3);cursor:pointer}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}.badge.green{background:rgba(63,185,80,.16);color:var(--green)}.badge.yellow{background:rgba(210,153,34,.16);color:var(--yellow)}.badge.red{background:rgba(248,81,73,.16);color:var(--red)}.badge.orange{background:rgba(219,109,40,.16);color:var(--orange)}.badge.gray{background:var(--bg-3);color:var(--text-dim)}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:40}.drawer{position:fixed;top:0;right:0;height:100vh;width:460px;z-index:50;background:var(--bg-2);border-left:1px solid var(--border);display:flex;flex-direction:column}.drawer-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.drawer-body{padding:18px 20px;overflow-y:auto;flex:1 1}.drawer-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:10px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:5px}.field .row{gap:8px}.field .row,.login-wrap{display:flex;align-items:center}.login-wrap{justify-content:center;min-height:100vh}.login-box{background:var(--bg-2);border:1px solid var(--border);border-radius:10px;padding:32px;width:360px}.login-box h1{font-size:18px;margin-bottom:4px}.login-box .sub{color:var(--text-dim);font-size:13px;margin-bottom:22px}.login-box .field{margin-bottom:16px}.err{color:var(--red)}.err,.ok{font-size:13px;margin-top:10px}.ok{color:var(--green)}.muted{color:var(--text-dim)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.empty{color:var(--text-dim);padding:40px;text-align:center}