JSFiddle - React, Tailwind, and code Playground
HTML
<section class="stages">
<div class="container">
<div class="stages__block">
<div class="stages__holder">
<div class="stages__item">
<div class="stages__logo">
<img src="img/icons/handshake.svg" alt="">
</div>
<div class="stages__inner">
<h4 class="stages__subtitle">lorem</h4>
<div class="stages__text">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima neque aspernatur eligendi perferendis, iusto veritatis nihil ea, vero totam possimus est tenetur accusantium fuga sed reprehenderit ducimus tempora quae harum.</p>
</div>
</div>
<span class="stages__elem"></span>
</div>
<div class="stages__item">
<div class="stages__logo">
<img src="img/icons/handshake.svg" alt="">
</div>
<div class="stages__inner">
<h4 class="stages__subtitle">lorem 2</h4>
<div class="stages__text">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero iure ipsam, quibusdam velit dolore dignissimos ad cupiditate neque voluptates accusamus quia necessitatibus, voluptatem labore provident hic sequi! Quod quis, autem.</p>
</div>
</div>
<span class="stages__elem"></span>
</div>
<!--end stages__item-->
<div class="stages__item">
<div class="stages__logo">
<img src="img/icons/handshake.svg" alt="">
</div>
<div class="stages__inner">
<h4 class="stages__subtitle">Lorem 3</h4>
<div class="stages__text">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error itaque ut voluptas deleniti earum pariatur eligendi veniam inventore fuga et repellat nobis, voluptate dignissimos recusandae aspernatur vitae eos enim aut.</p>
...
CSS
.stages__block {
padding: 0 65px;
}
.stages__title {
font-size: 72px;
line-height: 1.1;
font-weight: bold;
}
.stages__title:after {
content: '.';
color: #e74011;
}
.stages__item {
position: relative;
display: flex;
align-items: center;
padding: 0 90px;
margin-top: -1px;
}
.stages__item:before {
position: absolute;
z-index: -1;
content: ' ';
left: 60px;
//bottom: -0.5px;
bottom: 0;
width: calc(100% - 120px);
height: 1px;
background-color: #ccc;
}
.stages__item:after {
position: absolute;
z-index: -1;
content: ' ';
//top: -0.5px;
top: 0;
right: 0px;
width: 60px;
//height: calc(100% + 1px);
height: 100%;
border-radius: 0 80px 80px 0;
border-bottom: 1px solid #ccc;
border-right: 1px solid #ccc;
}
.stages__item:nth-child(even):after {
border-top: 1px solid #ccc;
}
.stages__item:nth-child(even) .stages__elem {
right: -16px;
}
.stages__item:nth-child(odd) .stages__elem {
left: -16px;
}
.stages__item:nth-child(odd):after {
//top: -0.5px;
top: 0;
left: 0px;
border-right: none;
border-top: 1px solid #ccc;
border-left: 1px solid #ccc;
border-radius: 80px 0 0 80px;
}
.stages__item:first-child:after,
.stages__item:last-child:after {
height: calc(50% + 0.5px);
}
.stages__item:first-child:after {
top: initial;
bottom: -0.5px;
border-top: 0px;
border-radius: 0 0px 0px 80px;
}
.stages__item:last-child:nth-child(odd):before {
background-color: #fff;
}
.stages__item:last-child:nth-child(odd):after {
border-bottom: 0px;
border-radius: 80px 0px 0px 0px;
}
.stages__item:last-child:nth-child(even):after {
border-bottom: 0px;
border-radius: 0 80px 0px 0;
}
.stages__elem {
display: block;
position: absolute;
width: 32px;
height: 32px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 50%;
}
.stages__elem:before {
position: absolute;
content: ' ';
top: calc(50% - 8px);
left: calc(50% - 8px);
width: 16px;
height: 16px;
background: #f32500;
border-radius: 50%;
}
.stages__logo...