.progress-circle {
   font-size: 20px;
   margin: 20px;
   position: relative; /* so that children can be absolutely positioned */
   padding: 0;
   width: 5em;
   height: 5em;
   background-color: #F2E9E1; 
   border-radius: 50%;
   line-height: 5em;
}

.progress-circle:after{
    border: none;
    position: absolute;
    top: 0.35em;
    left: 0.35em;
    text-align: center;
    display: block;
    border-radius: 50%;
    width: 4.3em;
    height: 4.3em;
    background-color: white;
    content: " ";
}
/* Text inside the control */
.progress-circle span {
    position: absolute;
    line-height: 5em;
    width: 5em;
    text-align: center;
    display: block;
    color: #53777A;
    z-index: 2;
}
.left-half-clipper { 
   /* a round circle */
   border-radius: 50%;
   width: 5em;
   height: 5em;
   position: absolute; /* needed for clipping */
   clip: rect(0, 5em, 5em, 2.5em); /* clips the whole left half*/ 
}
/* when p>50, don't clip left half*/
.progress-circle.over50 .left-half-clipper {
   clip: rect(auto,auto,auto,auto);
}
.value-bar {
   /*This is an overlayed square, that is made round with the border radius,
   then it is cut to display only the left half, then rotated clockwise
   to escape the outer clipping path.*/ 
   position: absolute; /*needed for clipping*/
   clip: rect(0, 2.5em, 5em, 0);
   width: 5em;
   height: 5em;
   border-radius: 50%;
   border: 0.45em solid #53777A; /*The border is 0.35 but making it larger removes visual artifacts */
   /*background-color: #4D642D;*/ /* for debug */
   box-sizing: border-box;
  
}
/* Progress bar filling the whole right half for values above 50% */
.progress-circle.over50 .first50-bar {
   /*Progress bar for the first 50%, filling the whole right half*/
   position: absolute; /*needed for clipping*/
   clip: rect(0, 5em, 5em, 2.5em);
   background-color: #53777A;
   border-radius: 50%;
   width: 5em;
   height: 5em;
}
.progress-circle:not(.over50) .first50-bar{ display: none; }


