/* Web4 Carousel Core (vanilla CSS) */
.carousel {
	position: relative;
	width: 100%;
	overflow: hidden;
	border: thin solid #e7dfdf;
	margin: 5px;
	filter: drop-shadow(0 0 5px rgba(0, 0, 0, 0.75)) drop-shadow(0 0 10px rgba(0, 0, 0, 0.25)) drop-shadow(0 0 20px rgba(255, 255, 255, 0.18));
	/* text-shadow: 2px 0 0 rgb(7, 7, 7), 0 2px 0 rgb(51, 46, 46), 0 0 8px rgb(220, 13, 224); */
}


/* Slide mode (default) */
.carousel:not(.carousel-fade) .carousel-inner {
	display: flex;
	width: 100%;
	will-change: transform;
	transition: transform 0.6s ease;
}
.carousel:not(.carousel-fade) .carousel-item {
	flex: 0 0 100%;
	width: 100%;
}
.carousel:not(.carousel-fade) .carousel-item {
	/* Forcer l'affichage de tous les slides en mode "slide" même si Bootstrap est chargé */
	display: block !important;
	opacity: 1 !important;
	position: relative !important;
}
.carousel img {
	display: block;
	width: 100%;
	height: auto;
}

/* Cadre d'affichage unifié: conserver le ratio (16:9) et contenir l'image sans recadrage */
.carousel .entry-thumbnail {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	background: transparent;
}
.carousel .entry-thumbnail img {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	width: 100% !important;
	height: 100% !important;
	object-fit: contain;
	object-position: center center;
}
@supports not (aspect-ratio: 1 / 1) {
	.carousel .entry-thumbnail { height: 0; padding-top: 56.25%; }
	.carousel .entry-thumbnail img { position: absolute; }
}

/* Fade mode */
.carousel.carousel-fade .carousel-inner {
	position: relative;
}
.carousel.carousel-fade .carousel-item {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	opacity: 0;
	transition: opacity 0.6s ease;
}
.carousel.carousel-fade .carousel-item.active {
	position: relative;
	opacity: 1;
}

/* Controls */
.carousel-control-prev,
.carousel-control-next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 3rem;
	height: 3rem;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	background: rgba(0, 0, 0, 0.3);
	border-radius: 50%;
	text-decoration: none;
	cursor: pointer;
	z-index: 10;
}
.carousel-control-prev { left: .75rem; }
.carousel-control-next { right: .75rem; }

.carousel-control-prev-icon,
.carousel-control-next-icon {
	display: inline-block;
	width: 1rem;
	height: 1rem;
	border-top: 2px solid #fff;
	border-right: 2px solid #fff;
}
.carousel-control-prev-icon { transform: rotate(-135deg); }
.carousel-control-next-icon { transform: rotate(45deg); }

/* Indicators */
.carousel-indicators {
	position: absolute;
	bottom: .75rem;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	gap: .5rem;
	margin: 0;
	padding: 0;
	list-style: none;
	z-index: 10;
}
.carousel-indicators li {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.6);
	cursor: pointer;
}
.carousel-indicators li.active {
	background: #fff;
}

/* Image styles (Bootstrap-like minimal equivalents) */
.img-rounded { border-radius: .25rem; }
.rounded-circle { border-radius: 50%; }
.img-thumbnail {
	padding: .25rem;
	background-color: #fff;
	border: 1px solid #dee2e6;
	border-radius: .25rem;
}

@media (prefers-reduced-motion: reduce) {
	.carousel:not(.carousel-fade) .carousel-inner { transition: none; }
	.carousel.carousel-fade .carousel-item { transition: none; }
}

/* -----------------------------------------------------------------------------
   Ultra-flat / modern glossy theme + chic counters
   Apply by adding class "carousel-ultraflat" on the carousel container
----------------------------------------------------------------------------- */
.carousel .carousel-counter { display: none; } /* hidden by default unless themed */

