/* RVC professional route transition — lightweight, no polling */
:root { --rvc-route-duration: 320ms; --rvc-route-ease: cubic-bezier(.22,.8,.24,1); }
#root.rvc-route-enter > * {
  animation: rvcRouteEnter var(--rvc-route-duration) var(--rvc-route-ease) both;
  transform-origin: 50% 20%;
}
body.rvc-route-moving::after {
  content: "";
  position: fixed;
  z-index: 99999;
  top: 0;
  left: 0;
  height: 3px;
  width: 100%;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, #1687ef 35%, #5cb8ff 65%, transparent);
  transform: translateX(-100%);
  animation: rvcRouteProgress 360ms ease-out both;
}
@keyframes rvcRouteEnter {
  0% { opacity: .12; transform: translate3d(0, 12px, 0) scale(.995); filter: saturate(.94); }
  55% { opacity: 1; }
  100% { opacity: 1; transform: translate3d(0,0,0) scale(1); filter: none; }
}
@keyframes rvcRouteProgress {
  0% { transform: translateX(-100%); opacity: 0; }
  18% { opacity: 1; }
  72% { transform: translateX(-12%); opacity: 1; }
  100% { transform: translateX(100%); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  #root.rvc-route-enter > *, body.rvc-route-moving::after { animation: none !important; }
}
