/**
 * 3lachtv.ma — Launch Optimization Layer (v4.5.1)
 *
 * Couche finale de polissage chargée APRÈS toutes les autres feuilles.
 * Harmonise la typographie, les espacements, les composants répétitifs.
 *
 * Notes :
 *   - Respecte les tokens d'accessibilité (--a11y-focus-ring, --a11y-text-*).
 *   - Compatible RTL natif via propriétés logiques (margin-inline, padding-inline).
 *   - Pas de will-change global (consommation GPU maîtrisée).
 *   - content-visibility avec contain-intrinsic-size pour éviter CLS.
 */

/* ─────────────────────────────────────────────────────────────
   1. TOKENS — Échelle typographique de référence
   ───────────────────────────────────────────────────────────── */

:root {
	/* Échelle typographique fluide (mobile → desktop) */
	--ltv-text-xs:    clamp(0.6875rem, 0.65rem + 0.18vw, 0.75rem);   /* 11 → 12px */
	--ltv-text-sm:    clamp(0.8125rem, 0.78rem + 0.22vw, 0.875rem);  /* 13 → 14px */
	--ltv-text-base:  clamp(0.9375rem, 0.9rem + 0.25vw, 1rem);       /* 15 → 16px */
	--ltv-text-md:    clamp(1rem, 0.95rem + 0.3vw, 1.0625rem);       /* 16 → 17px */
	--ltv-text-lg:    clamp(1.0625rem, 1rem + 0.4vw, 1.25rem);       /* 17 → 20px */
	--ltv-text-xl:    clamp(1.25rem, 1.1rem + 0.7vw, 1.5rem);        /* 20 → 24px */
	--ltv-text-2xl:   clamp(1.5rem, 1.3rem + 1vw, 1.875rem);         /* 24 → 30px */
	--ltv-text-3xl:   clamp(1.75rem, 1.4rem + 1.6vw, 2.25rem);       /* 28 → 36px */
	--ltv-text-4xl:   clamp(2rem, 1.6rem + 2vw, 2.75rem);            /* 32 → 44px */

	/* Line-height de référence */
	--ltv-lh-tight:   1.25;
	--ltv-lh-snug:    1.4;
	--ltv-lh-normal:  1.55;
	--ltv-lh-loose:   1.75;

	/* Espacement vertical (rythme harmonique) */
	--ltv-gap-xs:     clamp(4px, 0.5vw, 6px);
	--ltv-gap-sm:     clamp(6px, 0.8vw, 10px);
	--ltv-gap-md:     clamp(10px, 1.4vw, 14px);
	--ltv-gap-lg:     clamp(14px, 2vw, 20px);
	--ltv-gap-xl:     clamp(20px, 2.8vw, 30px);
	--ltv-gap-2xl:    clamp(28px, 4vw, 44px);

	/* Aspect-ratio uniforme pour cartes (16:9 image news) */
	--ltv-card-ratio: 16 / 9;
	--ltv-card-ratio-square: 1 / 1;
	--ltv-card-ratio-portrait: 4 / 5;
}

/* ─────────────────────────────────────────────────────────────
   2. BASE — Typographie et lisibilité globales
   ───────────────────────────────────────────────────────────── */

body {
	font-family: 'Tajawal', 'Cairo', 'Segoe UI', system-ui, -apple-system, sans-serif;
	font-size: var(--ltv-text-base);
	line-height: var(--ltv-lh-normal);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	/* respecte --a11y-text-body défini par accessibility.css */
}

/* Word-wrap arabe : pas de break interne */
[lang="ar"],
.entry-title,
.post-card-title,
.archive-card__title,
.home-mosaic-card-title,
.home-highlight-title,
.hero-slide-title {
	word-break: normal;
	overflow-wrap: break-word;
}

/* ─────────────────────────────────────────────────────────────
   3. SECTION HEADERS — Cohérence visuelle entre tous les blocs
   ───────────────────────────────────────────────────────────── */

