:root{--bg: #050810;--panel: #0b0f1c;--elev: #0f1426;--raised: #161d33;--line: rgba(255, 255, 255, .08);--gold: #d4a574;--text: #e9e9ee;--dim: #8a8a96;--mut: #5d5d68;--green: #5fd068;--red: #e07b6a}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}a{color:inherit;text-decoration:none}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.gold{color:var(--gold)}.muted{color:var(--mut)}.sub{font-size:11px;color:var(--dim);margin-top:2px}.brand{display:flex;align-items:center;gap:11px}.brand .logo{width:36px;height:36px;border-radius:9px;flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.15;font-size:17px;font-weight:800;letter-spacing:.14em;color:var(--gold)}.brand-text span{font-size:10px;letter-spacing:.22em;color:var(--dim);font-weight:600}.brand.big{flex-direction:column;gap:14px;margin-bottom:26px}.brand.big .logo{width:66px;height:66px;border-radius:16px}.brand.big .brand-text{align-items:center;font-size:22px}.app{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column}.sidebar nav{margin-top:30px;display:flex;flex-direction:column;gap:4px}.nav{padding:11px 14px;border-radius:10px;color:var(--dim);font-weight:500;transition:.12s}.nav:hover{background:var(--elev);color:var(--text)}.nav.active{background:var(--gold);color:#0a0a0a;font-weight:600}.logout{margin-top:auto;background:transparent;border:1px solid var(--line);color:var(--text);padding:10px;border-radius:10px;cursor:pointer}.logout:hover{border-color:var(--red);color:var(--red)}.content{flex:1;padding:28px 34px;overflow:auto}.login{min-height:100vh;display:flex;align-items:center;justify-content:center}.card{background:var(--elev);border:1px solid var(--line);border-radius:16px;padding:36px;width:340px}.card .err{margin-top:12px}.head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}h1{font-size:22px;font-weight:700}.search{width:100%;max-width:360px;margin-bottom:18px}input{width:100%;background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:11px 14px;color:var(--text);font-size:14px;outline:none}input:focus{border-color:var(--gold)}select{width:100%;background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:11px 14px;color:var(--text);font-size:14px;outline:none;cursor:pointer;color-scheme:dark}select:focus{border-color:var(--gold)}option{background:var(--elev);color:var(--text)}label{display:block;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:14px 0 6px}button{background:var(--raised);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px 16px;font-size:14px;cursor:pointer;transition:.12s}button:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--gold);color:#0a0a0a;border-color:var(--gold);font-weight:600}.card button{width:100%;margin-top:22px;background:var(--gold);color:#0a0a0a;border:none;font-weight:600;padding:13px}button.danger{background:transparent;border-color:var(--red);color:var(--red)}button.full{width:100%;margin-top:8px}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--mut);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}tr.click{cursor:pointer}tr.click:hover td{background:var(--elev)}.actions{text-align:right;white-space:nowrap}.actions button{padding:6px 10px;margin-left:6px}.count{color:var(--gold);font-weight:700}.badge{font-size:10px;background:#d4a5742e;color:var(--gold);padding:2px 7px;border-radius:6px;margin-left:6px}.pill{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:12px}.pill i{width:9px;height:9px;border-radius:50%;display:inline-block}.pill.on{color:var(--green)}.pill.on i{background:var(--green);box-shadow:0 0 6px #5fd06899}.pill.off{color:var(--red)}.pill.off i{background:var(--red)}.pill.dead{color:var(--mut)}.pill.dead i{background:var(--mut)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--elev);border:1px solid var(--line);border-radius:16px;padding:26px;width:440px;max-width:100%}.modal h2{font-size:18px;margin-bottom:6px}.kv{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.kv>span:first-child{color:var(--dim)}.row{display:flex;gap:10px;margin-top:18px}.row input{flex:1}.row button{white-space:nowrap}.err{color:var(--red);font-size:12px;margin-top:12px}th.num,td.num{width:46px;text-align:right;padding-right:14px;color:var(--mut)}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.pagination .total{color:var(--mut);font-size:12px}.pager{display:flex;align-items:center;gap:10px}.pager button{padding:6px 13px;min-width:38px}.pager .ind{color:var(--dim);font-size:13px;min-width:56px;text-align:center}.qr-box{margin:18px auto 4px;width:fit-content;background:#fff;padding:14px;border-radius:12px;text-align:center}.qr-url{margin-top:9px;font-size:11px;color:#555}.section-title{color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:20px 0 10px}.node-qr-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.node-qr-name{font-size:14px;font-weight:600}.qr-box.mini{margin:0;padding:8px}.detail{max-width:560px}.back{background:transparent;border:none;color:var(--dim);padding:0;margin-bottom:14px;font-size:13px}.back:hover{color:var(--gold);filter:none}.panel{background:var(--elev);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:16px}.panel h2{font-size:15px;margin-bottom:10px}.node-qr-row .pill{margin-top:5px}
