/* Luna Slider (Pro + Light) v1.1 — minimal zinc, same system as the menu / accordion */

.lpw-sl {
	--ls-radius: 18px;
	--ls-accent: #ffffff;
	--ls-btn: 44px;
	--ls-btn-bg: rgba(255, 255, 255, .88);
	--ls-btn-fg: #18181b;
	--ls-ui-bg: rgba(24, 24, 27, .38);
	--ls-cap: #ffffff;
	--ls-overlay: .6;
	--ls-inset: 16px;
	--ls-ease: cubic-bezier(.22, 1, .36, 1);
	--ls-delay: 4500ms;
	--ls-speed: 700ms;

	position: relative;
	width: 100%;
	height: 450px;
	overflow: hidden;
	isolation: isolate;
	border-radius: var(--ls-radius);
	background: var(--ls-bg, #f4f4f5);
	box-sizing: border-box;
	font-family: inherit;
	letter-spacing: -0.01em;
	-webkit-font-smoothing: antialiased;
}
.lpw-sl *, .lpw-sl *::before, .lpw-sl *::after { box-sizing: border-box; }

.lpw-sl-viewport { width: 100%; height: 100%; overflow: hidden; cursor: grab; }
.lpw-sl-viewport:active { cursor: grabbing; }
.lpw-sl .swiper-wrapper { height: 100%; }
.lpw-sl-slide { position: relative; width: 100%; height: 100%; overflow: hidden; }

.lpw-sl-media { display: flex; align-items: center; justify-content: center; overflow: hidden; width: 100%; height: 100%; color: inherit; text-decoration: none; }
/* Higher specificity on purpose: theme / Elementor rules like ".elementor img { height:auto; max-width:100% }"
   must not override the slide size. Crop mode (object-fit) is set per widget from the "نحوه نمایش تصویر" control. */
.lpw-sl .lpw-sl-slide .lpw-sl-img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: 50% 50%; /* always centred, aspect ratio never altered */
	image-rendering: auto;
	user-select: none;
	-webkit-user-drag: none;
}

/* ---------- Ken Burns (Pro) ---------- */
.lpw-sl--kb .lpw-sl-img {
	transform: scale(1.08);
	transform-origin: 50% 50%;
	transition: transform calc(var(--ls-delay) + var(--ls-speed) + 800ms) cubic-bezier(.2, .6, .2, 1);
}
.lpw-sl--kb .swiper-slide-active .lpw-sl-img { transform: scale(1); }

/* ---------- effects ----------
 * fade / zoom / blur use Swiper's fade engine, the extra look comes from the inner media layer.
 * coverflow / cube / flip / cards / depth are native Swiper 3D effects.
 */
.lpw-sl--fade .swiper-slide,
.lpw-sl--zoom .swiper-slide,
.lpw-sl--blur .swiper-slide { transition-property: opacity; }

.lpw-sl--zoom .lpw-sl-media {
	transform: scale(1.16);
	transition: transform calc(var(--ls-speed) + 400ms) cubic-bezier(.2, .6, .2, 1);
}
.lpw-sl--zoom .swiper-slide-active .lpw-sl-media { transform: scale(1); }

.lpw-sl--blur .lpw-sl-media {
	filter: blur(22px);
	transform: scale(1.08);
	transition: filter var(--ls-speed) var(--ls-ease), transform calc(var(--ls-speed) + 300ms) var(--ls-ease);
}
.lpw-sl--blur .swiper-slide-active .lpw-sl-media { filter: none; transform: scale(1); }

/* 3D effects need room + a clean stacking context */
.lpw-sl--cube .lpw-sl-viewport,
.lpw-sl--cards .lpw-sl-viewport,
.lpw-sl--coverflow .lpw-sl-viewport { overflow: visible; }
.lpw-sl--cube, .lpw-sl--cards, .lpw-sl--coverflow { overflow: hidden; }
.lpw-sl--cube .lpw-sl-slide,
.lpw-sl--flip .lpw-sl-slide,
.lpw-sl--cards .lpw-sl-slide,
.lpw-sl--coverflow .lpw-sl-slide { backface-visibility: hidden; }
.lpw-sl--cards .lpw-sl-slide,
.lpw-sl--coverflow .lpw-sl-slide { border-radius: var(--ls-radius); }
.lpw-sl--depth .lpw-sl-slide { will-change: transform, opacity; }

