/* Glow Divider for Elementor — frontend styles (no JavaScript required). */

.gld-divider {
	--gld-color: var(--e-global-color-primary, #d9a441);
	--gld-icon-secondary: #ffffff;
	--gld-icon-size: 24px;
	--gld-glow-blur: 4px;
	--gld-glow: drop-shadow(0 0 var(--gld-glow-blur) var(--gld-color)) drop-shadow(0 0 calc(var(--gld-glow-blur) * 2) var(--gld-color));
	--gld-duration: 2.2s;
	--gld-pulse-scale: 1.15;
	--gld-transition: .3s;
	--gld-icon-gap: 12px;
	--gld-content-gap: 6px;
	--gld-desc-para-gap: .75em;
	--gld-desc-gap: var(--gld-content-gap);
	--gld-justify: center;
	--gld-line-width: 1px;
	--gld-line-style: solid;
	--gld-line-opacity: .55;
	--gld-line-glow-blur: 3px;
	--gld-line-glow-opacity: .35;
	--gld-line-gap: 0px;
	--gld-line-grow: 1;
	--gld-line-length: 0px;
	--gld-icon-offset: 0px;
	--gld-ring-width: 1;
	--gld-ring-opacity: .65;
	--gld-spark-opacity: .8;

	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--gld-icon-gap);
	width: 100%;
	box-sizing: border-box;
	text-align: center;
}

/* ------------------------------------------------------------------ Rail */

.gld-rail {
	display: flex;
	align-items: center;
	justify-content: var(--gld-justify);
	gap: var(--gld-line-gap);
	width: 100%;
	min-width: 0;
}

.gld-line {
	position: relative;
	display: block;
	flex: var(--gld-line-grow) 1 var(--gld-line-length);
	width: var(--gld-line-length);
	min-width: 0;
	height: 0;
	border-top: var(--gld-line-width) var(--gld-line-style) var(--gld-line-color, var(--gld-color));
	opacity: var(--gld-line-opacity);
	transition: border-color var(--gld-transition), opacity var(--gld-transition);
}

.gld-lineglow-yes .gld-line::before {
	content: "";
	position: absolute;
	inset-inline: 0;
	top: calc(var(--gld-line-width) * -1.5);
	height: 0;
	border-top: calc(var(--gld-line-width) * 2) solid var(--gld-line-color, var(--gld-color));
	opacity: var(--gld-line-glow-opacity);
	filter: blur(var(--gld-line-glow-blur));
	pointer-events: none;
	transition: border-color var(--gld-transition);
}

.gld-lines-start .gld-line-end,
.gld-lines-end .gld-line-start,
.gld-lines-none .gld-line {
	display: none;
}

/* ------------------------------------------------------------------ Icon */

.gld-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	line-height: 1;
	color: var(--gld-color);
	transition: color var(--gld-transition), background-color var(--gld-transition), border-color var(--gld-transition), filter var(--gld-transition);
}

/* Built-in glow dot */
.gld-icon > svg.gld-glow {
	display: block;
	width: var(--gld-icon-size);
	height: var(--gld-icon-size);
	overflow: visible;
}

.gld-core {
	fill: currentColor;
	filter: var(--gld-glow);
	transform-box: fill-box;
	transform-origin: center;
}

.gld-ring,
.gld-ring-outer {
	fill: none;
	stroke: currentColor;
	transform-box: fill-box;
	transform-origin: center;
}

.gld-ring {
	stroke-width: var(--gld-ring-width);
	opacity: var(--gld-ring-opacity);
}

.gld-ring-outer {
	stroke-width: calc(var(--gld-ring-width) * .7);
	opacity: calc(var(--gld-ring-opacity) * .4);
}

.gld-spark {
	fill: currentColor;
	opacity: var(--gld-spark-opacity);
	transform-box: fill-box;
	transform-origin: center;
}

/* Icon Library icon */
.gld-icon i {
	display: block;
	font-size: var(--gld-icon-size);
	color: inherit;
	filter: var(--gld-glow);
}

.gld-icon > svg:not(.gld-glow) {
	display: block;
	width: var(--gld-icon-size);
	height: var(--gld-icon-size);
	fill: currentColor;
	filter: var(--gld-glow);
}

