/**
 * Creatif Work Essentials — ZZ Underline Link
 * © 2026 Creatif Work. All rights reserved. Confidential & proprietary.
 *
 * Structure only. Colours, sizes and speeds come from Elementor controls.
 */

.zz-ulink-wrap {
	display: flex;
	justify-content: flex-start;
}

.zz-ulink {
	display: inline-flex;
	position: relative;
	align-items: center;
	color: inherit;
	text-decoration: none;
	transition-property: color;
	transition-timing-function: ease;
	transition-duration: 400ms;
}

.zz-ulink::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	display: block;
	width: 0;
	height: 1px;
	background-color: currentColor;
	transition-property: width;
	transition-timing-function: ease;
	transition-duration: 400ms;
}

/* Underline sweeps in on hover. */
.zz-ulink--show:hover::after,
.zz-ulink--show:focus-visible::after {
	width: 100%;
}

/* Underline is present, and retracts on hover. */
.zz-ulink--hide::after {
	width: 100%;
}

.zz-ulink--hide:hover::after,
.zz-ulink--hide:focus-visible::after {
	width: 0;
}

.zz-ulink--none::after {
	display: none;
}

.zz-ulink__text {
	padding: 10px 0;
}

/* An empty spacer element rather than a margin, so the widening gap can be
   animated independently of the icon and the text. */
.zz-ulink__gap {
	display: block;
	flex: 0 0 auto;
	width: 10px;
	transition-property: width;
	transition-timing-function: ease;
	transition-duration: 400ms;
}

.zz-ulink__icon {
	display: inline-flex;
	align-items: center;
	line-height: 1;
	transition-property: transform;
	transition-timing-function: ease;
	transition-duration: 400ms;
}

.zz-ulink__icon i,
.zz-ulink__icon svg {
	display: block;
}

.zz-ulink__icon svg {
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.zz-ulink:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

@media (prefers-reduced-motion: reduce) {
	.zz-ulink,
	.zz-ulink::after,
	.zz-ulink__gap,
	.zz-ulink__icon {
		transition: none;
	}
}
