:root {
	--bcom-motion: 1;
}

a:where([class*="bcom-"]) {
	transition-property: color, background-color, border-color, text-decoration-color, opacity, transform;
}

.bcom-fx-lift,
.bcom-fx-lift-card {
	transition-property: transform, box-shadow, border-color;
	transition-duration: var(--bcom-fx-dur, var(--bcom-duration));
	transition-timing-function: var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-lift:focus-within,
.bcom-fx-lift-card:focus-within {
	transform: translateY(calc(var(--bcom-fx-lift) * -1 * var(--bcom-motion)));
	box-shadow: var(--bcom-fx-shadow, var(--bcom-shadow-lift));
}

.bcom-fx-lift-card:focus-within {
	border-color: var(--bcom-fx-border, var(--bcom-accent-100));
}

.bcom-fx-lift:focus-visible,
.bcom-fx-lift-card:focus-visible {
	box-shadow: var(--bcom-focus-ring), var(--bcom-fx-shadow, var(--bcom-shadow-lift));
}

.bcom-fx-zoom-img {
	overflow: hidden;
}

.bcom-fx-zoom-img :where(img, .bcom-fx-zoom-target) {
	transition: transform var(--bcom-fx-dur, var(--bcom-dur-slow)) var(--bcom-fx-ease, var(--bcom-ease-out));
}

.bcom-fx-zoom-img:focus-within :where(img, .bcom-fx-zoom-target) {
	transform: scale(calc(1 + (var(--bcom-fx-scale, var(--bcom-fx-zoom)) - 1) * var(--bcom-motion)));
}

.bcom-fx-swap-img {
	position: relative;
}

.bcom-fx-swap-img__alt {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity var(--bcom-fx-dur, 250ms) var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-swap-img:focus-within .bcom-fx-swap-img__alt {
	opacity: 1;
}

.bcom-fx-underline {
	text-decoration: none;
	background-image: linear-gradient(var(--bcom-fx-line-color, currentColor), var(--bcom-fx-line-color, currentColor));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0% var(--bcom-fx-line, 2px);
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	transition: background-size var(--bcom-fx-dur, 250ms) var(--bcom-fx-ease, var(--bcom-ease)), color var(--bcom-dur-fast) var(--bcom-ease);
}

.bcom-fx-underline:focus-visible,
.bcom-fx-underline.is-active,
.bcom-fx-underline[aria-current] {
	background-size: 100% var(--bcom-fx-line, 2px);
}

.bcom-fx-arrow-reveal {
	--bcom-fx-arrow-size: 18px;
}

.bcom-fx-arrow-reveal .bcom-fx-arrow {
	display: inline-flex;
	flex: none;
	width: var(--bcom-fx-arrow-size);
	height: var(--bcom-fx-arrow-size);
	transition: transform var(--bcom-dur-fast) cubic-bezier(0.23, 1, 0.32, 1);
}

.bcom-fx-arrow-reveal .bcom-fx-arrow :where(svg) {
	width: 100%;
	height: 100%;
}

.bcom-fx-arrow-reveal:focus-visible .bcom-fx-arrow,
.bcom-fx-arrow-reveal.is-active .bcom-fx-arrow {
	transform: translateX(calc(2px * var(--bcom-motion)));
}

.bcom-fx-bg-shift {
	transition: background-color var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, cubic-bezier(0.23, 1, 0.32, 1)), color var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, cubic-bezier(0.23, 1, 0.32, 1));
}

.bcom-fx-bg-shift:focus-visible {
	background-color: var(--bcom-fx-bg-hover, var(--bcom-accent-hover));
	color: var(--bcom-fx-fg-hover, var(--bcom-on-accent));
}

.bcom-fx-press {
	transition: transform var(--bcom-dur-fast) cubic-bezier(0.23, 1, 0.32, 1);
}

.bcom-fx-press:active {
	transform: scale(calc(1 - (1 - var(--bcom-fx-press, 0.97)) * var(--bcom-motion)));
}

