Простое radial-gradient
сделает это:
.box {
height:100px;
background:radial-gradient(circle at left,
green 20%,transparent 20%,transparent calc(20% + 5px),red calc(20% + 5px))
}
<div class="box">
</div>
Чтобы получить идеальный полукруг, вы можете рассмотреть несколько фонов следующим образом:
.box {
height:100px;
background:
radial-gradient(circle at left,green 50%,transparent 50%, transparent calc(50% + 5px),red calc(50% + 5px)) 20px 0/88px 100px,
linear-gradient(green,green)left/20px 100%,
linear-gradient(red,red)right/calc(100% - 20px - 85px) 100%;
background-repeat:no-repeat;
}
<div class="box">
</div>