gradientOldWebkit fixes

gradientOldWebkit fixes

//  LESS Hat 0.4.2
//  CSSHat.com
//  2012
//  Petr Brzek & Jan Kuca

//  TABLE OF MIXINS:
//    .animation
    //    .animation-delay
    //    .animation-direction
    //    .animation-duration
    //    .animation-timing-function
    //    .animation-iteration-count
    //    .animation-name
    //    .animation-play-state
    //    .keyframes - in future
//    .appearance
//    .backface-visibility
//    .background-clip
//    .background-origin
//    .background-size
//    .border-radius
    //    .border-top-left-radius
    //    .border-top-right-radius
    //    .border-bottom-left-radius
    //    .border-bottom-right-radius
//    .border-image
//    .box-shadow
//    .box-sizing
//    .columns
    //    .column-count
    //    .column-gap
    //    .column-rule
    //    .column-width
//    .font-face
//    .gradient
//    .opacity
//    .perspective
    //    .perspective-origin
//    .size
//    .transform
    //    .transform-origin
    //    .transform-style
    //    .translate
        //    .translate3d
        //    .translateX
        //    .translateY
        //    .translateZ
    //    .scale
        //    .scale3d
        //    .scaleX
        //    .scaleY
        //    .scaleZ
    //    .rotate
        //    .rotate3d
        //    .rotateX
        //    .rotateY
        //    .rotateZ
    //    .skew
        //    .skewX
        //    .skewY

//  @GlobalConfig

  // Config supported browsers for your project

    @w3c: true; // Unprefixed W3C syntax
    @webkit: true; // Chrome 7+, Safari 5+, iOS5, Android
    @moz: true; //  Firefox 4+
    @opera: true; // Opera 10.5+
    @ms: true;  // IE 10+
    @oldWebkit: true; // iOS4, Safari 4, Chrome < 6. Old webkit gradient syntax

  // Signals

    @webkitSignal: 1;
    @mozSignal: 2;
    @operaSignal: 3;
    @msSignal: 4;
    @w3cSignal: 5;

// .animation

  .animation(@arguments: none){

    //  Local config for disabling properties

    @w3cLocal: true; // Unprefixed W3C syntax
    @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
    @mozLocal: true; //  Firefox 4+
    @operaLocal: true; // Opera 10.5+
    @msLocal: true;  // IE 10+

    .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
      .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 2) { -moz-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 3) { -o-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 4) { -ms-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 5) { animation: @arguments;}
      .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
      .inception(@signal, @arguments);
    }
    .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation(~"yourAnimation1 6s backwards 2s, yourAnimation2 3s linear alternate infinite"); }

  //  .animation-delay

  .animation-delay(@arguments: 0){

    //  Local config for disabling properties

    @w3cLocal: true; // Unprefixed W3C syntax
    @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
    @mozLocal: true; //  Firefox 4+
    @operaLocal: true; // Opera 10.5+
    @msLocal: true;  // IE 10+

    .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
      .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 3) { -o-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 5) { animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
      .inception(@signal, @arguments);
    }
    .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-delay(1s);  }
    //  element{  .animation-delay(~"750ms, 2s"); // For multiple animation-direction  }

  //  .animation-direction

    .animation-direction(@arguments: normal){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-direction();  }
    //  element{  .animation-direction(~"normal, alternate");  }

  //  .animation-duration

    .animation-duration(@arguments: 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-duration(2s); }

  //  .animation-timing-function

    .animation-timing-function(@arguments: ease){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

    //  element{  .animation-timing-function(ease-in-out);  }

  //  .animation-iteration-count

    .animation-iteration-count(@arguments: 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-iteration-count(3);  }

  //  .animationName

    .animation-name(@arguments: none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-name(myReallyCoolAnimationName);  }

  //  .animation-play-state

    .animation-play-state(@arguments: running){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-play-state(paused);  }

//  .appearance

  .appearance(@argument:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @argument) when (@signal = 1) { -webkit-appearance: @argument;}
        .inception (@signal, @argument) when (@signal = 2) { -moz-appearance: @argument;}
        .inception (@signal, @argument) when (@signal = 5) { appearance: @argument;}
        .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @argument);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .appearance(button);  }

