:root{--primary-color:var(--accent);--secondary-color:#2c3e50;--accent-color:var(--danger);--light-bg:#fffffff2;--dark-bg:#2c3e50f2;--shadow:0 4px 20px #00000026;--border-radius:var(--radius-md);--transition:all .3s ease;--glass-bg:#ffffffb8;--glass-border:var(--line);--panel-text:#1f2937;--panel-muted:#5a6a7a;--panel-strong-bg:#0f172ad1;--panel-strong-text:#f8fafc}@media (prefers-color-scheme:dark){:root{--glass-bg:#0f172ab8;--glass-border:var(--line);--panel-text:#e2e8f0;--panel-muted:#94a3b8;--shadow:0 10px 30px #00000059;--panel-strong-bg:#0f172aeb;--panel-strong-text:#f1f5f9}}*{box-sizing:border-box;margin:0;padding:0}html,body{color:#333;background:#000;height:100%;margin:0;padding:0;overflow:hidden}html:has(body.manage-body),body.manage-body{height:auto;overflow:auto}body.manage-body{background:0 0}body.manage-body #panorama,body.manage-body .watermark{display:none!important}#panorama{z-index:1;background:#000;width:100vw;height:100vh;min-height:100vh;position:fixed;top:0;left:0}.control-panel{z-index:100;background:var(--surface);border-radius:var(--border-radius);box-shadow:var(--shadow);transition:var(--transition);border:1px solid var(--glass-border);position:fixed}.control-panel.collapsed{opacity:.7}#leftPanel{flex-direction:column;width:360px;max-height:calc(100% - 90px);display:flex;top:70px;left:20px;overflow:hidden}.panel-header{background:var(--panel-strong-bg);color:var(--panel-strong-text);border-radius:var(--border-radius) var(--border-radius) 0 0;border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;padding:15px;display:flex;position:relative}.panel-title{margin:0;font-size:1.1rem;font-weight:600}.toggle-btn{color:#fff;cursor:pointer;transition:var(--transition);z-index:101;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;padding:5px;font-size:1.2rem;display:flex;position:relative}.toggle-btn:hover{background:#fff3}.panel-content{color:var(--panel-text);flex:1;padding:15px;overflow-y:auto}.search-container{margin-bottom:15px;position:relative}.search-input{border-radius:var(--radius-xl);width:100%;transition:var(--transition);background:var(--surface-strong);color:var(--panel-text);border:1px solid #ddd;padding:10px 15px 10px 40px;font-size:.9rem}@media (prefers-color-scheme:dark){.search-input{color:#e2e8f0;background:#0f172a99;border-color:#94a3b859}}.search-input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 2px #3498db33}.search-icon{color:#777;position:absolute;top:50%;left:15px;transform:translateY(-50%)}.scene-list{flex-direction:column;gap:10px;margin-top:15px;display:flex}.scene-item{border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition);background:#fff;border:1px solid #eee;align-items:center;padding:12px;display:flex}@media (prefers-color-scheme:dark){.scene-item{background:#0f172aa6;border-color:#94a3b833}.scene-contributor{color:var(--panel-muted)}}.scene-item:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 5px 15px #0000001a}.scene-item.active{border-color:var(--primary-color);background:#3498db1a}.scene-thumb{border-radius:var(--radius-md);color:#777;background:#f0f0f0;justify-content:center;align-items:center;width:50px;height:50px;margin-right:12px;font-size:1.5rem;display:flex}.scene-info{flex:1}.scene-name{color:var(--panel-text);margin:0 0 5px;font-size:1rem;font-weight:600}.scene-contributor{color:var(--panel-muted);margin:0;font-size:.85rem}.upload-area{border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:var(--transition);background:#f0f0f080;border:2px dashed #ddd;margin-bottom:15px;padding:20px}@media (prefers-color-scheme:dark){.upload-area{background:#0f172a73;border-color:#94a3b84d}.upload-text{color:var(--panel-muted)}}.upload-area:hover{border-color:var(--primary-color);background:#3498db0d}.upload-icon{color:var(--primary-color);margin-bottom:10px;font-size:2rem}.upload-text{color:var(--panel-muted);margin:0;font-size:.9rem}.watermark{z-index:50;color:#fffc;pointer-events:none;text-align:center;width:100%;text-shadow:none;font-size:18px;font-weight:500;position:fixed;bottom:20px}.password-dialog{z-index:2000;background:#000000b3;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:fixed;top:0;left:0}.password-box{background:var(--surface);border-radius:var(--border-radius);width:90%;max-width:400px;box-shadow:var(--shadow);text-align:center;border:1px solid var(--glass-border);padding:30px}.password-title{color:var(--panel-text);margin-top:0}.password-input{border-radius:var(--radius-md);background:var(--surface-strong);width:100%;color:var(--panel-text);border:1px solid #ddd;margin:15px 0;padding:12px 15px;font-size:1rem}@media (prefers-color-scheme:dark){.password-input{background:#0f172a99;border-color:#94a3b859}}.password-btn{background:var(--primary-color);color:#fff;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);border:none;margin:0 5px;padding:10px 20px;font-size:1rem}.password-btn:hover{background:var(--accent)}.password-btn.cancel{background:#95a5a6}.password-btn.cancel:hover{background:#7f8c8d}.panel-fab{z-index:1400;background:var(--dark-bg);color:#fff;border-radius:var(--radius-sm);cursor:pointer;width:44px;height:44px;box-shadow:var(--shadow);transition:var(--transition);border:none;justify-content:center;align-items:center;gap:6px;padding:0 12px;display:flex;position:fixed;bottom:20px;left:18px}.panel-fab:hover{transform:translateY(-2px)}.panel-fab.opened{background:#0f172ad9}.panel-fab span{white-space:nowrap;font-size:.85rem;display:none}.panel-fab.opened{width:auto;height:40px}.panel-fab.opened span{display:inline}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:var(--radius-sm);background:#f1f1f1}::-webkit-scrollbar-thumb{border-radius:var(--radius-sm);background:#c1c1c1}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (width<=768px){#leftPanel{width:calc(100% - 40px);max-height:72%;display:none;top:70px;left:20px}.panel-mobile-visible{display:flex!important}.scene-thumb{width:40px;height:40px;font-size:1.2rem}#sceneMap{height:180px}.manage-shell{padding-top:80px}.panel-fab{bottom:18px;left:auto;right:16px}}.admin-bar{border-radius:var(--radius-md);background:var(--surface);flex-direction:column;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}@media (prefers-color-scheme:dark){.admin-bar{background:#0f172a8c}}.admin-login{gap:8px;display:flex}.admin-login input{border-radius:var(--radius-lg);background:var(--surface-strong);color:var(--panel-text);border:1px solid #d5d5d5;flex:1;padding:8px 10px}@media (prefers-color-scheme:dark){.admin-login input{background:#0f172a99;border-color:#94a3b859}}.admin-actions{justify-content:space-between;align-items:center;display:none}.admin-tag{color:var(--panel-text);font-size:.85rem;font-weight:600}.admin-status{color:var(--panel-muted);font-size:.8rem}.btn{border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition);border:none;padding:8px 12px;text-decoration:none}.btn:link,.btn:visited{text-decoration:none}.btn.primary{background:var(--primary-color);color:#fff}.btn.ghost{color:var(--panel-text);background:#0f172a14}.admin-btn{border-radius:var(--radius-lg);background:var(--primary-color);color:#fff;cursor:pointer;transition:var(--transition);border:none;padding:8px 12px}.admin-btn.ghost{color:var(--panel-text);background:#0f172a14}.upload-form{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field.row{flex-flow:wrap;align-items:center;gap:10px}.field-half{flex:1;min-width:120px}.field label{color:var(--panel-muted);font-size:.85rem}.captcha-field{margin-top:6px}.turnstile-row{align-items:center;gap:8px;display:flex}.turnstile-box{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--surface);justify-content:center;align-items:center;min-width:240px;min-height:64px;padding:6px;display:flex}@media (prefers-color-scheme:dark){.turnstile-box{background:#0f172a99}}.helper{color:var(--panel-muted);margin-top:6px;font-size:.8rem}.field input{border-radius:var(--radius-lg);background:var(--surface-strong);color:var(--panel-text);border:1px solid #d5d5d5;padding:8px 10px}@media (prefers-color-scheme:dark){.field input{background:#0f172a99;border-color:#94a3b859}}.upload-preview{color:var(--panel-muted);font-size:.8rem}.upload-preview img{border-radius:var(--radius-md);width:100%;margin-top:6px}.upload-status{color:var(--panel-muted);font-size:.85rem}.action-card{border-radius:var(--radius-md);background:var(--surface);border:1px solid #00000014;border-color:var(--glass-border);margin-bottom:14px;padding:12px}.action-title{color:var(--panel-text);margin-bottom:6px;font-weight:600}.action-desc{color:var(--panel-muted);margin-bottom:10px;font-size:.85rem}.info-card{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--surface);box-shadow:var(--shadow);margin-bottom:12px;padding:12px}@media (prefers-color-scheme:dark){.info-card{background:#0f172a99}}.info-title{color:var(--panel-text);margin-bottom:6px;font-weight:600}.info-text{color:var(--panel-muted);margin:0 0 10px;font-size:.85rem;line-height:1.5}.info-actions{flex-wrap:wrap;gap:8px;display:flex}.manage-shell{z-index:2;flex-direction:column;gap:20px;min-height:100vh;padding:90px 24px 40px;display:flex;position:relative}.manage-header{color:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.manage-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.manage-actions .admin-bar{margin-bottom:0}.manage-header h1{margin:0 0 6px;font-size:1.6rem}.manage-header p{color:#ffffffbf;margin:0}.manage-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.manage-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow);border:1px solid var(--glass-border);padding:16px}.preview-card{border-radius:var(--radius-md);border:1px solid #00000014;margin-top:14px;position:relative;overflow:hidden}.preview-header{color:var(--panel-text);background:#2c3e501f;padding:8px 12px;font-weight:600}#previewPanorama{background:#000;width:100%;height:260px}.orientation-line{background:var(--surface);pointer-events:none;z-index:4;width:2px;position:absolute;top:38px;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 0 8px #ffffff73}.preview-loader{color:#fff;opacity:0;pointer-events:none;background:#00000073;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:.9rem;transition:opacity .2s;display:flex;position:absolute;inset:38px 0 0}.preview-loader.show{opacity:1;pointer-events:auto}.map-card{border-radius:var(--radius-md);background:var(--surface);border:1px solid #00000014;border-color:var(--glass-border);flex-direction:column;margin:10px 0 14px;display:flex;overflow:hidden}.map-header{color:var(--panel-text);background:#0f172a1f;justify-content:space-between;align-items:center;padding:10px 12px;font-weight:600;display:flex}.map-actions{gap:6px;display:flex}.map-btn{border-radius:var(--radius-lg);color:var(--panel-text);cursor:pointer;background:#2c3e5026;border:none;padding:6px 10px}#sceneMap{width:100%;height:220px}.map-tip{color:var(--panel-muted);background:#0f172a0a;padding:8px 12px;font-size:.8rem}.admin-section{margin-top:16px}.section-title{color:var(--panel-text);margin-bottom:8px;font-size:.95rem;font-weight:600}.admin-list{overscroll-behavior:contain;flex-direction:column;gap:8px;max-height:min(380px,50vh);padding-right:4px;display:flex;overflow-y:auto}@media (width<=768px){.admin-list{max-height:260px}}.admin-item{border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--glass-border);color:var(--panel-text);flex-direction:column;gap:6px;padding:10px;display:flex}.admin-item .meta{color:var(--panel-muted);font-size:.8rem}.admin-item .actions{flex-wrap:wrap;gap:8px;display:flex}.admin-only{display:none}.pnlm-controls{top:20px!important}.map-card.expanded{z-index:1600;width:min(94vw,1100px);height:min(76vh,620px);box-shadow:none;position:fixed;top:70px;left:50%;transform:translate(-50%)}.map-card.expanded #sceneMap{flex:1;height:100%}.map-card.expanded .map-tip{display:none}.map-ripple{pointer-events:none;z-index:5;background:#3498db59;border:2px solid #3498dbcc;border-radius:50%;width:18px;height:18px;animation:.6s ease-out forwards ripple;position:absolute;transform:translate(-50%,-50%)scale(.6)}.pano-loader{color:#fff;z-index:1200;opacity:0;pointer-events:none;background:#0000008c;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:.95rem;transition:opacity .2s;display:flex;position:fixed;inset:0}.pano-loader.show{opacity:1;pointer-events:auto}.nearby-hotspot{width:var(--nearby-size,16px);height:var(--nearby-size,16px);opacity:var(--nearby-opacity,.85);cursor:pointer;background:#3498db52;border:2px solid #3498dbd9;border-radius:50%;transition:transform .2s,opacity .2s;position:relative;box-shadow:inset 0 0 0 2px #ffffff4d,0 6px 16px #00000040}.nearby-hotspot .nearby-dot{background:#3498db52;border-radius:50%;position:absolute;inset:0}.nearby-hotspot .nearby-label{color:#fff;border-radius:var(--radius-sm);white-space:nowrap;letter-spacing:.2px;opacity:.85;pointer-events:none;background:#14182499;padding:2px 8px;font-size:.72rem;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.nearby-hotspot .nearby-detail{color:#fff;border-radius:var(--radius-md);white-space:nowrap;opacity:0;pointer-events:none;background:#0a0c14bf;padding:6px 10px;font-size:.72rem;transition:opacity .2s,transform .2s;position:absolute;bottom:calc(100% + 30px);left:50%;transform:translate(-50%)}.nearby-hotspot:hover{opacity:1;transform:scale(1.1)}.nearby-hotspot:hover .nearby-detail{opacity:1;transform:translate(-50%)translateY(-2px)}.loader-ring{border:3px solid #ffffff4d;border-top-color:#ffffffe6;border-radius:50%;width:46px;height:46px;animation:.9s linear infinite spin}.loader-text{letter-spacing:.02em;font-size:.9rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ripple{0%{opacity:.9;transform:translate(-50%,-50%)scale(.4)}to{opacity:0;transform:translate(-50%,-50%)scale(2.2)}}.control-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:none}#leftPanel{width:340px;top:76px}.panel-header{color:var(--text-main);background:var(--surface-strong);border-bottom:1px solid var(--line);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:12px 14px}.panel-title{letter-spacing:-.01em;font-size:13px;font-weight:600}.toggle-btn{color:var(--text-subtle);border-radius:var(--radius-sm)}.toggle-btn:hover{color:var(--text-main);background:var(--surface-soft)}.panel-content{color:var(--text-main);padding:14px}.search-input{color:var(--text-main);background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12.5px}.search-input:focus{border-color:var(--line-strong);box-shadow:0 0 0 3px var(--accent-soft)}.search-icon{color:var(--text-soft)}.btn{border-radius:var(--radius-sm);padding:9px 12px;font-size:12.5px;font-weight:600;text-decoration:none}.btn.primary{color:var(--surface-strong);background:var(--text-main);border:1px solid var(--text-main)}.btn.primary:hover{opacity:.85}.btn.ghost{color:var(--text-subtle);border:1px solid var(--line);background:0 0}.scene-list{gap:0;margin-top:12px}.scene-item{border:0;border-bottom:1px solid var(--line);background:0 0;border-radius:0;padding:12px 0}.scene-item:hover{box-shadow:none;border-color:var(--line);background:0 0;transform:none}.scene-item.active{color:var(--accent);border-color:var(--line);background:0 0}.scene-thumb{color:var(--text-soft);background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:1rem}.scene-name{color:var(--text-main);font-size:13px;font-weight:600}.scene-contributor{color:var(--text-soft);font-size:11.5px}.map-card{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:none}.map-btn{color:var(--text-subtle);border:1px solid var(--line);border-radius:var(--radius-sm);background:0 0;font-size:11.5px}.map-tip{color:var(--text-soft);font-size:11.5px}.panel-fab{color:var(--text-main);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:none}