:root{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2330;--border:#2a3240;--text:#e6edf3;--muted:#8b97a7;--accent:#4f8cff;--ok:#3fb950;--warn:#d29922;--err:#f85149}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}.layout{min-height:100vh;display:flex}.sidebar{background:var(--panel);border-right:1px solid var(--border);flex-shrink:0;width:220px;padding:20px 12px}.sidebar .logo{color:var(--text);padding:0 8px 20px;font-size:18px;font-weight:700}.sidebar .logo span{color:var(--accent)}.nav-item{color:var(--muted);cursor:pointer;border-radius:6px;margin-bottom:2px;padding:9px 12px;display:block}.nav-item:hover{background:var(--panel-2);color:var(--text)}.nav-item.active{background:var(--accent);color:#fff}.content{flex:1;padding:24px 32px;overflow-x:auto}.page-title{margin-bottom:4px;font-size:22px;font-weight:600}.page-sub{color:var(--muted);margin-bottom:24px}.grid{gap:16px;display:grid}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:18px}.card h3{color:var(--muted);margin-bottom:8px;font-size:13px;font-weight:500}.card .big{font-size:28px;font-weight:700}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;font-weight:500}td{border-bottom:1px solid var(--border);padding:9px 10px}tr:hover td{background:var(--panel-2)}.badge{border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600}.badge.done,.badge.online{color:var(--ok);background:#3fb95026}.badge.running,.badge.busy{color:var(--accent);background:#4f8cff26}.badge.pending,.badge.assigned{color:var(--warn);background:#d2992226}.badge.failed,.badge.offline{color:var(--err);background:#f8514926}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:9px 16px;font-size:13px;font-weight:500}button:hover{opacity:.9}button.ghost{border:1px solid var(--border);color:var(--text);background:0 0}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;width:100%;padding:9px 12px;font-family:inherit;font-size:13px}label{color:var(--muted);margin:12px 0 5px;font-size:12px;display:block}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.mt{margin-top:16px}.empty{color:var(--muted);text-align:center;padding:40px}.mono{font-family:ui-monospace,monospace;font-size:12px}.muted{color:var(--muted)}.steps{counter-reset:step}.step{border-bottom:1px solid var(--border);gap:14px;padding:14px 0;display:flex}.step .num{background:var(--panel-2);border:1px solid var(--border);width:26px;height:26px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:flex}.step.done .num{background:var(--ok);color:#fff;border-color:var(--ok)}.step.running .num{background:var(--accent);color:#fff;border-color:var(--accent)}.progress{background:var(--panel-2);border-radius:3px;height:6px;margin-top:10px;overflow:hidden}.progress>div{background:var(--accent);height:100%;transition:width .4s}pre.json{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:14px;font-size:12px;line-height:1.5;overflow-x:auto}
