:root{color-scheme:dark;font:14px system-ui,sans-serif;background:#080d14;color:#dce6f2}*{box-sizing:border-box}body{margin:0}header{height:64px;display:flex;align-items:center;gap:22px;padding:10px 20px;background:#111c29;border-bottom:1px solid #263447}.brand{font-size:23px;font-weight:800;letter-spacing:1px;white-space:nowrap}.brand span{color:#54dac1}nav{display:flex;gap:7px}#identity{margin-left:auto;font-size:12px;color:#9ab1c6}main{padding:12px 16px}h1{font-size:25px;margin:0}h2{font-size:20px}p{line-height:1.6;color:#9fadc0}button{background:#193d44;color:#b1ffec;border:1px solid #2c6269;border-radius:6px;padding:9px 13px;cursor:pointer;font:inherit}button:hover,button[aria-current=page],button[aria-selected=true]{background:#22585d;border-color:#63c7b6}button:disabled{opacity:.5;cursor:wait}button:focus-visible,.camera:focus-visible{outline:2px solid #7ef2d9;outline-offset:2px}input,select{display:block;width:100%;padding:10px;border:1px solid #344457;border-radius:5px;background:#0c1621;color:#edf5ff;margin-top:6px}form{max-width:540px;display:grid;gap:16px;margin:20px 0}label{color:#becddd;font-size:13px}label.check{display:flex;gap:10px;align-items:center}label.check input{width:auto;margin:0}[hidden]{display:none!important}
.wall-toolbar{display:flex;align-items:center;gap:12px;height:46px;margin-bottom:10px}.wall-toolbar h1{font-size:18px;white-space:nowrap}.wall-toolbar h1 span{font-size:12px;color:#84a0b8}.wall-hint{color:#7f98af;font-size:12px;flex:1}.density-label{display:flex;align-items:center;gap:7px}.density-label select{width:112px;margin:0;padding:7px}
.wall-grid{display:grid;grid-template-columns:repeat(var(--columns,4),minmax(0,1fr));grid-template-rows:repeat(var(--rows,4),minmax(0,1fr));gap:5px;height:calc(100dvh - 146px);min-height:260px}.camera{position:relative;min-height:0;min-width:0;overflow:hidden;background:#030609;border:1px solid #263849;border-radius:4px;cursor:pointer}.camera:hover{border-color:#66cfba}.camera img{width:100%;height:100%;object-fit:contain;display:block}.camera-name{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;gap:7px;padding:5px 8px;background:linear-gradient(transparent,rgba(0,0,0,.92));font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:1}.camera-name strong{font-weight:500;overflow:hidden;text-overflow:ellipsis}.record-dot{width:7px;height:7px;border-radius:50%;background:#e24750;flex:none}.tile-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#7991a6;font-size:12px;text-align:center;padding:20px}.empty-wall{color:#8da1b7;padding:30px;grid-column:1/-1}
#overview-panel:fullscreen{background:#080d14;padding:12px;height:100dvh;display:flex;flex-direction:column}#overview-panel:fullscreen .wall-grid{height:auto;min-height:0;flex:1}
.page-heading{display:flex;align-items:center;gap:20px;padding:10px 0 18px}.page-heading p{margin:5px 0}.camera-tabs{display:flex;gap:8px;margin-bottom:14px}.detail-preview{height:calc(100dvh - 270px);min-height:280px;background:#020509;position:relative;display:flex;align-items:center;justify-content:center;color:#91a8bc;border:1px solid #263849;border-radius:6px}.detail-preview img{width:100%;height:100%;object-fit:contain}.controls{display:flex;flex-wrap:wrap;gap:10px;padding:16px 0}.scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}th,td{padding:14px;border-bottom:1px solid #27374a}th{color:#8ea5c0}td button{margin:4px}a{color:#6ddbc6}video{display:block;width:100%;max-height:65dvh;margin-top:16px}details{margin:18px 0;border:1px solid #27374a;border-radius:6px;padding:18px}summary{cursor:pointer;color:#b7d9e0}#manage-panel{max-width:1200px;margin:auto}#access-links p{display:flex;gap:10px;align-items:center;flex-wrap:wrap}fieldset label{display:flex;align-items:center;gap:10px;margin:6px}fieldset input{width:auto;margin:0}.user{padding:10px;border-bottom:1px solid #27374a}#login{max-width:580px;margin:8vh auto}#message{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);max-width:90vw;background:#213346;color:#ffd496;border:1px solid #425773;border-radius:6px;padding:12px 20px;z-index:10}#message:empty{display:none}
@media(max-width:700px), (max-height:500px) and (pointer:coarse){header{height:auto;min-height:64px;flex-wrap:wrap;gap:8px;padding:9px 12px}.brand{font-size:19px}nav{order:3;width:100%}#identity{font-size:11px}.wall-toolbar{height:auto;min-height:42px;flex-wrap:wrap}.wall-hint{display:none}.density-label{margin-left:auto}.wall-toolbar button{font-size:12px;padding:7px}.wall-grid{height:calc(100dvh - 205px);min-height:240px}.camera-name{font-size:10px;padding:4px}.tile-state{font-size:10px}.page-heading{align-items:flex-start;flex-wrap:wrap}.detail-preview{height:50dvh;min-height:230px}main{padding:10px}}
/* Shared settings and visible per-camera exceptions. */
.custom-badge{display:inline-flex;align-items:center;justify-content:center;background:#ffbe55;color:#2c1a00;width:19px;height:19px;border-radius:6px;font-size:16px;font-weight:800;flex:none}
#identity{padding:6px 9px;border:1px solid #344457;border-radius:6px;overflow-wrap:anywhere}body[data-role=admin] #identity{color:#ffe0a1;border-color:#75613d}
.settings-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}#defaults-form,#camera-settings-form{max-width:none}.param-row{min-width:0;padding:14px;border:1px solid #2d4053;border-radius:8px;background:#0c1621}.param-row label{display:block}.param-row label>span{display:block;min-height:1.5em}.param-row input[type=checkbox]{width:23px;height:23px;margin:10px 0}.param-origin{display:inline-block;font-size:12px;color:#efc681;margin:10px 8px 0 0}.subtle{background:transparent;font-size:12px;padding:7px 10px}.form-actions{display:flex;gap:10px;flex-wrap:wrap}.settings-fields input,.settings-fields select{min-width:0}
@media(max-width:700px), (max-height:500px) and (pointer:coarse){
 :root{font-size:15px}body{padding-bottom:env(safe-area-inset-bottom)}header{position:sticky;top:0;z-index:5;padding:10px max(12px,env(safe-area-inset-right)) 10px max(12px,env(safe-area-inset-left));gap:8px;background:#111c29f5;backdrop-filter:blur(8px)}header .brand{font-size:19px;letter-spacing:0}header #identity{max-width:42%;padding:5px 7px;line-height:1.35}header #logout{padding:9px 11px}nav button{flex:1;min-height:44px}button{min-height:44px}input,select{font-size:16px;min-height:44px}input[type=checkbox]{min-height:0}main{padding:12px max(10px,env(safe-area-inset-right)) 20px max(10px,env(safe-area-inset-left))}
 .wall-toolbar{gap:8px;margin:2px 0 12px}.wall-toolbar h1{flex:1}.wall-toolbar button{min-height:44px;padding:8px 10px}.density-label{margin-left:0}.density-label select{min-height:44px;width:132px}.wall-grid{height:auto;min-height:0;grid-template-rows:none;grid-auto-rows:auto;gap:10px}.camera{aspect-ratio:16/9;min-height:0;border-radius:8px}.camera-name{font-size:13px;padding:14px 9px 8px;min-height:37px}.tile-state{font-size:13px}.detail-preview{height:auto;aspect-ratio:16/9;min-height:0;max-height:60dvh}.page-heading{gap:10px;padding-bottom:12px}.page-heading h1{font-size:21px;overflow-wrap:anywhere}.page-heading>div{width:100%}.page-heading #back-cameras{width:100%}.camera-tabs{gap:6px;overflow-x:auto}.camera-tabs button{flex:1;white-space:nowrap;font-size:13px;padding:9px 10px}.controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.controls button{padding:10px 7px;line-height:1.4}
 .scroll{overflow:visible}#recordings-panel table,#recordings-panel tbody,#recordings-panel tr,#recordings-panel td{display:block;width:100%}#recordings-panel thead{display:none}#recordings-panel tr{border:1px solid #2d4053;border-radius:8px;padding:8px;margin:10px 0;background:#0c1621}#recordings-panel td{padding:8px;border:0;overflow-wrap:anywhere}#recordings-panel td:before{content:attr(data-label);display:block;color:#8ea5c0;font-size:12px;margin-bottom:4px}#recordings-panel td button{margin:0 8px 6px 0}.settings-fields{grid-template-columns:1fr;gap:10px}details{padding:13px;margin:12px 0}summary{min-height:36px;line-height:1.6}.user{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}#events p{overflow-wrap:anywhere}#message{bottom:calc(10px + env(safe-area-inset-bottom));font-size:14px;max-height:30dvh;overflow:auto;padding:12px 14px;width:max-content;max-width:calc(100vw - 24px)}#login{margin:4vh auto}#overview-panel:fullscreen .wall-grid{display:grid;height:auto;flex:none;overflow:auto}#overview-panel:fullscreen{overflow:auto}
}
.external-button{display:inline-flex;align-items:center;min-height:44px;padding:9px 13px;border:1px solid #2c6269;border-radius:6px;background:#193d44;text-decoration:none;margin:3px 5px 3px 0}.external-button:focus-visible{outline:2px solid #7ef2d9;outline-offset:2px}

/* Il numero scelto vale anche su smartphone; il mosaico scorre se serve. */
.wall-grid{height:auto;min-height:0;grid-template-rows:none;grid-auto-rows:auto;align-content:start}
.camera{aspect-ratio:16/9;min-height:0}
#overview-panel:fullscreen{overflow:auto}
#overview-panel:fullscreen .wall-grid{height:auto;flex:none}
@media(min-width:701px){main{padding:16px 20px}.wall-toolbar{height:auto;min-height:50px;flex-wrap:wrap}.wall-grid{gap:8px}.camera{border-radius:7px}.camera-name{font-size:13px;padding:12px 10px 8px}}
@media(max-width:700px){header #install-app{min-height:40px;padding:7px 9px;font-size:12px}.wall-grid{gap:6px}}