.gld-view-stacked .gld-icon,
.gld-view-framed .gld-icon {
	font-size: var(--gld-icon-size);
	padding: .5em;
	filter: var(--gld-glow);
}

.gld-view-stacked .gld-icon i,
.gld-view-framed .gld-icon i,
.gld-view-stacked .gld-icon > svg,
.gld-view-framed .gld-icon > svg {
	filter: none;
}

.gld-view-stacked .gld-icon {
	background-color: var(--gld-color);
	color: var(--gld-icon-secondary);
}

.gld-view-framed .gld-icon {
	border: .08em solid var(--gld-color);
	background-color: transparent;
}

.gld-shape-circle .gld-icon {
	border-radius: 50%;
}

.gld-shape-square .gld-icon {
	border-radius: 0;
}

/* --------------------------------------------------------------- Content */

.gld-content {
	display: flex;
	flex-direction: column;
	gap: var(--gld-content-gap);
	width: 100%;
	min-width: 0;
	max-width: 100%;
}

.gld-title,
.gld-subtitle,
.gld-description {
	margin: 0;
	transition: color var(--gld-transition);
}

/* Paragraph rhythm inside the description is owned by --gld-desc-para-gap.
   It uses flex `gap`, not child margins: themes routinely ship `.elementor p
   { margin: 0 }` (0,1,1) which outranks any `.gld-description > * + *` rule
   (0,1,0 — universal selectors add no specificity), so a margin-based rhythm
   silently loses. `gap` cannot be overridden by a margin rule at all. */
.gld-description {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: var(--gld-desc-para-gap);
}

.gld-divider .gld-description > * {
	margin-block: 0;
}

/* Description Position = Full Width: leave the title column and wrap to a new
   full-width row that starts under the icon (no indent), in every icon position. */
.gld-desc-full {
	flex-wrap: wrap;
}

.gld-desc-full > .gld-description {
	flex: 0 0 100%;
	width: 100%;
	min-width: 0;
	box-sizing: border-box;
}

/* Description Spacing (--gld-desc-gap) = distance between the description and
   whatever sits above it, in both positions. Empty control = Content Spacing. */
.gld-content > * + .gld-description {
	margin-block-start: calc(var(--gld-desc-gap) - var(--gld-content-gap));
}

/* Full width in block layouts: the description follows the flex column whose gap
   is Icon Spacing, so compensate to land exactly on --gld-desc-gap. */
.gld-desc-full > .gld-content + .gld-description {
	margin-block-start: calc(var(--gld-desc-gap) - var(--gld-icon-gap));
}

.gld-title a {
	color: inherit;
	text-decoration: none;
}

/* ------------------------------------------------------------------ List */

/* Content Source = List: one .gld-divider per item, stacked by Item Spacing. */
.gld-list {
	display: flex;
	flex-direction: column;
	gap: 12px;
	width: 100%;
	box-sizing: border-box;
}

/* ------------------------------------------- Text Direction = Inline */

/* Title / subtitle / description on one line. --gld-content-gap is the column
   gap; the margin compensation that spaces a stacked description would push the
   description down inside the row, so it is zeroed here (0,2,0 beats 0,1,0). */
.gld-cdir-row .gld-content {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: var(--gld-content-align, baseline);
	justify-content: var(--gld-justify);
}

.gld-cdir-row .gld-content > * + .gld-description {
	margin-block-start: 0;
}

@media (max-width: 1024px) {
	.gld-cdir-tablet-column .gld-content {
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: stretch;
		justify-content: flex-start;
	}
	.gld-cdir-tablet-column .gld-content > * + .gld-description {
		margin-block-start: calc(var(--gld-desc-gap) - var(--gld-content-gap));
	}
	.gld-cdir-tablet-row .gld-content {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: var(--gld-content-align, baseline);
		justify-content: var(--gld-justify);
	}
	.gld-cdir-tablet-row .gld-content > * + .gld-description {
		margin-block-start: 0;
	}
}

