/* Small, professional animations for RLink Express */
@keyframes rlinkFadeUp {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes rlinkFloatY {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-4px); }
}
@keyframes rlinkShine {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.rlink-reveal {
  opacity: 0;
  animation: rlinkFadeUp .6s cubic-bezier(.2,.7,.2,1) forwards;
  animation-play-state: paused;
}
.rlink-reveal.is-visible { animation-play-state: running; }

.rlink-lift { transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease; will-change: transform; }
.rlink-lift:hover { transform: translateY(-3px); }

.rlink-float { animation: rlinkFloatY 3.4s ease-in-out infinite; }

/* Underline sweep for links */
.rlink-underline { position: relative; }
.rlink-underline::after {
  content:""; position:absolute; left:0; bottom:-2px; height:2px; width:100%;
  background: var(--primary); transform: scaleX(0); transform-origin: right;
  transition: transform .3s cubic-bezier(.2,.7,.2,1);
}
.rlink-underline:hover::after { transform: scaleX(1); transform-origin: left; }

/* Mobile panel slide */
#rlink-mobile-panel { animation: rlinkFadeUp .25s ease-out; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .rlink-reveal, .rlink-lift, .rlink-float, #rlink-mobile-panel { animation: none !important; transition: none !important; opacity: 1 !important; }
}
