Radial progress bar

Recently, I created a radial progress bar with help from Harry. I am sharing the code here. In future, if I get time, I will explain it.

HTML

<div class="radial-container">
    <div class="radial"></div>
    <div class="container">
        <div class="left"></div>
        <div class="right"></div>
        <div class="bottom-left"></div>
        <div class="bottom-right"></div>
    </div>
</div>

CSS

.container {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
}
.left, .right, .bottom-left, .bottom-right {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 50%;
    background-color: white;
}
.right {
    left: 50%;
}
.left {
    z-index: 2;
}
.right {
    z-index: 0;
}
.bottom-left, .bottom-right {
    width: 100%;
    left: 0;
    border-radius: 50%;
    z-index: -1;
    transform: rotate(0deg);
}
.bottom-left {
    background: linear-gradient(90deg, tomato 50%, transparent 50%);
    transition: transform 0s linear;
}
.bottom-right {
    background: linear-gradient(90deg, transparent 50%, tomato 50%);
    transition: transform 0s 0s linear, z-index 0s 0s linear;
}
.radial:hover + .container .animate.bottom-left {
    z-index: 1;
    transition: transform 1s linear;
}
.radial:hover + .container .animate.bottom-right {
    z-index: 3;
    transition: transform 1s 1s linear, z-index 0s 1s linear;
}
.radial {
    border-radius: 50%;
    border: 10px solid transparent;
    background-color: skyblue;
    cursor: pointer;
    top: 10px;
    left: 10px;
    right: 10px;
    bottom: 10px;
    position: absolute;
    z-index: 5;
}
.radial-container {
    width: 100px;
    height: 100px;
    position: relative;
}

jQuery

function progress(value, elem) {
    function transform(v) {
        return {
            'transform': 'rotate(' + v + 'deg)'
        }
    }
    if (!value || value > 100) value = 0;
    var enter = 'mouseenter',
        leave = 'mouseleave',
        $el = $(elem),
        $radial = $(elem).find('.radial'),
        $bLeft = $(elem).find('.bottom-left'),
        $bRight = $(elem).find('.bottom-right'),
        className = 'animate';
    $radial.off(enter).on(enter, function () {
        var deg = (360 * value / 100);
        if (deg <= 180) {
            $bLeft.css(transform(deg)).addClass(className);
            $bRight.removeClass(className);
        } else {
            $bLeft.css(transform(180)).addClass(className);
            $bRight.css(transform((deg - 180))).addClass(className);
        }
    }).off(leave).on(leave, function () {
        $bLeft.css(transform(0)).removeClass(className);
        $bRight.css(transform(0)).removeClass(className);
    });

}
// Mention the percentage here
// As an example, I mentioned the percentage as 40 
progress(40, '.radial-container');

Working Fiddle