.quality-controls{display:none}.camera.expanded{position:fixed;inset:0;z-index:10;background:#09111d;display:flex;flex-direction:column;border-radius:0}.camera.expanded .picture{flex:1;min-height:0;aspect-ratio:auto}.camera.expanded .quality-controls,.camera:fullscreen .quality-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px}.quality-controls label,.dimensions,.quality-message{font-size:12px}.quality-message{color:#ffca72}.quality{color:#e7edf6;background:#1c3048;padding:8px;max-width:85vw}.motion{font-size:10px;padding:5px 10px;color:#9daec5}.has-motion{box-shadow:inset 0 0 0 2px #36c69a}.has-motion .motion{color:#62efbd;background:#16382e}.has-motion.loss{border-color:#ffca72}:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;background:#09111d;color:#e7edf6}*{box-sizing:border-box}body{margin:0}header{padding:24px 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #233044;background:#101b2b}h1{font-size:24px;margin:8px 0 0}.brand{font-weight:800;letter-spacing:3px;color:#66d6df}.brand span{font-size:10px;letter-spacing:2px;color:#aab8cb;margin-left:10px}main{padding:20px 32px}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center}.notice{color:#9eabc0;font-size:12px;line-height:1.6}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.camera{min-width:0;border:1px solid #2b3a50;background:#101c2d;border-radius:10px;overflow:hidden}.camera-title,.camera-footer{display:flex;align-items:center;justify-content:space-between;padding:10px;gap:6px}h2{font-size:13px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.number{font-size:10px;color:#8ca1bc;white-space:nowrap}.picture{position:relative;background:#000;aspect-ratio:352/240}video{display:block;width:100%;height:100%;object-fit:contain}.state{position:absolute;left:8px;bottom:8px;background:#0b1322dc;padding:5px 8px;border-radius:4px;font-size:11px;pointer-events:none}.signal{color:#9daec5;font-size:10px}.loss{border-color:#bc8c35}.loss .signal{color:#ffca72}button{cursor:pointer;border:1px solid #3c526d;background:#1c3048;color:#e9f4ff;border-radius:6px;padding:9px 14px;font-weight:600}button:hover{background:#2d4765}button:focus-visible,input:focus-visible{outline:2px solid #63dbed;outline-offset:3px}.fullscreen{font-size:10px;padding:5px 8px}.camera:fullscreen{width:100vw;height:100vh;display:flex;flex-direction:column;border-radius:0}.camera:fullscreen .picture{flex:1;min-height:0;aspect-ratio:auto}.login{max-width:420px;margin:10vh auto;padding:32px;border:1px solid #26374e;border-radius:14px;background:#101c2d}.login p{color:#a8b6ca;font-size:14px;line-height:1.6}.login label{display:block;margin-top:20px;font-size:13px}.login input{display:block;width:100%;margin-top:8px;padding:12px;background:#09111d;color:#fff;border:1px solid #354963;border-radius:6px}.login button{width:100%;margin-top:24px;background:#157a8b}.login [role=alert]{color:#ffb3a5}@media(max-width:1100px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:800px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}main,header{padding:16px}.toolbar{font-size:12px}}@media(max-width:480px){.grid{grid-template-columns:1fr}.login{margin:8vh 16px}h1{font-size:21px}}
/* DVR layouts: explicit membership, no repeated placeholder cameras. */
[hidden]{display:none!important}
.toolbar{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:12px;border:1px solid #283a50;border-radius:10px;background:#101b2b}
.view-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12px}
.view-tools label{display:flex;align-items:center;gap:6px}
select{background:#15273d;color:#edf6ff;border:1px solid #3c526d;border-radius:5px;padding:8px;max-width:100%}
button:disabled{opacity:.45;cursor:not-allowed}
#summary,#sequence-state,#page-label{font-size:12px;color:#aabed5}
#sequence-state{color:#66d6df}
.grid[data-view="1"]{grid-template-columns:minmax(0,1fr);max-width:1100px;margin:auto}
.grid[data-view="4"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid[data-view="9"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid[data-view="16"]{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid[data-view="8"]{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,clamp(160px,19vw,260px));gap:10px}
.grid[data-view="8"] .principal{grid-column:1/4;grid-row:1/4}
.grid[data-view="8"] .camera:not(.expanded){display:flex;flex-direction:column}
.grid[data-view="8"] .picture{flex:1;min-height:0;aspect-ratio:auto}
.grid[data-view="8"] .camera-title,.grid[data-view="8"] .camera-footer{padding:6px}
.camera.expanded{grid-column:auto!important;grid-row:auto!important}
#users-dialog{width:min(760px,calc(100vw - 24px));max-height:90vh;border:1px solid #3c526d;border-radius:12px;background:#101b2b;color:#edf6ff;padding:22px}
#users-dialog::backdrop{background:#020813da}
#users-dialog p{font-size:13px;line-height:1.5;color:#b4c5da}
.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}
.dialog-heading h2{font-size:20px;white-space:normal}
#user-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;border-block:1px solid #2b3a50;padding-block:16px}
#user-form h3,#user-form>div{grid-column:1/-1;margin:0}
#user-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;min-width:0}
#user-form input:not([type=checkbox]){width:100%;padding:10px;background:#09111d;color:#fff;border:1px solid #354963;border-radius:6px}
#user-form .check-label{flex-direction:row;align-items:center}
#password-hint{font-size:11px;color:#9eabc0}
.user-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid #2b3a50;font-size:13px;overflow-wrap:anywhere}
.user-row>span:first-child{flex:1;min-width:120px}
@media(max-width:800px){
 .grid[data-view="16"],.grid[data-view="9"]{grid-template-columns:repeat(2,minmax(0,1fr))}
 .grid[data-view="8"]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;grid-auto-rows:clamp(180px,30vw,280px)}
 .grid[data-view="8"] .principal{grid-column:1/3;grid-row:1/3}
 .camera-title,.camera-footer{padding:6px}.camera-footer{flex-wrap:wrap}
}
@media(max-width:480px){.grid{gap:8px}.camera-title{flex-wrap:wrap}.motion{overflow-wrap:anywhere;padding:4px 6px}.grid[data-view="8"]{grid-auto-rows:190px}#user-form{grid-template-columns:1fr}.view-tools button{padding:8px 10px}.signal{font-size:9px}}