.bcom-fx-dim {
	transition: opacity var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-dim:focus-visible {
	opacity: var(--bcom-fx-dim, 0.8);
}

.bcom-fx-scrim {
	position: relative;
	isolation: isolate;
}

.bcom-fx-scrim::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background-color: var(--bcom-fx-scrim-color, var(--bcom-ink));
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-scrim__icon {
	position: absolute;
	inset: 50% auto auto 50%;
	z-index: 2;
	opacity: 0;
	transform: translate(-50%, -50%);
	pointer-events: none;
	transition: opacity var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-scrim:focus-within::after {
	opacity: var(--bcom-fx-scrim-opacity, 0.4);
}

.bcom-fx-scrim:focus-within .bcom-fx-scrim__icon {
	opacity: 1;
}

@keyframes bcom-fx-fade-in {
	from {
		opacity: 0;
	}
}

@keyframes bcom-fx-fade-up {
	from {
		opacity: 0;
		transform: translateY(calc(var(--bcom-fx-dist) * var(--bcom-motion)));
	}
}

@keyframes bcom-fx-fade-down-out {
	to {
		opacity: 0;
		transform: translateY(calc(25% * var(--bcom-motion)));
	}
}

@keyframes bcom-fx-toast-in {
	from {
		opacity: 0;
		transform: translateY(calc(25% * var(--bcom-motion)));
	}
}

@keyframes bcom-fx-spin {
	to {
		transform: rotate(1turn);
	}
}

@keyframes bcom-fx-blink {
	50% {
		opacity: 0.35;
	}
}

@keyframes bcom-fx-sweep {
	from {
		transform: translateX(-100%);
	}

	to {
		transform: translateX(100%);
	}
}

@keyframes bcom-fx-pulse {
	50% {
		transform: scale(calc(1 + 0.12 * var(--bcom-motion)));
	}
}

@keyframes bcom-fx-pop {
	from {
		opacity: 0;
		transform: scale(calc(1 - 0.2 * var(--bcom-motion)));
	}
}

@keyframes bcom-fx-marquee {
	to {
		transform: translateX(-50%);
	}
}

.bcom-fx-fade-in {
	animation: bcom-fx-fade-in var(--bcom-fx-dur, 300ms) var(--bcom-fx-ease, var(--bcom-ease-out)) var(--bcom-fx-delay, 0ms) both;
}

.bcom-fx-fade-up {
	animation: bcom-fx-fade-up var(--bcom-fx-dur, 300ms) var(--bcom-fx-ease, var(--bcom-ease-out)) var(--bcom-fx-delay, 0ms) both;
}

:is(.bcom-fx-reveal, [data-bcom-reveal]) {
	--bcom-fx-reveal-x: 0px;
	--bcom-fx-reveal-y: var(--bcom-fx-dist);
	--bcom-fx-reveal-scale: 1;
	transition-property: opacity, transform;
	transition-duration: var(--bcom-fx-dur, var(--bcom-dur-slow));
	transition-timing-function: var(--bcom-fx-ease, var(--bcom-ease-out));
	transition-delay: calc(var(--bcom-fx-delay, 0ms) + min(var(--bcom-fx-index, 0), 8) * var(--bcom-fx-stagger));
}

:is(.bcom-fx-reveal--fade, [data-bcom-reveal="fade"]) {
	--bcom-fx-reveal-y: 0px;
}

:is(.bcom-fx-reveal--left, [data-bcom-reveal="left"]) {
	--bcom-fx-reveal-x: calc(var(--bcom-fx-dist) * -1);
	--bcom-fx-reveal-y: 0px;
}

:is(.bcom-fx-reveal--right, [data-bcom-reveal="right"]) {
	--bcom-fx-reveal-x: var(--bcom-fx-dist);
	--bcom-fx-reveal-y: 0px;
}

:is(.bcom-fx-reveal--zoom, [data-bcom-reveal="zoom"]) {
	--bcom-fx-reveal-y: 0px;
	--bcom-fx-reveal-scale: 0.96;
}

@media (scripting: enabled) {
	:is(.bcom-fx-reveal, [data-bcom-reveal]):not(.is-visible) {
		opacity: 0;
		transform: translate(calc(var(--bcom-fx-reveal-x) * var(--bcom-motion)), calc(var(--bcom-fx-reveal-y) * var(--bcom-motion))) scale(calc(1 - (1 - var(--bcom-fx-reveal-scale)) * var(--bcom-motion)));
	}
}

.elementor-editor-active :is(.bcom-fx-reveal, [data-bcom-reveal]) {
	opacity: 1;
	transform: none;
}

.bcom-fx-sticky {
	position: sticky;
	top: var(--bcom-fx-sticky-top, 0px);
	z-index: var(--bcom-z-header);
	transition-property: box-shadow, background-color, transform;
	transition-duration: var(--bcom-fx-dur, var(--bcom-duration));
	transition-timing-function: var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-is-scrolled .bcom-fx-sticky,
.bcom-fx-sticky.is-stuck {
	min-block-size: var(--bcom-header-h-stuck);
	background-color: var(--bcom-fx-sticky-bg, var(--bcom-bg-elevated));
	box-shadow: var(--bcom-fx-shadow, var(--bcom-shadow-pill));
}

.bcom-fx-overlay {
	position: fixed;
	inset: 0;
	z-index: var(--bcom-z-overlay);
	background-color: var(--bcom-overlay);
	opacity: 0;
	visibility: hidden;
	transition: opacity 300ms var(--bcom-ease), visibility 0s linear 300ms;
}

.bcom-fx-overlay.is-open {
	opacity: 1;
	visibility: visible;
	transition: opacity 300ms var(--bcom-ease), visibility 0s;
}

.bcom-fx-drawer {
	--bcom-fx-drawer-from: 100%;
	position: fixed;
	inset-block: 0;
	inset-inline-end: 0;
	z-index: var(--bcom-z-drawer);
	width: min(var(--bcom-fx-drawer-w, 400px), 100vw);
	max-width: 100%;
	overflow-y: auto;
	overscroll-behavior: contain;
	background-color: var(--bcom-bg-popover);
	box-shadow: var(--bcom-shadow-drawer);
	opacity: var(--bcom-motion);
	visibility: hidden;
	transform: translateX(calc(var(--bcom-fx-drawer-from) * var(--bcom-motion)));
	transition: transform var(--bcom-fx-dur, var(--bcom-dur-slow)) var(--bcom-fx-ease, var(--bcom-ease-out)), opacity var(--bcom-fx-dur, var(--bcom-dur-slow)) var(--bcom-fx-ease, var(--bcom-ease-out)), visibility 0s linear var(--bcom-fx-dur, var(--bcom-dur-slow));
}

.bcom-fx-drawer--start {
	--bcom-fx-drawer-from: -100%;
	inset-inline: 0 auto;
	box-shadow: var(--bcom-shadow-lg);
}

.bcom-fx-drawer.is-open {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition-delay: 0s;
}

:root:has(.bcom-fx-drawer.is-open),
.bcom-scroll-lock {
	overflow: hidden;
}

.bcom-fx-dropdown {
	opacity: 0;
	visibility: hidden;
	transform: translateY(calc(-8px * var(--bcom-motion)));
	pointer-events: none;
	transition: opacity var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease)), transform var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease)), visibility 0s linear var(--bcom-fx-dur, var(--bcom-duration));
}

