.button,
.button-outline {
    appearance: none;
    -webkit-appearance: none;
    border: none;

    border-radius: 40px;
    background-color: var(--color-text);
    color: var(--color-white);
    padding: 15px 30px;

    cursor: pointer;

    display: inline-block;
    text-decoration: none;
    text-transform: uppercase;
    font-weight: 600;
    font-family: var(--font-text);
    letter-spacing: 1.12px;

    transition: all 300ms ease-in;
    position: relative;
}

.button-outline {
    border-radius: 30px;
    padding: 10px 30px;
}

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

.button-outline span {
    display: block;
    color: var(--color-text);
}

.button span {
    display: block;
    color: var(--color-white);
}

.button-icon,
.button-text div {
    border-radius: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;

    appearance: none;
    -webkit-appearance: none;
    border: none;
    background-color: var(--color-text);
    color: var(--color-white);
    font-size: 20px;
    line-height: 20px;
    width: 50px;
    height: 50px;

    cursor: pointer;

    transition: all 300ms ease-in;
    position: relative;
}

.button-icon i,
.button-text i {
    transition: all 200ms ease-in;
}

.button:not(.loading):hover,
.button-icon:hover,
.button-outline:hover,
.button-text:hover div {
    transition: all 150ms ease-out;
    text-decoration: none;
}

.button-text:hover i,
.button-icon:hover i {
    transform: scale(1.15);
}

.button-text {
    text-decoration: none;
}

.button-text span {
    font-size: 24px;
    line-height: 30px;
    font-family: var(--font-heading);
    color: var(--color-text);
    margin-left: 15px;
}

.button-text:hover span {
    text-decoration: underline;
}

body:not(.has-touch) .button::after,
body:not(.has-touch) .button-outline::after,
body:not(.has-touch) .button-text div::after,
body:not(.has-touch) .button-icon::after {
    content: '';
    display: block;
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    border-radius: 40px;
    border: 0px solid transparent;
    transition: all 300ms ease-in;
}

body:not(.has-touch) .button:not(:disabled):not(.loading):hover::after,
body:not(.has-touch) .button-text:not(:disabled):hover div::after,
body:not(.has-touch) .button-icon:not(:disabled):hover::after,
body:not(.has-touch) .button-outline:not(:disabled):hover::after {
    content: '';
    left: -5px;
    right: -5px;
    top: -5px;
    bottom: -5px;

    border: 2px solid var(--color-text);
    transition: all 150ms ease-out;
}

body:not(.has-touch) .button-outline:not(:disabled):hover::after {
    content: '';
    left: -7px;
    right: -7px;
    top: -7px;
    bottom: -7px;
}

body:not(.has-touch) .button-icon::after {
    border-radius: 100%;
}

.button:disabled {
    cursor: default;
}

/*
a:not([class^="button"]) span {
    transition: all 300ms ease-in;
    outline: solid 0px transparent;
    outline-offset: 2px;
    border-radius: 1em;
}

a:not([class^="button"]):hover span {
    outline: solid 2px var(--color-text);
    outline-offset: 4px;

    transition: all 150ms ease-out;
} */

.button-small {
    padding: 10px 20px;
    border-radius: 20px;
    font-size: 12px;
}