/* AETEC Facility Digital Twin — inclusive operations enhancement */
.twin-viewport.hide-power .layer-power,
.twin-viewport.hide-water .layer-water,
.twin-viewport.hide-fire .layer-fire,
.twin-viewport.hide-gas .layer-gas{opacity:0!important;pointer-events:none}
.power-line{stroke:#ffd166;stroke-width:2.3;fill:none;stroke-dasharray:3 5;animation:flow 3.2s linear infinite}
.water-line{stroke:#4da3ff;stroke-width:2.4;fill:none;stroke-dasharray:9 5;animation:flow 4.5s linear infinite}
.fire-line{stroke:#ff6b74;stroke-width:2.1;fill:none;stroke-dasharray:2 5;animation:flow 3.6s linear infinite}
.gas-line{stroke:#ff9f43;stroke-width:2.1;fill:none;stroke-dasharray:10 5;animation:flow 4.1s linear infinite}
.utility-node{stroke:#eef8ff;stroke-width:.8}.utility-label{fill:#d8e7f1;font-size:8px;font-weight:700;letter-spacing:.04em}.utility-sub{fill:#87a5b8;font-size:7px}.sprinkler{fill:#ff6b74;stroke:#ffe9eb;stroke-width:.7}.gas-sensor{fill:#ff9f43;stroke:#fff2df;stroke-width:.7}.power-node{fill:#ffd166}.water-node{fill:#4da3ff}.asset-hit{cursor:pointer}.asset-hit:hover{filter:url(#glow)}
.detection-box{fill:rgba(86,214,160,.04);stroke:#56d6a0;stroke-width:1.2;stroke-dasharray:4 3}.detection-box.review{fill:rgba(255,195,90,.04);stroke:#ffc35a}.detection-box.fire{fill:rgba(255,107,116,.05);stroke:#ff6b74}.detection-label{fill:#07111d;font-size:7px;font-weight:800}.detection-label-bg{fill:#56d6a0}.detection-label-bg.review{fill:#ffc35a}.detection-label-bg.fire{fill:#ff6b74}

.cctv-panel{margin-top:13px}.cctv-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.cctv-panel-head h3{font-size:11px;margin:0}.cctv-panel-head span{font-size:8px;color:var(--cyan)}.cctv-mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.camera-card{border:1px solid var(--line);background:#081723;border-radius:11px;padding:7px;color:var(--text);text-align:left;min-width:0}.camera-card:hover{border-color:#426d89}.camera-card.active-review{border-color:rgba(255,195,90,.55)}.camera-card.active-fire{border-color:rgba(255,107,116,.55)}.camera-card b{display:block;font-size:8px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.camera-card small{display:block;font-size:7px;color:var(--muted);margin-top:3px;line-height:1.35}.cam-status{display:inline-flex;align-items:center;gap:4px;font-size:7px;border-radius:999px;padding:3px 5px;margin-top:5px;border:1px solid var(--line2)}.cam-status.normal,.cam-status.cleared{color:var(--green)}.cam-status.review{color:var(--amber)}.cam-status.fire{color:var(--red)}
.camera-feed{height:66px;border-radius:8px;position:relative;overflow:hidden;background:linear-gradient(155deg,#173046,#07111b);border:1px solid #1f3a4f}.camera-feed:before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(90,167,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(90,167,255,.07) 1px,transparent 1px);background-size:14px 14px}.camera-feed:after{content:"LIVE";position:absolute;left:5px;top:5px;font-size:6px;color:#fff;background:rgba(255,107,116,.75);padding:2px 4px;border-radius:4px}.feed-person{position:absolute;width:11px;height:24px;border:1px solid var(--green);border-radius:6px 6px 3px 3px}.feed-person:before{content:"";position:absolute;width:7px;height:7px;border:1px solid inherit;border-radius:50%;left:1px;top:-9px}.feed-box{position:absolute;border:1px solid var(--amber);font-size:6px;color:#ffe1a7;padding:2px}.feed-smoke{position:absolute;width:26px;height:20px;border:1px dashed var(--red);border-radius:50%;filter:blur(.2px)}.feed-label{position:absolute;right:4px;bottom:4px;font-size:6px;color:#a9c1d1;background:rgba(3,10,16,.7);padding:2px 4px;border-radius:4px}

.cctv-large{height:260px;border-radius:14px;position:relative;overflow:hidden;background:linear-gradient(145deg,#16344c,#07111b);border:1px solid #2b5069}.cctv-large:before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(90,167,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(90,167,255,.08) 1px,transparent 1px);background-size:28px 28px}.large-person{position:absolute;width:44px;height:98px;border:2px solid var(--green);border-radius:18px 18px 8px 8px}.large-person:before{content:"";position:absolute;width:25px;height:25px;border:2px solid inherit;border-radius:50%;left:7px;top:-31px}.large-box{position:absolute;border:2px solid var(--amber);padding:5px;color:#ffe7b7;font-size:9px}.large-fire{position:absolute;width:90px;height:70px;border:2px dashed var(--red);border-radius:50%;color:#ffd5d8;font-size:9px;padding:6px}.camera-overlay-title{position:absolute;left:12px;top:12px;background:rgba(3,10,16,.78);border:1px solid #315a72;border-radius:8px;padding:7px 9px;font-size:9px}.camera-overlay-time{position:absolute;right:12px;top:12px;background:rgba(3,10,16,.78);border-radius:8px;padding:7px 9px;font-size:8px;color:#b5c9d7}.camera-analysis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.analysis-card{border:1px solid var(--line);border-radius:12px;background:#091825;padding:11px}.analysis-card h4{font-size:10px;margin:0 0 8px}.analysis-row{display:flex;justify-content:space-between;gap:12px;font-size:8px;padding:6px 0;border-bottom:1px solid rgba(30,51,72,.65)}.analysis-row span:first-child{color:var(--muted)}

.enhanced-form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.enhanced-form-grid.two{grid-template-columns:1fr 1fr}.form-label{font-size:9px;color:var(--muted)}.form-control{width:100%;margin-top:5px;background:#0b1c2b;color:var(--text);border:1px solid var(--line2);border-radius:9px;padding:9px;outline:none}.form-control:focus{border-color:var(--cyan)}textarea.form-control{height:84px;resize:vertical}.qr-row{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:end}.helper{font-size:8px;color:var(--muted);line-height:1.45;margin-top:5px}

.finding-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.finding-stat{border:1px solid var(--line);border-radius:11px;background:#091825;padding:9px}.finding-stat label{font-size:8px;color:var(--muted);text-transform:uppercase}.finding-stat b{display:block;font-size:18px;margin-top:4px}.finding-table-wrap{overflow:auto;max-height:225px}.finding-link{border:0;background:none;color:var(--cyan);padding:0;font-size:8px;text-align:left}.audit-timeline{display:flex;flex-direction:column;gap:6px;margin-top:10px}.audit-item{display:grid;grid-template-columns:78px 88px 1fr;gap:8px;font-size:8px;border-left:2px solid #2c5b75;background:#091825;border-radius:0 9px 9px 0;padding:7px 8px}.audit-item time{color:#7795a9}.audit-item b{color:#cfe0eb}.audit-item span{color:var(--muted)}

.infrastructure-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.infra-card{border:1px solid var(--line);background:#091825;border-radius:12px;padding:10px;min-height:112px}.infra-card h4{font-size:10px;margin:0 0 5px}.infra-card p{font-size:8px;color:var(--muted);line-height:1.45;margin:0 0 8px}.infra-card .infra-kpi{display:flex;justify-content:space-between;font-size:8px;margin-top:5px}.infra-card .infra-kpi b{font-size:10px}.infra-show{border:1px solid var(--line2);background:#0d2131;color:var(--cyan);font-size:8px;border-radius:7px;padding:5px 7px;margin-top:8px}.fire-plan{margin-top:10px;border:1px solid rgba(255,107,116,.28);background:rgba(255,107,116,.05);border-radius:12px;padding:10px}.fire-plan-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.fire-plan-head h4{font-size:10px;margin:0}.plan-chip{font-size:8px;padding:4px 6px;border-radius:999px;border:1px solid rgba(86,214,160,.35);color:var(--green)}

.db-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.db-toolbar input,.db-toolbar select{background:#0b1c2b;color:var(--text);border:1px solid var(--line2);border-radius:9px;padding:8px;font-size:9px}.db-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.db-table-wrap{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:11px}.db-note{border:1px solid rgba(50,214,210,.26);background:rgba(50,214,210,.06);padding:9px;border-radius:10px;font-size:8px;line-height:1.5;color:#bce1e1;margin-top:10px}.db-tabs{display:flex;gap:5px;margin-bottom:10px}.db-tabs button{border:1px solid var(--line2);background:#0b1b29;color:var(--muted);font-size:9px;padding:7px 9px;border-radius:8px}.db-tabs button.active{color:var(--text);border-color:var(--cyan);background:#123047}

.plan-utility-strip{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}.plan-utility-strip span{font-size:8px;border:1px solid var(--line2);border-radius:999px;padding:5px 7px}.zone-systems{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.zone-systems i{font-style:normal;font-size:7px;border-radius:999px;background:#10283a;border:1px solid #294b63;padding:3px 5px;color:#9bb5c6}

@media(max-width:1500px){.infrastructure-grid{grid-template-columns:repeat(3,1fr)}.enhanced-form-grid{grid-template-columns:1fr 1fr}.finding-summary,.db-summary{grid-template-columns:1fr 1fr}}
