:root{--sbg-50:#f9fafa;--sbg-100:#f0f2f3;--sbg-200:#e5e8eb;--sbg-300:#cfd5db;--sbg-400:#a3aeba;--sbg-500:#6f8193;--sbg-600:#3f576f;--sbg-900:#001a35;--blue-600:#2f52fe;--blue-nav-active:#1237ac;--primary-from:#2e61ff;--primary-to:#4169eb;--focus:#3875f0;--success-200:#a6f4c5;--success-50:#ecfdf3;--success-600:#039855;--success-700:#067647;--warning-300:#fec84b;--warning-50:#fffaeb;--warning-700:#b54708;--info-200:#cadbfe;--info-50:#f2f8fe;--info-600:#205ed9;--error-200:#fecdca;--error-50:#fef3f2;--error-700:#b42318;--page:#f0f2f3;--surface:#fff;--panel:#f7f8f6;--pane:#fcfcfa;--hairline:#1a191f14;--input-line:#1a191f1a;--field-line:#7b8896;--text-muted:#566a7e;--card-line:#cfd8e3;--card-foot:#f4f6f8;--line:#e0e0e0;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif}
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--page);color:var(--sbg-900);font-family:var(--font);margin:0;font-size:.875rem;line-height:1.25rem}h1,h2,p,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit;text-decoration:none}code{font-family:inherit;font-weight:600}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:100;color:var(--sbg-900);background:#fff;border-radius:.5rem;padding:.5rem .875rem;font-weight:600;position:fixed;top:.5rem;left:.5rem;translate:0 -200%;box-shadow:0 4px 12px #0003}.skip-link:focus{translate:0}[tabindex="-1"]:focus{outline:none}
.topbar{z-index:50;background:var(--blue-600);color:#fff;justify-content:space-between;align-items:center;gap:1rem;height:3.5rem;padding:0 1rem;display:flex;position:sticky;top:0}.topbar :focus-visible{outline-color:#fff}.topbar-side{align-items:center;gap:.75rem;min-width:0;display:flex}.topbar-side:first-child{flex:none}.topbar-logo{border-radius:.375rem;flex:none;display:flex}.topbar-divider{background:#ffffff1a;flex:none;width:2px;height:.875rem}.nav-pill{border-radius:999px;align-items:center;gap:.375rem;padding:.375rem 1rem;font-size:1rem;font-weight:600;line-height:1.5rem;display:inline-flex}.nav-pill:hover{background:#00000026}.nav-pill[aria-current]{background:var(--blue-nav-active)}.topbar-user{align-items:center;gap:.5rem;min-width:0;display:flex}.topbar-avatar{background:#0003;border-radius:50%;flex:none;place-items:center;width:2rem;height:2rem;font-size:.75rem;font-weight:700;display:grid}.topbar-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.topbar-button{color:#fff;font:inherit;white-space:nowrap;cursor:pointer;background:#00000026;border:0;border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-weight:600;display:inline-flex}.topbar-button:hover{background:#0000004d}@media (max-width:48rem){.topbar-name,.topbar-divider,.topbar-button-label{display:none}.topbar-button{padding:.5rem}}
.page{max-width:1400px;margin:0 auto;padding:1.25rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;min-height:2.5rem;margin-bottom:1rem;display:flex}.page-actions{flex-wrap:wrap;gap:.5rem;display:flex}.page-head h1{letter-spacing:-.025em;font-size:1.5rem;font-weight:600;line-height:2rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:1.25rem;display:flex}.search{flex:18rem;max-width:26rem;position:relative}.search svg{color:var(--sbg-500);pointer-events:none;position:absolute;top:50%;left:.75rem;translate:0 -50%}.search input{border:1px solid var(--field-line);width:100%;height:2.75rem;color:var(--sbg-900);font:inherit;background:#fff;border-radius:.75rem;padding:0 .75rem 0 2.5rem}.search input::placeholder{color:var(--text-muted);opacity:1;font-weight:500}.toolbar-count{color:var(--text-muted);font-variant-numeric:tabular-nums}.empty{text-align:center;background:#fff;border-radius:.5rem;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;min-height:20rem;padding:3rem 1.5rem;display:flex}.empty h1,.empty h2{font-size:1rem;font-weight:600;line-height:1.5rem}.empty p{max-width:34rem;color:var(--text-muted)}.empty .button{margin-top:.5rem}.main-pane .empty{background:0 0}
.button{height:2.5rem;color:var(--sbg-900);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.375rem;padding:0 1rem;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.button:disabled{opacity:.5;pointer-events:none}.button-primary{background:linear-gradient(168.5deg, var(--primary-from) -28.69%, var(--primary-to) 157.71%), linear-gradient(156.12deg, var(--primary-from) 14.93%, var(--primary-to) 85.07%);color:#fff;box-shadow:inset 0 -2px #ffffff29}.button-primary:hover{filter:brightness(.94)}.button-outline{border-color:var(--sbg-300);background:#fff;font-weight:600}.button-outline:hover{background:var(--sbg-100)}.button-danger{color:#fff;background:#d92d20}.button-danger:hover{background:var(--error-700)}.button-ghost:hover{background:var(--sbg-200)}.button-small{height:2.25rem;padding:0 .9375rem}@media (prefers-reduced-motion:reduce){.button{transition:none}}
.badge{border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:.375rem;width:fit-content;padding:.125rem .625rem;font-size:.75rem;font-weight:700;line-height:1rem;display:inline-flex}.badge[data-tone=success]{border-color:var(--success-200);background:var(--success-50);color:var(--success-700)}.badge[data-tone=warning]{border-color:var(--warning-300);background:var(--warning-50);color:var(--warning-700)}.badge[data-tone=info]{border-color:var(--info-200);background:var(--info-50);color:var(--info-600)}.badge[data-tone=error]{border-color:var(--error-200);background:var(--error-50);color:var(--error-700)}.badge-dot{background:currentColor;border-radius:50%;width:.375rem;height:.375rem}
.facility-grid{grid-template-columns:minmax(0,1fr);gap:1.5rem;display:grid}@media (min-width:48rem){.facility-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.facility-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.facility-card{border:1px solid var(--card-line);background:#fff;border-radius:1rem;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.facility-card:hover{border-color:var(--sbg-400);box-shadow:0 1px 2px #0000000d}.facility-card-link{border-radius:1rem 1rem 0 0;flex-direction:column;flex:1;gap:.5rem;min-height:6rem;padding:1rem 1.25rem;display:flex}.facility-card-link:focus-visible{outline-offset:-2px}.facility-card-name{overflow-wrap:anywhere;font-size:1rem;font-weight:600;line-height:1.5rem}.facility-card-hit{color:var(--sbg-600);overflow-wrap:anywhere}.facility-card-foot{background:var(--card-foot);color:#475569;justify-content:space-between;align-items:center;gap:.75rem;min-height:3.25rem;padding:.5rem .75rem .5rem 1.25rem;display:flex}.facility-card-count{align-items:center;gap:.5rem;display:inline-flex}@media (prefers-reduced-motion:reduce){.facility-card{transition:none}}
.split{align-items:stretch;gap:1rem;height:calc(100dvh - 3.5rem);display:flex}.side-panel{border:1px solid var(--hairline);background:var(--panel);border-radius:.75rem;flex-direction:column;flex:0 0 20rem;min-width:0;min-height:0;padding:.75rem 0 .75rem .75rem;display:flex}.side-back{color:var(--sbg-600);border-radius:.5rem;align-self:flex-start;align-items:center;gap:.25rem;padding:.25rem .5rem .25rem .25rem;font-weight:500;display:inline-flex}.side-back:hover{color:var(--sbg-900);background:#fffc}.side-head{justify-items:start;gap:.25rem;padding:.75rem 1.25rem 1rem .5rem;display:grid}.side-title{overflow-wrap:anywhere;font-size:1rem;font-weight:600;line-height:1.5rem}.side-meta{color:var(--text-muted)}.side-head .button{margin-top:.5rem}.side-note{color:var(--sbg-600);padding:0 1.25rem .75rem .5rem}.side-note[data-tone=error]{color:var(--error-700)}.camera-nav{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:transparent transparent;flex:1;min-height:0;padding-right:.25rem;overflow-y:auto}.camera-nav:hover,.camera-nav:focus-within{scrollbar-color:var(--sbg-300) transparent}.camera-nav .side-note{padding-right:.5rem}.camera-list{gap:.125rem;display:grid}.camera-item{color:#5b6470;border-radius:.5rem;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.camera-item:hover{background:#fffc}.camera-item[aria-current=page]{color:#1a191f;background:#fff;font-weight:500;box-shadow:0 1px 2px #0000000d}.camera-item-name{overflow-wrap:anywhere;min-width:0}.camera-chip{border:1px solid var(--line);min-width:2.25rem;color:var(--sbg-600);font-variant-numeric:tabular-nums;text-align:center;background:#fff;border-radius:999px;flex:none;padding:.0625rem .375rem;font-size:.75rem;font-weight:700;line-height:1rem}.camera-chip[data-state=online]{border-color:var(--success-200);background:var(--success-50);color:var(--success-700)}.camera-chip[data-state=offline]{border-color:var(--error-200);background:var(--error-50);color:var(--error-700)}.camera-tag{background:var(--sbg-200);color:var(--sbg-600);border-radius:.25rem;flex:none;padding:0 .375rem;font-size:.6875rem;font-weight:600;line-height:1rem}.camera-list li{position:relative}.camera-nav[data-manage] .camera-item{padding-right:4.25rem}.camera-list li:has(.row-mark) .camera-item{padding-right:2.25rem}.row-mark{color:var(--blue-600);pointer-events:none;display:grid;position:absolute;top:50%;right:.75rem;translate:0 -50%}.row-mark svg{fill:currentColor}.camera-list li[data-last-pinned] .row-mark{top:calc(50% - .1875rem)}.camera-list li[data-offline] .camera-item-name,.camera-list li[data-hidden] .camera-item-name{color:var(--text-muted)}.camera-list li[data-last-pinned]{border-bottom:1px solid var(--hairline);margin-bottom:.375rem;padding-bottom:.375rem}.row-actions{gap:.125rem;display:flex;position:absolute;top:50%;right:.375rem;translate:0 -50%}.camera-list li[data-last-pinned] .row-actions{top:calc(50% - .1875rem)}.row-action{width:1.75rem;height:1.75rem;color:var(--sbg-500);cursor:pointer;background:0 0;border:0;border-radius:.375rem;place-items:center;padding:0;display:grid}.row-action:hover{background:var(--sbg-200);color:var(--sbg-900)}.row-action:disabled{cursor:progress}.row-action[aria-pressed=true]{color:var(--blue-600)}.row-action[data-kind=pin][aria-pressed=true] svg{fill:currentColor}.camera-group{border-top:1px solid var(--hairline);margin-top:.5rem;padding-top:.5rem}.camera-group-head{width:100%;color:var(--sbg-600);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.5rem;align-items:center;gap:.375rem;padding:.375rem .5rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}.camera-group-head:hover{color:var(--sbg-900);background:#fffc}.camera-group-count{background:var(--sbg-200);font-variant-numeric:tabular-nums;border-radius:999px;margin-left:auto;padding:0 .375rem}.camera-group .camera-list{margin-top:.125rem}.main-pane{border:1px solid var(--hairline);background:var(--pane);scrollbar-width:thin;border-radius:.75rem;flex-direction:column;flex:1;min-width:0;min-height:0;padding:1.25rem;display:flex;overflow:auto;box-shadow:0 20px 80px #1a191f0f}@media (max-width:48rem){.split{flex-direction:column;height:auto}.side-panel{flex-basis:auto;padding-right:.75rem}.side-head,.side-note{padding-right:.5rem}.camera-nav{scrollbar-gutter:auto;flex:none;padding-right:0;overflow-y:visible}.main-pane{overflow:visible}.camera-list{scrollbar-width:thin;scrollbar-color:var(--sbg-300) transparent;gap:.25rem;display:flex;position:relative;overflow-x:auto}.camera-list li{flex:none;max-width:16rem}.camera-item{height:100%}.camera-list li[data-last-pinned]{border-bottom:0;border-right:1px solid var(--hairline);margin-bottom:0;padding:0 .375rem 0 0}.camera-list li[data-last-pinned] .row-actions,.camera-list li[data-last-pinned] .row-mark{top:50%;right:.75rem}}
.camera-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;display:flex}.camera-head h1{overflow-wrap:anywhere;font-size:1.25rem;font-weight:600;line-height:1.75rem}.camera{flex-direction:column;flex:1;min-height:0;display:flex}.frame-area{flex:1;place-items:center;min-height:10rem;display:grid;container-type:size}.frame{width:min(100cqw, calc(100cqh * var(--frame-ratio,16 / 9)));aspect-ratio:var(--frame-ratio,16 / 9);background:#000;border-radius:.75rem;position:relative;overflow:hidden}.frame video,.frame img{object-fit:contain;width:100%;height:100%;display:block}.frame:fullscreen{aspect-ratio:auto;border-radius:0;width:100%;height:100%;max-height:none}.frame-note{color:#fff;text-align:center;background:#0000008c;flex-direction:column;justify-content:center;align-items:center;gap:.375rem;padding:1.5rem;display:flex;position:absolute;inset:0}.frame-busy{color:#fff;background:#000000b3;border-radius:999px;align-items:center;gap:.5rem;padding:.375rem .75rem;font-size:.8125rem;line-height:1.25rem;display:flex;position:absolute;bottom:.75rem;right:.75rem}.frame-busy .spinner{border-width:2px;order:0;width:.875rem;height:.875rem;margin-bottom:0}.frame-note p{overflow-wrap:anywhere;max-width:34rem}.frame-note-title{font-size:1rem;font-weight:600;line-height:1.5rem}.frame-note .button{margin-top:.75rem}.frame-note :focus-visible{outline-color:#fff}.spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;order:-1;width:1.5rem;height:1.5rem;margin-bottom:.5rem;animation:.9s linear infinite spin}@keyframes spin{to{rotate:360deg}}.camera-foot{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-top:.75rem;display:flex}.camera-actions{flex-wrap:wrap;gap:.5rem;display:flex}@media (max-width:48rem){.frame-area{min-height:0;display:block;container-type:normal}.frame{width:100%;max-height:60dvh}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}
.dialog{border:1px solid var(--line);width:min(32rem,100vw - 2rem);max-height:calc(100dvh - 2rem);color:var(--sbg-900);background:#fff;border-radius:.5rem;padding:0;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.dialog::backdrop{background:#000c}.dialog-form{gap:1rem;padding:1.5rem;display:grid;position:relative}.dialog-close{width:1.5rem;height:1.5rem;color:inherit;opacity:.7;cursor:pointer;background:0 0;border:0;border-radius:.25rem;place-items:center;padding:0;display:grid;position:absolute;top:1rem;right:1rem}.dialog-close:hover{opacity:1}.dialog-head{gap:.375rem;padding-right:2rem;display:grid}.dialog-head h2{letter-spacing:-.025em;font-size:1.125rem;font-weight:600;line-height:1.5rem}.dialog-head p,.dialog-note,.field-hint{color:var(--text-muted)}.field{align-content:start;gap:.375rem;display:grid}.field label{font-weight:500}.field input{border:1px solid var(--field-line);width:100%;height:2.5rem;color:var(--sbg-900);font:inherit;background:#fff;border-radius:.75rem;padding:0 .75rem}.field-row{grid-template-columns:minmax(0,1fr) 7rem;align-items:end;gap:.75rem;display:grid}.field-hint{font-size:.75rem;line-height:1rem}.dialog-error{background:var(--error-50);color:var(--error-700);border-radius:.375rem;padding:.5rem 1rem}.dialog-section{border-top:1px solid var(--sbg-200);justify-items:start;gap:.5rem;padding-top:1rem;display:grid}.dialog-section h3{margin:0;font-size:.875rem;font-weight:600}.dialog-section>p:not(.dialog-caution){color:var(--sbg-600)}.dialog-section .field{width:100%}.dialog-section .field input[type=file]{height:auto;padding:.5rem .75rem}.dialog-section .button{margin-top:.25rem}.dialog-caution{border:1px solid var(--warning-300);background:var(--warning-50);color:var(--warning-700);border-radius:.375rem;padding:.5rem .75rem}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.field input::placeholder{color:var(--text-muted);opacity:1;font-weight:500}.dialog[data-wide]{width:min(42rem,100vw - 2rem)}.choice{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;min-width:0;margin:0;padding:0;display:grid}.choice-option:last-of-type:nth-of-type(odd){grid-column:1/-1}.choice legend{margin-bottom:.375rem;padding:0;font-weight:500}.choice-option{border:1px solid var(--input-line);cursor:pointer;border-radius:.75rem;align-items:flex-start;gap:.5rem;padding:.625rem .75rem;display:flex}.choice-option:has(input:checked){border-color:var(--focus);background:var(--info-50)}.choice-option input{accent-color:var(--blue-600);flex:none;margin:.1875rem 0 0}.choice-option span{gap:.125rem;min-width:0;display:grid}.choice-option strong{font-weight:600}.choice-option small{color:var(--text-muted);font-size:.75rem;line-height:1rem}.camera-rows{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.camera-row{grid-template-columns:minmax(0,11rem) minmax(0,1fr) auto;align-items:end;gap:.5rem;display:grid}.camera-remove{width:2.5rem;height:2.5rem;color:var(--sbg-600);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;place-items:center;padding:0;display:grid}.camera-remove:hover:not(:disabled){border-color:var(--error-200);background:var(--error-50);color:var(--error-700)}.camera-remove:disabled{opacity:.35;cursor:default}.camera-add{justify-self:start}@media (max-width:34rem){.choice{grid-template-columns:minmax(0,1fr)}.camera-row{border-bottom:1px solid var(--sbg-200);grid-template-columns:minmax(0,1fr) auto;padding-bottom:.75rem}.camera-row .field:nth-child(2){grid-area:2/1/auto/-1}}
.login{background:#fff;flex-direction:column;min-height:100dvh;display:flex;position:relative}.login:before{content:"";opacity:.25;background:url(/images/login-bg.jpg) 50%/cover no-repeat;position:absolute;inset:0}.login-head{z-index:1;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#fffc;justify-content:space-between;align-items:center;padding:.75rem 2rem;display:flex;position:relative}.login-main{z-index:1;flex:1;justify-content:center;align-items:center;padding:3rem 1rem;display:flex;position:relative}.login-card{border:1px solid var(--sbg-200);background:#fff;border-radius:1rem;width:100%;max-width:487px;min-height:19rem;padding:.375rem;position:relative;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.login-card-art{width:100%;height:auto;display:block}.login-card-body{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:1.5rem 2rem;display:flex;position:absolute;inset:0}.login-card-body h1{color:#25252b;font-size:1.25rem;font-weight:600;line-height:1.75rem}.login-card-body>p:not(.login-error){color:#727272}.login-button{margin-top:.5rem;padding:0 2.5rem}.login-error{background:var(--error-50);color:var(--error-700);border-radius:.375rem;padding:.5rem 1rem}@media (max-width:48rem){.login-head{padding-inline:1rem}}
.bridge-notice{border:1px solid var(--warning-300);background:var(--warning-50);color:var(--warning-700);border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;padding:.75rem 1rem;display:flex}.bridge-notice p{flex:20rem}.dialog[data-size=signin]{width:min(68rem,100vw - 2rem)}.remote-view{border:1px solid var(--line);background:var(--sbg-100);cursor:default;-webkit-user-select:none;user-select:none;border-radius:.5rem;width:100%;position:relative;overflow:hidden}.remote-view[data-active]{cursor:pointer}.remote-view:focus-within{outline:2px solid var(--focus);outline-offset:2px}.remote-keys{color:#0000;caret-color:#0000;resize:none;width:100%;height:100%;cursor:inherit;background:0 0;border:0;outline:0;margin:0;padding:0;position:absolute;inset:0;overflow:hidden}.remote-view img{pointer-events:none;width:100%;height:100%;display:block}.remote-note{color:#fff;text-align:center;background:#0009;flex-direction:column;justify-content:center;align-items:center;gap:.375rem;padding:1.5rem;display:flex;position:absolute;inset:0}.remote-note[data-tone=success]{background:#05603ad9}.remote-note-title{font-size:1rem;font-weight:600;line-height:1.5rem}.remote-note .button{margin-top:.75rem}.remote-note :focus-visible{outline-color:#fff}