/* Progress bar rotation position */
.progress-circle[data-active='0'] .value-bar { display: none; }
.progress-circle[data-active='1'] .value-bar { transform: rotate(4deg); }
.progress-circle[data-active='2'] .value-bar { transform: rotate(7deg); }
.progress-circle[data-active='3'] .value-bar { transform: rotate(11deg); }
.progress-circle[data-active='4'] .value-bar { transform: rotate(14deg); }
.progress-circle[data-active='5'] .value-bar { transform: rotate(18deg); }
.progress-circle[data-active='6'] .value-bar { transform: rotate(22deg); }
.progress-circle[data-active='7'] .value-bar { transform: rotate(25deg); }
.progress-circle[data-active='8'] .value-bar { transform: rotate(29deg); }
.progress-circle[data-active='9'] .value-bar { transform: rotate(32deg); }
.progress-circle[data-active='10'] .value-bar { transform: rotate(36deg); }
.progress-circle[data-active='11'] .value-bar { transform: rotate(40deg); }
.progress-circle[data-active='12'] .value-bar { transform: rotate(43deg); }
.progress-circle[data-active='13'] .value-bar { transform: rotate(47deg); }
.progress-circle[data-active='14'] .value-bar { transform: rotate(50deg); }
.progress-circle[data-active='15'] .value-bar { transform: rotate(54deg); }
.progress-circle[data-active='16'] .value-bar { transform: rotate(58deg); }
.progress-circle[data-active='17'] .value-bar { transform: rotate(61deg); }
.progress-circle[data-active='18'] .value-bar { transform: rotate(65deg); }
.progress-circle[data-active='19'] .value-bar { transform: rotate(68deg); }
.progress-circle[data-active='20'] .value-bar { transform: rotate(72deg); }
.progress-circle[data-active='21'] .value-bar { transform: rotate(76deg); }
.progress-circle[data-active='22'] .value-bar { transform: rotate(79deg); }
.progress-circle[data-active='23'] .value-bar { transform: rotate(83deg); }
.progress-circle[data-active='24'] .value-bar { transform: rotate(86deg); }
.progress-circle[data-active='25'] .value-bar { transform: rotate(90deg); }
.progress-circle[data-active='26'] .value-bar { transform: rotate(94deg); }
.progress-circle[data-active='27'] .value-bar { transform: rotate(97deg); }
.progress-circle[data-active='28'] .value-bar { transform: rotate(101deg); }
.progress-circle[data-active='29'] .value-bar { transform: rotate(104deg); }
.progress-circle[data-active='30'] .value-bar { transform: rotate(108deg); }
.progress-circle[data-active='31'] .value-bar { transform: rotate(112deg); }
.progress-circle[data-active='32'] .value-bar { transform: rotate(115deg); }
.progress-circle[data-active='33'] .value-bar { transform: rotate(119deg); }
.progress-circle[data-active='34'] .value-bar { transform: rotate(122deg); }
.progress-circle[data-active='35'] .value-bar { transform: rotate(126deg); }
.progress-circle[data-active='36'] .value-bar { transform: rotate(130deg); }
.progress-circle[data-active='37'] .value-bar { transform: rotate(133deg); }
.progress-circle[data-active='38'] .value-bar { transform: rotate(137deg); }
.progress-circle[data-active='39'] .value-bar { transform: rotate(140deg); }
.progress-circle[data-active='40'] .value-bar { transform: rotate(144deg); }
.progress-circle[data-active='41'] .value-bar { transform: rotate(148deg); }
.progress-circle[data-active='42'] .value-bar { transform: rotate(151deg); }
.progress-circle[data-active='43'] .value-bar { transform: rotate(155deg); }
.progress-circle[data-active='44'] .value-bar { transform: rotate(158deg); }
.progress-circle[data-active='45'] .value-bar { transform: rotate(162deg); }
.progress-circle[data-active='46'] .value-bar { transform: rotate(166deg); }
.progress-circle[data-active='47'] .value-bar { transform: rotate(169deg); }
.progress-circle[data-active='48'] .value-bar { transform: rotate(173deg); }
.progress-circle[data-active='49'] .value-bar { transform: rotate(176deg); }
.progress-circle[data-active='50'] .value-bar { transform: rotate(180deg); }
.progress-circle[data-active='51'] .value-bar { transform: rotate(184deg); }
.progress-circle[data-active='52'] .value-bar { transform: rotate(187deg); }
.progress-circle[data-active='53'] .value-bar { transform: rotate(191deg); }
.progress-circle[data-active='54'] .value-bar { transform: rotate(194deg); }
.progress-circle[data-active='55'] .value-bar { transform: rotate(198deg); }
.progress-circle[data-active='56'] .value-bar { transform: rotate(202deg); }
.progress-circle[data-active='57'] .value-bar { transform: rotate(205deg); }
.progress-circle[data-active='58'] .value-bar { transform: rotate(209deg); }
.progress-circle[data-active='59'] .value-bar { transform: rotate(212deg); }
.progress-circle[data-active='60'] .value-bar { transform: rotate(216deg); }
.progress-circle[data-active='61'] .value-bar { transform: rotate(220deg); }
.progress-circle[data-active='62'] .value-bar { transform: rotate(223deg); }
.progress-circle[data-active='63'] .value-bar { transform: rotate(227deg); }
.progress-circle[data-active='64'] .value-bar { transform: rotate(230deg); }
.progress-circle[data-active='65'] .value-bar { transform: rotate(234deg); }
.progress-circle[data-active='66'] .value-bar { transform: rotate(238deg); }
.progress-circle[data-active='67'] .value-bar { transform: rotate(241deg); }
.progress-circle[data-active='68'] .value-bar { transform: rotate(245deg); }
.progress-circle[data-active='69'] .value-bar { transform: rotate(248deg); }
.progress-circle[data-active='70'] .value-bar { transform: rotate(252deg); }
.progress-circle[data-active='71'] .value-bar { transform: rotate(256deg); }
.progress-circle[data-active='72'] .value-bar { transform: rotate(259deg); }
.progress-circle[data-active='73'] .value-bar { transform: rotate(263deg); }
.progress-circle[data-active='74'] .value-bar { transform: rotate(266deg); }
.progress-circle[data-active='75'] .value-bar { transform: rotate(270deg); }
.progress-circle[data-active='76'] .value-bar { transform: rotate(274deg); }
.progress-circle[data-active='77'] .value-bar { transform: rotate(277deg); }
.progress-circle[data-active='78'] .value-bar { transform: rotate(281deg); }
.progress-circle[data-active='79'] .value-bar { transform: rotate(284deg); }
.progress-circle[data-active='80'] .value-bar { transform: rotate(288deg); }
.progress-circle[data-active='81'] .value-bar { transform: rotate(292deg); }
.progress-circle[data-active='82'] .value-bar { transform: rotate(295deg); }
.progress-circle[data-active='83'] .value-bar { transform: rotate(299deg); }
.progress-circle[data-active='84'] .value-bar { transform: rotate(302deg); }
.progress-circle[data-active='85'] .value-bar { transform: rotate(306deg); }
.progress-circle[data-active='86'] .value-bar { transform: rotate(310deg); }
.progress-circle[data-active='87'] .value-bar { transform: rotate(313deg); }
.progress-circle[data-active='88'] .value-bar { transform: rotate(317deg); }
.progress-circle[data-active='89'] .value-bar { transform: rotate(320deg); }
.progress-circle[data-active='90'] .value-bar { transform: rotate(324deg); }
.progress-circle[data-active='91'] .value-bar { transform: rotate(328deg); }
.progress-circle[data-active='92'] .value-bar { transform: rotate(331deg); }
.progress-circle[data-active='93'] .value-bar { transform: rotate(335deg); }
.progress-circle[data-active='94'] .value-bar { transform: rotate(338deg); }
.progress-circle[data-active='95'] .value-bar { transform: rotate(342deg); }
.progress-circle[data-active='96'] .value-bar { transform: rotate(346deg); }
.progress-circle[data-active='97'] .value-bar { transform: rotate(349deg); }
.progress-circle[data-active='98'] .value-bar { transform: rotate(353deg); }
.progress-circle[data-active='99'] .value-bar { transform: rotate(356deg); }
.progress-circle[data-active='100'] .value-bar { transform: rotate(360deg); }