// BOX SIZING
*, *:before, *:after {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

// CLEARFIX
.clearfix:before, .clearfix:after {
    content:" ";
    display: table;
}
.clearfix:after {
    clear: both;
}
.clearfix {
    *zoom: 1; /* IE6/7 support */
}

// VISUALLY HIDDEN
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    border: 0;
    clip: rect(0 0 0 0);
    overflow: hidden;
}

// DISABLED
.disabled {
    pointer-events: none;
    opacity: 0.5;
}

// BLOCK SELECTION
.block-selection{
    user-select: none;
}

// CENTERING - requires parent position relative
.vertical-center{
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}
.horizontal-center{
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}
.both-center{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}