.checkbox {
    padding-left : 20px;
}

.checkbox label {
    display        : inline-block;
    vertical-align : middle;
    position       : relative;
    padding-left   : 5px;
}

.checkbox label::before {
    content            : "";
    display            : inline-block;
    position           : absolute;
    width              : 17px;
    height             : 17px;
    left               : 0;
    margin-left        : -16px;
    border             : 1px solid #cccccc;
    border-radius      : 3px;
    background-color   : #fff;
    -webkit-transition : border 0.15s ease-in-out, color 0.15s ease-in-out;
    -o-transition      : border 0.15s ease-in-out, color 0.15s ease-in-out;
    transition         : border 0.15s ease-in-out, color 0.15s ease-in-out;
}

.checkbox label::after {
    display      : inline-block;
    position     : absolute;
    width        : 16px;
    height       : 16px;
    left         : 0;
    top          : 0;
    margin-left  : -17px;
    padding-left : 3px;
    padding-top  : 1px;
    font-size    : 11px;
    color        : #555555;
}

.checkbox input[type="checkbox"],
.checkbox input[type="radio"] {
    opacity : 0;
    z-index : 1;
}

.checkbox input[type="checkbox"]:focus + label::before,
.checkbox input[type="radio"]:focus + label::before {
    outline        : thin dotted;
    outline        : 5px auto -webkit-focus-ring-color;
    outline-offset : -2px;
}

.checkbox input[type="checkbox"]:checked + label::after,
.checkbox input[type="radio"]:checked + label::after {
    font-family : "FontAwesome";
    content     : "\f00c";
}

.checkbox input[type="checkbox"]:disabled + label,
.checkbox input[type="radio"]:disabled + label {
    opacity : 0.65;
}

.checkbox input[type="checkbox"]:disabled + label::before,
.checkbox input[type="radio"]:disabled + label::before {
    background-color : #eeeeee;
    cursor           : not-allowed;
}

.checkbox.checkbox-circle label::before {
    border-radius : 50%;
}

.checkbox.checkbox-inline {
    margin-top : 0;
}

.checkbox-primary input[type="checkbox"]:checked + label::before,
.checkbox-primary input[type="radio"]:checked + label::before {
    background-color : #337ab7;
    border-color     : #337ab7;
}

.checkbox-primary input[type="checkbox"] + label:hover::before,
.checkbox-primary input[type="radio"] + label:hover::before {
    border-color : #337ab7;
}

.checkbox-primary input[type="checkbox"]:checked + label::after,
.checkbox-primary input[type="radio"]:checked + label::after {
    color : #fff;
}

.checkbox-danger input[type="checkbox"]:checked + label::before,
.checkbox-danger input[type="radio"]:checked + label::before {
    background-color : #d9534f;
    border-color     : #d9534f;
}

.checkbox-danger input[type="checkbox"]:checked + label::after,
.checkbox-danger input[type="radio"]:checked + label::after {
    color : #fff;
}

.checkbox-info input[type="checkbox"]:checked + label::before,
.checkbox-info input[type="radio"]:checked + label::before {
    background-color : #5bc0de;
    border-color     : #5bc0de;
}

.checkbox-info input[type="checkbox"]:checked + label::after,
.checkbox-info input[type="radio"]:checked + label::after {
    color : #fff;
}

.checkbox-warning input[type="checkbox"]:checked + label::before,
.checkbox-warning input[type="radio"]:checked + label::before {
    background-color : #f0ad4e;
    border-color     : #f0ad4e;
}

.checkbox-warning input[type="checkbox"]:checked + label::after,
.checkbox-warning input[type="radio"]:checked + label::after {
    color : #fff;
}

.checkbox-success input[type="checkbox"]:checked + label::before,
.checkbox-success input[type="radio"]:checked + label::before {
    background-color : #5cb85c;
    border-color     : #5cb85c;
}

