/* ========== COMPONENTS ESPECÍFICOS ========== */

/* Animações sutis */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fade-in-up {
    animation: fadeInUp 0.6s ease-out;
}

/* Loading state para botões */
.submit-button:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.submit-button.loading::after {
    content: "...";
    animation: dots 1.5s steps(4, end) infinite;
}

@keyframes dots {
    0%, 20% { content: "."; }
    40% { content: ".."; }
    60%, 100% { content: "..."; }
}

/* Badges/Tags */
.badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: var(--primary-color);
    color: var(--bg-dark);
    border-radius: 20px;
    font-size: 0.875rem;
    font-weight: 600;
}

/* Dividers */
.section-divider {
    height: 1px;
    background: linear-gradient(to right, transparent, var(--primary-color), transparent);
    margin: var(--spacing-xl) 0;
}

/* Scroll indicator */
.scroll-indicator {
    position: fixed;
    top: 0;
    left: 0;
    height: 4px;
    background: var(--primary-color);
    z-index: 9999;
    transition: width 0.2s ease;
}