.border-radius(...) {
	border-radius: @arguments;
	-moz-border-radius: @arguments;
	-webkit-border-radius: @arguments;
}

.box-shadow(){
	box-shadow: @arguments;
	-moz-box-shadow: @arguments;
	-webkit-box-shadow: @arguments;
}

.text-shadow(){
	text-shadow: @arguments;
	-moz-text-shadow: @arguments;
	-webkit-text-shadow: @arguments;
}

.box-sizing(@box-sizing){
	box-sizing: @box-sizing;
	-moz-box-sizing: @box-sizing;
}

.opacity(@value) {
	@ieValue: @value * 100;
	opacity: @value;
	filter: ~'alpha(opacity=@{ieValue})';
}

.linear-gradient(){
	background-image: ~"linear-gradient(@{arguments})";
	background-image: ~"-o-linear-gradient(@{arguments})";
	background-image: ~"-moz-linear-gradient(@{arguments})";
	background-image: ~"-webkit-linear-gradient(@{arguments})";
}

.box-sizing(@value){
	box-sizing: @value;
	-moz-box-sizing: @value;
	-webkit-box-sizing: @value;
}

.ellipsis(){
	text-overflow: ellipsis;
	overflow: hidden;
	white-space: nowrap;
}

.gray-text(@brightness){
	color: hsl(0%, 0, @brightness);
}

/**
 * DOES NOT WORK WITH LESSCSS 1.3.0 (works on 1.2.1)
 * Named mixin parameters were added, which has the side effect of varargs mixin definitions with no explicit arguments (like the one below) never matching the mixin invocations.
 *
 * arguments are of the form
 * <property>, <duration> [, <property>, <duration> ...]
 */
.transition(){
	@dragons: ~`(function(argv){ return argv.slice(1, -1).split(', ').reduce(function(prev, curr, i){ return prev + (i%2 ? ' ' : ', ') + curr; }); })("@{arguments}")`;
	-o-transition: @dragons;
	-moz-transition: @dragons;
	-webkit-transition: @dragons;
	
	/*.transitionQuint();*/
	.transitionLinear();
}

.transitionCurve(@curve){
	-o-transition-timing-function: @curve;
	-moz-transition-timing-function: @curve;
	-webkit-transition-timing-function: @curve;
}

.transitionQuint(){
	.transitionCurve(cubic-bezier(0, 0.9, 0.32, 0.78));
}

.transitionLinear(){
	.transitionCurve(linear);
}

.transitionDuration(@duration){
	-o-transition-duration: @duration;
	-moz-transition-duration: @duration;
	-webkit-transition-duration: @duration;
}