JSFiddle - React, Tailwind, and code Playground

HTML

<div class="visible">
  <div class="circle">
  </div>
  <ol>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ol>
</div>

CSS

.visible {
  width: 80%;
  height: 300px;
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}

.circle {
  position: absolute;
  top: 150px;
  left: -200px;
  right: -200px;
  bottom: -450px;
  border: 2px solid #000;
  border-radius: 100%;
}

  .visible ol {
    display: flex;
    justify-content: space-around;
    width: 100%;
    margin: 0;
    padding: 0;
    position: relative;
    list-style: none;
    counter-reset: cnt;
  }
  
    .visible ol li {
      margin: 140px 0 0 0;
      padding: 0;
      width: 20px;
      height: 20px;
      line-height: 20px;
      text-align: center;
      background: #eee;
      border-radius: 100%;
    }
  
    .visible ol li:nth-child(1),
    .visible ol li:nth-child(5){
      transform: translateY(33px);
    }
  
    .visible ol li:nth-child(2),
    .visible ol li:nth-child(4){
      transform: translateY(10px);
    }
    
    .visible ol li:before {
      content: counter(cnt); 
      counter-increment: cnt;
    }