/* Finite entrances and tap feedback. Never flip far enough to expose mirrored text. */
.cast-card,.episode-card,.comic-panel{backface-visibility:hidden;transform-style:flat}
@keyframes castFlip41{
 0%{opacity:1;transform:perspective(800px) translateY(28px) rotateY(-72deg) rotateZ(-16deg) scale(.86)}
 63%{opacity:1;transform:perspective(800px) translateY(-9px) rotateY(10deg) rotateZ(5deg) scale(1.025)}
 81%{transform:perspective(800px) translateY(3px) rotateY(-4deg) rotateZ(-3deg) scale(.99)}
 100%{opacity:1;transform:perspective(800px) translateY(0) rotateY(0deg) rotateZ(var(--card-rest,var(--tilt))) scale(1)}
}
.motion-on .cast-card.is-entering{animation:castFlip41 .82s calc(var(--order)*.065s) cubic-bezier(.2,.8,.25,1) both}
@keyframes episodeTurn41{
 0%{opacity:1;transform:perspective(1000px) translateY(32px) rotateY(44deg) rotateX(8deg) rotateZ(-7deg) scale(.94)}
 70%{opacity:1;transform:perspective(1000px) translateY(-6px) rotateY(-5deg) rotateX(0deg) rotateZ(2deg) scale(1.012)}
 100%{opacity:1;transform:perspective(1000px) translateY(0) rotateY(0deg) rotateX(0deg) rotateZ(0deg) scale(1)}
}
.motion-on .episode-card.reveal.is-visible{animation:episodeTurn41 .9s cubic-bezier(.2,.8,.25,1) both}
.motion-on .episode-card:nth-child(2).reveal.is-visible{animation-delay:.13s}
@keyframes compactFlip{0%{translate:40px 12px;rotate:y -55deg;scale:.9}72%{translate:-5px -4px;rotate:y 6deg;scale:1.012}100%{translate:0 0;rotate:y 0deg;scale:1}}
@keyframes dialogTurn41{0%{opacity:1;transform:perspective(1000px) rotateY(-24deg) translateY(28px) scale(.92)}72%{transform:perspective(1000px) rotateY(3deg) translateY(-3px) scale(1.005)}100%{opacity:1;transform:none}}
.motion-on dialog[open]{animation:dialogTurn41 .45s cubic-bezier(.2,.8,.25,1) both;backface-visibility:hidden}
.cast-card:active,.episode-card:active,.comic-scene-nav button:active{scale:.96}
.cast-card,.episode-card,.comic-scene-nav button{transition:scale .13s,box-shadow .2s}
@media(max-width:700px){.cast-card{--card-rest:calc(var(--tilt)*.5)}}
html:not(.motion-on) .cast-card,html:not(.motion-on) .episode-card,html:not(.motion-on) .comic-panel,html:not(.motion-on) dialog{animation:none!important}
@media(prefers-reduced-motion:reduce){.cast-card,.episode-card,.comic-panel,dialog{animation:none!important;transition:none!important;scale:1}}
