JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<div class="tournament-grid">
<div class="tournament-grid-row"> <div class="stage">
										<div class="stage-title">1/4</div>
										<div class="stage-content">
											<div class="tournament-grid-match">
												<div class="info">
													<span>#004313</span>
													<span>30.06.18 16:00</span>
												</div>
												<div class="team team-winner" data-id="team1">
													<span class="name">E69 EXL</span>
													<span class="points">2</span>
												</div>
												<div class="team" data-id="team2">
													<span class="name">Syberian Fox</span>
													<span class="points">1</span>
												</div>
											</div>
											<div class="tournament-grid-match">
												<a href="#match-details-modal" class="details" data-show-modal><svg><use xlink:href='#info'></use></svg></a>
												<div class="info">
													<span>#004313</span>
													<span>30.06.18 16:00</span>
												</div>
												<div class="team" data-id="team3">
													<span class="name">YMD [Your Mom Day]</span>
													<span class="points">0</span>
												</div>
												<div class="team team-winner" data-id="team4">
													<span class="name">InYourFace</span>
													<span class="points">3</span>
												</div>
											</div>
											<div class="tournament-grid-match">
												<a href="#match-details-modal" class="details" data-show-modal><svg><use xlink:href='#info'></use></svg></a>
												<div class="info">
													<span>#004313</span>
													<span>30.06.18 16:00</span>
												</div>
												<div class="team team-winner" data-id="team5">
													<span class="name">mTw</span>
													<span class="points">3</span>
												</div>
												<div class="team" data-id="team6">
													<span class="name">Syberian Fox</span>
													<span...

SCSS

$color-alt: #dddddd;
$bg-light: #222222;
$color-accent: #ffffff;
$bg-extra-light: #333333;
$color-primary: #ffffff;
 
  .tournament-grid {
	padding: 28px 0 30px;
	background: #000000;
	overflow-x: auto;
    color: $color-primary;

	.tournament-grid-row {
		display: flex;
		/*padding-left: 24px;*/
		padding: 0 24px 0 57px;
	}

	.stage {
		position: relative;
		display: flex;
		flex-direction: column;
		/*margin-right: 50px;*/

		&:last-child {
			/*margin-right: 0;*/
			padding-right: 24px;
		}
	}

	.stage-title {
		flex: 0 0 auto;
		margin-bottom: 18px;
		font-weight: 700;
		text-transform: uppercase;

		.tip {
			font-weight: 400;
			color: #dddddd;
		}
	}

	.stage-content {
		flex: 1 0 auto;
		display: flex;
		flex-direction: column;
		justify-content: space-around;

		.stage:first-child {

		}
	}
}

.tournament-grid-match {
	position: relative;
	width: 156px;

	.stage:first-child & {
		margin-bottom: 29px;
	}

	.stage:first-child &:last-child {
		margin-bottom: 0;
	}

	.details {
		position: absolute;
		left: -24px;
		top: 44px;
		
		svg {
			display: block;
			width: 18px;
			height: 18px;
			fill: #444444;

			&:hover {
				fill: #555555;
			}
		}

	}

	.info {
		/*position: absolute;*/
		display: flex;
		justify-content: space-between;
		margin-bottom: 3px;
		font-size: 12px;
		color: $color-alt;
	}  
  
	.team {
		display: flex;
		justify-content: space-between;
		height: 28px;
		padding: 0 12px;
		line-height: 28px;
		vertical-align: middle;
		border-right: 4px solid $bg-light;
		background: $bg-light;
	}

	.team + .team {
		margin-top: 6px;
	}

	.name {
		display: block;
		width: 150px;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
		color: $color-accent;
	}

	.points {
		font-weight: 700;
		color: $color-primary;
	}

	.team-winner {
		background: $bg-extra-light;
		border-right-color: $color-accent;

		.name {
			font-weight: 700;
		}

		.points {
			color: $color-accent;
		}
	}
}

JavaScript

function makePath(x1, y1, x2, y2) {
  const weight = 0.5;
  const dx = (x2 - x1) * weight;
  const c1 = x1 + dx;
  const c2 = x2 - dx;
  return `<path d="M${x1},${y1} C${c1},${y1} ${c2},${y2} ${x2},${y2}" stroke="white" fill="transparent"/>`;
}

var lines, winner, winnerTwin, topPrev, topNext, stageTop;
  $('.lines').each(function() {
    var pathArr = [];
    lines = $(this);
    stageTop = lines.prev('.stage').offset().top;
    lines.prev('.stage').find('.team-winner').each(function() {
      winner = $(this);
      winnerTwin = lines.next('.stage').find('[data-id="' + winner.data('id') + '"]');
      if ( winnerTwin.length ) {
        topPrev = winner.offset().top - stageTop + 16;
        topNext = winnerTwin.offset().top - stageTop + 16;
        pathArr.push(makePath(0, topPrev, 50, topNext))
      }
    });
    lines.html('<svg width="50px" height="100%">' + pathArr.join('') + '</svg>');
  });