// Hide text
///
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(n)
  -khtml-opacity n
  -moz-opacity n
  opacity n
  -ms-filter unquote('"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + round(n * 100) + ')"')
  filter unquote('alpha(opacity=' + round(n * 100) + ')')

// REM Fallback
///
x-rem-fallback(property, value, base-px = base-font-size-px)
  {property}: 0px + value * base-px
  {property}: 0rem + (value)

// Keyframes (native)
///
// vendors = moz webkit o official

// @keyframes [animationName] {
//   [content]
// }

/// Mixin to prefix a property
///
/// @param {String} $property - Property name
/// @param {*} $args - Property value
/// @param {List} prefixes (()) - List of prefixes to print
///
x-prefix(prop, args, prefixes = (webkit moz ms o))
 for i in prefixes
  -{i}-{prop} args
 {prop} args

// Transition
///
x-transition()
  transitions = ()
  for declaration in arguments
    prop = arguments[0]
    prop-opts = ()
    length = length(arguments)
    for i in (1)..(length)
      push(prop-opts, arguments[i])
  -webkit-transition: x-prefix-property(prop, webkit) prop-opts
  -moz-transition: x-prefix-property(prop, moz) prop-opts
  -o-transition: x-prefix-property(prop, o) prop-opts
  -ms-transition: x-prefix-property(prop, ms) prop-opts
  transition: arguments