//  .backface-visibility

  .backface-visibility(@argument:visible){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @argument) when (@signal = 1) { -webkit-backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal = 2) { -moz-backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal = 5) { backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @argument);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .backface-visibility(hidden);  }

//  .background-clip

  .background-clip(@arguments:border-box){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-clip(padding-box); }

//  .background-origin

  .background-origin(@arguments:padding){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-origin(content-box); }

//  .background-size

  .background-size(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-size(~"auto, 100%"); }

// .border-radius

  .border-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-radius(10px); //  all corner rounded }
    //  element{  .border-radius(~"10px / 20px"); //  horizontal and vertical rounded differently  }
    //  element{  .border-radius(~"0 10px 0 0"); // only top right corner rounded  }

// .border-top-left-radius

  .border-top-left-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-left-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topleft: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-top-left-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-top-left-radius(10px); }

// .border-top-right-radius

  .border-top-right-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-right-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topright: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-top-right-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-top-right-radius(10px);  }

// .border-bottom-left-radius

  .border-bottom-left-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-left-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomleft: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-bottom-left-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-bottom-left-radius(10px);  }

// .border-bottom-right-radius

  .border-bottom-right-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-right-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomright: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-bottom-right-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-bottom-right-radius(10px); }

// .border-image

  .border-image(@arguments:none) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { border-image: @arguments; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-image(url(border.png) 30 30 round);  }

//  .box-shadow

  .box-shadow(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .box-shadow(~"0 1px 10px #000, inset 0 -2px 5px red"); }

//  .box-sizing

  .box-sizing(@arguments:content-box){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .box-sizing(border-box); }

