:root{--bg:#0f1420;--panel:#161d2c;--panel2:#1d2638;--line:#2a3550;--text:#e6ebf5;--muted:#8a97b2;--accent:#4f8cff;--ok:#2fbf71;--warn:#f0a93b;--err:#ef5a5a;--r:10px}
*{box-sizing:border-box}body{margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.layout{display:flex;min-height:100vh}
aside{width:230px;background:var(--panel);border-right:1px solid var(--line);padding:16px 10px;position:sticky;top:0;height:100vh;overflow:auto;flex-shrink:0}
.brand{font-weight:700;font-size:16px;padding:4px 10px 14px}.brand small{display:block;color:var(--muted);font-weight:400;font-size:12px}
aside h6{margin:14px 10px 4px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
aside a{display:flex;justify-content:space-between;padding:6px 10px;border-radius:7px;color:var(--text)}
aside a:hover{background:var(--panel2);text-decoration:none}aside a.on{background:var(--accent);color:#fff}
.badge{background:var(--err);color:#fff;border-radius:99px;padding:0 7px;font-size:11px;line-height:18px}
main{flex:1;padding:22px 28px;max-width:1400px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:16px;margin:22px 0 10px}.sub{color:var(--muted);margin:0 0 18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:16px}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.stat .v{font-size:24px;font-weight:700}.stat .l{color:var(--muted);font-size:12px}
table{width:100%;border-collapse:collapse}th,td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{color:var(--muted);font-weight:500;font-size:12px}tr:hover td{background:rgba(255,255,255,.02)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}
.pill{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px;background:var(--panel2);border:1px solid var(--line);white-space:nowrap}
.pill.ok{color:var(--ok);border-color:rgba(47,191,113,.4)}.pill.warn{color:var(--warn);border-color:rgba(240,169,59,.4)}.pill.err{color:var(--err);border-color:rgba(239,90,90,.4)}
.pos{color:var(--ok)}.neg{color:var(--err)}.muted{color:var(--muted)}
input,select,textarea{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:7px 9px;font:inherit;width:100%}
textarea{min-height:80px}label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}
.form{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.form .wide{grid-column:1/-1}
.btn,button{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:7px;padding:7px 13px;font:inherit;cursor:pointer;white-space:nowrap}
.btn.sec,button.sec{background:var(--panel2);border:1px solid var(--line);color:var(--text)}
.btn.danger,button.danger{background:var(--err)}button:hover,.btn:hover{filter:brightness(1.1);text-decoration:none}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row>*{width:auto}
.flash{background:rgba(79,140,255,.12);border:1px solid rgba(79,140,255,.4);padding:10px 14px;border-radius:8px;margin-bottom:16px}
.alert{padding:8px 0;border-bottom:1px solid var(--line)}.alert:last-child{border:0}
.lvl-error{border-left:3px solid var(--err);padding-left:10px}.lvl-warn{border-left:3px solid var(--warn);padding-left:10px}.lvl-info{border-left:3px solid var(--accent);padding-left:10px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tabs a{padding:5px 11px;border-radius:99px;background:var(--panel);border:1px solid var(--line);color:var(--text)}.tabs a.on{background:var(--accent);border-color:var(--accent)}
img.th{width:44px;height:44px;object-fit:cover;border-radius:6px;background:#fff}
.demo{background:rgba(240,169,59,.12);border:1px solid rgba(240,169,59,.45);color:#f6c77a;padding:8px 14px;border-radius:8px;margin-bottom:16px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 16px}.kv div:nth-child(odd){color:var(--muted)}
pre{white-space:pre-wrap;font-size:12px;color:var(--muted);margin:0}
.check{display:flex;gap:8px;align-items:center}.check input{width:auto}
