// Esconder texto
///
.x-text-hide() {
    font-size:0;
    color: transparent;
    text-shadow: none;
    background-color: transparent;
    border: 0;
}

// Clearfix
///
.x-clearfix() {
  &:before, &:after { content: " "; display: table; }
  &:after { clear: both; }
}

// Opacity
////
.x-opacity(@opacity) {
  opacity: @opacity;
  // IE8 filter
  @opacity-ie: (@opacity * 100);
  filter: alpha(opacity=@opacity-ie);
}

// REM Fallback
///
.x-rem-fallback(@property, @value, @base-px: @base-font-size-px) {
  @px-fallback: @value * @base-px;
  -:~`(function(){return '@{property}: @{px-fallback}';})()`;
  -:~`(function(){return '@{property}: @{value}rem';}())`;}
}

// Keyframes
///
/// & {
///    .keyframes(testanimation);.-frames(@-...){
///     0% { left: 0; @{-}transform: translate(10px, 20px); }
///     100% { left: 100%; @{-}transform: translate(100px, 200px); }
///    }
/// }
}
.x-keyframes(@name) {
  @-webkit-keyframes @name {
    .-frames(-webkit-);
  }
  @-moz-keyframes @name {
    .-frames(-moz-);
  }
  @-webkit-keyframes @name {
    .-frames(-o-);
  }
  @-moz-keyframes @name {
    .-frames(-ms-);
  }
  @keyframes @name {
    .-frames();
  }
}

/// Mixin to prefix a property
///
/// @param {String} @property - Property name
/// @param {*} @value - Property value
/// @param {List} @prefixes (()) - List of prefixes to print
/// @param {NUmber} @length - length of the list
///
.x-prefix(@property; @values; @prefixes: -webkit-, -moz-, -o-, -ms-, ~''; @length: 5) when (@length > 0) {
  .x-prefix(@property; @values; @prefixes:@prefixes; (@length - 1));
  @prefix  : extract(@prefixes, @length);
  @{prefix}@{property}: @values;
}