//  .columns

  .columns(@arguments:auto auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-columns: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-columns: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { columns: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .columns(100px 3);  }

//  .column-count

  .column-count(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-count(3);  }

//  .column-gap

  .column-gap(@arguments:normal){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-gap(40px); }

//  .column-rule

  .column-rule(@arguments:medium none black){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-rule(3px outset #ff00ff);  }

//  .column-width

  .column-width(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-width(100px);  }

//  .font-face

  .font-face(@fontname, @fontfile) {

    font-family: "@{fontname}";
    src: url("@{fontfile}-webfont.eot");
    src: url("@{fontfile}-webfont.eot?#iefix") format("embedded-opentype"),
         url("@{fontfile}-webfont.woff") format("woff"),
         url("@{fontfile}-webfont.ttf") format("truetype"),
         url("@{fontfile}-webfont.svg#@{fontname}") format("svg");
    font-weight: normal;
    font-style: normal;
  }

    //  element{  .font-face(ZendaRegular, zenda-webfont); }

//  .gradient

  .gradient(@arguments){

      //  Local config for disabling properties

      //@svg: true; //  SVG gradient for IE9
      @mozLocal: true; //  Firefox 4+
      @oldWebkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @operaLocal: true; // Opera 10.5+
      @w3cLocal: true; // Unprefixed W3C syntax

      @gradientMoz: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-moz-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-moz-radial-gradient").replace(/,\s* \d*(px|%) \d*(px|%)/,", circle").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientOldWebkit: ~`(function(){ var $source = "@{arguments}"; var exist = null; var direction = true; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var top = /top/; var right = /right/; var bottom = /bottom/; var left = /left/; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var diagonal1 = /45deg/; var diagonal2 = /-45deg/ ;var angle = /\d*deg/;  for (var i = 0; i< gradientStepsLength; i++) { if (/linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient\s*\(/, "-webkit-gradient(linear, "); if ((top.test(gradientSteps[i]) && !toTop.test(gradientSteps[i])  )|| toBottom.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(toBottom) ? toBottom : top; gradientSteps[i] = gradientSteps[i].replace(substitute, "left top, left bottom");} else if ( (right.test(gradientSteps[i]) && !(toRight.test(gradientSteps[i])) ) || toLeft.test(gradientSteps[i]) ) { var substitute = gradientSteps[i].match(toLeft) ? toLeft : right; gradientSteps[i] = gradientSteps[i].replace(substitute, "right top, left top"); } else if( (bottom.test(gradientSteps[i]) && !(toBottom.test(gradientSteps[i])) ) || toTop.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(toTop) ? toTop : bottom; gradientSteps[i] = gradientSteps[i].replace(substitute, "left bottom, left top"); } else if ( (left.test(gradientSteps[i]) && !(toLeft.test(gradientSteps[i])) ) || toRight.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(toRight) ? toRight : left; gradientSteps[i] = gradientSteps[i].replace(substitute, "left top, right top"); } else if ( diagonal1.test(gradientSteps[i]) && !(diagonal2.test(gradientSteps[i])) ) { gradientSteps[i] = gradientSteps[i].replace(diagonal1, "left bottom, right top"); } else if ( diagonal2.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(diagonal2, "left top, right bottom"); } else { direction = false; }} var syntax = gradientSteps.toString(); var rgbaArray = syntax.match(/rgba?\(\d+,\s*\d+,\s*\d+,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g) || 0; var hslaArray = syntax.match(/hsla?\(\d+,\s*\d+%,\s*\d+%,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g) || 0; var rgbaArraySugar = []; var hslaArraySugar = []; for (var j = 0; j < rgbaArray.length; j++) { rgbaArraySugar[j] = rgbaArray[j].replace(/,/g,"--");} for(var n = 0; n < hslaArray.length; n++) { hslaArraySugar[n] = hslaArray[n].replace(/,/g,"--"); } for(var k = 0; k < rgbaArray.length; k++) { syntax = syntax.replace(rgbaArray[k],rgbaArraySugar[k]); } for(var o = 0; o < hslaArray.length; o++) { syntax = syntax.replace(hslaArray[o],hslaArraySugar[o]);} var gradientArray = syntax.split(","); for( var m = 0; m < gradientArray.length; m++ ) { gradientArray[m] = gradientArray[m].replace(/(#\w{3,6})\s*(\d*%*)/g, "color-stop($2,$1)").replace(/(rgba?\(\d+--\s*\d+--\s*\d+--\s*(?:0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g, "color-stop($2,$1)").replace(/(hsla?\(\d+--\s*\d+%--\s*\d+%--\s*(?:0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g, "color-stop($2,$1)").replace(/--/g,",").replace(/((?:aqua|black|blue|fuchsia|gray|grey|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow))\s*(\d*%)*/g, "color-stop($2,$1)");  try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientArray[m] = gradientArray[m].trim(); } }  } if (/radial/.test(gradientArray) ) { if ( /((ellipse).*(center)|(circle).*(center))/g.test(gradientArray) && /color-stop\(\s*\d*%/g.test(gradientArray) ) { gradientArray = gradientArray.join(",").replace(/radial-gradient\(.*?color/g, "-webkit-gradient(radial, center center, 0px, center center, 100%, color");} else { gradientArray = false; } } direction ? gradientArray : gradientArray = false; return gradientArray ? gradientArray.toString() : gradientArray; }())`;
      @gradientWebkit: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-webkit-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-webkit-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientOpera: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-o-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-o-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientW3C: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; for (var i = 0; i< gradientStepsLength; i++) { try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;

      .result(@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) { background-image: @arguments; }
      .result(@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
      .result(@arguments, @signal, @boolean, @localBoolean, @gradientOldWebkit) when (@boolean = true) and (@localBoolean = true) and (isstring(@gradientOldWebkit)) { background-image: @arguments; }
      .result(@arguments, @signal, @boolean, @localBoolean, @gradientOldWebkit) when not (@boolean = true), not (@localBoolean = true), not (isstring(@gradientOldWebkit)) { }

      .result(@gradientMoz, @mozSignal, @moz, @mozLocal);
      // --  this comment must be here because of LESS bug
      .result(@gradientOldWebkit, @webkitSignal, @oldWebkit, @oldWebkitLocal, @gradientOldWebkit);
      // --
      .result(@gradientWebkit, @webkitSignal, @webkit, @webkitLocal);
      // --
      .result(@gradientOpera, @operaSignal, @opera, @operaLocal);
      // --
      .result(@gradientW3C, @w3cSignal, @w3c, @w3cLocal);

}

    //  element{  .gradient(~"linear-gradient(to right, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)");  }

//  .opacity

  .opacity(@arguments:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .opacity(.5); }

//  .perspective

  .perspective(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .perspective(350px);  }

//  .perspective-origin

  .perspective-origin(@arguments:50% 50%){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .perspective-origin(top left); }

//  .size

  .size(@square){
    width: @square;
    height: @square;
  }

  .size(@width, @height){
    width: @width;
    height: @height;
  }

    //  element{  .size(10px);  //  render width:10px; height:10px; }
    //  element{  .size(10px, 20px);  //  render width:10px; height: 20px;  }

//  .transform

  .transform(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform(~"scale(.5) translate(10px, 20px)"); }

//  .transform-origin

  .transform-origin(@arguments:50% 50% 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform-origin(20% 40%);  }

//  .transform-style

  .transform-style(@arguments:flat){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform-style(preserve-3d); }

//  .translate

  .translate(@x:0, @y:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translate(100px);  }
    //  element{  .translate(100px, 50px);  }

//  .translate3d

  .translate3d(@x:0, @y:0, @z:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translate3d(10px, 20px, 30px); }

//  .translateX

  .translateX(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateX(10px);  }

//  .translateY

  .translateY(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateY(15px);  }

//  .translateZ

  .translateZ(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateZ(32px);  }

//  .scale

    .scale(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

  .scale(@x, @y){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scale(2);  }
      //  element{  .scale(2, 1); }

//  .scale3d

    .scale3d(@x:1, @y:1, @z:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scale3d(1, 2, 1);  }

//  .scaleX

    .scaleX(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleX(1.5); }

//  .scaleY

    .scaleY(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleX(1.5); }

//  .scaleZ

    .scaleZ(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleZ(2.7); }

//  .rotate

  .rotate(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotate(45deg);  }

//  .rotate3d

  .rotate3d(@x:0, @y:0, @z: 0, @angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotate3d(1, 2.0, 3.0, 10deg);  }

//  .rotateX

  .rotateX(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateX(63deg);  }

//  .rotateY

  .rotateY(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateY(24deg);  }

//  .rotateZ

  .rotateZ(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateZ(280deg);  }

//  .skew

  .skew(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skew(20deg);  }

//  .skewX

  .skewX(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skewX(24deg);  }

//  .skewY

  .skewY(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skewY(36deg);  }

//  LESS Hat 0.4.2
//  CSSHat.com
//  2012
//  Petr Brzek & Jan Kuca

//  TABLE OF MIXINS:
//    .animation
    //    .animation-delay
    //    .animation-direction
    //    .animation-duration
    //    .animation-timing-function
    //    .animation-iteration-count
    //    .animation-name
    //    .animation-play-state
    //    .keyframes - in future
//    .appearance
//    .backface-visibility
//    .background-clip
//    .background-origin
//    .background-size
//    .border-radius
    //    .border-top-left-radius
    //    .border-top-right-radius
    //    .border-bottom-left-radius
    //    .border-bottom-right-radius
//    .border-image
//    .box-shadow
//    .box-sizing
//    .columns
    //    .column-count
    //    .column-gap
    //    .column-rule
    //    .column-width
//    .font-face
//    .gradient
//    .opacity
//    .perspective
    //    .perspective-origin
//    .size
//    .transform
    //    .transform-origin
    //    .transform-style
    //    .translate
        //    .translate3d
        //    .translateX
        //    .translateY
        //    .translateZ
    //    .scale
        //    .scale3d
        //    .scaleX
        //    .scaleY
        //    .scaleZ
    //    .rotate
        //    .rotate3d
        //    .rotateX
        //    .rotateY
        //    .rotateZ
    //    .skew
        //    .skewX
        //    .skewY

//  @GlobalConfig

  // Config supported browsers for your project

    @w3c: true; // Unprefixed W3C syntax
    @webkit: true; // Chrome 7+, Safari 5+, iOS5, Android
    @moz: true; //  Firefox 4+
    @opera: true; // Opera 10.5+
    @ms: true;  // IE 10+
    @oldWebkit: true; // iOS4, Safari 4, Chrome < 6. Old webkit gradient syntax

  // Signals

    @webkitSignal: 1;
    @mozSignal: 2;
    @operaSignal: 3;
    @msSignal: 4;
    @w3cSignal: 5;

// .animation

  .animation(@arguments: none){

    //  Local config for disabling properties

    @w3cLocal: true; // Unprefixed W3C syntax
    @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
    @mozLocal: true; //  Firefox 4+
    @operaLocal: true; // Opera 10.5+
    @msLocal: true;  // IE 10+

    .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
      .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 2) { -moz-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 3) { -o-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 4) { -ms-animation: @arguments;}
      .inception (@signal, @arguments) when (@signal = 5) { animation: @arguments;}
      .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
      .inception(@signal, @arguments);
    }
    .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation(~"yourAnimation1 6s backwards 2s, yourAnimation2 3s linear alternate infinite"); }

  //  .animation-delay

  .animation-delay(@arguments: 0){

    //  Local config for disabling properties

    @w3cLocal: true; // Unprefixed W3C syntax
    @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
    @mozLocal: true; //  Firefox 4+
    @operaLocal: true; // Opera 10.5+
    @msLocal: true;  // IE 10+

    .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
      .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 3) { -o-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal = 5) { animation-delay: @arguments;}
      .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
      .inception(@signal, @arguments);
    }
    .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-delay(1s);  }
    //  element{  .animation-delay(~"750ms, 2s"); // For multiple animation-direction  }

  //  .animation-direction

    .animation-direction(@arguments: normal){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-direction: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-direction();  }
    //  element{  .animation-direction(~"normal, alternate");  }

  //  .animation-duration

    .animation-duration(@arguments: 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-duration: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .animation-duration(2s); }

  //  .animation-timing-function

    .animation-timing-function(@arguments: ease){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-timing-function: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

    //  element{  .animation-timing-function(ease-in-out);  }

  //  .animation-iteration-count

    .animation-iteration-count(@arguments: 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-iteration-count: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-iteration-count(3);  }

  //  .animationName

    .animation-name(@arguments: none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-name: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-name(myReallyCoolAnimationName);  }

  //  .animation-play-state

    .animation-play-state(@arguments: running){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { animation-play-state: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
    }

      //  element{  .animation-play-state(paused);  }

//  .appearance

  .appearance(@argument:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @argument) when (@signal = 1) { -webkit-appearance: @argument;}
        .inception (@signal, @argument) when (@signal = 2) { -moz-appearance: @argument;}
        .inception (@signal, @argument) when (@signal = 5) { appearance: @argument;}
        .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @argument);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .appearance(button);  }

//  .backface-visibility

  .backface-visibility(@argument:visible){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @argument) when (@signal = 1) { -webkit-backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal = 2) { -moz-backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal = 5) { backface-visibility: @argument;}
        .inception (@signal, @argument) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @argument);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .backface-visibility(hidden);  }

//  .background-clip

  .background-clip(@arguments:border-box){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-clip: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-clip(padding-box); }

//  .background-origin

  .background-origin(@arguments:padding){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-origin(content-box); }

//  .background-size

  .background-size(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { background-size: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .background-size(~"auto, 100%"); }

// .border-radius

  .border-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-radius(10px); //  all corner rounded }
    //  element{  .border-radius(~"10px / 20px"); //  horizontal and vertical rounded differently  }
    //  element{  .border-radius(~"0 10px 0 0"); // only top right corner rounded  }

// .border-top-left-radius

  .border-top-left-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-left-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topleft: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-top-left-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-top-left-radius(10px); }

// .border-top-right-radius

  .border-top-right-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-top-right-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-topright: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-top-right-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-top-right-radius(10px);  }

// .border-bottom-left-radius

  .border-bottom-left-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-left-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomleft: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-bottom-left-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-bottom-left-radius(10px);  }