.front-page .home-premium-header,
.front-page .home-mosaic-accent-header,
.front-page .home-sports-header,
.front-page .home-video-header,
.front-page .most-viewed-header,
.front-page .section-header,
.front-page .home-national-header,
.front-page .home-tri-col-header {
	padding-block: clamp(10px, 1.4vw, 14px) !important;
	padding-inline: clamp(14px, 2vw, 20px) !important;
	display: flex !important;
	align-items: center !important;
	gap: 12px !important;
	min-height: 0 !important;
}

.front-page .home-premium-title,
.front-page .home-mosaic-accent-title,
.front-page .home-sports-title,
.front-page .home-video-title,
.front-page .most-viewed-title,
.front-page .section-header-title,
.front-page .home-national-title,
.front-page .home-tri-col-title,
.front-page .home-category-section-title {
	font-size: var(--ltv-text-lg) !important;
	font-weight: 800 !important;
	line-height: var(--ltv-lh-snug) !important;
	letter-spacing: -0.005em !important;
	margin: 0 !important;
}

.front-page .home-premium-subtitle,
.front-page .home-mosaic-accent-subtitle,
.front-page .home-sports-subtitle,
.front-page .most-viewed-subtitle {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 500 !important;
	opacity: 0.78 !important;
	margin: 0 !important;
}

/* ─────────────────────────────────────────────────────────────
   4. CARTES ARTICLE — Titres / méta / excerpt cohérents
   ───────────────────────────────────────────────────────────── */

.post-card-title,
.archive-card__title,
.home-mosaic-card-title,
.home-national-card-title,
.home-video-card-title,
.most-viewed-card-title,
.home-tri-col-card-title,
.related-card-title {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 700 !important;
	line-height: var(--ltv-lh-snug) !important;
	margin: 0 !important;
}

.post-card-meta,
.archive-card__meta,
.home-mosaic-card-meta,
.home-national-card-meta,
.home-video-card-meta,
.most-viewed-card-meta,
.home-tri-col-card-meta,
.related-card-meta {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 500 !important;
	/* respecte --a11y-text-muted défini par accessibility.css */
}

.post-card-excerpt,
.archive-featured-excerpt,
.home-mosaic-card-excerpt {
	font-size: var(--ltv-text-sm) !important;
	line-height: var(--ltv-lh-normal) !important;
}

/* Titre PREMIUM (carte vedette de chaque bloc) */
.front-page .home-premium-card-title,
.front-page .home-mosaic-card--featured .home-mosaic-card-title,
.front-page .home-national-card--featured .home-national-card-title,
.front-page .home-sports-card--featured .home-sports-card-title {
	font-size: var(--ltv-text-lg) !important;
	font-weight: 800 !important;
	line-height: var(--ltv-lh-snug) !important;
}

/* ─────────────────────────────────────────────────────────────
   5. HERO SLIDER ACCUEIL — Titre principal
   ───────────────────────────────────────────────────────────── */

.front-page .home-hero-zone .hero-slide-title {
	font-size: var(--ltv-text-md) !important;
	font-weight: 700 !important;
	line-height: var(--ltv-lh-snug) !important;
}

.front-page .home-hero-zone .hero-slide-cat {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 800 !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
}

/* Widgets sidebar accueil */
.front-page .home-hero-zone .home-zone-label,
.front-page .home-hero-zone .home-zone-block-title--feed,
.front-page .home-hero-zone .home-zone-block-header--feed {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 700 !important;
	letter-spacing: 0.005em !important;
}

.front-page .home-hero-zone .home-highlight-title {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 600 !important;
	line-height: var(--ltv-lh-snug) !important;
}

/* ─────────────────────────────────────────────────────────────
   6. SINGLE ARTICLE — Lecture confortable
   ───────────────────────────────────────────────────────────── */

