/**
* Placeholder attribute for inputs
*
* @return     {string}  Placeholder attributes
*/
@mixin placeholder {
  &::-webkit-input-placeholder {@content;}
  &::-moz-placeholder {@content;}
  &:-ms-input-placeholder {@content;}
  &:placeholder-shown {@content;}
}

/**
* Spinner element
*
* @param      {string}  $color             - Color
* @param      {string}  $dur               - Animation Duration
* @param      {int}     $width             - Width
* @param      {int}     $height  [$width]  - height
*
* @return     {string}  Spinner element
*/
@mixin spinner($color,$dur,$width,$height:$width) {
  width: $width;
  height: $height;
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(0,0,0,0.1), 2px 1px 0 $color;
  @include prefix(animation, spin $dur linear infinite);
  @include keyframes(spin) {
    100%{
      @include prefix(transform, rotate(360deg));
    }
  }
}

/**
* Prefixes for keyframes
*
* @param      {string}  $animation-name          - The animation name
*
* @return     {string}  Prefixed keyframes attributes
*/
@mixin keyframes($animation-name) {
  @-webkit-keyframes #{$animation-name} {
    @content;
  }
  @-moz-keyframes #{$animation-name} {
    @content;
  }
  @-o-keyframes #{$animation-name} {
    @content;
  }
  @keyframes #{$animation-name} {
    @content;
  }
}

/**
* Prefix function for browser compatibility
*
* @param      {string}  $property          - Property name
* @param      {any}     $value             - Property value
*
* @return     {string}  Prefixed attributes
*/
@mixin prefix($property, $value) {
  -webkit-#{$property}: #{$value};
  -moz-#{$property}: #{$value};
  -ms-#{$property}: #{$value};
  -o-#{$property}: #{$value};
  #{$property}: #{$value};
}

/**
* Layout Mixins
*/
@mixin from($device) {
  @media screen and (min-width: $device) {
    @content;
  }
}

@mixin until($device) {
  @media screen and (max-width: $device - 1px) {
    @content;
  }
}

@mixin mobile {
  @media screen and (max-width: $tablet - 1px) {
    @content;
  }
}

@mixin tablet {
  @media screen and (min-width: $tablet) {
    @content;
  }
}

@mixin tablet-only {
  @media screen and (min-width: $tablet) and (max-width: $desktop - 1px) {
    @content;
  }
}

@mixin touch {
  @media screen and (max-width: $desktop - 1px) {
    @content;
  }
}

@mixin desktop {
  @media screen and (min-width: $desktop) {
    @content;
  }
}

@mixin desktop-only {
  @media screen and (min-width: $desktop) and (max-width: $widescreen - 1px) {
    @content;
  }
}

@mixin widescreen {
  @media screen and (min-width: $widescreen) {
    @content;
  }
}

// Nucleo Icons

@mixin nc-rotate($degrees, $rotation) {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
  -webkit-transform: rotate($degrees);
  -moz-transform: rotate($degrees);
  -ms-transform: rotate($degrees);
  -o-transform: rotate($degrees);
  transform: rotate($degrees);
}

@mixin nc-flip($horiz, $vert, $rotation) {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
  -webkit-transform: scale($horiz, $vert);
  -moz-transform: scale($horiz, $vert);
  -ms-transform: scale($horiz, $vert);
  -o-transform: scale($horiz, $vert);
  transform: scale($horiz, $vert);
}