:root{--surface: #0E1116;--panel: #151A21;--border: #242C36;--text: #E9EFF5;--text-2: #AEBBC8;--text-3: #8A98A8;--blue: #3987e5;--good: #0ca30c;--warn: #fab219;--serious: #ec835a;--crit: #d03b3b}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--surface);color:var(--text);font-family:IBM Plex Sans KR,Noto Sans KR,Malgun Gothic,system-ui,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}.header{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:10;flex-wrap:wrap}.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;letter-spacing:1px}.logo .mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,#3987e5,#1c5cab);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800}.logo .sub{font-size:11px;font-weight:500;color:var(--text-3);letter-spacing:.5px}.spacer{flex:1}select,.rangeBtn{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 12px;font-size:13px;cursor:pointer}.rangeBtn.on{border-color:var(--blue);color:var(--blue);font-weight:700}.ranges{display:flex;gap:6px}.updated{color:var(--text-3);font-size:12px}.layout{display:flex;align-items:flex-start}.sidebar{width:240px;flex-shrink:0;padding:16px 14px;border-right:1px solid var(--border);position:sticky;top:59px;height:calc(100vh - 59px);overflow-y:auto}.sidebar select{width:100%}.sideTitle{color:var(--text-3);font-size:11.5px;font-weight:700;letter-spacing:1px;margin-bottom:8px;text-transform:uppercase}.sensorList{display:flex;flex-direction:column;gap:6px}.sensorItem{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:8px;padding:9px 10px;cursor:pointer;color:var(--text)}.sensorItem:hover{background:var(--panel)}.sensorItem.on{background:var(--panel);border-color:var(--blue)}.sIcon{font-size:18px}.sBody{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.sName{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sMeta{font-size:11px;color:var(--text-3)}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot.ok{background:var(--good)}.dot.off{background:var(--text-3)}.sideHint{margin-top:14px;font-size:11.5px;color:var(--text-3);line-height:1.5}@media(max-width:800px){.layout{flex-direction:column}.sidebar{width:100%;height:auto;position:static;border-right:none;border-bottom:1px solid var(--border)}}.wrap{flex:1;padding:16px 20px 60px;max-width:1500px;margin:0 auto;min-width:0}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}.tile{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.tile .label{color:var(--text-2);font-size:12.5px;display:flex;align-items:center;gap:6px}.tile .value{font-size:26px;font-weight:700;margin-top:6px}.tile .hint{color:var(--text-3);font-size:11.5px;margin-top:4px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));gap:14px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 14px 4px}.panel.full{grid-column:1 / -1}.panel h3{font-size:13.5px;font-weight:600;color:var(--text-2);display:flex;align-items:center;gap:6px;margin-bottom:4px}.info{display:inline-flex;width:15px;height:15px;border-radius:50%;border:1px solid var(--text-3);color:var(--text-3);font-size:10px;align-items:center;justify-content:center;cursor:help;position:relative;flex-shrink:0}.info .tip{display:none;position:absolute;top:20px;left:-10px;z-index:30;width:320px;background:#0b0e12;border:1px solid var(--border);border-radius:8px;padding:12px;color:var(--text-2);font-size:12.5px;font-weight:400;line-height:1.6;white-space:pre-line;box-shadow:0 8px 24px #00000080}.info:hover .tip{display:block}.chart{height:260px}.alerts table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:10px}.alerts th,.alerts td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.alerts th{color:var(--text-3);font-weight:500;font-size:12px}.sev{padding:2px 8px;border-radius:10px;font-size:11.5px;font-weight:700}.sev.warning{background:#eda10026;color:var(--warn)}.sev.critical{background:#e3494826;color:var(--crit)}.zoneA{color:var(--good)}.zoneB{color:var(--warn)}.zoneC{color:var(--serious)}.zoneD{color:var(--crit)}.empty{color:var(--text-3);padding:16px 4px 20px}.loginWrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.loginBox{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:36px 32px;width:340px;display:flex;flex-direction:column;gap:12px}.loginBox input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:11px 14px;font-size:14px}.loginBox input:focus{outline:none;border-color:var(--blue)}.loginBox button{background:linear-gradient(135deg,#3987e5,#1c5cab);color:#fff;border:none;border-radius:8px;padding:12px;font-size:14px;font-weight:700;cursor:pointer;margin-top:4px}.loginMsg{color:var(--crit);font-size:12.5px;text-align:center}.mapWrap{padding:16px 20px 40px;max-width:1500px;margin:0 auto}.mapBar{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap}.mapBar h2{font-size:16px;font-weight:700}.legend{display:flex;gap:14px;color:var(--text-3);font-size:12px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.map{position:relative;height:calc(100vh - 170px);min-height:480px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--panel);background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;background-position:-1px -1px}.map.editing{border-color:var(--blue);cursor:crosshair}.assetNode{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.map.editing .assetNode{cursor:grab}.assetHalo{border-radius:16px;padding:8px;background:#0e1116b3;transition:box-shadow .3s}.assetNode:hover .assetHalo{background:#0e1116f2}.assetLabel{font-size:13px;font-weight:700;text-shadow:0 1px 4px #000}.assetSub{font-size:11px;font-weight:600;text-shadow:0 1px 4px #000}.mapHint{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:var(--text-3);font-size:12px;pointer-events:none}.adminWrap input{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;width:100%;max-width:280px}.adminWrap input:focus{outline:none;border-color:var(--blue)}.rowBtns{display:flex;gap:6px}.rangeBtn:disabled{opacity:.35;cursor:default}.rangeBtn.danger{border-color:var(--crit);color:var(--crit)}.mono{font-family:monospace;font-size:12px;color:var(--text-3)}.adminMsg{background:#e349481f;border:1px solid var(--crit);color:var(--crit);border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:12px}.tankWrap{padding:0;max-width:none}.tankFrame{width:100%;height:calc(100vh - 59px);border:0;display:block}.tankTableWrap{overflow-x:auto;margin-bottom:10px}.tankTable{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}.tankTable th{text-align:right;color:var(--text-3);font-weight:600;padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.tankTable th:first-child,.tankTable td:first-child{text-align:left}.tankTable td{text-align:right;padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.tankTable tr:last-child td{border-bottom:0}.tankTable .warnCell{color:#d99a2b;font-weight:600}.tankNote{color:var(--text-3);font-size:11.5px;padding:2px 2px 10px;line-height:1.6}.nightTag{margin-left:7px;font-size:10px;padding:1px 5px;border-radius:4px;background:#5b9df026;color:#5b9df0;vertical-align:1px}.tankTable .dimCell{color:var(--text-3);font-size:11.5px;text-align:left}.tankTabs{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tankTab{background:var(--panel);border:1px solid var(--border);color:var(--text-2);border-radius:9px;padding:8px 15px;font-size:13.5px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.tankTab:hover{border-color:var(--text-3)}.tankTab.on{border-color:var(--blue);color:var(--text);background:#3987e524}.tankTabSub{font-size:11px;font-weight:500;color:var(--text-3)}.tankTab.on .tankTabSub{color:var(--blue)}.tankTabTag{font-size:10px;font-weight:500;padding:1px 5px;border-radius:4px;background:#ffffff12;color:var(--text-3)}.panel h3:has(.panelSub){flex-wrap:wrap}.panelSub{font-size:11.5px;font-weight:500;color:var(--text-3);margin-left:4px}.dirTag{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:5px;white-space:nowrap}.dirTag.up{background:#3987e52e;color:#5b9df0}.dirTag.down{background:#9b7be02e;color:#a58bea}.dirTag.mix{background:#ffffff14;color:var(--text-2)}.tankTable .upCell{color:#5b9df0}.tankTable .downCell{color:#a58bea}.tankTable .goodCell{color:var(--good);font-weight:700}.tankTable tr.dimRow td{color:var(--text-3);text-decoration:line-through;text-decoration-color:#8a897f80}.tankTable tr.dimRow td:last-child{text-decoration:none}.dimInline{color:var(--text-3);font-size:11px}.useTag{display:inline-block;margin-left:6px;font-size:10.5px;font-weight:600;padding:1px 6px;border-radius:4px;background:#ffffff12;color:var(--text-3);white-space:nowrap}.tankTable td>.useTag:only-child{margin-left:0}.useTag.train{background:#3987e529;color:#5b9df0}.useTag.eval{background:#1baf7a29;color:var(--good)}.useTag.next{background:#eda10024;color:var(--warn)}.useTag.down{background:#9b7be029;color:#a58bea}.decTag{font-size:11px;font-weight:700;padding:1px 8px;border-radius:4px}.decTag.swap{background:#1baf7a29;color:var(--good)}.decTag.keep{background:#ffffff12;color:var(--text-2)}.grid>.tankNote.full{grid-column:1 / -1;margin-top:-6px}.modelGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:12px;margin:8px 0 16px}.modelCard{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:#ffffff05;min-width:0}.modelHead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.modelUse{color:var(--text-3);font-size:11.5px}.statePill{margin-left:auto;font-size:11px;font-weight:700;padding:2px 9px;border-radius:10px}.statePill.on{background:#1baf7a29;color:var(--good)}.statePill.wait{background:#eda10024;color:var(--warn)}.modelName{font-size:16px;font-weight:700;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px}.modelId{font-family:monospace;font-size:11px;font-weight:400;color:var(--text-3);overflow-wrap:anywhere}.modelMeta{color:var(--text-2);font-size:12px;line-height:1.75;margin:6px 0 10px}.modelMeta b{color:var(--text);font-weight:600}.modelStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}.modelStat{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.modelStat .k{color:var(--text-3);font-size:11px;white-space:nowrap}.modelStat .v{font-size:17px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap}.bestLine{margin-top:10px;font-size:12px;font-weight:600;color:#e6b94a}.bestLine.dim{color:var(--text-3);font-weight:500}.readyLine{font-size:12.5px;color:var(--text-2)}.readyLine b{color:var(--warn)}.readyLine b.ok{color:var(--good)}.readyLine span{color:var(--text-3);font-size:11.5px}.bandGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:8px 0 6px}.band{border:1px solid var(--border);border-radius:7px;padding:5px 8px;font-size:11px;color:var(--text-3);line-height:1.55;font-variant-numeric:tabular-nums}.band b{color:var(--text-2);font-size:12px}.band.ok{border-color:#1baf7a8c;background:#1baf7a0f}.band.ok b{color:var(--good)}.tankSubTitle{font-size:12.5px;font-weight:600;color:var(--text-2);margin:4px 0 2px;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px}.n3{--grid: #1B222B;--mono: "JetBrains Mono", ui-monospace, Consolas, monospace;max-width:1440px}.n3 .mono{font-family:var(--mono)}.n3-pageTitle{font-size:22px;font-weight:800;margin:4px 0 16px}.n3-banner{background:#e349481f;border:1px solid rgba(227,73,72,.4);color:#f2a3a2;border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:13px}.n3-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:18px 20px;margin-bottom:16px}.n3-title{font-size:15px;font-weight:700}.n3-meta{color:var(--text-3);font-size:12px}.n3-empty{color:var(--text-3);font-size:13px;padding:18px 2px}.n3-dim{color:var(--text-3);font-size:12.5px}.n3-warnTxt{color:var(--warn)}.n3-top{display:grid;grid-template-columns:1.55fr 1fr;gap:16px}.n3-top .n3-card{margin-bottom:16px}.n3-glRow{display:flex;justify-content:space-between;gap:16px}.n3-big{font-size:28px;font-weight:800;letter-spacing:.02em}.n3-line{font-size:12.5px;color:var(--text-2);margin-top:6px}.n3-pill{display:inline-block;margin-top:8px;padding:3px 10px;border-radius:999px;font-size:12.5px;font-weight:700;background:#212a35;color:var(--text-2)}.n3-pill.liq{background:#1baf7a29;color:var(--good)}.n3-pill.abn{background:#eda10029;color:var(--warn)}.n3-pill.end{background:#e3494829;color:var(--crit)}.n3-count{border-left:1px solid var(--border);padding-left:18px;text-align:right;min-width:92px}.n3-count .lbl{font-size:12px;color:var(--text-3)}.n3-count .num{font-size:34px;font-weight:700;margin-top:4px}.n3-count small{font-size:13px;color:var(--text-3);margin-left:3px}.n3-buzz{width:100%;margin-top:16px;padding:14px;border-radius:10px;border:1px solid var(--border);background:#1b222b;color:var(--text-3);font-size:14.5px;font-weight:700;cursor:not-allowed}.n3-buzzHint{text-align:center;color:var(--text-3);font-size:12px;margin-top:10px}.n3-buzz:not(:disabled){cursor:pointer;color:var(--text);background:#232b35}.n3-buzz:not(:disabled):hover{border-color:var(--text-3)}.n3-buzz.ring:not(:disabled){color:#fff;background:#5a1f1f;border-color:var(--crit)}.n3-outBtn{margin-left:10px;padding:2px 10px;border-radius:6px;border:1px solid var(--border);background:#232b35;color:var(--text);font-size:12px;cursor:pointer}.n3-outBtn:disabled{opacity:.5;cursor:wait}.n3-rtank{display:flex;flex-direction:column;justify-content:center;gap:14px}.n3-rtH{display:flex;justify-content:space-between;align-items:baseline}.n3-rtNote{font-size:12px;color:var(--text-3)}.n3-rtRow{display:flex;gap:40px}.n3-rtIt{display:flex;align-items:baseline;gap:8px;flex:1}.n3-rtIt .k{font-size:12.5px;color:var(--text-3)}.n3-rtIt .v{font-size:28px;font-weight:700}.n3-rtIt small{font-size:12px;color:var(--text-3);margin-left:2px}.n3-rtBar{height:8px;border-radius:4px;background:#1b222b;overflow:hidden}.n3-rtBar i{display:block;height:100%;background:var(--blue)}.n3-rtSel{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 24px;font-size:12.5px;color:var(--text-3)}.n3-rtSel b{color:var(--text);font-weight:600;margin-left:6px}.n3-rtSel b.on{color:var(--good);background:#1baf7a29;border-radius:999px;padding:2px 10px}.n3-rtSel b.off{color:var(--text-2)}.n3-rtSel b.unk{color:var(--warn);font-weight:500}.n3-rtAssume{margin-left:auto;font-size:11px;color:#5d6b7a}.n3-fold{padding:0}.n3-foldHead{display:flex;align-items:center;gap:12px;width:100%;padding:16px 20px;background:none;border:none;color:var(--text);cursor:pointer;text-align:left}.n3-foldHead .n3-meta{flex:1;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.n3-chev{color:var(--text-3);font-size:16px;width:14px;text-align:center}.n3-foldBody{padding:0 20px 18px}.n3-rows>div{display:flex;gap:14px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}.n3-rows>div:last-child{border-bottom:none}.n3-rows span{color:var(--text-3);width:88px;flex-shrink:0}.n3-rows b{font-weight:500;color:var(--text-2);word-break:break-all}.n3-viz{background:#1b222b;border:1px solid var(--border);border-radius:10px;padding:14px 14px 12px}.n3-vizHead{display:flex;justify-content:space-between;align-items:center}.n3-vizHead b{font-size:13px;letter-spacing:.04em}.n3-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border:1px solid var(--border);border-radius:6px;color:var(--text-2)}.n3-badge i{width:6px;height:6px;border-radius:50%;background:var(--text-3)}.n3-badge.rec i{background:var(--crit)}.n3-meters{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;margin:12px 0 8px;color:var(--text);font-weight:700}.n3-meters em{font-style:normal;font-weight:400;color:var(--text-3);margin-right:4px}.n3-ctitle{display:flex;justify-content:space-between;font-size:12.5px;margin:10px 0 6px}.n3-ctitle span{color:var(--text-3)}.n3-wave{position:relative;background:#191a1c;border:1px solid #2a2d33;border-radius:6px}.n3-wave canvas{display:block;width:100%;height:240px}.n3-recv{position:absolute;right:8px;top:6px;font-size:11px;color:var(--text-3)}.n3-gaps canvas{display:block;width:100%;height:56px}.n3-trHead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}.n3-trWho{margin-left:auto}.n3-seg{display:inline-flex;background:#1b222b;border:1px solid var(--border);border-radius:8px;padding:3px;gap:2px}.n3-seg button{background:none;border:none;color:var(--text-3);font-size:12.5px;padding:5px 12px;border-radius:6px;cursor:pointer}.n3-seg button.on{background:#242c36;color:var(--text);font-weight:700}.n3-pick{min-width:260px;max-width:420px;font-size:12.5px}.n3-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2);margin-bottom:4px}.n3-legend span{display:inline-flex;align-items:center;gap:6px}.n3-legend i{width:16px;height:3px;border-radius:2px;display:inline-block}.n3-legend i.dash{height:0;border-top:2px dashed;background:none}.n3-chart{position:relative}.n3-tip{position:absolute;top:34px;transform:translate(-50%);background:#111;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:12px;pointer-events:none;min-width:150px}.n3-tipT{color:var(--text-3);margin-bottom:4px}.n3-tipR{display:flex;align-items:center;gap:6px}.n3-tipR i{width:8px;height:8px;border-radius:2px}.n3-tipR b{margin-left:auto;font-weight:600}.n3-noteRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-top:1px solid var(--border);margin-top:8px;padding-top:12px;font-size:13px}.n3-noteRow .k{font-weight:700;color:var(--text-2)}.n3-noteRow .sp{flex:1}.n3-noteRow.end{justify-content:flex-end;border-top:none}.n3-cat{background:#242c36;border-radius:6px;padding:2px 8px;font-weight:700;font-size:12.5px}.n3-noteText{color:var(--text-2);font-size:13px;margin-top:8px;white-space:pre-wrap}.n3-noteForm{border-top:1px solid var(--border);margin-top:8px;padding-top:12px}.n3-noteForm .n3-noteRow{border-top:none;margin-top:0;padding-top:0}.n3-noteFields{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}.n3-noteFields label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-3)}.n3-noteForm input,.n3-noteForm textarea{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;font-family:inherit}.n3-noteForm textarea{width:100%;resize:vertical}.n3-err{color:var(--crit);font-size:12.5px;margin-right:auto}.n3-btn{background:#1b222b;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:12.5px;cursor:pointer}.n3-btn.pri{border-color:var(--blue);color:#8fbcf3;background:#3987e51f}.n3-steps{display:grid;gap:6px}.n3-step{display:grid;grid-template-columns:90px 80px 1fr;gap:12px;font-size:13px;color:var(--text-3);padding:6px 0;border-bottom:1px solid var(--border)}.n3-step.on{color:var(--text-2)}.n3-step.on .k{color:var(--text);font-weight:700}.n3-kv{font-size:12.5px;color:var(--text-2);margin-top:12px;line-height:1.6}@media(max-width:900px){.n3-top{grid-template-columns:1fr}.n3-trWho{margin-left:0}}.mapList{display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mapCard{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 8px 10px;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;color:var(--text);text-align:center;font-family:inherit}.mapCard svg{width:46px;height:46px}.moreBtn{display:block;width:100%;margin:4px 0 10px;padding:8px;background:transparent;color:var(--blue);border:1px dashed var(--border);border-radius:8px;font-size:12.5px;cursor:pointer;font-family:inherit}@media(max-width:800px){.header{position:static;padding:10px 12px;gap:8px}.logo{font-size:16px}.logo .mark{width:30px;height:30px}.logo .sub,.logo>div:not(.mark){display:none}.header .rangeBtn{padding:6px 10px;font-size:12.5px}.ranges{width:100%;overflow-x:auto}.updated{display:none}.layout{align-items:stretch}.wrap{width:100%;padding:12px 12px 48px}.sidebar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px}.sidebar>select{width:100%}.sidebar .sideTitle,.sidebar .sideHint{display:none}.sensorList{display:contents}.sensorItem{width:auto;flex:0 1 auto;padding:6px 10px;gap:6px;border-color:var(--border)}.sensorItem .sMeta{display:none}.sIcon{font-size:15px}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.tile{padding:10px 12px}.tile .value{font-size:21px}.panel{padding:10px 10px 4px}.info .tip{width:min(320px,78vw)}.tankTabs{gap:6px;margin-bottom:12px}.tankTab{padding:7px 12px}.mapWrap{padding:12px 12px 32px}.mapBar .rangeBtn,.map{display:none}.mapList{display:grid}.n3-pageTitle{font-size:19px;margin-bottom:12px}.n3-card{padding:14px}.n3-big{font-size:24px}.n3-count{padding-left:12px;min-width:72px}.n3-count .num{font-size:28px}.n3-rtRow{gap:16px}.n3-rtIt .v{font-size:22px}.n3-foldHead{padding:14px;gap:8px}.n3-foldBody{padding:0 14px 14px}.n3-meters{gap:10px}.n3-wave canvas{height:160px}.n3-pick{min-width:0;width:100%;max-width:none}.n3-legend{gap:6px 12px;font-size:12px}.n3-step{grid-template-columns:70px 62px 1fr;gap:8px;font-size:12px}.n3-rows span{width:70px}}.n3-sel{margin-top:14px}.n3-selLbl{font-size:12px;color:var(--text-3);margin-bottom:6px}.n3-selSeg{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:12px;background:#1b222b}.n3-selSeg span{min-width:112px;padding:10px 18px;border-radius:9px;text-align:center;font-size:22px;font-weight:800;letter-spacing:.02em;color:#5f5e57}.n3-selSeg span.on{color:#fff}.n3-selSeg span.l47.on{background:#3987e5;box-shadow:0 4px 14px #3987e559}.n3-selSeg span.yton.on{background:#8b6fd6;box-shadow:0 4px 14px #8b6fd659}@media(max-width:800px){.n3-selSeg{display:flex}.n3-selSeg span{flex:1;min-width:0;padding:9px 0;font-size:20px}}.nw-titleRow{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px}.nw-titleRow .n3-pageTitle{margin-bottom:4px}.nw-muted{color:var(--text-3)}.nw-small{font-size:11.5px;font-weight:500;margin-left:8px}.nw-warn{color:var(--warn)!important}.nw-good{color:var(--good)!important}.nw-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:14px}.nw-sec{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;margin:22px 0 10px;flex-wrap:wrap}.nw-note{font-size:12px;color:var(--text-3);line-height:1.6;margin-top:10px}.nw-note b{color:var(--text-2);font-weight:600}.nw-empty{color:var(--text-3);font-size:13px;padding:14px 2px}.nw-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;flex-shrink:0;background:var(--text-3)}.nw-dot.ok{background:var(--good)}.nw-dot.warn{background:var(--warn)}.nw-dot.bad{background:var(--crit)}.nw-dot.off{background:#55554f}.nw-path{display:flex;align-items:stretch;gap:8px}.nw-hop{flex:1;min-width:0;background:#1b222b;border:1px solid var(--border);border-radius:10px;padding:10px 12px}.nw-hopT{display:flex;align-items:center;font-weight:700;font-size:13.5px}.nw-hopS{font-size:11.5px;color:var(--text-3);margin-top:5px;line-height:1.45}.nw-arrow{align-self:center;color:var(--text-3);font-size:16px}.nw-boards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.nw-boards .nw-card{margin-bottom:0}.nw-bHead{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.nw-bName{display:flex;align-items:center;font-size:16px;font-weight:800}.nw-kv>div{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);font-size:12.5px}.nw-kv>div:last-child{border-bottom:none}.nw-kv span{color:var(--text-3);width:62px;flex-shrink:0}.nw-kv b{font-weight:500;color:var(--text-2);min-width:0;word-break:keep-all}.nw-kv b.mono{font-size:12px}.nw-table{width:100%;border-collapse:collapse;font-size:13px}.nw-table th{text-align:left;color:var(--text-3);font-weight:600;font-size:12px;padding:6px 8px;border-bottom:1px solid var(--border)}.nw-table td{padding:8px;border-bottom:1px solid var(--border);vertical-align:middle}.nw-table tr:last-child td{border-bottom:none}.nw-table .r{text-align:right}.nw-table td.mono{font-size:12.5px;color:var(--text-2)}.nw-num{font-family:monospace;font-size:16px;font-weight:700;color:var(--text)}.nw-codeRow td{background:#3987e50d}.nw-codeVal{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap}.nw-bits{display:inline-flex;gap:4px}.nw-bit{width:62px;text-align:center;border:1px solid var(--border);border-radius:6px;padding:4px 2px 3px;background:#1b222b}.nw-bit b{display:block;font-family:monospace;font-size:14px;color:var(--text-3)}.nw-bit small{display:block;font-size:10px;color:var(--text-3)}.nw-bit em{display:block;font-style:normal;font-size:9.5px;color:#5d6b7a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nw-bit.on{border-color:var(--blue);background:#3987e529}.nw-bit.on b{color:var(--text)}.nw-bit.on em{color:var(--text-3)}.nw-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700}.nw-pill.ok{background:#1baf7a29;color:var(--good)}.nw-pill.off{background:#212a35;color:var(--text-3)}.nw-seg{display:inline-flex;background:#1b222b;border:1px solid var(--border);border-radius:8px;padding:3px;gap:2px;margin-left:auto}.nw-seg button{background:none;border:none;color:var(--text-3);font-size:12px;padding:4px 11px;border-radius:6px;cursor:pointer;font-weight:500}.nw-seg button.on{background:#242c36;color:var(--text);font-weight:700}@media(max-width:1100px){.nw-boards{grid-template-columns:1fr}}@media(max-width:800px){.nw-path{flex-direction:column}.nw-arrow{transform:rotate(90deg);align-self:flex-start;margin-left:18px}.nw-bit{width:44px}.nw-bit em{display:none}.nw-table th:nth-child(4),.nw-table td:nth-child(4){display:none}.nw-titleRow{flex-direction:column;align-items:flex-start}}.nw-more{margin-top:10px;background:#1b222b;border:1px solid var(--border);color:var(--text-2);border-radius:6px;padding:6px 14px;font-size:12.5px;cursor:pointer}.nw-inv .nw-num{color:var(--text-3)}@media(max-width:800px){.nw-pk th:nth-child(5),.nw-pk td:nth-child(5){display:none}.nw-pk td{padding:7px 4px}.nw-bit{width:30px}.nw-codeVal{gap:6px}}.nw-onList{flex-basis:100%;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:5px;margin-top:4px}.nw-onList .k{font-size:11.5px;color:var(--text-3);margin-right:2px}.nw-onItem{background:#3987e52e;color:#cfe2fb;border:1px solid rgba(57,135,229,.5);border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;white-space:nowrap}.nw-assume{flex-basis:100%;text-align:right;font-size:10.5px;color:#5d6b7a}:root{color-scheme:dark;--bg:#0E1116;--panel:#151A21;--panel-2:#1B222B;--panel-3:#212A35;--hairline:#242C36;--hairline-2:#303A47;--ink:#E9EFF5;--ink-2:#AEBBC8;--ink-3:#8A98A8;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--ok:#0ca30c;--warn:#fab219;--caut:#ec835a;--crit:#d03b3b;--ok-bg:rgba(12,163,12,.13);--warn-bg:rgba(250,178,25,.13);--caut-bg:rgba(236,131,90,.14);--crit-bg:rgba(208,59,59,.14);--s1-bg:rgba(57,135,229,.13);--st-open:#4b9bf2;--st-close:var(--ink-3);--tank-shell:#38434F;--font-ui:"IBM Plex Sans KR","Noto Sans KR","Malgun Gothic",system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Consolas,"IBM Plex Sans KR","Noto Sans KR","Malgun Gothic",monospace;--r:12px;--r2:9px;--r3:6px;--topbar-h:58px}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.5}:where(.gshell) button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}:where(.gshell) :focus-visible{outline:2px solid var(--s1);outline-offset:2px;border-radius:4px}.gmono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar-h);display:flex;align-items:center;gap:22px;padding:0 22px;background:#0e1116ed;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--hairline)}.brand{display:flex;align-items:baseline;gap:9px;flex:none}.brand-mark{font-size:18px;font-weight:700;letter-spacing:-.012em}.nav{display:flex;gap:2px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-btn{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r3);font-size:14.5px;font-weight:500;color:var(--ink-2);white-space:nowrap;transition:background .13s,color .13s}.gshell .nav-btn{color:var(--ink-2)}.nav-btn:hover{background:var(--panel-2)}.gshell .nav-btn:hover,.gshell .nav-btn[aria-current=page]{color:var(--ink)}.nav-btn[aria-current=page]{background:var(--panel-3);font-weight:600}.nav-dot{width:6px;height:6px;border-radius:50%;background:var(--ink-3);flex:none}.nav-dot.crit{background:var(--crit);animation:beaconDot 1.1s ease-in-out infinite}.nav-dot.warn{background:var(--warn)}.topbar-right{display:flex;align-items:center;gap:16px;flex:none}.sync{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-2)}.sync-pulse{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pulse 2.4s ease-in-out infinite}.sync.down{color:var(--crit);font-weight:600}.sync.down .sync-pulse{background:var(--crit);animation:beaconDot 1.1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.32}}@keyframes beaconDot{0%,to{opacity:1}50%{opacity:.3}}.bell,.icon-btn{position:relative;display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r3);transition:background .13s,color .13s}.gshell .bell{color:var(--ink-2)}.gshell .icon-btn{color:var(--ink-3)}.gshell .bell:hover,.gshell .icon-btn:hover{background:var(--panel-2);color:var(--ink)}.bell-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--crit);color:#fff2f2;font-family:var(--font-mono);font-size:10px;font-weight:600;display:grid;place-items:center;border:2px solid var(--bg)}.gwrap{max-width:1560px;margin:0 auto;padding:22px 22px 56px}.gwrap .wrap{padding:0;max-width:none;margin:0}.gwrap .mapWrap{padding:0;max-width:none}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px;flex-wrap:wrap}.page-title{display:flex;align-items:baseline;gap:12px}.page-title h1{margin:0;font-size:25px;font-weight:600;letter-spacing:-.014em}.page-meta{display:flex;gap:24px}.page-meta-item{display:flex;flex-direction:column;gap:3px}.page-meta-k{font-size:12.5px;letter-spacing:.02em;color:var(--ink-3)}.page-meta-v{font-family:var(--font-mono);font-size:16px;color:var(--ink)}.page-meta-v a{color:var(--s1);text-decoration:none;font-family:var(--font-ui);font-size:14px}.page-meta-v a:hover{text-decoration:underline}.card{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--r);padding:18px 20px 20px;min-width:0}.card+.card{margin-top:16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.card-title{font-size:16px;font-weight:600;letter-spacing:-.008em}.card-tag{font-family:var(--font-mono);font-size:13px;color:var(--ink-3);letter-spacing:0}.ggrid{display:grid;gap:16px}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}.ggrid>*{min-width:0}.dgm{overflow-x:auto}.dgm svg{display:block;width:100%;height:auto;margin-inline:auto}.tank-row svg{max-width:1120px}.ota-note{font-size:13px;color:var(--ink-2);line-height:1.6;padding:10px 14px;border-left:3px solid var(--s1);background:var(--panel-2);border-radius:0 var(--r3) var(--r3) 0}.ota-note b{color:var(--ink)}.g-empty{padding:26px 6px;color:var(--ink-3);font-size:14px;line-height:1.7}.g-empty b{color:var(--ink-2)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:5px;font-size:13px;font-weight:600;letter-spacing:.01em;border:1px solid transparent;white-space:nowrap}.chip:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.chip.ok{color:var(--ok);background:var(--ok-bg);border-color:#0ca30c47}.chip.warn{color:var(--warn);background:var(--warn-bg);border-color:#fab2194d}.chip.caut{color:var(--caut);background:var(--caut-bg);border-color:#ec835a52}.chip.crit{color:var(--crit);background:var(--crit-bg);border-color:#d03b3b52}.chip.mute{color:var(--ink-2);background:var(--panel-2);border-color:var(--hairline-2)}.chip.s1{color:var(--s1);background:var(--s1-bg);border-color:#3987e54d}.vent-strip{display:flex;flex-wrap:wrap;gap:10px}.vent-pill{flex:1 1 220px;min-width:180px;padding:12px 14px;border:1px solid var(--hairline-2);border-radius:10px;background:var(--panel-2);transition:border-color .2s,background .2s;text-align:left}button.vent-pill{cursor:pointer}button.vent-pill:hover{border-color:var(--ink-3)}.vent-pill[aria-pressed=true]{border-color:var(--s1);box-shadow:inset 0 0 0 1px var(--s1)}.vent-pill .vp-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.vent-pill .vp-name{font-family:var(--font-mono);font-size:13px;color:var(--ink-2);font-weight:600}.vent-pill .vp-sub{font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}.vent-pill.is-down{opacity:.6}.vent-pill.is-na{border-style:dashed}.vp-rows{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:2px 0 7px;align-items:baseline}.vp-k{font-size:12.5px;color:var(--ink-3)}.vp-v{font-family:var(--font-mono);font-size:15px;font-weight:700;letter-spacing:.04em;color:var(--ink-3)}.vp-v.open{color:var(--ink)}.vp-v.ok{color:var(--ok)}.vp-v.warn{color:var(--warn)}.vp-v.caut{color:var(--caut)}.vp-v.crit{color:var(--crit)}.vp-match{font-size:12px;font-weight:700;border-radius:4px;padding:2px 8px;color:var(--ink-3);background:var(--panel-2)}.vp-match.ok{color:var(--ok);background:var(--ok-bg)}.vp-match.bad{color:var(--crit);background:var(--crit-bg)}.tbl-scroll{overflow-x:auto}.gtbl table{width:100%;border-collapse:collapse;font-size:15px;min-width:560px}.gtbl thead th{text-align:left;padding:0 13px 10px;font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--ink-3);border-bottom:1px solid var(--hairline-2)}.gtbl tbody td{padding:13px;border-bottom:1px solid var(--hairline);color:var(--ink-2)}.gtbl tbody tr:last-child td{border-bottom:none}.gtbl tbody tr:hover td{background:var(--panel-2)}.gtbl td.num,.gtbl th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink)}.gtbl thead th.num{color:var(--ink-3)}.gtbl th.gap,.gtbl td.gap{padding-left:36px}.gtbl td.tank{font-family:var(--font-mono);color:var(--ink);font-weight:500}.seg{display:flex;gap:2px;background:var(--panel-2);padding:3px;border-radius:var(--r3)}.gshell .seg button{padding:7px 15px;border-radius:5px;font-size:14px;font-weight:600;color:var(--ink-3);font-family:var(--font-mono);transition:background .12s,color .12s}.gshell .seg button:hover{color:var(--ink);background:var(--panel-3)}.gshell .seg button[aria-pressed=true]{background:var(--s1-bg);color:#7fb2f2;box-shadow:inset 0 0 0 1px #3987e5a6}.page-title .seg{align-self:center;margin-left:6px}.coll-devs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.gshell .coll-dev{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--ink-2);background:var(--panel);border:1px solid var(--hairline-2);border-radius:var(--r3);padding:9px 16px;display:inline-flex;align-items:center;gap:8px}.gshell .coll-dev:hover{color:var(--ink)}.gshell .coll-dev[aria-pressed=true]{color:var(--ink);border-color:var(--s1);box-shadow:inset 0 0 0 1px var(--s1)}.ovh{display:grid;grid-template-columns:minmax(250px,290px) minmax(0,1fr);gap:10px;margin-bottom:14px}.ovh-sum{display:flex;align-items:center;gap:14px;padding:12px 18px;border-radius:var(--r);border:1px solid var(--hairline);background:var(--panel);min-width:0}.ovh-ic{flex:0 0 auto;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:var(--ink-3);color:#fff}.ovh-ic svg{width:26px;height:26px}.ovh-txt{min-width:0}.ovh-big{font-size:27px;font-weight:700;line-height:1.15;color:var(--ink-3);white-space:nowrap}.ovh-sub{font-size:14px;color:var(--ink-2);margin-top:3px}.ovh-sub2{font-size:12.5px;color:var(--ink-3);margin-top:2px}.ovh-ok .ovh-sum{border-color:#0ca30c8c;background:#0ca30c14}.ovh-warn .ovh-sum{border-color:var(--warn);background:#fab21917}.ovh-crit .ovh-sum{border-color:var(--crit);background:#d03b3b1f}.ovh-ok .ovh-ic{background:var(--ok)}.ovh-warn .ovh-ic{background:var(--warn);color:#2a1d00}.ovh-crit .ovh-ic{background:var(--crit)}.ovh-ok .ovh-big{color:var(--ok)}.ovh-warn .ovh-big{color:var(--warn)}.ovh-crit .ovh-big{color:#ff6b6b}.ovh-tiles{display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:8px;min-width:0}.gshell .ovh-t{display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:0;padding:10px 13px;text-align:left;border-radius:var(--r2);border:1px solid var(--hairline);background:var(--panel);transition:border-color .14s}.gshell .ovh-t:hover{border-color:var(--hairline-2)}.ovh-h{display:flex;align-items:center;gap:7px;font-size:14.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ovh-dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--ink-3)}.ovh-s{font-size:21px;font-weight:700;color:var(--ink-3);line-height:1.25}.ovh-d{font-size:12.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ovh-t.ok .ovh-dot{background:var(--ok)}.ovh-t.ok .ovh-s{color:var(--ok)}.gshell .ovh-t.warn{border-color:var(--warn);background:#fab21912}.ovh-t.warn .ovh-dot{background:var(--warn)}.ovh-t.warn .ovh-s{color:var(--warn)}.ovh-t.warn .ovh-d{color:var(--ink-2)}.gshell .ovh-t.crit{border-color:var(--crit);background:#d03b3b1a}.ovh-t.crit .ovh-dot{background:var(--crit)}.ovh-t.crit .ovh-s{color:#ff6b6b}.ovh-t.crit .ovh-d{color:var(--ink)}.ovh-t.na .ovh-dot{background:transparent;border:1.5px dashed var(--ink-3)}@media(max-width:1240px){.ovh{grid-template-columns:minmax(0,1fr)}}@media(max-width:900px){.ovh-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.gshell .ov-net{display:flex;align-items:center;gap:6px 16px;flex-wrap:nowrap;flex:0 0 auto;margin-left:auto;padding:8px 20px 8px 16px;text-align:left;background:var(--panel);border:1px solid var(--hairline);border-radius:var(--r3);transition:border-color .14s}.gshell .ov-net:hover{border-color:var(--hairline-2)}.ovn-lbl{font-size:13px;font-weight:600;color:var(--ink-3);letter-spacing:.02em}.ovn-it{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);white-space:nowrap}.ovn-it b{font-family:var(--font-mono);font-weight:600;color:var(--ink)}.ovn-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--ink-3)}.ovn-it.up .ovn-dot{background:var(--ok)}.ovn-it.down .ovn-dot{background:var(--crit)}.ovn-it.down{color:var(--crit)}.plant{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--r);padding:16px 18px}.plant-grid{display:grid;grid-template-columns:520fr 292fr 268fr;gap:16px}.plant-grid.r2{grid-template-columns:600fr 480fr;margin-top:12px}.plant-grid.r2.one{grid-template-columns:minmax(0,1fr)}.gshell .zone{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;width:100%;text-align:left;background:var(--panel-2);border:1px solid var(--hairline);border-radius:10px;padding:16px 18px;min-width:0;transition:background .14s,border-color .14s}.gshell .zone:hover{background:#1a222c;border-color:var(--hairline-2)}.gshell .zone.alarm{border-color:var(--crit);box-shadow:inset 0 0 0 1px #d03b3b66}.zone-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.zone-t{font-size:16px;font-weight:600;color:var(--ink)}.zone-tag{font-size:12.5px;color:var(--ink-3)}.zone-na{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:220px;color:var(--ink-3);text-align:center}.zone-na b{font-size:22px;font-weight:600;color:var(--ink-3);letter-spacing:.02em}.zone-na span{font-size:13px}.ov-tanks svg{display:block;width:100%;height:auto}.ov-rows{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,1fr));align-items:center}.ov-rows>div{padding:11px 0;border-top:1px solid var(--hairline);font-size:14px;color:var(--ink-2)}.ov-rows>div.h{border-top:0;padding-top:0;font-size:12.5px;color:var(--ink-3)}.ov-rows>div.l{font-family:var(--font-mono);font-weight:600;color:var(--ink)}.ov-rows>div.c{text-align:center}.ov-st{font-family:var(--font-mono);font-weight:600}.ov-rec{flex:1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;min-height:150px}.ov-rec-big{font-size:32px;font-weight:700;letter-spacing:-.01em;text-align:center}.ov-rec-line{margin-top:6px;font-size:13px;color:var(--ink-2);text-align:center}.ov-rec-r{text-align:center;padding-left:22px;border-left:1px solid var(--hairline)}.ov-rec-r .lbl{font-size:13px;color:var(--ink-3)}.ov-rec-r .num{font-size:46px;font-weight:600;font-family:var(--font-mono);color:var(--ink);line-height:1.1}.ov-rec-r .num small{font-size:16px;font-family:var(--font-ui);color:var(--ink-2);margin-left:4px}@media(max-width:1100px){.plant-grid,.plant-grid.r2{grid-template-columns:minmax(0,1fr)}}.main-band{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-top:16px}.mrow{display:grid;grid-template-columns:118px 78px minmax(0,1fr) auto;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--hairline)}.mrow:last-child{border-bottom:none}.mrow-tag{display:flex;align-items:center;gap:9px;font-family:var(--font-mono);font-size:14.5px;font-weight:600;color:var(--ink)}.mrow-dot{width:8px;height:8px;border-radius:50%;background:var(--crit);flex:none}.mrow-dot.warn{background:var(--warn)}.mrow-time{font-family:var(--font-mono);font-size:13px;color:var(--ink-3)}.mrow-msg{font-size:14px;color:var(--ink-2);min-width:0}.mrow-quiet{font-size:14px;color:var(--ink-3);padding:6px 2px}@media(max-width:1000px){.mrow{grid-template-columns:112px minmax(0,1fr) auto}.mrow-time{display:none}}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#06080b99}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:51;width:min(400px,100vw);background:var(--panel);border-left:1px solid var(--hairline-2);display:flex;flex-direction:column;box-shadow:-18px 0 44px #00000073}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:17px 18px;border-bottom:1px solid var(--hairline)}.drawer-title{font-size:17px;font-weight:600}.drawer-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:9px}.alert{background:var(--panel-2);border:1px solid var(--hairline);border-radius:var(--r2);padding:13px 14px;border-left:3px solid var(--ink-3)}.alert.crit{border-left-color:var(--crit)}.alert.warn{border-left-color:var(--warn)}.alert-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.alert-tag{font-family:var(--font-mono);font-size:14.5px;font-weight:600;color:var(--ink)}.alert-time{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3)}.alert-msg{font-size:14px;color:var(--ink-2)}.devs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.dev{display:flex;flex-direction:column;gap:12px;padding:16px 18px;border-radius:var(--r2);background:var(--panel-2);border:1px solid var(--hairline)}.dev-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.dev-tag{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--ink)}.dev-level{font-family:var(--font-mono);font-size:42px;font-weight:500;letter-spacing:-.03em;line-height:1}.dev-unit{font-size:18px;color:var(--ink-2);margin-left:5px}.dev-meta{font-size:13px;color:var(--ink-3)}.info-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--hairline);min-width:0}.info-k{font-size:13px;color:var(--ink-3);white-space:nowrap}.info-v{font-family:var(--font-mono);font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tank-acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;max-width:1120px;margin:20px auto 0}.tact{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--r2);background:var(--panel-2);border:1px solid var(--hairline)}.tact.on{border-color:#3987e56b;background:#3987e512}.tact-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.tact-tag{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--ink)}.tact .info-row{padding:7px 0}.tact .info-row:last-child{border-bottom:none}.gshell .btn-lg{width:100%;padding:15px;border-radius:var(--r2);background:var(--s1);color:#08131f;font-size:16px;font-weight:700;transition:filter .14s,transform .08s}.gshell .btn-lg:hover{filter:brightness(1.09)}.gshell .btn-lg:active{transform:translateY(1px)}.gshell .btn-lg.stop{background:var(--crit);color:#fff3f3}.gshell .btn-lg:disabled{background:var(--panel-3);color:var(--ink-3);cursor:not-allowed;filter:none;transform:none}.gshell .btn-sm{padding:6px 13px;border-radius:5px;font-size:13px;font-weight:600;border:1px solid var(--hairline-2);color:var(--ink-2)}.gshell .btn-sm:hover{background:var(--panel-3);color:var(--ink)}.gshell .btn-sm:disabled{opacity:.45;cursor:not-allowed}.tact-msg{font-size:13px;color:var(--crit);min-height:15px;line-height:1.4}.sched-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-3)}.sched-row select,.sched-row input{background:var(--panel);color:var(--ink);border:1px solid var(--hairline-2);border-radius:6px;padding:4px 6px;font-family:var(--font-mono);font-size:12.5px}.sched-row input[type=number]{width:58px;text-align:center}.sched-row b{color:var(--ink-2);font-family:var(--font-mono)}.tact-auto{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding-top:9px;margin-top:3px;border-top:1px solid var(--hairline)}.sw{position:relative;display:inline-block;width:38px;height:21px;flex:none}.sw input{position:absolute;opacity:0;width:0;height:0}.sw span{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;border-radius:21px;background:var(--hairline-2);transition:background .15s}.sw span:before{content:"";position:absolute;width:15px;height:15px;left:3px;top:3px;border-radius:50%;background:var(--ink-2);transition:transform .15s}.sw input:checked+span{background:var(--s1)}.sw input:checked+span:before{transform:translate(17px)}.sw input:disabled+span{opacity:.4;cursor:not-allowed}.tact-autolbl{font-size:12.5px;color:var(--ink-2)}.tact-autonote{flex-basis:100%;font-size:12.5px;color:var(--ink-3);line-height:1.55}.tact-autonote b{color:var(--ink-2);font-family:var(--font-mono)}.tact-autonote b.go{color:var(--s1)}@media(max-width:1000px){.devs,.tank-acts{grid-template-columns:1fr}}.viz-col{background:var(--panel-2);border:1px solid var(--hairline);border-radius:10px;padding:13px 14px}.viz-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.viz-name{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--ink)}.viz-mrow{display:flex;flex-wrap:wrap;gap:4px 13px;margin-bottom:11px;font-size:12.5px;color:var(--ink-3);font-family:var(--font-mono)}.viz-mrow b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}.viz-wrap{margin-bottom:13px}.viz-wrap:last-child{margin-bottom:0}.viz-t{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--ink-3);margin-bottom:6px}.viz-t b{color:var(--ink-2);font-weight:600}.viz-col canvas{display:block;width:100%;border-radius:7px;background:#00000038;border:1px solid var(--hairline)}.pump-detail{margin-top:16px}.pump-detail .ranges{display:flex;gap:6px;flex-wrap:wrap}.login{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 620px at 74% 18%,rgba(57,135,229,.13),transparent 62%),radial-gradient(700px 520px at 12% 88%,rgba(25,158,112,.09),transparent 60%),var(--bg)}.login:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--hairline) 1px,transparent 1px),linear-gradient(90deg,var(--hairline) 1px,transparent 1px);background-size:52px 52px;opacity:.35;mask-image:radial-gradient(720px 520px at 50% 42%,#000 12%,transparent 76%);-webkit-mask-image:radial-gradient(720px 520px at 50% 42%,#000 12%,transparent 76%)}.login-art{position:absolute;right:6%;bottom:0;width:min(430px,38vw);opacity:.16;pointer-events:none}.login-card{position:relative;z-index:2;width:min(392px,100%);background:#151a21e0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--hairline-2);border-radius:16px;padding:38px 34px 32px;box-shadow:0 26px 70px #0009;display:flex;flex-direction:column;gap:18px}.login-mark{font-size:27px;font-weight:700;letter-spacing:-.024em}.login-rule{height:1px;background:var(--hairline-2);margin:2px 0}.field{display:flex;flex-direction:column;gap:8px}.field-k{font-size:12.5px;letter-spacing:.02em;color:var(--ink-3)}.field input{width:100%;padding:13px 15px;background:var(--panel-2);color:var(--ink);border:1px solid var(--hairline-2);border-radius:var(--r3);font-family:var(--font-mono);font-size:17px;transition:border-color .14s,background .14s}.field input:focus{outline:none;border-color:var(--s1);background:var(--panel-3)}.login-err{margin:0;padding:11px 14px;border-radius:var(--r3);background:var(--crit-bg);border:1px solid rgba(208,59,59,.34);color:var(--crit);font-size:14px;font-weight:600}.login-btn{margin-top:4px;padding:14px;border-radius:var(--r3);border:0;background:var(--s1);color:#08131f;font:inherit;font-size:16px;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:filter .14s}.login-btn:hover{filter:brightness(1.09)}@media(max-width:1180px){.g-4,.g-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){:root{--topbar-h:100px}.topbar{flex-wrap:wrap;align-content:center;column-gap:10px;row-gap:2px;padding:0 12px}.brand{order:1}.topbar-right{order:2;margin-left:auto;gap:4px}.nav{order:3;flex:1 0 100%;padding-bottom:4px}.nav-btn{padding:7px 11px;font-size:14px}.sync{display:none}.g-2,.g-3,.g-4{grid-template-columns:1fr}.gwrap{padding:16px 14px 44px}.page-meta{gap:14px}}.tabbar,.more-sheet{display:none}@media(max-width:640px){:root{--topbar-h:54px}.topbar{flex-wrap:nowrap;padding:0 12px;gap:10px}.nav{display:none}.gwrap{padding:14px 12px calc(84px + env(safe-area-inset-bottom))}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:45;height:calc(60px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#0e1116f5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--hairline)}.gshell .tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;position:relative;color:var(--ink-3);font-size:11.5px;letter-spacing:.01em;-webkit-tap-highlight-color:transparent}.tab svg{width:22px;height:22px}.gshell .tab[aria-current=page]{color:var(--ink)}.tab[aria-current=page] svg{color:var(--st-open)}.tab .tdot{position:absolute;top:9px;left:calc(50% + 9px);width:8px;height:8px;border-radius:50%;background:var(--crit)}.more-sheet:not([hidden]){display:grid;grid-template-columns:1fr 1fr;gap:8px;position:fixed;left:10px;right:10px;z-index:46;bottom:calc(68px + env(safe-area-inset-bottom));padding:12px;background:var(--panel-2);border:1px solid var(--hairline-2);border-radius:var(--r);box-shadow:0 12px 40px #00000080}.gshell .more-sheet button{padding:14px 10px;border-radius:var(--r2);border:1px solid var(--hairline);background:var(--panel);color:var(--ink);font-size:15px;font-weight:600}.gshell .more-sheet button[aria-current=page]{border-color:var(--st-open);color:var(--st-open)}.ovh-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.ovh-t:last-child:nth-child(odd){grid-column:1 / -1}.ovh-sum{padding:12px 14px}.ovh-big{font-size:21px}.gshell .ov-net{flex-wrap:wrap;flex:1 1 100%;min-width:0;margin-left:0;gap:6px 14px;padding:9px 12px}.zone-na{min-height:90px}.gwrap{overflow-x:hidden}.page-head{align-items:stretch}.page-title{flex-wrap:wrap}.card-title{white-space:nowrap}.card-head{flex-wrap:wrap;row-gap:4px}.page-meta{flex-wrap:wrap}.ov-rec-big{font-size:24px}}.gwrap .tankTab{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--ink-2);background:var(--panel);border:1px solid var(--hairline-2);border-radius:var(--r3);padding:9px 16px}.gwrap .tankTab:hover{color:var(--ink);border-color:var(--hairline-2)}.gwrap .tankTab.on{color:var(--ink);border-color:var(--s1);box-shadow:inset 0 0 0 1px var(--s1);background:var(--panel)}.gwrap .panel{border-radius:var(--r);border-color:var(--hairline);padding:16px 18px 8px}.gwrap .panel h3{font-size:15px;color:var(--ink)}.gwrap .tile{border-radius:var(--r2);border-color:var(--hairline)}.gwrap .tile .value{font-family:var(--font-mono);font-weight:600}.gwrap .map{height:calc(100vh - var(--topbar-h) - 190px);border-radius:var(--r);border-color:var(--hairline)}.gwrap .mapBar h2{font-size:16px;font-weight:600}.gwrap .n3-card,.gwrap .nw-card{border-radius:var(--r);border-color:var(--hairline)}.pump-detail .wrap>.tiles{margin-top:4px}.net-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:-2px 0 12px;font-size:13px;color:var(--ink-2)}.net-legend span{display:inline-flex;align-items:center;gap:7px}.net-legend i{display:inline-block}.net-legend .ln{width:26px;height:0;border-top:2px solid var(--ink-3)}.net-legend .ln.wifi{border-top-style:dashed}.net-legend .dt{width:9px;height:9px;border-radius:50%}.net-body{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:16px;align-items:start}.net-body svg{max-width:1240px}.net-lora{background:var(--panel-2);border:1px solid var(--hairline);border-radius:var(--r2);padding:12px 14px;min-width:0}.net-lora h4{margin:0;font-size:14px;font-weight:600;color:var(--ink)}.nl-sub{font-size:12px;color:var(--ink-3);margin:2px 0 4px}.nl-sub.bad{color:var(--caut)}.nl-grp{font-size:12px;color:var(--ink-3);margin:10px 0 3px;padding-top:9px;border-top:1px solid var(--hairline)}.nl-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:3px 0;font-size:13px;color:var(--ink-2)}.nl-row .nl-val{font-family:var(--font-mono);font-weight:600;font-size:13px;color:var(--ink);white-space:nowrap}.nl-row .nl-val small{color:var(--ink-3);font-weight:400}.lk-st{font-family:var(--font-mono);font-weight:700;font-size:12.5px;letter-spacing:.03em;color:var(--ink-3);display:inline-flex;align-items:center;gap:6px;width:62px}.lk-st:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--hairline-2)}.lk-st.on{color:var(--ok)}.lk-st.on:before{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}@media(max-width:1380px){.net-body{grid-template-columns:minmax(0,1fr)}.nl-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 22px}}@media(max-width:640px){.nl-cols{grid-template-columns:minmax(0,1fr)}}.gtbl tr.grouphead td{padding:16px 13px 8px;border-bottom:1px solid var(--hairline-2);background:none}.gtbl tr.grouphead:first-child td{padding-top:0}.gtbl tr.grouphead:hover td{background:none}.gtbl .gh-name{font-size:14.5px;font-weight:700;color:var(--ink)}.gtbl .gh-n{margin-left:10px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3)}.lk-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 16px}.lk-bar .k{font-size:13px;color:var(--ink-3)}.lk-bar .r{margin-left:auto;font-family:var(--font-mono);font-size:13.5px;color:var(--ink-2)}.lk-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px}.lk-stat .k{font-size:13px;color:var(--ink-3)}.lk-stat .v{font-family:var(--font-mono);font-size:30px;font-weight:600;color:var(--ink);margin:6px 0 8px;line-height:1.15}.lk-stat .v small{font-size:14px;font-weight:400;color:var(--ink-3);margin-left:6px}.lk-stat .f{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-family:var(--font-mono);font-size:13px;color:var(--ink-2)}.lk-sub{font-size:13px;color:var(--ink-3);margin:0 0 6px}.lk-dim{opacity:.5}.lk-est{color:var(--warn)}.lk-stats>.card,.lk-grid>.card{margin-top:0}.lk-info .info-v{white-space:normal;text-align:right}.lk-pumps-wrap{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.lk-pumps-k{font-size:12.5px;color:var(--ink-3);margin-bottom:8px}.lk-pumps-k span{font-family:var(--font-mono);font-size:11.5px;margin-left:6px;opacity:.8}.lk-pumps{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lk-pump{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;border:1px solid var(--hairline-2);background:var(--panel-2)}.lk-pump i{width:12px;height:12px;border-radius:50%;flex:none;background:var(--hairline-2)}.lk-pump .n{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--ink-2)}.lk-pump b{margin-left:auto;font-size:13.5px;font-weight:700;color:var(--ink-3)}.lk-pump.on{border-color:#0ca30c73;background:var(--ok-bg)}.lk-pump.on i{background:var(--ok);box-shadow:0 0 0 4px #0ca30c38,0 0 10px #0ca30c99}.lk-pump.on .n{color:var(--ink)}.lk-pump.on b{color:var(--ok)}.lk-pump.na{border-style:dashed}.lk-pump.na i{background:transparent;border:1.5px dashed var(--ink-3)}.lk-pumps-err{margin-top:6px;font-size:12.5px;color:var(--ink-3)}@media(max-width:900px){.lk-stats{grid-template-columns:minmax(0,1fr)}.lk-bar .r{margin-left:0;flex-basis:100%}}.vent-bands{display:grid;gap:5px}.vb-row{display:grid;grid-template-columns:64px minmax(0,1fr) 46px;gap:8px;align-items:center;font-size:12px}.vb-k{color:var(--ink-3);font-family:var(--font-mono)}.vb-bar{height:8px;border-radius:4px;background:var(--panel-3);overflow:hidden}.vb-bar i{display:block;height:100%;background:#3987e580;border-radius:4px}.vb-row.main .vb-bar i{background:#3987e5}.vb-row.main .vb-k{color:var(--ink-2);font-weight:600}.vb-v{text-align:right;font-family:var(--font-mono);color:var(--ink-2);font-weight:600;font-variant-numeric:tabular-nums}.plant-grid.two{grid-template-columns:600fr 480fr}@media(max-width:1100px){.plant-grid.two{grid-template-columns:minmax(0,1fr)}}
