    @use "sass:selector";

    @mixin root($child) {
        @at-root #{selector.unify(&, $child)} {
            @content;
        }
    }   

    // placeholder input
    @mixin tp-placeholder {
        &::-webkit-input-placeholder { /* Chrome/Opera/Safari */
            @content;
        }
        &::-moz-placeholder { /* Firefox 19+ */
            @content;
        }
        &:-moz-placeholder { /* Firefox 4-18 */
            @content;
        }
        &:-ms-input-placeholder { /* IE 10+  Edge*/
            @content;
        }
        &::placeholder{ /* MODERN BROWSER */
            @content;
        }
    }

    // gradient 
    @mixin tp-gradient($value, $type : "linear") {

        @if $type == linear {
            background-image: -webkit-linear-gradient($value);
            background-image: -moz-linear-gradient($value);
            background-image: -ms-linear-gradient($value);
            background-image: -o-linear-gradient($value);
            background-image:   linear-gradient($value);
          } @else {
            background-image: -webkit-radial-gradient($value);
            background-image: -moz-radial-gradient($value);
            background-image: -ms-radial-gradient($value);
            background-image: -o-radial-gradient($value);
            background-image:   radial-gradient($value);
        }
    }

    // animate 
    @mixin animation($property) {
        -webkit-animation: $property;
           -moz-animation: $property;
            -ms-animation: $property;
             -o-animation: $property;
                animation: $property;
    }

    @mixin textGradient(){
        background: linear-gradient(180deg, #935acd 0%, #444899 100%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        text-fill-color: transparent;
    }

    //backgroud 
    @mixin tp-background {
        background-position: center;
        background-size: cover;
        background-repeat: no-repeat;
    }
      
    // transition specific
    @mixin tp-transition($property: all, $time: .3s,  $func : ease-out) {
        -webkit-transition: $property $time $func;
        -moz-transition: $property $time $func;
        -ms-transition: $property $time $func;
        -o-transition: $property $time $func;
        transition: $property $time $func;
    }
      
    // transition multiple
    @mixin tp-transition-mul($property) {
        -webkit-transition: $property;
        -moz-transition: $property;
        -ms-transition: $property;
        -o-transition: $property;
        transition: $property ;
    }
    
    
    // transform
    @mixin tp-transform($transforms) {
        -webkit-transform: $transforms;
        -moz-transform: $transforms;
        -ms-transform: $transforms;
        -o-transform: $transforms;
        transform: $transforms;
    }

    // Flexbox display
    @mixin tp-flexbox() {
        display: -webkit-box;
        display: -moz-box;
        display: -ms-flexbox;
        display: -webkit-flex;
        display: flex;
    }

    @mixin tp-rounded-btn($w : 40px, $h: 40px, $lh : 40px, $radius : 50%){
        width:  $w;
        height: $w;
        line-height: $lh;
        border-radius: $radius;
    }

    @mixin tp-rounded($w : 40px, $h: 40px, $radius : 50%){
        width:  $w;
        height: $w;
        border-radius: $radius;
    }
    