/* ===== Animation Keyframes & Reveal Classes ===== */

@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } }
@keyframes slideLeft { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideRight { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes zoomIn { from { opacity: 0; transform: scale(.85); } to { opacity: 1; transform: scale(1); } }
@keyframes pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.06); } }
@keyframes ripple { to { transform: scale(4); opacity: 0; } }

/* Reveal-on-scroll */
[data-reveal] { opacity: 0; transition: opacity .8s ease, transform .8s ease; will-change: opacity, transform; }
[data-reveal="up"] { transform: translateY(40px); }
[data-reveal="left"] { transform: translateX(-40px); }
[data-reveal="right"] { transform: translateX(40px); }
[data-reveal="zoom"] { transform: scale(.9); }
[data-reveal].visible { opacity: 1; transform: none; }

/* Hover lift */
.hover-lift { transition: transform .35s ease, box-shadow .35s ease; }
.hover-lift:hover { transform: translateY(-6px); box-shadow: 0 20px 40px rgba(27,67,50,.15); }

/* Button ripple */
.btn { position: relative; overflow: hidden; }
.btn .ripple {
  position: absolute; border-radius: 50%; background: rgba(255,255,255,.5);
  transform: scale(0); animation: ripple .6s linear; pointer-events: none;
}

/* Pulse anim helper */
.pulse-anim { animation: pulse 2s ease-in-out infinite; }
