/*!
 * Lexiata XSlider — Frontend
 * Theme-proof CSS with 4 animations, 4 bullet styles, 4 arrow styles.
 */

/* ------------------------------------------------------------------ *
 *  Wrapper
 * ------------------------------------------------------------------ */
.lex-xs{
	position: relative;
	width: 100%;
	overflow: hidden;
	background: #000;
	box-sizing: border-box;
	-webkit-tap-highlight-color: transparent;
}
.lex-xs *,
.lex-xs *::before,
.lex-xs *::after{ box-sizing: border-box; }

.lex-xs .lex-xs-track{
	position: relative;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	will-change: transform, opacity;
}

/* ==================================================================
 *  ANIMATIONS — 4 types
 * ================================================================== */

/* 1) Horizontal slide (default) */
.lex-xs.lex-xs-anim-horizontal .lex-xs-track{
	display: flex;
	flex-wrap: nowrap;
	transition: transform var(--lex-xs-dur, 800ms) cubic-bezier(.4,0,.2,1);
}
.lex-xs.lex-xs-anim-horizontal .lex-xs-slide{
	flex: 0 0 100%;
	width: 100%;
	height: 100%;
}

/* 2) Vertical slide */
.lex-xs.lex-xs-anim-vertical .lex-xs-track{
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	height: 100%;
	transition: transform var(--lex-xs-dur, 800ms) cubic-bezier(.4,0,.2,1);
}
.lex-xs.lex-xs-anim-vertical .lex-xs-slide{
	flex: 0 0 100%;
	width: 100%;
	height: 100%;
	min-height: 100%;
}

/* 3) Fade — CSS Grid stack (bulletproof, no height collapse) */
.lex-xs.lex-xs-anim-fade .lex-xs-track,
.lex-xs.lex-xs-anim-zoom .lex-xs-track{
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: 1fr;
	height: 100%;
}
.lex-xs.lex-xs-anim-fade .lex-xs-slide,
.lex-xs.lex-xs-anim-zoom .lex-xs-slide{
	grid-column: 1;
	grid-row: 1;
	width: 100%;
	height: 100%;
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--lex-xs-dur, 800ms) cubic-bezier(.4,0,.2,1),
	            transform var(--lex-xs-dur, 800ms) cubic-bezier(.4,0,.2,1);
	z-index: 0;
}
.lex-xs.lex-xs-anim-fade .lex-xs-slide.is-active,
.lex-xs.lex-xs-anim-zoom .lex-xs-slide.is-active{
	opacity: 1;
	pointer-events: auto;
	z-index: 1;
}

/* 4) Zoom-fade — adds subtle scale */
.lex-xs.lex-xs-anim-zoom .lex-xs-slide{
	transform: scale(1.06);
}
.lex-xs.lex-xs-anim-zoom .lex-xs-slide.is-active{
	transform: scale(1);
}

/* ------------------------------------------------------------------ *
 *  Slide
 * ------------------------------------------------------------------ */
.lex-xs .lex-xs-slide{
	position: relative;
	overflow: hidden;
	background-position: center;
	background-size: cover;
}
.lex-xs .lex-xs-link{
	display: block;
	width: 100%;
	height: 100%;
	cursor: pointer;
	text-decoration: none !important;
	color: inherit;
	border: none;
	outline: none;
}
.lex-xs .lex-xs-img{
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: none;
	user-select: none;
	-webkit-user-drag: none;
	pointer-events: none;
}

/* Background fill modes */
.lex-xs.lex-xs-fill-fill .lex-xs-img    { object-fit: cover; }
.lex-xs.lex-xs-fill-fit .lex-xs-img     { object-fit: contain; }
.lex-xs.lex-xs-fill-stretch .lex-xs-img { object-fit: fill; }
.lex-xs.lex-xs-fill-center .lex-xs-img  { object-fit: none; object-position: center; }
.lex-xs.lex-xs-fill-blur_fit .lex-xs-img{ object-fit: contain; position: relative; z-index: 1; }
.lex-xs.lex-xs-fill-blur_fit .lex-xs-slide::before{
	content: "";
	position: absolute;
	inset: -20px;
	background: inherit;
	background-size: cover;
	background-position: center;
	filter: blur(28px) brightness(.7);
	z-index: 0;
}

/* ==================================================================
 *  ARROWS — base reset (theme-proof)
 * ================================================================== */
