/* Journey Slider Styles */
.journey-slider-container {
	position: relative;
	width: 100%;
	min-height: 600px;
	padding: 40px 20px;
	background: transparent;
}

.journey-slider-content {
	position: relative;
	width: 100%;
}

.journey-image-display {
	width: 100%;
	max-width: 100%;
	margin: 0 auto;
	padding: 40px 20px;
	position: relative;
	overflow-x: hidden;
	overflow-y: visible;
	display: flex;
	justify-content: center;
	align-items: flex-start;
	text-align: center;
	pointer-events: none;
	transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.journey-image-display.transitioning {
	opacity: 0.7;
}

.journey-image-display.transitioning .journey-carousel-track {
	opacity: 0.5;
}

.journey-carousel-wrapper {
	width: 100%;
	max-width: 1400px;
	margin: 0 auto;
	position: relative;
	perspective: 1200px;
	perspective-origin: center center;
	transform-style: preserve-3d;
	display: inline-block;
	overflow-x: hidden;
	overflow-y: visible;
	pointer-events: none;
}

.journey-carousel-track {
	position: relative;
	width: 100%;
	max-width: 100%;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	height: 700px; /* margin-top: 200px + slide height: 400px + caption: ~90px (4 dòng * 14px * 1.4 + 12px margin) = 690px */
	min-height: 700px;
	gap: 20px;
	padding: 20px;
	pointer-events: none;
	margin: 0 auto;
	z-index: 0;
	overflow-x: hidden;
	overflow-y: hidden; /* Ẩn scroll để không có scroll bar */
	transform: translateZ(0);
	-webkit-transform: translateZ(0);
	transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.journey-carousel-track.transitioning {
	pointer-events: none;
}

/* Slide Base Styles */
.journey-carousel-slide {
	position: relative;
	cursor: pointer;
	transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            width 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            height 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            filter 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            margin-top 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            z-index 0.7s cubic-bezier(0.4, 0, 0.2, 1) !important;
	will-change: transform, opacity, width, height, filter, margin-top, z-index !important;
	pointer-events: auto;
	-webkit-tap-highlight-color: transparent;
	flex-shrink: 0;
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
	transform: translateZ(0) translateX(0) scale(1);
	-webkit-transform: translateZ(0) translateX(0) scale(1);
	filter: brightness(1);
}

/* Đảm bảo transition được áp dụng khi track đang transitioning */
.journey-carousel-track.transitioning .journey-carousel-slide {
	transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            width 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            height 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            filter 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            margin-top 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            z-index 0.7s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.journey-carousel-slide-inner {
	position: relative;
	width: 100%;
	height: 100%;
	border-radius: 8px;
	overflow: hidden;
	pointer-events: auto;
	z-index: inherit;
}

.journey-carousel-image {
	width: 100%;
	height: 100% !important;
	object-fit: cover;
	display: block;
	transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1);
	pointer-events: auto;
	position: relative;
	z-index: 0;
	transform: translateZ(0) scale(1);
	-webkit-transform: translateZ(0) scale(1);
	will-change: transform, opacity;
}

.journey-carousel-overlay {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: rgba(0, 0, 0, 0);
	transition: background 0.7s cubic-bezier(0.4, 0, 0.2, 1);
	pointer-events: none;
	z-index: 1;
}

/* Base styles for all visible slides - Portrait Format */
.journey-carousel-slide {
	width: 150px;
	height: 250px;
	min-height: 250px;
	max-width: 100%;
	opacity: 1;
}

/* Active Slide (Center - Main Image) - Highest */
.journey-carousel-slide.active {
	width: 250px;
	height: 400px;
	min-height: 400px;
	max-height: none;
	z-index: 10;
	transform: translateZ(0) translateX(0) scale(1);
	filter: brightness(1);
	opacity: 1;
}

.journey-carousel-slide.active .journey-carousel-overlay {
	background: rgba(0, 0, 0, 0);
}

.journey-carousel-slide.active .journey-carousel-image {
	transform: scale(1);
	object-fit: cover;
}

/* Hover effect cho active slide - zoom in nhẹ */
.journey-carousel-slide.active:hover {
	transform: translateY(-10px) translateZ(0) scale(1.05);
	filter: brightness(1.05);
	transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94),
	            filter 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.journey-carousel-slide.active:hover .journey-carousel-image {
	transform: scale(1.02);
	transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* Side slides - Smaller and clickable */
.journey-carousel-slide.side {
	width: 150px;
	height: 400px;
	min-height: 400px;
	opacity: 0.75;
	transform: translateZ(0) translateX(0) scale(0.92);
	filter: brightness(0.9);
}

/* V-shape positioning: ảnh ngoài cùng cao nhất, thấp dần về center */
/* Left-2 và Right-2: ngoài cùng, cao nhất */
.journey-carousel-slide.side.position-left-2,
.journey-carousel-slide.side.position-right-2 {
	margin-top: 0;
}

/* Left-1 và Right-1: gần center hơn, thấp hơn */
.journey-carousel-slide.side.position-left-1,
.journey-carousel-slide.side.position-right-1 {
	margin-top: 80px;
}

/* Active slide: ở giữa, thấp nhất */
.journey-carousel-slide.active {
	margin-top: 200px;
}

/* Side slides khi đang transition - chỉ áp dụng cho các slide không đang animation */
.journey-carousel-track.transitioning .journey-carousel-slide.side:not(.becoming-active):not(.becoming-side) {
	transform: translateZ(0) scale(0.88);
	filter: brightness(0.85);
}

/* Đảm bảo khi có cả side và active, active sẽ override */
.journey-carousel-slide.active.side {
	width: 250px;
	height: 400px;
	min-height: 400px;
	max-height: none;
	transform: translateZ(0) translateX(0) scale(1);
	filter: brightness(1);
	opacity: 1;
}

/* Đảm bảo khi remove 'side' khỏi slide active, không có sự thay đổi đột ngột */
/* Animation đã set kích thước đúng, nên khi remove 'side', chỉ cần giữ nguyên */
.journey-carousel-slide.active:not(.side) {
	/* Kích thước đã được set bởi animation, giữ nguyên */
	transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            width 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            height 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            filter 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            margin-top 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Animation keyframes cho hiệu ứng chuyển đổi kết hợp slide và scale */
/* Side -> Active: Trượt vào giữa và tăng kích thước - chỉ thay đổi width, giữ nguyên height */
@keyframes journeySlideScaleInFromLeft {
	from {
		width: 150px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(-100px) scale(0.88);
		opacity: 0.7;
		filter: brightness(0.85);
	}
	to {
		width: 250px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(1);
		opacity: 1;
		filter: brightness(1);
	}
}

@keyframes journeySlideScaleInFromRight {
	from {
		width: 150px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(100px) scale(0.88);
		opacity: 0.7;
		filter: brightness(0.85);
	}
	to {
		width: 250px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(1);
		opacity: 1;
		filter: brightness(1);
	}
}

/* Active -> Side: Trượt ra và giảm kích thước - chỉ thay đổi width, giữ nguyên height */
@keyframes journeySlideScaleOutToLeft {
	from {
		width: 250px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(1);
		opacity: 1;
		filter: brightness(1);
	}
	to {
		width: 150px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(0.92);
		opacity: 0.75;
		filter: brightness(0.9);
	}
}

@keyframes journeySlideScaleOutToRight {
	from {
		width: 250px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(1);
		opacity: 1;
		filter: brightness(1);
	}
	to {
		width: 150px;
		height: 400px;
		min-height: 400px;
		transform: translateZ(0) translateX(0) scale(0.92);
		opacity: 0.75;
		filter: brightness(0.9);
	}
}

/* Áp dụng animation khi slide chuyển từ side sang active */
.journey-carousel-track.transitioning .journey-carousel-slide.side.becoming-active {
	animation: journeySlideScaleInFromLeft 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards !important;
	transition: none !important; /* Tắt transition khi đang animation */
}

.journey-carousel-track.transitioning .journey-carousel-slide.side.becoming-active.slide-from-right {
	animation: journeySlideScaleInFromRight 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards !important;
	transition: none !important; /* Tắt transition khi đang animation */
}

/* Áp dụng animation khi slide chuyển từ active sang side */
.journey-carousel-track.transitioning .journey-carousel-slide.active.becoming-side {
	animation: journeySlideScaleOutToLeft 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards !important;
	transition: none !important; /* Tắt transition khi đang animation */
}

.journey-carousel-track.transitioning .journey-carousel-slide.active.becoming-side.slide-to-right {
	animation: journeySlideScaleOutToRight 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards !important;
	transition: none !important; /* Tắt transition khi đang animation */
}

/* Sau khi animation kết thúc, đảm bảo các thuộc tính được preserve */
/* Khi remove 'becoming-side', slide side vẫn giữ kích thước từ animation */
.journey-carousel-slide.side:not(.becoming-active):not(.becoming-side) {
	/* Animation đã set các thuộc tính này, giữ nguyên */
	/* CSS rules cho .side sẽ match với các thuộc tính cuối cùng của animation */
	transition: transform 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            width 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            height 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            filter 0.7s cubic-bezier(0.4, 0, 0.2, 1),
	            margin-top 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}

.journey-carousel-slide.side:hover {
	opacity: 0.9;
	transform: translateY(-8px) translateZ(0) scale(0.95);
	filter: brightness(0.95);
	transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94),
	            opacity 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94),
	            filter 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.journey-carousel-slide.side .journey-carousel-overlay {
	background: rgba(0, 0, 0, 0);
}

.journey-carousel-slide.side .journey-carousel-image {
	object-fit: cover;
	object-position: center center;
}

/* Hidden Slides */
.journey-carousel-slide:not(.visible) {
	display: none !important;
	opacity: 0;
	pointer-events: none;
}

.journey-path-container {
	position: relative;
	width: 100%;
	height: 300px;
	margin-top: 40px;
	overflow: visible;
}

.journey-path-svg {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	z-index: 1;
	overflow: visible;
}

.journey-path {
	stroke: rgba(220, 165, 19, 0.4);
	stroke-width: 4;
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
	filter: drop-shadow(0 2px 4px rgba(139, 92, 246, 0.3));
}

.journey-dots {
	position: relative;
	width: 100%;
	height: 100%;
	z-index: 3;
	overflow: visible;
}

.journey-dots.transitioning .journey-dot-wrapper {
	transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.journey-dots-container {
	position: relative;
	width: 100%;
	height: 100%;
	overflow: visible;
}

.journey-dot-wrapper {
	position: absolute;
	display: block;
	cursor: pointer;
	transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 4;
	transform-origin: center center;
	will-change: transform, opacity;
	/* Transform will be set by JavaScript to ensure precise positioning */
	margin: 0;
	padding: 0;
	/* Use block instead of flex to avoid flex alignment issues */
}

.journey-dot-wrapper:hover:not(.active) {
	transform: translate(-50%, -50%) scale(1.15);
}

.journey-dot {
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #DCA513;
	border: 3px solid #DCA513;
	box-shadow: 0 4px 12px rgba(220, 165, 19, 0.4);
	position: absolute;
	top: 0;
	left: 50%;
	transform: translate(-50%, -50%);
	transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	/* Dot is positioned absolutely at the center of wrapper (which is on the path) */
	margin: 0;
	padding: 0;
	flex-shrink: 0;
	/* Use box-sizing to ensure border doesn't affect positioning */
	box-sizing: border-box;
}

/* Dot tròn màu trắng ở giữa cho dot chưa active */
.journey-dot:not(.active)::before {
	content: '';
	position: absolute;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #ffffff;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	z-index: 1;
}

.journey-dot.active {
	width: 60px;
	height: 60px;
	background: #DCA513;
	border: none;
	z-index: 5;
}

/* Ẩn dot trắng ở giữa khi dot active */
.journey-dot.active::before {
	display: none;
}

.journey-dot-wrapper.active {
	z-index: 6;
}

.journey-dot-icon {
	width: 32px;
	height: 32px;
	display: none;
	object-fit: contain;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	z-index: 1;
}

.journey-dot.active .journey-dot-icon {
	display: block;
}

.journey-dot-label {
	margin-top: 40px;
	padding: 0;
	background: transparent;
	border: none;
	border-radius: 0;
	font-size: 14px;
	font-weight: 500;
	color: #333;
	text-align: center;
	box-shadow: none;
	backdrop-filter: none;
	transition: all 0.3s ease;
	min-width: 160px;
	max-width: 200px;
	position: absolute;
	top: 12px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 1;
	/* Label positioned below dot, doesn't affect dot center position */
	pointer-events: none;
}

.journey-dot-wrapper:hover .journey-dot-label {
	background: transparent;
	color: #DCA513;
	transform: translateX(-50%);
	box-shadow: none;
}

.journey-dot-wrapper.active .journey-dot-label {
	background: transparent;
	color: #DCA513;
	font-weight: 600;
}

/* Hidden dots (không hiển thị) */
.journey-dot-wrapper.hidden {
	opacity: 0 !important;
	pointer-events: none !important;
	z-index: 0;
	cursor: default;
}

.journey-dot-wrapper.hidden .journey-dot {
	pointer-events: none !important;
	cursor: default;
}

@keyframes pulse-yellow {
	0%, 100% {
		box-shadow: 0 0 20px rgba(220, 165, 19, 0.8), 0 0 40px rgba(220, 165, 19, 0.6);
	}
	50% {
		box-shadow: 0 0 30px rgba(220, 165, 19, 1), 0 0 60px rgba(220, 165, 19, 0.8);
	}
}

/* Next Button - Right Corner */
.journey-carousel-next-btn {
	position: absolute;
	bottom: 20px;
	right: 20px;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: #FFD700;
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 10;
	transition: all 0.3s ease;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
	color: #ffffff;
	pointer-events: auto;
}

.journey-carousel-next-btn:active,
.journey-carousel-next-btn:focus {
	background: #FFD700;
}

.journey-carousel-next-btn:hover {
	background: #FFC700;
	transform: scale(1.1);
	box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}

.journey-carousel-next-btn:active {
	transform: scale(0.95);
}

.journey-carousel-next-btn svg {
	width: 24px;
	height: 24px;
}

/* Responsive Design */
@media (max-width: 1024px) {
	.journey-image-display {
		padding: 30px 15px;
	}

	.journey-carousel-track {
		height: 800px; /* margin-top: 150px + slide height: 550px + caption: ~90px (4 dòng * 14px * 1.4 + 12px margin) = 790px */
		min-height: 800px;
		gap: 20px;
	}

	.journey-carousel-slide.active {
		width: 220px;
		height: 550px;
		min-height: 550px;
		max-height: none;
		margin-top: 150px;
	}
	
	.journey-carousel-slide.active .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side {
		width: 150px;
		height: 550px;
		min-height: 550px;
	}
	
	.journey-carousel-slide.side .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side.position-left-1,
	.journey-carousel-slide.side.position-right-1 {
		margin-top: 60px;
	}

	.journey-carousel-slide.side .journey-carousel-image {
		object-fit: cover;
		object-position: center center;
	}

	/* Responsive keyframes cho 1024px - chỉ thay đổi width, giữ nguyên height */
	@keyframes journeySlideScaleInFromLeft {
		from {
			width: 150px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(-100px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 220px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleInFromRight {
		from {
			width: 150px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(100px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 220px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleOutToLeft {
		from {
			width: 220px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 150px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	@keyframes journeySlideScaleOutToRight {
		from {
			width: 220px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 150px;
			height: 550px;
			min-height: 550px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	.journey-carousel-next-btn {
		width: 50px;
		height: 50px;
		bottom: 15px;
		right: 15px;
	}

	.journey-carousel-next-btn svg {
		width: 20px;
		height: 20px;
	}
}

@media (max-width: 768px) {
	.journey-slider-container {
		min-height: 500px;
		padding: 20px 10px;
	}

	.journey-image-display {
		padding: 20px 10px;
	}

	.journey-carousel-wrapper {
		overflow-x: hidden;
		overflow-y: visible;
	}
	
	.journey-carousel-track {
		overflow-x: hidden;
		overflow-y: visible;
	}

	.journey-carousel-track {
		height: 700px; /* margin-top: 120px + slide height: 500px + caption: ~77px (4 dòng * 12px * 1.4 + 10px margin) = 697px */
		min-height: 700px;
		gap: 15px;
		flex-wrap: nowrap;
		justify-content: center;
	}

	.journey-carousel-slide.active {
		width: 200px;
		height: 500px;
		min-height: 500px;
		max-width: none;
		max-height: none;
		flex-shrink: 0;
		margin-top: 120px;
	}
	
	.journey-carousel-slide.active .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side {
		width: 140px;
		height: 500px;
		min-height: 500px;
		flex-shrink: 0;
	}
	
	.journey-carousel-slide.side .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side.position-left-1,
	.journey-carousel-slide.side.position-right-1 {
		margin-top: 50px;
	}

	.journey-carousel-slide.side .journey-carousel-image {
		object-fit: cover;
		object-position: center center;
	}

	/* Responsive keyframes cho 768px - chỉ thay đổi width, giữ nguyên height */
	@keyframes journeySlideScaleInFromLeft {
		from {
			width: 140px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(-80px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 200px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleInFromRight {
		from {
			width: 140px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(80px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 200px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleOutToLeft {
		from {
			width: 200px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 140px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	@keyframes journeySlideScaleOutToRight {
		from {
			width: 200px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 140px;
			height: 500px;
			min-height: 500px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	.journey-carousel-next-btn {
		width: 48px;
		height: 48px;
		bottom: 10px;
		right: 10px;
	}

	.journey-carousel-next-btn svg {
		width: 18px;
		height: 18px;
	}

	.journey-path-container {
		height: 250px;
		margin-top: 20px;
	}

	/* Base transform for journey-dot-wrapper is handled by JavaScript */
	
	.journey-dot-wrapper:hover:not(.active) {
		transform: translate(-50%, -50%) scale(1.05) !important;
	}

	.journey-dot-label {
		font-size: 12px;
		padding: 6px 12px;
		min-width: 140px;
		max-width: 160px;
	}

	.journey-dot.active {
		width: 40px;
		height: 40px;
	}

	.journey-dot.active .journey-dot-icon {
		width: 28px;
		height: 28px;
	}
}

@media (max-width: 480px) {
	.journey-slider-container {
		min-height: 400px;
	}

	.journey-image-display {
		padding: 15px 5px;
	}

	.journey-carousel-wrapper {
		overflow-x: hidden;
		overflow-y: visible;
	}
	
	.journey-carousel-track {
		overflow-x: hidden;
		overflow-y: visible;
	}

	.journey-carousel-track {
		height: 630px; /* margin-top: 100px + slide height: 450px + caption: ~77px (4 dòng * 12px * 1.4 + 10px margin) = 627px */
		min-height: 630px;
		gap: 10px;
		flex-wrap: nowrap;
		justify-content: center;
	}

	.journey-carousel-slide.active {
		width: 180px;
		height: 450px;
		min-height: 450px;
		max-width: none;
		max-height: none;
		flex-shrink: 0;
		margin-top: 100px;
	}
	
	.journey-carousel-slide.active .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side {
		width: 120px;
		height: 450px;
		min-height: 450px;
		flex-shrink: 0;
	}
	
	.journey-carousel-slide.side .journey-carousel-slide-inner {
		height: 100%;
	}

	.journey-carousel-slide.side.position-left-1,
	.journey-carousel-slide.side.position-right-1 {
		margin-top: 40px;
	}

	.journey-carousel-slide.side .journey-carousel-image {
		object-fit: cover;
		object-position: center center;
	}

	/* Responsive keyframes cho 480px - chỉ thay đổi width, giữ nguyên height */
	@keyframes journeySlideScaleInFromLeft {
		from {
			width: 120px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(-60px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 180px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleInFromRight {
		from {
			width: 120px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(60px) scale(0.88);
			opacity: 0.7;
			filter: brightness(0.85);
		}
		to {
			width: 180px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
	}

	@keyframes journeySlideScaleOutToLeft {
		from {
			width: 180px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 120px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	@keyframes journeySlideScaleOutToRight {
		from {
			width: 180px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(1);
			opacity: 1;
			filter: brightness(1);
		}
		to {
			width: 120px;
			height: 450px;
			min-height: 450px;
			transform: translateZ(0) translateX(0) scale(0.92);
			opacity: 0.75;
			filter: brightness(0.9);
		}
	}

	.journey-carousel-next-btn {
		width: 44px;
		height: 44px;
		bottom: 8px;
		right: 8px;
	}

	.journey-carousel-next-btn svg {
		width: 16px;
		height: 16px;
	}

	.journey-path-container {
		height: 200px;
	}

	.journey-dot-label {
		font-size: 11px;
		padding: 4px 8px;
		min-width: 120px;
		max-width: 140px;
	}
}

/* Touch Support for Mobile */
@media (hover: none) and (pointer: coarse) {
	.journey-carousel-slide {
		-webkit-tap-highlight-color: transparent;
	}
}

/* Loading State */
.journey-carousel-image:not(.loaded) {
	opacity: 0;
}

.journey-carousel-image.loaded {
	opacity: 1;
}

/* Caption Styles - Nằm trong slide, ngay dưới ảnh */
.journey-carousel-slide {
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* Đảm bảo slide-inner vẫn có height cố định */
.journey-carousel-slide-inner {
	flex-shrink: 0;
	height: 100%;
}

/* Đặt height cố định cho slide-inner dựa trên slide */
.journey-carousel-slide .journey-carousel-slide-inner {
	height: 100%;
}

.journey-carousel-slide.active .journey-carousel-slide-inner {
	height: 100%;
}

.journey-carousel-slide.side .journey-carousel-slide-inner {
	height: 100%;
}

.journey-carousel-slide-caption {
	width: 100%;
	margin-top: 12px;
	padding: 0 8px;
	text-align: center;
	font-size: 14px;
	line-height: 1.4;
	color: #333;
	opacity: 0;
	transition: opacity 0.3s ease;
	display: none;
	max-width: 100%;
	word-wrap: break-word;
	word-break: break-word;
	white-space: normal;
	overflow: visible;
	flex-shrink: 0;
	box-sizing: border-box;
}

.journey-carousel-slide-caption.active {
	opacity: 1;
	display: block;
}

/* Caption chỉ hiển thị cho slide active */
.journey-carousel-slide.active .journey-carousel-slide-caption.active {
	opacity: 1;
	display: block;
}

/* Ẩn caption cho các slide phụ */
.journey-carousel-slide.side .journey-carousel-slide-caption {
	display: none !important;
	opacity: 0;
}

@media (max-width: 768px) {
	.journey-carousel-slide-caption {
		font-size: 12px;
		margin-top: 10px;
		padding: 0 6px;
	}
}
