/* YB Button System Design: button visuals.
   Every color, size and radius comes from custom properties printed with the markup
   (per style) or with the system settings (shared). Only the animation mechanics live here.
   Rules use the prefix ".yb-bsd-widget .yb-bsd-button.yb-bsd-button" (three classes) so they win
   over theme and Elementor kit rules for links and buttons without needing !important.
   The hover/focus selector is that prefix plus
   ":where(:not(.yb-bsd-no-hover)):is(:hover,:focus-visible,.yb-bsd-state-hover,.yb-bsd-state-focus)". */

@property --yb-bsd-angle {
	syntax: "<angle>";
	initial-value: 0deg;
	inherits: false;
}
@property --yb-bsd-angle-offset {
	syntax: "<angle>";
	initial-value: 0deg;
	inherits: false;
}
@property --yb-bsd-percent {
	syntax: "<percentage>";
	initial-value: 5%;
	inherits: false;
}
@property --yb-bsd-shine {
	syntax: "<color>";
	initial-value: white;
	inherits: false;
}
@property --yb-bsd-pattern-angle {
	syntax: "<angle>";
	initial-value: 0deg;
	inherits: false;
}
@property --yb-bsd-fill {
	syntax: "<color>";
	initial-value: transparent;
	inherits: false;
}
@property --yb-bsd-edge {
	syntax: "<color>";
	initial-value: transparent;
	inherits: false;
}

