@font-face{font-family:Geist;src:url(/fonts/geist-latin-variable.woff2) format("woff2");font-style:normal;font-weight:100 900;font-display:swap}:root{font-family:Geist,Arial,sans-serif;color:#101214;background:#f8f9f8;font-synthesis:none;font-weight:400}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:0;background:none}button:disabled{cursor:wait;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid #355FC2;outline-offset:3px}button,input,select{-webkit-tap-highlight-color:transparent}h1,h2,p{margin:0}.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:600;color:#747a80}.brand-logo{display:block;width:112px;height:auto;flex-shrink:0}.entry{min-height:100dvh;display:flex;flex-direction:column;padding:40px 5vw;background:#f8f9f8}.entry-brand{display:flex;align-items:center;gap:18px;font-size:12px;font-weight:600;letter-spacing:2px}.login{width:min(100%,390px);margin:auto;padding:24px 0}.login h1{font-size:46px;letter-spacing:-2px;font-weight:550;margin:18px 0 10px}.login>p{color:#34383b;line-height:1.6;margin-bottom:35px}.login>label{display:block;font-size:12px;font-weight:550;margin:22px 0 10px}.login input{width:100%;border:1px solid #D9DDE0;border-radius:5px;background:#ffffff8c;padding:13px 14px;font-size:13px}.primary{display:flex;justify-content:space-between;align-items:center;width:100%;padding:15px 18px;background:#101214;color:#fff;border-radius:5px;margin:24px 0 18px}.primary:hover{background:#34383b}.login small{font-size:11px;color:#747a80}.entry footer{display:flex;justify-content:space-between;font-size:11px;color:#747a80}.login .form-error{font-size:12px;color:#c63b4e;margin:15px 0}.viewer{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:82px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#fff;border-bottom:1px solid #D9DDE0;gap:20px}.identity{display:flex;align-items:center;gap:15px;min-width:0}.brand-name{font-size:10px;font-weight:700;letter-spacing:1.4px}.header-divider{height:27px;width:1px;background:#d9dde0;margin:0 10px}.identity h1,.identity select{font-size:14px;font-weight:550;margin-top:5px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:43vw}.identity select{border:0;background:none}.header-actions{display:flex;align-items:center;gap:25px;flex-shrink:0;font-size:12px}.header-actions>button{color:#34383b}.private{display:flex;align-items:center;gap:7px;font-size:11px;color:#747a80}.private>span,.status-dot{width:5px;height:5px;border-radius:50%;background:#2f8660;display:inline-block}.workspace{position:relative;flex:1;min-height:0;isolation:isolate}.scene{position:absolute;inset:0;overflow:hidden}.scene canvas{display:block;width:100%;height:100%;touch-action:none}.segment{display:flex;background:#f1f3f4;border-radius:5px;padding:3px;gap:2px}.segment button{font-size:12px;padding:9px 17px;flex:1;white-space:nowrap;border-radius:3px;color:#34383b}.segment button[aria-pressed=true]{background:#fff;color:#101214;box-shadow:0 1px 3px #283c2920}.panel-toggle{border-radius:5px;background:#ffffffed;display:flex;gap:15px;align-items:center;padding:10px 14px;font-size:12px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.index{font-size:11px;color:#747a80}.reset-view{margin-top:8px;color:#34383b;font-size:11px;padding:6px 10px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;padding:10px 0;position:relative;cursor:pointer}.toggle-row.disabled{opacity:.4;cursor:default}.toggle-row input{position:absolute;right:0;width:32px;height:20px;opacity:0;cursor:inherit}.toggle{width:29px;height:17px;background:#d9dde0;border-radius:20px;pointer-events:none;flex-shrink:0}.toggle:after{content:"";display:block;width:11px;height:11px;border-radius:50%;margin:3px;background:#fff;transition:transform .15s}.toggle-row input:checked+.toggle{background:#101214}.toggle-row input:checked+.toggle:after{transform:translate(12px)}.toggle-row input:focus-visible+.toggle{outline:2px solid #355FC2;outline-offset:4px}.panel-note{font-size:10px;line-height:1.8;color:#34383b;padding-top:17px}.navigation-hint{position:absolute;bottom:24px;left:50%;transform:translate(-50%);font-size:11px;color:#34383b;background:#ffffffed;padding:9px 15px;border-radius:5px;white-space:nowrap;pointer-events:none}.scene-caption{position:absolute;bottom:27px;left:26px;font-size:10px;color:#34383b;display:flex;align-items:center;gap:8px}.caption-divider{color:#747a80;margin:0 3px}.scene-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:18px 24px;background:#fffffff2;border:1px solid #D9DDE0;border-radius:7px;font-size:13px;display:flex;align-items:center;gap:12px;max-width:80%;z-index:4}.error{color:#c63b4e}.spinner{width:15px;height:15px;border:2px solid #D9DDE0;border-top-color:#101214;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scene-label{position:absolute;transform:translate(-50%,-140%);font-size:10px;background:#ffffffed;color:#101214;border:1px solid #D9DDE0;border-radius:4px;padding:5px 8px;white-space:nowrap;box-shadow:0 2px 8px #233c2810}.scene-label:hover{background:#fff;z-index:2}.equipment-card{position:absolute;left:26px;bottom:80px;max-width:320px;background:#fffffff2;border:1px solid white;border-radius:7px;padding:23px;box-shadow:0 8px 40px #363d3010}.equipment-card h2{font-size:18px;font-weight:550;margin:10px 0}.equipment-card p{font-size:12px;color:#34383b;line-height:1.6}.equipment-card .equipment-model{color:#101214;margin-bottom:10px}.coordinates{font-size:10px;color:#747a80;margin-top:17px;border-top:1px solid #D9DDE0;padding-top:12px}.close{position:absolute;top:8px;right:8px;font-size:23px;color:#34383b;width:30px;height:30px}.legend{position:absolute;bottom:86px;left:50%;transform:translate(-50%);width:190px;background:#ffffffed;border-radius:5px;padding:12px 15px;font-size:10px;color:#34383b}.spectrum{height:6px;border-radius:3px;margin:9px 0 5px;background:linear-gradient(to right,#1e35df,#1dddaa,#63dd1d,#dddd1d,#dd1d1d)}.legend-values{display:flex;justify-content:space-between}.legend small{font-size:9px;display:block;margin-top:6px;color:#747a80}.top-error{background:#f8f9f8;color:#c63b4e;padding:12px 28px;font-size:12px;display:flex;justify-content:space-between}.top-error button{text-decoration:underline}@media(max-width:1000px){.brand-name,.scene-caption{display:none}.navigation-hint{left:26px;transform:none;font-size:10px}.legend{left:26px;transform:none;bottom:75px}}@media(max-width:600px){.topbar{height:70px;padding:0 16px;gap:10px}.identity{gap:10px}.identity h1,.identity select{font-size:12px;max-width:45vw}.header-divider,.private,.brand-name{display:none}.identity .eyebrow{font-size:8px}.brand-logo{width:74px}.header-actions{font-size:10px}.segment button{padding:9px 15px}.navigation-hint{left:14px;bottom:18px;padding:9px 10px;font-size:9px;max-width:calc(100% - 28px);white-space:normal}.equipment-card{left:14px;right:14px;bottom:65px;max-width:none;z-index:4}.legend{left:14px;bottom:67px;width:150px}.scene-label{font-size:9px}.entry{padding:28px 7vw}.login h1{font-size:42px}.scene-status{font-size:12px;padding:15px;max-width:90%}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}.toggle:after{transition:none}}.login>.brand-logo{width:136px;margin-bottom:36px}.primary{justify-content:center}.identity h1{margin-top:0}.entry{background:#f1f3f4;padding:24px}.login{width:min(100%,408px);padding:48px 36px 36px;background:#fff;border:1px solid #1012140a;border-radius:16px;box-shadow:0 2px 4px #10121403,0 16px 48px -20px #10121424}.login>.brand-logo{width:132px;margin:0 auto 36px}.login h1{margin:0 0 36px;font-size:23px;font-weight:450;line-height:1.2;letter-spacing:-.035em;text-align:center}.access-row{display:flex;align-items:center;gap:4px;padding:5px;background:#f8f9f8;border:1px solid #D9DDE0;border-radius:9px;transition:border-color .15s}.access-row:hover{border-color:#747a80}.access-row:focus-within{border-color:#101214;outline:2px solid #355FC2;outline-offset:3px}.access-row input{min-width:0;flex:1;height:44px;padding:0 10px;background:transparent;border:0;border-radius:0;font-size:14px;letter-spacing:.01em}.access-row input:focus-visible{outline:none}.access-row input::placeholder{color:#747a80;opacity:1}.access-submit{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;padding:0;background:#101214;color:#fff;border-radius:5px;transition:background .15s}.access-submit:hover{background:#34383b}.access-submit svg{width:20px;height:20px}.access-submit .spinner{border-color:#747a80;border-top-color:#fff}.login .form-error{margin:16px 0 0;font-size:12px;line-height:1.5}.login .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(max-width:600px){.entry{padding:24px}.login{padding:40px 24px 28px}.login h1{font-size:23px;margin-bottom:32px}}@media(prefers-reduced-motion:reduce){.access-row,.access-submit{transition:none}}.project-shell .topbar{height:80px;padding:0 40px}.project-name{font-size:14px;font-weight:500;line-height:1.4}a:focus-visible{outline:2px solid #355FC2;outline-offset:3px}.dashboard-scroll{flex:1;min-height:0;overflow:auto;background:#f8f9f8}.resource-feed,.project-document{width:min(100%,880px);margin:0 auto;padding:56px 40px 80px}.feed-heading{padding-bottom:36px}.feed-heading h1,.project-document>h1{font-size:clamp(27px,3vw,34px);font-weight:550;letter-spacing:-.045em;line-height:1.15}.feed-heading p{font-size:15px;line-height:1.65;color:#747a80;max-width:56ch;margin-top:12px}.resource-list{padding:0;margin:0;list-style:none}.resource-list li{padding:30px 0 32px;border-top:1px solid #D9DDE0}.resource-meta{display:flex;flex-wrap:wrap;gap:16px;color:#747a80;font-size:12px;margin-bottom:14px}.resource-list h2{font-size:21px;font-weight:500;letter-spacing:-.025em;line-height:1.4}.resource-list h2 a{color:#101214;text-decoration:none;display:flex;justify-content:space-between;gap:24px}.resource-list h2 a:hover{text-decoration:underline;text-underline-offset:5px}.resource-list h2 a span{color:#747a80;font-size:21px;font-weight:400;flex-shrink:0}.resource-list p{font-size:14px;line-height:1.7;color:#34383b;max-width:68ch;margin-top:10px}.project-document section{margin-top:36px}.project-document h2{font-size:18px;font-weight:550;letter-spacing:-.02em;margin-bottom:12px}.project-document p{white-space:pre-line;color:#34383b;line-height:1.75;font-size:15px}.empty-feed{padding:32px 0;color:#747a80;border-top:1px solid #D9DDE0;line-height:1.6}.dashboard-loading{padding:40px;color:#747a80}@media(max-width:600px){.project-shell .topbar{height:auto;min-height:80px;padding:18px 24px;align-items:flex-start;gap:18px}.project-shell .identity{flex-wrap:wrap;gap:12px}.project-shell .brand-logo{width:86px}.project-shell .header-divider{display:none}.project-name{width:100%;font-size:12px;max-width:230px}.project-shell .header-actions button{white-space:nowrap;min-height:44px;padding:0}.resource-feed,.project-document{padding:32px 24px 48px}.feed-heading{padding-bottom:28px}.resource-list li{padding:24px 0}.resource-list h2{font-size:19px}.resource-meta{font-size:11px;gap:8px}}.detail-navigation{display:flex;align-items:center;gap:24px;padding:0 40px;min-height:48px;border-bottom:1px solid #D9DDE0;background:#fff;flex-shrink:0;font-size:12px}.detail-navigation a{color:#34383b;text-decoration:none;padding:12px 0}.detail-navigation span{color:#747a80}.resource-feed{width:min(100%,940px)}.feed-heading{padding-bottom:32px}.resource-list li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:20px;padding:26px 0}.resource-icon{width:36px;height:36px;display:grid;place-items:center;background:#ecefed;border-radius:9px;color:#50575a}.resource-icon svg{width:20px;height:20px}.resource-meta{margin-bottom:6px;gap:12px}.resource-meta time{margin-left:auto}.resource-list h2{font-size:19px;line-height:1.4}.resource-list p{margin-top:7px;line-height:1.6;max-width:65ch}.resource-list article{min-width:0}.workspace{container-type:size}.ptz-mode{background:#171a1c}.ptz-mode .scene{inset:50% auto auto 50%;width:min(100cqw,177.777cqh);height:auto;aspect-ratio:16/9;transform:translate(-50%,-50%)}.camera-assumption{font-size:11px;line-height:1.5;color:#747a80;margin-top:8px}@media(max-width:600px){.detail-navigation{padding:0 20px;gap:16px}.resource-feed{padding:28px 20px 48px}.resource-list li{grid-template-columns:30px minmax(0,1fr);gap:12px;padding:22px 0}.resource-icon{width:30px;height:30px;border-radius:7px}.resource-icon svg{width:17px;height:17px}.resource-meta{font-size:10px;gap:8px}.resource-list h2{font-size:17px}.resource-list p{font-size:13px}}.space-topbar{position:absolute;z-index:5;top:16px;left:16px;right:16px;display:flex;align-items:center;gap:12px;padding:6px;background:#fffef9f5;border:1px solid #10121412;border-radius:10px;width:fit-content;max-width:calc(100% - 32px)}.space-topbar button{min-height:36px;font-size:12px;padding:8px 12px;border-radius:6px;white-space:nowrap}.space-topbar .segment{background:#e9ece9;border-radius:7px;padding:3px}.layer-buttons{display:flex;gap:3px;border-left:1px solid #D9DDE0;padding-left:10px}.layer-buttons button{background:transparent;color:#747a80}.layer-buttons button[aria-pressed=true]{background:#e9ece9;color:#101214}.space-reset{background:transparent;color:#34383b}.movement-controls{position:absolute;z-index:3;left:16px;bottom:16px;width:166px;padding:12px;background:#fffffff5;border:1px solid #10121412;border-radius:10px}.movement-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:550;margin-bottom:10px}.movement-heading label{font-size:11px;font-weight:400;display:flex;align-items:center;gap:4px}.direction-pad{display:grid;grid-template-columns:repeat(3,40px);justify-content:center;gap:5px}.direction-pad button{height:38px;border-radius:6px;border:1px solid #D9DDE0;background:#f5f6f4;touch-action:none;-webkit-user-select:none;user-select:none}.direction-pad button:first-child{grid-column:2}.direction-pad button:nth-child(2){grid-column:1}.direction-pad button:active{background:#d9dddf}.movement-controls small{display:block;font-size:10px;line-height:1.45;color:#747a80;margin-top:10px}.zoom-controls{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:12px}.zoom-controls button{width:32px;height:30px;background:#f1f3f4;border-radius:5px}.zoom-slider{width:100%;margin-top:9px;accent-color:#101214}.legend{left:auto;right:16px;bottom:16px;transform:none;width:166px;padding:12px;border-radius:10px}.navigation-hint{left:16px;bottom:16px;transform:none;width:166px;padding:12px;line-height:1.6;border-radius:10px;white-space:normal}.equipment-card{bottom:260px}@media(max-width:800px){.space-topbar{right:12px;left:12px;top:12px;max-width:calc(100% - 24px);flex-wrap:wrap;gap:4px}.space-topbar button{font-size:11px;padding:7px 9px;min-height:34px}.layer-buttons{border-left:0;padding-left:0;order:3;width:100%}.space-reset{margin-left:auto}.movement-controls{left:12px;bottom:12px;width:150px;padding:10px}.legend{right:12px;bottom:12px;width:142px}.equipment-card{bottom:270px}.direction-pad{grid-template-columns:repeat(3,36px);gap:4px}}.keyboard-hints{margin-top:12px;padding-top:10px;border-top:1px solid #D9DDE0;font-size:10px;line-height:1.5;color:#60666b}.keyboard-hints p{margin:0}.keyboard-hints dl{margin:8px 0}.keyboard-hints dl>div{display:grid;grid-template-columns:38px 1fr;gap:4px;margin:5px 0}.keyboard-hints dd{margin:0;color:#303638}@media(max-width:800px){.navigation-hint{left:12px;bottom:12px;width:150px;padding:10px}}.keyboard-hints kbd{font:inherit;font-weight:500;color:#303638;white-space:nowrap}.pin-toolbar{display:flex;gap:3px;border-left:1px solid #D9DDE0;padding-left:8px}.pin-toolbar button{background:transparent;color:#34383b}.pin-toolbar button[aria-pressed=true]{background:#101214;color:#fff}.placing-pins canvas{cursor:crosshair}.location-label{position:absolute;transform:translate(-50%,-100%);z-index:2;padding:6px 10px;background:#fff;color:#101214;border:1px solid #101214;border-radius:6px;font-size:12px;max-width:220px;overflow-wrap:anywhere}.location-label[hidden]{display:none}.placing-pins .location-label{pointer-events:none}.location-card{position:absolute;z-index:6;right:16px;top:86px;width:310px;max-height:calc(100% - 110px);overflow:auto;background:#fffffff5;border:1px solid #D9DDE0;border-radius:10px;padding:18px;box-shadow:0 6px 24px #10121412}.location-card h2{font-size:16px;margin:0 24px 12px 0}.location-card .close{position:absolute;top:10px;right:12px;background:transparent;font-size:22px}.location-card label{display:block;font-size:12px;margin-bottom:6px}.location-card input{width:100%;padding:10px;border:1px solid #a5aaad;border-radius:6px;background:#fff;font:inherit;font-size:13px}.pin-note,.pin-empty{font-size:11px;line-height:1.5;color:#60666b;margin:8px 0}.pin-list{list-style:none;padding:0;margin:12px 0;max-height:200px;overflow:auto}.pin-list li{padding:10px 0;border-top:1px solid #D9DDE0}.pin-focus{background:transparent;text-align:left;padding:0;color:#101214;font-size:13px;font-weight:550;overflow-wrap:anywhere;max-width:100%}.pin-focus[aria-pressed=true]{text-decoration:underline;text-underline-offset:3px}.pin-coordinates{display:flex;gap:14px;margin:10px 0;font-size:11px;font-variant-numeric:tabular-nums}.pin-coordinates div{display:flex;gap:5px}.pin-coordinates dt{color:#747a80}.pin-coordinates dd{margin:0}.pin-actions{display:flex;justify-content:space-between;gap:10px;margin-top:14px}.pin-actions button,.copy-locations{padding:9px 12px;border-radius:6px;font-size:12px;background:#ecefed;color:#101214}.pin-actions button[type=submit]{background:#101214;color:#fff}.pin-actions button:disabled{opacity:.4}.copy-locations{margin-top:10px}.pin-edit{padding-top:12px;border-top:1px solid #D9DDE0}.pin-placement-hint{position:absolute;top:80px;left:16px;z-index:4;background:#fff;padding:10px 12px;border-radius:6px;font-size:12px;pointer-events:none;max-width:calc(100% - 32px)}@media(max-width:1100px){.space-topbar{flex-wrap:wrap}.pin-toolbar{border-left:0;padding-left:0}.location-card,.pin-placement-hint{top:130px}}@media(max-width:600px){.location-card{right:12px;left:12px;width:auto;top:144px;max-height:calc(100% - 160px)}.pin-placement-hint{top:140px;left:12px;font-size:11px}.pin-toolbar button{min-height:34px}.location-label{max-width:180px}}
