@font-face{font-family:Cabinet Grotesk;font-style:normal;font-display:swap;font-weight:700 800;src:url(/fonts/cabinet-grotesk-variable-latin.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cabinet Grotesk;font-style:normal;font-display:swap;font-weight:700 800;src:url(/fonts/cabinet-grotesk-variable-latin-ext.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400 600;src:url(/fonts/inter-variable-latin.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400 600;src:url(/fonts/inter-variable-latin-ext.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400 500;src:url(/fonts/jetbrains-mono-variable-latin.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400 500;src:url(/fonts/jetbrains-mono-variable-latin-ext.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{color-scheme:light dark}:root.light{color-scheme:light}:root.dark{color-scheme:dark}:root{--cam-color-primary: light-dark(#0e1f17, #edf7ef);--cam-color-primary-solid: light-dark(#0e1f17, #edf7ef);--cam-color-on-primary: light-dark(#ffffff, #0c1712);--cam-color-primary-pressed: light-dark(#050d09, #d3e2d6);--cam-color-accent: #c6f55f;--cam-color-accent-hover: light-dark(#bcef45, #d5fa85);--cam-color-accent-pressed: light-dark(#b0e62e, #b0e62e);--cam-color-accent-ink: #0e1f17;--cam-color-accent-text: light-dark(#4c6b10, #c6f55f);--cam-color-accent-tint: light-dark(#f1fbda, #223618);--cam-color-accent-tint-strong: light-dark(#e4f7b8, #2e4a1f);--cam-color-bg: light-dark(#ffffff, #0c1712);--cam-color-bg-tinted: light-dark(#f8f9f4, #0c1712);--cam-color-surface: light-dark(#ffffff, #13231b);--cam-color-surface-alt: light-dark(#eef1ee, #1a2f24);--cam-color-border: light-dark(#d3d8d3, #31463b);--cam-color-border-strong: light-dark(#57625a, #7d9184);--cam-color-text: light-dark(#0e1f17, #edf7ef);--cam-color-text-secondary: light-dark(#39443d, #c1ccc3);--cam-color-text-muted: light-dark(#57615a, #9caca0);--cam-color-focus: light-dark(#0e1f17, #c6f55f);--cam-color-success: light-dark(#38701c, #6fb024);--cam-color-success-bg: light-dark(#edf8dc, #1e3312);--cam-color-success-text: light-dark(#33600f, #8fd14f);--cam-color-error: light-dark(#d92d20, #f87171);--cam-color-error-bg: light-dark(#feecea, #3a1512);--cam-color-error-text: light-dark(#9a1c13, #f87171);--cam-color-warning: light-dark(#b45309, #fbbf24);--cam-color-warning-bg: light-dark(#fef3e2, #33270e);--cam-color-warning-text: light-dark(#8a4106, #fbbf24);--cam-color-info: light-dark(#0e7490, #67e8f9);--cam-color-info-bg: light-dark(#e0f5fa, #12333d);--cam-color-info-text: light-dark(#0e7490, #67e8f9);--cam-color-crit-lang-text: light-dark(#0e7490, #67e8f9);--cam-color-crit-lang-bg: light-dark(#e0f5fa, #12333d);--cam-color-crit-geo-text: light-dark(#0b7a50, #55e3a0);--cam-color-crit-geo-bg: light-dark(#e3f8ec, #173627);--cam-color-crit-device-text: light-dark(#7c3aed, #c4b5fd);--cam-color-crit-device-bg: light-dark(#f1eafd, #2a1d52);--cam-color-crit-time-text: light-dark(#b45309, #fbbf24);--cam-color-crit-time-bg: light-dark(#fef3e2, #33270e);--cam-color-crit-ref-text: light-dark(#be185d, #f27fb0);--cam-color-crit-ref-bg: light-dark(#fce7f1, #3a1226);--cam-halo-signal: light-dark(rgb(198 245 95 / .7), rgb(198 245 95 / .34));--cam-halo-red: light-dark(rgb(217 45 32 / .38), rgb(248 113 113 / .3));--cam-halo-opacity: light-dark(1, .8);--cam-color-panel: light-dark(#0e1f17, #050d09);--cam-color-on-panel: #edf7ef;--cam-color-on-panel-muted: rgb(237 247 239 / .62);--cam-color-panel-track: rgb(255 255 255 / .14);--cam-glow-signal: 0 0 10px rgb(198 245 95 / .7);--cam-glow-amber: 0 0 12px light-dark(rgb(180 83 9 / .45), rgb(251 191 36 / .6));--cam-glow-laser: 0 0 10px light-dark(rgb(217 45 32 / .5), rgb(248 113 113 / .55));--cam-color-led-amber: #fbbf24;--cam-color-led-laser: light-dark(#d92d20, #f87171);--cam-gradient-signal: light-dark( linear-gradient(120deg, #2e4a12 0%, #7fb52a 45%, #c6f55f 100%), linear-gradient(120deg, #3e6414 0%, #8fc734 45%, #c6f55f 100%) );--cam-shadow-sm: 0 1px 2px light-dark(rgb(14 31 23 / .09), rgb(0 0 0 / .3));--cam-shadow-md: 0 4px 12px light-dark(rgb(14 31 23 / .12), rgb(0 0 0 / .4));--cam-shadow-lift: 0 10px 28px light-dark(rgb(14 31 23 / .17), rgb(0 0 0 / .5));--cam-shadow-console: 0 1px 2px light-dark(rgb(14 31 23 / .05), rgb(0 0 0 / .3)), 0 14px 32px light-dark(rgb(14 31 23 / .09), rgb(0 0 0 / .5)), 0 0 32px light-dark(rgb(198 245 95 / .22), rgb(198 245 95 / .09));--cam-color-lime: var(--cam-color-accent);--cam-color-lime-tint: var(--cam-color-accent-tint);--cam-color-lime-text: var(--cam-color-accent-text);--cam-color-primary-tint: var(--cam-color-accent-tint);--cam-halo-green: var(--cam-halo-signal);--cam-halo-lime: var(--cam-halo-signal);--cam-gradient-pousse: var(--cam-gradient-signal);--cam-font-display: "Cabinet Grotesk", "Avenir Next", "Segoe UI Variable Display", "Segoe UI", system-ui, -apple-system, sans-serif;--cam-font-body: "Inter", "SF Pro Text", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--cam-font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", "Cascadia Code", Menlo, Consolas, monospace;--cam-text-display-xl: 60px/62px var(--cam-font-display);--cam-text-display-lg: 42px/48px var(--cam-font-display);--cam-text-heading-1: 32px/38px var(--cam-font-display);--cam-text-heading-2: 24px/30px var(--cam-font-display);--cam-text-heading-3: 20px/28px var(--cam-font-body);--cam-text-body-lg: 18px/28px var(--cam-font-body);--cam-text-body: 16px/24px var(--cam-font-body);--cam-text-body-sm: 14px/20px var(--cam-font-body);--cam-text-caption: 12px/16px var(--cam-font-body);--cam-text-mono-sm: 13px/20px var(--cam-font-mono);--cam-space-1: 4px;--cam-space-2: 8px;--cam-space-3: 12px;--cam-space-4: 16px;--cam-space-5: 20px;--cam-space-6: 24px;--cam-space-8: 32px;--cam-space-10: 40px;--cam-space-16: 64px;--cam-radius-xs: 8px;--cam-radius-sm: 12px;--cam-radius-md: 16px;--cam-radius-lg: 24px;--cam-radius-full: 999px;--cam-ease-signal: cubic-bezier(.2, .8, .2, 1);--cam-ease-pop: cubic-bezier(.34, 1.4, .64, 1);--cam-duration-fast: .12s;--cam-duration-base: .2s;--cam-duration-slow: .32s;--cam-z-dropdown: 1000;--cam-z-sticky: 1020;--cam-z-overlay: 1040;--cam-z-toast: 1060;--cam-z-tooltip: 1080}:root{--tt-status-uploaded-text: var(--cam-color-info-text);--tt-status-uploaded-bg: var(--cam-color-info-bg);--tt-status-uploaded: var(--cam-color-info);--tt-status-extracting-text: var(--cam-color-crit-device-text);--tt-status-extracting-bg: var(--cam-color-crit-device-bg);--tt-status-extracting: var(--cam-color-crit-device-text);--tt-status-extracted-text: var(--cam-color-warning-text);--tt-status-extracted-bg: var(--cam-color-warning-bg);--tt-status-extracted: var(--cam-color-warning);--tt-status-validated-text: var(--cam-color-success-text);--tt-status-validated-bg: var(--cam-color-success-bg);--tt-status-validated: var(--cam-color-success);--tt-status-failed-text: var(--cam-color-error-text);--tt-status-failed-bg: var(--cam-color-error-bg);--tt-status-failed: var(--cam-color-error);--tt-status-rejected-text: var(--cam-color-text-muted);--tt-status-rejected-bg: var(--cam-color-surface-alt);--tt-status-rejected: var(--cam-color-text-muted);--tt-confidence-high: var(--cam-color-success);--tt-confidence-high-bg: var(--cam-color-success-bg);--tt-confidence-high-text: var(--cam-color-success-text);--tt-confidence-medium: var(--cam-color-warning);--tt-confidence-medium-bg: var(--cam-color-warning-bg);--tt-confidence-medium-text: var(--cam-color-warning-text);--tt-confidence-low: var(--cam-color-error);--tt-confidence-low-bg: var(--cam-color-error-bg);--tt-confidence-low-text: var(--cam-color-error-text);--tt-viewer-bg: light-dark(#0e1f17, #060d0a);--tt-scan-overlay: rgb(198 245 95 / .28);--tt-dialog-backdrop: rgb(14 31 23 / .4);--tt-timeline-track: var(--cam-color-border-strong);--tt-timeline-onsite: var(--cam-color-primary);--tt-scan-sweep-duration: 2.4s;--tt-fill-stagger: 80ms}.cam-emitter{--cam-halo: var(--cam-halo-signal);position:relative;transition:box-shadow .22s var(--cam-ease-signal),transform var(--cam-duration-fast) var(--cam-ease-signal),background-color var(--cam-duration-fast) var(--cam-ease-signal),color var(--cam-duration-fast) var(--cam-ease-signal)}.cam-emitter:hover,.cam-emitter:focus-visible{box-shadow:0 0 26px 3px var(--cam-halo)}.cam-emitter--green,.cam-emitter--lime{--cam-halo: var(--cam-halo-signal)}.cam-emitter--red{--cam-halo: var(--cam-halo-red)}.cam-emitter--breathing{animation:cam-breathe 3.5s ease-in-out infinite}@keyframes cam-breathe{0%,to{box-shadow:0 0 14px 1px var(--cam-halo)}50%{box-shadow:0 0 30px 7px var(--cam-halo)}}.cam-ripple-clip{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none}.cam-ripple{position:absolute;border-radius:var(--cam-radius-full);background:var(--cam-color-accent);opacity:.45;transform:translate(-50%,-50%) scale(0);pointer-events:none;animation:cam-ripple .45s var(--cam-ease-signal) forwards}@keyframes cam-ripple{to{opacity:0;transform:translate(-50%,-50%) scale(2.2)}}.cam-ping-wave{position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:var(--cam-radius-full);background:var(--cam-color-accent);opacity:.5;transform:translate(-50%,-50%) scale(1);pointer-events:none;animation:cam-ping .5s var(--cam-ease-signal) forwards}@keyframes cam-ping{0%{opacity:.5;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(3.667)}}.cam-aim{--cam-aim-size: 9px;--cam-aim-weight: 2px;--cam-aim-inset: -1px;--cam-aim-color: var(--cam-color-accent-text);--cam-aim-radius: var(--cam-radius-sm);position:relative}.cam-aim__corner{position:absolute;width:var(--cam-aim-size);height:var(--cam-aim-size);border:var(--cam-aim-weight) solid var(--cam-aim-color);opacity:0;transform:scale(1.5);transition:opacity .18s var(--cam-ease-signal),transform .18s var(--cam-ease-pop);pointer-events:none}.cam-aim__corner--tl{--cam-aim-dx: 3px;--cam-aim-dy: 3px;top:var(--cam-aim-inset);left:var(--cam-aim-inset);border-right:0;border-bottom:0;border-top-left-radius:var(--cam-aim-radius)}.cam-aim__corner--tr{--cam-aim-dx: -3px;--cam-aim-dy: 3px;top:var(--cam-aim-inset);right:var(--cam-aim-inset);border-left:0;border-bottom:0;border-top-right-radius:var(--cam-aim-radius)}.cam-aim__corner--bl{--cam-aim-dx: 3px;--cam-aim-dy: -3px;bottom:var(--cam-aim-inset);left:var(--cam-aim-inset);border-right:0;border-top:0;border-bottom-left-radius:var(--cam-aim-radius)}.cam-aim__corner--br{--cam-aim-dx: -3px;--cam-aim-dy: -3px;bottom:var(--cam-aim-inset);right:var(--cam-aim-inset);border-left:0;border-top:0;border-bottom-right-radius:var(--cam-aim-radius)}.cam-aim--on .cam-aim__corner{opacity:1;transform:scale(1)}.cam-aim--reticle{--cam-aim-radius: var(--cam-radius-md)}.cam-aim--reticle .cam-aim__corner{--cam-aim-size: 16px;--cam-aim-weight: 2.5px;opacity:.85;transform:none;transition:none}.cam-aim--reticle:hover .cam-aim__corner{animation:cam-aim-focus .45s var(--cam-ease-pop)}@keyframes cam-aim-focus{0%,to{transform:none;opacity:.85}45%{transform:translate(var(--cam-aim-dx),var(--cam-aim-dy));opacity:1}}.cam-sweep{position:relative;overflow:hidden}.cam-sweep:after{content:"";position:absolute;top:0;bottom:0;left:0;width:34%;background:linear-gradient(100deg,transparent 30%,rgb(198 245 95 / .4) 50%,transparent 70%);transform:translate(-130%);pointer-events:none;animation:cam-sweep .8s ease .15s 1 both}@keyframes cam-sweep{to{transform:translate(340%)}}.cam-charge{overflow:hidden;border-radius:var(--cam-radius-full)}.cam-charge__fill{display:block;width:0;height:100%;border-radius:var(--cam-radius-full);background:var(--cam-gradient-signal);box-shadow:var(--cam-glow-signal);transition:width .7s var(--cam-ease-signal)}.cam-charge--on .cam-charge__fill{width:var(--cam-charge, 0%)}.cam-ping-ring{position:relative}.cam-ping-ring:after{content:"";position:absolute;inset:-3px;border-radius:var(--cam-radius-full);border:1.5px solid var(--cam-ping-color, var(--cam-color-accent));animation:cam-ping-ring 1.9s var(--cam-ease-signal) infinite}.cam-ping-ring--laser{--cam-ping-color: var(--cam-color-led-laser)}@keyframes cam-ping-ring{0%{transform:scale(1);opacity:.7}to{transform:scale(var(--cam-ping-scale, 2.6));opacity:0}}.cam-focus-pull{animation:cam-focus-pull .22s var(--cam-ease-signal)}@keyframes cam-focus-pull{0%{opacity:0;transform:scale(.985)}}@media(prefers-reduced-motion:reduce){.cam-emitter{transition:none}.cam-emitter--breathing{animation:none;box-shadow:0 0 18px 2px var(--cam-halo)}.cam-ripple{display:none;animation:none}.cam-ping-wave{transform:translate(-50%,-50%) scale(1);animation:cam-ping-fade .5s var(--cam-ease-signal) forwards}.cam-aim__corner,.cam-aim--reticle:hover .cam-aim__corner{transition:none;transform:none;animation:none}.cam-sweep:after{animation:none}.cam-charge__fill{transition:none}.cam-ping-ring:after{animation:none;opacity:.35}.cam-focus-pull{animation:none}}@keyframes cam-ping-fade{0%{opacity:.5}to{opacity:0}}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors:active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:0 auto auto 0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}*,*:before,*:after{box-sizing:border-box}html{height:100%}body{margin:0;height:100%;background-color:var(--cam-color-bg);color:var(--cam-color-text);font:var(--cam-text-body);font-family:var(--cam-font-body);-webkit-font-smoothing:antialiased}.tt-dialog-backdrop{background:var(--tt-dialog-backdrop)}:focus-visible{outline:2px solid var(--cam-color-focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*:not(.cam-emitter):not(.cam-ripple):not(.cam-ping-wave),*:not(.cam-emitter):before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
