/* =========================================================
   JUBAYER GLASS PRO — ANIMATIONS
   ========================================================= */

@keyframes jgpFadeIn{
	from{ opacity:0; transform:translateY(24px); }
	to{ opacity:1; transform:translateY(0); }
}
.jgp-fade-in{ animation:jgpFadeIn .9s ease both; }

@keyframes jgpFloatY{
	0%,100%{ transform:translateY(0); }
	50%{ transform:translateY(-14px); }
}
.jgp-float{ animation:jgpFloatY 6s ease-in-out infinite; }

@keyframes jgpPulseGlow{
	0%,100%{ box-shadow:0 0 0 rgba(142,227,255,0.0); }
	50%{ box-shadow:0 0 40px rgba(142,227,255,0.25); }
}
.jgp-pulse-glow{ animation:jgpPulseGlow 4s ease-in-out infinite; }

@keyframes jgpSpin{
	from{ transform:rotate(0); }
	to{ transform:rotate(360deg); }
}
.jgp-spin-slow{ animation:jgpSpin 18s linear infinite; }

/* stagger helper classes applied via JS/inline style */
.jgp-reveal[data-delay="1"]{ transition-delay:.1s; }
.jgp-reveal[data-delay="2"]{ transition-delay:.2s; }
.jgp-reveal[data-delay="3"]{ transition-delay:.3s; }
.jgp-reveal[data-delay="4"]{ transition-delay:.4s; }

/* Loading skeleton (for lazy content) */
.jgp-skeleton{
	background:linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.09) 37%, rgba(255,255,255,0.04) 63%);
	background-size:400% 100%;
	animation:jgpSkeleton 1.4s ease infinite;
	border-radius:var(--jgp-radius-sm);
}
@keyframes jgpSkeleton{
	0%{ background-position:100% 50%; }
	100%{ background-position:0 50%; }
}

/* reduce motion accessibility */
@media (prefers-reduced-motion: reduce){
	*{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important; }
}
