/* Programmatic only: preserve the completed campaign visual after the once animation.
   The shared controller, 12s timing, stagger (.7s) and hover replay stay unchanged. */
/* Allow the existing pointerenter handler to fire on the visual; the original scene blocks all pointer events. */
.promotion-detail-programmatic .iq-programmatic-scene { pointer-events:auto }
@keyframes iqm-banner {
  0%,14% { opacity:0; transform:translateY(8px) scale(.96) }
  28%,100% { opacity:1; transform:none }
}
@keyframes iqm-status {
  0%,39% { opacity:0; translate:0 10px }
  49%,100% { opacity:1; translate:0 0 }
}
@keyframes iqm-audience {
  0%,8% { opacity:.4 }
  18%,100% { opacity:1 }
}
