:root{--bg:#0f172a;--fg:#f8fafc;--muted:#94a3b8;--card:#1e293b;--border:#334155;--accent:#3b82f6;--accent-fg:#fff;--danger:#ef4444;--success:#22c55e}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{width:100%;max-width:960px;margin:0 auto;padding:2rem clamp(1rem,4vw,2.5rem)}.container.narrow{max-width:480px}@media (min-width:1280px){.container{max-width:1120px}}.stack{flex-direction:column;gap:1.25rem}.nav,.stack{display:flex}.nav{justify-content:space-between;align-items:center;gap:.75rem 1rem;flex-wrap:wrap;padding:.85rem clamp(1rem,4vw,2.5rem);border-bottom:1px solid var(--border)}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.5rem;margin:1rem 0}.form-card{max-width:460px;margin-left:auto;margin-right:auto}h1,h2,h3{margin:0 0 1rem}label{display:block;margin:.75rem 0 .25rem;font-size:.875rem;color:var(--muted)}input[type=email],input[type=password],input[type=text]{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--fg);font-size:1rem}.btn,button{display:inline-block;padding:.6rem 1rem;border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);border-radius:6px;font-size:1rem;cursor:pointer;text-decoration:none}.btn:hover,button:hover{opacity:.9;text-decoration:none}.btn.secondary,button.secondary{background:transparent;color:var(--fg);border-color:var(--border)}.token{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.5rem .75rem;word-break:break-all;font-size:.875rem}.error{color:var(--danger)}.error,.success{margin:.5rem 0;font-size:.875rem}.success{color:var(--success)}.muted{color:var(--muted);font-size:.875rem}.progress{width:100%;height:8px;background:var(--bg);border:1px solid var(--border);border-radius:4px;overflow:hidden}.progress>div{height:100%;background:var(--accent)}.kv{display:grid;grid-template-columns:160px 1fr;grid-gap:.5rem 1rem;gap:.5rem 1rem;align-items:start;margin:.5rem 0}.kv .k{color:var(--muted);font-size:.875rem}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}@media (max-width:520px){.kv{grid-template-columns:1fr;gap:.15rem 0}.kv .k{margin-top:.5rem}.card{padding:1.15rem}.btn,button,input[type=email],input[type=password],input[type=text],select{min-height:44px}.nav .btn,.nav button{padding:.5rem .8rem}}.admin-shell{display:flex;min-height:calc(100vh - 65px);align-items:stretch}.admin-sidebar{width:220px;flex:0 0 220px;border-right:1px solid var(--border);padding:1.5rem 1rem;display:flex;flex-direction:column;gap:1rem}.admin-brand{font-weight:700;font-size:1.1rem;letter-spacing:.02em}.admin-nav{display:flex;flex-direction:column;gap:.25rem}.admin-nav-link{display:block;padding:.5rem .75rem;border-radius:6px;color:var(--fg)}.admin-nav-link:hover{background:var(--card);text-decoration:none}.admin-nav-link.active{background:var(--accent);color:var(--accent-fg)}.admin-sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:.5rem;border-top:1px solid var(--border);padding-top:1rem}.admin-back{font-size:.875rem}.admin-content{flex:1 1 auto;padding:2rem;min-width:0}.admin-cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem}@media (max-width:800px){.admin-shell{flex-direction:column}.admin-sidebar{width:auto;flex:none;border-right:none;border-bottom:1px solid var(--border)}.admin-sidebar-footer{margin-top:0}.admin-cols{grid-template-columns:1fr}.admin-content{padding:1.25rem}}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:.75rem;gap:.75rem;margin:1rem 0 1.5rem}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1rem}.kpi-value{font-size:1.5rem;font-weight:700}.kpi-label{color:var(--muted);font-size:.8rem;margin-top:.25rem}.admin-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table td,.admin-table th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border);vertical-align:top}.admin-table th{color:var(--muted);font-weight:600;background:var(--card);white-space:nowrap}.admin-table tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:hsla(0,0%,100%,.02)}.admin-table code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;word-break:break-all}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;border:1px solid var(--border);background:var(--bg);color:var(--muted);white-space:nowrap}.badge-admin{background:rgba(59,130,246,.15);border-color:var(--accent);color:#93c5fd}.badge-banned{background:rgba(239,68,68,.15);border-color:var(--danger);color:#fca5a5}.badge-ok{background:rgba(34,197,94,.15);border-color:var(--success);color:#86efac}.btn-sm{padding:.35rem .6rem;font-size:.8rem}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{opacity:.9}.btn:disabled,button:disabled{opacity:.5;cursor:not-allowed}select{font-size:1rem}.th-sort{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.th-sort:hover{color:var(--fg)}.th-sort .sort-ind{margin-left:.3rem;opacity:.5;font-size:.7rem}.th-sort.sorted .sort-ind{opacity:1;color:var(--accent)}.admin-table td.col-check,.admin-table th.col-check{width:1%;white-space:nowrap;text-align:center}.admin-table input[type=checkbox]{width:auto;margin:0;cursor:pointer;accent-color:var(--accent)}.admin-table tr.row-selected td{background:rgba(59,130,246,.08)}.bulk-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:0 0 1rem;padding:.6rem .85rem;background:var(--card);border:1px solid var(--accent);border-radius:8px}.bulk-bar .bulk-count{font-weight:600;margin-right:.25rem}.bulk-bar .spacer{flex:1 1 auto}.toolbar-actions{margin-left:auto;display:flex;gap:.5rem}