@nywqs/scada-engine 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- [data-scada-theme] .scada-header[data-v-9bbedc41]{height:60px;background:#16213e;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #0f3460;gap:24px}[data-scada-theme] .header-left[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .logo[data-v-9bbedc41]{font-size:20px;font-weight:600;margin:0;color:#e2e8f0}[data-scada-theme] .version[data-v-9bbedc41]{font-size:12px;color:#64748b;padding:2px 8px;background:#0f172a;border-radius:4px}[data-scada-theme] .header-center[data-v-9bbedc41]{flex:1;display:flex;justify-content:center;align-items:center}[data-scada-theme] .header-right[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .tool-group[data-v-9bbedc41]{display:flex;gap:8px}[data-scada-theme] .header-btn[data-v-9bbedc41]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s;font-size:13px}[data-scada-theme] .header-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-1px)}[data-scada-theme] .header-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .tip[data-v-9bbedc41]{font-size:13px;color:#94a3b8}[data-scada-theme] .divider[data-v-9bbedc41]{width:1px;height:32px;background:#334155;margin:0 12px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:16px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .toolbar-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .toolbar-btn .icon-svg[data-v-9bbedc41]{width:18px;height:18px;display:block}[data-scada-theme] .canvas-info[data-v-9bbedc41]{display:flex;align-items:center;gap:16px}[data-scada-theme] .info-text[data-v-9bbedc41]{font-size:12px;color:#64748b}[data-scada-theme] .component-library[data-v-92bb4e17]{width:260px;height:100%;background:#1e293b;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .library-header[data-v-92bb4e17]{padding:16px;line-height:50px;text-align:center;border-bottom:1px solid #0f3460}[data-scada-theme] .library-header h3[data-v-92bb4e17]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .library-content[data-v-92bb4e17]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .component-section[data-v-92bb4e17]{margin-bottom:24px}[data-scada-theme] .component-section[data-v-92bb4e17]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-92bb4e17]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .component-grid[data-v-92bb4e17]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}[data-scada-theme] .component-item[data-v-92bb4e17]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;background:#0f172a;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .component-item[data-v-92bb4e17]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-2px);box-shadow:0 4px 8px #3b82f64d}[data-scada-theme] .component-item[data-v-92bb4e17]:active{transform:translateY(0)}[data-scada-theme] .component-icon[data-v-92bb4e17]{font-size:24px;color:#e2e8f0}[data-scada-theme] .component-name[data-v-92bb4e17]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar{width:8px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-area[data-v-a869f6aa]{flex:1;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto;position:relative}[data-scada-theme] .canvas-container[data-v-a869f6aa]{position:relative;border:2px solid #334155;box-shadow:0 4px 12px #0000004d;transition:transform .2s ease}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar{width:8px;height:8px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-config-panel[data-v-f309895b]{width:100%;height:100%;background:#1e293b;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .panel-header[data-v-f309895b]{padding:16px;border-bottom:1px solid #0f3460}[data-scada-theme] .panel-header h3[data-v-f309895b]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .panel-content[data-v-f309895b]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .config-section[data-v-f309895b]{margin-bottom:24px}[data-scada-theme] .config-section[data-v-f309895b]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-f309895b]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .config-item[data-v-f309895b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}[data-scada-theme] .config-item label[data-v-f309895b]{font-size:13px;color:#cbd5e1;flex-shrink:0}[data-scada-theme] .config-select[data-v-f309895b]{width:160px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;font-size:13px}[data-scada-theme] .config-number[data-v-f309895b]{width:80px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;text-align:center;font-size:13px}[data-scada-theme] .config-color[data-v-f309895b]{width:50px;height:32px;border:1px solid #334155;border-radius:4px;cursor:pointer;background:#0f172a}[data-scada-theme] .slider-group[data-v-f309895b]{display:flex;align-items:center;gap:8px;flex:1;max-width:160px}[data-scada-theme] .config-slider[data-v-f309895b]{flex:1}[data-scada-theme] .value-display[data-v-f309895b]{font-size:12px;color:#94a3b8;min-width:30px;text-align:right}[data-scada-theme] .number-input-group[data-v-f309895b]{display:flex;gap:4px}[data-scada-theme] .adjust-btn[data-v-f309895b]{width:32px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:14px}[data-scada-theme] .adjust-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .upload-btn[data-v-f309895b]{width:50px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}[data-scada-theme] .upload-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .image-upload[data-v-f309895b]{display:flex;gap:8px}[data-scada-theme] .clear-btn[data-v-f309895b]{width:32px;height:32px;background:#dc2626;color:#fff;border:1px solid #991b1b;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}[data-scada-theme] .clear-btn[data-v-f309895b]:hover{background:#b91c1c;border-color:#7f1d1d}[data-scada-theme] .switch[data-v-f309895b]{position:relative;display:inline-block;width:48px;height:24px}[data-scada-theme] .switch input[data-v-f309895b]{opacity:0;width:0;height:0}[data-scada-theme] .switch .slider[data-v-f309895b]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#475569;transition:.3s;border-radius:24px}[data-scada-theme] .switch .slider[data-v-f309895b]:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]{background-color:#3b82f6}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]:before{transform:translate(24px)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar{width:8px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tab-pane[data-v-def84c5f]{animation:fadeIn-def84c5f .2s}@keyframes fadeIn-def84c5f{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-def84c5f]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-def84c5f]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item[data-v-def84c5f]{margin-bottom:12px}[data-scada-theme] .property-item-inline[data-v-def84c5f]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline[data-v-def84c5f]:has(.checkbox-wrapper){justify-content:flex-start}[data-scada-theme] .property-item-inline label[data-v-def84c5f]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-def84c5f],[data-scada-theme] .property-item-inline select[data-v-def84c5f]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:0 0 auto}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:focus,[data-scada-theme] .property-item-inline select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .color-input-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px}[data-scada-theme] .property-item-inline .color-input-wrapper input[type=color][data-v-def84c5f]{width:40px;height:28px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .property-item-inline .color-input-wrapper .color-value[data-v-def84c5f]{flex:1;min-width:0;font-size:11px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .property-item label[data-v-def84c5f]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item input[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item input[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .property-item input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-row[data-v-def84c5f]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-def84c5f]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-def84c5f]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .checkbox-wrapper[data-v-def84c5f]{display:inline-flex;align-items:center;gap:6px}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-def84c5f]{width:16px;height:16px;cursor:pointer;accent-color:#3b82f6;pointer-events:auto!important;-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important;opacity:1!important;z-index:1!important;position:relative!important;flex-shrink:0}[data-scada-theme] .checkbox-label[data-v-def84c5f]{font-size:12px;color:#cbd5e1;white-space:nowrap}[data-scada-theme] select[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] select option[data-v-def84c5f]{background:#0f172a;color:#e2e8f0}[data-scada-theme] .property-hint[data-v-def84c5f]{display:block;font-size:11px;color:#64748b;margin-top:2px;font-weight:400}[data-scada-theme] .tab-pane[data-v-5b515f8a]{animation:fadeIn-5b515f8a .2s}@keyframes fadeIn-5b515f8a{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-5b515f8a]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-5b515f8a]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item-inline[data-v-5b515f8a]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline label[data-v-5b515f8a]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-5b515f8a],[data-scada-theme] .property-item-inline select[data-v-5b515f8a]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:focus,[data-scada-theme] .property-item-inline select[data-v-5b515f8a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-5b515f8a]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-5b515f8a]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}[data-scada-theme] .checkbox-label[data-v-5b515f8a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .edge-properties-tab[data-v-e47f1784]{padding:0}[data-scada-theme] .property-section[data-v-e47f1784]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-e47f1784]:last-child{border-bottom:none;margin-bottom:0}[data-scada-theme] .section-title[data-v-e47f1784]{font-size:13px;font-weight:600;color:#e2e8f0;margin:0 0 12px;padding:0}[data-scada-theme] .property-item[data-v-e47f1784]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-e47f1784]:last-child{margin-bottom:0}[data-scada-theme] .property-label[data-v-e47f1784]{display:block;font-size:12px;color:#94a3b8;margin-bottom:6px;font-weight:500}[data-scada-theme] .color-input-wrapper[data-v-e47f1784]{display:flex;gap:8px;align-items:center}[data-scada-theme] .color-input[data-v-e47f1784]{width:40px;height:32px;border:1px solid #475569;border-radius:4px;cursor:pointer;background:#1e293b;padding:2px}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-text[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;font-family:Consolas,monospace}[data-scada-theme] .color-text[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .number-input-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:8px}[data-scada-theme] .property-input[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px}[data-scada-theme] .property-input[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .input-unit[data-v-e47f1784]{font-size:12px;color:#64748b;min-width:24px}[data-scada-theme] .property-select[data-v-e47f1784]{width:100%;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;cursor:pointer}[data-scada-theme] .property-select[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .slider-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:12px}[data-scada-theme] .property-slider[data-v-e47f1784]{flex:1;height:4px;background:#334155;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-scada-theme] .property-slider[data-v-e47f1784]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:#3b82f6;border-radius:50%;cursor:pointer}[data-scada-theme] .property-slider[data-v-e47f1784]::-moz-range-thumb{width:14px;height:14px;background:#3b82f6;border-radius:50%;border:none;cursor:pointer}[data-scada-theme] .slider-value[data-v-e47f1784]{font-size:12px;color:#94a3b8;min-width:40px;text-align:right}[data-scada-theme] .delete-btn[data-v-e47f1784]{width:100%;height:36px;background:#dc2626;border:none;border-radius:4px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .delete-btn[data-v-e47f1784]:hover{background:#b91c1c}[data-scada-theme] .delete-btn[data-v-e47f1784]:active{transform:scale(.98)}[data-scada-theme] .event-card[data-v-af7c633a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-af7c633a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-af7c633a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-af7c633a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-af7c633a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-af7c633a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-af7c633a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-af7c633a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-af7c633a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-af7c633a]{animation:slideDown-af7c633a .2s ease-out}@keyframes slideDown-af7c633a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .event-field[data-v-af7c633a]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}[data-scada-theme] .event-field[data-v-af7c633a]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-af7c633a]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-af7c633a],[data-scada-theme] .event-field select[data-v-af7c633a],[data-scada-theme] .event-field textarea[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .event-field input[data-v-af7c633a]:focus,[data-scada-theme] .event-field select[data-v-af7c633a]:focus,[data-scada-theme] .event-field textarea[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-title[data-v-af7c633a]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-af7c633a]:first-child{margin-top:0}[data-scada-theme] .field-hint[data-v-af7c633a]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-config[data-v-af7c633a]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-af7c633a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-af7c633a],[data-scada-theme] .condition-input[data-v-af7c633a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-af7c633a]:focus,[data-scada-theme] .condition-input[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .config-section[data-v-af7c633a]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .btn-config[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-af7c633a]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .selected-workflow-info[data-v-af7c633a]{margin-top:12px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .info-row[data-v-af7c633a]{display:flex;align-items:center;gap:8px;margin-bottom:12px}[data-scada-theme] .info-label[data-v-af7c633a]{font-size:12px;color:#94a3b8}[data-scada-theme] .info-value[data-v-af7c633a]{font-size:13px;color:#10b981;font-weight:500}[data-scada-theme] .modal-overlay[data-v-7884b850]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-7884b850 .2s ease-out}@keyframes fadeIn-7884b850{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-7884b850]{width:800px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-7884b850 .3s ease-out}@keyframes slideUp-7884b850{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-7884b850]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-7884b850]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-7884b850]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .device-point-selector[data-v-7884b850]{display:grid;grid-template-columns:1fr 1.5fr;gap:12px;height:500px;padding:16px 24px;overflow:hidden}[data-scada-theme] .modal-footer[data-v-7884b850]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7884b850],[data-scada-theme] .btn-confirm[data-v-7884b850]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-7884b850]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-7884b850]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7884b850]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7884b850]:hover{background:#2563eb}[data-scada-theme] .btn-confirm[data-v-7884b850]:disabled{background:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .device-list-panel[data-v-7884b850],[data-scada-theme] .point-list-panel[data-v-7884b850]{display:flex;flex-direction:column;background:#1e293b;border:1px solid #334155;border-radius:6px;overflow:hidden}[data-scada-theme] .panel-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#334155;border-bottom:1px solid #475569}[data-scada-theme] .panel-header h4[data-v-7884b850]{margin:0;font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .device-count[data-v-7884b850],[data-scada-theme] .point-count[data-v-7884b850]{font-size:12px;color:#94a3b8;background:#1e293b;padding:2px 8px;border-radius:10px}[data-scada-theme] .search-box[data-v-7884b850]{padding:12px 16px;border-bottom:1px solid #334155}[data-scada-theme] .search-input[data-v-7884b850]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .search-input[data-v-7884b850]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .search-input[data-v-7884b850]::placeholder{color:#64748b}[data-scada-theme] .device-list[data-v-7884b850],[data-scada-theme] .point-list[data-v-7884b850]{flex:1;overflow-y:auto;padding:8px}[data-scada-theme] .device-item[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .device-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .device-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .device-item.offline[data-v-7884b850]{opacity:.6}[data-scada-theme] .device-info[data-v-7884b850]{flex:1}[data-scada-theme] .device-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .status-dot[data-v-7884b850]{width:8px;height:8px;border-radius:50%;background:#64748b}[data-scada-theme] .status-dot.online[data-v-7884b850]{background:#10b981;box-shadow:0 0 8px #10b98180}[data-scada-theme] .status-dot.offline[data-v-7884b850]{background:#64748b}[data-scada-theme] .status-dot.error[data-v-7884b850]{background:#ef4444;box-shadow:0 0 8px #ef444480}[data-scada-theme] .device-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .device-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .device-arrow[data-v-7884b850]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .device-item:hover .device-arrow[data-v-7884b850]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .point-item[data-v-7884b850]{padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .point-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .point-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .point-item.disabled[data-v-7884b850]{opacity:.5;cursor:not-allowed}[data-scada-theme] .point-info[data-v-7884b850]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .point-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0}[data-scada-theme] .access-mode[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:400}[data-scada-theme] .access-mode.read[data-v-7884b850]{background:#3b82f633;color:#60a5fa}[data-scada-theme] .access-mode.write[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .access-mode.readWrite[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .point-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .point-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .point-unit[data-v-7884b850]{color:#3b82f6}[data-scada-theme] .point-type[data-v-7884b850]{background:#334155;padding:2px 6px;border-radius:3px}[data-scada-theme] .point-value[data-v-7884b850]{font-size:12px;color:#94a3b8}[data-scada-theme] .point-value .value[data-v-7884b850]{color:#e2e8f0;font-weight:500;margin:0 4px}[data-scada-theme] .quality[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;margin-left:8px}[data-scada-theme] .quality.good[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .quality.bad[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .quality.uncertain[data-v-7884b850]{background:#f59e0b33;color:#fbbf24}[data-scada-theme] .empty-hint[data-v-7884b850]{text-align:center;padding:40px 20px;color:#64748b;font-size:13px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar{width:6px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-track,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .modal-overlay[data-v-ef9e0ee1]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ef9e0ee1 .2s ease-out}@keyframes fadeIn-ef9e0ee1{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-ef9e0ee1]{width:600px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-ef9e0ee1 .3s ease-out}@keyframes slideUp-ef9e0ee1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-ef9e0ee1]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-ef9e0ee1]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-ef9e0ee1]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-ef9e0ee1]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .modal-footer[data-v-ef9e0ee1]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1],[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]:hover{background:#2563eb}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]{max-height:60vh;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-item[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .config-item label[data-v-ef9e0ee1]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .required[data-v-ef9e0ee1]{color:#ef4444;margin-left:2px}[data-scada-theme] .field-hint[data-v-ef9e0ee1]{font-size:11px;color:#64748b;margin-top:4px;line-height:1.4}[data-scada-theme] .field-hint.error[data-v-ef9e0ee1]{color:#ef4444}[data-scada-theme] .config-item select[data-v-ef9e0ee1],[data-scada-theme] .config-item input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .config-item select[data-v-ef9e0ee1]:focus,[data-scada-theme] .config-item input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .unit-config[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .checkbox-label[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;font-size:13px;color:#cbd5e1;cursor:pointer}[data-scada-theme] .checkbox-label input[type=checkbox][data-v-ef9e0ee1]{width:auto;cursor:pointer}[data-scada-theme] .custom-unit[data-v-ef9e0ee1]{margin-left:24px}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .mapping-details[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:12px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .range-rules[data-v-ef9e0ee1],[data-scada-theme] .enum-mappings[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .range-rule[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping input[data-v-ef9e0ee1]{flex:1;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:first-child,[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:nth-child(3){max-width:80px}[data-scada-theme] .range-separator[data-v-ef9e0ee1],[data-scada-theme] .range-arrow[data-v-ef9e0ee1],[data-scada-theme] .enum-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:14px;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]{padding:8px 16px;background:#334155;border:1px dashed #475569;border-radius:4px;color:#94a3b8;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]:hover{background:#3b82f6;border-color:#3b82f6;color:#fff;border-style:solid}[data-scada-theme] .mapping-preview[data-v-ef9e0ee1]{padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .mapping-preview label[data-v-ef9e0ee1]{display:block;font-size:12px;color:#94a3b8;margin-bottom:8px}[data-scada-theme] .preview-content[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .preview-item[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#1e293b;border-radius:4px;font-size:12px}[data-scada-theme] .preview-input[data-v-ef9e0ee1]{color:#94a3b8;font-family:monospace}[data-scada-theme] .preview-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:12px}[data-scada-theme] .preview-output[data-v-ef9e0ee1]{color:#3b82f6;font-weight:500}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar{width:6px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .event-card[data-v-3731c19a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-3731c19a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-3731c19a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-3731c19a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-3731c19a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-3731c19a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-3731c19a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-3731c19a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-3731c19a]{animation:slideDown-3731c19a .2s ease-out}@keyframes slideDown-3731c19a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .property-item[data-v-3731c19a]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-3731c19a]:last-child{margin-bottom:0}[data-scada-theme] .property-item label[data-v-3731c19a]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item select[data-v-3731c19a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item select[data-v-3731c19a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .selected-point[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .point-main[data-v-3731c19a]{display:flex;align-items:center;gap:8px;font-size:13px}[data-scada-theme] .device-name[data-v-3731c19a]{color:#94a3b8;font-size:12px}[data-scada-theme] .point-name[data-v-3731c19a]{color:#e2e8f0;font-weight:500}[data-scada-theme] .point-details[data-v-3731c19a]{display:flex;gap:8px;font-size:11px;color:#64748b}[data-scada-theme] .point-code[data-v-3731c19a]{font-family:monospace}[data-scada-theme] .point-unit[data-v-3731c19a]{color:#3b82f6}[data-scada-theme] .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .selector-arrow[data-v-3731c19a]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .point-selector-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .mapping-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .mapping-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .mapping-summary[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .mapping-type-label[data-v-3731c19a]{font-size:13px;color:#e2e8f0;font-weight:500}[data-scada-theme] .mapping-detail[data-v-3731c19a]{font-size:11px;color:#64748b}[data-scada-theme] .mapping-trigger .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .mapping-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .dialog-overlay[data-v-90af9944]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-90af9944 .2s}@keyframes fadeIn-90af9944{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-content[data-v-90af9944]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-90af9944 .3s}@keyframes slideUp-90af9944{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-90af9944]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-90af9944]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-90af9944]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-90af9944]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-90af9944]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .btn-add-group[data-v-90af9944]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-90af9944]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-90af9944]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-90af9944]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-90af9944]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-90af9944]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-90af9944],[data-scada-theme] .group-field select[data-v-90af9944]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-90af9944]:focus,[data-scada-theme] .group-field select[data-v-90af9944]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-90af9944]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-90af9944]{width:60px;height:36px}[data-scada-theme] .color-value[data-v-90af9944]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .btn-delete-group[data-v-90af9944]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-90af9944]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .empty-hint[data-v-90af9944]{font-size:12px;color:#64748b;text-align:center;padding:16px;background:#0f172a;border-radius:4px;margin-bottom:12px}[data-scada-theme] .dialog-footer[data-v-90af9944]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-90af9944],[data-scada-theme] .btn-confirm[data-v-90af9944]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-90af9944]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-90af9944]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-90af9944]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-90af9944]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-add3567b]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-add3567b .2s}@keyframes fadeIn-add3567b{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-large[data-v-add3567b]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-content[data-v-add3567b]{background:#1e293b;border-radius:8px;width:90%;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-add3567b .3s}@keyframes slideUp-add3567b{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-add3567b]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-add3567b]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-add3567b]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body-split[data-v-add3567b]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden;padding:24px}[data-scada-theme] .code-editor-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-add3567b]{flex:1;resize:none;height:100%!important}[data-scada-theme] .code-textarea[data-v-add3567b]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-add3567b]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-add3567b]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-add3567b]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-add3567b]{color:#10b981}[data-scada-theme] .status-error[data-v-add3567b]{color:#ef4444}[data-scada-theme] .btn-test[data-v-add3567b]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-add3567b]:hover{background:#059669;border-color:#059669}[data-scada-theme] .code-preview-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-add3567b]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-add3567b]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-add3567b]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-add3567b]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-add3567b]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-add3567b]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-add3567b]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-add3567b]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-add3567b]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-add3567b]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-add3567b]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-add3567b]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-add3567b]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-add3567b],[data-scada-theme] .btn-confirm[data-v-add3567b]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-add3567b]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-add3567b]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-add3567b]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-add3567b]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-c9a88e33]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}[data-scada-theme] .dialog-container[data-v-c9a88e33]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .dialog-header[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-c9a88e33]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-close[data-v-c9a88e33]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-c9a88e33]{flex:1;overflow-y:auto;padding:20px 24px}[data-scada-theme] .empty-state[data-v-c9a88e33]{text-align:center;padding:40px 20px;color:#64748b}[data-scada-theme] .empty-state p[data-v-c9a88e33]{margin:8px 0;font-size:14px}[data-scada-theme] .empty-state .hint[data-v-c9a88e33]{font-size:12px;color:#475569}[data-scada-theme] .workflow-list[data-v-c9a88e33]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .workflow-item[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .workflow-item[data-v-c9a88e33]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .workflow-item.selected[data-v-c9a88e33]{border-color:#10b981;background:#10b9811a}[data-scada-theme] .workflow-info[data-v-c9a88e33]{flex:1}[data-scada-theme] .workflow-name[data-v-c9a88e33]{font-size:15px;font-weight:500;color:#e2e8f0;margin-bottom:6px}[data-scada-theme] .workflow-meta[data-v-c9a88e33]{display:flex;gap:12px;font-size:12px;color:#64748b}[data-scada-theme] .workflow-id[data-v-c9a88e33]{color:#94a3b8}[data-scada-theme] .workflow-date[data-v-c9a88e33]{color:#64748b}[data-scada-theme] .workflow-actions[data-v-c9a88e33]{display:flex;gap:8px}[data-scada-theme] .btn-icon[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:1px solid #334155;border-radius:4px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-icon[data-v-c9a88e33]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .dialog-footer[data-v-c9a88e33]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-c9a88e33],[data-scada-theme] .btn-primary[data-v-c9a88e33]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-c9a88e33]{background:transparent;border:1px solid #475569;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-c9a88e33]:hover{background:#334155;border-color:#64748b}[data-scada-theme] .btn-primary[data-v-c9a88e33]{background:#10b981;border:1px solid #10b981;color:#fff}[data-scada-theme] .btn-primary[data-v-c9a88e33]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-primary[data-v-c9a88e33]:disabled{background:#334155;border-color:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .property-panel[data-v-7d3281c0]{width:300px;height:100%;background:#1e293b;border-left:1px solid #0f3460;overflow-y:auto}[data-scada-theme] .empty-state[data-v-7d3281c0]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#64748b;text-align:center;padding:24px}[data-scada-theme] .empty-state p[data-v-7d3281c0]{font-size:16px;margin-bottom:8px}[data-scada-theme] .empty-state .hint[data-v-7d3281c0]{font-size:12px;color:#475569}[data-scada-theme] .properties[data-v-7d3281c0]{padding:12px}[data-scada-theme] .panel-title[data-v-7d3281c0]{font-size:15px;font-weight:600;color:#e2e8f0;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-7d3281c0]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .hint-text[data-v-7d3281c0]{font-size:12px;color:#64748b;margin-bottom:12px;line-height:1.5}[data-scada-theme] .empty-hint[data-v-7d3281c0]{display:flex;justify-content:center;align-items:center;padding:24px 16px;color:#64748b;font-size:12px;text-align:center;background:#0f172a;border-radius:4px;margin-bottom:10px}[data-scada-theme] .property-item[data-v-7d3281c0]{margin-bottom:10px}[data-scada-theme] .property-item label[data-v-7d3281c0]{display:block;font-size:11px;color:#cbd5e1;margin-bottom:4px}[data-scada-theme] .property-item input[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item input[data-v-7d3281c0]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item select[data-v-7d3281c0],[data-scada-theme] .property-item textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item select[data-v-7d3281c0]:focus,[data-scada-theme] .property-item textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item textarea[data-v-7d3281c0]{resize:vertical;min-height:50px;font-family:Consolas,Monaco,monospace}[data-scada-theme] .property-row[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-7d3281c0]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tabs[data-v-7d3281c0]{display:flex;gap:3px;margin-bottom:12px;padding:3px;background:#0f172a;border-radius:5px}[data-scada-theme] .tab-btn[data-v-7d3281c0]{flex:1;padding:6px 10px;background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:12px;font-weight:500;border-radius:4px;transition:all .2s}[data-scada-theme] .tab-btn[data-v-7d3281c0]:hover{color:#cbd5e1;background:#1e293b}[data-scada-theme] .tab-btn.active[data-v-7d3281c0]{color:#fff;background:#3b82f6}[data-scada-theme] .tab-content[data-v-7d3281c0]{min-height:0}[data-scada-theme] .tab-pane[data-v-7d3281c0]{animation:fadeIn-7d3281c0 .2s}@keyframes fadeIn-7d3281c0{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown-7d3281c0{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}[data-scada-theme] .section-header h4[data-v-7d3281c0]{margin:0}[data-scada-theme] .btn-add[data-v-7d3281c0]{padding:5px 10px;background:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-add[data-v-7d3281c0]:hover{background:#2563eb}[data-scada-theme] .event-list[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .event-card[data-v-7d3281c0]{background:#0f172a;border:1px solid #334155;border-radius:5px;padding:10px;transition:all .2s}[data-scada-theme] .event-card[data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-7d3281c0]:hover{background:#3b82f60d;margin:-4px -6px 6px;padding:4px 6px 10px;border-radius:4px}[data-scada-theme] .header-left[data-v-7d3281c0]{display:flex;align-items:center;gap:6px}[data-scada-theme] .collapse-icon[data-v-7d3281c0]{font-size:9px;color:#64748b;transition:transform .2s;display:inline-block;width:10px}[data-scada-theme] .event-type-label[data-v-7d3281c0]{font-size:12px;font-weight:500;color:#e2e8f0}[data-scada-theme] .event-action-badge[data-v-7d3281c0]{font-size:10px;padding:2px 6px;background:#3b82f6;color:#fff;border-radius:8px}[data-scada-theme] .event-card-body[data-v-7d3281c0]{animation:slideDown-7d3281c0 .2s ease-out}[data-scada-theme] .event-index[data-v-7d3281c0]{font-size:12px;font-weight:600;color:#3b82f6}[data-scada-theme] .btn-remove[data-v-7d3281c0]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}[data-scada-theme] .event-field[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-7d3281c0]{font-size:11px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-7d3281c0],[data-scada-theme] .event-field select[data-v-7d3281c0],[data-scada-theme] .event-field textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .event-field input[data-v-7d3281c0]:focus,[data-scada-theme] .event-field select[data-v-7d3281c0]:focus,[data-scada-theme] .event-field textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .field-hint[data-v-7d3281c0]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-group[data-v-7d3281c0]{background:#1e293b;border-radius:4px;padding:12px;margin-bottom:12px}[data-scada-theme] .config-section[data-v-7d3281c0]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .section-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-7d3281c0]:first-child{margin-top:0}[data-scada-theme] .btn-config[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .condition-config[data-v-7d3281c0]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-7d3281c0]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-7d3281c0],[data-scada-theme] .condition-input[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-7d3281c0]:focus,[data-scada-theme] .condition-input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .event-title[data-v-7d3281c0]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:hover{border-color:#475569}[data-scada-theme] .code-textarea[data-v-7d3281c0]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;resize:vertical;min-height:120px;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .dialog-overlay[data-v-7d3281c0]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-7d3281c0 .2s}[data-scada-theme] .dialog-content[data-v-7d3281c0]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-7d3281c0 .3s}[data-scada-theme] .dialog-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-7d3281c0]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-7d3281c0]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-7d3281c0]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-7d3281c0]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .btn-add-group[data-v-7d3281c0]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-7d3281c0]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-7d3281c0]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-7d3281c0]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-7d3281c0],[data-scada-theme] .group-field select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-7d3281c0]:focus,[data-scada-theme] .group-field select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-7d3281c0]{width:60px;height:36px}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .dialog-large[data-v-7d3281c0]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-body-split[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden}[data-scada-theme] .code-editor-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-7d3281c0]{flex:1;resize:none;height:100%!important}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-7d3281c0]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-7d3281c0]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-7d3281c0]{color:#10b981}[data-scada-theme] .status-error[data-v-7d3281c0]{color:#ef4444}[data-scada-theme] .btn-test[data-v-7d3281c0]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-7d3281c0]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-clear[data-v-7d3281c0]{padding:4px 12px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:12px;transition:all .2s}[data-scada-theme] .btn-clear[data-v-7d3281c0]:hover{background:#334155;color:#cbd5e1}[data-scada-theme] .code-preview-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-7d3281c0]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-7d3281c0]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-7d3281c0]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-7d3281c0]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-7d3281c0]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-7d3281c0]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-7d3281c0]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-7d3281c0]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-7d3281c0]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-7d3281c0]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7d3281c0],[data-scada-theme] .btn-confirm[data-v-7d3281c0]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-7d3281c0]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-7d3281c0]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7d3281c0]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7d3281c0]:hover{background:#2563eb;border-color:#2563eb}@keyframes slideUp-7d3281c0{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .scada-footer[data-v-52b6d4b1]{height:32px;background:#1e293b;border-top:1px solid #0f3460;display:flex;align-items:center;padding:0 32px;flex-shrink:0}[data-scada-theme] .footer-content[data-v-52b6d4b1]{width:100%;display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .footer-left[data-v-52b6d4b1],[data-scada-theme] .footer-right[data-v-52b6d4b1]{display:flex;align-items:center;gap:12px}[data-scada-theme] .copyright[data-v-52b6d4b1],[data-scada-theme] .license[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .divider[data-v-52b6d4b1]{color:#475569!important;font-size:12px}[data-scada-theme] .contact-item[data-v-52b6d4b1]{display:flex;align-items:center;gap:4px}[data-scada-theme] .contact-item .icon[data-v-52b6d4b1]{font-size:12px}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]:hover{color:#3b82f6!important;cursor:pointer}[data-scada-theme] .authorized-icon[data-v-52b6d4b1]{font-size:14px;margin-right:6px}[data-scada-theme] .authorized-text[data-v-52b6d4b1]{font-size:12px;color:#10b981!important;font-weight:500}[data-scada-theme] .expiry-text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .element-selector-overlay[data-v-882704dd]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}[data-scada-theme] .element-selector-dialog[data-v-882704dd]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 4px 24px #0000004d}[data-scada-theme] .dialog-header[data-v-882704dd]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-882704dd]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-882704dd]{width:28px;height:28px;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-882704dd]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-882704dd]{flex:1;padding:20px;display:flex;flex-direction:column;gap:16px;overflow:hidden}[data-scada-theme] .search-box input[data-v-882704dd]{width:100%;padding:10px 14px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#e2e8f0;font-size:14px}[data-scada-theme] .search-box input[data-v-882704dd]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .element-list[data-v-882704dd]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}[data-scada-theme] .element-item[data-v-882704dd]{display:flex;align-items:center;gap:12px;padding:12px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .element-item[data-v-882704dd]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .element-item.active[data-v-882704dd]{border-color:#3b82f6;background:#3b82f61a}[data-scada-theme] .element-icon[data-v-882704dd]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#3b82f61a;border-radius:6px;font-size:20px;flex-shrink:0}[data-scada-theme] .element-info[data-v-882704dd]{flex:1}[data-scada-theme] .element-name[data-v-882704dd]{font-size:14px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .element-type[data-v-882704dd]{font-size:12px;color:#94a3b8}[data-scada-theme] .element-check[data-v-882704dd]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#3b82f6;border-radius:50%;color:#fff;font-size:14px;font-weight:700}[data-scada-theme] .empty-state[data-v-882704dd]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#64748b;padding:40px 20px}[data-scada-theme] .empty-state p[data-v-882704dd]{margin:0;font-size:14px}[data-scada-theme] .empty-hint[data-v-882704dd]{margin-top:8px;font-size:12px;color:#475569}[data-scada-theme] .dialog-footer[data-v-882704dd]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-882704dd],[data-scada-theme] .btn-primary[data-v-882704dd]{padding:8px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-882704dd]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-882704dd]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-882704dd]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-882704dd]:hover{background:#2563eb}[data-scada-theme] .btn-primary[data-v-882704dd]:disabled{background:#475569;cursor:not-allowed;opacity:.5}[data-scada-theme] .node-config[data-v-fa65eb56]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-fa65eb56]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-fa65eb56]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-fa65eb56]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-fa65eb56]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-fa65eb56]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-fa65eb56]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-fa65eb56]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-fa65eb56],[data-scada-theme] .config-group textarea[data-v-fa65eb56],[data-scada-theme] .config-group select[data-v-fa65eb56]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-fa65eb56]:focus,[data-scada-theme] .config-group textarea[data-v-fa65eb56]:focus,[data-scada-theme] .config-group select[data-v-fa65eb56]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-42e029d4]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-42e029d4]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-42e029d4]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-42e029d4]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-42e029d4]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-42e029d4]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-42e029d4]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-42e029d4]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-42e029d4],[data-scada-theme] .config-group textarea[data-v-42e029d4],[data-scada-theme] .config-group select[data-v-42e029d4]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-42e029d4]:focus,[data-scada-theme] .config-group textarea[data-v-42e029d4]:focus,[data-scada-theme] .config-group select[data-v-42e029d4]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-15975920]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-15975920]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-15975920],[data-scada-theme] .config-group textarea[data-v-15975920],[data-scada-theme] .config-group select[data-v-15975920]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-15975920]:focus,[data-scada-theme] .config-group textarea[data-v-15975920]:focus,[data-scada-theme] .config-group select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .branches-section[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .section-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-15975920]{font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .btn-add[data-v-15975920]{padding:4px 12px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add[data-v-15975920]:hover{background:#2563eb}[data-scada-theme] .branch-list[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .branch-item[data-v-15975920]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px}[data-scada-theme] .branch-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}[data-scada-theme] .branch-number[data-v-15975920]{font-size:12px;color:#3b82f6;font-weight:500}[data-scada-theme] .btn-remove[data-v-15975920]{width:20px;height:20px;background:#ef4444;color:#fff;border:none;border-radius:50%;font-size:16px;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-15975920]:hover{background:#dc2626}[data-scada-theme] .branch-config[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-row[data-v-15975920]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .config-row label[data-v-15975920]{font-size:12px;color:#94a3b8}[data-scada-theme] .config-row input[data-v-15975920],[data-scada-theme] .config-row select[data-v-15975920]{padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .config-row input[data-v-15975920]:focus,[data-scada-theme] .config-row select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .default-branch-label[data-v-15975920]{font-size:12px;color:#94a3b8;text-align:center;padding:8px;background:#1e293b;border-radius:4px}[data-scada-theme] .node-config[data-v-4c312eea]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-4c312eea]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-4c312eea]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-4c312eea],[data-scada-theme] .config-group textarea[data-v-4c312eea],[data-scada-theme] .config-group select[data-v-4c312eea]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-4c312eea]:focus,[data-scada-theme] .config-group textarea[data-v-4c312eea]:focus,[data-scada-theme] .config-group select[data-v-4c312eea]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .config-group textarea[data-v-4c312eea]{resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .node-config[data-v-f7115383]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-f7115383]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-f7115383]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group textarea[data-v-f7115383]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .config-group textarea[data-v-f7115383]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .code-hint[data-v-f7115383]{padding:12px;background:#3b82f61a;border-left:3px solid #3b82f6;border-radius:4px}[data-scada-theme] .code-hint p[data-v-f7115383]{margin:0 0 8px;font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .code-hint ul[data-v-f7115383]{margin:0;padding-left:20px}[data-scada-theme] .code-hint li[data-v-f7115383]{font-size:12px;color:#64748b;margin-bottom:4px}[data-scada-theme] .node-config[data-v-323381bc]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-323381bc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-323381bc]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-323381bc],[data-scada-theme] .config-group select[data-v-323381bc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-323381bc]:focus,[data-scada-theme] .config-group select[data-v-323381bc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-d102fb63]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-d102fb63]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-d102fb63]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-d102fb63],[data-scada-theme] .config-group select[data-v-d102fb63]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-d102fb63]:focus,[data-scada-theme] .config-group select[data-v-d102fb63]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .timer-hint[data-v-d102fb63]{padding:12px;background:#faad141a;border-left:3px solid #faad14;border-radius:4px}[data-scada-theme] .timer-hint p[data-v-d102fb63]{margin:0;font-size:12px;color:#94a3b8}[data-scada-theme] .timer-hint.warning[data-v-d102fb63]{background:#ef44441a;border-left-color:#ef4444}[data-scada-theme] .property-panel[data-v-8304acbc]{width:300px;background:#1e293b;border-left:1px solid #334155;display:flex;flex-direction:column}[data-scada-theme] .property-panel h3[data-v-8304acbc]{margin:0;padding:16px;font-size:14px;font-weight:600;color:#e2e8f0;border-bottom:1px solid #334155}[data-scada-theme] .property-content[data-v-8304acbc]{padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}[data-scada-theme] .property-group[data-v-8304acbc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .property-group label[data-v-8304acbc]{font-size:13px;color:#94a3b8}[data-scada-theme] .property-group input[data-v-8304acbc],[data-scada-theme] .property-group textarea[data-v-8304acbc],[data-scada-theme] .property-group select[data-v-8304acbc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .property-group input[data-v-8304acbc]:focus,[data-scada-theme] .property-group textarea[data-v-8304acbc]:focus,[data-scada-theme] .property-group select[data-v-8304acbc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .property-group input[data-v-8304acbc]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-empty[data-v-8304acbc]{flex:1;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:13px}[data-scada-theme] .divider[data-v-8304acbc]{height:1px;background:#334155;margin:8px 0}[data-scada-theme] .toolbar[data-v-b3e0a4fc]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#1e293b;border-bottom:1px solid #334155}[data-scada-theme] .toolbar-left[data-v-b3e0a4fc]{display:flex;align-items:center;gap:24px}[data-scada-theme] .toolbar-left h2[data-v-b3e0a4fc]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .toolbar-right[data-v-b3e0a4fc]{display:flex;gap:12px}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc],[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]:hover{background:#2563eb}[data-scada-theme] .btn-close[data-v-b3e0a4fc]{width:36px;height:36px;padding:0;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-left:8px}[data-scada-theme] .btn-close[data-v-b3e0a4fc]:hover{background:#475569;border-color:#64748b;color:#e2e8f0}[data-scada-theme] .close-icon[data-v-b3e0a4fc]{font-size:24px;line-height:1}[data-scada-theme] .menu-overlay[data-v-aa6fccf8]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:999}[data-scada-theme] .add-node-menu[data-v-aa6fccf8]{position:fixed;z-index:1000;background:#1e293b;border:1px solid #334155;border-radius:8px;box-shadow:0 4px 12px #0000004d;min-width:280px;max-width:320px}[data-scada-theme] .menu-header[data-v-aa6fccf8]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #334155;color:#e2e8f0;font-size:14px;font-weight:600}[data-scada-theme] .btn-close[data-v-aa6fccf8]{width:24px;height:24px;background:transparent;border:none;color:#94a3b8;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-aa6fccf8]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .menu-list[data-v-aa6fccf8]{padding:8px}[data-scada-theme] .menu-item[data-v-aa6fccf8]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .menu-item[data-v-aa6fccf8]:hover{background:#334155}[data-scada-theme] .menu-item-icon[data-v-aa6fccf8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:18px;flex-shrink:0}[data-scada-theme] .node-icon-getProperty[data-v-aa6fccf8]{background:#1890ff1a}[data-scada-theme] .node-icon-setProperty[data-v-aa6fccf8]{background:#13c2c21a}[data-scada-theme] .node-icon-condition[data-v-aa6fccf8]{background:#faad141a}[data-scada-theme] .node-icon-httpRequest[data-v-aa6fccf8]{background:#722ed11a}[data-scada-theme] .node-icon-customCode[data-v-aa6fccf8]{background:#eb2f961a}[data-scada-theme] .node-icon-timer[data-v-aa6fccf8]{background:#52c41a1a}[data-scada-theme] .node-icon-clearTimer[data-v-aa6fccf8]{background:#ff4d4f1a}[data-scada-theme] .menu-item-info[data-v-aa6fccf8]{flex:1}[data-scada-theme] .menu-item-name[data-v-aa6fccf8]{font-size:14px;color:#e2e8f0;font-weight:500}[data-scada-theme] .menu-item-desc[data-v-aa6fccf8]{font-size:12px;color:#94a3b8;margin-top:2px}[data-scada-theme] .workflow-editor[data-v-649349a2]{display:flex;flex-direction:column;height:100vh;background:#0f172a;color:#e2e8f0}[data-scada-theme] .editor-main[data-v-649349a2]{display:flex;flex:1;overflow:hidden}[data-scada-theme] .canvas-area[data-v-649349a2]{flex:1;position:relative;overflow:hidden;background:#0f172a}[data-scada-theme] #workflow-container[data-v-649349a2]{width:100%;height:100%}[data-scada-theme] .workflow-dialog-overlay[data-v-4e7f6ab7]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;z-index:9999;display:flex;align-items:center;justify-content:center}[data-scada-theme] .workflow-dialog[data-v-4e7f6ab7]{width:100vw;height:100vh;background:#0f172a;overflow:hidden}.scada-layout[data-v-7551e236]{width:100%;height:100%;min-height:100vh;display:flex;flex-direction:column;background:#1a1a2e}[data-scada-theme] .scada-canvas-container[data-v-7551e236]{flex:1;display:flex;background:#0f172a;overflow:hidden;min-height:0}[data-scada-theme][data-v-7551e236] .x6-node-selected{outline:2px solid #3b82f6;outline-offset:2px;box-shadow:0 0 0 4px #3b82f626,0 0 12px #3b82f64d;transition:outline .15s ease,box-shadow .15s ease}[data-scada-theme][data-v-7551e236] .x6-node-selected rect,[data-scada-theme][data-v-7551e236] .x6-node-selected circle,[data-scada-theme][data-v-7551e236] .x6-node-selected ellipse{filter:brightness(1.05)}.scada-toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-100px);padding:12px 24px;border-radius:6px;color:#fff;font-size:14px;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:9999;opacity:0;transition:all .3s ease;pointer-events:none}.scada-toast.show{transform:translate(-50%) translateY(0);opacity:1}.scada-toast-success{background:linear-gradient(135deg,#10b981,#059669)}.scada-toast-error{background:linear-gradient(135deg,#ef4444,#dc2626)}.scada-toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706)}@keyframes edge-flow-7551e236{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}[data-scada-theme][data-v-7551e236] .x6-edge path{transition:stroke .3s ease,stroke-width .3s ease}[data-scada-theme][data-v-7551e236] .edge-flow-slow{animation:edge-flow-7551e236 4s linear infinite}[data-scada-theme][data-v-7551e236] .edge-flow-normal{animation:edge-flow-7551e236 2s linear infinite}[data-scada-theme][data-v-7551e236] .edge-flow-fast{animation:edge-flow-7551e236 1s linear infinite}.scada-layout[data-scada-theme=dark]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;color:#e2e8f0!important;font-size:14px!important;line-height:1.5!important;box-sizing:border-box!important;margin:0!important;padding:0!important;border:none!important;display:flex!important;flex-direction:column!important;flex:1!important;width:100%!important;height:100%!important;min-height:100vh!important;background:#1a1a2e!important;overflow:hidden!important;position:relative!important}.scada-layout[data-scada-theme=dark] *,.scada-layout[data-scada-theme=dark] *:before,.scada-layout[data-scada-theme=dark] *:after{box-sizing:border-box!important;margin:0;padding:0}.scada-layout[data-scada-theme=dark]>*{box-sizing:border-box!important}.scada-layout[data-scada-theme=dark]>.scada-header,.scada-layout[data-scada-theme=dark]>.scada-footer{color:#e2e8f0!important;margin:0!important}.scada-layout[data-scada-theme=dark] .property-panel>.panel-header,.scada-layout[data-scada-theme=dark] .component-library>.library-header,.scada-layout[data-scada-theme=dark] .canvas-config-panel>.config-header{color:#e2e8f0!important;margin:0!important;padding:0!important}.scada-layout[data-scada-theme=dark] .scada-header h1,.scada-layout[data-scada-theme=dark] .scada-header h2,.scada-layout[data-scada-theme=dark] .scada-header h3,.scada-layout[data-scada-theme=dark] .scada-header h4{color:#e2e8f0!important;margin:0!important;padding:0!important;font-weight:600!important}.scada-layout[data-scada-theme=dark] .canvas-area input:not([class*=ant-]):not([type=range]):not([type=color]):not([type=checkbox]),.scada-layout[data-scada-theme=dark] .canvas-area select:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area textarea:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area button:not([class*=ant-]){-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;outline:none!important;border:none!important;background:none!important;margin:0!important;padding:0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important}.scada-layout[data-scada-theme=dark] .canvas-area label,.scada-layout[data-scada-theme=dark] .canvas-area span,.scada-layout[data-scada-theme=dark] .canvas-area p,.scada-layout[data-scada-theme=dark] .canvas-area div{color:inherit!important;font-family:inherit!important;line-height:normal!important}.scada-layout[data-scada-theme] ::-webkit-scrollbar{width:8px;height:8px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}.scada-layout[data-scada-theme] ::-webkit-scrollbar-corner{background:#0f172a}.scada-layout .x6-node-selected rect{stroke:#3b82f6!important;stroke-width:2!important;filter:drop-shadow(0 0 8px rgba(59,130,246,.6))!important}.scada-layout .x6-edge-selected path{stroke:#3b82f6!important;stroke-width:3!important}.scada-layout .x6-widget-selection-box{border:2px solid #3b82f6!important;background-color:#3b82f61a!important}.scada-layout[data-scada-theme] input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:linear-gradient(90deg,#475569,#334155);border-radius:2px;outline:none;opacity:.9;transition:opacity .2s}.scada-layout[data-scada-theme] input[type=range]:hover{opacity:1}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}
1
+ [data-scada-theme] .scada-header[data-v-9bbedc41]{height:60px;background:#16213e;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #0f3460;gap:24px}[data-scada-theme] .header-left[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .logo[data-v-9bbedc41]{font-size:20px;font-weight:600;margin:0;color:#e2e8f0}[data-scada-theme] .version[data-v-9bbedc41]{font-size:12px;color:#64748b;padding:2px 8px;background:#0f172a;border-radius:4px}[data-scada-theme] .header-center[data-v-9bbedc41]{flex:1;display:flex;justify-content:center;align-items:center}[data-scada-theme] .header-right[data-v-9bbedc41]{display:flex;align-items:center;gap:12px;flex-shrink:0}[data-scada-theme] .tool-group[data-v-9bbedc41]{display:flex;gap:8px}[data-scada-theme] .header-btn[data-v-9bbedc41]{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s;font-size:13px}[data-scada-theme] .header-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-1px)}[data-scada-theme] .header-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .tip[data-v-9bbedc41]{font-size:13px;color:#94a3b8}[data-scada-theme] .divider[data-v-9bbedc41]{width:1px;height:32px;background:#334155;margin:0 12px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:16px}[data-scada-theme] .toolbar-btn[data-v-9bbedc41]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .toolbar-btn .icon[data-v-9bbedc41]{font-size:16px}[data-scada-theme] .toolbar-btn .icon-svg[data-v-9bbedc41]{width:18px;height:18px;display:block}[data-scada-theme] .canvas-info[data-v-9bbedc41]{display:flex;align-items:center;gap:16px}[data-scada-theme] .info-text[data-v-9bbedc41]{font-size:12px;color:#64748b}[data-scada-theme] .component-library[data-v-92bb4e17]{width:260px;height:100%;background:#1e293b;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .library-header[data-v-92bb4e17]{padding:16px;line-height:50px;text-align:center;border-bottom:1px solid #0f3460}[data-scada-theme] .library-header h3[data-v-92bb4e17]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .library-content[data-v-92bb4e17]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .component-section[data-v-92bb4e17]{margin-bottom:24px}[data-scada-theme] .component-section[data-v-92bb4e17]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-92bb4e17]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .component-grid[data-v-92bb4e17]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}[data-scada-theme] .component-item[data-v-92bb4e17]{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px;background:#0f172a;border:1px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .component-item[data-v-92bb4e17]:hover{background:#1e3a5f;border-color:#3b82f6;transform:translateY(-2px);box-shadow:0 4px 8px #3b82f64d}[data-scada-theme] .component-item[data-v-92bb4e17]:active{transform:translateY(0)}[data-scada-theme] .component-icon[data-v-92bb4e17]{font-size:24px;color:#e2e8f0}[data-scada-theme] .component-name[data-v-92bb4e17]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar{width:8px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .library-content[data-v-92bb4e17]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-area[data-v-a869f6aa]{flex:1;display:flex;align-items:center;justify-content:center;background:#0f172a;overflow:auto;position:relative}[data-scada-theme] .canvas-container[data-v-a869f6aa]{position:relative;border:2px solid #334155;box-shadow:0 4px 12px #0000004d;transition:transform .2s ease}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar{width:8px;height:8px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .canvas-area[data-v-a869f6aa]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .canvas-config-panel[data-v-f309895b]{width:100%;height:100%;background:#1e293b;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .panel-header[data-v-f309895b]{padding:16px;border-bottom:1px solid #0f3460}[data-scada-theme] .panel-header h3[data-v-f309895b]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .panel-content[data-v-f309895b]{flex:1;overflow-y:auto;padding:16px}[data-scada-theme] .config-section[data-v-f309895b]{margin-bottom:24px}[data-scada-theme] .config-section[data-v-f309895b]:last-child{margin-bottom:0}[data-scada-theme] .section-title[data-v-f309895b]{font-size:13px;color:#94a3b8;margin:0 0 12px;font-weight:600}[data-scada-theme] .config-item[data-v-f309895b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}[data-scada-theme] .config-item label[data-v-f309895b]{font-size:13px;color:#cbd5e1;flex-shrink:0}[data-scada-theme] .config-select[data-v-f309895b]{width:160px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;font-size:13px}[data-scada-theme] .config-number[data-v-f309895b]{width:80px;padding:6px 12px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;text-align:center;font-size:13px}[data-scada-theme] .config-color[data-v-f309895b]{width:50px;height:32px;border:1px solid #334155;border-radius:4px;cursor:pointer;background:#0f172a}[data-scada-theme] .slider-group[data-v-f309895b]{display:flex;align-items:center;gap:8px;flex:1;max-width:160px}[data-scada-theme] .config-slider[data-v-f309895b]{flex:1}[data-scada-theme] .value-display[data-v-f309895b]{font-size:12px;color:#94a3b8;min-width:30px;text-align:right}[data-scada-theme] .number-input-group[data-v-f309895b]{display:flex;gap:4px}[data-scada-theme] .adjust-btn[data-v-f309895b]{width:32px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;font-size:14px}[data-scada-theme] .adjust-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .upload-btn[data-v-f309895b]{width:50px;height:32px;background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}[data-scada-theme] .upload-btn[data-v-f309895b]:hover{background:#1e3a5f;border-color:#3b82f6}[data-scada-theme] .image-upload[data-v-f309895b]{display:flex;gap:8px}[data-scada-theme] .clear-btn[data-v-f309895b]{width:32px;height:32px;background:#dc2626;color:#fff;border:1px solid #991b1b;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}[data-scada-theme] .clear-btn[data-v-f309895b]:hover{background:#b91c1c;border-color:#7f1d1d}[data-scada-theme] .switch[data-v-f309895b]{position:relative;display:inline-block;width:48px;height:24px}[data-scada-theme] .switch input[data-v-f309895b]{opacity:0;width:0;height:0}[data-scada-theme] .switch .slider[data-v-f309895b]{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#475569;transition:.3s;border-radius:24px}[data-scada-theme] .switch .slider[data-v-f309895b]:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]{background-color:#3b82f6}[data-scada-theme] .switch input:checked+.slider[data-v-f309895b]:before{transform:translate(24px)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar{width:8px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .panel-content[data-v-f309895b]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tab-pane[data-v-def84c5f]{animation:fadeIn-def84c5f .2s}@keyframes fadeIn-def84c5f{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-def84c5f]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-def84c5f]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item[data-v-def84c5f]{margin-bottom:12px}[data-scada-theme] .property-item-inline[data-v-def84c5f]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline[data-v-def84c5f]:has(.checkbox-wrapper){justify-content:flex-start}[data-scada-theme] .property-item-inline label[data-v-def84c5f]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-def84c5f],[data-scada-theme] .property-item-inline select[data-v-def84c5f]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:0 0 auto}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:focus,[data-scada-theme] .property-item-inline select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .color-input-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px}[data-scada-theme] .property-item-inline .color-input-wrapper input[type=color][data-v-def84c5f]{width:40px;height:28px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .property-item-inline .color-input-wrapper .color-value[data-v-def84c5f]{flex:1;min-width:0;font-size:11px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-def84c5f]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .property-item label[data-v-def84c5f]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item input[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item input[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .property-item input[data-v-def84c5f]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-row[data-v-def84c5f]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-def84c5f]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-def84c5f]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-def84c5f]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .checkbox-wrapper[data-v-def84c5f]{display:inline-flex;align-items:center;gap:6px}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-def84c5f]{width:16px;height:16px;cursor:pointer;accent-color:#3b82f6;pointer-events:auto!important;-webkit-appearance:auto!important;-moz-appearance:auto!important;appearance:auto!important;opacity:1!important;z-index:1!important;position:relative!important;flex-shrink:0}[data-scada-theme] .checkbox-label[data-v-def84c5f]{font-size:12px;color:#cbd5e1;white-space:nowrap}[data-scada-theme] select[data-v-def84c5f]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] select[data-v-def84c5f]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] select option[data-v-def84c5f]{background:#0f172a;color:#e2e8f0}[data-scada-theme] .property-hint[data-v-def84c5f]{display:block;font-size:11px;color:#64748b;margin-top:2px;font-weight:400}[data-scada-theme] .tab-pane[data-v-5b515f8a]{animation:fadeIn-5b515f8a .2s}@keyframes fadeIn-5b515f8a{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .property-section[data-v-5b515f8a]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-5b515f8a]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .property-item-inline[data-v-5b515f8a]{display:flex;align-items:center;gap:8px;margin-bottom:8px}[data-scada-theme] .property-item-inline label[data-v-5b515f8a]{flex-shrink:0;width:70px;font-size:11px;color:#cbd5e1;margin-bottom:0}[data-scada-theme] .property-item-inline input[data-v-5b515f8a],[data-scada-theme] .property-item-inline select[data-v-5b515f8a]{flex:1;min-width:0;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:focus,[data-scada-theme] .property-item-inline select[data-v-5b515f8a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item-inline input[data-v-5b515f8a]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item-inline .checkbox-wrapper[data-v-5b515f8a]{flex:1;display:flex;align-items:center;gap:6px;padding:0}[data-scada-theme] .checkbox-wrapper input[type=checkbox][data-v-5b515f8a]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6}[data-scada-theme] .checkbox-label[data-v-5b515f8a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .edge-properties-tab[data-v-e47f1784]{padding:0}[data-scada-theme] .property-section[data-v-e47f1784]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-e47f1784]:last-child{border-bottom:none;margin-bottom:0}[data-scada-theme] .section-title[data-v-e47f1784]{font-size:13px;font-weight:600;color:#e2e8f0;margin:0 0 12px;padding:0}[data-scada-theme] .property-item[data-v-e47f1784]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-e47f1784]:last-child{margin-bottom:0}[data-scada-theme] .property-label[data-v-e47f1784]{display:block;font-size:12px;color:#94a3b8;margin-bottom:6px;font-weight:500}[data-scada-theme] .color-input-wrapper[data-v-e47f1784]{display:flex;gap:8px;align-items:center}[data-scada-theme] .color-input[data-v-e47f1784]{width:40px;height:32px;border:1px solid #475569;border-radius:4px;cursor:pointer;background:#1e293b;padding:2px}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input[data-v-e47f1784]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-text[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;font-family:Consolas,monospace}[data-scada-theme] .color-text[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .number-input-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:8px}[data-scada-theme] .property-input[data-v-e47f1784]{flex:1;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px}[data-scada-theme] .property-input[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .input-unit[data-v-e47f1784]{font-size:12px;color:#64748b;min-width:24px}[data-scada-theme] .property-select[data-v-e47f1784]{width:100%;height:32px;background:#1e293b;border:1px solid #475569;border-radius:4px;padding:0 12px;color:#e2e8f0;font-size:12px;cursor:pointer}[data-scada-theme] .property-select[data-v-e47f1784]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .slider-wrapper[data-v-e47f1784]{display:flex;align-items:center;gap:12px}[data-scada-theme] .property-slider[data-v-e47f1784]{flex:1;height:4px;background:#334155;border-radius:2px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}[data-scada-theme] .property-slider[data-v-e47f1784]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:#3b82f6;border-radius:50%;cursor:pointer}[data-scada-theme] .property-slider[data-v-e47f1784]::-moz-range-thumb{width:14px;height:14px;background:#3b82f6;border-radius:50%;border:none;cursor:pointer}[data-scada-theme] .slider-value[data-v-e47f1784]{font-size:12px;color:#94a3b8;min-width:40px;text-align:right}[data-scada-theme] .delete-btn[data-v-e47f1784]{width:100%;height:36px;background:#dc2626;border:none;border-radius:4px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .delete-btn[data-v-e47f1784]:hover{background:#b91c1c}[data-scada-theme] .delete-btn[data-v-e47f1784]:active{transform:scale(.98)}[data-scada-theme] .event-card[data-v-af7c633a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-af7c633a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-af7c633a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-af7c633a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-af7c633a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-af7c633a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-af7c633a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-af7c633a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-af7c633a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-af7c633a]{animation:slideDown-af7c633a .2s ease-out}@keyframes slideDown-af7c633a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .event-field[data-v-af7c633a]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}[data-scada-theme] .event-field[data-v-af7c633a]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-af7c633a]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-af7c633a],[data-scada-theme] .event-field select[data-v-af7c633a],[data-scada-theme] .event-field textarea[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .event-field input[data-v-af7c633a]:focus,[data-scada-theme] .event-field select[data-v-af7c633a]:focus,[data-scada-theme] .event-field textarea[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-title[data-v-af7c633a]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-af7c633a]:first-child{margin-top:0}[data-scada-theme] .field-hint[data-v-af7c633a]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-config[data-v-af7c633a]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-af7c633a]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-af7c633a],[data-scada-theme] .condition-input[data-v-af7c633a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-af7c633a]:focus,[data-scada-theme] .condition-input[data-v-af7c633a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .config-section[data-v-af7c633a]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .btn-config[data-v-af7c633a]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-af7c633a]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .selected-workflow-info[data-v-af7c633a]{margin-top:12px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .info-row[data-v-af7c633a]{display:flex;align-items:center;gap:8px;margin-bottom:12px}[data-scada-theme] .info-label[data-v-af7c633a]{font-size:12px;color:#94a3b8}[data-scada-theme] .info-value[data-v-af7c633a]{font-size:13px;color:#10b981;font-weight:500}[data-scada-theme] .modal-overlay[data-v-7884b850]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-7884b850 .2s ease-out}@keyframes fadeIn-7884b850{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-7884b850]{width:800px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-7884b850 .3s ease-out}@keyframes slideUp-7884b850{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-7884b850]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-7884b850]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-7884b850]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .device-point-selector[data-v-7884b850]{display:grid;grid-template-columns:1fr 1.5fr;gap:12px;height:500px;padding:16px 24px;overflow:hidden}[data-scada-theme] .modal-footer[data-v-7884b850]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7884b850],[data-scada-theme] .btn-confirm[data-v-7884b850]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-7884b850]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-7884b850]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7884b850]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7884b850]:hover{background:#2563eb}[data-scada-theme] .btn-confirm[data-v-7884b850]:disabled{background:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .device-list-panel[data-v-7884b850],[data-scada-theme] .point-list-panel[data-v-7884b850]{display:flex;flex-direction:column;background:#1e293b;border:1px solid #334155;border-radius:6px;overflow:hidden}[data-scada-theme] .panel-header[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#334155;border-bottom:1px solid #475569}[data-scada-theme] .panel-header h4[data-v-7884b850]{margin:0;font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .device-count[data-v-7884b850],[data-scada-theme] .point-count[data-v-7884b850]{font-size:12px;color:#94a3b8;background:#1e293b;padding:2px 8px;border-radius:10px}[data-scada-theme] .search-box[data-v-7884b850]{padding:12px 16px;border-bottom:1px solid #334155}[data-scada-theme] .search-input[data-v-7884b850]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .search-input[data-v-7884b850]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .search-input[data-v-7884b850]::placeholder{color:#64748b}[data-scada-theme] .device-list[data-v-7884b850],[data-scada-theme] .point-list[data-v-7884b850]{flex:1;overflow-y:auto;padding:8px}[data-scada-theme] .device-item[data-v-7884b850]{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .device-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .device-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .device-item.offline[data-v-7884b850]{opacity:.6}[data-scada-theme] .device-info[data-v-7884b850]{flex:1}[data-scada-theme] .device-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .status-dot[data-v-7884b850]{width:8px;height:8px;border-radius:50%;background:#64748b}[data-scada-theme] .status-dot.online[data-v-7884b850]{background:#10b981;box-shadow:0 0 8px #10b98180}[data-scada-theme] .status-dot.offline[data-v-7884b850]{background:#64748b}[data-scada-theme] .status-dot.error[data-v-7884b850]{background:#ef4444;box-shadow:0 0 8px #ef444480}[data-scada-theme] .device-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .device-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .device-arrow[data-v-7884b850]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .device-item:hover .device-arrow[data-v-7884b850]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .point-item[data-v-7884b850]{padding:12px;margin-bottom:4px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s}[data-scada-theme] .point-item[data-v-7884b850]:hover{background:#1e293b;border-color:#3b82f6}[data-scada-theme] .point-item.active[data-v-7884b850]{background:#3b82f61a;border-color:#3b82f6}[data-scada-theme] .point-item.disabled[data-v-7884b850]{opacity:.5;cursor:not-allowed}[data-scada-theme] .point-info[data-v-7884b850]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .point-name[data-v-7884b850]{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#e2e8f0}[data-scada-theme] .access-mode[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:400}[data-scada-theme] .access-mode.read[data-v-7884b850]{background:#3b82f633;color:#60a5fa}[data-scada-theme] .access-mode.write[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .access-mode.readWrite[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .point-meta[data-v-7884b850]{display:flex;gap:12px;font-size:11px;color:#94a3b8}[data-scada-theme] .point-code[data-v-7884b850]{font-family:monospace}[data-scada-theme] .point-unit[data-v-7884b850]{color:#3b82f6}[data-scada-theme] .point-type[data-v-7884b850]{background:#334155;padding:2px 6px;border-radius:3px}[data-scada-theme] .point-value[data-v-7884b850]{font-size:12px;color:#94a3b8}[data-scada-theme] .point-value .value[data-v-7884b850]{color:#e2e8f0;font-weight:500;margin:0 4px}[data-scada-theme] .quality[data-v-7884b850]{font-size:10px;padding:2px 6px;border-radius:3px;margin-left:8px}[data-scada-theme] .quality.good[data-v-7884b850]{background:#10b98133;color:#34d399}[data-scada-theme] .quality.bad[data-v-7884b850]{background:#ef444433;color:#f87171}[data-scada-theme] .quality.uncertain[data-v-7884b850]{background:#f59e0b33;color:#fbbf24}[data-scada-theme] .empty-hint[data-v-7884b850]{text-align:center;padding:40px 20px;color:#64748b;font-size:13px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar{width:6px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-track,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .device-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover,[data-scada-theme] .point-list[data-v-7884b850]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .modal-overlay[data-v-ef9e0ee1]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn-ef9e0ee1 .2s ease-out}@keyframes fadeIn-ef9e0ee1{0%{opacity:0}to{opacity:1}}[data-scada-theme] .modal-container[data-v-ef9e0ee1]{width:600px;max-width:90vw;max-height:85vh;background:#0f172a;border-radius:8px;box-shadow:0 20px 60px #00000080;display:flex;flex-direction:column;animation:slideUp-ef9e0ee1 .3s ease-out}@keyframes slideUp-ef9e0ee1{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .modal-header[data-v-ef9e0ee1]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .modal-header h3[data-v-ef9e0ee1]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-ef9e0ee1]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:20px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-close[data-v-ef9e0ee1]:hover{background:#1e293b;color:#e2e8f0}[data-scada-theme] .modal-footer[data-v-ef9e0ee1]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1],[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{padding:8px 24px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]{background:#1e293b;color:#e2e8f0}[data-scada-theme] .btn-cancel[data-v-ef9e0ee1]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-ef9e0ee1]:hover{background:#2563eb}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]{max-height:60vh;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-item[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .config-item label[data-v-ef9e0ee1]{font-size:12px;color:#cbd5e1;font-weight:500}[data-scada-theme] .required[data-v-ef9e0ee1]{color:#ef4444;margin-left:2px}[data-scada-theme] .field-hint[data-v-ef9e0ee1]{font-size:11px;color:#64748b;margin-top:4px;line-height:1.4}[data-scada-theme] .field-hint.error[data-v-ef9e0ee1]{color:#ef4444}[data-scada-theme] .config-item select[data-v-ef9e0ee1],[data-scada-theme] .config-item input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .config-item select[data-v-ef9e0ee1]:focus,[data-scada-theme] .config-item input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .unit-config[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .checkbox-label[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;font-size:13px;color:#cbd5e1;cursor:pointer}[data-scada-theme] .checkbox-label input[type=checkbox][data-v-ef9e0ee1]{width:auto;cursor:pointer}[data-scada-theme] .custom-unit[data-v-ef9e0ee1]{margin-left:24px}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .custom-unit input[data-v-ef9e0ee1]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .mapping-details[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:12px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .range-rules[data-v-ef9e0ee1],[data-scada-theme] .enum-mappings[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .range-rule[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1],[data-scada-theme] .enum-mapping input[data-v-ef9e0ee1]{flex:1;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:first-child,[data-scada-theme] .range-rule input[data-v-ef9e0ee1]:nth-child(3){max-width:80px}[data-scada-theme] .range-separator[data-v-ef9e0ee1],[data-scada-theme] .range-arrow[data-v-ef9e0ee1],[data-scada-theme] .enum-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:14px;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}[data-scada-theme] .btn-remove-rule[data-v-ef9e0ee1]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]{padding:8px 16px;background:#334155;border:1px dashed #475569;border-radius:4px;color:#94a3b8;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add-rule[data-v-ef9e0ee1]:hover{background:#3b82f6;border-color:#3b82f6;color:#fff;border-style:solid}[data-scada-theme] .mapping-preview[data-v-ef9e0ee1]{padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .mapping-preview label[data-v-ef9e0ee1]{display:block;font-size:12px;color:#94a3b8;margin-bottom:8px}[data-scada-theme] .preview-content[data-v-ef9e0ee1]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .preview-item[data-v-ef9e0ee1]{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#1e293b;border-radius:4px;font-size:12px}[data-scada-theme] .preview-input[data-v-ef9e0ee1]{color:#94a3b8;font-family:monospace}[data-scada-theme] .preview-arrow[data-v-ef9e0ee1]{color:#64748b;font-size:12px}[data-scada-theme] .preview-output[data-v-ef9e0ee1]{color:#3b82f6;font-weight:500}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar{width:6px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-track{background:#0f172a}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}[data-scada-theme] .mapping-configurator[data-v-ef9e0ee1]::-webkit-scrollbar-thumb:hover{background:#475569}[data-scada-theme] .event-card[data-v-3731c19a]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px;transition:all .2s}[data-scada-theme] .event-card[data-v-3731c19a]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-3731c19a]:hover{background:#3b82f60d;margin:-4px -8px 8px;padding:4px 8px 12px;border-radius:4px}[data-scada-theme] .header-left[data-v-3731c19a]{display:flex;align-items:center;gap:8px}[data-scada-theme] .collapse-icon[data-v-3731c19a]{font-size:10px;color:#64748b;transition:transform .2s;display:inline-block;width:12px}[data-scada-theme] .event-title[data-v-3731c19a]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-remove[data-v-3731c19a]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-3731c19a]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-card-body[data-v-3731c19a]{animation:slideDown-3731c19a .2s ease-out}@keyframes slideDown-3731c19a{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .property-item[data-v-3731c19a]{margin-bottom:12px}[data-scada-theme] .property-item[data-v-3731c19a]:last-child{margin-bottom:0}[data-scada-theme] .property-item label[data-v-3731c19a]{display:block;font-size:12px;color:#cbd5e1;margin-bottom:6px}[data-scada-theme] .property-item select[data-v-3731c19a]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .property-item select[data-v-3731c19a]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .point-selector-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .selected-point[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .point-main[data-v-3731c19a]{display:flex;align-items:center;gap:8px;font-size:13px}[data-scada-theme] .device-name[data-v-3731c19a]{color:#94a3b8;font-size:12px}[data-scada-theme] .point-name[data-v-3731c19a]{color:#e2e8f0;font-weight:500}[data-scada-theme] .point-details[data-v-3731c19a]{display:flex;gap:8px;font-size:11px;color:#64748b}[data-scada-theme] .point-code[data-v-3731c19a]{font-family:monospace}[data-scada-theme] .point-unit[data-v-3731c19a]{color:#3b82f6}[data-scada-theme] .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .selector-arrow[data-v-3731c19a]{font-size:18px;color:#64748b;transition:all .2s}[data-scada-theme] .point-selector-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .mapping-trigger[data-v-3731c19a]{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:all .2s;min-height:42px}[data-scada-theme] .mapping-trigger[data-v-3731c19a]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .mapping-summary[data-v-3731c19a]{flex:1;display:flex;flex-direction:column;gap:4px}[data-scada-theme] .mapping-type-label[data-v-3731c19a]{font-size:13px;color:#e2e8f0;font-weight:500}[data-scada-theme] .mapping-detail[data-v-3731c19a]{font-size:11px;color:#64748b}[data-scada-theme] .mapping-trigger .placeholder[data-v-3731c19a]{color:#64748b;font-size:13px}[data-scada-theme] .mapping-trigger:hover .selector-arrow[data-v-3731c19a]{color:#3b82f6;transform:translate(2px)}[data-scada-theme] .dialog-overlay[data-v-90af9944]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-90af9944 .2s}@keyframes fadeIn-90af9944{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-content[data-v-90af9944]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-90af9944 .3s}@keyframes slideUp-90af9944{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-90af9944]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-90af9944]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-90af9944]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-90af9944]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-90af9944]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .btn-add-group[data-v-90af9944]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-90af9944]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-90af9944]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-90af9944]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-90af9944]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-90af9944]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-90af9944],[data-scada-theme] .group-field select[data-v-90af9944]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-90af9944]:focus,[data-scada-theme] .group-field select[data-v-90af9944]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-90af9944]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-90af9944]{width:60px;height:36px}[data-scada-theme] .color-value[data-v-90af9944]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .btn-delete-group[data-v-90af9944]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-90af9944]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .empty-hint[data-v-90af9944]{font-size:12px;color:#64748b;text-align:center;padding:16px;background:#0f172a;border-radius:4px;margin-bottom:12px}[data-scada-theme] .dialog-footer[data-v-90af9944]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-90af9944],[data-scada-theme] .btn-confirm[data-v-90af9944]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-90af9944]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-90af9944]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-90af9944]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-90af9944]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-add3567b]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-add3567b .2s}@keyframes fadeIn-add3567b{0%{opacity:0}to{opacity:1}}[data-scada-theme] .dialog-large[data-v-add3567b]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-content[data-v-add3567b]{background:#1e293b;border-radius:8px;width:90%;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-add3567b .3s}@keyframes slideUp-add3567b{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .dialog-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-add3567b]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-add3567b]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-add3567b]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body-split[data-v-add3567b]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden;padding:24px}[data-scada-theme] .code-editor-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-add3567b]{flex:1;resize:none;height:100%!important}[data-scada-theme] .code-textarea[data-v-add3567b]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-add3567b]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .section-header[data-v-add3567b]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-add3567b]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-add3567b]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-add3567b]{color:#10b981}[data-scada-theme] .status-error[data-v-add3567b]{color:#ef4444}[data-scada-theme] .btn-test[data-v-add3567b]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-add3567b]:hover{background:#059669;border-color:#059669}[data-scada-theme] .code-preview-section[data-v-add3567b]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-add3567b]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-add3567b]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-add3567b]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-add3567b]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-add3567b]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-add3567b]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-add3567b]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-add3567b]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-add3567b]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-add3567b]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-add3567b]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-add3567b]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-add3567b]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-add3567b],[data-scada-theme] .btn-confirm[data-v-add3567b]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-add3567b]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-add3567b]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-add3567b]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-add3567b]:hover{background:#2563eb;border-color:#2563eb}[data-scada-theme] .dialog-overlay[data-v-c9a88e33]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}[data-scada-theme] .dialog-container[data-v-c9a88e33]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;overflow:hidden}[data-scada-theme] .dialog-header[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-c9a88e33]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:none;border-radius:4px;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-close[data-v-c9a88e33]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-c9a88e33]{flex:1;overflow-y:auto;padding:20px 24px}[data-scada-theme] .empty-state[data-v-c9a88e33]{text-align:center;padding:40px 20px;color:#64748b}[data-scada-theme] .empty-state p[data-v-c9a88e33]{margin:8px 0;font-size:14px}[data-scada-theme] .empty-state .hint[data-v-c9a88e33]{font-size:12px;color:#475569}[data-scada-theme] .workflow-list[data-v-c9a88e33]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .workflow-item[data-v-c9a88e33]{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .workflow-item[data-v-c9a88e33]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .workflow-item.selected[data-v-c9a88e33]{border-color:#10b981;background:#10b9811a}[data-scada-theme] .workflow-info[data-v-c9a88e33]{flex:1}[data-scada-theme] .workflow-name[data-v-c9a88e33]{font-size:15px;font-weight:500;color:#e2e8f0;margin-bottom:6px}[data-scada-theme] .workflow-meta[data-v-c9a88e33]{display:flex;gap:12px;font-size:12px;color:#64748b}[data-scada-theme] .workflow-id[data-v-c9a88e33]{color:#94a3b8}[data-scada-theme] .workflow-date[data-v-c9a88e33]{color:#64748b}[data-scada-theme] .workflow-actions[data-v-c9a88e33]{display:flex;gap:8px}[data-scada-theme] .btn-icon[data-v-c9a88e33]{width:32px;height:32px;background:transparent;border:1px solid #334155;border-radius:4px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s}[data-scada-theme] .btn-icon[data-v-c9a88e33]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .dialog-footer[data-v-c9a88e33]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-c9a88e33],[data-scada-theme] .btn-primary[data-v-c9a88e33]{padding:8px 16px;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-c9a88e33]{background:transparent;border:1px solid #475569;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-c9a88e33]:hover{background:#334155;border-color:#64748b}[data-scada-theme] .btn-primary[data-v-c9a88e33]{background:#10b981;border:1px solid #10b981;color:#fff}[data-scada-theme] .btn-primary[data-v-c9a88e33]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-primary[data-v-c9a88e33]:disabled{background:#334155;border-color:#334155;color:#64748b;cursor:not-allowed}[data-scada-theme] .property-panel[data-v-7d3281c0]{width:300px;height:100%;background:#1e293b;border-left:1px solid #0f3460;overflow-y:auto}[data-scada-theme] .empty-state[data-v-7d3281c0]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:#64748b;text-align:center;padding:24px}[data-scada-theme] .empty-state p[data-v-7d3281c0]{font-size:16px;margin-bottom:8px}[data-scada-theme] .empty-state .hint[data-v-7d3281c0]{font-size:12px;color:#475569}[data-scada-theme] .properties[data-v-7d3281c0]{padding:12px}[data-scada-theme] .panel-title[data-v-7d3281c0]{font-size:15px;font-weight:600;color:#e2e8f0;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid #334155}[data-scada-theme] .property-section[data-v-7d3281c0]{margin-bottom:16px}[data-scada-theme] .property-section h4[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:600}[data-scada-theme] .hint-text[data-v-7d3281c0]{font-size:12px;color:#64748b;margin-bottom:12px;line-height:1.5}[data-scada-theme] .empty-hint[data-v-7d3281c0]{display:flex;justify-content:center;align-items:center;padding:24px 16px;color:#64748b;font-size:12px;text-align:center;background:#0f172a;border-radius:4px;margin-bottom:10px}[data-scada-theme] .property-item[data-v-7d3281c0]{margin-bottom:10px}[data-scada-theme] .property-item label[data-v-7d3281c0]{display:block;font-size:11px;color:#cbd5e1;margin-bottom:4px}[data-scada-theme] .property-item input[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item input[data-v-7d3281c0]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-item select[data-v-7d3281c0],[data-scada-theme] .property-item textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .property-item select[data-v-7d3281c0]:focus,[data-scada-theme] .property-item textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .property-item textarea[data-v-7d3281c0]{resize:vertical;min-height:50px;font-family:Consolas,Monaco,monospace}[data-scada-theme] .property-row[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:8px}[data-scada-theme] .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]{width:50px;height:36px;padding:2px;border:1px solid #334155;border-radius:4px;background:#0f172a;cursor:pointer;transition:all .2s}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch-wrapper{padding:0}[data-scada-theme] .color-input-wrapper input[type=color][data-v-7d3281c0]::-webkit-color-swatch{border:none;border-radius:2px}[data-scada-theme] .color-value[data-v-7d3281c0]{flex:1;font-size:12px;color:#94a3b8;font-family:monospace}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .property-panel[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .tabs[data-v-7d3281c0]{display:flex;gap:3px;margin-bottom:12px;padding:3px;background:#0f172a;border-radius:5px}[data-scada-theme] .tab-btn[data-v-7d3281c0]{flex:1;padding:6px 10px;background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:12px;font-weight:500;border-radius:4px;transition:all .2s}[data-scada-theme] .tab-btn[data-v-7d3281c0]:hover{color:#cbd5e1;background:#1e293b}[data-scada-theme] .tab-btn.active[data-v-7d3281c0]{color:#fff;background:#3b82f6}[data-scada-theme] .tab-content[data-v-7d3281c0]{min-height:0}[data-scada-theme] .tab-pane[data-v-7d3281c0]{animation:fadeIn-7d3281c0 .2s}@keyframes fadeIn-7d3281c0{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown-7d3281c0{0%{opacity:0;max-height:0;overflow:hidden}to{opacity:1;max-height:2000px}}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}[data-scada-theme] .section-header h4[data-v-7d3281c0]{margin:0}[data-scada-theme] .btn-add[data-v-7d3281c0]{padding:5px 10px;background:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-add[data-v-7d3281c0]:hover{background:#2563eb}[data-scada-theme] .event-list[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .event-card[data-v-7d3281c0]{background:#0f172a;border:1px solid #334155;border-radius:5px;padding:10px;transition:all .2s}[data-scada-theme] .event-card[data-v-7d3281c0]:hover{border-color:#3b82f6}[data-scada-theme] .event-card-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #1e293b;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s}[data-scada-theme] .event-card-header[data-v-7d3281c0]:hover{background:#3b82f60d;margin:-4px -6px 6px;padding:4px 6px 10px;border-radius:4px}[data-scada-theme] .header-left[data-v-7d3281c0]{display:flex;align-items:center;gap:6px}[data-scada-theme] .collapse-icon[data-v-7d3281c0]{font-size:9px;color:#64748b;transition:transform .2s;display:inline-block;width:10px}[data-scada-theme] .event-type-label[data-v-7d3281c0]{font-size:12px;font-weight:500;color:#e2e8f0}[data-scada-theme] .event-action-badge[data-v-7d3281c0]{font-size:10px;padding:2px 6px;background:#3b82f6;color:#fff;border-radius:8px}[data-scada-theme] .event-card-body[data-v-7d3281c0]{animation:slideDown-7d3281c0 .2s ease-out}[data-scada-theme] .event-index[data-v-7d3281c0]{font-size:12px;font-weight:600;color:#3b82f6}[data-scada-theme] .btn-remove[data-v-7d3281c0]{width:24px;height:24px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .event-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}[data-scada-theme] .event-field[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .event-field label[data-v-7d3281c0]{font-size:11px;color:#cbd5e1;font-weight:500}[data-scada-theme] .event-field input[data-v-7d3281c0],[data-scada-theme] .event-field select[data-v-7d3281c0],[data-scada-theme] .event-field textarea[data-v-7d3281c0]{width:100%;padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px;transition:all .2s}[data-scada-theme] .event-field input[data-v-7d3281c0]:focus,[data-scada-theme] .event-field select[data-v-7d3281c0]:focus,[data-scada-theme] .event-field textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a}[data-scada-theme] .field-hint[data-v-7d3281c0]{font-size:11px;color:#64748b;margin-top:2px}[data-scada-theme] .condition-group[data-v-7d3281c0]{background:#1e293b;border-radius:4px;padding:12px;margin-bottom:12px}[data-scada-theme] .config-section[data-v-7d3281c0]{margin-top:16px;padding:12px;background:#0f172a;border-radius:4px}[data-scada-theme] .section-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-top:12px;margin-bottom:8px;font-weight:500}[data-scada-theme] .section-title[data-v-7d3281c0]:first-child{margin-top:0}[data-scada-theme] .btn-config[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;cursor:pointer;font-size:13px;transition:all .2s}[data-scada-theme] .btn-config[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6}[data-scada-theme] .condition-config[data-v-7d3281c0]{display:flex;flex-direction:column;gap:8px;margin-top:8px;padding:12px;background:#1e293b;border-radius:4px}[data-scada-theme] .condition-label[data-v-7d3281c0]{font-size:12px;color:#cbd5e1}[data-scada-theme] .condition-select[data-v-7d3281c0],[data-scada-theme] .condition-input[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .condition-select[data-v-7d3281c0]:focus,[data-scada-theme] .condition-input[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .event-title[data-v-7d3281c0]{font-size:14px;font-weight:600;color:#e2e8f0}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:pointer;transition:all .2s}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .trigger-rule-select[data-v-7d3281c0]:hover{border-color:#475569}[data-scada-theme] .code-textarea[data-v-7d3281c0]{width:100%;padding:12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;resize:vertical;min-height:120px;line-height:1.6;transition:all .2s}[data-scada-theme] .code-textarea[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .dialog-overlay[data-v-7d3281c0]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn-7d3281c0 .2s}[data-scada-theme] .dialog-content[data-v-7d3281c0]{background:#1e293b;border-radius:8px;width:90%;max-width:800px;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0000004d;animation:slideUp-7d3281c0 .3s}[data-scada-theme] .dialog-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-7d3281c0]{font-size:18px;font-weight:600;color:#e2e8f0;margin:0}[data-scada-theme] .btn-close[data-v-7d3281c0]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-7d3281c0]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-7d3281c0]{padding:24px;max-height:60vh;overflow-y:auto}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar{width:8px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}[data-scada-theme] .dialog-body[data-v-7d3281c0]::-webkit-scrollbar-corner{background:#0f172a}[data-scada-theme] .btn-add-group[data-v-7d3281c0]{width:100%;padding:10px 16px;background:#1e293b;border:1px dashed #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:14px;transition:all .2s;margin-bottom:16px}[data-scada-theme] .btn-add-group[data-v-7d3281c0]:hover{background:#334155;border-color:#3b82f6;color:#e2e8f0}[data-scada-theme] .attribute-group[data-v-7d3281c0]{margin-bottom:12px;padding:16px;background:#0f172a;border-radius:4px;border:1px solid #334155}[data-scada-theme] .group-row[data-v-7d3281c0]{display:grid;grid-template-columns:1.5fr 2fr auto;gap:12px;align-items:end}[data-scada-theme] .group-field[data-v-7d3281c0]{display:flex;flex-direction:column;gap:6px}[data-scada-theme] .group-field label[data-v-7d3281c0]{font-size:12px;color:#94a3b8;font-weight:500}[data-scada-theme] .group-field input[data-v-7d3281c0],[data-scada-theme] .group-field select[data-v-7d3281c0]{width:100%;padding:8px 12px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;transition:all .2s}[data-scada-theme] .group-field input[data-v-7d3281c0]:focus,[data-scada-theme] .group-field select[data-v-7d3281c0]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}[data-scada-theme] .group-field-value .color-input-wrapper[data-v-7d3281c0]{display:flex;align-items:center;gap:8px}[data-scada-theme] .group-field-value .color-input-wrapper input[type=color][data-v-7d3281c0]{width:60px;height:36px}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:18px;transition:all .2s}[data-scada-theme] .btn-delete-group[data-v-7d3281c0]:hover{background:#ef4444;border-color:#ef4444;color:#fff}[data-scada-theme] .dialog-large[data-v-7d3281c0]{max-width:1200px;height:80vh;display:flex;flex-direction:column}[data-scada-theme] .dialog-body-split[data-v-7d3281c0]{display:grid;grid-template-columns:1fr 1fr;gap:20px;flex:1;overflow:hidden}[data-scada-theme] .code-editor-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .code-textarea-full[data-v-7d3281c0]{flex:1;resize:none;height:100%!important}[data-scada-theme] .section-header[data-v-7d3281c0]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-7d3281c0]{font-size:14px;color:#cbd5e1;font-weight:600}[data-scada-theme] .preview-status[data-v-7d3281c0]{font-size:13px;font-weight:500}[data-scada-theme] .status-success[data-v-7d3281c0]{color:#10b981}[data-scada-theme] .status-error[data-v-7d3281c0]{color:#ef4444}[data-scada-theme] .btn-test[data-v-7d3281c0]{padding:6px 16px;background:#10b981;border:1px solid #10b981;border-radius:4px;color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s}[data-scada-theme] .btn-test[data-v-7d3281c0]:hover{background:#059669;border-color:#059669}[data-scada-theme] .btn-clear[data-v-7d3281c0]{padding:4px 12px;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;font-size:12px;transition:all .2s}[data-scada-theme] .btn-clear[data-v-7d3281c0]:hover{background:#334155;color:#cbd5e1}[data-scada-theme] .code-preview-section[data-v-7d3281c0]{display:flex;flex-direction:column;gap:12px;height:100%}[data-scada-theme] .preview-canvas[data-v-7d3281c0]{flex:1;background:#0f172a;border:1px solid #334155;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}[data-scada-theme] .node-preview[data-v-7d3281c0]{flex:1;position:relative;min-height:300px}[data-scada-theme] .console-output[data-v-7d3281c0]{max-height:150px;background:#020617;border-top:1px solid #334155;padding:12px;overflow-y:auto}[data-scada-theme] .console-title[data-v-7d3281c0]{font-size:12px;color:#94a3b8;margin-bottom:8px;font-weight:500}[data-scada-theme] .console-logs[data-v-7d3281c0]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .preview-empty[data-v-7d3281c0]{display:flex;align-items:center;justify-content:center;height:100%;color:#64748b;font-size:14px;text-align:center;padding:20px}[data-scada-theme] .preview-error-box[data-v-7d3281c0]{padding:20px;height:100%;overflow-y:auto}[data-scada-theme] .error-title[data-v-7d3281c0]{font-size:13px;color:#ef4444;margin-bottom:12px;font-weight:500}[data-scada-theme] .preview-node-container[data-v-7d3281c0]{height:100%;display:flex;flex-direction:column}[data-scada-theme] .log-item[data-v-7d3281c0]{font-family:Consolas,Monaco,monospace;font-size:12px;color:#e2e8f0;margin-bottom:4px;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .log-item[data-v-7d3281c0]:last-child{margin-bottom:0}[data-scada-theme] .error-message[data-v-7d3281c0]{background:#450a0a;border:1px solid #7f1d1d;border-radius:4px;padding:12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#fca5a5;white-space:pre-wrap;word-break:break-all}[data-scada-theme] .dialog-footer[data-v-7d3281c0]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #334155}[data-scada-theme] .btn-cancel[data-v-7d3281c0],[data-scada-theme] .btn-confirm[data-v-7d3281c0]{padding:8px 20px;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-cancel[data-v-7d3281c0]{background:transparent;border:1px solid #475569;color:#cbd5e1}[data-scada-theme] .btn-cancel[data-v-7d3281c0]:hover{background:#334155}[data-scada-theme] .btn-confirm[data-v-7d3281c0]{background:#3b82f6;border:1px solid #3b82f6;color:#fff}[data-scada-theme] .btn-confirm[data-v-7d3281c0]:hover{background:#2563eb;border-color:#2563eb}@keyframes slideUp-7d3281c0{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-scada-theme] .scada-footer[data-v-52b6d4b1]{height:32px;background:#1e293b;border-top:1px solid #0f3460;display:flex;align-items:center;padding:0 32px;flex-shrink:0}[data-scada-theme] .footer-content[data-v-52b6d4b1]{width:100%;display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .footer-left[data-v-52b6d4b1],[data-scada-theme] .footer-right[data-v-52b6d4b1]{display:flex;align-items:center;gap:12px}[data-scada-theme] .copyright[data-v-52b6d4b1],[data-scada-theme] .license[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .divider[data-v-52b6d4b1]{color:#475569!important;font-size:12px}[data-scada-theme] .contact-item[data-v-52b6d4b1]{display:flex;align-items:center;gap:4px}[data-scada-theme] .contact-item .icon[data-v-52b6d4b1]{font-size:12px}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .contact-item .text[data-v-52b6d4b1]:hover{color:#3b82f6!important;cursor:pointer}[data-scada-theme] .authorized-icon[data-v-52b6d4b1]{font-size:14px;margin-right:6px}[data-scada-theme] .authorized-text[data-v-52b6d4b1]{font-size:12px;color:#10b981!important;font-weight:500}[data-scada-theme] .expiry-text[data-v-52b6d4b1]{font-size:12px;color:#94a3b8!important}[data-scada-theme] .element-selector-overlay[data-v-882704dd]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}[data-scada-theme] .element-selector-dialog[data-v-882704dd]{width:600px;max-height:80vh;background:#1e293b;border-radius:8px;display:flex;flex-direction:column;box-shadow:0 4px 24px #0000004d}[data-scada-theme] .dialog-header[data-v-882704dd]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #334155}[data-scada-theme] .dialog-header h3[data-v-882704dd]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}[data-scada-theme] .btn-close[data-v-882704dd]{width:28px;height:28px;background:transparent;border:none;color:#94a3b8;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-882704dd]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .dialog-body[data-v-882704dd]{flex:1;padding:20px;display:flex;flex-direction:column;gap:16px;overflow:hidden}[data-scada-theme] .search-box input[data-v-882704dd]{width:100%;padding:10px 14px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#e2e8f0;font-size:14px}[data-scada-theme] .search-box input[data-v-882704dd]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .element-list[data-v-882704dd]{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}[data-scada-theme] .element-item[data-v-882704dd]{display:flex;align-items:center;gap:12px;padding:12px;background:#0f172a;border:2px solid #334155;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .element-item[data-v-882704dd]:hover{border-color:#3b82f6;background:#1e293b}[data-scada-theme] .element-item.active[data-v-882704dd]{border-color:#3b82f6;background:#3b82f61a}[data-scada-theme] .element-icon[data-v-882704dd]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#3b82f61a;border-radius:6px;font-size:20px;flex-shrink:0}[data-scada-theme] .element-info[data-v-882704dd]{flex:1}[data-scada-theme] .element-name[data-v-882704dd]{font-size:14px;font-weight:500;color:#e2e8f0;margin-bottom:4px}[data-scada-theme] .element-type[data-v-882704dd]{font-size:12px;color:#94a3b8}[data-scada-theme] .element-check[data-v-882704dd]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#3b82f6;border-radius:50%;color:#fff;font-size:14px;font-weight:700}[data-scada-theme] .empty-state[data-v-882704dd]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#64748b;padding:40px 20px}[data-scada-theme] .empty-state p[data-v-882704dd]{margin:0;font-size:14px}[data-scada-theme] .empty-hint[data-v-882704dd]{margin-top:8px;font-size:12px;color:#475569}[data-scada-theme] .dialog-footer[data-v-882704dd]{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #334155}[data-scada-theme] .btn-secondary[data-v-882704dd],[data-scada-theme] .btn-primary[data-v-882704dd]{padding:8px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-882704dd]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-882704dd]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-882704dd]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-882704dd]:hover{background:#2563eb}[data-scada-theme] .btn-primary[data-v-882704dd]:disabled{background:#475569;cursor:not-allowed;opacity:.5}[data-scada-theme] .node-config[data-v-fa65eb56]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-fa65eb56]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-fa65eb56]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-fa65eb56]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-fa65eb56]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-fa65eb56]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-fa65eb56]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-fa65eb56]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-fa65eb56],[data-scada-theme] .config-group textarea[data-v-fa65eb56],[data-scada-theme] .config-group select[data-v-fa65eb56]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-fa65eb56]:focus,[data-scada-theme] .config-group textarea[data-v-fa65eb56]:focus,[data-scada-theme] .config-group select[data-v-fa65eb56]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-42e029d4]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-42e029d4]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-42e029d4]{font-size:13px;color:#94a3b8}[data-scada-theme] .element-selector[data-v-42e029d4]{display:flex;gap:8px}[data-scada-theme] .element-selector input[data-v-42e029d4]{flex:1;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;cursor:not-allowed}[data-scada-theme] .btn-select[data-v-42e029d4]{padding:8px 16px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}[data-scada-theme] .btn-select[data-v-42e029d4]:hover{background:#2563eb}[data-scada-theme] .element-info[data-v-42e029d4]{font-size:12px;color:#10b981;margin-top:-4px}[data-scada-theme] .config-group input[data-v-42e029d4],[data-scada-theme] .config-group textarea[data-v-42e029d4],[data-scada-theme] .config-group select[data-v-42e029d4]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-42e029d4]:focus,[data-scada-theme] .config-group textarea[data-v-42e029d4]:focus,[data-scada-theme] .config-group select[data-v-42e029d4]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-15975920]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-15975920]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-15975920],[data-scada-theme] .config-group textarea[data-v-15975920],[data-scada-theme] .config-group select[data-v-15975920]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-15975920]:focus,[data-scada-theme] .config-group textarea[data-v-15975920]:focus,[data-scada-theme] .config-group select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .branches-section[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .section-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center}[data-scada-theme] .section-header label[data-v-15975920]{font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .btn-add[data-v-15975920]{padding:4px 12px;background:#3b82f6;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-add[data-v-15975920]:hover{background:#2563eb}[data-scada-theme] .branch-list[data-v-15975920]{display:flex;flex-direction:column;gap:12px}[data-scada-theme] .branch-item[data-v-15975920]{background:#0f172a;border:1px solid #334155;border-radius:6px;padding:12px}[data-scada-theme] .branch-header[data-v-15975920]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}[data-scada-theme] .branch-number[data-v-15975920]{font-size:12px;color:#3b82f6;font-weight:500}[data-scada-theme] .btn-remove[data-v-15975920]{width:20px;height:20px;background:#ef4444;color:#fff;border:none;border-radius:50%;font-size:16px;line-height:1;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}[data-scada-theme] .btn-remove[data-v-15975920]:hover{background:#dc2626}[data-scada-theme] .branch-config[data-v-15975920]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-row[data-v-15975920]{display:flex;flex-direction:column;gap:4px}[data-scada-theme] .config-row label[data-v-15975920]{font-size:12px;color:#94a3b8}[data-scada-theme] .config-row input[data-v-15975920],[data-scada-theme] .config-row select[data-v-15975920]{padding:6px 10px;background:#1e293b;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:12px}[data-scada-theme] .config-row input[data-v-15975920]:focus,[data-scada-theme] .config-row select[data-v-15975920]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .default-branch-label[data-v-15975920]{font-size:12px;color:#94a3b8;text-align:center;padding:8px;background:#1e293b;border-radius:4px}[data-scada-theme] .node-config[data-v-4c312eea]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-4c312eea]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-4c312eea]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-4c312eea],[data-scada-theme] .config-group textarea[data-v-4c312eea],[data-scada-theme] .config-group select[data-v-4c312eea]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-4c312eea]:focus,[data-scada-theme] .config-group textarea[data-v-4c312eea]:focus,[data-scada-theme] .config-group select[data-v-4c312eea]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .config-group textarea[data-v-4c312eea]{resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .node-config[data-v-f7115383]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-f7115383]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-f7115383]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group textarea[data-v-f7115383]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px;resize:vertical;font-family:Consolas,Monaco,monospace}[data-scada-theme] .config-group textarea[data-v-f7115383]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .code-hint[data-v-f7115383]{padding:12px;background:#3b82f61a;border-left:3px solid #3b82f6;border-radius:4px}[data-scada-theme] .code-hint p[data-v-f7115383]{margin:0 0 8px;font-size:13px;color:#94a3b8;font-weight:500}[data-scada-theme] .code-hint ul[data-v-f7115383]{margin:0;padding-left:20px}[data-scada-theme] .code-hint li[data-v-f7115383]{font-size:12px;color:#64748b;margin-bottom:4px}[data-scada-theme] .node-config[data-v-323381bc]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-323381bc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-323381bc]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-323381bc],[data-scada-theme] .config-group select[data-v-323381bc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-323381bc]:focus,[data-scada-theme] .config-group select[data-v-323381bc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .node-config[data-v-d102fb63]{display:flex;flex-direction:column;gap:16px}[data-scada-theme] .config-group[data-v-d102fb63]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .config-group label[data-v-d102fb63]{font-size:13px;color:#94a3b8}[data-scada-theme] .config-group input[data-v-d102fb63],[data-scada-theme] .config-group select[data-v-d102fb63]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .config-group input[data-v-d102fb63]:focus,[data-scada-theme] .config-group select[data-v-d102fb63]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .timer-hint[data-v-d102fb63]{padding:12px;background:#faad141a;border-left:3px solid #faad14;border-radius:4px}[data-scada-theme] .timer-hint p[data-v-d102fb63]{margin:0;font-size:12px;color:#94a3b8}[data-scada-theme] .timer-hint.warning[data-v-d102fb63]{background:#ef44441a;border-left-color:#ef4444}[data-scada-theme] .property-panel[data-v-8304acbc]{width:300px;background:#1e293b;border-left:1px solid #334155;display:flex;flex-direction:column}[data-scada-theme] .property-panel h3[data-v-8304acbc]{margin:0;padding:16px;font-size:14px;font-weight:600;color:#e2e8f0;border-bottom:1px solid #334155}[data-scada-theme] .property-content[data-v-8304acbc]{padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto}[data-scada-theme] .property-group[data-v-8304acbc]{display:flex;flex-direction:column;gap:8px}[data-scada-theme] .property-group label[data-v-8304acbc]{font-size:13px;color:#94a3b8}[data-scada-theme] .property-group input[data-v-8304acbc],[data-scada-theme] .property-group textarea[data-v-8304acbc],[data-scada-theme] .property-group select[data-v-8304acbc]{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:4px;color:#e2e8f0;font-size:13px}[data-scada-theme] .property-group input[data-v-8304acbc]:focus,[data-scada-theme] .property-group textarea[data-v-8304acbc]:focus,[data-scada-theme] .property-group select[data-v-8304acbc]:focus{outline:none;border-color:#3b82f6}[data-scada-theme] .property-group input[data-v-8304acbc]:disabled{opacity:.5;cursor:not-allowed}[data-scada-theme] .property-empty[data-v-8304acbc]{flex:1;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:13px}[data-scada-theme] .divider[data-v-8304acbc]{height:1px;background:#334155;margin:8px 0}[data-scada-theme] .toolbar[data-v-b3e0a4fc]{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#1e293b;border-bottom:1px solid #334155}[data-scada-theme] .toolbar-left[data-v-b3e0a4fc]{display:flex;align-items:center;gap:24px}[data-scada-theme] .toolbar-left h2[data-v-b3e0a4fc]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}[data-scada-theme] .toolbar-right[data-v-b3e0a4fc]{display:flex;gap:12px}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc],[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]{background:#334155;color:#e2e8f0}[data-scada-theme] .btn-secondary[data-v-b3e0a4fc]:hover{background:#475569}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]{background:#3b82f6;color:#fff}[data-scada-theme] .btn-primary[data-v-b3e0a4fc]:hover{background:#2563eb}[data-scada-theme] .btn-close[data-v-b3e0a4fc]{width:36px;height:36px;padding:0;background:transparent;border:1px solid #475569;border-radius:4px;color:#94a3b8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-left:8px}[data-scada-theme] .btn-close[data-v-b3e0a4fc]:hover{background:#475569;border-color:#64748b;color:#e2e8f0}[data-scada-theme] .close-icon[data-v-b3e0a4fc]{font-size:24px;line-height:1}[data-scada-theme] .menu-overlay[data-v-aa6fccf8]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:999}[data-scada-theme] .add-node-menu[data-v-aa6fccf8]{position:fixed;z-index:1000;background:#1e293b;border:1px solid #334155;border-radius:8px;box-shadow:0 4px 12px #0000004d;min-width:280px;max-width:320px}[data-scada-theme] .menu-header[data-v-aa6fccf8]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #334155;color:#e2e8f0;font-size:14px;font-weight:600}[data-scada-theme] .btn-close[data-v-aa6fccf8]{width:24px;height:24px;background:transparent;border:none;color:#94a3b8;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}[data-scada-theme] .btn-close[data-v-aa6fccf8]:hover{background:#334155;color:#e2e8f0}[data-scada-theme] .menu-list[data-v-aa6fccf8]{padding:8px}[data-scada-theme] .menu-item[data-v-aa6fccf8]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;cursor:pointer;transition:all .2s}[data-scada-theme] .menu-item[data-v-aa6fccf8]:hover{background:#334155}[data-scada-theme] .menu-item-icon[data-v-aa6fccf8]{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;font-size:18px;flex-shrink:0}[data-scada-theme] .node-icon-getProperty[data-v-aa6fccf8]{background:#1890ff1a}[data-scada-theme] .node-icon-setProperty[data-v-aa6fccf8]{background:#13c2c21a}[data-scada-theme] .node-icon-condition[data-v-aa6fccf8]{background:#faad141a}[data-scada-theme] .node-icon-httpRequest[data-v-aa6fccf8]{background:#722ed11a}[data-scada-theme] .node-icon-customCode[data-v-aa6fccf8]{background:#eb2f961a}[data-scada-theme] .node-icon-timer[data-v-aa6fccf8]{background:#52c41a1a}[data-scada-theme] .node-icon-clearTimer[data-v-aa6fccf8]{background:#ff4d4f1a}[data-scada-theme] .menu-item-info[data-v-aa6fccf8]{flex:1}[data-scada-theme] .menu-item-name[data-v-aa6fccf8]{font-size:14px;color:#e2e8f0;font-weight:500}[data-scada-theme] .menu-item-desc[data-v-aa6fccf8]{font-size:12px;color:#94a3b8;margin-top:2px}[data-scada-theme] .workflow-editor[data-v-649349a2]{display:flex;flex-direction:column;height:100vh;background:#0f172a;color:#e2e8f0}[data-scada-theme] .editor-main[data-v-649349a2]{display:flex;flex:1;overflow:hidden}[data-scada-theme] .canvas-area[data-v-649349a2]{flex:1;position:relative;overflow:hidden;background:#0f172a}[data-scada-theme] #workflow-container[data-v-649349a2]{width:100%;height:100%}[data-scada-theme] .workflow-dialog-overlay[data-v-4e7f6ab7]{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;z-index:9999;display:flex;align-items:center;justify-content:center}[data-scada-theme] .workflow-dialog[data-v-4e7f6ab7]{width:100vw;height:100vh;background:#0f172a;overflow:hidden}.scada-layout[data-v-94b1d989]{width:100%;height:100%;min-height:100vh;display:flex;flex-direction:column;background:#1a1a2e}[data-scada-theme] .scada-canvas-container[data-v-94b1d989]{flex:1;display:flex;background:#0f172a;overflow:hidden;min-height:0}[data-scada-theme][data-v-94b1d989] .x6-node-selected{outline:2px solid #3b82f6;outline-offset:2px;box-shadow:0 0 0 4px #3b82f626,0 0 12px #3b82f64d;transition:outline .15s ease,box-shadow .15s ease}[data-scada-theme][data-v-94b1d989] .x6-node-selected rect,[data-scada-theme][data-v-94b1d989] .x6-node-selected circle,[data-scada-theme][data-v-94b1d989] .x6-node-selected ellipse{filter:brightness(1.05)}.scada-toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-100px);padding:12px 24px;border-radius:6px;color:#fff;font-size:14px;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:9999;opacity:0;transition:all .3s ease;pointer-events:none}.scada-toast.show{transform:translate(-50%) translateY(0);opacity:1}.scada-toast-success{background:linear-gradient(135deg,#10b981,#059669)}.scada-toast-error{background:linear-gradient(135deg,#ef4444,#dc2626)}.scada-toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706)}@keyframes edge-flow-94b1d989{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100}}[data-scada-theme][data-v-94b1d989] .x6-edge path{transition:stroke .3s ease,stroke-width .3s ease}[data-scada-theme][data-v-94b1d989] .edge-flow-slow{animation:edge-flow-94b1d989 4s linear infinite}[data-scada-theme][data-v-94b1d989] .edge-flow-normal{animation:edge-flow-94b1d989 2s linear infinite}[data-scada-theme][data-v-94b1d989] .edge-flow-fast{animation:edge-flow-94b1d989 1s linear infinite}.scada-layout[data-scada-theme=dark]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;color:#e2e8f0!important;font-size:14px!important;line-height:1.5!important;box-sizing:border-box!important;margin:0!important;padding:0!important;border:none!important;display:flex!important;flex-direction:column!important;flex:1!important;width:100%!important;height:100%!important;min-height:100vh!important;background:#1a1a2e!important;overflow:hidden!important;position:relative!important}.scada-layout[data-scada-theme=dark] *,.scada-layout[data-scada-theme=dark] *:before,.scada-layout[data-scada-theme=dark] *:after{box-sizing:border-box!important;margin:0;padding:0}.scada-layout[data-scada-theme=dark]>*{box-sizing:border-box!important}.scada-layout[data-scada-theme=dark]>.scada-header,.scada-layout[data-scada-theme=dark]>.scada-footer{color:#e2e8f0!important;margin:0!important}.scada-layout[data-scada-theme=dark] .property-panel>.panel-header,.scada-layout[data-scada-theme=dark] .component-library>.library-header,.scada-layout[data-scada-theme=dark] .canvas-config-panel>.config-header{color:#e2e8f0!important;margin:0!important;padding:0!important}.scada-layout[data-scada-theme=dark] .scada-header h1,.scada-layout[data-scada-theme=dark] .scada-header h2,.scada-layout[data-scada-theme=dark] .scada-header h3,.scada-layout[data-scada-theme=dark] .scada-header h4{color:#e2e8f0!important;margin:0!important;padding:0!important;font-weight:600!important}.scada-layout[data-scada-theme=dark] .canvas-area input:not([class*=ant-]):not([type=range]):not([type=color]):not([type=checkbox]),.scada-layout[data-scada-theme=dark] .canvas-area select:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area textarea:not([class*=ant-]),.scada-layout[data-scada-theme=dark] .canvas-area button:not([class*=ant-]){-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;outline:none!important;border:none!important;background:none!important;margin:0!important;padding:0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important}.scada-layout[data-scada-theme=dark] .canvas-area label,.scada-layout[data-scada-theme=dark] .canvas-area span,.scada-layout[data-scada-theme=dark] .canvas-area p,.scada-layout[data-scada-theme=dark] .canvas-area div{color:inherit!important;font-family:inherit!important;line-height:normal!important}.scada-layout[data-scada-theme] ::-webkit-scrollbar{width:8px;height:8px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-track{background:#0f172a;border-radius:4px}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#475569,#334155);border-radius:4px;border:2px solid #0f172a;transition:background .2s}.scada-layout[data-scada-theme] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#3b82f6,#2563eb)}.scada-layout[data-scada-theme] ::-webkit-scrollbar-corner{background:#0f172a}.scada-layout .x6-node-selected rect{stroke:#3b82f6!important;stroke-width:2!important;filter:drop-shadow(0 0 8px rgba(59,130,246,.6))!important}.scada-layout .x6-edge-selected path{stroke:#3b82f6!important;stroke-width:3!important}.scada-layout .x6-widget-selection-box{border:2px solid #3b82f6!important;background-color:#3b82f61a!important}.scada-layout[data-scada-theme] input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;background:linear-gradient(90deg,#475569,#334155);border-radius:2px;outline:none;opacity:.9;transition:opacity .2s}.scada-layout[data-scada-theme] input[type=range]:hover{opacity:1}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-webkit-slider-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#8b5cf6;border-radius:50%;cursor:pointer;border:2px solid #0f172a;box-shadow:0 0 8px #8b5cf699;transition:all .2s}.scada-layout[data-scada-theme] input[type=range]::-moz-range-thumb:hover{background:#a78bfa;box-shadow:0 0 12px #8b5cf6cc;transform:scale(1.1)}
@@ -11646,7 +11646,12 @@ const Ge = new gp(), hp = {
11646
11646
  modifiers: ["ctrl", "meta"]
11647
11647
  },
11648
11648
  connecting: {
11649
- router: "manhattan",
11649
+ router: {
11650
+ name: "orth",
11651
+ args: {
11652
+ padding: 10
11653
+ }
11654
+ },
11650
11655
  connector: {
11651
11656
  name: "rounded",
11652
11657
  args: {
@@ -12335,7 +12340,7 @@ const Ge = new gp(), hp = {
12335
12340
  }, null, 8, ["visible", "scada-graph"])
12336
12341
  ]));
12337
12342
  }
