:root{--brand:#1f3a8a;--brand2:#1f6feb;--ok:#1a7f37;--warn:#9a6700;--err:#cf222e;--bg:#f6f8fa;--card:#fff;--line:#d0d7de;--muted:#57606a}*{box-sizing:border-box}body{background:var(--bg);color:#1f2328;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--brand2);text-decoration:none}a:hover{text-decoration:underline}.shell{min-height:100vh;display:flex}.sidebar{background:var(--brand);color:#fff;flex-shrink:0;width:220px;padding:18px 14px}.sidebar .brand{margin-bottom:2px;font-size:1.05rem;font-weight:700}.sidebar .sub{opacity:.7;margin-bottom:20px;font-size:.72rem}.sidebar nav a{color:#dfe6f5;border-radius:8px;margin-bottom:2px;padding:9px 12px;font-size:.92rem;display:block}.sidebar nav a:hover{background:#ffffff1f;text-decoration:none}.sidebar nav a.active{background:#fff3;font-weight:600}.content{flex:1;max-width:1100px;padding:26px 32px}.topbar{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.topbar .who{color:var(--muted);font-size:.85rem}.role-tag{color:#0969da;background:#ddf4ff;border-radius:999px;margin-left:6px;padding:2px 10px;font-size:.72rem;font-weight:600;display:inline-block}h1{margin:0 0 4px;font-size:1.4rem}h2{margin:22px 0 10px;font-size:1.05rem}.muted{color:var(--muted);font-size:.85rem}.cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px}.card h3{margin:0 0 6px;font-size:1rem}input,select,button,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;padding:9px 11px}label{color:var(--muted);margin:10px 0 4px;font-size:.82rem;display:block}button{background:var(--brand2);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:9px 16px;font-weight:600}button:hover{background:#1a5fd0}button.ghost{color:var(--brand2);border:1px solid var(--line);background:#fff}button.danger{background:var(--err)}button:disabled{opacity:.55;cursor:not-allowed}.row{align-items:flex-end;gap:10px;display:flex}table{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;font-size:.88rem;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 12px}th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#f6f8fa;font-size:.78rem}tr:last-child td{border-bottom:0}tbody tr:hover{background:#f9fbfd}.badge{border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:600;display:inline-block}.badge.ok{color:var(--ok);background:#dafbe1}.badge.off{color:var(--err);background:#ffebe9}.badge.warn{color:var(--warn);background:#fff8c5}.err{color:var(--err);background:#ffebe9;border:1px solid #ffcecb;border-radius:8px;margin:10px 0;padding:10px 12px;font-size:.85rem}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{border:1px solid var(--line);background:#fff;border-radius:14px;width:360px;padding:30px}.login-card h1{text-align:center;font-size:1.2rem}.qr{justify-content:center;margin:14px 0;display:flex}.secret{border:1px solid var(--line);word-break:break-all;text-align:center;background:#f6f8fa;border-radius:6px;padding:7px;font-family:ui-monospace,Menlo,monospace;font-size:.78rem}
