#model-loader{position:absolute;inset:0;overflow:hidden;z-index:2;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility 0s .4s}
/* Size the transparent artwork from the viewport before any model downloads.
   These proportions match the former fitted default-head size. Never refit a
   visible scan from late-arriving geometry: that causes a jump at the fade. */
#model-loader,.hero-loader{container-type:size;--scan-size:min(78.4cqw,87cqh)}
.hero-loader{--scan-size:min(95.6cqw,106.4cqh)}
#model-loader img,.hero-loader img{position:absolute;display:block;width:var(--scan-size);height:auto;max-width:none;aspect-ratio:1;left:calc(50% + min(1.8cqw,1.6cqh));top:50%;transform:translate(-49%,-48%);object-fit:contain}
#stage.model-loading #model-loader{opacity:1;visibility:visible;transition:none}
#stage #view{opacity:1;transition:opacity .4s ease}
#stage.model-loading #view{opacity:0;pointer-events:none;transition:none}
#stage.model-loading #loading{display:none}
body[data-mode=hero] #model-loader{display:none}
@media(prefers-reduced-motion:reduce){#model-loader,#stage #view{transition:none}}
