:root{--bg:#f4f5f7;--side:#14141a;--side2:#1d1d26;--accent:#e11d2e;--text:#1b1b1f;--muted:#6b7280;--line:#e5e7eb;--ok:#16a34a;--bad:#dc2626}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px}
a{color:var(--accent);text-decoration:none}
.muted{color:var(--muted)}

/* Layout */
.gx{display:flex;min-height:100vh}
.side{width:240px;background:var(--side);color:#cfd0d8;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{padding:22px 20px;font-size:20px;font-weight:700;color:#fff;letter-spacing:.5px}
.brand span{color:var(--accent)}
.side nav{flex:1;padding:6px 10px;overflow:auto}
.side nav a,.side nav .off{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:8px;color:#cfd0d8;margin-bottom:2px}
.side nav a:hover,.side nav a.active{background:var(--side2);color:#fff}
.side nav .off{opacity:.45;cursor:not-allowed}
.tag{font-size:10px;background:#2b2b36;color:#9ca3af;padding:2px 7px;border-radius:20px}
.main{flex:1;min-width:0}
.top{display:flex;justify-content:space-between;align-items:center;padding:14px 28px;background:#fff;border-bottom:1px solid var(--line)}
.top h2{margin:0;font-size:18px}
.content{padding:28px}

/* Cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px}
.stat b{display:block;font-size:28px;margin-top:6px}
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:20px}
.panel h3{margin:0 0 12px}

/* Forms */
label{display:block;font-size:13px;color:var(--muted);margin-bottom:12px}
input{width:100%;margin-top:5px;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:15px}
input:focus{outline:2px solid rgba(225,29,46,.25);border-color:var(--accent)}
.btn{background:var(--accent);color:#fff;border:0;padding:11px 20px;border-radius:8px;font-size:15px;cursor:pointer;width:100%}
.btn:hover{filter:brightness(.92)}
.btn.sm{width:auto;padding:8px 14px;font-size:13px;background:#374151}
.alert{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:14px}
.alert.bad{background:#fee2e2;color:#991b1b}.alert.ok{background:#dcfce7;color:#166534}

/* Auth + installer */
.auth{display:grid;place-items:center;min-height:100vh;background:#0f0f12;padding:20px}
.card{background:#fff;border-radius:14px;padding:32px;width:100%;max-width:400px}
.card.wide{max-width:640px}
.card h1{margin:0 0 4px;font-size:24px}.card h1 span{color:var(--accent)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.req{list-style:none;padding:0;margin:14px 0;display:grid;grid-template-columns:1fr 1fr;gap:4px 14px;font-size:13px}
.req .ok{color:var(--ok)}.req .bad{color:var(--bad)}
table{width:100%;border-collapse:collapse}td,th{padding:9px 6px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}
.pill{padding:2px 9px;border-radius:20px;font-size:12px}.pill.ok{background:#dcfce7;color:#166534}.pill.bad{background:#fee2e2;color:#991b1b}
@media(max-width:800px){.side{display:none}.grid2,.req{grid-template-columns:1fr}.content{padding:16px}}