.bcom-fx-dropdown.is-open,
.bcom-fx-dropdown-host:focus-within > .bcom-fx-dropdown,
[aria-expanded="true"] + .bcom-fx-dropdown {
	opacity: 1;
	visibility: visible;
	transform: none;
	pointer-events: auto;
	transition-delay: 0s;
}

.bcom-fx-accordion {
	display: grid;
	grid-template-rows: 0fr;
	transition: grid-template-rows var(--bcom-fx-dur, 300ms) var(--bcom-fx-ease, var(--bcom-ease-in-out));
}

.bcom-fx-accordion > * {
	min-height: 0;
	overflow: hidden;
}

.bcom-fx-accordion.is-open,
[aria-expanded="true"] + .bcom-fx-accordion {
	grid-template-rows: 1fr;
}

.bcom-fx-toast-region {
	position: fixed;
	inset-inline: var(--bcom-gutter);
	inset-block-end: var(--bcom-space-5);
	z-index: var(--bcom-z-toast);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--bcom-space-2);
	pointer-events: none;
}

.bcom-fx-toast {
	display: flex;
	align-items: center;
	gap: var(--bcom-space-3);
	max-width: min(440px, 100%);
	padding: var(--bcom-space-3) var(--bcom-space-4);
	border-radius: var(--bcom-radius-md);
	background-color: var(--bcom-bg-inverse);
	color: var(--bcom-fg-inverse);
	box-shadow: var(--bcom-shadow-md);
	font-size: var(--bcom-fs-sm);
	pointer-events: auto;
	animation: bcom-fx-toast-in var(--bcom-fx-dur, 300ms) var(--bcom-ease-out) both;
}

