:root{--bg: #0f1216;--bg-elev: #171b21;--bg-elev2: #1e242c;--border: #2a323c;--text: #e6eaef;--text-dim: #9aa4b2;--accent: #4f8cff;--accent-hover: #6ba0ff;--danger: #e5484d;--danger-hover: #f0666a;--money: #e5a13a;--money-hover: #f0b458;--success: #34c759;--warn: #e5a13a;--radius: 8px;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.45}a{color:var(--accent);text-decoration:none}h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.05rem;margin:0 0 .75rem}h3{margin:0 0 .5rem}.muted{color:var(--text-dim)}.topbar{display:flex;align-items:center;gap:1.25rem;padding:.6rem 1rem;background:var(--bg-elev);border-bottom:1px solid var(--border);flex-wrap:wrap;position:sticky;top:0;z-index:10}.brand{font-weight:700;font-size:1.05rem;letter-spacing:.02em}.brand-sub{color:var(--text-dim);font-weight:500;margin-left:.5rem;font-size:.85rem}.apibase{display:flex;align-items:center;gap:.4rem;flex:1 1 320px}.apibase label{color:var(--text-dim);font-size:.8rem;white-space:nowrap}.apibase .input{flex:1 1 auto;min-width:160px}.auth-slot{display:flex;align-items:center;gap:.5rem;margin-left:auto}.login-form{display:flex;gap:.4rem;align-items:center}.login-form .input{width:260px}.role-badge{padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--border)}.role-badge--super_admin{background:#3a2a55;color:#d3b6ff;border-color:#5a3f88}.role-badge--admin{background:#1f3a5a;color:#a9cbff;border-color:#305a8a}.role-badge--moderator{background:#2a3a2a;color:#b6e0b6;border-color:#3f6a3f}.layout{display:flex;min-height:calc(100vh - 53px)}.sidenav{width:220px;flex:0 0 220px;background:var(--bg-elev);border-right:1px solid var(--border);padding:.75rem .5rem;display:flex;flex-direction:column;gap:.25rem}.nav-section-title{color:var(--text-dim);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.6rem .75rem .2rem}.navlink{display:block;padding:.45rem .75rem;border-radius:var(--radius);color:var(--text-dim);font-weight:500}.navlink:hover{background:var(--bg-elev2);color:var(--text)}.navlink.active{background:var(--accent);color:#fff}.content{flex:1 1 auto;padding:1.5rem;max-width:1100px;width:100%}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.2rem;margin-bottom:1.25rem}.form-row{display:flex;gap:1rem;flex-wrap:wrap}.form-row>.field{flex:1 1 200px}.field{margin-bottom:.85rem;display:flex;flex-direction:column;gap:.3rem}.field label{color:var(--text-dim);font-size:.8rem;font-weight:600}.hint{color:var(--text-dim);font-size:.78rem;margin-top:.15rem}.form-actions{display:flex;gap:.5rem;margin-top:.25rem;flex-wrap:wrap}.subhead{color:var(--text-dim);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin:1.25rem 0 .6rem}.checkline{display:flex;align-items:center;gap:.45rem;font-size:.9rem;margin:.4rem 0 .85rem}.inline{display:flex;gap:.4rem;align-items:center}.checkbox{display:inline-flex;align-items:center;gap:.4rem;color:var(--text);font-size:.85rem}.input{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.45rem .6rem;border-radius:6px;font-size:.88rem;font-family:inherit;width:100%}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #4f8cff40}.textarea{resize:vertical;font-family:var(--mono);font-size:.82rem}select.input{cursor:pointer}.btn{background:var(--bg-elev2);border:1px solid var(--border);color:var(--text);padding:.45rem .9rem;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.btn-money{background:var(--money);border-color:var(--money);color:#1a1205}.btn-money:hover{background:var(--money-hover);border-color:var(--money-hover)}.btn-ghost{background:transparent}.btn-xs{padding:.2rem .5rem;font-size:.75rem}.table-wrap{overflow-x:auto;margin-top:.75rem}.data-table{width:100%;border-collapse:collapse;font-size:.83rem}.data-table th,.data-table td{text-align:left;padding:.5rem .7rem;border-bottom:1px solid var(--border);white-space:nowrap}.data-table th{color:var(--text-dim);font-weight:600;background:var(--bg-elev2);position:sticky;top:0}.data-table td.num,.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}.data-table tbody tr:hover td{background:#ffffff05}.mono{font-family:var(--mono);font-size:.8rem;color:var(--text)}.empty{color:var(--text-dim);padding:.75rem 0;font-style:italic}.result{margin-top:.5rem}.row-actions{display:flex;gap:.35rem}.pill{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;background:#3a4553;color:var(--text)}.pill--green{background:#234a2c;color:#a8e6b6}.pill--blue{background:#2f3a4a;color:#a9c4e6}.pill--red{background:#4a2323;color:#f0a6a6}.pill--amber{background:#3a3320;color:#e6d1a1}.pill--violet{background:#3a2a55;color:#d8bcff}.banner{padding:.6rem .8rem;border-radius:6px;margin:.5rem 0;font-size:.85rem;border:1px solid var(--border)}.banner-info{background:#16273d;border-color:#2b4a6e;color:#b9d4f5}.banner-warn{background:#3a3320;border-color:#6a5a2f;color:#e8d3a0}.banner-error{background:#3a1f22;border-color:#7a3438;color:#f3b2b5}.loading{display:flex;align-items:center;gap:.5rem;color:var(--text-dim);padding:.75rem 0}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast-root{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:100;max-width:380px}.toast{padding:.6rem .85rem;border-radius:6px;font-size:.85rem;font-family:inherit;text-align:left;width:100%;display:block;cursor:pointer;border:1px solid var(--border);background:var(--bg-elev2);color:var(--text);box-shadow:0 6px 20px #0006;animation:toast-in .18s ease-out}.toast--success{border-color:#2f6a3f;background:#17301f;color:#bdeccb}.toast--error{border-color:#7a3438;background:#2c1618;color:#f3b2b5}.toast--warn{border-color:#6a5a2f;background:#2c2716;color:#e8d3a0}.toast--info{border-color:#2b4a6e;background:#16273d;color:#b9d4f5}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;width:min(460px,92vw);box-shadow:0 20px 60px #00000080;border-top:3px solid var(--border)}.modal--danger{border-top-color:var(--danger)}.modal--money{border-top-color:var(--money)}.modal-msg{color:var(--text-dim)}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.confirm-typed{margin-top:.75rem}.confirm-typed code{font-family:var(--mono);color:var(--text)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1rem;margin-bottom:1.25rem}.stat{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem}.stat-label{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.stat-value{font-size:1.5rem;font-weight:700;margin-top:.35rem;font-variant-numeric:tabular-nums}.stat-sub{color:var(--text-dim);font-size:.78rem;margin-top:.2rem}.code-reveal{border:2px solid var(--money);background:#211a0d;border-radius:var(--radius);padding:1rem;margin-top:.75rem}.code-reveal-warn{color:var(--money);font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;margin-bottom:.5rem}.amount{font-variant-numeric:tabular-nums}.amount-cur{color:var(--text-dim);font-size:.85em;margin-left:.25rem}@media (max-width: 780px){.layout{flex-direction:column}.sidenav{width:auto;flex:none;flex-direction:row;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--border)}.login-form .input{width:180px}.auth-slot{margin-left:0}}
