@use "../mixins/mixins" as *;
@use "../variables" as *;
/* Button */ 
.btn-box-shadow {
    @include box-shadow(0 5px 20px rgba(0,0,0,.1));
    @include prefix(transition, all 0.3s cubic-bezier(0.2, 0, 0.3, 1), webkit);
    &:hover {
        @include box-shadow(0 8px 30px 0 rgba(0,0,0,.15));
        @include prefix(transform, translate3d(0, -2px, 0), webkit);
    }
}
.btn-check:checked+.btn, .btn.active, .btn.show, .btn:first-child:active, :not(.btn-check)+.btn:active {
    border-color: initial;
    color: initial; 
}
.btn {
    display: inline-block;    
    border: 2px solid transparent;
    border-radius: 0;
    text-transform: uppercase;
    letter-spacing: 0.5px; 
    width: auto;
    font-family: var(--alt-font);
    font-weight: 500;
    @include prefix(transition, all 300ms ease-in-out, webkit);
    &:focus {
        @include box-shadow(none);
    }
    &:hover {
        background-color: inherit;
    }
    i {
        position: relative; 
        margin-left: 6px;
    } 
    
    // Button size  
    &.btn-extra-large {
        font-size: 16px;
        padding: 24px 46px;
    }
    &.btn-large {
        font-size:14px;
        padding: 18px 34px;
    }
    &.btn-medium {
        font-size: 13px;
        padding: 16px 30px;
    }
    &.btn-small {
        font-size: 12px;
        padding: 13px 26px;
    }
    &.btn-very-small {
        font-size: 11px;
        padding: 10px 20px;
    }
    
    // Rounded button padding
    &.btn-rounded {
        &.btn-extra-large {
            padding: 18px 46px;
        }
        &.btn-large {
            padding: 14px 36px;
        }
        &.btn-medium {
            padding: 12px 32px;
        }
        &.btn-small {
            padding: 10px 26px;
        }
        &.btn-very-small {
            padding: 8px 20px;
        }
        &.btn-rounded {
            @include prefix(border-radius, 50px, webkit);
        }        
    }
    &.btn-round-edge {
        @include prefix(border-radius, 4px, webkit);
    }
    &.btn-round-edge-small {
        @include prefix(border-radius, 2px, webkit);
    } 
    
    // Link button 
    &.btn-link {
        padding: 0 0 2px;
        position: relative;
        text-decoration: none;
        border: 0;
        border-bottom: 2px solid;
        letter-spacing: 0;
        background-color: transparent;
        &.thin {
            border-bottom: 1px solid;
        }
        &:hover {
            opacity: .7;
        }       
        &:focus-visible {
            box-shadow: none;
        }
    }
    &.btn-link-gradient {
        padding: 0 0 3px !important;
        position: relative;
        border: 0;
        background-color: transparent;
        > span {
            position: absolute;
            bottom: 0;
            left: 0;
            height: 2px;
            width: 100%;
        }
        &.thin {
            span {
                height: 1px;
            }
        }
        &.expand{
            span{
                width: 50%;
                @include prefix(transition, all 0.3s ease, webkit);
            }
        }
        &:hover {
            opacity: .7;
            &.expand{
                &:hover{
                    span{
                        width: 100%;
                    }
                }
            }
        } 

    }
    
    // Button effect 
    &.btn-expand {
        position: relative;
        z-index: 1;
        span {
            position: absolute;
            top: 0;
            left: 0;
            width: 50%;
            height: 100%;
            z-index: -1;
            @include prefix(transition, 0.3s, webkit);
        }
        &:hover, &:active {
            border-color: transparent;
            span {
                width: 100%;
            }
        }
    }
    &.btn-expand-ltr {
        position: relative;
        z-index: 1;
        background-color: transparent;
        border:0;
        color: initial;
        &:active {
            background-color: transparent;
            border:0;
            color: initial;
        }
        span { 
            border-radius: 50px;
            position: absolute;
            top: 50%;
            left: 0; 
            z-index: -1;
            @include prefix(transition, 0.3s, webkit);
            @include prefix(transform, translateY(-50%), webkit);
        }
        &:hover {
            span {
                width: 100% !important;
            }
        }
        &.btn-extra-large {
            padding: 18px 28px;
            span {
                width: 60px;
                height: 60px;
            } 
        }
        &.btn-large {
            padding: 14px 26px;
            span {
                width: 50px;
                height: 50px;
            } 
        }
        &.btn-medium {
            padding: 12px 24px;
            span {
                width: 44px;
                height: 44px;
            } 
        }
        &.btn-small {
            padding: 10px 22px;
            span {
                width: 40px;
                height: 40px;
            } 
        }
        &.btn-very-small {
            padding: 8px 18px;
            span {
                width: 38px;
                height: 38px;
            } 
        }
    }

    // Icon on hover
    &.btn-hover-animation-switch {
        &.btn-link {
            border-bottom: 0;
            padding-bottom: 0; 
            &:hover {
                opacity: 1;
            }
        }
        >span {
            display:inline-flex;
            align-items:center;
        }
        .btn-text {
            margin-left: -13px;
            position:relative;
            z-index:3;
            transition: transform .6s .125s cubic-bezier(.1,.75,.25,1);
        }
        .btn-icon {
            margin-left:6px;
            position:relative;
            transition: opacity .4s .25s,transform .6s .25s;
            transition-timing-function: cubic-bezier(.1,.75,.25,1); 
            line-height: 0;
            z-index:3;
            i {
                margin:0;
                line-height: 0; 
            }
            +.btn-icon { 
                order: -2;
                opacity: 0;
                transition-delay: 0s;
                margin-left:0;
                @include prefix(transform, translateX(-10px), webkit);
            } 
        }
        &:hover {
            .btn-text {
                transition-delay: .1s;
                transform: translateX(23px);
            }
            .btn-icon {
                transition-delay: 0s;
                transform: translateX(10px);
                opacity: 0;
                +.btn-icon {
                    opacity: 1;
                    transform: translateX(0);
                    transition-delay: .225s;
                }
            }
        }
        &.btn-icon-left {
            .btn-text {
                margin-right: -15px;
                margin-left:0px;
                position:relative;
                z-index:3; 
            }
            .btn-icon {  
                opacity: 0; 
                margin-left: 0;
                transition-delay: 0s;
                @include prefix(transform, translateX(10px), webkit);
                +.btn-icon {  
                    opacity: 1; 
                    margin-left:0;
                    margin-right:6px;
                    transition: opacity .4s .25s,transform .6s .25s;
                    transition-timing-function: cubic-bezier(.1,.75,.25,1);
                    @include prefix(transform, translateX(0px), webkit);
                } 
            }
            &:hover {
                .btn-text {
                    transition-delay: .1s;
                    transform: translateX(-20px);
                }
                .btn-icon { 
                    transform: translateX(0px);
                    opacity: 1; 
                    transition-delay: .225s;
                    +.btn-icon {
                        opacity: 0;
                        transition-delay: 0s;
                        transform: translateX(-10px); 
                    }
                }
            }
        }
    }
    &.btn-hover-animation {
        &.btn-link {
            border-bottom: 0;
            padding-bottom: 0; 
            &:hover {
                opacity: 1;
            }
        }
        >span {
            display:inline-flex;
            align-items:center;
        }
        .btn-text {
            margin-left: 0px;
            position:relative;
            z-index:3;
            transition: transform .5s;
        }
        .btn-icon {
            display: inline-flex;
            align-items: center; 
            margin-left:-24px;
            i {
                display: inline-block;
                opacity: 0;
                top: 0;
                transform: translateX(.24px);
                transition: opacity .25s,transform .5s;
            }
        }
        &:hover {
            .btn-text { 
                @include prefix(transform, translateX(-12px), webkit);
            }
            .btn-icon i {
                opacity: 1; 
                @include prefix(transform, translateX(12px), webkit);
            }
        }
        &:active {
            border-color: transparent !important;
        }
        &.btn-icon-left {
            .btn-icon {  
                margin-right:-24px;
                margin-left: 0;
                i { 
                    transform: translateX(.24px); 
                }
            }
            .btn-text {
                margin-right: 0;
                margin-left: 0;
            }
            &:hover {
                .btn-text { 
                    @include prefix(transform, translateX(15px), webkit);
                }
                .btn-icon i {
                    opacity: 1; 
                    @include prefix(transform, translateX(-20px), webkit);
                }
            }
        }
    }  
    
    // Slide button
    &.btn-slide-up {
        span {
            @include prefix(transform, translateY(100%), webkit);
        }
    }
    &.btn-slide-down {
        span {
            @include prefix(transform, translateY(-100%), webkit);
        }
    }
    &.btn-slide-left {
        span {
            @include prefix(transform, translateX(100%), webkit);
        }
    }
    &.btn-slide-right {
        span {
            @include prefix(transform, translateX(-100%), webkit);
        }
    }
    &.btn-slide-up, &.btn-slide-down, &.btn-slide-left, &.btn-slide-right {
        position: relative;
        z-index: 1;
        overflow: hidden;
        span {
            position: absolute;
            height: 100%;
            width: 102%;
            z-index: -1;
            left: -2px;
            top: 0;
            @include prefix(transition, 0.3s, webkit);
        }
        &:hover {
            span {
                @include prefix(transform, translateY(0), webkit);
            }
        }
    }
    &.btn-radius {
        @include prefix(transition, all 0.5s, webkit);
        &:hover {
            @include prefix(border-radius, 10px, webkit);
        }
    }
    &.arrow-bounce-right {
        position: relative;
        &:before {
            content: "\f108";
            font-family: "Font Awesome 5 Free";
            position: absolute;
            top: inherit;
            left: 80%;
            transition: all 0.3s;
            opacity: 0;
            font-weight: 900;
            margin-top: 3px;
        }
        &:hover {
            &:before {
                left: 85%;
                opacity: 1;
            }
        }
    } 
    &.underline-on-hover {
        position: relative;
        padding: 0 0 2px;
        border: none;
        opacity: 1 !important;
        &:after {
            position: absolute;
            top: 100%;
            left: 0;
            width: 100%;
            border-bottom: 2px solid;
            content: '';
            opacity: 0;
            -webkit-transition: opacity 0.3s, -webkit-transform 0.3s; 
            transition: opacity 0.3s, transform 0.3s;
            @include prefix(transform, translateY(7px), webkit);
        }
        &:hover {
            &:after {
                opacity: 1;
                @include prefix(transform, translateY(0), webkit);
            }
        }
        &.btn-medium, &.btn-small, &.btn-very-small {
            padding: 0 0 3px;
        }
    }
    &.hover-text-dark {
        @include prefix(transition, all 0.3s linear, webkit);
        margin: 0;
        padding: 0;
        position: relative;
        border-bottom:none;
        opacity: .4;
        display: inline-block;
        &:after {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            display: block;
            content: attr(data-hover);
            max-height: 0;
            overflow: hidden;
            @include prefix(transition, max-height 0.5s, webkit);
        }
        &:hover {
            opacity: 1;
            &:after {
                max-height: 100%;
            }
        }
    }
    &.hover-text-light {
        @include prefix(transition, all 0.3s linear, webkit);
        margin: 0;
        padding: 0;
        position: relative;
        border-bottom:none;
        opacity: 1;
        display: inline-block;
        &:after {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            display: block;
            content: attr(data-hover);
            max-height: 0;
            overflow: hidden;
            @include prefix(transition, max-height 0.5s, webkit);
        }
        &:hover {
            opacity: .6;
            &:after {
                max-height: 100%;
            }
        }
    }
    
    // Button background color
    &.btn-base-color {
        background-color: var(--base-color);
        color: var(--white);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--base-color);
            color: var(--base-color);
        }
    }
    &.btn-dark-gray {
        background-color: var(--dark-gray);
        color: var(--white);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--dark-gray);
            color: var(--dark-gray);          
        }
    }
    &.btn-black {
        background-color: var(--black);
        color: var(--white);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--black);
            color: var(--black); 
        }
    }
    &.btn-white {
        background-color: var(--white);
        color: var(--dark-gray);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--white);
            color: var(--white);
        }
    }
    &.btn-cornflower-blue {
        background-color: var(--cornflower-blue);
        color: var(--white);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--cornflower-blue);
            color: var(--cornflower-blue);          
        }
    }
    &.btn-jade {
        background-color: var(--jade);
        color: var(--white);
        &:hover, &:active  {
            background-color: transparent;
            border-color: var(--jade);
            color: var(--jade);          
        }
    }
    &.btn-transparent-black {
        background-color: transparent;
        border-color: var(--black);
        color: var(--black);
        &:hover, &:active  {
            background-color: var(--black);
            border-color: var(--black);
            color: var(--white);
        }
    }
    &.btn-transparent-white {
        background-color: transparent;
        border-color: var(--white);
        color: var(--white);
        &:hover, &:active  {
            background-color: var(--white);
            border-color: var(--white);
            color: var(--dark-gray);
        }
    }
    &.btn-transparent-white-light {
        background-color: transparent;
        border-color: rgba(255,255,255,.3);
        color: var(--white);
        &:hover, &:active {
            background-color: var(--white);
            border-color: rgba(255,255,255,.3);
            color: var(--dark-gray);
        }
    }
    &.btn-transparent-base-color {
        background-color: transparent;
        border-color: var(--base-color);
        color: var(--base-color);
        &:hover, &:active  {
            background-color: var(--base-color);
            border-color: var(--base-color);
            color: var(--white);
        }
    }
    &.btn-transparent-dark-gray {
        background-color: transparent;
        border-color: var(--dark-gray);
        color: var(--dark-gray);
        &:hover, &:active  {
            background-color: var(--dark-gray);
            border-color: var(--dark-gray);
            color: var(--white);
        }
    }
    &.btn-transparent-light-gray {
        background-color: transparent;
        border-color: var(--extra-medium-gray);
        color: var(--dark-gray);
        &:hover, &:active  {
            background-color: var(--dark-gray);
            border-color: var(--dark-gray);
            color: var(--white);
        }
    }

    // Button border color
    &.btn-double-border {
        &.btn-extra-large {
            padding:0;
            > span {
                padding: 24px 50px;
            }
        } 
        &.btn-large {
            padding:0;
            > span {
                padding: 18px 42px;
            }
        }
        &.btn-medium {
            padding:0;
            > span {
                padding: 16px 34px; 
            }
        }
        &.btn-small {
            padding:0;
            > span {
                padding:13px 32px;
            }
        }
        &.btn-very-small {
            padding:0;
            > span {
                padding: 10px 22px;
            }
        }
        > span {
            display: inline-flex; 
            align-items: center; 
            position: relative;
            overflow: hidden;
        }
        .btn-double-text {
            transition: opacity .65s,transform .65s;
            transition-timing-function: cubic-bezier(.15,.85,.31,1);
            &:before {
                content: attr(data-text);
                display: inline-block;
                position: absolute;
                white-space: nowrap;
                top: 50%;
                opacity: 0;
                left: 50%;
                transform: translate(-50%,100%);
                transition: opacity .5s,transform .8s;
                transition-timing-function: cubic-bezier(.15,.85,.31,1);
            }
        }
        &:hover {
            .btn-double-text {
                transform: translateY(-200%);
                &:before {
                    transform: translate(-50%,150%);
                    opacity: 1;
                }
            }
        }
        &:after {
            display: inline-block;
            content: "";
            position: absolute;
            border: 1px solid;
            width: calc(100% + 2 * -4px);
            height: calc(100% - 2 * -6px);
            top: calc(-6px - 0px);
            left: 4px;
            transform: translateX(0) translateY(0);
            z-index: 0; 
        }
        &.btn-border-base-color { 
            position: relative; 
            border: 1px solid var(--base-color);
            color: var(--base-color); 
            &:hover {
                border-color: var(--dark-gray);
                color: var(--dark-gray);
                &:after {
                    border-color: var(--dark-gray);
                    @include prefix(transition, all 0.3s ease, webkit);
                }
            }
            &.hover-border-color-white {
                &:hover {
                    border-color: var(--white);
                    color: var(--white);
                    &:after {
                        border-color: var(--white);
                        @include prefix(transition, all 0.3s ease, webkit);
                    }
                }
            }
        }
        &.btn-border-color-dark-gray {
            position: relative; 
            border: 1px solid var(--dark-gray);
            color: var(--dark-gray); 
            &:hover {
                border-color: var(--base-color);
                color: var(--base-color);
                &:after {
                    border-color: var(--base-color);
                    @include prefix(transition, all 0.3s ease, webkit);
                }
            }
        }
        &.btn-border-color-white {
            position: relative; 
            border: 1px solid var(--white);
            color: var(--white); 
            &:hover {
                border-color: var(--base-color);
                color: var(--base-color);
                &:after {
                    border-color: var(--base-color);
                    @include prefix(transition, all 0.3s ease, webkit);
                }
            }
        }
        &.btn-border-color-transparent-white {
            position: relative; 
            border: 1px solid rgba(255,255,255,0.2);
            color: var(--white);
            &:after {
                border: 1px solid rgba(255,255,255,0.2);
            }
            &:hover {
                border-color: rgba(255,255,255,1);
                color: var(--white);
                &:after {
                    border-color: rgba(255,255,255,1);
                    @include prefix(transition, all 0.3s ease, webkit);
                }
            }  
        }
        &.btn-border-color-transparent-dark {
            position: relative; 
            border: 1px solid rgba(35,35,35,0.2);
            color: var(--dark-gray);
            &:after {
                border: 1px solid rgba(35,35,35,0.2);
            }
            &:hover {
                border-color: rgba(35,35,35,1);
                color: var(--dark-gray);
                &:after {
                    border-color: rgba(35,35,35,1);
                    @include prefix(transition, all 0.3s ease, webkit); 
                }
            }  
        }
    } 
    
    // Button switch text
    &.btn-switch-text {
        &.btn-extra-large {
            padding:0;
            > span {
                padding: 22px 40px;
            }
        } 
        &.btn-large {
            padding:0; 
            > span {
                padding: 18px 34px;
            }
        }
        &.btn-medium {
            padding:0;
            > span {
                padding: 16px 30px; 
            }
        }
        &.btn-small {
            padding:0;
            > span {
                padding:13px 24px;
            }
        }
        &.btn-very-small {
            padding:0;
            > span {
                padding: 10px 20px;
            }
        }
        > span {
            display: inline-flex; 
            align-items: center; 
            position: relative;
            overflow: hidden;
        }
        .btn-double-text {
            transition: opacity .65s,transform .85s;
            transition-timing-function: cubic-bezier(.15,.85,.31,1);
            &:before {
                content: attr(data-text);
                display: inline-block;
                position: absolute;
                white-space: nowrap;
                top: 50%;
                opacity: 0;
                left: 50%;
                transform: translate(-50%,100%);
                transition: opacity .5s,transform .8s;
                transition-timing-function: cubic-bezier(.15,.85,.31,1);
            }
        }
        &:hover, &:active {
            .btn-double-text {
                transform: translateY(-200%);
                &:before {
                    transform: translate(-50%,150%);
                    opacity: 1;
                }
            }
        }
        &.purchase-envato{
            &.btn-small {
                padding:0;
                > span {
                    padding:11px 30px;
                }
            }

        }
    }

    // Button hover color
    &.base-color-hover {
        &:hover, &:active  {
            background-color: var(--base-color);
            color: var(--white);
        }
    }
    &.white-hover {
        &:hover, &:active {
            background-color: var(--white);
            color: var(--dark-gray);
        }
    }
    &.black-hover {
        &:hover, &:active {
            background-color: var(--dark-gray);
            color: var(--white);
        }
    }
    &.btn-box-shadow {
        &.btn-white {
            &:hover, &:active { 
                background: var(--white);
                color: var(--dark-gray);
            }
        }
        &.btn-black {
            &:hover, &:active {
                background: var(--black);
                color: var(--white);
            }
        }
        &.btn-dark-gray {
            &:hover, &:active {
                background: var(--dark-gray);
                color: var(--white);
            }
        }
        &.btn-base-color {
            &:hover, &:active {
                background: var(--base-color);
                color: var(--white);
            }
        }  
        &.btn-cornflower-blue {
            &:hover, &:active {
                background-color: var(--cornflower-blue);
                color: var(--white);          
            }
        }
        &.btn-jade {
            &:hover, &:active {
                background-color: var(--jade);
                color: var(--white);
            }
        }
    } 
    &.with-rounded {
        position: relative;
        > span {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 42px;
            height: 42px; 
            position: absolute;
            border-radius: 100%;
            right: 8px;
            top: 50%;
            @include prefix(transform, translateY(-50%), webkit);
            @include box-shadow(0 5px 10px 0 rgba(0,0,0,.35));
            i {
                margin: 0;
            }
        }
        &.btn-extra-large {
            padding-right: 70px;
        }
        &.btn-large {
            padding-right: 55px;
            > span {
                width: 34px;
                height: 34px; 
                right: 8px
            }
        }
        &.btn-medium {
            padding-right: 50px;
            > span {
                width: 32px;
                height: 32px; 
                right: 8px;
            }
        }
        &.btn-small {
            padding-right: 45px;
            > span {
                width: 28px;
                height: 28px; 
                right: 6px;
            }
        }
        &.btn-very-small {
            padding-right: 37px;
            > span {
                width: 26px;
                height: 26px; 
                right: 5px;
            }
        }
    } 
}
/* Button icon position */ 
.left-icon {
    i {
        margin-right: 6px;
        margin-left: 0;
    }
}