.bcom-fx-toast.is-leaving {
	animation: bcom-fx-fade-down-out var(--bcom-fx-dur, 300ms) var(--bcom-ease) forwards;
}

.bcom-fx-shimmer {
	position: relative;
	overflow: hidden;
	background-color: var(--bcom-surface);
	border-radius: var(--bcom-radius-sm);
}

.bcom-fx-shimmer::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: linear-gradient(90deg, transparent, color-mix(in srgb, var(--bcom-bg-elevated) 70%, transparent), transparent);
	transform: translateX(-100%);
	animation: bcom-fx-sweep var(--bcom-fx-dur, 1.4s) linear infinite;
}

.bcom-fx-spinner {
	display: inline-block;
	flex: none;
	width: var(--bcom-fx-spinner-size, 1.25em);
	height: var(--bcom-fx-spinner-size, 1.25em);
	border: var(--bcom-fx-spinner-width, 2px) solid currentColor;
	border-inline-end-color: transparent;
	border-radius: 50%;
	vertical-align: middle;
	animation: bcom-fx-spin var(--bcom-fx-dur, 0.8s) linear infinite;
}

.bcom-fx-spinner--sm {
	--bcom-fx-spinner-size: 16px;
}

.bcom-fx-spinner--md {
	--bcom-fx-spinner-size: 24px;
}

.bcom-fx-spinner--lg {
	--bcom-fx-spinner-size: 40px;
	--bcom-fx-spinner-width: 3px;
}

.bcom-fx-pulse {
	animation: bcom-fx-pulse var(--bcom-fx-dur, var(--bcom-dur-slow)) var(--bcom-ease-out) 1;
}

.bcom-fx-badge-pop {
	animation: bcom-fx-pop var(--bcom-fx-dur, 250ms) var(--bcom-ease-out) var(--bcom-fx-delay, 0ms) both;
}

.bcom-fx-marquee {
	display: flex;
	overflow: hidden;
}

.bcom-fx-marquee__track {
	display: flex;
	flex: none;
	gap: var(--bcom-fx-marquee-gap, var(--bcom-space-6));
	width: max-content;
	padding-inline-end: var(--bcom-fx-marquee-gap, var(--bcom-space-6));
	animation: bcom-fx-marquee var(--bcom-fx-marquee-dur, 30s) linear infinite;
}

.bcom-fx-marquee:focus-within .bcom-fx-marquee__track,
.bcom-fx-marquee.is-paused .bcom-fx-marquee__track {
	animation-play-state: paused;
}

.bcom-fx-fade-slider {
	display: grid;
}

.bcom-fx-fade-slider > * {
	grid-area: 1 / 1;
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--bcom-fx-dur, var(--bcom-dur-hero)) var(--bcom-fx-ease, var(--bcom-ease-in-out)), visibility 0s linear var(--bcom-fx-dur, var(--bcom-dur-hero));
}

.bcom-fx-fade-slider > .is-active {
	opacity: 1;
	visibility: visible;
	transition-delay: 0s;
}

