/* ===== ENHANCED TRANSITIONS & UX IMPROVEMENTS ===== */

/* Variables CSS para consistencia */
:root {
    --transition-fast: 0.15s;
    --transition-normal: 0.3s;
    --transition-slow: 0.6s;
    --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
    --ease-in-out-cubic: cubic-bezier(0.4, 0, 0.2, 1);
    --ease-spring: cubic-bezier(0.68, -0.55, 0.265, 1.55);
    --shadow-subtle: 0 2px 4px rgba(0, 0, 0, 0.1);
    --shadow-medium: 0 4px 12px rgba(0, 0, 0, 0.15);
    --shadow-strong: 0 8px 24px rgba(0, 0, 0, 0.2);
}

/* ===== TRANSICIONES GENERALES MEJORADAS ===== */

/* Aplicar transiciones suaves a todos los elementos interactivos */
button, 
.nav-link, 
.card, 
.feature-card,
.species-card,
.project-card,
.filter-btn,
input,
select,
textarea {
    transition: all var(--transition-normal) var(--ease-out-quart);
}

/* Transiciones específicas para elementos que cambian frecuentemente */
.section {
    transition: opacity var(--transition-slow) var(--ease-in-out-cubic),
                transform var(--transition-slow) var(--ease-in-out-cubic);
}

/* ===== MEJORAS EN NAVEGACIÓN ===== */

/* Transición suave entre secciones */
.section {
    opacity: 0;
    transform: translateY(20px);
    visibility: hidden;
    pointer-events: none;
}

.section.active {
    opacity: 1;
    transform: translateY(0);
    visibility: visible;
    pointer-events: auto;
}

/* Efecto de hover mejorado para navegación */
.nav-link {
    position: relative;
    overflow: hidden;
}

.nav-link::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: -100%;
    width: 100%;
    height: 2px;
    background: #000;
    transition: left var(--transition-normal) var(--ease-out-quart);
}

.nav-link:hover::before,
.nav-link.active::before {
    left: 0;
}

/* Mejor feedback visual para elementos de navegación */
.nav-link:hover {
    transform: translateY(-1px);
    color: #000;
}

/* ===== BOTONES MEJORADOS ===== */

/* Estados base mejorados */
button,
.btn,
.filter-btn {
    position: relative;
    overflow: hidden;
    cursor: pointer;
    transform: translateZ(0); /* Activa aceleración de hardware */
    backface-visibility: hidden;
}

/* Efecto ripple para botones */
button::before,
.btn::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    background: rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width var(--transition-fast) ease-out,
                height var(--transition-fast) ease-out;
}

button:active::before,
.btn:active::before {
    width: 300px;
    height: 300px;
}

/* Hover states mejorados */
button:hover,
.btn:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-medium);
}

button:active,
.btn:active {
    transform: translateY(0);
    transition-duration: var(--transition-fast);
}

/* ===== CARDS Y ELEMENTOS DE CONTENIDO ===== */

/* Transiciones mejoradas para tarjetas */
.species-card,
.feature-card,
.project-card,
.card {
    transition: all var(--transition-normal) var(--ease-out-quart),
                box-shadow var(--transition-normal) var(--ease-out-quart);
}

.species-card:hover,
.feature-card:hover,
.project-card:hover,
.card:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: var(--shadow-strong);
}

/* ===== LOADING STATES ===== */

/* Spinner de carga personalizado */
.loading-spinner {
    width: 24px;
    height: 24px;
    border: 2px solid #000;
    border-top-color: transparent;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    display: inline-block;
    margin-right: 8px;
}

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

/* Estado de carga para botones */
.btn-loading {
    pointer-events: none;
    opacity: 0.7;
    position: relative;
}

.btn-loading::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 16px;
    border: 2px solid #000;
    border-top-color: transparent;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* ===== ANIMACIONES DE ENTRADA ===== */

