.u-margin {
    directions = top right bottom left vertical horizontal;
    sizes = sm lg;

    direction-properties(value, direction) {
        if direction == vertical {
            margin-top: value !important;
            margin-bottom: @margin-top;
        }
        
        else if direction == horizontal {
            margin-left: value !important;
            margin-right: @margin-left;
        }

        else {
            margin-{direction}: value !important;
        }
    }

    for dir in directions {
        for siz in sizes {
            &--{siz} {
                margin: lookup('$vertical--element-' + siz) !important;
            }
        }
        &--{dir} {
            for siz in sizes {

                &-{siz} {
                    $value = lookup('$vertical--element-' + siz);

                    direction-properties($value, dir)
                }
            }

            &-remove {
                direction-properties(0, dir)
            }
        }

    }
    
    &--remove {
        margin: 0 !important;
    }
}