#{$all-buttons} {
    appearance: none;
    border-radius: var(--button-border-radius);
    cursor: pointer;
    display: inline-block;
    font-family: $base-font-family;
    font-size: 1rem;
    -webkit-font-smoothing: antialiased;
    font-weight: 600;
    line-height: 1;
    padding: $small-spacing $base-spacing;
    text-decoration: none;
    transition: background-color border-color $base-duration $base-timing;
    user-select: none;
    vertical-align: middle;
    white-space: nowrap;
    outline: none;
    min-width: 80px;

    border: 1px solid var(--action-color);
    background-color: var(--action-color);
    color: var(--text-contrast-action-color);

    &.btn-error,
    &.btn-silent {
        border-color: var(--base-border-color);
        background-color: transparent;
        color: var(--text-color);
    }

    &:hover {
        border-color: var(--action-background-color-focus);
        background-color: var(--action-background-color-focus);
        &.btn-error {
            border-color: var(--error-background-color-focus);
            background-color: var(--error-background-color-focus-tr);
        }
        &.btn-silent {
            border-color: var(--action-background-color-focus);
            background-color: var(--action-background-color-focus-tr);
        }
    }

    &:active {
        border-color: var(--action-background-color-active);
        background-color: var(--action-background-color-active);
        &.btn-error {
            border-color: var(--error-background-color-active);
            background-color: var(--error-background-color-active-tr);
        }
        &.btn-silent {
            border-color: var(--action-background-color-active);
            background-color: var(--action-background-color-active-tr);
        }
    }

    &:disabled {
        cursor: default;
        opacity: 0.5;
        &:hover {
            border-color: var(--action-color);
            background-color: var(--action-color);
            &.btn-error {
                border-color: var(--error-color);
                background-color: transparent;
            }
            &.btn-silent {
                border-color: var(--action-color);
                background-color: transparent;
            }
        }
    }
}

@mixin icon-btn($error: false) {
    @include area-selectable(bottom);
    padding: 0.7em 0.6em 0;
    height: 1.6em;
    > i {
        display: block;
    }
    @if $error {
        &:hover {
            border-color: var(--error-color);
        }
    }
}

.svg-btn {
    svg path {
        transition: fill $base-duration $base-timing;
        fill: var(--text-color);
    }
    &:hover svg path {
        fill: var(--medium-color);
    }
}