.carousel.carousel-ultraflat {
	--ultra-border: rgba(255,255,255,0.16);
	--ultra-border-strong: rgba(255,255,255,0.28);
	--ultra-bg: rgba(255,255,255,0.02);
	--ultra-fg: #ffffff;
	--ultra-muted: rgba(255,255,255,0.6);
	position: relative;
}
.carousel.carousel-ultraflat .entry-thumbnail {
	border-radius: 14px;
	border: 1px solid var(--ultra-border);
	background: var(--ultra-bg);
	overflow: hidden;
}
.carousel.carousel-ultraflat .entry-thumbnail::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(120deg,
		transparent 0%,
		rgba(255,255,255,0.05) 18%,
		rgba(255,255,255,0.18) 32%,
		rgba(255,255,255,0.05) 46%,
		transparent 60%);
	transform: translateX(-120%);
	animation: ultra-sheen 6s linear infinite;
	pointer-events: none;
}
@keyframes ultra-sheen {
	0%   { transform: translateX(-120%); }
	100% { transform: translateX(120%); }
}

/* Controls: flat, subtle */
.carousel.carousel-ultraflat .carousel-control-prev,
.carousel.carousel-ultraflat .carousel-control-next {
	background: rgba(255,255,255,0.06);
	border: 1px solid var(--ultra-border);
	backdrop-filter: saturate(120%) blur(2px);
	-webkit-backdrop-filter: saturate(120%) blur(2px);
	color: var(--ultra-fg);
}
.carousel.carousel-ultraflat .carousel-control-prev:hover,
.carousel.carousel-ultraflat .carousel-control-next:hover {
	background: rgba(255,255,255,0.1);
	border-color: var(--ultra-border-strong);
}
.carousel.carousel-ultraflat .carousel-control-prev-icon,
.carousel.carousel-ultraflat .carousel-control-next-icon {
	border-color: var(--ultra-fg);
}

/* Indicators: minimalist dots with hairline border */
.carousel.carousel-ultraflat .carousel-indicators {
	bottom: .75rem;
}
.carousel.carousel-ultraflat .carousel-indicators li {
	width: 8px;
	height: 8px;
	border-radius: 999px;
	background: transparent;
	border: 1px solid var(--ultra-muted);
	opacity: .8;
}
.carousel.carousel-ultraflat .carousel-indicators li.active {
	background: var(--ultra-fg);
	border-color: var(--ultra-fg);
	opacity: 1;
}

/* Caption: cleaner, lighter gradient */
.carousel.carousel-ultraflat .carousel-caption {
	background: linear-gradient(to top, rgba(0,0,0,0.45), rgba(0,0,0,0.12) 60%, rgba(0,0,0,0));
}
.carousel.carousel-ultraflat .carousel-caption .titre {
	font-weight: 500;
	letter-spacing: .01em;
}

/* Counter: chic pill */
.carousel.carousel-ultraflat .carousel-counter {
	display: inline-flex;
	align-items: baseline;
	gap: .25rem;
	position: absolute;
	top: .5rem;
	right: .5rem;
	z-index: 11;
	font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans";
	font-weight: 600;
	font-size: .75rem;
	letter-spacing: .08em;
	color: var(--ultra-fg);
	padding: .25rem .5rem;
	border-radius: 999px;
	border: 1px solid var(--ultra-border);
	background: rgba(0,0,0,0.35);
	backdrop-filter: blur(2px) saturate(120%);
	-webkit-backdrop-filter: blur(2px) saturate(120%);
}
.carousel.carousel-ultraflat .carousel-counter .sep {
	color: var(--ultra-muted);
	padding: 0 .1rem;
}
.carousel.carousel-ultraflat .carousel-counter .current {
	min-width: 1ch;
	text-align: right;
}
.carousel.carousel-ultraflat .carousel-counter .total {
	opacity: .7;
}

/* -----------------------------------------------------------------------------
   Responsive: réduire la taille du texte dans le carousel à 75% sur mobile
----------------------------------------------------------------------------- */
@media (max-width: 768px) {
	/* 1.3rem × 0.75 = 0.975rem */
	.carousel .carousel-caption .titre {
		font-size: 0.775rem;
	}
}