/* several slides per view / gaps: every slide becomes its own rounded card */
.lpw-sl.is-multi { background: var(--ls-bg, transparent); }
.lpw-sl.is-multi .lpw-sl-slide { border-radius: var(--ls-radius); }
.lpw-sl.is-multi .swiper-slide-visible .lpw-sl-cap > * { opacity: 1; transform: none; }
.lpw-sl.is-multi.lpw-sl--kb .swiper-slide-visible .lpw-sl-img { transform: scale(1); }
/* is-multi dots offset left to Elementor responsive controls */

/* ---------- caption (Pro) ---------- */
.lpw-sl-slide.has-cap::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to top, rgba(24, 24, 27, var(--ls-overlay)) 0%, rgba(24, 24, 27, calc(var(--ls-overlay) * .35)) 38%, transparent 70%);
}
.lpw-sl-cap {
	position: absolute;
	z-index: 2;
	inset-inline: 0;
	bottom: 0;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	max-width: 640px;
	padding: 32px clamp(20px, 4vw, 48px) clamp(64px, 9vw, 84px);
	color: var(--ls-cap);
	pointer-events: none;
}
.lpw-sl-cap > * { pointer-events: auto; opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ls-ease), transform .7s var(--ls-ease); }
.lpw-sl-title { margin: 0; color: inherit; font-size: clamp(20px, 3.2vw, 36px); font-weight: 600; line-height: 1.25; letter-spacing: -0.02em; text-wrap: balance; }
.lpw-sl-text { margin: 0; color: color-mix(in srgb, var(--ls-cap) 84%, transparent); font-size: clamp(13px, 1.5vw, 16px); line-height: 1.7; max-width: 52ch; }
.lpw-sl-cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 6px;
	padding: 10px 18px;
	border-radius: 999px;
	background: #ffffff;
	color: #18181b;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	box-shadow: 0 1px 2px rgba(24, 24, 27, .12), 0 6px 18px rgba(24, 24, 27, .18);
	transition: opacity .6s var(--ls-ease), transform .7s var(--ls-ease), box-shadow .25s var(--ls-ease), gap .25s var(--ls-ease);
}
.lpw-sl-cta svg { width: 16px; height: 16px; flex: none; transition: transform .3s var(--ls-ease); }
.lpw-sl:not([dir="rtl"]) .lpw-sl-cta svg { transform: scaleX(-1); }
.lpw-sl-cta:hover { box-shadow: 0 2px 4px rgba(24, 24, 27, .14), 0 10px 26px rgba(24, 24, 27, .24); }
.lpw-sl-cta:hover svg { transform: translateX(-3px); }
.lpw-sl:not([dir="rtl"]) .lpw-sl-cta:hover svg { transform: scaleX(-1) translateX(-3px); }
.lpw-sl-cta:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.lpw-sl .swiper-slide-active .lpw-sl-cap > * { opacity: 1; transform: none; }
.lpw-sl .swiper-slide-active .lpw-sl-cap > :nth-child(1) { transition-delay: .12s; }
.lpw-sl .swiper-slide-active .lpw-sl-cap > :nth-child(2) { transition-delay: .22s; }
.lpw-sl .swiper-slide-active .lpw-sl-cap > :nth-child(3) { transition-delay: .32s; }

/* ---------- arrows ---------- */
.lpw-sl-btn {
	appearance: none;
	position: absolute;
	top: 50%;
	z-index: 5;
	display: grid;
	place-items: center;
	width: var(--ls-btn);
	height: var(--ls-btn);
	margin: calc(var(--ls-btn) / -2) 0 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--ls-btn-bg);
	color: var(--ls-btn-fg);
	cursor: pointer;
	box-shadow: 0 1px 2px rgba(24, 24, 27, .08), 0 6px 18px rgba(24, 24, 27, .14);
	-webkit-backdrop-filter: blur(10px) saturate(1.4);
	backdrop-filter: blur(10px) saturate(1.4);
	-webkit-tap-highlight-color: transparent;
	transition: transform .3s var(--ls-ease), opacity .3s var(--ls-ease), box-shadow .3s var(--ls-ease), background-color .2s;
}
.lpw-sl-btn svg { display: block; width: 46%; height: 46%; transform: translateZ(0); }
/* chevron source points "<": flip it for next (LTR) and for prev (RTL) */
.lpw-sl-next svg { transform: translateZ(0) scaleX(-1); }
.lpw-sl[dir="rtl"] .lpw-sl-prev svg { transform: translateZ(0) scaleX(-1); }
.lpw-sl[dir="rtl"] .lpw-sl-next svg { transform: translateZ(0); }
.lpw-sl-prev { inset-inline-start: var(--ls-inset); }
.lpw-sl-next { inset-inline-end: var(--ls-inset); }
.lpw-sl-btn:hover { transform: scale(1.07); box-shadow: 0 2px 4px rgba(24, 24, 27, .1), 0 10px 26px rgba(24, 24, 27, .2); }
.lpw-sl-btn:active { transform: scale(.94); }
.lpw-sl-btn:focus-visible { outline: 2px solid var(--ls-btn-fg); outline-offset: 3px; }

