@font-face{font-family:Inter;src:url(/fonts/Inter-Variable.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-Variable.woff2)format("woff2");font-weight:300 700;font-style:normal;font-display:swap}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-canvas:#ececee;--color-surface:#f7f7f8;--color-surface-raised:#fff;--color-sidebar:#232326;--color-on-sidebar:#f5f5f6;--color-on-sidebar-muted:#9a9ca3;--color-text-primary:#1b1c1e;--color-text-secondary:#5f6167;--color-text-muted:#6d6f77;--color-border:#dcdce0;--color-border-strong:#c9c9ce;--color-accent:#0d8266;--color-on-accent:#fff;--color-accent-ink:#0b6b55;--color-accent-soft:#ddf2ea;--color-success:#0d8266;--color-success-soft:#ddf2ea;--color-warning:#935703;--color-warning-soft:#f7ebd7;--color-error:#b23328;--color-error-soft:#f9e3e0;--color-info:#1878c2;--color-info-soft:#e0eef9;--color-data-gap:#b9bbc1;--color-chart-1:#0d8266;--color-chart-2:#4c63d2;--color-chart-3:#c07a18;--color-chart-4:#1878c2;--color-chart-5:#b0509e;--color-chart-6:#c25b4a;--shadow-rest:0 1px 2px #1b1c1e0d;--shadow-overlay:0 8px 24px #1b1c1e1a;--scroll-shadow:#1b1c1e1f;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236D6F77' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-canvas:#17181a;--color-surface:#202124;--color-surface-raised:#2a2b2f;--color-sidebar:#101012;--color-on-sidebar:#ecedef;--color-on-sidebar-muted:#8e9098;--color-text-primary:#ecedef;--color-text-secondary:#a6a8af;--color-text-muted:#8e9098;--color-border:#34353a;--color-border-strong:#45464c;--color-accent:#17a583;--color-on-accent:#0a1f19;--color-accent-ink:#3fc7a4;--color-accent-soft:#12352c;--color-success:#2fb48c;--color-success-soft:#143028;--color-warning:#d99a36;--color-warning-soft:#33270f;--color-error:#e06a5e;--color-error-soft:#38201d;--color-info:#4ea3e0;--color-info-soft:#142b3d;--color-data-gap:#54565c;--color-chart-1:#17a583;--color-chart-2:#7186e8;--color-chart-3:#c57f1c;--color-chart-4:#3e97d9;--color-chart-5:#c96bb4;--color-chart-6:#d66a55;--shadow-rest:none;--shadow-overlay:0 8px 24px #00000073;--scroll-shadow:#00000080;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238E9098' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}:root{--type-stat-family:"Space Grotesk";--type-stat-size:56px;--type-stat-weight:300;--type-stat-lh:1.05;--type-stat-ls:-.02em;--type-display-family:"Space Grotesk";--type-display-size:40px;--type-display-weight:500;--type-display-lh:1.1;--type-display-ls:-.02em;--type-h1-family:"Space Grotesk";--type-h1-size:28px;--type-h1-weight:500;--type-h1-lh:1.2;--type-h1-ls:-.01em;--type-h2-family:"Inter";--type-h2-size:20px;--type-h2-weight:600;--type-h2-lh:1.3;--type-h3-family:"Inter";--type-h3-size:16px;--type-h3-weight:600;--type-h3-lh:1.4;--type-body-family:"Inter";--type-body-size:14px;--type-body-weight:400;--type-body-lh:1.5;--type-body-strong-weight:600;--type-caption-size:12px;--type-caption-lh:1.4;--type-label-size:11px;--type-label-weight:500;--type-label-lh:1.3;--type-label-ls:.06em;--type-mono-family:ui-monospace, SFMono-Regular, Menlo, monospace;--type-mono-size:13px;--motion-micro:.12s;--motion-standard:.22s;--motion-ease-out:cubic-bezier(0, 0, .2, 1);--motion-ease-in:cubic-bezier(.4, 0, 1, 1);--motion-ease-in-out:cubic-bezier(.4, 0, .2, 1);--rounded-xs:6px;--rounded-sm:10px;--rounded-md:14px;--rounded-lg:20px;--rounded-xl:28px;--rounded-full:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px}*,:before,:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{background:var(--color-canvas);color:var(--color-text-primary);font-family:var(--type-body-family), system-ui, sans-serif;font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:var(--type-body-lh);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--color-accent-ink);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--rounded-full);background-clip:padding-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-muted)}.app-frame{grid-template-columns:280px 1fr;height:100%;display:grid}.app-frame.collapsed{grid-template-columns:88px 1fr}.rail{margin:var(--space-3);background:var(--color-sidebar);border-radius:var(--rounded-xl);padding:var(--space-3);align-items:center;gap:var(--space-2);flex-direction:column;width:64px;display:flex}.rail-nav{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;flex:1;display:flex}.rail-item{border-radius:var(--rounded-sm);width:40px;height:40px;color:var(--color-on-sidebar-muted);cursor:pointer;font-size:var(--type-h3-size);background:0 0;border:none;justify-content:center;align-items:center;text-decoration:none;display:flex}.rail-item:hover{color:var(--color-on-sidebar);text-decoration:none}.rail-item.active{background:color-mix(in srgb, var(--color-on-sidebar) 12%, transparent);color:var(--color-on-sidebar)}.rail-item[data-tooltip],.rail-avatar[data-tooltip]{position:relative}.rail-item[data-tooltip]:after,.rail-item[data-tooltip]:before,.rail-avatar[data-tooltip]:after,.rail-avatar[data-tooltip]:before{opacity:0;pointer-events:none;transition:opacity var(--motion-micro) var(--motion-ease-out), transform var(--motion-micro) var(--motion-ease-out);z-index:40;position:absolute;top:50%;left:calc(100% + 10px);transform:translate(-4px,-50%)}.rail-item[data-tooltip]:after,.rail-avatar[data-tooltip]:after{content:attr(data-tooltip);background:var(--color-sidebar);color:var(--color-on-sidebar);font-family:var(--type-body-family), sans-serif;font-size:var(--type-caption-size);font-weight:var(--type-body-weight);line-height:var(--type-caption-lh);white-space:nowrap;border-radius:var(--rounded-xs);border:1px solid var(--color-border-strong);box-shadow:var(--shadow-overlay);padding:6px 10px}.rail-item[data-tooltip]:before,.rail-avatar[data-tooltip]:before{content:"";border:5px solid #0000;border-right-color:var(--color-sidebar);border-left-width:0;width:0;height:0;left:calc(100% + 4px);transform:translateY(-50%)}@media (hover:hover){.rail-item[data-tooltip]:hover:after,.rail-item[data-tooltip]:hover:before,.rail-avatar[data-tooltip]:hover:after,.rail-avatar[data-tooltip]:hover:before{opacity:1;transform:translateY(-50%)}}.rail-item[data-tooltip]:focus-visible:after,.rail-item[data-tooltip]:focus-visible:before{opacity:1;transform:translateY(-50%)}.nav-panel{background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-4);flex-direction:column;display:flex;overflow-y:auto}.nav-brand{padding:var(--space-3) var(--space-3) var(--space-4)}.nav-brand img{height:28px}.rail-avatar{width:36px;height:36px;margin:var(--space-2) auto var(--space-3);border-radius:var(--rounded-full);background:var(--color-accent);color:var(--color-on-accent);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);letter-spacing:.02em;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:flex}.nav-head{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.nav-user{padding:var(--space-2) var(--space-3) var(--space-4);min-width:0}.nav-user-name{font-weight:var(--type-body-strong-weight)}.nav-user .caption{text-overflow:ellipsis;overflow:hidden}.nav-collapse{flex-shrink:0;padding:10px}.nav-section-label{font-size:var(--type-label-size);font-weight:var(--type-label-weight);letter-spacing:var(--type-label-ls);text-transform:uppercase;color:var(--color-text-muted);padding:var(--space-2) var(--space-3)}.nav-item{align-items:center;gap:var(--space-2);border-radius:var(--rounded-sm);height:38px;color:var(--color-text-secondary);font-weight:var(--type-body-strong-weight);transition:background-color var(--motion-micro) var(--motion-ease-out), color var(--motion-micro) var(--motion-ease-out);margin-bottom:2px;padding:8px 12px;text-decoration:none;display:flex}.nav-item:hover{color:var(--color-text-primary);text-decoration:none}.nav-item.active{background:var(--color-surface-raised);color:var(--color-text-primary);box-shadow:inset 3px 0 0 var(--color-accent), var(--shadow-rest)}.nav-footer{align-items:flex-start;gap:var(--space-1);padding-top:var(--space-4);flex-direction:column;margin-top:auto;display:flex}.content{padding:var(--space-5) var(--space-6);overflow-y:auto}@media (width<=640px){.content{padding:var(--space-4) var(--space-3)}}.login-page{min-height:100%;padding:var(--space-5);justify-content:center;align-items:center;display:flex;position:relative}.login-theme-toggle{top:var(--space-5);right:var(--space-5);position:absolute}.login-card{border-radius:var(--rounded-xl);width:380px;padding:var(--space-6);animation:overlay-rise-in var(--motion-standard) var(--motion-ease-out)}.login-brand img{height:44px;display:block}.login-sub{margin:var(--space-2) 0 var(--space-5)}.login-password-label{margin-top:var(--space-4)}.login-submit{width:100%;margin-top:var(--space-5);justify-content:center}.login-api{margin-top:var(--space-4);text-align:center;color:var(--color-text-muted)}.page-head{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.table{border-collapse:collapse;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--rounded-md);width:100%;overflow:hidden}.table th{background:var(--color-surface);color:var(--color-text-muted);font-size:var(--type-label-size);font-weight:var(--type-label-weight);letter-spacing:var(--type-label-ls);text-transform:uppercase;text-align:left;height:36px;padding:8px 12px}.table td{border-top:1px solid var(--color-border);vertical-align:middle;font-variant-numeric:tabular-nums;height:44px;transition:background-color var(--motion-micro) var(--motion-ease-out);padding:10px 12px}.table tbody tr{cursor:pointer}.table tbody tr:hover td{background:var(--color-surface)}.table-scroll{border:1px solid var(--color-border);border-radius:var(--rounded-md);background-image:linear-gradient(to right, var(--color-surface-raised) 50%, transparent), linear-gradient(to left, var(--color-surface-raised) 50%, transparent), linear-gradient(to right, var(--scroll-shadow), transparent), linear-gradient(to left, var(--scroll-shadow), transparent);background-position:0,100%,0,100%;background-repeat:no-repeat;background-color:var(--color-surface-raised);background-size:24px 100%,24px 100%,8px 100%,8px 100%;background-attachment:local,local,scroll,scroll;overflow-x:auto}.table-scroll .table{border:none}.table-scroll .table th:first-child{z-index:2;background:var(--color-surface);position:sticky;left:0}.table-scroll .table tr:not(.area-band) td:first-child{z-index:1;background:var(--color-surface-raised);position:sticky;left:0}.table-scroll .table tbody tr:hover td:first-child{background:var(--color-surface)}.probe-row{align-items:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.detail-header{margin-bottom:var(--space-4)}.detail-title-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.detail-status{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);font-size:var(--type-caption-size);display:inline-flex}.cam-toolbar{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.cam-filter{width:280px;max-width:100%;margin-left:auto}.area-legend{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.area-chip{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--rounded-full);background:var(--color-surface-raised);color:var(--color-text-secondary);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);cursor:pointer;min-height:28px;transition:border-color var(--motion-micro) var(--motion-ease-out), color var(--motion-micro) var(--motion-ease-out), background-color var(--motion-micro) var(--motion-ease-out);padding:4px 12px;display:inline-flex}.area-chip:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.area-chip.active{border-color:var(--color-accent);color:var(--color-text-primary);background:var(--color-accent-soft)}.area-swatch{border-radius:var(--rounded-full);flex-shrink:0;width:9px;height:9px}.area-band{cursor:default}.area-band td{background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);height:34px;padding:6px 12px}.area-band .area-swatch{margin-right:var(--space-2);display:inline-block}.area-band .chip-count{margin-left:var(--space-2)}.marking-zone-list{gap:var(--space-2);flex-direction:column;display:flex}.marking-zone-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.marking-zone-name{flex:1;min-width:120px}.marking-zone-select{flex-shrink:0;width:200px;max-width:100%}.preview-wrap{position:relative}.preview-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.preview-overlay text{font-family:var(--type-body-family), sans-serif;fill:var(--color-on-sidebar);stroke:var(--color-sidebar);stroke-width:.5px;paint-order:stroke;font-size:3.4px;font-weight:600}.preview-controls{align-items:center;gap:var(--space-5);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.preview-controls .caption{margin-left:auto}.checkbox-label{align-items:center;gap:var(--space-2);font-size:var(--type-body-size);cursor:pointer;display:inline-flex}.live-kpi-toggles{gap:var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.live-chips{gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.live-chip{align-items:center;gap:var(--space-2);background:var(--color-canvas);border:1px solid var(--color-border);border-radius:var(--rounded-full);font-size:var(--type-caption-size);padding:4px 12px;display:inline-flex}.live-chip-swatch{border-radius:var(--rounded-full);flex-shrink:0;width:8px;height:8px}.detail-actions{align-items:center}.detail-actions-spacer{flex:1}.preview-frame{background:var(--color-canvas);border:1px solid var(--color-border);border-radius:var(--rounded-sm);justify-content:center;align-items:center;min-height:200px;display:flex;overflow:hidden}.preview-frame img{width:100%;display:block}.calibration-preview{aspect-ratio:16/9;background:var(--color-canvas-inverse,var(--color-canvas));border-radius:var(--rounded-sm);cursor:crosshair;width:100%;position:relative;overflow:hidden}.calibration-preview img{object-fit:contain;width:100%;height:100%}.calibration-point{border-radius:var(--rounded-full);background:var(--color-chart-1);border:2px solid var(--color-canvas);width:20px;height:20px;color:var(--color-canvas);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;margin-top:-10px;margin-left:-10px;font-size:11px;font-weight:600;line-height:1;display:flex;position:absolute}.calibration-point-draggable{cursor:grab;touch-action:none;width:24px;height:24px;margin-top:-12px;margin-left:-12px}.calibration-point-draggable:active{cursor:grabbing}.calibration-point-good{background:var(--color-success)}.calibration-point-warn{background:var(--color-warning)}.calibration-point-bad{background:var(--color-error)}.calibration-magnifier{border-radius:var(--rounded-full);border:2px solid var(--color-canvas);pointer-events:none;z-index:5;position:absolute;box-shadow:0 2px 10px #0006}.calibration-magnifier-crosshair{position:absolute;inset:0}.calibration-magnifier-crosshair:before,.calibration-magnifier-crosshair:after{content:"";background:var(--color-chart-1);opacity:.9;position:absolute}.calibration-magnifier-crosshair:before{width:1px;margin-left:-.5px;top:0;bottom:0;left:50%}.calibration-magnifier-crosshair:after{height:1px;margin-top:-.5px;top:50%;left:0;right:0}.calibration-point-lines{pointer-events:none;position:absolute;inset:0}.calibration-line-segment{stroke:var(--color-chart-1);stroke-width:2px;stroke-dasharray:5 4;opacity:.85}.calibration-line-arrowhead{fill:var(--color-chart-1)}.calibration-stitch-overlay{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.detail-section{margin-top:var(--space-5)}.detail-section-head{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.suitability-issue{margin-top:var(--space-3)}.health-cards{gap:var(--space-4);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.health-card-state{margin-top:var(--space-2);font-weight:var(--type-body-strong-weight)}.tab-row{gap:var(--space-2);margin:var(--space-4) 0;display:flex}.onvif-profile{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);margin-bottom:var(--space-2);border-radius:var(--rounded-sm);display:flex}.formula-builder{margin-top:var(--space-3)}.formula-vars{gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.formula-chip{border:1px solid var(--color-border-strong);border-radius:var(--rounded-full);background:var(--color-surface-raised);color:var(--color-text-primary);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);cursor:grab;min-height:28px;transition:border-color var(--motion-micro) var(--motion-ease-out), background-color var(--motion-micro) var(--motion-ease-out);align-items:center;padding:4px 12px;display:inline-flex}.formula-chip:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.formula-chip.in-strip{cursor:default;background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent-ink)}.formula-ops{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.formula-ops .btn{justify-content:center;min-width:36px}input.formula-num{width:110px}.formula-strip{align-items:center;gap:var(--space-2);min-height:48px;padding:var(--space-2) var(--space-3);border:1px dashed var(--color-border-strong);border-radius:var(--rounded-sm);background:var(--color-canvas);flex-wrap:wrap;display:flex}.formula-token{font-family:var(--type-mono-family), monospace;font-size:var(--type-body-size);font-variant-numeric:tabular-nums}.formula-actions{gap:var(--space-2);margin-top:var(--space-3);align-items:center;display:flex}select.formula-func{width:320px;max-width:100%}.formula-chip-members{border-style:dashed}.formula-var-group{align-items:center;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--rounded-sm);background:var(--color-surface);padding:3px 8px 3px 10px;display:inline-flex}.formula-var-name{font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);color:var(--color-text-secondary);margin-right:var(--space-1)}.site-create{max-width:420px}.site-create .field-label{margin-top:var(--space-4)}.site-card{justify-content:space-between;align-items:center;display:flex}.zone-add{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:1fr 160px auto;display:grid}@media (width<=640px){.zone-add{grid-template-columns:1fr}}.zone-contents-group{margin-bottom:var(--space-4)}.zone-contents-camera{font-size:var(--type-label-size);font-weight:var(--type-label-weight);letter-spacing:var(--type-label-ls);text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-2)}.zone-contents-row{align-items:center;gap:var(--space-3);width:100%;padding:6px 0;display:flex}.zone-contents-name{flex:1;min-width:0}.staff-photo-preview{aspect-ratio:1;object-fit:cover;border-radius:var(--rounded-sm);width:100%;max-width:160px;margin:var(--space-1) 0;background:var(--color-canvas-inverse,var(--color-canvas));display:block}.staff-avatar{border-radius:var(--rounded-full);object-fit:cover;background:var(--color-canvas-inverse,var(--color-canvas));flex-shrink:0;width:32px;height:32px}.staff-avatar-placeholder{border-radius:var(--rounded-full);background:var(--color-surface);border:1px solid var(--color-border);width:32px;height:32px;color:var(--color-text-muted);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.staff-name-cell{align-items:center;gap:var(--space-2);display:flex}.chart-holder{position:relative}.chart-svg{width:100%;height:auto;display:block}.chart-grid{stroke:var(--color-border);stroke-width:1px}.chart-axis-text{fill:var(--color-text-muted);font-family:var(--type-body-family), sans-serif;font-variant-numeric:tabular-nums;font-size:10px}.chart-gap-line{stroke:var(--color-data-gap)}.chart-crosshair{stroke:var(--color-border-strong);stroke-width:1px;stroke-dasharray:3 3}.chart-hover-dot{stroke:var(--color-surface);stroke-width:2px}.chart-peak-label{fill:var(--color-text-secondary);font-family:var(--type-body-family), sans-serif;font-size:10px;font-weight:var(--type-body-strong-weight);font-variant-numeric:tabular-nums}.chart-legend{gap:var(--space-4);margin-top:var(--space-2);display:flex}.chart-legend-item{align-items:center;gap:var(--space-2);font-size:var(--type-caption-size);color:var(--color-text-secondary);display:inline-flex}.chart-bar.breach{opacity:.95}.chart-threshold-region{fill:var(--color-error-soft);opacity:.45}.chart-threshold-line{stroke:var(--color-error);stroke-width:1.5px;stroke-dasharray:5 4}.chart-tooltip{top:var(--space-2);right:var(--space-2);background:var(--color-sidebar);color:var(--color-on-sidebar);font-size:var(--type-caption-size);border-radius:var(--rounded-xs);box-shadow:var(--shadow-overlay);pointer-events:none;font-variant-numeric:tabular-nums;animation:overlay-pop-in var(--motion-micro) var(--motion-ease-out);padding:6px 10px;position:absolute}.checklist{max-width:560px}.checklist-head{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.checklist-progress{border-radius:var(--rounded-full);background:var(--color-canvas);height:6px;margin-bottom:var(--space-5);overflow:hidden}.checklist-progress-fill{border-radius:var(--rounded-full);background:var(--color-accent);height:100%;transition:width .3s}.checklist-items{flex-direction:column;padding:0;list-style:none;display:flex}.checklist-items li{gap:var(--space-3);padding:var(--space-2) 0 var(--space-4);align-items:flex-start;display:flex;position:relative}.checklist-items li:not(:last-child):before{content:"";border-radius:var(--rounded-full);background:var(--color-border);width:2px;position:absolute;top:36px;bottom:2px;left:13px}.checklist-items li.done:not(:last-child):before{background:var(--color-accent-soft)}.checklist-mark{border-radius:var(--rounded-full);width:28px;height:28px;font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);background:var(--color-canvas);color:var(--color-text-secondary);z-index:1;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;display:flex}.checklist-items li.done .checklist-mark{background:var(--color-accent-soft);color:var(--color-accent-ink)}.checklist-items li.current .checklist-mark{background:var(--color-accent);color:var(--color-on-accent);box-shadow:0 0 0 4px var(--color-accent-soft)}.checklist-body{flex:1;min-width:0}.checklist-items li.current .checklist-body>a{font-weight:var(--type-body-strong-weight)}.checklist-items li.done .checklist-body>a{color:var(--color-text-muted);text-decoration:line-through}.checklist-cta{flex-shrink:0;align-self:center}.btn-sm{height:32px;font-size:var(--type-caption-size);padding:6px 12px}.checklist-footer{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.checklist-reset{gap:var(--space-3);margin-top:var(--space-3);flex-direction:column;display:flex}.checklist-reset-row{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.checklist-reset-row>div{min-width:0}.checklist-reset-row .btn{white-space:nowrap;flex-shrink:0}.checklist-cmd{margin-top:var(--space-3);padding:var(--space-3);border-radius:var(--rounded-sm);background:var(--color-sidebar);color:var(--color-on-sidebar);font-family:var(--type-mono-family), monospace;font-size:var(--type-caption-size);white-space:pre-wrap;word-break:break-all;-webkit-user-select:all;user-select:all}.dash-tiles{gap:var(--space-4);margin-top:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.stat-tile-full .stat-number{margin:var(--space-2) 0}.dashboard-panel-link{margin-top:var(--space-2);color:var(--color-accent-ink);text-decoration:none;display:inline-block}.dashboard-panel-link:hover,.dashboard-panel-link:focus-visible{text-decoration:underline}.dash-section{margin:var(--space-6) 0 var(--space-4)}.dash-charts{gap:0 var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));align-items:end;display:grid}.alert-recent-list{gap:var(--space-2);padding:var(--space-3);display:grid}.alert-recent-row{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--rounded-sm);color:var(--color-text-primary);text-decoration:none;display:flex}.alert-recent-row:hover{background:var(--color-surface-raised);text-decoration:none}.zone-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.zone-live-card{text-align:left;cursor:pointer;border:1px solid var(--color-border);font:inherit;transition:background-color var(--motion-micro) var(--motion-ease-out), border-color var(--motion-micro) var(--motion-ease-out), box-shadow var(--motion-micro) var(--motion-ease-out)}.zone-live-card:hover{background:var(--color-surface-raised);border-color:var(--color-border-strong);box-shadow:var(--shadow-rest)}.zone-live-value{font-variant-numeric:tabular-nums}.zone-live-metrics{gap:var(--space-6);margin-top:var(--space-3);display:flex}.zone-live-value{font-family:var(--type-stat-family), sans-serif;font-size:32px;font-weight:var(--type-stat-weight);line-height:var(--type-stat-lh);letter-spacing:var(--type-stat-ls)}.camera-strip{gap:var(--space-3);flex-wrap:wrap;display:flex}.camera-chip{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--rounded-sm);color:var(--color-text-primary);font-weight:var(--type-body-strong-weight);text-decoration:none;display:inline-flex}.camera-chip:hover{background:var(--color-surface-raised);text-decoration:none}.kpi-controls{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.kpi-controls-secondary{margin-bottom:var(--space-4)}select.kpi-select{width:280px;max-width:100%}select.kpi-scope{width:210px;max-width:100%}select.kpi-interval{width:150px;max-width:100%}.range-tabs{gap:var(--space-1);flex-wrap:wrap;display:flex}.kpi-custom-dates{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:inline-flex}.kpi-custom-dates input.input{width:150px}.kpi-summary{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));display:grid}.kpi-summary-tile{padding:var(--space-4)}.kpi-summary-value{font-family:var(--type-stat-family), sans-serif;font-size:28px;font-weight:var(--type-h1-weight);font-variant-numeric:tabular-nums;margin:var(--space-1) 0;line-height:1.2}.kpi-delta-good{color:var(--color-success)}.kpi-delta-bad{color:var(--color-error)}.kpi-delta-neutral{color:var(--color-text-primary)}.category-breakdown-bar{border-radius:var(--rounded-full);background:var(--color-surface);gap:2px;height:10px;display:flex;overflow:hidden}.category-breakdown-segment{height:100%}.category-breakdown-legend{gap:var(--space-2) var(--space-4);margin:var(--space-3) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.category-breakdown-legend li{align-items:center;gap:var(--space-1);display:flex}.category-breakdown-swatch{border-radius:var(--rounded-full);flex-shrink:0;width:10px;height:10px;display:inline-block}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{font-family:var(--type-body-family), sans-serif;font-size:var(--type-body-size);font-weight:var(--type-body-strong-weight);border-radius:var(--rounded-sm);cursor:pointer;align-items:center;gap:var(--space-2);height:40px;transition:background-color var(--motion-micro) var(--motion-ease-out), color var(--motion-micro) var(--motion-ease-out), border-color var(--motion-micro) var(--motion-ease-out), box-shadow var(--motion-micro) var(--motion-ease-out), transform var(--motion-micro) var(--motion-ease-out);border:none;padding:10px 16px;line-height:1;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--color-accent);color:var(--color-on-accent)}.btn-primary:hover{background:var(--color-accent-ink)}.btn-primary:disabled{background:var(--color-border);color:var(--color-text-muted);cursor:not-allowed}.btn-secondary{background:var(--color-surface-raised);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-surface)}.btn-ghost{color:var(--color-text-secondary);background:0 0}.btn-ghost:hover{color:var(--color-text-primary)}.btn-danger{background:var(--color-error);color:var(--color-canvas)}.btn-danger:hover{opacity:.92}.btn-danger:disabled{background:var(--color-border);color:var(--color-text-muted);cursor:not-allowed}.btn-ghost-danger{color:var(--color-error);background:0 0}.btn-ghost-danger:hover{background:var(--color-error-soft)}.input{background:var(--color-surface-raised);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--rounded-sm);width:100%;height:40px;font-size:var(--type-body-size);transition:border-color var(--motion-micro) var(--motion-ease-out), box-shadow var(--motion-micro) var(--motion-ease-out);padding:10px 12px;line-height:normal}.input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft);outline:none}select.input{appearance:none;background-image:var(--select-chevron);cursor:pointer;text-overflow:ellipsis;background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-top:0;padding-bottom:0;padding-right:36px}select.input option{background:var(--color-surface-raised);color:var(--color-text-primary)}input[type=checkbox]{accent-color:var(--color-accent);width:16px;height:16px}.combobox{position:relative}.combobox .input{background-image:var(--select-chevron);background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:36px}.combobox-list{z-index:30;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--rounded-sm);box-shadow:var(--shadow-overlay);max-height:240px;animation:overlay-pop-in var(--motion-micro) var(--motion-ease-out);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.combobox-option{border-radius:var(--rounded-xs);cursor:pointer;font-size:var(--type-body-size);padding:8px 10px}.combobox-option:hover,.combobox-option.active{background:var(--color-accent-soft);color:var(--color-accent-ink)}input.input::-webkit-calendar-picker-indicator{cursor:pointer}input[type=datetime-local].input::-webkit-calendar-picker-indicator{opacity:.55}input[type=date].input::-webkit-calendar-picker-indicator{opacity:.55}input[type=time].input::-webkit-calendar-picker-indicator{opacity:.55}.input.input-error{border-color:var(--color-error)}.field-error{font-size:var(--type-caption-size);color:var(--color-error);margin-top:var(--space-1)}.field-label{font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);color:var(--color-text-secondary);margin-bottom:var(--space-1);display:block}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--rounded-lg);padding:var(--space-5);box-shadow:var(--shadow-rest)}.card-raised{background:var(--color-surface-raised)}.stat-label{font-size:var(--type-label-size);font-weight:var(--type-label-weight);letter-spacing:var(--type-label-ls);line-height:var(--type-label-lh);text-transform:uppercase;color:var(--color-text-muted)}.stat-number{font-family:var(--type-stat-family), sans-serif;font-size:var(--type-stat-size);font-weight:var(--type-stat-weight);line-height:var(--type-stat-lh);letter-spacing:var(--type-stat-ls);color:var(--color-text-primary);font-variant-numeric:tabular-nums}img.logo-on-dark,[data-theme=dark] img.logo-light{display:none!important}[data-theme=dark] img.logo-on-dark{display:block!important}.badge{align-items:center;gap:var(--space-1);background:var(--color-accent-soft);color:var(--color-accent-ink);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);border-radius:var(--rounded-full);height:22px;padding:2px 10px;display:inline-flex}.badge-negative{background:var(--color-error-soft);color:var(--color-error)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-neutral{background:var(--color-canvas);color:var(--color-text-secondary)}.badge-info{background:var(--color-info-soft);color:var(--color-info)}.badge-positive{background:var(--color-success-soft);color:var(--color-success)}.day-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.day-chip{border:1px solid var(--color-border);border-radius:var(--rounded-full);background:var(--color-surface-raised);color:var(--color-text-secondary);font-size:var(--type-caption-size);font-weight:var(--type-body-strong-weight);cursor:pointer;min-height:28px;transition:background-color var(--motion-micro) var(--motion-ease-out), color var(--motion-micro) var(--motion-ease-out), border-color var(--motion-micro) var(--motion-ease-out);padding:4px 10px}.day-chip:hover{border-color:var(--color-border-strong);color:var(--color-text-primary)}.day-chip.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}.extra-cond{border-left:3px solid var(--color-border);padding-left:var(--space-3);margin-top:var(--space-3)}.extra-cond-word{margin-bottom:var(--space-1);font-style:italic;display:block}.extra-cond-row2{margin-top:var(--space-2);align-items:end}.extra-cond-actions{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.zone-color{border-radius:var(--rounded-full);width:10px;height:10px;margin-right:var(--space-2);display:inline-block}.kind-swatch{border-radius:var(--rounded-full);width:10px;height:10px;margin-right:var(--space-1);flex-shrink:0;display:inline-block}.chip-count{background:var(--color-canvas);color:var(--color-text-secondary);font-size:var(--type-caption-size);border-radius:var(--rounded-full);align-items:center;height:20px;padding:2px 8px;display:inline-flex}@keyframes overlay-backdrop-in{0%{opacity:0}}@keyframes overlay-rise-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}@keyframes overlay-pop-in{0%{opacity:0;transform:translateY(-4px)}}.modal-backdrop{background:color-mix(in srgb, var(--color-sidebar) 45%, transparent);z-index:20;padding:var(--space-5);animation:overlay-backdrop-in var(--motion-standard) var(--motion-ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@media (width<=640px){.modal-backdrop{padding:var(--space-3)}.modal-actions{flex-wrap:wrap}}.modal{border-radius:var(--rounded-md);width:480px;max-width:100%;max-height:90vh;box-shadow:var(--shadow-overlay);animation:overlay-rise-in var(--motion-standard) var(--motion-ease-out);overflow:hidden auto}.modal .input,.form-row>*{min-width:0}.modal-wide{width:720px}.modal .field-label{margin-top:var(--space-4)}.modal-backdrop-fullscreen{background:var(--color-canvas);padding:0}.modal-fullscreen{border-radius:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh}.modal-actions{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);display:flex}.form-row{gap:var(--space-3);grid-template-columns:1fr 1fr 100px;display:grid}.status-dot{border-radius:var(--rounded-full);width:8px;height:8px;margin-right:var(--space-2);display:inline-block}.status-dot.ok{background:var(--color-success)}.status-dot.warn{background:var(--color-warning)}.status-dot.err{background:var(--color-error)}.h1{font-family:var(--type-h1-family), sans-serif;font-size:var(--type-h1-size);font-weight:var(--type-h1-weight);line-height:var(--type-h1-lh);letter-spacing:var(--type-h1-ls);text-wrap:balance}.h2{font-family:var(--type-h2-family), sans-serif;font-size:var(--type-h2-size);font-weight:var(--type-h2-weight);line-height:var(--type-h2-lh);text-wrap:balance}.h3{font-family:var(--type-h3-family), sans-serif;font-size:var(--type-h3-size);font-weight:var(--type-h3-weight);line-height:var(--type-h3-lh);text-wrap:balance}.caption{font-size:var(--type-caption-size);line-height:var(--type-caption-lh);color:var(--color-text-secondary);text-wrap:pretty}.mono{font-family:var(--type-mono-family);font-size:var(--type-mono-size)}.banner{gap:var(--space-3);border-radius:var(--rounded-md);align-items:flex-start;padding:12px 16px;display:flex}.banner-warning{background:var(--color-warning-soft)}.banner-error{background:var(--color-error-soft)}.banner-info{background:var(--color-info-soft)}.banner-success{background:var(--color-success-soft)}.empty-state{text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-text-secondary)}.skeleton{background:var(--color-surface);border-radius:var(--rounded-sm);animation:1.4s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.55}}.data-gap{background:repeating-linear-gradient(45deg, transparent, transparent 4px, var(--color-data-gap) 4px, var(--color-data-gap) 6px)}.icon-btn{border-radius:var(--rounded-xs);width:30px;height:30px;color:var(--color-text-secondary);cursor:pointer;vertical-align:middle;transition:background-color var(--motion-micro) var(--motion-ease-out), color var(--motion-micro) var(--motion-ease-out), transform var(--motion-micro) var(--motion-ease-out);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.icon-btn:active:not(:disabled){transform:scale(.92)}.icon-btn:hover{background:var(--color-surface);color:var(--color-text-primary)}.icon-btn-danger:hover{background:var(--color-error-soft);color:var(--color-error)}.icon-btn:disabled{color:var(--color-border-strong);cursor:not-allowed}.row-actions{gap:var(--space-1);align-items:center;display:inline-flex}.icon-btn[data-tooltip]:after,.icon-btn[data-tooltip]:before{opacity:0;pointer-events:none;transition:opacity var(--motion-micro) var(--motion-ease-out), transform var(--motion-micro) var(--motion-ease-out);z-index:30;transition-delay:0s;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%,4px)}.icon-btn[data-tooltip]:after{content:attr(data-tooltip);background:var(--color-sidebar);color:var(--color-on-sidebar);font-family:var(--type-body-family), sans-serif;font-size:var(--type-caption-size);font-weight:var(--type-body-weight);line-height:var(--type-caption-lh);white-space:nowrap;border-radius:var(--rounded-xs);box-shadow:var(--shadow-overlay);padding:6px 10px}.icon-btn[data-tooltip]:before{content:"";border:5px solid #0000;border-top-color:var(--color-sidebar);border-bottom-width:0;width:0;height:0;margin-bottom:-5px;bottom:100%}@media (hover:hover){.icon-btn[data-tooltip]:hover:after,.icon-btn[data-tooltip]:hover:before{opacity:1;transition-delay:var(--motion-micro);transform:translate(-50%)}}.icon-btn[data-tooltip]:focus-visible:after,.icon-btn[data-tooltip]:focus-visible:before{opacity:1;transform:translate(-50%)}.row-actions .icon-btn:last-child[data-tooltip]:after,.row-actions .icon-btn:last-child[data-tooltip]:before,.detail-actions .icon-btn:last-child[data-tooltip]:after,.detail-actions .icon-btn:last-child[data-tooltip]:before{left:auto;right:0;transform:translateY(4px)}.row-actions .icon-btn:last-child[data-tooltip]:before,.detail-actions .icon-btn:last-child[data-tooltip]:before{right:8px}.detail-actions .icon-btn:first-child[data-tooltip]:after,.detail-actions .icon-btn:first-child[data-tooltip]:before{left:0;transform:translateY(4px)}.detail-actions .icon-btn:first-child[data-tooltip]:before{left:8px}@media (hover:hover){.row-actions .icon-btn:last-child[data-tooltip]:hover:after,.row-actions .icon-btn:last-child[data-tooltip]:hover:before,.detail-actions .icon-btn:last-child[data-tooltip]:hover:after,.detail-actions .icon-btn:last-child[data-tooltip]:hover:before,.detail-actions .icon-btn:first-child[data-tooltip]:hover:after,.detail-actions .icon-btn:first-child[data-tooltip]:hover:before{transform:translateY(0)}}.row-actions .icon-btn:last-child[data-tooltip]:focus-visible:after,.row-actions .icon-btn:last-child[data-tooltip]:focus-visible:before,.detail-actions .icon-btn:last-child[data-tooltip]:focus-visible:after,.detail-actions .icon-btn:last-child[data-tooltip]:focus-visible:before,.detail-actions .icon-btn:first-child[data-tooltip]:focus-visible:after,.detail-actions .icon-btn:first-child[data-tooltip]:focus-visible:before{transform:translateY(0)}.icon-btn-spin svg{animation:.9s linear infinite icon-spin}@keyframes icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.table td a:not(.icon-btn),.checklist-body>a{min-width:24px;margin:-4px -6px;padding:4px 6px;display:inline-block}@media (pointer:coarse){.icon-btn{width:40px;height:40px}input[type=checkbox]{width:20px;height:20px}}.btn .btn-icon{vertical-align:-2px;margin-right:2px;display:inline-flex}
