:root{--bg: #12161c;--bg-elev: #1a212b;--bg-nav: #0e1218;--border: #2a3444;--text: #e6ebf2;--muted: #8b97a8;--accent: #3d9b7a;--accent-dim: #2a6b54;--warn: #c9853a;--danger: #c45c5c;--ok: #5bbf8a;--font: "IBM Plex Sans", "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;--radius: 6px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:radial-gradient(1200px 600px at 10% -10%,#1e2a22 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#1a2433 0%,transparent 50%),var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);border-radius:var(--radius);padding:.45rem .75rem}button.primary{background:var(--accent-dim);border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:.45rem .6rem;width:100%}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100%}.nav{background:linear-gradient(180deg,#101820,var(--bg-nav));border-right:1px solid var(--border);padding:1rem .75rem;display:flex;flex-direction:column;gap:.25rem}.brand{font-weight:700;letter-spacing:.04em;font-size:1.05rem;padding:.35rem .5rem 1rem;border-bottom:1px solid var(--border);margin-bottom:.75rem}.brand span{color:var(--accent);font-family:var(--mono);font-size:.75rem;display:block;font-weight:500}.nav a{color:var(--muted);padding:.4rem .55rem;border-radius:var(--radius);display:block}.nav a.active,.nav a:hover{color:var(--text);background:#3d9b7a1f}.main{padding:1.25rem 1.5rem 2rem;overflow:auto}h1{font-size:1.35rem;margin:0 0 .35rem;font-weight:650}.sub{color:var(--muted);margin:0 0 1.25rem;font-size:.92rem}.panel{background:color-mix(in srgb,var(--bg-elev) 92%,transparent);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:900px){.shell{grid-template-columns:1fr}.nav{flex-direction:row;flex-wrap:wrap;gap:.15rem}.brand{width:100%}.grid2{grid-template-columns:1fr}}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.muted{color:var(--muted)}.badge{display:inline-block;font-family:var(--mono);font-size:.72rem;padding:.15rem .4rem;border-radius:4px;background:#243040;color:var(--text)}.badge.ok{background:#5bbf8a33;color:var(--ok)}.badge.warn{background:#c9853a33;color:var(--warn)}.badge.danger{background:#c45c5c33;color:var(--danger)}.toast{position:fixed;right:1rem;bottom:1rem;background:var(--bg-elev);border:1px solid var(--border);padding:.65rem .9rem;border-radius:var(--radius);max-width:360px;z-index:50}.login-page{min-height:100%;display:grid;place-items:center;padding:1.5rem}.login-box{width:min(380px,100%);background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:1.5rem;box-shadow:0 12px 40px #00000059}.login-box h1{margin-bottom:.15rem}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.85rem}.field label{font-size:.8rem;color:var(--muted)}.skeleton{background:linear-gradient(90deg,#1a212b 25%,#243040,#1a212b 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:4px;min-height:1.2rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--danger)}.status-dot.on{background:var(--ok)}.error{color:var(--danger);font-size:.9rem}
