/* Links */
.link_bw {
	position: relative;
	cursor: pointer;
	white-space: nowrap;
	color: #333;
	text-decoration: none;
}

.dark .link_bw{
	color: white;
}

.link_bw::before,
.link_bw::after {
	position: absolute;
	width: 100%;
	height: 1px;
	background: currentColor;
	top: 100%;
	left: 0;
	pointer-events: none;
}

.link_bw::before {
	content: '';
	/* show by default */
}

/* Links 1 */
.link-1::before {
	height: 2px;
	transform-origin: 100% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s;
}

.link-1:hover::before {
	height: 2px;
	transform-origin: 0% 50%;
	transform: scale3d(1, 1, 1);
}

/* Link 2 */
.link-2::before {
	transform-origin: 100% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s cubic-bezier(0.7, 0, 0.2, 1);
}

.link-2:hover::before {
	transform-origin: 0% 50%;
	transform: scale3d(1, 1, 1);
	transition-timing-function: cubic-bezier(0.4, 1, 0.8, 1);
}

.link-2::after {
	content: '';
	top: calc(100% + 4px);
	transform-origin: 0% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s cubic-bezier(0.7, 0, 0.2, 1);
}

.link-2:hover::after {
	transform-origin: 100% 50%;
	transform: scale3d(1, 1, 1);
	transition-timing-function: cubic-bezier(0.4, 1, 0.8, 1);
}

/* Link 3 */
.link-3::before {
	transform-origin: 100% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}

.link-3:hover::before {
	transform-origin: 0% 50%;
	transform: scale3d(1, 2, 1);
	transition-timing-function: cubic-bezier(0.7, 0, 0.2, 1);
}

.link-3::after {
	content: '';
	top: calc(100% + 4px);
	transform-origin: 100% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.4s 0.1s cubic-bezier(0.2, 1, 0.8, 1);
}

.link-3:hover::after {
	transform-origin: 0% 50%;
	transform: scale3d(1, 1, 1);
	transition-timing-function: cubic-bezier(0.7, 0, 0.2, 1);
}

/* Link 5 */
.link-5 {
	padding: 0 10px;
	letter-spacing: 1px;
	text-indent: 1px;
}

.link-5::before {
	top: 50%;
	height: 2px;
	transform-origin: 100% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s cubic-bezier(0.4, 1, 0.8, 1);
}

.link-5:hover::before {
	transform-origin: 0% 50%;
	transform: scale3d(1, 1, 1);
}

.link-5 span {
	display: inline-block;
	transition: transform 0.3s cubic-bezier(0.4, 1, 0.8, 1);
}

.link-5:hover span {
	transform: scale3d(1.1, 1.1, 1.1);
	opacity: .6;
}

/* Link 6 */
.link-6 {
	font-size: 1.3rem;
}

.link-6::before {
	transform-origin: 50% 100%;
	transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
	clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}

.link-6:hover::before {
	transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
	clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}

.link-6 span {
	display: inline-block;
	transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}

.link-6:hover span {
	transform: translate3d(0, -2px, 0);
}

/* Link 7 */
.link-7 {
	font-weight: 300;
}

.link-7::before,
.link-7::after {
	opacity: 0;
	transform-origin: 50% 0%;
	transform: translate3d(0, 3px, 0);
	transition-property: transform, opacity;
	transition-duration: 0.3s;
	transition-timing-function: cubic-bezier(0.2, 1, 0.8, 1);
}

.link-7:hover::before,
.link-7:hover::after {
	opacity: 1;
	transform: translate3d(0, 0, 0);
	transition-timing-function: cubic-bezier(0.2, 0, 0.3, 1);
}

.link-7::after {
	content: '';
	top: calc(100% + 4px);
	width: 70%;
	left: 15%;
}

.link-7::before,
.link-7:hover::after {
	transition-delay: 0.1s;
}

.link-7:hover::before {
	transition-delay: 0s;
}

/* Link 8 */
.link-8 {
	font-weight: 600;
	font-size: 1.25rem;
}

.link-8::before {
	height: 10px;
	top: 100%;
	opacity: 0;
}

.link-8:hover::before {
	opacity: 1;
	animation: lineUp 0.3s ease forwards;
}

@keyframes lineUp {
	0% {
		transform-origin: 50% 100%;
		transform: scale3d(1, 0.045, 1);
	}

	50% {
		transform-origin: 50% 100%;
		transform: scale3d(1, 1, 1);
	}

	51% {
		transform-origin: 50% 0%;
		transform: scale3d(1, 1, 1);
	}

	100% {
		transform-origin: 50% 0%;
		transform: scale3d(1, 0.045, 1);
	}
}

.link-8::after {
	content: '';
	transition: opacity 0.3s;
	opacity: 0;
	transition-delay: 0s;
}

.link-8:hover::after {
	opacity: 1;
	transition-delay: 0.3s;
}

/* Link 9 */
.link-9 {
	font-weight: 700;
}

.link-9::before {
	transform-origin: 0% 50%;
	transform: scale3d(0, 1, 1);
	transition: transform 0.3s;
}

.link-9:hover::before {
	transform: scale3d(1, 1, 1);
}

.link-9::after {
	content: '';
	top: calc(100% + 4px);
	transition: transform 0.3s;
	transform-origin: 100% 50%;
}

.link-9:hover::after {
	transform: scale3d(0, 1, 1);
}

