:root{--bg:#0a0c10;--bg2:#0f1117;--card:#151821;--card-hover:#1a1e2a;--border:#1e2231;--border-focus:#3d4463;--accent:#6c5ce7;--accent-h:#7f6ef0;--accent-soft:#6c5ce71f;--text:#e4e4ec;--text2:#b0b0c0;--dim:#6b6f80;--red:#e74c3c;--red-soft:#e74c3c1f;--green:#2ecc71;--green-soft:#2ecc711f;--yellow:#f39c12;--yellow-soft:#f39c121f;--blue:#3498db;--blue-soft:#3498db1f;--radius:8px;--radius-lg:12px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}.app-layout{min-height:100vh;display:flex}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;width:220px;height:100vh;min-height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-logo{color:var(--accent);letter-spacing:-.3px;align-items:center;gap:8px;padding:20px 18px;font-size:15px;font-weight:700;display:flex}.sidebar-logo span{font-size:18px}.sidebar-nav{flex:1;padding:4px 8px}.sidebar-item{border-radius:var(--radius);color:var(--text2);cursor:pointer;align-items:center;gap:10px;margin-bottom:2px;padding:9px 12px;font-size:13px;transition:all .12s;display:flex}.sidebar-item:hover{background:var(--card);color:var(--text)}.sidebar-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.sidebar-item .icon{text-align:center;opacity:.7;width:20px;font-size:15px}.sidebar-item.active .icon{opacity:1}.sidebar-badge{background:var(--red);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:auto;padding:0 5px;font-size:10px;font-weight:700;line-height:18px}.sidebar-footer{border-top:1px solid var(--border);padding:12px 18px}.sidebar-user{color:var(--dim);margin-bottom:6px;font-size:11px}.sidebar-user strong{color:var(--text2);font-weight:600}.main-content{flex:1;min-width:0;padding:24px 32px;overflow-y:auto}.page-title{margin-bottom:4px;font-size:20px;font-weight:700}.page-subtitle{color:var(--dim);margin-bottom:20px;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:20px;transition:border-color .15s}.card:hover{border-color:var(--border-focus)}.card h2{align-items:center;gap:8px;margin-bottom:14px;font-size:14px;font-weight:600;display:flex}.card h2 .count{color:var(--dim);font-size:11px;font-weight:400}.card-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.card-header h2{margin-bottom:0}.form-row{flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:10px;display:flex}label{color:var(--dim);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:11px;font-weight:500;display:block}input[type=text],input[type=number],input[type=password],input[type=email],select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);width:100%;padding:8px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}textarea{resize:vertical;min-height:60px}.field{flex:1;min-width:140px}.btn{background:var(--accent);color:#fff;border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;transition:all .12s;display:inline-flex}.btn:hover{background:var(--accent-h);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.4;cursor:default;transform:none}.btn-red{background:var(--red)}.btn-red:hover{background:#c0392b}.btn-green{background:var(--green)}.btn-green:hover{background:#27ae60}.btn-yellow{background:var(--yellow);color:#000}.btn-yellow:hover{background:#e67e22}.btn-blue{background:var(--blue)}.btn-blue:hover{background:#2980b9}.btn-sm{padding:5px 10px;font-size:11px}.btn-ghost{border:1px solid var(--border);color:var(--dim);background:0 0;font-weight:500}.btn-ghost:hover{color:var(--text);border-color:var(--dim);background:var(--card)}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;color:var(--dim);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border);background:var(--card);padding:8px 10px;font-size:11px;font-weight:500;position:sticky;top:0}td{border-bottom:1px solid var(--border);padding:8px 10px}tr{transition:background .1s}tr:hover td{background:var(--card-hover)}tr:last-child td{border-bottom:none}.scroll-table{border:1px solid var(--border);border-radius:var(--radius);max-height:520px;overflow-y:auto}.table-empty{text-align:center;color:var(--dim);padding:32px;font-size:13px}.badge{text-transform:uppercase;letter-spacing:.3px;border-radius:4px;align-items:center;gap:4px;padding:3px 8px;font-size:10px;font-weight:600;display:inline-flex}.badge-active{background:var(--green-soft);color:var(--green)}.badge-inactive{color:var(--dim);background:#6b6f8026}.badge-revoked{background:var(--red-soft);color:var(--red)}.badge-banned{color:var(--red);background:#e74c3c33}.badge-expired{background:var(--yellow-soft);color:var(--yellow)}.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px;display:grid}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;padding:18px;transition:border-color .15s}.stat:hover{border-color:var(--border-focus)}.stat .val{letter-spacing:-1px;margin-bottom:2px;font-size:30px;font-weight:800}.stat .lbl{color:var(--dim);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:500}.stat.green .val{color:var(--green)}.stat.red .val{color:var(--red)}.stat.yellow .val{color:var(--yellow)}.stat.blue .val{color:var(--blue)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.toolbar input,.toolbar select{width:auto;min-width:180px}.toolbar .spacer{flex:1}.alerts{gap:8px;display:grid}.alert{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);border-left-width:4px;padding:12px 14px}.alert-warning{border-left-color:var(--yellow);background:#f39c120d}.alert-critical{border-left-color:var(--red);background:#e74c3c0d}.alert-head{justify-content:space-between;align-items:center;margin-bottom:4px;font-size:12px;font-weight:600;display:flex}.alert-sev{text-transform:uppercase;letter-spacing:.5px;font-size:10px}.alert-warning .alert-sev{color:var(--yellow)}.alert-critical .alert-sev{color:var(--red)}.alert-detail{color:var(--text2);word-break:break-word;font-size:12px}.alert-empty{color:var(--dim);font-size:12px}.mono{font-family:JetBrains Mono,Cascadia Code,Fira Code,monospace;font-size:11px}.copy{cursor:pointer;opacity:.5;transition:opacity .12s}.copy:hover{opacity:1}.gen-output{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);white-space:pre;max-height:180px;margin-top:8px;padding:10px;font-family:monospace;font-size:11px;overflow-y:auto}.pagination{color:var(--dim);justify-content:center;align-items:center;gap:8px;margin-top:12px;font-size:12px;display:flex}.modal-bg{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9998;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);width:520px;max-width:92vw;max-height:85vh;padding:24px;overflow-y:auto;box-shadow:0 20px 60px #0006}.modal h3{margin-bottom:16px;font-size:16px;font-weight:700}.modal .actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.modal-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;font-size:12px;display:grid}.modal-grid .label{color:var(--dim);text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:10px}.toast{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);z-index:9999;opacity:0;pointer-events:none;padding:12px 20px;font-size:13px;transition:opacity .25s;position:fixed;top:16px;right:16px;box-shadow:0 8px 32px #0000004d}.toast.show{opacity:1}.login-wrapper{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);width:400px;padding:40px}.login-card h1{margin-bottom:4px;font-size:22px;font-weight:800}.login-card .subtitle{color:var(--dim);margin-bottom:28px;font-size:13px}.login-card .divider{text-align:center;color:var(--dim);margin:16px 0;font-size:11px;position:relative}.login-card .divider:before,.login-card .divider:after{content:"";background:var(--border);width:40%;height:1px;position:absolute;top:50%}.login-card .divider:before{left:0}.login-card .divider:after{right:0}.login-error{color:var(--red);min-height:18px;margin-top:8px;font-size:12px}@media (width<=768px){.sidebar{display:none}.main-content{padding:16px}.stats{grid-template-columns:repeat(2,1fr)}.form-row{flex-direction:column}.field{min-width:100%}}
