.btn {
    display: inline-flex;
    gap: 2px;
    padding: 0;
    outline: none;
    margin: 0;
    border: none;
    background: transparent;
}

.btn.btn-no-bg {
    gap: 4px;
    align-items: center;
}
@media only screen and (max-width: 766px) {
    .btn.btn-full-width-xs {
        width: 100%;
    }
}

.btn.btn-disabled {
    opacity: 0.32;
    pointer-events: none;
}

.btn .btn-part {
    background-color: var(--brand-blue-primary);
    color: var(--brand-white-primary);
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 300ms;
    font-size: var(--font-size-button);
    line-height: var(--line-height-button);
    white-space: nowrap;
    position: relative;
}

.btn .btn-part::before {
    content: "";
    display: inline-block;
    width: 100%;
    height: 0%;
    background-color: var(--brand-orange-primary);
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1;
    transition: all 600ms;
}
@media (hover: hover) {
    .btn:hover .btn-part::before {
        height: 100%;
        transition: all 600ms;
    }
}

.btn .btn-part .btn-zindex-text {
    position: relative;
    z-index: 3;
}



.btn.mini .btn-part {
    font-size: var(--font-size-tags);
    line-height: var(--line-height-tags);
}

.btn.btn-no-bg.mini  {
    gap: 6px;
}

.btn.btn-no-bg .btn-part {
    background-color: transparent;
    color: var(--brand-blue-primary);
    font-size: var(--font-size-link);
    line-height: var(--line-height-link);
    letter-spacing: var(--letter-spacing-link);
}
@media (hover: hover) {
    .btn.btn-no-bg:hover .btn-part {
        color: var(--brand-orange-primary);
    }
}
.btn.btn-no-bg .btn-part::before {
    display: none;
}

.btn.btn-no-bg.mini .btn-part {
    font-size: var(--font-size-tags);
    line-height: var(--line-height-tags);
    letter-spacing: normal;
}

.btn.btn-no-bg.btn-white .btn-part {
    color: var(--brand-white-primary);
    background-color: transparent;
}
@media (hover: hover) {
    .btn.btn-no-bg.btn-white:hover .btn-part {
        color: var(--brand-white-primary-44);
        background-color: transparent;
    }
}

.btn.btn-no-bg.secondary .btn-part {
    font-size: var(--font-size-paragraph);
    line-height: var(--line-height-paragraph);
    letter-spacing: normal;
}
@media (hover: hover) {
    .btn.btn-no-bg.secondary:hover .btn-part {
        color: var(--brand-blue-primary-64);
    }
}

.btn.btn-white .btn-part {
    background-color: var(--brand-white-primary);
    color: var(--brand-blue-primary);
}
@media (hover: hover) {
    .btn.btn-white:hover .btn-part {
        color: var(--brand-white-primary);
    }
}

.btn.btn-orange .btn-part {
    background-color: var(--brand-orange-primary);
    color: var(--brand-white-primary);
}
@media (hover: hover) {
    .btn.btn-orange:hover .btn-part {
        color: var(--brand-white-primary);
    }
}

.btn .btn-part.btn-text {
    padding: 16px 33px;
    box-sizing: border-box;
}
@media only screen and (max-width: 1839px) {
    .btn .btn-part.btn-text {
        padding: 12px 29px;
    }
}
@media only screen and (max-width: 1279px) {
    .btn .btn-part.btn-text {
        padding: 14px 29px;
    }
}

.btn.mini .btn-part.btn-text {
    padding: 9px 33px;
}
@media only screen and (max-width: 1839px) {
    .btn.mini .btn-part.btn-text {
        padding: 9px 33px;
    }
}
@media only screen and (max-width: 1279px) {
    .btn.mini .btn-part.btn-text {
        padding: 12px 33px;
    }
}

.btn.btn-full-width-xs {

}
@media only screen and (max-width: 766px) {
    .btn.btn-full-width-xs .btn-part.btn-text {
        width: calc(100% - 44px - 2px);
        box-sizing: border-box;
        text-align: center;
    }
}

.btn.mini.btn-full-width-xs .btn-part.btn-text {

}
@media only screen and (max-width: 766px) {
    .btn.mini.btn-full-width-xs .btn-part.btn-text {
        width: calc(100% - 36px - 2px);
        box-sizing: border-box;
        text-align: center;
    }
}

.btn.btn-no-bg .btn-part.btn-text {
    padding: 0;
}

.btn .btn-part.btn-icon {
    width: 52px;
    min-height: 52px;
}
@media only screen and (max-width: 1839px) {
    .btn .btn-part.btn-icon {
        width: 40px;
        min-height: 40px;
    }
}
@media only screen and (max-width: 1279px) {
    .btn .btn-part.btn-icon {
        width: 46px;
        min-height: 46px;
    }
}

