.btn,
.btn-default {
    --color: var(--color-accent);
    --color-bg: transparent;
    --color-border: currentColor;
    background-color: var(--color-bg) !important;
    display: inline-block;
    width: 260px;
    padding: 18px 30px;
    color: var(--color) !important;
    font-size: 16px;
    font-weight: 500;
    border-radius: 10px;
    border: 1px solid var(--color-border);
    border-color: var(--color-border) !important;
    line-height: 1.3;
    text-decoration: none;
    /* -webkit-box-shadow: var(--shadow);
    box-shadow: var(--shadow); */
    -webkit-box-shadow: none;
    box-shadow: none;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color .5s, border-color .5s, background-color .5s;
}

.btn-default:hover,
.btn-default:focus,
.btn:hover,
.btn:focus {
    --color: var(--color-accent-light);
    --color-border: currentColor;
    outline: none;
    -webkit-box-shadow: none;
    box-shadow: none;
}

.btn-default:active,
.btn:active {
    --color: var(--color-accent-dark);
    --color-border: currentColor;
    -webkit-box-shadow: none;
    box-shadow: none;
}

button:focus-visible,
.btn:focus-visible {
    outline: none !important;
}

.btn-primary,
.btn-warning {
    --color: var(--color-text-dark);
    --color-bg: var(--color-accent);
    --color-border: var(--color-accent);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-warning:hover,
.btn-warning:focus {
    --color: var(--color-text-dark);
    --color-bg: var(--color-accent-light);
    --color-border: var(--color-accent-light);
}

.btn-primary:active,
.btn-warning:active {
    --color: var(--color-text-dark);
    --color-bg: var(--color-accent-dark);
    --color-border: var(--color-accent-dark);
}

.btn-addon {
    --color: var(--color-accent);
    --color-bg: var(--color-case-yellow-opacity);
    --color-border: var(--color-case-yellow-opacity);
}

.btn-action,
.btn-action:hover,
.btn-action:focus,
.btn-action:active {
    --color-bg: var(--color-text-light);
    --color-border: var(--color-text-light);
}

.btn-disabled,
.btn-disabled:hover,
.btn-disabled:focus,
.btn-disabled:active {
    --color: var(--color-main-dark);
    --color-bg: var(--color-border-gray);
    --color-border: var(--color-border-gray);
}

.btn.btn-invert,
.btn.btn-invert:hover,
.btn.btn-invert:focus,
.btn.btn-invert:active {
    --color: var(--color-main-dark);
    --color-bg: transparent;
    --color-border: var(--color-main-dark);
}

.btn.btn-primary.btn-invert,
.btn.btn-primary.btn-invert:hover,
.btn.btn-primary.btn-invert:focus,
.btn.btn-primary.btn-invert:active {
    --color: var(--color-main-light);
    --color-bg: var(--color-main-dark);
    --color-border: var(--color-main-dark);
}

.btn-disabled,
.btn[disabled],
.btn:disabled {
    --color: var(--color-main-dark);
    --color-bg: var(--color-border-gray);
    --color-border: var(--color-border-gray);
    opacity: .9;
    cursor: not-allowed;
}

.btn-wide {
    display: block;
    width: 100%;
    padding-left: 12px;
    padding-right: 12px;
}

.btn-fit {
    width: -moz-fit-content;
    width: -webkit-fit-content;
    width: fit-content;
}

.btn-shadow {
    -webkit-box-shadow: var(--shadow) !important;
    box-shadow: var(--shadow) !important;
}

.btn-link {
    display: inline;
    width: -moz-fit-content;
    width: -webkit-fit-content;
    width: fit-content;
    padding: 0;
    border: none;
    border-radius: 0;
    text-align: left;
    text-decoration: underline;
    white-space: normal;
}

.btn-link:hover,
.btn-link:focus {
    --color: var(--color-accent-dark);
}

.btn-link:active {
    --color: var(--color-accent);
}

.btn-link.disabled,
.btn-link:disabled,
.btn-link[disabled] {
    --color: var(--color-border-gray);
    --color-bg: transparent;
    cursor: not-allowed;
}

.btn-link.btn-blue {
    --color: var(--color-case-blue);
}

.btn-link.btn-blue:hover,
.btn-link.btn-blue:focus {
    --color: var(--color-case-blue-light);
}

.btn-link.btn-blue:active {
    --color: var(--color-case-blue-dark);
}

.btn-link.btn-gray {
    --color: var(--color-text-gray);
}

.btn-link.btn-gray:hover,
.btn-link.btn-gray:focus {
    --color: var(--color-border-gray);
}

.btn-link.btn-gray:active {
    --color: var(--color-text-gray2);
}

.btn-danger,
.btn-danger:active {
    --color: var(--color-case-red);
}

.btn-danger:hover,
.btn-danger:focus {
    --color: var(--color-case-red-dark);
}

.btn-danger:disabled,
.btn-danger:disabled:hover {
    --color: var(--color-case-red-dark);
    opacity: .6;
}

/* spinner */
.btn-spinner {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.btn-spinner .icon {
    margin-right: 6px;
}

.btn-spinner .kv-spin-right {
    width: 14px;
    margin-left: 6px;
}

.btn-spinner .kv-spin.kv-spin-right {
    float: none;
    margin-left: 0;
}

.btn-spinner .kv-spin.kv-spin-right .spinner {
    z-index: 200 !important;
}

/* favorite */
.btn.btn-favorite {
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn-favorite span {
    color: var(--color-accent) !important;
}

.btn-favorite input[type="checkbox"] + span > span {
    margin-left: 10px;
}

.btn-favorite input[type="checkbox"]:not(:checked) + span > span:first-child {
    display: block;
}

.btn-favorite input[type="checkbox"]:not(:checked) + span > span:last-child {
    display: none;
}

.btn-favorite input[type="checkbox"]:checked + span > span:first-child {
    display: none;
}

.btn-favorite input[type="checkbox"]:checked + span > span:last-child {
    display: block;
}

.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon.btn-icon-left .icon {
    margin-right: 4px;
}

.btn-icon.btn-icon-right .icon {
    margin-left: 4px;
}

/*  */
.btn-close,
.btn-cross {
    --size: 30px;
    --color-bg: transparent;
    display: block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    opacity: 1 !important;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 24px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/cross.svg') !important;
}

.btn-search {
    --size: 30px;
    --color-bg: transparent;
    display: block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    opacity: 1 !important;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/search.svg') !important;
}

.btn.btn-search:disabled {
    opacity: .6 !important;
    background-color: transparent !important;
}

.btn-edit {
    --size: 30px;
    --color-bg: transparent;
    display: inline-block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 24px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/edit.svg') !important;
}

.btn-toggle {
    --size: 30px;
    /* --color-bg: transparent; */
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    width: var(--size) !important;
    height: var(--size) !important;
    border: none;
    border-radius: 0;
    flex-shrink: 0;
}

.btn-toggle::before {
    --size-inner: calc(var(--size) / 2);
    --color-border: var(--color-main-dark);
    content: '';
    display: block;
    width: var(--size-inner);
    height: var(--size-inner);
    border-bottom: 1px solid var(--color-border);
    border-right: 1px solid var(--color-border);
    transform: translateY(-20%) rotateZ(45deg);
    transition: transform .5s;
}

.btn-toggle:not(.collapsed)::before {
    transform: translateY(20%) rotateZ(225deg);
}

.btn-filter {
    --size: 30px;
    position: relative;
    display: block;
    flex-shrink: 0;
    width: var(--size);
    height: var(--size);
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: transparent;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/filter.svg') !important;
}

.btn-filter__count {
    --size: 10px;
    position: absolute;
    left: 50%;
    top: 50%;
    color: var(--color-main-light);
    font-size: 10px;
    font-weight: 700;
    line-height: 1.2;
    padding: 0 4px;
    border-radius: 5px;
    background-color: var(--color-case-red);
    transform: translate(2px, -80%);
    width: var(--size);
    height: var(--size);
}

.btn-export {
    --size: 30px;
    position: relative;
    display: block;
    flex-shrink: 0;
    width: var(--size);
    height: var(--size);
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: transparent;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/export.svg') !important;
}

.btn-export-color {
    background-image: url('../img/icons/export-color.svg') !important;
}

.btn-import {
    --size: 30px;
    position: relative;
    display: block;
    flex-shrink: 0;
    width: var(--size);
    height: var(--size);
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: transparent;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/import.svg') !important;
}

.btn-import-color {
    background-image: url('../img/icons/import-color.svg') !important;
}

.btn-update {
    --size: 30px;
    position: relative;
    display: block;
    flex-shrink: 0;
    width: var(--size);
    height: var(--size);
    padding: 0;
    border: none;
    border-radius: 0;
    background-color: transparent;
    background-size: 20px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/update.svg') !important;
}

.btn-settings {
    --size: 30px;
    --color-bg: transparent;
    display: inline-block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/settings.svg') !important;
}

.btn-save {
    --size: 30px;
    --color-bg: transparent;
    display: inline-block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 22px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/save.svg') !important;
}

.btn-tracking {
    --size: 30px;
    --color-bg: transparent;
    display: inline-block;
    width: var(--size);
    height: var(--size);
    padding: 0;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
    background-size: 16px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-image: url('../img/icons/track.svg') !important;
}

.btn.btn-cross,
.btn.btn-close,
.btn.btn-import,
.btn.btn-export,
.btn.btn-search,
.btn.btn-edit,
.btn.btn-toggle,
.btn.btn-filter,
.btn.btn-settings,
.btn.btn-update,
.btn.btn-save,
.btn.btn-tracking {
    padding: 0 !important;
}

.btn-block {
    --size: 30px;
    --color-bg: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--size);
    height: var(--size);
    padding: 0;
    opacity: 1 !important;
    background-color: var(--color-bg) !important;
    flex-shrink: 0;
    border: none;
    border-radius: 0;
}

.btn-block + .btn-block {
    margin-top: 0;
}

/* size */
.btn-sm {
    font-size: 16px;
    padding: 12px 24px;
}

.btn-xs {
    font-size: 14px;
    padding: 8px 20px;
}

.btn-md.btn-block {
    --size: 42px;
    padding: 0;
}

.btn-sm.btn-block {
    --size: 20px;
    padding: 0;
}

@media (max-width: 991px) {
    .btn-sm {
        padding: 12px 18px;
    }

    .btn-xs {
        padding: 8px 10px;
    }
}

@media (max-width: 375px) {

    .btn-default,
    .btn:not(.btn-link):not(.btn-block) {
        width: 100%;
    }

    .btn.btn-cross,
    .btn.btn-close,
    .btn.btn-import,
    .btn.btn-export,
    .btn.btn-search,
    .btn.btn-edit,
    .btn.btn-toggle,
    .btn.btn-filter,
    .btn.btn-settings,
    .btn.btn-update,
    .btn.btn-save,
    .btn.btn-tracking {
        width: var(--size) !important;
    }
}