.lex-xs .lex-xs-arrow,
.lex-xs button.lex-xs-arrow{
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	box-sizing: border-box !important;
	margin: 0 !important;
	font-family: inherit !important;
	font-size: 0 !important;
	line-height: 1 !important;
	text-shadow: none !important;
	text-decoration: none !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	min-width: 0 !important;
	max-width: none !important;
	min-height: 0 !important;
	max-height: none !important;
	box-shadow: none !important;

	position: absolute;
	z-index: 5;
	width: auto;
	height: auto;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--lex-xs-arrow-color, #fff);
	transition: background 200ms ease, transform 200ms ease, border-color 200ms ease, color 200ms ease;
}
.lex-xs .lex-xs-arrow:focus-visible{
	outline: 2px solid var(--lex-xs-arrow-color, #fff);
	outline-offset: 3px;
}
.lex-xs .lex-xs-arrow svg{
	display: block;
	width: 1em;
	height: 1em;
	font-size: 24px;
	pointer-events: none;
	stroke: currentColor;
	fill: none;
}

/* Arrow STYLE: default (rounded with translucent bg) */
.lex-xs.lex-xs-arrow-default .lex-xs-arrow{
	padding: 10px;
	background: rgba(0,0,0,.45);
	border: 1px solid rgba(255,255,255,.15);
	border-radius: 8px;
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
}
.lex-xs.lex-xs-arrow-default .lex-xs-arrow:hover{
	background: rgba(0,0,0,.7) !important;
	border-color: rgba(255,255,255,.3);
}

/* Arrow STYLE: circle */
.lex-xs.lex-xs-arrow-circle .lex-xs-arrow{
	padding: 12px;
	background: rgba(255,255,255,.15);
	border: 1.5px solid rgba(255,255,255,.4);
	border-radius: 50%;
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}
.lex-xs.lex-xs-arrow-circle .lex-xs-arrow:hover{
	background: var(--lex-xs-arrow-color, #fff) !important;
	color: #000 !important;
	border-color: var(--lex-xs-arrow-color, #fff);
	transform: scale(1.05);
}
.lex-xs.lex-xs-arrow-circle.lex-xs-arrow-middle.lex-xs-arrow-prev:hover{ transform: translateY(-50%) scale(1.05); }
.lex-xs.lex-xs-arrow-circle.lex-xs-arrow-middle.lex-xs-arrow-next:hover{ transform: translateY(-50%) scale(1.05); }

/* Arrow STYLE: square */
.lex-xs.lex-xs-arrow-square .lex-xs-arrow{
	padding: 12px;
	background: rgba(0,0,0,.6);
	border: none;
	border-radius: 0;
}
.lex-xs.lex-xs-arrow-square .lex-xs-arrow:hover{
	background: var(--lex-xs-arrow-color, #fff) !important;
	color: #000 !important;
}

/* Arrow STYLE: minimal (no bg, just chevron with subtle drop shadow) */
.lex-xs.lex-xs-arrow-minimal .lex-xs-arrow{
	padding: 4px;
	background: transparent;
	border: none;
	filter: drop-shadow(0 2px 6px rgba(0,0,0,.5));
}
.lex-xs.lex-xs-arrow-minimal .lex-xs-arrow:hover{
	background: transparent !important;
	transform: scale(1.15);
}
.lex-xs.lex-xs-arrow-minimal .lex-xs-arrow svg{ stroke-width: 2.5; }
.lex-xs.lex-xs-arrow-minimal.lex-xs-arrow-middle.lex-xs-arrow-prev:hover{ transform: translateY(-50%) scale(1.15); }
.lex-xs.lex-xs-arrow-minimal.lex-xs-arrow-middle.lex-xs-arrow-next:hover{ transform: translateY(-50%) scale(1.15); }

/* Arrow positions */
.lex-xs .lex-xs-arrow-middle{ top: 50%; transform: translateY(-50%); }
.lex-xs .lex-xs-arrow-middle.lex-xs-arrow-prev{ left: 14px; }
.lex-xs .lex-xs-arrow-middle.lex-xs-arrow-next{ right: 14px; }

.lex-xs .lex-xs-arrow-bottom{ bottom: 16px; }
.lex-xs .lex-xs-arrow-bottom.lex-xs-arrow-prev{ left: 50%; transform: translateX(calc(-50% - 32px)); }
.lex-xs .lex-xs-arrow-bottom.lex-xs-arrow-next{ left: 50%; transform: translateX(calc(-50% + 32px)); }

/* Hide-on-device for arrows */
@media (max-width: 600px)            { .lex-xs.lex-xs-hide-arrow-mobile  .lex-xs-arrow{ display: none !important; } }
@media (min-width: 601px) and (max-width: 1024px){ .lex-xs.lex-xs-hide-arrow-tablet  .lex-xs-arrow{ display: none !important; } }
@media (min-width: 1025px)           { .lex-xs.lex-xs-hide-arrow-desktop .lex-xs-arrow{ display: none !important; } }

/* ==================================================================
 *  BULLETS — base + 4 styles
 * ================================================================== */
.lex-xs .lex-xs-bullets{
	position: absolute;
	z-index: 5;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.lex-xs .lex-xs-bullets-bottom{ bottom: 16px; }
.lex-xs .lex-xs-bullets-top{ top: 16px; }

/* Theme-proof base reset */
.lex-xs .lex-xs-bullet,
.lex-xs button.lex-xs-bullet{
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	appearance: none !important;
	box-sizing: border-box !important;
	margin: 0 !important;
	font-family: inherit !important;
	font-size: 0 !important;
	font-weight: normal !important;
	line-height: 1 !important;
	text-shadow: none !important;
	text-decoration: none !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	box-shadow: none !important;
	overflow: hidden !important;
	color: var(--lex-xs-bullet-color, #fff) !important;
	cursor: pointer;
	display: inline-block !important;
	vertical-align: middle;
	flex: 0 0 auto;
	padding: 0 !important;
	transition: background 200ms ease, transform 200ms ease, width 200ms ease, opacity 200ms ease;
}
.lex-xs .lex-xs-bullet:focus-visible{
	outline: 2px solid var(--lex-xs-bullet-color, #fff);
	outline-offset: 3px;
}

/* Bullet STYLE: dot (default round) */
.lex-xs.lex-xs-bullet-dot .lex-xs-bullet{
	width: 12px !important;
	height: 12px !important;
	min-width: 12px !important;
	min-height: 12px !important;
	max-width: 12px !important;
	max-height: 12px !important;
	background: rgba(255,255,255,.35) !important;
	border: 1.5px solid var(--lex-xs-bullet-color, #fff) !important;
	border-radius: 50% !important;
}
.lex-xs.lex-xs-bullet-dot .lex-xs-bullet:hover{
	background: rgba(255,255,255,.6) !important;
}
.lex-xs.lex-xs-bullet-dot .lex-xs-bullet.is-active{
	background: var(--lex-xs-bullet-color, #fff) !important;
	transform: scale(1.25);
}

/* Bullet STYLE: bar (horizontal lines) */
.lex-xs.lex-xs-bullet-bar .lex-xs-bullet{
	width: 24px !important;
	height: 4px !important;
	min-width: 24px !important;
	min-height: 4px !important;
	max-height: 4px !important;
	background: rgba(255,255,255,.35) !important;
	border: none !important;
	border-radius: 999px !important;
}
.lex-xs.lex-xs-bullet-bar .lex-xs-bullet:hover{
	background: rgba(255,255,255,.6) !important;
}
.lex-xs.lex-xs-bullet-bar .lex-xs-bullet.is-active{
	background: var(--lex-xs-bullet-color, #fff) !important;
	width: 36px !important;
	min-width: 36px !important;
}

/* Bullet STYLE: pill (longer ovals, expanding active) */
.lex-xs.lex-xs-bullet-pill .lex-xs-bullets{ gap: 6px; }
.lex-xs.lex-xs-bullet-pill .lex-xs-bullet{
	width: 8px !important;
	height: 8px !important;
	min-width: 8px !important;
	min-height: 8px !important;
	max-height: 8px !important;
	background: rgba(255,255,255,.4) !important;
	border: none !important;
	border-radius: 999px !important;
}
.lex-xs.lex-xs-bullet-pill .lex-xs-bullet:hover{
	background: rgba(255,255,255,.7) !important;
}
.lex-xs.lex-xs-bullet-pill .lex-xs-bullet.is-active{
	background: var(--lex-xs-bullet-color, #fff) !important;
	width: 28px !important;
	min-width: 28px !important;
}

/* Bullet STYLE: square */
.lex-xs.lex-xs-bullet-square .lex-xs-bullet{
	width: 10px !important;
	height: 10px !important;
	min-width: 10px !important;
	min-height: 10px !important;
	max-width: 10px !important;
	max-height: 10px !important;
	background: rgba(255,255,255,.35) !important;
	border: 1.5px solid var(--lex-xs-bullet-color, #fff) !important;
	border-radius: 0 !important;
	transform: rotate(45deg);
}
.lex-xs.lex-xs-bullet-square .lex-xs-bullet:hover{
	background: rgba(255,255,255,.6) !important;
}
.lex-xs.lex-xs-bullet-square .lex-xs-bullet.is-active{
	background: var(--lex-xs-bullet-color, #fff) !important;
	transform: rotate(45deg) scale(1.25);
}

/* ------------------------------------------------------------------ *
 *  Drag states
 * ------------------------------------------------------------------ */
.lex-xs.lex-xs-dragging .lex-xs-track{ transition: none !important; cursor: grabbing; }
.lex-xs.lex-xs-anim-horizontal:not(.lex-xs-dragging) .lex-xs-track,
.lex-xs.lex-xs-anim-vertical:not(.lex-xs-dragging) .lex-xs-track{ cursor: grab; }
.lex-xs[data-drag="disabled"] .lex-xs-track{ cursor: default; }

/* ------------------------------------------------------------------ *
 *  Loading state (before JS init)
 * ------------------------------------------------------------------ */
.lex-xs:not(.is-ready)::before{
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(110deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.06) 50%, rgba(255,255,255,0) 70%);
	background-size: 200% 100%;
	animation: lex-xs-shimmer 1.4s linear infinite;
	z-index: 10;
	pointer-events: none;
}
.lex-xs.is-ready::before{ display: none; }

@keyframes lex-xs-shimmer {
	0%   { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}
