.pw-wrap[data-v-fcbd112c]{position:relative;display:inline-block;vertical-align:middle}label>.pw-wrap[data-v-fcbd112c]{display:block}.pw-wrap input[data-v-fcbd112c]{width:100%;box-sizing:border-box;padding-right:34px}.pw-eye[data-v-fcbd112c]{position:absolute;right:2px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:#8fa6c1;padding:4px 6px;cursor:pointer;line-height:0;min-width:0}.pw-eye[data-v-fcbd112c]:hover{color:#cfe3ff;background:transparent}.bad[data-v-9c92fd54]{fill:#6f849c!important}.spin[data-v-9c92fd54]{animation:blink-9c92fd54 1s infinite alternate}@keyframes blink-9c92fd54{to{opacity:.4}}.stree[data-v-e5f9989f]{font-size:12px}.nodes[data-v-e5f9989f]{margin-top:4px;min-height:30px}.nodes[data-v-e5f9989f] .srow,.nodes[data-v-e5f9989f] .frow{display:flex;align-items:center;gap:3px;padding:2px 4px;border-radius:3px;cursor:pointer;color:#cfe3ff;text-decoration:none;white-space:nowrap;overflow:hidden}.nodes[data-v-e5f9989f] .srow:hover,.nodes[data-v-e5f9989f] .frow:hover{background:#1a2a40}.nodes[data-v-e5f9989f] .srow.on,.nodes[data-v-e5f9989f] a.srow.router-link-active{background:#2563a8;color:#fff}.nodes[data-v-e5f9989f] .frow.sel{outline:1px dashed #4da3ff}.nodes[data-v-e5f9989f] .over{box-shadow:inset 0 2px #f5c07f;background:#24405f}.nodes[data-v-e5f9989f] .lbl{overflow:hidden;text-overflow:ellipsis}.nodes[data-v-e5f9989f] .acts{margin-left:auto;display:none;gap:4px}.nodes[data-v-e5f9989f] .frow:hover .acts{display:inline-flex}.nodes[data-v-e5f9989f] .acts a{text-decoration:none;padding:0 2px}.nodes[data-v-e5f9989f] .chk{width:auto;margin:0}.hmi3d[data-v-76ca534a]{position:relative;width:100%;height:100%;overflow:hidden;border-radius:4px}.host[data-v-76ca534a]{position:absolute;top:0;right:0;bottom:0;left:0}.fb[data-v-76ca534a]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.note[data-v-76ca534a]{position:absolute;left:6px;bottom:4px;font-size:12px;color:#9ab;pointer-events:none}.note.err[data-v-76ca534a]{color:#e05d5d}[data-v-76ca534a] .hmi3d-label{background:#0b1626d9;border:1px solid #2a3d57;color:#cfe3ff;font-size:12px;padding:2px 6px;border-radius:3px;white-space:nowrap}.tc[data-v-1c563cb7]{display:flex;align-items:center;gap:4px;height:100%;padding:0 6px;font-size:11px;color:#9ab;box-sizing:border-box;overflow:hidden;white-space:nowrap}.tc select[data-v-1c563cb7],.tc input[data-v-1c563cb7],.tc button[data-v-1c563cb7]{font-size:11px;height:20px;padding:0 4px;background:#13202f;color:#cfe3ff;border:1px solid #2a3d57;border-radius:3px;min-width:0;width:auto}.tc input[data-v-1c563cb7]{width:132px;flex:0 1 132px}.tc button[data-v-1c563cb7]{cursor:pointer}.tc button[data-v-1c563cb7]:hover{background:#1e3350}.tc-l[data-v-1c563cb7]{color:#8fa6bf;overflow:hidden;text-overflow:ellipsis}.tc-e[data-v-1c563cb7]{color:#ff7b7b}.hmi-unflip-h text{transform-box:fill-box;transform-origin:center;transform:scaleX(-1)}.hmi-unflip-v text{transform-box:fill-box;transform-origin:center;transform:scaleY(-1)}.hmi-unflip-hv text{transform-box:fill-box;transform-origin:center;transform:scale(-1)}.hmi-canvas[data-v-26934e3e]{width:100%;max-height:calc(100vh - 170px);display:block;border-radius:6px;-webkit-user-select:none;user-select:none}.run-body[data-v-fb18e2de]{display:flex;gap:6px;align-items:flex-start}.run-tree[data-v-fb18e2de]{width:210px;flex:none;max-height:calc(100vh - 150px);overflow:auto;padding:6px;margin:0}.tree-float-btn[data-v-fb18e2de]{position:fixed;left:8px;top:8px;z-index:60;opacity:.75}.tree-float[data-v-fb18e2de]{position:fixed;left:8px;top:44px;z-index:60;width:240px;max-height:70vh;overflow:auto;padding:6px}.playback[data-v-fb18e2de]{margin:8px 0;background:#1c1a10;padding:6px;border-radius:4px}.replay[data-v-fb18e2de]{outline:2px solid #f5c07f}.hmi-run.full[data-v-fb18e2de]{padding:0;margin:0;border:0;border-radius:0;background:transparent}.hmi-run.full[data-v-fb18e2de] .hmi-canvas.full{width:100vw;height:100vh;max-height:none;border-radius:0}.hmi-run.full[data-v-fb18e2de] .hmi-canvas.full.short{height:calc(100vh - 56px)}.hmi-run.full .playback[data-v-fb18e2de]{margin:0;border-radius:0}.float-msg[data-v-fb18e2de]{position:fixed;top:10px;right:14px;background:#0b1626e6;padding:4px 10px;border-radius:4px;z-index:50}.pkg table[data-v-fdb346bf]{width:100%;font-size:12px}.pkg td[data-v-fdb346bf],.pkg th[data-v-fdb346bf]{padding:3px 4px}.tags td[data-v-fdb346bf]:first-child{font-family:monospace}.cat[data-v-7c18dcb8]{margin-top:6px}.cathead[data-v-7c18dcb8]{display:flex;align-items:center;gap:4px;font-size:12px;color:#9ab;padding:2px 0;border-bottom:1px solid #1a2a40}.cathead b[data-v-7c18dcb8]{font-weight:400;color:#cfe3ff}.cathead .tw[data-v-7c18dcb8]{text-decoration:none;color:#9ab;width:10px}.cat-actions[data-v-7c18dcb8]{margin-left:auto;display:none;gap:3px;align-items:center}.cathead:hover .cat-actions[data-v-7c18dcb8]{display:inline-flex}.cat-actions a[data-v-7c18dcb8]{text-decoration:none}.mini[data-v-7c18dcb8]{padding:0 2px;font-size:11px;width:34px}.items[data-v-7c18dcb8]{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.item[data-v-7c18dcb8]{padding:3px 6px;background:#1a2a40;border:1px solid #2a3d57;border-radius:4px;cursor:grab;font-size:12px;display:flex;align-items:center;gap:4px}.item.thumbed[data-v-7c18dcb8]{flex-direction:column;width:84px;text-align:center}.item.thumbed img[data-v-7c18dcb8]{width:72px;height:54px;object-fit:contain}.item .ico[data-v-7c18dcb8]{font-size:28px;line-height:54px}.item[data-v-7c18dcb8]:hover{background:#24405f}.item.picked[data-v-7c18dcb8]{outline:2px solid #4da3ff}.asset-tools[data-v-7c18dcb8]{gap:6px;font-size:12px}.implog[data-v-7c18dcb8]{font-size:12px;max-height:200px;overflow:auto;padding-left:16px}.modal[data-v-7c18dcb8] label{display:flex;flex-direction:column;gap:2px;margin:6px 0;font-size:12px}.obj[data-v-4810dc0f]{border:1px solid #2a3d57;border-radius:4px;padding:4px 6px;margin:4px 0;background:#0b1626}.obj a[data-v-4810dc0f]{text-decoration:none}.g3[data-v-4810dc0f]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.hmi-design[data-v-962fe8df]{display:flex;flex-direction:column;height:calc(100vh - 70px)}.toolbar[data-v-962fe8df]{flex-wrap:wrap;gap:4px;padding:6px;margin-bottom:6px}.toolbar button[data-v-962fe8df],.toolbar select[data-v-962fe8df]{padding:3px 8px}.sep[data-v-962fe8df]{width:1px;height:22px;background:#2a3d57;margin:0 4px}.body[data-v-962fe8df]{display:flex;gap:6px;flex:1;min-height:0}.left[data-v-962fe8df]{width:220px;overflow:auto;padding:6px}.right[data-v-962fe8df]{width:300px;overflow:auto;padding:8px}.right label[data-v-962fe8df]{display:flex;flex-direction:column;gap:2px;margin:4px 0;font-size:12px}.canvas-wrap[data-v-962fe8df]{flex:1;overflow:auto;background:#070b12;border-radius:6px;padding:10px}.canvas-wrap.panning[data-v-962fe8df]{cursor:grab}.cat h4[data-v-962fe8df],.left h4[data-v-962fe8df],.right h4[data-v-962fe8df]{margin:10px 0 4px;font-size:12px;color:#9ab}.items[data-v-962fe8df]{display:flex;flex-wrap:wrap;gap:4px}.item[data-v-962fe8df]{padding:3px 6px;background:#1a2a40;border:1px solid #2a3d57;border-radius:4px;cursor:grab;font-size:12px}.item[data-v-962fe8df]:hover{background:#24405f}.libs td[data-v-962fe8df]{font-size:12px;padding:2px}.tree-box[data-v-962fe8df]{margin-bottom:8px;border-bottom:1px solid #2a3d57;padding-bottom:6px}.tree-box summary[data-v-962fe8df]{cursor:pointer;font-size:12px;color:#9ab}.motion[data-v-962fe8df]{border-left:2px solid #2a3d57;padding-left:4px;margin:4px 0}.versions[data-v-962fe8df]{max-height:200px;overflow:auto;font-size:12px}.grid4[data-v-962fe8df]{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.field[data-v-962fe8df]{display:flex;align-items:flex-end;gap:4px}.field label[data-v-962fe8df]{flex:1}.bind[data-v-962fe8df]{text-decoration:none;opacity:.4;padding-bottom:6px}.bind.on[data-v-962fe8df]{opacity:1}.bindbox[data-v-962fe8df]{border:1px solid #2a3d57;border-radius:4px;padding:6px;margin:6px 0;background:#0b1626}.maprow input[data-v-962fe8df],.maprow select[data-v-962fe8df]{padding:2px}.tabs2 a[data-v-962fe8df]{padding:3px 10px;text-decoration:none;color:#9ab}.tabs2 a.on[data-v-962fe8df]{color:#fff;border-bottom:2px solid #4da3ff}.layer[data-v-962fe8df]{padding:3px 4px;font-size:12px;cursor:pointer;border-radius:3px}.layer.on[data-v-962fe8df]{background:#24405f}@media (max-width: 1400px){.left[data-v-962fe8df]{width:180px}.right[data-v-962fe8df]{width:250px}.toolbar button[data-v-962fe8df],.toolbar select[data-v-962fe8df]{padding:2px 5px;font-size:12px}}.tree[data-v-6dea3d20],.tree ul[data-v-6dea3d20]{list-style:none;margin:0;padding-left:18px}.tree[data-v-6dea3d20]{padding-left:0}.node[data-v-6dea3d20]{display:flex;gap:10px;align-items:center;padding:4px 6px;border-radius:4px;cursor:pointer;flex-wrap:wrap}.node[data-v-6dea3d20]:hover{background:#ffffff0d}.node.drop[data-v-6dea3d20]{outline:1px dashed #7fc8ff}.node.tag[data-v-6dea3d20]{cursor:pointer}.node.off[data-v-6dea3d20]{opacity:.55}.tw[data-v-6dea3d20]{width:12px;display:inline-block;color:#8aa}.cnt[data-v-6dea3d20]{color:#8fa3b8;font-size:12px}.tk[data-v-6dea3d20]{display:inline-block;width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.desc[data-v-6dea3d20]{color:#c9d4df;display:inline-block;width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.addr[data-v-6dea3d20]{display:inline-block;width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.v[data-v-6dea3d20]{font-weight:600;display:inline-block;width:100px;text-align:right}[data-test=tag-quality][data-v-6dea3d20]{display:inline-block;width:110px}.ok[data-v-6dea3d20]{color:#3ddc84}.err[data-v-6dea3d20]{color:#ff6b6b}.muted[data-v-6dea3d20]{color:#8fa3b8}.alarm[data-v-6dea3d20]{color:#ff6b6b}.hist[data-v-6dea3d20]{font-size:12px;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}.acts[data-v-6dea3d20]{margin-left:auto;display:inline-flex;gap:4px}button.sm[data-v-6dea3d20]{padding:2px 8px;font-size:12px}th.sortable[data-v-6514a442]{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.filters select[data-v-6514a442]{max-width:150px}td.tk[data-v-6514a442]{font-weight:600}.view-toggle[data-v-6514a442]{margin-bottom:10px;gap:6px}th.sortable[data-v-443fa5df]{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.filters select[data-v-443fa5df]{max-width:160px}th.sortable[data-v-cf2ca07d]{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.filters select[data-v-cf2ca07d]{max-width:160px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;background:#0f1724;color:#dbe4f0}a{color:inherit;text-decoration:none}header{display:flex;align-items:center;gap:24px;padding:0 20px;height:52px;background:#142033;border-bottom:1px solid #22324a}header h1{font-size:17px;margin:0;color:#7fd1ff}nav a{padding:6px 12px;border-radius:4px;margin-right:4px;color:#9fb3c8}nav a.router-link-exact-active{background:#1f3a5c;color:#fff}.spacer{flex:1}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:#e05252}.dot.on{background:#3ccf7a}main{padding:18px 20px}.card{background:#142033;border:1px solid #22324a;border-radius:6px;padding:14px;margin-bottom:16px}.card h2{margin:0 0 12px;font-size:15px;color:#9fd8ff}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:6px 8px;border-bottom:1px solid #22324a;text-align:left;white-space:nowrap}th{color:#8aa0b8;font-weight:500}tr:hover td{background:#18283e}.q-GOOD{color:#3ccf7a}.q-BAD,.q-COMM_FAILURE,.q-TIMEOUT{color:#ff6b6b}.q-NOT_CONNECTED,.q-UNCERTAIN{color:#f0b429}button{background:#1f6feb;color:#fff;border:0;border-radius:4px;padding:5px 12px;cursor:pointer;font-size:13px}button.secondary{background:#2b3d55}button.danger{background:#c94040}button:disabled{opacity:.5;cursor:default}input,select{background:#0f1724;border:1px solid #2b3d55;color:#dbe4f0;border-radius:4px;padding:5px 8px;font-size:13px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.grid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#8aa0b8}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.err{color:#ff6b6b;font-size:13px}.muted{color:#6f849c;font-size:12px}.badge{padding:1px 8px;border-radius:10px;font-size:12px;background:#2b3d55}.badge.ONLINE{background:#1d5c3a}.badge.OFFLINE{background:#6b2525}.badge.CONNECTING{background:#6b5a1d}.lv-ERROR{color:#ff6b6b}.lv-WARN{color:#f0b429}.alarm-count{background:#c94040;color:#fff;border-radius:9px;padding:0 6px;font-size:11px;margin-left:2px}.p1{color:#ff4d4f;font-weight:600}.p2{color:#ff8c3a}.p3{color:#f0d43a}.p4{color:#7fc8ff}.st-ACTIVE_UNACKED{color:#ff4d4f;font-weight:600;animation:flash 1s infinite alternate}.st-ACTIVE_ACKED{color:#ff8c3a}.st-CLEARED_UNACKED{color:#f0d43a}.st-CLEARED{color:#3ccf7a}@keyframes flash{to{opacity:.45}}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:10}.modal .card{width:460px}textarea{background:#0f1724;border:1px solid #2b3d55;color:#dbe4f0;border-radius:4px;padding:5px 8px;font-size:13px;width:100%;min-height:60px}.kv{display:grid;grid-template-columns:180px 1fr 30px;gap:6px;margin-bottom:6px}.login{display:flex;justify-content:center;align-items:center;min-height:80vh}.login form{width:360px;display:flex;flex-direction:column;gap:10px}.login label{display:flex;flex-direction:column;gap:4px}.warn{color:#e0a030}.user{font-weight:600}nav a,header .user,header h1{white-space:nowrap}a.button{display:inline-block;text-align:center;padding:6px 12px;border-radius:4px;text-decoration:none;border:1px solid #3a6ea5;color:inherit}.login .sso{margin-top:4px}.hmi-blink{animation:hmiblink .8s steps(2,start) infinite}@keyframes hmiblink{to{visibility:hidden}}.hmi-flow{animation:hmiflow 1s linear infinite}.hmi-flow.rev{animation-direction:reverse}@keyframes hmiflow{to{stroke-dashoffset:-20}}.hmi-spin{animation:hmispin 1.5s linear infinite;transform-box:fill-box;transform-origin:center}@keyframes hmispin{to{transform:rotate(360deg)}}.hmi-bad text{fill:#6f849c!important}.hmi-btn{cursor:pointer}.mode{display:inline-flex;border:1px solid #2a3d57;border-radius:4px;overflow:hidden}.mode a{padding:3px 12px;color:#9ab;text-decoration:none}.mode a.on{background:#2563a8;color:#fff}header{flex-wrap:nowrap;gap:14px;padding:0 14px;min-width:0}header nav{flex:1 1 auto;min-width:0;display:flex;overflow-x:auto;scrollbar-width:thin}header nav a{flex:0 0 auto;padding:6px 9px;margin-right:2px}header>*{flex-shrink:0}header>nav{flex-shrink:1}header .user{max-width:180px;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1440px){header .hdr-long{display:none}header h1{font-size:15px}}@media (max-width: 1300px){header .user{max-width:110px}}main.chrome-hidden{padding:0}main.chrome-hidden:has(.hmi-design){padding:6px}.f6-hint{position:fixed;top:12px;left:50%;transform:translate(-50%);background:#0b1626d9;color:#cfe3ff;border:1px solid #2a3d57;padding:5px 14px;border-radius:16px;font-size:13px;z-index:60;pointer-events:none;animation:f6fade 3s forwards}@keyframes f6fade{0%,75%{opacity:1}to{opacity:0}}body:has(main.chrome-hidden){overflow:hidden}main.chrome-hidden .hmi-design{height:calc(100vh - 12px)}.hdr-project{display:flex;align-items:center;font-size:13px;padding:2px 8px;border:1px solid #2c3e57;border-radius:4px;white-space:nowrap}.hdr-project .n{max-width:140px;overflow:hidden;text-overflow:ellipsis}.hdr-project a{margin-left:6px;font-size:12px}.login-project{margin:-4px 0 4px}.projects-page{max-width:880px;margin:40px auto;padding:0 16px}.projects-page h2{margin-bottom:4px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:18px}.project-card{display:block;text-align:left;cursor:pointer;padding:16px;border-radius:8px;border:1px solid #2c3e57;background:#142033;color:inherit;text-decoration:none}.project-card:hover{border-color:#4da3ff}.project-card.off{opacity:.55;cursor:not-allowed}.project-card h3{margin:0 0 6px;font-size:17px}.project-card .st{font-size:12px;float:right}.st.RUNNING{color:#3ecf8e}.st.FAILED{color:#ff6b6b}.st.DISABLED,.st.STOPPED,.st.STARTING{color:#aab}.system-page{max-width:1200px;margin:24px auto;padding:0 16px}.system-page table{width:100%}.system-page .row-actions button{margin:2px;padding:3px 8px;font-size:12px}.system-page .bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}
