.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: calc(var(--item-gap) * 0.38) calc(var(--item-gap) * 0.75);
    border-radius: var(--radius-sm);
    text-decoration: none;
    font-weight: 700;
    font-size: var(--text-sm);
    text-align: center;
    white-space: nowrap;
    transition: all var(--trans-fast);
    cursor: pointer;
    border-width: 2px;
    border-style: solid;
    gap: calc(var(--item-gap) * 0.38);

    &:focus-visible {
        outline: var(--focus-ring);
        outline-offset: 2px;
    }
}

.btn-dark {
    background-color: var(--btn-dark-bg);
    color: var(--btn-dark-color);
    border-color: var(--btn-dark-border);

    &:hover {
        background-color: var(--btn-dark-hover-bg);
        border-color: var(--btn-dark-hover-border);
        color: var(--btn-dark-hover-color);
    }
}

.btn-dark-outline {
    background-color: var(--btn-dark-outline-bg);
    color: var(--btn-dark-outline-color);
    border-color: var(--btn-dark-outline-border);

    &:hover {
        background-color: var(--btn-dark-outline-hover-bg);
        color: var(--btn-dark-outline-hover-color);
        border-color: var(--btn-dark-outline-hover-border);
    }
}

.btn-light {
    background-color: var(--btn-light-bg);
    color: var(--btn-light-color);
    border-color: var(--btn-light-border);

    &:hover {
        background-color: var(--btn-light-hover-bg);
        border-color: var(--btn-light-hover-border);
        color: var(--btn-light-hover-color);
    }
}

.btn-light-outline {
    background-color: var(--btn-light-outline-bg);
    color: var(--btn-light-outline-color);
    border-color: var(--btn-light-outline-border);

    &:hover {
        background-color: var(--btn-light-outline-hover-bg);
        color: var(--btn-light-outline-hover-color);
        border-color: var(--btn-light-outline-hover-border);
    }
}

.btn-medium {
    background-color: var(--btn-medium-bg);
    color: var(--btn-medium-color);
    border-color: var(--btn-medium-border);

    &:hover {
        background-color: var(--btn-medium-hover-bg);
        border-color: var(--btn-medium-hover-border);
        color: var(--btn-medium-hover-color);
    }
}

.btn-medium-outline {
    background-color: var(--btn-medium-outline-bg);
    color: var(--btn-medium-outline-color);
    border-color: var(--btn-medium-outline-border);

    &:hover {
        background-color: var(--btn-medium-outline-hover-bg);
        color: var(--btn-medium-outline-hover-color);
        border-color: var(--btn-medium-outline-hover-border);
    }
}

.btn-white {
    background-color: var(--btn-white-bg);
    color: var(--btn-white-color);
    border-color: var(--btn-white-border);

    &:hover {
        background-color: var(--btn-white-hover-bg);
        border-color: var(--btn-white-hover-border);
        color: var(--btn-white-hover-color);
    }
}

.btn-white-outline {
    background-color: var(--btn-white-outline-bg);
    color: var(--btn-white-outline-color);
    border-color: var(--btn-white-outline-border);

    &:hover {
        background-color: var(--btn-white-outline-hover-bg);
        color: var(--btn-white-outline-hover-color);
        border-color: var(--btn-white-outline-hover-border);
    }
}

.btn-link {
    background-color: transparent;
    border-color: transparent;
    color: currentColor;
    &:hover {
        background-color: var(--btn-dark-bg);
        border-color: var(--btn-dark-bg);
        color: var(--btn-dark-color);
    }
}

.btn-full {
    display: flex;
    width: 100%;
    padding: calc(var(--item-gap) * 0.75);
}

.btn-icon,
.btn-icon-end {
    > i:last-child {
        font-size: var(--text-sm);
        line-height: 1;
    }
}

.btn-icon {
    > i:last-child {
        margin-left: calc(var(--item-gap) * 0.17);
    }
}

.btn-icon-end {
    justify-content: space-between;
    text-align: left;

    > i:last-child {
        margin-left: calc(var(--item-gap) * 0.75);
    }
}

.mobile-toggle {
    display: none;
    cursor: pointer;
    font-size: var(--text-xl);
    padding: calc(var(--item-gap) * 0.19);
    border-radius: var(--radius-sm);
    width: calc(var(--item-gap) * 2.11);
    height: calc(var(--item-gap) * 2.11);
    text-align: center;
    line-height: calc(var(--item-gap) * 1.73);
    background: transparent;
    border: 2px solid var(--dark);
    color: var(--dark);
    transition: background-color var(--trans-fast);

    &:hover {
        background-color: var(--light-dim) !important;
    }

    &:focus-visible {
        outline: var(--focus-ring);
        outline-offset: 2px;
    }
}