body.single-lachtv .single-post .entry-title,
body.single-post .single-post .entry-title {
	font-size: var(--ltv-text-3xl) !important;
	font-weight: 900 !important;
	line-height: var(--ltv-lh-tight) !important;
	letter-spacing: -0.015em !important;
	margin: 0 0 clamp(14px, 2vw, 20px) !important;
}

body.single-lachtv .single-post .entry-content,
body.single-post .single-post .entry-content {
	font-size: var(--ltv-text-md) !important;
	line-height: var(--ltv-lh-loose) !important;
}

body.single-lachtv .single-post .entry-content p {
	margin: 0 0 clamp(14px, 2vw, 20px) !important;
}

body.single-lachtv .single-post .entry-content h2,
body.single-post .single-post .entry-content h2 {
	font-size: var(--ltv-text-xl) !important;
	font-weight: 800 !important;
	line-height: var(--ltv-lh-snug) !important;
	margin: clamp(24px, 3vw, 36px) 0 clamp(10px, 1.4vw, 14px) !important;
}

body.single-lachtv .single-post .entry-content h3,
body.single-post .single-post .entry-content h3 {
	font-size: var(--ltv-text-lg) !important;
	font-weight: 700 !important;
	line-height: var(--ltv-lh-snug) !important;
	margin: clamp(18px, 2.4vw, 26px) 0 clamp(8px, 1.2vw, 12px) !important;
}

