:root{color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#070b12;color:#d7dde8;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.font-mono-logs{font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace}.app-shell{height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at 8% -14%,rgba(96,165,250,.1),transparent 28%),radial-gradient(circle at 92% -18%,rgba(148,163,184,.08),transparent 24%),linear-gradient(180deg,#0b111d,#060914)}.topbar{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 18px;border-bottom:1px solid rgba(148,163,184,.16);background:#080d17eb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand-kicker{font-size:10px;line-height:1;letter-spacing:.24em;text-transform:uppercase;color:#9fb3c8;font-weight:800}.brand-title{margin-top:3px;color:#d7dde8;font-size:18px;line-height:1.1;font-weight:800}.status-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.status-pill,.metric-pill{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 10px;border-radius:999px;border:1px solid rgba(148,163,184,.16);background:#0f172ab8;color:#b8c4d6;font-size:12px;white-space:nowrap}.status-pill strong,.metric-pill strong{color:#d7dde8;font-weight:800}.dot{width:7px;height:7px;border-radius:999px;background:#7fd2a4;box-shadow:0 0 10px #7fd2a447}.dot.warn{background:#f5c451;box-shadow:0 0 10px #f5c45140}.metric-pill.error strong{color:#ff6b7a}.metric-pill.warn strong{color:#f5c451}.controlbar{min-height:58px;display:flex;align-items:center;gap:10px;padding:9px 18px;border-bottom:1px solid rgba(148,163,184,.13);background:#090e18f5;overflow-x:auto;overflow-y:hidden}.controlbar::-webkit-scrollbar{height:4px}.controlbar::-webkit-scrollbar-thumb{background:#94a3b861;border-radius:999px}.field-label{font-size:9px;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:#7d8aa0;display:block;margin-bottom:3px}.control-field{height:30px;border-radius:8px;border:1px solid rgba(148,163,184,.18);background:#0f172adb;color:#e2e8f0;font-size:12px;padding:0 10px;outline:none;box-shadow:none}.control-field::placeholder{color:#64748b}.control-field:focus{border-color:#7dd3fcb3;box-shadow:0 0 0 1px #7dd3fc3d}select.control-field{min-width:170px}input.control-field{min-width:230px}.search-field{min-width:260px;flex:1;max-width:520px}.fill-field{width:100%}.nickname-field{min-width:190px}.level-group{display:inline-flex;align-items:center;gap:4px;padding:3px;border-radius:10px;background:#0f172abd;border:1px solid rgba(148,163,184,.14)}.levelBtn{height:26px;padding:0 9px;border-radius:7px;border:1px solid transparent;background:transparent;color:#94a3b8;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;transition:.12s ease}.levelBtn:hover{color:#e2e8f0;background:#94a3b814}.levelBtn.active-level{color:#e0f2fe;border-color:#7dd3fc73;background:#0ea5e92e}.actions-row{display:flex;align-items:flex-end;gap:8px;padding-top:15px}.btn{height:30px;padding:0 11px;border-radius:8px;border:1px solid rgba(148,163,184,.16);background:#0f172ab8;color:#cbd5e1;font-size:12px;font-weight:750;white-space:nowrap;transition:.12s ease}.btn:hover{border-color:#7dd3fc6b;color:#f8fafc;background:#1e293bd6}.btn.primary{background:#0ea5e9c7;border-color:#7dd3fc75;color:#eff6ff}.btn.primary:hover{background:#38bdf8db}.autoscroll{height:30px;display:inline-flex;align-items:center;gap:8px;padding:0 10px;border:1px solid rgba(148,163,184,.14);border-radius:8px;background:#0f172a9e;color:#94a3b8;font-size:12px;white-space:nowrap}.autoscroll input{width:14px;height:14px;margin:0;border-color:#475569;background:#020617;color:#38bdf8}.main-grid{min-height:0;flex:1;display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:1px;background:#94a3b81a}.log-panel,.device-panel{min-height:0;background:#030712f5}.log-panel{display:flex;flex-direction:column;min-width:0}.log-header{display:grid;grid-template-columns:178px minmax(170px,1fr) 76px minmax(440px,3.4fr);gap:12px;align-items:center;min-height:34px;padding:0 16px;border-bottom:1px solid rgba(148,163,184,.14);background:#0f172ae0;color:#8fa3b8;font-size:10px;line-height:1;letter-spacing:.16em;text-transform:uppercase;font-weight:900;white-space:nowrap}#logContainer{flex:1;min-height:0;overflow:auto;padding:6px 0 18px;background:linear-gradient(rgba(148,163,184,.035) 1px,transparent 1px) 0 0 / 100% 44px,#020617;font-size:12px;line-height:1.35}#logContainer::-webkit-scrollbar,#deviceList::-webkit-scrollbar{width:9px;height:9px}#logContainer::-webkit-scrollbar-track,#deviceList::-webkit-scrollbar-track{background:#0f172a85}#logContainer::-webkit-scrollbar-thumb,#deviceList::-webkit-scrollbar-thumb{background:#64748b8c;border-radius:999px;border:2px solid rgba(15,23,42,.52)}.log-row{display:grid;grid-template-columns:178px minmax(170px,1fr) 76px minmax(440px,3.4fr);gap:12px;align-items:start;min-height:34px;padding:6px 16px;border-left:2px solid transparent;border-bottom:1px solid rgba(148,163,184,.055);color:#d8dee9}.log-row:hover{background:#1e293b85}.log-row.ERROR{border-left-color:#ff6b7a;background:#ff6b7a0f}.log-row.WARN{border-left-color:#f5c451;background:#f5c4510f}.log-row.INFO{border-left-color:#7dd3fc6b}.log-row.DEBUG{border-left-color:#b48cff6b}.log-time{color:#8a98aa;white-space:nowrap}.log-device{min-width:0;color:#e2e8f0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-device-id{margin-top:1px;color:#64748b;font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-badge{display:inline-flex;justify-content:center;min-width:52px;padding:2px 6px;border-radius:6px;font-size:10px;font-weight:900;letter-spacing:.06em}.level-badge.INFO{color:#bae6fd;background:#0ea5e91a;border:1px solid rgba(125,211,252,.24)}.level-badge.WARN{color:#fde68a;background:#f5c4511f;border:1px solid rgba(245,196,81,.28)}.level-badge.ERROR{color:#fecdd3;background:#ff6b7a21;border:1px solid rgba(255,107,122,.32)}.level-badge.DEBUG{color:#ddd6fe;background:#b48cff1a;border:1px solid rgba(180,140,255,.26)}.log-message{color:#d7dde8;white-space:pre-wrap;word-break:break-word}.log-row.ERROR .log-message{color:#fecdd3}.log-row.WARN .log-message{color:#fde68a}.empty-state{padding:28px 16px;color:#64748b;font-size:13px}.device-panel{display:flex;flex-direction:column;border-left:1px solid rgba(148,163,184,.1)}.device-panel-header{min-height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-bottom:1px solid rgba(148,163,184,.14);background:#0f172ae0}.device-title,.device-count-label{color:#8fa3b8;font-size:10px;line-height:1;letter-spacing:.16em;text-transform:uppercase;font-weight:900}.device-count-label{color:#64748b}#deviceList{flex:1;min-height:0;overflow:auto;padding:6px 0}.device-row{padding:10px 12px;border-bottom:1px solid rgba(148,163,184,.08)}.device-row:hover{background:#1e293b73}.device-row-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.device-name{min-width:0;color:#e2e8f0;font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-id{color:#64748b;font-size:10px;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-meta{margin-top:6px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:#94a3b8;font-size:11px}.device-msg{margin-top:5px;color:#64748b;font-size:11px;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:1180px){.main-grid{grid-template-columns:1fr}.device-panel{display:none}}@media(max-width:900px){body{overflow:auto}.app-shell{min-height:100vh;height:auto}.topbar{align-items:flex-start;flex-direction:column}.controlbar{align-items:flex-start;flex-wrap:wrap;overflow:visible}.main-grid{height:70vh}.log-header,.log-row{grid-template-columns:132px 132px 66px minmax(340px,1fr)}select.control-field,input.control-field{min-width:160px}}
