.form-horizontal .checkbox {
    padding-top: 15px;
}
.checkbox {
    transform: rotate(0deg);
    label {
        cursor: pointer;
        padding-left: 45px;
        position: relative;
        span {
            display: block;
            position: absolute;
            left: 0px;
            transition-duration: 0.2s;
        }
        .check:after {
            display: block;
            position: absolute;
            content: "";
            background-color: $lightbg-text;
            left: -5px;
            top: -15px;
            height: 50px;
            width: 50px;
            border-radius: 100%;
            z-index: 1;
            opacity: 0;
            margin: 0;
        }
        .check:before {
            display: block;
            content: "";
            border: 2px solid $lightbg-text;
            height: 20px;
            width: 20px;
            transition-delay: 0.2s;
        }
    }

    // Variations
    //.variations(#{" .check"}, color, $success);

    // Hide native checkbox
    input[type=checkbox] { opacity: 0; }

    input[type=checkbox] ~ .check:before {
        position: absolute;
        top: 2px;
        left: 11px;
        width: 18px;
        height: 18px;
        border: solid 2px;
        border-color: #5a5a5a;
        animation: uncheck 300ms ease-out forwards;
    }

    input[type=checkbox]:focus ~ .check:after {
        opacity: 0.2;
    }

    input[type=checkbox]:checked ~ .check:before {
        animation: check 300ms ease-out forwards;
    }

    // Ripple effect on click
    input[type=checkbox]:not(:checked) ~ .check:after {
        animation: rippleOff 500ms linear forwards;
    }
    input[type=checkbox]:checked ~ .check:after {
        animation: rippleOn 500ms linear forwards;
    }

    // Make animate quickly when not hover
    &:not(:hover) input[type=checkbox] ~ .check {
        &:before, &:after {
            animation-duration: 1ms;
        }
    }

    // Style for disabled inputs
    input[type=checkbox][disabled]:not(:checked) ~ .check:before {
        opacity: 0.5;
    }
    input[type=checkbox][disabled] ~ .check:after {
        background-color: $lightbg-text;
        transform: rotate(-45deg);
    }

    //.variations(#{" input[type=checkbox]:checked ~ .check:after"}, background-color, $success);
}

@keyframes uncheck {
    0% {
        top: -3px;
        left: 17px;
        width: 10px;
        height: 21px;
        border-color: #0f9d58;
        border-left-color: transparent;
        border-top-color: transparent;
        transform: rotate(45deg);
    }
    50% {
        top: 14px;
        left: 17px;
        width: 4px;
        height: 4px;
        transform: rotate(45deg);
        border-color: #0f9d58;
        border-left-color: transparent;
        border-top-color: transparent;
    }
    51% {
        border-color: #5a5a5a;
        border-left-color: #5a5a5a;
        border-top-color: #5a5a5a;
    }
    100% {
        top: 1px;
        left: 12px;
        width: 18px;
        height: 18px;
        transform: rotate(0deg);
        border-color: #5a5a5a;
        border-left-color: #5a5a5a;
        border-top-color: #5a5a5a;
    }
}

@keyframes check {
    100% {
        top: -3px;
        left: 17px;
        width: 10px;
        height: 21px;
        transform: rotate(45deg);
        border-color: #0f9d58;
        border-left-color: transparent;
        border-top-color: transparent;
    }
    51% {
        border-left: transparent;
        border-top-color: transparent;
    }
    50% {
        top: 14px;
        left: 17px;
        width: 4px;
        height: 4px;
        transform: rotate(45deg);
        border-color: #5a5a5a;
        border-left-color: #5a5a5a;
        border-top-color: #5a5a5a;
    }
    0% {
        top: 1px;
        left: 12px;
        width: 18px;
        height: 18px;
        transform: rotate(0deg);
        border-color: #5a5a5a;
        border-left-color: #5a5a5a;
        border-top-color: #5a5a5a;
    }
}

@keyframes rippleOn {
    0% {
        opacity: 0;
    }
    50% {
        opacity: 0.2;
    }
    100% {
        opacity: 0;
    }
}

@keyframes rippleOff {
    0% {
        opacity: 0;
    }
    50% {
        opacity: 0.2;
    }
    100% {
        opacity: 0;
    }
}
