/* ld_button — Epic Widgets. Clases compatibles con el marcado de Hub (.btn, .btn-solid, .btn-icon-*…). */
.elementor-widget-ld_button {
	--epic-btn-accent: var(--color-primary, var(--e-global-color-primary, #111));
}
.elementor-widget-ld_button.elementor-align-left { text-align: left; }
.elementor-widget-ld_button.elementor-align-center { text-align: center; }
.elementor-widget-ld_button.elementor-align-right { text-align: right; }
.elementor-widget-ld_button.elementor-align-justify .btn { width: 100%; }
@media (max-width: 1024px) {
	.elementor-widget-ld_button.elementor-tablet-align-left { text-align: left; }
	.elementor-widget-ld_button.elementor-tablet-align-center { text-align: center; }
	.elementor-widget-ld_button.elementor-tablet-align-right { text-align: right; }
	.elementor-widget-ld_button.elementor-tablet-align-justify .btn { width: 100%; }
}
@media (max-width: 767px) {
	.elementor-widget-ld_button.elementor-mobile-align-left { text-align: left; }
	.elementor-widget-ld_button.elementor-mobile-align-center { text-align: center; }
	.elementor-widget-ld_button.elementor-mobile-align-right { text-align: right; }
	.elementor-widget-ld_button.elementor-mobile-align-justify .btn { width: 100%; }
}

/* ---------- Base ---------- */
.elementor-widget-ld_button .btn {
	--icon-w: 0px;
	--icon-h: 0px;
	--icon-mt: 0px;
	--icon-me: 0px;
	--icon-mb: 0px;
	--icon-ms: 8px;
	--icon-font-size: 1em;
	--epic-btn-lift: 0px;
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	vertical-align: middle;
	overflow: hidden;
	border-radius: 0;
	line-height: inherit;
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
	transform: rotate(var(--epic-btn-rotate, 0deg)) translateY(var(--epic-btn-lift));
	transition: color .3s, background-color .3s, border-color .3s, box-shadow .3s, transform .3s;
}
.elementor-widget-ld_button .btn:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.elementor-widget-ld_button .btn-txt,
.elementor-widget-ld_button .btn-icon { position: relative; z-index: 3; }
.elementor-widget-ld_button .btn-txt strong,
.elementor-widget-ld_button .btn-txt span,
.elementor-widget-ld_button .btn-txt small { display: block; }
.elementor-widget-ld_button .btn-txt small { font-size: .67em; }

/* Sólido */
.elementor-widget-ld_button .btn-solid {
	--btn-pt: 1.15em; --btn-pe: 2.1em; --btn-pb: 1.15em; --btn-ps: 2.1em;
	padding: var(--btn-pt) var(--btn-pe) var(--btn-pb) var(--btn-ps);
	background-color: var(--epic-btn-accent);
	color: #fff;
}
.elementor-widget-ld_button .btn-solid:hover,
.elementor-widget-ld_button .btn-solid:focus-visible {
	--epic-btn-lift: -2px;
	color: #fff;
	border-color: transparent;
	box-shadow: 0 12px 28px rgba(0, 0, 0, .12);
}
.elementor-widget-ld_button .btn-solid.btn-xsm { --btn-pt: .6em;  --btn-pe: 1em;   --btn-pb: .6em;  --btn-ps: 1em; }
.elementor-widget-ld_button .btn-solid.btn-sm  { --btn-pt: .85em; --btn-pe: 1.3em; --btn-pb: .85em; --btn-ps: 1.3em; }
.elementor-widget-ld_button .btn-solid.btn-lg  { --btn-pt: 1.3em; --btn-pe: 2.7em; --btn-pb: 1.3em; --btn-ps: 2.7em; }
.elementor-widget-ld_button .btn-solid.btn-xlg { --btn-pt: 1.5em; --btn-pe: 3.5em; --btn-pb: 1.5em; --btn-ps: 3.5em; }
.elementor-widget-ld_button .btn-solid.btn-custom-size { padding: 0 !important; }
.elementor-widget-ld_button .btn-block { width: 100%; white-space: normal; }

/* Plano */
.elementor-widget-ld_button .btn-naked {
	padding: 0 !important;
	border: 0 !important;
	background: none !important;
	overflow: visible;
	color: var(--epic-btn-accent);
}

/* Subrayado */
.elementor-widget-ld_button .btn-underlined {
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	overflow: visible;
	color: var(--epic-btn-accent);
}
.elementor-widget-ld_button .btn-underlined .btn-txt { padding-bottom: .2em; }
.elementor-widget-ld_button .btn-underlined::before,
.elementor-widget-ld_button .btn-underlined::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: var(--epic-ul-h, 1px);
	background: var(--epic-btn-accent);
}
.elementor-widget-ld_button .btn-underlined::after {
	background: var(--color-secondary, var(--e-global-color-secondary, currentColor));
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform .35s cubic-bezier(.4, 0, .2, 1);
}
.elementor-widget-ld_button .btn-underlined:hover::after,
.elementor-widget-ld_button .btn-underlined:focus-visible::after { transform: scaleX(1); transform-origin: left center; }
.elementor-widget-ld_button .btn-underlined.border-thick { --epic-ul-h: 2px; }
.elementor-widget-ld_button .btn-underlined.border-thicker { --epic-ul-h: 3px; }

/* ---------- Icono ---------- */
.elementor-widget-ld_button .btn-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin: var(--icon-mt) var(--icon-me) var(--icon-mb) var(--icon-ms);
	transition: background-color .3s, color .15s, border-color .3s, box-shadow .3s, opacity .25s, transform .5s;
}
.elementor-widget-ld_button .btn-icon i { font-size: var(--icon-font-size); letter-spacing: 0; }
.elementor-widget-ld_button .btn-icon svg {
	width: var(--icon-font-size);
	height: auto;
	max-height: var(--icon-font-size);
	fill: currentColor;
}
.elementor-widget-ld_button .btn-icon:only-child { --icon-mb: 0px; }
.elementor-widget-ld_button .btn-icon:first-child { --icon-ms: auto; --icon-me: auto; }
.elementor-widget-ld_button .btn-icon-left { --icon-ms: 0px; --icon-me: 8px; }
.elementor-widget-ld_button .btn-icon-left .btn-icon,
.elementor-widget-ld_button .btn-icon-top .btn-icon { order: -1; }
.elementor-widget-ld_button .btn-icon-block {
	flex-direction: column;
	--icon-mt: .5em;
	--icon-ms: auto;
	--icon-me: auto;
}
.elementor-widget-ld_button .btn-icon-block .btn-txt { width: 100%; text-align: center; }
.elementor-widget-ld_button .btn-icon-top.btn-icon-block { --icon-mt: 0px; --icon-mb: .5em; }

