:root{--color-bg: #0a0a0f;--color-text: #e4e4e7;--color-primary: #ff3e3e;--color-primary-rgb: 255, 62, 62}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;background:var(--color-bg);font-family:Inter,system-ui,sans-serif;color:var(--color-text)}.app{width:100%;height:100dvh;overflow:hidden;position:relative}.viewer-container{width:100%;height:100%;opacity:0;transition:opacity 1.5s ease-in-out}.viewer-container.loaded{opacity:1}.hotspot{cursor:pointer;transform:translate(-50%,-50%);z-index:10}.viewer-container.welcome-active .hotspot{display:none!important}.icon-wrapper{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#0a0a0f99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:50%;border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d;transition:transform .2s cubic-bezier(.175,.885,.32,1.275),background .2s}.hotspot:hover .icon-wrapper{transform:scale(1.15);background:#ffffff1a;border-color:#fff3}.icon-wrapper svg,.hotspot.link .icon-wrapper svg{width:22px;height:22px;color:#fff;opacity:.9}.navigators-container{position:fixed;top:24px;left:24px;z-index:100;display:flex;gap:12px;align-items:flex-start}@media screen and (max-width:768px){.navigators-container{top:16px;left:16px;right:16px;gap:8px;flex-direction:column;align-items:flex-start}}.hotspot.link{position:relative}.hotspot.link .icon-wrapper{color:#fff;position:relative;z-index:2}.hotspot-string{position:absolute;top:100%;left:50%;transform:translate(-50%);width:2px;height:100px;background:linear-gradient(to bottom,#fff,#fff0);pointer-events:none;z-index:1}.hotspot-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(10px);background:#000000bf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;visibility:hidden;transition:all .25s ease;pointer-events:none;box-shadow:0 4px 12px #0003;border:1px solid rgba(255,255,255,.1);margin-bottom:8px}.hotspot-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:rgba(0,0,0,.75) transparent transparent transparent}.hotspot.link:hover .hotspot-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.hotspot.info{position:relative}.icon-wrapper.info-icon{position:relative;z-index:2}.hotspot.info.active .icon-wrapper.info-icon{transform:scale(1.15);background:#ffffff1a;border-color:#fff3}.info-hotspot-panel{position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%) translateY(8px);background:#0a0a0fe0;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.12);border-radius:14px;min-width:220px;max-width:300px;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .22s ease,transform .22s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 12px 40px #00000080;z-index:30}.info-hotspot-panel:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:7px solid transparent;border-top-color:#0a0a0fe0}.hotspot.info.active .info-hotspot-panel{opacity:1;pointer-events:auto;transform:translate(-50%) translateY(0)}.info-hotspot-close{position:absolute;top:8px;right:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:50%;cursor:pointer;color:#ffffffb3;z-index:5;transition:background .15s ease,color .15s ease}.info-hotspot-close:hover{background:#fff3;color:#fff}.info-hotspot-image-wrap{width:100%;aspect-ratio:4 / 3;overflow:hidden}.info-hotspot-image-wrap img{width:100%;height:100%;object-fit:cover;display:block}.info-hotspot-body{padding:12px 14px;display:flex;flex-direction:column;gap:5px}.info-hotspot-title{display:block;font-size:13px;font-weight:700;color:#fff;line-height:1.3}.info-hotspot-desc{display:block;font-size:12px;color:#ffffffa6;line-height:1.55}.info-hotspot-desc a{color:#60a5fa;text-decoration:none;font-weight:500;transition:all .2s ease;border-bottom:1px solid rgba(96,165,250,.2)}.info-hotspot-desc a:hover{color:#93c5fd;border-bottom-color:#93c5fdcc}.minimap-container{position:fixed;bottom:24px;left:24px;z-index:110;width:240px;background:#0a0a0f99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);padding:0;box-shadow:0 8px 32px #0000004d;overflow:hidden;transition:transform .45s cubic-bezier(.19,1,.22,1),width .3s cubic-bezier(.19,1,.22,1),left .45s cubic-bezier(.19,1,.22,1),bottom .45s cubic-bezier(.19,1,.22,1);transform-origin:bottom left;cursor:zoom-in;display:flex;flex-direction:column}.minimap-container:not(.expanded):hover{filter:brightness(1.05)}.minimap-container.expanded{width:min(800px,90vw);max-height:90vh;bottom:50%;left:50%;transform:translate(-50%,50%)!important;cursor:zoom-out;padding:12px;background:#0a0a0fd9;box-shadow:0 20px 60px #0009;z-index:1000}.minimap-header{width:100%;padding:8px 12px;background:#ffffff0d;border:none;border-bottom:1px solid rgba(255,255,255,.05);color:#fff;display:flex;align-items:center;gap:8px;cursor:pointer;transition:background .3s ease}.minimap-header:hover{background:#ffffff1a}.minimap-header svg{width:14px;height:14px;opacity:.7}.minimap-header span{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.8}.minimap-body{width:100%;padding:6px;transition:all .4s cubic-bezier(.19,1,.22,1);overflow:hidden}.minimap-container.minimized{min-width:80px}.minimap-container.minimized .minimap-body{padding:0;max-height:0;opacity:0}.minimap-container.minimized .minimap-header{border-bottom-color:transparent;padding:10px 14px}.minimap-container.expanded .minimap-body{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;-webkit-overflow-scrolling:touch}.minimap-content{position:relative;width:100%;background:#fff;border-radius:4px}.minimap-image{width:100%;height:auto;display:block;opacity:1}.minimap-marker{position:absolute;transform:translate(-50%,-50%);width:14px;height:14px;padding:0;border:none;background:transparent;cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center}.marker-inner{width:100%;height:100%;background:#333;border:2px solid white;border-radius:50%;box-shadow:0 2px 6px #0000004d;transition:all .3s ease}.minimap-marker.active .marker-inner{background:var(--color-primary);border-color:#fff;box-shadow:0 0 12px rgba(var(--color-primary-rgb),.6);transform:scale(1.2);z-index:2}.radar-view{position:absolute;top:50%;left:50%;width:120px;height:120px;margin-top:-60px;margin-left:-60px;background:radial-gradient(circle at 50% 50%,rgba(var(--color-primary-rgb),.5),rgba(var(--color-primary-rgb),0));clip-path:polygon(50% 50%,50% 0%,100% 0%,100% 50%);border-radius:50%;pointer-events:none;z-index:1}.minimap-marker:hover .marker-inner{transform:scale(1.3);background:var(--color-primary)}.marker-label{position:absolute;top:-26px;left:50%;transform:translate(-50%) translateY(4px);background:#333;color:#fff;padding:3px 10px;border-radius:4px;font-size:11px;font-weight:500;opacity:0;pointer-events:none;transition:all .2s ease;white-space:nowrap;box-shadow:0 4px 12px #00000026}.minimap-marker:hover .marker-label,.minimap-marker.active .marker-label{opacity:1;transform:translate(-50%) translateY(0)}.minimap-marker.active .marker-label{background:var(--color-primary)}@media screen and (max-width:768px),screen and (max-height:600px)and (orientation:landscape){.minimap-container{bottom:16px;left:16px;width:140px}.minimap-container.expanded{width:90vw;height:auto;max-height:80vh;padding:8px}.minimap-header{padding:6px 10px}.minimap-header span{font-size:10px}.minimap-marker{width:10px;height:10px}.marker-label{display:none}.minimap-marker.active .marker-label{display:block;top:-22px;font-size:10px;padding:2px 6px}.radar-view{width:80px;height:80px;margin-top:-40px;margin-left:-40px}}.welcome-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .4s ease-out}.welcome-modal-content{width:90%;max-width:550px;max-height:85vh;overflow-y:auto;position:relative;text-align:center;animation:slideUp .4s cubic-bezier(.19,1,.22,1)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.welcome-modal-image img{max-width:120px;height:auto;display:block;margin:0 auto}.welcome-modal-text{padding:24px}.welcome-modal-text h2{margin-bottom:12px;font-size:42px;font-weight:700;color:#fff}.welcome-modal-text p{line-height:1.6;color:#fffc;font-size:15px}.welcome-modal-text p a{color:#fff;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#ffffff4d;transition:all .2s ease}.welcome-modal-text p a:hover{text-decoration-color:#fff;color:#fff}.welcome-logo-name{display:block;font-size:.85rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#ffffff80;margin-bottom:8px}.welcome-start-button{margin:24px auto 0;width:100%;max-width:240px;display:flex;align-items:center;justify-content:center;padding:14px 24px;font-size:.95rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;background:#0a0a0fa6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:#ffffffb3;box-shadow:0 4px 16px #0000004d;transition:all .2s cubic-bezier(.19,1,.22,1);cursor:pointer}.welcome-start-button:hover{background:#ffffff1a;border-color:#fff3;color:#fff;transform:scale(1.05)}.welcome-start-button:active{transform:scale(.98)}@media screen and (max-width:768px){.welcome-modal-content{width:95%;max-height:90vh}.welcome-modal-text{padding:16px}.welcome-modal-text h2{font-size:28px;margin-bottom:8px}.welcome-modal-text p{font-size:14px}}@media screen and (max-height:500px)and (orientation:landscape){.welcome-modal-content{display:flex;flex-direction:row;max-width:90vw;max-height:85vh;align-items:stretch}.welcome-modal-image{width:40%;min-width:200px;max-height:85vh;overflow:hidden}.welcome-modal-image img{height:100%;width:100%;object-fit:cover}.welcome-modal-text{flex:1;overflow-y:auto;padding:24px;-webkit-overflow-scrolling:touch}}.logo-container{position:fixed;top:24px;right:24px;z-index:100;display:flex;align-items:center;pointer-events:none}.logo-placeholder{display:flex;flex-direction:column;align-items:flex-end;gap:4px;padding:8px 0;animation:logo-fade-in 1s ease-out;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}@keyframes logo-fade-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.logo-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:#fff}.logo-icon svg{width:100%;height:100%;opacity:.9}.logo-image{height:32px;width:auto;object-fit:contain}.logo-text{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1;text-align:right}.logo-main{font-size:18px;font-weight:700;letter-spacing:2px;color:#fff}.logo-sub{font-size:10px;font-weight:400;letter-spacing:1px;color:#fff6}@media screen and (max-width:768px){.logo-container{top:16px;right:16px}.logo-placeholder{padding:6px 0;gap:4px}.logo-icon{width:24px;height:24px}.logo-image{height:24px}.logo-main{font-size:14px;letter-spacing:1.5px}.logo-sub{font-size:8px}}.error-page{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#06060a;z-index:9999;animation:ep-fade-in .5s ease-out}@keyframes ep-fade-in{0%{opacity:0}to{opacity:1}}.error-page-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;padding:48px 40px;max-width:480px;width:90%;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 24px 64px #00000080;animation:ep-slide-up .5s cubic-bezier(.19,1,.22,1)}@keyframes ep-slide-up{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}.error-page-title{font-size:1.25rem;font-weight:700;color:#fff;margin:0;letter-spacing:.01em}.error-page-hint{font-size:.9rem;color:#ffffff80;line-height:1.7;margin:0;max-width:360px}@media(max-width:480px){.error-page-card{padding:36px 24px}}.cs-page{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden;animation:cs-fade-in .8s ease-out}@keyframes cs-fade-in{0%{opacity:0}to{opacity:1}}.cs-bg-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(0,0,0,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.04) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 30%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 30%,transparent 100%)}.cs-glow{position:absolute;width:700px;height:700px;border-radius:50%;background:radial-gradient(circle,rgba(99,102,241,.08) 0%,rgba(139,92,246,.04) 45%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-55%);pointer-events:none}.cs-content{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:24px;padding:32px;animation:cs-slide-up .8s cubic-bezier(.19,1,.22,1)}@keyframes cs-slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.cs-title{font-size:clamp(2rem,6vw,3.5rem);font-weight:800;line-height:1.1;letter-spacing:-.03em;color:#111827;margin:0}.cs-subtitle{font-size:clamp(1rem,2vw,1.125rem);color:#6b7280;line-height:1.6;max-width:480px;margin:0}.cs-demo-button{display:inline-flex;align-items:center;justify-content:center;padding:14px 32px;font-size:1rem;font-weight:600;color:#fff;background:#111827;border-radius:9999px;text-decoration:none;transition:all .2s ease;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;margin-top:8px}.cs-demo-button:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;background:#1f2937}.cs-demo-button:active{transform:translateY(0);box-shadow:0 2px 4px -1px #0000001a}.scene-info{position:fixed;top:24px;left:24px;z-index:100;max-width:280px;pointer-events:none;animation:scene-info-in .6s cubic-bezier(.19,1,.22,1) both}@keyframes scene-info-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.scene-info-gradient{position:fixed;top:0;left:0;width:50vw;min-width:320px;max-width:600px;height:400px;background:radial-gradient(100% 100% at top left,#0009,#0000);pointer-events:none;z-index:90;animation:scene-info-gradient-in .6s cubic-bezier(.19,1,.22,1) both}@keyframes scene-info-gradient-in{0%{opacity:0}to{opacity:1}}.scene-info-name{font-size:32px;font-weight:700;color:#fff;line-height:1.05;letter-spacing:-.8px;margin-bottom:4px}.scene-info-description{margin:0;font-size:13px;line-height:1.5;color:#ffffffe6;pointer-events:all;font-weight:400}.scene-info-description a{color:#ffffffd9;text-decoration:underline;text-underline-offset:2px;text-decoration-color:#ffffff4d;transition:color .2s ease}.scene-info-description a:hover{color:#fff;text-decoration-color:#fffc}@media screen and (max-width:768px){.scene-info{top:16px;left:16px;max-width:200px}.scene-info-name{font-size:20px;letter-spacing:-.4px}.scene-info-description{font-size:11px;max-width:180px}}.scene-gallery{position:fixed;bottom:0;left:0;right:0;z-index:200;background:#0a0a0fbf;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid rgba(255,255,255,.08);box-shadow:0 -8px 32px #0006;transform:translateY(100%);transition:transform .45s cubic-bezier(.19,1,.22,1);display:flex;flex-direction:column}.scene-gallery.open{transform:translateY(0)}.gallery-floor-pills{display:flex;gap:6px;padding:10px 16px 6px;flex-shrink:0}.gallery-floor-pill{padding:4px 14px;border-radius:100px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;border:1px solid rgba(255,255,255,.15);background:transparent;color:#ffffff80;cursor:pointer;transition:all .2s ease;white-space:nowrap}.gallery-floor-pill:hover{background:#ffffff14;color:#ffffffe6;border-color:#ffffff4d}.gallery-floor-pill.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.gallery-strip{display:flex;gap:8px;padding:8px 16px 16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-shrink:0}.gallery-strip::-webkit-scrollbar{display:none}.gallery-thumb{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:none;cursor:pointer;padding:0;scroll-snap-align:start;transition:transform .2s cubic-bezier(.19,1,.22,1)}.gallery-thumb:hover{transform:translateY(-4px)}.gallery-thumb-img-wrapper{position:relative;width:160px;height:100px;border-radius:6px;overflow:hidden;border:2px solid transparent;transition:border-color .2s ease,box-shadow .2s ease;background:#ffffff0d}.gallery-thumb.active .gallery-thumb-img-wrapper{border-color:var(--color-primary);box-shadow:0 0 16px rgba(var(--color-primary-rgb),.4)}.gallery-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff3}.gallery-thumb-placeholder svg{width:28px;height:28px}.gallery-thumb-active-bar{position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--color-primary)}.gallery-thumb-name{font-size:11px;font-weight:500;color:#fff9;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;transition:color .2s ease}.gallery-thumb.active .gallery-thumb-name{color:#fff;font-weight:600}@media screen and (max-width:768px){.gallery-strip{padding:6px 12px 12px;gap:6px}.gallery-thumb-img-wrapper{width:110px;height:70px;border-radius:4px}.gallery-thumb-name{font-size:10px;max-width:110px}.gallery-floor-pills{padding:8px 12px 4px}.gallery-floor-pill{font-size:10px;padding:3px 10px}}@media screen and (max-height:600px)and (orientation:landscape){.gallery-thumb-img-wrapper{width:90px;height:56px}.gallery-thumb-name{display:none}}.control-cluster{position:fixed;bottom:24px;right:24px;z-index:210;display:flex;flex-direction:column;gap:8px;transition:transform .45s cubic-bezier(.19,1,.22,1)}.cluster-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#0a0a0fa6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:#ffffffb3;cursor:pointer;transition:all .2s cubic-bezier(.19,1,.22,1);box-shadow:0 4px 16px #0000004d;padding:0}.cluster-btn svg{width:18px;height:18px}.cluster-btn:hover{background:#ffffff1a;border-color:#fff3;color:#fff;transform:scale(1.08)}.cluster-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:0 4px 20px rgba(var(--color-primary-rgb),.4)}.cluster-btn.active:hover{filter:brightness(1.1);transform:scale(1.08)}@media screen and (max-width:768px){.control-cluster{bottom:16px;right:16px;gap:6px}.cluster-btn{width:36px;height:36px;border-radius:8px}.cluster-btn svg{width:16px;height:16px}}.share-modal{position:absolute;bottom:calc(100% + 12px);right:0;width:320px;background:#0f0f14d9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:16px;color:#fff;box-shadow:0 8px 32px #0006;animation:slideUpFade .3s cubic-bezier(.19,1,.22,1)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.share-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.share-modal-header h3{margin:0;font-size:16px;font-weight:600}.share-close-btn{background:none;border:none;color:#fff9;cursor:pointer;font-size:16px;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .2s}.share-close-btn:hover{color:#fff}.share-toggle{display:flex;align-items:center;gap:8px;font-size:14px;color:#ffffffe6;cursor:pointer;margin-bottom:12px}.share-url-box{display:flex;gap:8px}.share-url-box input{flex:1;background:#0006;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:8px 12px;color:#fffc;font-size:13px;outline:none}.share-copy-btn{background:var(--color-primary);border:none;border-radius:6px;padding:0 16px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .2s}.share-copy-btn:hover{filter:brightness(1.1)}
