/* Enhanced Button System - Base styles */
button,
input[type="submit"],
.btn {
    padding: var(--spacing-xxs) var(--spacing-md);
    border-radius: var(--border-radius-md);
    font-weight: var(--font-weight-semibold);
    font-size: var(--font-size-base);
    line-height: var(--line-height-tight);
    transition: all var(--transition-speed-fast) var(--transition-easing);
    display: inline-flex;
    gap: var(--spacing-xs);
    align-items: center;
    justify-content: center;
    white-space: nowrap;
    cursor: pointer;
    border: var(--border-width-md) solid transparent;
    text-decoration: none;
    user-select: none;
    will-change: transform, background-color, border-color, box-shadow;
    transform: translateY(0);
    position: relative;
    overflow: hidden;
    text-align: center;
}

/* Base hover and active states */
button:hover,
input[type="submit"]:hover,
.btn:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

button:active,
input[type="submit"]:active,
.btn:active {
    transform: translateY(0);
    box-shadow: var(--shadow-sm);
}

/* Focus states for accessibility */
button:focus-visible,
input[type="submit"]:focus-visible,
.btn:focus-visible {
    outline: 2px solid var(--sys-color-primary-default);
    outline-offset: 2px;
}

/* Disabled state */
button:disabled,
input[type="submit"]:disabled,
.btn:disabled {
    opacity: var(--opacity-disabled);
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

button:disabled:hover,
input[type="submit"]:disabled:hover,
.btn:disabled:hover {
    transform: none;
    box-shadow: none;
}

/* Full width buttons */
.btn-full {
    width: 100%;
}

/* Loading state */
.btn-loading {
    position: relative;
    color: transparent;
}

.btn-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1rem;
    height: 1rem;
    margin: -0.5rem 0 0 -0.5rem;
    border: 2px solid currentColor;
    border-radius: 50%;
    border-top-color: transparent;
    animation: spin 1s linear infinite;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    button,
    input[type="submit"],
    .btn {
        padding: var(--spacing-xxs) var(--spacing-xs);
        font-size: var(--font-size-sm);
    }
}