@mixin btn-styles($btn-color, $btn-states-color) {
  @include diagonal-gradient($btn-color, $btn-states-color);
    background-color: $btn-color;
    transition: all 0.15s ease;
    box-shadow: none;
    &.animation-on-hover:hover{
      background-position: bottom left;
      transition:0.3s ease-in-out;
    }

    &:hover,
    &:focus,
    &:active,
    &.active,
    &:active:focus,
    &:active:hover,
    &.active:focus,
    &.active:hover
     {
        background-color: $btn-states-color !important;
        background-image: linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
        background-image: -webkit-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
        background-image: -o-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
        background-image: -moz-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
        color: $white;
        box-shadow: none;
    }

    &:active{
      box-shadow: none !important;
      transform: translateY(1px) !important;
      transition: all .15s ease;
    }

    &:not([data-action]):hover{

        box-shadow:  2px 2px 6px rgba(0,0,0,0.4);
        transform: translateY(-1px);
        -webkit-transform: translateY(-1px);
    }

    &.disabled,
    &:disabled,
    &[disabled],
    fieldset[disabled] & {
        &,
        &:hover,
        &:focus,
        &.focus,
        &:active,
        &.active {
            background-color: $btn-color;
            border-color: $btn-color;
        }
    }

    // btn-neutral style
    @if $btn-color == $white{
        color: $primary;

        &.btn-danger{
            color: $danger;

            &:hover,
            &:focus,
            &:active,
            &:active:focus{
                color: $danger-states;
            }
        }

        &.btn-info{
            color: $info;

            &:hover,
            &:focus,
            &:active,
            &:active:focus{
                color: $info-states;
            }
        }

        &.btn-warning{
            color: $warning;

            &:hover,
            &:focus,
            &:active,
            &:active:focus{
                color: $warning-states;
            }
        }

        &.btn-success{
            color: $success;

            &:hover,
            &:focus,
            &:active,
            &:active:focus{
                color: $success-states;
            }
        }

        &.btn-default{
            color: $default;

            &:hover,
            &:focus,
            &:active,
            &:active:focus{
                color: $default-states;
            }
        }

        &.active,
        &:active,
        &:active:focus,
        &:active:hover,
        &.active:focus,
        &.active:hover,
        .show > &.dropdown-toggle,
        .show > &.dropdown-toggle:focus,
        .show > &.dropdown-toggle:hover {
            background-color: $white;
            color: $primary-states;
            box-shadow: none;
        }

        &:hover,
        &:focus{
            color: $primary-states;

            &:not(.nav-link){
                box-shadow: none;
            }

        }

    } @else {
        color: $white;
    }

    &.btn-simple{
        color: $btn-color;
        border-color: $btn-color;
        background: $transparent-bg;

        &:hover,
        &:focus,
        &:active,
        &:not(:disabled):not(.disabled):active{
            color: $btn-color;
            border-color: $btn-color;
            background-color: $transparent-bg !important;
            background-image: none !important;
            box-shadow: none;
        }

        &.active{
          border-color: $btn-color !important;
          &:hover,
          &:focus,
          &:active,
          &:not(:disabled):not(.disabled):active{
              color: $white;
              border-color: $btn-color;
              background-image: linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
              background-image: -webkit-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
              background-image: -o-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
              background-image: -moz-linear-gradient(to bottom left, $btn-color, $btn-states-color, $btn-color) !important;
              background-color: $btn-states-color !important;
              box-shadow: none;
          }
        }
    }

    &.btn-link{
        color: $btn-color;
        &:hover,
        &:focus,
        &:active{
            background-color: $transparent-bg !important;
            background-image: none !important;
            color: $white !important;
            text-decoration: none;
            box-shadow: none;
        }
    }
}

@mixin button-variant($background, $border, $hover-background: darken($background, 0%), $hover-border: darken($border, 0%), $active-background: darken($background, 10%), $active-border: darken($border, 0%)) {
    color: color-yiq($background);
    @include gradient-bg($background);
    border-color: $border;
    @include box-shadow($btn-box-shadow);

    @include hover {
        color: color-yiq($hover-background);
        @include gradient-bg($hover-background);
        border-color: $hover-border;
    }

    &:focus,
    &.focus {
        // Avoid using mixin so we can pass custom focus shadow properly
        @if $enable-shadows {
            box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);
        }
        @else {
            box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);
        }
    } // Disabled comes first so active can properly restyle
    &.disabled,
    &:disabled {
        color: color-yiq($background);
        background-color: $background;
        border-color: $border;
    }

    &:not(:disabled):not(.disabled):active,
    &:not(:disabled):not(.disabled).active,
    .show>&.dropdown-toggle {
        color: color-yiq($active-background);
        background-color: $active-background;
        @if $enable-gradients {
            background-image: none; // Remove the gradient for the pressed/active state
        }
        border-color: $active-border;

        &:focus {
            // Avoid using mixin so we can pass custom focus shadow properly
            @if $enable-shadows {
                box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);
            }
            @else {
                box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);
            }
        }
    }
}

@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {
    color: $color;
    background-color: transparent;
    background-image: none;
    border-color: $color;

    &:hover {
        color: $color-hover;
        background-color: $active-background;
        border-color: $active-border;
    }

    &:focus,
    &.focus {
        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
    }

    &.disabled,
    &:disabled {
        color: $color;
        background-color: transparent;
    }

    &:not(:disabled):not(.disabled):active,
    &:not(:disabled):not(.disabled).active,
    .show>&.dropdown-toggle {
        color: color-yiq($active-background);
        background-color: $active-background;
        border-color: $active-border;

        &:focus {
            // Avoid using mixin so we can pass custom focus shadow properly
            @if $enable-shadows and $btn-active-box-shadow !=none {
                box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
            }
            @else {
                box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
            }
        }
    }
}

// Button sizes
@mixin btn-size($padding-vertical, $padding-horizontal, $font-size, $border){
   font-size: $font-size;
   border-radius: $border;
   padding: $padding-vertical $padding-horizontal;

   &.btn-simple{
       padding: $padding-vertical - 1 $padding-horizontal - 1;
   }

}

// for social buttons
@mixin social-buttons-color ($color, $state-color){
  @include diagonal-gradient($color, darken($color,20%));
    //background-color: $color;
    color: $white;
    background-size: 210% 210%;
    background-position: top right;
    background-repeat: space;

    &:focus,
    &:active,
    &:hover{
        background-color: $state-color;
        background-image: linear-gradient(to bottom left, $color, darken($color,20%), $color) !important;
        background-image: -webkit-linear-gradient(to bottom left, $color, darken($color,20%), $color) !important;
        background-image: -o-linear-gradient(to bottom left, $color, darken($color,20%), $color) !important;
        background-image: -moz-linear-gradient(to bottom left, $color, darken($color,20%), $color) !important;
        color: $white;
    }

    &.btn-simple{
        color: $state-color;
        background-color: $transparent-bg;
        background-image: none !important;
        box-shadow: none;
        border-color: $state-color;

        &:hover,
        &:focus,
        &:active{
            color: $state-color;
            border-color: $state-color;
        }
    }

    &.btn-neutral{
        color: $color;
        background-color: $white;


        &:hover,
        &:focus,
        &:active{
            color: $state-color;
        }
    }
}