.ship-window{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:12;background:transparent}.ship-window[hidden],.spacecraft[hidden]{display:none!important}
.spacecraft{width:74px;height:49px;pointer-events:none;z-index:5;isolation:isolate;transform-origin:50% 65%;color:#e9f9ff}.spacecraft svg{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 5px #00122299)}
.spacecraft.docked{position:absolute;left:66%;top:22%;transform:translate(-50%,-80%)}.spacecraft.in-flight{position:absolute;left:0;top:0;will-change:transform;translate:var(--flight-shift-x,0px) var(--flight-shift-y,0px)}
.ship-exhaust{position:absolute;left:88%;top:50%;width:130px;height:6px;background:linear-gradient(90deg,#dcffffee,#54c5ff88,transparent);border-radius:50%;filter:blur(2px);transform-origin:left center;z-index:-1}.docked .ship-exhaust,.docked .ship-engine-flame,.docked .ship-braking-jets,.docked .ship-scan{display:none}
.in-flight .ship-exhaust{animation:ship-throttle 18s linear forwards}.ship-engine-flame{transform-origin:87% 55%}.in-flight .ship-engine-flame{animation:ship-throttle 18s linear forwards}
.ship-shadow{display:none;position:absolute;left:24%;bottom:4%;width:58%;height:6px;background:#001228aa;filter:blur(4px);border-radius:50%;z-index:-1}.docked .ship-shadow{display:block}
.ship-scan{position:absolute;left:24%;bottom:-10px;width:54%;height:16px;opacity:0;border:1px solid #9ef5ff;border-radius:50%;box-shadow:0 0 12px #56cfff66;transform:scaleY(.25)}.in-flight .ship-scan{animation:ship-scan 18s linear forwards}
.ship-beacon{animation:ship-beacon 3.2s ease-in-out infinite}.in-flight .landing-gear{animation:gear-deploy 18s linear forwards;transform-origin:50% 65%}.in-flight .ship-downwash{animation:ship-downwash 18s linear forwards;transform-origin:50% 70%}.docked .ship-downwash{opacity:0}.in-flight .ship-braking-jets{animation:ship-brakes 18s linear forwards}.flight-paused *{animation-play-state:paused!important}
@keyframes ship-beacon{50%{opacity:.35}}
@keyframes ship-throttle{0%,20%{transform:scaleX(1.5);opacity:.9}45%{transform:scaleX(.7);opacity:.8}65%{transform:scaleX(.25);opacity:.3}80%,100%{transform:scaleX(0);opacity:0}}
@keyframes gear-deploy{0%,66%{transform:translateY(-10px) scaleY(.2);opacity:0}78%,100%{transform:translateY(0) scaleY(1);opacity:1}}
@keyframes ship-downwash{0%,46%{opacity:0}65%,84%{opacity:.8}96%{opacity:.4}100%{opacity:0}}
@keyframes ship-scan{0%,61%{opacity:0;transform:scale(.3,.15)}70%,80%{opacity:.8;transform:scale(1,.35)}90%{opacity:.4;transform:scale(1.35,.4)}100%{opacity:0;transform:scale(1.5,.45)}}
@keyframes ship-brakes{0%,35%{opacity:0}44%{opacity:.9}52%{opacity:.1}58%{opacity:.8}67%{opacity:.15}75%{opacity:.6}88%,100%{opacity:0}}
@media(max-width:760px){.spacecraft{width:64px;height:43px}.spacecraft.docked{left:64%;top:24%}.ship-exhaust{width:95px}}
@media(prefers-reduced-motion:reduce){.spacecraft *{animation:none!important}}/* Solid model: true sides remain visible at oblique surface angles. */
.ship-mesh{display:none;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 2px 3px #00172b88)}
.spacecraft.docked.mesh-ready>.ship-mesh{display:block}.spacecraft.docked.mesh-ready>svg{visibility:hidden}
.spacecraft.in-flight.mesh-ready>.ship-mesh{display:block}.spacecraft.in-flight.mesh-ready>svg{visibility:hidden}
/* Root origin is the contact point; pose and feet now share one 3D tangent frame. */
.spacecraft.docked{transform:translate(-50%,-50%)}.spacecraft.docked .ship-shadow{display:none}
.ship-touchdown-dust{position:absolute;left:50%;top:50%;width:54px;height:11px;border-radius:50%;background:radial-gradient(ellipse,#b4e9ff66,transparent 70%);pointer-events:none;opacity:0;z-index:-1}
.touchdown .ship-touchdown-dust{animation:ship-contact-dust 1.6s ease-out both}
@keyframes ship-contact-dust{0%{transform:translate(-50%,-50%) scale(.25);opacity:.55}100%{transform:translate(-50%,-50%) scale(1.45);opacity:0}}