/* Light: arrows reveal on hover / focus (always visible on touch) */
@media (hover: hover) {
	.lpw-sl--light .lpw-sl-btn { opacity: 0; }
	.lpw-sl--light .lpw-sl-prev { translate: calc(8px * var(--ls-dir, -1)) 0; }
	.lpw-sl--light .lpw-sl-next { translate: calc(-8px * var(--ls-dir, -1)) 0; }
	.lpw-sl--light:hover .lpw-sl-btn,
	.lpw-sl--light:focus-within .lpw-sl-btn { opacity: 1; translate: 0 0; }
}
.lpw-sl[dir="rtl"] { --ls-dir: 1; }
.lpw-sl--light .lpw-sl-btn { --ls-btn: 38px; }

/* ---------- dots ---------- */
.lpw-sl {
	--ls-dot-size: 6px;
	--ls-dot-active-w: 20px;
}
.lpw-sl-dots {
	position: absolute;
	z-index: 5;
	inset-inline: 0;
	bottom: 16px;
	margin-inline: auto;
	width: max-content;
	max-width: calc(100% - 32px);
	display: flex;
	align-items: center;
	gap: 2px;
	padding: 3px 6px;
	border-radius: 999px;
	background: var(--ls-ui-bg);
	-webkit-backdrop-filter: blur(10px) saturate(1.4);
	backdrop-filter: blur(10px) saturate(1.4);
}
.lpw-sl--dots-top .lpw-sl-dots { bottom: auto; top: 16px; }
.lpw-sl--dots-bottom .lpw-sl-dots { top: auto; bottom: 16px; }
.lpw-sl--dots-start .lpw-sl-dots { inset-inline-start: 16px; inset-inline-end: auto; margin-inline: 0; }
.lpw-sl--dots-end .lpw-sl-dots { inset-inline-end: 16px; inset-inline-start: auto; margin-inline: 0; }
.lpw-sl--dots-center .lpw-sl-dots { inset-inline: 0; margin-inline: auto; }

.lpw-sl-dot {
	appearance: none;
	display: grid;
	place-items: center;
	flex: none;
	width: calc(var(--ls-dot-size) * 3);
	height: calc(var(--ls-dot-size) * 3);
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
	transition: width .45s var(--ls-ease);
}
.lpw-sl-dot::before {
	content: "";
	display: block;
	width: var(--ls-dot-size);
	height: var(--ls-dot-size);
	border-radius: 999px;
	background: var(--ls-accent);
	opacity: .5;
	transition: width .45s var(--ls-ease), opacity .3s var(--ls-ease);
}
.lpw-sl-dot:hover::before { opacity: .85; }
.lpw-sl-dot.is-active { width: calc(var(--ls-dot-active-w) + var(--ls-dot-size)); }
.lpw-sl-dot.is-active::before { width: var(--ls-dot-active-w); opacity: 1; }
.lpw-sl-dot:focus-visible { outline: 2px solid var(--ls-accent); outline-offset: -2px; border-radius: 999px; }

/* ---------- counter ---------- */
.lpw-sl-count {
	position: absolute;
	z-index: 5;
	top: var(--ls-inset);
	inset-inline-end: var(--ls-inset);
	display: inline-flex;
	align-items: baseline;
	gap: 5px;
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--ls-ui-bg);
	-webkit-backdrop-filter: blur(10px) saturate(1.4);
	backdrop-filter: blur(10px) saturate(1.4);
	color: #fff;
	font-size: 12px;
	line-height: 1;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	direction: ltr;
	unicode-bidi: isolate;
	pointer-events: none;
}
.lpw-sl-count span { opacity: .65; font-weight: 500; }

