:root{--bg:#f2f5f8;--panel:#fff;--text:#172333;--muted:#657487;--nav:#162131;--blue:#1769aa;--border:#dce3ea;--green:#27834a;--red:#b42318;--amber:#b86e00;--gray:#687586}
*{box-sizing:border-box}html{font-size:16px}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button,.button{min-height:44px;border:0;border-radius:10px;padding:11px 16px;background:var(--blue);color:#fff;text-decoration:none;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.secondary{background:#596777!important}.danger{background:#9f241d!important}button:disabled{cursor:not-allowed;opacity:.72}.full-width{width:100%}.compact{min-height:40px;padding:8px 13px}.topnav{background:var(--nav);color:#fff;padding:12px max(16px,env(safe-area-inset-left));display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20}.brand{font-weight:800;color:#fff;text-decoration:none;white-space:nowrap}.nav-links{display:flex;align-items:center;gap:15px;width:100%}.nav-links a{color:#fff;text-decoration:none}.nav-user{margin-left:auto;color:#cbd5df}.menu-toggle{display:none;background:transparent;padding:6px;margin-left:auto}.container{max-width:1380px;margin:auto;padding:22px}.flash{padding:12px 14px;border-radius:10px;margin-bottom:14px;background:#fff;border:1px solid var(--border)}.flash.error{border-color:#e2a09a}.flash.success{border-color:#9bcaaa}.dashboard-head,.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}.dashboard-head h1,.page-heading h1{margin:0 0 5px}.dashboard-head p,.page-heading p{margin:0;color:var(--muted)}.refresh-area{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.9rem}.dashboard-controls{position:sticky;top:68px;z-index:10;background:rgba(242,245,248,.96);padding:2px 0 14px;backdrop-filter:blur(7px)}.search-input,input,select{width:100%;min-height:46px;padding:11px 13px;border:1px solid #adb8c3;border-radius:10px;background:#fff;margin:5px 0 12px}.search-input{font-size:1.05rem;margin:0 0 10px}.filter-chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:3px;scrollbar-width:thin}.filter-chip{flex:0 0 auto;background:#fff;color:var(--text);border:1px solid var(--border);min-height:40px;padding:8px 12px}.filter-chip.active{background:var(--nav);color:#fff}.filter-chip span{display:inline-block;margin-left:5px;padding:2px 7px;border-radius:999px;background:rgba(100,115,130,.16)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:15px}.camera-card{background:var(--panel);border:1px solid var(--border);border-left:7px solid var(--gray);border-radius:14px;padding:18px;box-shadow:0 3px 12px rgba(20,35,50,.05)}.camera-card.status-camera-offline,.camera-card.status-camera-router-offline,.camera-card.status-relay-controller-offline{border-left-color:var(--red)}.camera-card.status-recovering,.camera-card.status-issue{border-left-color:var(--amber)}.camera-card.status-online{border-left-color:var(--green)}.card-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.card-title-row h2{margin:0;font-size:1.25rem}.primary-status{font-size:.78rem;font-weight:800;padding:6px 9px;border-radius:999px;background:#edf1f4;text-align:center}.status-camera-offline .primary-status,.status-camera-router-offline .primary-status,.status-relay-controller-offline .primary-status{background:#fce8e6;color:#8d1d14}.status-online .primary-status{background:#e4f3e9;color:#166735}.status-recovering .primary-status,.status-issue .primary-status{background:#fff1d7;color:#7c4a00}.status-list{border-top:1px solid var(--border)}.status-list>div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.status-list span{color:var(--muted)}.component-offline{display:inline-block;padding:5px 10px;border:2px solid #b42318;border-radius:7px;background:#fde8e7;color:#9f1d15;font-weight:900;letter-spacing:.045em;line-height:1}.component-online{color:#176735;font-weight:800}.component-unknown{color:#596777;font-weight:800}.card-meta{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--muted);padding-top:11px;min-height:43px}.recovery-progress{font-weight:800;color:#8a5200}.actions{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;margin-top:13px}.actions form{flex:1}.empty-state{text-align:center;padding:35px;color:var(--muted)}.audit-list{display:grid;gap:10px}.audit-entry{background:#fff;border:1px solid var(--border);border-radius:12px;padding:15px}.audit-time{font-size:.82rem;color:var(--muted);margin-bottom:4px}.audit-user{font-weight:800}.audit-action{margin-top:5px}.audit-result{color:var(--muted);margin-top:3px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:11px;border-bottom:1px solid var(--border);text-align:left}details{margin-top:14px}.login-page{background:#f4f6f8}.login-container{min-height:100dvh;display:grid;place-items:center;padding:20px}.login-box{width:min(100%,400px);background:#fff;border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 12px 35px rgba(20,35,50,.10)}.login-box h1{text-align:center;font-size:1.55rem;margin:0 0 24px}.login-box label{display:block;font-weight:700}.login-box input{margin-top:7px}.user-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.status-badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:13px;font-weight:bold}.status-badge.enabled{background:#dff6e6;color:#17652d}.status-badge.disabled{background:#f1d7d7;color:#8b1010}.user-actions{display:flex;gap:.75rem;align-items:center;margin-top:1rem;flex-wrap:wrap}.narrow{max-width:560px;margin:2rem auto}
@media(max-width:760px){.topnav{flex-wrap:wrap}.menu-toggle{display:inline-flex}.nav-links{display:none;flex-direction:column;align-items:stretch;gap:0;width:100%}.nav-links.open{display:flex}.nav-links a,.nav-user{padding:12px 2px;border-top:1px solid rgba(255,255,255,.13);margin-left:0}.container{padding:14px}.dashboard-head{align-items:stretch}.refresh-area{flex-direction:column;align-items:flex-end}.dashboard-controls{top:57px}.grid{grid-template-columns:1fr}.camera-card{padding:16px}.filter-chips{margin-right:-14px;padding-right:14px}.actions{flex-direction:column}.actions .button,.actions form{width:100%}}
@media(max-width:420px){.login-box{padding:23px 18px}.dashboard-head{flex-direction:column}.refresh-area{width:100%;flex-direction:row;justify-content:space-between;align-items:center}.card-title-row{flex-direction:column}.primary-status{align-self:flex-start}}
.card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px;margin-bottom:16px}.muted{color:var(--muted)}
.add-panel summary{cursor:pointer;font-weight:800;font-size:1.05rem;padding:4px 0}.add-panel[open] summary{margin-bottom:15px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label{font-weight:700}.form-grid>div{display:flex;align-items:end}.management-list{display:grid;gap:10px}.management-row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-height:64px}.management-row strong{font-size:1.05rem}.row-actions{display:flex;align-items:center;gap:8px}.row-actions form{margin:0}.check-row{display:flex!important;align-items:center;gap:10px;margin:10px 0 18px;font-weight:700}.check-row input{width:auto;min-height:auto;margin:0;transform:scale(1.25)}.audit-search{display:flex;gap:9px;align-items:flex-start;margin-bottom:16px}.audit-search .search-input{margin:0}.audit-search button,.audit-search .button{flex:0 0 auto}
@media(max-width:760px){.form-grid{grid-template-columns:1fr}.management-row{align-items:flex-start}.row-actions{flex-wrap:wrap;justify-content:flex-end}.audit-search{flex-wrap:wrap}.audit-search .search-input{width:100%}}
@media(max-width:430px){.management-row{flex-direction:column;align-items:stretch}.row-actions{width:100%}.row-actions .button,.row-actions form,.row-actions button{flex:1;width:100%}}

.timeline-heading-actions{display:flex;gap:8px;flex-wrap:wrap}.timeline-list{position:relative;display:grid;gap:0;max-width:900px}.timeline-event{position:relative;display:grid;grid-template-columns:24px 1fr;gap:12px;padding-bottom:18px}.timeline-event:not(:last-child)::before{content:"";position:absolute;left:7px;top:16px;bottom:0;width:2px;background:var(--border)}.timeline-marker{width:16px;height:16px;margin-top:4px;border-radius:50%;background:var(--blue);border:3px solid #dbeaf7;z-index:1}.timeline-content{background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px 15px}.timeline-time{font-size:.82rem;color:var(--muted);margin-bottom:4px}.timeline-action{font-size:1.02rem}.timeline-details{margin-top:4px;color:var(--muted)}
@media(max-width:760px){.timeline-heading-actions{width:100%}.timeline-heading-actions .button{flex:1}.page-heading{flex-wrap:wrap}}
.manual-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.manual-control-grid form{margin:0}@media(max-width:640px){.manual-control-grid{grid-template-columns:1fr}}
/* v1.3 refinements */
.camera-card{border-left:1px solid var(--border)}
.primary-status{background:transparent!important;padding:2px 0;font-size:.86rem}
.status-online .primary-status{color:var(--green)}
.status-camera-offline .primary-status,.status-camera-router-offline .primary-status{color:var(--red)}
.status-relay-controller-offline .primary-status{color:var(--amber)}
.status-recovering .primary-status{color:var(--amber)}
.status-restored .primary-status{color:var(--green);font-weight:900}
.status-icon{font-size:1.05em;margin-right:3px}
.live-clock{display:flex;flex-direction:column;align-items:flex-end;color:var(--text);line-height:1.25}
.live-clock span{font-variant-numeric:tabular-nums}
.enabled-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:9px;vertical-align:1px}
.enabled-dot.is-enabled{background:var(--green)}
.enabled-dot.is-disabled{background:#8b949e}
.camera-group-heading{margin:24px 0 4px;font-size:1.05rem;color:var(--muted)}
.camera-group-heading:first-child{margin-top:0}
@media(max-width:760px){.live-clock{align-items:flex-start}.refresh-area{align-items:flex-start}}

.section-divider {
  border: 0;
  border-top: 1px solid var(--border, #d8dde6);
  margin: 1.5rem 0;
}

.danger-zone {
  padding-top: .25rem;
}

.danger-zone h2 {
  margin-bottom: .35rem;
}

.relay-lock-warning {
  margin: 1rem 0;
  padding: 0.9rem 1rem;
  border: 2px solid #b42318;
  border-radius: 10px;
  background: #fef3f2;
  color: #912018;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.manual-control-grid button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.relay-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.relay-status-grid>div{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--border);border-radius:10px;padding:14px}.relay-power{padding:5px 10px;border-radius:999px;font-weight:900}.relay-power.on{background:#e4f3e9;color:#166735}.relay-power.off{background:#fde8e7;color:#9f1d15}.relay-power.unknown{background:#edf1f4;color:#596777}.relay-status-error{display:flex;flex-direction:column;gap:3px;border:2px solid #b42318;background:#fef3f2;color:#912018;border-radius:10px;padding:12px}.change-list{display:grid;gap:8px;margin-top:12px}.change-item{display:grid;grid-template-columns:minmax(120px,1fr) minmax(90px,1fr) auto minmax(90px,1fr);gap:8px;align-items:center;padding:9px;border:1px solid var(--border);border-radius:8px;background:#f8fafb}.change-arrow{font-weight:900}.timeline-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.timeline-summary>div{background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:5px}.timeline-summary strong{font-size:1.05rem}.timeline-summary span{font-size:.8rem;color:var(--muted)}.timeline-filters{display:flex;gap:8px;overflow-x:auto;margin-bottom:18px}.timeline-filters .active{background:var(--nav);color:#fff}.connection-indicator{display:inline-flex;align-items:center;gap:6px;font-weight:800}.connection-indicator::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--green)}.connection-indicator.disconnected{color:var(--red)}.connection-indicator.disconnected::before{background:var(--red)}
@media(max-width:760px){.relay-status-grid,.timeline-summary{grid-template-columns:1fr 1fr}.change-item{grid-template-columns:1fr}.change-arrow{transform:rotate(90deg)}}
.router-cycle-status{margin-top:14px;padding:14px;border:1px solid var(--border);border-radius:10px;background:#f8fafb;display:grid;gap:6px}.router-cycle-status strong{font-size:1.02rem}.router-cycle-status div{color:var(--muted);font-variant-numeric:tabular-nums}
/* v1.7 advanced recovery and component uptime */
.recovery-edit-page{max-width:1050px;margin:0 auto}.advanced-recovery{border-top:1px solid var(--border);padding-top:14px;margin-top:18px}.advanced-recovery>summary{cursor:pointer;font-size:1.15rem;font-weight:900;padding:8px 0}.advanced-recovery h3{margin:24px 0 10px}.setting-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.recovery-setting{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:11px;padding:13px;background:#fff;transition:.15s}.recovery-setting.changed-from-default{border-color:#d99800;background:#fff9e8;box-shadow:inset 4px 0 0 #d99800}.recovery-setting>span{font-weight:800}.recovery-setting>span small{font-weight:600;color:var(--muted)}.recovery-setting input{margin:7px 0}.recovery-setting>small{color:var(--muted);line-height:1.35}.recovery-setting>em{font-style:normal;font-size:.76rem;color:#526171;margin-top:7px}.recovery-estimates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:15px 0}.recovery-estimates>div{border:1px solid var(--border);border-radius:12px;padding:15px;background:#f8fafb;display:flex;flex-direction:column;gap:5px}.recovery-estimates span{color:var(--muted);font-size:.82rem;font-weight:700}.recovery-estimates strong{font-size:1.35rem}.recovery-warnings{border:2px solid #d99800;background:#fff8e1;color:#6f4600;border-radius:10px;padding:12px 14px;display:grid;gap:7px}.defaults-panel{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--border);border-radius:12px;padding:15px;margin-top:20px;background:#f8fafb}.defaults-panel p{margin:4px 0 0;color:var(--muted);font-size:.85rem}.timeline-preview{margin-top:22px}.preview-event{display:grid;grid-template-columns:82px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}.preview-event time{font-variant-numeric:tabular-nums;font-weight:900;color:var(--blue)}.component-status-row{display:grid!important;grid-template-columns:minmax(120px,1fr) minmax(120px,auto) auto;align-items:center;gap:10px}.component-duration{text-align:right;font-size:.78rem;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}.component-offline-box{min-width:78px;text-align:center}.component-warning{color:#8a5200;font-weight:800}
@media(max-width:760px){.setting-grid,.recovery-estimates{grid-template-columns:1fr}.defaults-panel{align-items:stretch;flex-direction:column}.defaults-panel button{width:100%}.component-status-row{grid-template-columns:1fr auto}.component-duration{grid-column:1;text-align:left}.component-status-row>strong{grid-column:2;grid-row:1 / span 2}}

/* v1.8 protected administrator and unified component status */
.user-identity{display:flex;flex-direction:column;gap:4px;min-width:0}.user-name-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.role-badge,.protected-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:900;line-height:1}.role-admin{background:#e8eef8;color:#153b66}.role-operator{background:#edf1f4;color:#485767}.protected-badge{background:#fff2cc;color:#714b00;border:1px solid #e1b94d}.account-disabled{color:var(--red);font-weight:800}.protected-account-notice{display:flex;flex-direction:column;gap:4px;margin-bottom:16px;padding:14px 16px;border:2px solid #d6a400;border-radius:12px;background:#fff8db;color:#614600}.protected-account-notice span{font-size:.88rem}.protected-account-notice+div select:disabled,.protected-account-notice+div input:disabled{opacity:.75;cursor:not-allowed}
.component-status-row{grid-template-columns:minmax(130px,1fr) minmax(140px,auto)!important}.component-state-box{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:142px;border-radius:9px;padding:7px 12px;text-align:center;font-weight:900;line-height:1.08;border:1px solid transparent}.component-state-box>span{font-size:.78rem;letter-spacing:.04em}.component-state-box .component-duration{margin-top:4px;text-align:center;font-size:.76rem;font-weight:900;color:inherit}.component-state-box.is-online{background:#e5f5eb;border-color:#8ac9a1;color:#146b38}.component-state-box.is-offline{background:#fde8e7;border-color:#e69792;color:#a51f18}.component-state-box.is-offline>span,.component-state-box.is-offline .component-duration{color:#a51f18}.component-state-box.is-checking{background:#fff4d8;border-color:#e3bd63;color:#805400}.component-state-box.is-unknown{background:#edf1f4;border-color:#cbd3da;color:#596777}
@media(max-width:760px){.component-status-row{grid-template-columns:1fr auto!important}.component-state-box{min-width:132px}.user-management-row{align-items:center}}

/* Camera management inline health summary */
.camera-management-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(510px,2.6fr) auto;align-items:center}
.camera-management-name{min-width:0}
.camera-inline-statuses{display:grid;grid-template-columns:repeat(3,minmax(155px,1fr));gap:8px;align-items:center}
.camera-inline-component{display:grid;grid-template-columns:auto minmax(112px,1fr);gap:7px;align-items:center;min-width:0}
.camera-inline-label{font-size:.78rem;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.035em;white-space:nowrap}
.component-state-box.compact-state{min-width:0;width:100%;padding:6px 8px;border-radius:8px}
.component-state-box.compact-state>span{font-size:.72rem}
.component-state-box.compact-state .component-duration{font-size:.7rem;margin-top:3px;white-space:nowrap}
@media(max-width:1050px){.camera-management-row{grid-template-columns:minmax(140px,.8fr) minmax(420px,2.2fr) auto}.camera-inline-statuses{grid-template-columns:1fr}.camera-inline-component{grid-template-columns:72px 1fr}}
@media(max-width:760px){.camera-management-row{display:flex;flex-direction:column;align-items:stretch}.camera-inline-statuses{grid-template-columns:1fr}.camera-inline-component{grid-template-columns:75px 1fr}.row-actions{justify-content:flex-start}}

/* v2.1 dashboard deployment state */
.filter-chip.has-alert{background:#b42318!important;border-color:#b42318!important;color:#fff!important;box-shadow:0 0 0 2px rgba(180,35,24,.12)}
.not-deployed-card{opacity:.8;background:#f4f6f8}
.not-deployed-control{margin:0;display:inline-flex;align-items:center}
.not-deployed-control label{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:800;color:var(--muted);white-space:nowrap;cursor:pointer}
.not-deployed-control input{width:14px;height:14px;margin:0}
.not-deployed-control input:disabled{cursor:not-allowed;opacity:.6}
@media(max-width:760px){.not-deployed-control{width:100%}}

/* v2.2 dashboard tab persistence and health-check alignment */
.card-meta-top{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}
.card-meta-top .checked-time{min-width:0}
.card-meta-top .not-deployed-control{margin-left:auto;flex:0 0 auto}
@media(max-width:520px){.card-meta-top{align-items:flex-start}.card-meta-top .not-deployed-control{padding-top:1px}}


/* v3.0 iPhone-first portal */
html{-webkit-text-size-adjust:100%}
body{padding-bottom:env(safe-area-inset-bottom)}
button,.button,input,select{min-height:44px}
.auto-recovery-settings{margin:18px 0;padding:16px;border:1px solid var(--border);border-radius:14px;background:#f8fafb}
.auto-recovery-settings h2{margin-top:0}
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0}
.switch-row>span{display:flex;flex-direction:column;gap:5px}
.switch-row small{color:var(--muted);line-height:1.35}
.switch-row input[type=checkbox]{width:24px;height:24px;flex:0 0 auto}
.auto-recovery-countdown{display:block;border:1px solid #d89b22;background:#fff6db;color:#724900;border-radius:9px;padding:9px 11px;font-weight:900;font-variant-numeric:tabular-nums}
@media(max-width:760px){
  body{background:#f3f6f9}
  .container{padding:12px max(12px,env(safe-area-inset-right)) 28px max(12px,env(safe-area-inset-left))}
  .topnav{position:sticky;top:0;z-index:100;padding-top:max(10px,env(safe-area-inset-top))}
  .brand{font-size:1rem}
  .menu-toggle{min-width:48px;min-height:48px;font-size:1.35rem}
  .nav-links.open{max-height:calc(100vh - 70px);overflow:auto}
  .dashboard-head{display:flex;flex-direction:column;align-items:stretch;gap:12px}
  .dashboard-head h1{font-size:1.55rem;margin-bottom:3px}
  .refresh-area{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
  .live-clock{grid-column:1 / -1}
  .refresh-area form{grid-column:1 / -1}
  .refresh-area button{width:100%}
  .dashboard-controls{position:sticky;top:68px;z-index:80;background:#f3f6f9;padding:8px 0 10px;margin:0 -2px}
  .filter-chips{display:flex;overflow-x:auto;scroll-snap-type:x proximity;gap:8px;padding:2px 1px 5px;-webkit-overflow-scrolling:touch}
  .filter-chip{flex:0 0 auto;scroll-snap-align:start;min-height:44px;padding:10px 13px;white-space:nowrap}
  .grid{display:block}
  .camera-card{margin-bottom:14px;border-radius:16px;padding:16px;box-shadow:0 4px 16px rgba(21,38,56,.07)}
  .card-title-row{align-items:flex-start;gap:8px}
  .card-title-row h2{font-size:1.35rem;line-height:1.1}
  .primary-status{font-size:.82rem;text-align:right}
  .component-status-list{gap:9px}
  .component-status-row{padding:10px 0!important}
  .component-name{font-size:.95rem;font-weight:800}
  .component-state-box{min-width:124px;padding:8px 10px}
  .card-meta{font-size:.84rem}
  .card-meta-top{align-items:center}
  .actions{display:grid;grid-template-columns:1fr;gap:10px}
  .actions form,.actions a,.actions button{width:100%}
  .full-width{width:100%}
  .login-container{padding:20px 14px}
  .login-box{width:100%;max-width:430px;border-radius:18px;padding:24px 18px}
  .login-box h1{font-size:1.6rem}
  .form-grid{grid-template-columns:1fr}
  .management-row{border-radius:14px}
  .switch-row{align-items:flex-start}
}
@media(max-width:390px){
  .camera-card{padding:14px}
  .component-state-box{min-width:112px}
  .primary-status{max-width:135px}
}
.settings-stack{display:grid;gap:18px}.settings-panel{margin-bottom:18px}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:16px}.panel-heading h2{margin:0 0 4px}.panel-heading p{margin:0;color:#64748b}.form-grid{display:grid;gap:14px}.form-grid.two-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three-columns{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid label{display:grid;gap:7px;font-weight:700}.form-grid input{width:100%;box-sizing:border-box}.switch-label{display:flex;gap:8px;align-items:center;font-weight:700}.help-text{color:#64748b}.notification-groups{display:grid;gap:18px}.notification-group{display:grid;gap:9px}.notification-group h3{margin:0;padding:0 2px;font-size:1rem;color:#334155}.notification-event-list{display:grid;gap:8px}.notification-event-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-width:0;padding:13px 14px;border:1px solid #dbe3ec;border-radius:10px;background:#fff}.event-toggle{display:grid;grid-template-columns:auto minmax(0,1fr);gap:11px;align-items:flex-start;min-width:0;margin:0}.event-toggle input{margin-top:3px}.event-copy{display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}.event-toggle small{color:#64748b;font-weight:400;line-height:1.35}.event-toggle em{color:#9a6700;font-size:.8rem;line-height:1.3}.event-test-button{min-width:70px;justify-self:end;white-space:nowrap}.button.compact,.compact{padding:8px 13px;font-size:.88rem}.notification-preview{max-width:430px;padding:16px;border:1px solid #cbd5e1;border-radius:16px;background:linear-gradient(180deg,#fff,#f8fafc);box-shadow:0 8px 25px rgba(15,23,42,.08);display:grid;gap:5px}.notification-preview .preview-app{font-size:.78rem;color:#64748b;font-weight:800}.notification-preview p{margin:0;color:#334155}.notification-preview small{color:#64748b}.sticky-save{position:sticky;bottom:12px;display:flex;justify-content:flex-end;z-index:3}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.status-grid>div{display:grid;gap:5px;padding:12px;border:1px solid #dbe3ec;border-radius:10px}.status-grid span{font-size:.82rem;color:#64748b}.status-good{color:#16794b}.status-warn{color:#9a6700}.system-status-panel{margin-bottom:18px}.status-pill{display:inline-block;border-radius:999px;padding:3px 8px;font-size:.78rem;font-weight:800}.status-pill.success{background:#dcfce7;color:#166534}.status-pill.error{background:#fee2e2;color:#991b1b}
@media(max-width:760px){.form-grid.two-columns,.form-grid.three-columns,.status-grid{grid-template-columns:1fr}.panel-heading{display:grid}.notification-event-row{grid-template-columns:1fr;align-items:start;gap:11px}.event-test-button{width:100%;justify-self:stretch}.notification-page-heading .button{width:100%;box-sizing:border-box;text-align:center}.notification-preview{max-width:none}.sticky-save button{width:100%}}


/* v31.2 iOS dashboard text and deployment-state cleanup */
.camera-card,.camera-card *{min-width:0}
.card-title-row h2,.primary-status,.component-name,.component-state-box,.card-meta,.actions button,.actions .button{overflow-wrap:anywhere;word-break:normal}
.primary-status{display:inline-flex;align-items:center;justify-content:center;gap:5px;line-height:1.2;max-width:52%;flex:0 1 auto}
.status-label{min-width:0}
.checked-time{display:flex;flex-direction:column;gap:3px;line-height:1.3}
.checked-time-value{color:var(--muted);font-variant-numeric:tabular-nums}
.not-deployed-control{width:100%;margin-top:8px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}
.not-deployed-control label{width:100%;font-size:.85rem;white-space:normal;line-height:1.25}
.not-deployed-control input{flex:0 0 18px;width:18px;height:18px}
.not-deployed-card .not-deployed-control{background:#eef1f4}
.actions button:disabled{white-space:normal;line-height:1.25;padding-left:12px;padding-right:12px}
@media(max-width:520px){
  .card-title-row{display:grid;grid-template-columns:1fr;gap:9px;margin-bottom:12px}
  .card-title-row h2{font-size:1.25rem;line-height:1.2}
  .primary-status{justify-self:start;max-width:100%;width:auto;text-align:left;padding:7px 10px}
  .component-status-row{grid-template-columns:minmax(0,1fr) minmax(104px,42%)!important;gap:8px}
  .component-state-box{min-width:0!important;width:100%;padding:7px 8px}
  .component-state-box>span{font-size:.74rem}
  .component-state-box .component-duration{font-size:.69rem;white-space:normal}
  .card-meta-top{display:block}
  .not-deployed-control{margin-top:9px}
}
@media(max-width:360px){
  .camera-card{padding:12px}
  .component-status-row{grid-template-columns:minmax(0,1fr) 104px!important}
  .component-name{font-size:.9rem}
  .primary-status{font-size:.76rem}
}


/* v31.4 update manager */
.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.stack-form{display:grid;gap:14px}.stack-form label{display:grid;gap:8px;font-weight:700}.stack-form input[type=file]{width:100%;padding:12px;border:1px solid #cad2dc;border-radius:10px;background:#fff}.staged-update{margin-top:16px;padding:14px;border:1px solid #9cc8aa;border-radius:12px;background:#eef9f1;display:grid;gap:8px}.staged-update span,.backup-row span{display:block;color:#5e6978;font-size:.9rem}.section-heading,.backup-row{display:flex;justify-content:space-between;align-items:center;gap:14px}.backup-list{display:grid;gap:10px;margin-top:16px}.backup-row{padding:13px;border:1px solid #dfe4ea;border-radius:12px}.backup-actions{display:flex;align-items:center;gap:8px}.backup-actions form{margin:0}.update-warning{border-left:5px solid #2a6fbb}.help-text{color:#637083;font-size:.9rem;line-height:1.45}.button.secondary{background:#e8edf3;color:#1b2b3d;text-decoration:none}.button.danger{background:#a62f35;color:white}@media(max-width:720px){.admin-grid{grid-template-columns:1fr}.section-heading,.backup-row{align-items:stretch;flex-direction:column}.backup-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.backup-actions .button,.backup-actions form,.backup-actions form button{width:100%}}


/* v32.0 simplified role-aware navigation and mobile polish */
.topnav{padding:10px max(16px,env(safe-area-inset-left));gap:14px;flex-wrap:nowrap;box-shadow:0 2px 10px rgba(5,15,25,.18)}
.nav-primary{margin-left:auto;display:flex;align-items:center;gap:9px}
.dashboard-link,.menu-toggle{min-height:44px;border-radius:10px;padding:9px 14px;font-weight:800;text-decoration:none}
.dashboard-link{display:inline-flex;align-items:center;background:#fff;color:var(--nav)}
.menu-toggle{display:inline-flex!important;align-items:center;gap:7px;margin:0;background:rgba(255,255,255,.11);border:1px solid rgba(255,255,255,.24);color:#fff}
.nav-links{display:none;position:absolute;right:max(14px,env(safe-area-inset-right));top:calc(100% + 8px);width:min(360px,calc(100vw - 24px));max-height:calc(100dvh - 90px);overflow-y:auto;padding:10px;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:15px;box-shadow:0 18px 50px rgba(10,25,40,.25);z-index:200}
.nav-links.open{display:block}
.nav-links a{display:flex!important;align-items:center;min-height:44px;padding:10px 12px!important;border:0!important;border-radius:9px;color:var(--text)!important;text-decoration:none;font-weight:700}
.nav-links a:hover,.nav-links a:focus{background:#eef3f7}
.menu-user{display:grid;gap:2px;padding:10px 12px 13px;border-bottom:1px solid var(--border)}
.menu-user span{font-size:.82rem;color:var(--muted)}
.menu-section{padding:9px 0;border-bottom:1px solid var(--border)}
.menu-section-title{display:block;padding:4px 12px 5px;color:var(--muted);font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.nav-links .logout-link{color:#9f241d!important}
.operator-menu-link{margin-top:5px}
.menu-version{padding:13px 12px 7px;color:var(--muted);font-size:.78rem;text-align:center}
.menu-version strong{color:var(--text)}
.camera-card{border-radius:17px;box-shadow:0 5px 18px rgba(21,38,56,.065);transition:box-shadow .15s ease,transform .15s ease}
.camera-card:hover{box-shadow:0 8px 24px rgba(21,38,56,.10)}
.card-title-row{padding-bottom:11px;border-bottom:1px solid var(--border)}
.actions{padding-top:3px}
@media(max-width:760px){
  .topnav{flex-wrap:nowrap;padding-top:max(9px,env(safe-area-inset-top));gap:8px}
  .brand{overflow:hidden;text-overflow:ellipsis;max-width:42vw;font-size:.94rem}
  .nav-primary{gap:7px}
  .dashboard-link,.menu-toggle{padding:8px 11px;font-size:.9rem;white-space:nowrap}
  .menu-toggle{min-width:auto;font-size:.9rem}
  .nav-links{top:calc(100% + 5px);right:10px;left:10px;width:auto;max-height:calc(100dvh - 78px)}
  .dashboard-controls{top:65px}
}
@media(max-width:390px){
  .brand{max-width:31vw;font-size:.86rem}
  .dashboard-link,.menu-toggle{padding:8px 9px}
  .menu-toggle span:last-child{display:none}
}


/* v32.1 top-bar alignment */
.topnav>.dashboard-link{flex:0 0 auto}
.topnav>.nav-primary{margin-left:auto}
@media(max-width:760px){
  .topnav>.dashboard-link{margin-left:0}
}
@media(max-width:430px){
  .brand{display:none}
  .topnav>.dashboard-link{margin-right:auto}
  .topnav>.nav-primary{margin-left:0}
}

.not-deployed-banner{padding:.55rem .75rem;margin:-.25rem -.25rem .75rem;background:#eef1f4;border-radius:.5rem;font-weight:700;color:#4b5563}.button.danger,button.danger{background:#a61b1b;color:#fff}

/* Version 33 camera management refinement */
.camera-management-detail-row{grid-template-columns:minmax(190px,1.05fr) minmax(430px,2.25fr) minmax(170px,.9fr);grid-template-areas:"heading statuses checks" "actions actions deployed";align-items:center}
.camera-management-heading{grid-area:heading;display:flex;flex-direction:column;gap:6px;min-width:0}
.management-status-text{font-weight:800;font-size:.82rem;letter-spacing:.035em;color:var(--text);background:transparent;border:0;padding:0}
.camera-management-detail-row .camera-inline-statuses{grid-area:statuses}
.camera-management-check-details{grid-area:checks;display:grid;gap:7px;font-size:.9rem}
.camera-management-check-details span{display:flex;flex-direction:column;gap:2px}
.camera-management-check-details strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.camera-management-actions{grid-area:actions;justify-content:flex-start;margin-top:8px}
.camera-management-deployed{grid-area:deployed;margin:8px 0 0;display:flex;justify-content:flex-end}
.camera-management-deployed label{display:flex;align-items:center;gap:8px;font-weight:700}
.camera-management-deployed input{width:auto;min-height:auto;margin:0;transform:scale(1.15)}
.disabled-control{opacity:.5;pointer-events:none}
.recovery-management-note{font-weight:800}
@media(max-width:1050px){.camera-management-detail-row{grid-template-columns:1fr 1.7fr;grid-template-areas:"heading checks" "statuses statuses" "actions deployed"}}
@media(max-width:760px){.camera-management-detail-row{display:grid;grid-template-columns:1fr;grid-template-areas:"heading" "statuses" "checks" "actions" "deployed"}.camera-management-deployed{justify-content:flex-start}.camera-management-actions{display:grid;grid-template-columns:1fr}.camera-management-actions .button{width:100%;text-align:center}}

/* Camera inventory import/export */
.camera-management-toolbar{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.camera-management-toolbar form{margin:0}.camera-import-dialog{width:min(34rem,calc(100% - 2rem));border:1px solid #bbb;border-radius:.7rem;padding:1.25rem}.camera-import-dialog::backdrop{background:rgba(0,0,0,.45)}.camera-import-dialog form{display:grid;gap:1rem}.camera-import-dialog label{display:grid;gap:.4rem}.camera-import-dialog .checkbox-row{display:flex;align-items:flex-start;gap:.55rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.65rem}@media(max-width:700px){.camera-management-toolbar{width:100%}.camera-management-toolbar>*{flex:1 1 auto;text-align:center}.camera-management-toolbar form button{width:100%}}

/* v33.0.7 — keep dashboard primary status text on one line */
.card-title-row .primary-status{
  flex:0 0 auto;
  max-width:none;
  white-space:nowrap;
  overflow-wrap:normal;
  word-break:keep-all;
}
.card-title-row .primary-status .status-icon,
.card-title-row .primary-status .status-label{
  white-space:nowrap;
  overflow-wrap:normal;
  word-break:keep-all;
}
.card-title-row h2{
  min-width:0;
  overflow-wrap:anywhere;
}

.health-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin-bottom:18px}.health-summary-card{background:#fff;border:1px solid var(--border);border-left:6px solid #8a98a8;border-radius:12px;padding:16px;display:flex;justify-content:space-between;align-items:center}.health-summary-card span{font-weight:800}.health-summary-card strong{font-size:1.8rem}.level-good{border-left-color:#25834f!important}.level-watch{border-left-color:#d69a00!important}.level-problematic{border-left-color:#d56a00!important}.level-critical{border-left-color:#b42318!important}.health-filter-panel{margin-bottom:18px}.health-periods{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.health-periods>span{font-weight:800;align-self:center;margin-right:5px}.health-custom-period{display:flex;gap:8px;align-items:end;margin-left:auto}.health-custom-period label{font-weight:700}.health-custom-period input{width:110px;margin:4px 0 0}.health-table{min-width:1280px}.health-level{display:inline-block;border-radius:999px;padding:5px 9px;font-size:.78rem;font-weight:900;background:#edf1f4}.health-level.level-good{background:#dcfce7;color:#166534}.health-level.level-watch{background:#fff3cd;color:#7c4a00}.health-level.level-problematic{background:#ffedd5;color:#9a3412}.health-level.level-critical{background:#fee2e2;color:#991b1b}.recovery-failure-count{color:#991b1b;font-size:.8rem}.muted{color:var(--muted)}.extended-offline-setting{margin-top:10px;align-items:center}@media(max-width:760px){.health-summary-grid{grid-template-columns:repeat(2,1fr)}.health-custom-period{margin-left:0;width:100%}.health-custom-period label{flex:1}.health-custom-period input{width:100%}}
.trend{display:inline-block;font-weight:800;font-size:.8rem}.trend-improving{color:#166534}.trend-worsening{color:#991b1b}.trend-stable{color:#596777}.health-table a{color:var(--blue);text-decoration:none}.health-table a:hover{text-decoration:underline}


/* v34.0 advanced camera access and PTZ recovery */
.recovery-edit-page{padding-bottom:88px}.sticky-camera-save{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));z-index:140;background:rgba(255,255,255,.97);border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin:0;box-shadow:0 8px 28px rgba(15,23,42,.18);backdrop-filter:blur(5px)}
.advanced-camera-settings{margin-top:14px;border:1px solid #cfd8e3;border-radius:12px;background:#f8fafc;padding:0 14px 14px}.advanced-camera-settings>summary{cursor:pointer;font-weight:850;padding:14px 0}.advanced-camera-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ptz-state-card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.ptz-state-card>div{padding:12px;border:1px solid var(--border);border-radius:10px;background:#fff;display:grid;gap:5px}.ptz-state-card span{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.ptz-test-actions{display:flex;flex-wrap:wrap;gap:8px}.advanced-access-row{margin-top:10px}.advanced-access-row small{display:block;margin-left:6px;color:var(--muted);font-weight:400}.owner-lock-note{display:block;color:var(--muted);margin:-3px 0 10px 30px}.error-text{color:#a61b1b!important;font-weight:700}
@media(max-width:760px){.advanced-camera-grid,.ptz-state-card{grid-template-columns:1fr}.sticky-camera-save{left:10px;right:10px;bottom:max(8px,env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr}.sticky-camera-save button,.sticky-camera-save .button{width:100%;box-sizing:border-box;text-align:center}.ptz-test-actions{display:grid}.ptz-test-actions button{width:100%}}
.history-count-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}.history-count-grid>div{border:1px solid var(--border);border-radius:10px;padding:12px;display:grid;gap:4px}.history-count-grid span{font-size:.82rem;color:var(--muted)}.history-count-grid strong{font-size:1.2rem}

