*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--bg2:#1a1d26;--bg3:#242736;--border:#2e3347;--text:#e2e4ed;--muted:#7b82a0;--accent:#6c63ff;--accent2:#4ade80;--danger:#f87171;--warn:#fbbf24;color:var(--text);font-family:system-ui,sans-serif;font-size:14px}body{background:var(--bg);min-height:100vh}button{cursor:pointer;font:inherit;border:none;border-radius:6px;padding:6px 14px;transition:opacity .15s}button:hover{opacity:.85}button:disabled{opacity:.4;cursor:not-allowed}input,textarea,select{font:inherit;background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:6px;width:100%;padding:7px 10px}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);border-color:#0000}label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:12px;font-weight:500;display:block}.card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:20px}.btn-primary{background:var(--accent);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{background:var(--bg3);color:var(--text);border:1px solid var(--border)}.badge{border-radius:20px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-admin{color:#a5b4fc;background:#3730a3}.badge-dev,.badge-active{color:#86efac;background:#14532d}.badge-inactive{color:#fca5a5;background:#450a0a}.badge-exempt{color:#fde68a;background:#713f12}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);padding:8px 12px;font-size:11px}td{border-bottom:1px solid var(--border);padding:10px 12px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg3)}.modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:16px;width:100%;max-width:540px;padding:28px}.modal h2{margin-bottom:20px;font-size:18px}.form-row{gap:12px;display:flex}.form-row>*{flex:1}.form-group{margin-bottom:16px}.error-msg{color:var(--danger);margin-top:4px;font-size:12px}@keyframes slide{0%{transform:translate(-100%)}50%{transform:translate(350%)}to{transform:translate(350%)}}
