/* Transform-only motion keeps the keyed video on its own compositor layer.
   Positioning and the static shadow remain owned by the scene stylesheet. */
.hostcv[data-view="full"] {
  transform-origin: 50% 88%;
  animation: hostFloat 5.2s ease-in-out infinite;
}
.hostcv[data-view="full"].host-enter {
  animation: hostLanding 1.15s cubic-bezier(.18,.7,.28,1) both;
}
.hostcv[data-view="full"].host-celebrate {
  animation: hostCelebrate 1.35s cubic-bezier(.22,.65,.3,1) both;
}
#qHost .hostcv[data-view="full"] { --host-lift: -4px; --host-sway: .35deg; }
.hostcv[data-view="full"][data-mode="read"],
.hostcv[data-view="head"] { animation: none; transform: none; }

@keyframes hostLanding {
  0% { opacity: 0; transform: translate3d(24px,-64px,0) rotate(-4deg) scale(.96); }
  28% { opacity: 1; }
  68% { transform: translate3d(-3px,7px,0) rotate(1deg) scale(1.015,.985); }
  84% { transform: translate3d(1px,-4px,0) rotate(-.4deg); }
  100% { opacity: 1; transform: translate3d(0,0,0) rotate(0) scale(1); }
}
@keyframes hostFloat {
  0%,100% { transform: translate3d(0,0,0) rotate(0); }
  50% { transform: translate3d(0,var(--host-lift,-9px),0) rotate(var(--host-sway,.65deg)); }
}
@keyframes hostCelebrate {
  0% { transform: translate3d(0,0,0) scale(1); }
  15% { transform: translate3d(0,4px,0) scale(1.02,.98); }
  43% { transform: translate3d(0,-27px,0) rotate(-2deg) scale(.99,1.015); }
  70% { transform: translate3d(0,3px,0) rotate(.7deg) scale(1.02,.98); }
  85% { transform: translate3d(0,-4px,0) rotate(-.3deg); }
  100% { transform: translate3d(0,0,0) rotate(0) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .hostcv[data-view] { animation: none !important; transform: none !important; }
}
