/* Animaciones suaves para el SIGv */

.fade-in {
    animation: fadeIn .25s ease-in forwards;
}
@keyframes fadeIn {
    from { opacity:0; transform: translateY(4px); }
    to   { opacity:1; transform: translateY(0); }
}

.scale-in {
    animation: scaleIn .25s ease-out forwards;
}
@keyframes scaleIn {
    from { opacity:0; transform: scale(0.95); }
    to   { opacity:1; transform: scale(1); }
}

.slide-up {
    animation: slideUp .35s ease-out forwards;
}
@keyframes slideUp {
    from { opacity:0; transform: translateY(20px); }
    to   { opacity:1; transform: translateY(0); }
}

.ripple {
    position: relative;
    overflow: hidden;
}
.ripple::after {
    content:"";
    position:absolute;
    border-radius:50%;
    width:6px; height:6px;
    background: rgba(255,255,255,0.35);
    transform:scale(0);
    animation:ripple .45s linear;
}
@keyframes ripple {
    to { transform:scale(18); opacity:0; }
}