/* ---------- progress ---------- */
.lpw-sl-progress { position: absolute; z-index: 6; inset-inline: 0; bottom: 0; height: 3px; background: rgba(255, 255, 255, .18); pointer-events: none; }
.lpw-sl-progress i { display: block; width: 100%; height: 100%; background: var(--ls-accent); transform: scaleX(0); transform-origin: 0 50%; will-change: transform; }
.lpw-sl[dir="rtl"] .lpw-sl-progress i { transform-origin: 100% 50%; }

/* ---------- small screens ---------- */
@media (max-width: 767px) {
	.lpw-sl { --ls-inset: 10px; --ls-btn: 36px; }
	.lpw-sl--pro .lpw-sl-btn { top: auto; bottom: 10px; margin: 0; }
	.lpw-sl-cap { padding-bottom: 60px; gap: 6px; }
	.lpw-sl-text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
}

@media (prefers-reduced-motion: reduce) {
	.lpw-sl *, .lpw-sl *::before, .lpw-sl *::after { transition-duration: 1ms !important; transition-delay: 0s !important; animation: none !important; }
	.lpw-sl--kb .lpw-sl-img { transform: none; }
	.lpw-sl-cap > * { opacity: 1; transform: none; }
	.lpw-sl--text .lpw-sl-tx-title,
	.lpw-sl--text .lpw-sl-tx-sub,
	.lpw-sl--text .lpw-sl-tx-part { opacity: 1 !important; transform: none !important; filter: none !important; animation: none !important; }
}

/* ============================================================
   Luna Slider Text — cinematic typography (RTL / Persian-safe)
   ============================================================ */
.lpw-sl--text {
	--ls-glow: #a78bfa;
	--ls-sub-delay: 200ms;
	--ls-img-opacity: 1;
	background: transparent;
	contain: layout style;
}
.lpw-sl--text .lpw-sl-slide {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	isolation: isolate;
	contain: layout style;
	background: transparent;
}
/* Dedicated per-slide color layer (inline style sets the actual color) */
.lpw-sl--text .lpw-sl-slide-color {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}
.lpw-sl--text .lpw-sl-tx-bg {
	z-index: 1;
}
.lpw-sl--text .lpw-sl-tx {
	z-index: 2;
}

/* Background image layer */
.lpw-sl-tx-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
}
.lpw-sl-tx-bg .lpw-sl-tx-img,
.lpw-sl-tx-bg img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center center;
	opacity: var(--ls-img-opacity, 1);
	user-select: none;
	-webkit-user-drag: none;
}
/* overlay removed */


.lpw-sl--text .lpw-sl-tx {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: 32px 40px 48px;
	text-decoration: none;
	color: inherit;
	box-sizing: border-box;
	/* Critical for Persian: natural letter spacing & shaping */
	letter-spacing: normal;
	word-spacing: normal;
	unicode-bidi: plaintext;
}
.lpw-sl--text .lpw-sl-tx-title {
	margin: 0;
	font-size: clamp(1.5rem, 4vw, 2.75rem);
	font-weight: 700;
	line-height: 1.45; /* taller for Persian diacritics / descenders */
	letter-spacing: normal;
	color: #fff;
	/* Keep connected script readable */
	white-space: normal;
	word-wrap: break-word;
	overflow-wrap: anywhere;
}
.lpw-sl--text .lpw-sl-tx-sub {
	margin: 0.65em 0 0;
	font-size: clamp(0.9rem, 2vw, 1.15rem);
	font-weight: 400;
	line-height: 1.7;
	letter-spacing: normal;
	color: rgba(255, 255, 255, 0.72);
	max-width: 36em;
	white-space: normal;
}

/* Word parts: preserve Arabic joining + نیم‌فاصله (full word inside one span) */
.lpw-sl--text .lpw-sl-tx-word {
	display: inline-block;
	white-space: nowrap;
}
/* Char parts: used only for "letters" effect */
.lpw-sl--text .lpw-sl-tx-char {
	display: inline-block;
}
/* GPU-friendly: only opacity + transform, no will-change until active */
.lpw-sl--text .lpw-sl-tx-part {
	backface-visibility: hidden;
}

