You could put the progress bar as a pseudo element to the form itself or of course as a separate element, using conic and radial gradients to draw the circle.
For example when you want to show when at a particular step of a totalSteps this could be drawn with:
background-image: radial-gradient(circle, white 0 50%, transparent 50% 100%), conic-gradient(gold 0 calc(360deg * var(--n) / var(--totalSteps)), transparent calc(360deg * var(--n) / var(--totalSteps)) 100%);
That way it will work for any number of steps.
Simple example:
form.progress::after {
/* these variables would be set by JS - they are here just for demo */
--totalSteps: 4;
--step: 3;
--stepString: '3';
content: var(--stepString);
width: 10vmin;
height: 10vmin;
background: white;
border: 1px solid gold;
border-radius: 50%;
background-image: radial-gradient(circle, white 0 50%, transparent 50% 100%), conic-gradient(gold 0 calc(360deg * var(--step) / var(--totalSteps)), transparent calc(360deg * var(--step) / var(--totalSteps)) 360deg);
z-index: 1;
display: flex;
justify-content: center;
align-items: center;
}
<form class="progress">
</form>