*{box-sizing:border-box}:root{--tp-bg: #080a0e;--tp-bg-elevated: #0e1117;--tp-surface: #131820;--tp-surface-raised: #1a2030;--tp-border: rgba(255, 255, 255, .08);--tp-border-strong: rgba(255, 255, 255, .14);--tp-accent: #5c9fd4;--tp-accent-bright: #8ec8f5;--tp-accent-dim: #2d4a66;--tp-accent-glow: rgba(92, 159, 212, .45);--tp-text: #eef1f6;--tp-text-muted: #8b93a3;--tp-text-dim: #5c6474;--tp-font: "Inter", system-ui, -apple-system, sans-serif;--tp-radius: .5rem;--tp-radius-lg: .875rem;--tp-shadow: 0 12px 40px rgba(0, 0, 0, .45);--tp-glass: rgba(14, 17, 23, .82)}@keyframes drop-hint-enter{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes icon-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes ambient-drift{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.85;transform:scale(1.06)}}html,body,#app{margin:0;width:100%;height:100%;font-family:var(--tp-font);background:var(--tp-bg);color:var(--tp-text);-webkit-font-smoothing:antialiased}#app{display:flex;flex-direction:column}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.55rem 1rem;border-bottom:1px solid var(--tp-border);background:var(--tp-glass);-webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);box-shadow:0 1px #ffffff0a;flex-wrap:wrap;z-index:10}.toolbar-left{display:flex;align-items:center;gap:1rem;min-width:0}.brand{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.brand-mark{width:.55rem;height:.55rem;border-radius:2px;background:linear-gradient(135deg,var(--tp-accent-bright),var(--tp-accent));box-shadow:0 0 10px var(--tp-accent-glow);transform:rotate(45deg);flex-shrink:0}.brand-name{font-size:.6875rem;font-weight:700;letter-spacing:.14em;color:var(--tp-text-muted)}.brand-product{font-size:.9375rem;font-weight:600;color:var(--tp-text);letter-spacing:-.02em}.brand-badge{font-size:.5625rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tp-accent-bright);border:1px solid rgba(92,159,212,.35);border-radius:999px;padding:.1rem .45rem;background:#5c9fd41a}.build-info{font-size:.65rem;font-family:ui-monospace,monospace;color:#6b7280;white-space:nowrap}.status{font-size:.8125rem;color:var(--tp-text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:.75rem;border-left:1px solid var(--tp-border)}.toolbar-actions{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:.25rem}.toolbar-divider{width:1px;height:1.35rem;background:linear-gradient(180deg,transparent,var(--tp-border-strong),transparent);flex-shrink:0}.toolbar-actions button{padding:.38rem .7rem;border:1px solid var(--tp-border);border-radius:var(--tp-radius);background:var(--tp-surface-raised);color:var(--tp-text);cursor:pointer;font-size:.8125rem;font-weight:500;line-height:1.25;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .1s ease}.toolbar-actions button:hover{background:#222a38;border-color:var(--tp-border-strong)}.toolbar-actions button:active{transform:scale(.97)}.toolbar-actions button.active{background:linear-gradient(180deg,#2a4560,var(--tp-accent-dim));border-color:#5c9fd48c;color:#e8f4ff;box-shadow:0 0 0 1px #5c9fd433}.toolbar-btn-primary{background:linear-gradient(180deg,#3d6d94,#2d5270)!important;border-color:#7ec8f573!important;color:#f0f8ff!important;box-shadow:0 2px 8px #00000040}.toolbar-btn-primary:hover{background:linear-gradient(180deg,#4a7da8,#356080)!important;border-color:var(--tp-accent-bright)!important;box-shadow:0 2px 14px #5c9fd440}.toolbar-btn-quiet{color:#9aa0a6;border-color:transparent;background:transparent}.toolbar-btn-quiet:hover{color:#e8eaed;background:#242b36;border-color:#2e3542}.toolbar-segment{gap:0;padding:2px;border:1px solid var(--tp-border);border-radius:calc(var(--tp-radius) + 2px);background:#0003;overflow:hidden}.toolbar-segment button{border:none;border-radius:calc(var(--tp-radius) - 2px);background:transparent;margin:0}.toolbar-segment button+button{margin-left:2px}.toolbar-segment button:hover{background:#ffffff0f}.toolbar-segment button.active{background:linear-gradient(180deg,#2f4d68,#243a52);box-shadow:0 1px 4px #0000004d;color:#e8f4ff}.toolbar-btn-toggle.active{background:#243a52;border-color:#5c9fd4}.coord-warning{padding:.6rem 1rem;font-size:.875rem;line-height:1.4;color:#f9e2af;background:#3d3520;border-bottom:1px solid #6b5a2e}.coord-warning[hidden]{display:none}.load-warning{padding:.6rem 1rem;font-size:.875rem;line-height:1.4;color:#c2e7ff;background:#1e2a3d;border-bottom:1px solid #3c5a7a}.load-warning[hidden]{display:none}main{position:relative;flex:1;min-height:0;background:radial-gradient(ellipse 70% 55% at 50% 45%,rgba(45,74,102,.18),transparent 70%),radial-gradient(ellipse 45% 35% at 15% 75%,rgba(92,159,212,.07),transparent),radial-gradient(ellipse 40% 30% at 85% 20%,rgba(126,200,245,.05),transparent),var(--tp-bg-elevated)}#viewer-canvas{width:100%;height:100%;display:block;touch-action:none;outline:none;transition:filter .35s ease}#viewer-ui{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loading-card-in{0%{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes loading-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes loading-shimmer{0%{transform:translate(-100%)}to{transform:translate(250%)}}@keyframes progress-pulse{0%,to{box-shadow:0 0 6px var(--tp-accent-glow)}50%{box-shadow:0 0 14px var(--tp-accent-glow)}}main.is-loading #viewer-canvas{filter:brightness(.72) saturate(.85)}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;pointer-events:none}.loading-overlay[hidden]{display:none}.loading-overlay-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:#080a0e73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:loading-overlay-out .2s ease reverse}.loading-card{position:relative;display:flex;flex-direction:column;align-items:center;min-width:11rem;padding:1.35rem 1.5rem 1.15rem;background:linear-gradient(165deg,#161c28f2,#0c0f16eb);border:1px solid var(--tp-border-strong);border-radius:var(--tp-radius-lg);box-shadow:var(--tp-shadow);animation:loading-card-in .35s cubic-bezier(.22,1,.36,1) both}.loading-spinner{position:relative;width:3.25rem;height:3.25rem;margin-bottom:.65rem}.loading-ring{position:absolute;top:0;right:0;bottom:0;left:0;border:2px solid rgba(92,159,212,.15);border-top-color:var(--tp-accent-bright);border-radius:50%;animation:loading-spin .85s linear infinite}.loading-cube{position:absolute;top:.5rem;right:.5rem;bottom:.5rem;left:.5rem;color:var(--tp-accent-bright);filter:drop-shadow(0 0 6px var(--tp-accent-glow));animation:icon-float 2.2s ease-in-out infinite}.loading-stage{margin:0;font-size:.875rem;font-weight:600;color:var(--tp-text);letter-spacing:-.01em}.loading-track{position:relative;width:100%;height:4px;margin-top:.65rem;border-radius:999px;background:#ffffff14;overflow:hidden}.loading-track-fill{height:100%;width:0%;border-radius:inherit;background:linear-gradient(90deg,var(--tp-accent),var(--tp-accent-bright));transition:width .2s ease;position:relative}.loading-track-fill--indeterminate:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:loading-shimmer 1.2s ease-in-out infinite}.loading-percent{margin:.45rem 0 0;font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--tp-text-muted)}.loading-overlay--hiding .loading-overlay-dim,.loading-overlay--hiding .loading-card{animation:loading-overlay-out .28s ease forwards}.drop-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;padding:1.5rem;overflow:hidden}.drop-hint-ambient{position:absolute;width:28rem;height:28rem;border-radius:50%;background:radial-gradient(circle,var(--tp-accent-glow) 0%,transparent 68%);filter:blur(40px);animation:ambient-drift 6s ease-in-out infinite;pointer-events:none}.drop-hint-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.4rem;width:min(20rem,100%);padding:2rem 2.25rem 1.75rem;text-align:center;border:1px solid var(--tp-border-strong);border-radius:var(--tp-radius-lg);background:linear-gradient(165deg,#161c28eb,#0c0f16e0);-webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);box-shadow:var(--tp-shadow),inset 0 1px #ffffff0f;pointer-events:auto;animation:drop-hint-enter .5s cubic-bezier(.22,1,.36,1) both;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.drop-hint-card:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;padding:1px;background:linear-gradient(135deg,rgba(126,200,245,.35),transparent 40%,transparent 60%,rgba(92,159,212,.2));mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.drop-hint-icon-wrap{display:flex;align-items:center;justify-content:center;width:4.5rem;height:4.5rem;margin-bottom:.25rem;border-radius:50%;background:radial-gradient(circle at 40% 35%,#5c9fd433,#5c9fd40a);border:1px solid rgba(92,159,212,.25);animation:icon-float 4s ease-in-out infinite}.drop-hint-icon{color:var(--tp-accent-bright);filter:drop-shadow(0 0 8px var(--tp-accent-glow))}.drop-hint-title{font-size:1.125rem;font-weight:600;color:var(--tp-text);margin:0;letter-spacing:-.025em}.drop-hint-formats{display:flex;gap:.4rem;margin-top:.15rem}.format-pill{font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--tp-accent-bright);padding:.15rem .5rem;border-radius:999px;border:1px solid rgba(92,159,212,.3);background:#5c9fd414}.drop-hint-sub{font-size:.8125rem;color:var(--tp-text-muted);margin:.1rem 0 0}.drop-hint-btn{margin-top:.75rem;padding:.55rem 1.35rem;border:none;border-radius:var(--tp-radius);background:linear-gradient(180deg,#4a85b0,#356080);color:#f5faff;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:0 2px 10px #0000004d,inset 0 1px #ffffff26;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.drop-hint-btn:hover{filter:brightness(1.08);box-shadow:0 4px 18px #5c9fd459,inset 0 1px #fff3;transform:translateY(-1px)}.drop-hint-btn:active{transform:translateY(0)}.drop-hint-demos{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--tp-border);width:100%;justify-content:center;font-size:.75rem}.drop-hint-demos-label{color:var(--tp-text-dim);font-size:.6875rem;font-weight:500;width:100%;text-align:center;margin-bottom:.1rem}.drop-hint-demos a{color:var(--tp-text-muted);text-decoration:none;padding:.3rem .65rem;border-radius:999px;border:1px solid var(--tp-border);background:#ffffff08;transition:color .15s ease,border-color .15s ease,background .15s ease}.drop-hint-demos a:hover{color:var(--tp-accent-bright);border-color:#5c9fd466;background:#5c9fd41a}.drop-hint.hidden{display:none}main.drag-over .drop-hint-card{border-color:#7ec8f58c;box-shadow:0 0 0 1px #5c9fd44d,0 16px 48px #5c9fd433,var(--tp-shadow);transform:scale(1.02)}main.drag-over .drop-hint-icon-wrap{animation:none;border-color:#7ec8f580;background:radial-gradient(circle at 40% 35%,#5c9fd459,#5c9fd414)}main.drag-over .drop-hint-ambient{opacity:1;animation-duration:2s}.fps-label{position:absolute;left:.75rem;bottom:.75rem;padding:.3rem .55rem;background:var(--tp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--tp-border);border-radius:var(--tp-radius);font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--tp-text-muted);pointer-events:none;z-index:2}.gis-hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.gis-hud-top{position:absolute;top:.75rem;left:.75rem;display:flex;align-items:center;gap:.5rem}.crs-chip{padding:.25rem .55rem;background:var(--tp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--tp-border);border-radius:var(--tp-radius);font-size:.75rem;font-weight:600;color:var(--tp-accent-bright);letter-spacing:.02em}.north-arrow{width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:var(--tp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--tp-border);border-radius:50%;transform-origin:center center}.north-arrow-label{font-size:.6875rem;font-weight:700;color:#e57373;transform:translateY(-1px)}.coord-readout{position:absolute;left:50%;bottom:.75rem;transform:translate(-50%);max-width:calc(100% - 1.5rem);padding:.35rem .7rem;background:var(--tp-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--tp-border);border-radius:var(--tp-radius);font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--tp-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-bar-wrap{position:absolute;left:.75rem;bottom:2.35rem;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem}.scale-bar{height:4px;min-width:24px;background:#e8eaed;border:1px solid rgba(0,0,0,.45);border-radius:1px}.scale-label{font-size:.6875rem;color:#e8eaed;text-shadow:0 1px 2px rgba(0,0,0,.8)}.measure-panel{position:absolute;top:.75rem;right:.75rem;width:min(20rem,calc(100% - 1.5rem));max-height:calc(100% - 1.5rem);overflow:auto;padding:.85rem;background:var(--tp-glass);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border:1px solid var(--tp-border-strong);border-radius:var(--tp-radius-lg);font-size:.8125rem;pointer-events:auto;box-shadow:var(--tp-shadow)}.measure-panel[hidden]{display:none}.measure-panel-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.measure-panel-header button{padding:.2rem .5rem;border:1px solid #3c4454;border-radius:.25rem;background:#1e2430;color:#e8eaed;cursor:pointer;font-size:.75rem}.measure-panel-header button:hover{background:#2a3140}.measure-hint{margin:0 0 .65rem;color:#9aa0a6;font-size:.75rem;line-height:1.35}.measure-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.measure-table th,.measure-table td{padding:.35rem .4rem;text-align:left;border-bottom:1px solid #2a2f3a}.measure-table th{color:#9aa0a6;font-weight:600}.measure-table td:last-child,.measure-table th:last-child{text-align:right}.measure-table tfoot th,.measure-table tfoot td{border-bottom:none;border-top:1px solid #3c4454;color:#c2e7ff;font-weight:600}.measure-table tbody tr:last-child td{border-bottom:none}.bookmark-panel{position:absolute;left:.75rem;bottom:2.75rem;width:min(14rem,calc(100% - 1.5rem));max-height:12rem;overflow:auto;padding:.75rem .85rem;background:var(--tp-glass);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border:1px solid var(--tp-border-strong);border-radius:var(--tp-radius-lg);font-size:.8125rem;pointer-events:auto;box-shadow:var(--tp-shadow)}.bookmark-panel[hidden]{display:none}.bookmark-panel-header{margin-bottom:.45rem}.bookmark-list{list-style:none;margin:0;padding:0}.bookmark-list[hidden]{display:none}.bookmark-list button{width:100%;text-align:left;padding:.35rem .45rem;margin-bottom:.25rem;border:1px solid #3c4454;border-radius:.25rem;background:#1e2430;color:#e8eaed;cursor:pointer;font-size:.8125rem}.bookmark-list button:hover{background:#2d4a66;border-color:#5c9fd4}.bookmark-empty{margin:0;color:#9aa0a6;font-size:.75rem;line-height:1.35}.bookmark-empty[hidden]{display:none}.progress-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:#0006;opacity:0;transition:opacity .2s ease}.progress-bar--active{opacity:1}.progress-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--tp-accent),var(--tp-accent-bright));box-shadow:0 0 8px var(--tp-accent-glow);transition:width .2s ease}.progress-bar--active .progress-fill{animation:progress-pulse 1.6s ease-in-out infinite}@media(max-width:640px){.toolbar{padding:.45rem .65rem}.toolbar-left{flex:1 1 100%;gap:.35rem}.brand-badge{display:none}.status{max-width:100%;padding-left:0;border-left:none}.toolbar-actions{flex:1 1 100%;gap:.25rem}.toolbar-divider{display:none}.toolbar-group{flex-wrap:wrap}.toolbar-actions button{padding:.45rem .55rem;font-size:.75rem}.drop-hint-card{padding:1.5rem 1.25rem 1.35rem;width:100%}.drop-hint-icon-wrap{width:3.75rem;height:3.75rem}}@media(prefers-reduced-motion:reduce){.drop-hint-card,.drop-hint-icon-wrap,.drop-hint-ambient,.loading-ring,.loading-cube,.loading-track-fill--indeterminate:after,.progress-bar--active .progress-fill{animation:none}.toolbar-actions button:active,.drop-hint-btn:hover,#viewer-canvas,.loading-card,.loading-overlay-dim{transition:none;animation:none;transform:none;filter:none}main.is-loading #viewer-canvas{filter:brightness(.85)}}
