:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-tertiary:#1a1a2e;--text-primary:#e0e0e8;--text-secondary:#8888a0;--accent:#00e5c0;--accent-dim:#00b89a;--border:#2a2a3e;--popup-bg:#16162aee;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.three-fiber-view{background:#050508;width:100%;height:100%}.three-fiber-view canvas{display:block}.r3f-summit-label{pointer-events:auto;cursor:pointer;text-align:center;transform:translate(-50%,-100%)}.r3f-summit-label .label-name{background:var(--popup-bg);border:1px solid var(--border);color:var(--text-primary);white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:6px;padding:4px 10px;font-size:.75rem}.r3f-summit-label .label-elev{color:var(--text-secondary);font-size:.65rem}.r3f-summit-popup{pointer-events:auto;margin-top:-12px;transform:translate(-50%,-100%)}.gpx-upload-btn{color:#e0e0e0;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#0a0a14bf;border:1px solid #ff660080;border-radius:8px;padding:8px 16px;font-size:.8rem;transition:background .2s,border-color .2s;position:absolute;bottom:20px;left:20px}.gpx-upload-btn:hover{background:#f603;border-color:#f60}.city-pin-label{color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0a14cc;border:1px solid #f609;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:500;transform:translate(-50%,-100%)}.layer-toggles{z-index:10;gap:10px;display:flex;position:absolute;bottom:20px;left:140px}.layer-toggle{color:#e0e0e0;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-user-select:none;user-select:none;background:#0a0a14bf;border:1px solid #ffffff26;border-radius:8px;align-items:center;gap:5px;padding:6px 12px;font-size:.8rem;display:flex}.layer-toggle:hover{border-color:#ffffff4d}.layer-toggle input[type=checkbox]{accent-color:#00e5c0;cursor:pointer}.render-distance-slider{color:#e0e0e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0a14bf;border:1px solid #ffffff26;border-radius:8px;align-items:center;gap:8px;padding:6px 12px;font-size:.8rem;display:flex}.render-distance-label{white-space:nowrap;color:#e0e0e0}.render-distance-slider input[type=range]{accent-color:#00e5c0;cursor:pointer;width:80px}.zoom-counter{color:#e0e0e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0a14bf;border:1px solid #ffffff26;border-radius:8px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;display:flex}.zoom-counter-label{color:#e0e0e0;margin-right:4px}.zoom-counter-btn{color:#e0e0e0;cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffff14;border:1px solid #fff3;border-radius:4px;justify-content:center;align-items:center;width:22px;height:22px;padding:0;font-size:.95rem;line-height:1;display:inline-flex}.zoom-counter-btn:hover:not(:disabled){background:#ffffff29;border-color:#ffffff59}.zoom-counter-btn:disabled{opacity:.4;cursor:not-allowed}.zoom-counter-input{text-align:center;color:#fff;-moz-appearance:textfield;background:#0000004d;border:1px solid #ffffff26;border-radius:4px;width:38px;padding:2px 4px;font-size:.85rem}.zoom-counter-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.zoom-counter-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.app{flex-direction:column;width:100%;height:100%;display:flex}.view-container{flex:1;position:relative;overflow:hidden}.loading-fallback{width:100%;height:100%;color:var(--text-secondary);justify-content:center;align-items:center;gap:12px;font-size:1.1rem;display:flex}.loading-fallback .spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