// .border-bottom-right-radius

  .border-bottom-right-radius(@arguments) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-bottom-right-radius: @arguments; -webkit-background-clip: padding-box;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-radius-bottomright: @arguments; -moz-background-clip: padding;}
        .inception (@signal, @arguments) when (@signal = 5) { border-bottom-right-radius: @arguments; background-clip: padding-box; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-bottom-right-radius(10px); }

// .border-image

  .border-image(@arguments:none) {

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-border-image: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { border-image: @arguments; }
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .border-image(url(border.png) 30 30 round);  }

//  .box-shadow

  .box-shadow(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { box-shadow: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .box-shadow(~"0 1px 10px #000, inset 0 -2px 5px red"); }

//  .box-sizing

  .box-sizing(@arguments:content-box){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { box-sizing: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .box-sizing(border-box); }

//  .columns

  .columns(@arguments:auto auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-columns: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-columns: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { columns: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .columns(100px 3);  }

//  .column-count

  .column-count(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-count: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-count(3);  }

//  .column-gap

  .column-gap(@arguments:normal){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-gap: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-gap(40px); }

//  .column-rule

  .column-rule(@arguments:medium none black){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-rule: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-rule(3px outset #ff00ff);  }

//  .column-width

  .column-width(@arguments:auto){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { column-width: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .column-width(100px);  }

//  .font-face

  .font-face(@fontname, @fontfile) {

    font-family: "@{fontname}";
    src: url("@{fontfile}-webfont.eot");
    src: url("@{fontfile}-webfont.eot?#iefix") format("embedded-opentype"),
         url("@{fontfile}-webfont.woff") format("woff"),
         url("@{fontfile}-webfont.ttf") format("truetype"),
         url("@{fontfile}-webfont.svg#@{fontname}") format("svg");
    font-weight: normal;
    font-style: normal;
  }

    //  element{  .font-face(ZendaRegular, zenda-webfont); }

//  .gradient

  .gradient(@arguments){

      //  Local config for disabling properties

      //@svg: true; //  SVG gradient for IE9
      @mozLocal: true; //  Firefox 4+
      @oldWebkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @operaLocal: true; // Opera 10.5+
      @w3cLocal: true; // Unprefixed W3C syntax

      @gradientMoz: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-moz-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-moz-radial-gradient").replace(/,\s* \d*(px|%) \d*(px|%)/,", circle").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientOldWebkit: ~`(function(){ var $source = "@{arguments}"; var exist = null; var direction = true; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var top = /top/; var right = /right/; var bottom = /bottom/; var left = /left/; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var diagonal1 = /45deg/; var diagonal2 = /-45deg/ ;var angle = /\d*deg/;  for (var i = 0; i< gradientStepsLength; i++) { if (/linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient\s*\(/, "-webkit-gradient(linear, "); if (top.test(gradientSteps[i]) || toBottom.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(top) ? top : toBottom; gradientSteps[i] = gradientSteps[i].replace(substitute, "left top, left bottom");} else if ( right.test(gradientSteps[i]) || toLeft.test(gradientSteps[i]) ) { var substitute = gradientSteps[i].match(right) ? right : toLeft; gradientSteps[i] = gradientSteps[i].replace(substitute, "right top, left top"); } else if( bottom.test(gradientSteps[i]) || toTop.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(bottom) ? bottom : toTop; gradientSteps[i] = gradientSteps[i].replace(substitute, "left bottom, left top"); } else if ( left.test(gradientSteps[i]) || toRight.test(gradientSteps[i])) { var substitute = gradientSteps[i].match(left) ? left : toRight; gradientSteps[i] = gradientSteps[i].replace(substitute, "left top, right top"); } else if ( diagonal1.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(diagonal1, "left bottom, right top"); } else if ( diagonal2.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(diagonal2, "left top, right bottom"); } else { direction = false; }} var syntax = gradientSteps.toString(); var rgbaArray = syntax.match(/rgba?\(\d+,\s*\d+,\s*\d+,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g) || 0; var hslaArray = syntax.match(/hsla?\(\d+,\s*\d+%,\s*\d+%,\s*(?:0|1|\.\d+|0\.\d+)\)\s*\d*%*/g) || 0; var rgbaArraySugar = []; var hslaArraySugar = []; for (var j = 0; j < rgbaArray.length; j++) { rgbaArraySugar[j] = rgbaArray[j].replace(/,/g,"--");} for(var n = 0; n < hslaArray.length; n++) { hslaArraySugar[n] = hslaArray[n].replace(/,/g,"--"); } for(var k = 0; k < rgbaArray.length; k++) { syntax = syntax.replace(rgbaArray[k],rgbaArraySugar[k]); } for(var o = 0; o < hslaArray.length; o++) { syntax = syntax.replace(hslaArray[o],hslaArraySugar[o]);} var gradientArray = syntax.split(","); for( var m = 0; m < gradientArray.length; m++ ) { gradientArray[m] = gradientArray[m].replace(/(#\w{3,6})\s*(\d*%*)/g, "color-stop($2,$1)").replace(/(rgba?\(\d+--\s*\d+--\s*\d+--\s*(?:0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g, "color-stop($2,$1)").replace(/(hsla?\(\d+--\s*\d+%--\s*\d+%--\s*(?:0|1|\.\d+|0\.\d+)\))\s*(\d*%)*/g, "color-stop($2,$1)").replace(/--/g,",").replace(/((?:aqua|black|blue|fuchsia|gray|grey|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow))\s*(\d*%)*/g, "color-stop($2,$1)");  try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientArray[m] = gradientArray[m].trim(); } }  } if (/radial/.test(gradientArray) ) { if ( /((ellipse).*(center)|(circle).*(center))/g.test(gradientArray) && /color-stop\(\s*\d*%/g.test(gradientArray) ) { gradientArray = gradientArray.join(",").replace(/radial-gradient\(.*?color/g, "-webkit-gradient(radial, center center, 0px, center center, 100%, color");} else { gradientArray = false; } } direction ? gradientArray : gradientArray = false; return gradientArray ? gradientArray.toString() : gradientArray; }())`;
      @gradientWebkit: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-webkit-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-webkit-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientOpera: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; var toTop = /to\s*top/; var toRight = /to\s*right/; var toBottom = /to\s*bottom/; var toLeft = /to\s*left/; var angle = /\d*deg/; for (var i = 0; i< gradientStepsLength; i++) { if ( /linear/.test(gradientSteps[i])) { gradientSteps[i] = gradientSteps[i].replace(/linear-gradient/, "-o-linear-gradient"); if ( toTop.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toTop, "bottom"); } else if ( toRight.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toRight, "left"); } else if ( toBottom.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toBottom, "top"); } else if ( toLeft.test(gradientSteps[i]) ) { gradientSteps[i] = gradientSteps[i].replace(toLeft, "right" );} else if ( angle.test(gradientSteps[i]) ) { var newAngle = gradientSteps[i].match(/\d*deg/); newAngle = (parseInt(newAngle) - 90) * -1 + "deg"; gradientSteps[i] = gradientSteps[i].replace(angle, newAngle); } } else{ gradientSteps[i] = gradientSteps[i].replace(/radial-gradient/, "-o-radial-gradient").replace(/\(+\s*(.*) at\s*([^,]+)/g,"($2, $1");   }; try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;
      @gradientW3C: ~`(function(){ var $source = "@{arguments}"; var exist = null; var gradientSteps = $source.split(/,(?=\s*(?:linear|radial))/g); var gradientStepsLength = gradientSteps.length; for (var i = 0; i< gradientStepsLength; i++) { try { "".trim(); exist = true; } catch(e) { exist = false; } if ( exist ) {  gradientSteps[i] = gradientSteps[i].trim(); } } return gradientSteps; }())`;

      .result(@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) { background-image: @arguments; }
      .result(@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }
      .result(@arguments, @signal, @boolean, @localBoolean, @gradientOldWebkit) when (@boolean = true) and (@localBoolean = true) and (isstring(@gradientOldWebkit)) { background-image: @arguments; }
      .result(@arguments, @signal, @boolean, @localBoolean, @gradientOldWebkit) when not (@boolean = true), not (@localBoolean = true), not (isstring(@gradientOldWebkit)) { }

      .result(@gradientMoz, @mozSignal, @moz, @mozLocal);
      // --  this comment must be here because of LESS bug
      .result(@gradientOldWebkit, @webkitSignal, @oldWebkit, @oldWebkitLocal, @gradientOldWebkit);
      // --
      .result(@gradientWebkit, @webkitSignal, @webkit, @webkitLocal);
      // --
      .result(@gradientOpera, @operaSignal, @opera, @operaLocal);
      // --
      .result(@gradientW3C, @w3cSignal, @w3c, @w3cLocal);

}

    //  element{  .gradient(~"radial-gradient(ellipse at center, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)");  }

//  .opacity

  .opacity(@arguments:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { opacity: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .opacity(.5); }

//  .perspective

  .perspective(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { perspective: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .perspective(350px);  }

//  .perspective-origin

  .perspective-origin(@arguments:50% 50%){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { perspective-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .perspective-origin(top left); }

//  .size

  .size(@square){
    width: @square;
    height: @square;
  }

  .size(@width, @height){
    width: @width;
    height: @height;
  }

    //  element{  .size(10px);  //  render width:10px; height:10px; }
    //  element{  .size(10px, 20px);  //  render width:10px; height: 20px;  }

//  .transform

  .transform(@arguments:none){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform(~"scale(.5) translate(10px, 20px)"); }

//  .transform-origin

  .transform-origin(@arguments:50% 50% 0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform-origin(20% 40%);  }

//  .transform-style

  .transform-style(@arguments:flat){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal = 5) { transform-origin: @arguments;}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .transform-style(preserve-3d); }

//  .translate

  .translate(@x:0, @y:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translate(@x, @y);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translate(100px);  }
    //  element{  .translate(100px, 50px);  }

//  .translate3d

  .translate3d(@x:0, @y:0, @z:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translate3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translate3d(10px, 20px, 30px); }

//  .translateX

  .translateX(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateX(10px);  }

//  .translateY

  .translateY(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateY(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateY(15px);  }

//  .translateZ

  .translateZ(@x:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: translateZ(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .translateZ(32px);  }

//  .scale

    .scale(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

  .scale(@x, @y){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale(@x, @y);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scale(2);  }
      //  element{  .scale(2, 1); }

//  .scale3d

    .scale3d(@x:1, @y:1, @z:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scale3d(@x, @y, @z);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scale3d(1, 2, 1);  }

//  .scaleX

    .scaleX(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleX(1.5); }

//  .scaleY

    .scaleY(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleX(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleX(1.5); }

//  .scaleZ

    .scaleZ(@x:1){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: scaleZ(@x);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

      //  element{  .scaleZ(2.7); }

//  .rotate

  .rotate(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotate(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotate(45deg);  }

//  .rotate3d

  .rotate3d(@x:0, @y:0, @z: 0, @angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotate3d(@x, @y, @z, @angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotate3d(1, 2.0, 3.0, 10deg);  }

//  .rotateX

  .rotateX(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateX(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateX(63deg);  }

//  .rotateY

  .rotateY(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateY(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateY(24deg);  }

//  .rotateZ

  .rotateZ(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: rotateZ(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .rotateZ(280deg);  }

//  .skew

  .skew(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skew(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skew(20deg);  }

//  .skewX

  .skewX(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skewX(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skewX(24deg);  }

//  .skewY

  .skewY(@angle:0){

      //  Local config for disabling properties

      @w3cLocal: true; // Unprefixed W3C syntax
      @webkitLocal: true; // Chrome 7+, Safari 5+, iOS5, Android
      @mozLocal: true; //  Firefox 4+
      @operaLocal: true; // Opera 10.5+
      @msLocal: true;  // IE 10+

      .result (@arguments, @signal, @boolean, @localBoolean) when (@boolean = true) and (@localBoolean = true) {
        .inception (@signal, @arguments) when (@signal = 1) { -webkit-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 2) { -moz-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 3) { -o-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 4) { -ms-transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal = 5) { transform: skewY(@angle);}
        .inception (@signal, @arguments) when (@signal > 5),(@signal < 1) { error: "Signal is out of range"; }
        .inception(@signal, @arguments);
      }
      .result (@arguments, @signal, @boolean, @localBoolean) when not (@boolean = true), not (@localBoolean = true) { }

      .result(@arguments, @webkitSignal, @webkit, @webkitLocal);
      // --  this comment must be here because of LESS bug
      .result(@arguments, @mozSignal, @moz, @mozLocal);
      // --
      .result(@arguments, @operaSignal, @opera, @operaLocal);
      // --
      .result(@arguments, @msSignal, @ms, @msLocal);
      // --
      .result(@arguments, @w3cSignal, @w3c, @w3cLocal);
  }

    //  element{  .skewY(36deg);  }