.home-container[data-v-f09fa225]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;position:relative;background:linear-gradient(135deg,#0a0e27,#1a1f4e,#0d2137);overflow:hidden}.bg-decoration[data-v-f09fa225]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.grid-line[data-v-f09fa225]{position:absolute;width:200%;height:200%;top:-50%;left:-50%;background-image:linear-gradient(rgba(64,158,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(64,158,255,.08) 1px,transparent 1px);background-size:50px 50px;transform:perspective(500px) rotateX(60deg);transform-origin:center}.home-content[data-v-f09fa225]{text-align:center;z-index:10}.title[data-v-f09fa225]{font-size:64px;font-weight:700;color:#fff;margin-bottom:14px;text-shadow:0 0 36px rgba(64,158,255,.6);letter-spacing:6px}.subtitle[data-v-f09fa225]{font-size:24px;color:#7a8ba8;margin-bottom:70px;letter-spacing:3px}.button-group[data-v-f09fa225]{display:flex;flex-direction:column;gap:32px;align-items:center}.nav-btn[data-v-f09fa225]{width:min(680px,86vw);padding:30px 38px;font-size:26px;border:none;border-radius:16px;display:flex;align-items:center;gap:22px;transition:all .3s ease;position:relative;overflow:hidden;cursor:pointer}.btn-primary[data-v-f09fa225]{background:linear-gradient(135deg,#1e88e5,#1565c0);color:#fff;box-shadow:0 8px 32px #1e88e54d}.btn-primary[data-v-f09fa225]:hover{transform:translateY(-3px);box-shadow:0 12px 40px #1e88e580}.btn-secondary[data-v-f09fa225]{background:linear-gradient(135deg,#2e7d32,#1b5e20);color:#fff;box-shadow:0 8px 32px #2e7d324d}.btn-secondary[data-v-f09fa225]:hover{transform:translateY(-3px);box-shadow:0 12px 40px #2e7d3280}.btn-icon[data-v-f09fa225]{font-size:40px;line-height:1;flex-shrink:0}.btn-text[data-v-f09fa225]{flex:1;text-align:left;letter-spacing:2px;font-weight:600}.model-design-page[data-v-0ed0156d]{width:100%;height:100vh;display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 0%,#12203f,#0a0e27 60%)}.top-bar[data-v-0ed0156d]{height:72px;background:linear-gradient(90deg,#0f1938,#1a2f66,#0f1938);display:flex;align-items:center;padding:0 24px;border-bottom:2px solid #2a4373;box-shadow:0 4px 20px #00000073;flex-shrink:0;position:relative;z-index:20}.back-btn[data-v-0ed0156d]{position:absolute;left:24px;top:50%;transform:translateY(-50%);padding:10px 20px;background:#409eff24;border:2px solid #409eff;color:#7cc4ff;border-radius:8px;font-size:16px;font-weight:500;letter-spacing:1px;transition:background .3s,color .3s,box-shadow .3s;cursor:pointer}.back-btn[data-v-0ed0156d]:hover{background:#409eff;color:#fff;box-shadow:0 0 14px #409eff8c}.page-title[data-v-0ed0156d]{flex:1;text-align:center;font-size:28px;color:#fff;font-weight:700;letter-spacing:4px;margin:0;text-shadow:0 0 20px rgba(64,158,255,.6)}.main-content[data-v-0ed0156d]{flex:1;display:flex;overflow:hidden;min-height:0}.left-panel[data-v-0ed0156d]{width:320px;flex-shrink:0;background:#0f1525;border-right:2px solid #1e2d4d;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.panel-title[data-v-0ed0156d]{padding:16px 20px;font-size:19px;font-weight:700;color:#409eff;border-bottom:2px solid #1e2d4d;letter-spacing:2px;margin:0;position:sticky;top:0;background:linear-gradient(180deg,#131c33,#0f1525);z-index:2;flex-shrink:0}.model-list[data-v-0ed0156d]{list-style:none;padding:8px 0 16px;margin:0}.sub-list[data-v-0ed0156d]{list-style:none;padding:0;margin:0}.model-item[data-v-0ed0156d]{display:flex;align-items:center;gap:12px;cursor:pointer;transition:background .2s,color .2s,border-color .2s;border-left:5px solid transparent;color:#a3b0c6;-webkit-user-select:none;user-select:none}.model-item.level-0[data-v-0ed0156d]{padding:14px 18px}.model-item.level-1[data-v-0ed0156d]{padding:12px 15px}.model-item.level-2[data-v-0ed0156d]{padding:11px 15px 11px 44px}.model-item[data-v-0ed0156d]:hover{background:#409eff1a;color:#dbe4f2}.model-item.active[data-v-0ed0156d]{background:linear-gradient(90deg,#409eff47,#409eff14);border-left-color:#409eff;color:#fff}.expand-icon[data-v-0ed0156d]{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:6px;background:#409eff1f;transition:background .2s}.expand-icon[data-v-0ed0156d]:hover{background:#409eff52}.expand-icon[data-v-0ed0156d]:before{content:"";display:block;width:0;height:0;border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:11px solid #8fb4e0;transition:transform .25s ease,border-left-color .25s ease}.expand-icon.open[data-v-0ed0156d]:before{transform:rotate(90deg);border-left-color:#409eff}.model-item.active .expand-icon[data-v-0ed0156d]:before{border-left-color:#fff}.model-icon[data-v-0ed0156d]{font-size:24px;line-height:1;flex-shrink:0;filter:drop-shadow(0 0 5px rgba(64,158,255,.35))}.model-name[data-v-0ed0156d]{font-size:17px;font-weight:500;flex:1;letter-spacing:1px;line-height:1.4}.model-item.level-0 .model-name[data-v-0ed0156d]{font-size:18px;font-weight:700}.sub-name[data-v-0ed0156d]{font-size:16px;font-weight:400}.sub-dot[data-v-0ed0156d]{width:11px;height:11px;border-radius:50%;flex-shrink:0;background:radial-gradient(circle at 32% 32%,#8fd0ff,#2b7fd4 70%);box-shadow:0 0 8px #409effbf}.model-item.active .sub-dot[data-v-0ed0156d]{background:radial-gradient(circle at 32% 32%,#fff,#409eff 70%);box-shadow:0 0 12px #78c8fff2}.center-panel[data-v-0ed0156d]{flex:1 1 auto;min-width:0;position:relative;background:#0d1117;overflow:hidden}.view-switch-bar[data-v-0ed0156d]{position:absolute;left:50%;bottom:24px;transform:translate(-50%);display:flex;gap:10px;padding:8px;background:#0d1424d1;border:2px solid #2a4373;border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 6px 24px #00000080;z-index:5}.view-btn[data-v-0ed0156d]{padding:11px 24px;background:transparent;border:2px solid transparent;color:#a3b0c6;font-size:16px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .25s;letter-spacing:2px;white-space:nowrap}.view-btn[data-v-0ed0156d]:hover{color:#fff;background:#409eff29}.view-btn.active[data-v-0ed0156d]{color:#fff;background:linear-gradient(90deg,#2563eb,#409eff);border-color:#6cb8ff;box-shadow:0 0 14px #409eff8c}.right-panel[data-v-0ed0156d]{width:400px;flex-shrink:0;background:#0f1525;border-left:2px solid #1e2d4d;display:flex;flex-direction:column;overflow-y:auto}.model-info[data-v-0ed0156d]{padding:18px 20px 24px;flex:1}.info-desc[data-v-0ed0156d]{font-size:15px;line-height:1.8;color:#c6d3e6;margin-bottom:18px;padding:14px 16px;background:#409eff14;border-radius:10px;border-left:5px solid #409eff}.info-meta[data-v-0ed0156d]{margin-bottom:18px}.meta-title[data-v-0ed0156d]{font-size:15px;font-weight:700;color:#409eff;margin:0 0 9px;letter-spacing:2px;display:flex;align-items:center;gap:8px}.meta-title[data-v-0ed0156d]:before{content:"";width:5px;height:16px;border-radius:3px;background:linear-gradient(180deg,#6cb8ff,#2563eb);box-shadow:0 0 6px #409eff99}.meta-text[data-v-0ed0156d]{font-size:14px;color:#a3b0c6;line-height:1.8;margin:0;padding:12px 14px;background:#ffffff08;border:1px solid rgba(64,158,255,.12);border-radius:8px}.sim-play-row[data-v-0ed0156d]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:13px 14px;background:#ffffff08;border:1px solid rgba(64,158,255,.12);border-radius:8px}.play-btn[data-v-0ed0156d]{display:inline-flex;align-items:center;gap:10px;padding:11px 24px;background:linear-gradient(90deg,#2563eb,#409eff);border:none;color:#fff;font-size:16px;font-weight:600;border-radius:8px;cursor:pointer;transition:all .25s;box-shadow:0 4px 14px #409eff66;letter-spacing:2px}.play-btn[data-v-0ed0156d]:hover{transform:translateY(-2px);box-shadow:0 6px 20px #409eff99}.play-btn.playing[data-v-0ed0156d]{background:linear-gradient(90deg,#d98c1f,#f5a623);box-shadow:0 4px 14px #e6a23c73}.play-btn.playing[data-v-0ed0156d]:hover{box-shadow:0 6px 20px #e6a23ca6}.play-icon[data-v-0ed0156d]{font-size:14px;line-height:1}.play-status[data-v-0ed0156d]{display:inline-flex;align-items:center;gap:10px;font-size:15px;font-weight:500;color:#67c27a;letter-spacing:2px}.play-dot[data-v-0ed0156d]{width:11px;height:11px;background:#67c27a;border-radius:50%;box-shadow:0 0 10px #67c27ae6;animation:dotPulse-0ed0156d 1.2s ease-in-out infinite}@keyframes dotPulse-0ed0156d{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.loading-mask[data-v-0ed0156d]{position:absolute;top:0;right:0;bottom:0;left:0;background:#0d1117e0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10}.loading-spinner[data-v-0ed0156d]{width:64px;height:64px;border:6px solid #1e2d4d;border-top-color:#409eff;border-radius:50%;animation:spin-0ed0156d 1s linear infinite;margin-bottom:20px}@keyframes spin-0ed0156d{to{transform:rotate(360deg)}}.loading-text[data-v-0ed0156d]{color:#409eff;font-size:19px;letter-spacing:2px;font-weight:500}.plc-control-page[data-v-b9f97fdd]{width:100%;height:100vh;display:flex;flex-direction:column;background:#0a0e27}.top-bar[data-v-b9f97fdd]{height:64px;background:linear-gradient(90deg,#0f1938,#1a2f66,#0f1938);display:flex;align-items:center;padding:0 24px;border-bottom:2px solid #2a4373;box-shadow:0 4px 20px #00000073;flex-shrink:0;position:relative;z-index:20}.top-left[data-v-b9f97fdd]{position:absolute;left:24px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:12px}.back-btn[data-v-b9f97fdd]{padding:8px 18px;background:#409eff24;border:2px solid #409eff;color:#7cc4ff;border-radius:8px;font-size:15px;font-weight:500;cursor:pointer;transition:background .3s,color .3s}.back-btn[data-v-b9f97fdd]:hover{background:#409eff;color:#fff}.plc-console-btn[data-v-b9f97fdd]{padding:8px 16px;background:transparent;border:2px solid transparent;color:#ffffff8c;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s;letter-spacing:1px}.plc-console-btn[data-v-b9f97fdd]:hover{background:#f0a0302e;border-color:#f0a030;color:#ffc966;box-shadow:0 0 10px #f0a0304d}.page-title[data-v-b9f97fdd]{flex:1;text-align:center;font-size:24px;color:#fff;font-weight:700;letter-spacing:3px;margin:0;text-shadow:0 0 20px rgba(64,158,255,.6)}.top-right[data-v-b9f97fdd]{position:absolute;right:24px;top:50%;transform:translateY(-50%)}.conn-info[data-v-b9f97fdd]{display:flex;align-items:center;gap:10px;padding:7px 14px;background:#ffffff0f;border:2px solid #2a3a5a;border-radius:8px;font-size:14px;color:#b0bdd0}.conn-dot[data-v-b9f97fdd]{width:11px;height:11px;border-radius:50%;background:#f44;box-shadow:0 0 7px #f44}.conn-dot.connected[data-v-b9f97fdd]{background:#0c6;box-shadow:0 0 9px #0c6;animation:pulse-b9f97fdd 2s infinite}@keyframes pulse-b9f97fdd{0%,to{opacity:1}50%{opacity:.5}}.conn-text[data-v-b9f97fdd]{font-family:Consolas,monospace}.conn-state[data-v-b9f97fdd]{margin-left:8px;padding:2px 8px;border-radius:5px;background:#f443;color:#f66;font-size:12px;font-weight:700}.conn-state.connected[data-v-b9f97fdd]{background:#0c63;color:#6d8}.main-layout[data-v-b9f97fdd]{flex:1;display:flex;overflow:hidden;min-height:0}.left-panel[data-v-b9f97fdd]{width:300px;flex-shrink:0;background:#0f1525;border-right:2px solid #1e2d4d;display:flex;flex-direction:column}.panel-header[data-v-b9f97fdd]{padding:14px 16px;border-bottom:2px solid #1e2d4d;background:linear-gradient(180deg,#131c33,#0f1525);flex-shrink:0}.panel-title[data-v-b9f97fdd]{font-size:17px;font-weight:700;color:#409eff;letter-spacing:2px}.status-scroll[data-v-b9f97fdd]{flex:1;overflow-y:auto;padding:10px 0}.unit-group[data-v-b9f97fdd]{margin-bottom:14px}.unit-name[data-v-b9f97fdd]{padding:6px 16px;font-size:14px;font-weight:700;color:#7cc4ff;letter-spacing:1px;border-left:4px solid #409eff;background:#409eff14;margin-bottom:4px}.cond-item[data-v-b9f97fdd]{display:flex;align-items:center;gap:10px;padding:7px 16px;font-size:13px;color:#a3b0c6;border-bottom:1px dashed rgba(255,255,255,.04)}.cond-item.satisfied[data-v-b9f97fdd]{color:#d0e8ff}.cond-dot[data-v-b9f97fdd]{width:9px;height:9px;border-radius:50%;background:#f55;box-shadow:0 0 6px #f55;flex-shrink:0}.cond-item.satisfied .cond-dot[data-v-b9f97fdd]{background:#0c6;box-shadow:0 0 8px #0c6}.cond-name[data-v-b9f97fdd]{flex:1;line-height:1.4}.cond-status[data-v-b9f97fdd]{font-size:12px;padding:2px 8px;border-radius:4px;background:#ff55552e;color:#f77;font-weight:700;flex-shrink:0}.cond-item.satisfied .cond-status[data-v-b9f97fdd]{background:#00cc662e;color:#6d8}.conn-tip[data-v-b9f97fdd]{margin:14px 16px;padding:10px;background:#ffb4001a;border:1px solid rgba(255,180,0,.4);border-radius:6px;color:#fc6;font-size:13px;text-align:center}.center-stage[data-v-b9f97fdd]{flex:1;min-width:0;position:relative;background:#0a0e1a;display:flex;align-items:center;justify-content:center;padding:20px}.stage-wrapper[data-v-b9f97fdd]{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#0d1117;border-radius:12px;border:2px solid #1e2d4d;overflow:hidden;box-shadow:inset 0 0 60px #00000080}.stage-img[data-v-b9f97fdd]{max-width:100%;max-height:100%;object-fit:contain;transition:opacity .4s ease}.disconnected-hint[data-v-b9f97fdd]{text-align:center;color:#4a5a7a}.hint-icon[data-v-b9f97fdd]{font-size:72px;margin-bottom:16px;opacity:.6}.hint-text[data-v-b9f97fdd]{font-size:18px;letter-spacing:2px}.anim-bar[data-v-b9f97fdd]{position:absolute;left:20px;right:20px;bottom:20px;padding:12px 20px;background:#0d1424e0;border:2px solid #2a4373;border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;gap:14px;color:#e0e8f5;font-size:15px;letter-spacing:1px}.anim-dot[data-v-b9f97fdd]{width:12px;height:12px;border-radius:50%;background:#666}.anim-dot.playing[data-v-b9f97fdd]{background:#409eff;box-shadow:0 0 10px #409eff;animation:pulse-b9f97fdd 1s infinite}.anim-dot.done[data-v-b9f97fdd]{background:#0c6;box-shadow:0 0 10px #0c6}.anim-text[data-v-b9f97fdd]{flex:1;font-weight:500}.anim-progress[data-v-b9f97fdd]{font-family:Consolas,monospace;color:#7cc4ff;font-size:14px}.hint-banner[data-v-b9f97fdd]{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:10px 22px;background:#ffb40026;border:2px solid rgba(255,180,0,.4);border-radius:8px;color:#fc6;font-size:14px;letter-spacing:1px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.right-panel[data-v-b9f97fdd]{width:400px;flex-shrink:0;background:#0f1525;border-left:2px solid #1e2d4d;display:flex;flex-direction:column}.analysis-section[data-v-b9f97fdd]{flex-shrink:0;border-bottom:2px solid #1e2d4d;display:flex;flex-direction:column}.analysis-body[data-v-b9f97fdd]{padding:14px;max-height:340px;overflow-y:auto}.analysis-empty[data-v-b9f97fdd]{text-align:center;color:#4a5a7a;padding:40px 20px;font-size:14px;letter-spacing:1px}.empty-icon[data-v-b9f97fdd]{font-size:48px;margin-bottom:12px;opacity:.5}.analysis-card[data-v-b9f97fdd]{background:#409eff12;border:1px solid #2a4373;border-left:4px solid #409eff;border-radius:8px;padding:12px 14px}.analysis-card.abnormal[data-v-b9f97fdd]{background:#ff555514;border-color:#f556;border-left-color:#f55}.analysis-card.normal[data-v-b9f97fdd]{background:#00cc6612;border-color:#00cc664d;border-left-color:#0c6}.analysis-row[data-v-b9f97fdd]{display:flex;align-items:flex-start;gap:6px;padding:4px 0;font-size:13px;line-height:1.5}.row-label[data-v-b9f97fdd]{color:#7a8ba8;flex-shrink:0;min-width:72px}.row-value[data-v-b9f97fdd]{color:#d0e0f0;flex:1;word-break:break-all}.row-value.code[data-v-b9f97fdd]{font-family:Consolas,monospace;color:#7cc4ff;font-weight:700}.row-value.code.small[data-v-b9f97fdd]{font-size:12px;font-weight:400;color:#9abcdc}.analysis-divider[data-v-b9f97fdd]{height:1px;background:#ffffff14;margin:8px 0}.analysis-result[data-v-b9f97fdd]{padding-top:4px}.result-title[data-v-b9f97fdd]{font-size:15px;font-weight:700;margin-bottom:6px}.analysis-card.normal .result-title[data-v-b9f97fdd]{color:#6d8}.analysis-card.abnormal .result-title[data-v-b9f97fdd]{color:#f77}.result-reason[data-v-b9f97fdd]{color:#f99;font-size:13px;line-height:1.6;padding:8px 12px;background:#ff55551a;border-radius:6px}.result-action[data-v-b9f97fdd]{color:#80cbc4;font-size:13px;line-height:1.6;padding:8px 12px;background:#00cc6614;border-radius:6px}.log-section[data-v-b9f97fdd]{flex:1;display:flex;flex-direction:column;min-height:0}.log-header[data-v-b9f97fdd]{padding:12px 16px;border-bottom:2px solid #1e2d4d;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.log-title[data-v-b9f97fdd]{font-size:16px;color:#fff;font-weight:700;letter-spacing:2px}.clear-btn[data-v-b9f97fdd]{padding:6px 14px;background:#ffffff14;border:2px solid #3a4a6a;color:#a3b0c6;border-radius:6px;font-size:13px;cursor:pointer;transition:all .2s}.clear-btn[data-v-b9f97fdd]:hover{background:#ffffff29;color:#fff;border-color:#409eff}.log-content[data-v-b9f97fdd]{flex:1;overflow-y:auto;padding:12px}.log-empty[data-v-b9f97fdd]{text-align:center;color:#3f5070;padding:40px 20px;font-size:14px;letter-spacing:1px}.log-item[data-v-b9f97fdd]{background:#409eff12;border-left:4px solid #409eff;border-radius:6px;padding:9px 12px;margin-bottom:9px;font-size:13px;line-height:1.6}.log-item.error[data-v-b9f97fdd]{background:#ff555514;border-left-color:#f55}.log-item.ok[data-v-b9f97fdd]{background:#00cc6612;border-left-color:#0c6}.log-time[data-v-b9f97fdd]{color:#6a7b95;font-family:Consolas,monospace;font-size:12px}.log-io[data-v-b9f97fdd]{color:#c6d3e6;margin-top:2px}.io-tag[data-v-b9f97fdd]{display:inline-block;background:#409eff;color:#fff;padding:1px 8px;border-radius:4px;font-family:Consolas,monospace;font-size:12px;margin-left:4px}.log-item.error .io-tag[data-v-b9f97fdd]{background:#f55}.log-item.ok .io-tag[data-v-b9f97fdd]{background:#0c6}.log-action[data-v-b9f97fdd]{color:#80cbc4;margin-top:2px}.log-item.error .log-action[data-v-b9f97fdd]{color:#f99}.ok-mark[data-v-b9f97fdd]{color:#6d8;font-weight:700;margin-right:4px}.err-mark[data-v-b9f97fdd]{color:#f77;font-weight:700;margin-right:4px}.plc-panel-overlay[data-v-c69d4c2e]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center}.mask[data-v-c69d4c2e]{position:absolute;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.plc-window[data-v-c69d4c2e]{position:relative;width:1100px;height:820px;background:#f0f0f0;color:#1a1a1a;border:1px solid #808080;box-shadow:0 20px 60px #0009;display:flex;flex-direction:column;font-family:Microsoft YaHei,Tahoma,SimSun,sans-serif;font-size:13px;-webkit-user-select:none;user-select:none}.title-bar[data-v-c69d4c2e]{height:30px;background:linear-gradient(180deg,#0a3d91,#0a2866);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 6px;flex-shrink:0}.title-left[data-v-c69d4c2e]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700}.title-icon[data-v-c69d4c2e]{font-size:16px}.close-btn[data-v-c69d4c2e]{width:24px;height:22px;background:silver;border:1px solid #808080;color:#000;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.close-btn[data-v-c69d4c2e]:hover{background:#e81123;color:#fff;border-color:#e81123}.menu-bar[data-v-c69d4c2e]{height:24px;background:#ece9d8;border-bottom:1px solid #808080;display:flex;align-items:center;padding:0 4px;gap:2px;flex-shrink:0}.menu-item[data-v-c69d4c2e]{padding:2px 8px;font-size:12px;cursor:default}.menu-item[data-v-c69d4c2e]:hover{background:#316ac5;color:#fff}.toolbar[data-v-c69d4c2e]{background:#f5f4e8;border-bottom:1px solid #808080;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.conn-group[data-v-c69d4c2e]{display:flex;align-items:center;gap:6px}.lbl[data-v-c69d4c2e]{font-size:12px;color:#333}.ip-input[data-v-c69d4c2e],.port-input[data-v-c69d4c2e]{height:24px;border:2px inset #c0c0c0;background:#fff;padding:0 6px;font-size:12px;font-family:Consolas,monospace;outline:none}.ip-input[data-v-c69d4c2e]{width:130px}.port-input[data-v-c69d4c2e]{width:70px}.conn-btn[data-v-c69d4c2e]{height:26px;padding:0 14px;background:linear-gradient(180deg,#e8e8d0,#c8c8a8);border:2px outset #d0d0b0;font-size:12px;font-weight:700;cursor:pointer;color:#1a1a1a;margin-left:4px}.conn-btn[data-v-c69d4c2e]:hover{background:linear-gradient(180deg,#f0efe0,#d8d8b8)}.conn-btn[data-v-c69d4c2e]:active{border-style:inset}.conn-btn.connected[data-v-c69d4c2e]{background:linear-gradient(180deg,#e05050,#a02020);color:#fff;border-color:#802020}.conn-status[data-v-c69d4c2e]{display:inline-flex;align-items:center;gap:6px;margin-left:10px;font-size:12px;color:#c00;font-weight:700}.conn-status.connected[data-v-c69d4c2e]{color:#060}.status-light[data-v-c69d4c2e]{width:12px;height:12px;border-radius:50%;background:#c00;border:1px solid #600;box-shadow:inset 0 0 3px #0006}.conn-status.connected .status-light[data-v-c69d4c2e]{background:#0c0;border-color:#060;box-shadow:0 0 6px #0f0,inset 0 0 3px #0000004d}.stat-group[data-v-c69d4c2e]{display:flex;gap:14px;font-size:12px}.stat b[data-v-c69d4c2e]{color:#0a3d91;margin-left:2px}.stat.ok b[data-v-c69d4c2e]{color:#060}.stat.fail b[data-v-c69d4c2e]{color:#c00}.preset-bar[data-v-c69d4c2e]{background:#ece9d8;border-bottom:1px solid #b0a890;padding:6px 10px;max-height:130px;overflow-y:auto;flex-shrink:0}.preset-group[data-v-c69d4c2e]{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-bottom:4px;padding-bottom:4px;border-bottom:1px dotted #c0b898}.preset-group[data-v-c69d4c2e]:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.preset-unit[data-v-c69d4c2e]{font-size:12px;font-weight:700;color:#0a3d91;background:#d0d8f0;padding:2px 8px;border-radius:3px;margin-right:4px;white-space:nowrap;flex-shrink:0}.preset-btn[data-v-c69d4c2e]{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:#f8f6ec;border:1px solid #a09878;font-size:12px;cursor:pointer;color:#1a1a1a}.preset-btn[data-v-c69d4c2e]:hover:not(:disabled){background:#fff8d0;border-color:#0a3d91}.preset-btn[data-v-c69d4c2e]:disabled{opacity:.5;cursor:not-allowed}.preset-btn .pk[data-v-c69d4c2e]{font-family:Consolas,monospace;font-weight:700;color:#0a3d91;background:#e0e8f8;padding:0 4px;border-radius:2px}.preset-btn .pl[data-v-c69d4c2e]{color:#333;font-size:11px}.editor-area[data-v-c69d4c2e]{flex:1;display:flex;flex-direction:column;background:#fff;border-bottom:1px solid #808080;min-height:0}.editor-header[data-v-c69d4c2e]{background:#ece9d8;border-bottom:1px solid #b0a890;padding:4px 8px 0;height:24px;flex-shrink:0;display:flex;align-items:center;gap:16px}.tab[data-v-c69d4c2e]{display:inline-block;padding:3px 14px;background:#fff;border:1px solid #b0a890;border-bottom:1px solid #fff;font-size:12px;position:relative;top:1px}.tab-hint[data-v-c69d4c2e]{font-size:11px;color:#777}.editor-body[data-v-c69d4c2e]{flex:1;display:flex;overflow:hidden;background:#fff}.line-number-col[data-v-c69d4c2e]{width:40px;background:#f0efe4;border-right:1px solid #d0c8b0;padding:6px 0;text-align:right;flex-shrink:0;overflow:hidden}.ln[data-v-c69d4c2e]{font-family:Consolas,monospace;font-size:12px;color:#999;line-height:20px;padding-right:6px;height:20px}.input-wrap[data-v-c69d4c2e]{flex:1;padding:6px;overflow:auto}.cmd-textarea[data-v-c69d4c2e]{width:100%;height:100%;min-height:140px;border:none;outline:none;resize:none;font-family:Consolas,Courier New,monospace;font-size:14px;line-height:20px;color:#1a1a1a;background:#fffef0;padding:0}.cmd-textarea[data-v-c69d4c2e]:disabled{background:#f0f0f0;color:#999}.editor-footer[data-v-c69d4c2e]{background:#ece9d8;border-top:1px solid #b0a890;padding:6px 12px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;height:34px}.hint[data-v-c69d4c2e]{font-size:11px;color:#666;display:flex;gap:16px}.offline-tip[data-v-c69d4c2e]{color:#c00;font-weight:700}.send-btn[data-v-c69d4c2e]{padding:4px 20px;background:linear-gradient(180deg,#4a90d9,#2060a0);border:2px outset #3070b0;color:#fff;font-size:13px;font-weight:700;cursor:pointer;letter-spacing:2px}.send-btn[data-v-c69d4c2e]:hover:not(:disabled){background:linear-gradient(180deg,#5aa0e9,#3070b0)}.send-btn[data-v-c69d4c2e]:active:not(:disabled){border-style:inset}.send-btn[data-v-c69d4c2e]:disabled{opacity:.5;cursor:not-allowed}.log-area[data-v-c69d4c2e]{height:180px;background:#fff;border-bottom:1px solid #808080;display:flex;flex-direction:column;flex-shrink:0}.log-header[data-v-c69d4c2e]{height:26px;background:#ece9d8;border-bottom:1px solid #b0a890;display:flex;align-items:center;justify-content:space-between;padding:0 10px;flex-shrink:0}.log-title[data-v-c69d4c2e]{font-size:12px;font-weight:700;color:#333}.clear-btn[data-v-c69d4c2e]{padding:2px 10px;background:#f8f6ec;border:1px solid #a09878;font-size:11px;cursor:pointer}.clear-btn[data-v-c69d4c2e]:hover{background:#ffe0e0;border-color:#c00;color:#c00}.log-body[data-v-c69d4c2e]{flex:1;overflow-y:auto;padding:4px 8px;font-family:Consolas,monospace;font-size:12px;line-height:1.7;background:#fafaf0}.log-empty[data-v-c69d4c2e]{text-align:center;color:#999;padding:30px;font-size:12px}.log-row[data-v-c69d4c2e]{padding:2px 4px;border-bottom:1px dotted #e0e0d0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.log-row.connect[data-v-c69d4c2e]{background:#e8f5e8}.log-row.disconnect[data-v-c69d4c2e]{background:#fde8e8}.log-row.warn[data-v-c69d4c2e]{background:#fff5d6}.log-row.error[data-v-c69d4c2e]{background:#fde8e8}.log-time[data-v-c69d4c2e]{color:#888}.log-cmd[data-v-c69d4c2e]{color:#0a3d91;font-weight:700}.log-msg[data-v-c69d4c2e]{color:#333;flex:1}.log-flag[data-v-c69d4c2e]{font-size:11px;color:#060;padding:0 6px;border-radius:2px;background:#e8f5e8}.log-flag.disconnect[data-v-c69d4c2e]{color:#c00;background:#fde8e8}.log-flag.sent[data-v-c69d4c2e]{color:#0a3d91;background:#e0e8f8}.log-flag.warn[data-v-c69d4c2e]{color:#c08000;background:#fff0c0}.log-flag.err[data-v-c69d4c2e]{color:#c00;background:#fde8e8}.status-bar[data-v-c69d4c2e]{height:22px;background:#ece9d8;border-top:1px solid #fff;display:flex;align-items:center;padding:0 8px;gap:16px;font-size:11px;color:#333;flex-shrink:0}.status-bar .right[data-v-c69d4c2e]{margin-left:auto;color:#060;font-weight:700}.plc-console-page[data-v-b77ec772]{width:100%;height:100vh;background:#0009;overflow:hidden;display:flex;align-items:center;justify-content:center}.plc-console-page[data-v-b77ec772] .plc-window{width:880px;height:640px}.plc-console-page[data-v-b77ec772] .preset-bar{max-height:100px}.plc-console-page[data-v-b77ec772] .log-area{height:130px}*{margin:0;padding:0;box-sizing:border-box}html,body,#app{width:100%;height:100%;font-family:Microsoft YaHei,Segoe UI,sans-serif;background:#0a0e27;color:#e0e6ed;overflow:hidden}button{cursor:pointer;font-family:inherit}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:#131a2e}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#3a5a8a,#2a4373);border-radius:6px;border:2px solid #131a2e}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#4a7ab8,#35578f)}
