/* =========================================================
   Gau Mitra - Reveal helpers and keyframes
   Auto-segregated from the original Gau Mitra stylesheet.
========================================================= */

/* Reveal and motion */
[data-reveal] {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .75s cubic-bezier(.2,.8,.2,1), transform .75s cubic-bezier(.2,.8,.2,1);
    transition-delay: var(--reveal-delay, 0ms);
}

[data-reveal="fade-left"] {
    transform: translateX(34px);
}

[data-reveal="fade-right"] {
    transform: translateX(-34px);
}

[data-reveal="zoom-in"] {
    transform: scale(.94) translateY(24px);
}

[data-reveal].is-visible {
    opacity: 1;
    transform: translate(0, 0) scale(1);
}

[data-tilt-card] {
    transition: transform .18s ease, box-shadow var(--gm-transition);
}

/* Keyframes */
@keyframes gmSpin {
    to { transform: rotate(360deg); }
}

@keyframes gmFloat {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(0, -18px, 0); }
}

@keyframes gmRotate {
    to { transform: rotate(360deg); }
}

@keyframes gmRotateReverse {
    to { transform: rotate(-360deg); }
}

@keyframes gmPulse {
    0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, .6); }
    70% { box-shadow: 0 0 0 16px rgba(34, 197, 94, 0); }
    100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}

@keyframes gmPulseText {
    0%, 100% { opacity: 1; }
    50% { opacity: .35; }
}

