:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-0:#0d0f13;--bg-1:#14171d;--bg-2:#1b1f27;--bg-3:#232833;--bg-4:#2c3340;--line:#ffffff14;--line-strong:#ffffff29;--text:#eceef2;--text-2:#b7bcc7;--text-3:#8a909c;--accent:#3987e5;--accent-2:#1c5cab;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-4:#c98500;--series-5:#d55181;--series-6:#9085e9;--good:#0ca30c;--warning:#fab219;--serious:#ec835a;--critical:#d03b3b;--offline:#6b7280;--radius:8px;--radius-sm:5px;--shadow:0 8px 30px #00000073;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "Cascadia Mono", Consolas, monospace;--left-w:320px;--right-w:420px;--top-h:52px;--status-h:26px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg-0);font-size:13px;line-height:1.4;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}a{color:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--bg-4);border:2px solid var(--bg-1);border-radius:6px}::-webkit-scrollbar-track{background:0 0}#app{grid-template-columns:var(--left-w) 1fr var(--right-w);grid-template-rows:var(--top-h) 1fr var(--status-h);grid-template-areas:"top top top""left center right""status status status";height:100vh;display:grid}#topbar{grid-area:top}#left{grid-area:left}#center{grid-area:center;min-width:0;min-height:0;position:relative}#right{grid-area:right}#statusbar{grid-area:status}#left,#right{background:var(--bg-1);border-right:1px solid var(--line);flex-direction:column;min-height:0;display:flex;overflow:hidden}#right{border-right:0;border-left:1px solid var(--line)}#gl{cursor:crosshair;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}#gl.grabbing{cursor:grabbing}#topbar{background:linear-gradient(180deg, var(--bg-2), var(--bg-1));border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:0 14px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand-logo{background:var(--accent-2);color:#fff;border-radius:7px;place-items:center;width:30px;height:30px;display:grid}.brand-title{letter-spacing:.2px;font-size:14px;font-weight:650}.brand-sub{color:var(--text-3);font-size:11px}.kpis{gap:8px;margin-left:8px;display:flex}.kpi{background:var(--bg-3);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:4px 10px;display:flex}.kpi:hover{border-color:var(--line-strong)}.kpi .kpi-v{font-variant-numeric:tabular-nums;font-weight:650}.kpi .kpi-l{color:var(--text-3);font-size:11.5px}.kpi .status-dot{width:16px;height:16px}.kpi.kpi-alarm .kpi-v{color:var(--critical)}.kpi.kpi-warn .kpi-v{color:var(--warning)}.top-search{width:300px;margin-left:auto;position:relative}.top-search input[type=text]{border:1px solid var(--line-strong);background:var(--bg-0);width:100%;color:var(--text);border-radius:999px;outline:none;padding:7px 10px 7px 34px}.top-search input:focus{border-color:var(--accent)}.top-search .icon{color:var(--text-3);position:absolute;top:9px;left:11px}.search-results{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);z-index:50;max-height:380px;position:absolute;top:36px;left:0;right:0;overflow:auto}.search-results .sr{cursor:pointer;border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:8px 12px;display:flex}.search-results .sr:hover{background:var(--bg-3)}.search-results .sr .sr-id{font-family:var(--mono);color:var(--accent);min-width:90px;font-size:11.5px}.search-results .sr .sr-sub{color:var(--text-3);margin-left:auto;font-size:11.5px}.top-actions{gap:6px;display:flex}.btn{border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg-3);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.btn:hover{background:var(--bg-4)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent-2);border-color:var(--accent)}.btn-primary:hover{background:var(--accent)}.btn-danger{border-color:var(--critical);background:#6b1f1f}.btn-danger:hover{background:var(--critical)}.btn-ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--bg-3);color:var(--text)}.btn-sm{padding:3px 8px;font-size:12px}.icon-btn{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-2);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--bg-3);color:var(--text)}.icon-btn.active{background:var(--accent-2);color:#fff;border-color:var(--accent)}input[type=text],input[type=number],input[type=datetime-local],select,textarea{border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--bg-0);width:100%;color:var(--text);outline:none;padding:7px 9px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:60px}select option{background:var(--bg-2)}.tabs{border-bottom:1px solid var(--line);background:var(--bg-2);flex:none;display:flex}.tab{text-align:center;cursor:pointer;color:var(--text-3);-webkit-user-select:none;user-select:none;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px 6px;font-weight:500;display:flex;position:relative}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.tab .count{background:var(--bg-4);color:var(--text-2);border-radius:999px;padding:0 6px;font-size:10.5px}.tab .count.hot{background:var(--critical);color:#fff}.panel-body{flex:1;min-height:0;overflow:auto}.panel-section{border-bottom:1px solid var(--line);padding:12px 14px}.panel-section h3{text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);align-items:center;gap:6px;margin-bottom:8px;font-size:11.5px;display:flex}.panel-section h3 .spacer{flex:1}.empty{color:var(--text-3);text-align:center;padding:24px 14px}.empty .icon{color:var(--text-3);margin:0 auto 8px;display:block}.tree-tools{border-bottom:1px solid var(--line);gap:6px;padding:8px 10px;display:flex}.tree-tools input{flex:1;padding:5px 8px}.tree{padding:6px 0}.tnode{-webkit-user-select:none;user-select:none}.tnode-row{padding:3px 8px 3px var(--indent,8px);cursor:pointer;border-left:2px solid #0000;align-items:center;gap:5px;min-height:26px;display:flex}.tnode-row:hover{background:var(--bg-2)}.tnode-row.selected{background:var(--bg-3);border-left-color:var(--accent)}.tnode-row .caret{width:14px;height:14px;color:var(--text-3);flex:none;transition:transform .15s}.tnode-row.open>.caret{transform:rotate(90deg)}.tnode-row .caret.leaf{visibility:hidden}.tnode-row .nicon{color:var(--text-2);flex:none}.tnode-row .nlabel{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tnode-row .ntag{font-family:var(--mono);color:var(--accent);font-size:11px}.tnode-row .ncount{color:var(--text-3);background:var(--bg-3);border-radius:999px;padding:0 6px;font-size:10.5px}.tnode-row .nstat{align-items:center;gap:2px;display:inline-flex}.tnode-row .nstat .status-dot{width:14px;height:14px}.tnode-row .line-swatch{border-radius:2px;flex:none;width:8px;height:8px}.tnode-children{display:none}.tnode.open>.tnode-children{display:block}.tnode-more{padding:4px 8px 4px var(--indent,8px);color:var(--accent);cursor:pointer;font-size:12px}.tnode-row .vis-btn{opacity:0;width:22px;height:22px}.tnode-row:hover .vis-btn,.tnode-row .vis-btn.off{opacity:1}.tnode-row .vis-btn.off{color:var(--text-3)}.status-dot{border-radius:50%;place-items:center;width:18px;height:18px;display:inline-grid}.status-ok{color:var(--good)}.status-warn{color:var(--warning)}.status-alarm{color:var(--critical)}.status-offline{color:var(--offline)}.badge{background:var(--bg-4);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-flex}.badge-ok,.badge-good{color:#6fdc6f;background:#0ca30c2e}.badge-warn{color:var(--warning);background:#fab2192e}.badge-serious{color:var(--serious);background:#ec835a33}.badge-alarm,.badge-critical{color:#ff7a7a;background:#d03b3b38}.badge-info{color:#8bbcf5;background:#3987e533}.badge-offline,.badge-muted{background:var(--bg-4);color:var(--text-3)}.badge-mono{font-family:var(--mono);font-weight:500}.crit-A{color:#ff8a8a;background:#d03b3b38}.crit-B{color:var(--warning);background:#fab2192e}.crit-C{background:var(--bg-4);color:var(--text-2)}.prio-P1{color:#ff8a8a;background:#d03b3b38}.prio-P2{color:var(--serious);background:#ec835a33}.prio-P3{color:var(--warning);background:#fab2192e}.prio-P4{background:var(--bg-4);color:var(--text-2)}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;margin:8px 12px;padding:10px 12px;transition:border-color .12s}.card:hover{border-color:var(--line-strong)}.card.selected{border-color:var(--accent)}.card-head{align-items:center;gap:8px;margin-bottom:4px;display:flex}.card-id{font-family:var(--mono);color:var(--accent);font-size:11.5px}.card-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.card-meta{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:11.5px;display:flex}.card-meta .icon{vertical-align:-3px;margin-right:2px}.card.sev-critica{border-left:3px solid var(--critical)}.card.sev-alta{border-left:3px solid var(--serious)}.card.sev-media{border-left:3px solid var(--warning)}.card.sev-baja{border-left:3px solid var(--text-3)}.filters{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.filters select{width:auto;padding:4px 8px}.filters .spacer{flex:1}.chip{background:var(--bg-3);border:1px solid var(--line);cursor:pointer;color:var(--text-2);border-radius:999px;padding:3px 9px;font-size:12px}.chip.active{background:var(--accent-2);border-color:var(--accent);color:#fff}.chip:hover{border-color:var(--line-strong)}.detail-head{border-bottom:1px solid var(--line);background:var(--bg-2);padding:12px 14px}.detail-head .back{margin-bottom:6px}.detail-title{align-items:center;gap:8px;font-size:15px;font-weight:650;display:flex}.detail-title .icon{color:var(--accent)}.detail-sub{color:var(--text-3);margin-top:2px;font-size:12px}.detail-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.kv{grid-template-columns:minmax(110px,40%) 1fr;gap:4px 10px;font-size:12.5px;display:grid}.kv dt{color:var(--text-3)}.kv dd{text-overflow:ellipsis;margin:0;overflow:hidden}.kv dd.mono{font-family:var(--mono);font-size:11.5px}.health{align-items:center;gap:8px;display:flex}.health-bar{background:var(--bg-4);border-radius:3px;flex:1;height:6px;overflow:hidden}.health-bar>div{border-radius:3px;height:100%}.health-v{font-variant-numeric:tabular-nums;text-align:right;min-width:36px;font-weight:650}.sensor{border-bottom:1px dashed var(--line);grid-template-columns:18px 1fr 110px;align-items:center;gap:8px;padding:7px 0;display:grid}.sensor:last-child{border-bottom:0}.sensor-name{font-size:12.5px}.sensor-limits{color:var(--text-3);font-size:10.5px}.sensor-value{text-align:right;font-variant-numeric:tabular-nums;font-size:14px;font-weight:650}.sensor-value small{color:var(--text-3);margin-left:2px;font-size:11px;font-weight:500}.sensor-value.v-warn{color:var(--warning)}.sensor-value.v-alarm{color:#ff7a7a}.sensor-value.v-offline{color:var(--text-3)}.sensor canvas.spark{grid-column:2/span 2;width:100%;height:34px;display:block}.sensor-head{color:var(--text-3);align-items:center;gap:6px;margin-bottom:4px;font-size:11.5px;display:flex}.sensor-head .spacer{flex:1}.live-dot{background:var(--good);border-radius:50%;width:7px;height:7px;animation:1.2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.log{margin:0;padding:0;list-style:none}.log li{border-left:2px solid var(--line-strong);margin-left:4px;padding:5px 0 5px 14px;font-size:12.5px;position:relative}.log li:before{content:"";background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:10px;left:-5px}.log .log-meta{color:var(--text-3);font-size:11px}.tasks{margin:0;padding:0;list-style:none}.tasks li{align-items:center;gap:8px;padding:4px 0;display:flex}.tasks li.done{color:var(--text-3);text-decoration:line-through}.tasks input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.note-form{gap:6px;margin-top:8px;display:flex}.note-form input{flex:1}.transitions{flex-wrap:wrap;gap:6px;display:flex}.table{border-collapse:collapse;width:100%;font-size:12.5px}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:5px 6px}.table th{color:var(--text-3);font-size:11.5px;font-weight:500}.table td.num{text-align:right;font-variant-numeric:tabular-nums}#toolbar{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;background:#14171de6;border-radius:10px;gap:4px;padding:4px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}#toolbar .sep{background:var(--line-strong);width:1px;margin:4px 2px}.dropdown{position:relative}.dropdown-menu{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);z-index:20;padding:6px;display:none;position:absolute;top:36px;left:0}.dropdown.open .dropdown-menu{display:block}.dropdown-menu .dd-title{text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);padding:4px 8px;font-size:11px}.dropdown-menu label{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:8px;padding:5px 8px;display:flex}.dropdown-menu label:hover{background:var(--bg-3)}.dropdown-menu label input{accent-color:var(--accent)}.dropdown-menu .dd-actions{gap:4px;padding:4px 6px;display:flex}.dropdown-menu .dd-meta{color:var(--text-3);margin-left:auto;font-size:11px}.dropdown-menu .dd-fly{opacity:.6}.dropdown-menu .dd-fly:hover{opacity:1}#overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.hover-tip{border:1px solid var(--line-strong);pointer-events:none;background:#14171deb;border-radius:6px;max-width:320px;padding:6px 9px;font-size:12px;position:absolute;transform:translate(14px,14px)}.hover-tip .tip-id{color:var(--accent);font-family:var(--mono);font-size:11px}.hover-tip .tip-sub{color:var(--text-3);font-size:11px}.hover-tip .tip-sensors{grid-template-columns:auto auto;gap:1px 10px;margin-top:4px;font-size:11px;display:grid}.hover-tip .tip-sensors .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.label3d{border:1px solid var(--line-strong);pointer-events:auto;cursor:pointer;white-space:nowrap;background:#14171de6;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:11.5px;display:flex;position:absolute;transform:translate(-50%,-100%)}.label3d:after{content:"";background:inherit;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);width:8px;height:8px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.label3d.l-alarm{border-color:var(--critical)}.label3d.l-warn{border-color:var(--warning)}.label3d .v{font-variant-numeric:tabular-nums;font-weight:650}.legend-focus{border:1px solid var(--line-strong);pointer-events:auto;background:#14171de6;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:12px;left:12px}.nav-hint{color:var(--text-3);pointer-events:none;font-size:11px;position:absolute;bottom:12px;right:12px}#statusbar{color:var(--text-3);background:var(--bg-1);border-top:1px solid var(--line);font-variant-numeric:tabular-nums;align-items:center;gap:16px;padding:0 12px;font-size:11.5px;display:flex}#statusbar .st{white-space:nowrap;align-items:center;gap:5px;display:flex}#statusbar .spacer{flex:1}#statusbar b{color:var(--text-2);font-weight:600}#loading{background:radial-gradient(1200px 600px at 50% 20%, #1a2233, var(--bg-0));z-index:100;place-items:center;transition:opacity .4s;display:grid;position:fixed;inset:0}#loading.hide{opacity:0;pointer-events:none}.loading-card{text-align:center;width:460px}.loading-logo{background:var(--accent-2);border-radius:14px;width:56px;height:56px;margin:0 auto 14px}.loading-card h1{letter-spacing:.3px;font-size:24px;font-weight:700}.loading-sub{color:var(--text-3);margin:4px 0 20px}.progress{background:var(--bg-3);border-radius:3px;height:6px;overflow:hidden}.progress-bar{background:var(--accent);width:0;height:100%;transition:width .15s}#progress-text{color:var(--text-2);min-height:18px;margin-top:10px}.loading-hint{color:var(--text-3);margin-top:26px;font-size:11.5px}.loading-error{color:#ff8a8a;white-space:pre-wrap;text-align:left;font-family:var(--mono);margin-top:10px;font-size:11.5px}#toasts{right:14px;top:calc(var(--top-h) + 10px);z-index:90;flex-direction:column;gap:8px;width:360px;display:flex;position:fixed}.toast{background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);gap:10px;padding:10px 12px;animation:.2s ease-out toast-in;display:flex}.toast-out{opacity:0;transition:all .25s;transform:translate(20px)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.toast-icon{flex:none;padding-top:1px}.toast-info .toast-icon{color:var(--accent)}.toast-success .toast-icon{color:var(--good)}.toast-warn .toast-icon{color:var(--warning)}.toast-error .toast-icon{color:var(--critical)}.toast-error{border-color:#d03b3b99}.toast-warn{border-color:#fab21980}.toast-body{flex:1;min-width:0}.toast-title{margin-bottom:2px;font-weight:650}.toast-text{color:var(--text-2);font-size:12.5px}.toast-action{color:var(--accent);margin-top:6px;padding-left:0}.toast-close{color:var(--text-3);cursor:pointer;background:0 0;border:0;height:18px;padding:0}.modal-overlay{z-index:95;background:#0000008c;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--bg-2);border:1px solid var(--line-strong);width:540px;max-width:calc(100vw - 32px);max-height:calc(100vh - 40px);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;display:flex}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:14px 16px;display:flex}.modal-head h2{font-size:15px}.modal-sub{color:var(--text-3);margin-top:2px;font-size:12px}.modal-body{gap:10px;padding:12px 16px;display:grid;overflow:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.field{gap:4px;display:grid}.field-label{color:var(--text-2);font-size:12px}.field-label .req{color:var(--critical)}.field-help{color:var(--text-3);font-size:11px}.field-static{color:var(--text-2);white-space:pre-wrap;line-height:1.5}.form-error{color:#ff8a8a;font-size:12.5px}.dash{gap:10px;padding:10px 12px;display:grid}.tiles{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.tile{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:10px 12px}.tile:hover{border-color:var(--line-strong)}.tile .tile-l{color:var(--text-3);align-items:center;gap:5px;font-size:11.5px;display:flex}.tile .tile-v{margin-top:2px;font-size:22px;font-weight:700}.tile .tile-s{color:var(--text-3);font-size:11px}.tile.t-alarm .tile-v{color:#ff7a7a}.tile.t-warn .tile-v{color:var(--warning)}.tile.t-good .tile-v{color:#6fdc6f}.chart-card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.chart-card h4{color:var(--text-2);margin-bottom:8px;font-size:12px;font-weight:600}.chart-card h4 small{color:var(--text-3);margin-left:6px;font-weight:400}.bars{gap:5px;display:grid}.bar-row{cursor:pointer;grid-template-columns:120px 1fr 36px;align-items:center;gap:8px;font-size:12px;display:grid}.bar-row:hover .bar-l{color:var(--text)}.bar-l{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.bar-track{background:var(--bg-3);border-radius:3px;gap:2px;height:10px;display:flex;overflow:hidden}.bar-seg{border-radius:2px;height:100%}.bar-v{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2)}.legend{color:var(--text-3);flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:11px;display:flex}.legend span:before{content:"";background:var(--c);vertical-align:-1px;border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.chart-tip{z-index:99;background:var(--bg-3);border:1px solid var(--line-strong);pointer-events:none;border-radius:5px;padding:5px 8px;font-size:11.5px;position:fixed}.ctx-menu{z-index:80;background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);min-width:200px;padding:5px;position:fixed}.ctx-menu .ctx-title{color:var(--text-3);border-bottom:1px solid var(--line);margin-bottom:4px;padding:5px 10px;font-size:11px}.ctx-menu button{text-align:left;width:100%;color:var(--text);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;align-items:center;gap:8px;padding:6px 10px;display:flex}.ctx-menu button:hover{background:var(--bg-3)}@media (max-width:1280px){:root{--left-w:280px;--right-w:380px}}
