.map-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,1fr);gap:1rem}.map-grid .panel{margin:0}#map{height:65vh;min-height:440px;border:1px solid var(--line);border-radius:16px;overflow:hidden}.device-row{display:flex;align-items:center;gap:.7rem;text-align:left;background:#0a171b;color:#eaf2f3;border:1px solid var(--line);margin-bottom:.6rem}.device-row span{display:grid}.device-row small,.camera small,.record small{display:block;color:var(--muted);margin-top:.25rem}.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.camera{overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:14px}.camera-image{aspect-ratio:16/9;background:#020607}.camera img,.camera video{width:100%;height:100%;object-fit:contain}.camera>div:last-child{padding:1rem}.live-button{margin-top:.75rem}.recording-filter{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:1rem;align-items:end}.recording-filter button{min-width:170px}.record-list{display:grid;gap:.5rem}.record{display:flex;align-items:center;justify-content:space-between;text-align:left;background:#0a171b;color:#eaf2f3;border:1px solid var(--line)}.record span{display:block}.record em{color:var(--accent);font-style:normal}#playback video{width:100%;max-height:65vh;background:#000;margin-bottom:1rem}@media(max-width:900px){.map-grid,.camera-grid,.recording-filter{grid-template-columns:1fr}#map{height:55vh}}