.bcom-fx-ripple {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.bcom-fx-ripple::after {
	content: "";
	position: absolute;
	inset-block-start: var(--bcom-fx-ripple-y, 50%);
	inset-inline-start: var(--bcom-fx-ripple-x, 50%);
	z-index: -1;
	width: 240%;
	aspect-ratio: 1;
	border-radius: 50%;
	background-color: currentColor;
	opacity: 0;
	transform: translate(-50%, -50%) scale(0);
	transition: transform var(--bcom-dur-slow) var(--bcom-ease-out), opacity var(--bcom-dur-slow) var(--bcom-ease-out);
	pointer-events: none;
}

.bcom-fx-ripple:active::after {
	opacity: 0.12;
	transform: translate(-50%, -50%) scale(var(--bcom-motion));
	transition-duration: 0s;
}

.bcom-fx-counter {
	font-variant-numeric: tabular-nums;
}

.bcom-fx-chevron-nudge :where(.bcom-fx-chevron, svg) {
	transition: transform var(--bcom-fx-dur, var(--bcom-duration)) var(--bcom-fx-ease, var(--bcom-ease));
}

.bcom-fx-chevron-nudge:focus-visible :where(.bcom-fx-chevron, svg) {
	transform: translate(calc(var(--bcom-fx-nudge-x, 0px) * var(--bcom-motion)), calc(var(--bcom-fx-nudge-y, -5px) * var(--bcom-motion)));
}

@media (hover: hover) and (pointer: fine) {
	.bcom-fx-lift:hover,
	.bcom-fx-lift-card:hover {
		transform: translateY(calc(var(--bcom-fx-lift) * -1 * var(--bcom-motion)));
		box-shadow: var(--bcom-fx-shadow, var(--bcom-shadow-lift));
	}

	.bcom-fx-lift-card:hover {
		border-color: var(--bcom-fx-border, var(--bcom-accent-100));
	}

	.bcom-fx-zoom-img:hover :where(img, .bcom-fx-zoom-target) {
		transform: scale(calc(1 + (var(--bcom-fx-scale, var(--bcom-fx-zoom)) - 1) * var(--bcom-motion)));
	}

	.bcom-fx-swap-img:hover .bcom-fx-swap-img__alt {
		opacity: 1;
	}

	.bcom-fx-underline:hover {
		background-size: 100% var(--bcom-fx-line, 2px);
	}

	.bcom-fx-arrow-reveal:hover .bcom-fx-arrow {
		transform: translateX(calc(2px * var(--bcom-motion)));
	}

	.bcom-fx-bg-shift:hover {
		background-color: var(--bcom-fx-bg-hover, var(--bcom-accent-hover));
		color: var(--bcom-fx-fg-hover, var(--bcom-on-accent));
	}

	.bcom-fx-dim:hover {
		opacity: var(--bcom-fx-dim, 0.8);
	}

	.bcom-fx-scrim:hover::after {
		opacity: var(--bcom-fx-scrim-opacity, 0.4);
	}

	.bcom-fx-scrim:hover .bcom-fx-scrim__icon {
		opacity: 1;
	}

	.bcom-fx-dropdown-host:hover > .bcom-fx-dropdown {
		opacity: 1;
		visibility: visible;
		transform: none;
		pointer-events: auto;
		transition-delay: var(--bcom-fx-open-delay, 60ms);
	}

	.bcom-fx-marquee:hover .bcom-fx-marquee__track {
		animation-play-state: paused;
	}

	.bcom-fx-chevron-nudge:hover :where(.bcom-fx-chevron, svg) {
		transform: translate(calc(var(--bcom-fx-nudge-x, 0px) * var(--bcom-motion)), calc(var(--bcom-fx-nudge-y, -5px) * var(--bcom-motion)));
	}
}

@media (prefers-reduced-motion: reduce) {
	:root {
		--bcom-motion: 0;
	}

	:is(.bcom-fx-reveal, [data-bcom-reveal]) {
		transition-delay: 0s;
	}

	.bcom-fx-shimmer::after,
	.bcom-fx-pulse,
	.bcom-fx-marquee__track {
		animation: none !important;
	}

	.bcom-fx-marquee__track {
		flex-wrap: wrap;
		width: auto;
	}

	.bcom-fx-marquee__track [aria-hidden="true"] {
		display: none;
	}

	.bcom-fx-spinner,
	.bcom-btn.is-loading::after,
	.bcom-btn[aria-busy="true"]::after {
		animation: bcom-fx-blink 1.6s ease-in-out infinite !important;
	}
}

.bcom-no-motion {
	--bcom-motion: 0;
}

.bcom-no-motion *,
.bcom-no-motion *::before,
.bcom-no-motion *::after {
	animation-duration: 1ms !important;
	animation-delay: 0s !important;
	animation-iteration-count: 1 !important;
	transition-duration: 1ms !important;
	transition-delay: 0s !important;
	scroll-behavior: auto !important;
}

.bcom-no-motion .bcom-fx-shimmer::after,
.bcom-no-motion .bcom-fx-pulse,
.bcom-no-motion .bcom-fx-marquee__track {
	animation: none !important;
}

.bcom-no-motion .bcom-fx-marquee__track {
	flex-wrap: wrap;
	width: auto;
}

.bcom-no-motion .bcom-fx-marquee__track [aria-hidden="true"] {
	display: none;
}

.bcom-no-motion .bcom-fx-spinner,
.bcom-no-motion .bcom-btn.is-loading::after,
.bcom-no-motion .bcom-btn[aria-busy="true"]::after {
	animation: bcom-fx-blink 1.6s ease-in-out infinite !important;
}
