/* Aurora cameras: practical monitoring surface, no synthetic live indicators. */
.cam-icon{width:19px;height:19px;flex:none;vertical-align:middle}
#nav-cameras[hidden]{display:none!important}
.cameras-page{max-width:1560px;margin:0 auto;padding-bottom:32px}
.camera-page-head .page-actions{flex-wrap:wrap;gap:9px}
.camera-page-head .btn{gap:7px;white-space:nowrap}
.camera-access-note{display:flex;align-items:center;gap:7px;color:#738099;font-size:12px;margin:-8px 0 24px}
.camera-access-note .cam-icon{width:14px;height:14px}
#camera-total{margin-left:auto;color:#52617a;white-space:nowrap}
.camera-toolbar{display:flex;align-items:center;gap:9px;margin-bottom:17px}
.camera-search{flex:1;min-width:180px}.camera-search input{width:100%;height:40px;border:1px solid var(--aurora-border);border-radius:9px;padding:0 13px;background:white;font:inherit;font-size:13px;color:#24334c}
.camera-search input:focus,.camera-location-filter select:focus{outline:2px solid #6479e570;outline-offset:1px}
.camera-location-filter{width:225px;min-width:140px;position:relative}.camera-location-filter:after{content:'';position:absolute;right:15px;top:15px;border:solid #7b89a2;border-width:0 1.5px 1.5px 0;padding:3px;transform:rotate(45deg);pointer-events:none}
.camera-location-filter select{appearance:none;width:100%;height:40px;border:1px solid var(--aurora-border);border-radius:9px;background:#fff;padding:0 35px 0 12px;color:#42516a;font:inherit;font-size:13px;text-overflow:ellipsis}
#app-shell .camera-toolbar .btn{height:40px;gap:7px;white-space:nowrap;flex:none}.camera-toolbar .camera-refresh{padding:9px 11px}
.camera-kind-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:24px}
.camera-kind-tabs button{border:1px solid transparent;background:transparent;color:#6b7891;border-radius:7px;min-height:34px;padding:7px 13px;font:inherit;font-size:12px}
.camera-kind-tabs button:hover{background:#f2f5fb}.camera-kind-tabs button[aria-pressed=true]{color:#394fa7;background:#eaf0fc;border-color:#dbe3f5;font-weight:500}
.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.camera-card{border:1px solid #e0e6ef;border-radius:13px;background:#fff;overflow:hidden;min-width:0}
.camera-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 16px 13px;min-width:0}
.camera-card-head>div{min-width:0;flex:1}.camera-card-head h2{font-size:15px!important;line-height:1.4;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500!important;color:#273954;letter-spacing:0!important}
.camera-card-head p{font-size:11px;color:#7a879c;margin:5px 0 0;display:flex;gap:4px;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.camera-card-head p .cam-icon{width:13px;height:13px}
.camera-icon-button{width:34px;height:34px;padding:7px;border:1px solid transparent;background:transparent;border-radius:7px;display:grid;place-items:center;color:#6c7d98;flex:none;cursor:pointer}
.camera-icon-button:hover{background:#eef2fa;color:#354e8c}.camera-icon-button:focus-visible{outline:2px solid #6479e5;outline-offset:2px}
.camera-stage{position:relative;display:block;width:100%;height:auto;min-height:0;aspect-ratio:16/9;background:#121e30;border:0;padding:0;overflow:hidden;color:#bfccdf;cursor:pointer;text-align:center;touch-action:manipulation}
.camera-stage:disabled{cursor:default;background:#192436}.camera-stage:focus-visible{outline:3px solid #90c7ec;outline-offset:-3px}
.camera-media{display:block;position:absolute;inset:0}.camera-media>img,.camera-media>video,.camera-media>iframe{display:block;width:100%;height:100%;object-fit:contain;border:0;background:#111a29}
.camera-stage .camera-media{pointer-events:none}.camera-stage .camera-media img,.camera-stage .camera-media video{object-fit:contain}
.camera-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:22px;color:#8f9fb8;background:#121e30;font:inherit;font-size:11px;line-height:1.55}
.camera-placeholder[hidden]{display:none}.camera-placeholder>.cam-icon{width:30px;height:30px;color:#526887;margin-bottom:3px}
.camera-placeholder strong{font-weight:500!important;font-size:13px;color:#c5d1e4}.camera-placeholder>span{max-width:310px}
.camera-expand{position:absolute;right:11px;bottom:11px;display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#0b152a99;color:#dce7f6;opacity:.8;transition:opacity 140ms}
.camera-stage:hover .camera-expand{opacity:1}.camera-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 15px;font-size:11px;min-height:39px}
.camera-state{color:#78859b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-state[data-state=ready]{color:#387d72}.camera-state[data-state=error]{color:#a85d61}
.camera-source-type{color:#8792a5;flex:none;font-size:10px}
.camera-empty{text-align:center;border:1px dashed #d8e0ee;border-radius:14px;padding:65px 24px 60px;background:#fafbfe;min-height:340px;display:flex;align-items:center;flex-direction:column;justify-content:center}
.camera-empty>.cam-icon{color:#8a9abc;width:42px;height:42px;margin-bottom:20px}.camera-empty h2{font-size:20px;font-weight:500!important;margin:0 0 10px;line-height:1.4}
.camera-empty p{font-size:13px;line-height:1.8;color:#7b889d;max-width:420px;margin:0 0 24px}.camera-empty .btn{margin-bottom:14px}
.camera-empty-note{font-size:11px;color:#93a0b4;margin-top:6px}.camera-footer-note{font-size:11px;color:#8a96ab;margin:23px 0 0;text-align:center;line-height:1.6}
.camera-no-results{min-height:280px}.camera-pagination{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:22px;font-size:12px;color:#75829a}
.camera-pagination:empty{display:none}.camera-loading{padding:70px;text-align:center;color:#7e8da5;font-size:14px}
.camera-notice{padding:11px 14px;border:1px solid #e7d4b5;border-radius:8px;color:#86652f;background:#fffaf0;font-size:12px;line-height:1.6;margin:0 0 16px}
.camera-notice[hidden]{display:none}.camera-enabled{display:flex!important;gap:9px!important;align-items:center;line-height:1.5;margin:7px 0}.camera-enabled input{width:16px!important;height:16px!important;accent-color:var(--aurora-accent)}
.camera-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px;flex-wrap:wrap}.camera-form-actions>.danger{margin-right:auto}
.camera-form-error{color:#b53d53;font-size:12px;line-height:1.5;margin:6px 0}.camera-form-error[hidden]{display:none}
#camera-source-help{margin:0;line-height:1.6}.camera-location-row{display:flex;align-items:center;gap:11px;border-bottom:1px solid #e7ecf4;padding:14px 0}
.camera-location-row>div{flex:1;min-width:0}.camera-location-row strong{font-size:13px;font-weight:500!important;overflow-wrap:anywhere}.camera-location-row small{display:block;font-size:11px;color:#7c899f;line-height:1.6;margin-top:3px;overflow-wrap:anywhere}
.camera-location-symbol{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;background:#eff3fa;color:#6c81ac;flex:none}
#camera-locations-manager>.btn{margin-top:20px}.camera-location-row .btn{font-size:11px;flex:none}
#camera-refresh-field select{width:100%;margin-top:7px;padding:10px 12px;border:1px solid #dbe2ee;border-radius:8px;background:white;font:inherit;font-size:13px;color:#43516a}
#camera-refresh-field[hidden]{display:none}
.camera-viewer-open{overflow:hidden}.camera-viewer-layer{position:fixed;inset:0;z-index:130;display:flex;align-items:center;justify-content:center;padding:24px}
.camera-viewer-backdrop{position:absolute;inset:0;background:#060e22b8}.camera-viewer{position:relative;width:min(1160px,100%);max-height:calc(100svh - 48px);overflow:auto;border-radius:15px;border:1px solid #334563;background:#0e1b2d;color:#d5e0f0;box-shadow:0 25px 80px #0006}
.camera-viewer header{display:flex;align-items:center;gap:6px;padding:17px 21px}.camera-viewer header>div{flex:1;min-width:0}.camera-viewer h2{line-height:1.4;margin:0;overflow-wrap:anywhere;font-size:17px;font-weight:500}.camera-viewer header p{font-size:12px;color:#8fa0b9;margin:4px 0 0;overflow-wrap:anywhere}
.camera-viewer .camera-icon-button{color:#a4b4ce}.camera-viewer .camera-icon-button:hover{background:#25354c;color:#fff}.camera-viewer-stage{position:relative;width:100%;aspect-ratio:16/9;height:auto;background:#080f1c;min-height:0}
.camera-viewer-stage .camera-placeholder{background:#0b1525}.camera-viewer footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 21px;font-size:12px;flex-wrap:wrap}
.camera-viewer .camera-state{color:#9aacc8}.camera-viewer .camera-state[data-state=ready]{color:#84cbb8}.camera-viewer .camera-state[data-state=error]{color:#e2a5a3}
.camera-external{display:flex;align-items:center;gap:7px;color:#afc3e8;font-size:12px;text-decoration:none}.camera-external:hover{text-decoration:underline}.camera-external .cam-icon{width:15px;height:15px}
.camera-embed-note,.camera-viewer-notes{font-size:12px;line-height:1.65;padding:0 21px 16px;margin:0;color:#a4b1c7;overflow-wrap:anywhere}
.camera-viewer:fullscreen{width:100%;height:100%;max-height:100%;border-radius:0;display:flex;flex-direction:column}.camera-viewer:fullscreen .camera-viewer-stage{flex:1;max-height:none;min-height:0;aspect-ratio:auto}
@media(min-width:1780px){.camera-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1180px){.camera-toolbar{flex-wrap:wrap}.camera-search{flex:1 1 48%}.camera-location-filter{flex:1 1 30%}.camera-pause{margin-left:auto}.camera-grid{gap:15px}}
@media(max-width:700px){.camera-grid{grid-template-columns:minmax(0,1fr)}.camera-page-head{display:block!important}.camera-page-head .page-actions{justify-content:flex-start!important;margin-top:18px}.camera-access-note{margin:15px 0 20px;font-size:11px}.camera-toolbar{gap:8px}.camera-search{flex-basis:100%;min-width:0}.camera-search input,.camera-location-filter select{font-size:16px}.camera-location-filter{flex:1;min-width:0;width:auto}.camera-pause span{font-size:11px}.camera-kind-tabs{gap:2px;margin-bottom:18px}.camera-kind-tabs button{font-size:11px;padding:8px 10px;min-height:40px}.camera-empty{padding:40px 18px;min-height:310px}.camera-empty h2{font-size:18px}.camera-card-head{padding:14px}.camera-icon-button{width:40px;height:40px}.camera-viewer-layer{padding:10px}.camera-viewer{max-height:calc(100svh - 20px);border-radius:11px}.camera-viewer header{padding:12px;gap:2px}.camera-viewer h2{font-size:15px}.camera-viewer header p{font-size:11px}.camera-viewer-stage{min-height:0}.camera-viewer footer{padding:13px}.camera-embed-note,.camera-viewer-notes{padding:0 13px 14px}.camera-location-symbol{display:none}.camera-form-actions .btn{min-height:40px}}
@media(prefers-reduced-motion:reduce){.camera-expand{transition:none}}

@media(max-width:700px){#camera-form input:not([type=checkbox]),#camera-form select,#camera-form textarea,#camera-location-form input,#camera-location-form select{font-size:16px}}

#app-shell .camera-page-head .page-actions>.btn{display:inline-flex}
#camera-form textarea{min-height:64px;height:64px;resize:vertical}
.camera-form-actions{position:sticky;bottom:-24px;background:#fff;padding:12px 0 4px;z-index:1;border-top:1px solid #e7ecf4}
@media(max-width:700px){.camera-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto auto}.camera-search{grid-column:1/-1}.camera-location-filter{width:100%}.camera-pause span{display:none}.camera-toolbar .btn.camera-pause{padding:10px}.camera-search input,.camera-location-filter select,#app-shell .camera-toolbar .btn{height:44px}}

/* Recorder wizard follows the existing compact camera forms. */
.rec-channel-list{max-height:38vh;overflow:auto;border:1px solid var(--line,#e3e6ef);border-radius:12px}
.rec-channel{display:flex!important;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line,#e3e6ef);margin:0!important;cursor:pointer}
.rec-channel:last-child{border-bottom:0}.rec-channel input,.rec-select-all input{width:18px!important;height:18px!important;flex:none;accent-color:#6960d8}
.rec-channel span{display:grid;gap:4px}.rec-channel strong{font-weight:500}.rec-channel small{color:#68738b;font-size:12px}.rec-select-all{display:flex!important;align-items:center;gap:10px}
.rec-advanced{padding:12px;border:1px solid var(--line,#e3e6ef);border-radius:10px}.rec-advanced summary{cursor:pointer;font-weight:500}.rec-advanced label{display:block;margin:12px 0 6px}
#camera-recorder-form input,#camera-recorder-form select{width:100%;min-width:0}#camera-recorders-manager .camera-location-row{flex-wrap:wrap}
@media(max-width:700px){.camera-page-head .page-actions [data-cam-action=recorders]{display:inline-flex!important}.camera-page-head .page-actions{flex-wrap:wrap}#camera-recorder-form input,#camera-recorder-form select{font-size:16px}}

/* Compact continuous grid, 4 columns on normal desktop, no pagination. */
.camera-grid{grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:12px}
.camera-card-head{padding:10px 12px;gap:6px}.camera-card-head h2{font-size:13px!important}
.camera-card-head p{margin-top:3px}.camera-card-foot{padding:8px 12px;min-height:32px}
.camera-stage .camera-placeholder{padding:12px;gap:5px}.camera-stage .camera-placeholder>.cam-icon{width:24px;height:24px}
.camera-playback-controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px;padding:0 20px 14px;font-size:12px}
.camera-playback-controls label{display:grid;gap:6px;min-width:0}.camera-playback-controls select,.camera-playback-controls input{font:inherit;color:#d5e0f0;background:#192940;border:1px solid #40516b;border-radius:8px;padding:9px 12px;min-height:38px;color-scheme:dark;max-width:100%}
.camera-archive{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:end;gap:12px;border-top:1px solid #334563;padding-top:12px}
.camera-archive[hidden]{display:none}.camera-archive>p{flex-basis:100%;color:#a4b4ce;margin:0;font-size:12px;line-height:1.5}
.camera-recordings{width:100%;max-height:155px;overflow:auto;display:flex;flex-wrap:wrap;gap:8px;line-height:1.5}.camera-recordings p{width:100%;margin:0}.camera-recordings [aria-pressed=true]{outline:2px solid #8dabe8}
.camera-viewer .camera-external[hidden]{display:none}
@media(max-width:700px){.camera-grid{grid-template-columns:repeat(auto-fill,minmax(min(160px,100%),1fr));gap:8px}.camera-card-head{padding:8px}.camera-card-head .camera-icon-button{width:32px;height:32px}.camera-source-type{display:none}.camera-card-foot{font-size:10px;padding:7px 8px}.camera-card-head h2{font-size:12px!important}.camera-stage .camera-placeholder>span{display:none}.camera-stage .camera-placeholder strong{font-size:11px}.camera-viewer header{flex-wrap:wrap}.camera-playback-controls{padding:0 12px 12px}.camera-playback-controls select,.camera-playback-controls input{font-size:16px}.camera-archive label{flex:1 1 160px}.camera-viewer header>div{flex-basis:40%}}

.camera-drag-handle{cursor:grab;border:0;background:transparent;color:#8593a8;font-size:21px;padding:0 3px;align-self:stretch;touch-action:auto}.camera-drag-handle:active{cursor:grabbing}.camera-drag-handle:focus-visible{outline:2px solid #6479e5;border-radius:4px}.camera-order-buttons{display:flex;gap:8px;margin-bottom:12px}
@media(max-width:700px){.camera-archive label{flex-basis:100%;width:100%}.camera-archive input{width:100%;box-sizing:border-box}.camera-drag-handle{display:none}}

.column-command-icon{width:19px;height:19px;flex:0 0 19px;color:#788298}.column-type[data-column-command]{display:flex;align-items:center;gap:12px;min-height:40px}.column-type[data-column-command]>span{min-width:0;text-align:left}
.column-type[data-column-command]{flex-direction:row!important;justify-content:flex-start!important;text-align:left!important;padding:10px 16px;gap:12px}

/* Camera creation is a single compact menu. Location tools live with the filter. */
#app-shell .camera-page-head .camera-manage-recorders{width:40px;height:40px;padding:9px;justify-content:center}
#app-shell .camera-page-head #camera-add-button{display:inline-flex;align-items:center;height:40px;gap:8px}
#camera-add-button .cam-icon:last-child{width:16px;height:16px;margin-left:4px}
.camera-location-controls{display:flex;align-items:center;gap:4px;min-width:0}
.camera-location-controls .camera-location-filter{flex:1;min-width:0}
#app-shell .camera-toolbar .camera-manage-locations{padding:9px;width:40px;justify-content:center}
.camera-add-menu{padding:6px;background:var(--theme-surface);color:var(--theme-text);border:1px solid var(--theme-border);border-radius:12px}
.camera-add-menu button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:10px 12px;border:0;border-radius:8px;background:transparent;color:var(--theme-text);font:inherit;font-size:14px;font-weight:500;text-align:left;cursor:pointer}
.camera-add-menu button .cam-icon{color:var(--theme-muted)}
.camera-add-menu button:hover{background:var(--theme-hover)}
.camera-add-menu button:focus-visible{outline:2px solid var(--theme-accent);outline-offset:-2px;background:var(--theme-selected)}
@media(max-width:700px){#app-shell .camera-page-head .camera-manage-recorders,#app-shell .camera-page-head #camera-add-button{height:44px}.camera-location-controls{width:100%}#app-shell .camera-toolbar .camera-manage-locations{width:40px;height:44px}}

/* Empty/loading/error camera surfaces follow the active workspace theme. */
.camera-placeholder,.camera-viewer-stage .camera-placeholder{background:var(--theme-soft);color:var(--theme-muted)}
.camera-placeholder strong{color:var(--theme-text)}
.camera-placeholder>.cam-icon{color:var(--theme-muted)}
.camera-stage:has(.camera-placeholder:not([hidden])) .camera-expand{background:var(--theme-surface);color:var(--theme-muted);border:1px solid var(--theme-border);opacity:1}
.camera-empty{background:var(--theme-soft);border-color:var(--theme-border);color:var(--theme-text)}
.camera-empty h2{color:var(--theme-text)}
.camera-empty p,.camera-empty>.cam-icon,.camera-empty-note,.camera-loading,.camera-access-note,#camera-total,.camera-footer-note{color:var(--theme-muted)}
#modal .camera-location-row{border-color:var(--theme-border);gap:12px}
#modal .camera-location-symbol{background:var(--theme-selected);color:var(--theme-accent)}
#modal .camera-location-row small,#modal #camera-recorders-manager .small-note,#modal #camera-locations-manager .small-note{color:var(--theme-muted)}
#camera-recorders-manager>[data-rec-new]{margin-top:20px}
#camera-recorders-manager>.small-note{font-size:12px;line-height:1.6;margin-top:12px}
.camera-kind-tabs [draggable=true]{cursor:grab;position:relative}
.camera-kind-tabs .camera-kind-dragging{opacity:.45}
.camera-kind-tabs [data-kind-drop]:after{content:'';position:absolute;top:5px;bottom:5px;width:2px;border-radius:2px;background:var(--theme-accent)}
.camera-kind-tabs [data-kind-drop=before]:after{left:-4px}.camera-kind-tabs [data-kind-drop=after]:after{right:-4px}
#app-shell .camera-kind-tabs .camera-kind-order-trigger{width:34px;height:34px;display:grid;place-items:center;padding:7px;color:var(--theme-muted);border-color:var(--theme-border);margin-left:4px}
.camera-kind-order-menu{padding:16px;background:var(--theme-surface);color:var(--theme-text);border-color:var(--theme-border)}
.camera-kind-order-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.camera-kind-order-head strong{font-size:14px;font-weight:600}
.camera-kind-order-menu p{font-size:12px;line-height:1.5;color:var(--theme-muted);margin:8px 0 12px}
.camera-kind-order-row{display:flex;align-items:center;gap:8px;padding:8px 0}.camera-kind-order-row>span{flex:1;font-size:14px}
.camera-kind-order-menu button{display:grid;place-items:center;flex:none;width:34px;height:34px;border:1px solid var(--theme-border);border-radius:8px;background:var(--theme-soft);color:var(--theme-text);padding:7px;cursor:pointer}
.camera-kind-order-menu button svg{width:18px;height:18px}.camera-kind-order-menu button:hover:not(:disabled){background:var(--theme-hover)}.camera-kind-order-menu button:focus-visible,.camera-kind-tabs button:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px}.camera-kind-order-menu button:disabled{opacity:.35;cursor:default}
@media(max-width:700px){#modal .camera-location-row{flex-wrap:wrap}#modal .camera-location-row>div{flex-basis:calc(100% - 50px)}.camera-kind-order-menu button{width:40px;height:40px}}
.camera-location-filter:after{display:none}
#camera-location-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;height:40px;padding:0 12px;border:1px solid var(--theme-border);border-radius:9px;background:var(--theme-surface);color:var(--theme-text);font:inherit;font-size:13px;cursor:pointer}
#camera-location-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;text-align:left}#camera-location-trigger svg{width:18px;height:18px;flex:none;color:var(--theme-muted)}
#camera-location-trigger:hover{background:var(--theme-hover)}#camera-location-trigger:focus-visible{outline:2px solid var(--theme-accent);outline-offset:2px}
.camera-location-menu{padding:8px;width:min(320px,calc(100vw - 24px));background:var(--theme-surface);color:var(--theme-text);border-color:var(--theme-border)}
.camera-location-menu input{width:100%;height:38px;border:1px solid var(--theme-border);border-radius:8px;background:var(--theme-soft);color:var(--theme-text);padding:0 12px;font:inherit;font-size:13px;margin-bottom:8px}
.camera-location-list{max-height:260px;overflow:auto;overscroll-behavior:contain}.camera-location-list button{display:flex;align-items:center;gap:12px;justify-content:space-between;width:100%;min-height:40px;border:0;border-radius:7px;background:transparent;color:var(--theme-text);font:inherit;font-size:13px;padding:8px 12px;text-align:left;cursor:pointer}
.camera-location-list button span{min-width:0;overflow-wrap:anywhere}.camera-location-list button svg{width:18px;height:18px;flex:none;visibility:hidden}.camera-location-list [aria-selected=true]{background:var(--theme-selected);color:var(--theme-text)}.camera-location-list [aria-selected=true] svg{visibility:visible;color:var(--theme-accent)}
.camera-location-list button:hover{background:var(--theme-hover)}.camera-location-list button:focus-visible{outline:2px solid var(--theme-accent);outline-offset:-2px}
@media(max-width:700px){#camera-location-trigger{height:44px}.camera-location-menu input{font-size:16px}.camera-location-list button{min-height:44px}}