/* --- base inactive state (whole-block effects) --- */
.lpw-sl--text:not(.lpw-sl--tx-split):not(.lpw-sl--tx-typewriter):not(.lpw-sl--tx-wave):not(.lpw-sl--tx-letters) .lpw-sl-tx-title,
.lpw-sl--text:not(.lpw-sl--tx-split):not(.lpw-sl--tx-typewriter):not(.lpw-sl--tx-wave):not(.lpw-sl--tx-letters) .lpw-sl-tx-sub {
	opacity: 0;
	transition: opacity calc(var(--ls-speed) * 0.9) var(--ls-ease),
		transform calc(var(--ls-speed) * 0.9) var(--ls-ease),
		filter calc(var(--ls-speed) * 0.9) var(--ls-ease);
}
.lpw-sl--text:not(.lpw-sl--tx-split):not(.lpw-sl--tx-typewriter):not(.lpw-sl--tx-wave):not(.lpw-sl--tx-letters) .swiper-slide-active .lpw-sl-tx-title,
.lpw-sl--text:not(.lpw-sl--tx-split):not(.lpw-sl--tx-typewriter):not(.lpw-sl--tx-wave):not(.lpw-sl--tx-letters) .swiper-slide-active .lpw-sl-tx-sub {
	opacity: 1;
	transform: none;
	filter: none;
}
.lpw-sl--text:not(.lpw-sl--tx-split):not(.lpw-sl--tx-typewriter):not(.lpw-sl--tx-wave):not(.lpw-sl--tx-letters) .swiper-slide-active .lpw-sl-tx-sub {
	transition-delay: var(--ls-sub-delay, 200ms);
}

/* Rise */
.lpw-sl--tx-rise .lpw-sl-tx-title { transform: translateY(28px); }
.lpw-sl--tx-rise .lpw-sl-tx-sub { transform: translateY(18px); }

/* Fade */
.lpw-sl--tx-fade .lpw-sl-tx-title,
.lpw-sl--tx-fade .lpw-sl-tx-sub { transform: none; }

/* Zoom — scale only (no blur → lighter) */
.lpw-sl--tx-zoom .lpw-sl-tx-title { transform: scale(1.14); opacity: 0; }
.lpw-sl--tx-zoom .lpw-sl-tx-sub { transform: scale(1.08); opacity: 0; }

/* Blur — modest blur, only while inactive */
.lpw-sl--tx-blur .lpw-sl-tx-title { filter: blur(8px); transform: scale(1.03); }
.lpw-sl--tx-blur .lpw-sl-tx-sub { filter: blur(4px); }
.lpw-sl--tx-blur .swiper-slide-active .lpw-sl-tx-title,
.lpw-sl--tx-blur .swiper-slide-active .lpw-sl-tx-sub { filter: none; }

/* Slide — logical direction via inline-start */
.lpw-sl--tx-slide .lpw-sl-tx-title { transform: translateX(40px); }
.lpw-sl--tx-slide .lpw-sl-tx-sub { transform: translateX(24px); }
.lpw-sl[dir="rtl"].lpw-sl--tx-slide .lpw-sl-tx-title { transform: translateX(-40px); }
.lpw-sl[dir="rtl"].lpw-sl--tx-slide .lpw-sl-tx-sub { transform: translateX(-24px); }

/* Flip 3D */
.lpw-sl--tx-flip .lpw-sl-tx-title {
	transform: perspective(600px) rotateX(75deg);
	transform-origin: 50% 100%;
}
.lpw-sl--tx-flip .lpw-sl-tx-sub {
	transform: perspective(600px) rotateX(40deg);
	transform-origin: 50% 0%;
}

/* Glow — single static shadow on active (no infinite animation) */
.lpw-sl--tx-glow .lpw-sl-tx-title {
	transform: scale(0.96);
	text-shadow: none;
}
.lpw-sl--tx-glow .swiper-slide-active .lpw-sl-tx-title {
	text-shadow: 0 0 24px color-mix(in srgb, var(--ls-glow) 55%, transparent);
}

/* ---------- Split / Letters (staggered parts) ----------
 * split  = words (Persian-safe, connections intact)
 * letters = chars (class lpw-sl--tx-letters)
 */