/* Fade in desde abajo */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Fade in desde la izquierda */
@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Fade in con escala */
@keyframes fadeInScale {
    from {
        opacity: 0;
        transform: scale(0.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Clases para aplicar animaciones */
.animate-fade-in-up {
    animation: fadeInUp var(--transition-slow) var(--ease-out-quart);
}

.animate-fade-in-left {
    animation: fadeInLeft var(--transition-slow) var(--ease-out-quart);
}

.animate-fade-in-scale {
    animation: fadeInScale var(--transition-slow) var(--ease-out-quart);
}

/* Delay escalonado para múltiples elementos */
.animate-delay-1 { animation-delay: 0.1s; }
.animate-delay-2 { animation-delay: 0.2s; }
.animate-delay-3 { animation-delay: 0.3s; }
.animate-delay-4 { animation-delay: 0.4s; }

/* ===== FEEDBACK VISUAL MEJORADO ===== */

/* Estados de focus mejorados */
input:focus,
select:focus,
textarea:focus,
button:focus {
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2);
    transform: translateY(-1px);
}

/* Estados de éxito y error */
.success-feedback {
    color: #000;
    background: #f0f9f0;
    border: 2px solid #000;
    padding: 12px;
    animation: fadeInScale var(--transition-normal) var(--ease-spring);
}

.error-feedback {
    color: #000;
    background: #f9f0f0;
    border: 2px solid #000;
    padding: 12px;
    animation: shake 0.5s ease-in-out;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

/* ===== TRANSICIONES PARA MODALES ===== */

.modal {
    transition: opacity var(--transition-normal) var(--ease-in-out-cubic),
                visibility var(--transition-normal) var(--ease-in-out-cubic);
}

.modal.show {
    animation: fadeInScale var(--transition-normal) var(--ease-spring);
}

.modal-backdrop {
    transition: opacity var(--transition-normal) ease-in-out;
}

/* ===== MEJORAS ESPECÍFICAS PARA FILTROS ===== */

.filter-container {
    transition: max-height var(--transition-slow) var(--ease-in-out-cubic),
                opacity var(--transition-normal) var(--ease-in-out-cubic);
}

.filter-btn.active {
    transform: scale(1.05);
    box-shadow: var(--shadow-medium);
}

/* ===== TRANSICIONES PARA GRÁFICOS ===== */

.chart-container {
    transition: opacity var(--transition-normal) var(--ease-in-out-cubic);
}

.chart-loading {
    opacity: 0.6;
    pointer-events: none;
}

/* ===== OPTIMIZACIONES DE PERFORMANCE ===== */

/* Activar aceleración de hardware para elementos que se animan frecuentemente */
.species-card,
.nav-link,
.btn,
.modal {
    will-change: transform;
    transform: translateZ(0);
}

/* Reducir movimiento para usuarios que lo prefieren */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* ===== MEJORAS RESPONSIVE ===== */

@media (max-width: 768px) {
    /* Transiciones más rápidas en móviles */
    :root {
        --transition-fast: 0.1s;
        --transition-normal: 0.2s;
        --transition-slow: 0.4s;
    }
    
    /* Reducir transforms en hover para móviles */
    .species-card:hover,
    .feature-card:hover,
    .project-card:hover {
        transform: translateY(-2px) scale(1.01);
    }
}

/* ===== SCROLL SUAVE ===== */

html {
    scroll-behavior: smooth;
}

/* Mejorar scrolling en elementos con overflow */
.scrollable {
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
}

/* ===== ESTADOS DE HOVER MEJORADOS PARA ICONOS ===== */

.btn-icon,
.tree-icon,
.leaf-icon {
    transition: all var(--transition-fast) var(--ease-out-quart);
}

.btn-icon:hover {
    transform: scale(1.1) rotate(5deg);
}

/* ===== TRANSICIONES PARA TOOLTIPS ===== */

.tooltip {
    opacity: 0;
    visibility: hidden;
    transform: translateY(5px);
    transition: all var(--transition-fast) var(--ease-out-quart);
    pointer-events: none;
}

.tooltip.show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto;
}