/* Configurator entry animation (see intro.js). The poster (paper, border, texts, shadow, status
   text) stays invisible while the sky disc alone, fixed on the stage, re-projects its stars
   from Anchorage to the selected place; then the poster fades in as one layer, 600ms ease-in. */
.poster.intro-pending,.configuration.intro-pending{visibility:hidden}
.poster.intro-reveal,.configuration.intro-reveal{animation:poster-intro-fade 600ms ease-in both}
.poster-intro{position:absolute;left:0;top:0;display:block;pointer-events:none;z-index:2}
@keyframes poster-intro-fade{from{opacity:0}to{opacity:1}}
/* Vector travel (intro.js playVector): the figure is on screen but shows only its sky disc — no
   paper, shadow, border, texts — while the SVG re-projects the stars; then those layers fade in
   (intro-sky-fade) on the same 600ms ease-in clock as the moment block. The sky group itself is
   never faded, so the last travel frame and the revealed poster are the same nodes. */
.poster.intro-sky{background:transparent;box-shadow:none}
.poster.intro-sky #poster-svg>:not(defs):not(clipPath):not([data-layer="sky"]),.poster.intro-sky .render-message{visibility:hidden}
.poster.intro-sky-fade{animation:poster-intro-sky-fade 600ms ease-in both}
.poster.intro-sky-fade #poster-svg>:not(defs):not(clipPath):not([data-layer="sky"]){animation:poster-intro-fade 600ms ease-in both}
@keyframes poster-intro-sky-fade{from{box-shadow:0 0 0 #0000,0 0 0 #0000}to{box-shadow:0 12px 36px #00000038,0 4px 12px #00000024}}
@media(prefers-reduced-motion:reduce){.poster.intro-pending,.configuration.intro-pending{visibility:visible}.poster.intro-reveal,.configuration.intro-reveal{animation:none}.poster.intro-sky{background:#24314a}.poster.intro-sky #poster-svg>*{visibility:visible}.poster.intro-sky-fade,.poster.intro-sky-fade #poster-svg>*{animation:none}}
