:root{--bg:#070c17;--panel:#0d1525;--panel-2:#0b1322;--line:#243149;--text:#eef3ff;--text-2:#c5cee0;--muted:#8d9ab2;--purple:#9b7cff;--purple-bg:#2a205c;--green:#18d47b;--red:#ff4d5e;--yellow:#f5bd35;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--purple);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0;font-size:22px}h2{margin:0;font-size:15px}code{background:var(--panel-2);border-radius:5px;padding:1px 5px}.muted{color:var(--muted)}.small{font-size:12px}.green{color:var(--green)}.red{color:var(--red)}.yellow{color:var(--yellow)}.hint{color:var(--muted);font-size:12px}.num{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.r{text-align:right}.stack{flex-direction:column;gap:14px;display:flex}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.center{place-items:center;min-height:60vh;display:grid}input,select{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:9px;outline:none;min-height:38px;padding:8px 11px}input:focus,select:focus{border-color:var(--purple)}label{color:var(--text-2);flex-direction:column;gap:6px;font-size:13px;display:flex}label.inline{flex-direction:row;align-items:center}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:9px;padding:8px 14px}.btn:hover:not(:disabled){border-color:var(--purple)}.btn.primary{background:var(--purple-bg);border-color:#4a3a9a}.btn.danger{color:var(--red);border-color:#5a2430}.btn.wide{width:100%;padding:11px}.link{color:var(--muted);text-align:left;background:0 0;border:0;padding:0;font-size:12px}.link:hover{color:var(--text);text-decoration:underline}.btn:focus-visible,.link:focus-visible{outline:2px solid var(--purple);outline-offset:2px}.pw-field{display:flex;position:relative}.pw-field input{flex:1;min-width:0;padding-right:42px}.pw-toggle{width:34px;height:30px;color:var(--muted);background:0 0;border:0;border-radius:7px;place-items:center;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.pw-toggle:hover,.pw-toggle[aria-pressed=true]{color:var(--text)}.code-input{letter-spacing:.35em;text-align:center;font-variant-numeric:tabular-nums;font-size:24px}.error-box{color:#ffb3bb;background:#2a1117;border:1px solid #5a2430;border-radius:9px;padding:9px 12px}.field-error{color:var(--red);font-size:12px}.error-ref{opacity:.75;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all;margin-top:4px;font-size:11px}.notice{color:#9ff0c6;background:#0f2a1d;border:1px solid #1d5a3b;border-radius:9px;padding:9px 12px}.spinner{border:3px solid var(--line);border-top-color:var(--purple);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.badge{background:var(--panel-2);border:1px solid var(--line);color:var(--text-2);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge.green{color:var(--green);border-color:#1d5a3b}.badge.red{color:var(--red);border-color:#5a2430}.badge.yellow{color:var(--yellow);border-color:#5a4a1d}.badge.purple{color:var(--purple);border-color:#4a3a9a}.auth-wrap{place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;width:min(420px,100%);padding:28px}.brand{font-size:18px;font-weight:700}.qr-box{flex-direction:column;align-items:center;gap:10px;display:flex}.qr-box img{background:#fff;border-radius:10px;padding:6px}.secret{letter-spacing:.08em;word-break:break-all;margin-top:8px;font-size:15px;display:block}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;gap:20px;padding:20px 14px;display:flex}.side nav{flex-direction:column;gap:4px;display:flex}.side nav a{color:var(--text-2);border-radius:9px;padding:9px 12px}.side nav a:hover{background:var(--panel-2);text-decoration:none}.side nav a.active{background:var(--purple-bg);color:var(--text)}.side-foot{flex-direction:column;align-items:flex-start;gap:6px;margin-top:auto;display:flex}.main{min-width:0;max-width:1280px;padding:28px}.grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.grid.two{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px}.card .label{color:var(--muted);margin-bottom:6px;font-size:12px}.card .value{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.bars{width:100%;height:auto;margin-top:8px}.bars rect{fill:var(--purple);opacity:.85}.bars rect:hover{opacity:1}.bars text{fill:var(--muted);font-size:10px}.filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filters input[type=search]{min-width:260px}.table-wrap{border:1px solid var(--line);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 12px}th{color:var(--muted);background:var(--panel);font-size:12px;font-weight:600}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#0f1a2e}td.ua{text-overflow:ellipsis;white-space:nowrap;max-width:360px;overflow:hidden}.empty{text-align:center;color:var(--muted);padding:24px}.pager{justify-content:flex-end;align-items:center;gap:10px;display:flex}.modal{z-index:10;background:#03060cb8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(460px,100%);padding:22px}.modal-box h2{margin-bottom:12px;font-size:17px}@media (width<=760px){.shell{grid-template-columns:1fr}.side{border-right:0;border-bottom:1px solid var(--line)}.side nav{flex-flow:wrap}.main{padding:16px}}
