.cctv-launch,.cctv-viewer button{border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--bg) 90%, transparent);min-height:44px;color:var(--text);font-family:var(--font-mono);font-size:var(--fs-xs);cursor:pointer;line-height:1.3}.cctv-launch{z-index:35;box-sizing:border-box;background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;padding:0;display:none;position:fixed;transform:translate(-50%,-50%)}.cctv-launch:before{content:"";border:1px solid var(--warm);background:color-mix(in srgb, var(--bg) 90%, transparent);box-shadow:var(--shadow);border-radius:50%;position:absolute;inset:7px}.cctv-launch[hidden]{display:none}.cctv-launch svg{width:17px;height:17px;color:var(--accent-2);flex:none;position:relative}.cctv-launch-tip{border-radius:var(--radius-sm);background:var(--panel-hi);white-space:nowrap;visibility:hidden;pointer-events:none;padding:.35rem .55rem;position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%)}.cctv-launch:is(:hover,:focus-visible) .cctv-launch-tip{visibility:visible}.cctv-launch:hover:before,.cctv-viewer button:hover{border-color:var(--accent-2)}.cctv-launch:focus-visible,.cctv-viewer button:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.cctv-viewer{width:100%;max-width:none;height:100dvh;max-height:none;padding:max(1.25rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(1.25rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));color:var(--text);overscroll-behavior:contain;font-family:var(--font-mono);font-size:var(--fs-xs);background:0 0;border:0;margin:0;position:fixed;inset:0;overflow:hidden}.cctv-viewer[open]{flex-direction:column;justify-content:space-between;display:flex}.cctv-viewer::backdrop{background:0 0}.cctv-drag{touch-action:none;cursor:grab;position:absolute;inset:0}.cctv-drag.is-dragging{cursor:grabbing}.cctv-header,.cctv-footer{pointer-events:none;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:relative}.cctv-header button,.cctv-footer button{pointer-events:auto}.cctv-heading{align-items:center;gap:.65rem;display:flex}.cctv-heading h2{font-size:var(--fs-sm);letter-spacing:.01em;font-weight:500}.cctv-heading,.cctv-footer p{border-radius:var(--radius-sm);background:var(--panel-hi);padding:.5rem .7rem}.cctv-live{color:var(--accent);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase}.cctv-live:before{content:"•";margin-right:.35rem}.cctv-cameras,.cctv-modes,.cctv-controls{align-items:center;gap:.35rem;display:flex}.cctv-cameras button{padding:.65rem 1rem}.cctv-viewer button[aria-pressed=true]{border-color:var(--accent-2);color:var(--accent-2);background:var(--bg-raised)}.cctv-close{white-space:nowrap;padding:.65rem .85rem}.cctv-close span{margin-right:.3rem}.cctv-footer p{color:var(--text-dim);font-size:var(--fs-xs)}.cctv-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.cctv-controls,.cctv-modes{border-radius:var(--radius);background:var(--panel-hi);padding:.3rem}.cctv-modes button{font-size:var(--fs-xs);padding:.6rem .75rem}.cctv-controls button{min-width:44px;font-size:var(--fs-lg)}.cctv-controls .cctv-reset{font-size:var(--fs-xs);padding:.6rem .85rem}.cctv-zoom{text-align:center;min-width:3.4rem;color:var(--text-dim);font-variant-numeric:tabular-nums}body[data-cctv-view] :is(.shot,.site-header,.letterbox,.skip-link,.mp-launch,.mp-pop,.eh-menu,.eh-cursor-root,.eh-cursor-particles){visibility:hidden!important;pointer-events:none!important}html.eh-cursor-active body[data-cctv-view],html.eh-cursor-active body[data-cctv-view] *{cursor:auto!important}html.eh-cursor-active body[data-cctv-view] .cctv-drag{cursor:grab!important}html.eh-cursor-active body[data-cctv-view] .cctv-drag.is-dragging{cursor:grabbing!important}html.eh-cursor-active body[data-cctv-view] .cctv-viewer button{cursor:pointer!important}@media (width<=760px){.cctv-header{grid-template-columns:1fr auto;gap:.65rem;display:grid}.cctv-heading{gap:.4rem;padding-inline:.45rem}.cctv-heading h2{font-size:var(--fs-xs)}.cctv-cameras{grid-area:2/1/auto/-1;justify-content:center}.cctv-cameras button{flex:1;padding-inline:.65rem}.cctv-close{grid-area:1/2}.cctv-footer{justify-content:center}.cctv-footer p{display:none}}