@media (max-width: 767px) {
	.gld-cdir-mobile-column .gld-content {
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: stretch;
		justify-content: flex-start;
	}
	.gld-cdir-mobile-column .gld-content > * + .gld-description {
		margin-block-start: calc(var(--gld-desc-gap) - var(--gld-content-gap));
	}
	.gld-cdir-mobile-row .gld-content {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: var(--gld-content-align, baseline);
		justify-content: var(--gld-justify);
	}
	.gld-cdir-mobile-row .gld-content > * + .gld-description {
		margin-block-start: 0;
	}
}

/* ------------------------------------------------------ Icon position */

.gld-icon-block-start .gld-divider { flex-direction: column; }
.gld-icon-block-end .gld-divider { flex-direction: column-reverse; }
.gld-icon-inline-start .gld-divider { flex-direction: row; }
.gld-icon-inline-end .gld-divider { flex-direction: row-reverse; }

.gld-icon-block-start .gld-divider,
.gld-icon-block-end .gld-divider {
	--gld-line-grow: 1;
	--gld-line-length: 0px;
}

.gld-icon-inline-start .gld-divider,
.gld-icon-inline-end .gld-divider {
	--gld-line-grow: 0;
	--gld-line-length: 48px;
}

.gld-icon-block-start .gld-rail,
.gld-icon-block-end .gld-rail {
	width: 100%;
	flex: 0 0 auto;
}

.gld-icon-inline-start .gld-rail,
.gld-icon-inline-end .gld-rail {
	width: auto;
	flex: 0 0 auto;
	margin-block-start: var(--gld-icon-offset);
}

.gld-icon-inline-start .gld-content,
.gld-icon-inline-end .gld-content {
	flex: 1 1 auto;
	width: auto;
}

/* Inline layouts + full-width description: the description is a wrapped row,
   so the cross-axis row-gap is the spacing and no margin compensation applies. */
.gld-icon-inline-start .gld-desc-full,
.gld-icon-inline-end .gld-desc-full {
	row-gap: var(--gld-desc-gap);
}

.gld-icon-inline-start .gld-desc-full > .gld-description,
.gld-icon-inline-end .gld-desc-full > .gld-description {
	margin-block-start: 0;
}

@media (max-width: 1024px) {
	.gld-icon-tablet-block-start .gld-divider { flex-direction: column; }
	.gld-icon-tablet-block-end .gld-divider { flex-direction: column-reverse; }
	.gld-icon-tablet-inline-start .gld-divider { flex-direction: row; }
	.gld-icon-tablet-inline-end .gld-divider { flex-direction: row-reverse; }

	.gld-icon-tablet-block-start .gld-divider,
	.gld-icon-tablet-block-end .gld-divider { --gld-line-grow: 1; --gld-line-length: 0px; }
	.gld-icon-tablet-inline-start .gld-divider,
	.gld-icon-tablet-inline-end .gld-divider { --gld-line-grow: 0; --gld-line-length: 48px; }

	.gld-icon-tablet-block-start .gld-rail,
	.gld-icon-tablet-block-end .gld-rail { width: 100%; }
	.gld-icon-tablet-inline-start .gld-rail,
	.gld-icon-tablet-inline-end .gld-rail { width: auto; }

	.gld-icon-tablet-block-start .gld-content,
	.gld-icon-tablet-block-end .gld-content { flex: 0 0 auto; width: 100%; }
	.gld-icon-tablet-inline-start .gld-content,
	.gld-icon-tablet-inline-end .gld-content { flex: 1 1 auto; width: auto; }

	.gld-icon-tablet-block-start .gld-desc-full,
	.gld-icon-tablet-block-end .gld-desc-full { row-gap: var(--gld-icon-gap); }
	.gld-icon-tablet-block-start .gld-desc-full > .gld-content + .gld-description,
	.gld-icon-tablet-block-end .gld-desc-full > .gld-content + .gld-description { margin-block-start: calc(var(--gld-desc-gap) - var(--gld-icon-gap)); }
	.gld-icon-tablet-inline-start .gld-desc-full,
	.gld-icon-tablet-inline-end .gld-desc-full { row-gap: var(--gld-desc-gap); }
	.gld-icon-tablet-inline-start .gld-desc-full > .gld-description,
	.gld-icon-tablet-inline-end .gld-desc-full > .gld-description { margin-block-start: 0; }
}

