:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html,body{margin:0;padding:0}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--bg-main:#0d1117;--bg-sidebar:#131920;--bg-card:#1a212b;--bg-elevated:#212a35;--text-main:#e6edf3;--text-muted:#8b949e;--border-color:#2b3440;--accent-color:#58a6ff;--accent-hover:#79c0ff;--sidebar-hover:#1d252f;--header-bg:#131920;--alarm-ok:#3fb950;--alarm-warn:#d29922;--alarm-crit:#f85149;--shadow-card:0 1px 3px #00000059;--shadow-raised:0 8px 24px #00000073;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--font-num:ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace}[data-theme=industrial-dark]{--bg-main:#0d1117;--bg-sidebar:#131920;--bg-card:#1a212b;--bg-elevated:#212a35;--text-main:#e6edf3;--text-muted:#8b949e;--border-color:#2b3440;--accent-color:#58a6ff;--accent-hover:#79c0ff;--sidebar-hover:#1d252f;--header-bg:#131920;--alarm-ok:#3fb950;--alarm-warn:#d29922;--alarm-crit:#f85149;--shadow-card:0 1px 3px #00000059;--shadow-raised:0 8px 24px #00000073}[data-theme=control-room]{--bg-main:#c4c9ce;--bg-sidebar:#d8dcdf;--bg-card:#e8eaec;--bg-elevated:#f2f4f5;--text-main:#16191c;--text-muted:#5b6570;--border-color:#a3abb3;--accent-color:#14548f;--accent-hover:#1c6cb5;--sidebar-hover:#cbd0d4;--header-bg:#d8dcdf;--alarm-ok:#17743a;--alarm-warn:#a86a00;--alarm-crit:#b3241c;--shadow-card:0 1px 2px #0000002e;--shadow-raised:0 6px 18px #00000038}[data-theme=light]{--bg-main:#f4f6f9;--bg-sidebar:#fff;--bg-card:#fff;--bg-elevated:#f8fafc;--text-main:#16202c;--text-muted:#5f6b7a;--border-color:#dfe4ea;--accent-color:#2563eb;--accent-hover:#1d4ed8;--sidebar-hover:#f1f4f8;--header-bg:#fff;--alarm-ok:#15803d;--alarm-warn:#b45309;--alarm-crit:#dc2626;--shadow-card:0 1px 3px #10182814;--shadow-raised:0 10px 28px #10182824}[data-theme=amber-night]{--bg-main:#12100b;--bg-sidebar:#1a1610;--bg-card:#221d14;--bg-elevated:#2b241a;--text-main:#f2e3c4;--text-muted:#a3906e;--border-color:#3a3123;--accent-color:#ffb020;--accent-hover:#ffc94d;--sidebar-hover:#241e15;--header-bg:#1a1610;--alarm-ok:#9bbf3f;--alarm-warn:#ffb020;--alarm-crit:#ff6b4a;--shadow-card:0 1px 3px #00000080;--shadow-raised:0 8px 24px #0009}*{box-sizing:border-box;margin:0;padding:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}body{background-color:var(--bg-main);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s,color .25s;overflow:hidden}.stat-value,.graph-current-value,.io-value-text,.indicator-list-value,.indicator-table td,.io-address{font-family:var(--font-num);font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px;border-radius:var(--radius-sm)}#root{width:100%;height:100vh}.dashboard-wrapper{width:100%;height:100%;display:flex}.sidebar{background-color:var(--bg-sidebar);border-right:1px solid var(--border-color);z-index:10;flex-direction:column;flex-shrink:0;transition:width .3s cubic-bezier(.4,0,.2,1);display:flex}.sidebar-open .sidebar{width:280px}.sidebar-closed .sidebar{width:70px}.sidebar-header{padding:0 var(--space-3);justify-content:space-between;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--border-color);flex-shrink:0;height:64px;display:flex}.brand{align-items:center;gap:var(--space-2);min-width:0;text-decoration:none;display:flex;overflow:hidden}.brand-mark{background:var(--accent-color);color:#fff;letter-spacing:.5px;border-radius:9px;flex:none;place-items:center;width:34px;height:34px;font-size:13px;font-weight:800;display:grid}.brand-text{letter-spacing:.3px;color:var(--text-main);white-space:nowrap;font-size:19px;font-weight:700}.brand-text span{color:var(--accent-color)}.sidebar-closed .sidebar-header{justify-content:center;padding:0}.sidebar-closed .brand{justify-content:center}.menu-icon{cursor:pointer;border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-muted);background:0 0;border:none;flex:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.menu-icon:hover{background:var(--sidebar-hover);color:var(--text-main)}.sidebar-closed .sidebar-header .desktop-only{display:none}.sidebar-nav{flex-grow:1;margin-top:15px;overflow-y:auto}.nav-link{color:var(--text-muted);cursor:pointer;align-items:center;gap:var(--space-3);white-space:nowrap;border-left:3px solid #0000;padding:13px 20px;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex;overflow:hidden}.nav-link:hover,.nav-link.active{background:var(--sidebar-hover);color:var(--text-main);border-left-color:var(--accent-color)}.nav-link.active{font-weight:700}.nav-link span{letter-spacing:.6px;font-size:13px;font-weight:600}.nav-dropdown{flex-direction:column;display:flex}.dropdown-content{background:#00000005;background:color-mix(in srgb, var(--bg-main) 60%, transparent);flex-direction:column;display:flex}.dropdown-link{text-align:left;color:var(--text-muted);border-left:3px solid #0000;justify-content:flex-start;align-items:center;padding:11px 20px 11px 52px;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex}.dropdown-link:hover{color:var(--text-main);background:var(--sidebar-hover);border-left-color:var(--accent-color)}.main-content{background-color:var(--bg-main);flex-direction:column;flex-grow:1;min-width:0;display:flex}.top-header{border-bottom:1px solid var(--border-color);background:var(--header-bg);justify-content:space-between;align-items:center;height:70px;padding:0 40px;display:flex}.header-left h1{letter-spacing:1.4px;text-transform:uppercase;color:var(--text-muted);font-size:15px;font-weight:700}.theme-toggle{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex}.theme-toggle:hover{background:var(--sidebar-hover);color:var(--text-main);border-color:var(--accent-color)}.theme-picker{align-items:center;gap:var(--space-2);padding:0 var(--space-3);border:1px solid var(--border-color);border-radius:var(--radius-sm);height:36px;color:var(--text-muted);transition:border-color .2s;display:flex}.theme-picker:hover{border-color:var(--accent-color)}.theme-picker select{color:var(--text-main);cursor:pointer;padding-right:var(--space-1);background:0 0;border:none;outline:none;font-size:13px;font-weight:600}.theme-picker select option{background:var(--bg-card);color:var(--text-main)}.content-area{padding:var(--space-6);scrollbar-gutter:stable both-edges;flex-grow:1;overflow-y:auto}.content-area>*{width:100%;max-width:1440px;margin-inline:auto}.workspace-toolbar{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;display:flex}.toolbar-title{align-items:center;gap:15px;display:flex}.back-btn{background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-main);cursor:pointer;border-radius:6px;padding:8px}.toolbar-title h3{font-size:20px;font-weight:500}.breadcrumb{color:var(--accent-color);font-weight:600}.divider{color:var(--text-muted);margin:0 5px;font-weight:400}.grid-container{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:25px;display:grid}.grid-item{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-color);height:220px;box-shadow:var(--shadow-card);transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden}.add-card{cursor:pointer;border:2px dashed var(--border-color);color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:14px;font-weight:600;transition:all .3s;display:flex}.add-card:hover{border-color:var(--accent-color);color:var(--accent-color);background:var(--bg-elevated);transform:translateY(-2px)}.add-icon{transition:transform .3s}.add-card:hover .add-icon{transform:scale(1.1)rotate(90deg)}.node-card:before,.interactive-node-card:before{content:"";background:var(--node-accent,var(--accent-color));z-index:3;pointer-events:none;height:4px;position:absolute;top:0;left:0;right:0}.interactive-node-card{position:relative}.node-card{cursor:pointer;flex-direction:column;display:flex}.node-title-center{flex-direction:column;justify-content:center;align-items:center;gap:10px;transition:opacity .3s;display:flex;position:absolute;inset:0}.node-title-center h2{color:var(--text-main);text-transform:uppercase;letter-spacing:1px;text-align:center;font-size:24px}.master-tag{letter-spacing:.5px;color:#f59e0b;text-transform:uppercase;background:#f59e0b1f;border:1px solid #f59e0b66;border-radius:20px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-flex}.node-hover-content{opacity:0;background:var(--bg-card);z-index:2;flex-direction:column;height:100%;padding:20px;transition:opacity .3s;display:flex}.node-card:hover .node-title-center{opacity:0}.node-card:hover .node-hover-content{opacity:1}.node-card:hover{box-shadow:var(--shadow-raised);border-color:var(--accent-color);transform:translateY(-2px)}.node-card-header{justify-content:space-between;align-items:flex-start;margin-bottom:15px;display:flex}.node-title{color:var(--text-main);font-size:18px;font-weight:600}.node-actions{gap:10px;display:flex}.action-icon{color:var(--text-muted);transition:color .2s}.action-icon.edit:hover{color:var(--accent-color)}.action-icon.settings:hover{color:var(--text-main)}.node-card-body{flex-direction:column;flex-grow:1;justify-content:space-between;display:flex}.node-desc{color:var(--text-muted);font-size:14px;line-height:1.6}.node-meta{flex-wrap:wrap;gap:10px;margin-top:15px;display:flex}.badge{align-items:center;gap:var(--space-1);background:var(--bg-elevated);border:1px solid var(--border-color);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.master-badge{color:#f59e0b;background:#f59e0b1f;border-color:#f59e0b66;align-items:center;gap:4px;display:inline-flex}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;background:#0009;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.modal-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;width:100%;max-width:500px;max-height:90vh;padding:35px;overflow-y:auto;box-shadow:0 25px 50px -12px #00000040}.modal-content h3{color:var(--text-main);margin-bottom:25px;font-size:22px}.modal-content form{flex-direction:column;gap:15px;display:flex}.modal-content input,.modal-content textarea,.modal-content select{background:var(--bg-main);border:1px solid var(--border-color);width:100%;color:var(--text-main);border-radius:6px;outline:none;padding:12px;font-size:14px}.modal-content input:focus,.modal-content select:focus,.modal-content textarea:focus{border-color:var(--accent-color)}.form-grid{grid-template-columns:1fr 1fr;gap:15px;display:grid}.form-grid label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.form-field-full{grid-column:1/-1}.form-grid input[type=text],.form-grid input[type=number]{background:var(--bg-main);border:1px solid var(--border-color);width:100%;color:var(--text-main);border-radius:6px;outline:none;padding:12px;font-size:14px}.form-grid input:focus{border-color:var(--accent-color)}.form-grid input[type=checkbox]{width:18px;height:18px;margin-top:4px}.indicator-config-preview{border-top:1px dashed var(--border-color);border-bottom:1px dashed var(--border-color);flex-direction:column;align-items:center;padding:10px 0;display:flex}.indicator-config-preview>div{width:100%;max-width:240px}.form-error{color:#ef4444;text-align:center;font-size:13px;font-weight:600}.gauge-range-labels{justify-content:space-between;margin-top:-10px;padding:0 10px;font-size:11px;display:flex}.form-actions{gap:15px;margin-top:10px;display:flex}.btn-save,.btn-cancel{cursor:pointer;border:none;border-radius:6px;flex:1;padding:12px;font-size:14px;font-weight:600}.btn-save{background:var(--accent-color);color:#fff}.btn-save:hover{background:var(--accent-hover)}.btn-cancel{background:var(--border-color);color:var(--text-main)}.btn-cancel:hover{background:var(--text-muted);color:#fff}.add-new-btn{align-items:center;gap:8px;padding:10px 20px;display:flex}.interactive-dashboard-area{margin-top:50px;padding-top:20px}.dashboard-divider{color:var(--text-muted);text-transform:uppercase;letter-spacing:2px;align-items:center;margin-bottom:20px;font-size:12px;font-weight:600;display:flex}.dashboard-divider:before,.dashboard-divider:after{content:"";border-bottom:1px dashed var(--border-color);flex:1;margin:0 15px}.interactive-node-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 4px 6px -1px #0000001a}.interactive-header{background:var(--bg-elevated);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:10px 15px;display:flex}.drag-handle{cursor:grab;color:var(--text-muted)}.drag-handle:active{cursor:grabbing}.interactive-title{color:var(--text-main);text-align:center;flex:1;font-size:14px;font-weight:600}.icon-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:4px;transition:background .2s;display:flex}.icon-btn:hover{background:var(--border-color);color:var(--text-main)}.icon-btn.is-pinned{color:var(--accent-color)}.bound-icon{color:var(--alarm-ok)}.interactive-body{padding:var(--space-3);gap:var(--space-2);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.interactive-desc{color:var(--text-muted);font-size:12px}.interactive-badge{align-self:flex-start}.react-resizable-handle{filter:invert(50%);bottom:5px!important;right:5px!important}.empty-workspace-state{border:2px dashed var(--border-color);background:var(--bg-card);cursor:pointer;height:350px;color:var(--text-muted);text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:20px;transition:all .3s;display:flex}.empty-workspace-state:hover{border-color:var(--accent-color);color:var(--accent-color);transform:translateY(-3px)}.empty-state-icon{margin-bottom:15px;transition:transform .3s}.empty-workspace-state:hover .empty-state-icon{transform:scale(1.1)rotate(90deg)}.empty-workspace-state h3{color:var(--text-main);margin-bottom:8px;font-size:18px}.empty-workspace-state p{font-size:13px}.workspace-intro,.workspace-empty{text-align:center;min-height:100%;color:var(--text-muted);justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.workspace-intro h2,.workspace-empty h2{color:var(--text-main);font-size:22px;font-weight:600}.contact-card{gap:4px}.indicator-root{gap:var(--space-1);flex-direction:column;flex:1;min-height:0;display:flex}.indicator-chart{flex:1;width:100%;min-height:0}.indicator-chart>.echarts-for-react{height:100%!important}.stat-indicator{gap:var(--space-2)}.stat-value{color:var(--text-main);font-size:clamp(22px,6cqw,40px);font-weight:700;line-height:1.1}.graph-current-value{color:var(--text-main);font-size:clamp(16px,4cqw,28px);font-weight:700}.interactive-node-card{container-type:inline-size}.state-timeline-track{border-radius:4px;gap:2px;height:28px;display:flex;overflow:hidden}.state-timeline-cell{flex:1}.state-timeline-legend{color:var(--text-muted);flex-wrap:wrap;gap:10px;margin-top:10px;font-size:11px;display:flex}.state-legend-item{align-items:center;gap:5px;display:flex}.state-legend-dot{border-radius:50%;width:9px;height:9px;display:inline-block}.indicator-list{flex-direction:column;gap:6px;font-size:13px;list-style:none;display:flex}.indicator-list li{background:var(--bg-main);color:var(--text-main);border-radius:6px;justify-content:space-between;padding:6px 10px;display:flex}.indicator-list-value{color:var(--accent-color);font-weight:700}.indicator-table{border-collapse:collapse;width:100%;font-size:12px}.indicator-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border-color);padding:6px 8px;font-weight:600}.indicator-table td{color:var(--text-main);border-bottom:1px solid var(--border-color);padding:6px 8px}.quality-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.quality-dot.good{background:#4ecdc4}.quality-dot.uncertain{background:#fbbf24}.notepad-indicator{resize:vertical;background:var(--bg-main);border:1px solid var(--border-color);width:100%;min-height:90px;color:var(--text-main);border-radius:6px;outline:none;padding:10px;font-family:inherit;font-size:13px}.notepad-indicator:focus{border-color:var(--accent-color)}.io-watch-table-wrap{gap:var(--space-2);flex-direction:column;flex:1;min-height:0;display:flex}.io-watch-toolbar{justify-content:flex-end;display:flex}.io-add-btn{align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);flex:none;font-size:12px;display:inline-flex}.io-empty-state{padding:var(--space-5);text-align:center;color:var(--text-muted);border:1px dashed var(--border-color);border-radius:var(--radius-md);font-size:12px;line-height:1.6}.io-table-scroll{border:1px solid var(--border-color);border-radius:var(--radius-md);flex:1;min-height:0;overflow:auto}.io-watch-table{border-collapse:collapse;width:100%}.io-watch-table th{text-align:left;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted);padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border-bottom:1px solid var(--border-color);z-index:1;font-size:11px;font-weight:700;position:sticky;top:0}.io-watch-table td{padding:var(--space-2) var(--space-3);color:var(--text-main);border-bottom:1px solid var(--border-color);white-space:nowrap;font-size:12px}.io-watch-table tr:last-child td{border-bottom:none}.io-watch-table tbody tr:hover{background:var(--bg-elevated)}.io-direction-badge.input{color:#45b7d1;background:#45b7d11f}.io-direction-badge.output{color:#a78bfa;background:#a78bfa1f}.io-address{color:var(--text-muted);font-family:ui-monospace,Consolas,monospace;font-size:12px}.io-value-text{font-weight:700}.io-unbound{color:var(--text-muted);font-size:12px;font-style:italic}.interactive-badges{flex-wrap:wrap;gap:5px;display:flex}.indicator-badge{color:#3b82f6;background:#3b82f61a}.live-badge{color:#4ecdc4;letter-spacing:.5px;background:#4ecdc424;border-color:#4ecdc466;align-items:center;gap:4px;display:inline-flex}.sim-badge{color:var(--text-muted);background:0 0;font-style:italic}.indicator-waiting{color:var(--text-muted);align-items:center;gap:6px;padding:8px 0;font-size:12px;font-style:italic;display:flex}.header-right{align-items:center;gap:15px;display:flex}.live-status{border:1px solid #0000;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.live-status-open{color:#4ecdc4;background:#4ecdc41f;border-color:#4ecdc459}.live-status-connecting{color:#fbbf24;background:#fbbf241f;border-color:#fbbf2459}.live-status-closed{color:var(--text-muted);border-color:var(--border-color);background:#7878781f}.bind-label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.bind-hint{color:var(--text-muted);background:var(--bg-main);border-left:3px solid var(--accent-color);border-radius:6px;padding:10px 12px;font-size:12px;line-height:1.5}.api-error-banner{color:#ef4444;background:#ef44441a;border:1px solid #ef444459;border-radius:8px;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px;padding:12px 18px;font-size:13px;font-weight:600;display:flex}.api-error-banner button{color:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid;border-radius:6px;padding:6px 14px;font-weight:600}@keyframes toganode-spin{to{transform:rotate(360deg)}}.spin{animation:1s linear infinite toganode-spin}.app-boot{justify-content:center;align-items:center;gap:var(--space-4);background:var(--bg-main);height:100vh;color:var(--text-muted);flex-direction:column;display:flex}.live-dot{background:var(--text-muted);opacity:.45;width:7px;height:7px;margin-right:var(--space-1);border-radius:50%;flex:none}.live-dot.is-live{background:var(--alarm-ok);opacity:1;box-shadow:0 0 0 3px color-mix(in srgb, var(--alarm-ok) 20%, transparent)}.drag-handle-placeholder{flex:none;width:16px}.user-menu{position:relative}.user-menu-trigger{align-items:center;gap:var(--space-2);border:1px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;height:36px;color:var(--text-main);background:0 0;padding:4px 10px 4px 4px;transition:border-color .15s;display:flex}.user-menu-trigger:hover{border-color:var(--accent-color)}.user-avatar{background:var(--accent-color);color:#fff;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;font-size:11px;font-weight:700;display:grid}.user-menu-meta{flex-direction:column;align-items:flex-start;max-width:150px;line-height:1.2;display:flex}.user-menu-meta strong{text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:12px;font-weight:600;overflow:hidden}.user-menu-meta small{color:var(--text-muted);font-size:10px}.user-dropdown{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:230px;box-shadow:var(--shadow-raised);padding:var(--space-2);z-index:200;position:absolute;top:calc(100% + 6px);right:0}.user-dropdown-head{gap:var(--space-1);padding:var(--space-2) var(--space-2) var(--space-3);border-bottom:1px solid var(--border-color);margin-bottom:var(--space-2);flex-direction:column;display:flex}.user-dropdown-head strong{color:var(--text-main);font-size:13px}.user-dropdown-head span{color:var(--text-muted);word-break:break-all;font-size:12px}.user-dropdown button{align-items:center;gap:var(--space-2);width:100%;padding:9px var(--space-2);border-radius:var(--radius-sm);color:var(--text-main);cursor:pointer;text-align:left;background:0 0;border:none;font-size:13px;font-weight:600;display:flex}.user-dropdown button:hover{background:var(--sidebar-hover)}.user-dropdown button.danger{color:var(--alarm-crit)}.role-chip{text-transform:uppercase;letter-spacing:.4px;border-radius:999px;align-self:flex-start;padding:3px 8px;font-size:10px;font-weight:700}.role-admin{color:var(--alarm-warn);background:color-mix(in srgb, var(--alarm-warn) 15%, transparent)}.role-team_lead{color:var(--accent-color);background:color-mix(in srgb, var(--accent-color) 15%, transparent)}.role-operator{color:var(--text-muted);background:color-mix(in srgb, var(--text-muted) 15%, transparent)}.settings-page{gap:var(--space-4);flex-direction:column;max-width:620px;display:flex}.settings-page-wide{max-width:100%}.settings-page h2{color:var(--text-main);font-size:20px}.settings-intro{color:var(--text-muted);font-size:13px;line-height:1.6}.settings-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow:hidden}.settings-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);font-size:13px;display:flex}.settings-row:last-child{border-bottom:none}.settings-row span:first-child{color:var(--text-muted)}.settings-action{flex:none;align-self:flex-start;padding:10px 18px;text-decoration:none;display:inline-block}.table-scroll{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);padding:var(--space-3);background:var(--bg-elevated);border-bottom:1px solid var(--border-color);white-space:nowrap;font-size:11px}.data-table td{padding:var(--space-3);color:var(--text-main);border-bottom:1px solid var(--border-color);white-space:nowrap;font-size:13px}.data-table tr:last-child td{border-bottom:none}.mono-cell{font-family:var(--font-num);color:var(--text-muted);font-size:12px}.you-chip{margin-left:var(--space-2);background:var(--accent-color);color:#fff;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700}.role-select{background:var(--bg-main);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-main);padding:6px 10px;font-size:12px;font-weight:600}.role-select:disabled{opacity:.55;cursor:not-allowed}.status-toggle{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:5px 12px;font-size:11px;font-weight:700}.status-toggle.active{color:var(--alarm-ok);border-color:color-mix(in srgb, var(--alarm-ok) 45%, transparent);background:color-mix(in srgb, var(--alarm-ok) 12%, transparent)}.status-toggle:disabled{opacity:.5;cursor:not-allowed}.viewer-empty{justify-content:center;align-items:center;gap:var(--space-2);color:var(--text-muted);text-align:center;padding:var(--space-5);border:1px dashed var(--border-color);box-shadow:none;background:0 0;flex-direction:column;display:flex}.viewer-empty span{opacity:.8;font-size:12px}.auth-page{background:var(--bg-main);grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.auth-brand-panel{justify-content:center;gap:var(--space-7);padding:var(--space-7);background:var(--bg-sidebar);border-right:1px solid var(--border-color);flex-direction:column;display:flex;position:relative;overflow:hidden}.auth-brand-panel:after{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--accent-color) 18%, transparent), transparent 70%);pointer-events:none;border-radius:50%;width:420px;height:420px;position:absolute;top:-100px;right:-140px}.auth-brand h1{letter-spacing:-.5px;color:var(--text-main);font-size:42px;font-weight:800}.auth-brand h1 span{color:var(--accent-color)}.auth-brand-tagline{margin-top:var(--space-2);color:var(--text-muted);font-size:14px}.auth-feature-list{gap:var(--space-5);flex-direction:column;list-style:none;display:flex}.auth-feature-list li{gap:var(--space-3);color:var(--text-muted);align-items:flex-start;display:flex}.auth-feature-list svg{color:var(--accent-color);flex:none;margin-top:2px}.auth-feature-list div{flex-direction:column;gap:2px;display:flex}.auth-feature-list strong{color:var(--text-main);font-size:14px}.auth-feature-list span{font-size:12.5px;line-height:1.5}.auth-brand-footer{color:var(--text-muted);opacity:.7;font-size:12px}.auth-form-panel{padding:var(--space-6);justify-content:center;align-items:center;display:flex}.auth-form-wrap{width:100%;max-width:380px}.auth-form-wrap h2{color:var(--text-main);font-size:24px;font-weight:700}.auth-subtitle{margin-top:var(--space-2);color:var(--text-muted);font-size:13px}.auth-form{gap:var(--space-4);margin-top:var(--space-5);flex-direction:column;display:flex}.auth-form label{gap:var(--space-2);color:var(--text-muted);flex-direction:column;font-size:12.5px;font-weight:600;display:flex}.auth-hint{opacity:.75;font-weight:400}.auth-form input{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-main);outline:none;padding:12px 14px;font-size:14px;transition:border-color .15s}.auth-form input:focus{border-color:var(--accent-color)}.auth-submit{justify-content:center;align-items:center;gap:var(--space-2);margin-top:var(--space-1);padding:13px;font-size:14px;display:flex}.auth-submit:disabled{opacity:.65;cursor:not-allowed}.auth-link-muted{text-align:center;color:var(--text-muted);font-size:13px;text-decoration:none}.auth-link-muted:hover{color:var(--accent-color)}.auth-footer{margin-top:var(--space-5);text-align:center;color:var(--text-muted);font-size:13px}.auth-footer a,.auth-form-wrap a{color:var(--accent-color);font-weight:600;text-decoration:none}.auth-footer a:hover,.auth-form-wrap a:hover{text-decoration:underline}.auth-error,.auth-success{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;font-weight:600;line-height:1.4;display:flex}.auth-error{color:var(--alarm-crit);background:color-mix(in srgb, var(--alarm-crit) 12%, transparent)}.auth-success{color:var(--alarm-ok);background:color-mix(in srgb, var(--alarm-ok) 12%, transparent)}.auth-dev-link{color:var(--text-muted);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--bg-card);border-left:3px solid var(--alarm-warn);font-size:12.5px;line-height:1.6}.auth-dev-link a{margin-top:var(--space-2);word-break:break-all;display:block}.home{gap:var(--space-5);flex-direction:column;display:flex}.home-hero{justify-content:space-between;align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-6);border-radius:var(--radius-lg);border:1px solid var(--border-color);background:linear-gradient(135deg, color-mix(in srgb, var(--accent-color) 10%, var(--bg-card)) 0%, var(--bg-card) 55%);flex-wrap:wrap;display:flex;position:relative;overflow:hidden}.home-hero:before{content:"";background:var(--accent-color);width:3px;position:absolute;top:0;bottom:0;left:0}.home-greeting{letter-spacing:.6px;text-transform:uppercase;color:var(--accent-color);font-size:12px;font-weight:600}.home-hero h2{color:var(--text-main);letter-spacing:-.4px;margin:var(--space-1) 0;font-size:clamp(22px,3vw,30px);font-weight:700}.home-sub{color:var(--text-muted);font-size:13px}.home-status{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-elevated);display:flex}.home-status div{flex-direction:column;gap:2px;display:flex}.home-status strong{color:var(--text-main);font-size:13px}.home-status span{color:var(--text-muted);font-size:11.5px}.home-status-dot{border-radius:50%;flex:none;width:9px;height:9px}.home-status.ok .home-status-dot{background:var(--alarm-ok);box-shadow:0 0 0 4px color-mix(in srgb, var(--alarm-ok) 22%, transparent)}.home-status.off .home-status-dot{background:var(--alarm-crit);box-shadow:0 0 0 4px color-mix(in srgb, var(--alarm-crit) 22%, transparent)}.stat-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.stat-tile{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--border-color);background:var(--bg-card);transition:border-color .18s,transform .18s;display:flex}.stat-tile:hover{border-color:var(--accent-color);transform:translateY(-2px)}.stat-tile-icon{background:var(--bg-elevated);width:34px;height:34px;color:var(--text-muted);border-radius:9px;flex:none;place-items:center;display:grid}.stat-tile-body{flex-direction:column;gap:1px;min-width:0;display:flex}.stat-tile-value{font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-main);font-size:24px;font-weight:700;line-height:1.15}.stat-tile-label{color:var(--text-main);font-size:12px;font-weight:600}.stat-tile-hint{color:var(--text-muted);font-size:11px}.home-panel{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-card);overflow:hidden}.home-panel-head{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);background:var(--bg-elevated);justify-content:space-between;align-items:center;display:flex}.home-panel-head h3{letter-spacing:.7px;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:700}.home-panel-link{color:var(--accent-color);font-size:12px;font-weight:600;text-decoration:none}.home-panel-link:hover{text-decoration:underline}.home-empty{padding:var(--space-6);text-align:center;color:var(--text-muted);gap:var(--space-2);flex-direction:column;display:flex}.home-empty p{color:var(--text-main);font-size:14px}.home-empty span{font-size:12.5px}.reading-list{list-style:none}.reading-list li{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-color);grid-template-columns:auto 1fr auto auto auto;display:grid}.reading-list li:last-child{border-bottom:none}.reading-list li:hover{background:var(--bg-elevated)}.reading-quality{border-radius:50%;flex:none;width:8px;height:8px}.reading-quality.good{background:var(--alarm-ok)}.reading-quality.uncertain{background:var(--alarm-warn)}.reading-quality.bad{background:var(--alarm-crit)}.reading-name{color:var(--text-main);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.reading-source{letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:3px 7px;font-size:10px;font-weight:700}.src-opcua{color:var(--accent-color);background:color-mix(in srgb, var(--accent-color) 14%, transparent)}.src-mqtt{color:var(--alarm-ok);background:color-mix(in srgb, var(--alarm-ok) 14%, transparent)}.src-manual{color:var(--text-muted);background:color-mix(in srgb, var(--text-muted) 14%, transparent)}.reading-value{font-family:var(--font-num);font-variant-numeric:tabular-nums;color:var(--text-main);font-size:15px;font-weight:700}.reading-time{font-family:var(--font-num);color:var(--text-muted);font-size:12px}.home-actions{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(230px,1fr));display:grid}.home-action{align-items:center;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-card);color:var(--text-main);text-decoration:none;transition:border-color .18s,transform .18s;display:flex}.home-action:hover{border-color:var(--accent-color);transform:translateY(-2px)}.home-action>div{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.home-action strong{font-size:13px}.home-action span{color:var(--text-muted);font-size:11.5px}.home-action svg:first-child{color:var(--accent-color);flex:none}.home-action svg:last-child{color:var(--text-muted);flex:none}.mobile-only{display:none!important}.mobile-nav-backdrop{display:none}@media (width<=1024px){.auth-page{grid-template-columns:1fr}.auth-brand-panel{display:none}.auth-form-panel{padding:var(--space-5) var(--space-4)}.auth-form-wrap{max-width:420px}}@media (width<=900px){.desktop-only{display:none!important}.mobile-only{display:flex!important}.sidebar{z-index:300;box-shadow:var(--shadow-raised);transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);width:264px!important}.mobile-nav-open .sidebar{transform:translate(0)}.mobile-nav-open .mobile-nav-backdrop{z-index:299;background:#00000080;display:block;position:fixed;inset:0}.top-header{padding:0 var(--space-4);gap:var(--space-3)}.header-left{align-items:center;gap:var(--space-3);min-width:0;display:flex}.header-left h1{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.header-right{gap:var(--space-2)}.content-area{padding:var(--space-4)}.grid-container{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.modal-content{padding:var(--space-5)}}@media (width<=620px){.user-menu-meta{display:none}.user-menu-trigger{padding:4px}.live-status-text{display:none}.live-status{padding:6px 9px}.content-area{padding:var(--space-3)}.grid-container{grid-template-columns:1fr}.grid-item{height:190px}.form-grid{grid-template-columns:1fr}.form-actions{flex-direction:column-reverse}.modal-content{padding:var(--space-4);border-radius:var(--radius-md)}.workspace-toolbar{align-items:flex-start;gap:var(--space-3);flex-direction:column}.settings-row{align-items:flex-start;gap:var(--space-1);flex-direction:column}.home-hero{padding:var(--space-4);align-items:stretch;gap:var(--space-4);flex-direction:column}.home-status{width:100%}.stat-grid{gap:var(--space-2);grid-template-columns:repeat(2,1fr)}.stat-tile{padding:var(--space-3);gap:var(--space-2);flex-direction:column}.stat-tile-value{font-size:20px}.reading-list li{gap:var(--space-2);padding:var(--space-3);grid-template-columns:auto 1fr auto auto}.reading-source{display:none}.home-actions{grid-template-columns:1fr}}
