/* Certificate Verification Pro Animations */

@keyframes cvpSlideUp {
    0% {
        opacity: 0;
        transform: translateY(24px) scale(0.96);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes cvpShake {
    0%, 100% { transform: translateX(0); }
    15%, 45%, 75% { transform: translateX(-6px); }
    30%, 60%, 90% { transform: translateX(6px); }
}

@keyframes cvpStrokeCheck {
    100% {
        stroke-dashoffset: 0;
    }
}

@keyframes cvpStrokeCross {
    100% {
        stroke-dashoffset: 0;
    }
}

@keyframes cvpPulseGlow {
    0% {
        box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.4);
    }
    70% {
        box-shadow: 0 0 0 12px rgba(34, 197, 94, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(34, 197, 94, 0);
    }
}

.cvp-animate-slide-up {
    animation: cvpSlideUp 0.45s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.cvp-animate-shake {
    animation: cvpShake 0.5s ease-in-out forwards;
}

.cvp-checkmark-svg .cvp-checkmark-circle {
    stroke: #22c55e;
    stroke-width: 3;
    stroke-miterlimit: 10;
}

.cvp-checkmark-svg .cvp-checkmark-check {
    transform-origin: 50% 50%;
    stroke-dasharray: 48;
    stroke-dashoffset: 48;
    stroke: #22c55e;
    stroke-width: 3.5;
    stroke-linecap: round;
    stroke-linejoin: round;
    animation: cvpStrokeCheck 0.45s cubic-bezier(0.65, 0, 0.45, 1) 0.15s forwards;
}

.cvp-cross-svg .cvp-cross-circle {
    stroke: #ef4444;
    stroke-width: 3;
}

.cvp-cross-svg .cvp-cross-line1,
.cvp-cross-svg .cvp-cross-line2 {
    stroke-dasharray: 36;
    stroke-dashoffset: 36;
    stroke: #ef4444;
    stroke-width: 3.5;
    stroke-linecap: round;
    animation: cvpStrokeCross 0.4s ease-in-out 0.15s forwards;
}

/* Scroll-reveal for glassmorphism cards */
@keyframes cvpReveal {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

.cvp-glass-card {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.35s ease, transform 0.35s ease;
}

.cvp-glass-card.cvp-revealed,
.cvp-glass-card.cvp-animate-slide-up,
.cvp-glass-card.cvp-animate-shake {
    opacity: 1;
    transform: translateY(0);
}

/* Shell ready transition */
.cvp-shell {
    transition: opacity 0.3s ease;
}

.cvp-shell.is-ready {
    opacity: 1;
}