.lpw-sl--tx-split .lpw-sl-tx-title,
.lpw-sl--tx-split .lpw-sl-tx-sub,
.lpw-sl--tx-letters .lpw-sl-tx-title,
.lpw-sl--tx-letters .lpw-sl-tx-sub {
	opacity: 1; /* container always visible; parts animate */
	transform: none;
}
.lpw-sl--tx-split .lpw-sl-tx-part,
.lpw-sl--tx-letters .lpw-sl-tx-part {
	opacity: 0;
	transform: translateY(0.85em);
	transition: opacity 0.4s var(--ls-ease), transform 0.5s var(--ls-ease);
	transition-delay: calc(var(--i) * 55ms);
}
/* Letters: tighter stagger + slight rotate */
.lpw-sl--tx-letters .lpw-sl-tx-part {
	transform: translateY(1em) rotateX(-35deg);
	transition-delay: calc(var(--i) * 28ms);
	transform-origin: 50% 100%;
}
.lpw-sl--tx-split .swiper-slide-active .lpw-sl-tx-part,
.lpw-sl--tx-letters .swiper-slide-active .lpw-sl-tx-part {
	opacity: 1;
	transform: none;
}
/* Subtitle parts start after title */
.lpw-sl--tx-split .lpw-sl-tx-sub .lpw-sl-tx-part {
	transition-delay: calc(var(--i) * 45ms + var(--ls-sub-delay, 200ms));
}
.lpw-sl--tx-letters .lpw-sl-tx-sub .lpw-sl-tx-part {
	transition-delay: calc(var(--i) * 24ms + var(--ls-sub-delay, 200ms));
}

/* ---------- Typewriter (RTL-aware via logical properties) ---------- */
.lpw-sl--tx-typewriter .lpw-sl-tx-title {
	overflow: hidden;
	white-space: nowrap;
	border-inline-end: 2px solid transparent;
	max-width: 0;
	opacity: 1;
	transform: none;
	transition: none;
	display: inline-block;
	vertical-align: top;
	/* Ensure RTL grows from the correct edge */
	direction: inherit;
}
.lpw-sl--tx-typewriter .swiper-slide-active .lpw-sl-tx-title {
	animation: lpw-tx-type 2s steps(32, end) forwards,
		lpw-tx-caret 0.7s step-end infinite 2s;
}
.lpw-sl--tx-typewriter .lpw-sl-tx-sub {
	opacity: 0;
	transform: translateY(10px);
	transition: opacity 0.5s var(--ls-ease) calc(1.7s + var(--ls-sub-delay, 200ms)), transform 0.5s var(--ls-ease) calc(1.7s + var(--ls-sub-delay, 200ms));
}
.lpw-sl--tx-typewriter .swiper-slide-active .lpw-sl-tx-sub {
	opacity: 1;
	transform: none;
}
@keyframes lpw-tx-type {
	from { max-width: 0; }
	to { max-width: 100%; }
}
@keyframes lpw-tx-caret {
	0%, 100% { border-inline-end-color: currentColor; }
	50% { border-inline-end-color: transparent; }
}

/* ---------- Wave (word-based, Persian-safe) ---------- */
.lpw-sl--tx-wave .lpw-sl-tx-title,
.lpw-sl--tx-wave .lpw-sl-tx-sub {
	opacity: 1;
	transform: none;
}
.lpw-sl--tx-wave .lpw-sl-tx-part {
	opacity: 0;
	transform: translateY(0.55em);
	transition: opacity 0.4s var(--ls-ease), transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
	transition-delay: calc(var(--i) * 70ms);
}
.lpw-sl--tx-wave .swiper-slide-active .lpw-sl-tx-part {
	opacity: 1;
	transform: none;
}
/* one soft bounce on enter only — no infinite loop */
.lpw-sl--tx-wave .swiper-slide-active .lpw-sl-tx-title .lpw-sl-tx-part {
	animation: lpw-tx-wave-in 0.55s cubic-bezier(0.34, 1.4, 0.64, 1) both;
	animation-delay: calc(var(--i) * 55ms);
}
.lpw-sl--tx-wave .lpw-sl-tx-sub .lpw-sl-tx-part {
	transition-delay: calc(var(--i) * 45ms + var(--ls-sub-delay, 200ms));
}
@keyframes lpw-tx-wave-in {
	from { opacity: 0; transform: translateY(0.4em); }
	to { opacity: 1; transform: translateY(0); }
}

/* Arrows on text slider */
.lpw-sl--text .lpw-sl-btn {
	opacity: 0;
	translate: 0 6px;
	transition: opacity 0.35s var(--ls-ease), translate 0.35s var(--ls-ease), background 0.2s;
}
.lpw-sl--text:hover .lpw-sl-btn,
.lpw-sl--text:focus-within .lpw-sl-btn { opacity: 1; translate: 0 0; }
@media (hover: none) {
	.lpw-sl--text .lpw-sl-btn { opacity: 1; translate: 0 0; }
}
