/* UtilityHub — premium animations (respects prefers-reduced-motion) */

/* staggered scroll reveal */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.3,1)}
.reveal.visible{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.08s}
.reveal[data-delay="2"]{transition-delay:.16s}
.reveal[data-delay="3"]{transition-delay:.24s}
.reveal[data-delay="4"]{transition-delay:.32s}
.reveal[data-delay="5"]{transition-delay:.48s}

/* hero gradient shimmer */
@keyframes uhShimmer{
  0%{background-position:0% 50%}
  50%{background-position:100% 50%}
  100%{background-position:0% 50%}
}
.shimmer{
  background:linear-gradient(110deg,#8B5CF6,#22D3EE,#a78bfa,#8B5CF6);
  background-size:220% 220%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  animation:uhShimmer 6s ease-in-out infinite;
}

/* glowing button pulse */
@keyframes uhGlow{
  0%,100%{box-shadow:0 6px 24px rgba(139,92,246,.4)}
  50%{box-shadow:0 6px 34px rgba(34,211,238,.55)}
}
.btn-glow{animation:uhGlow 3.2s ease-in-out infinite}

/* page fade-in */
@keyframes uhPageIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.page-in{animation:uhPageIn .45s ease}

/* tool card hover glow (extra) */
.tool-card{position:relative;overflow:hidden}
.tool-card::after{
  content:"";position:absolute;inset:0;border-radius:16px;pointer-events:none;opacity:0;transition:opacity .3s;
  background:radial-gradient(320px 160px at 50% -20%,rgba(139,92,246,.28),transparent 70%);
}
.tool-card:hover::after{opacity:1}

/* floating badge */
@keyframes uhFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.float{animation:uhFloat 4s ease-in-out infinite}

/* spinner */
@keyframes uhSpin{to{transform:rotate(360deg)}}
.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.15);
  border-top-color:var(--cyan);animation:uhSpin .8s linear infinite;margin:20px auto}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none}
}
