/* Animaciones consolidadas — deduplicadas desde 6 bloques inline */

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

@keyframes fadeIn {
                from { opacity: 0; }
                to { opacity: 1; }
            }
            @keyframes slideUp {
                from { transform: translateY(20px); opacity: 0; }
                to { transform: translateY(0); opacity: 1; }
            }

@keyframes fadeIn {
                from { opacity: 0; }
                to { opacity: 1; }
            }
            @keyframes slideUp {
                from { 
                    opacity: 0;
                    transform: translateY(30px);
                }
                to { 
                    opacity: 1;
                    transform: translateY(0);
                }
            }
            @keyframes pulse {
                0%, 100% { transform: scale(1); }
                50% { transform: scale(1.05); }
            }

@keyframes helixFloat {
    0%   { transform: translateY(0px) rotate(0deg); opacity: 0.6; }
    50%  { transform: translateY(-8px) rotate(3deg); opacity: 1; }
    100% { transform: translateY(0px) rotate(0deg); opacity: 0.6; }
}
@keyframes dotPulse {
    0%, 100% { transform: scale(1); opacity: 0.7; }
    50%       { transform: scale(1.4); opacity: 1; }
}
@keyframes fadeSlideUp {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}
.adn-dot-1 { animation: dotPulse 2s ease-in-out infinite 0s; }
.adn-dot-2 { animation: dotPulse 2s ease-in-out infinite 0.3s; }
.adn-dot-3 { animation: dotPulse 2s ease-in-out infinite 0.6s; }
.adn-dot-4 { animation: dotPulse 2s ease-in-out infinite 0.9s; }
.adn-helix  { animation: helixFloat 4s ease-in-out infinite; }
.adn-content { animation: fadeSlideUp 0.5s ease-out 0.15s both; }

@keyframes popupEntrada {
    from { opacity: 0; transform: scale(0.85) translateY(20px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}

