html,body,#root{-webkit-user-select:none;user-select:none;background:#1b1d24;height:100%;margin:0;font-family:system-ui,sans-serif;overflow:hidden}html{overscroll-behavior:none}#root{height:100dvh}canvas{touch-action:none}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline-offset:3px;outline:2px solid #ffd49c}.direction-wrap{flex:1;min-width:0;display:flex}.mobile-camera-settings{display:none}.dock{z-index:30}.viewfinder{z-index:10}.info-menu{z-index:45}.info-panel{box-sizing:border-box;max-height:calc(100dvh - 90px);overflow-y:auto}.toast{z-index:60}.lightbox{z-index:70}.flash{z-index:80}.mobile-controls{z-index:25;pointer-events:none;color:#f7f1e7;position:fixed;inset:0}.mobile-controls button{pointer-events:auto;color:inherit;touch-action:none;background:#1b1d24d9;border:1px solid #ffffff45}.flight-left{left:max(18px, env(safe-area-inset-left));bottom:max(16px, env(safe-area-inset-bottom));justify-items:center;gap:6px;display:grid;position:absolute}.flight-speed{border-radius:20px;min-width:88px;min-height:44px;font-size:12px}.flight-speed[aria-pressed=true]{background:#a84d13}.flight-stick{border-radius:50%;width:116px;height:116px;padding:0;position:relative}.stick-cross{opacity:.35;font-size:50px}.stick-thumb{width:44px;height:44px;transform:translate(var(--stick-x,0px), var(--stick-y,0px));background:#f1e8d9cc;border:1px solid #fff9;border-radius:50%;position:absolute;top:35px;left:35px;box-shadow:0 3px 12px #0005}.flight-label{letter-spacing:2px;text-shadow:0 1px 3px #000;font-size:9px}.flight-height{right:max(20px, env(safe-area-inset-right));bottom:calc(108px + env(safe-area-inset-bottom));gap:8px;display:flex;position:absolute}.flight-height button{border-radius:50%;width:48px;height:48px;font-size:24px}.flight-zoom{right:max(16px, env(safe-area-inset-right));top:calc(16px + env(safe-area-inset-top));background:#1b1d24c9;border-radius:25px;align-items:center;gap:6px;display:flex;position:absolute}.flight-zoom button{border:0;border-radius:50%;width:44px;height:44px;font-size:23px}.flight-zoom span{letter-spacing:1px;font-size:9px}.flight-hint{top:calc(72px + env(safe-area-inset-top));white-space:nowrap;text-shadow:0 1px 4px #000;font-size:11px;position:absolute;left:50%;transform:translate(-50%)}.flight-cancel{top:calc(94px + env(safe-area-inset-top));border-radius:22px;min-height:44px;padding:0 14px;position:absolute;left:50%;transform:translate(-50%)}@media (pointer:coarse){.viewfinder .vf-top,.viewfinder .vf-bottom{display:none}.mobile-camera-settings{top:calc(100px + env(safe-area-inset-top));pointer-events:auto;background:#1b1d24ed;border-radius:18px;max-height:calc(100dvh - 260px);display:block;position:fixed;left:16px;right:16px;overflow-y:auto}.mobile-camera-settings summary{cursor:pointer;justify-content:center;align-items:center;min-height:44px;display:flex}.mobile-camera-fields{grid-template-columns:1fr 1fr;gap:12px;padding:8px 14px 16px;display:grid}.mobile-camera-fields label{color:#b7c1ca;gap:5px;min-width:0;font-size:11px;display:grid}.mobile-camera-fields select{color:#fff;background:#30343c;border:1px solid #59606b;border-radius:8px;width:100%;min-width:0;min-height:44px;padding:4px;font-size:16px}:is(.dock,.dock:has(.direction)){left:auto;right:max(16px, env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));gap:8px;width:auto;max-width:calc(100% - 160px);transform:none}.dock .camera-toggle,.dock .shutter{width:60px;height:60px}.camera-toggle svg{width:26px;height:26px}.vf-close{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));width:44px;height:44px}.dock .recent{width:48px;height:44px;position:fixed;bottom:156px;right:4px}.direction-wrap{left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));bottom:calc(222px + env(safe-area-inset-bottom));background:#1b1d24e6;border:1px solid #ffffff30;border-radius:24px;padding:5px 8px;position:fixed}.direction input{font-size:16px}.direction button{width:44px;height:44px}.ai-off{bottom:calc(204px + env(safe-area-inset-bottom));font-size:10px;position:fixed;right:16px}.info-menu{top:calc(16px + env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left))}.info-button{width:44px;height:44px}.vf-top{top:calc(108px + env(safe-area-inset-top));justify-content:center;gap:8px;position:fixed;left:12px;right:12px}.vf-bottom{top:calc(155px + env(safe-area-inset-top));gap:4px;padding:0;position:fixed;bottom:auto;left:12px;right:12px}.dial:not(.fixed),.meter{box-sizing:border-box;background:#1b1d24bf;border-radius:8px;min-height:44px}.meter{align-items:center}.dial.mode{min-width:44px}.dial.focus{display:none}.lb-bar{padding:0 12px max(12px, env(safe-area-inset-bottom));gap:6px;font-size:12px}.lb-bar button,.lb-status button{min-height:44px}.speech{white-space:normal;max-width:80vw}}@media (pointer:coarse) and (height<=540px){.mobile-camera-settings{max-height:calc(100dvh - 122px);top:50px;left:150px;right:160px}.flight-left{bottom:max(8px, env(safe-area-inset-bottom))}.flight-stick{width:100px;height:100px}.stick-thumb{top:27px;left:27px}.flight-hint{top:calc(16px + env(safe-area-inset-top))}.flight-cancel{top:calc(50px + env(safe-area-inset-top))}.direction-wrap{left:150px;right:160px;bottom:max(12px, env(safe-area-inset-bottom))}.vf-top{top:56px;left:148px;right:160px}.vf-bottom{inset:auto 160px 74px 148px}.dock .recent{bottom:164px}}.panel{background:#22252dcc;border:1px solid #3a3e4a;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:10px 14px;display:flex;position:fixed;bottom:84px;left:50%;transform:translate(-50%)}.panel button{color:#ddd;cursor:pointer;background:#2a2d36;border:1px solid #3a3e4a;border-radius:999px;padding:7px 16px;font-size:14px}.panel button:hover{color:#fff;background:#ff7a1a;border-color:#ff7a1a}.viewfinder{pointer-events:none;color:#fff;text-shadow:0 1px 2px #000c;place-items:center;font:500 12.5px ui-monospace,SF Mono,Consolas,monospace;display:grid;position:fixed;inset:0}.vf-frame{outline:1px solid #ffffff73;position:relative;box-shadow:0 0 0 100vmax #080a0e9e}.vf-frame .third{background:#ffffff29;position:absolute}.vf-frame .v1,.vf-frame .v2{width:1px;top:0;bottom:0}.vf-frame .h1,.vf-frame .h2{height:1px;left:0;right:0}.vf-frame .v1{left:33.33%}.vf-frame .v2{left:66.66%}.vf-frame .h1{top:33.33%}.vf-frame .h2{top:66.66%}.vf-grain{mix-blend-mode:overlay;background-size:160px;animation:.35s steps(4,end) infinite grain;position:absolute;inset:0}@keyframes grain{25%{background-position:37px -61px}50%{background-position:-83px 19px}75%{background-position:11px 97px}}.vf-af{border:1.5px solid #fff;border-radius:2px;width:26px;height:26px;transition:left .15s,top .15s,border-color .2s;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 2px #000a}.vf-af.figure,.vf-af.chair{border-color:#6dff94}.vf-af.far{border-style:dashed;border-color:#fffa}.vf-top{justify-content:space-between;align-items:center;display:flex;position:absolute;top:6px;left:8px;right:8px}.vf-lens{gap:2px;display:flex}.vf-bottom{background:linear-gradient(#0000,#0008);flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(6px,2.4vw,22px);padding:5px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.dial{font:inherit;color:inherit;text-shadow:inherit;pointer-events:auto;cursor:ns-resize;white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:2px 6px}.dial:hover{background:#ffffff26}.dial.fixed{cursor:default;opacity:.8;pointer-events:none}.dial.mode{border:1px solid #fffc;padding:1px 6px;font-weight:700}.dial.focus{text-align:left;min-width:12ch}.meter{pointer-events:auto;border-radius:4px;align-items:center;gap:5px;padding:2px 6px;display:inline-flex}.meter.adjustable{cursor:ns-resize}.meter.adjustable:hover{background:#ffffff26}.meter-scale{justify-content:space-between;align-items:flex-start;width:clamp(80px,12vw,130px);height:11px;display:flex;position:relative}.meter-scale i{background:#fffb;width:1px;height:4px}.meter-scale i.major{height:8px}.meter-scale b{border:4px solid #0000;border-top:0;border-bottom:6px solid #ffd24a;transition:left .2s;position:absolute;bottom:-3px;transform:translate(-50%)}.meter-scale b.over{border-bottom-color:#ff5a4a}.meter-comp{min-width:4ch}.dock{box-sizing:border-box;background:#1b1d24e6;border:1px solid #3a3e4a;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:6px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.dock:has(.direction){width:640px}.dock .recent{flex:none;margin-left:2px}.direction{flex:1;align-items:center;gap:6px;min-width:0;padding-left:8px;display:flex}.direction input{color:#e6e9ee;background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:14px}.direction input::placeholder{color:#8f97a3}.direction button{color:#fff;cursor:pointer;background:#ff7a1a;border:0;border-radius:50%;flex:none;width:32px;height:32px}.direction button:disabled{color:#6c7380;cursor:default;background:#2d3039}.camera-toggle{color:#e6e9ee;cursor:pointer;background:#2a2d36;border:1px solid #3a3e4a;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.camera-toggle:hover{color:#fff;background:#ff7a1a;border-color:#ff7a1a}.recent{cursor:pointer;background:#111;border:1px solid #ece6d8;border-radius:3px;width:54px;height:36px;padding:0;position:relative;overflow:hidden}.recent img{object-fit:cover;width:100%;height:100%;animation:.7s cubic-bezier(.2,.8,.2,1) deck-in;display:block}.recent.developing{animation:1.6s ease-in-out infinite deck-pulse}@keyframes deck-in{0%{opacity:0;transform:translateY(-120%)scale(1.25)}to{opacity:1;transform:none}}@keyframes deck-pulse{0%,to{box-shadow:0 0 #ece6d800}50%{box-shadow:0 0 0 4px #ece6d855}}.recent-empty{background:repeating-linear-gradient(45deg,#15171c,#15171c 4px,#1d2027 4px 8px);width:100%;height:100%;display:block}.recent b{color:#fff;text-shadow:0 1px 2px #000;font-size:11px;position:absolute;bottom:1px;right:2px}.shutter{cursor:pointer;background:#d8d2c4;border:3px solid #ece6d8;border-radius:50%;flex:none;width:42px;height:42px;box-shadow:inset 0 0 0 3px #1b1d24}.shutter:active{transform:scale(.94)}.shutter:disabled{opacity:.5;cursor:progress}.vf-close{z-index:45;color:#cfd3da;cursor:pointer;background:#1b1d24b3;border:1px solid #3a3e4a;border-radius:50%;place-items:center;width:36px;height:36px;font-size:15px;display:grid;position:fixed;top:16px;right:16px}.vf-close:hover{color:#fff;border-color:#ff7a1a}.ai-off{color:#c9a26b;white-space:nowrap;padding-right:8px;font-size:12px}.flash{pointer-events:none;background:#fff;animation:.45s ease-out forwards flash;position:fixed;inset:0}@keyframes flash{0%{opacity:.85}to{opacity:0}}.toast{color:#d7dbe3;cursor:pointer;background:#1b1d24ee;border:1px solid #3a3e4a;border-radius:12px;align-items:center;gap:10px;max-width:min(360px,100% - 32px);padding:10px 12px;display:flex;position:fixed;top:64px;right:16px}.toast img{object-fit:cover;border-radius:3px;width:72px;height:48px}.toast strong{color:#fff;font-size:14px;display:block}.toast span{color:#aab2bd;font-size:12.5px}.lightbox{background:#0b0c0fee;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.lb-image{background:#050607;place-items:center;max-width:calc(100vw - 32px);display:grid;position:relative;overflow:hidden}.lb-image img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.lb-image img.contain{object-fit:contain}.lb-particles{width:100%;height:100%;display:block;position:absolute;inset:0}.lb-status{color:#c3c9d2;text-align:center;text-shadow:0 1px 3px #000;justify-items:center;gap:10px;padding:0 16px;font-size:13px;display:grid;position:absolute;bottom:14px;left:0;right:0}.lb-status.busy{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55}}.lb-status button,.lb-bar button{color:#e6e9ee;cursor:pointer;background:#2a2d36;border:1px solid #3a3e4a;border-radius:999px;padding:7px 16px;font-size:14px}.lb-bar button:disabled{opacity:.35;cursor:default}.lb-bar{color:#cfd3da;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex}.info-menu{position:fixed;top:16px;left:16px}.info-button{color:#cfd3da;cursor:pointer;background:#1b1d24b3;border:1px solid #3a3e4a;border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.info-button:hover,.info-button[aria-expanded=true]{color:#fff;border-color:#ff7a1a}.info-panel{color:#cfd3da;background:#1b1d24f2;border:1px solid #3a3e4a;border-radius:12px;width:min(340px,100vw - 32px);padding:12px 14px;font-size:13px;position:absolute;top:44px;left:0}.info-panel dl{gap:5px;margin:0;display:grid}.info-panel dl div{grid-template-columns:150px 1fr;gap:8px;display:grid}.info-panel dt{color:#fff;font-weight:600}.info-panel dd{margin:0}.info-panel .credits{color:#8f97a3;border-top:1px solid #3a3e4a;margin:12px 0 0;padding-top:10px;font-size:11px;line-height:1.4}.speech{z-index:20;pointer-events:none;color:#1b1d24;white-space:nowrap;background:#fffdf8;border-radius:14px;margin-top:-8px;padding:6px 12px;font:500 14px system-ui,sans-serif;position:fixed;top:0;left:0;box-shadow:0 2px 8px #0005}.speech:after{content:"";border:6px solid #0000;border-top-color:#fffdf8;border-bottom:0;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.camera-hud{z-index:20;color:#cfd3da;pointer-events:none;background:#1b1d24b3;border:1px solid #3a3e4a;border-radius:9px;gap:2px;max-width:min(300px,100vw - 32px);padding:7px 11px;font-size:12px;display:grid;position:fixed;bottom:14px;left:16px}.camera-hud strong{color:#fff;font-weight:600}.camera-hud span{color:#8f97a3;font-size:11px}.zone-deck{flex:1;align-items:center;gap:10px;min-width:0;padding:0 10px 0 4px;display:flex}.zone-deck .recent{flex:none}.zone-deck-name{text-overflow:ellipsis;white-space:nowrap;color:#e6e9ee;min-width:0;font-size:14px;overflow:hidden}.zone-deck-name em{color:#ffb36b;font-size:12.5px;font-style:normal}.recent.unseen{animation:2.4s ease-in-out infinite deck-pulse}.recent:focus-visible,.gallery-strip button:focus-visible,.lb-bar button:focus-visible,.lb-status button:focus-visible,.visitor-intro button:focus-visible{outline-offset:2px;outline:2px solid #ff7a1a}.lightbox.gallery{box-sizing:border-box;gap:10px;padding:16px}.gallery-head{text-align:center;color:#e6e9ee;max-width:min(640px,100%)}.gallery-head h2{letter-spacing:.02em;margin:0;font-size:17px;font-weight:600}.gallery-head p{color:#aab2bd;margin:4px 0 0;font-size:13px}.lightbox.gallery .lb-image{margin:0}.lightbox.gallery .lb-image img{transition:opacity .25s}.lightbox.gallery .lb-image img.placeholder{filter:blur(6px);transform:scale(1.02)}.gallery-caption{text-align:center;color:#cfd3da;gap:2px;max-width:min(640px,100%);font-size:13px;display:grid}.gallery-caption strong{color:#fff}.gallery-strip{scrollbar-width:thin;gap:6px;max-width:calc(100vw - 32px);padding:4px;display:flex;overflow-x:auto}.gallery-strip button{cursor:pointer;opacity:.6;background:#111;border:2px solid #0000;border-radius:3px;flex:none;height:52px;padding:0}.gallery-strip button.current,.gallery-strip button:hover{opacity:1}.gallery-strip button.current{border-color:#ff7a1a}.gallery-strip img{width:auto;height:100%;display:block}.visitor-intro{z-index:40;box-sizing:border-box;color:#cfd3da;background:#1b1d24ee;border:1px solid #3a3e4a;border-radius:12px;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 104px);padding:10px 12px 10px 14px;font-size:13.5px;line-height:1.4;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}.visitor-intro p{margin:0}.visitor-intro strong{color:#fff}.visitor-intro button{color:#fff;cursor:pointer;background:#ff7a1a;border:0;border-radius:999px;flex:none;min-height:36px;padding:8px 14px;font-size:13.5px}@media (pointer:coarse){.gallery-strip button{height:60px}.lb-bar button{min-width:44px;min-height:44px}}@media (width<=560px){.visitor-intro{width:auto;max-width:none;top:60px;left:16px;right:16px;transform:none}}@media (prefers-reduced-motion:reduce){.recent.unseen{animation:none;box-shadow:0 0 0 3px #ffb36b}.lightbox.gallery .lb-image img{transition:none}}
