.toast-enter-active[data-v-796194a6],.toast-leave-active[data-v-796194a6]{transition:opacity .25s}.toast-enter-from[data-v-796194a6],.toast-leave-to[data-v-796194a6]{opacity:0}@media(prefers-reduced-motion:reduce){.toast-enter-active[data-v-796194a6],.toast-leave-active[data-v-796194a6]{transition:none}}:root{--bg:#0b1220;--bg2:#101a2c;--panel:#152238;--panel2:#1b2b45;--line:#263a5c;--txt:#dce7f5;--txt2:#8fa5c4;--accent:#2dd4cf;--accent2:#38bdf8;--ok:#4ade80;--run:#38bdf8;--stop:#94a3b8;--off:#475569;--alarm:#f43f5e;--warn:#fbbf24;--mono:"SF Mono","Consolas","Menlo",monospace}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:#05080f;color:var(--txt);font-family:PingFang TC,Microsoft JhengHei,sans-serif;font-size:13px;overflow:hidden;display:flex;flex-direction:column}#app{display:contents}#titlebar{height:40px;background:linear-gradient(180deg,#16233b,#0e1830);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 10px;gap:12px;flex:none}#titlebar .logo{width:22px;height:22px;border-radius:5px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-weight:800;color:#04222b;font-size:11px}#titlebar .appname{font-weight:700;font-size:14px;letter-spacing:.5px}#titlebar .appname small{color:var(--txt2);font-weight:400;margin-left:8px;font-size:11px}.linkstat{display:flex;gap:10px;margin-left:18px}.linkstat span{display:flex;align-items:center;gap:5px;color:var(--txt2);font-size:11px}.dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 6px var(--ok)}#titlebar .grow{flex:1}#clock{font-family:var(--mono);font-size:13px;color:var(--txt)}#operator{color:var(--txt2);font-size:12px}#operator b{color:var(--txt)}.tbtn{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:5px;padding:4px 10px;font-size:11px;cursor:pointer;white-space:nowrap}.tbtn:hover{border-color:var(--accent)}.tbtn.active{background:var(--accent);color:#04222b;font-weight:700;border-color:var(--accent)}.winctl{display:flex;gap:6px;margin-left:6px}.winctl i{width:26px;height:22px;border-radius:4px;background:var(--panel2);display:flex;align-items:center;justify-content:center;font-style:normal;color:var(--txt2);font-size:11px}.winctl i.x{background:#7f1d2e;color:#fecaca}#tabbar{height:42px;background:var(--bg);border-bottom:1px solid var(--line);display:flex;align-items:stretch;padding:0 8px;gap:2px;flex:none}.mtab{padding:0 16px;display:flex;align-items:center;gap:7px;color:var(--txt2);cursor:pointer;border-bottom:3px solid transparent;font-size:13.5px;position:relative;-webkit-user-select:none;user-select:none;text-decoration:none}.mtab:hover{color:var(--txt)}.mtab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}.mtab .ic{font-size:15px}.mtab .badge{background:var(--alarm);color:#fff;font-size:10px;border-radius:8px;padding:1px 6px;font-family:var(--mono)}#tabbar .grow{flex:1}#bldsel{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:5px 10px;font-size:12.5px;align-self:center}#stage{flex:1;overflow:hidden;position:relative;background:var(--bg)}.page{display:none;height:100%;overflow:auto;padding:14px}.page.active{display:block}h2.sec{font-size:14px;color:var(--accent);margin:4px 0 10px;letter-spacing:1px;display:flex;align-items:center;gap:8px}h2.sec:before{content:"";width:4px;height:14px;background:var(--accent);border-radius:2px;display:inline-block}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;position:relative}.grid{display:grid;gap:12px}.kpi{display:flex;flex-direction:column;gap:4px}.kpi .v{font-family:var(--mono);font-size:26px;font-weight:700}.kpi .l{color:var(--txt2);font-size:12px}.syscard h3{font-size:13px;display:flex;align-items:center;gap:7px;margin-bottom:8px}.syscard.alarmed{border-color:var(--alarm);box-shadow:0 0 0 1px var(--alarm) inset}.syscard .stats{display:flex;flex-wrap:wrap;gap:6px 14px}.syscard .st{font-size:11.5px;color:var(--txt2)}.syscard .st b{font-family:var(--mono);font-size:15px;color:var(--txt);margin-left:4px}.syscard .st b.bad{color:var(--alarm)}.legend{display:flex;gap:14px;align-items:center;color:var(--txt2);font-size:11.5px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:4px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--panel);color:var(--txt2);border-radius:16px;padding:5px 13px;cursor:pointer;font-size:12.5px;white-space:nowrap}.chip:hover{color:var(--txt)}.chip.on{background:var(--accent);border-color:var(--accent);color:#04222b;font-weight:700}.subchips{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.subchip{border:1px dashed var(--line);border-radius:14px;padding:3px 11px;color:var(--txt2);font-size:11.5px;cursor:pointer}.subchip.on{border-style:solid;border-color:var(--accent2);color:var(--accent2)}#mapwrap{display:grid;grid-template-columns:56px 1fr 300px;gap:10px;margin-top:10px;height:calc(100% - 96px);min-height:520px}#floors{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:auto;display:flex;flex-direction:column;padding:4px}#floors div{padding:5px 0;text-align:center;color:var(--txt2);cursor:pointer;border-radius:6px;font-family:var(--mono);font-size:11.5px}#floors div.on{background:var(--accent);color:#04222b;font-weight:700}#planpanel{background:#e8edf3;border:1px solid var(--line);border-radius:10px;position:relative;overflow:hidden}#planpanel svg{width:100%;height:100%}#ctxpanel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px;overflow:auto}#ctxpanel h3{font-size:13px;color:var(--accent);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.ctlrow{display:flex;gap:8px;margin:6px 0}.cbtn{flex:1;border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:7px;padding:7px 0;text-align:center;cursor:pointer;font-size:12.5px}.cbtn.pri{background:var(--accent);color:#04222b;border-color:var(--accent);font-weight:700}.cbtn.danger{background:#7f1d2e;border-color:#a33;color:#fecaca}.cbtn:active,.mini button:active{transform:translateY(1px)}.grp{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);font-size:12.5px}.grp .mini{display:flex;gap:6px}.mini button{border:1px solid var(--line);background:transparent;color:var(--txt2);border-radius:5px;padding:2px 9px;cursor:pointer;font-size:11px}.mini button.on{border-color:var(--ok);color:var(--ok)}.kv{display:flex;justify-content:space-between;padding:4px 0;font-size:12px;color:var(--txt2)}.kv b{color:var(--txt);font-family:var(--mono);font-weight:600}.note{font-size:11px;color:var(--txt2);background:var(--bg2);border:1px dashed var(--line);border-radius:7px;padding:7px 9px;margin-top:10px;line-height:1.6}table.tb{width:100%;border-collapse:collapse;font-size:12.5px}table.tb th{color:var(--txt2);text-align:left;padding:7px 9px;border-bottom:1px solid var(--line);font-weight:500;white-space:nowrap}table.tb td{padding:7px 9px;border-bottom:1px solid #1a2942;white-space:nowrap}table.tb tr:hover td{background:#18263e}.sev{padding:2px 9px;border-radius:10px;font-size:11px;font-weight:700}.sev.fire{background:#7f1d2e;color:#fecaca}.sev.burg{background:#713f12;color:#fde68a}.sev.fault{background:#374151;color:#e5e7eb}.sev.call{background:#164e63;color:#a5f3fc}.stt{font-size:11.5px}.stt.new{color:var(--alarm);font-weight:700}.stt.ing{color:var(--warn)}.stt.done{color:var(--ok)}.abtn{border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:5px;padding:3px 10px;cursor:pointer;font-size:11px;margin-right:4px}#alarmdock{height:38px;background:#160b13;border-top:2px solid var(--alarm);display:flex;align-items:center;gap:14px;padding:0 12px;flex:none}#alarmdock .flash{width:12px;height:12px;border-radius:50%;background:var(--alarm);animation:fl 1s infinite}@keyframes fl{50%{opacity:.25}}@keyframes alarmBlink{0%,to{opacity:1}50%{opacity:.3}}#ticker{flex:1;overflow:hidden;white-space:nowrap;font-size:12.5px;color:#fecaca;font-family:var(--mono)}#alarmdock .cnt{font-size:11.5px;color:var(--txt2)}#alarmdock .cnt b{font-family:var(--mono);font-size:14px}#alarmdock .cnt b.r{color:var(--alarm)}#alarmdock .cnt b.y{color:var(--warn)}#alarmdock .cnt b.g{color:var(--ok)}.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px}.subtab{padding:8px 16px;color:var(--txt2);cursor:pointer;border-bottom:2px solid transparent;font-size:13px}.subtab.on{color:var(--accent2);border-bottom-color:var(--accent2);font-weight:700}.spane{display:none}.spane.on{display:block}.metercard .ph{font-family:var(--mono);font-size:13px}svg text{font-family:PingFang TC,sans-serif}.chart{background:var(--bg2);border:1px solid var(--line);border-radius:8px}.tag{font-size:10.5px;border-radius:4px;padding:2px 7px;font-weight:700}.tag.script{background:#0b3b39;color:#5eead4}.tag.wire{background:#3b2f0b;color:#fde68a}.tag.recv{background:#1e293b;color:#94a3b8}.sw{width:34px;height:18px;border-radius:9px;background:var(--ok);position:relative;display:inline-block;cursor:pointer}.sw:after{content:"";width:14px;height:14px;background:#fff;border-radius:50%;position:absolute;top:2px;right:2px}.sw.off{background:var(--off)}.sw.off:after{right:auto;left:2px}.rvbadge{display:none!important;position:absolute;top:-9px;right:10px;background:#fbbf24;color:#3b2f04;font-size:10px;font-weight:800;border-radius:9px;padding:2px 9px;z-index:5;font-family:var(--mono);box-shadow:0 2px 6px #00000080}body.review .rvbadge{display:inline-block!important}body.review [data-rv]{outline:1px dashed #fbbf24;outline-offset:2px}#rvpanel{position:fixed;right:0;top:82px;bottom:38px;width:470px;background:#0e1626;border-left:2px solid var(--warn);z-index:50;display:none;flex-direction:column}body.rvopen #rvpanel{display:flex}#rvpanel header{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}#rvpanel .body{flex:1;overflow:auto;padding:10px 14px}.rvfilter{display:flex;gap:5px;flex-wrap:wrap;padding:9px 14px;border-bottom:1px solid var(--line)}#modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#03060cb8;display:none;align-items:center;justify-content:center;z-index:100}#modal.on{display:flex}#modal .box{width:860px;max-width:94vw;max-height:88vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px}#modal h3{display:flex;justify-content:space-between;font-size:15px;margin-bottom:12px}.scroller{overflow-x:auto}.pill{border:1px solid var(--line);border-radius:14px;padding:3px 12px;font-size:11.5px;color:var(--txt2);display:inline-block;margin:2px 4px 2px 0}.pill.hot{border-color:var(--accent);color:var(--accent)}h4.blk{font-size:12.5px;color:var(--txt2);margin:14px 0 6px;letter-spacing:1px}input[type=text],input[type=number],select.inp{background:var(--bg2);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:6px 9px;font-size:12.5px}.cl-row{border-bottom:1px dashed #223353;padding:8px 6px;font-size:12px;cursor:pointer;border-radius:6px}.cl-row:hover{background:#15233c}.cl-row.sel{background:#1b3252;outline:1px solid var(--accent2)}.cl-row .c1{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.cl-code{font-family:var(--mono);color:#04222b;background:var(--accent);font-weight:800;border-radius:5px;padding:1px 7px;font-size:11px;white-space:nowrap}.cl-no{font-family:var(--mono);color:var(--warn);font-size:11px;white-space:nowrap}.cl-t{color:var(--txt);flex:1;min-width:110px}.cl-w{color:var(--txt2);font-size:11px;margin-top:3px;line-height:1.5}.lvb{font-size:10px;font-weight:800;border-radius:4px;padding:1px 6px;white-space:nowrap}.lvb.A{background:#0b3b39;color:#5eead4}.lvb.B{background:#3b2f0b;color:#fde68a}.lvb.C{background:#0c2a4a;color:#7dd3fc}.lvb.D{background:#3b1d0b;color:#fdba74}.lvb.E{background:#2a2f3a;color:#cbd5e1}.lvb.NA{background:#1f2937;color:#94a3b8}.lvb.INFO{background:#0b3b39;color:#5eead4}.demo-focus{outline:3px solid var(--accent2)!important;outline-offset:3px;border-radius:10px;animation:dff 1s ease-in-out infinite;position:relative;z-index:3}@keyframes dff{50%{box-shadow:0 0 0 7px #38bdf847}}#toast{position:fixed;left:50%;bottom:60px;transform:translate(-50%);background:var(--accent);color:#04222b;padding:9px 16px;border-radius:999px;font-size:12.5px;font-weight:700;z-index:120;box-shadow:0 6px 20px #0006}.stub{height:calc(100% - 40px);min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--txt2);text-align:center}.stub .ic{font-size:44px;opacity:.5}.stub .t{font-size:16px;color:var(--txt)}.stub .d{max-width:520px;line-height:1.7;font-size:12.5px}body.light{--bg:#f4f6fa;--bg2:#eef1f6;--panel:#ffffff;--panel2:#f1f5f9;--line:#dbe3ee;--txt:#20304a;--txt2:#6b7d99;--accent:#12a5b0;--accent2:#0284c7;background:#e9edf3}body.light #titlebar{background:linear-gradient(180deg,#1595a5,#0f7f8d);border-bottom-color:#0c6a76}body.light #titlebar .appname,body.light #titlebar .appname small,body.light #operator,body.light #operator b,body.light #clock{color:#f0fdff}body.light #titlebar .linkstat span{color:#d4f5f8}body.light #titlebar .tbtn{background:#ffffff26;border-color:#fff6;color:#fff}body.light #titlebar .tbtn.active{background:#fff;color:#0f7f8d}body.light .winctl i{background:#fff3;color:#e0f7fa}body.light .winctl i.x{background:#e11d48;color:#fff}body.light #tabbar{background:#fff;border-bottom-color:#dbe3ee}body.light .mtab.active{color:#0f7f8d;border-bottom-color:#12a5b0}body.light #alarmdock{background:#fff1f2;border-top-color:#e11d48}body.light #ticker{color:#b91c1c}body.light #alarmdock .cnt{color:#7f6b70}body.light .chart,body.light .note,body.light .cbtn{background:#f8fafc}body.light .cbtn.pri{background:var(--accent);color:#fff;border-color:var(--accent)}body.light .cbtn.danger{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}body.light .chip.on,body.light #floors div.on{color:#fff}body.light .sev.fire{background:#fee2e2;color:#b91c1c}body.light .sev.burg{background:#fef3c7;color:#92400e}body.light .sev.fault{background:#e5e7eb;color:#374151}body.light .sev.call{background:#cffafe;color:#155e75}body.light table.tb td{border-bottom-color:#eef1f6}body.light table.tb tr:hover td{background:#f1f5f9}body.light .tag.script{background:#ccfbf1;color:#0f766e}body.light .tag.wire{background:#fef3c7;color:#92400e}body.light .tag.recv{background:#e2e8f0;color:#475569}body.light #rvpanel{background:#fffcf3}body.light #modal .box{background:#fff}body.light .mini button.on{border-color:#0d9488;color:#0d9488}body.light .syscard.alarmed{border-color:#f43f5e}body.light .cl-row:hover{background:#eef4fb}body.light .cl-row.sel{background:#e0f2fe}body.light .cl-t{color:#20304a}body.light .cl-w{color:#6b7d99}body.light .lvb.A,body.light .lvb.INFO{background:#ccfbf1;color:#0f766e}body.light .lvb.B{background:#fef3c7;color:#92400e}body.light .lvb.C{background:#dbeafe;color:#1e40af}body.light .lvb.D{background:#ffedd5;color:#9a3412}body.light .lvb.E,body.light .lvb.NA{background:#e5e7eb;color:#374151}:root{--surface-background: transparent;--surface-primary: rgba(12, 28, 54, .55);--surface-invert: #eaf3ff;--text-primary: #eaf3ff;--text-secondary: #c4d6ee;--text-tertiary: #93aacb;--text-quaternary: #6f88ad;--text-invert: #05101f;--border-primary: rgba(90, 140, 210, .4);--border-quaternary: rgba(70, 130, 210, .2);--link-filled: #35b7ff;--link-standard: rgba(120, 170, 235, .08);--link-tonal-hover: rgba(46, 166, 255, .14);--link-tonal-focus: rgba(46, 166, 255, .24);--status-success: #25e07a;--color-red-5: #ff5b6a;--series-today: #2f9bff;--series-today-dot: #64d2ff;--series-yesterday: #25e07a;--series-yesterday-line: #2ee055;--radius-sm: 4px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 1000px;--sp-sm: 4px;--sp-md: 8px;--sp-lg: 12px;--sp-xl: 16px;--sp-2xl: 20px;--sp-3xl: 24px;--sp-4xl: 32px;--shadow-card: 0 0 0 1px rgba(70, 140, 220, .12), 0 8px 26px -6px rgba(4, 12, 28, .65), inset 0 0 22px rgba(24, 66, 130, .14);--font-sans: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-num: "Poppins", "Noto Sans TC", sans-serif}.dash-embed{flex:1;min-height:0;min-width:0;display:flex;color:var(--text-primary)}
