/* ============================================================
   SHRADHYA TECH SOLUTIONS — animations.css
   ============================================================ */

/* === ANIMATIONS === */
/* ============================================================
   SHRADHYA TECH SOLUTIONS — animations.css
   Keyframes · Scroll-reveal · Transitions · Pulse effects
   ============================================================ */

/* KEYFRAMES */
@keyframes preload      { to { width: 100% } }
@keyframes glow         { from { opacity: .6 } to { opacity: 1 } }
@keyframes fadeUp       { from { opacity: 0; transform: translateY(30px) } to { opacity: 1; transform: translateY(0) } }
@keyframes pulse        { 0%,100% { opacity:1; transform:scale(1) } 50% { opacity:.5; transform:scale(.75) } }
@keyframes blink        { 0%,100% { border-color: var(--teal) } 50% { border-color: transparent } }
@keyframes scrolldn     { 0% { height: 50px; opacity: 1 } 100% { height: 6px; opacity: 0 } }
@keyframes orbit        { from { transform: rotate(0) } to { transform: rotate(360deg) } }
@keyframes floatAnim    { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-12px) } }
@keyframes ripple       { to { width: 300px; height: 300px; opacity: 0 } }
@keyframes shimmer      { 0% { background-position: -200% center } 100% { background-position: 200% center } }
@keyframes slideInLeft  { from { opacity: 0; transform: translateX(-60px) } to { opacity: 1; transform: translateX(0) } }
@keyframes slideInRight { from { opacity: 0; transform: translateX(60px) }  to { opacity: 1; transform: translateX(0) } }
@keyframes zoomIn       { from { opacity: 0; transform: scale(.88) } to { opacity: 1; transform: scale(1) } }
@keyframes popIn        { 0% { transform: scale(0.6); opacity: 0 } 80% { transform: scale(1.05) } 100% { transform: scale(1); opacity: 1 } }
@keyframes gradShift    { 0%,100% { background-position: 0% 50% } 50% { background-position: 100% 50% } }
@keyframes waBounce     { 0%,100% { transform: translateY(0) } 30% { transform: translateY(-8px) } 60% { transform: translateY(-4px) } }
@keyframes modalIn      { from { opacity: 0; transform: translateY(40px) scale(.95) } to { opacity: 1; transform: translateY(0) scale(1) } }
@keyframes overlayIn    { from { opacity: 0 } to { opacity: 1 } }

/* SCROLL REVEAL BASE */
.rv   { opacity: 0; transform: translateY(40px);  transition: opacity .72s ease, transform .72s ease }
.rv-l { opacity: 0; transform: translateX(-40px); transition: opacity .72s ease, transform .72s ease }
.rv-r { opacity: 0; transform: translateX(40px);  transition: opacity .72s ease, transform .72s ease }
.rv.vis, .rv-l.vis, .rv-r.vis { opacity: 1; transform: none }

/* DELAY HELPERS */
.d1 { transition-delay: .1s }
.d2 { transition-delay: .2s }
.d3 { transition-delay: .3s }
.d4 { transition-delay: .4s }
.d5 { transition-delay: .5s }
.d6 { transition-delay: .6s }
.d7 { transition-delay: .7s }
.d8 { transition-delay: .8s }

/* SHIMMER SKELETON (for lazy images while loading) */
.img-loading {
  background: linear-gradient(90deg,
    rgba(255,255,255,.04) 0%,
    rgba(0,212,170,.08) 50%,
    rgba(255,255,255,.04) 100%);
  background-size: 200% auto;
  animation: shimmer 1.6s linear infinite;
}

/* HOVER LIFT — reusable */
.lift:hover { transform: translateY(-6px); transition: transform .35s ease }

/* TEAL GLOW PULSE — for badges, dots etc */
.glow-pulse {
  box-shadow: 0 0 0 0 rgba(0,212,170,.5);
  animation: glowPulse 2.2s infinite;
}
@keyframes glowPulse {
  0%   { box-shadow: 0 0 0 0 rgba(0,212,170,.5) }
  70%  { box-shadow: 0 0 0 10px rgba(0,212,170,0) }
  100% { box-shadow: 0 0 0 0 rgba(0,212,170,0) }
}