:root{--bg: #eef2f4;--surface: #ffffff;--ink: #152028;--muted: #5c6b76;--line: #d5dee5;--accent: #0f6e6e;--accent-text: #fff;--danger: #b42318;--warn: #b54708;--ok: #067647;--font: "IBM Plex Sans", "Segoe UI", sans-serif;--mono: "IBM Plex Mono", "Consolas", monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(1200px 500px at 10% -10%,#d7ebe8 0%,transparent 55%),radial-gradient(900px 400px at 100% 0%,#dde5ee 0%,transparent 50%),var(--bg);color:var(--ink);font-family:var(--font);line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0 0 10px;letter-spacing:-.03em}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);padding:28px}.login-card label{display:block;margin:12px 0 6px;color:var(--muted);font-size:13px}.login-card input{width:100%;padding:10px 12px;border:1px solid var(--line);background:#f8fafb}.login-card button{margin-top:18px;width:100%;padding:11px 14px;border:0;background:var(--accent);color:var(--accent-text);cursor:pointer}.login-card .err{color:var(--danger);margin-top:10px;font-size:14px}.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.side{background:#123038;color:#e8f2f2;padding:22px 14px;display:flex;flex-direction:column;gap:8px}.side h1{font-size:18px;margin:0 8px 18px}.side h1 small{display:block;margin-top:4px;font-size:12px;font-weight:500;color:#9bb7b7}.side button{text-align:left;background:transparent;border:0;color:inherit;padding:10px 12px;cursor:pointer;border-radius:8px}.side button.is-on{background:#ffffff1a}.side .logout{margin-top:auto;opacity:.8}.main{padding:24px 28px 40px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}.stat{background:var(--surface);border:1px solid var(--line);padding:14px 16px}.stat b{display:block;font-size:24px;letter-spacing:-.04em}.stat span{color:var(--muted);font-size:13px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.toolbar input[type=search],.toolbar input:not([type]),.form-grid input,.form-grid select,.form-grid textarea{padding:9px 11px;border:1px solid var(--line);background:var(--surface);min-width:200px}.btn{padding:9px 14px;border:1px solid var(--line);background:var(--surface);cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.danger{color:var(--danger);border-color:#f0c2bd}.btn.warn{color:var(--warn)}.table-wrap{background:var(--surface);border:1px solid var(--line);overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:#f7fafb}.key{font-family:var(--mono);font-size:12px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid var(--line)}.badge.ACTIVE{color:var(--ok);border-color:#abefc6;background:#ecfdf3}.badge.REVOKED{color:var(--danger);border-color:#fecdca;background:#fef3f2}.badge.SUSPENDED{color:var(--warn);border-color:#f9dbaf;background:#fffaeb}.panel{background:var(--surface);border:1px solid var(--line);padding:18px;margin-top:16px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.form-grid .full{grid-column:1 / -1}.checks{display:flex;flex-wrap:wrap;gap:12px 18px}.checks label{flex-direction:row;align-items:center;color:var(--ink)}.muted{color:var(--muted);font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.mono{font-family:var(--mono);font-size:12px}@media(max-width:860px){.shell{grid-template-columns:1fr}.side{position:sticky;top:0;z-index:2}}
