.tsops-banner {
	--tsops-accent: #AC132F;
	--tsops-overlay: #000000;
	position: relative;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	min-height: 340px;
	background: #111;
	color: inherit;
	text-decoration: none;
}
.tsops-banner-bg {
	position: absolute; inset: 0;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	transition: transform .6s cubic-bezier(.16,1,.3,1);
}
.tsops-banner:hover .tsops-banner-bg { transform: scale(1.04); }
.tsops-banner-bg--mobile { display: none; }

.tsops-banner-overlay {
	position: absolute; inset: 0;
	background: linear-gradient(to top, var(--tsops-overlay) 0%, transparent 80%);
	opacity: .8;
}

.tsops-banner-content {
	position: relative; z-index: 2;
	width: 100%;
}
.tsops-banner-title {
	font-size: 1.7rem; font-weight: 600; line-height: 1.2;
	margin: 0 0 10px; color: #fff;
}
.tsops-banner-desc {
	font-size: 14px; line-height: 1.65; color: rgba(255,255,255,.85);
	max-width: 560px; margin-bottom: 18px;
}
.tsops-banner-desc p:last-child { margin-bottom: 0; }
.tsops-banner-cta {
	display: inline-flex; align-items: center; gap: 10px;
	font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
	padding: 11px 22px;
	transition: background .2s, color .2s, border-color .2s;
}
.tsops-banner:hover .tsops-banner-cta { background: var(--tsops-accent); border-color: var(--tsops-accent); color: #fff; }

@media (max-width: 767px) {
	.tsops-banner-bg--desktop { display: none; }
	.tsops-banner-bg--mobile { display: block; }
	.tsops-banner-content { padding: 24px 20px; }
	.tsops-banner-title { font-size: 1.35rem; }
}

/* Mise en page "bloc côte-à-côte" */
.tsops-split {
	--tsops-accent: #AC132F;
	display: flex;
	align-items: stretch;
	min-height: 360px;
	background: #fff;
	color: inherit;
	text-decoration: none;
}
.tsops-split--img-left { flex-direction: row; }
.tsops-split--img-right { flex-direction: row-reverse; }

.tsops-split-media { position: relative; flex-basis: 45%; flex-shrink: 0; overflow: hidden; background: #f5f4f2; }
.tsops-split-img {
	position: absolute; inset: 0;
	background-size: cover; background-position: center; background-repeat: no-repeat;
	transition: transform .6s cubic-bezier(.16,1,.3,1);
}
.tsops-split:hover .tsops-split-img { transform: scale(1.04); }

.tsops-split-panel {
	flex: 1;
	display: flex; flex-direction: column; justify-content: flex-start;
	gap: 16px;
	background: #fff;
}
.tsops-split-eyebrow {
	font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
	color: #666; margin: 0;
}
.tsops-split-title { font-size: 2rem; font-weight: 600; line-height: 1.15; margin: 0; color: #111; }
.tsops-split-desc { font-size: 14.5px; line-height: 1.7; color: #666; margin: 0; }
.tsops-split-desc p { margin: 0 0 10px; }
.tsops-split-desc p:last-child { margin-bottom: 0; }
.tsops-split-cta {
	display: inline-flex; align-items: center; gap: 10px; align-self: flex-start;
	font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
	padding: 12px 22px;
	transition: background .2s, color .2s, border-color .2s;
}
.tsops-split:hover .tsops-split-cta { background: var(--tsops-accent); border-color: var(--tsops-accent); color: #fff; }

@media (max-width: 767px) {
	.tsops-split:not(.tsops-split--no-stack) { flex-direction: column; min-height: auto; }
	/* flex-basis pilote la hauteur (et non plus la largeur) une fois empilé en colonne : le
	   réglage "Largeur de l'image" (%) doit être neutralisé ici, sinon l'image s'effondre
	   (pourcentage d'une hauteur de conteneur indéfinie = 0). !important nécessaire pour
	   passer devant la règle de largeur générée par Elementor (même sélecteur, même poids). */
	.tsops-split:not(.tsops-split--no-stack) .tsops-split-media {
		flex-basis: auto !important;
		width: 100%;
		height: 240px;
		min-height: 240px;
	}
	.tsops-split-title { font-size: 1.5rem; }
}
