.tsh {
	--tsh-gap: 40px;
	--tsh-fade: 60px;
	--tsh-distance: 0px;
	--tsh-duration: 20s;
	position: relative;
	overflow: hidden;
	width: 100%;
}

.tsh__track {
	display: flex;
	width: max-content;
	will-change: transform;
}

.tsh.is-ready .tsh__track {
	animation: tsh-scroll var(--tsh-duration) linear infinite;
}

.tsh[data-direction="right"] .tsh__track {
	animation-direction: reverse;
}

.tsh[data-pause="yes"]:hover .tsh__track,
.tsh.is-offscreen .tsh__track {
	animation-play-state: paused;
}

.tsh__group {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	gap: var(--tsh-gap);
	padding-right: var(--tsh-gap);
}

.tsh__item,
.tsh__sep {
	white-space: nowrap;
	flex-shrink: 0;
	line-height: 1.2;
}

a.tsh__item {
	text-decoration: none;
	color: inherit;
	transition: color .2s ease;
}

.tsh-fade-yes .tsh {
	-webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--tsh-fade), #000 calc(100% - var(--tsh-fade)), transparent 100%);
	mask-image: linear-gradient(to right, transparent 0, #000 var(--tsh-fade), #000 calc(100% - var(--tsh-fade)), transparent 100%);
}

@keyframes tsh-scroll {
	from { transform: translate3d(0, 0, 0); }
	to   { transform: translate3d(calc(var(--tsh-distance) * -1), 0, 0); }
}

@media (prefers-reduced-motion: reduce) {
	.tsh.is-ready .tsh__track {
		animation-play-state: paused;
	}
}
