.xtool-logo-carousel-wrap {
	position: relative;
	overflow: hidden;
}

.xtool-logo-carousel-wrap--fade {
	-webkit-mask-image: linear-gradient(
		to right,
		transparent 0,
		#000 var(--xtool-lc-fade-width, 90px),
		#000 calc(100% - var(--xtool-lc-fade-width, 90px)),
		transparent 100%
	);
	mask-image: linear-gradient(
		to right,
		transparent 0,
		#000 var(--xtool-lc-fade-width, 90px),
		#000 calc(100% - var(--xtool-lc-fade-width, 90px)),
		transparent 100%
	);
}

.xtool-logo-carousel .swiper-wrapper {
	align-items: stretch;
}

/* Continuous Scroll (Marquee) — a plain CSS keyframe animation, not
   Swiper. The track's content is rendered TWICE back to back (see
   render()); translating exactly -50% therefore loops seamlessly with no
   visible jump, and `linear` timing (not ease) is what makes the motion
   genuinely constant-speed rather than a series of eased steps. */
.xtool-lc-marquee {
	overflow: hidden;
}

.xtool-lc-marquee__track {
	display: flex;
	align-items: flex-start;
	width: max-content;
	animation: xtool-lc-marquee-scroll var(--xtool-lc-marquee-duration, 25s) linear infinite;
}

.xtool-logo-carousel-wrap--reverse .xtool-lc-marquee__track {
	animation-direction: reverse;
}

.xtool-logo-carousel-wrap--pause-hover .xtool-lc-marquee:hover .xtool-lc-marquee__track {
	animation-play-state: paused;
}

@keyframes xtool-lc-marquee-scroll {
	from {
		transform: translateX(0);
	}
	to {
		transform: translateX(-50%);
	}
}

.xtool-lc-marquee__track .xtool-lc-card {
	flex: 0 0 auto;
	width: var(--xtool-lc-card-width, 180px);
}

@media (prefers-reduced-motion: reduce) {
	.xtool-lc-marquee__track {
		animation: none;
	}
}

/* .xtool-lc-card is a plain layout wrapper only — NOT the visible white
   box. The box is .xtool-lc-card__logo alone, a fixed square (aspect-ratio
   1/1) sized off its own width; the name/subtitle sit below it, outside
   the box, directly on the page's own background — matching the reference
   screenshot (logo in a square card, text underneath with no card of its
   own), rather than one tall box wrapping logo+text together. */
.xtool-lc-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	height: 100%;
	text-decoration: none;
}

.xtool-lc-card__logo {
	position: relative;
	width: 100%;
	aspect-ratio: 1 / 1;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border-radius: 16px;
	padding: 32px 24px;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

a.xtool-lc-card:hover .xtool-lc-card__logo {
	transform: translateY(-2px);
}

/* "Show Card Box" off — same specificity as the base rule above (both a
   single compound class-descendant selector), which alone would leave
   this at the mercy of source order against Elementor's own generated
   per-instance CSS for card_bg_color/card_radius/card_padding/card_shadow
   (which can still emit a value even while its own control is hidden by
   `condition` — the control is hidden, not its last-saved value).
   !important sidesteps that specificity/order race entirely rather than
   relying on this stylesheet loading after Elementor's. */
.xtool-logo-carousel-wrap--no-box .xtool-lc-card__logo {
	background: none !important;
	border-radius: 0 !important;
	padding: 0 !important;
	box-shadow: none !important;
	aspect-ratio: auto !important;
	width: auto !important;
}

.xtool-lc-card__logo img {
	display: block;
	height: 42px;
	width: auto;
	max-width: 100%;
	object-fit: contain;
	transition: filter 0.25s ease;
}

.xtool-logo-carousel-wrap--grayscale .xtool-lc-card__logo img {
	filter: grayscale(100%);
}

.xtool-logo-carousel-wrap--grayscale a.xtool-lc-card:hover .xtool-lc-card__logo img {
	filter: grayscale(0%);
}

.xtool-lc-slide__text {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	margin-top: 20px;
}

.xtool-lc-slide__name {
	font-size: 15px;
	font-weight: 700;
	color: #1a1814;
	line-height: 1.3;
}

.xtool-lc-slide__subtitle {
	font-size: 12.5px;
	color: #8a8680;
	line-height: 1.4;
}

.xtool-logo-carousel .swiper-button-next,
.xtool-logo-carousel .swiper-button-prev {
	width: 40px;
	height: 40px;
	background: #fff;
	border-radius: 50%;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15);
	color: #1a1814;
	font-size: 16px;
}

/* Kills Swiper's own default pseudo-icon chevron — without this, the
   custom arrow_prev_icon/arrow_next_icon rendered inside the button
   (see render()) would double up with Swiper's built-in one, same fix
   already needed for the Carousel and Container Carousel widgets. */
.xtool-logo-carousel .swiper-button-next:after,
.xtool-logo-carousel .swiper-button-prev:after {
	content: none;
	font-size: 14px;
}

.xtool-logo-carousel .swiper-pagination {
	position: relative;
	margin-top: 16px;
}

.xtool-logo-carousel .swiper-pagination-bullet {
	background: #d4cec7;
	opacity: 1;
}

.xtool-logo-carousel .swiper-pagination-bullet-active {
	background: #1c1c1e;
}
