JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&display=swap" rel="stylesheet"> 

<div class="ingredients">
  <div class="ingredients__main"></div>

  <div class="ingredients__img ingredients__img--one"></div>
  <div class="ingredients__img ingredients__img--two"></div>
  <div class="ingredients__img ingredients__img--three"></div>
  
  <div class="ingredients__item ingredients__item--one">
    <div class="ingredients__number">01</div>
		<div class="ingredients__desc">Описание</div>
  </div>
  <div class="ingredients__item ingredients__item--two">
    <div class="ingredients__number">02</div>
		<div class="ingredients__desc">Описание</div>
  </div>
  <div class="ingredients__item ingredients__item--three">
    <div class="ingredients__number">03</div>
		<div class="ingredients__desc">Описание</div>
  </div>
  
  <div class="ingredients__item ingredients__item--four">
    <div class="ingredients__number">04</div>
		<div class="ingredients__desc">Описание</div>
  </div>
  <div class="ingredients__item ingredients__item--five">
    <div class="ingredients__number">05</div>
		<div class="ingredients__desc">Описание</div>
  </div>
  <div class="ingredients__item ingredients__item--six">
    <div class="ingredients__number">06</div>
		<div class="ingredients__desc">Описание</div>
  </div>
</div>

SCSS

body {
  background: #1f2227;
  padding-top: 100px;
}

.ingredients {
  position: relative;
  max-width: 1100px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;

  &__main {
    width: 200px;
    height: 400px;
    background: rgba(3, 3, 3, .4);
  }
  
  &__item {
    position: absolute;
    font-family: Open sans;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: right;

    &--four,
    &--five,
    &--six {
      text-align: left;
      .ingredients__number:before {
        left: unset;
        right: 110%;
      }
    }

    &--one {
      top: 20px;
      left: 0;

      .ingredients__number:before {
        width: 180px;
      }
    }

    &--two {
      top: 50%;
      left: 0;

      .ingredients__number:before {
        width: 240px;
      }
    }

    &--three {
      top: 80%;
      left: 10%;

      .ingredients__number:before {
        width: 80px;
      }
    }

    &--four {
      top: -25px;
      right: 0%;

      .ingredients__number:before {
        width: 100px;
      }
    }

    &--five {
      top: 30%;
      right: 0%;

      .ingredients__number:before {
        width: 220px;
      }
    }

    &--six {
      top: 60%;
      right: 10%;

      .ingredients__number:before {
        width: 140px;
      }
    }
  }

  &__number {
    position: relative;
    color: #88ff6f;
    margin-bottom: 10px;

    &:before {
      content: "";
      position: absolute;
      top: 50%;
      left: 110%;
      transform: translateY(-50%);
      width: 300px;
      border-top: 2px dashed #fff;
    }
  }

  &__desc {
    width: 220px;
    color: #fff;
    text-transform: uppercase;   
  }

  &__img {
    position: absolute;

    &--one {
      top: 60px;
      left: 33%;
      width: 50px;
      height: 50px;
      background: rgba(3, 3, 3, .4);
    }

    &--two {
      top: -60px;
      right: 30%;
      width: 100px;
      height: 100px;
      background: rgba(3, 3, 3, .4);
    }

...