.btn.btn-standalone-icon .btn-part.btn-icon {
    width: 44px;
    min-height: 44px;
}

.btn.mini .btn-part.btn-icon {
    width: 36px;
    min-height: 36px;
}
@media only screen and (max-width: 1279px) {
    .btn.mini .btn-part.btn-icon {
        width: 40px;
        min-height: 40px;
    }
}

.btn.btn-no-bg .btn-part.btn-icon {
    width: auto;
    min-height: auto;
}

.btn .btn-icon .icon-group {
    position: relative;
    width: 20px;
    height: 20px;
}
.btn.btn-no-bg .btn-icon .icon-group  {
    width: 20px;
    height: 20px;
}
.btn.btn-no-bg.secondary .btn-icon .icon-group  {
    width: 24px;
    height: 24px;
}

.btn .btn-icon .icon-group .icon {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    opacity: 0;
    transition: all 300ms;
}

.btn .btn-icon .icon-group .icon svg {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.btn.btn-group-1 .btn-icon .icon-group .icon.group-1 {
    opacity: 1;
    transition: all 300ms;
}
.btn.btn-group-2 .btn-icon .icon-group .icon.group-2 {
    opacity: 1;
    transition: all 300ms;
}
.btn.btn-group-loading .btn-icon .icon-group .icon.group-loading {
    opacity: 1;
    transition: all 300ms;
}
.btn.btn-group-loading .btn-icon .icon-group .icon.group-loading svg {
    animation: rotation 1s linear infinite;
}

.btn.btn-group-loading {
    pointer-events: none;
}
.btn.btn-group-loading .btn-part {
    background-color: var(--brand-orange-primary);
    color: var(--brand-white-primary);
}

.btn.btn-icon-outlined .btn-part {
    gap: 6px;
    align-items: center;
    border: 1px solid var(--brand-blue-primary-20);
    color: var(--brand-blue-primary);
    background-color: transparent;
    box-sizing: border-box;
    transition: all 300ms;
}
@media (hover: hover) {
    .btn.btn-icon-outlined:hover .btn-part {
        background-color: var(--brand-blue-primary-20);
        transition: all 300ms;
    }
}

.btn.btn-icon-outlined.btn-white .btn-part {
    border: 1px solid var(--brand-white-primary-20);
    color: var(--brand-white-primary);
}
.btn.btn-icon-outlined.btn-white .btn-part::before {
    background-color: var(--brand-white-primary-20);
}

.btn.btn-icon-morphed {
    gap: 6px;
    align-items: center;
    border: 1px solid var(--brand-blue-primary-20);
    background-color: transparent;
    box-sizing: border-box;
    transition: all 300ms;
    width: 52px;
    height: 52px;
    position: relative;
}
@media (hover: hover) {
    .btn.btn-icon-morphed:hover {
        background-color: transparent;
    }
}

.btn.btn-icon-morphed::before {
    content: "";
    display: inline-block;
    width: 100%;
    height: 0%;
    background-color: var(--brand-blue-primary-20);
    position: absolute;
    left: 0;
    bottom: 0;
    transition: all 600ms;
}
@media (hover: hover) {
    .btn.btn-icon-morphed:hover::before {
        height: 100%;
        transition: all 600ms;
    }
}
@media only screen and (max-width: 1279px) {
    .btn.btn-icon-morphed {
        width: 46px;
        height: 46px;
    }
}
@media only screen and (max-width: 766px) {
    .btn.btn-icon-morphed {
        width: auto;
        height: auto;
        border: none;
    }
}
.btn.btn-icon-morphed.btn-white {
    border-color: var(--brand-white-primary-20);
}
.btn.btn-icon-morphed.btn-white::before {
    background-color: var(--brand-white-primary-20);
}

.btn.btn-icon-morphed .text {
    font-size: var(--font-size-link);
    line-height: var(--line-height-link);
    letter-spacing: var(--letter-spacing-link);
    color: var(--brand-blue-primary);
}
.btn.btn-icon-morphed.btn-white .text {
    color: var(--brand-white-primary);
}

.btn.btn-icon-morphed .icon {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brand-blue-primary);
}
.btn.btn-icon-morphed.btn-white .icon {
    color: var(--brand-white-primary);
}

.btn.btn-icon-morphed .icon svg {
    width: 20px;
    height: auto;
}
@media only screen and (max-width: 766px) {
    .btn.btn-icon-morphed .icon svg {
        width: 12px;
    }
}

@keyframes rotation {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}
