/* Bright Addons Pro: Process Steps */

/* Elementor Container: fill the width the container gives widgets. */
/* Same fix Elementor uses for its own Video and Accordion widgets: without it the */
/* widget shrinks to its content in Row or centred containers and can collapse to 0px. */
.e-con > .elementor-widget-bapro-process-steps,
.e-con-inner > .elementor-widget-bapro-process-steps {
	width: var(--container-widget-width, 100%);
	--flex-grow: var(--container-widget-flex-grow);
}

.bapro-ps {
	--bapro-ps-accent: #5b3df5;
	--bapro-ps-marker: 64px;
	--bapro-ps-gap: 32px;
	--bapro-ps-marker-gap: 20px;
	--bapro-ps-line: #cfd2da;
	--bapro-ps-line-w: 2px;
	--bapro-ps-line-gap: 12px;
	--bapro-ps-line-style: dashed;
	display: flex;
	gap: var(--bapro-ps-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}

.bapro-ps--line-solid,
.bapro-ps--line-arrow {
	--bapro-ps-line-style: solid;
}

.bapro-ps--line-dotted {
	--bapro-ps-line-style: dotted;
}

.bapro-ps__step {
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.bapro-ps__head {
	position: relative;
	display: flex;
	align-items: center;
}

.bapro-ps__marker {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: var(--bapro-ps-marker);
	height: var(--bapro-ps-marker);
	overflow: hidden;
	border-radius: 50%;
	background: var(--bapro-ps-accent);
	color: #fff;
	font-size: 22px;
	line-height: 1;
	transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease, scale 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.45s ease;
}

.bapro-ps__marker svg {
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.bapro-ps__marker img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bapro-ps__marker-text {
	font-size: 20px;
	font-weight: 800;
	white-space: nowrap;
}

.bapro-ps__prefix {
	font-size: 0.6em;
	font-weight: 600;
	text-transform: uppercase;
}

.bapro-ps__connector {
	position: absolute;
	pointer-events: none;
	transform-origin: left center;
	transition: transform 0.6s ease;
}

.bapro-ps__step:last-child .bapro-ps__connector {
	display: none;
}

.bapro-ps__body {
	margin-top: var(--bapro-ps-marker-gap);
	transition: background-color 0.3s, border-color 0.3s, box-shadow 0.3s, opacity 0.5s ease, translate 0.5s ease;
}

.bapro-ps__title {
	margin: 0 0 8px;
	font-size: 19px;
	line-height: 1.3;
	transition: color 0.3s;
}

.bapro-ps__title a {
	color: inherit;
	text-decoration: none;
}

.bapro-ps__desc {
	color: #5a6070;
	font-size: 15px;
	line-height: 1.6;
}

/* ---------- Horizontal ---------- */
.bapro-ps--horizontal .bapro-ps__connector {
	top: 50%;
	height: 0;
	width: calc(100% + var(--bapro-ps-gap) - var(--bapro-ps-marker) - 2 * var(--bapro-ps-line-gap));
	margin-top: calc(var(--bapro-ps-line-w) / -2);
	border-top: var(--bapro-ps-line-w) var(--bapro-ps-line-style) var(--bapro-ps-line);
}

.bapro-ps--horizontal.bapro-ps--align-center .bapro-ps__head {
	justify-content: center;
}

.bapro-ps--horizontal.bapro-ps--align-center .bapro-ps__body {
	text-align: center;
}

.bapro-ps--horizontal.bapro-ps--align-center .bapro-ps__connector {
	left: calc(50% + var(--bapro-ps-marker) / 2 + var(--bapro-ps-line-gap));
}

.bapro-ps--horizontal.bapro-ps--align-start .bapro-ps__connector {
	left: calc(var(--bapro-ps-marker) + var(--bapro-ps-line-gap));
}

.bapro-ps--line-arrow .bapro-ps__connector::after {
	content: "";
	position: absolute;
	top: calc(-1 * var(--bapro-ps-line-w) / 2 - 5px);
	right: -1px;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-bottom: 5px solid transparent;
	border-left: 9px solid var(--bapro-ps-line);
}

/* ---------- Vertical ---------- */
.bapro-ps--vertical {
	flex-direction: column;
}

.bapro-ps--vertical .bapro-ps__step {
	display: grid;
	grid-template-columns: var(--bapro-ps-marker) 1fr;
	column-gap: var(--bapro-ps-marker-gap);
}

.bapro-ps--vertical .bapro-ps__head {
	align-items: flex-start;
	align-self: stretch;
}

.bapro-ps--vertical .bapro-ps__body {
	margin-top: 0;
	text-align: left;
}

.bapro-ps--vertical .bapro-ps__connector {
	top: calc(var(--bapro-ps-marker) + var(--bapro-ps-line-gap));
	left: calc(var(--bapro-ps-marker) / 2 - var(--bapro-ps-line-w) / 2);
	width: 0;
	height: calc(100% + var(--bapro-ps-gap) - var(--bapro-ps-marker) - 2 * var(--bapro-ps-line-gap));
	margin-top: 0;
	border-top: 0;
	border-left: var(--bapro-ps-line-w) var(--bapro-ps-line-style) var(--bapro-ps-line);
	transform-origin: center top;
}

.bapro-ps--vertical.bapro-ps--line-arrow .bapro-ps__connector::after {
	top: auto;
	right: auto;
	bottom: -1px;
	left: calc(-1 * var(--bapro-ps-line-w) / 2 - 5px);
	border-top: 9px solid var(--bapro-ps-line);
	border-right: 5px solid transparent;
	border-bottom: 0;
	border-left: 5px solid transparent;
}

/* Horizontal layouts switch to vertical on smaller screens. */
@media (max-width: 1024px) {
	.bapro-ps--stack-tablet {
		flex-direction: column;
	}

	.bapro-ps--stack-tablet .bapro-ps__step {
		display: grid;
		grid-template-columns: var(--bapro-ps-marker) 1fr;
		column-gap: var(--bapro-ps-marker-gap);
	}

	.bapro-ps--stack-tablet .bapro-ps__head,
	.bapro-ps--stack-tablet.bapro-ps--align-center .bapro-ps__head {
		align-items: flex-start;
		align-self: stretch;
		justify-content: flex-start;
	}

	.bapro-ps--stack-tablet .bapro-ps__body,
	.bapro-ps--stack-tablet.bapro-ps--align-center .bapro-ps__body {
		margin-top: 0;
		text-align: left;
	}

	.bapro-ps--stack-tablet .bapro-ps__connector,
	.bapro-ps--stack-tablet.bapro-ps--align-center .bapro-ps__connector,
	.bapro-ps--stack-tablet.bapro-ps--align-start .bapro-ps__connector {
		top: calc(var(--bapro-ps-marker) + var(--bapro-ps-line-gap));
		left: calc(var(--bapro-ps-marker) / 2 - var(--bapro-ps-line-w) / 2);
		width: 0;
		height: calc(100% + var(--bapro-ps-gap) - var(--bapro-ps-marker) - 2 * var(--bapro-ps-line-gap));
		margin-top: 0;
		border-top: 0;
		border-left: var(--bapro-ps-line-w) var(--bapro-ps-line-style) var(--bapro-ps-line);
		transform-origin: center top;
	}

	.bapro-ps--stack-tablet.bapro-ps--line-arrow .bapro-ps__connector::after {
		top: auto;
		right: auto;
		bottom: -1px;
		left: calc(-1 * var(--bapro-ps-line-w) / 2 - 5px);
		border-top: 9px solid var(--bapro-ps-line);
		border-right: 5px solid transparent;
		border-bottom: 0;
		border-left: 5px solid transparent;
	}
}

@media (max-width: 767px) {
	.bapro-ps--stack-mobile {
		flex-direction: column;
	}

	.bapro-ps--stack-mobile .bapro-ps__step {
		display: grid;
		grid-template-columns: var(--bapro-ps-marker) 1fr;
		column-gap: var(--bapro-ps-marker-gap);
	}

	.bapro-ps--stack-mobile .bapro-ps__head,
	.bapro-ps--stack-mobile.bapro-ps--align-center .bapro-ps__head {
		align-items: flex-start;
		align-self: stretch;
		justify-content: flex-start;
	}

	.bapro-ps--stack-mobile .bapro-ps__body,
	.bapro-ps--stack-mobile.bapro-ps--align-center .bapro-ps__body {
		margin-top: 0;
		text-align: left;
	}

	.bapro-ps--stack-mobile .bapro-ps__connector,
	.bapro-ps--stack-mobile.bapro-ps--align-center .bapro-ps__connector,
	.bapro-ps--stack-mobile.bapro-ps--align-start .bapro-ps__connector {
		top: calc(var(--bapro-ps-marker) + var(--bapro-ps-line-gap));
		left: calc(var(--bapro-ps-marker) / 2 - var(--bapro-ps-line-w) / 2);
		width: 0;
		height: calc(100% + var(--bapro-ps-gap) - var(--bapro-ps-marker) - 2 * var(--bapro-ps-line-gap));
		margin-top: 0;
		border-top: 0;
		border-left: var(--bapro-ps-line-w) var(--bapro-ps-line-style) var(--bapro-ps-line);
		transform-origin: center top;
	}

	.bapro-ps--stack-mobile.bapro-ps--line-arrow .bapro-ps__connector::after {
		top: auto;
		right: auto;
		bottom: -1px;
		left: calc(-1 * var(--bapro-ps-line-w) / 2 - 5px);
		border-top: 9px solid var(--bapro-ps-line);
		border-right: 5px solid transparent;
		border-bottom: 0;
		border-left: 5px solid transparent;
	}
}

/* ---------- Sequential reveal ---------- */
.bapro-ps--reveal.bapro-ps--js .bapro-ps__step .bapro-ps__marker {
	transition-delay: calc(var(--bapro-ps-i, 0) * 0.3s);
}

.bapro-ps--reveal.bapro-ps--js .bapro-ps__step .bapro-ps__body {
	transition-delay: calc(var(--bapro-ps-i, 0) * 0.3s + 0.1s);
}

.bapro-ps--reveal.bapro-ps--js .bapro-ps__step .bapro-ps__connector {
	transition-delay: calc(var(--bapro-ps-i, 0) * 0.3s + 0.2s);
}

.bapro-ps--reveal.bapro-ps--js:not(.is-visible) .bapro-ps__marker {
	opacity: 0;
	scale: 0.4;
}

.bapro-ps--reveal.bapro-ps--js:not(.is-visible) .bapro-ps__body {
	opacity: 0;
	translate: 0 16px;
}

.bapro-ps--reveal.bapro-ps--js.bapro-ps--horizontal:not(.is-visible) .bapro-ps__connector {
	transform: scaleX(0);
}

.bapro-ps--reveal.bapro-ps--js.bapro-ps--vertical:not(.is-visible) .bapro-ps__connector {
	transform: scaleY(0);
}

/* After the reveal, hover effects respond immediately. */
.bapro-ps--reveal.bapro-ps--js.is-done .bapro-ps__step .bapro-ps__marker,
.bapro-ps--reveal.bapro-ps--js.is-done .bapro-ps__step .bapro-ps__body {
	transition-delay: 0s;
}

@media (prefers-reduced-motion: reduce) {
	.bapro-ps__marker,
	.bapro-ps__body,
	.bapro-ps__connector {
		transition: none !important;
	}
}

/* Anything the script hides with the hidden attribute stays hidden, even
   when a display value above (or from the theme) would show it. */
.bapro-ps [hidden] {
	display: none !important;
}
