.button {
    position: relative;
    padding: 12px 25px;
    border-radius: var(--border-radius-button);
    text-decoration: none;
    text-align: center;
    color: var(--color-white);
    font-size: var(--font-size);
    font-family: var(--font-family);
    font-weight: var(--font-weight-button);
    appearance: none;
    background-color: var(--color-primary);
    border: 1px solid var(--color-primary);
    display: inline-flex;
    justify-content: center;
    width: fit-content;
    transition: all 100ms ease;
    cursor: pointer;
}

.button-full {
    width: 100%;
}

.button.loading {
    pointer-events: none;
    color: var(--color-transparent);
}

.button.loading:after {
    content: "";
    background: url(../images/icons/loading.png) no-repeat center;
    background-size: contain;
    width: 20px;
    height: 20px;
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -10px;
    margin-left: -10px;
    animation: loadingRotation 2s infinite linear;
}

.button.button-outline.loading:after {
    filter: invert(1);
}


.button:hover,
.button:active {
    background-color: var(--color-primary-light);
    border: 1px solid var(--color-primary-light);
    color: var(--color-white);
}

.button.button-size-small {
    padding: 8px 15px;
    font-size: var(--font-size-button-small);
}

.button.button-size-medium {
    padding: 10px 25px;
    font-size: var(--font-size-button-medium);
}

.button:focus {
    outline: 1px solid var(--color-primary-light);
}

.button.button-secondary {
    background-color: var(--color-secondary);
    border: 1px solid var(--color-secondary);
}

.button.button-secondary:hover,
.button.button-secondary:active {
    background-color: var(--color-secondary-light);
    border: 1px solid var(--color-secondary-light);
}

.button.button-secondary:focus {
    outline: 1px solid var(--color-secondary-light);
}

.button.button-outline {
    background-color: var(--color-transparent);
    color: var(--color-text);
    border: 1px solid var(--color-primary);
}

.button.button-outline:hover,
.button.button-outline:active {
    background-color: var(--color-primary-light);
    border: 1px solid var(--color-primary-light);
    color: var(--color-white);
}

.button.button-outline:focus {
    outline: 1px solid var(--color-primary-light);
}

.button.button-white-outline {
    background-color: var(--color-transparent);
    color: var(--color-white);
    border: 1px solid var(--color-white);
}

.button.button-white-outline:hover,
.button.button-white-outline:active {
    background-color: var(--color-white);
    border: 1px solid var(--color-white);
    color: var(--color-text);
}

.button.button-white-outline:focus {
    outline: 1px solid var(--color-white);
}

button.disabled,
.button:disabled {
    border: 1px solid var(--color-grey);
    background-color: var(--color-grey-light);
    cursor: not-allowed;
    color: var(--color-grey-dark);
}

button.disabled {
    pointer-events: none;
}

button.disabled:focus,
.button:disabled:focus {
    outline: 1px solid var(--color-grey-light);
}

.page-login button.disabled,
.page-login .button:disabled {
    background-color: var(--color-primary);
    color: var(--color-white);
    opacity: .1;
    border-color: var(--color-primary);
}

.cart_totals a.checkout-button,
button#place_order {
    background-color: var(--color-cta);
    border-color: var(--color-cta);
}

.cart_totals a.checkout-button:hover,
button#place_order:hover {
    background-color: var(--color-cta-hover);
    border-color: var(--color-cta-hover);
}

@keyframes loadingRotation {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(359deg);
    }
}

@media (max-width: 767px) {
    .button {
        padding: 12px 15px;
    }
}