/* Ultra Red Technologies — motion */

@keyframes urFadeUp{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes urFadeIn{
  from{ opacity:0; }
  to{ opacity:1; }
}
@keyframes urPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(84,224,236,.5); }
  70%{ box-shadow:0 0 0 8px rgba(84,224,236,0); }
}
@keyframes urDrift{
  0%,100%{ transform:translate(0,0); }
  50%{ transform:translate(-14px,10px); }
}
@keyframes urSpin{
  to{ transform:rotate(360deg); }
}

/* Scroll-reveal — toggled by reveal.js via IntersectionObserver */
.reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity var(--dur-reveal) var(--ease-out), transform var(--dur-reveal) var(--ease-out);
}
.reveal.is-visible{ opacity:1; transform:translateY(0); }

.reveal-group > *{ transition-delay:calc(var(--stagger-index, 0) * var(--stagger-step)); }

.glow.drift{ animation:urDrift 12s ease-in-out infinite; }
.eyebrow.status::before{ animation:urPulse 2.4s ease-in-out infinite; }

.spinner{
  width:20px; height:20px; border-radius:50%;
  border:2px solid var(--line); border-top-color:var(--accent);
  animation:urSpin .8s linear infinite;
}

@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  .glow.drift{ animation:none; }
  .eyebrow.status::before{ animation:none; }
  *{ scroll-behavior:auto !important; }
}