[class*="btn-transparent"], [class*=" btn-transparent"] {
    font-weight: 600;
}

/* Gradient button */ 
[class*="btn-gradient-"] {
    background-color: transparent;
    border-color:transparent; 
    &:active {
        background-color: transparent;
        border-color:transparent !important; 
        color: var(--white) !important;
    }
}
[class*="btn-gradient-"]:hover {
    background-position: right center;
    color: var(--white);
}
.btn-gradient-purple-pink {
    background-image: linear-gradient(to right, #8b14b1, #d53d6e, #8b14b1);
    background-size: 200% auto;
    color: var(--white);
}
.btn-gradient-fast-pink-light-yellow {
    background-image: linear-gradient(to right, #f7567f, #ffba83, #f7567f);
    background-size: 200% auto;
    color: var(--white);
}
.btn-gradient-pink-orange {
    background-image: linear-gradient(to right, #de347f, #ef5f43, #de347f);
    background-size: 200% auto;
    color: var(--white);
}
.btn-gradient-fast-blue-purple {
    background-image: linear-gradient(to right, #2a46f4, #bf25ff, #2a46f4);
    background-size: 200% auto;
    color: var(--white);
}
.btn-gradient-light-pink-light-purple {
    background-image: linear-gradient(to right, #ed579b, #bc63e8, #ed579b);
    background-size: 200% auto;
    color: var(--white);
}
.btn-gradient-sky-blue-pink {
    background-image: linear-gradient(to right, #5758df, #f77991, #5758df);
    background-size: 200% auto;
    color: var(--white);
}

.btn-dual {    
    .btn {
        margin-left:10px;
        margin-right:10px;
        &.btn-link, &.btn-underline, &.btn-zoom, &.btn-link-gradient {
            margin-left:30px;
            margin-right:30px;
        }
    }
}

/* Blog button */  
.categories-btn {
    padding: 4px 12px;
    @include prefix(border-radius, 2px, webkit);
    @include prefix(transition, 0.3s, webkit);
    margin-left: 5px;
    display: inline-block;
    font-size: 12px;
    line-height: 20px;
} 