.iot-command-page{--iot-bg:#07111f;--iot-panel:#0b192b;--iot-panel-2:#0e2035;--iot-line:#88a8ca33;--iot-muted:#8ea2ba;--iot-cyan:#2cd4d9;--iot-blue:#4a8cff;color:#eef7ff;background:radial-gradient(circle at 72% 0%, #2386c233, transparent 34%), radial-gradient(circle at 14% 100%, #19b4a91a, transparent 32%), var(--iot-bg);min-height:calc(100vh - 68px);margin:-22px -24px -28px;padding:22px}.iot-command-page button,.iot-command-page input{font:inherit}.iot-command-page button{cursor:pointer}.iot-command-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:16px;display:flex}.iot-command-header h2{color:#fff;letter-spacing:-.03em;margin:5px 0;font-size:clamp(24px,2vw,32px)}.iot-command-header p{max-width:760px;color:var(--iot-muted);margin:0;font-size:13px;line-height:1.6}.iot-eyebrow{color:var(--iot-cyan);letter-spacing:.12em;align-items:center;gap:7px;font-size:11px;font-weight:900;display:inline-flex}.iot-header-actions{align-items:center;gap:10px;padding-top:6px;display:flex}.iot-snapshot-badge{border:1px solid var(--iot-line);color:#b9c9da;white-space:nowrap;background:#081626d1;border-radius:8px;align-items:center;gap:8px;min-height:38px;padding:0 12px;font-size:12px;font-weight:800;display:inline-flex}.iot-snapshot-badge i{background:#7f8ca0;border-radius:50%;width:8px;height:8px}.iot-snapshot-badge.ready i{background:#2bd99f;box-shadow:0 0 0 5px #2bd99f1f}.iot-button{border:1px solid var(--iot-line);color:#dceaff;background:#10233a;border-radius:8px;align-items:center;gap:8px;min-height:38px;padding:0 13px;font-weight:850;display:inline-flex}.iot-button:hover{color:#fff;border-color:#2cd4d98c}.iot-kpi-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.iot-kpi-card{border:1px solid var(--iot-line);background:linear-gradient(145deg,#0f2238f2,#09182af2);border-radius:10px;align-items:center;gap:13px;min-height:92px;padding:14px;display:flex;position:relative;overflow:hidden}.iot-kpi-card>span{color:#fff;background:#4a8cff2e;border-radius:9px;flex:none;place-items:center;width:38px;height:38px;display:grid}.iot-kpi-card>div{grid-template-columns:auto auto;align-items:end;gap:0 9px;min-width:0;display:grid}.iot-kpi-card small{color:var(--iot-muted);grid-column:1/-1;font-size:11px;font-weight:800}.iot-kpi-card strong{color:#fff;font-size:25px;line-height:1}.iot-kpi-card p{color:#a9bdd2;white-space:nowrap;margin:0;font-size:11px}.iot-kpi-card.amber>span{color:#ffc766;background:#f3b34924}.iot-kpi-card.green>span{color:#4be1ac;background:#2bd99f24}.iot-kpi-card.violet>span{color:#b697ff;background:#9167ff24}.iot-kpi-card.cyan>span{color:#43dbe5;background:#2cd4d924}.iot-kpi-watermark{color:#78a6ce0f;position:absolute;bottom:-9px;right:-7px;transform:rotate(-18deg)}.iot-command-grid{border:1px solid var(--iot-line);background:#050f1be0;border-radius:11px;grid-template-columns:280px minmax(0,1fr) 330px;height:min(760px,100vh - 270px);min-height:630px;transition:grid-template-columns .18s;display:grid;overflow:hidden;box-shadow:0 24px 60px #00000038}.iot-command-grid.left-collapsed{grid-template-columns:54px minmax(0,1fr) 330px}.iot-command-grid.right-collapsed{grid-template-columns:280px minmax(0,1fr) 54px}.iot-command-grid.left-collapsed.right-collapsed{grid-template-columns:54px minmax(0,1fr) 54px}.iot-asset-rail,.iot-operations-rail{background:#0a1a2cf0;min-width:0;min-height:0}.iot-asset-rail{border-right:1px solid var(--iot-line)}.iot-operations-rail{border-left:1px solid var(--iot-line)}.iot-rail-expand{color:#a9c0d8;background:0 0;border:0;flex-direction:column;align-items:center;gap:12px;width:100%;min-height:100%;padding:18px 0;display:flex}.iot-rail-expand:hover{color:#fff;background:#2cd4d90f}.iot-rail-expand span{color:#04131d;background:var(--iot-cyan);border-radius:12px;place-items:center;min-width:24px;height:24px;font-size:11px;font-weight:900;display:grid}.iot-rail-expand.right{color:#ffc766}.iot-asset-rail{grid-template-rows:auto auto auto minmax(0,1fr) auto;display:grid}.iot-rail-heading,.iot-operations-heading{border-bottom:1px solid var(--iot-line);justify-content:space-between;align-items:center;gap:12px;min-height:70px;padding:14px 15px;display:flex}.iot-rail-heading>div,.iot-operations-heading>div{gap:3px;min-width:0;display:grid}.iot-rail-heading span,.iot-operations-heading span{color:var(--iot-cyan);letter-spacing:.12em;font-size:10px;font-weight:900}.iot-rail-heading strong,.iot-operations-heading strong{color:#fff;font-size:15px}.iot-rail-heading button,.iot-operations-heading button{color:#91a9c2;background:0 0;border:1px solid #0000;border-radius:7px;flex:none;place-items:center;width:30px;height:30px;display:grid}.iot-rail-heading button:hover,.iot-operations-heading button:hover{color:#fff;border-color:var(--iot-line);background:#122840}.iot-search-field{border:1px solid var(--iot-line);color:#7e97b1;background:#05101db8;border-radius:8px;align-items:center;gap:8px;height:42px;margin:12px 12px 8px;padding:0 11px;display:flex}.iot-search-field:focus-within{border-color:#2cd4d99e;box-shadow:0 0 0 3px #2cd4d914}.iot-search-field input{color:#e8f5ff;background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:12px}.iot-search-field input::placeholder{color:#71869c}.iot-status-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:0 12px 10px;display:grid}.iot-status-filters button{border:1px solid var(--iot-line);color:#9eb2c7;background:#0f2237b8;border-radius:7px;align-items:center;gap:6px;min-width:0;height:30px;padding:0 7px;font-size:10px;font-weight:800;display:flex}.iot-status-filters button:first-child{grid-column:1/-1}.iot-status-filters button.active{color:#fff;background:#2cd4d91f;border-color:#2cd4d980}.iot-status-filters button i{background:#8090a2;border-radius:50%;width:6px;height:6px}.iot-status-filters button i.online{background:#2bd99f}.iot-status-filters button i.warning{background:#f3b349}.iot-status-filters button i.critical{background:#ff5c78}.iot-status-filters button i.provisioned{background:#8291aa}.iot-status-filters button b{color:#d9e8f7;margin-left:auto}.iot-device-list{scrollbar-width:thin;scrollbar-color:#2b455f transparent;flex-direction:column;gap:7px;min-height:0;padding:2px 12px 12px;display:flex;overflow:auto}.iot-device-card{border:1px solid var(--iot-line);color:#c8d8e8;text-align:left;background:#081626bd;border-radius:8px;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-height:74px;padding:9px;display:grid}.iot-device-card:hover{background:#122a42d1;border-color:#609fd585}.iot-device-card.active{border-color:var(--iot-cyan);box-shadow:inset 3px 0 0 var(--iot-cyan);background:linear-gradient(90deg,#2cd4d921,#11263de0)}.iot-device-icon{color:#8aa1b9;background:#8291aa1f;border-radius:8px;place-items:center;width:32px;height:32px;display:grid}.iot-device-card.online .iot-device-icon{color:#38d8a0;background:#2bd99f1a}.iot-device-card.warning .iot-device-icon{color:#f3b349}.iot-device-card.critical .iot-device-icon{color:#ff6d85}.iot-device-copy{gap:2px;min-width:0;display:grid}.iot-device-copy strong,.iot-device-copy small,.iot-device-copy em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iot-device-copy strong{color:#f4f9ff;font-size:12px}.iot-device-copy small{color:#8ba1b8;font-size:10px}.iot-device-copy em{color:#6f8ca8;font-size:10px;font-style:normal}.iot-device-reading{justify-items:end;gap:2px;max-width:64px;display:grid}.iot-device-reading b{color:#dff8ff;text-overflow:ellipsis;white-space:nowrap;max-width:64px;font-size:11px;overflow:hidden}.iot-device-reading small{color:#6f879f;font-size:9px}.iot-rail-empty,.iot-alert-empty{color:#718aa3;text-align:center;justify-items:center;gap:7px;padding:28px 14px;display:grid}.iot-rail-empty strong,.iot-alert-empty strong{color:#b9ccde;font-size:12px}.iot-rail-empty span,.iot-alert-empty span{font-size:10px;line-height:1.5}.iot-source-summary{background:#2cd4d90d;border:1px solid #2cd4d92e;border-radius:8px;gap:4px;margin:0 12px 12px;padding:11px;display:grid}.iot-source-summary span{color:var(--iot-cyan);align-items:center;gap:6px;font-size:10px;font-weight:900;display:flex}.iot-source-summary strong{color:#dbeaf6;font-size:11px}.iot-source-summary small{color:#7890a8;font-size:9px;line-height:1.45}.iot-visual-workspace{background:#050f1bc2;grid-template-rows:58px minmax(0,1fr) auto;min-width:0;min-height:0;display:grid}.iot-view-toolbar{border-bottom:1px solid var(--iot-line);background:#0a192ac2;justify-content:space-between;align-items:center;gap:12px;padding:0 16px;display:flex}.iot-view-tabs{align-items:stretch;gap:5px;height:100%;display:flex}.iot-view-tabs button{color:#8fa7bf;background:0 0;border:0;justify-content:center;align-items:center;gap:7px;min-width:116px;font-size:12px;font-weight:850;display:inline-flex;position:relative}.iot-view-tabs button:after{content:"";background:0 0;border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:0;left:12px;right:12px}.iot-view-tabs button:hover{color:#ddecf8}.iot-view-tabs button.active{color:#4ce3e6}.iot-view-tabs button.active:after{background:var(--iot-cyan);box-shadow:0 0 10px #2cd4d985}.iot-result-count{color:#718ba5;flex:none;font-size:10px;font-weight:800}.iot-view-stage{scrollbar-width:thin;scrollbar-color:#2b455f transparent;min-width:0;min-height:0;padding:16px;overflow:auto}.iot-workbench-empty{color:#567088;text-align:center;place-content:center;justify-items:center;gap:9px;height:100%;min-height:310px;display:grid}.iot-workbench-empty strong{color:#aac0d3;font-size:14px}.iot-workbench-empty p{color:#6e859b;max-width:360px;margin:0;font-size:11px;line-height:1.6}.iot-timeline{flex-direction:column;gap:7px;padding:2px 0 14px;display:flex;position:relative}.iot-timeline:before{content:"";background:linear-gradient(var(--iot-cyan), #50759726);width:1px;position:absolute;top:18px;bottom:18px;left:19px}.iot-timeline-row{color:#b6c8d9;text-align:left;background:#0b1b2eb8;border:1px solid #0000;border-radius:9px;grid-template-columns:38px 82px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:70px;padding:10px 13px 10px 5px;display:grid;position:relative}.iot-timeline-row:hover{background:#11273fd1;border-color:#5789b457}.iot-timeline-row.active{background:linear-gradient(90deg,#2cd4d914,#0e2238d1);border-color:#2cd4d97a}.iot-timeline-rail{z-index:1;place-items:center;display:grid;position:relative}.iot-timeline-rail i{background:#8291aa;border:3px solid #0b1a2c;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 2px #8291aa59}.iot-timeline-row.online .iot-timeline-rail i{background:#2bd99f;box-shadow:0 0 0 2px #2bd99f59}.iot-timeline-row.warning .iot-timeline-rail i{background:#f3b349;box-shadow:0 0 0 2px #f3b34959}.iot-timeline-row.critical .iot-timeline-rail i{background:#ff5c78;box-shadow:0 0 0 2px #ff5c785c}.iot-timeline-time{color:#718ba3;font-size:10px;line-height:1.35}.iot-timeline-content{grid-template-columns:auto minmax(0,1fr);gap:3px 9px;min-width:0;display:grid}.iot-timeline-content strong{color:#6f89a3;text-transform:uppercase;font-size:10px}.iot-timeline-content b{color:#f1f7fc;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.iot-timeline-content small{color:#8ca1b5;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:10px;overflow:hidden}.iot-timeline-location{color:#7894ad;text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;max-width:170px;font-size:10px;display:inline-flex;overflow:hidden}.iot-network-view,.iot-site-view{grid-template-rows:auto minmax(0,1fr) auto;height:100%;min-height:430px;display:grid;position:relative}.iot-view-notice{color:#7e98b1;background:#2cd4d90a;border:1px solid #2cd4d92b;border-radius:7px;align-items:center;gap:7px;margin-bottom:8px;padding:8px 10px;font-size:10px;display:flex}.iot-network-view svg{width:100%;height:100%;min-height:400px;overflow:visible}.iot-network-lines line{stroke:#34536d;stroke-width:1.2px;stroke-dasharray:5 6}.iot-network-lines .sensor-line{stroke:#705dc4;stroke-dasharray:3 4}.iot-hub-node circle{fill:#123a55;stroke:var(--iot-cyan);stroke-width:2px;filter:drop-shadow(0 0 12px #2cd4d94d)}.iot-hub-node svg{color:#56e2e4}.iot-hub-node text{fill:#89eced;font-size:12px;font-weight:900}.iot-device-node{cursor:pointer;outline:none}.iot-device-node circle{fill:#192b3f;stroke:#8291aa;stroke-width:2px;transition:all .16s}.iot-device-node svg{color:#aab8c7;pointer-events:none}.iot-device-node text{pointer-events:none}.iot-device-node .node-name{fill:#dce9f4;font-size:10px;font-weight:800}.iot-device-node .node-status{fill:#7189a1;font-size:8px}.iot-device-node.online circle{stroke:#2bd99f}.iot-device-node.warning circle{stroke:#f3b349}.iot-device-node.critical circle{stroke:#ff5c78}.iot-device-node.active circle{fill:#173b50;stroke:var(--iot-cyan);stroke-width:3px;filter:drop-shadow(0 0 11px #2cd4d975)}.iot-sensor-node circle{fill:#2a2250;stroke:#9a7cff;stroke-width:1.5px}.iot-sensor-node svg{color:#c8b9ff}.iot-sensor-node text{fill:#bdb1e5;font-size:8px}.iot-network-legend{color:#7d94aa;flex-wrap:wrap;justify-content:center;gap:16px;padding-top:5px;font-size:9px;display:flex}.iot-network-legend span:before{content:"";background:#8291aa;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.iot-network-legend .online:before{background:#2bd99f}.iot-network-legend .warning:before{background:#f3b349}.iot-network-legend .critical:before{background:#ff5c78}.iot-site-canvas{background-color:#0a1929;background-image:linear-gradient(#5a7c9b12 1px,#0000 1px),linear-gradient(90deg,#5a7c9b12 1px,#0000 1px);background-size:30px 30px;border:1px solid #5c80a233;border-radius:9px;min-height:430px;position:relative;overflow:hidden}.iot-site-axis{opacity:.55;position:absolute}.iot-site-axis.horizontal{border-top:1px dashed #35516b;top:50%;left:5%;right:5%}.iot-site-axis.vertical{border-left:1px dashed #35516b;top:7%;bottom:7%;left:50%}.iot-site-zone{color:#52718e;text-transform:uppercase;letter-spacing:.08em;background:#09192ab3;border:1px solid #517ea633;border-radius:6px;padding:6px 9px;font-size:9px;position:absolute}.iot-site-zone.zone-a{top:7%;left:5%}.iot-site-zone.zone-b{bottom:8%;right:5%}.iot-site-marker{z-index:2;color:#cfdae5;background:#16283b;border:2px solid #8291aa;border-radius:50% 50% 50% 8px;place-items:center;width:34px;height:34px;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 5px 12px #00000040}.iot-site-marker>span{color:#dce8f2;text-overflow:ellipsis;white-space:nowrap;background:#05101de0;border-radius:4px;max-width:120px;padding:3px 6px;font-size:9px;font-weight:800;position:absolute;top:38px;left:50%;overflow:hidden;transform:translate(-50%)}.iot-site-marker small{display:none}.iot-site-marker.online{color:#4de0ae;border-color:#2bd99f}.iot-site-marker.warning{color:#ffd074;border-color:#f3b349}.iot-site-marker.critical{color:#ff8197;border-color:#ff5c78}.iot-site-marker.active{z-index:3;border-color:var(--iot-cyan);color:#fff;background:#116076;box-shadow:0 0 0 5px #2cd4d921,0 0 18px #2cd4d952}.iot-site-scale{color:#6f879e;justify-items:end;gap:3px;font-size:8px;display:grid;position:absolute;bottom:15px;right:18px}.iot-site-scale span{border-top:2px solid #6f879e;width:60px}.iot-context-rail{border-top:1px solid var(--iot-line);background:#0b1c2fe6;grid-template-columns:auto 1.25fr .8fr 1fr .75fr;align-items:center;gap:14px;min-height:78px;padding:12px 16px;display:grid}.iot-context-status{border:1px solid var(--iot-line);color:#a7bbcf;white-space:nowrap;border-radius:7px;align-items:center;gap:7px;padding:7px 9px;font-size:9px;font-weight:900;display:inline-flex}.iot-context-status i{background:#8291aa;border-radius:50%;width:7px;height:7px}.iot-context-status.online i{background:#2bd99f}.iot-context-status.warning i{background:#f3b349}.iot-context-status.critical i{background:#ff5c78}.iot-context-rail>div:not(.iot-context-empty){border-left:1px solid var(--iot-line);gap:2px;min-width:0;padding-left:12px;display:grid}.iot-context-rail small{color:#6f879e;font-size:9px}.iot-context-rail strong,.iot-context-rail span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iot-context-rail strong{color:#edf6ff;font-size:12px}.iot-context-rail div span{color:#8198ae;font-size:9px}.iot-context-empty{color:#7890a8;text-align:center;grid-column:1/-1;font-size:11px}.iot-operations-rail{flex-direction:column;display:flex;overflow:hidden}.iot-operations-heading{flex:none}.iot-operations-heading span{color:#ffc766;align-items:center;gap:5px;display:inline-flex}.iot-operations-boundary{color:#9aabbd;background:#f3b3490d;border:1px solid #f3b34933;border-radius:8px;flex:none;align-items:flex-start;gap:8px;margin:11px 12px 3px;padding:10px;font-size:10px;line-height:1.5;display:flex}.iot-operations-boundary svg{color:#f3b349;flex:none}.iot-alert-section{flex-direction:column;flex:auto;min-height:0;padding:12px;display:flex;overflow:hidden}.iot-inspection-section{flex:none;padding:0 12px 12px}.iot-section-title{color:#92a8bc;letter-spacing:.05em;justify-content:space-between;align-items:center;min-height:28px;font-size:10px;font-weight:900;display:flex}.iot-section-title b{color:#0a1724;background:#f3b349;border-radius:10px;place-items:center;min-width:22px;height:20px;font-size:9px;display:grid}.iot-section-title svg{color:#728da7}.iot-alert-list{scrollbar-width:thin;scrollbar-color:#2b455f transparent;flex-direction:column;gap:6px;min-height:0;padding:4px 1px;display:flex;overflow:auto}.iot-alert-list button{border:1px solid var(--iot-line);color:#b9c9da;text-align:left;background:#081626b8;border-radius:8px;grid-template-columns:7px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-height:61px;padding:8px;display:grid}.iot-alert-list button:hover{background:#11263d;border-color:#f3b3497a}.iot-alert-list button>i{background:#f3b349;border-radius:50%;width:7px;height:7px}.iot-alert-list button.critical>i{background:#ff5c78;box-shadow:0 0 0 4px #ff5c781a}.iot-alert-list button>span{gap:1px;min-width:0;display:grid}.iot-alert-list strong,.iot-alert-list small,.iot-alert-list em{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iot-alert-list strong{color:#edf5fc;font-size:11px}.iot-alert-list small{color:#718ca5;font-size:9px}.iot-alert-list em{color:#9aaec0;font-size:9px;font-style:normal}.iot-alert-list button>b{color:#f3b349;font-size:9px}.iot-alert-list button.critical>b{color:#ff7189}.iot-inspection-list{gap:5px;display:grid}.iot-inspection-list>div{border:1px solid var(--iot-line);background:#0816269e;border-radius:7px;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:7px;min-height:44px;padding:7px 9px;display:grid}.iot-inspection-list svg{color:#f3b349}.iot-inspection-list .done svg{color:#2bd99f}.iot-inspection-list span{gap:1px;min-width:0;display:grid}.iot-inspection-list strong,.iot-inspection-list small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.iot-inspection-list strong{color:#bdcddd;font-size:10px}.iot-inspection-list small{color:#718ba4;font-size:9px}.iot-view-shortcuts{border-top:1px solid var(--iot-line);flex:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:10px 12px 12px;display:grid}.iot-view-shortcuts>span{color:#718ba3;grid-column:1/-1;font-size:9px;font-weight:900}.iot-view-shortcuts button{border:1px solid var(--iot-line);color:#91a7bb;background:#0f2237b8;border-radius:7px;place-items:center;gap:3px;min-width:0;min-height:39px;padding:5px;font-size:9px;font-weight:800;display:grid}.iot-view-shortcuts button:hover{color:#fff;background:#2cd4d917;border-color:#2cd4d973}@media (max-width:1500px){.iot-command-grid{grid-template-columns:250px minmax(0,1fr) 300px}.iot-command-grid.left-collapsed{grid-template-columns:54px minmax(0,1fr) 300px}.iot-command-grid.right-collapsed{grid-template-columns:250px minmax(0,1fr) 54px}.iot-context-rail{grid-template-columns:auto 1.1fr .7fr .9fr .65fr;gap:9px}}@media (max-width:1180px){.iot-command-grid,.iot-command-grid.left-collapsed,.iot-command-grid.right-collapsed,.iot-command-grid.left-collapsed.right-collapsed{grid-template-columns:250px minmax(0,1fr);height:auto;min-height:0;overflow:visible}.iot-asset-rail,.iot-visual-workspace{min-height:640px}.iot-operations-rail{border-top:1px solid var(--iot-line);border-left:0;grid-column:1/-1;grid-template-columns:1fr 1fr;min-height:420px;display:grid}.iot-operations-heading,.iot-operations-boundary,.iot-view-shortcuts{grid-column:1/-1}.iot-alert-section{min-height:260px}.iot-inspection-section{padding-top:12px}.iot-rail-expand.right{flex-direction:row;grid-column:1/-1;justify-content:center;min-height:70px}}@media (max-width:860px){.iot-command-page{margin:-16px -14px -22px;padding:15px}.iot-command-header{flex-direction:column;align-items:stretch;gap:12px}.iot-header-actions{justify-content:space-between;padding-top:0}.iot-kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.iot-command-grid,.iot-command-grid.left-collapsed,.iot-command-grid.right-collapsed,.iot-command-grid.left-collapsed.right-collapsed{flex-direction:column;display:flex}.iot-asset-rail{border-right:0;border-bottom:1px solid var(--iot-line);min-height:470px}.iot-visual-workspace{min-height:660px}.iot-operations-rail{min-height:520px;display:flex}.iot-rail-expand{flex-direction:row;justify-content:center;min-height:62px}.iot-context-rail{grid-template-columns:auto 1fr 1fr}.iot-context-rail>div:nth-of-type(3),.iot-context-rail>div:nth-of-type(4){display:none}}@media (max-width:560px){.iot-command-page{padding:12px}.iot-command-header h2{font-size:23px}.iot-command-header p{font-size:12px}.iot-header-actions{flex-direction:column;align-items:stretch}.iot-snapshot-badge,.iot-button{justify-content:center}.iot-kpi-strip{gap:8px}.iot-kpi-card{min-height:84px;padding:11px}.iot-kpi-card p{text-overflow:ellipsis;max-width:92px;overflow:hidden}.iot-command-grid{border-radius:8px}.iot-view-toolbar{flex-direction:column;align-items:stretch;padding:0 10px 8px}.iot-view-tabs{height:54px;overflow-x:auto}.iot-view-tabs button{min-width:105px}.iot-result-count{text-align:right}.iot-view-stage{padding:10px}.iot-timeline-row{grid-template-columns:32px minmax(0,1fr);gap:6px}.iot-timeline-time,.iot-timeline-content{grid-column:2}.iot-timeline-location{display:none}.iot-timeline:before{left:15px}.iot-network-view svg{min-width:680px}.iot-site-canvas{min-width:600px}.iot-site-view{overflow-x:auto}.iot-context-rail{grid-template-columns:1fr 1fr}.iot-context-status{justify-content:center}.iot-context-rail>div:nth-of-type(2){display:none}.iot-operations-rail{min-height:560px}}.iot-asset-rail .data-pagination{grid-template-columns:1fr}.iot-asset-rail .data-pagination-summary,.iot-asset-rail .data-pagination-size,.iot-asset-rail .data-pagination-pages{grid-column:1}.iot-asset-rail .data-pagination-pages{flex-wrap:wrap;justify-content:flex-start}
@media (max-width:1180px){.login-shell{grid-template-columns:1fr}.login-visual{min-height:470px}.app-shell{grid-template-columns:76px minmax(0,1fr)}.sidebar{align-items:center;padding:14px 10px}.brand-mark{justify-content:center;width:46px;padding:0}.brand-mark:after,.nav-button span,.nav-section-title{display:none}.nav-stack{width:100%;padding-right:0}.nav-section{align-items:center}.nav-button{grid-template-columns:1fr;place-items:center;width:56px;padding:0}.grid-4,.split,.device-grid,.device-scope-grid,.device-bottom-rail{grid-template-columns:1fr}.device-scope-panel{grid-template-rows:auto;grid-template-columns:repeat(2,minmax(0,1fr))}.device-detail{border-left:0;border-top:1px solid var(--line)}.floorplan-lines,.connection-layer{width:82%}.sensor-legend{right:16px}}@media (max-width:720px){.login-visual,.login-panel{padding:24px 18px}.login-visual{min-height:560px}.login-hero h1{font-size:34px}.login-status-grid{grid-template-columns:1fr}.login-panel-head .language-select{width:100%}.login-panel-head .language-select select{min-width:0}.app-shell{grid-template-columns:1fr}.sidebar{z-index:30;flex-direction:row;gap:10px;position:sticky;top:0;overflow-x:auto}.nav-stack{flex-direction:row;flex:none;gap:10px;width:auto;padding:0;overflow:visible}.nav-section,.nav-section-items{flex-direction:row}.nav-section-backup{border-top:0;border-left:1px solid #ffffff1a;margin-top:0;padding-top:0;padding-left:10px}.main{grid-template-rows:auto minmax(0,1fr)}.topbar,.page-head{flex-direction:column;align-items:flex-start;padding:14px}.top-actions{flex-wrap:wrap}.top-actions .language-select{width:100%}.notification-popover{width:auto;max-height:calc(100vh - 154px);position:fixed;top:142px;left:12px;right:12px}.workspace{padding:14px}.form-grid,.endpoint-row,.detail-grid,.product-flow-strip,.product-workspace,.product-kpi-grid,.product-detail-grid,.access-grid,.status-row{grid-template-columns:1fr}.product-library-panel{border-right:0;border-bottom:1px solid var(--line);padding-bottom:14px;padding-right:0}.product-workbench-header{flex-direction:column}.product-workbench-actions,.product-workbench-actions .button{width:100%}.device-scope-panel{grid-template-columns:1fr}.selected-scope-bar{flex-direction:column;align-items:flex-start}.selected-scope-actions,.selected-scope-actions .button{width:100%}.compact-toolbar{flex-direction:column}.data-pagination{grid-template-columns:1fr;align-items:end}.data-pagination-summary{grid-column:1/-1}.data-pagination-pages{justify-content:space-between;width:100%}.data-pagination-page,.data-pagination-ellipsis{display:none}.data-pagination-mobile-page{display:inline-block}.data-pagination-pages button,.data-pagination-size select{min-height:44px}.data-pagination-pages button{min-width:44px}.status-row>:nth-child(n+4){padding-left:0}.floorplan-title-row{flex-direction:column;align-items:flex-start}.floorplan-action-row,.floorplan-actions,.scene-edit-mode-toggle{width:100%}.floorplan-action-row,.floorplan-actions{justify-content:flex-start}.floorplan-canvas{min-height:700px}.floor-shape-toolbar{justify-content:flex-start;width:auto;top:10px;left:12px;right:12px;transform:none}.floorplan-lines,.connection-layer{width:94%;height:62%;top:2%;left:3%}.building-tag{min-width:64px;min-height:30px;font-size:13px}.floor-device{min-width:118px;max-width:160px;font-size:13px}.sensor-legend{bottom:16px;left:16px;right:16px}.connection-legend{width:auto;inset:auto 16px 140px}.component-library{bottom:300px}}
:root,:root[data-theme=aqua]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eaf7fa;--surface:#fbfeff;--surface-soft:#f1fbfd;--surface-raised:#ffffffeb;--surface-input:#f7fdfe;--surface-hover:#e7f7fa;--surface-selected:#d8f4f7;--ink:#102b3a;--muted:#526d80;--line:#c8e4e9;--line-strong:#9dcfd7;--primary:#16b8c5;--primary-dark:#066778;--blue:#3987f4;--green:#16a875;--amber:#e89a18;--red:#e94e69;--violet:#7d66ee;--sidebar:#0d5c74;--sidebar-strong:#083d57;--sidebar-muted:#c3f1f4;--shadow:0 16px 34px #105d6f1a;--shadow-soft:0 9px 24px #105d6f13;--theme-topbar:#f9feffed;--theme-control:#ffffffd1;--theme-grid:#16b8c50e;--theme-glow:#16b8c526;--theme-backdrop:#04243480;--text-on-accent:#04131d;--status-success-ink:#0b6f50;--status-danger-ink:#b4233f;--status-warning-ink:#935300;--status-success-surface:#ebfaf4;--status-danger-surface:#fff0f3;--status-warning-surface:#fff7e8}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#060d18;--surface:#0c1726;--surface-soft:#101e30;--surface-raised:#0d1c2df5;--surface-input:#0a1727;--surface-hover:#142840;--surface-selected:#13364a;--ink:#e8f4ff;--muted:#91a6ba;--line:#243a50;--line-strong:#35516b;--primary:#2cd4d9;--primary-dark:#59e5e8;--blue:#5790ff;--green:#2bd99f;--amber:#f3b349;--red:#ff5c78;--violet:#9b7cff;--sidebar:#0a1c31;--sidebar-strong:#071426;--sidebar-muted:#aac0d8;--shadow:0 18px 42px #00000057;--shadow-soft:0 10px 28px #0000003d;--theme-topbar:#07121ff0;--theme-control:#0d1d2ff2;--theme-grid:#2cd4d90b;--theme-glow:#2cd4d924;--theme-backdrop:#00050cb8;--text-on-accent:#04131d;--status-success-ink:#69e9ba;--status-danger-ink:#ff91a6;--status-warning-ink:#ffd183;--status-success-surface:#0d2a27;--status-danger-surface:#2b1721;--status-warning-surface:#2b2416}html{background:var(--bg)}body{transition:background-color .16s,color .16s}::selection{color:var(--text-on-accent);background:var(--primary)}.workspace{background-color:var(--bg);background-image:linear-gradient(var(--theme-grid) 1px, transparent 1px), linear-gradient(90deg, var(--theme-grid) 1px, transparent 1px), radial-gradient(circle at 82% 0%, var(--theme-glow), transparent 31%);background-size:34px 34px,34px 34px,auto}.topbar{color:var(--ink);border-color:var(--line);background:var(--theme-topbar);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 1px #ffffff0a}.topbar h1{color:var(--ink)}.topbar small{color:var(--muted)}.panel{background:var(--surface-raised);border-color:var(--line);box-shadow:var(--shadow-soft)}.theme-switcher{border:1px solid var(--line-strong);min-height:42px;color:var(--ink);background:var(--theme-control);border-radius:9px;align-items:center;gap:7px;padding:4px 5px 4px 10px;display:inline-flex;box-shadow:inset 0 1px #ffffff14}.theme-switcher-label{color:var(--muted);letter-spacing:.04em;font-size:10px;font-weight:900}.theme-switcher-options{align-items:center;gap:3px;display:inline-flex}.theme-option{width:30px;height:30px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px;place-items:center;display:grid}.theme-option:hover{color:var(--ink);border-color:var(--line);background:var(--surface-hover)}.theme-option-label{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}:root[data-theme=dark] .theme-option[data-theme-value=dark],:root[data-theme=aqua] .theme-option[data-theme-value=aqua]{color:var(--text-on-accent);border-color:var(--primary);background:linear-gradient(135deg, var(--primary), var(--blue));box-shadow:0 0 14px var(--theme-glow)}.login-panel-controls{grid-template-columns:auto minmax(0,1fr);gap:10px;display:grid}.login-panel-controls .theme-switcher,.login-panel-controls .language-select{width:100%}.sidebar{background:linear-gradient(180deg, var(--sidebar), var(--sidebar-strong));border-color:var(--line);box-shadow:8px 0 30px #04142214}.brand-mark{border-color:#96dce62e}.language-select,.role-badge,.account-badge,.segmented,.notification-popover,.notification-item,.button,.org-tree-select,.searchable-selector,.selector-menu,.modal,.row-action-menu{color:var(--ink);border-color:var(--line-strong);background:var(--surface-raised)}.language-select select,.language-select option{color:var(--ink);background:var(--surface)}.language-select span,.account-badge span{color:var(--muted)}.role-badge svg{color:var(--primary-dark)}.icon-button{color:var(--ink)}.icon-button:hover,.notification-item:hover{color:var(--ink);border-color:var(--line);background:var(--surface-hover)}.notification-popover-head,.notification-popover-foot{border-color:var(--line);background:var(--surface-raised)}.notification-empty{color:var(--muted)}.notification-item{border-bottom-color:var(--line)}.notification-count{border-color:var(--surface)}:where(input:not([type=checkbox]):not([type=radio]),select,textarea){color:var(--ink);border-color:var(--line);background-color:var(--surface-input)}:where(input,select,textarea)::placeholder{color:color-mix(in srgb, var(--muted) 78%, transparent)}:where(input,select,textarea):focus{border-color:var(--primary);outline-color:var(--primary)}.form-field input:disabled,.form-field select:disabled{color:var(--muted);background:var(--surface-hover)}.button{background:var(--surface-raised)}.button.ghost{color:var(--ink);background:var(--surface-soft)}.button.primary{color:var(--text-on-accent);border-color:var(--primary);background:var(--primary)}.button.danger{color:#fff}.button.ghost.danger{color:var(--red);border-color:color-mix(in srgb, var(--red) 32%, var(--line));background:color-mix(in srgb, var(--red) 7%, var(--surface))}.segmented button{color:var(--ink)}.segmented button.active{color:var(--text-on-accent)}:root[data-theme] .field-helper{color:var(--muted)}:root[data-theme] .field-validation-error{color:var(--status-danger-ink)}:root[data-theme] .form-field.has-error input,:root[data-theme] .form-field.has-error textarea,:root[data-theme] .form-field.has-error .searchable-select-control input{color:var(--ink);border-color:color-mix(in srgb, var(--red) 55%, var(--line));background:var(--status-danger-surface)}:root[data-theme] .count-pill,:root[data-theme] .searchable-select-menu{color:var(--ink);border-color:var(--line-strong);background:var(--surface-raised)}:root[data-theme] .searchable-select-toggle:hover{color:var(--primary-dark);background:var(--surface-hover)}:root[data-theme] .searchable-select-options button:hover,:root[data-theme] .searchable-select-options button.active{color:var(--primary-dark);background:var(--surface-selected)}:root[data-theme] .multi-select-chip{color:var(--primary-dark);border-color:color-mix(in srgb, var(--primary) 38%, var(--line));background:var(--surface-selected)}:root[data-theme] .multi-select-chip button{color:var(--primary-dark)}:root[data-theme] .multi-select-chip button:hover:not(:disabled){background:var(--surface-hover)}.modal-backdrop{background:var(--theme-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drawer-modal-header{color:var(--ink);border-color:var(--line);background:linear-gradient(135deg, var(--surface-selected), var(--surface-soft))}.drawer-modal-body{background:var(--surface)}.drawer-modal-body .modal-actions{border-color:var(--line);background:color-mix(in srgb, var(--surface) 94%, transparent)}.toast,.record-row,.org-row,.org-record,.content-record,.ops-record-row{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}.row-action-menu button{color:var(--ink)}.row-action-menu button:hover{background:var(--surface-hover)}table{color:var(--ink)}thead th{color:var(--muted);border-color:var(--line);background:var(--surface-soft)}tbody td{color:var(--ink);border-color:var(--line)}tbody tr:hover td{background:var(--surface-hover)}:where(.product-workspace,.product-category-tree,.product-composition-section,.product-brand-section,.product-flow-step,.product-tree-count,.product-tree-action,.endpoint-board-card,.serial-binding-panel,.taxonomy-inline-action,.taxonomy-summary span,.taxonomy-search,.taxonomy-chip,.taxonomy-action,.pico-profile-chip,.pico-studio-steps button,.pico-delivery-grid article,.pico-module-row,.pico-config-panel,.pico-binding-card,.pico-driver-card,.pico-driver-grid>article,.pico-binding-row,.site-summary,.site-device-list,.site-list-row,.organization-tree-row,.selected-scope-bar,.device-bottom-list-panel,.device-workspace-list,.device-list-row,.device-detail-card,.scene-workspace,.scene-edit-grid select,.scene-registration-form input,.node,.device-detail,.scene-panel-footer,.scene-device-card,.site-map-toolbar,.site-map-marker-label,.selector-options,.org-filter-select){color:var(--ink);border-color:var(--line);background:var(--surface-raised)}:root[data-theme] .product-template-modal .product-composition-section,:root[data-theme] .product-template-modal .product-brand-section{color:var(--ink);border-color:var(--line);background:var(--surface-raised);box-shadow:var(--shadow-soft)}:root[data-theme] .product-template-modal .product-composition-strip article,:root[data-theme] .product-template-modal .product-flow-step,:root[data-theme] .product-template-modal .endpoint-chip{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}:root[data-theme] .product-template-modal .product-composition-strip article.complete,:root[data-theme] .product-template-modal .product-flow-step.active{border-color:color-mix(in srgb, var(--primary) 45%, var(--line));background:var(--surface-selected)}:root[data-theme] .product-template-modal .product-composition-heading>b.complete{color:var(--status-success-ink);background:var(--status-success-surface)}:root[data-theme] .product-template-modal .product-composition-heading>b.incomplete{color:var(--status-warning-ink);background:var(--status-warning-surface)}:root[data-theme] .product-template-modal .product-brand-section .modal-tabs{border-color:var(--line-strong);background:var(--surface-soft)}:root[data-theme] .product-template-modal .endpoint-chip.power{color:var(--status-warning-ink)}:root[data-theme] .product-template-modal .endpoint-chip.network{color:var(--primary-dark)}:root[data-theme] .product-template-modal .endpoint-chip.rs485{color:var(--status-success-ink)}:root[data-theme] .product-template-modal .endpoint-chip.io{color:var(--violet)}.product-category-tree-node:hover,.product-category-tree-row.product:hover,.product-category-tree-row.active .product-category-tree-node,.product-category-tree-row.product.active,.product-flow-step.active,.product-composition-strip article.complete{background:var(--surface-selected)}.product-category-tree{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}.product-category-tree-head span,.product-category-tree-row b,.product-tree-counts small{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}.product-category-tree-empty{color:var(--muted);border-color:var(--line-strong);background:color-mix(in srgb, var(--surface-soft) 72%, transparent)}.empty-state{color:var(--muted);border-color:var(--line-strong);background:var(--surface-soft)}.product-editor-board,.serial-management-board,.product-stat-card,.endpoint-board,.endpoint-board-card,.serial-binding-panel,.status-row{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}.status-row:hover{border-color:var(--line-strong);box-shadow:var(--shadow-soft)}.cell-label{color:var(--muted)}.row-menu:hover,.row-menu.active{color:var(--primary-dark);background:var(--surface-hover)}.pico-kit-studio{color:var(--ink);border-color:var(--line);background:var(--surface-raised);box-shadow:var(--shadow-soft)}.pico-studio-heading{color:var(--ink);border-color:var(--line);background-color:var(--surface-soft);background-image:linear-gradient(135deg, var(--surface-selected), var(--surface-soft))}.pico-studio-steps{border-color:var(--line);background:var(--line)}.pico-studio-steps button{color:var(--muted);background:var(--surface-raised)}.pico-studio-steps button:hover{color:var(--ink);background:var(--surface-hover)}.pico-studio-steps button.active{color:var(--primary-dark);background:var(--surface-selected)}.pico-studio-steps button.active b{color:var(--text-on-accent);background:var(--primary)}.pico-stage{color:var(--ink);background:var(--surface-raised)}.pico-summary-grid article,.pico-delivery-grid article,.pico-role-boundary>div,.pico-communication-grid>article,.pico-sensor-catalog>article,.pico-binding-card,.pico-driver-grid>article,.pico-channel-strip article,.pico-binding-row{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}.pico-role-boundary>div,.pico-channel-strip article,.pico-communication-grid>article.selected,.pico-sensor-catalog>article.selected,.pico-driver-grid>article.selected{border-color:color-mix(in srgb, var(--primary) 45%, var(--line));background:var(--surface-selected)}.pico-inline-field input,.pico-binding-row input,.pico-binding-row select,.pico-preview-select select,.pico-binding-fields input,.pico-binding-fields select{color:var(--ink);border-color:var(--line);background:var(--surface-input)}.pico-measurement-chips code{color:var(--primary-dark);border-color:var(--line);background:var(--surface-hover)}.pico-communication-grid>article.blocked,.pico-sensor-catalog>article.blocked,.pico-driver-grid>article.blocked,.pico-delivery-grid article.blocked{color:var(--ink);border-color:color-mix(in srgb, var(--red) 35%, var(--line));background:var(--status-danger-surface)}.pico-issues{color:var(--status-danger-ink);border-color:color-mix(in srgb, var(--red) 35%, var(--line));background:var(--status-danger-surface)}.pico-valid{color:var(--status-success-ink);border-color:color-mix(in srgb, var(--green) 35%, var(--line));background:var(--status-success-surface)}.pico-handoff-note{color:var(--ink);border-color:color-mix(in srgb, var(--blue) 35%, var(--line));background:color-mix(in srgb, var(--blue) 8%, var(--surface-soft))}.pico-save-state.saved,.pico-driver-head>span.ready,.pico-binding-card header>span,.pico-delivery-grid article.ready svg{color:var(--status-success-ink)}.pico-save-state.error,.pico-driver-head>span.blocked,.pico-delivery-grid article.blocked svg{color:var(--status-danger-ink)}:where(.product-workspace,.product-shell,.catalog-workspace,.site-summary,.site-device-list,.device-workspace-list,.selected-scope-bar,.device-bottom-list-panel){box-shadow:var(--shadow-soft)}.page-head h2,.panel h3,.modal h3,.product-workspace h3,.device-workspace h3{color:var(--ink)}.page-head p,.empty-state,.helper-text{color:var(--muted)}.login-shell{background:radial-gradient(circle at 22% 20%, var(--theme-glow), transparent 28%), linear-gradient(135deg, var(--sidebar), var(--sidebar-strong))}.login-panel{color:var(--ink);background:var(--surface)}.login-panel-head p,.check-row{color:var(--muted)}.login-context,.scope-summary{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}.form-error{color:var(--red);border-color:color-mix(in srgb, var(--red) 34%, var(--line));background:color-mix(in srgb, var(--red) 8%, var(--surface))}:root[data-theme=dark]{--iot-page:#07111f;--iot-panel-theme:#0b192b;--iot-panel-soft:#0e2035;--iot-text-theme:#eef7ff;--iot-strong-theme:#fff;--iot-muted-theme:#8ea2ba;--iot-line-theme:#88a8ca33;--iot-card-theme:#0b1b2ec7;--iot-card-active:#2cd4d91f;--iot-canvas-theme:#0a1929}:root[data-theme=aqua]{--iot-page:#e8f7fa;--iot-panel-theme:#f9feff;--iot-panel-soft:#eef9fb;--iot-text-theme:#173849;--iot-strong-theme:#0d2938;--iot-muted-theme:#5c7c8c;--iot-line-theme:#197b8f33;--iot-card-theme:#fafeffeb;--iot-card-active:#16b8c51f;--iot-canvas-theme:#e4f3f6}.iot-command-page{--iot-bg:var(--iot-page);--iot-panel:var(--iot-panel-theme);--iot-panel-2:var(--iot-panel-soft);--iot-line:var(--iot-line-theme);--iot-muted:var(--iot-muted-theme);color:var(--iot-text-theme);background:radial-gradient(circle at 72% 0%, var(--theme-glow), transparent 34%), radial-gradient(circle at 14% 100%, color-mix(in srgb, var(--primary) 8%, transparent), transparent 32%), var(--iot-page)}.iot-command-header h2,.iot-kpi-card strong,.iot-rail-heading strong,.iot-operations-heading strong,.iot-device-copy strong,.iot-timeline-content b,.iot-context-rail strong,.iot-alert-list strong{color:var(--iot-strong-theme)}.iot-command-header p,.iot-snapshot-badge,.iot-result-count,.iot-timeline-time,.iot-timeline-content small,.iot-timeline-location,.iot-context-rail small,.iot-context-rail div span,.iot-kpi-card p,.iot-device-copy small,.iot-device-copy em,.iot-device-reading small,.iot-source-summary small,.iot-timeline-content strong,.iot-alert-list small,.iot-alert-list em,.iot-inspection-list small,.iot-view-shortcuts>span{color:var(--iot-muted-theme)}.iot-device-reading b,.iot-source-summary strong,.iot-status-filters button b,.iot-inspection-list strong{color:var(--iot-strong-theme)}.iot-snapshot-badge,.iot-button,.iot-kpi-card,.iot-command-grid,.iot-asset-rail,.iot-operations-rail,.iot-visual-workspace,.iot-view-toolbar,.iot-context-rail{border-color:var(--iot-line-theme);background:var(--iot-panel-theme)}.iot-button,.iot-search-field,.iot-status-filters button,.iot-device-card,.iot-timeline-row,.iot-alert-list button,.iot-inspection-list>div,.iot-view-shortcuts button{color:var(--iot-text-theme);border-color:var(--iot-line-theme);background:var(--iot-card-theme)}.iot-device-card:hover,.iot-timeline-row:hover,.iot-alert-list button:hover,.iot-view-shortcuts button:hover{background:var(--iot-panel-soft)}.iot-device-card.active,.iot-timeline-row.active{background:linear-gradient(90deg, var(--iot-card-active), var(--iot-card-theme))}.iot-status-filters button.active{color:var(--iot-strong-theme);background:var(--iot-card-active)}.iot-search-field input{color:var(--iot-text-theme)}.iot-view-tabs button{color:var(--iot-muted-theme)}.iot-view-tabs button:hover{color:var(--iot-strong-theme)}.iot-view-notice,.iot-operations-boundary,.iot-source-summary{color:var(--iot-muted-theme);background:color-mix(in srgb, var(--primary) 5%, var(--iot-panel-theme))}.iot-site-canvas{border-color:var(--iot-line-theme);background-color:var(--iot-canvas-theme);background-image:linear-gradient(var(--iot-line-theme) 1px, transparent 1px), linear-gradient(90deg, var(--iot-line-theme) 1px, transparent 1px)}.iot-site-zone{color:var(--iot-muted-theme);border-color:var(--iot-line-theme);background:var(--iot-card-theme)}.iot-site-marker{color:var(--iot-text-theme);background:var(--iot-panel-theme)}.iot-site-marker>span{color:var(--iot-strong-theme);background:var(--iot-panel-theme)}.iot-device-node circle{fill:var(--iot-panel-soft)}.iot-device-node svg{color:var(--iot-muted-theme)}.iot-device-node .node-name{fill:var(--iot-strong-theme)}.iot-device-node .node-status{fill:var(--iot-muted-theme)}.iot-device-node.active circle{fill:var(--iot-card-active)}.iot-hub-node circle{fill:color-mix(in srgb, var(--primary) 14%, var(--iot-panel-theme))}.iot-timeline-rail i{border-color:var(--iot-panel-theme)}:root[data-theme] .scope-section,:root[data-theme] .scope-row,:root[data-theme] .site-summary,:root[data-theme] .site-device-list,:root[data-theme] .site-manager-row,:root[data-theme] .selected-scope-bar,:root[data-theme] .device-bottom-summary,:root[data-theme] .device-bottom-list-panel,:root[data-theme] .device-workspace-list,:root[data-theme] .device-card,:root[data-theme] .device-expand-item,:root[data-theme] .scene,:root[data-theme] .device-detail,:root[data-theme] .sensor-accordion-body,:root[data-theme] .sensor-value-chip,:root[data-theme] .sensor-value-empty,:root[data-theme] .access-grid,:root[data-theme] .node,:root[data-theme] .scene-edit-grid input,:root[data-theme] .scene-edit-grid select,:root[data-theme] .scene-registration-form input{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}:root[data-theme] .scope-row.active,:root[data-theme] .site-manager-row.active,:root[data-theme] .device-card.active{color:var(--ink);border-color:var(--primary);background:var(--surface-selected)}:root[data-theme] .floorplan-canvas,:root[data-theme] .floorplan-canvas:not(.has-background),:root[data-theme] .topology{color:var(--ink);border-color:var(--line);background-color:var(--surface-soft);background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);background-size:44px 44px}:root[data-theme] .site-map-toolbar,:root[data-theme] .site-map-loading,:root[data-theme] .site-map-empty,:root[data-theme] .site-map-unlocated,:root[data-theme] .site-map-marker-label,:root[data-theme] .maplibregl-popup-content,:root[data-theme] .site-map-popup{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}:root[data-theme] .site-map-unlocated{color:var(--orange)}:root[data-theme] .sensor-accordion-reading b{color:var(--primary-dark)}:root[data-theme] .catalog-definition-grid article,:root[data-theme] .taxonomy-panel{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}:root[data-theme] .catalog-definition-grid article,:root[data-theme] .taxonomy-inline-action,:root[data-theme] .taxonomy-summary span,:root[data-theme] .taxonomy-row-actions button,:root[data-theme] .taxonomy-chip{color:var(--ink);border-color:var(--line);background:var(--surface-soft)}:root[data-theme] .taxonomy-search{color:var(--muted);border-color:var(--line);background:var(--surface-input)}:root[data-theme] .taxonomy-inline-action:hover,:root[data-theme] .taxonomy-row-actions button:hover{color:var(--primary-dark);border-color:var(--line-strong);background:var(--surface-hover)}:root[data-theme] .taxonomy-chip.active{color:var(--primary-dark);border-color:var(--primary);background:var(--surface-selected)}:root[data-theme] .taxonomy-chip.disabled,:root[data-theme] .taxonomy-status.disabled{color:var(--muted);background:var(--surface-hover)}:root[data-theme] .taxonomy-status.active{color:var(--status-success-ink);background:var(--status-success-surface)}:root[data-theme] .ops-state{color:var(--muted);border-color:var(--line-strong);background:var(--surface-soft)}:root[data-theme] .ops-state.error{color:var(--status-danger-ink);border-color:color-mix(in srgb, var(--red) 35%, var(--line));background:var(--status-danger-surface)}:root[data-theme] .ops-state.error span{color:var(--ink)}:root[data-theme] .notification-item.read{color:var(--ink);border-color:var(--line);background:var(--surface-raised)}:root[data-theme] .notification-item.unread{color:var(--ink);border-color:var(--line);background:var(--surface-soft);box-shadow:inset 3px 0 0 var(--primary)}:root[data-theme] .status-pill.neutral{color:var(--ink);background:var(--surface-hover)}:root[data-theme] .status-pill.ok{color:var(--status-success-ink);background:var(--status-success-surface)}:root[data-theme] .status-pill.warn{color:var(--status-warning-ink);background:var(--status-warning-surface)}:root[data-theme] .status-pill.bad{color:var(--status-danger-ink);background:var(--status-danger-surface)}:root[data-theme] .button.ghost.danger:hover{color:var(--status-danger-ink);border-color:color-mix(in srgb, var(--red) 35%, var(--line));background:var(--status-danger-surface)}:root[data-theme] .scope-tree-toggle:not(.spacer):hover{color:var(--primary-dark);border-color:var(--primary);background:var(--surface-hover)}@media (max-width:1180px){.main{grid-template-rows:auto minmax(0,1fr)}.top-actions{flex-wrap:wrap;justify-content:flex-end;padding:7px 0}.topbar{height:auto;min-height:68px}}@media (max-width:760px){.login-panel-controls{grid-template-columns:1fr}.theme-switcher{justify-content:space-between}.top-actions .theme-switcher{order:-2}}
.plugin-center{color:var(--ink);gap:16px;display:grid}.plugin-center-hero,.plugin-safety-banner,.plugin-panel,.plugin-catalog-layout,.plugin-metrics article{border:1px solid var(--line);background:var(--surface-raised);border-radius:16px}.plugin-center-hero{background:linear-gradient(120deg,var(--surface-raised),var(--surface-selected));justify-content:space-between;align-items:center;padding:20px;display:flex}.plugin-center-hero span,.plugin-detail span,.plugin-release-grid span,.plugin-metrics span{color:var(--muted);letter-spacing:.06em;font-size:12px}.plugin-center-hero h2{margin:4px 0}.plugin-center-hero p{color:var(--muted);margin:0}.plugin-safety-banner{border-color:color-mix(in srgb,var(--yellow) 45%,var(--line));align-items:center;gap:12px;padding:12px 16px;display:flex}.plugin-safety-banner div{gap:2px;display:grid}.plugin-safety-banner span{color:var(--muted)}.plugin-tabs{grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;display:grid}.plugin-tabs button{border:1px solid var(--line);background:var(--surface-raised);color:var(--muted);border-radius:12px;padding:12px}.plugin-tabs button.active{background:var(--surface-selected);border-color:var(--cyan);color:var(--ink)}.plugin-catalog-layout{grid-template-columns:280px 1fr;min-height:540px;display:grid;overflow:hidden}.plugin-list{border-right:1px solid var(--line);flex-direction:column;gap:8px;padding:12px;display:flex}.plugin-list button{text-align:left;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:12px;padding:12px;display:grid}.plugin-list button.active{background:var(--surface-selected);border-color:var(--cyan)}.plugin-list small{color:var(--muted)}.plugin-detail,.plugin-panel{padding:18px}.plugin-detail-title,.plugin-panel h3,.command-request,.assignment-list article,.validation-run{justify-content:space-between;align-items:center;gap:12px;display:flex}.plugin-detail-title h3{margin:0}.hardware-badge{border:1px solid var(--yellow);border-radius:999px;padding:6px 10px;color:var(--yellow)!important}.plugin-detail label{gap:6px;margin:16px 0;display:grid}.plugin-center select,.plugin-center input,.plugin-center textarea{background:var(--surface-input);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:10px}.plugin-release-grid,.plugin-metrics{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.plugin-release-grid article{background:var(--surface-soft);border:1px solid var(--line);border-radius:11px;gap:6px;padding:12px;display:grid}.plugin-release-grid .wide{grid-column:span 2}.plugin-release-grid code{overflow-wrap:anywhere}.plugin-editor{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.plugin-editor summary{cursor:pointer;font-weight:700}.plugin-editor form,.assignment-form,.plugin-inline-fields{grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px;display:grid}.plugin-editor textarea{min-height:78px}.plugin-center button{cursor:pointer}.plugin-center button:disabled{opacity:.45;cursor:not-allowed}.plugin-editor button,.plugin-actions button,.assignment-form button,.command-request button{border:1px solid var(--cyan);background:var(--surface-selected);color:var(--ink);border-radius:9px;padding:10px 14px}.plugin-actions{gap:8px;margin:14px 0;display:flex}.plugin-center .danger{border-color:var(--red)}.validation-run,.command-request,.assignment-list article{border-top:1px solid var(--line);padding:12px}.validation-run div,.command-request>div:first-child,.assignment-list article div{gap:4px;display:grid}.validation-run span,.command-request span,.assignment-list span{color:var(--muted);font-size:12px}.assignment-list{margin-top:16px}.empty-warning{border:1px dashed var(--yellow);color:var(--yellow);border-radius:10px;padding:14px}.plugin-metrics{grid-template-columns:repeat(3,1fr)}.plugin-metrics article{gap:8px;padding:20px;display:grid}.plugin-metrics strong{color:var(--cyan);font-size:28px}@media (max-width:900px){.plugin-tabs{grid-template-columns:1fr 1fr}.plugin-catalog-layout{grid-template-columns:1fr}.plugin-list{border-right:0;border-bottom:1px solid var(--line)}.plugin-release-grid,.plugin-metrics,.plugin-editor form{grid-template-columns:1fr}.plugin-release-grid .wide{grid-column:auto}}:root{--cyan:var(--primary);--yellow:var(--amber)}.hardware-badge,.empty-warning{color:var(--ink)!important}.hardware-badge{background:color-mix(in srgb,var(--amber) 12%,var(--surface-raised))}.plugin-list button.active small,.plugin-list button.active>span,.plugin-center-hero>div>span,.plugin-center-hero p{color:var(--ink)}.plugin-list .data-pagination{grid-template-columns:1fr;margin-top:auto}.plugin-list .data-pagination-summary,.plugin-list .data-pagination-size,.plugin-list .data-pagination-pages{grid-column:1}.plugin-list .data-pagination-pages{flex-wrap:wrap;justify-content:flex-start}
.device-onboarding-modal{background:var(--surface-raised);width:min(1060px,94vw);max-height:92vh;color:var(--ink);overflow:auto}.onboarding-scope{border:1px solid var(--line);background:var(--surface-soft);color:var(--muted);border-radius:12px;align-items:center;gap:10px;margin:8px 0 12px;padding:10px 14px;display:flex}.onboarding-steps{border:1px solid var(--line);border-radius:12px;grid-template-columns:repeat(5,1fr);margin:0 0 14px;padding:0;list-style:none;display:grid;overflow:hidden}.onboarding-steps li{color:var(--muted);background:var(--surface-input);border-right:1px solid var(--line);align-items:center;gap:8px;padding:12px;display:flex}.onboarding-steps li:last-child{border:0}.onboarding-steps b{background:var(--surface-soft);border-radius:8px;place-items:center;width:24px;height:24px;display:grid}.onboarding-steps .active{color:var(--ink);background:var(--surface-selected);box-shadow:inset 0 -3px 0 var(--aqua)}.onboarding-steps .done b{color:#06222c;background:var(--aqua)}.onboarding-panel{border:1px solid var(--line);background:var(--surface-soft);border-radius:14px;min-height:430px;padding:18px}.onboarding-panel>header{align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.onboarding-panel>header>svg{width:42px;height:42px;color:var(--aqua);border:1px solid color-mix(in srgb,var(--aqua) 45%,var(--line));background:color-mix(in srgb,var(--aqua) 12%,var(--surface));border-radius:12px;padding:9px}.onboarding-panel h4{margin:0 0 4px;font-size:19px}.onboarding-panel p{color:var(--muted);margin:0}.onboarding-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.onboarding-grid .full{grid-column:1/-1}.onboarding-grid label,.sensor-draft-list label{color:var(--muted);gap:6px;font-size:13px;display:grid}.onboarding-grid input,.onboarding-grid select,.sensor-draft-list input,.sensor-draft-list select,.onboarding-panel select{border:1px solid var(--line-strong);background:var(--surface-input);width:100%;min-height:42px;color:var(--ink);border-radius:9px;padding:8px 11px}.onboarding-serial-control{grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:10px;display:grid}.onboarding-serial-control .button{white-space:nowrap;min-height:42px}.onboarding-grid label>small{color:var(--muted);line-height:1.45}.onboarding-summary,.review-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;display:grid}.onboarding-summary span,.review-grid article{border:1px solid var(--line);background:var(--surface-input);color:var(--muted);border-radius:10px;gap:4px;padding:12px;display:grid}.onboarding-summary strong,.review-grid strong{color:var(--ink)}.onboarding-validation-result{border:1px solid var(--line-strong);background:var(--surface-input);border-radius:12px;margin-top:14px;padding:13px}.onboarding-validation-result>header{align-items:center;gap:8px;display:flex}.onboarding-validation-result.valid{border-color:var(--green)}.onboarding-validation-result.valid>header{color:var(--status-success-ink)}.onboarding-validation-result.invalid{border-color:var(--red)}.onboarding-validation-result.invalid>header{color:var(--status-danger-ink)}.onboarding-validation-result .onboarding-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.onboarding-validation-result .onboarding-summary strong{overflow-wrap:anywhere;gap:2px;display:grid}.onboarding-validation-result .onboarding-summary strong small{color:var(--muted);font-weight:700}.onboarding-validation-result .validation-message{grid-column:1/-1}.connectivity-cards{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px;display:grid}.connectivity-cards article{border:1px solid var(--line);background:var(--surface-input);border-radius:12px;padding:14px}.connectivity-title{align-items:center;gap:8px;margin-bottom:12px;display:flex}.connectivity-title strong{margin-right:auto}.connectivity-title svg{color:var(--aqua)}.segmented{grid-template-columns:1fr 1fr;margin-bottom:12px;display:grid}.segmented button{border:1px solid var(--line);background:var(--surface-soft);min-height:38px;color:var(--muted)}.segmented button.active{color:var(--ink);border-color:var(--aqua);background:var(--surface-selected)}.advanced-fields{border-left:3px solid var(--aqua);background:var(--surface-input);margin:12px 0;padding:14px}.security-note{border:1px solid color-mix(in srgb,var(--green) 45%,var(--line));background:color-mix(in srgb,var(--green) 9%,var(--surface));color:var(--ink);border-radius:10px;align-items:center;gap:9px;margin-top:14px;padding:11px 13px;display:flex}.security-note svg{color:var(--green);flex:none}.security-note.warning{border-color:color-mix(in srgb,var(--orange) 50%,var(--line));background:color-mix(in srgb,var(--orange) 9%,var(--surface))}.security-note.warning svg{color:var(--orange)}.sensor-draft-list{gap:10px;margin-top:12px;display:grid}.sensor-draft-list article{border:1px solid var(--line);background:var(--surface-input);border-radius:11px;grid-template-columns:1.3fr 1.3fr .55fr .55fr auto;align-items:end;gap:8px;padding:12px;display:grid}.sensor-draft-list small{color:var(--muted);grid-column:1/-1}.empty-hint{text-align:center;border:1px dashed var(--line-strong);border-radius:11px;padding:28px}.onboarding-position-map{cursor:crosshair;border:1px solid var(--line-strong);background:linear-gradient(90deg,transparent 24%,var(--line) 25%,transparent 26%,transparent 49%,var(--line) 50%,transparent 51%,transparent 74%,var(--line) 75%,transparent 76%),linear-gradient(transparent 24%,var(--line) 25%,transparent 26%,transparent 49%,var(--line) 50%,transparent 51%,transparent 74%,var(--line) 75%,transparent 76%),var(--surface-input);background-size:80px 80px;border-radius:14px;height:290px;position:relative;overflow:hidden}.onboarding-position-map span{color:#06222c;background:var(--aqua);width:38px;height:38px;box-shadow:0 8px 22px color-mix(in srgb,var(--aqua) 30%,transparent);border-radius:50% 50% 50% 0;place-items:center;display:grid;position:absolute;transform:translate(-50%,-100%)rotate(-45deg)}.onboarding-position-map span svg{rotate:45deg}.onboarding-position-map em{color:var(--muted);position:absolute;bottom:12px;left:14px}.position-values{grid-template-columns:1fr auto 1fr auto;align-items:center;gap:10px;margin-top:12px;display:grid}.position-values label{align-items:center;gap:8px;display:flex}.position-values input{width:100%}.review-grid{grid-template-columns:repeat(2,1fr)}.review-grid span,.review-grid small{color:var(--muted)}.onboarding-actions{background:var(--surface-raised);padding-top:14px;position:sticky;bottom:-1px}@media (max-width:850px){.onboarding-steps span{display:none}.connectivity-cards,.onboarding-grid,.review-grid,.onboarding-summary,.onboarding-validation-result .onboarding-summary,.onboarding-serial-control{grid-template-columns:1fr}.sensor-draft-list article{grid-template-columns:1fr 1fr}.sensor-draft-list .button{grid-column:1/-1}.onboarding-validation-result .validation-message{grid-column:auto}}