body.single-lachtv .single-post .entry-content blockquote {
	margin: clamp(18px, 2.5vw, 28px) 0 !important;
	padding-block: clamp(14px, 2vw, 20px) !important;
	padding-inline: clamp(16px, 2.4vw, 24px) !important;
	border-inline-start: 4px solid var(--news-gold, #ffcc00) !important;
	background: var(--news-canvas, #f5f6f8) !important;
	border-start-end-radius: var(--news-radius-sm, 8px) !important;
	border-end-end-radius: var(--news-radius-sm, 8px) !important;
	font-size: var(--ltv-text-md) !important;
	line-height: var(--ltv-lh-loose) !important;
	font-style: italic !important;
}

body.single-lachtv .single-post .entry-content img,
body.single-post .single-post .entry-content img {
	border-radius: var(--news-radius-md, 12px) !important;
	margin: clamp(14px, 2vw, 22px) auto !important;
	max-width: 100% !important;
	height: auto !important;
}

/* Méta article (date, auteur, catégorie) */
body.single-lachtv .single-post .entry-meta,
body.single-lachtv .single-post .post-meta {
	font-size: var(--ltv-text-xs) !important;
	margin: 0 0 clamp(12px, 1.8vw, 18px) !important;
	/* respecte --a11y-text-muted */
}

/* ─────────────────────────────────────────────────────────────
   7. PAGES CATÉGORIE / ARCHIVE — Hero, grilles, cartes
   ───────────────────────────────────────────────────────────── */

body.archive-lachtv .archive-lachtv-title,
body.category .archive-lachtv-title,
body.archive .archive-hero-title {
	font-size: var(--ltv-text-2xl) !important;
	font-weight: 800 !important;
	line-height: var(--ltv-lh-tight) !important;
}

body.archive-lachtv .archive-lachtv-desc,
body.category .archive-lachtv-desc {
	font-size: var(--ltv-text-sm) !important;
	line-height: var(--ltv-lh-normal) !important;
}

/* Carte archive — uniforme avec post-card */
.archive-lachtv-card .archive-lachtv-card-title,
.archive-lachtv-grid .archive-lachtv-card-title {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 700 !important;
	line-height: var(--ltv-lh-snug) !important;
}

/* ─────────────────────────────────────────────────────────────
   8. BREAKING TICKER — Lisibilité optimale
   ───────────────────────────────────────────────────────────── */

.site-header.site-header--magazine .breaking-text,
.site-header.site-header--magazine a.breaking-text {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 600 !important;
	letter-spacing: 0 !important;
}

.site-header.site-header--magazine .breaking-label {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 800 !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
}

/* ─────────────────────────────────────────────────────────────
   9. NAVIGATION HEADER — Lisibilité
   ───────────────────────────────────────────────────────────── */

.site-header.site-header--magazine .primary-menu a,
.site-header.site-header--magazine #primary-menu a {
	font-size: var(--ltv-text-base) !important;
	font-weight: 700 !important;
	letter-spacing: 0 !important;
}

.site-header.site-header--magazine .top-links-menu a {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 600 !important;
}

/* ─────────────────────────────────────────────────────────────
   10. FOOTER — Tailles cohérentes
   ───────────────────────────────────────────────────────────── */

.site-footer.site-footer--harmonized .footer-col-title,
.site-footer.site-footer--harmonized .footer-heading {
	font-size: var(--ltv-text-md) !important;
	font-weight: 800 !important;
	margin: 0 0 clamp(10px, 1.4vw, 14px) !important;
	color: #fff !important;
}

.site-footer.site-footer--harmonized .footer-link,
.site-footer.site-footer--harmonized .footer-col a,
.site-footer.site-footer--harmonized .footer-col li {
	font-size: var(--ltv-text-sm) !important;
	line-height: var(--ltv-lh-normal) !important;
}

.site-footer.site-footer--harmonized .footer-copy,
.site-footer.site-footer--harmonized .footer-agency {
	font-size: var(--ltv-text-xs) !important;
	font-weight: 500 !important;
}

.site-footer.site-footer--harmonized .footer-newsletter-title,
.site-footer.site-footer--harmonized .footer-newsletter-heading {
	font-size: var(--ltv-text-lg) !important;
	font-weight: 800 !important;
}

.site-footer.site-footer--harmonized .footer-newsletter-text,
.site-footer.site-footer--harmonized .footer-newsletter-desc {
	font-size: var(--ltv-text-sm) !important;
	line-height: var(--ltv-lh-normal) !important;
}

/* ─────────────────────────────────────────────────────────────
   11. CARTES — Transition douce + hover lift contrôlé
   ───────────────────────────────────────────────────────────── */

.post-card,
.archive-card,
.home-mosaic-card,
.home-national-card,
.home-video-card,
.most-viewed-card,
.home-tri-col-card,
.related-card,
.home-highlight-card {
	transition:
		transform 0.28s var(--news-ease, cubic-bezier(0.22, 1, 0.36, 1)),
		box-shadow 0.28s var(--news-ease, cubic-bezier(0.22, 1, 0.36, 1)),
		border-color 0.28s var(--news-ease, cubic-bezier(0.22, 1, 0.36, 1));
}

.post-card:hover,
.archive-card:hover,
.home-mosaic-card:hover,
.home-national-card:hover,
.home-video-card:hover,
.most-viewed-card:hover,
.home-tri-col-card:hover,
.related-card:hover {
	transform: translateY(-2px);
	box-shadow:
		0 4px 16px rgba(15, 23, 42, 0.08),
		0 12px 32px rgba(15, 23, 42, 0.08);
	/* will-change appliqué au hover seulement (économie GPU) */
	will-change: transform;
}

/* Liens — hover unifié */
.post-card-title a:hover,
.archive-card__title a:hover,
.home-mosaic-card-title a:hover,
.home-national-card-title a:hover,
.home-video-card-title a:hover,
.most-viewed-card-title a:hover,
.home-tri-col-card-title a:hover,
.related-card-title a:hover,
.home-highlight-title a:hover,
.hero-slide-title a:hover {
	color: var(--news-red, #e60000);
}

/* Image — aspect-ratio uniforme pour éviter CLS */
.post-card .post-card-thumb img,
.archive-card .archive-card__thumb img,
.home-mosaic-card .home-mosaic-thumb img,
.home-national-card .home-national-thumb img,
.home-video-card .home-video-thumb img,
.home-tri-col-card .home-tri-col-thumb img {
	aspect-ratio: var(--ltv-card-ratio);
	object-fit: cover;
	width: 100%;
	height: auto;
	display: block;
}

/* ─────────────────────────────────────────────────────────────
   12. ESPACEMENT VERTICAL — Sections accueil
   ───────────────────────────────────────────────────────────── */

body.home .site-main.front-page {
	gap: var(--ltv-gap-xl) !important;
}

/* Body padding interne cohérent sur tous les blocs */
.front-page .home-premium-body,
.front-page .home-mosaic-body,
.front-page .home-video-body,
.front-page .home-national-body,
.front-page .home-sports-body,
.front-page .home-tri-col-body,
.front-page .home-category-section-body {
	padding: var(--ltv-gap-md) !important;
}

/* ─────────────────────────────────────────────────────────────
   13. BOUTONS — Style unifié
   ───────────────────────────────────────────────────────────── */

.btn-primary,
.archive-read-more,
.no-results .search-submit {
	font-size: var(--ltv-text-sm) !important;
	font-weight: 700 !important;
	padding-block: 10px !important;
	padding-inline: 18px !important;
	border-radius: var(--news-radius-sm, 8px) !important;
	transition: transform 0.2s var(--news-ease, ease), box-shadow 0.2s var(--news-ease, ease) !important;
}

.btn-primary:hover,
.archive-read-more:hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

/* ─────────────────────────────────────────────────────────────
   14. BREADCRUMB
   ───────────────────────────────────────────────────────────── */

.lachtv-breadcrumb,
.lachtv-breadcrumb__item {
	font-size: var(--ltv-text-xs) !important;
}

.lachtv-breadcrumb__current {
	font-weight: 700 !important;
}

/* ─────────────────────────────────────────────────────────────
   15. IMAGES — Performance + qualité globale
   ───────────────────────────────────────────────────────────── */

img,
video,
iframe {
	max-width: 100%;
	height: auto;
}

img {
	display: block;
}

/* Lazy images — content-visibility avec taille intrinsèque par défaut */
img[loading="lazy"] {
	content-visibility: auto;
	contain-intrinsic-size: 300px 200px;
}

/* ─────────────────────────────────────────────────────────────
   16. RESPONSIVE — Mobile (≤ 768px)
   ───────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
	body {
		font-size: 15px;
	}

	.front-page .home-premium-header,
	.front-page .home-mosaic-accent-header,
	.front-page .home-sports-header,
	.front-page .home-video-header,
	.front-page .most-viewed-header,
	.front-page .section-header,
	.front-page .home-national-header {
		padding-block: 10px !important;
		padding-inline: 12px !important;
	}

	body.single-lachtv .single-post .entry-title,
	body.single-post .single-post .entry-title {
		font-size: clamp(1.25rem, 5.5vw, 1.625rem) !important;
		line-height: 1.3 !important;
	}

	body.single-lachtv .single-post .entry-content,
	body.single-post .single-post .entry-content {
		font-size: 1rem !important;
		line-height: 1.75 !important;
	}

	body.home .site-main.front-page {
		gap: clamp(14px, 3vw, 18px) !important;
	}

	/* Touch targets — 44px minimum (WCAG 2.5.5) */
	.menu-toggle,
	.dark-mode-toggle,
	.header-search__submit,
	.entry-share__btn,
	.hero-dot,
	.footer-back-top,
	.carousel-prev,
	.carousel-next,
	.notification-subscribe,
	.notification-later {
		min-width: 44px;
		min-height: 44px;
	}
}

/* ─────────────────────────────────────────────────────────────
   17. RESPONSIVE — Tablet (769-1023px)
   ───────────────────────────────────────────────────────────── */

@media (min-width: 769px) and (max-width: 1023px) {
	body {
		font-size: 15.5px;
	}
}

/* ─────────────────────────────────────────────────────────────
   18. DARK MODE — Adaptation cohérente
   ───────────────────────────────────────────────────────────── */

body.dark-mode .post-card,
body.dark-mode .archive-card,
body.dark-mode .home-mosaic-card,
body.dark-mode .home-national-card,
body.dark-mode .home-video-card,
body.dark-mode .most-viewed-card,
body.dark-mode .home-tri-col-card,
body.dark-mode .related-card {
	background: #1f1f1f !important;
	border-color: rgba(255, 255, 255, 0.08) !important;
}

body.dark-mode .post-card-title a,
body.dark-mode .archive-card__title a,
body.dark-mode .home-mosaic-card-title a,
body.dark-mode .home-national-card-title a,
body.dark-mode .home-video-card-title a,
body.dark-mode .most-viewed-card-title a,
body.dark-mode .home-tri-col-card-title a,
body.dark-mode .home-highlight-title a,
body.dark-mode .related-card-title a {
	color: #f0f0f0 !important;
}

body.dark-mode .post-card:hover,
body.dark-mode .archive-card:hover,
body.dark-mode .home-mosaic-card:hover,
body.dark-mode .home-national-card:hover,
body.dark-mode .home-video-card:hover,
body.dark-mode .most-viewed-card:hover,
body.dark-mode .home-tri-col-card:hover,
body.dark-mode .related-card:hover {
	box-shadow:
		0 4px 16px rgba(0, 0, 0, 0.32),
		0 12px 32px rgba(0, 0, 0, 0.28) !important;
}

/* ─────────────────────────────────────────────────────────────
   19. MOBILE SCROLL FIX — Débloquer le surf vertical (TOUTES PAGES)
   ───────────────────────────────────────────────────────────── */

/**
 * CAUSE RACINE : `body { overflow-x: hidden }` (site-harmony-fixes.css).
 * Sur iOS/Android, overflow-x:hidden posé sur le BODY transforme le body
 * en conteneur de scroll borné et CASSE le défilement vertical de la page
 * (accueil, catégorie, article). Bug navigateur mobile bien connu.
 *
 * SOLUTION : déplacer le clipping horizontal sur <html> et utiliser
 * `overflow-x: clip` sur le body — clip n'établit PAS de conteneur de
 * scroll, donc le défilement vertical natif du document est préservé.
 * Aucun impact desktop (le scroll vertical y fonctionnait déjà).
 */

html {
	overflow-x: hidden;
	-webkit-text-size-adjust: 100%;
}

body {
	overflow-x: clip !important;
	overflow-y: visible !important;
	max-width: 100%;
	min-height: 100vh;
	position: static !important;
	height: auto !important;
}

/* Conteneurs racine : ne jamais borner la hauteur ni piéger le scroll */
#page,
.site,
#primary,
.site-main {
	overflow-y: visible !important;
	height: auto !important;
	min-height: 0;
}

@media (max-width: 992px) {
	/* Lissage du défilement tactile iOS */
	html,
	body {
		-webkit-overflow-scrolling: touch;
		touch-action: pan-y;
	}

	/* Feed sidebar accueil : pas de scroll interne (capture le toucher) */
	.front-page .home-hero-zone .home-sidebar-right .home-zone-block--feed,
	.front-page .home-hero-zone .home-sidebar-right .home-feed-list {
		max-height: none !important;
		height: auto !important;
		overflow: visible !important;
	}

	/* Hero slider + zones : laisser passer le scroll vertical */
	.front-page .home-hero-zone,
	.front-page .home-hero-zone .home-hero-zone-grid,
	.front-page .home-hero-zone .home-sidebar-left,
	.front-page .home-hero-zone .home-sidebar-right,
	.front-page .home-hero-zone .home-center,
	.front-page .home-hero-zone .hero-slider--premium,
	.front-page .home-hero-zone .hero-slides-wrap,
	.front-page .home-hero-zone .hero-slide {
		touch-action: pan-y !important;
		overscroll-behavior-y: auto !important;
	}

	/* Boutons interactifs : cliquables sans bloquer le scroll */
	.hero-pagination,
	.hero-dot,
	.carousel-prev,
	.carousel-next,
	.menu-toggle,
	.dark-mode-toggle {
		touch-action: manipulation !important;
	}

	/* Carrousels horizontaux : scroll X interne sans bloquer le scroll Y page */
	.card-carousel .carousel-track,
	.home-national-track,
	.carousel-track {
		touch-action: pan-x pan-y !important;
		overscroll-behavior-x: contain;
	}
}

/* ─────────────────────────────────────────────────────────────
   20. MOBILE BANNERS — 300x250 centré (ne touche pas desktop)
   ───────────────────────────────────────────────────────────── */

/**
 * Sur mobile uniquement : la bannière 300x250 doit être centrée
 * proprement, sans débordement, sans rogner l'image.
 * Desktop reste sur 970x250 (intact).
 */

@media (max-width: 768px) {
	/* Container leaderboard / under_menu / home_mid / footer */
	.tlv3-lachtv-leaderboard,
	.tlv3-lachtv-banner,
	.tlv3-lachtv-banner--home_mid,
	.tlv3-lachtv-banner--under_menu,
	.tlv3-lachtv-banner--single_inarticle,
	.tlv3-lachtv-banner--single_bottom,
	.tlv3-lachtv-banner--footer {
		display: flex !important;
		justify-content: center !important;
		align-items: center !important;
		width: 100% !important;
		max-width: 100% !important;
		min-height: 0 !important;
		height: auto !important;
		padding-block: 12px !important;
		padding-inline: 8px !important;
		background: transparent !important;
		box-sizing: border-box;
	}

	/* Frame / lien interne du visuel */
	.tlv3-lachtv-leaderboard .tlv3-lachtv-frame,
	.tlv3-lachtv-leaderboard .tlv3-lachtv-link,
	.tlv3-lachtv-leaderboard .tlv3-lachtv-viewport,
	.tlv3-lachtv-banner .tlv3-lachtv-frame,
	.tlv3-lachtv-banner .tlv3-lachtv-link,
	.tlv3-lachtv-banner .tlv3-lachtv-viewport {
		width: 300px !important;
		max-width: 100% !important;
		height: auto !important;
		max-height: 250px !important;
		margin: 0 auto !important;
		display: flex !important;
		justify-content: center !important;
		align-items: center !important;
		border-radius: var(--news-radius-sm, 8px) !important;
		overflow: hidden !important;
	}

	/* Image 300x250 — ratio exact préservé */
	.tlv3-lachtv-leaderboard img,
	.tlv3-lachtv-banner img,
	.tlv3-lachtv-leaderboard .tlv3-lachtv-image,
	.tlv3-lachtv-banner .tlv3-lachtv-image {
		width: 100% !important;
		max-width: 300px !important;
		height: auto !important;
		max-height: 250px !important;
		object-fit: contain !important;
		object-position: center center !important;
		display: block !important;
		margin: 0 auto !important;
		aspect-ratio: 300 / 250;
	}
}

/* ─────────────────────────────────────────────────────────────
   21. PRINT — Optimisation impression
   ───────────────────────────────────────────────────────────── */

@media print {
	.site-header,
	.site-footer,
	.tlv3-lachtv-leaderboard,
	.entry-share,
	.entry-share-sticky,
	.notification-popup,
	.cookie-consent,
	.footer-back-top,
	.breaking-ticker,
	.related-posts,
	.no-print {
		display: none !important;
	}

	body {
		font-size: 11pt;
		line-height: 1.5;
		color: #000;
		background: #fff;
	}

	a {
		color: #000;
		text-decoration: underline;
	}

	.entry-title {
		font-size: 22pt !important;
	}

	.entry-content {
		font-size: 11pt !important;
	}

	img {
		max-width: 100% !important;
		page-break-inside: avoid;
	}

	h2, h3, h4 {
		page-break-after: avoid;
	}

	p {
		orphans: 3;
		widows: 3;
	}
}
