.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.875rem 2rem;
    font-size: var(--text-base);
    font-weight: 600;
    border-radius: var(--border-radius-sm);
    transition: all var(--duration-normal) var(--ease-smooth);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    border: none;
}

@media (max-width: 768px) {
    .btn {
        padding: 0.75rem 1.5rem;
        font-size: clamp(0.875rem, 3.5vw, 1rem);
    }
}

.btn--primary {
    background: var(--gradient-primary);
    background-size: 200% 200%;
    color: var(--color-white);
    box-shadow: 0 4px 15px rgba(0, 184, 148, 0.2);
    animation: gradient-shift 4s ease infinite;
}

.btn--primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 25px rgba(0, 184, 148, 0.4),
                0 8px 35px rgba(9, 132, 227, 0.3);
    background-position: 100% 50%;
}

.btn--primary:active {
    transform: translateY(0);
    box-shadow: 0 2px 10px rgba(0, 184, 148, 0.3);
}

.btn--outline {
    background: transparent;
    border: 2px solid transparent;
    background-image: linear-gradient(var(--color-bg), var(--color-bg)), 
                      var(--gradient-primary);
    background-origin: border-box;
    background-clip: padding-box, border-box;
    color: var(--color-text);
    position: relative;
}

.btn--outline:hover {
    background-image: var(--gradient-primary), var(--gradient-primary);
    color: var(--color-white);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(0, 184, 148, 0.3);
}

.btn--outline:active {
    transform: translateY(0);
    box-shadow: 0 2px 10px rgba(0, 184, 148, 0.2);
}

.btn--large {
    padding: 1rem 2.5rem;
    font-size: var(--text-base);
}

.btn--full {
    width: 100%;
}

.btn--pulse {
    animation: pulse 2s ease infinite;
}

.btn.success {
    background: var(--color-success) !important;
    animation: none !important;
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none !important;
}
