/* portal-readability.css - generated by local/migration/portal-readability.py (20260930_132230). Do not hand-edit. */
/* inline styles */
[style*="font-size:0.48rem"],[style*="font-size: 0.48rem"]{font-size:0.8rem!important}
[style*="font-size:0.5rem"],[style*="font-size: 0.5rem"]{font-size:0.8rem!important}
[style*="font-size:0.52rem"],[style*="font-size: 0.52rem"]{font-size:0.8rem!important}
[style*="font-size:0.55rem"],[style*="font-size: 0.55rem"]{font-size:0.8rem!important}
[style*="font-size:0.56rem"],[style*="font-size: 0.56rem"]{font-size:0.8rem!important}
[style*="font-size:0.58rem"],[style*="font-size: 0.58rem"]{font-size:0.8rem!important}
[style*="font-size:0.6rem"],[style*="font-size: 0.6rem"]{font-size:0.8rem!important}
[style*="font-size:0.62rem"],[style*="font-size: 0.62rem"]{font-size:0.82rem!important}
[style*="font-size:0.64rem"],[style*="font-size: 0.64rem"]{font-size:0.82rem!important}
[style*="font-size:0.65rem"],[style*="font-size: 0.65rem"]{font-size:0.82rem!important}
[style*="font-size:0.66rem"],[style*="font-size: 0.66rem"]{font-size:0.82rem!important}
[style*="font-size:0.68rem"],[style*="font-size: 0.68rem"]{font-size:0.82rem!important}
[style*="font-size:0.7rem"],[style*="font-size: 0.7rem"]{font-size:0.84rem!important}
[style*="font-size:0.72rem"],[style*="font-size: 0.72rem"]{font-size:0.84rem!important}
[style*="font-size:0.74rem"],[style*="font-size: 0.74rem"]{font-size:0.84rem!important}
[style*="font-size:0.75rem"],[style*="font-size: 0.75rem"]{font-size:0.84rem!important}
[style*="font-size:0.76rem"],[style*="font-size: 0.76rem"]{font-size:0.84rem!important}
[style*="font-size:0.78rem"],[style*="font-size: 0.78rem"]{font-size:0.84rem!important}
[style*="font-size:9px"],[style*="font-size: 9px"]{font-size:11px!important}
[style*="font-size:10px"],[style*="font-size: 10px"]{font-size:11px!important}
/* class rules */
html .lbl{font-size:0.82rem!important}
html .login-err{font-size:0.84rem!important}
html .login-hint{font-size:0.82rem!important}
html .site-badge{font-size:0.82rem!important}
html .admin-badge{font-size:0.82rem!important}
html .live-txt{font-size:0.84rem!important}
html .avatar{font-size:0.82rem!important}
html .logout-btn{font-size:0.84rem!important}
html .nav-filter-inp{font-size:0.84rem!important}
html .nav-section{font-size:0.8rem!important}
html .nav-section-kicker{font-size:11px!important}
html .page-kicker{font-size:0.82rem!important}
html .page-subtitle{font-size:0.84rem!important}
html .page-chip{font-size:0.84rem!important}
html .stat-lbl{font-size:0.82rem!important}
html .stat-sub{font-size:0.82rem!important}
html .cam-sub{font-size:0.82rem!important}
html .rec-badge{font-size:0.82rem!important}
html .state-badge{font-size:0.82rem!important}
html #player-bar .btn{font-size:0.84rem!important}
html #player-bar select,html #player-bar input[type="time"],html #player-bar input[type="date"]{font-size:0.84rem!important}
html #player-bar .btn{font-size:0.82rem!important}
html .btn{font-size:0.84rem!important}
html .stream-status{font-size:0.82rem!important}
html .panel-title{font-size:0.82rem!important}
html .zoom-lbl{font-size:0.82rem!important}
html .preset-btn{font-size:0.84rem!important}
html .preset-num{font-size:0.8rem!important}
html .preset-inp{font-size:0.84rem!important}
html .preset-save-btn{font-size:0.84rem!important}
html .preset-loading{font-size:0.84rem!important}
html .rec-thumb-slot .rec-thumb-badge{font-size:0.8rem!important}
html .rec-meta{font-size:0.82rem!important}
html .rec-play-btn{font-size:0.84rem!important}
html .rec-dl-btn{font-size:0.84rem!important}
html .rec-player-sub{font-size:0.82rem!important}
html .rec-filter-btn{font-size:0.84rem!important}
html .rec-stat{font-size:0.84rem!important}
html .cmdk-kbd{font-size:0.82rem!important}
html .cmdk-group-label{font-size:0.8rem!important}
html .cmdk-item-hint{font-size:0.82rem!important}
html .cmdk-item-badge{font-size:0.8rem!important}
html .cmdk-item-arrow{font-size:0.84rem!important}
html .cmdk-empty{font-size:0.84rem!important}
html .cmdk-footer{font-size:0.82rem!important}
html .cmdk-trigger{font-size:0.84rem!important}
html .empty-state-desc{font-size:0.84rem!important}
html .empty-state-hint{font-size:0.82rem!important}
html .empty-state-cta{font-size:0.84rem!important}
html .empty-state.compact .empty-state-desc{font-size:0.84rem!important}
html .table th{font-size:0.82rem!important}
html .table td{font-size:0.84rem!important}
html .badge{font-size:0.82rem!important}
html .modal-lbl{font-size:0.82rem!important}
html .assign-item{font-size:0.84rem!important}
html .msg{font-size:0.84rem!important}
html .site-card-loc{font-size:0.84rem!important}
html .site-stat{font-size:0.82rem!important}
html .mobile-bottom-nav button{font-size:0.8rem!important}
html .mobile-bottom-nav .mbn-badge{font-size:0.8rem!important}
html .user-chip span{font-size:0.84rem!important}
html .cam-footer .btn{font-size:0.84rem!important}
html .table{font-size:0.84rem!important}
html .rec-name{font-size:0.84rem!important}
html .admin-section-header .btn{font-size:0.82rem!important}
html #rec-player-card .btn,html #rec-player-card button,html #rec-player-card select{font-size:0.84rem!important}
html #rec-stats-bar{font-size:0.82rem!important}
html .cam-footer .btn{font-size:0.82rem!important}
html .cam-sub{font-size:0.8rem!important}
html #page-live .stat-lbl{font-size:0.82rem!important}
html #page-live .stat-sub{font-size:0.8rem!important}
html #page-live .cam-sub{font-size:0.84rem!important}
html #page-live #player-bar .btn{font-size:0.84rem!important}
html #page-live .panel-title{font-size:0.84rem!important}
html thead th{font-size:11px!important}
html .nav-section-label{font-size:11px!important}
html .page-kicker{font-size:11px!important}
html .admin-badge{font-size:11px!important}
html .rec-badge{font-size:11px!important}
html .stat-lbl,html .stat .stat-lbl{font-size:11px!important}
html .status-active,html .status-online{font-size:11px!important}
html .status-inactive,html .status-offline{font-size:11px!important}
html .perm-granted{font-size:11px!important}
html .perm-denied{font-size:11px!important}
html .player-overlay-pill{font-size:11px!important}
html .player-clock-overlay{font-size:11px!important}
html .topbar-production-badge{font-size:11px!important}
html .health-operational{font-size:11px!important}
html .health-degraded{font-size:11px!important}
html .health-down{font-size:11px!important}
html .notif-badge{font-size:11px!important}
html .btn-sm{font-size:0.82rem!important}
html #cameras-table ~ * thead th,html #cameras-table thead th,html .table thead th,html thead th{font-size:0.84rem!important}
html #cameras-table tr.site-hdr-row td span[style*="8a97a5"]{font-size:0.84rem!important}
html #cameras-table .site-chev{font-size:0.84rem!important}
html #cameras-table td:last-child .btn,html #cameras-table td:last-child button{font-size:0.82rem!important}
html #cameras-table td:last-child select{font-size:0.82rem!important}
html #cameras-table label{font-size:0.84rem!important}
html .modal-lbl,html label.lbl,html .lbl{font-size:0.84rem!important}
html .alert-cat-person,html .evt-person{font-size:0.82rem!important}
html .alert-cat-car,html .evt-car,html .evt-vehicle{font-size:0.82rem!important}
html .alert-cat-motion,html .evt-motion{font-size:0.82rem!important}
html .alert-cat-system,html .evt-system{font-size:0.82rem!important}
html .table td::before{font-size:0.8rem!important}
html .btn-sm{font-size:0.84rem!important}
html .stat,html .stat *{font-size:0.84rem!important}
html .admin-section table{font-size:0.84rem!important}
html #page-live .stat-val{font-size:0.84rem!important}
html .topbar-indicator{font-size:11px!important}
html #page-users .users-sort-ind{font-size:0.82rem!important}
html #page-cameras table.table td:last-child button,html #page-cameras table.table td:last-child .btn{font-size:0.82rem!important}
html #page-cameras .cams-sort-ind{font-size:0.82rem!important}
html #page-cameras table.table td:last-child .btn,html #page-cameras table.table td:last-child button{font-size:0.82rem!important}
html body.is-client #page-live .stat-lbl{font-size:0.8rem!important}
html body.is-client #page-live .stat-val{font-size:0.84rem!important}
html #preview-mode-banner{font-size:0.84rem!important}
html #preview-mode-banner button{font-size:0.84rem!important}
html #preview-as-client-btn{font-size:0.84rem!important}
html .nav-section-label-injected{font-size:0.82rem!important}
html .cg-thumb-placeholder{font-size:0.84rem!important}
html .cg-live-badge{font-size:0.8rem!important}
html .cg-status{font-size:0.8rem!important}
html .cg-meta{font-size:0.82rem!important}
html .cg-btn{font-size:0.82rem!important}
html .cg-chip{font-size:0.84rem!important}
html .cg-chip-count{font-size:0.8rem!important}
html .cg-site-header{font-size:0.84rem!important}
html .cg-site-meta{font-size:0.82rem!important}
html #dlrange-card .dlr-f{font-size:0.82rem!important}
html #dlrange-card .dlr-f input{font-size:0.84rem!important}
html #dlrange-card .dlr-chip{font-size:0.82rem!important}
html #dlrange-card .dlr-leg{font-size:0.82rem!important}
html #dlrange-card .dlr-btn{font-size:0.84rem!important}
html .cd-bubble-tool{font-size:0.84rem!important}
html #dz-badge{font-size:0.84rem!important}
html #cam-diag-pop .diag-row{font-size:0.84rem!important}
html #cam-diag-pop .diag-reason{font-size:0.84rem!important}
html .fh-pill{font-size:0.84rem!important}
html #fleet-health-summary .fh-pill{font-size:0.82rem!important}
html #page-usage-report .ur-field{font-size:0.82rem!important}
html #page-usage-report .ur-field input,html #page-usage-report .ur-field select{font-size:0.84rem!important}
html #page-usage-report .ur-tile .k{font-size:0.8rem!important}
html #page-usage-report .ur-tile .s{font-size:0.82rem!important}
html #page-usage-report table.ur{font-size:0.84rem!important}
html #page-usage-report table.ur th{font-size:0.8rem!important}
html #page-usage-report .ur-flag{font-size:0.8rem!important}
html #billing-tabs .btab .n{font-size:0.82rem!important}
html #live-compact-btn{font-size:0.82rem!important}
html #page-camera-detail .cd-sub{font-size:0.84rem!important}
html #page-camera-detail .cd-pill{font-size:0.82rem!important}
html #page-camera-detail .cd-card h3{font-size:0.84rem!important}
html #page-camera-detail .cd-kv{font-size:0.84rem!important}
html #page-camera-detail .cd-bars > div span{font-size:0.8rem!important}
html #page-camera-detail .cd-log{font-size:0.82rem!important}
html body.is-admin #page-live .stat-sub{font-size:0.84rem!important}
html body.is-admin #page-cameras .admin-section-header .btn{font-size:0.84rem!important}
html body.is-admin #cameras-table tr:not(.site-hdr-row) td:last-child button,html body.is-admin #cameras-table tr:not(.site-hdr-row) td:last-child select{font-size:0.84rem!important}
html body.is-admin #page-cameras table.table > thead > tr::before{font-size:0.84rem!important}
html #page-audit-log .al-sub{font-size:0.84rem!important}
html #page-audit-log .al-btn{font-size:0.84rem!important}
html #page-audit-log .al-tile .l{font-size:0.82rem!important}
html #page-audit-log .al-tile .s{font-size:0.82rem!important}
html #page-audit-log .al-toolbar input[type=search],html #page-audit-log .al-toolbar select{font-size:0.84rem!important}
html #page-audit-log .al-check{font-size:0.84rem!important}
html #page-audit-log .al-chip{font-size:0.84rem!important}
html #page-audit-log .al-day{font-size:0.82rem!important}
html #page-audit-log .al-time{font-size:0.84rem!important}
html #page-audit-log .al-meta{font-size:0.82rem!important}
html #page-audit-log .al-meta code{font-size:0.82rem!important}
html #page-audit-log .al-role{font-size:0.8rem!important}
html #page-audit-log .al-chev{font-size:0.84rem!important}
html #page-audit-log .al-kv{font-size:0.82rem!important}
html #page-audit-log .al-raw summary{font-size:0.82rem!important}
html #page-audit-log .al-raw pre{font-size:0.82rem!important}
html #page-audit-log .al-empty{font-size:0.84rem!important}
html #page-audit-log .al-foot{font-size:0.82rem!important}
html #page-audit-log .al-note{font-size:0.82rem!important}
html if (legendEl){font-size:0.82rem!important}
html else{font-size:0.84rem!important}
html if (keys.length === 0){font-size:0.84rem!important}
html if (!res.ok){font-size:0.84rem!important}
html if (!d.ok){font-size:0.84rem!important}
html // Per-camera/folder breakdown bars if (!cams.length){font-size:0.84rem!important}
html if (actions){font-size:0.82rem!important}
html catch(e){font-size:0.84rem!important}
html if (!t){font-size:0.84rem!important}
html catch (e){font-size:0.84rem!important}
html else if (st.connected){font-size:0.84rem!important}
html if (st.clientCredsSet && !st.connected){font-size:0.84rem!important}
html if (st.connected){font-size:0.84rem!important}
html // Admin-only credentials section if (st.isAdmin){font-size:0.84rem!important}
html if (!items || items.length === 0){font-size:0.84rem!important}
html if (!days || days.length === 0){font-size:0.84rem!important}
html if (!cameras.length){font-size:0.84rem!important}
html if (!data.ok && resp.status === 403){font-size:0.84rem!important}
html if (!d.perCamera || d.perCamera.length === 0){font-size:0.84rem!important}
html if (data.total > ssAllResults.length){font-size:0.84rem!important}
html if (isOff){font-size:0.84rem!important}
html if (hasAI){font-size:0.82rem!important}
html else{font-size:0.82rem!important}
html if (hasMotion){font-size:0.82rem!important}
html if (res.status === 403){font-size:0.84rem!important}
html h++){font-size:0.8rem!important}
html if (!recips.length){font-size:0.84rem!important}
html if (!cams.length){font-size:0.84rem!important}
html if (!d){font-size:0.84rem!important}
html if (!billingInvoices.length){font-size:0.84rem!important}
html if (msg){font-size:0.84rem!important}
html else{font-size:0.8rem!important}
html if (!d.clients.length){font-size:0.84rem!important}
html if (!sites || !sites.length){font-size:0.84rem!important}
html if (!d.sites || !d.sites.length){font-size:0.84rem!important}
html if (!drafts.length){font-size:0.84rem!important}
html if (!billingClients.length){font-size:0.84rem!important}
html if (billing.notes){font-size:0.82rem!important}
html if (inv.discount.percent > 0){font-size:0.84rem!important}
html if (fp.hasPin){font-size:0.84rem!important}
html if (msUntil < 0){font-size:0.84rem!important}
html if (!fp.hasPin && !fp.expiresAt){font-size:0.84rem!important}
html if (!entries || entries.length === 0){font-size:0.84rem!important}
html if (!sitesArr.length){font-size:0.84rem!important}
html if (subEl){font-size:0.84rem!important}
html if (!camId){font-size:0.84rem!important}
html if (!users.length){font-size:0.84rem!important}
html if (!rows.length){font-size:0.84rem!important}
html if (!cl.length){font-size:0.84rem!important}
html if (!resp.ok || !resp.data){font-size:0.8rem!important}
html // Sites grid if (!sites.length){font-size:0.82rem!important}
html // Cameras grid if (!cams.length){font-size:0.82rem!important}
html if (fpreview){font-size:0.8rem!important}
html if (!pop){font-size:0.84rem!important}
html if(!walls.length){font-size:0.84rem!important}
html if (!stEl && emailEl && emailEl.parentNode){font-size:0.84rem!important}
html #page-streaming .sh-lh{font-size:0.82rem!important}
html #page-streaming .sh-site{font-size:0.84rem!important}
html #page-streaming .sh-cam small{font-size:0.84rem!important}
html #page-streaming .sh-note{font-size:0.84rem!important}
html #page-streaming .pill{font-size:0.82rem!important}
html #page-streaming .ph .meta{font-size:0.84rem!important}
html #page-streaming .num{font-size:0.84rem!important}
html #page-streaming .step h3 small{font-size:0.84rem!important}
html #page-streaming .tag{font-size:0.8rem!important}
html #page-streaming .method p{font-size:0.84rem!important}
html #page-streaming .method li{font-size:0.84rem!important}
html #page-streaming .elig{font-size:0.84rem!important}
html #page-streaming .bn{font-size:0.84rem!important}
html #page-streaming .fl label,html #page-streaming label.fl{font-size:0.84rem!important}
html #page-streaming .lnk{font-size:0.84rem!important}
html #page-streaming .hint{font-size:0.84rem!important}
html #page-streaming .sw small{font-size:0.84rem!important}
html #page-streaming .pr i{font-size:0.82rem!important}
html #page-streaming details.adv summary{font-size:0.84rem!important}
html #page-streaming details.adv .in{font-size:0.84rem!important}
html #page-streaming .adm{font-size:0.8rem!important}
html #page-streaming .ft{font-size:0.84rem!important}
html #page-streaming .dh small{font-size:0.84rem!important}
html #page-streaming .chev{font-size:0.84rem!important}
html #page-streaming .muted{font-size:0.84rem!important}
html if (zoneCount){font-size:0.82rem!important}
html if (dateStr !== currentDateStr){font-size:0.82rem!important}
html if (snapUrl){font-size:0.82rem!important}
html if (ev.clip || ev.frames){font-size:0.82rem!important}
html // Feedback buttons — admin only,html collapsed into a compact row if (isAdmin){font-size:0.82rem!important}
html // Load more button if (hasMore){font-size:0.84rem!important}
html .cs-tl-title{font-size:0.82rem!important}
html .cs-tl-date{font-size:0.84rem!important}
html .cs-tl-zoom button{font-size:0.82rem!important}
html .cs-tl-chip{font-size:0.8rem!important}
html .cs-tl-count{font-size:0.8rem!important}
html .cs-tl-tip{font-size:0.82rem!important}
html .cs-tl-legend{font-size:0.8rem!important}
html .cs-tl-empty{font-size:0.82rem!important}
/* pills and chips stay on one line */
span[style*="border-radius:99px"],span[style*="border-radius:999px"],span[style*="border-radius:30px"],span[style*="border-radius:10px"][style*="padding:2px"],span[style*="border-radius:6px"][style*="padding:1px"],span[style*="border-radius:6px"][style*="padding:2px"],.fh-pill,.pill,.chip,.badge{white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important}
/* small buttons (they had tiny inline sizes) keep short labels on one line; <small> gets an 11px floor */
button[style*="font-size:0.5"],button[style*="font-size: 0.5"],button[style*="font-size:0.6"],button[style*="font-size: 0.6"],button[style*="font-size:0.7"],button[style*="font-size: 0.7"]{white-space:nowrap!important}
html small{font-size:max(.83em,11px)!important}
/* viewer-stats wider: its summary table no longer fits 960px at the larger text size */
html #page-viewer-stats [style*="max-width:960px"]{max-width:1200px!important}
/* users + usage tables: fit the screen instead of scrolling sideways */
html #users-table td:last-child{white-space:normal!important;max-width:340px;min-width:250px}
html #users-table td select{max-width:150px}
html #users-table td:nth-child(3){max-width:190px}
html #users-table td:last-child button{margin:2px 4px 2px 0!important;white-space:nowrap}
html #users-table td:nth-child(5){white-space:normal!important;max-width:190px}
html #users-table td:nth-child(3){max-width:220px;overflow-wrap:anywhere}
html table.ur{min-width:0!important}
html table.ur th{white-space:normal!important;vertical-align:bottom;line-height:1.25;padding:7px 7px!important}
html table.ur td{padding:6px 7px!important}
html table.ur tr.ur-site td:first-child{padding-left:26px!important}
html table.ur tr.ur-cam td:first-child{padding-left:46px!important}
html table.ur td:first-child{white-space:normal!important;min-width:200px;max-width:290px}
html table.ur th:first-child,html table.ur td:first-child{position:sticky;left:0;z-index:1;background-color:var(--surface-1);box-shadow:1px 0 0 var(--border-1)}
html table.ur tr.ur-client td:first-child,html table.ur tr.ur-total td:first-child{background:var(--surface-2)}
html table.ur tr.ur-site td:first-child{background:linear-gradient(rgba(0,229,255,.04),rgba(0,229,255,.04)),var(--surface-1)}
/* dark theme: faint text to ~5.3:1 */
body:not(.theme-light){--text-faint:#8494ab}
