/* =========================================================
   EDS Elements – Blog Carousel  v1.0.8
   eDesign Space | https://edesignspace.com/

   PERMANENT OVERLAP FIX
   ─────────────────────────────────────────────────────────
   Previous bug: switching transform-origin (left ↔ center)
   at the start of a slide transition caused an instant
   visual jump (~half the active/side width difference)
   while the scale value was still mid-animation. Looked
   like the active card overlapping its neighbour for ~1s.

   This version: keep transform-origin: center center on
   every card, and shift side cards horizontally with a
   composite transform:

        translateX(--eds-tx) scale(--eds-scale-x, --eds-scale-y)

   translateX and scale interpolate together inside ONE
   transform transition, so cards move + grow smoothly with
   NO jumps and NO overlap.

   Cell width is still fixed (activeW + gap), so Flickity's
   grid never resizes mid-animation either.
   ========================================================= */

.eds-bc-wrap {
	--eds-active-w: 420px;
	--eds-side-w:   300px;
	--eds-active-h: 520px;
	--eds-side-h:   370px;
	--eds-gap:       20px;
	--eds-scale-x:  0.714;   /* set by JS at runtime */
	--eds-scale-y:  0.712;
	position: relative;
}

/* Clip viewport so only one side card per side is visible.
   The "outer" white space of each side card is pushed off
   screen by the translateX and hidden by overflow:hidden. */
.eds-bc-viewport {
	max-width: calc(var(--eds-active-w) + 2 * (var(--eds-side-w) + var(--eds-gap)));
	margin: 0 auto;
	overflow-x: hidden;
	overflow-y: visible;
	position: relative;
}

/* ── Flickity ────────────────────────────────────────────── */

.eds-bc-flickity .flickity-viewport {
	overflow: visible !important;
	position: relative;
}

/* ── Cells ───────────────────────────────────────────────── */

/* Width (activeW + gap) and height (activeH) injected by JS. */
.eds-bc-cell {
	box-sizing: border-box;
	padding: 0 calc(var(--eds-gap) / 2);
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	z-index: 1;
}

.eds-bc-cell.is-selected {
	z-index: 10;
}

/* ── Inner card ──────────────────────────────────────────── */

/*
 * Always the full active size (never animates layout dims).
 * Side cards appear smaller via a composite translate+scale.
 *
 * --eds-tx is set per-card by JS:
 *   right of active →  -(activeW - sideW)/2  (visible content
 *                       shifts toward active card on the left)
 *   left  of active →  +(activeW - sideW)/2  (visible content
 *                       shifts toward active card on the right)
 *   active card     →  overridden by .is-selected rule below
 *
 * transform-origin stays center-center for every card, so
 * there is never a sudden origin change mid-animation.
 */
.eds-slide-inner {
	width:       var(--eds-active-w);
	height:      var(--eds-active-h);
	flex-shrink: 0;
	position: relative;
	border-radius: 16px;
	overflow: hidden;
	cursor: pointer;
	transform-origin: center center;

	/* Default = side card (scaled + shifted) */
	transform: translateX(var(--eds-tx, 0px))
	           scale(var(--eds-scale-x), var(--eds-scale-y));

	transition:
		transform  0.55s cubic-bezier(0.4, 0, 0.2, 1),
		opacity    0.38s ease,
		box-shadow 0.4s  ease;
}

/* Active card: full size, no shift.
   The transition smoothly interpolates from translate+scale
   to translate(0)+scale(1) — no jump because the transform
   function chain is identical (translate then scale). */
.eds-bc-cell.is-selected .eds-slide-inner {
	transform: translateX(0) scale(1, 1);
	box-shadow: 0 24px 56px rgba(0, 0, 0, 0.22);
}

.eds-bc-cell:not(.is-selected) .eds-slide-inner {
	opacity: 0.72;
}

/* ── Background image ────────────────────────────────────── */

.eds-slide-bg {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center center;
	background-color: #c0c0c0;
	transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.eds-bc-cell.is-selected .eds-slide-inner:hover .eds-slide-bg {
	transform: scale(1.04);
}

/* ── Category pill ───────────────────────────────────────── */

.eds-category {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 3;
	background-color: rgba(10, 10, 10, 0.65);
	color: #fff;
	font-size: 9.5px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	padding: 5px 14px;
	border-radius: 50px;
	border: 1px solid rgba(255, 255, 255, 0.22);
	pointer-events: none;
	white-space: nowrap;
	opacity: 0;
	transform: translateY(-4px);
	transition: opacity 0.38s ease 0.1s, transform 0.38s ease 0.1s;
}

.eds-bc-cell.is-selected .eds-category {
	opacity: 1;
	transform: translateY(0);
}

/* ── Info bar ────────────────────────────────────────────── */

.eds-info-bar {
	position: absolute;
	bottom: 14px;
	left: 14px;
	right: 14px;
	z-index: 3;
	padding: 13px 16px 15px;
	background: rgba(255, 255, 255, 0.14);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: 12px;
	opacity: 0;
	transform: translateY(6px);
	transition: opacity 0.38s ease 0.12s, transform 0.38s ease 0.12s;
	pointer-events: none;
}

.eds-bc-cell.is-selected .eds-info-bar {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
}

.eds-bc-cell.is-selected .eds-slide-inner:hover .eds-info-bar {
	opacity: 0;
	transform: translateY(4px);
	transition-delay: 0s;
	pointer-events: none;
}

/* ── Meta / title ────────────────────────────────────────── */

.eds-meta {
	margin: 0 0 7px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.72);
	display: flex;
	align-items: center;
	line-height: 1.2;
}
.eds-label { opacity: 0.9; }
.eds-sep   { opacity: 0.65; }