.checkbox-success input[type="checkbox"]:checked + label::after,
.checkbox-success input[type="radio"]:checked + label::after {
    color : #fff;
}

.radio {
    padding-left : 20px;
}

.radio label {
    display        : inline-block;
    vertical-align : middle;
    position       : relative;
    padding-left   : 5px;
}

.radio label::before {
    content            : "";
    display            : inline-block;
    position           : absolute;
    width              : 17px;
    height             : 17px;
    left               : 0;
    margin-left        : -20px;
    border             : 1px solid #cccccc;
    border-radius      : 50%;
    background-color   : #fff;
    -webkit-transition : border 0.15s ease-in-out;
    -o-transition      : border 0.15s ease-in-out;
    transition         : border 0.15s ease-in-out;
}

.radio label::after {
    display            : inline-block;
    position           : absolute;
    content            : " ";
    width              : 11px;
    height             : 11px;
    left               : 3px;
    top                : 3px;
    margin-left        : -20px;
    border-radius      : 50%;
    background-color   : #555555;
    -webkit-transform  : scale(0, 0);
    -ms-transform      : scale(0, 0);
    -o-transform       : scale(0, 0);
    transform          : scale(0, 0);
    -webkit-transition : -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
    -moz-transition    : -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
    -o-transition      : -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
    transition         : transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
}

.radio input[type="radio"] {
    opacity : 0;
    z-index : 1;
}

.radio input[type="radio"]:focus + label::before {
    outline        : thin dotted;
    outline        : 5px auto -webkit-focus-ring-color;
    outline-offset : -2px;
}

.radio input[type="radio"]:checked + label::after {
    -webkit-transform : scale(1, 1);
    -ms-transform     : scale(1, 1);
    -o-transform      : scale(1, 1);
    transform         : scale(1, 1);
}

.radio input[type="radio"]:disabled + label {
    opacity : 0.65;
}

.radio input[type="radio"]:disabled + label::before {
    cursor : not-allowed;
}

.radio.radio-inline {
    margin-top : 0;
}

.radio-primary input[type="radio"] + label::after {
    background-color : #337ab7;
}

.radio-primary input[type="radio"]:checked + label::before {
    border-color : #337ab7;
}

.radio-primary input[type="radio"] + label:hover::before {
    border-color : #337ab7;
}

.radio-primary input[type="radio"]:checked + label::after {
    background-color : #337ab7;
}

.radio-danger input[type="radio"] + label::after {
    background-color : #d9534f;
}

.radio-danger input[type="radio"]:checked + label::before {
    border-color : #d9534f;
}

.radio-danger input[type="radio"]:checked + label::after {
    background-color : #d9534f;
}

.radio-info input[type="radio"] + label::after {
    background-color : #5bc0de;
}

.radio-info input[type="radio"]:checked + label::before {
    border-color : #5bc0de;
}

.radio-info input[type="radio"]:checked + label::after {
    background-color : #5bc0de;
}

.radio-warning input[type="radio"] + label::after {
    background-color : #f0ad4e;
}

.radio-warning input[type="radio"]:checked + label::before {
    border-color : #f0ad4e;
}

.radio-warning input[type="radio"]:checked + label::after {
    background-color : #f0ad4e;
}

.radio-success input[type="radio"] + label::after {
    background-color : #5cb85c;
}

.radio-success input[type="radio"]:checked + label::before {
    border-color : #5cb85c;
}

.radio-success input[type="radio"]:checked + label::after {
    background-color : #5cb85c;
}

input[type="checkbox"].styled:checked + label:after,
input[type="radio"].styled:checked + label:after {
    font-family : 'FontAwesome';
    content     : "\f00c";
}

input[type="checkbox"] .styled:checked + label::before,
input[type="radio"] .styled:checked + label::before {
    color : #fff;
}

input[type="checkbox"] .styled:checked + label::after,
input[type="radio"] .styled:checked + label::after {
    color : #fff;
}
