:root{--bg:#020817;--panel:#07182b;--panel2:#0a2038;--line:#17456a;--cyan:#26dcff;--blue:#208cff;--green:#42e69a;--yellow:#ffd34c;--orange:#ff8c42;--red:#ff4f56;--text:#e9f7ff;--muted:#7fa2ba;--scale:1;--accent:#26dcff;--accent2:#5cf1ad;--shadow:0 12px 36px rgba(0,0,0,.34);font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#01040b;color:var(--text)}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{color:inherit}.skip-link{position:fixed;left:12px;top:-50px;z-index:9999;background:#fff;color:#000;padding:10px 14px}.skip-link:focus{top:12px}#viewport{position:fixed;inset:0;overflow:hidden;background:radial-gradient(circle at 50% 18%,#08203a 0,#020817 48%,#01040a 100%)}#viewport:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(31,126,181,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(31,126,181,.035) 1px,transparent 1px);background-size:32px 32px}#stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;transform:translate(-50%,-50%) scale(var(--scale));transform-origin:center;background:linear-gradient(180deg,rgba(2,10,24,.92),rgba(2,8,20,.98));overflow:hidden;box-shadow:0 0 0 1px #102b47,0 0 80px #000}#stage:after{content:"";position:absolute;inset:0;z-index:50;pointer-events:none;opacity:.16;background:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(0,0,0,.22) 4px)}#topbar{position:absolute;z-index:60;left:0;right:0;top:0;height:76px;display:grid;grid-template-columns:560px 1fr 560px;align-items:center;padding:0 26px;background:linear-gradient(180deg,#06192d 0,#04101f 100%);border-bottom:1px solid #1f5f88}#topbar:before,#topbar:after{content:"";position:absolute;bottom:-5px;width:31%;height:5px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.7}#topbar:before{left:0}#topbar:after{right:0}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:43px;height:43px;display:grid;place-items:center;background:linear-gradient(135deg,#e31828,#8e0712);clip-path:polygon(8% 0,100% 0,100% 72%,72% 100%,0 100%,0 28%);font:bold 27px Arial;color:white;box-shadow:0 0 20px rgba(232,24,43,.35)}.brand-copy strong{display:block;font-size:21px;letter-spacing:.08em}.brand-copy small{display:block;margin-top:3px;color:#5f839b;font:14px Arial;letter-spacing:.22em}.main-title{text-align:center}.main-title h1{margin:0;font-size:30px;letter-spacing:.16em;text-shadow:0 0 16px rgba(38,220,255,.32)}.main-title span{display:block;margin-top:3px;color:#5992b2;font:14px Arial;letter-spacing:.34em}.top-tools{display:flex;justify-content:flex-end;align-items:center;gap:18px}.weather{display:flex;gap:14px;align-items:center;color:#a8c8db;font-size:16px}.demo-badge{border:1px solid #9e7225;color:#ffd269;background:#2c220c;padding:7px 11px;letter-spacing:.08em}.clock{text-align:right;min-width:148px}.clock strong{display:block;font:25px "Consolas";letter-spacing:.08em}.clock small{color:#7192a9}.top-btn{height:36px;border:1px solid #245778;background:#071c31;padding:0 13px;cursor:pointer}.top-btn:hover,.top-btn:focus-visible{border-color:var(--accent);color:var(--accent)}#systemNav{position:absolute;z-index:59;left:0;right:0;top:76px;height:50px;display:grid;grid-template-columns:92px repeat(12,1fr);background:#04111f;border-bottom:1px solid #173d5c;padding:0 22px}.home-link,.system-tab{display:flex;align-items:center;justify-content:center;gap:7px;color:#789bb1;text-decoration:none;border-left:1px solid rgba(40,101,140,.2);position:relative;font-size:15px;white-space:nowrap}.home-link{font-size:16px;color:#a9c8da}.system-tab:last-child{border-right:1px solid rgba(40,101,140,.2)}.system-tab b{font:14px Consolas;color:#3e6f8d}.system-tab:hover,.system-tab:focus-visible,.system-tab.active{color:var(--tab-color,var(--cyan));background:linear-gradient(180deg,rgba(26,80,112,.12),rgba(23,108,149,.23))}.system-tab.active:after{content:"";position:absolute;bottom:0;left:18%;right:18%;height:2px;background:var(--tab-color,var(--cyan));box-shadow:0 0 12px var(--tab-color,var(--cyan))}#view{position:absolute;z-index:5;left:0;right:0;top:126px;bottom:32px;padding:14px 22px 12px;outline:none}#statusbar{position:absolute;z-index:60;left:0;right:0;bottom:0;height:32px;background:#030d18;border-top:1px solid #123551;display:flex;align-items:center;justify-content:space-between;padding:0 24px;color:#577b92;font-size:15px}.status-left,.status-right{display:flex;align-items:center;gap:18px}.online-dot{width:7px;height:7px;background:var(--green);border-radius:50%;box-shadow:0 0 9px var(--green)}.panel{position:relative;background:linear-gradient(145deg,rgba(8,30,52,.96),rgba(4,17,31,.95));border:1px solid #17476b;box-shadow:inset 0 0 24px rgba(15,105,154,.08),var(--shadow);overflow:hidden}.panel:before,.panel:after{content:"";position:absolute;pointer-events:none;width:18px;height:18px;z-index:3}.panel:before{top:-1px;left:-1px;border-left:3px solid var(--accent);border-top:3px solid var(--accent)}.panel:after{right:-1px;bottom:-1px;border-right:3px solid var(--accent);border-bottom:3px solid var(--accent)}.panel-title{height:42px;display:flex;align-items:center;justify-content:space-between;padding:0 15px;border-bottom:1px solid rgba(44,108,147,.46);background:linear-gradient(90deg,rgba(29,119,166,.22),transparent);font-size:14px;letter-spacing:.06em}.panel-title:before{content:"";width:3px;height:16px;background:var(--accent);margin-right:9px;box-shadow:0 0 8px var(--accent)}.panel-title>span:first-child{display:flex;align-items:center}.panel-title small{color:#668aa1;font:14px Consolas;letter-spacing:.12em}.panel-body{padding:14px}.clickable{cursor:pointer;transition:border-color .18s,background .18s,transform .18s}.clickable:hover,.clickable:focus-visible{border-color:var(--accent)!important;background-color:rgba(25,106,148,.18)!important;outline:none}.page-head{height:52px;display:flex;align-items:center;justify-content:space-between}.breadcrumb{display:flex;align-items:center;gap:9px;color:#698ba0;font-size:15px}.breadcrumb a{color:#83b4cf;text-decoration:none}.breadcrumb i{font-style:normal;color:#385f78}.page-identity{display:flex;align-items:center;gap:13px}.page-number{font:28px Consolas;color:var(--accent);opacity:.5}.page-identity h2{font-size:21px;margin:0;letter-spacing:.07em}.page-identity small{display:block;color:#5e8096;font:14px Arial;letter-spacing:.18em;margin-top:3px}.page-actions{display:flex;gap:8px}.btn{height:36px;border:1px solid #256182;background:#09223a;padding:0 15px;cursor:pointer;letter-spacing:.04em}.btn:hover,.btn:focus-visible{border-color:var(--accent);color:var(--accent);outline:none}.btn.primary{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 34%,#061625),#08233b);border-color:var(--accent);color:#fff}.btn.danger{border-color:#9a3440;background:#34131b;color:#ff8b92}.btn.tiny{height:28px;padding:0 9px;font-size:15px}.tag{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border:1px solid #245777;color:#8db9cf;background:#071a2c;font-size:15px}.tag.ok{color:#72efb2;border-color:#267357}.tag.warn{color:#ffd66d;border-color:#826c2e}.tag.alarm{color:#ff8489;border-color:#933541}.tag.offline{color:#99a2a9;border-color:#4e5961}.dot{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 7px currentColor}.mono{font-family:Consolas,"Microsoft YaHei"}.muted{color:var(--muted)}.accent{color:var(--accent)}.overview{height:100%;display:grid;grid-template-columns:390px 1fr 390px;grid-template-rows:128px 1fr 240px;gap:12px;grid-template-areas:"summary scene closure" "alerts scene closure" "systems systems trend"}.overview-summary{grid-area:summary}.overview-scene{grid-area:scene}.overview-closure{grid-area:closure}.overview-alerts{grid-area:alerts}.overview-systems{grid-area:systems}.overview-trend{grid-area:trend}.summary-grid{height:100%;display:grid;grid-template-columns:repeat(4,1fr)}.summary-item{position:relative;padding:21px 14px;border-right:1px solid #143b57;text-decoration:none;color:inherit}.summary-item:last-child{border:0}.summary-item strong{display:block;font:30px Consolas;color:var(--accent)}.summary-item span{font-size:15px;color:#8aa8ba}.summary-item small{position:absolute;right:10px;top:16px;color:#3e6c86}.scene-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(.92) contrast(1.08) brightness(.68)}.scene-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(1,8,18,.35),rgba(2,10,22,.03) 48%,rgba(2,10,22,.9)),linear-gradient(90deg,rgba(2,11,24,.5),transparent 35%,transparent 65%,rgba(2,11,24,.45))}.scene-header{position:absolute;left:18px;right:18px;top:16px;display:flex;justify-content:space-between;z-index:2}.scene-header h2{margin:0;font-size:19px;letter-spacing:.12em}.scene-header small{display:block;color:#81a6ba;margin-top:5px}.scene-stats{position:absolute;z-index:2;left:18px;right:18px;bottom:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.scene-stat{background:rgba(3,16,30,.8);border:1px solid rgba(39,146,193,.54);padding:11px 13px}.scene-stat strong{display:block;font:25px Consolas;color:#fff}.scene-stat span{color:#8fb2c5;font-size:15px}.map-marker{position:absolute;z-index:3;width:30px;height:30px;border:1px solid var(--accent);background:rgba(3,18,32,.8);border-radius:50%;display:grid;place-items:center;color:var(--accent);cursor:pointer;box-shadow:0 0 0 6px rgba(38,220,255,.08),0 0 18px rgba(38,220,255,.3);animation:pulse 2.6s infinite}.map-marker:after{content:attr(data-label);position:absolute;left:36px;white-space:nowrap;background:rgba(3,16,28,.9);border:1px solid #275a79;padding:5px 8px;color:#c9e9f7;font-size:14px}.map-marker:nth-of-type(2){left:22%;top:32%}.map-marker:nth-of-type(3){left:50%;top:42%;animation-delay:.6s}.map-marker:nth-of-type(4){left:72%;top:27%;animation-delay:1.1s}.map-marker:nth-of-type(5){left:62%;top:62%;animation-delay:1.6s}@keyframes pulse{50%{box-shadow:0 0 0 12px rgba(38,220,255,0),0 0 24px rgba(38,220,255,.5)}}.alert-list,.event-list{display:flex;flex-direction:column;gap:8px}.alert-row{display:grid;grid-template-columns:6px 1fr auto;gap:10px;align-items:center;min-height:52px;padding:8px 10px;border:1px solid #173b55;background:#071727}.alert-bar{align-self:stretch;background:var(--yellow)}.alert-row.alarm .alert-bar{background:var(--red);box-shadow:0 0 8px var(--red)}.alert-row strong{display:block;font-size:15px}.alert-row p{margin:3px 0 0;font-size:14px;color:#6f93a8}.alert-row time{font:14px Consolas;color:#5b7c91}.closure-steps{padding:16px}.closure-step{position:relative;display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:8px 0}.closure-step:not(:last-child):after{content:"";position:absolute;left:16px;top:39px;height:24px;border-left:1px dashed #31617e}.step-no{width:32px;height:32px;display:grid;place-items:center;border:1px solid #236080;color:var(--accent);font:15px Consolas}.closure-step.done .step-no{border-color:#2f8d66;color:var(--green);background:#09281e}.closure-step strong{font-size:15px}.closure-step small{display:block;color:#638398;margin-top:2px}.closure-step em{font-style:normal;font:15px Consolas;color:#6e8da0}.workorder-box{margin:10px 15px 15px;border:1px solid #28506b;padding:13px;background:#061525}.workorder-box h4{margin:0 0 10px;font-size:16px}.progress{height:6px;background:#0b2a41;overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--green));box-shadow:0 0 8px var(--accent)}.system-cards{height:calc(100% - 42px);display:grid;grid-template-columns:repeat(12,1fr);gap:7px;padding:10px}.system-card{position:relative;text-decoration:none;color:inherit;border:1px solid #183e58;background:#061726;padding:11px 8px 8px;overflow:hidden}.system-card:before{content:"";position:absolute;inset:auto 0 0;height:3px;background:var(--card-color)}.system-card b{display:block;font:15px Consolas;color:var(--card-color)}.system-card strong{display:block;font-size:15px;margin:6px 0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.system-card .ring{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--card-color) var(--pct),#14354c 0);font:14px Consolas}.system-card .ring:before{content:"";position:absolute;width:29px;height:29px;border-radius:50%;background:#071827}.system-card .ring span{position:relative}.trend-bars{height:142px;display:flex;align-items:end;gap:5px;padding:12px 14px 5px}.trend-bars button{flex:1;border:0;min-width:0;background:linear-gradient(180deg,var(--accent),rgba(33,135,192,.25));height:var(--h);cursor:pointer;position:relative}.trend-bars button:hover{filter:brightness(1.4)}.trend-labels{display:flex;justify-content:space-between;padding:4px 14px;color:#55798e;font:14px Consolas}.system-page{height:100%;display:flex;flex-direction:column}.system-dashboard{flex:1;display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:126px 316px 292px;gap:11px;grid-template-areas:"metrics metrics metrics hero hero hero hero hero hero alerts alerts alerts" "trend trend trend hero hero hero hero hero hero domain domain domain" "trend trend trend hero hero hero hero hero hero tasks tasks tasks"}.system-dashboard.layout-canal{grid-template-areas:"metrics metrics metrics metrics metrics metrics alerts alerts alerts alerts alerts alerts" "hero hero hero hero hero trend trend trend trend domain domain domain" "hero hero hero hero hero trend trend trend trend tasks tasks tasks"}.system-dashboard.layout-grid{grid-template-areas:"metrics metrics metrics metrics domain domain domain domain alerts alerts alerts alerts" "hero hero hero hero hero hero trend trend trend trend trend trend" "tasks tasks tasks hero hero hero hero hero trend trend trend trend"}.system-dashboard.layout-thermo{grid-template-areas:"hero hero hero hero hero hero metrics metrics metrics alerts alerts alerts" "hero hero hero hero hero hero trend trend trend domain domain domain" "tasks tasks tasks tasks tasks tasks trend trend trend domain domain domain"}.system-dashboard.layout-sentinel{grid-template-areas:"alerts alerts alerts alerts metrics metrics metrics metrics metrics hero hero hero" "alerts alerts alerts alerts hero hero hero hero hero hero hero hero" "tasks tasks tasks tasks hero hero hero hero hero trend trend trend"}.system-dashboard.layout-vision{grid-template-areas:"hero hero hero hero hero hero hero hero metrics metrics metrics metrics" "hero hero hero hero hero hero hero hero alerts alerts alerts alerts" "trend trend trend trend domain domain domain domain tasks tasks tasks tasks"}.system-dashboard.layout-vertical{grid-template-areas:"metrics metrics metrics hero hero hero hero hero alerts alerts alerts alerts" "trend trend trend hero hero hero hero hero domain domain domain domain" "tasks tasks tasks hero hero hero hero hero domain domain domain domain"}.system-dashboard.layout-mobility{grid-template-areas:"metrics metrics metrics metrics alerts alerts alerts alerts tasks tasks tasks tasks" "hero hero hero hero hero hero hero trend trend trend domain domain" "hero hero hero hero hero hero hero trend trend trend domain domain"}.system-dashboard.layout-constellation{grid-template-areas:"metrics metrics metrics metrics metrics metrics metrics metrics alerts alerts alerts alerts" "trend trend trend hero hero hero hero hero hero domain domain domain" "tasks tasks tasks hero hero hero hero hero hero domain domain domain"}.system-dashboard.layout-skeleton{grid-template-areas:"hero hero hero hero metrics metrics metrics metrics trend trend trend trend" "hero hero hero hero domain domain domain domain trend trend trend trend" "alerts alerts alerts alerts domain domain domain domain tasks tasks tasks tasks"}.system-dashboard.layout-service{grid-template-areas:"metrics metrics metrics alerts alerts alerts alerts alerts tasks tasks tasks tasks" "hero hero hero hero hero hero trend trend trend domain domain domain" "hero hero hero hero hero hero trend trend trend domain domain domain"}.system-dashboard.layout-ecology{grid-template-areas:"hero hero hero hero hero metrics metrics metrics metrics alerts alerts alerts" "hero hero hero hero hero trend trend trend trend domain domain domain" "tasks tasks tasks tasks tasks trend trend trend trend domain domain domain"}.dash-metrics{grid-area:metrics;display:grid;grid-template-columns:repeat(4,1fr)}.metric-cell{padding:19px 14px;border-right:1px solid #153e5b;text-decoration:none;color:inherit}.metric-cell:last-child{border:0}.metric-cell strong{font:29px Consolas;color:var(--accent)}.metric-cell strong small{font-size:15px;margin-left:4px;color:#80a3b7}.metric-cell span{display:block;color:#7899ad;font-size:15px;margin-top:5px}.dash-hero{grid-area:hero}.dash-trend{grid-area:trend}.dash-domain{grid-area:domain}.dash-alerts{grid-area:alerts}.dash-tasks{grid-area:tasks}.domain-visual{height:calc(100% - 42px);position:relative;padding:14px}.domain-orbit{position:absolute;left:50%;top:50%;width:150px;height:150px;transform:translate(-50%,-50%);border:1px solid color-mix(in srgb,var(--accent) 65%,transparent);border-radius:50%;box-shadow:0 0 45px color-mix(in srgb,var(--accent) 18%,transparent)}.domain-orbit:before,.domain-orbit:after{content:"";position:absolute;border:1px dashed color-mix(in srgb,var(--accent) 40%,transparent);border-radius:50%}.domain-orbit:before{inset:18px}.domain-orbit:after{inset:42px}.domain-core{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);text-align:center}.domain-core strong{font:31px Consolas;color:var(--accent)}.domain-core span{display:block;font-size:14px;color:#6e91a5}.domain-node{position:absolute;width:65px;text-align:center;font-size:14px;color:#83a4b8}.domain-node i{display:block;margin:auto auto 4px;width:8px;height:8px;background:var(--accent);border-radius:50%;box-shadow:0 0 10px var(--accent)}.task-list{padding:12px}.task-row{display:grid;grid-template-columns:1fr auto;align-items:center;padding:9px;border-bottom:1px solid #13354e}.task-row strong{font-size:15px}.task-row small{display:block;color:#5d8197;margin-top:3px}.task-row button{border:1px solid #236080;background:#092039;height:27px;color:#9ac6dd;cursor:pointer}.inventory-page,.detail-page{height:100%;display:flex;flex-direction:column}.inventory-shell{flex:1;display:grid;grid-template-columns:300px 1fr 400px;grid-template-rows:195px 1fr;gap:11px;grid-template-areas:"summary visual inspector" "rail visual inspector"}.inventory-shell.water-topology,.inventory-shell.energy-circuit{grid-template-columns:360px 1fr 330px;grid-template-areas:"summary visual inspector" "rail visual inspector"}.inventory-shell.hvac-loop,.inventory-shell.fire-map{grid-template-columns:360px 1fr;grid-template-rows:210px 1fr 196px;grid-template-areas:"summary visual" "inspector visual" "rail rail"}.inventory-shell.security-video{grid-template-columns:1fr 390px;grid-template-rows:1fr 230px;grid-template-areas:"visual inspector" "rail summary"}.inventory-shell.elevator-shaft{grid-template-columns:280px 1fr 360px;grid-template-rows:1fr;grid-template-areas:"rail visual inspector"}.inventory-shell.parking-map{grid-template-columns:1fr 430px;grid-template-rows:200px 1fr;grid-template-areas:"summary inspector" "visual rail"}.inventory-shell.lighting-circuit{grid-template-columns:340px 1fr;grid-template-rows:170px 1fr;grid-template-areas:"summary visual" "rail visual"}.inventory-shell.structure-axis{grid-template-columns:1fr 370px;grid-template-rows:1fr 220px;grid-template-areas:"visual inspector" "rail summary"}.inventory-shell.cleaning-route{grid-template-columns:420px 1fr 300px;grid-template-rows:1fr;grid-template-areas:"rail visual inspector"}.inventory-shell.landscape-zone{grid-template-columns:340px 1fr;grid-template-rows:210px 1fr;grid-template-areas:"summary visual" "inspector visual"}.inventory-summary{grid-area:summary}.inventory-visual{grid-area:visual}.inventory-inspector{grid-area:inspector}.device-rail{grid-area:rail}.summary-mini{display:grid;grid-template-columns:repeat(2,1fr);padding:10px;gap:8px}.summary-mini a{border:1px solid #1b4b6a;padding:12px;text-decoration:none;color:inherit}.summary-mini strong{display:block;font:24px Consolas;color:var(--accent)}.summary-mini span{font-size:14px;color:#799caf}.device-scroll{height:calc(100% - 90px);overflow:auto;padding:8px;scrollbar-color:#245c7b #071827;scrollbar-width:thin}.device-search{height:48px;padding:7px 9px;border-bottom:1px solid #163b56}.device-search input{width:100%;height:34px;background:#041221;border:1px solid #1c4b69;color:#d8f1fc;padding:0 10px;outline:none}.device-search input:focus{border-color:var(--accent)}.device-card{display:grid;grid-template-columns:58px 1fr auto;gap:9px;align-items:center;border:1px solid #173d56;background:#061726;padding:7px;margin-bottom:7px;color:inherit;text-decoration:none}.device-card img{width:58px;height:48px;object-fit:cover;background:white}.device-card strong{display:block;font-size:15px;line-height:1.25}.device-card small{display:block;color:#5f8195;margin-top:4px;font-size:14px}.device-card em{font-style:normal;font:14px Consolas;color:var(--accent)}.inventory-canvas{height:calc(100% - 42px);position:relative;background:radial-gradient(circle at 50% 45%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 48%),linear-gradient(rgba(28,88,121,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(28,88,121,.12) 1px,transparent 1px);background-size:auto,30px 30px,30px 30px;overflow:hidden}.inventory-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.3;filter:saturate(.7)}.schema{position:absolute;inset:42px;display:grid;place-items:center}.schema-main{position:relative;width:72%;height:72%;border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 5%,transparent);clip-path:polygon(8% 0,100% 0,100% 88%,92% 100%,0 100%,0 12%)}.schema-main:before,.schema-main:after{content:"";position:absolute;background:var(--accent);opacity:.42}.schema-main:before{left:10%;right:10%;height:2px;top:50%}.schema-main:after{top:10%;bottom:10%;width:2px;left:50%}.schema-label{position:absolute;left:18px;top:15px;color:#bdddea;font-size:15px}.sensor-node{position:absolute;width:34px;height:34px;border:1px solid var(--accent);background:#061827;border-radius:50%;display:grid;place-items:center;color:var(--accent);font:14px Consolas;text-decoration:none;box-shadow:0 0 14px color-mix(in srgb,var(--accent) 30%,transparent)}.sensor-node:hover{transform:scale(1.15);background:color-mix(in srgb,var(--accent) 18%,#061827)}.inspector-list{padding:10px}.inspector-item{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border-bottom:1px solid #163951}.inspector-item strong{font-size:15px}.inspector-item small{display:block;color:#5f8195;margin-top:3px}.inspector-item span{font:15px Consolas;color:var(--accent)}.detail-shell{flex:1;display:grid;grid-template-columns:360px 1fr 420px;grid-template-rows:310px 1fr;gap:11px;grid-template-areas:"product visual metrics" "product events actions"}.detail-shell.water-flow,.detail-shell.power-vector{grid-template-columns:340px 1fr 390px;grid-template-rows:1fr 245px;grid-template-areas:"product visual metrics" "events visual actions"}.detail-shell.thermal-loop{grid-template-columns:390px 1fr;grid-template-rows:270px 1fr;grid-template-areas:"product metrics" "events visual"}.detail-shell.fire-chain{grid-template-columns:380px 1fr;grid-template-rows:330px 1fr;grid-template-areas:"product visual" "actions events"}.detail-shell.security-feed{grid-template-columns:1fr 430px;grid-template-rows:1fr 230px;grid-template-areas:"visual metrics" "events actions"}.detail-shell.elevator-shaft{grid-template-columns:330px 1fr 370px;grid-template-rows:1fr;grid-template-areas:"product visual actions"}.detail-shell.parking-gate{grid-template-columns:1fr 400px;grid-template-rows:340px 1fr;grid-template-areas:"visual product" "events actions"}.detail-shell.lighting-scene{grid-template-columns:360px 1fr;grid-template-rows:260px 1fr;grid-template-areas:"product metrics" "actions visual"}.detail-shell.structure-wave{grid-template-columns:390px 1fr;grid-template-rows:1fr 230px;grid-template-areas:"product visual" "metrics events"}.detail-shell.service-task{grid-template-columns:360px 1fr 360px;grid-template-rows:1fr;grid-template-areas:"product events actions"}.detail-shell.irrigation-control{grid-template-columns:360px 1fr;grid-template-rows:300px 1fr;grid-template-areas:"product metrics" "actions visual"}.detail-product{grid-area:product}.detail-visual{grid-area:visual}.detail-metrics{grid-area:metrics}.detail-events{grid-area:events}.detail-actions{grid-area:actions}.product-image{height:260px;background:#eef4f6;position:relative}.product-image img{width:100%;height:100%;object-fit:contain}.product-status{position:absolute;left:12px;top:12px}.product-info{padding:16px}.product-info h3{margin:0 0 8px;font-size:20px}.product-info p{margin:8px 0;color:#7899ac;font-size:15px;line-height:1.7}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.info-grid div{border:1px solid #173d56;padding:9px}.info-grid span{display:block;color:#608297;font-size:14px}.info-grid strong{display:block;margin-top:3px;font-size:15px}.visual-stage{height:calc(100% - 42px);position:relative;display:grid;place-items:center;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 15%,transparent),transparent 60%),linear-gradient(rgba(31,100,140,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(31,100,140,.1) 1px,transparent 1px);background-size:auto,24px 24px,24px 24px}.gauge-orbit{width:250px;height:250px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) var(--gauge),#12334a 0);box-shadow:0 0 45px color-mix(in srgb,var(--accent) 20%,transparent);position:relative}.gauge-orbit:before{content:"";position:absolute;inset:18px;border-radius:50%;background:#061626;border:1px solid #245c7c}.gauge-orbit strong{font:48px Consolas;color:var(--accent);position:relative}.gauge-orbit strong small{display:block;text-align:center;font-size:15px;color:#6f93a8}.tank-model{width:210px;height:300px;border:3px solid #2f7da2;border-radius:18px 18px 35px 35px;position:relative;overflow:hidden}.tank-water{position:absolute;left:0;right:0;bottom:0;height:72%;background:linear-gradient(180deg,rgba(38,220,255,.4),rgba(18,99,173,.75));box-shadow:0 -8px 20px rgba(38,220,255,.3)}.phase-vector{position:relative;width:320px;height:320px;border:1px solid #315c76;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 39px,rgba(56,125,160,.25) 40px)}.phase-vector i{position:absolute;left:50%;top:50%;width:43%;height:3px;transform-origin:left;background:var(--accent);box-shadow:0 0 9px currentColor}.phase-vector i:nth-child(2){transform:rotate(120deg);color:#ffcf4d;background:#ffcf4d}.phase-vector i:nth-child(3){transform:rotate(240deg);color:#ff5c68;background:#ff5c68}.thermal-ring{width:340px;height:210px;border:22px solid #1a709a;border-top-color:#73e1ff;border-right-color:#8d79ff;border-radius:50%;display:grid;place-items:center;transform:rotate(-8deg)}.alarm-chain{display:flex;gap:18px;align-items:center}.chain-step{width:110px;padding:18px 8px;border:1px solid #315c77;text-align:center;position:relative}.chain-step:not(:last-child):after{content:"→";position:absolute;right:-15px;color:var(--accent)}.chain-step.done{border-color:#2b9768;color:#6becaf}.chain-step.current{border-color:var(--red);color:#ff8187;box-shadow:0 0 24px rgba(255,79,86,.18)}.camera-screen{position:absolute;inset:0}.camera-screen img{width:100%;height:100%;object-fit:cover;filter:brightness(.75) saturate(.8)}.camera-screen:before{content:"REC  ●";position:absolute;z-index:2;left:18px;top:16px;color:#ff5c64;font:15px Consolas}.camera-corners{position:absolute;inset:24px;border:1px solid rgba(82,218,255,.42);z-index:2}.lift-model{position:relative;width:280px;height:520px;border:2px solid #2f6d8e;background:repeating-linear-gradient(180deg,transparent 0 50px,rgba(58,129,166,.35) 51px)}.lift-car{position:absolute;left:52px;right:52px;height:72px;bottom:33%;border:2px solid var(--accent);background:#0c3551;box-shadow:0 0 20px color-mix(in srgb,var(--accent) 35%,transparent);display:grid;place-items:center;font:22px Consolas}.gate-model{width:540px;height:260px;position:relative;background:linear-gradient(180deg,transparent 65%,#122f41 66%)}.gate-arm{position:absolute;width:360px;height:14px;background:repeating-linear-gradient(90deg,#fff 0 40px,#e44444 40px 80px);left:90px;top:110px;transform-origin:left;transform:rotate(-18deg);box-shadow:0 0 12px rgba(255,255,255,.25)}.plate{position:absolute;left:185px;bottom:55px;background:#1465b7;border:2px solid white;padding:9px 28px;font:bold 24px Consolas}.light-room{width:520px;height:300px;perspective:600px;border:1px solid #2e627f;background:linear-gradient(180deg,#17364d,#07121e 70%);position:relative;box-shadow:inset 0 0 80px color-mix(in srgb,var(--accent) 20%,transparent)}.light-room i{position:absolute;top:28px;width:90px;height:8px;background:#fff4b7;box-shadow:0 0 34px 12px rgba(255,226,96,.38)}.light-room i:nth-child(1){left:55px}.light-room i:nth-child(2){left:215px}.light-room i:nth-child(3){right:55px}.structure-model{width:380px;height:340px;position:relative;border-left:4px solid #6a8da1;border-right:4px solid #6a8da1;background:repeating-linear-gradient(180deg,transparent 0 54px,#315469 55px,#315469 57px)}.structure-model i{position:absolute;width:13px;height:13px;border-radius:50%;background:var(--accent);box-shadow:0 0 13px var(--accent)}.structure-model i:nth-child(1){left:-9px;top:32%}.structure-model i:nth-child(2){right:-9px;top:52%}.structure-model i:nth-child(3){left:48%;bottom:-5px}.service-route{display:flex;width:80%;justify-content:space-between;position:relative}.service-route:before{content:"";position:absolute;left:4%;right:4%;top:18px;border-top:2px dashed #37627a}.route-stop{position:relative;text-align:center;width:90px}.route-stop i{display:grid;place-items:center;margin:auto;width:38px;height:38px;border:1px solid var(--accent);background:#071b2e;border-radius:50%;font-style:normal;color:var(--accent)}.route-stop span{display:block;margin-top:9px;font-size:14px;color:#86a8bb}.soil-profile{width:520px;height:300px;position:relative;border:1px solid #397b63;background:linear-gradient(180deg,#173f35 0 18%,#31533c 19% 36%,#4c4128 37% 62%,#382a1f 63%)}.soil-profile:before{content:"";position:absolute;left:90px;top:30px;width:7px;height:220px;background:#7eea94;box-shadow:150px 40px 0 #6bdc87,300px -5px 0 #69d77f}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);padding:10px;gap:8px}.metric-box{border:1px solid #1a4764;padding:13px}.metric-box strong{font:26px Consolas;color:var(--accent)}.metric-box span{display:block;color:#6f91a5;font-size:14px;margin-top:4px}.wave-svg{width:100%;height:145px}.event-table{width:100%;border-collapse:collapse;font-size:15px}.event-table th,.event-table td{text-align:left;padding:9px 10px;border-bottom:1px solid #15364e}.event-table th{color:#63879e;font-weight:normal}.event-table td:last-child{text-align:right}.action-stack{padding:12px;display:grid;gap:9px}.action-card{border:1px solid #1d4d6b;background:#07192b;padding:12px;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.action-card strong{font-size:15px}.action-card small{display:block;color:#63849a;margin-top:4px}.control-row{display:flex;gap:8px;flex-wrap:wrap;padding:10px}.range-control{padding:15px}.range-control input{width:100%;accent-color:var(--accent)}.modal-backdrop{position:fixed;z-index:1000;inset:0;background:rgba(0,4,10,.78);display:grid;place-items:center;backdrop-filter:blur(7px)}.modal{width:min(840px,calc(100vw - 40px));max-height:calc(100vh - 60px);overflow:auto;background:#06182a;border:1px solid #28769d;box-shadow:0 30px 90px #000;position:relative}.modal.wide{width:min(1180px,calc(100vw - 40px))}.modal-head{height:55px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #24516d}.modal-head h3{margin:0;font-size:16px}.modal-close{width:34px;height:34px;border:1px solid #315f7b;background:#0a2237;cursor:pointer}.modal-body{padding:18px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{color:#7da0b4;font-size:15px}.field input,.field select,.field textarea{border:1px solid #28516c;background:#04111f;color:#e6f6fd;padding:10px;outline:none}.field textarea{min-height:90px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 18px;border-top:1px solid #214963}.video-modal{aspect-ratio:16/9;position:relative;background:#000}.video-modal img{width:100%;height:100%;object-fit:cover;filter:brightness(.75)}.video-overlay{position:absolute;inset:18px;border:1px solid rgba(65,220,255,.55);pointer-events:none}.video-info{position:absolute;left:26px;top:24px;font:15px Consolas;text-shadow:0 1px 4px #000}.video-time{position:absolute;right:26px;bottom:24px;font:18px Consolas;text-shadow:0 1px 4px #000}#toastRoot{position:fixed;z-index:1200;right:24px;top:24px;display:flex;flex-direction:column;gap:10px}.toast{min-width:300px;border:1px solid #2b7b9f;background:#08243a;color:#e7f7ff;padding:13px 16px;box-shadow:0 10px 30px #000;animation:toastin .25s ease}.toast.ok{border-color:#2e9f6e}.toast.warn{border-color:#a07c30}.toast.error{border-color:#a93b47}@keyframes toastin{from{transform:translateX(30px);opacity:0}}.empty-state{height:100%;display:grid;place-items:center;text-align:center;color:#6d90a5}.empty-state strong{display:block;color:#bddbe8;font-size:16px;margin-bottom:8px}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-aspect-ratio:4/3){#viewport:after{content:"建议横屏浏览以获得最佳大屏效果";position:fixed;z-index:2000;bottom:12px;left:50%;transform:translateX(-50%);background:#051829;border:1px solid #256081;color:#9fc7d9;padding:8px 12px;font-size:15px;white-space:nowrap}}