12338
- }), yp = /* @__PURE__ */ le(bp, [["__scopeId", "data-v-7551e236"]]), Cp = {
12343
+ }), yp = /* @__PURE__ */ le(bp, [["__scopeId", "data-v-94b1d989"]]), Cp = {
12339
12344
  ScadaCanvas: yp,
12340
12345
  PropertyPanel: go,
12341
12346
  Header: Q0,
@@ -50,4 +50,4 @@
50
50
  `;if(k+=x.map($=>" • "+$).join(`
51
51
  `),k+=`
52
52
 
53
- 是否继续保存?`,!confirm(k))return}const y=prompt("请输入流程名称:","未命名流程");if(!y||!y.trim())return;const v=t.toJSON(),D=t.getNodes().map(k=>({id:k.id,shape:k.shape,position:k.getPosition(),size:k.getSize(),attrs:k.getAttrs(),data:k.getData()})),_=t.getEdges().map(k=>({id:k.id,source:k.getSourceCellId(),target:k.getTargetCellId(),attrs:k.getAttrs(),data:k.getData()})),C={id:"workflow_"+Date.now(),name:y.trim(),data:{...v,nodes:D,edges:_},createdAt:Date.now(),updatedAt:Date.now()};try{const k=localStorage.getItem("saved-workflows"),$=k?JSON.parse(k):[];$.push(C),localStorage.setItem("saved-workflows",JSON.stringify($)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(k){console.error("保存流程失败:",k),alert("保存失败,请重试")}};e.onMounted(()=>{n(),window.addEventListener("resize",d)});const d=()=>{!t||!a.value||t.resize(a.value.clientWidth,a.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",d);const p=x=>{if(x.key==="Delete"||x.key==="Backspace"){if(!t)return;const y=t.getSelectedCells();y.length&&(x.preventDefault(),t.removeCells(y),s.value&&y.includes(s.value.cell)&&(s.value=null))}};document.removeEventListener("keydown",p),t&&t.dispose()}),(p,x)=>(e.openBlock(),e.createElementBlock("div",K1,[e.createVNode(O1,{"show-close":g.showClose,onClear:u,onValidate:B,onSave:V,onClose:x[0]||(x[0]=y=>p.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",J1,[e.createElementVNode("div",Z1,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:a},null,512)]),e.createVNode(R1,{"selected-cell":s.value,"onUpdate:label":c},null,8,["selected-cell"])]),e.createVNode(X1,{visible:h.value,position:m.value,"node-types":o.value,onClose:x[1]||(x[1]=y=>h.value=!1),onSelect:f},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),ep={key:0,class:"workflow-dialog-overlay"},tp={class:"workflow-dialog"},op=te(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(g,{emit:E}){const o=g,a=E;e.watch(()=>o.visible,h=>{h?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{a("update:visible",!1),a("close")},s=h=>{h.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",s),(h,m)=>g.visible?(e.openBlock(),e.createElementBlock("div",ep,[e.createElementVNode("div",tp,[e.createVNode(Q1,{"scada-graph":g.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]);class np{constructor(){Ue(this,"animations",new Map)}startAnimation(E,o){if(!E||o.type==="none")return;this.stopAnimation(E.id);const a=E.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(E,o);break;case"scale":t=this.createScaleAnimation(E,o);break;case"rotate":t=this.createRotateAnimation(E,o);break;case"float":t=this.createFloatAnimation(E,o);break;case"pulse":t=this.createPulseAnimation(E,o);break}t&&this.animations.set(a,t)}stopAnimation(E){const o=this.animations.get(E);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(E))}createBlinkAnimation(E,o){const a=E.getAttrByPath("body/opacity")||1;let t=!0;const s=setInterval(()=>{t=!t,E.setAttrByPath("body/opacity",t?a:.2),o.loop||(clearInterval(s),E.setAttrByPath("body/opacity",a))},o.duration/2);return{intervalId:s,stop:()=>{clearInterval(s),E.setAttrByPath("body/opacity",a)}}}createScaleAnimation(E,o){const a=E.getSize();let t=!0;const s=.05;let h=1;const m=setInterval(()=>{t?(h+=s,h>=1.2&&(t=!1)):(h-=s,h<=.8&&(t=!0)),E.resize(a.width*h,a.height*h),!o.loop&&h>=.99&&h<=1.01&&(clearInterval(m),E.resize(a.width,a.height))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.resize(a.width,a.height)}}}createRotateAnimation(E,o){let a=0;const t=360/(o.duration/50),s=setInterval(()=>{a=(a+t)%360,E.rotate(a,{absolute:!0}),!o.loop&&a>=360&&(clearInterval(s),E.rotate(0,{absolute:!0}))},50);return{intervalId:s,stop:()=>{clearInterval(s),E.rotate(0,{absolute:!0})}}}createFloatAnimation(E,o){const a=E.position();let t=!0;const s=2;let h=a.y;const m=setInterval(()=>{t?(h-=s,h<=a.y-10&&(t=!1)):(h+=s,h>=a.y+10&&(t=!0)),E.position(a.x,h),!o.loop&&Math.abs(h-a.y)<1&&(clearInterval(m),E.position(a.x,a.y))},o.duration/40);return{intervalId:m,stop:()=>{clearInterval(m),E.position(a.x,a.y)}}}createPulseAnimation(E,o){const a=E.getAttrByPath("body/fill"),t=E.getAttrByPath("body/stroke");let s=0,h=!0;const m=setInterval(()=>{h?(s+=.1,s>=1&&(h=!1)):(s-=.1,s<=0&&(h=!0)),E.setAttrByPath("body/opacity",.5+s*.5),!o.loop&&s<=.05&&(clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((E,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const Be=new np,ap={class:"scada-layout","data-scada-theme":"dark"},rp={class:"scada-canvas-container"},Xo=te(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0}},setup(g,{expose:E}){const o=e.ref(null),a=e.ref(null),t=e.ref(null),s=e.ref(0),h=e.ref(null),m=e.ref(!1);let l=null;e.onMounted(()=>{var q,X;if(!((q=o.value)!=null&&q.containerRef))return;const N=Z.getConfig();ue.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"transparent",strokeWidth:20}},{tagName:"circle",selector:"circle"}],attrs:{line:{connection:!0,stroke:"#10b981",strokeWidth:2,targetMarker:{name:"block",width:8,height:6}},wrap:{connection:!0,strokeLinecap:"round",strokeLinejoin:"round"}}},!0);const I=o.value.containerRef,P=N.size.width,A=N.size.height;(L=>{I.style.width=`${P}px`,I.style.height=`${A}px`,I.style.transform=`scale(${L})`,I.style.transformOrigin="center center"})(N.zoom.scale),l=new ue.Graph({container:I,width:P,height:A,background:N.background.image?{color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}:{color:N.background.color||"#1e293b"},grid:N.grid.enabled?{size:N.grid.size,visible:!0,type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!0},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:"manhattan",connector:{name:"rounded",args:{radius:8}},snap:N.magnetism.enabled?{radius:N.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return l.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:L}){return!!L}}}),l.use(new Gt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),N.guides.enabled&&l.use(new nn.Snapline({enabled:!0,sharp:!0,clean:!0}));const T=eo(Ie.SCADA_EDITOR_DATA);if(((X=T==null?void 0:T.cells)==null?void 0:X.length)>0)try{const L=T.cells.map(H=>(H.position&&typeof H.position=="object"&&(typeof H.position.x!="number"||typeof H.position.y!="number")&&(H.position={x:100,y:100}),H));l.fromJSON({cells:L}),l.getEdges().forEach(H=>{var re;const ae=H.getData();(re=ae==null?void 0:ae.animation)!=null&&re.enabled&&B(H,ae.animation)})}catch(L){console.error("恢复画布数据失败,清空缓存:",L),sessionStorage.removeItem(Ie.SCADA_EDITOR_DATA)}l.on("selection:changed",({selected:L})=>{var ae,re;const H=L?L.filter(ne=>ne.isNode()):[];if(s.value=H.length,L&&L.length>0){const ne=L[0];if(ne.isNode())a.value=ne,t.value=null;else if(ne.isEdge()){t.value=ne,a.value=null;const ge=ne.getAttrs();ne.data={...ne.data,originalAttrs:ge},ne.attr("line/stroke","#3b82f6")}}else{if(t.value&&((ae=t.value.data)!=null&&ae.originalAttrs)){const ne=t.value.data.originalAttrs;t.value.attr("line/stroke",((re=ne.line)==null?void 0:re.stroke)||"#10b981")}a.value=null,t.value=null}}),l.on("edge:click",({edge:L})=>{l.select(L)}),l.on("blank:click",()=>{t.value=null,a.value=null}),l.on("node:change:position",()=>{}),l.on("node:change:size",()=>{}),l.on("node:change:data",({node:L})=>{const H=L.getData();if(H.animation)if(H.animation.enabled===!0){const ae={type:H.animation.type||"none",duration:H.animation.duration||1e3,loop:H.animation.loop!==!1};Be.startAnimation(L,ae)}else Be.stopAnimation(L.id)}),l.on("edge:change:data",({edge:L})=>{const H=L.getData();H!=null&&H.animation&&B(L,H.animation)});const w=L=>{if(L.key==="Delete"&&l){if(a.value){const H=a.value.id;Be.stopAnimation(H),l.removeNode(H),a.value=null}else if(t.value){const H=t.value.id;l.removeEdge(H),t.value=null}}};document.addEventListener("keydown",w),e.onUnmounted(()=>{document.removeEventListener("keydown",w)})}),e.onUnmounted(()=>{if(l){Be.clearAll();const N={cells:l.toJSON().cells};ot(Ie.SCADA_EDITOR_DATA,N),l.dispose()}}),e.watch(()=>Z.getConfig(),N=>{var P;if(!l)return;N.background.image?l.drawBackground({color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}):l.drawBackground({color:N.background.color||"#1e293b"});const I=(P=o.value)==null?void 0:P.containerRef;I&&(I.style.transform=`scale(${N.zoom.scale})`,I.style.transformOrigin="center center",l.resize(N.size.width,N.size.height),I.style.width=`${N.size.width}px`,I.style.height=`${N.size.height}px`),N.grid.enabled?(l.drawGrid({type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}),l.showGrid()):l.hideGrid(),N.grid.enabled&&N.grid.size&&l.setGridSize(N.grid.size),l.translate(N.offset.x,N.offset.y)},{deep:!0});const i=e.ref({}),n=(N,I)=>(i.value[N]||(i.value[N]=0),i.value[N]++,`${I}_${i.value[N]}`),r=N=>{var q,X,L,H;if(!l)return;const I=Pe.getComponent(N);if(!I){console.error(`未找到组件配置: ${N}`);return}const P=n(N,I.metadata.name),A={enabled:!1,type:"none",duration:1e3,loop:!0},F=ao(50,50,400,300),T={x:F.x,y:F.y,shape:I.shape,width:I.width,height:I.height,label:I.label,attrs:I.attrs,ports:I.ports,data:{...I.data,componentType:N,componentName:P,props:I.props,animation:A,originalStroke:((X=(q=I.attrs)==null?void 0:q.body)==null?void 0:X.stroke)||"#2563eb",originalStrokeWidth:((H=(L=I.attrs)==null?void 0:L.body)==null?void 0:H.strokeWidth)||2}},w=l.addNode(T);l.cleanSelection(),l.select(w)},c=N=>{if(a.value&&(N.attrs&&Object.keys(N.attrs).forEach(I=>{const P=N.attrs[I];typeof P=="object"?Object.keys(P).forEach(A=>{a.value.attr(`${I}/${A}`,P[A])}):a.value.attr(I,P)}),N.position&&(typeof N.position.x=="number"&&typeof N.position.y=="number"?a.value.setPosition(N.position):console.error("position 数据格式错误:",N.position)),N.size&&(typeof N.size.width=="number"&&typeof N.size.height=="number"?a.value.setSize(N.size):console.error("size 数据格式错误:",N.size)),N.data)){const I={...N.data};delete I.position,delete I.size,a.value.store.set("data",I)}},f=()=>{if(!a.value||!l)return;const N=a.value.id;Be.stopAnimation(N),l.removeNode(N),a.value=null},u=N=>{if(t.value){if(N.attrs){Object.keys(N.attrs).forEach(P=>{const A=N.attrs[P];typeof A=="object"?Object.keys(A).forEach(F=>{var T,w;t.value.attr(`${P}/${F}`,A[F]),(w=(T=t.value.data)==null?void 0:T.originalAttrs)!=null&&w[P]&&(t.value.data.originalAttrs[P][F]=A[F])}):t.value.attr(P,A)});const I=t.value.getAttrs();t.value.data={...t.value.data,originalAttrs:I},t.value.attr("line/stroke","#3b82f6")}N.router&&t.value.setRouter(N.router),N.connector&&t.value.setConnector(N.connector),N.animation&&B(t.value,N.animation),N.data&&t.value.setData({...t.value.data,...N.data})}},b=()=>{!t.value||!l||(l.removeEdge(t.value.id),t.value=null)},B=(N,I)=>{if(!N||typeof N.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",N);return}if(!I||!I.enabled){N.attr("line/strokeDasharray",void 0),typeof N.removeAttr=="function"&&N.removeAttr("line/class"),N.attr("circle",void 0),typeof N.stopTransition=="function"&&N.stopTransition("attrs/circle/atConnectionRatio");return}const P=I.duration||2e3;N.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:N.attr("line/stroke")||"#10b981"}]},stroke:N.attr("line/stroke")||"#10b981",strokeWidth:1});const A=()=>{N.attr("circle/atConnectionRatio",0,{silent:!0}),N.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:P,timing:"linear",complete:()=>{A()}})};A()},V=()=>{l&&confirm("确定要清空画布吗?")&&(Be.clearAll(),l.clearCells(),a.value=null,to(Ie.SCADA_EDITOR_DATA))},d=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.min(5,N+.1);Z.setZoom(I)},p=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.max(.1,N-.1);Z.setZoom(I)},x=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().x));N.forEach(P=>{P.setPosition({x:I,y:P.getPosition().y})})},y=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().x+A.getSize().width/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().width/2;A.setPosition({x:F,y:A.getPosition().y})})},v=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().x+P.getSize().width));N.forEach(P=>{const A=I-P.getSize().width;P.setPosition({x:A,y:P.getPosition().y})})},D=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().y));N.forEach(P=>{P.setPosition({x:P.getPosition().x,y:I})})},_=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().y+A.getSize().height/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().height/2;A.setPosition({x:A.getPosition().x,y:F})})},S=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().y+P.getSize().height));N.forEach(P=>{const A=I-P.getSize().height;P.setPosition({x:P.getPosition().x,y:A})})},C=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().x-q.getPosition().x),P=I[0],T=(I[I.length-1].getPosition().x-P.getPosition().x)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().x+T*q;w.setPosition({x:X,y:w.getPosition().y})})},k=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().y-q.getPosition().y),P=I[0],T=(I[I.length-1].getPosition().y-P.getPosition().y)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().y+T*q;w.setPosition({x:w.getPosition().x,y:X})})},$=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells},I=new Blob([JSON.stringify(N,null,2)],{type:"application/json"}),P=URL.createObjectURL(I),A=document.createElement("a"),F=`scada-canvas-${new Date().getTime()}.json`;A.href=P,A.download=F,A.click(),URL.revokeObjectURL(P),oe("保存成功","success")}catch(N){console.error("保存失败",N),oe("保存失败,请查看控制台","error")}},z=()=>{h.value&&h.value.click()},O=N=>{var F;const P=(F=N.target.files)==null?void 0:F[0];if(!P){oe("请选择文件","error");return}const A=new FileReader;A.onload=T=>{var w;try{const q=JSON.parse((w=T.target)==null?void 0:w.result);if(!q.cells){oe("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(l){if(l.clearCells(),l.fromJSON({cells:q.cells}),l.getEdges().forEach(X=>{var H;const L=X.getData();(H=L==null?void 0:L.animation)!=null&&H.enabled&&B(X,L.animation)}),q.config&&Z.updateConfig(q.config),q.workflows&&Array.isArray(q.workflows)&&q.workflows.length>0)try{const X=localStorage.getItem("saved-workflows"),L=X?JSON.parse(X):[];let H=0,ae=0;q.workflows.forEach(re=>{const ne=L.findIndex(ge=>ge.id===re.id);ne>=0?(L[ne]={...re,updatedAt:Date.now()},ae++):(L.push(re),H++)}),localStorage.setItem("saved-workflows",JSON.stringify(L)),oe(`导入成功 画布已加载,流程: 新增${H}个,更新${ae}个`,"success")}catch(X){console.error("导入流程数据失败:",X),oe("画布导入成功, 但流程数据导入失败","warning")}else oe("导入成功","success");h.value&&(h.value.value="")}}catch(q){console.error("导入失败",q),oe("导入失败,JSON格式错误","error"),h.value&&(h.value.value="")}},A.readAsText(P)},W=()=>{if(!l)return;const N={cells:l.toJSON().cells,config:{width:Z.getConfig().size.width,height:Z.getConfig().size.height,background:Z.getConfig().background,grid:Z.getConfig().grid}};ot(Ie.SCADA_PREVIEW_DATA,N)},Y=()=>{m.value=!0},Q=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:at(rt()),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells,nodes:l.getNodes().map(A=>({id:A.id,type:A.shape,position:A.getPosition(),size:A.getSize(),label:A.attr("label/text"),data:A.getData()})),edges:l.getEdges().map(A=>({id:A.id,source:A.getSourceCellId(),target:A.getTargetCellId()})),workflows:[]},I=new Set;if(l.getNodes().forEach(A=>{const F=A.getData();F!=null&&F.events&&Array.isArray(F.events)&&F.events.forEach(T=>{var w;T.action==="callProcess"&&((w=T.params)!=null&&w.processId)&&I.add(T.params.processId)})}),I.size>0)try{const A=localStorage.getItem("saved-workflows");if(A){const F=JSON.parse(A);N.workflows=F.filter(T=>I.has(T.id))}}catch(A){console.error("加载流程数据失败:",A)}const P=oo(N,"scada-export");oe(`已导出为 ${P}`,"success")}catch(N){console.error("导出失败",N),oe("导出失败,请查看控制台","error")}};return E({save:$,import:z,export:Q,preview:W,workflow:Y,zoomIn:d,zoomOut:p,clearAll:V,alignLeft:x,alignCenter:y,alignRight:v,alignTop:D,alignMiddle:_,alignBottom:S,distributeHorizontal:C,distributeVertical:k,addNode:r,updateNode:c,deleteNode:f,getSelectedNode:()=>a.value,selectNode:N=>{if(!l)return!1;const I=l.getCellById(N);return I?(l.select(I),!0):!1},clearSelection:()=>{l&&(l.unselect(l.getSelectedCells()),a.value=null)},getGraph:()=>l,getCanvasData:()=>l?{version:"1.0.0",timestamp:at(rt()),config:Z.getConfig(),cells:l.toJSON().cells,nodes:l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})),edges:l.getEdges().map(N=>({id:N.id,source:N.getSourceCellId(),target:N.getTargetCellId()}))}:null,loadCanvasData:N=>{if(!l)return!1;try{return l.clearCells(),l.fromJSON({cells:N.cells}),N.config&&Z.updateConfig(N.config),!0}catch(I){return console.error("加载画布数据失败:",I),!1}},getAllNodes:()=>l?l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})):[],getNodeById:N=>{if(!l)return null;const I=l.getCellById(N);if(!I||!I.isNode())return null;const P=I;return{id:P.id,type:P.shape,position:P.getPosition(),size:P.getSize(),label:P.attr("label/text"),data:P.getData()}},getConfigManager:()=>Z,updateCanvasConfig:N=>{Z.updateConfig(N)},setZoom:N=>{Z.setZoom(N)},setCanvasSize:(N,I)=>{Z.updateSize({width:N,height:I})},setBackgroundColor:N=>{Z.updateBackground({color:N})},getAnimationEngine:()=>Be}),(N,I)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createVNode(Ge,{"selected-nodes-count":s.value,onSave:$,onImport:z,onWorkflow:Y,onPreview:W,onExport:Q,onZoomIn:d,onZoomOut:p,onClearAll:V,onAlignLeft:x,onAlignCenter:y,onAlignRight:v,onAlignTop:D,onAlignMiddle:_,onAlignBottom:S,onDistributeHorizontal:C,onDistributeVertical:k},null,8,["selected-nodes-count"]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:h,type:"file",accept:".json",style:{display:"none"},onChange:O},null,544),e.createElementVNode("div",rp,[e.createVNode(Xe,{onAddComponent:r}),e.createVNode(Kn,{ref_key:"canvasAreaRef",ref:o},null,512),e.createVNode(lt,{ref:"propertyPanelRef","selected-node":a.value,"selected-edge":t.value,onUpdateNode:c,onDeleteNode:f,onUpdateEdge:u,onDeleteEdge:b},null,8,["selected-node","selected-edge"])]),e.createVNode(Ed,{"auth-code":g.authCode,"custom-footer":g.customFooter},null,8,["auth-code","custom-footer"]),e.createVNode(op,{visible:m.value,"onUpdate:visible":I[0]||(I[0]=P=>m.value=P),"scada-graph":e.unref(l),onClose:I[1]||(I[1]=P=>m.value=!1)},null,8,["visible","scada-graph"])]))}}),[["__scopeId","data-v-7551e236"]]),lp={ScadaCanvas:Xo,PropertyPanel:lt,Header:Ge,ComponentLibrary:Xe,CanvasConfigPanel:Ye,BindingCard:Qe,EventCard:Je,BasicPropertiesTab:Ke,AttributeConfigDialog:et,CustomCodeDialog:tt},Yo=g=>{Object.entries(lp).forEach(([E,o])=>{g.component(E,o)})},sp={install:Yo,version:"1.0.0"};G.AttributeConfigDialog=et,G.BasicComponents=wn,G.BasicPropertiesTab=Ke,G.BindingCard=Qe,G.CanvasConfigPanel=Ye,G.ComponentLibrary=Xe,G.CustomCodeDialog=tt,G.EventCard=Je,G.Header=Ge,G.IoTComponents=Sn,G.PropertyPanel=lt,G.STORAGE_KEYS=Ie,G.ScadaCanvas=Xo,G.animationEngine=Be,G.canvasConfigItems=zn,G.canvasConfigManager=Z,G.componentRegistry=Pe,G.default=sp,G.defaultCanvasConfig=je,G.exportToJSON=oo,G.formatTimestamp=at,G.generateEventId=no,G.generateNodeId=dc,G.generateUniqueId=nt,G.getCurrentTimestamp=rt,G.install=Yo,G.loadFromLocal=ic,G.loadFromSession=eo,G.randomPosition=ao,G.removeFromLocal=cc,G.removeFromSession=to,G.saveToLocal=sc,G.saveToSession=ot,G.showMessage=oe,G.sizePresetMap=Re,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
53
+ 是否继续保存?`,!confirm(k))return}const y=prompt("请输入流程名称:","未命名流程");if(!y||!y.trim())return;const v=t.toJSON(),D=t.getNodes().map(k=>({id:k.id,shape:k.shape,position:k.getPosition(),size:k.getSize(),attrs:k.getAttrs(),data:k.getData()})),_=t.getEdges().map(k=>({id:k.id,source:k.getSourceCellId(),target:k.getTargetCellId(),attrs:k.getAttrs(),data:k.getData()})),C={id:"workflow_"+Date.now(),name:y.trim(),data:{...v,nodes:D,edges:_},createdAt:Date.now(),updatedAt:Date.now()};try{const k=localStorage.getItem("saved-workflows"),$=k?JSON.parse(k):[];$.push(C),localStorage.setItem("saved-workflows",JSON.stringify($)),alert("✓ 流程保存成功!"),console.log("流程已保存:",C)}catch(k){console.error("保存流程失败:",k),alert("保存失败,请重试")}};e.onMounted(()=>{n(),window.addEventListener("resize",d)});const d=()=>{!t||!a.value||t.resize(a.value.clientWidth,a.value.clientHeight)};return e.onBeforeUnmount(()=>{window.removeEventListener("resize",d);const p=x=>{if(x.key==="Delete"||x.key==="Backspace"){if(!t)return;const y=t.getSelectedCells();y.length&&(x.preventDefault(),t.removeCells(y),s.value&&y.includes(s.value.cell)&&(s.value=null))}};document.removeEventListener("keydown",p),t&&t.dispose()}),(p,x)=>(e.openBlock(),e.createElementBlock("div",K1,[e.createVNode(O1,{"show-close":g.showClose,onClear:u,onValidate:B,onSave:V,onClose:x[0]||(x[0]=y=>p.$emit("close"))},null,8,["show-close"]),e.createElementVNode("div",J1,[e.createElementVNode("div",Z1,[e.createElementVNode("div",{id:"workflow-container",ref_key:"containerRef",ref:a},null,512)]),e.createVNode(R1,{"selected-cell":s.value,"onUpdate:label":c},null,8,["selected-cell"])]),e.createVNode(X1,{visible:h.value,position:m.value,"node-types":o.value,onClose:x[1]||(x[1]=y=>h.value=!1),onSelect:f},null,8,["visible","position","node-types"])]))}}),[["__scopeId","data-v-649349a2"]]),ep={key:0,class:"workflow-dialog-overlay"},tp={class:"workflow-dialog"},op=te(e.defineComponent({__name:"WorkflowDialog",props:{visible:{type:Boolean},scadaGraph:{default:null}},emits:["update:visible","close"],setup(g,{emit:E}){const o=g,a=E;e.watch(()=>o.visible,h=>{h?document.body.style.overflow="hidden":document.body.style.overflow=""});const t=()=>{a("update:visible",!1),a("close")},s=h=>{h.key==="Escape"&&o.visible&&t()};return typeof window<"u"&&window.addEventListener("keydown",s),(h,m)=>g.visible?(e.openBlock(),e.createElementBlock("div",ep,[e.createElementVNode("div",tp,[e.createVNode(Q1,{"scada-graph":g.scadaGraph,"show-close":!0,onClose:t},null,8,["scada-graph"])])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-4e7f6ab7"]]);class np{constructor(){Ue(this,"animations",new Map)}startAnimation(E,o){if(!E||o.type==="none")return;this.stopAnimation(E.id);const a=E.id;let t=null;switch(o.type){case"blink":t=this.createBlinkAnimation(E,o);break;case"scale":t=this.createScaleAnimation(E,o);break;case"rotate":t=this.createRotateAnimation(E,o);break;case"float":t=this.createFloatAnimation(E,o);break;case"pulse":t=this.createPulseAnimation(E,o);break}t&&this.animations.set(a,t)}stopAnimation(E){const o=this.animations.get(E);o&&(o.stop&&o.stop(),o.intervalId&&clearInterval(o.intervalId),this.animations.delete(E))}createBlinkAnimation(E,o){const a=E.getAttrByPath("body/opacity")||1;let t=!0;const s=setInterval(()=>{t=!t,E.setAttrByPath("body/opacity",t?a:.2),o.loop||(clearInterval(s),E.setAttrByPath("body/opacity",a))},o.duration/2);return{intervalId:s,stop:()=>{clearInterval(s),E.setAttrByPath("body/opacity",a)}}}createScaleAnimation(E,o){const a=E.getSize();let t=!0;const s=.05;let h=1;const m=setInterval(()=>{t?(h+=s,h>=1.2&&(t=!1)):(h-=s,h<=.8&&(t=!0)),E.resize(a.width*h,a.height*h),!o.loop&&h>=.99&&h<=1.01&&(clearInterval(m),E.resize(a.width,a.height))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.resize(a.width,a.height)}}}createRotateAnimation(E,o){let a=0;const t=360/(o.duration/50),s=setInterval(()=>{a=(a+t)%360,E.rotate(a,{absolute:!0}),!o.loop&&a>=360&&(clearInterval(s),E.rotate(0,{absolute:!0}))},50);return{intervalId:s,stop:()=>{clearInterval(s),E.rotate(0,{absolute:!0})}}}createFloatAnimation(E,o){const a=E.position();let t=!0;const s=2;let h=a.y;const m=setInterval(()=>{t?(h-=s,h<=a.y-10&&(t=!1)):(h+=s,h>=a.y+10&&(t=!0)),E.position(a.x,h),!o.loop&&Math.abs(h-a.y)<1&&(clearInterval(m),E.position(a.x,a.y))},o.duration/40);return{intervalId:m,stop:()=>{clearInterval(m),E.position(a.x,a.y)}}}createPulseAnimation(E,o){const a=E.getAttrByPath("body/fill"),t=E.getAttrByPath("body/stroke");let s=0,h=!0;const m=setInterval(()=>{h?(s+=.1,s>=1&&(h=!1)):(s-=.1,s<=0&&(h=!0)),E.setAttrByPath("body/opacity",.5+s*.5),!o.loop&&s<=.05&&(clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1))},o.duration/20);return{intervalId:m,stop:()=>{clearInterval(m),E.setAttrByPath("body/fill",a),E.setAttrByPath("body/stroke",t),E.setAttrByPath("body/opacity",1)}}}clearAll(){this.animations.forEach((E,o)=>{this.stopAnimation(o)}),this.animations.clear()}}const Be=new np,ap={class:"scada-layout","data-scada-theme":"dark"},rp={class:"scada-canvas-container"},Xo=te(e.defineComponent({name:"ScadaCanvas",inheritAttrs:!0,__name:"ScadaCanvas",props:{authCode:{default:""},customFooter:{default:void 0}},setup(g,{expose:E}){const o=e.ref(null),a=e.ref(null),t=e.ref(null),s=e.ref(0),h=e.ref(null),m=e.ref(!1);let l=null;e.onMounted(()=>{var q,X;if(!((q=o.value)!=null&&q.containerRef))return;const N=Z.getConfig();ue.Graph.registerEdge("animated-edge",{inherit:"edge",markup:[{tagName:"path",selector:"line",attrs:{fill:"none"}},{tagName:"path",selector:"wrap",attrs:{fill:"none",stroke:"transparent",strokeWidth:20}},{tagName:"circle",selector:"circle"}],attrs:{line:{connection:!0,stroke:"#10b981",strokeWidth:2,targetMarker:{name:"block",width:8,height:6}},wrap:{connection:!0,strokeLinecap:"round",strokeLinejoin:"round"}}},!0);const I=o.value.containerRef,P=N.size.width,A=N.size.height;(L=>{I.style.width=`${P}px`,I.style.height=`${A}px`,I.style.transform=`scale(${L})`,I.style.transformOrigin="center center"})(N.zoom.scale),l=new ue.Graph({container:I,width:P,height:A,background:N.background.image?{color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}:{color:N.background.color||"#1e293b"},grid:N.grid.enabled?{size:N.grid.size,visible:!0,type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}:!1,interacting:{nodeMovable:!0},panning:{enabled:!0,modifiers:"shift"},mousewheel:{enabled:!0,modifiers:["ctrl","meta"]},connecting:{router:{name:"orth",args:{padding:10}},connector:{name:"rounded",args:{radius:8}},snap:N.magnetism.enabled?{radius:N.magnetism.threshold||10}:!1,allowBlank:!1,allowLoop:!1,allowNode:!1,allowEdge:!1,highlight:!0,createEdge(){return l.createEdge({shape:"animated-edge",zIndex:0})},validateConnection({targetMagnet:L}){return!!L}}}),l.use(new Gt.Selection({enabled:!0,movable:!0,rubberband:!0,showNodeSelectionBox:!1,showEdgeSelectionBox:!1,multiple:!0,pointerEvents:"none"})),N.guides.enabled&&l.use(new nn.Snapline({enabled:!0,sharp:!0,clean:!0}));const T=eo(Ie.SCADA_EDITOR_DATA);if(((X=T==null?void 0:T.cells)==null?void 0:X.length)>0)try{const L=T.cells.map(H=>(H.position&&typeof H.position=="object"&&(typeof H.position.x!="number"||typeof H.position.y!="number")&&(H.position={x:100,y:100}),H));l.fromJSON({cells:L}),l.getEdges().forEach(H=>{var re;const ae=H.getData();(re=ae==null?void 0:ae.animation)!=null&&re.enabled&&B(H,ae.animation)})}catch(L){console.error("恢复画布数据失败,清空缓存:",L),sessionStorage.removeItem(Ie.SCADA_EDITOR_DATA)}l.on("selection:changed",({selected:L})=>{var ae,re;const H=L?L.filter(ne=>ne.isNode()):[];if(s.value=H.length,L&&L.length>0){const ne=L[0];if(ne.isNode())a.value=ne,t.value=null;else if(ne.isEdge()){t.value=ne,a.value=null;const ge=ne.getAttrs();ne.data={...ne.data,originalAttrs:ge},ne.attr("line/stroke","#3b82f6")}}else{if(t.value&&((ae=t.value.data)!=null&&ae.originalAttrs)){const ne=t.value.data.originalAttrs;t.value.attr("line/stroke",((re=ne.line)==null?void 0:re.stroke)||"#10b981")}a.value=null,t.value=null}}),l.on("edge:click",({edge:L})=>{l.select(L)}),l.on("blank:click",()=>{t.value=null,a.value=null}),l.on("node:change:position",()=>{}),l.on("node:change:size",()=>{}),l.on("node:change:data",({node:L})=>{const H=L.getData();if(H.animation)if(H.animation.enabled===!0){const ae={type:H.animation.type||"none",duration:H.animation.duration||1e3,loop:H.animation.loop!==!1};Be.startAnimation(L,ae)}else Be.stopAnimation(L.id)}),l.on("edge:change:data",({edge:L})=>{const H=L.getData();H!=null&&H.animation&&B(L,H.animation)});const w=L=>{if(L.key==="Delete"&&l){if(a.value){const H=a.value.id;Be.stopAnimation(H),l.removeNode(H),a.value=null}else if(t.value){const H=t.value.id;l.removeEdge(H),t.value=null}}};document.addEventListener("keydown",w),e.onUnmounted(()=>{document.removeEventListener("keydown",w)})}),e.onUnmounted(()=>{if(l){Be.clearAll();const N={cells:l.toJSON().cells};ot(Ie.SCADA_EDITOR_DATA,N),l.dispose()}}),e.watch(()=>Z.getConfig(),N=>{var P;if(!l)return;N.background.image?l.drawBackground({color:N.background.color||"#1e293b",image:N.background.image,size:N.background.size||"cover",repeat:N.background.repeat||"no-repeat",position:"center"}):l.drawBackground({color:N.background.color||"#1e293b"});const I=(P=o.value)==null?void 0:P.containerRef;I&&(I.style.transform=`scale(${N.zoom.scale})`,I.style.transformOrigin="center center",l.resize(N.size.width,N.size.height),I.style.width=`${N.size.width}px`,I.style.height=`${N.size.height}px`),N.grid.enabled?(l.drawGrid({type:N.grid.type||"dot",args:{color:N.grid.color||"#475569",thickness:1}}),l.showGrid()):l.hideGrid(),N.grid.enabled&&N.grid.size&&l.setGridSize(N.grid.size),l.translate(N.offset.x,N.offset.y)},{deep:!0});const i=e.ref({}),n=(N,I)=>(i.value[N]||(i.value[N]=0),i.value[N]++,`${I}_${i.value[N]}`),r=N=>{var q,X,L,H;if(!l)return;const I=Pe.getComponent(N);if(!I){console.error(`未找到组件配置: ${N}`);return}const P=n(N,I.metadata.name),A={enabled:!1,type:"none",duration:1e3,loop:!0},F=ao(50,50,400,300),T={x:F.x,y:F.y,shape:I.shape,width:I.width,height:I.height,label:I.label,attrs:I.attrs,ports:I.ports,data:{...I.data,componentType:N,componentName:P,props:I.props,animation:A,originalStroke:((X=(q=I.attrs)==null?void 0:q.body)==null?void 0:X.stroke)||"#2563eb",originalStrokeWidth:((H=(L=I.attrs)==null?void 0:L.body)==null?void 0:H.strokeWidth)||2}},w=l.addNode(T);l.cleanSelection(),l.select(w)},c=N=>{if(a.value&&(N.attrs&&Object.keys(N.attrs).forEach(I=>{const P=N.attrs[I];typeof P=="object"?Object.keys(P).forEach(A=>{a.value.attr(`${I}/${A}`,P[A])}):a.value.attr(I,P)}),N.position&&(typeof N.position.x=="number"&&typeof N.position.y=="number"?a.value.setPosition(N.position):console.error("position 数据格式错误:",N.position)),N.size&&(typeof N.size.width=="number"&&typeof N.size.height=="number"?a.value.setSize(N.size):console.error("size 数据格式错误:",N.size)),N.data)){const I={...N.data};delete I.position,delete I.size,a.value.store.set("data",I)}},f=()=>{if(!a.value||!l)return;const N=a.value.id;Be.stopAnimation(N),l.removeNode(N),a.value=null},u=N=>{if(t.value){if(N.attrs){Object.keys(N.attrs).forEach(P=>{const A=N.attrs[P];typeof A=="object"?Object.keys(A).forEach(F=>{var T,w;t.value.attr(`${P}/${F}`,A[F]),(w=(T=t.value.data)==null?void 0:T.originalAttrs)!=null&&w[P]&&(t.value.data.originalAttrs[P][F]=A[F])}):t.value.attr(P,A)});const I=t.value.getAttrs();t.value.data={...t.value.data,originalAttrs:I},t.value.attr("line/stroke","#3b82f6")}N.router&&t.value.setRouter(N.router),N.connector&&t.value.setConnector(N.connector),N.animation&&B(t.value,N.animation),N.data&&t.value.setData({...t.value.data,...N.data})}},b=()=>{!t.value||!l||(l.removeEdge(t.value.id),t.value=null)},B=(N,I)=>{if(!N||typeof N.attr!="function"){console.warn("applyEdgeAnimation: edge 对象无效",N);return}if(!I||!I.enabled){N.attr("line/strokeDasharray",void 0),typeof N.removeAttr=="function"&&N.removeAttr("line/class"),N.attr("circle",void 0),typeof N.stopTransition=="function"&&N.stopTransition("attrs/circle/atConnectionRatio");return}const P=I.duration||2e3;N.attr("circle",{r:4,atConnectionRatio:0,fill:{type:"radialGradient",stops:[{offset:"0%",color:"#FFF"},{offset:"100%",color:N.attr("line/stroke")||"#10b981"}]},stroke:N.attr("line/stroke")||"#10b981",strokeWidth:1});const A=()=>{N.attr("circle/atConnectionRatio",0,{silent:!0}),N.transition("attrs/circle/atConnectionRatio",1,{delay:0,duration:P,timing:"linear",complete:()=>{A()}})};A()},V=()=>{l&&confirm("确定要清空画布吗?")&&(Be.clearAll(),l.clearCells(),a.value=null,to(Ie.SCADA_EDITOR_DATA))},d=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.min(5,N+.1);Z.setZoom(I)},p=()=>{if(!l)return;const N=Z.getConfig().zoom.scale,I=Math.max(.1,N-.1);Z.setZoom(I)},x=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().x));N.forEach(P=>{P.setPosition({x:I,y:P.getPosition().y})})},y=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().x+A.getSize().width/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().width/2;A.setPosition({x:F,y:A.getPosition().y})})},v=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().x+P.getSize().width));N.forEach(P=>{const A=I-P.getSize().width;P.setPosition({x:A,y:P.getPosition().y})})},D=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.min(...N.map(P=>P.getPosition().y));N.forEach(P=>{P.setPosition({x:P.getPosition().x,y:I})})},_=()=>{if(!l)return;const N=l.getSelectedCells().filter(A=>A.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=N.map(A=>A.getPosition().y+A.getSize().height/2),P=I.reduce((A,F)=>A+F,0)/I.length;N.forEach(A=>{const F=P-A.getSize().height/2;A.setPosition({x:A.getPosition().x,y:F})})},S=()=>{if(!l)return;const N=l.getSelectedCells().filter(P=>P.isNode());if(N.length<2){oe("请选择至少两个节点","warning");return}const I=Math.max(...N.map(P=>P.getPosition().y+P.getSize().height));N.forEach(P=>{const A=I-P.getSize().height;P.setPosition({x:P.getPosition().x,y:A})})},C=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().x-q.getPosition().x),P=I[0],T=(I[I.length-1].getPosition().x-P.getPosition().x)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().x+T*q;w.setPosition({x:X,y:w.getPosition().y})})},k=()=>{if(!l)return;const N=l.getSelectedCells().filter(w=>w.isNode());if(N.length<3){oe("请选择至少三个节点","warning");return}const I=N.sort((w,q)=>w.getPosition().y-q.getPosition().y),P=I[0],T=(I[I.length-1].getPosition().y-P.getPosition().y)/(I.length-1);I.forEach((w,q)=>{if(q===0||q===I.length-1)return;const X=P.getPosition().y+T*q;w.setPosition({x:w.getPosition().x,y:X})})},$=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:new Date().toISOString(),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells},I=new Blob([JSON.stringify(N,null,2)],{type:"application/json"}),P=URL.createObjectURL(I),A=document.createElement("a"),F=`scada-canvas-${new Date().getTime()}.json`;A.href=P,A.download=F,A.click(),URL.revokeObjectURL(P),oe("保存成功","success")}catch(N){console.error("保存失败",N),oe("保存失败,请查看控制台","error")}},z=()=>{h.value&&h.value.click()},O=N=>{var F;const P=(F=N.target.files)==null?void 0:F[0];if(!P){oe("请选择文件","error");return}const A=new FileReader;A.onload=T=>{var w;try{const q=JSON.parse((w=T.target)==null?void 0:w.result);if(!q.cells){oe("无效的JSON文件格式","error");return}if(!confirm("导入将清空当前画布,是否继续?"))return;if(l){if(l.clearCells(),l.fromJSON({cells:q.cells}),l.getEdges().forEach(X=>{var H;const L=X.getData();(H=L==null?void 0:L.animation)!=null&&H.enabled&&B(X,L.animation)}),q.config&&Z.updateConfig(q.config),q.workflows&&Array.isArray(q.workflows)&&q.workflows.length>0)try{const X=localStorage.getItem("saved-workflows"),L=X?JSON.parse(X):[];let H=0,ae=0;q.workflows.forEach(re=>{const ne=L.findIndex(ge=>ge.id===re.id);ne>=0?(L[ne]={...re,updatedAt:Date.now()},ae++):(L.push(re),H++)}),localStorage.setItem("saved-workflows",JSON.stringify(L)),oe(`导入成功 画布已加载,流程: 新增${H}个,更新${ae}个`,"success")}catch(X){console.error("导入流程数据失败:",X),oe("画布导入成功, 但流程数据导入失败","warning")}else oe("导入成功","success");h.value&&(h.value.value="")}}catch(q){console.error("导入失败",q),oe("导入失败,JSON格式错误","error"),h.value&&(h.value.value="")}},A.readAsText(P)},W=()=>{if(!l)return;const N={cells:l.toJSON().cells,config:{width:Z.getConfig().size.width,height:Z.getConfig().size.height,background:Z.getConfig().background,grid:Z.getConfig().grid}};ot(Ie.SCADA_PREVIEW_DATA,N)},Y=()=>{m.value=!0},Q=()=>{if(!l){oe("画布未初始化","error");return}try{const N={version:"1.0.0",timestamp:at(rt()),config:{size:Z.getConfig().size,background:Z.getConfig().background,grid:Z.getConfig().grid,guides:Z.getConfig().guides,magnetism:Z.getConfig().magnetism,zoom:Z.getConfig().zoom},cells:l.toJSON().cells,nodes:l.getNodes().map(A=>({id:A.id,type:A.shape,position:A.getPosition(),size:A.getSize(),label:A.attr("label/text"),data:A.getData()})),edges:l.getEdges().map(A=>({id:A.id,source:A.getSourceCellId(),target:A.getTargetCellId()})),workflows:[]},I=new Set;if(l.getNodes().forEach(A=>{const F=A.getData();F!=null&&F.events&&Array.isArray(F.events)&&F.events.forEach(T=>{var w;T.action==="callProcess"&&((w=T.params)!=null&&w.processId)&&I.add(T.params.processId)})}),I.size>0)try{const A=localStorage.getItem("saved-workflows");if(A){const F=JSON.parse(A);N.workflows=F.filter(T=>I.has(T.id))}}catch(A){console.error("加载流程数据失败:",A)}const P=oo(N,"scada-export");oe(`已导出为 ${P}`,"success")}catch(N){console.error("导出失败",N),oe("导出失败,请查看控制台","error")}};return E({save:$,import:z,export:Q,preview:W,workflow:Y,zoomIn:d,zoomOut:p,clearAll:V,alignLeft:x,alignCenter:y,alignRight:v,alignTop:D,alignMiddle:_,alignBottom:S,distributeHorizontal:C,distributeVertical:k,addNode:r,updateNode:c,deleteNode:f,getSelectedNode:()=>a.value,selectNode:N=>{if(!l)return!1;const I=l.getCellById(N);return I?(l.select(I),!0):!1},clearSelection:()=>{l&&(l.unselect(l.getSelectedCells()),a.value=null)},getGraph:()=>l,getCanvasData:()=>l?{version:"1.0.0",timestamp:at(rt()),config:Z.getConfig(),cells:l.toJSON().cells,nodes:l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})),edges:l.getEdges().map(N=>({id:N.id,source:N.getSourceCellId(),target:N.getTargetCellId()}))}:null,loadCanvasData:N=>{if(!l)return!1;try{return l.clearCells(),l.fromJSON({cells:N.cells}),N.config&&Z.updateConfig(N.config),!0}catch(I){return console.error("加载画布数据失败:",I),!1}},getAllNodes:()=>l?l.getNodes().map(N=>({id:N.id,type:N.shape,position:N.getPosition(),size:N.getSize(),label:N.attr("label/text"),data:N.getData()})):[],getNodeById:N=>{if(!l)return null;const I=l.getCellById(N);if(!I||!I.isNode())return null;const P=I;return{id:P.id,type:P.shape,position:P.getPosition(),size:P.getSize(),label:P.attr("label/text"),data:P.getData()}},getConfigManager:()=>Z,updateCanvasConfig:N=>{Z.updateConfig(N)},setZoom:N=>{Z.setZoom(N)},setCanvasSize:(N,I)=>{Z.updateSize({width:N,height:I})},setBackgroundColor:N=>{Z.updateBackground({color:N})},getAnimationEngine:()=>Be}),(N,I)=>(e.openBlock(),e.createElementBlock("div",ap,[e.createVNode(Ge,{"selected-nodes-count":s.value,onSave:$,onImport:z,onWorkflow:Y,onPreview:W,onExport:Q,onZoomIn:d,onZoomOut:p,onClearAll:V,onAlignLeft:x,onAlignCenter:y,onAlignRight:v,onAlignTop:D,onAlignMiddle:_,onAlignBottom:S,onDistributeHorizontal:C,onDistributeVertical:k},null,8,["selected-nodes-count"]),e.createElementVNode("input",{ref_key:"fileInputRef",ref:h,type:"file",accept:".json",style:{display:"none"},onChange:O},null,544),e.createElementVNode("div",rp,[e.createVNode(Xe,{onAddComponent:r}),e.createVNode(Kn,{ref_key:"canvasAreaRef",ref:o},null,512),e.createVNode(lt,{ref:"propertyPanelRef","selected-node":a.value,"selected-edge":t.value,onUpdateNode:c,onDeleteNode:f,onUpdateEdge:u,onDeleteEdge:b},null,8,["selected-node","selected-edge"])]),e.createVNode(Ed,{"auth-code":g.authCode,"custom-footer":g.customFooter},null,8,["auth-code","custom-footer"]),e.createVNode(op,{visible:m.value,"onUpdate:visible":I[0]||(I[0]=P=>m.value=P),"scada-graph":e.unref(l),onClose:I[1]||(I[1]=P=>m.value=!1)},null,8,["visible","scada-graph"])]))}}),[["__scopeId","data-v-94b1d989"]]),lp={ScadaCanvas:Xo,PropertyPanel:lt,Header:Ge,ComponentLibrary:Xe,CanvasConfigPanel:Ye,BindingCard:Qe,EventCard:Je,BasicPropertiesTab:Ke,AttributeConfigDialog:et,CustomCodeDialog:tt},Yo=g=>{Object.entries(lp).forEach(([E,o])=>{g.component(E,o)})},sp={install:Yo,version:"1.0.0"};G.AttributeConfigDialog=et,G.BasicComponents=wn,G.BasicPropertiesTab=Ke,G.BindingCard=Qe,G.CanvasConfigPanel=Ye,G.ComponentLibrary=Xe,G.CustomCodeDialog=tt,G.EventCard=Je,G.Header=Ge,G.IoTComponents=Sn,G.PropertyPanel=lt,G.STORAGE_KEYS=Ie,G.ScadaCanvas=Xo,G.animationEngine=Be,G.canvasConfigItems=zn,G.canvasConfigManager=Z,G.componentRegistry=Pe,G.default=sp,G.defaultCanvasConfig=je,G.exportToJSON=oo,G.formatTimestamp=at,G.generateEventId=no,G.generateNodeId=dc,G.generateUniqueId=nt,G.getCurrentTimestamp=rt,G.install=Yo,G.loadFromLocal=ic,G.loadFromSession=eo,G.randomPosition=ao,G.removeFromLocal=cc,G.removeFromSession=to,G.saveToLocal=sc,G.saveToSession=ot,G.showMessage=oe,G.sizePresetMap=Re,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nywqs/scada-engine",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "自研 SCADA 组态引擎 - 基于 AntV X6",
5
5
  "type": "module",
6
6
  "main": "./dist/scada-engine.umd.js",