/* =====================================================================
   LUNIVA SDRC — animations.css
   Keyframes + AOS-like reveal + hover lifts + marquees
   ===================================================================== */

/* ---------- Keyframes ---------- */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulseLogo { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(34,167,233,.5); } 50% { transform: scale(1.06); box-shadow: 0 0 0 16px rgba(34,167,233,0); } }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes floaty2 { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(10px); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
@keyframes shimmer { 100% { transform: translateX(100%); } }
@keyframes growBar { from { height: 0; } }
@keyframes gradientShift { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes popIn { 0% { opacity: 0; transform: scale(.9); } 100% { opacity: 1; transform: scale(1); } }

/* ---------- AOS-like reveal (IntersectionObserver toggles .aos-in) ---------- */
[data-aos] { opacity: 0; transition: opacity .8s var(--ease), transform .8s var(--ease); will-change: opacity, transform; }
[data-aos="fade-up"] { transform: translateY(42px); }
[data-aos="fade-down"] { transform: translateY(-42px); }
[data-aos="fade-right"] { transform: translateX(-46px); }
[data-aos="fade-left"] { transform: translateX(46px); }
[data-aos="zoom-in"] { transform: scale(.9); }
[data-aos="flip-up"] { transform: perspective(800px) rotateX(18deg); transform-origin: top; }
[data-aos].aos-in { opacity: 1 !important; transform: none !important; }

/* delay helpers */
[data-aos-delay="100"] { transition-delay: .1s; }
[data-aos-delay="200"] { transition-delay: .2s; }
[data-aos-delay="300"] { transition-delay: .3s; }
[data-aos-delay="400"] { transition-delay: .4s; }
[data-aos-delay="500"] { transition-delay: .5s; }
[data-aos-delay="600"] { transition-delay: .6s; }

/* once: elements that already in viewport on load animate immediately handled by JS */

/* ---------- Float decorations ---------- */
.float-anim { animation: floaty 5s ease-in-out infinite; }
.float-anim-2 { animation: floaty2 6s ease-in-out infinite; }

/* ---------- Trusted clients marquee ---------- */
.marquee { overflow: hidden; position: relative; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.marquee-track { display: flex; gap: 3rem; width: max-content; animation: marquee 26s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-logo { display: inline-flex; align-items: center; gap: .6rem; font-family: 'Poppins'; font-weight: 700; font-size: 1.25rem; color: var(--dark-2); opacity: .55; transition: opacity .3s; white-space: nowrap; }
.marquee-logo:hover { opacity: 1; }
.marquee-logo i { font-size: 1.5rem; color: var(--primary); }

/* ---------- Hover lifts ---------- */
.hover-lift { transition: transform .4s var(--ease), box-shadow .4s var(--ease); }
.hover-lift:hover { transform: translateY(-8px); box-shadow: var(--shadow-lg); }
.lift-sm:hover { transform: translateY(-4px); }

/* ---------- Image zoom on hover wrapper ---------- */
.zoom-wrap { overflow: hidden; border-radius: var(--radius); }
.zoom-wrap img { transition: transform .7s var(--ease); }
.zoom-wrap:hover img { transform: scale(1.07); }

/* ---------- Animated underline links ---------- */
.ulink { position: relative; }
.ulink::after { content: ""; position: absolute; left: 0; bottom: -2px; width: 0; height: 2px; background: var(--grad-primary); transition: width .3s var(--ease); }
.ulink:hover::after { width: 100%; }

/* ---------- Gradient text shift ---------- */
.text-grad-anim { background: linear-gradient(90deg, #0d6efd, #22a7e9, #0b5ed7, #0d6efd); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: gradientShift 6s ease infinite; }

/* ---------- Skeleton shimmer (loading media) ---------- */
.skeleton { position: relative; overflow: hidden; background: var(--light-bg); }
.skeleton::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, rgba(255,255,255,.6), transparent); animation: shimmer 1.5s infinite; }

/* ---------- Live dot ---------- */
.live-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--success); animation: blink 1.4s infinite; display: inline-block; }

/* ---------- Pop in utility ---------- */
.pop-in { animation: popIn .5s var(--ease) both; }
