:root{--sidebar:#2d1b69;--sidebar-active:#4c1d95;--bg:#f6f4f6;--card:#fff;--text:#211a24;--muted:#7a7180;--line:#e7e1e7;--primary:#7c3aed;--pink:#e95780;--green:#10b981}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);margin:0;font-family:Inter,PingFang SC,system-ui,sans-serif}button,input{font:inherit}.login{background:linear-gradient(135deg,#fff2f5,#f2ecff);place-items:center;min-height:100vh;display:grid}.login-card{border:1px solid var(--line);background:var(--card);border-radius:8px;width:min(380px,100vw - 40px);padding:28px;box-shadow:0 16px 40px #2d1b691f}.brand{margin-bottom:24px;font-size:24px;font-weight:800}.login-card label{color:var(--muted);gap:8px;margin-top:14px;font-size:13px;display:grid}.login-card input{border:1px solid var(--line);border-radius:6px;height:40px;padding:0 12px}.login-card button,.actions button{background:var(--primary);color:#fff;cursor:pointer;border:0;border-radius:6px}.login-card button{width:100%;height:42px;margin-top:20px}.error{color:#dc2626;font-size:13px}.shell{grid-template-columns:240px 1fr;min-height:100vh;display:grid}aside{background:var(--sidebar);color:#fff;height:100vh;padding:16px 0;position:sticky;top:0;overflow:auto}.logo{padding:8px 20px 20px;font-size:20px;font-weight:800}aside button{color:#ffffffb8;text-align:left;cursor:pointer;background:0 0;border:0;border-left:3px solid #0000;align-items:center;gap:10px;width:100%;min-height:42px;padding:0 18px;display:flex}aside svg{width:18px;height:18px}aside button.active,aside button:hover{background:var(--sidebar-active);color:#fff}.main{min-width:0}header{border-bottom:1px solid var(--line);background:var(--card);justify-content:space-between;align-items:center;height:60px;padding:0 24px;display:flex}header h1{margin:0;font-size:18px}header div{color:var(--muted);align-items:center;gap:10px;font-size:13px;display:flex}.grid{grid-template-columns:repeat(5,minmax(150px,1fr));gap:16px;padding:24px;display:grid}.stat,.panel{border:1px solid var(--line);background:var(--card);border-radius:8px;box-shadow:0 1px 3px #0000000f}.stat{padding:18px}.stat span{color:var(--muted);font-size:12px}.stat strong{margin-top:8px;font-size:28px;display:block}.panel{margin:24px;padding:18px;overflow:auto}.panel h2{margin:0 0 10px;font-size:16px}table{border-collapse:collapse;width:100%;font-size:13px}th{color:var(--muted);text-align:left;border-bottom:2px solid var(--line);font-weight:600}td,th{vertical-align:top;padding:12px}td{border-bottom:1px solid var(--line)}.actions{white-space:nowrap}.actions button{background:var(--pink);height:30px;margin-right:8px;padding:0 10px}@media (width<=900px){.shell{grid-template-columns:1fr}aside{height:auto;position:relative}.grid{grid-template-columns:1fr}}
