.clearfix() {
    *zoom: 1;
    &:before,
    &:after {
        display: table;
        content: "";
    }
    &:after {
        clear: both;
    }
}

.horizontal-list(@li-margin-right: 0) {
    list-style: none;
    margin: 0;
    padding: 0;

    li {
        display: block;
        position: relative;
        float: left;
        margin-right: @li-margin-right;
    }

    .clearfix();
}

.selection(@color: #FFF, @background: rgba(0, 0, 0, 1)) {
    ::selection {
        background: @background;
        color: @color;
    }
    ::-moz-selection {
        background: @background;
        color: @color;
    }

    img::selection {
        background: transparent;
    }
    img::-moz-selection {
        background: transparent;
    }
}

.horizontal-gradient(@startColor: #555, @endColor: #333) {
    background-color: @endColor;
    background-repeat: no-repeat;
    background-image: -webkit-gradient(linear, left top, right top, from(@startColor), to(@endColor));
    background-image: -webkit-linear-gradient(right center, @startColor, @endColor);
    background-image: -moz-linear-gradient(right center, @startColor, @endColor);
    background-image: -o-linear-gradient(left,  @startColor,  @endColor);
    background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor));
    filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=1)",@startColor,@endColor));
    -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=1))",@startColor,@endColor);
}

.vertical-gradient(@startColor: #555, @endColor: #333) {
    background-color: @endColor;
    background-repeat: no-repeat;
    background-image: -webkit-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
    background-image: -webkit-linear-gradient(@startColor, @endColor);
    background-image: -moz-linear-gradient(@startColor, @endColor);
    background-image: -o-linear-gradient(top,  @startColor,  @endColor);
    background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
    filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=0)",@startColor,@endColor));
    -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=0))",@startColor,@endColor);
}

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

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

.background-size(@mode) {
    -webkit-background-size: @mode;
    -moz-background-size: @mode;
    -o-background-size: @mode;
    background-size: @mode;
}

.inner-shadow(@x: 0, @y: 1px, @blur: 2px, @spread: 0, @alpha: 0.25) {
    -webkit-box-shadow: inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
    -moz-box-shadow: inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
    box-shadow: inset @x @y @blur @spread rgba(0, 0, 0, @alpha);
}

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

.drop-shadow(@x: 0, @y: 1px, @blur: 2px, @spread: 0, @alpha: 0.25) {
    -webkit-box-shadow: @x @y @blur @spread rgba(0, 0, 0, @alpha);
    -moz-box-shadow: @x @y @blur @spread rgba(0, 0, 0, @alpha);
    box-shadow: @x @y @blur @spread rgba(0, 0, 0, @alpha);
}

.opacity(@opacity: 0.5) {
    -webkit-opacity: @opacity;
    -moz-opacity: @opacity;
    opacity: @opacity;
}

.border-radius(@top_left, @top_right, @bottom_right, @bottom_left) {
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}

.border-radius(@top_left, @top_right, @bottom_right, @bottom_left)when not (@top_left = null) {
    -webkit-border-top-left-radius: @top_left;
    -moz-border-radius-topleft: @top_left;
    border-top-left-radius: @top_left;
}

.border-radius(@top_left, @top_right, @bottom_right, @bottom_left)when not (@top_right = null) {
    -webkit-border-top-right-radius: @top_right;
    -moz-border-radius-topright: @top_right;
    border-top-right-radius: @top_right;
}

.border-radius(@top_left, @top_right, @bottom_right, @bottom_left)when not (@bottom_left = null) {
    -webkit-border-bottom-left-radius: @bottom_left;
    -moz-border-radius-bottomleft: @bottom_left;
    border-bottom-left-radius: @bottom_left;
}

.border-radius(@top_left, @top_right, @bottom_right, @bottom_left)when not (@bottom_right = null) {
    -webkit-border-bottom-right-radius: @bottom_right;
    -moz-border-radius-bottomright: @bottom_right;
    border-bottom-right-radius: @bottom_right;
}

.border-radius(@top, @bottom) {
    .border-radius(@top, @top, @bottom, @bottom);
}

.border-radius(@radius) {
    .border-radius(@radius, @radius);
}
