*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#0f172a;--panel:#1e293b;--panel-2:#273449;--border:#334155;--text:#e2e8f0;--muted:#94a3b8;--accent:#6366f1;--accent-2:#818cf8;--green:#22c55e;--red:#ef4444;--amber:#f59e0b}body,html{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}a{color:var(--accent-2);text-decoration:none}button{cursor:pointer}button,input,select{font-family:inherit}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:36px}.login-card h1{font-size:22px;margin-bottom:6px}.login-card .sub{color:var(--muted);margin-bottom:24px;font-size:13px}.field{margin-bottom:16px}.field label{display:block;margin-bottom:6px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.field input,.field select{width:100%;padding:11px 13px;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;color:var(--text);font-size:14px}.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}.btn{width:100%;padding:12px;background:var(--accent);color:#fff;border:none;border-radius:9px;font-weight:600;font-size:14px}.btn:hover{background:var(--accent-2)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{width:auto;padding:6px 12px;font-size:12px;border-radius:7px}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{background:var(--panel-2)}.btn-danger{background:var(--red)}.notice{padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:16px}.notice.ok{background:rgba(34,197,94,.12);color:#4ade80}.notice.err{background:rgba(239,68,68,.12);color:#f87171}.shell{display:flex;min-height:100vh}.sidebar{width:224px;background:var(--panel);border-right:1px solid var(--border);padding:20px 12px;flex-shrink:0}.brand{font-weight:700;font-size:16px;padding:8px 12px 20px}.brand span{color:var(--accent-2)}.nav-item{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:8px;background:transparent;border:none;color:var(--muted);font-size:13px;margin-bottom:2px}.nav-item:hover{background:var(--panel-2);color:var(--text)}.nav-item.active{background:var(--accent);color:#fff}.main{flex:1 1;padding:28px 32px;overflow-x:auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.topbar h2{font-size:20px}.topbar .who{color:var(--muted);font-size:13px}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:14px;gap:14px;margin-bottom:24px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px}.stat .v{font-size:26px;font-weight:700}.stat .l{color:var(--muted);font-size:12px;margin-top:4px;text-transform:uppercase;letter-spacing:.04em}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td,th{padding:12px 14px;border-bottom:1px solid var(--border)}td{vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:var(--panel-2)}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:600}.badge.green{background:rgba(34,197,94,.15);color:#4ade80}.badge.amber{background:rgba(245,158,11,.15);color:#fbbf24}.badge.red{background:rgba(239,68,68,.15);color:#f87171}.badge.gray{background:rgba(148,163,184,.15);color:var(--muted)}.toolbar{display:flex;gap:10px;align-items:center;padding:14px;border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar input,.toolbar select{padding:8px 11px;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px}.pager{display:flex;gap:8px;align-items:center;padding:14px;justify-content:flex-end;font-size:13px}.empty,.pager{color:var(--muted)}.empty{padding:40px;text-align:center}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:26px;width:100%;max-width:460px}.modal h3{margin-bottom:18px}.row{display:flex;gap:10px}.row>*{flex:1 1}.spinner{padding:40px;text-align:center;color:var(--muted)}