*{box-sizing:border-box}:root{font-family:Inter,system-ui,sans-serif;color:#f9fafb;background:#0b1120}body{margin:0;min-height:100vh;background:#0b1120}.site-header{display:flex;justify-content:space-between;gap:2rem;align-items:center;padding:1.5rem clamp(1rem,4vw,3rem);border-bottom:1px solid rgba(255,255,255,.08);background:rgba(11,17,32,.95);position:sticky;top:0;z-index:1000}.eyebrow{margin:0 0 .35rem;font-size:.72rem;letter-spacing:.16em;font-weight:800;color:#93c5fd}h1{margin:0;font-size:clamp(1.45rem,2.5vw,2.25rem)}.subtitle{margin:.35rem 0 0;color:#9ca3af}.status-wrap{display:flex;align-items:center;gap:.6rem;color:#d1d5db;font-size:.9rem}.status-dot{width:.68rem;height:.68rem;border-radius:50%;background:#22c55e;box-shadow:0 0 0 .3rem rgba(34,197,94,.12)}main{max-width:1500px;margin:auto;padding:1.25rem clamp(1rem,4vw,3rem) 3rem}.map-section{margin-bottom:1.4rem;border:1px solid rgba(255,255,255,.09);border-radius:1rem;overflow:hidden;background:#111827}.section-heading{padding:1rem}.section-heading h2{margin:0;font-size:1.2rem}.section-heading p:last-child{margin:.35rem 0 0;color:#9ca3af;font-size:.9rem}#cameraMap{width:100%;height:min(58vh,620px);min-height:360px}.map-popup{min-width:205px}.map-popup strong{display:block;margin-bottom:.2rem}.map-popup span{display:block;margin-bottom:.35rem;color:#4b5563}.map-popup .direction-info{font-size:.85rem;margin-bottom:.65rem}.map-popup button{width:100%;border:0;border-radius:.45rem;padding:.55rem .7rem;cursor:pointer;font-weight:700}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.page-info{display:flex;align-items:baseline;gap:.75rem}#pageCounter{color:#9ca3af;font-size:.9rem}.toolbar-actions{display:flex;gap:.5rem}.btn,.close-btn{border:1px solid rgba(255,255,255,.12);color:#f9fafb;background:#172033;border-radius:.65rem;padding:.7rem 1rem;cursor:pointer;font-weight:700}.btn:disabled{opacity:.4}.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.camera-card{border:1px solid rgba(255,255,255,.09);border-radius:1rem;overflow:hidden;background:#111827}.camera-video{position:relative;aspect-ratio:16/9;background:#020617}.camera-video iframe,.viewer-video iframe{width:100%;height:100%;border:0}.camera-click-layer{position:absolute;inset:0;border:0;background:transparent;cursor:zoom-in}.camera-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.95rem 1rem}.camera-name{margin:0;font-size:1rem}.camera-location{margin:.2rem 0 0;color:#9ca3af;font-size:.85rem}.live-badge{color:#bbf7d0;background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.22);padding:.35rem .55rem;border-radius:999px;font-size:.72rem;font-weight:800}.notice{margin-top:1rem;padding:.9rem 1rem;border:1px solid rgba(245,158,11,.2);background:rgba(245,158,11,.07);color:#fde68a;border-radius:.8rem;font-size:.9rem}footer{display:flex;justify-content:center;gap:.5rem;color:#6b7280;padding:1rem 1rem 2rem;font-size:.8rem}.viewer{position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.92);display:grid;place-items:center;padding:1rem}.hidden{display:none}.viewer-shell{width:min(96vw,1600px)}.viewer-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem}.viewer-bar h2{margin:0}.viewer-bar p{margin:.25rem 0 0;color:#9ca3af}.viewer-video{width:100%;aspect-ratio:16/9;background:#000;border-radius:.9rem;overflow:hidden}.map-legend-strip{display:flex;align-items:center;justify-content:flex-start;gap:1.1rem;flex-wrap:wrap;padding:.65rem .9rem;background:#111827;border-top:1px solid rgba(255,255,255,.09);font-size:.78rem;color:#d1d5db}.legend-item{display:flex;align-items:center;gap:.5rem;white-space:nowrap}.legend-pin{width:13px;height:13px;border-radius:50% 50% 50% 0;background:#2f80ed;transform:rotate(-45deg);border:1px solid rgba(255,255,255,.3);margin-left:3px}.legend-cluster{width:24px;height:24px;border-radius:50%;background:rgba(110,204,57,.65);border:4px solid rgba(181,226,140,.65);display:grid;place-items:center;color:#111827;font-weight:800;font-size:.68rem}.legend-fan{width:28px;height:18px;background:rgba(47,128,237,.22);border:2px solid rgba(47,128,237,.75);clip-path:polygon(50% 100%,0 0,100% 0)}@media(max-width:800px){.site-header{align-items:flex-start;flex-direction:column;gap:.8rem}.toolbar{align-items:stretch;flex-direction:column}.toolbar-actions{display:grid;grid-template-columns:1fr 1fr}.camera-grid{grid-template-columns:1fr}#cameraMap{height:460px}}
.operator-panel{margin:1rem 0 2rem;padding:1.25rem;border:1px solid #334155;border-radius:14px;background:#111827}.operator-panel label{display:block;margin-top:.9rem;margin-bottom:.35rem;font-weight:600}.operator-panel select{width:100%;padding:.65rem;background:#1e293b;color:#fff;border:1px solid #475569;border-radius:8px}.operator-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.9rem}.target-info{padding:.8rem;background:#1e293b;border-radius:8px;margin-top:1rem;white-space:pre-line}.operator-panel button:disabled{opacity:.45;cursor:not-allowed}#operatorMessage{min-height:1.4rem;color:#fbbf24}

[hidden]{display:none!important}.status-wrap{flex-wrap:wrap}.muted{color:#94a3b8}.viewer-shell{max-height:95vh;overflow:auto}.viewer-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px}.viewer-controls{background:#111827;border:1px solid #334155;padding:16px;border-radius:12px;overflow:auto;max-height:75vh}.viewer-controls label,.login-box label,.admin-grid label{display:block;margin:10px 0;color:#cbd5e1}.viewer-controls select,.login-box input,.admin-grid input:not([type=checkbox]){display:block;width:100%;padding:10px;background:#1e293b;border:1px solid #475569;border-radius:8px;color:white;margin-top:6px}.viewer-controls .target-info{font-size:13px}.ptz-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:12px 0}.ptz-pad button{background:#273951;color:white;border:1px solid #4b607d;border-radius:8px;padding:12px;cursor:pointer}.ptz-pad button:first-child{grid-column:2}.ptz-pad button:nth-child(2){grid-column:1;grid-row:2}.ptz-pad button:nth-child(3){grid-column:2;grid-row:2}.ptz-pad button:nth-child(4){grid-column:3;grid-row:2}.ptz-pad button:nth-child(5){grid-column:2;grid-row:3}.login-backdrop{position:fixed;inset:0;background:#000b;z-index:3000;display:grid;place-items:center;padding:18px}.login-box{width:min(100%,380px);background:#111827;border:1px solid #475569;border-radius:14px;padding:24px}.admin-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:20px}.user-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #334155;padding:10px 0}.user-row .operator-controls{margin:0}#adminMessage,#loginError,#viewerMessage{color:#fbbf24;font-size:13px}@media(max-width:1000px){.viewer-layout,.admin-grid{grid-template-columns:1fr}.viewer-controls{max-height:none}.viewer-video{height:auto}.site-header{position:relative}}

.feed-status{padding:.65rem 1rem;background:#172033;color:#93c5fd;font-size:.85rem}.feed-status.stale{background:#422006;color:#fcd34d}.legend-fire{height:14px;width:14px;border-radius:50%;background:#ef4444;border:2px solid white}

/* Public viewer: when operator controls are hidden, use the entire centred width. */
.viewer-layout:has(> #viewerControls[hidden]) {
  grid-template-columns: minmax(0, 1fr);
}
.viewer-layout:has(> #viewerControls[hidden]) .viewer-video {
  width: 100%;
  max-width: 100%;
  margin-inline: auto;
}

/* Asset-free blue map pins: avoids broken Leaflet marker image paths. */
.firecams-camera-icon{background:transparent;border:0;}
.firecams-camera-icon svg{display:block;filter:drop-shadow(0 2px 3px #0007);}
.fire-camera-label{display:block;font-weight:700;margin-top:10px;margin-bottom:5px;}
.fire-camera-select{width:100%;padding:7px;margin-bottom:7px;border:1px solid #94a3b8;border-radius:5px;background:white;color:#111827;}
.leaflet-popup-content .fire-camera-label~button{width:100%;padding:8px;border:0;border-radius:5px;background:#1d4ed8;color:white;cursor:pointer;font-weight:700;}
.leaflet-popup-content button:disabled{opacity:.5;cursor:not-allowed;}
.leaflet-popup-content small{display:block;margin-top:6px;color:#475569;}

/* Fire incidents use a flame marker instead of the old red dot. */
.firecams-fire-icon{background:transparent;border:0;text-align:center;}
.firecams-fire-icon span{display:block;font-size:27px;line-height:32px;filter:drop-shadow(0 1px 2px #0009);}
.legend-fire{width:auto;height:auto;background:none;border:0;border-radius:0;font-size:17px;line-height:1;}

/* Hide only the obsolete dashboard user-management panel. PTZ lives in #viewerControls. */
#adminPanel { display:none !important; }
