JSFiddle - React, Tailwind, and code Playground

by RomanFF

HTML

<div class="wrap">
  <div class="box">
    <div class="line1">
      <div class="item">
      <h1></h1>
      <span></span>
      </div>
      <div class="item"><span></span></div>
      <div class="item"><span></span></div>
    </div>
    <div class="line2">
      <div class="item"><span></span></div>
      <div class="item"><span></span></div>
    </div>
  </div>
</div>

CSS

/* треугольник,пунктирная линия верхние блоки - .line1 span:after,.line1 span:before.*/
/*треугольник,пунктирная линия нижние блоки - line2 span:after,.line1 span:before.*/
/* начало и конец волны .box:before,.box:after*/
 /* центральные дуги волны.line1 .item:after,.line2 .item:after */
 
 
 
 *,
 :after,
 :before {
  box-sizing: border-box;
 }
.wrap{
  max-width:600px;
  border:1px solid black;
  margin: 0 auto;
  overflow:hidden;
}

.box{
  position:relative;
  display: flex;
  flex-direction: column;
  align-items:center;
  
}
/* отступ верхник блоков от нижних*/
.line1{
  margin-bottom: 106px;
}
.line1 .item:before {
    content: "";
    width: 16px;
    height: 16px;
    background-color: black;
    position: absolute;
    border-radius: 50%;
    top: 163px;
    left: 41px;
    z-index: 1;
}
.line2 .item:before {
    content: "";
    width: 16px;
    height: 16px;
    background-color: black;
    position: absolute;
    border-radius: 50%;
    top: -75px;
    left: 41px;
    z-index: 1;
}
.line1 .item:after {
  content: "";
  width: 130%;
  height: 130%;
  position: absolute;
  left: -15%;
  top: 47%;
  border-radius: 50%;
  border: 5px solid transparent;
  border-bottom: 5px solid #ccc;
}
  .line2 .item:after {
  content: "";
  width: 130%;
  height: 130%;
  position: absolute;
  left: -15%;
  top: -70%;
  border-radius: 50%;
  border: 5px solid transparent;
  border-top: 5px solid #ccc;
}
/* начало  и конец линии */
.box:before {
    content: "";
    height: 164px;
    width: 160px;
    position: absolute;
    left: -28px;
    top: 42.5%;
    border-radius: 50%;
    border: 5px solid transparent;
    border-top: 5px solid #ccc;
}
.box:after {
    content: "";
    height: 164px;
    width: 160px;
    position: absolute;
    left: 466px;
    top: 42.5%;
    border-radius: 50%;
    border: 5px solid transparent;
    border-top: 5px solid #ccc;
}
/* заканчиваются линии */
/* блоки */
.item {
  width: 100px;
  height: 100px;
  display:inline-block;
  border:...