:root{--bg: #0a0c0f;--bg-elevated: #10141a;--surface: #141a22;--surface-2: #1a222d;--line: rgba(148, 163, 184, .14);--line-strong: rgba(148, 163, 184, .28);--text: #eef2f7;--muted: #8b97a8;--accent: #2ec4a6;--accent-dim: rgba(46, 196, 166, .14);--accent-text: #1a3d36;--danger: #f07178;--danger-dim: rgba(240, 113, 120, .14);--ok: #3dd68c;--ok-dim: rgba(61, 214, 140, .14);--warn: #e6b84d;--warn-dim: rgba(230, 184, 77, .14);--radius: 12px;--radius-sm: 8px;--font: "Outfit", sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace;--shadow: 0 18px 50px rgba(0, 0, 0, .35);color-scheme:dark;font-family:var(--font)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{color:var(--text);background:radial-gradient(ellipse 90% 55% at 10% -10%,rgba(46,196,166,.12),transparent 55%),radial-gradient(ellipse 70% 45% at 100% 0%,rgba(56,120,180,.1),transparent 50%),linear-gradient(180deg,#0d1117 0%,var(--bg) 40%,#080a0d 100%);background-attachment:fixed}button,input,select,textarea{font:inherit;color:inherit}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .12s ease,opacity .15s ease}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px 13px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{border-color:#2ec4a68c;box-shadow:0 0 0 3px var(--accent-dim)}input::placeholder{color:#5f6b7a}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.02em}.muted{color:var(--muted)}.mono{font-family:var(--mono);font-size:.9em;letter-spacing:-.02em}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;position:relative;overflow:hidden}.login-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(148,163,184,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.04) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 30% 40%,#000 20%,transparent 75%);mask-image:radial-gradient(ellipse 70% 60% at 30% 40%,#000 20%,transparent 75%);pointer-events:none}.login-brand{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(32px,6vw,72px);z-index:1}.login-brand .mark{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#3dd9b8,#1f8f78);color:#06241e;font-weight:700;font-size:18px;margin-bottom:28px;animation:rise .7s ease both}.login-brand h1{font-size:clamp(2.6rem,5vw,4.2rem);line-height:.95;max-width:9ch;animation:rise .7s ease .06s both}.login-brand p{margin:18px 0 0;max-width:34ch;color:var(--muted);font-size:1.05rem;line-height:1.5;animation:rise .7s ease .12s both}.login-panel{position:relative;z-index:1;display:grid;place-items:center;padding:32px;background:linear-gradient(180deg,#141a228c,#0a0c0fbf);border-left:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade-in .5s ease .1s both}.login-card{width:min(400px,100%);display:grid;gap:14px}.login-card h2{font-size:1.45rem}.login-card .field{display:grid;gap:6px}.login-card label{font-size:.82rem;color:var(--muted);font-weight:500}.btn-primary{background:var(--accent);color:var(--accent-text);border-radius:var(--radius-sm);padding:12px 16px;font-weight:600}.btn-primary:hover{filter:brightness(1.06)}.layout{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:8px;padding:22px 14px;background:#0c0f14eb;border-right:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px;padding:6px 8px 18px;border-bottom:1px solid var(--line);margin-bottom:10px}.brand .mark{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(145deg,#3dd9b8,#1f8f78);color:#06241e;font-weight:700;font-size:13px;flex-shrink:0}.brand strong{display:block;font-size:1rem}.brand span{font-size:.78rem;color:var(--muted)}.nav-btn{width:100%;text-align:left;display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-weight:500}.nav-btn svg{width:18px;height:18px;opacity:.85;flex-shrink:0}.nav-btn:hover{background:#ffffff0a;color:var(--text)}.nav-btn.active{background:var(--accent-dim);color:var(--accent)}.side-footer{margin-top:auto;padding-top:12px}.btn-ghost{background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 14px;color:var(--muted);font-weight:500}.btn-ghost:hover{border-color:var(--line-strong);color:var(--text)}.content{padding:clamp(20px,3vw,36px);display:grid;gap:20px;align-content:start}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-head h2{font-size:1.65rem}.page-head p{margin:6px 0 0;color:var(--muted);font-size:.95rem}.alert{padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);font-size:.92rem;animation:rise .25s ease both}.alert.error{background:var(--danger-dim);border-color:#f0717859;color:#ffb4b8}.alert.ok{background:var(--ok-dim);border-color:#3dd68c59;color:#9aecc0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;position:relative;overflow:hidden;transition:border-color .2s ease,transform .2s ease;animation:rise .45s ease both}.stat:nth-child(1){animation-delay:.02s}.stat:nth-child(2){animation-delay:.05s}.stat:nth-child(3){animation-delay:.08s}.stat:nth-child(4){animation-delay:.11s}.stat:nth-child(5){animation-delay:.14s}.stat:nth-child(6){animation-delay:.17s}.stat:hover{border-color:var(--line-strong);transform:translateY(-1px)}.stat:after{content:"";position:absolute;inset:auto -20% -40% auto;width:90px;height:90px;border-radius:50%;background:var(--accent-dim);pointer-events:none}.stat .label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:500}.stat .value{display:block;margin-top:8px;font-size:1.85rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;animation:rise .4s ease both}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.panel-title h3{font-size:1.05rem}.toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}.search{margin-bottom:14px;max-width:420px}.table-wrap{overflow:auto;border-radius:var(--radius-sm);border:1px solid var(--line)}table{width:100%;border-collapse:collapse;min-width:640px}th,td{padding:12px 14px;text-align:left;font-size:.9rem;border-bottom:1px solid var(--line);vertical-align:middle}th{background:var(--bg-elevated);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600;position:sticky;top:0}tbody tr{transition:background .12s ease}tbody tr:hover{background:#ffffff05}tbody tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:6px;font-size:.75rem;font-weight:600;text-transform:lowercase;background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.badge.active{background:var(--ok-dim);color:var(--ok);border-color:#3dd68c4d}.badge.banned,.badge.revoked{background:var(--danger-dim);color:var(--danger);border-color:#f071784d}.badge.expired,.badge.inactive{background:var(--warn-dim);color:var(--warn);border-color:#e6b84d4d}.btn{border-radius:var(--radius-sm);padding:10px 14px;font-weight:600;font-size:.9rem}.btn.secondary{background:var(--surface-2);border:1px solid var(--line);color:var(--text)}.btn.secondary:hover{border-color:var(--line-strong)}.btn.danger{background:var(--danger-dim);color:var(--danger);border:1px solid rgba(240,113,120,.3)}.btn.danger:hover{background:#f0717838}.btn.sm{padding:6px 10px;font-size:.78rem;font-weight:500}.actions{display:flex;flex-wrap:wrap;gap:6px;max-width:420px}.actions details{position:relative}.actions summary{list-style:none;cursor:pointer;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 10px;font-size:.78rem;font-weight:500;color:var(--muted)}.actions summary::-webkit-details-marker{display:none}.actions summary:hover{color:var(--text);border-color:var(--line-strong)}.actions .menu{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:168px;display:grid;gap:2px;padding:6px;background:var(--bg-elevated);border:1px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow)}.actions .menu button{width:100%;text-align:left;background:transparent;border-radius:6px;padding:8px 10px;font-size:.82rem;color:var(--text)}.actions .menu button:hover{background:#ffffff0d}.actions .menu button.danger{color:var(--danger)}.form-row{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px;padding:14px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm)}.form-row input,.form-row select{width:auto;min-width:140px;flex:1}.empty{padding:36px 16px;text-align:center;color:var(--muted);font-size:.95rem}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#040609b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;padding:20px;animation:fade-in .2s ease both}.modal{width:min(460px,100%);background:var(--surface);border:1px solid var(--line-strong);border-radius:16px;padding:24px;box-shadow:var(--shadow);display:grid;gap:12px;animation:rise .28s ease both}.modal h3{font-size:1.2rem;margin-bottom:4px}.modal .field{display:grid;gap:6px}.modal label{font-size:.8rem;color:var(--muted)}.modal .check{display:flex;align-items:center;gap:8px;color:var(--text);font-size:.9rem}.modal .check input{width:auto}.modal-actions{display:flex;gap:10px;margin-top:6px}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (max-width: 900px){.login-wrap{grid-template-columns:1fr}.login-brand{padding-bottom:12px;min-height:38vh}.login-panel{border-left:0;border-top:1px solid var(--line)}.layout{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}.brand{width:100%;border-bottom:0;margin:0;padding-bottom:8px}.nav-btn{width:auto;flex:1 1 auto}.side-footer{margin:0;width:100%}.side-footer .btn-ghost{width:100%}}
