:root{font-family:Inter,"Noto Sans KR",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#1b302c;background:#f3f6f5;font-synthesis:none;--green:#16785e;--line:#e3eae6;--muted:#74817b}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #87bbaa;outline-offset:2px}[hidden]{display:none!important}h1,h2,p{margin:0}h1{font-size:30px;letter-spacing:-1px;line-height:1.45}h2{font-size:17px;letter-spacing:-.4px}.brand{font-size:22px;font-weight:850;letter-spacing:1px;color:#124c3d;white-space:nowrap}.brand span{font-size:10px;letter-spacing:2px;margin-left:9px;font-weight:650;color:#83958d}main{max-width:1460px;margin:auto;padding:0 44px}header{height:88px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.header-tools{display:flex;align-items:center;gap:12px}.connection{font-size:12px;color:var(--muted);margin-right:12px}.connection.online{color:var(--green)}.connection:before{content:"";display:inline-block;width:7px;height:7px;background:#aab4ae;border-radius:50%;margin-right:7px}.connection.online:before{background:#329571}.quiet{border:1px solid #dce5df;background:white;border-radius:7px;font-size:12px;padding:9px 13px;color:#43594e}.quiet:hover{background:#f5f9f7;border-color:#adc9b8}.primary{border:0;border-radius:8px;background:var(--green);color:white;font-weight:650;padding:14px}.page-title{display:flex;justify-content:space-between;align-items:flex-end;padding:33px 0 27px}.eyebrow{font-size:10px;letter-spacing:2px;color:#719282;font-weight:700;margin-bottom:7px}.page-title p:not(.eyebrow){font-size:13px;color:var(--muted);margin-top:6px}.clock{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.monitor-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 4px 14px #1c403104}.panel-heading{padding:20px 23px;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading p{font-size:12px;margin-top:7px}.muted{color:var(--muted);font-size:12px}.live-panel .panel-heading .muted{display:inline-block;margin-top:5px}.video-stage{position:relative;aspect-ratio:16/9;background:#13231f;display:flex;align-items:center;justify-content:center;overflow:hidden}.video-stage video{width:100%;height:100%;object-fit:contain}#live-placeholder{position:absolute;font-size:13px;color:#9aaea6;padding:20px;text-align:center}.video-status{position:absolute;left:18px;top:16px;background:#071e18b5;color:#d6e8df;padding:6px 10px;border-radius:5px;font-size:11px}.panel-foot{display:flex;align-items:center;gap:7px;padding:16px 22px;font-size:11px;color:#466257}.panel-foot .muted{margin-left:auto;font-size:11px}.live-dot{width:6px;height:6px;background:#32a47c;border-radius:50%}.count{display:inline-block;background:#f0f5f2;color:#557461;font-size:11px;font-weight:600;padding:4px 8px;border-radius:5px;margin-left:5px}.camera-list{max-height:490px;overflow:auto;padding:0 12px 12px}.camera-button{display:block;width:100%;background:white;border:1px solid transparent;text-align:left;border-radius:8px;padding:13px 12px;margin-bottom:4px;color:#30483c}.camera-button.selected{background:#edf6f0;border-color:#d4e8d9}.camera-button:hover{background:#f4f8f5}.camera-name{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600}.camera-meta{margin-top:6px;font-size:10px;color:#829189}.badge{display:inline-block;font-size:10px;border-radius:4px;padding:4px 7px;font-weight:550;white-space:nowrap;background:#edf3ee;color:#50705b}.badge.good{background:#e9f5ed;color:#2c8152}.badge.pending{background:#fff5dc;color:#967329}.badge.failed{background:#fceced;color:#b25e62}.badge.test{background:#eeedfb;color:#7666a5;margin-left:7px}.events-panel{margin-top:24px}.filters{display:flex;gap:12px;padding:0 23px 20px}.filters label{display:flex;align-items:center;gap:9px;font-size:11px;color:#6b7f71}.filters select{font-size:12px;min-width:140px;padding:9px 28px 9px 12px;border:1px solid #dfe7e1;border-radius:6px;background:white;color:#3f5848}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{background:#f8faf8;color:#89958e;font-size:10px;font-weight:600;padding:13px 23px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}td{padding:16px 23px;border-bottom:1px solid #f0f3f0;font-size:12px;white-space:nowrap}td:first-child{font-variant-numeric:tabular-nums;color:#6d7f73}td:last-child{text-align:right}.detail-button{border:0;background:none;color:#3b8062;font-size:11px;padding:4px 0}.empty{padding:42px 24px;text-align:center;font-size:13px;color:#8c9b92}.load-more{text-align:center;padding:14px}.load-more:has(button[hidden]){padding:0}footer{padding:24px 0 30px;font-size:11px;color:#97a59c;text-align:center}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(ellipse at 10% 0,#dcebe1 0,transparent 55%),#f3f6f5}.login-card{background:white;padding:48px;width:100%;max-width:430px;border:1px solid var(--line);border-radius:18px;box-shadow:0 22px 80px #173c2310}.login-card h1{font-size:28px;margin:35px 0 12px}.login-card>p{font-size:13px;color:#819087;margin-bottom:30px}.login-card label{display:block;font-size:12px;margin:18px 0 8px;color:#576e5f}.login-card input{display:block;width:100%;padding:12px;border:1px solid #dce5de;border-radius:7px;font-size:14px;background:#fcfdfc}.login-card button{width:100%;margin-top:24px}.login-card .error{color:#b85959;margin:16px 0 0;font-size:12px;min-height:16px}dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(760px,94vw);max-height:90vh;overflow:auto;color:#243e30}dialog::backdrop{background:#15291eb3;backdrop-filter:blur(3px)}#detail-fields{display:grid;grid-template-columns:1fr 1fr;padding:0 24px 20px;gap:17px;font-size:13px}#detail-fields dt{font-size:11px;color:#8a998f;margin-bottom:6px}#detail-fields dd{margin:0;overflow-wrap:anywhere}#clip-video{width:100%;max-height:440px;background:#0d1a12}.clip-message{padding:28px;color:#87958a;text-align:center;font-size:13px}#toasts{position:fixed;right:25px;bottom:25px;display:grid;gap:10px;z-index:50;max-width:360px}.toast{background:#244d39;color:#e8f5ed;border-radius:8px;padding:15px 20px;font-size:13px;box-shadow:0 10px 30px #102f1a20}.toast.error{background:#86544e}@media(max-width:1000px){main{padding:0 22px}.monitor-grid{grid-template-columns:minmax(0,1fr) 240px}.panel-foot .muted{display:none}td,th{padding-left:16px;padding-right:16px}}@media(max-width:700px){main{padding:0 14px}header{height:72px}.brand{font-size:18px}.brand span{display:none}.header-tools{gap:5px}.header-tools button{padding:7px;font-size:10px}.connection{font-size:10px;margin-right:5px}.page-title{padding:25px 0 20px}.page-title h1{font-size:25px}.clock{display:none}.monitor-grid{grid-template-columns:1fr}.camera-list{display:grid;grid-template-columns:1fr 1fr;max-height:240px}.panel-heading{padding:17px}.filters{padding:0 17px 17px;gap:7px;flex-wrap:wrap}.filters label{display:block;flex:1}.filters select{display:block;min-width:110px;width:100%;margin-top:6px}#detail-fields{grid-template-columns:1fr}.login-card{padding:32px}}

/* Monitoring workspace: camera health and actual playback are distinct. */
:root{background:#f4f6f2;color:#223c33;--green:#17684e;--line:#e0e7e1;--muted:#65796f}main{max-width:1560px;padding:0 36px}header{height:82px}.brand{letter-spacing:1.3px}.brand:before{content:"C";display:inline-grid;place-items:center;width:32px;height:32px;margin-right:11px;border-radius:10px 10px 10px 3px;background:#124c3c;color:#eff5e9;font-size:23px;font-weight:600;letter-spacing:-1px;vertical-align:middle}.brand span{color:#708677}.quiet{line-height:1.3}.quiet:hover:enabled{background:#eef5f0;border-color:#aac5b4}button:disabled{cursor:default}.page-title{padding:28px 0 22px}.page-title h1{font-size:31px}.page-title p:not(.eyebrow){line-height:1.6}.eyebrow{letter-spacing:1.3px}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:23px}.summary-item{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 20px;display:grid;grid-template-columns:1fr auto;gap:5px 12px;align-items:center}.summary-label{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:#51685a}.summary-item strong{grid-column:2;grid-row:1/3;font-size:29px;font-weight:650;line-height:1.3;font-variant-numeric:tabular-nums;letter-spacing:-1px}.summary-note{font-size:11px;color:var(--muted)}.status-dot{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:#97a79c}.status-dot.good{background:#37866a}.status-dot.attention{background:#bd9351}.monitor-grid{grid-template-columns:minmax(0,1fr) 324px;gap:20px;align-items:stretch}.panel{border-radius:11px;box-shadow:0 3px 12px #15351b03}.panel-heading{padding:18px 22px}.panel-heading .section-label{font-size:9px;letter-spacing:1.6px;margin:0 0 4px;font-weight:700;color:#778b7d}.panel-actions{display:flex;gap:7px}.live-panel .panel-heading h2{font-size:17px}.video-stage{background:#101f1a}.video-stage video{display:block}.live-placeholder{inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:17px;background:radial-gradient(ellipse at 50% 100%,#223b2e 0,transparent 80%),#101f1aed}#live-placeholder{padding:55px 26px;color:#b8c8bd}.live-placeholder p{font-size:13px;line-height:1.8;max-width:400px;word-break:keep-all}.placeholder-mark{display:grid;place-items:center;width:52px;height:52px;border:1px solid #52675a;border-radius:16px;color:#8fa99a;font-size:27px}.video-status{background:#14261ee6;color:#d0ddd4;border:1px solid #586b5c66;font-size:10px;font-weight:600;display:flex;align-items:center;gap:7px}.video-status:before{content:"";width:5px;height:5px;background:#93a79b;border-radius:50%}.video-status[data-state="playing"]:before{background:#71d09d;box-shadow:0 0 0 3px #71d09d19}.video-status[data-state="retrying"]:before,.video-status[data-state="unavailable"]:before{background:#efbe75}.video-quality{position:absolute;bottom:13px;right:15px;font-size:10px;color:#d7e3db;background:#101f1a99;border-radius:4px;padding:4px 7px;font-variant-numeric:tabular-nums}.video-quality:empty{display:none}.video-stage:fullscreen{width:100vw;height:100vh;aspect-ratio:auto;background:#080d0a}.video-stage:fullscreen video{object-fit:contain}.panel-foot{min-height:46px;padding:14px 21px}.selected-event{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:13px 21px;border-top:1px solid #eaf0ea;background:#fbfcfa;min-height:52px}.selected-event>.section-label{font-size:10px;color:#778b7d;white-space:nowrap}.selected-event>.muted{font-size:11px;flex:1;min-width:180px;line-height:1.6}.selected-event>.detail-button{white-space:nowrap}.camera-panel{display:flex;flex-direction:column;min-height:0}.camera-panel .panel-heading{padding:18px 18px 13px}.camera-panel .panel-heading>.muted{font-size:10px}.camera-tools{padding:0 14px 9px}.search-field{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:7px;background:#fafcf9;padding:0 11px}.search-field>span{font-size:23px;color:#6d8273;line-height:1}.search-field input{width:100%;min-width:0;border:0;background:transparent;padding:10px 0;font-size:12px;color:#254331}.search-field input::placeholder{color:#829184}.camera-tabs{display:flex;gap:3px;padding:4px;margin:10px 0;background:#f0f4ef;border-radius:7px}.camera-tabs button{flex:1;border:0;border-radius:5px;background:transparent;color:#728274;font-size:11px;padding:7px 3px;white-space:nowrap}.camera-tabs button[aria-pressed="true"]{color:#124c3c;background:#fff;box-shadow:0 1px 4px #15381d0d;font-weight:650}.camera-tools>p{font-size:10px;padding:0 3px}.camera-list{flex:1;min-height:130px;max-height:440px;padding:0 10px 10px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c8d6ca transparent}.camera-button{padding:12px 10px;margin-bottom:3px}.camera-button.selected{background:#edf5ee;border-color:#cadecd;box-shadow:inset 3px 0 var(--green)}.camera-name{gap:8px;font-size:12px}.camera-name>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-meta{font-variant-numeric:tabular-nums;color:#748777}.camera-list-foot{margin-top:auto;padding:12px 16px;border-top:1px solid var(--line);font-size:10px;color:#7a8b7e;background:#fbfcfa}.camera-panel>.empty{padding:30px 15px;font-size:12px}.events-panel .panel-heading{align-items:flex-start;padding-top:22px}.events-panel .panel-heading p:not(.section-label){line-height:1.5}.filters{gap:17px;padding-bottom:19px}.detail-button:hover{text-decoration:underline}.badge.good{background:#e7f2e9;color:#34704e}.badge.pending{background:#fcf2df;color:#8c692b}.badge.failed{background:#fbeae8;color:#a3534b}tr:hover td{background:#fbfdf9}.empty{line-height:1.7}#detail-fields dl{margin:0}#detail-fields dd{line-height:1.6}.toast{overflow-wrap:anywhere;line-height:1.6}#toasts{max-width:min(360px,calc(100vw - 32px))}.login-card .brand{font-size:20px}.login-card .brand span{font-size:9px;margin-left:6px}.login-card h1{margin-top:32px}.login-card>p{line-height:1.7}.login-card{background:#fff;border-color:#dce6db;box-shadow:0 20px 90px #1b402010}.login-wrap{background:radial-gradient(ellipse at 5% 5%,#dce8db 0,transparent 60%),#f3f6ef}
@media(min-width:1500px){.camera-list{max-height:500px}}
@media(max-width:1100px){main{padding:0 22px}.monitor-grid{grid-template-columns:minmax(0,1fr) 285px;gap:16px}.panel-heading{padding:16px}.panel-actions{gap:5px}.panel-actions .quiet{padding:8px;font-size:11px}.panel-foot .muted{display:none}.summary-item{padding:14px 17px}.camera-panel .panel-heading>.muted{display:none}.filters{gap:12px}.filters label{display:block}.filters select{display:block;margin-top:6px}}
@media(max-width:780px){main{padding:0 16px}header{height:auto;min-height:76px;gap:10px;flex-wrap:wrap;padding:15px 0}.brand{font-size:18px}.brand span{display:none}.brand:before{width:29px;height:29px;font-size:21px}.header-tools{gap:6px}.header-tools button{font-size:11px;padding:8px}.connection{font-size:10px;margin-right:2px}.page-title{padding:23px 0 20px}.page-title h1{font-size:27px}.clock{display:none}.summary-grid{gap:8px;margin-bottom:18px}.summary-item{padding:12px;grid-template-columns:1fr;gap:6px}.summary-item strong{grid-column:1;grid-row:2;font-size:26px}.summary-label{font-size:11px;gap:5px}.summary-note{display:none}.monitor-grid{grid-template-columns:1fr;gap:18px}.camera-list{max-height:270px;min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:3px}.camera-panel .panel-heading>.muted{display:block}.camera-tools{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:8px 12px}.camera-tabs{margin:0}.camera-tools>p{grid-column:1/-1}.camera-list-foot{display:none}.selected-event{padding:12px 16px}.events-panel{margin-top:18px}.events-panel .panel-heading{gap:12px}.events-panel .panel-heading>.quiet{font-size:10px;padding:8px}.events-panel .panel-heading p:not(.section-label){font-size:11px}.filters{padding:0 16px 16px;gap:9px;flex-wrap:wrap}.filters label{flex:1;min-width:100px}.filters select{width:100%;min-width:0;max-width:none;padding-left:8px;font-size:11px}.video-stage{min-height:190px}.live-placeholder p{font-size:12px}.placeholder-mark{width:40px;height:40px;border-radius:12px;font-size:22px}.live-placeholder{gap:12px}.panel-foot{padding:12px 16px}#toasts{right:16px;bottom:16px}}
@media(max-width:440px){header{justify-content:center}.header-tools{width:100%;justify-content:space-between}.header-tools .connection{margin-right:auto}.camera-list{grid-template-columns:1fr}.camera-tools{grid-template-columns:1fr}.camera-tabs{margin-bottom:2px}.summary-item{padding:11px 10px}.summary-label{font-size:10px}.summary-item strong{font-size:24px}.panel-heading{padding:14px}.live-panel .panel-heading h2{font-size:15px}.panel-actions .quiet{font-size:10px;padding:7px}.selected-event>.muted{min-width:160px;font-size:10px}.login-card{padding:30px}.live-placeholder p{font-size:11px}.placeholder-mark{display:none}}

/* Camera-first home; only the selected camera opens a live connection. */
.workspace-nav{display:flex;gap:23px;border-bottom:1px solid var(--line);padding:0 2px}.nav-button{border:0;border-bottom:2px solid transparent;background:transparent;font-size:13px;padding:16px 3px 13px;color:#718474}.nav-button.active{color:#185d43;border-color:#257457;font-weight:650}.camera-home .camera-panel{display:block}.camera-home .camera-panel>.panel-heading{padding:21px 23px 16px}.camera-home .camera-tools{display:grid;grid-template-columns:minmax(220px,350px) auto 1fr;gap:18px;align-items:center;padding:0 23px 20px}.camera-home .camera-tabs{margin:0;min-width:245px}.camera-home .camera-tools>p{text-align:right;font-size:11px}.camera-home .camera-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;max-height:none;min-height:0;padding:0 23px 23px;overflow:visible}.camera-home .camera-button{border:1px solid var(--line);border-radius:9px;margin:0;padding:17px;background:#fff;transition:border-color .12s,background .12s}.camera-home .camera-button:hover{border-color:#9cbda6;background:#f7faf4}.camera-home .camera-button.selected{background:#edf5ee;border-color:#a9c6ae;box-shadow:none}.camera-home .camera-name{font-size:13px;flex-wrap:wrap;gap:10px}.camera-home .camera-meta{margin-top:15px;font-size:10px}.camera-symbol{display:flex;align-items:center;justify-content:space-between;padding-bottom:20px;color:#7f9a85}.camera-symbol>span:first-child{display:grid;place-items:center;width:35px;height:29px;border-radius:7px;background:#edf3e9;color:#5f8166;font-size:20px}.camera-symbol>span:last-child{font-size:10px;color:#3b7a56}.camera-home .camera-list-foot{display:none}.camera-home .camera-panel>.empty{padding:60px 20px}.events-panel{margin-top:0}#live-dialog{width:min(1120px,95vw);max-height:95vh;background:#fff}#live-dialog>.live-panel{border:0;border-radius:0}#live-dialog .video-stage{max-height:70vh}#live-dialog .panel-heading{padding:16px 20px}.admin-workspace .empty{padding:35px}
@media(max-width:1200px){.camera-home .camera-list{grid-template-columns:repeat(3,minmax(0,1fr))}.camera-home .camera-tools{grid-template-columns:minmax(200px,1fr) auto}.camera-home .camera-tools>p{grid-column:1/-1;text-align:left}.camera-home .camera-list{gap:12px}}
@media(max-width:780px){.workspace-nav{gap:20px}.nav-button{font-size:12px;padding:13px 2px 11px}.camera-home .camera-panel>.panel-heading{padding:18px 17px 14px}.camera-home .camera-tools{padding:0 17px 16px;grid-template-columns:1fr 1fr;gap:10px}.camera-home .camera-tabs{min-width:0}.camera-home .camera-list{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 17px 17px;gap:10px}.camera-home .camera-button{padding:14px}.camera-home .camera-name{font-size:12px}.camera-home .camera-meta{font-size:9px}.camera-symbol{padding-bottom:16px}.camera-home .camera-tools>p{font-size:10px}#live-dialog .panel-heading{padding:13px}#live-dialog .panel-foot{padding:12px 14px}}
@media(max-width:440px){.camera-home .camera-tools{grid-template-columns:1fr}.camera-home .camera-list{grid-template-columns:1fr}.camera-home .camera-name{font-size:13px}.camera-home .camera-meta{font-size:10px}.camera-home .camera-button{padding:16px}.camera-symbol{padding-bottom:12px}#live-dialog .panel-actions{gap:4px}#live-dialog .panel-actions .quiet{padding:7px 6px;font-size:9px}#live-dialog .live-panel .panel-heading h2{font-size:13px}}

/* Administration uses the same workspace and authenticated API. */
.admin-toolbar{display:flex;justify-content:space-between;gap:15px;margin:0 0 17px}.admin-tabs{display:flex;gap:7px}.admin-tabs button[aria-pressed="true"]{background:#e5f0e5;border-color:#afc9b3;color:#1b6246;font-weight:650}.admin-workspace .primary{font-size:12px;padding:10px 15px;white-space:nowrap}.admin-feedback{padding:13px 16px;background:#e8f2e7;border:1px solid #cdddcb;border-radius:8px;margin-bottom:16px;font-size:12px;line-height:1.7;color:#326044}.admin-error{padding:13px 18px;background:#fff2ed;color:#a24f41;font-size:12px;line-height:1.7;margin:0 20px 17px;border-radius:7px}.admin-workspace td{white-space:normal;min-width:85px;line-height:1.7}.admin-workspace td:first-child{font-weight:600;color:#2d4d35}.admin-row-actions{display:flex;justify-content:flex-end;gap:8px;white-space:nowrap}.admin-row-actions .quiet{padding:6px 10px;font-size:11px}.admin-row-actions .delete-action{color:#9a5148;border-color:#ead9d2}.apply-status{display:flex;gap:15px;align-items:baseline;padding:18px 2px;font-size:12px;color:#6c7e6d;line-height:1.7}.apply-status>.section-label{font-size:10px;white-space:nowrap;color:#829180}.apply-status [data-state="failed"]{color:#a75743}.apply-status [data-state="applied"]{color:#357148}.admin-form-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:5px 24px 19px}.admin-field{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#58715e}.admin-field.full-width{grid-column:1/-1}.admin-field input:not([type="checkbox"]),.admin-field select,.admin-field textarea{width:100%;min-width:0;padding:11px;border:1px solid #d9e4d7;border-radius:7px;background:#fcfdfb;color:#244a30;font-size:13px;line-height:1.4}.admin-field textarea{min-height:90px;resize:vertical}.admin-field>small{color:#7b8e7d;font-size:10px;line-height:1.6}.admin-check{display:flex;align-items:center;gap:9px;font-size:12px;color:#49664e;line-height:1.7}.admin-check input{accent-color:#237350;width:16px;height:16px}.group-checks{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px;border:1px solid #e0e8dc;border-radius:7px;max-height:200px;overflow:auto}.form-note{padding:0 24px 18px;font-size:11px;color:#728570;line-height:1.8}.form-actions{display:flex;justify-content:flex-end;gap:9px;padding:17px 24px;background:#f7faf5;border-top:1px solid #e3ebdf}.form-actions .primary,.form-actions .danger{font-size:12px;padding:10px 20px}.danger{background:#a35c4d;color:#fff;border:0;border-radius:7px;cursor:pointer}.delete-message{padding:0 24px 23px;font-size:13px;line-height:1.9;color:#536c55;overflow-wrap:anywhere}#admin-dialog{width:min(700px,94vw)}#admin-delete-dialog{width:min(440px,94vw)}.camera-group{font-size:10px;color:#7c8f7d;margin-top:8px;overflow-wrap:anywhere}.camera-home .camera-button:disabled{opacity:.65;cursor:not-allowed}.camera-home .camera-button:disabled:hover{border-color:var(--line);background:#fff}
@media(max-width:780px){.admin-toolbar{gap:8px}.admin-tabs{gap:4px}.admin-tabs .quiet{font-size:10px;padding:8px 9px}.admin-toolbar>.quiet{font-size:10px}.admin-workspace .panel-heading{gap:10px}.admin-workspace .panel-heading h2{font-size:16px}.admin-workspace .panel-heading p{font-size:11px}.admin-workspace table{min-width:640px}.apply-status{display:block}.apply-status>.section-label{display:block;margin-bottom:5px}.admin-form-fields{padding:3px 18px 17px;gap:16px}.form-note{padding:0 18px 17px}.form-actions{padding:15px 18px}.admin-error{margin:0 18px 15px}.admin-feedback{font-size:11px}}
@media(max-width:440px){.admin-form-fields{grid-template-columns:1fr}.admin-field.full-width{grid-column:auto}.group-checks{grid-template-columns:1fr}}

/* Larger camera catalogs keep filtering within reach and reuse their cards. */
.camera-home .camera-panel{overflow:clip}.camera-control-bar{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #edf2e9;margin-bottom:20px}.camera-group-filters{display:flex;gap:8px;padding:0 23px 15px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}.camera-group-filter{display:inline-flex;align-items:center;gap:9px;flex:none;border:1px solid #e0e7dc;border-radius:7px;padding:8px 11px;background:#fff;color:#6c806c;font-size:11px;white-space:nowrap}.camera-group-filter[aria-pressed="true"]{background:#eaf3e6;border-color:#b6cfb2;color:#25613d;font-weight:650}.group-filter-count{font-size:10px;font-variant-numeric:tabular-nums;border-radius:4px;padding:1px 5px;background:#f1f5ee;color:#647f5e}.camera-group-filter[aria-pressed="true"] .group-filter-count{background:#d8e9d2;color:#3d6d36}.camera-control-bar .camera-tools{padding-bottom:15px}.camera-group-filters:not([hidden]){padding-top:2px}
@media(max-width:780px){.camera-group-filters{padding-left:17px;padding-right:17px;padding-bottom:12px;gap:6px}.camera-group-filter{font-size:10px;padding:8px 9px;gap:6px}.camera-control-bar{margin-bottom:16px}.camera-control-bar .camera-tools{padding-bottom:13px}.camera-home .camera-list{grid-template-columns:repeat(2,minmax(0,1fr))}.camera-home .camera-button{padding:12px}.camera-home .camera-name{font-size:12px;gap:7px}.camera-home .camera-name>span:first-child{flex:1 1 100%;max-width:100%}.camera-home .camera-meta,.camera-home .camera-group{font-size:9px;line-height:1.5}.camera-symbol>span:last-child{font-size:9px}.camera-symbol{padding-bottom:12px}.camera-home .camera-meta{margin-top:10px}}
@media(max-width:359px){.camera-home .camera-list{grid-template-columns:1fr}}

/* Farms separate shared access from camera source type. */
.camera-type-label{display:flex;align-items:center;gap:8px;color:#6c806c;font-size:11px;white-space:nowrap}.camera-type-label select{padding:9px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--ink);min-width:110px}.camera-home .camera-tools{grid-template-columns:minmax(180px,1fr) auto auto}.camera-home .camera-tools>p{grid-column:1/-1;text-align:left}.farm-back{margin-bottom:13px;padding:6px 0;border:0;background:none}.farm-detail-tabs{display:flex;gap:8px;padding:0 23px 17px;border-bottom:1px solid var(--line)}.farm-detail-tabs [aria-pressed="true"]{background:#e5f0e5;border-color:#afc9b3;color:#1b6246}.farm-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:21px 23px 15px}.farm-toolbar strong{font-size:15px}.farm-toolbar p{margin:8px 0 0;font-size:11px;line-height:1.7}.farm-selection-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 23px;background:#f8faf5;border-top:1px solid #edf2e9;border-bottom:1px solid #edf2e9;font-size:11px;color:#6d806d}.farm-selection-bar .quiet{padding:7px 10px;font-size:11px}.admin-workspace .admin-row-actions{flex-wrap:wrap}.admin-workspace input[type="checkbox"],.assignment-list input[type="checkbox"]{accent-color:#237350;width:16px;height:16px}.admin-workspace button:disabled,#assignment-dialog button:disabled{opacity:.5;cursor:not-allowed}#assignment-dialog{width:min(780px,95vw)}#assignment-confirm-dialog{width:min(550px,94vw)}.assignment-tools{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:12px;padding:0 24px 18px}.assignment-tools label{display:flex;flex-direction:column;gap:7px;color:#58715e;font-size:11px}.assignment-tools input,.assignment-tools select{width:100%;min-width:0;padding:10px;border:1px solid #d9e4d7;border-radius:7px;background:#fcfdfb;color:#244a30;font-size:12px}.assignment-selection{display:flex;justify-content:space-between;gap:10px;padding:12px 24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8faf5;font-size:11px;color:#6d806d}.assignment-list{max-height:min(45vh,420px);overflow:auto;padding:0 24px}.assignment-row{display:flex;gap:13px;align-items:center;padding:13px 2px;border-bottom:1px solid #edf2e9;cursor:pointer}.assignment-row-info{display:flex;flex-direction:column;gap:6px;min-width:0;overflow-wrap:anywhere}.assignment-row-info strong{font-size:12px;font-weight:550}.assignment-row-info small{font-size:10px;color:#7b8e7d}.assignment-row input{flex:none}#assignment-confirm-message{white-space:pre-line}
@media(max-width:780px){.camera-home .camera-tools{grid-template-columns:1fr auto}.camera-home .camera-tabs{grid-column:1/-1}.farm-toolbar{align-items:flex-start;flex-direction:column;padding:17px}.farm-toolbar .panel-actions{width:100%;flex-wrap:wrap}.farm-detail-tabs{padding-left:17px;padding-right:17px}.farm-selection-bar{padding:12px 17px;gap:9px}.admin-workspace #farm-detail table{min-width:630px}.assignment-tools{padding:0 18px 16px;grid-template-columns:1fr 1fr}.assignment-tools label:nth-child(2){grid-column:1/-1;grid-row:2}.assignment-selection{padding:12px 18px;font-size:10px}.assignment-list{padding:0 18px}.admin-workspace .admin-toolbar{flex-wrap:wrap}.admin-workspace .admin-tabs{flex-wrap:wrap}.admin-workspace .panel-heading>.panel-actions{flex-wrap:wrap;justify-content:flex-end}}

/* Missing box history does not prevent a valid event video from playing. */
.clip-overlay-summary{display:block;margin-top:6px;color:#8c713a;font-size:10px;line-height:1.5}.clip-overlay-note{padding:17px 24px 21px;background:#fcfbf6;border-top:1px solid #eee9d8}.badge.overlay{background:#f7efd9;color:#80662f}.clip-overlay-note p{margin-top:9px;color:#758074;font-size:12px;line-height:1.8;word-break:keep-all}
@media(max-width:780px){.clip-overlay-note{padding:15px 18px 18px}}

/* NVR-style desktop viewing: the visible page owns its automatic camera tiles. */
.multiview-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.multiview-workspace{padding-bottom:4px}
.multiview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;min-height:36px}
.multiview-toolbar-start,.multiview-toolbar-actions{display:flex;align-items:center;gap:12px;min-width:0}
.multiview-toolbar-actions{gap:8px;flex:none}
.multiview-farm-label{display:flex;align-items:center;gap:8px;min-width:0;color:#768b79;font-size:11px}
.multiview-farm-label>span{flex:none}
.multiview-farm-label select{width:170px;max-width:20vw;min-width:110px;padding:9px 28px 9px 10px;border:1px solid #d9e4d7;border-radius:7px;background:#fff;color:#315d3c;font-size:12px;text-overflow:ellipsis}
.multiview-layout-options{display:flex;gap:3px;padding:3px;border:1px solid #dce6d8;border-radius:8px;background:#eaf0e6}
.multiview-layout-button{display:flex;align-items:center;justify-content:center;gap:7px;padding:7px 10px;border:1px solid transparent;border-radius:5px;background:transparent;color:#7b8e7c;font-size:11px;white-space:nowrap}
.multiview-layout-button:hover{background:#f5f8f1;color:#3c6848}
.multiview-layout-button[aria-pressed="true"]{background:#fff;border-color:#c8d9c3;color:#285d3b;box-shadow:0 1px 3px #24432b0a;font-weight:650}
.multiview-layout-icon{display:grid;grid-template-columns:repeat(var(--layout-columns),1fr);grid-template-rows:repeat(var(--layout-columns),1fr);gap:2px;width:15px;height:15px;flex:none}
.multiview-layout-icon[data-columns="1"]{--layout-columns:1}
.multiview-layout-icon[data-columns="2"]{--layout-columns:2}
.multiview-layout-icon[data-columns="3"]{--layout-columns:3}
.multiview-layout-icon[data-columns="4"]{--layout-columns:4}
.multiview-layout-icon i{border:1px solid currentColor;border-radius:1px;opacity:.75}
.multiview-layout-button[aria-pressed="true"] .multiview-layout-icon i{background:#d2e4ce;opacity:1}
.multiview-summary{font-size:11px;color:#6f8874;font-variant-numeric:tabular-nums;white-space:nowrap}
.multiview-toolbar .quiet{font-size:11px;padding:9px 11px;white-space:nowrap}
.multiview-pager{display:flex;align-items:center;gap:3px;padding:3px;border:1px solid #dce6d8;border-radius:7px;background:#fff}
.multiview-page{display:inline-block;min-width:49px;text-align:center;color:#54745c;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.multiview-pager .multiview-page-button,.multiview-fullscreen-actions .multiview-page-button{border:0;padding:1px 9px;font-size:23px;line-height:25px;background:transparent;color:#4b7355}
.multiview-grid{--grid-columns:2;position:relative;display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));grid-template-rows:repeat(var(--grid-columns),minmax(0,1fr));gap:10px;align-items:stretch;height:calc(100dvh - 320px);min-height:280px}
.multiview-grid[data-layout="1"]{--grid-columns:1}
.multiview-grid[data-layout="4"]{--grid-columns:2}
.multiview-grid[data-layout="9"]{--grid-columns:3}
.multiview-grid[data-layout="16"]{--grid-columns:4}
.multiview-tile{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;border:1px solid #d8e2d5;border-radius:9px;overflow:hidden;background:#fff;box-shadow:0 2px 10px #28412d04}
.multiview-tile-heading{display:flex;flex:none;align-items:center;gap:9px;min-height:43px;padding:7px 11px;border-bottom:1px solid #e2e9df;background:#fcfdfb}
.multiview-slot-number{display:grid;place-items:center;flex:none;width:27px;height:27px;border-radius:6px;background:#eaf2e5;color:#749071;font-size:10px;font-weight:650;font-variant-numeric:tabular-nums}
.multiview-camera-info{display:flex;align-items:baseline;gap:10px;flex:1;min-width:0}
.multiview-camera-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550;color:#36583b;font-size:12px;min-width:0}
.multiview-camera-meta{color:#8a9d87;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.multiview-stage{position:relative;display:flex;flex:1;min-height:0;align-items:center;justify-content:center;overflow:hidden;background:#13231d}
.multiview-stage video{display:block;width:100%;height:100%;object-fit:contain}
.multiview-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 15px 10px;color:#9eafa3;text-align:center;background:radial-gradient(ellipse at 50% 40%,#263b2c 0,transparent 75%)}
.multiview-placeholder p{max-width:380px;font-size:12px;line-height:1.6;word-break:keep-all}
.multiview-placeholder-icon{width:30px;height:30px;flex:none;color:#627e69}
.multiview-placeholder .quiet{font-size:11px;color:#dceadf;background:#354e3b;border-color:#5c7460;padding:7px 17px}
.multiview-placeholder .quiet:hover{background:#46654d;border-color:#829c86}
.multiview-status{position:absolute;top:9px;left:10px;max-width:calc(100% - 20px);background:#13281fd9;border:1px solid #50655480;border-radius:4px;padding:4px 6px;font-size:9px;line-height:1.3;color:#c0d1c4;backdrop-filter:blur(8px)}
.multiview-status::before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;margin-right:5px;background:#879c8c;vertical-align:1px}
.multiview-status[data-state="playing"]{color:#ddf3df;border-color:#709f7980}
.multiview-status[data-state="playing"]::before{background:#97d7a4}
.multiview-status[data-state="retrying"]::before,.multiview-status[data-state="unavailable"]::before{background:#e9bf7f}
.multiview-status[data-state="unavailable"]{color:#efd5b0}
.multiview-tile-foot{display:flex;flex:none;align-items:center;justify-content:space-between;gap:8px;min-height:35px;padding:4px 9px;border-top:1px solid #e4ebe0;background:#fcfdfa}
.multiview-quality{font-size:9px;color:#819381;font-variant-numeric:tabular-nums;white-space:nowrap}
.multiview-tile-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-left:auto}
.multiview-tile-actions .quiet{font-size:10px;padding:5px 8px;border-color:#e0e7db;border-radius:5px;white-space:nowrap}
.multiview-tile-actions .quiet[aria-pressed="true"]{background:#e9f2e5;border-color:#b9ceb3;color:#29633d}
.multiview-workspace button:disabled{cursor:not-allowed;opacity:.4}
.multiview-workspace :is(button,select):focus-visible{outline:3px solid #77ac87;outline-offset:2px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]){gap:7px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-tile-heading{min-height:31px;padding:5px 8px;gap:7px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-slot-number{width:20px;height:20px;font-size:9px;border-radius:4px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-camera-info{gap:6px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-camera-info strong{font-size:11px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-camera-meta{display:none}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-tile-foot{position:absolute;bottom:0;left:0;right:0;min-height:29px;padding:3px 7px;background:#11261de8;border:0;opacity:0;transition:opacity .12s}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-quality{color:#a8c2ad}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-tile-actions .quiet{color:#d0e1d3;background:#284333;border-color:#4b6652;padding:4px 6px;font-size:9px}
.multiview-grid:is([data-layout="9"],[data-layout="16"]) .multiview-tile:is(:hover,:focus-within) .multiview-tile-foot{opacity:1}
.multiview-grid[data-layout="16"] .multiview-placeholder{gap:5px;padding:24px 9px 6px}
.multiview-grid[data-layout="16"] .multiview-placeholder-icon{width:22px;height:22px}
.multiview-grid[data-layout="16"] .multiview-placeholder p{font-size:10px;line-height:1.4}
.multiview-grid[data-layout="16"] .multiview-status{top:5px;left:6px;font-size:8px;padding:3px 5px}
.multiview-grid.has-focus{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.multiview-grid.has-focus .multiview-tile:not(.is-focused){display:none}
.multiview-grid.has-focus .multiview-tile-heading{min-height:43px;padding:7px 11px}
.multiview-grid.has-focus .multiview-camera-info strong{font-size:13px}
.multiview-grid.has-focus .multiview-camera-meta{display:block}
.multiview-grid.has-focus .multiview-tile-foot{position:static;opacity:1;min-height:35px;background:#fcfdfa;border-top:1px solid #e4ebe0}
.multiview-grid.has-focus .multiview-tile-actions .quiet{color:#58745e;background:#fff;border-color:#e0e7db;font-size:10px;padding:5px 8px}
.multiview-grid.has-focus .multiview-quality{color:#819381}
.multiview-fullscreen-toolbar{display:none}
.multiview-grid:fullscreen{width:100vw;height:100dvh;max-width:none;min-height:0;padding:54px 12px 12px;background:#eaf0e5;gap:10px;align-content:stretch;overflow:hidden}
.multiview-grid:fullscreen>.multiview-fullscreen-toolbar{display:flex;position:absolute;inset:0 0 auto;align-items:center;justify-content:space-between;height:44px;padding:6px 14px;background:#f8faf5;border-bottom:1px solid #dae4d4;z-index:5}
.multiview-fullscreen-brand{font-weight:700;letter-spacing:2px;font-size:13px;color:#235b43}
.multiview-fullscreen-brand span{margin-left:8px;font-size:9px;color:#7d977f;font-weight:550;letter-spacing:1px}
.multiview-fullscreen-actions{display:flex;align-items:center;gap:7px}
.multiview-fullscreen-actions .quiet{font-size:11px;padding:7px 10px;background:#fff;color:#41694b;border-color:#d5e1cf}
.multiview-fullscreen-actions .multiview-page-button{padding:0 8px;font-size:23px;line-height:25px}
.multiview-grid:fullscreen .multiview-stage{min-height:0}
.multiview-grid>.multiview-tile[hidden],.multiview-grid:fullscreen>.multiview-tile[hidden]{display:none!important}
@media(min-width:1024px) and (max-width:1350px){.multiview-toolbar{gap:10px}.multiview-toolbar-start{gap:9px}.multiview-toolbar-actions{gap:6px}.multiview-summary{font-size:10px}.multiview-layout-button{padding:7px 7px;gap:5px}.multiview-farm-label select{width:145px}.multiview-farm-label>span{display:none}.multiview-toolbar .quiet{font-size:10px;padding:9px}.multiview-pager .multiview-page-button{font-size:21px;padding:0 7px}.multiview-grid{gap:9px}}
@media(max-width:1023px),(pointer:coarse){#nav-multiview,#multiview-view{display:none!important}}
@media(min-width:1024px) and (pointer:fine){
  main:has(#multiview-view:not([hidden])) .page-title{padding:17px 0 14px;align-items:center}
  main:has(#multiview-view:not([hidden])) .page-title .eyebrow{display:none}
  main:has(#multiview-view:not([hidden])) .page-title h1{font-size:25px;line-height:1.3}
  main:has(#multiview-view:not([hidden])) .page-title p:not(.eyebrow){font-size:12px;margin-top:4px}
  main:has(#multiview-view:not([hidden]))>footer{padding:10px 0 12px}
}

