/**
 * Creates a border on an element.
 * If any of the parameters is specified as a list, or if any paramter is null,
 * border-style, border-width, and border-color will be specified as separate properties,
 * otherwise all will be collapsed into a single "border" property.
 *
 * @param {number/list} $width
 * The border-width
 *
 * @param {string/list} $style
 * The border-style
 *
 * @param {color/list} $color
 * The border-color
 *
 * @private
 */
@mixin border($width: null, $style: null, $color: null) {
    @if $width != null and $style != null and $color != null and
            length($width) == 1 and length($style) == 1 and length($color) == 1 {
        border: $width $style $color;
    } @else {
        border-width: $width;
        border-style: $style;
        border-color: $color;
    }
}