@media (max-width: 767px) {
	.gld-icon-mobile-block-start .gld-divider { flex-direction: column; }
	.gld-icon-mobile-block-end .gld-divider { flex-direction: column-reverse; }
	.gld-icon-mobile-inline-start .gld-divider { flex-direction: row; }
	.gld-icon-mobile-inline-end .gld-divider { flex-direction: row-reverse; }

	.gld-icon-mobile-block-start .gld-divider,
	.gld-icon-mobile-block-end .gld-divider { --gld-line-grow: 1; --gld-line-length: 0px; }
	.gld-icon-mobile-inline-start .gld-divider,
	.gld-icon-mobile-inline-end .gld-divider { --gld-line-grow: 0; --gld-line-length: 48px; }

	.gld-icon-mobile-block-start .gld-rail,
	.gld-icon-mobile-block-end .gld-rail { width: 100%; }
	.gld-icon-mobile-inline-start .gld-rail,
	.gld-icon-mobile-inline-end .gld-rail { width: auto; }

	.gld-icon-mobile-block-start .gld-content,
	.gld-icon-mobile-block-end .gld-content { flex: 0 0 auto; width: 100%; }
	.gld-icon-mobile-inline-start .gld-content,
	.gld-icon-mobile-inline-end .gld-content { flex: 1 1 auto; width: auto; }

	.gld-icon-mobile-block-start .gld-desc-full,
	.gld-icon-mobile-block-end .gld-desc-full { row-gap: var(--gld-icon-gap); }
	.gld-icon-mobile-block-start .gld-desc-full > .gld-content + .gld-description,
	.gld-icon-mobile-block-end .gld-desc-full > .gld-content + .gld-description { margin-block-start: calc(var(--gld-desc-gap) - var(--gld-icon-gap)); }
	.gld-icon-mobile-inline-start .gld-desc-full,
	.gld-icon-mobile-inline-end .gld-desc-full { row-gap: var(--gld-desc-gap); }
	.gld-icon-mobile-inline-start .gld-desc-full > .gld-description,
	.gld-icon-mobile-inline-end .gld-desc-full > .gld-description { margin-block-start: 0; }
}

/* -------------------------------------------------------------- Pulse */

@keyframes gld-pulse {
	0%, 100% { transform: scale(calc(2 - var(--gld-pulse-scale))); opacity: .75; }
	50% { transform: scale(var(--gld-pulse-scale)); opacity: 1; }
}

@keyframes gld-ring {
	0%, 100% { transform: scale(.85); opacity: calc(var(--gld-ring-opacity) * .5); }
	50% { transform: scale(calc(var(--gld-pulse-scale) + .3)); opacity: var(--gld-ring-opacity); }
}

@keyframes gld-ring-outer {
	0%, 100% { transform: scale(.8); opacity: calc(var(--gld-ring-opacity) * .25); }
	50% { transform: scale(calc(var(--gld-pulse-scale) + .65)); opacity: calc(var(--gld-ring-opacity) * .6); }
}

@keyframes gld-spark {
	0%, 100% { transform: scale(.7); opacity: calc(var(--gld-spark-opacity) * .2); }
	50% { transform: scale(1); opacity: var(--gld-spark-opacity); }
}

.gld-pulse-yes .gld-core { animation: gld-pulse var(--gld-duration) ease-in-out infinite; }
.gld-pulse-yes .gld-ring { animation: gld-ring var(--gld-duration) ease-in-out infinite; }
.gld-pulse-yes .gld-ring-outer { animation: gld-ring-outer var(--gld-duration) ease-in-out infinite; }
.gld-pulse-yes .gld-spark { animation: gld-spark var(--gld-duration) ease-in-out infinite; }
.gld-pulse-yes .gld-type-custom .gld-icon { animation: gld-pulse var(--gld-duration) ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
	.gld-pulse-yes .gld-core,
	.gld-pulse-yes .gld-ring,
	.gld-pulse-yes .gld-ring-outer,
	.gld-pulse-yes .gld-spark,
	.gld-pulse-yes .gld-type-custom .gld-icon {
		animation: none;
	}
}
