:root{--bg: #06111d;--p: #0b2030;--line: #1f4351;--txt: #eaffff;--mut: #83a8b6;--cy: #1fd7d0;--gr: #42dc91;--ye: #ffd15a;--or: #ff914d;--re: #ff5d68}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 70% 0,#0e3740,transparent 27%),var(--bg);color:var(--txt);font:14px Segoe UI,Arial}.app{display:grid;grid-template-columns:205px 1fr;min-height:100vh}.side{position:fixed;width:205px;inset:0 auto 0 0;background:#06131fdd;border-right:1px solid var(--line);padding:16px 11px}.brand{display:flex;gap:9px;align-items:center;padding:4px 6px 17px}.logo{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--gr),var(--cy));display:grid;place-items:center;color:#03251d;font-weight:900}.brand b{display:block}.brand small,.mut{color:var(--mut)}.nav a{display:block;padding:10px;color:#9bc0ca;border-radius:10px;margin:3px;cursor:pointer}.nav a.active,.nav a:hover{background:#143649;color:#fff;box-shadow:inset 3px 0 var(--cy)}main{grid-column:2}.head{position:sticky;top:0;z-index:10;background:#06111de8;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border-bottom:1px solid var(--line);padding:11px 18px}.headtop{display:flex;justify-content:space-between;align-items:center}.head h2{margin:0;font-size:20px}.btn{background:#0d2a3b;border:1px solid var(--line);color:#fff;padding:9px 11px;border-radius:10px;cursor:pointer}.filters{display:grid;grid-template-columns:repeat(6,1fr) auto;gap:7px;margin-top:10px}.filters select,.filters button,.search{background:#0a2131;border:1px solid var(--line);color:#d7edf4;padding:9px;border-radius:9px}.filters button{background:linear-gradient(135deg,#14ae91,#168fa6)}.screen{display:none;padding:15px 18px 28px}.screen.active{display:block}.grid5{display:grid;grid-template-columns:1.35fr repeat(4,1fr);gap:10px}.card{background:linear-gradient(145deg,#102c3ddd,#071b2add);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 45px #0004}.risk{padding:15px;display:grid;grid-template-columns:120px 1fr;align-items:center}.gauge{width:108px;height:108px;border-radius:50%;background:conic-gradient(var(--re) 78%,#193542 0);display:grid;place-items:center;position:relative}.gauge:before{content:"";position:absolute;inset:11px;background:#071a28;border-radius:50%}.gauge b{font-size:29px;z-index:1}.risk h3{color:#ff8088;margin:6px 0}.kpi{padding:14px;min-height:138px;cursor:pointer;transition:.2s}.kpi:hover{transform:translateY(-2px);border-color:#2cc8c8;box-shadow:0 18px 48px #0007}.filterbar{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.filterbar .chip[data-on="1"]{background:#1fd7d022;border-color:var(--cy);color:#fff}.status{padding:4px 8px;border-radius:8px;background:#ffffff0d;font-size:11px}.drawer-note{padding:9px 12px;background:#0b2d3a;border-left:3px solid var(--cy);margin:10px 0;color:#b9d7df}.kpi strong{font-size:31px;display:block;margin:22px 0 4px}.khead{display:flex;justify-content:space-between;color:var(--mut);font-size:11px}.mainGrid{display:grid;grid-template-columns:minmax(720px,2.6fr) minmax(285px,.7fr);gap:10px;margin-top:10px}.map{height:600px;position:relative;overflow:hidden;background:repeating-linear-gradient(31deg,transparent 0 46px,#17435433 47px 48px),repeating-linear-gradient(121deg,transparent 0 62px,#17435422 63px 64px),#0a2736}.ph{padding:13px 15px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.ph h3{margin:0;font-size:14px}.tools{position:absolute;top:58px;left:14px;z-index:2;display:flex;gap:6px;flex-wrap:wrap}.chip{background:#071c2bd9;border:1px solid var(--line);color:#b7d4dc;padding:7px 9px;border-radius:8px;cursor:pointer}.chip.active{background:#1fd7d022;border-color:var(--cy);color:#fff}.zone{position:absolute;border:1px solid #2c788355;border-radius:43%;padding:30px;color:#4f8994}.z1{left:10%;top:24%;width:28%;height:28%}.z2{left:43%;top:18%;width:32%;height:30%}.z3{left:34%;top:61%;width:31%;height:23%}.mk{position:absolute;width:17px;height:17px;border:3px solid white;border-radius:50%;cursor:pointer;box-shadow:0 0 0 8px #fff1}.mk.hide{display:none}.mk:after{content:attr(data-label);position:absolute;left:20px;top:-7px;background:#03131eee;border:1px solid var(--line);padding:5px 7px;border-radius:7px;white-space:nowrap;opacity:0}.mk:hover:after{opacity:1}.red{background:var(--re)}.orange{background:var(--or)}.green{background:var(--gr)}.gray{background:#667e89}.m1{left:24%;top:38%}.m2{left:57%;top:31%}.m3{left:74%;top:53%}.m4{left:44%;top:70%}.m5{left:82%;top:77%}.m6{left:28%;top:80%}.stack{display:grid;grid-template-rows:1.1fr .9fr;gap:10px}.alert{padding:11px 13px;border-bottom:1px solid #19404a;cursor:pointer}.alert:hover,.click:hover{background:#123347}.alert b{display:block}.alert small{color:var(--mut)}.ai{padding:13px;line-height:1.55}.note{background:#9887ff14;border:1px solid #9887ff44;padding:10px;border-radius:10px}.bottom{display:grid;grid-template-columns:1.6fr .6fr;gap:10px;margin-top:10px}.chart{height:190px;position:relative;margin:8px 14px;border-left:1px solid var(--line);border-bottom:1px solid var(--line)}.chart svg{width:100%;height:100%}.tip{display:none;position:absolute;z-index:4;background:#03131f;border:1px solid var(--cy);padding:8px;border-radius:8px;line-height:1.55;pointer-events:none}.cursor{display:none;position:absolute;top:0;bottom:0;width:1px;background:#fff8}.stats{padding:8px 14px}.row{display:flex;justify-content:space-between;padding:10px;border-bottom:1px solid #173844;cursor:pointer}.popup{display:none;position:fixed;inset:0;background:#000a;z-index:50;align-items:center;justify-content:center}.popup.open{display:flex}.popbox{width:min(520px,94vw);background:#0a2637;border:1px solid #2e6673;border-radius:18px;padding:19px}.pophead{display:flex;justify-content:space-between}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.metrics div{background:#071b29;padding:10px;border-radius:10px}.actions{display:flex;gap:7px}.actions button{flex:1}.airTop{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.two{display:grid;grid-template-columns:1.55fr .55fr;gap:10px;margin-top:10px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;text-align:left;border-bottom:1px solid var(--line)}.table th{color:var(--mut);font-size:11px}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:#15384a}.toolbar{display:flex;gap:7px}.toast{position:fixed;right:20px;bottom:20px;background:#113847;border:1px solid var(--cy);padding:11px 15px;border-radius:10px;opacity:0;transform:translateY(70px);transition:.3s}.toast.show{opacity:1;transform:none}.active-filter{display:none;align-items:center;gap:8px;margin:10px 0;padding:9px 12px;border:1px solid #1fd7d055;background:#1fd7d010;border-radius:10px;color:#bcebea}.active-filter.show{display:flex}.active-filter button{margin-left:auto;background:transparent;border:0;color:#fff;cursor:pointer}.rt-grid{display:grid;grid-template-columns:1.35fr .8fr;gap:10px}.rt-feed{height:510px;overflow:auto}.event{display:grid;grid-template-columns:70px 10px 1fr auto;gap:9px;align-items:start;padding:11px 13px;border-bottom:1px solid #19404a;cursor:pointer}.event:hover{background:#123347}.event-time{font-family:monospace;color:#86a8b5}.event-dot{width:8px;height:8px;border-radius:50%;margin-top:5px}.event p{margin:3px 0;color:var(--mut);font-size:12px}.live-table{width:100%;border-collapse:collapse}.live-table th,.live-table td{padding:10px;border-bottom:1px solid var(--line);text-align:left}.live-table th{position:sticky;top:0;background:#0a2434;color:var(--mut);font-size:11px}.blink{animation:blink 1.2s infinite}@keyframes blink{50%{opacity:.35}}.rt-console{height:230px;overflow:auto;background:#04121c;border:1px solid var(--line);border-radius:12px;padding:10px;font-family:monospace;font-size:11px;color:#8fc5cf}.rt-console div{padding:4px 0}.source-pill{font-size:10px;padding:4px 7px;border-radius:8px;background:#ffffff0d}.mini-map{height:300px;position:relative;overflow:hidden;background:repeating-linear-gradient(31deg,transparent 0 40px,#17435433 41px 42px),repeating-linear-gradient(121deg,transparent 0 55px,#17435422 56px 57px),#0a2736}.pulse-ring{animation:pring 1.5s infinite}@keyframes pring{50%{box-shadow:0 0 0 15px transparent}}.breadcrumb{display:flex;gap:7px;align-items:center;color:var(--mut);font-size:12px;margin-bottom:10px}.breadcrumb b{color:var(--txt)}.detail-screen .detail-head{display:flex;justify-content:space-between;gap:15px;align-items:start}.detail-tabs{display:flex;gap:7px;margin:12px 0}.detail-tabs .chip.active{background:#1fd7d022;border-color:var(--cy)}.ai-grid{display:grid;grid-template-columns:1.35fr .75fr;gap:10px}.forecast-band{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:13px}.forecast-band div{padding:11px;border-radius:11px;background:#071b29;border:1px solid var(--line)}.matrix{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:13px}.matrix div{min-height:90px;padding:12px;border-radius:12px;border:1px solid var(--line)}.cause{padding:11px 13px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:10px}.bar{height:6px;background:#183745;border-radius:8px;margin-top:7px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cy),var(--or));border-radius:8px}.sync-filter{outline:2px solid #1fd7d044;outline-offset:-2px}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.tab-panel{display:none}.tab-panel.active{display:block}.alert-layout{display:grid;grid-template-columns:1fr 320px;gap:10px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:13px}.field label{display:block;color:var(--mut);font-size:11px;margin-bottom:5px}.field input,.field select{width:100%;background:#061b29;border:1px solid var(--line);color:#fff;padding:9px;border-radius:9px}.timeline{padding:10px 15px}.timeline-item{position:relative;padding:9px 8px 14px 24px;border-left:2px solid #24505d;margin-left:7px}.timeline-item:before{content:"";position:absolute;width:10px;height:10px;border-radius:50%;left:-6px;top:12px;background:var(--cy)}.switch{width:38px;height:21px;border-radius:15px;background:#27414b;position:relative;cursor:pointer}.switch:after{content:"";position:absolute;width:17px;height:17px;border-radius:50%;background:#fff;top:2px;left:2px;transition:.2s}.switch.on{background:#159f8c}.switch.on:after{left:19px}.channel-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:13px}.channel{padding:14px;text-align:center;border:1px solid var(--line);border-radius:12px;background:#071b29}.alert-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(480px,95vw);background:#092334;border-left:1px solid #326473;z-index:60;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.alert-drawer.open{display:block}.action-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.action-row button{width:100%}@media(max-width:1100px){.alert-layout{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 1fr}.channel-grid{grid-template-columns:repeat(3,1fr)}}.incident-board{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.incident-col{background:#071825;border:1px solid var(--line);border-radius:14px;min-height:360px}.incident-col-head{display:flex;justify-content:space-between;padding:12px;border-bottom:1px solid var(--line)}.incident-ticket{margin:9px;padding:11px;border:1px solid var(--line);border-radius:11px;background:#0b2636;cursor:pointer}.incident-ticket:hover{border-color:var(--cy);transform:translateY(-1px)}.incident-ticket p{margin:5px 0;color:var(--mut);font-size:12px}.sla-progress{height:6px;background:#17333f;border-radius:8px;overflow:hidden;margin-top:8px}.sla-progress i{height:100%;display:block;border-radius:8px}.incident-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(520px,96vw);background:#092334;border-left:1px solid #326473;z-index:70;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.incident-drawer.open{display:block}.evidence-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.evidence-grid div{padding:10px;border:1px solid var(--line);border-radius:10px;background:#071b29}.workflow{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:12px}.workflow span{padding:7px 9px;border-radius:9px;background:#0b2a39;border:1px solid var(--line)}@media(max-width:1100px){.incident-board{grid-template-columns:1fr 1fr}}.demo-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:9px;background:#ffce5414;border:1px solid #ffce5444;color:#ffe39a;font-size:10px}.source-context{display:none;align-items:center;gap:7px;margin:9px 0;padding:8px 11px;border-radius:9px;background:#1fd7d010;border:1px solid #1fd7d044;color:#bcebea}.source-context.show{display:flex}.iot-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:10px}.health-ring{width:112px;height:112px;border-radius:50%;background:conic-gradient(var(--gr) 88%,#17343f 0);display:grid;place-items:center;position:relative;margin:auto}.health-ring:before{content:"";position:absolute;inset:11px;border-radius:50%;background:#081c2a}.health-ring b{z-index:1;font-size:27px}.device-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(500px,96vw);background:#092334;border-left:1px solid #326473;z-index:75;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.device-drawer.open{display:block}.device-tree{padding:12px}.tree-group{margin-bottom:10px}.tree-item{display:flex;justify-content:space-between;padding:9px 10px;margin:4px 0;border-radius:9px;background:#081d2b;border:1px solid var(--line);cursor:pointer}.tree-item:hover{border-color:var(--cy)}.maintenance{display:grid;grid-template-columns:90px 1fr auto;gap:10px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}@media(max-width:1100px){.iot-grid{grid-template-columns:1fr}}.wo-board{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.wo-col{background:#071825;border:1px solid var(--line);border-radius:14px;min-height:330px}.wo-col-head{display:flex;justify-content:space-between;padding:11px;border-bottom:1px solid var(--line);font-size:12px}.wo-card{margin:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:#0b2636;cursor:pointer}.wo-card:hover{border-color:var(--cy);transform:translateY(-1px)}.wo-card p{margin:5px 0;color:var(--mut);font-size:11px}.wo-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(560px,96vw);background:#092334;border-left:1px solid #326473;z-index:80;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.wo-drawer.open{display:block}.checklist label{display:flex;gap:9px;align-items:flex-start;padding:10px;border-bottom:1px solid var(--line);cursor:pointer}.checklist input{margin-top:3px}.field-team{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.field-team div{padding:10px;border:1px solid var(--line);border-radius:10px;background:#071b29}.evidence-card{padding:12px;border:1px dashed #356474;border-radius:11px;text-align:center;background:#071b29}.progress-line{height:7px;background:#17343f;border-radius:8px;overflow:hidden;margin-top:8px}.progress-line i{display:block;height:100%;background:linear-gradient(90deg,var(--cy),var(--gr));border-radius:8px}.wo-source{display:none;margin:9px 0;padding:8px 11px;border:1px solid #1fd7d044;background:#1fd7d010;border-radius:9px;color:#bcebea}.wo-source.show{display:flex}.wo-source button{margin-left:auto}@media(max-width:1200px){.wo-board{grid-template-columns:repeat(3,1fr)}}@media(max-width:800px){.wo-board,.field-team{grid-template-columns:1fr}}.app{grid-template-columns:245px 1fr}.side{width:245px;padding:18px 14px;background:#030d17db;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-right:1px solid rgba(148,210,225,.14);z-index:20}.side .brand{gap:11px;padding:5px 8px 20px}.side .logo{width:42px;height:42px;border-radius:13px;box-shadow:0 0 24px #1fd7d040}.side .brand b{font-size:16px}.nav-title{font-size:10px;letter-spacing:1.5px;color:#567786;margin:15px 10px 8px}.side .nav a{display:flex;align-items:center;gap:10px;padding:11px 12px;color:#9db9c5;text-decoration:none;border-radius:12px;margin:4px 0}.side .nav a:hover,.side .nav a.active{color:#fff;background:linear-gradient(90deg,#1fd7d02e,#1fd7d00a);box-shadow:inset 3px 0 #1fd7d0}.side .nav .ico{width:22px;text-align:center;flex:0 0 22px}.side .nav .sub{padding-left:43px;font-size:12px;color:#7fa4b1}.side-foot{position:absolute;bottom:15px;left:14px;right:14px;padding:12px;border:1px solid rgba(148,210,225,.14);border-radius:14px;background:#071a28}.report-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:10px}.report-template-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:13px}.report-template{padding:14px;border:1px solid var(--line);border-radius:12px;background:#071b29;cursor:pointer}.report-template:hover{border-color:var(--cy);transform:translateY(-1px)}.report-schedule{display:grid;grid-template-columns:90px 1fr auto;gap:10px;align-items:center;padding:11px;border-bottom:1px solid var(--line)}.format-pill{display:inline-block;padding:4px 7px;border-radius:8px;background:#ffffff0d;font-size:10px;margin-right:4px}.report-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(520px,96vw);background:#092334;border-left:1px solid #326473;z-index:85;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.report-drawer.open{display:block}.admin-user-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(520px,96vw);background:#092334;border-left:1px solid #326473;z-index:90;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.admin-user-drawer.open{display:block}@media(max-width:1100px){.report-grid{grid-template-columns:1fr}.report-template-grid{grid-template-columns:1fr 1fr}}@media(max-width:1200px){.grid5{grid-template-columns:1fr 1fr}.risk{grid-column:1/-1}.mainGrid,.bottom,.two{grid-template-columns:1fr}.filters{grid-template-columns:repeat(3,1fr)}}@media(max-width:800px){.app{display:block}.side{display:none}main{grid-column:auto}.grid5,.airTop,.filters{grid-template-columns:1fr 1fr}.map{height:500px}}.side .nav a{font-size:14px}.side .nav .sub{padding-left:28px;font-size:14px;color:#91b3bf}.side .nav .sub .ico{width:22px;flex:0 0 22px;font-size:14px}.side .nav a.parent-active{color:#d8ffff;background:#1fd7d014;box-shadow:inset 2px 0 #1fd7d07a}.side .nav a.parent-active .ico{color:var(--cy)}.admin-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.admin-panel{display:none}.admin-panel.active{display:block}.admin-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:10px}.session-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}.permission-grid{display:grid;grid-template-columns:1.2fr repeat(4,.7fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.permission-grid div{padding:10px;background:#0a2231}.admin-actions{display:flex;gap:7px;flex-wrap:wrap}@media(max-width:1100px){.admin-grid{grid-template-columns:1fr}.permission-grid{font-size:11px}}.flow-context{display:none;align-items:center;gap:8px;margin:0 0 10px;padding:8px 11px;border:1px solid #1fd7d044;background:#1fd7d010;border-radius:10px;color:#bcebea;font-size:12px}.flow-context.show{display:flex}.flow-context button{margin-left:auto}.priority-row{background:#ff5d6809}.priority-row td:first-child{box-shadow:inset 3px 0 var(--re)}.list-filter-panel{margin:10px 0 0;padding:12px 13px;border:1px solid var(--line);border-radius:13px;background:#071b29}.list-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px;align-items:end}.list-filter-grid .field{min-width:0}.list-filter-grid .field select,.list-filter-grid .field input{width:100%}.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable:hover{color:#fff}.sort-mark{display:inline-block;min-width:12px;margin-left:4px;color:#6b929f}.sortable.sort-asc .sort-mark,.sortable.sort-desc .sort-mark{color:var(--cy)}@media(max-width:1100px){.list-filter-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:800px){.list-filter-grid{grid-template-columns:1fr 1fr}}.asset-hero{display:grid;grid-template-columns:1.35fr .65fr;gap:10px;margin-bottom:10px}.asset-identity{padding:16px;display:grid;grid-template-columns:72px 1fr auto;gap:14px;align-items:center}.asset-icon{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,#1fd7d033,#42dc9133);border:1px solid #47d8cf55;display:grid;place-items:center;font-size:28px}.asset-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.asset-meta span{padding:5px 8px;border-radius:8px;background:#ffffff0b;border:1px solid var(--line);font-size:11px;color:#b9d5df}.asset-state{text-align:right}.asset-state b{display:block;font-size:16px;color:var(--gr)}.detail-panel{display:none}.detail-panel.active{display:block}.detail-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.detail-kpi{padding:14px;min-height:112px}.detail-kpi strong{display:block;font-size:25px;margin:16px 0 3px}.station-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:10px;margin-top:10px}.station-map{height:270px;position:relative;overflow:hidden;background:repeating-linear-gradient(31deg,transparent 0 40px,#17435433 41px 42px),repeating-linear-gradient(121deg,transparent 0 55px,#17435422 56px 57px),#0a2736}.station-map:after{content:"KCN Thăng Long · Kim Chung · Đông Anh · Hà Nội";position:absolute;left:14px;bottom:12px;padding:6px 9px;border-radius:8px;background:#03131fdd;border:1px solid var(--line);font-size:11px;color:#b7d4dc}.station-pin{position:absolute;left:52%;top:45%;width:20px;height:20px;border-radius:50%;background:var(--re);border:4px solid white;box-shadow:0 0 0 12px #ff5d6822}.camera-frame{height:270px;background:linear-gradient(145deg,#102f3c,#04121c);display:grid;place-items:center;position:relative;overflow:hidden}.camera-frame:before{content:"";position:absolute;inset:18px;border:1px solid #4f899455;border-radius:12px;background:repeating-linear-gradient(0deg,transparent 0 34px,#ffffff08 35px),repeating-linear-gradient(90deg,transparent 0 50px,#ffffff06 51px)}.camera-frame .camera-center{z-index:1;text-align:center}.camera-live{position:absolute;top:13px;left:13px;z-index:2;padding:5px 8px;border-radius:8px;background:#ff5d6822;border:1px solid #ff5d6855;color:#ff9aa1;font-size:10px}.linked-list{padding:4px 14px 12px}.linked-item{display:grid;grid-template-columns:90px 1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line);cursor:pointer}.linked-item:hover{background:#12334755}.digital-passport{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.digital-passport div{padding:11px;background:#081d2b}.digital-passport small{display:block;color:var(--mut);margin-bottom:4px}.device-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:13px}.device-mini{padding:12px;border:1px solid var(--line);border-radius:11px;background:#071b29;cursor:pointer}.device-mini:hover{border-color:var(--cy)}.period-tabs{display:flex;gap:6px}.period-tabs .chip{padding:5px 8px}@media(max-width:1100px){.asset-hero,.station-grid{grid-template-columns:1fr}.detail-kpis,.device-cards{grid-template-columns:1fr 1fr}}.trace-link{color:var(--cy);font-weight:700}.status-false{color:#9db0b8}.status-converted{color:#62c9ff}.workflow-note{padding:10px 12px;border:1px solid #1fd7d044;background:#1fd7d010;border-radius:10px;margin:10px 0}.reason-box{display:none;margin:10px 0}.reason-box.show{display:block}.trace-chain{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:10px 0}.trace-chain span{padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#071b29}.station-admin-grid{display:grid;grid-template-columns:1fr 360px;gap:10px}.station-form-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(620px,97vw);background:#092334;border-left:1px solid #326473;z-index:92;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.station-form-drawer.open{display:block}.station-form-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.station-form-panel{display:none}.station-form-panel.active{display:block}.station-link-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:13px}.station-link-card{padding:12px;border:1px solid var(--line);border-radius:11px;background:#071b29;cursor:pointer}.station-link-card:hover{border-color:var(--cy)}.station-lifecycle{display:flex;gap:6px;flex-wrap:wrap;padding:13px}.station-lifecycle span{padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:#071b29}.station-state-draft{color:var(--ye)}.station-state-active{color:var(--gr)}.station-state-suspended{color:var(--mut)}@media(max-width:1100px){.station-admin-grid{grid-template-columns:1fr}.station-link-grid{grid-template-columns:1fr 1fr}}.ops-form-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(640px,97vw);background:#092334;border-left:1px solid #326473;z-index:96;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.ops-form-drawer.open{display:block}.builder-preview{padding:12px;border:1px solid #1fd7d044;background:#1fd7d010;border-radius:11px;margin:10px 0}.form-section{margin:14px 0}.form-section h3{margin:0 0 8px}.form-help{font-size:11px;color:var(--mut);margin-top:5px}.rule-actions{display:flex;gap:6px;flex-wrap:wrap}.rule-actions .btn{padding:6px 8px}.validation-ok{color:var(--gr)}.device-lifecycle{display:flex;gap:6px;flex-wrap:wrap;padding:12px}.device-lifecycle span{padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:#071b29}.asset-action{display:flex;gap:6px;flex-wrap:wrap}.asset-action .btn{padding:6px 8px}.bind-list{max-height:230px;overflow:auto;border:1px solid var(--line);border-radius:10px}.bind-option{padding:10px;border-bottom:1px solid var(--line);cursor:pointer}.bind-option:hover,.bind-option.selected{background:#1fd7d018}.life-active{color:var(--gr)}.life-maintenance{color:var(--ye)}.life-retired{color:var(--mut)}.master-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.master-card{padding:13px}.master-card .row{cursor:default}.master-actions{display:flex;gap:6px}.schedule-preview{padding:12px;border:1px solid #1fd7d044;background:#1fd7d010;border-radius:11px}.recipient-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.recipient-tags span{padding:5px 8px;border:1px solid var(--line);border-radius:8px;background:#071b29}.master-form{display:none;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#071b29}.master-form.show{display:block}@media(max-width:1100px){.master-grid{grid-template-columns:1fr 1fr}}.role-builder-drawer{display:none;position:fixed;inset:0 0 0 auto;width:min(650px,97vw);background:#092334;border-left:1px solid #326473;z-index:98;box-shadow:-20px 0 60px #0008;padding:18px;overflow:auto}.role-builder-drawer.open{display:block}.permission-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.permission-checks label{padding:10px;border:1px solid var(--line);border-radius:10px;background:#071b29}.admin-user-drawer .form-grid{grid-template-columns:1fr 1fr}.user-mode{padding:5px 8px;border-radius:8px;background:#1fd7d015;border:1px solid #1fd7d044;color:#bcebea}a{color:inherit}.breadcrumb a{color:var(--mut);text-decoration:none}.breadcrumb a:hover{color:var(--cy)}main{min-width:0}.screen{display:block}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#1599a8!important;border-color:#1fb7c3!important}.btn-danger{background:#8a2f3a!important;border-color:#b8454f!important}.btn-muted{background:#6b7f88!important}.btn-sm{padding:5px 9px;font-size:12px}.click{cursor:pointer}.kpi-active{border-color:var(--cy)!important;box-shadow:0 0 0 1px #1fd7d055 inset}.toast{z-index:200;max-width:460px}.toast-error{border-color:var(--re);background:#3a1820}.no-hover:hover{background:transparent!important;cursor:default!important}.right{text-align:right}.nowrap{white-space:nowrap}.ellipsis{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters{grid-template-columns:repeat(4,1fr) auto}.head-actions{display:flex;align-items:center;gap:6px}.hub-dot{font-size:12px;color:var(--mut);margin-right:6px}.hub-dot.on{color:var(--gr)}.user-box{display:flex;gap:10px;align-items:center}.user-box b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-box small{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{flex:0 0 36px;height:36px;border-radius:12px;display:grid;place-items:center;font-weight:700;color:#06111d;background:linear-gradient(135deg,#1fd7d0,#42dc91)}.user-actions{display:flex;gap:10px;margin-top:5px;font-size:12px}.user-actions a{color:var(--cy);cursor:pointer}.user-actions a:hover{text-decoration:underline}.side{overflow-y:auto;padding-bottom:110px}.state-box{padding:22px;text-align:center;color:var(--mut)}.error-box{color:#ffb3b9}.spinner{display:inline-block;width:14px;height:14px;border:2px solid #1fd7d055;border-top-color:var(--cy);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.boot{min-height:100vh;display:grid;place-items:center}.form-error{padding:9px 12px;border-radius:9px;border:1px solid #ff5d6866;background:#ff5d6815;color:#ffb3b9;margin-bottom:10px}.pager{display:flex;justify-content:space-between;align-items:center;padding:10px 14px}.pager .btn{margin-left:6px;padding:6px 10px}.field textarea{width:100%;background:#061b29;border:1px solid var(--line);color:#fff;padding:9px;border-radius:9px;font:inherit;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.search:focus{outline:none;border-color:var(--cy)}.field input[type=checkbox],.field input[type=radio]{width:auto}.field label.check-inline{display:inline-flex;margin:0 12px 0 0;color:inherit;font-size:12px}.check-list{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow:auto;padding:8px;background:#061b29;border:1px solid var(--line);border-radius:9px}.check-list label{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;color:#cfe7ee;font-size:12px;cursor:pointer;margin:0}.check-list label.on{border-color:var(--cy);background:#1fd7d018;color:#fff}.check-list input{margin:0}.levels-table{width:100%;border-collapse:collapse}.levels-table td,.levels-table th{padding:5px;text-align:left}.levels-table th{color:var(--mut);font-size:11px}.levels-table input,.levels-table select{width:100%;background:#061b29;border:1px solid var(--line);color:#fff;padding:7px;border-radius:8px}.drawer-backdrop{position:fixed;inset:0;background:#0006;z-index:55}.ops-form-drawer h3,.alert-drawer h3{margin:16px 0 8px;font-size:14px}.alert-drawer .note,.ops-form-drawer .note{margin-top:12px}.inline-actions{display:flex;gap:6px;flex-wrap:wrap}.chart-axis{position:absolute;left:4px;font-size:10px;color:var(--mut);pointer-events:none}.chart-axis.top{top:2px}.chart-axis.bottom{bottom:2px}.chart-x{position:absolute;bottom:-18px;font-size:10px;color:var(--mut)}.chart-x.left{left:0}.chart-x.right{right:0}.chart{margin-bottom:26px}.chart-empty{display:grid;place-items:center}.legend i{font-style:normal;margin-left:10px}.map{height:600px}.map .leaflet-wrap{position:absolute;inset:58px 0 0}.map .tools{top:68px;left:56px;z-index:2}.leaflet-wrap{position:relative;z-index:0;isolation:isolate;border-radius:0 0 14px 14px;overflow:hidden}.leaflet-container{background:#0a2736;font:inherit}.leaflet-control-attribution{background:#03131ecc!important;color:var(--mut)!important;font-size:10px}.leaflet-control-attribution a{color:var(--cy)!important}.leaflet-bar a{background:#0d2a3b!important;color:#fff!important;border-color:var(--line)!important}.mk-pin{display:block;width:17px;height:17px;border:3px solid white;border-radius:50%;box-shadow:0 0 0 8px #fff1;cursor:pointer}.mk-pin.yellow{background:var(--ye)}.mk-pin.cyan{background:var(--cy)}.mk-pin.pulse{animation:pulse 1.6s infinite}@keyframes pulse{0%{box-shadow:0 0 #ff5d6877}70%{box-shadow:0 0 0 14px #ff5d6800}to{box-shadow:0 0 #ff5d6800}}.mk-tip{background:#03131eee!important;border:1px solid var(--line)!important;color:var(--txt)!important;border-radius:7px!important;box-shadow:none!important}.mk-tip:before{display:none}.map-legend{position:absolute;right:12px;bottom:22px;z-index:2;background:#03131ecc;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:11px;line-height:1.7}.map-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.value-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px;padding:13px}.value-tile{border:1px solid var(--line);border-radius:12px;padding:12px;background:#071b29}.value-tile small{color:var(--mut);font-size:11px;display:flex;justify-content:space-between}.value-tile strong{font-size:24px;display:block;margin:8px 0 2px}.value-tile.flash{animation:flash 1.2s}@keyframes flash{0%{background:#1fd7d033}to{background:#071b29}}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(410px,94vw);padding:28px;border-radius:18px}.login-card .brand{display:flex;gap:11px;align-items:center}.login-card .logo{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;font-weight:800;color:#06111d;background:linear-gradient(135deg,#1fd7d0,#42dc91)}.login-card .brand b{display:block;font-size:16px}.login-card .brand small{color:var(--mut)}.login-card .field input{padding:11px}.perm-matrix th,.perm-matrix td{text-align:center!important}.perm-matrix td:first-child,.perm-matrix th:first-child{text-align:left!important}.perm-matrix input{cursor:pointer}.perm-matrix tbody tr{cursor:default}.pill{display:inline-block;padding:3px 8px;border-radius:8px;font-size:11px;background:#ffffff0d;border:1px solid var(--line);margin:1px 3px 1px 0}.pill.cy{color:var(--cy);border-color:#1fd7d055}.mock-scope [onclick]{cursor:pointer}@media(max-width:1250px){.mainGrid{grid-template-columns:1fr}}.check-inline{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.iot-grid{grid-template-columns:minmax(300px,.75fr) 1.6fr}.iot-grid .table td{white-space:nowrap}.evidence-grid div>*{display:block;margin-bottom:3px}.leaflet-wrap.dark-tiles .leaflet-tile-pane{filter:invert(1) hue-rotate(185deg) brightness(.95) contrast(.9) saturate(.6)}.map,.leaflet-wrap{isolation:isolate}.leaflet-container{z-index:0}.alert-popup{position:fixed;right:20px;bottom:74px;width:min(400px,calc(100vw - 32px));z-index:150;background:#0a2637f2;border:1px solid #2e6673;border-radius:16px;box-shadow:0 18px 50px #000a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:10px;animation:alertPopIn .25s ease-out}.alert-popup-head{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 8px}.alert-popup-item{border:1px solid var(--line);border-left:4px solid var(--or);border-radius:12px;background:#071b29;padding:10px 12px;margin-top:8px;animation:alertPopIn .25s ease-out}.alert-popup-item.critical{background:linear-gradient(90deg,#ff5d6822,#071b29 60%);animation:alertPopIn .25s ease-out,alertPulse 1.6s ease-in-out 3}.alert-popup-top{display:flex;justify-content:space-between;align-items:center;font-size:11px}.alert-popup-msg{display:block;margin:5px 0 3px;font-size:14px}.alert-popup-x{background:transparent;border:0;color:var(--mut);cursor:pointer;font-size:13px;padding:2px 4px}.alert-popup-x:hover{color:#fff}.alert-popup-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}@keyframes alertPopIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes alertPulse{0%,to{box-shadow:0 0 #ff5d6800}50%{box-shadow:0 0 0 4px #ff5d6855}}.popup{z-index:120}.wo-board .wo-card .wo-meta{display:flex;justify-content:space-between;gap:6px;font-size:11px;color:var(--mut);margin-top:4px}.wo-board .wo-col{min-height:220px;max-height:520px;overflow:auto}.wo-board .wo-more{display:block;text-align:center;font-size:11px;color:var(--mut);padding:6px}.wo-source b{color:#fff}.wo-source .inline-actions{margin-left:auto}.wo-checklist .item{display:flex;gap:9px;align-items:flex-start;padding:9px 4px;border-bottom:1px solid var(--line)}.wo-checklist .item input[type=checkbox]{margin-top:3px}.wo-checklist .item .body{flex:1;min-width:0}.wo-checklist .item.done .title{color:var(--gr)}.wo-checklist .item small{display:block;color:var(--mut)}.wo-checklist .x{background:transparent;border:0;color:var(--mut);cursor:pointer}.wo-checklist .x:hover{color:var(--re)}.wo-evidence{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.wo-evidence .ev{border:1px solid var(--line);border-radius:10px;background:#071b29;padding:8px;font-size:11px;display:flex;flex-direction:column;gap:4px;min-width:0}.wo-evidence .ev .thumb{height:92px;border-radius:7px;background:#0b2636 center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:var(--mut);font-size:22px;cursor:pointer;overflow:hidden}.wo-evidence .ev .thumb img{width:100%;height:100%;object-fit:cover}.wo-evidence .ev .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#dceff3}.wo-evidence .ev .ev-actions{display:flex;gap:4px}.wo-evidence .ev .ev-actions button{flex:1;padding:3px 6px;font-size:11px}.wo-upload{border:1px dashed #356474;border-radius:11px;padding:10px;background:#071b29;margin-top:8px;display:grid;gap:8px}.wo-upload .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.gps-ok{color:var(--gr)}.gps-bad{color:var(--re)}.gps-unknown{color:var(--ye)}.wo-items-edit{display:grid;gap:6px}.wo-items-edit .r{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center}.wo-items-edit input:not([type=checkbox]){width:100%;background:#061b29;border:1px solid var(--line);color:#fff;padding:8px;border-radius:9px}.link{color:var(--cy);cursor:pointer}.link:hover{text-decoration:underline}.leaflet-container .area-tip{font-size:12px;padding:3px 7px}.leaflet-interactive:focus{outline:none}.rpt-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:10px}.rpt-kpis div{border:1px solid var(--line);border-radius:10px;background:#071b29;padding:9px 10px}.rpt-kpis small{display:block;color:var(--mut);font-size:11px}.rpt-kpis b{font-size:17px}.rpt-template-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.rpt-template-pick .report-template{padding:10px}.report-template.on{border-color:var(--cy);background:#1fd7d014}.report-template p{line-height:1.4}@media(max-width:900px){.rpt-template-pick{grid-template-columns:1fr 1fr}}.ops-form-drawer>.field{margin-top:12px}