/* Formas */
.elementor-widget-ld_button .btn-icon-shaped { --icon-mt: -5%; --icon-mb: -5%; }
.elementor-widget-ld_button .btn-icon-shaped .btn-icon { width: var(--icon-w); height: var(--icon-h); border: 1px solid; }
.elementor-widget-ld_button .btn-icon-xsm { --icon-w: 1.5em; --icon-h: 1.5em; }
.elementor-widget-ld_button .btn-icon-sm  { --icon-w: 2em;   --icon-h: 2em; }
.elementor-widget-ld_button .btn-icon-md  { --icon-w: 2.5em; --icon-h: 2.5em; }
.elementor-widget-ld_button .btn-icon-lg  { --icon-w: 3.2em; --icon-h: 3.2em; }
.elementor-widget-ld_button .btn-icon-xlg { --icon-w: 3.5em; --icon-h: 3.5em; }
.elementor-widget-ld_button .btn-icon-solid .btn-icon { border: 0; background-color: var(--epic-btn-accent); color: #fff; }
.elementor-widget-ld_button .btn-icon-semi-round .btn-icon { border-radius: 2px; }
.elementor-widget-ld_button .btn-icon-round .btn-icon { border-radius: 4px; }
.elementor-widget-ld_button .btn-icon-circle .btn-icon { border-radius: 50%; }
.elementor-widget-ld_button .btn-icon-border-thick .btn-icon { border-width: 2px; }
.elementor-widget-ld_button .btn-icon-border-thicker .btn-icon { border-width: 3px; }
.elementor-widget-ld_button .btn-icon-border-thickest .btn-icon { border-width: 4px; }

/* Onda */
@keyframes epicBtnRipple {
	0%   { transform: scale(1); border-width: 4px; opacity: 1; }
	80%  { transform: scale(1.35); border-width: 1px; opacity: .6; }
	100% { transform: scale(1.4); opacity: 0; }
}
.elementor-widget-ld_button .btn-icon-ripple .btn-icon::before {
	content: "";
	position: absolute;
	inset: -2px;
	border: 1px solid var(--epic-btn-accent);
	border-radius: inherit;
	animation: epicBtnRipple 2s cubic-bezier(.23, 1, .32, 1) infinite both;
}

/* Separador */
.elementor-widget-ld_button .btn-icon-sep { --icon-ms: 1.1em; }
.elementor-widget-ld_button .btn-icon-sep .btn-icon { padding-inline-start: var(--icon-ms); }
.elementor-widget-ld_button .btn-icon-sep .btn-icon::before {
	content: "";
	position: absolute;
	top: -50%;
	left: 0;
	width: 1px;
	height: 200%;
	background: #ddd;
}
.elementor-widget-ld_button .btn-icon-sep.btn-icon-left { --icon-ms: 0px; --icon-me: 1.1em; }
.elementor-widget-ld_button .btn-icon-sep.btn-icon-left .btn-icon { padding-inline-start: 0; padding-inline-end: var(--icon-me); }
.elementor-widget-ld_button .btn-icon-sep.btn-icon-left .btn-icon::before { left: auto; right: 0; }

/* ---------- Icono: aparecer al hover ---------- */
.elementor-widget-ld_button .btn-hover-reveal { --icon-ms: 0px; --icon-me: 0px; }
.elementor-widget-ld_button .btn-hover-reveal .btn-txt { transition: transform .5s cubic-bezier(0, .7, .4, 1); }
.elementor-widget-ld_button .btn-hover-reveal .btn-icon {
	position: absolute;
	opacity: 0;
	transition: opacity .25s, transform .5s cubic-bezier(0, .7, .4, 1);
}
.elementor-widget-ld_button .btn-hover-reveal.btn-icon-right .btn-icon { right: var(--btn-pe, 0px); }
.elementor-widget-ld_button .btn-hover-reveal.btn-icon-left .btn-icon { left: var(--btn-ps, 0px); }
.elementor-widget-ld_button .btn-hover-reveal.btn-custom-size .btn-icon,
.elementor-widget-ld_button .btn-hover-reveal.btn-block .btn-icon { position: relative; left: auto; right: auto; }
.elementor-widget-ld_button .btn-hover-reveal:hover .btn-icon,
.elementor-widget-ld_button .btn-hover-reveal:focus-visible .btn-icon { opacity: 1; }
.elementor-widget-ld_button .btn-hover-reveal.btn-icon-right:hover .btn-icon { transform: translateX(calc(var(--icon-font-size) + 8px)); }
.elementor-widget-ld_button .btn-hover-reveal.btn-solid.btn-icon-right:hover .btn-icon { transform: translateX(4px); }
.elementor-widget-ld_button .btn-hover-reveal.btn-solid.btn-icon-right:hover .btn-txt { transform: translateX(calc((var(--icon-font-size) + 8px) * -.5)); }
.elementor-widget-ld_button .btn-hover-reveal.btn-icon-left:hover .btn-txt { transform: translateX(calc(var(--icon-font-size) + 8px)); }
.elementor-widget-ld_button .btn-hover-reveal.btn-solid.btn-icon-left:hover .btn-txt { transform: translateX(calc((var(--icon-font-size) + 8px) * .5)); }
.elementor-widget-ld_button .btn-hover-reveal.btn-solid.btn-icon-left:hover .btn-icon { transform: translateX(-4px); }

/* ---------- Icono: intercambiar posición ---------- */
.elementor-widget-ld_button .btn-hover-swp { --epic-swp-icon: 1em; --epic-swp-txt: 1.5em; }
.elementor-widget-ld_button .btn-hover-swp .btn-txt { transition: transform .6s .12s cubic-bezier(.1, .75, .25, 1); }
.elementor-widget-ld_button .btn-hover-swp .btn-icon { transition: opacity .4s .25s, transform .6s .25s cubic-bezier(.1, .75, .25, 1); }
.elementor-widget-ld_button .btn-hover-swp.btn-solid.btn-icon-right .btn-txt { margin-inline-start: -1em; }
.elementor-widget-ld_button .btn-hover-swp.btn-solid.btn-icon-left .btn-txt { margin-inline-end: -1em; }
.elementor-widget-ld_button .btn-hover-swp .btn-icon + .btn-icon {
	order: -2;
	margin: var(--icon-mt) var(--icon-ms) var(--icon-mb) var(--icon-me);
	opacity: 0;
	transform: translateX(calc(var(--epic-swp-icon) * -1));
	transition-delay: 0s;
}
.elementor-widget-ld_button .btn-hover-swp.btn-icon-left .btn-icon + .btn-icon { order: 2; transform: translateX(var(--epic-swp-icon)); }
.elementor-widget-ld_button .btn-hover-swp:is(.btn-naked, .btn-underlined) .btn-icon + .btn-icon { position: absolute; inset-inline-start: 0; }
.elementor-widget-ld_button .btn-hover-swp:is(.btn-naked, .btn-underlined).btn-icon-left .btn-icon + .btn-icon { inset-inline-start: auto; inset-inline-end: 0; }
.elementor-widget-ld_button .btn-hover-swp:hover .btn-icon { opacity: 0; transform: translateX(var(--epic-swp-icon)); transition-delay: 0s; }
.elementor-widget-ld_button .btn-hover-swp:hover .btn-txt { transform: translateX(var(--epic-swp-txt)); transition-delay: .1s; }
.elementor-widget-ld_button .btn-hover-swp:hover .btn-icon + .btn-icon { opacity: 1; transform: none; transition-delay: .22s; }
.elementor-widget-ld_button .btn-hover-swp.btn-icon-left:hover .btn-icon { transform: translateX(calc(var(--epic-swp-icon) * -1)); }
.elementor-widget-ld_button .btn-hover-swp.btn-icon-left:hover .btn-icon + .btn-icon { transform: none; }
.elementor-widget-ld_button .btn-hover-swp.btn-icon-left:hover .btn-txt { transform: translateX(calc(var(--epic-swp-txt) * -1)); }

/* ---------- Texto: cambio (switch) ---------- */
.elementor-widget-ld_button .btn-hover-txt-switch .btn-txt {
	transition: opacity .65s, transform .85s;
	transition-timing-function: cubic-bezier(.15, .85, .3, 1);
}
.elementor-widget-ld_button .btn-hover-txt-switch .btn-txt::after {
	content: attr(data-text);
	position: absolute;
	top: 50%;
	white-space: nowrap;
	opacity: 0;
	transition: inherit;
}
.elementor-widget-ld_button .btn-hover-txt-switch:hover .btn-txt::after { opacity: 1; }
.elementor-widget-ld_button .btn-hover-txt-switch-y .btn-txt::after { left: 50%; transform: translate(-50%, 150%); }
.elementor-widget-ld_button .btn-hover-txt-switch-y:hover .btn-txt { transform: translateY(-250%); }
.elementor-widget-ld_button .btn-hover-txt-switch-y:hover .btn-txt::after { transform: translate(-50%, 200%); }
.elementor-widget-ld_button .btn-hover-txt-switch-x .btn-txt::after { left: 100%; transform: translate(50%, -50%); }
.elementor-widget-ld_button .btn-hover-txt-switch-x:hover .btn-txt { transform: translateX(-200%); }
.elementor-widget-ld_button .btn-hover-txt-switch-x:hover .btn-txt::after { transform: translate(100%, -50%); }

/* ---------- Texto: marquesina ---------- */
.elementor-widget-ld_button .btn-hover-txt-marquee .btn-txt::after { content: attr(data-text); position: absolute; white-space: nowrap; }
.elementor-widget-ld_button .btn-hover-txt-marquee-x .btn-txt::after { top: 0; left: 100%; padding-inline-start: 1em; }
.elementor-widget-ld_button .btn-hover-txt-marquee-y .btn-txt::after { top: 100%; left: 0; }
@keyframes epicBtnMarqueeX { to { transform: translateX(calc(-100% - 1em)); } }
@keyframes epicBtnMarqueeY { to { transform: translateY(-100%); } }
.elementor-widget-ld_button .btn-hover-txt-marquee-x:hover .btn-txt { animation: epicBtnMarqueeX 2s linear infinite; }
.elementor-widget-ld_button .btn-hover-txt-marquee-y:hover .btn-txt { animation: epicBtnMarqueeY 1s linear infinite; }

/* ---------- Texto: letras (liquid) — spans .lqd-chars generados por JS ---------- */
.elementor-widget-ld_button .btn-txt .lqd-words { display: inline-block; white-space: nowrap; }
.elementor-widget-ld_button .btn-txt .lqd-chars { display: inline-block; }
@keyframes epicBtnCharsX { 50% { opacity: 0; transform: translateX(-.3em); } 51% { opacity: 0; transform: translateX(.3em); } 100% { opacity: 1; transform: none; } }
@keyframes epicBtnCharsXAlt { 50% { opacity: 0; transform: translateX(.3em); } 51% { opacity: 0; transform: translateX(-.3em); } 100% { opacity: 1; transform: none; } }
@keyframes epicBtnCharsY { 50% { opacity: 0; transform: translateY(.3em); } 51% { opacity: 0; transform: translateY(-.3em); } 100% { opacity: 1; transform: none; } }
@keyframes epicBtnCharsYAlt { 50% { opacity: 0; transform: translateY(-.3em); } 51% { opacity: 0; transform: translateY(.3em); } 100% { opacity: 1; transform: none; } }
.elementor-widget-ld_button .btn-hover-txt-liquid-x:hover .lqd-chars { animation: epicBtnCharsX .6s cubic-bezier(.23, 1, .32, 1) calc(var(--chars-index, 0) * .03s) both; }
.elementor-widget-ld_button .btn-hover-txt-liquid-x-alt:hover .lqd-chars { animation: epicBtnCharsXAlt .6s cubic-bezier(.23, 1, .32, 1) calc(var(--chars-last-index, 0) * .03s) both; }
.elementor-widget-ld_button .btn-hover-txt-liquid-y:hover .lqd-chars { animation: epicBtnCharsY .6s cubic-bezier(.23, 1, .32, 1) calc(var(--chars-index, 0) * .03s) both; }
.elementor-widget-ld_button .btn-hover-txt-liquid-y-alt:hover .lqd-chars { animation: epicBtnCharsYAlt .6s cubic-bezier(.23, 1, .32, 1) calc(var(--chars-index, 0) * .03s) both; }

@media (prefers-reduced-motion: reduce) {
	.elementor-widget-ld_button .btn,
	.elementor-widget-ld_button .btn * { transition-duration: .01ms !important; animation: none !important; }
}