/* Widget wrapper and alignment */
.yb-bsd-widget { display: flex; align-items: center; width: 100%; }
.yb-bsd-widget.yb-bsd-inline { display: inline-flex; width: auto; }
.yb-bsd-align-left { justify-content: flex-start; }
.yb-bsd-align-center { justify-content: center; }
.yb-bsd-align-right { justify-content: flex-end; }
.yb-bsd-render-fallback { display: inline-block; }
.yb-bsd-editor-notice { margin: 0 0 8px; padding: 8px 12px; border-radius: 6px; background: #fff6df; color: #6b4a00; font: 13px/1.4 sans-serif; }

/* Base button */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button {
	/* --yb-ov-* values are set by Elementor style controls on the widget wrapper; unset ones fall back to the shared style. */
	--yb-bsd-c-bg: var(--yb-ov-bg, var(--yb-bsd-rest-bg));
	--yb-bsd-c-fg: var(--yb-ov-fg, var(--yb-bsd-rest-fg));
	--yb-bsd-c-icon: var(--yb-ov-icon, var(--yb-bsd-rest-icon));
	--yb-bsd-c-border: var(--yb-ov-border, var(--yb-bsd-rest-border));
	--yb-bsd-c-tint: var(--yb-bsd-rest-tint);
	--yb-bsd-c-muted: var(--yb-ov-muted, var(--yb-bsd-rest-muted, currentColor));
	--yb-bsd-c-ibg: var(--yb-ov-ibg, var(--yb-bsd-rest-ibg, transparent));
	--yb-bsd-c-iborder: var(--yb-ov-iborder, var(--yb-bsd-rest-iborder, transparent));
	position: relative;
	isolation: isolate;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	max-width: 100%;
	margin: 0;
	border: var(--yb-bsd-rest-bw, 0px) solid var(--yb-bsd-c-border);
	border-radius: var(--yb-bsd-radius, 12px);
	outline: 0;
	outline-offset: 4px;
	background-color: var(--yb-bsd-c-bg);
	background-image: none;
	color: var(--yb-bsd-c-fg);
	box-shadow: none;
	font-family: var(--yb-bsd-ff, var(--yb-bsd-sys-ff, inherit));
	font-weight: var(--yb-bsd-fw, var(--yb-bsd-sys-fw, 500));
	line-height: var(--yb-bsd-lh, var(--yb-bsd-sys-lh, 1.2));
	letter-spacing: var(--yb-bsd-ls, var(--yb-bsd-sys-ls, 0));
	text-transform: var(--yb-bsd-tt, none);
	text-align: center;
	text-decoration: none;
	cursor: default;
	-webkit-tap-highlight-color: transparent;
	transition: background-color var(--yb-bsd-color-dur, 200ms) ease, border-color var(--yb-bsd-color-dur, 200ms) ease, color var(--yb-bsd-color-dur, 200ms) ease, box-shadow var(--yb-bsd-color-dur, 200ms) ease, translate var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-cursor-pointer { cursor: pointer; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-cursor-default { cursor: default; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-size-fixed {
	padding: var(--yb-bsd-pad-y, 8px) var(--yb-bsd-pad-x, 16px);
	min-height: var(--yb-bsd-h, 0);
	min-width: var(--yb-bsd-w, 0);
	font-size: var(--yb-bsd-fs, 14px);
	gap: var(--yb-bsd-gap, 8px);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-width-full { width: 100%; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-icon-only { aspect-ratio: 1; }

/* Label and icon carry their own colors; nothing is inherited from theme link rules. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-label {
	position: relative;
	z-index: 1;
	order: 1;
	display: inline-flex;
	min-width: 0;
	max-width: 100%;
	overflow: hidden;
	white-space: nowrap;
	background: none;
	color: var(--yb-bsd-c-fg);
	text-decoration: none;
	transition: color var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-label > span {
	background: none;
	color: inherit;
	text-decoration: none;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-icon {
	position: relative;
	z-index: 1;
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	line-height: 1;
	background: none;
	color: var(--yb-bsd-c-icon);
	transition: color var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-icon-left { order: 0; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-icon-right { order: 2; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-icon svg {
	display: block;
	width: var(--yb-ov-icon-size, var(--yb-bsd-icon-size, 1em));
	height: var(--yb-ov-icon-size, var(--yb-bsd-icon-size, 1em));
	fill: currentColor;
	color: inherit;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-icon i {
	color: inherit;
	font-size: var(--yb-ov-icon-size, var(--yb-bsd-icon-size, 1em));
}

/* Effect layers */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx {
	background: none;
	position: absolute;
	inset: 0;
	z-index: 0;
	border-radius: inherit;
	pointer-events: none;
}
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-clip {
	background: none;
	position: absolute;
	inset: 0;
	overflow: hidden;
	border-radius: max(0px, calc(var(--yb-bsd-radius, 12px) - var(--yb-bsd-rest-bw, 0px)));
}
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-clip.has-inner-ring { box-shadow: inset 0 0 0 1px var(--yb-bsd-ring); }
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-clip > i {
	position: absolute;
	left: 50%;
	top: 50%;
	translate: -50% -50%;
	pointer-events: none;
}

/* Border light: the reference technique. The fill covers the padding box; the rotating conic gradient
   shows only through the transparent border; a static border color sits underneath it. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-light {
	--yb-bsd-shine: var(--yb-bsd-rest-shine);
	--yb-bsd-fill: var(--yb-bsd-c-bg);
	--yb-bsd-edge: var(--yb-bsd-c-border);
	border-color: transparent;
	background:
		linear-gradient(var(--yb-bsd-fill), var(--yb-bsd-fill)) padding-box,
		conic-gradient(
			from calc(var(--yb-bsd-angle) - var(--yb-bsd-angle-offset)),
			transparent,
			var(--yb-bsd-highlight) var(--yb-bsd-percent),
			var(--yb-bsd-shine) calc(var(--yb-bsd-percent) * 2),
			var(--yb-bsd-highlight) calc(var(--yb-bsd-percent) * 3),
			transparent calc(var(--yb-bsd-percent) * 4)
		) border-box,
		linear-gradient(var(--yb-bsd-edge), var(--yb-bsd-edge)) border-box;
	transition: color var(--yb-bsd-color-dur, 200ms) ease, box-shadow var(--yb-bsd-color-dur, 200ms) ease, translate var(--yb-bsd-color-dur, 200ms) ease, --yb-bsd-fill var(--yb-bsd-color-dur, 200ms) ease, --yb-bsd-edge var(--yb-bsd-color-dur, 200ms) ease, --yb-bsd-angle-offset var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease), --yb-bsd-percent var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease), --yb-bsd-shine var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease);
	animation: yb-bsd-angle var(--yb-bsd-duration, 3s) linear infinite, yb-bsd-angle calc(var(--yb-bsd-duration, 3s) / var(--yb-bsd-slow, 0.4)) linear infinite reverse paused;
	animation-composition: add;
}

/* Border beam: a ring over the border area; only the light that travels around the border is drawn. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-ring {
	position: absolute;
	inset: calc(-1 * var(--yb-bsd-rest-bw, 0px));
	box-sizing: border-box;
	padding: var(--yb-bsd-rest-bw, 0px);
	border-radius: inherit;
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask-composite: exclude;
}
/* Traveling light: the ring, its outer glow and the surface overlay share one conic gradient. */
.yb-bsd-widget .yb-bsd-button :is(.yb-bsd-fx-ring, .yb-bsd-fx-halo, .yb-bsd-fx-wash) {
	--yb-bsd-shine: var(--yb-bsd-rest-shine);
	background-image: conic-gradient(
		from calc(var(--yb-bsd-angle) - var(--yb-bsd-angle-offset)),
		transparent,
		var(--yb-bsd-highlight) var(--yb-bsd-percent),
		var(--yb-bsd-shine) calc(var(--yb-bsd-percent) * 2),
		var(--yb-bsd-highlight) calc(var(--yb-bsd-percent) * 3),
		transparent calc(var(--yb-bsd-percent) * 4)
	);
	transition: background-color var(--yb-bsd-color-dur, 200ms) ease, padding var(--yb-bsd-color-dur, 200ms) ease, --yb-bsd-angle-offset var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease), --yb-bsd-percent var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease), --yb-bsd-shine var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease);
	animation: yb-bsd-angle var(--yb-bsd-duration, 3s) linear infinite, yb-bsd-angle calc(var(--yb-bsd-duration, 3s) / var(--yb-bsd-slow, 0.4)) linear infinite reverse paused;
	animation-composition: add;
}

/* Outer light: a blurred copy of the ring that spills outside the border. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-halo {
	position: absolute;
	inset: calc(-3px - var(--yb-bsd-rest-bw, 0px));
	box-sizing: border-box;
	padding: calc(var(--yb-bsd-rest-bw, 0px) + 4px);
	border-radius: inherit;
	opacity: var(--yb-bsd-halo-opacity, 0.8);
	filter: blur(var(--yb-bsd-halo-blur, 6px));
	-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor;
	mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	mask-composite: exclude;
}

/* Surface light: blends over the background, pattern, text and icon, fading toward the center. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-over {
	position: absolute;
	inset: 0;
	z-index: 2;
	overflow: hidden;
	border-radius: max(0px, calc(var(--yb-bsd-radius, 12px) - var(--yb-bsd-rest-bw, 0px)));
	background: none;
	pointer-events: none;
}
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-wash {
	position: absolute;
	inset: 0;
	opacity: var(--yb-bsd-wash-opacity, 0.45);
	mix-blend-mode: plus-lighter;
	-webkit-mask-image: radial-gradient(ellipse at center, transparent 20%, #000 100%);
	mask-image: radial-gradient(ellipse at center, transparent 20%, #000 100%);
}
/* Pattern: square grid or dots, masked by a rotating conic gradient. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-pattern {
	width: calc(100% - 6px);
	height: calc(100% - 6px);
	border-radius: inherit;
	opacity: var(--yb-bsd-pattern-opacity, 0.4);
	-webkit-mask-image: conic-gradient(from calc(var(--yb-bsd-pattern-angle) + 45deg), #000, transparent 10% 90%, #000);
	mask-image: conic-gradient(from calc(var(--yb-bsd-pattern-angle) + 45deg), #000, transparent 10% 90%, #000);
	animation: yb-bsd-pattern-angle var(--yb-bsd-duration, 3s) linear infinite, yb-bsd-pattern-angle calc(var(--yb-bsd-duration, 3s) / var(--yb-bsd-slow, 0.4)) linear infinite reverse paused;
	animation-composition: add;
}
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-pattern.is-grid {
	background-image: linear-gradient(to right, var(--yb-bsd-pattern) 1px, transparent 1px), linear-gradient(to bottom, var(--yb-bsd-pattern) 1px, transparent 1px);
	background-size: var(--yb-bsd-grid, 10px) var(--yb-bsd-grid, 10px);
}
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-pattern.is-dots {
	background-image: radial-gradient(circle at calc(var(--yb-bsd-grid, 10px) * 0.2) calc(var(--yb-bsd-grid, 10px) * 0.2), var(--yb-bsd-pattern) calc(var(--yb-bsd-grid, 10px) * 0.05), transparent 0);
	background-size: calc(var(--yb-bsd-grid, 10px) * 0.4) calc(var(--yb-bsd-grid, 10px) * 0.4);
}

/* Overlay: tones the fill down; it is the first layer, so every effect is drawn on top of it. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-tint {
	width: 100%;
	height: 100%;
	background-color: var(--yb-bsd-c-tint);
	transition: background-color var(--yb-bsd-color-dur, 200ms) ease;
}

/* Shade: the overlay color covers everything except a lit wedge that follows the border light. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-tint.is-travel {
	-webkit-mask-image: conic-gradient(from calc(var(--yb-bsd-angle) - var(--yb-bsd-angle-offset)), #000, transparent calc(var(--yb-bsd-percent) * 1.5), transparent calc(var(--yb-bsd-percent) * 2.5), #000 calc(var(--yb-bsd-percent) * 4));
	mask-image: conic-gradient(from calc(var(--yb-bsd-angle) - var(--yb-bsd-angle-offset)), #000, transparent calc(var(--yb-bsd-percent) * 1.5), transparent calc(var(--yb-bsd-percent) * 2.5), #000 calc(var(--yb-bsd-percent) * 4));
	transition: background-color var(--yb-bsd-color-dur, 200ms) ease, --yb-bsd-angle-offset var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease), --yb-bsd-percent var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease);
	animation: yb-bsd-angle var(--yb-bsd-duration, 3s) linear infinite, yb-bsd-angle calc(var(--yb-bsd-duration, 3s) / var(--yb-bsd-slow, 0.4)) linear infinite reverse paused;
	animation-composition: add;
}

/* Shimmer: a square light that rotates inside the clipped area. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-shimmer {
	width: 100%;
	aspect-ratio: 1;
	background: linear-gradient(-50deg, transparent, var(--yb-bsd-highlight), transparent);
	-webkit-mask-image: radial-gradient(circle at bottom, transparent 40%, #000);
	mask-image: radial-gradient(circle at bottom, transparent 40%, #000);
	opacity: var(--yb-bsd-shimmer-opacity, 0.6);
	animation: yb-bsd-shimmer var(--yb-bsd-duration, 3s) linear infinite, yb-bsd-shimmer calc(var(--yb-bsd-duration, 3s) / var(--yb-bsd-slow, 0.4)) linear infinite reverse paused;
	animation-composition: add;
}

/* Inner glow: always breathing, fades in on hover and focus. */
.yb-bsd-widget .yb-bsd-button .yb-bsd-fx-glow {
	width: calc(100% + 1rem);
	height: calc(100% + 1rem);
	box-shadow: inset 0 -1ex 2rem var(--yb-bsd-glow-spread, 4px) var(--yb-bsd-glow);
	opacity: 0;
	transition: opacity var(--yb-bsd-bloom-dur, 800ms) var(--yb-bsd-bloom-ease, ease);
	animation: yb-bsd-breathe calc(var(--yb-bsd-duration, 3s) * 1.5) linear infinite;
}

/* Hover and keyboard focus */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) {
	--yb-bsd-c-bg: var(--yb-ov-bg-h, var(--yb-ov-bg, var(--yb-bsd-hover-bg)));
	--yb-bsd-c-fg: var(--yb-ov-fg-h, var(--yb-ov-fg, var(--yb-bsd-hover-fg)));
	--yb-bsd-c-icon: var(--yb-ov-icon-h, var(--yb-ov-icon, var(--yb-bsd-hover-icon)));
	--yb-bsd-c-border: var(--yb-ov-border-h, var(--yb-ov-border, var(--yb-bsd-hover-border)));
	--yb-bsd-c-tint: var(--yb-bsd-hover-tint);
	--yb-bsd-c-muted: var(--yb-ov-muted-h, var(--yb-ov-muted, var(--yb-bsd-hover-muted, currentColor)));
	--yb-bsd-c-ibg: var(--yb-ov-ibg-h, var(--yb-ov-ibg, var(--yb-bsd-hover-ibg, transparent)));
	--yb-bsd-c-iborder: var(--yb-ov-iborder-h, var(--yb-ov-iborder, var(--yb-bsd-hover-iborder, transparent)));
	text-decoration: none;
}
/* Keyboard focus only (never a mouse click), then the pressed state; each falls back to the hover value. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:where(:not(.yb-bsd-no-hover)):is(:focus-visible, .yb-bsd-state-focus) {
	--yb-bsd-c-bg: var(--yb-ov-bg-f, var(--yb-ov-bg-h, var(--yb-ov-bg, var(--yb-bsd-hover-bg))));
	--yb-bsd-c-fg: var(--yb-ov-fg-f, var(--yb-ov-fg-h, var(--yb-ov-fg, var(--yb-bsd-hover-fg))));
	--yb-bsd-c-icon: var(--yb-ov-icon-f, var(--yb-ov-icon-h, var(--yb-ov-icon, var(--yb-bsd-hover-icon))));
	--yb-bsd-c-border: var(--yb-ov-border-f, var(--yb-ov-border-h, var(--yb-ov-border, var(--yb-bsd-hover-border))));
	--yb-bsd-c-muted: var(--yb-ov-muted-f, var(--yb-ov-muted-h, var(--yb-ov-muted, var(--yb-bsd-hover-muted, currentColor))));
	--yb-bsd-c-ibg: var(--yb-ov-ibg-f, var(--yb-ov-ibg-h, var(--yb-ov-ibg, var(--yb-bsd-hover-ibg, transparent))));
	--yb-bsd-c-iborder: var(--yb-ov-iborder-f, var(--yb-ov-iborder-h, var(--yb-ov-iborder, var(--yb-bsd-hover-iborder, transparent))));
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:where(:not(.yb-bsd-no-hover)):is(:active, .yb-bsd-state-pressed) {
	--yb-bsd-c-bg: var(--yb-ov-bg-a, var(--yb-ov-bg-h, var(--yb-ov-bg, var(--yb-bsd-hover-bg))));
	--yb-bsd-c-fg: var(--yb-ov-fg-a, var(--yb-ov-fg-h, var(--yb-ov-fg, var(--yb-bsd-hover-fg))));
	--yb-bsd-c-icon: var(--yb-ov-icon-a, var(--yb-ov-icon-h, var(--yb-ov-icon, var(--yb-bsd-hover-icon))));
	--yb-bsd-c-border: var(--yb-ov-border-a, var(--yb-ov-border-h, var(--yb-ov-border, var(--yb-bsd-hover-border))));
	--yb-bsd-c-muted: var(--yb-ov-muted-a, var(--yb-ov-muted-h, var(--yb-ov-muted, var(--yb-bsd-hover-muted, currentColor))));
	--yb-bsd-c-ibg: var(--yb-ov-ibg-a, var(--yb-ov-ibg-h, var(--yb-ov-ibg, var(--yb-bsd-hover-ibg, transparent))));
	--yb-bsd-c-iborder: var(--yb-ov-iborder-a, var(--yb-ov-iborder-h, var(--yb-ov-iborder, var(--yb-bsd-hover-iborder, transparent))));
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-hover-shadow:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) {
	box-shadow: 0 var(--yb-bsd-shadow-offset, 8px) 22px color-mix(in srgb, var(--yb-bsd-shadow-color, #000) var(--yb-bsd-shadow-strength, 24%), transparent);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-light.yb-bsd-bloom:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) {
	--yb-bsd-percent: 20%;
	--yb-bsd-angle-offset: 95deg;
	--yb-bsd-shine: var(--yb-bsd-hover-shine);
	animation-play-state: running;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-bloom:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) :is(.yb-bsd-fx-ring, .yb-bsd-fx-halo, .yb-bsd-fx-wash, .yb-bsd-fx-tint.is-travel) {
	--yb-bsd-percent: 20%;
	--yb-bsd-angle-offset: 95deg;
	--yb-bsd-shine: var(--yb-bsd-hover-shine);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-bloom:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) :is(.yb-bsd-fx-ring, .yb-bsd-fx-halo, .yb-bsd-fx-wash, .yb-bsd-fx-tint.is-travel),
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-bloom:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-fx-pattern,
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-bloom:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-fx-shimmer {
	animation-play-state: running;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-fx-glow {
	opacity: var(--yb-bsd-glow-max, 1);
}

/* Lift on hover and keyboard focus (replaces the old press-down); distance comes from System Settings. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-press:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus, .yb-bsd-state-pressed) {
	translate: 0 calc(-1 * var(--yb-bsd-lift, 3px));
}
/* Keyboard focus outline */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:is(:focus-visible, .yb-bsd-state-focus) {
	outline: 2px solid var(--yb-bsd-focus, currentColor);
	outline-offset: 4px;
}

/* Icon sweep */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-icon-animated:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-icon-right {
	animation: yb-bsd-icon-sweep-right 0.55s cubic-bezier(0.65, 0, 0.076, 1);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-icon-animated:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-icon-left {
	animation: yb-bsd-icon-sweep-left 0.55s cubic-bezier(0.65, 0, 0.076, 1);
}

/* Link style: icon circle that widens behind the label. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style.yb-bsd-link-style {
	justify-content: flex-start;
	gap: 0;
	min-height: var(--yb-bsd-h, 3rem);
	padding: 0 0.8em 0 0;
	overflow: hidden;
	background-color: transparent;
	text-align: left;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style::before {
	content: "";
	position: absolute;
	z-index: 0;
	inset: 0 auto 0 0;
	width: var(--yb-bsd-h, 3rem);
	height: 100%;
	border-radius: var(--yb-bsd-radius, 12px);
	background-color: var(--yb-bsd-c-bg);
	pointer-events: none;
	transition: width 0.45s cubic-bezier(0.65, 0, 0.076, 1), background-color var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus)::before {
	width: 100%;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-fx-link {
	inset: 0 auto 0 0;
	width: var(--yb-bsd-h, 3rem);
	border-radius: var(--yb-bsd-radius, 12px);
	transition: width 0.45s cubic-bezier(0.65, 0, 0.076, 1);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-fx-link {
	width: 100%;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-fx-link .yb-bsd-fx-ring {
	inset: 0;
	padding: 2px;
	--yb-bsd-shine: var(--yb-bsd-rest-shine);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-icon {
	position: absolute;
	z-index: 2;
	inset: 0 auto 0 0;
	width: var(--yb-bsd-h, 3rem);
	height: 100%;
	margin: 0;
	animation: none;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-label {
	z-index: 2;
	margin-inline-start: var(--yb-bsd-h, 3rem);
	padding-inline: 0.25em;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-link-arrow svg { display: none; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-link-arrow::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 0.55rem;
	height: 0.55rem;
	border-top: 0.125rem solid currentColor;
	border-right: 0.125rem solid currentColor;
	transform: translate(-50%, -50%) rotate(45deg);
	pointer-events: none;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style .yb-bsd-link-arrow::after {
	content: "";
	position: absolute;
	top: calc(50% - 0.0625rem);
	left: calc(50% - 0.75rem);
	width: 0;
	height: 0.125rem;
	background: currentColor;
	pointer-events: none;
	transition: width 0.45s cubic-bezier(0.65, 0, 0.076, 1);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-link-style:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-link-arrow::after {
	width: 0.75rem;
}

/* Marquee runs continuously and pauses on hover and focus. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label { max-width: min(12em, 100%); }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label > span {
	display: inline-block;
	flex: none;
	animation: yb-bsd-marquee 6s linear infinite;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label > span::after {
	content: attr(data-text);
	padding-inline-start: 1.5em;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee:is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-label > span {
	animation-play-state: paused;
}

/* Disabled */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-disabled,
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-state-disabled,
.yb-bsd-widget .yb-bsd-button.yb-bsd-button[aria-disabled="true"],
.yb-bsd-widget .yb-bsd-button.yb-bsd-button:disabled {
	opacity: var(--yb-bsd-disabled-opacity, 0.48);
	cursor: not-allowed;
	pointer-events: none;
	filter: saturate(0.65);
}

/* Form action feedback */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-spinner {
	display: none;
	flex: 0 0 auto;
	box-sizing: border-box;
	width: 0.9em;
	height: 0.9em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.is-loading { cursor: progress; opacity: 0.82; }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.is-loading .yb-bsd-spinner {
	display: inline-block;
	animation: yb-bsd-spin 0.7s linear infinite;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.is-success {
	--yb-bsd-c-bg: var(--yb-bsd-success-bg);
	--yb-bsd-c-fg: var(--yb-bsd-success-fg);
	--yb-bsd-c-icon: var(--yb-bsd-success-fg);
	--yb-bsd-c-border: var(--yb-bsd-success-bg);
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.is-error {
	--yb-bsd-c-bg: var(--yb-bsd-error-bg);
	--yb-bsd-c-fg: var(--yb-bsd-error-fg);
	--yb-bsd-c-icon: var(--yb-bsd-error-fg);
	--yb-bsd-c-border: var(--yb-bsd-error-bg);
}
.yb-bsd-status {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

/* Gallery samples keep the effect layers still unless they show the default or hover state. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-still.yb-bsd-light {
	animation: none;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-still :is(.yb-bsd-fx-ring, .yb-bsd-fx-halo, .yb-bsd-fx-wash, .yb-bsd-fx-tint),
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-still .yb-bsd-fx-pattern,
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-still .yb-bsd-fx-shimmer,
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-still .yb-bsd-fx-glow {
	animation: none;
}

@keyframes yb-bsd-angle {
	to { --yb-bsd-angle: 360deg; }
}
@keyframes yb-bsd-pattern-angle {
	to { --yb-bsd-pattern-angle: 360deg; }
}
@keyframes yb-bsd-shimmer {
	to { rotate: 360deg; }
}
@keyframes yb-bsd-breathe {
	from, to { scale: 1; }
	50% { scale: 1.2; }
}
@keyframes yb-bsd-spin {
	to { transform: rotate(360deg); }
}
@keyframes yb-bsd-marquee {
	to { transform: translateX(-50%); }
}
@keyframes yb-bsd-icon-sweep-right {
	0% { transform: translateX(0); opacity: 1; }
	45% { transform: translateX(300%); opacity: 0; }
	46% { transform: translateX(-300%); opacity: 0; }
	100% { transform: translateX(0); opacity: 1; }
}
@keyframes yb-bsd-icon-sweep-left {
	0% { transform: translateX(0); opacity: 1; }
	45% { transform: translateX(-300%); opacity: 0; }
	46% { transform: translateX(300%); opacity: 0; }
	100% { transform: translateX(0); opacity: 1; }
}

/* Reduced motion: no rotation, breathing, sweeping or marquee; the ring stays at a fixed angle. */
@media (prefers-reduced-motion: reduce) {
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-light {
		animation: none;
	}
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button :is(.yb-bsd-fx-ring, .yb-bsd-fx-halo, .yb-bsd-fx-wash, .yb-bsd-fx-tint.is-travel),
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-fx-pattern,
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-fx-shimmer,
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button .yb-bsd-fx-glow {
		animation: none;
	}
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-icon-animated:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-icon-right,
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-icon-animated:where(:not(.yb-bsd-no-hover)):is(:hover, :focus-visible, .yb-bsd-state-hover, .yb-bsd-state-focus) .yb-bsd-icon-left {
		animation: none;
	}
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label { max-width: none; overflow: visible; white-space: normal; }
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label > span { animation: none; transform: none; white-space: normal; }
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-marquee .yb-bsd-label > span::after { content: none; }
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.is-loading .yb-bsd-spinner { animation-duration: 2s; }
}

/* Per-device width and alignment chosen in Elementor */
@media (max-width: 1024px) {
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-width-full-tablet { width: 100%; }
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-width-auto-tablet { width: auto; }
	.yb-bsd-align-left-tablet { justify-content: flex-start; }
	.yb-bsd-align-center-tablet { justify-content: center; }
	.yb-bsd-align-right-tablet { justify-content: flex-end; }
}
@media (max-width: 767px) {
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-width-full-mobile { width: 100%; }
	.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-width-auto-mobile { width: auto; }
	.yb-bsd-align-left-mobile { justify-content: flex-start; }
	.yb-bsd-align-center-mobile { justify-content: center; }
	.yb-bsd-align-right-mobile { justify-content: flex-end; }
}
/* ------------------------------------------------------------------------------------------
   Eyebrow, trust badge, social link and back to top.
   Layout sizes come from the shared style or from Elementor controls (--yb-ov-* on the widget wrapper).
   Properties that Elementor's typography controls write are set with :where() so those controls always win.
   ------------------------------------------------------------------------------------------ */

/* Eyebrow: static pill; text may wrap on small screens instead of overflowing. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-label .yb-bsd-label {
	max-width: 100%;
	overflow: visible;
	white-space: normal;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-label { cursor: default; }

/* Square icon boxes (social link, back to top) */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-box-style.yb-bsd-icon-only {
	flex: 0 0 auto;
	width: var(--yb-bsd-box);
	height: var(--yb-bsd-box);
	min-width: 0;
	min-height: 0;
	padding: 0;
	aspect-ratio: auto;
}

/* Trust badge: icon box on the left, two text rows on the right. */
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge {
	display: inline-flex;
	justify-content: flex-start;
	align-items: center;
	text-align: start;
	min-width: 0;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge .yb-bsd-badge-icon {
	position: relative;
	z-index: 1;
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: var(--yb-bsd-box);
	height: var(--yb-bsd-box);
	border: var(--yb-bsd-rest-bw, 1px) solid var(--yb-bsd-c-iborder);
	border-radius: var(--yb-bsd-inner-radius);
	background-color: var(--yb-bsd-c-ibg);
	transition: background-color var(--yb-bsd-color-dur, 200ms) ease, border-color var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge .yb-bsd-badge-icon .yb-bsd-icon {
	position: static;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge .yb-bsd-badge-text {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--yb-bsd-row-gap);
	min-width: 0;
	text-align: start;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge :is(.yb-bsd-badge-title, .yb-bsd-badge-subtitle) {
	display: block;
	max-width: 100%;
	overflow-wrap: anywhere;
	white-space: normal;
	background: none;
	text-decoration: none;
	transition: color var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge .yb-bsd-badge-title { color: var(--yb-bsd-c-muted); }
.yb-bsd-widget .yb-bsd-button.yb-bsd-button.yb-bsd-type-badge .yb-bsd-badge-subtitle { color: var(--yb-bsd-c-fg); }
:where(.yb-bsd-widget .yb-bsd-badge-title) { font-size: 0.85em; }
:where(.yb-bsd-widget .yb-bsd-badge-subtitle) { font-size: 1em; }

/* Social links: a wrapping flex row; gap and alignment come from Elementor. */
.yb-bsd-widget .yb-bsd-social-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--yb-ov-list-gap, 0.75em);
	margin: 0;
	padding: 0;
	list-style: none;
}
.yb-bsd-widget .yb-bsd-social-list > li {
	display: block;
	margin: 0;
	padding: 0;
	list-style: none;
}
.yb-bsd-widget .yb-bsd-social-list > li::marker { content: none; }

/* Back to top: fixed to the screen; shown after the scroll distance chosen in Elementor (set by back-to-top.js). */
.yb-bsd-widget .yb-bsd-totop {
	position: fixed;
	z-index: var(--yb-ov-z, 99);
	right: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em));
	left: auto;
	bottom: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em));
	top: auto;
	transition: opacity var(--yb-bsd-color-dur, 200ms) ease, visibility var(--yb-bsd-color-dur, 200ms) ease, translate var(--yb-bsd-color-dur, 200ms) ease;
}
.yb-bsd-widget .yb-bsd-totop.is-h-left { left: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em)); right: auto; }
.yb-bsd-widget .yb-bsd-totop.is-v-top { top: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em)); bottom: auto; }
.yb-bsd-widget .yb-bsd-totop[data-yb-ready]:not(.is-visible) {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	translate: 0 0.5em;
}

@media (max-width: 1024px) {
	.yb-bsd-widget .yb-bsd-totop.is-h-left-tablet { left: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em)); right: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-h-right-tablet { right: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em)); left: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-v-top-tablet { top: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em)); bottom: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-v-bottom-tablet { bottom: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em)); top: auto; }
}
@media (max-width: 767px) {
	.yb-bsd-widget .yb-bsd-totop.is-h-left-mobile { left: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em)); right: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-h-right-mobile { right: var(--yb-ov-x, var(--yb-bsd-off-x, 1.5em)); left: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-v-top-mobile { top: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em)); bottom: auto; }
	.yb-bsd-widget .yb-bsd-totop.is-v-bottom-mobile { bottom: var(--yb-ov-y, var(--yb-bsd-off-y, 1.5em)); top: auto; }
}
@media (prefers-reduced-motion: reduce) {
	.yb-bsd-widget .yb-bsd-totop { transition: none; }
	.yb-bsd-widget .yb-bsd-totop[data-yb-ready]:not(.is-visible) { translate: none; }
}