/* Link 10 */
.link-10 {
	font-size: 1.25rem;
	font-weight: bold;
}

.link-10:hover span {
	animation: glitchText 0.4s linear;
}

@keyframes glitchText {
	0% {
		opacity: 1;
		transform: translate3d(-10px, 0, 0) scale3d(-1, -1, 1);
		-webkit-clip-path: polygon(0 20%, 100% 20%, 100% 21%, 0 21%);
		clip-path: polygon(0 20%, 100% 20%, 100% 21%, 0 21%);
	}

	10% {
		-webkit-clip-path: polygon(0 33%, 100% 33%, 100% 33%, 0 33%);
		clip-path: polygon(0 33%, 100% 33%, 100% 33%, 0 33%);
	}

	20% {
		-webkit-clip-path: polygon(0 44%, 100% 44%, 100% 44%, 0 44%);
		clip-path: polygon(0 44%, 100% 44%, 100% 44%, 0 44%);
	}

	35% {
		-webkit-clip-path: polygon(0 50%, 100% 50%, 100% 20%, 0 20%);
		clip-path: polygon(0 50%, 100% 50%, 100% 20%, 0 20%);
	}

	50% {
		-webkit-clip-path: polygon(0 70%, 100% 70%, 100% 70%, 0 70%);
		clip-path: polygon(0 70%, 100% 70%, 100% 70%, 0 70%);
	}

	60% {
		-webkit-clip-path: polygon(0 80%, 100% 80%, 100% 80%, 0 80%);
		clip-path: polygon(0 80%, 100% 80%, 100% 80%, 0 80%);
	}

	70% {
		-webkit-clip-path: polygon(0 50%, 100% 50%, 100% 55%, 0 55%);
		clip-path: polygon(0 50%, 100% 50%, 100% 55%, 0 55%);
	}

	80% {
		-webkit-clip-path: polygon(0 70%, 100% 70%, 100% 80%, 0 80%);
		clip-path: polygon(0 70%, 100% 70%, 100% 80%, 0 80%);
	}

	90% {
		transform: translate3d(-10px, 0, 0) scale3d(-1, -1, 1);
	}

	100% {
		opacity: 1;
		transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
		-webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
		clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
	}
}

.link-10::before {
	height: 2px;
	opacity: 0;
}

.link-10:hover::before {
	opacity: 1;
	animation: glitchLine 0.4s steps(2, start) forwards;
}

@keyframes glitchLine {
	0% {
		transform: scale3d(1, 1, 1);
	}

	10% {
		transform: translate3d(10px, 0, 0);
	}

	20% {
		transform: translate3d(0, 4px, 0);
	}

	30% {
		transform: scale3d(0.1, 1.4, 1) translate3d(0, -25px, 0);
		transform-origin: 100% 0%;
	}

	40% {
		transform: scale3d(1, 0.3, 1) translate3d(0, 25px, 0);
	}

	50% {
		transform: scale3d(0.5, 0.3, 1) translate3d(-100px, -80px, 0);
	}

	60% {
		transform: scale3d(1, 1.25, 1) translate3d(10px, -5px, 0);
	}

	70% {
		transform: scale3d(0.5, 0.5, 1) translate3d(0, 20px, 0);
	}

	80% {
		transform: translate3d(-30, 10px, 0) scale3d(1, 0.4, 1);
		transform-origin: 100% 0%;
	}

	90% {
		transform: scale3d(1, 0.5, 1) translate3d(0, -15px, 0);
		;
		transform-origin: 0% 50%;
	}

	100% {
		opacity: 1;
	}
}

/* Link 11 */
.link-11 {
	font-size: 0.925rem;
	letter-spacing: 1px;
}

.link-11::before {
	height: 100%;
	top: 0;
	opacity: 0;
}

.link-11:hover::before {
	opacity: 1;
	animation: coverUp 0.3s ease forwards;
}

@keyframes coverUp {
	0% {
		transform-origin: 50% 100%;
		transform: scale3d(1, 0.045, 1);
	}

	50% {
		transform-origin: 50% 100%;
		transform: scale3d(1, 1, 1);
	}

	51% {
		transform-origin: 50% 0%;
		transform: scale3d(1, 1, 1);
	}

	100% {
		transform-origin: 50% 0%;
		transform: scale3d(1, 0.045, 1);
	}
}

.link-11::after {
	content: '';
	transition: opacity 0.3s;
}

.link-11:hover::after {
	opacity: 0;
}

/* Link 15 */
.link-15 {
	font-weight: bold;
}

.link-15::before {
	height: 7px;
	border-radius: 20px;
	transform: scale3d(1, 1, 1);
	transition: transform 0.2s, opacity 0.2s;
	transition-timing-function: cubic-bezier(0.2, 0.57, 0.67, 1.53);
}

.link-15:hover::before {
	transition-timing-function: cubic-bezier(0.8, 0, 0.1, 1);
	transition-duration: 0.4s;
	opacity: 1;
	transform: scale3d(1.2, 0.1, 1);
}

.link-15 span {
	transform: translate3d(0, -4px, 0);
	display: inline-block;
	transition: transform 0.2s 0.05s cubic-bezier(0.2, 0.57, 0.67, 1.53);
}

.link-15:hover span {
	transform: translate3d(0, 0, 0);
	transition-timing-function: cubic-bezier(0.8, 0, 0.1, 1);
	transition-duration: 0.4s;
	transition-delay: 0s;
}