: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}.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}}.location-navigator{position:relative;z-index:100;display:flex;flex-direction:column;min-width:200px;background:#0a0a0f99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d;transition:all .5s cubic-bezier(.19,1,.22,1)}.location-navigator:hover{transform:translateY(4px)}@media(hover:none){.location-navigator:hover{transform:none}}.navigator-trigger{width:100%;padding:12px 16px;background:#ffffff0d;border:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;transition:all .3s ease;position:relative;text-align:left}.navigator-trigger:hover{background:#ffffff1a}.navigator-text-wrapper{display:flex;flex-direction:column;gap:4px;overflow:hidden}.navigator-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#ffffff80}.navigator-current-name{color:#fff;font-size:20px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navigator-arrow-icon{width:14px;height:14px;color:#ffffff80;transition:transform .4s cubic-bezier(.19,1,.22,1);flex-shrink:0}.navigator-arrow-icon.rotate{transform:rotate(180deg)}.navigator-dropdown{width:100%;min-width:240px;background:#0a0a0fd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid rgba(255,255,255,.1);padding:6px 0;display:flex;flex-direction:column;box-shadow:0 16px 48px #00000080;animation:dropdown-in .4s cubic-bezier(.19,1,.22,1);transform-origin:top left}.navigator-item{padding:12px 16px;background:transparent;border:none;color:#ffffffb3;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:left;display:flex;justify-content:space-between;align-items:center}.navigator-item:hover{background:#ffffff14;color:#fff;padding-left:20px}.navigator-item.selected{background:#ffffff1f;color:#fff;font-weight:600}.navigator-item svg{opacity:.8;color:var(--color-primary)}@media screen and (max-width:768px){.location-navigator{min-width:140px;width:auto}.navigator-trigger{padding:10px 14px}.navigator-current-name{font-size:16px}.navigator-label{font-size:9px}.navigator-dropdown{width:auto;min-width:200px}.navigator-item{padding:10px 14px;font-size:12px}}.hotspot.link{position:relative}.hotspot.link .icon-wrapper{color:#fff}.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}.floor-navigator{position:relative;z-index:100;display:flex;flex-direction:column;min-width:160px;background:#0a0a0f99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 32px #0000004d;transition:all .5s cubic-bezier(.19,1,.22,1)}.floor-navigator:hover{transform:translateY(4px)}@media(hover:none){.floor-navigator:hover{transform:none}}.floor-navigator .navigator-trigger{width:100%;padding:12px 16px;background:#ffffff0d;border:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;transition:all .3s ease;position:relative;text-align:left}.floor-navigator .navigator-trigger:hover{background:#ffffff1a}.floor-navigator .navigator-text-wrapper{display:flex;flex-direction:column;gap:4px;overflow:hidden}.floor-navigator .navigator-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#ffffff80}.floor-navigator .navigator-current-name{color:#fff;font-size:20px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.floor-navigator .navigator-arrow-icon{width:14px;height:14px;color:#ffffff80;transition:transform .4s cubic-bezier(.19,1,.22,1);flex-shrink:0}.floor-navigator .navigator-arrow-icon.rotate{transform:rotate(180deg)}.floor-navigator .navigator-dropdown{position:absolute;top:100%;left:0;width:100%;min-width:200px;background:#0a0a0fd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-top:none;padding:6px 0;display:flex;flex-direction:column;box-shadow:0 16px 48px #00000080;animation:dropdown-in .4s cubic-bezier(.19,1,.22,1);transform-origin:top left}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.floor-navigator .navigator-item{padding:12px 16px;background:transparent;border:none;color:#ffffffb3;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;text-align:left;display:flex;justify-content:space-between;align-items:center}.floor-navigator .navigator-item:hover{background:#ffffff14;color:#fff;padding-left:20px}.floor-navigator .navigator-item.selected{background:#ffffff1f;color:#fff;font-weight:600}.floor-navigator .navigator-item svg{opacity:.8;color:var(--color-primary)}@media screen and (max-width:768px){.floor-navigator{min-width:140px;width:auto;z-index:101}.floor-navigator .navigator-trigger{padding:10px 14px}.floor-navigator .navigator-current-name{font-size:16px}.floor-navigator .navigator-label{font-size:9px}.floor-navigator .navigator-dropdown{width:auto;min-width:180px}}.minimap-container{position:fixed;bottom:24px;right: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:all .3s cubic-bezier(.19,1,.22,1);cursor:zoom-in;display:flex;flex-direction:column}.minimap-container.expanded{width:min(800px,90vw);max-height:90vh;bottom:50%;right:50%;transform:translate(50%,50%);cursor:zoom-out;padding:12px;background:#0a0a0fd9;box-shadow:0 20px 60px #0009;z-index:1000}.minimap-container:hover{transform:translateY(-4px)}@media(hover:none){.minimap-container:hover{transform:none}}.minimap-container.expanded:hover{transform:translate(50%,50%)}.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;right: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:#0009;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .4s ease-out}.welcome-modal-content{background:#0a0a0fd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);width:90%;max-width:550px;max-height:85vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #00000080;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{width:100%;height:auto;display:block}.welcome-modal-text{padding:24px}.welcome-modal-text h2{margin-bottom:12px;font-size:24px;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-top:20px;width:100%;padding:14px 24px;font-size:.95rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:#fff;background:#ffffff12;border:1px solid rgba(255,255,255,.15);cursor:pointer;transition:all .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.welcome-start-button:hover{background:#ffffff24;border-color:#ffffff40;transform:translateY(-2px)}.welcome-start-button:active{transform:translateY(0)}@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:20px;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}}.scene-description-container{position:fixed;bottom:24px;left:24px;z-index:100;width:320px;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:all .3s cubic-bezier(.19,1,.22,1);display:flex;flex-direction:column}.scene-description-container:hover{transform:translateY(-4px)}@media(hover:none){.scene-description-container:hover{transform:none}}.scene-description-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}.scene-description-header:hover{background:#ffffff1a}.scene-description-header svg{width:14px;height:14px;opacity:.7}.scene-description-header span{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.8}.scene-description-body{width:100%;padding:12px 16px;transition:all .4s cubic-bezier(.19,1,.22,1);overflow:hidden;max-height:200px;opacity:1}.scene-description-container.minimized .scene-description-body{padding:0;max-height:0;opacity:0}.scene-description-container.minimized .scene-description-header{border-bottom-color:transparent;padding:10px 14px}.scene-description-content p{margin:0;color:#ffffffe6;font-size:13px;line-height:1.6}.scene-description-content a{color:#60a5fa;text-decoration:none;font-weight:500;transition:all .2s ease;border-bottom:1px solid rgba(96,165,250,.2)}.scene-description-content a:hover{color:#93c5fd;border-bottom-color:#93c5fdcc}@media screen and (max-width:768px),screen and (max-height:600px)and (orientation:landscape){.scene-description-container{bottom:16px;left:16px;width:180px}.scene-description-body{padding:10px 12px;font-size:12px}.scene-description-content p{font-size:12px}}.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:var(--color-bg, #0a0a0f);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(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 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,.18) 0%,rgba(139,92,246,.08) 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:20px;padding:24px;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-badge{display:inline-block;padding:5px 14px;font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:#818cf8;border:1px solid rgba(129,140,248,.35);background:#818cf814}.cs-title{font-size:clamp(2rem,6vw,3.75rem);font-weight:800;line-height:1.1;letter-spacing:-.03em;color:#fff;margin:0}.cs-subtitle{font-size:clamp(.875rem,2vw,1rem);color:#fff6;line-height:1.75;max-width:460px;margin:0}.cs-features{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px}.cs-features span{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#ffffff59;padding:5px 12px;border:1px solid rgba(255,255,255,.08);background:#ffffff08}