.eds-title {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
	color: #fff;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* ── Hover overlay ───────────────────────────────────────── */

.eds-hover-overlay {
	position: absolute;
	inset: 0;
	z-index: 4;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(245, 245, 245, 0.84);
	backdrop-filter: blur(18px);
	-webkit-backdrop-filter: blur(18px);
	pointer-events: none;
	transition: transform 0.42s cubic-bezier(0.4, 0, 0.2, 1);
}

.eds-bc-wrap[data-hover-dir="btt"] .eds-hover-overlay,
.eds-bc-wrap:not([data-hover-dir]) .eds-hover-overlay { transform: translateY(100%);  }
.eds-bc-wrap[data-hover-dir="ttb"] .eds-hover-overlay { transform: translateY(-100%); }
.eds-bc-wrap[data-hover-dir="ltr"] .eds-hover-overlay { transform: translateX(-100%); }
.eds-bc-wrap[data-hover-dir="rtl"] .eds-hover-overlay { transform: translateX(100%);  }

.eds-bc-cell.is-selected .eds-slide-inner:hover .eds-hover-overlay {
	transform: translate(0, 0) !important;
	pointer-events: auto;
}

.eds-hover-body {
	padding: 26px 24px;
	width: 100%;
	transform: translateY(8px);
	transition: transform 0.38s ease 0.06s;
}

.eds-bc-cell.is-selected .eds-slide-inner:hover .eds-hover-body {
	transform: translateY(0);
}

.eds-hover-overlay .eds-meta  { color: rgba(0, 0, 0, 0.52); }
.eds-hover-overlay .eds-title {
	color: #111;
	font-size: 20px;
	-webkit-line-clamp: 3;
	margin-bottom: 12px;
}

.eds-excerpt {
	margin: 0 0 22px;
	font-size: 13.5px;
	line-height: 1.65;
	color: rgba(0, 0, 0, 0.72);
	display: -webkit-box;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* ── Read more ───────────────────────────────────────────── */

.eds-read-more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background-color: #5ce65c;
	color: #0d1a0d;
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 13px 28px;
	border-radius: 50px;
	line-height: 1;
	transition: filter 0.2s ease, transform 0.2s ease;
}
.eds-read-more:hover { filter: brightness(0.88); transform: translateX(3px); }

.eds-arrow {
	display: inline-block;
	width: 9px;
	height: 9px;
	border-top:   2px solid currentColor;
	border-right: 2px solid currentColor;
	transform: rotate(45deg);
	flex-shrink: 0;
}

/* ── Navigation ──────────────────────────────────────────── */

.eds-nav {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 22px;
}

.eds-nav-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 1px solid #cccccc;
	border-radius: 50px;
	background-color: #ffffff;
	color: #333333;
	cursor: pointer;
	flex-shrink: 0;
	overflow: visible;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}
.eds-nav-btn:hover { border-color: #555; background-color: rgba(0,0,0,0.05); }

.eds-chevron-left,
.eds-chevron-right {
	display: inline-block;
	width: 8px;
	height: 8px;
	border: 2px solid currentColor;
	flex-shrink: 0;
}
.eds-chevron-left  { border-top: none;    border-right: none;  transform: rotate(45deg) translate(1px,-1px);  }
.eds-chevron-right { border-bottom: none; border-left:  none;  transform: rotate(45deg) translate(-1px,1px); }

.eds-icon-play {
	display: block;
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 5px 0 5px 9px;
	border-color: transparent transparent transparent currentColor;
	margin-left: 2px;
	flex-shrink: 0;
}

.eds-icon-pause {
	display: none;
	align-items: center;
	justify-content: center;
	gap: 3px;
	flex-shrink: 0;
}
.eds-icon-pause::before,
.eds-icon-pause::after {
	content: '';
	display: block;
	width: 3px;
	height: 10px;
	background: currentColor;
	border-radius: 1px;
}

.eds-play-pause .eds-icon-play             { display: block;       }
.eds-play-pause .eds-icon-pause            { display: none;        }
.eds-play-pause.is-playing .eds-icon-play  { display: none;        }
.eds-play-pause.is-playing .eds-icon-pause { display: inline-flex; }

/* ── Responsive ──────────────────────────────────────────── */

@media (max-width: 767px) {
	.eds-bc-wrap {
		--eds-active-w: 300px;
		--eds-side-w:   200px;
		--eds-active-h: 420px;
		--eds-side-h:   300px;
	}
	.eds-title { font-size: 15px; }
	.eds-hover-overlay .eds-title { font-size: 16px; }
}
