/* ═══════════════════════════════════════════════════════════════════════════
   TOUT EST POSSIBLE 2026 — Palette noir & or (v1.0)
   Scoped sous body.tep2026-page
═══════════════════════════════════════════════════════════════════════════ */

html { scroll-behavior: smooth; }

/* ── Variables ────────────────────────────────────────────────────────────── */
body.tep2026-page {
	--tep-black:       #0a0908;
	--tep-black-2:     #0f0d0b;
	--tep-black-3:     #14110e;
	--tep-panel:       #191512;
	--tep-panel-2:     #211b16;

	--tep-gold:        #bc650e;
	--tep-gold-bright: #e2a33f;
	--tep-gold-light:  #ffdaa4;
	--tep-gold-deep:   #7d4208;
	--tep-accent:      #ff5600;

	--tep-text:        #ece5db;
	--tep-text-soft:   #cfc5b8;
	--tep-muted:       #9c8f7f;
	--tep-white:       #ffffff;

	--tep-border:      rgba(188, 101, 14, .28);
	--tep-border-soft: rgba(255, 255, 255, .08);
	--tep-card:        rgba(255, 255, 255, .035);
	--tep-glow:        rgba(226, 163, 63, .16);

	--tep-shadow-lg:   0 30px 80px rgba(0, 0, 0, .55);
	--tep-shadow-md:   0 18px 50px rgba(0, 0, 0, .4);
	--tep-radius:      14px;
	--tep-radius-lg:   22px;

	--tep-font:         'Montserrat', Helvetica, Arial, sans-serif;
	--tep-font-display: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
	--tep-ease:         cubic-bezier(0.25, 0.46, 0.45, 0.94);
	--tep-wrap:         1200px;
}

/* ── Réinitialisation scopée ──────────────────────────────────────────────── */
body.tep2026-page #tep-page {
	font-family: var(--tep-font);
	font-size: 20px;
	line-height: 1.8;
	color: var(--tep-text-soft);
	background: var(--tep-black);
}

body.tep2026-page #tep-page *,
body.tep2026-page #tep-page *::before,
body.tep2026-page #tep-page *::after { box-sizing: border-box; }

body.tep2026-page #tep-page h1,
body.tep2026-page #tep-page h2,
body.tep2026-page #tep-page h3,
body.tep2026-page #tep-page h4,
body.tep2026-page #tep-page p,
body.tep2026-page #tep-page ul,
body.tep2026-page #tep-page ol,
body.tep2026-page #tep-page figure,
body.tep2026-page #tep-page blockquote { margin: 0; padding: 0; }

/* ── Exceptions au reset : marges verticales et centrages ──────────────────
   Même piège que pour les paddings : `#tep-page p { margin: 0 }` bat une simple
   classe. Sans ce bloc, l'espacement entre paragraphes et sous les titres est
   silencieusement supprimé sur TOUTE la page — c'était la cause des « blocs de
   texte trop serrés ». Généré depuis un balayage des deux gabarits.
   ⚠️ Tout composant bâti sur <p>, <ul>, <ol>, <figure> ou un titre doit figurer
   ici pour que ses marges s'appliquent. */
body.tep2026-page #tep-page .tep-prose p { margin-bottom: 1.35rem; }
body.tep2026-page #tep-page .tep-bonus-card__meta { margin-bottom: 1.8rem; }
body.tep2026-page #tep-page .tep-cf-lead { margin-inline: auto; }
body.tep2026-page #tep-page .tep-cf-up__lead { margin-inline: auto; margin-bottom: 3.4rem; }
body.tep2026-page #tep-page .tep-cf-up__note { margin-top: 2.6rem; margin-inline: auto; }
body.tep2026-page #tep-page .tep-cf-up-card__delta { margin-bottom: 1.8rem; }
body.tep2026-page #tep-page .tep-cf-up-card__list { margin-bottom: 2rem; }
body.tep2026-page #tep-page .tep-cf-up-card__name { margin-bottom: 1rem; }
body.tep2026-page #tep-page .tep-cf-up-card__step { margin-bottom: .5rem; }
body.tep2026-page #tep-page .tep-cf-up-card__title { margin-bottom: 1.1rem; }
body.tep2026-page #tep-page .tep-cf-steps { margin-top: 3.5rem; }
body.tep2026-page #tep-page .tep-cf-title { margin-bottom: 1.6rem; }
body.tep2026-page #tep-page .tep-derniere__title { margin-bottom: 2.4rem; }
body.tep2026-page #tep-page .tep-deroule-step__img { margin-top: 1.6rem; }
body.tep2026-page #tep-page .tep-garantie__choices { margin: 2rem 0; }
body.tep2026-page #tep-page .tep-h2 { margin-bottom: 1.6rem; }
body.tep2026-page #tep-page .tep-laurent__title { margin-bottom: 1.6rem; }
body.tep2026-page #tep-page .tep-livre__proof { margin-top: 2rem; }
body.tep2026-page #tep-page .tep-objection__img { margin-top: 1.6rem; }
body.tep2026-page #tep-page .tep-offre-card__includes { margin-bottom: 2rem; }
body.tep2026-page #tep-page .tep-offre-card__group { margin-bottom: 1rem; }
body.tep2026-page #tep-page .tep-offre-card__group--plus { margin-top: 1.6rem; }
body.tep2026-page #tep-page .tep-offre__inclus-note { margin-top: 1.8rem; margin-inline: auto; }
body.tep2026-page #tep-page .tep-offre__garantie .tep-prose { margin-inline: auto; }
/* `.tep-garantie__choices` porte `margin: 2rem 0` : ici la liste est le dernier
   élément de l'encart, sa marge basse s'ajouterait aux 48 px de padding. */
body.tep2026-page #tep-page .tep-offre__garantie .tep-garantie__choices { margin: 2rem auto 0; }
body.tep2026-page #tep-page .tep-offre__legal { margin-top: 3rem; margin-inline: auto; }
body.tep2026-page #tep-page .tep-overline { margin-bottom: .9rem; }
body.tep2026-page #tep-page .tep-paroles__lead { margin: 0 auto 3.2rem; }
body.tep2026-page #tep-page .tep-pilier__intro { margin-bottom: 1rem; }
body.tep2026-page #tep-page .tep-reset__nots { margin: 2.5rem 0; }
body.tep2026-page #tep-page .tep-reset__title { margin-bottom: 2rem; }
body.tep2026-page #tep-page .tep-transfo-row__chute { margin-top: 1.2rem; }
body.tep2026-page #tep-page .tep-up-constat__back { margin-top: 2.6rem; }
body.tep2026-page #tep-page .tep-up-decision__lead { margin-inline: auto; }
body.tep2026-page #tep-page .tep-up-lead { margin-inline: auto; }
/* `auto` : les 3 cartes n'ont pas le même volume de texte, la phrase de chute
   doit rester alignée sur la même ligne de base d'une carte à l'autre. */
body.tep2026-page #tep-page .tep-up-plus-card__key { margin-top: auto; }
body.tep2026-page #tep-page .tep-up-plus-card__list { margin-bottom: 1.4rem; }
body.tep2026-page #tep-page .tep-up-pull { margin: 2.8rem 0; }
body.tep2026-page #tep-page .tep-up-step { margin-bottom: 1.8rem; }
body.tep2026-page #tep-page .tep-up-title { margin-bottom: 1.8rem; }

/* ── Exceptions au reset : composants qui portent leur propre padding ──────
   Le reset ci-dessus (`#tep-page p`) est plus spécifique qu'une simple classe :
   un `padding` déclaré sur `.mon-composant` est donc silencieusement annulé
   dès que le composant est un <p>, <ul>, <figure>… Ces encadrés doivent
   redéclarer leur padding À CE NIVEAU DE SPÉCIFICITÉ.
   ⚠️ Tout nouvel encadré construit sur un de ces éléments doit être ajouté ici,
   sinon il s'affichera collé à sa bordure sans qu'aucune erreur ne le signale. */
body.tep2026-page #tep-page .tep-hero__notice            { padding: 18px 20px; }
body.tep2026-page #tep-page .tep-livre__proof            { padding: 22px 32px; }
body.tep2026-page #tep-page .tep-bonus-card__meta        { padding: 24px 28px; }
body.tep2026-page #tep-page .tep-objection__answer       { padding: 24px 30px; }
body.tep2026-page #tep-page .tep-temo-card__duree        { padding: 4px 10px; }
body.tep2026-page #tep-page .tep-bonus__aussi            { padding: 22px 32px; margin: 2.4rem auto 0; }
body.tep2026-page #tep-page .tep-offre__modalites-garantie { padding: 18px 30px; }
body.tep2026-page #tep-page .tep-offre__last             { padding: 22px 30px; }
body.tep2026-page #tep-page .tep-cf-formule              { padding: .6em 1.5em .6em 1.2em; }
body.tep2026-page #tep-page .tep-cf-recap__name          { margin-bottom: 1.4rem; }
body.tep2026-page #tep-page .tep-cf-garantie             { padding: 22px 30px; }
body.tep2026-page #tep-page .tep-cf-up-card__delta       { padding: 14px 22px; }
body.tep2026-page #tep-page .tep-up-step                 { padding: .5em 1.4em; }
body.tep2026-page #tep-page .tep-up-pull                 { padding: 30px 36px; }

body.tep2026-page #tep-page a   { color: inherit; text-decoration: none; }
body.tep2026-page #tep-page img { display: block; max-width: 100%; height: auto; }
body.tep2026-page #tep-page ul  { list-style: none; }
body.tep2026-page #tep-page sup { font-size: .45em; vertical-align: super; line-height: 0; }

body.tep2026-page .entry-title,
body.tep2026-page .page-header { display: none !important; }

/* Override Divi pour pleine largeur */
body.tep2026-page #page-container,
body.tep2026-page #main-content,
body.tep2026-page #content-area {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}
body.tep2026-page #main-content .container,
body.tep2026-page #main-content .et_pb_section,
body.tep2026-page #main-content .et_pb_row,
body.tep2026-page #content-area article.et_pb_post {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}
body.tep2026-page .et-l--footer .et_pb_row,
body.tep2026-page .et-l--footer .et_pb_section { margin-bottom: 0 !important; }
body.tep2026-page #sidebar { display: none !important; }

/* ── Layout helpers ───────────────────────────────────────────────────────── */
.tep-wrap    { max-width: var(--tep-wrap); margin-inline: auto; padding-inline: 32px; }
.tep-narrow  { max-width: 880px; }
.tep-center  { text-align: center; }
.tep-section { padding-block: 120px; position: relative; }

/* ── Typographie ──────────────────────────────────────────────────────────── */
.tep-overline {
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--tep-gold-bright);
	margin-bottom: .9rem;
}

.tep-h2 {
	font-family: var(--tep-font);
	font-size: clamp(2rem, 3.9vw, 3.2rem);
	font-weight: 800;
	line-height: 1.14;
	letter-spacing: -.02em;
	color: var(--tep-white);
	margin-bottom: 1.6rem;
	text-wrap: balance;
}
.tep-h2 em {
	font-family: var(--tep-font-display);
	font-style: italic;
	font-weight: 700;
	color: var(--tep-gold-light);
	letter-spacing: 0;
}

.tep-prose p { margin-bottom: 1.35rem; }
.tep-prose p:last-child { margin-bottom: 0; }
.tep-prose strong { color: var(--tep-white); font-weight: 700; }
.tep-prose em { font-style: italic; }
.tep-prose__punch {
	font-size: 1.12em !important;
	font-weight: 700;
	color: var(--tep-gold-light) !important;
	line-height: 1.5 !important;
}

/* ── Animations d'apparition ──────────────────────────────────────────────── */
.tep-reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity .7s var(--tep-ease), transform .7s var(--tep-ease);
}
.tep-reveal--d1 { transition-delay: .12s; }
.tep-reveal--d2 { transition-delay: .24s; }
.tep-reveal.tep-visible { opacity: 1; transform: translateY(0); }

/* ── Variantes d'apparition ───────────────────────────────────────────────
   Appliquées automatiquement par tep.js selon la structure (visuels des
   lignes alternées, grilles en cascade…). Ne jamais les poser sur un élément
   qui a déjà un `transform` au survol : les deux se marcheraient dessus. */
.tep-reveal--left  { transform: translateX(-46px); }
.tep-reveal--right { transform: translateX(46px); }
.tep-reveal--rise  { transform: translateY(52px); }

.tep-reveal--left.tep-visible,
.tep-reveal--right.tep-visible,
.tep-reveal--rise.tep-visible { transform: none; }

/* Les visuels glissent un peu plus lentement que leur texte : effet d'épaisseur */
.tep-reveal--left,
.tep-reveal--right {
	transition-duration: .9s;
}

/* Image qui se dézoome doucement en apparaissant */
.tep-img-in img {
	transform: scale(1.08);
	transition: transform 1.4s var(--tep-ease);
	will-change: transform;
}
.tep-img-in.tep-visible img { transform: scale(1); }

/* Trait de la timeline qui se trace de haut en bas */
.tep-timeline__list::before {
	transform: scaleY(0);
	transform-origin: top center;
	transition: transform 1.4s var(--tep-ease);
}
.tep-timeline__list.tep-line-in::before { transform: scaleY(1); }

/* Chiffres de la section « dernière promotion » : petit à-coup à l'apparition.
   L'état masqué est conditionné à `.tep-reveal`, que seul le JS pose — sans JS
   les chiffres s'affichent normalement au lieu de rester invisibles. */
.tep-derniere__fact.tep-reveal .tep-derniere__fact-num {
	transform: scale(.6);
	opacity: 0;
	transition: transform .7s cubic-bezier(.2, 1.5, .4, 1) .15s, opacity .5s ease-out .15s;
}
.tep-derniere__fact.tep-visible .tep-derniere__fact-num { transform: scale(1); opacity: 1; }

/* ── Parallaxe des visuels ────────────────────────────────────────────────
   `.tep-par` est posé par tep.js sur le CONTENEUR de l'image. Le cadre
   (rayon, bordure, ombre) migre de l'image vers le conteneur : sans ça,
   `overflow: hidden` rognerait la bordure et l'ombre de l'image. L'image est
   sur-dimensionnée pour que le décalage ne découvre jamais ses bords. */
.tep-par {
	overflow: hidden;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	box-shadow: var(--tep-shadow-lg);
}
.tep-par img {
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	transform: scale(1.18);
	will-change: transform;
}
.tep-par--flat {
	border: 0;
	border-radius: var(--tep-radius);
	box-shadow: var(--tep-shadow-md);
}
/* Conteneur qui rogne déjà : l'image se décale sans qu'on l'emballe */
.tep-par-img {
	transform: scale(1.18);
	will-change: transform;
}

/* Parallaxe du héro — piloté par tep.js */
.tep-hero__bg { will-change: transform; }
.tep-hero__content { will-change: transform, opacity; }

/* ── Révélation des titres ────────────────────────────────────────────────
   Montée plus ample et plus lente que `.tep-reveal` : les titres arrivent
   après le corps de texte, c'est ce qui donne le rythme des sections.

   ⚠️ NE PAS revenir au balayage `clip-path: inset(0 0 108% 0)` d'origine.
   Chrome tient compte du `clip-path` de l'élément LUI-MÊME dans le calcul
   d'IntersectionObserver : un masque qui réduit la boîte à zéro rend
   `isIntersecting` définitivement faux, l'observateur de `tep.js` (§1b)
   n'ajoutait donc jamais `.tep-visible` et TOUS les titres de la page
   restaient à `opacity: 0`. Le bug était invisible en interne parce que le
   bloc `prefers-reduced-motion` ci-dessous neutralisait le `clip-path` —
   seuls les visiteurs sans « mouvement réduit » voyaient des sections sans
   titre. Toute animation de titre doit rester sans effet sur la géométrie
   vue par l'observateur (opacité, transform, mask), jamais un clip. */
.tep-h2.tep-reveal,
.tep-derniere__title.tep-reveal,
.tep-laurent__title.tep-reveal {
	transform: translateY(26px);
	transition: transform 1s var(--tep-ease), opacity .9s var(--tep-ease);
}
.tep-h2.tep-reveal.tep-visible,
.tep-derniere__title.tep-reveal.tep-visible,
.tep-laurent__title.tep-reveal.tep-visible {
	transform: none;
}

/* ── Barre de progression de lecture ──────────────────────────────────────── */
.tep-progress {
	position: fixed;
	top: 0; left: 0; right: 0;
	height: 3px;
	z-index: 99999;
	background: rgba(255, 255, 255, .06);
	pointer-events: none;
}
.tep-progress span {
	display: block;
	height: 100%;
	width: 0;
	transform-origin: left center;
	background: linear-gradient(90deg, var(--tep-gold) 0%, var(--tep-gold-bright) 55%, var(--tep-gold-light) 100%);
	box-shadow: 0 0 12px rgba(226, 163, 63, .6);
}

/* ── Reflet qui traverse les CTA au survol ────────────────────────────────── */
.tep-btn--primary {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}
.tep-btn--primary::after {
	content: '';
	position: absolute;
	top: 0; bottom: 0;
	left: -140%;
	width: 55%;
	background: linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, .5) 50%, transparent 100%);
	transform: skewX(-18deg);
	transition: left .75s var(--tep-ease);
	pointer-events: none;
	z-index: -1;
}
.tep-btn--primary:hover::after { left: 150%; }

/* Mouvement réduit — on garde le fondu, on supprime le déplacement.
   Ce qui gêne (troubles vestibulaires) c'est le mouvement : parallaxe,
   glissement latéral, zoom. Une variation d'opacité ne pose pas ce problème
   et reste couramment admise. Tout couper reviendrait à priver d'animation
   les visiteurs qui ont ce réglage — souvent activé par défaut sur un Mac. */
/* Chaque règle est neutralisée par `html.tep-motion-full`, que pose l'ajout de
   `?motion=full` à l'URL. Ça permet de prévisualiser le rendu complet sans
   toucher aux réglages d'accessibilité du système. Les visiteurs, eux, ne
   passent jamais par ce paramètre : leur préférence reste respectée. */
@media (prefers-reduced-motion: reduce) {
	/* Le fondu est conservé — seul le déplacement disparaît. */
	html:not(.tep-motion-full) .tep-reveal             { transform: none; transition: opacity .55s ease-out; }
	html:not(.tep-motion-full) .tep-reveal.tep-visible { opacity: 1; transform: none; }
	html:not(.tep-motion-full) .tep-par img            { transform: none; }
	html:not(.tep-motion-full) .tep-hero__content      { transform: none !important; opacity: 1 !important; }
	html:not(.tep-motion-full) .tep-progress           { display: none; }
	html:not(.tep-motion-full) .tep-temo-next--nudge   { animation: none; }
	html:not(.tep-motion-full) .tep-btn--primary::after{ display: none; }
	html:not(.tep-motion-full) .tep-h2.tep-reveal,
	html:not(.tep-motion-full) .tep-derniere__title.tep-reveal,
	html:not(.tep-motion-full) .tep-laurent__title.tep-reveal {
		transform: none;
		transition: opacity .55s ease-out;
	}
	html:not(.tep-motion-full) .tep-reveal--left,
	html:not(.tep-motion-full) .tep-reveal--right,
	html:not(.tep-motion-full) .tep-reveal--rise       { transform: none; }
	html:not(.tep-motion-full) .tep-img-in img         { transform: none; transition: none; }
	html:not(.tep-motion-full) .tep-timeline__list::before { transform: scaleY(1); transition: none; }
	html:not(.tep-motion-full) .tep-hero__bg                 { transform: none !important; }
	html:not(.tep-motion-full) .tep-offre-card__shine::after { animation: none; opacity: 0; }
	html:not(.tep-motion-full) .tep-hero__last-dot           { animation: none; }
	html:not(.tep-motion-full) .tep-orb,
	html:not(.tep-motion-full) .tep-counter-orb              { animation: none; }
	html:not(.tep-motion-full) .tep-derniere__fact.tep-reveal .tep-derniere__fact-num {
		transform: none;
		transition: opacity .5s ease-out .1s;
	}
}


/* ── Boutons ──────────────────────────────────────────────────────────────── */
.tep-btn {
	display: inline-block;
	font-family: var(--tep-font) !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: 1em 2.4em;
	border-radius: 50px;
	border: 2px solid transparent;
	cursor: pointer;
	transition: all .25s var(--tep-ease);
	text-decoration: none !important;
	text-align: center;
	line-height: 1.35;
}
.tep-btn--lg    { font-size: 1.05rem !important; padding: 1.1em 2.9em; }
.tep-btn--block { display: block; width: 100%; }

.tep-btn--primary {
	background: linear-gradient(135deg, var(--tep-gold-bright) 0%, var(--tep-gold) 100%) !important;
	border-color: var(--tep-gold-bright) !important;
	color: #1a0f03 !important;
	box-shadow: 0 14px 34px rgba(188, 101, 14, .3);
}
.tep-btn--primary:hover {
	background: linear-gradient(135deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 100%) !important;
	border-color: var(--tep-gold-light) !important;
	box-shadow: 0 8px 34px rgba(226, 163, 63, .5);
	transform: translateY(-2px);
}

.tep-btn--dark {
	background: var(--tep-black) !important;
	border-color: var(--tep-black) !important;
	color: var(--tep-gold-light) !important;
}
.tep-btn--dark:hover {
	background: #000 !important;
	border-color: var(--tep-gold) !important;
	transform: translateY(-2px);
}

.tep-btn--outline {
	background: transparent !important;
	color: var(--tep-gold-light) !important;
	border-color: rgba(226, 163, 63, .55) !important;
}
.tep-btn--outline:hover {
	background: rgba(226, 163, 63, .12) !important;
	border-color: var(--tep-gold-bright) !important;
	transform: translateY(-2px);
}

/* ── Badge ────────────────────────────────────────────────────────────────── */
.tep-badge {
	display: inline-block;
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--tep-gold-light);
	border: 1px solid rgba(226, 163, 63, .4);
	border-radius: 50px;
	padding: .5em 1.3em;
	margin-top: 2rem;
	margin-bottom: 1.5rem;
	background: rgba(188, 101, 14, .14);
	backdrop-filter: blur(6px);
}

/* ── Listes ───────────────────────────────────────────────────────────────── */
.tep-list li {
	position: relative;
	padding-left: 1.7em;
	margin-bottom: 1em;
	color: var(--tep-text-soft);
}
.tep-list li::before {
	content: '◈';
	position: absolute;
	left: 0;
	top: .05em;
	color: var(--tep-gold-bright);
	font-size: .7em;
}
.tep-list li strong { color: var(--tep-white); }

.tep-check li {
	position: relative;
	padding-left: 2.1em;
	margin-bottom: .95em;
	color: var(--tep-text-soft);
}
.tep-check li::before {
	content: '✔';
	position: absolute;
	left: 0;
	top: .1em;
	color: var(--tep-gold-bright);
	font-size: .85em;
	font-weight: 700;
}
.tep-check li strong { color: var(--tep-white); }

/* ── Orbes décoratives ────────────────────────────────────────────────────── */
@keyframes tep-pulse {
	0%, 100% { opacity: .5; transform: scale(1); }
	50%      { opacity: 1; transform: scale(1.14); }
}
.tep-orb {
	position: absolute;
	border-radius: 50%;
	pointer-events: none;
	filter: blur(90px);
}
.tep-orb--1 {
	width: 540px; height: 540px;
	background: radial-gradient(circle, rgba(226, 163, 63, .22) 0%, transparent 70%);
	top: -140px; right: -80px;
	animation: tep-pulse 11s ease-in-out infinite;
}
.tep-orb--2 {
	width: 380px; height: 380px;
	background: radial-gradient(circle, rgba(255, 86, 0, .16) 0%, transparent 70%);
	bottom: -80px; left: 4%;
	animation: tep-pulse 9s ease-in-out infinite reverse;
}

/* ══════════════════════════════════════════════════════════════════════════
   HERO
══════════════════════════════════════════════════════════════════════════ */
.tep-hero {
	position: relative;
	background: var(--tep-black);
	min-height: min(880px, 100vh);
	overflow: hidden;
	padding-block: 100px;
	display: flex;
	align-items: center;
}
/* Photo du héro — calque autonome, centré dans le couloir libre à DROITE de la
   colonne de texte, au lieu d'être étalée en `cover` sur toute la largeur.
   En `cover` plein cadre, une image portrait (928 × 1072) était agrandie ×1,5
   et le visage de Laurent tombait derrière le texte. Ici elle est affichée à
   ~0,7× sa taille native — donc plus nette — et le masque ovale fond ses
   quatre bords dans le noir : aucun bord franc, et la parallaxe peut la
   déplacer sans jamais découvrir un angle.
   ⚠️ Aucun `transform` ici : `tep.js` l'écrit à chaque frame pour la
   parallaxe, il écraserait un `translateX(-50%)`. Le centrage passe donc par
   `left: calc()` et la largeur est portée par une variable pour rester
   ajustable d'un seul endroit. */
.tep-hero__bg {
	--tep-hero-photo-w: clamp(400px, 38vw, 720px);
	position: absolute;
	top: 0;
	bottom: 0;
	left: calc(68% - var(--tep-hero-photo-w) / 2);
	right: auto;
	width: var(--tep-hero-photo-w);
	background-size: cover;
	background-position: 48% top;
	background-repeat: no-repeat;
	/* Le calque garde TOUTE la hauteur du héro : ses bords haut et bas
	   coïncident avec ceux de la section, il n'y a donc rien à estomper de ce
	   côté-là et seuls les flancs sont fondus. Un masque radial a été essayé
	   d'abord : impossible d'effacer le bord haut sans estomper la casquette de
	   Laurent, qui n'est qu'à 8 % du haut de l'image. */
	-webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 20%, #000 80%, rgba(0,0,0,0) 100%);
	        mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 20%, #000 80%, rgba(0,0,0,0) 100%);
}
/* Le voile assombrit les deux côtés et laisse clair le couloir 48 %–78 %, là
   où la photo est pleinement opaque. */
.tep-hero__overlay {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(90deg, rgba(10,9,8,.92) 0%, rgba(10,9,8,.58) 32%, rgba(10,9,8,0) 52%, rgba(10,9,8,0) 82%, rgba(10,9,8,.42) 94%, rgba(10,9,8,.66) 100%),
		linear-gradient(180deg, rgba(10,9,8,.50) 0%, rgba(10,9,8,0) 26%, rgba(10,9,8,.55) 80%, rgba(10,9,8,.90) 100%);
}

.tep-hero .tep-wrap {
	width: 100%;
	max-width: none;
	position: relative;
	z-index: 2;
	padding-left: clamp(32px, 8vw, 170px);
	padding-right: clamp(32px, 5vw, 96px);
}

.tep-hero__content {
	max-width: min(680px, 58vw);
	text-align: left;
}

.tep-hero__kicker {
	font-size: .82rem !important;
	font-weight: 700;
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--tep-gold-bright);
	margin-bottom: 1.2rem !important;
}

.tep-hero__content h1 {
	font-family: var(--tep-font);
	font-size: clamp(3rem, 6.5vw, 6.2rem);
	font-weight: 900;
	line-height: .92;
	letter-spacing: -.035em;
	color: var(--tep-white);
	margin-bottom: 1.5rem;
}
.tep-hero__lead,
.tep-hero__accent { display: block; }
.tep-hero__content h1 em {
	display: inline-block;
	font-family: var(--tep-font-display);
	font-size: 1.06em;
	font-style: italic;
	font-weight: 700;
	letter-spacing: -.01em;
	background: linear-gradient(100deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 45%, var(--tep-gold) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.tep-hero__sub {
	font-size: 1.25rem !important;
	color: var(--tep-text-soft) !important;
	line-height: 1.8 !important;
	max-width: 600px;
}

.tep-hero__actions {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .9rem;
	margin-top: .5rem;
}
.tep-hero__note {
	font-size: 1.05rem !important;
	color: var(--tep-muted) !important;
}

.tep-hero__notice {
	position: absolute;
	bottom: 40px;
	right: clamp(32px, 5vw, 96px);
	z-index: 3;
	display: inline-flex;
	align-items: flex-start;
	gap: .7em;
	font-size: .98rem !important;
	font-weight: 500;
	line-height: 1.6 !important;
	color: var(--tep-text-soft) !important;
	border: 1px solid var(--tep-border);
	border-radius: 12px;
	padding: 18px 20px;
	background: rgba(10, 9, 8, .78);
	backdrop-filter: blur(8px);
	max-width: 330px;
}
.tep-hero__notice svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: .25em; color: var(--tep-gold-bright); }
.tep-hero__notice strong { color: var(--tep-gold-light); }

@media (max-width: 1024px) { .tep-hero__notice { display: none; } }

/* ══════════════════════════════════════════════════════════════════════════
   BÉNÉFICES
══════════════════════════════════════════════════════════════════════════ */
.tep-benefits { background: var(--tep-black-2); padding-block: 90px; }
.tep-benefits__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}
.tep-benefit-card {
	position: relative;
	background: linear-gradient(170deg, rgba(255,255,255,.055) 0%, rgba(255,255,255,.015) 100%);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	padding: 48px 38px 42px;
	overflow: hidden;
	transition: border-color .25s, transform .25s, box-shadow .25s;
}
.tep-benefit-card::after {
	content: '';
	position: absolute;
	inset: 0 auto auto 0;
	width: 100%;
	height: 3px;
	background: linear-gradient(90deg, var(--tep-gold-bright) 0%, rgba(188,101,14,.05) 100%);
}
.tep-benefit-card:hover {
	border-color: var(--tep-border);
	transform: translateY(-6px);
	box-shadow: 0 22px 48px rgba(0,0,0,.5);
}
.tep-benefit-card__icon {
	width: 62px; height: 62px;
	border-radius: 18px;
	background: linear-gradient(135deg, rgba(226,163,63,.22), rgba(188,101,14,.08));
	border: 1px solid rgba(226,163,63,.2);
	display: flex; align-items: center; justify-content: center;
	margin-bottom: 1.5rem;
	color: var(--tep-gold-bright);
}
.tep-benefit-card__icon svg { width: 28px; height: 28px; }
.tep-benefit-card h3 {
	font-size: 1.5rem !important;
	font-weight: 700;
	color: var(--tep-white);
	line-height: 1.3;
	margin-bottom: .85rem !important;
}
.tep-benefit-card p { color: var(--tep-muted); }

/* ══════════════════════════════════════════════════════════════════════════
   CTA BAND
══════════════════════════════════════════════════════════════════════════ */
.tep-cta-band {
	background: linear-gradient(120deg, var(--tep-gold-deep) 0%, var(--tep-gold) 55%, var(--tep-gold-bright) 100%);
	padding-block: 30px;
}
.tep-cta-band__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
}
.tep-cta-band__text { display: flex; flex-direction: column; gap: .2rem; }
.tep-cta-band__text strong { font-size: 1.32rem; color: #1a0f03; font-weight: 800; letter-spacing: .02em; }
.tep-cta-band__text span   { font-size: 1.05rem; color: rgba(26,15,3,.75); font-weight: 600; }

/* ══════════════════════════════════════════════════════════════════════════
   LE RÉVEIL
══════════════════════════════════════════════════════════════════════════ */
.tep-reveil { background: var(--tep-black); }
.tep-reveil__layout {
	display: grid;
	grid-template-columns: minmax(0, 440px) minmax(0, 1fr);
	gap: 56px;
	align-items: center;
}
.tep-reveil__visual img {
	width: 100%;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	box-shadow: var(--tep-shadow-lg);
}
.tep-reveil__copy .tep-h2 { font-size: clamp(1.6rem, 2.9vw, 2.4rem); }
.tep-reveil__copy .tep-h2 em { color: var(--tep-gold-light); }

.tep-reveil__decalage {
	margin-top: 72px;
	padding: 48px clamp(24px, 4vw, 56px);
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
}
.tep-reveil__decalage-title {
	font-size: 1.6rem !important;
	font-weight: 700;
	color: var(--tep-white) !important;
	text-align: center;
	margin-bottom: 2rem !important;
}
.tep-reveil__decalage-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 32px;
	align-items: center;
	margin-bottom: 2.5rem;
}
.tep-reveil__decalage-grid p:last-child {
	font-size: 1.3rem !important;
	color: var(--tep-gold-light) !important;
	font-family: var(--tep-font-display);
	font-style: italic;
	line-height: 1.4 !important;
}
.tep-reveil__doutes {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 18px;
	margin-bottom: 2.5rem;
}
.tep-reveil__doutes span {
	display: block;
	padding: 28px 30px;
	background: rgba(0,0,0,.4);
	border-left: 3px solid rgba(255, 86, 0, .55);
	border-radius: 0 var(--tep-radius) var(--tep-radius) 0;
	font-size: 1.12rem;
	font-style: italic;
	color: var(--tep-muted);
	line-height: 1.6;
}

/* ══════════════════════════════════════════════════════════════════════════
   LE POINT DE BASCULE
══════════════════════════════════════════════════════════════════════════ */
.tep-bascule { background: var(--tep-black-2); }
.tep-bascule__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 460px);
	gap: 56px;
	align-items: center;
	margin-top: 2.5rem;
}
.tep-bascule__visual img {
	width: 100%;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	box-shadow: var(--tep-shadow-lg);
}
.tep-bascule__panel {
	margin-top: 64px;
	padding: 52px clamp(24px, 5vw, 64px);
	text-align: center;
	background:
		radial-gradient(ellipse at top, rgba(226,163,63,.1) 0%, transparent 60%),
		var(--tep-panel);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
}
.tep-bascule__panel-lead {
	font-family: var(--tep-font-display);
	font-size: clamp(1.5rem, 2.8vw, 2.1rem) !important;
	font-style: italic;
	font-weight: 600;
	line-height: 1.35 !important;
	color: var(--tep-white) !important;
	max-width: 780px;
	margin: 0 auto 2rem !important;
}
.tep-bascule__panel .tep-prose { max-width: 720px; margin-inline: auto; }

/* ══════════════════════════════════════════════════════════════════════════
   COMPTEUR
══════════════════════════════════════════════════════════════════════════ */
.tep-counter-section {
	position: relative;
	overflow: hidden;
	padding-block: 110px;
	background: linear-gradient(160deg, #16100a 0%, var(--tep-black) 100%);
	border-block: 1px solid var(--tep-border);
}
.tep-counter-orb {
	position: absolute;
	border-radius: 50%;
	filter: blur(100px);
	pointer-events: none;
}
.tep-counter-orb--1 {
	width: 460px; height: 460px;
	background: radial-gradient(circle, rgba(226,163,63,.24) 0%, transparent 70%);
	top: -160px; left: 12%;
	animation: tep-pulse 10s ease-in-out infinite;
}
.tep-counter-orb--2 {
	width: 380px; height: 380px;
	background: radial-gradient(circle, rgba(255,86,0,.14) 0%, transparent 70%);
	bottom: -140px; right: 10%;
	animation: tep-pulse 8s ease-in-out infinite reverse;
}
.tep-counter-section .tep-wrap { position: relative; z-index: 1; }
.tep-counter-display {
	display: flex;
	align-items: baseline;
	justify-content: center;
	gap: .35em;
	flex-wrap: wrap;
}
.tep-counter-number {
	font-family: var(--tep-font);
	font-size: clamp(4.5rem, 11vw, 9rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -.04em;
	background: linear-gradient(100deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 50%, var(--tep-gold) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-counter-suffix {
	font-family: var(--tep-font-display);
	font-size: clamp(1.6rem, 3.4vw, 2.6rem);
	font-style: italic;
	font-weight: 600;
	color: var(--tep-text);
}
.tep-counter-headline {
	font-size: 1.5rem !important;
	color: var(--tep-text-soft) !important;
	margin-top: .5rem !important;
}
.tep-counter-label {
	margin-top: .5rem !important;
	font-size: .9rem !important;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--tep-muted) !important;
}
.tep-counter-label strong { color: var(--tep-gold-light); font-weight: 700; }
.tep-counter-separator {
	width: 90px; height: 1px;
	margin: 2.5rem auto;
	background: linear-gradient(90deg, transparent, var(--tep-gold-bright), transparent);
}

/* ══════════════════════════════════════════════════════════════════════════
   LES TRANSFORMATIONS
══════════════════════════════════════════════════════════════════════════ */
.tep-transfo { background: var(--tep-black); }
.tep-transfo__stack {
	display: flex;
	flex-direction: column;
	gap: 40px;
	margin-top: 3.5rem;
}
.tep-transfo-row {
	display: grid;
	grid-template-columns: minmax(0, 460px) minmax(0, 1fr);
	gap: 50px;
	align-items: center;
	padding: 44px;
	background: linear-gradient(150deg, rgba(255,255,255,.045) 0%, rgba(255,255,255,.012) 100%);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	transition: border-color .3s, box-shadow .3s;
}
.tep-transfo-row:hover {
	border-color: var(--tep-border);
	box-shadow: 0 22px 60px rgba(0,0,0,.45);
}
.tep-transfo-row--reverse .tep-transfo-row__visual { order: 2; }
.tep-transfo-row__visual img {
	width: 100%;
	border-radius: var(--tep-radius);
	box-shadow: var(--tep-shadow-md);
}
.tep-transfo-row__copy h3 {
	font-size: clamp(1.45rem, 2.3vw, 1.95rem) !important;
	font-weight: 800;
	line-height: 1.25;
	text-transform: uppercase;
	letter-spacing: .01em;
	color: var(--tep-white);
	margin-bottom: 1.2rem !important;
}
.tep-transfo-row__copy h3 em {
	font-family: var(--tep-font-display);
	font-size: 1.2em;
	font-style: italic;
	font-weight: 700;
	text-transform: none;
	letter-spacing: 0;
	color: var(--tep-gold-light);
}
.tep-transfo-row__copy p {
	color: var(--tep-muted);
	margin-bottom: .85rem;
}
.tep-transfo-row__chute {
	margin-top: 1.2rem;
	padding-top: 1.2rem;
	border-top: 1px solid var(--tep-border-soft);
	color: var(--tep-gold-light) !important;
	font-weight: 600;
	margin-bottom: 0 !important;
}

.tep-transfo__outro {
	margin-top: 60px;
	padding: 56px clamp(24px, 5vw, 64px);
	text-align: center;
	background: radial-gradient(ellipse at center, rgba(226,163,63,.12) 0%, transparent 65%), var(--tep-panel);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
}
.tep-transfo__outro p { max-width: 760px; margin: 0 auto 1.2rem; }
.tep-transfo__outro strong { color: var(--tep-white); }
.tep-transfo__outro-punch {
	font-family: var(--tep-font-display);
	font-size: clamp(1.4rem, 2.6vw, 2rem) !important;
	font-style: italic;
	font-weight: 600;
	line-height: 1.4 !important;
	color: var(--tep-gold-light) !important;
	margin-bottom: 2rem !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   LE RESET TOTAL
══════════════════════════════════════════════════════════════════════════ */
.tep-reset {
	background:
		radial-gradient(ellipse at 50% 0%, rgba(255,86,0,.09) 0%, transparent 55%),
		var(--tep-black-3);
	border-block: 1px solid var(--tep-border-soft);
}
.tep-reset__title {
	font-size: clamp(2.6rem, 6.5vw, 5rem);
	letter-spacing: -.03em;
	background: linear-gradient(100deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 50%, var(--tep-gold) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	margin-bottom: 2rem;
}
.tep-reset .tep-prose { text-align: left; }
.tep-reset__nots {
	display: grid;
	gap: 12px;
	margin: 2.5rem 0;
	text-align: left;
}
.tep-reset__nots li {
	padding: 24px 32px;
	line-height: 1.7;
	background: rgba(0,0,0,.45);
	border-left: 3px solid rgba(255,86,0,.5);
	border-radius: 0 var(--tep-radius) var(--tep-radius) 0;
	color: var(--tep-muted);
	font-style: italic;
}

/* ══════════════════════════════════════════════════════════════════════════
   POURQUOI ÇA MARCHE
══════════════════════════════════════════════════════════════════════════ */
.tep-pourquoi { background: var(--tep-black); }
.tep-pourquoi__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 400px);
	gap: 48px;
	align-items: start;
	margin-top: 2.5rem;
}
.tep-pourquoi__aside {
	padding: 46px 40px;
	background: linear-gradient(165deg, rgba(226,163,63,.13) 0%, rgba(188,101,14,.04) 100%);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
	position: sticky;
	top: 30px;
}
.tep-pourquoi__aside-title {
	font-family: var(--tep-font-display);
	font-size: 1.95rem !important;
	font-style: italic;
	font-weight: 700;
	color: var(--tep-gold-light) !important;
	margin-bottom: 1.2rem !important;
	line-height: 1.25 !important;
}
.tep-pourquoi__aside p { color: var(--tep-text-soft); margin-bottom: 1rem; }
.tep-pourquoi__aside strong { color: var(--tep-white); }
.tep-pourquoi__aside .tep-btn { margin-top: 1rem; width: 100%; }

/* ══════════════════════════════════════════════════════════════════════════
   LE LIVRE
══════════════════════════════════════════════════════════════════════════ */
.tep-livre { background: var(--tep-black-2); }
.tep-livre__inner {
	padding: 56px clamp(24px, 5vw, 64px);
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	max-width: 900px;
	margin-inline: auto;
	text-align: center;
}
.tep-livre__inner .tep-prose { text-align: left; max-width: 720px; margin-inline: auto; }
.tep-livre__inner .tep-prose p { font-style: italic; }
.tep-livre__proof {
	display: inline-flex;
	align-items: center;
	gap: .8em;
	margin-top: 2rem;
	padding: 22px 32px;
	border-radius: 50px;
	background: rgba(226,163,63,.12);
	border: 1px solid var(--tep-border);
	font-size: 1.05rem !important;
	color: var(--tep-text-soft) !important;
	text-align: left;
	line-height: 1.5 !important;
}
.tep-livre__proof svg { width: 20px; height: 20px; flex-shrink: 0; color: var(--tep-gold-bright); }
.tep-livre__proof strong { color: var(--tep-gold-light); }

/* ══════════════════════════════════════════════════════════════════════════
   LES 5 PILIERS
══════════════════════════════════════════════════════════════════════════ */
.tep-piliers {
	background:
		radial-gradient(ellipse at 50% 0%, rgba(226,163,63,.08) 0%, transparent 50%),
		var(--tep-black);
}
.tep-piliers__stack {
	display: flex;
	flex-direction: column;
	gap: 32px;
	margin-top: 3.5rem;
}
.tep-pilier {
	display: grid;
	grid-template-columns: minmax(0, 420px) minmax(0, 1fr);
	gap: 50px;
	align-items: center;
	padding: 42px;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	transition: border-color .3s, box-shadow .3s;
}
.tep-pilier:hover { border-color: var(--tep-border); box-shadow: 0 22px 60px rgba(0,0,0,.45); }
.tep-pilier--reverse .tep-pilier__visual { order: 2; }
.tep-pilier__visual { position: relative; }
.tep-pilier__visual img {
	width: 100%;
	border-radius: var(--tep-radius);
	box-shadow: var(--tep-shadow-md);
}
.tep-pilier__num {
	position: absolute;
	top: -14px; left: -14px;
	width: 58px; height: 58px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--tep-gold-bright) 0%, var(--tep-gold) 100%);
	color: #1a0f03;
	font-size: 1.1rem;
	font-weight: 900;
	box-shadow: 0 10px 26px rgba(188,101,14,.4);
}
.tep-pilier__label {
	font-size: .78rem !important;
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: .5rem !important;
}
.tep-pilier__copy h3 {
	font-family: var(--tep-font-display);
	font-size: clamp(1.6rem, 2.8vw, 2.2rem) !important;
	font-style: italic;
	font-weight: 700;
	color: var(--tep-white);
	line-height: 1.2;
	margin-bottom: 1.2rem !important;
}
.tep-pilier__intro { color: var(--tep-muted); margin-bottom: 1rem; font-style: italic; }

/* ══════════════════════════════════════════════════════════════════════════
   COMMENT ÇA SE PASSE
══════════════════════════════════════════════════════════════════════════ */
.tep-deroule { background: var(--tep-black-2); }
.tep-deroule__lead {
	max-width: 800px;
	margin: 0 auto 3.5rem !important;
	color: var(--tep-muted) !important;
}
.tep-deroule__steps { display: flex; flex-direction: column; gap: 28px; }
.tep-deroule-step {
	display: grid;
	grid-template-columns: 76px minmax(0, 1fr);
	gap: 32px;
	padding: 44px;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
}
.tep-deroule-step__num {
	width: 76px; height: 76px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 22px;
	background: linear-gradient(135deg, rgba(226,163,63,.2), rgba(188,101,14,.06));
	border: 1px solid var(--tep-border);
	font-family: var(--tep-font-display);
	font-size: 2.1rem;
	font-weight: 700;
	font-style: italic;
	color: var(--tep-gold-light);
}
.tep-deroule-step__copy h3 {
	font-size: 1.6rem !important;
	font-weight: 700;
	color: var(--tep-white);
	line-height: 1.3;
	margin-bottom: 1rem !important;
}
.tep-deroule-step__copy p { color: var(--tep-muted); margin-bottom: 1rem; }
.tep-deroule-step__copy p:last-child { margin-bottom: 0; }
.tep-deroule-step__copy ul { margin-bottom: 1rem; }
.tep-deroule-step__img {
	margin-top: 1.6rem;
	border-radius: var(--tep-radius);
	overflow: hidden;
	border: 1px solid var(--tep-border-soft);
}
.tep-deroule-step__img img { width: 100%; }

/* ══════════════════════════════════════════════════════════════════════════
   GARANTIE
══════════════════════════════════════════════════════════════════════════ */
.tep-garantie {
	background:
		radial-gradient(ellipse at 20% 50%, rgba(226,163,63,.1) 0%, transparent 55%),
		var(--tep-black);
}
.tep-garantie__layout {
	display: grid;
	grid-template-columns: minmax(0, 440px) minmax(0, 1fr);
	gap: 56px;
	align-items: center;
}
.tep-garantie__visual img {
	width: 100%;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	box-shadow: var(--tep-shadow-lg);
}
.tep-garantie__seal {
	width: 68px; height: 68px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: rgba(226,163,63,.14);
	border: 1.5px solid var(--tep-border);
	color: var(--tep-gold-bright);
	margin-bottom: 1.5rem;
}
.tep-garantie__seal svg { width: 30px; height: 30px; }
.tep-garantie__choices {
	display: grid;
	gap: 12px;
	margin: 2rem 0;
}
.tep-garantie__choices li {
	padding: 26px 32px;
	line-height: 1.7;
	background: rgba(0,0,0,.4);
	border-left: 3px solid var(--tep-gold-bright);
	border-radius: 0 var(--tep-radius) var(--tep-radius) 0;
	color: var(--tep-text-soft);
}
.tep-garantie__choices span { color: var(--tep-gold-bright); margin-right: .4em; }
.tep-garantie__choices strong { color: var(--tep-white); }

/* ══════════════════════════════════════════════════════════════════════════
   TIMELINE
══════════════════════════════════════════════════════════════════════════ */
.tep-timeline { background: var(--tep-black-2); }
.tep-timeline__lead {
	max-width: 720px;
	margin: 0 auto 3.5rem !important;
	color: var(--tep-muted) !important;
}
.tep-timeline__list {
	position: relative;
	padding-left: 30px;
	list-style: none;
}
.tep-timeline__list::before {
	content: '';
	position: absolute;
	left: 7px; top: 10px; bottom: 10px;
	width: 2px;
	background: linear-gradient(180deg, var(--tep-gold-bright) 0%, rgba(188,101,14,.2) 100%);
}
.tep-timeline__item {
	position: relative;
	padding: 0 0 34px 22px;
}
.tep-timeline__item::before {
	content: '';
	position: absolute;
	left: -30px; top: 10px;
	width: 16px; height: 16px;
	border-radius: 50%;
	background: var(--tep-black-2);
	border: 2px solid var(--tep-gold-bright);
	box-shadow: 0 0 0 5px rgba(226,163,63,.1);
}
.tep-timeline__item--strong::before {
	background: var(--tep-gold-bright);
	box-shadow: 0 0 0 6px rgba(226,163,63,.2), 0 0 20px rgba(226,163,63,.5);
}
.tep-timeline__marker {
	display: inline-block;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--tep-gold-bright);
	margin-bottom: .5rem;
}
.tep-timeline__item p { color: var(--tep-muted); }
.tep-timeline__item strong { color: var(--tep-white); }
.tep-timeline__item--strong p { color: var(--tep-text-soft); }

/* ══════════════════════════════════════════════════════════════════════════
   LES BONUS
══════════════════════════════════════════════════════════════════════════ */
.tep-bonus {
	background:
		radial-gradient(ellipse at 50% 0%, rgba(226,163,63,.09) 0%, transparent 50%),
		var(--tep-black);
}
.tep-bonus__intro {
	max-width: 800px;
	margin: 0 auto 3.5rem;
	text-align: center;
}
.tep-bonus__intro p { color: var(--tep-muted); margin-bottom: 1rem; }
.tep-bonus__intro strong { color: var(--tep-gold-light); }

.tep-bonus__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 28px;
}
.tep-bonus-card {
	display: flex;
	flex-direction: column;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	overflow: hidden;
	transition: border-color .3s, transform .3s, box-shadow .3s;
}
.tep-bonus-card:hover {
	border-color: var(--tep-border);
	transform: translateY(-5px);
	box-shadow: 0 24px 60px rgba(0,0,0,.5);
}
.tep-bonus-card__visual { position: relative; }
.tep-bonus-card__visual img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.tep-bonus-card__visual::after {
	content: '';
	position: absolute; inset: 0;
	background: linear-gradient(180deg, transparent 55%, var(--tep-panel) 100%);
}
.tep-bonus-card__body { padding: 40px 36px 38px; flex: 1; }
.tep-bonus-card__tag {
	font-size: .82rem !important;
	font-weight: 700;
	letter-spacing: .06em;
	color: var(--tep-gold-bright) !important;
	margin-bottom: .6rem !important;
}
.tep-bonus-card h3 {
	font-size: 1.65rem !important;
	font-weight: 800;
	color: var(--tep-white);
	line-height: 1.25;
	margin-bottom: 1.2rem !important;
}
.tep-bonus-card__meta {
	display: grid;
	gap: 8px;
	margin-bottom: 1.8rem;
	padding: 24px 28px;
	background: rgba(0,0,0,.35);
	border-radius: var(--tep-radius);
	border: 1px solid var(--tep-border-soft);
}
.tep-bonus-card__meta li {
	font-size: 1.02rem !important;
	line-height: 1.7 !important;
	color: var(--tep-muted);
}
.tep-bonus-card__meta span {
	display: inline-block;
	min-width: 82px;
	font-weight: 700;
	color: var(--tep-gold-bright);
}
.tep-bonus-card__why {
	font-weight: 700;
	color: var(--tep-white) !important;
	margin-bottom: .7rem !important;
}
.tep-bonus-card__body > p { color: var(--tep-muted); margin-bottom: 1.1rem; }
.tep-bonus-card__body > p strong { color: var(--tep-white); }
.tep-bonus-card ul.tep-check { margin-bottom: 1.2rem; }

/* Programme cité sans carte détaillée : Laurent n'a fourni ni vignette ni
   descriptif pour La Boîte à outils. Mieux vaut une ligne sobre et vraie
   qu'une 5e carte remplie de texte inventé. */
.tep-bonus__aussi {
	max-width: 900px;
	margin: 2.4rem auto 0 !important;
	padding: 22px 32px;
	text-align: center;
	background: rgba(255, 255, 255, .03);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius);
	font-size: 1.08rem !important;
	line-height: 1.7 !important;
	color: var(--tep-text-soft) !important;
}
.tep-bonus__aussi strong { color: var(--tep-white); }
.tep-bonus-card__chute {
	padding-top: 1.2rem;
	border-top: 1px solid var(--tep-border-soft);
	color: var(--tep-gold-light) !important;
	font-weight: 600;
	margin-bottom: 0 !important;
}

.tep-bonus__warning {
	margin-top: 48px;
	padding: 52px clamp(24px, 5vw, 60px);
	text-align: center;
	background: linear-gradient(160deg, rgba(255,86,0,.12) 0%, rgba(188,101,14,.05) 100%);
	border: 1px solid rgba(255,86,0,.3);
	border-radius: var(--tep-radius-lg);
}
.tep-bonus__warning-title {
	font-size: clamp(1.45rem, 2.6vw, 2rem) !important;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: var(--tep-white) !important;
	margin-bottom: 1.5rem !important;
	line-height: 1.3 !important;
}
.tep-bonus__warning p { max-width: 700px; margin: 0 auto 1rem; color: var(--tep-muted); }
.tep-bonus__warning strong { color: var(--tep-gold-light); }
.tep-bonus__warning .tep-btn { margin-top: 1.5rem; }

/* ══════════════════════════════════════════════════════════════════════════
   NE RESTE PAS SEUL
══════════════════════════════════════════════════════════════════════════ */
.tep-cercle { background: var(--tep-black-2); }
.tep-cercle__layout {
	display: grid;
	grid-template-columns: minmax(0, 460px) minmax(0, 1fr);
	gap: 56px;
	align-items: center;
}
.tep-cercle__visual img {
	width: 100%;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	box-shadow: var(--tep-shadow-lg);
}
.tep-cercle__offre {
	margin-top: 64px;
	padding: 52px clamp(24px, 5vw, 60px);
	background: var(--tep-panel);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
	text-align: center;
}
.tep-cercle__offre-title {
	font-family: var(--tep-font-display);
	font-size: clamp(1.6rem, 3vw, 2.3rem) !important;
	font-style: italic;
	font-weight: 700;
	color: var(--tep-gold-light) !important;
	margin-bottom: 2rem !important;
}
.tep-cercle__offre-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin-bottom: 2.5rem;
	text-align: left;
}
.tep-cercle__offre-grid p {
	padding: 32px 30px;
	background: rgba(0,0,0,.35);
	border-top: 2px solid var(--tep-gold-bright);
	border-radius: 0 0 var(--tep-radius) var(--tep-radius);
	font-size: 1.12rem !important;
	line-height: 1.75 !important;
	color: var(--tep-text-soft) !important;
}
.tep-cercle__offre .tep-prose { max-width: 680px; margin-inline: auto; }
.tep-cercle__offre .tep-btn { margin-top: 2rem; }

/* ══════════════════════════════════════════════════════════════════════════
   TÉMOIGNAGES VIDÉO — montage collectif
══════════════════════════════════════════════════════════════════════════ */
/* Dégradé de `--tep-black-2` (fond de `.tep-cercle`, juste au-dessus) vers
   `--tep-black` (fond du carousel, juste en dessous) : la section fait le pont
   entre les deux au lieu de poser une troisième teinte. */
.tep-paroles {
	background:
		radial-gradient(ellipse at 50% 0%, rgba(226,163,63,.13) 0%, transparent 60%),
		linear-gradient(180deg, var(--tep-black-2) 0%, var(--tep-black) 100%);
	border-top: 1px solid var(--tep-border-soft);
	padding-bottom: 90px;
}
.tep-paroles__lead { max-width: 780px; color: var(--tep-text-soft); }
/* ~50-75 % de la largeur de page : plafonné à 1000 px, il retombe à 100 % de
   la colonne (`.tep-wrap`, 1200 px moins 32 px de gouttières) sur petit écran. */
.tep-paroles__frame {
	width: min(1000px, 100%);
	margin-inline: auto;
	aspect-ratio: 16 / 9;
	border-radius: var(--tep-radius-lg);
	overflow: hidden;
	background: #000;
	border: 1px solid var(--tep-border);
	box-shadow: var(--tep-shadow-lg);
}
.tep-paroles__frame iframe { display: block; width: 100%; height: 100%; border: 0; }

/* ══════════════════════════════════════════════════════════════════════════
   TÉMOIGNAGES
══════════════════════════════════════════════════════════════════════════ */
/* Enchaîne directement sur `.tep-paroles` : pas de bordure haute ici, les deux
   sections forment un seul bloc de preuves. */
.tep-temoignages { background: var(--tep-black); padding-top: 90px; }
/* ── Commandes du carousel ────────────────────────────────────────────────
   Les flèches étaient deux petits cercles de 48 px posés au-dessus du rail,
   alignés à droite : personne ne les voyait, et rien ne disait qu'il y avait
   d'autres témoignages derrière. Elles descendent contre les cartes, doublent
   de taille, et la flèche « suivant » est pleine — c'est elle qui invite. */
.tep-temo-stage {
	display: flex;
	align-items: center;
	gap: 20px;
}
/* `min-width: 0` : sans lui, un enfant flex refuse de passer sous la largeur de
   son contenu, et le rail déborderait au lieu de rogner. */
.tep-temo-track-wrap { overflow: hidden; flex: 1; min-width: 0; }

.tep-temo-prev,
.tep-temo-next {
	flex: 0 0 auto;
	width: 72px; height: 72px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	cursor: pointer;
	transition: transform .25s var(--tep-ease), background .25s, border-color .25s,
	            color .25s, box-shadow .25s, opacity .25s;
}
.tep-temo-prev svg,
.tep-temo-next svg { width: 30px; height: 30px; }

/* Retour en arrière : présent, mais discret. */
.tep-temo-prev {
	background: rgba(255, 255, 255, .04);
	border: 2px solid var(--tep-border);
	color: var(--tep-gold-bright);
}
.tep-temo-prev:hover {
	background: rgba(226, 163, 63, .18);
	border-color: var(--tep-gold-bright);
	transform: scale(1.06);
}

/* Aller voir la suite : c'est l'action qu'on veut provoquer, elle a le même
   or plein que les boutons d'inscription. */
.tep-temo-next {
	background: linear-gradient(135deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 55%, var(--tep-gold-deep) 100%);
	border: 2px solid transparent;
	color: var(--tep-black);
	box-shadow: 0 8px 26px rgba(226, 163, 63, .32);
}
.tep-temo-next:hover {
	transform: scale(1.08);
	box-shadow: 0 12px 36px rgba(226, 163, 63, .5);
}
.tep-temo-prev:focus-visible,
.tep-temo-next:focus-visible { outline: 2px solid var(--tep-gold-bright); outline-offset: 4px; }

/* Bout de course : la flèche reste en place (le rail ne doit pas sauter) mais
   annonce qu'elle ne mène plus nulle part. */
.tep-temo-prev[disabled],
.tep-temo-next[disabled] {
	opacity: .28;
	cursor: default;
	box-shadow: none;
	transform: none;
}

/* Appel discret tant que le carousel n'a jamais servi : trois respirations,
   puis l'animation s'arrête d'elle-même. Assez pour attirer l'œil, pas assez
   pour devenir un clignotant. */
@keyframes tep-temo-nudge {
	0%, 100% { transform: translateX(0); }
	50%      { transform: translateX(7px); }
}
.tep-temo-next--nudge { animation: tep-temo-nudge 1.5s var(--tep-ease) 3; }
.tep-temo-next--nudge:hover { animation: none; }

/* Rangée du bas : pastilles à gauche du compteur, l'ensemble centré. */
.tep-temo-bar {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	margin-top: 2rem;
}
/* Au-delà de 1400 px, `.tep-wrap` (1200 px) laisse au moins 100 px libres de
   chaque côté : les flèches y sont tirées, et le rail récupère toute sa largeur.
   Sans ça, elles rognaient 184 px sur les cartes et la vidéo tombait de
   554 à 462 px de large — on paie la lisibilité des commandes avec celle des
   témoignages, alors que la place existe. */
@media (min-width: 1400px) {
	.tep-temo-prev { margin-left: -92px; }
	.tep-temo-next { margin-right: -92px; }
}

.tep-temo-count {
	font-size: .95rem !important;
	font-weight: 700;
	letter-spacing: .1em;
	color: var(--tep-muted) !important;
	font-variant-numeric: tabular-nums;
}
.tep-temo-track {
	display: flex;
	gap: 24px;
	transition: transform .5s var(--tep-ease);
	will-change: transform;
}
.tep-temo-card {
	flex: 0 0 auto;
	padding: 42px 36px;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	position: relative;
}
.tep-temo-card {
	display: flex;
	flex-direction: column;
	padding: 0;
	overflow: hidden;
}
.tep-temo-card__body {
	position: relative;
	padding: 34px 34px 38px;
}
/* Le guillemet décoratif vit maintenant sur le corps de texte : sur la carte,
   il se serait posé par-dessus la vignette vidéo. */
.tep-temo-card__body::before {
	content: '“';
	position: absolute;
	top: -6px; right: 22px;
	font-family: var(--tep-font-display);
	font-size: 5rem;
	line-height: 1;
	color: rgba(226,163,63,.18);
	pointer-events: none;
}

/* ── Vignette vidéo : façade cliquable ────────────────────────────────────
   L'iframe Vimeo n'est insérée qu'au clic (tep.js §3b). Le <button> porte donc
   toute la surface de l'image : c'est lui la commande de lecture, et il reste
   atteignable au clavier sans qu'on ait à recréer un focus à la main. */
.tep-temo-card__video {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	padding: 0;
	border: 0;
	border-bottom: 1px solid var(--tep-border-soft);
	background: linear-gradient(150deg, #241a10 0%, var(--tep-black-2) 100%);
	cursor: pointer;
	overflow: hidden;
}
.tep-temo-card__video img {
	width: 100%; height: 100%;
	object-fit: cover;
	transition: transform .5s var(--tep-ease), opacity .3s;
}
.tep-temo-card__video::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.55) 100%);
	transition: opacity .3s;
}
.tep-temo-card__play {
	position: absolute;
	top: 50%; left: 50%;
	transform: translate(-50%, -50%);
	z-index: 2;
	width: 66px; height: 66px;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: rgba(10, 9, 8, .55);
	border: 2px solid var(--tep-gold-bright);
	color: var(--tep-gold-bright);
	backdrop-filter: blur(3px);
	transition: transform .3s var(--tep-ease), background .3s, color .3s;
}
.tep-temo-card__play svg { width: 26px; height: 26px; margin-left: 3px; }
.tep-temo-card__duree {
	position: absolute;
	right: 12px; bottom: 12px;
	z-index: 2;
	padding: 4px 10px;
	border-radius: 4px;
	background: rgba(10, 9, 8, .72);
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--tep-text-soft);
}
.tep-temo-card__video:hover img,
.tep-temo-card__video:focus-visible img { transform: scale(1.05); }
.tep-temo-card__video:hover .tep-temo-card__play,
.tep-temo-card__video:focus-visible .tep-temo-card__play {
	transform: translate(-50%, -50%) scale(1.1);
	background: var(--tep-gold-bright);
	color: var(--tep-black);
}
.tep-temo-card__video:focus-visible { outline: 2px solid var(--tep-gold-bright); outline-offset: -4px; }

/* Lecteur inséré : il remplace la façade et occupe le même cadre. */
.tep-temo-card__video--playing { cursor: default; }
.tep-temo-card__video--playing::after { opacity: 0; }
.tep-temo-card__video--playing .tep-temo-card__play,
.tep-temo-card__video--playing .tep-temo-card__duree { display: none; }
.tep-temo-card__video iframe {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	border: 0;
	z-index: 3;
}
.tep-temo-card__body .tep-temo-card__title {
	font-family: var(--tep-font-display);
	font-size: 1.58rem !important;
	font-style: italic;
	font-weight: 700;
	line-height: 1.35 !important;
	color: var(--tep-gold-light) !important;
	margin-bottom: 1.2rem !important;
}
.tep-temo-card p {
	font-size: 1.08rem !important;
	line-height: 1.8 !important;
	color: var(--tep-muted) !important;
	margin-bottom: .9rem;
}
.tep-temo-card__author {
	margin-top: 1.2rem;
	padding-top: 1.2rem;
	border-top: 1px solid var(--tep-border-soft);
	font-size: .9rem;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--tep-gold-bright);
}

.tep-temo-dots {
	display: flex;
	justify-content: center;
	gap: 10px;
}
.tep-temo-dot {
	width: 9px; height: 9px;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: rgba(255,255,255,.2);
	cursor: pointer;
	transition: all .25s var(--tep-ease);
}
.tep-temo-dot--active { background: var(--tep-gold-bright); width: 26px; border-radius: 50px; }

/* ══════════════════════════════════════════════════════════════════════════
   TÉMOIGNAGES — RAPPEL SOUS L'OFFRE
   Grille fixe de 4 cartes, sans carousel ni commandes : ici la preuve doit
   être visible d'un coup d'œil au moment de la décision, pas à explorer.
   Les cartes reprennent les classes `.tep-temo-card__video|play|duree|author`
   du carousel : même façade vidéo, même gestionnaire de clic, aucun style
   dupliqué. Seuls le cadre et la citation ont leurs propres classes, le corps
   est réduit à la phrase forte.
══════════════════════════════════════════════════════════════════════════ */
.tep-temo-post {
	background: linear-gradient(180deg, var(--tep-black) 0%, var(--tep-black-2) 100%);
	border-top: 1px solid var(--tep-border-soft);
}
.tep-temo-post__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 26px;
	margin-top: 3.2rem;
}
.tep-temo-mini {
	display: flex;
	flex-direction: column;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	overflow: hidden;
	transition: border-color .3s var(--tep-ease);
}
.tep-temo-mini:hover { border-color: var(--tep-border); }
.tep-temo-mini__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 28px 30px 30px;
}
/* ⚠️ Bâtie sur un <p> : sans la spécificité du reset, `margin-bottom` saute
   et la citation se colle à la signature. */
body.tep2026-page #tep-page .tep-temo-mini__title {
	font-family: var(--tep-font-display);
	font-size: 1.42rem !important;
	font-style: italic;
	font-weight: 700;
	line-height: 1.4 !important;
	color: var(--tep-gold-light) !important;
	margin-bottom: auto !important;
	padding-bottom: 1.2rem;
}
/* `margin-top` neutralisé : la citation pousse déjà la signature en bas de
   carte avec son `margin-bottom: auto`, les deux cumulés décrochaient le
   filet de séparation. */
.tep-temo-mini .tep-temo-card__author { margin-top: 0; }

.tep-temo-post__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 18px;
	margin-top: 3.4rem;
}

@media (max-width: 860px) {
	.tep-temo-post__grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
	.tep-temo-post__actions .tep-btn { width: 100%; }
	body.tep2026-page #tep-page .tep-temo-mini__title { font-size: 1.24rem !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   OBJECTIONS
══════════════════════════════════════════════════════════════════════════ */
.tep-objections { background: var(--tep-black-2); }
.tep-objections__intro {
	max-width: 700px;
	margin: 0 auto 3rem;
}
.tep-objections__intro p { color: var(--tep-muted); margin-bottom: .8rem; }
.tep-objections__intro strong { color: var(--tep-gold-light); }

.tep-objections__list { display: flex; flex-direction: column; gap: 14px; }
.tep-objection {
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius);
	overflow: hidden;
	transition: border-color .25s;
}
.tep-objection[open] { border-color: var(--tep-border); }
.tep-objection__q {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 30px 34px;
	cursor: pointer;
	list-style: none;
	font-size: 1.22rem;
	font-weight: 700;
	color: var(--tep-white);
	line-height: 1.4;
	transition: background .25s;
}
.tep-objection__q::-webkit-details-marker { display: none; }
.tep-objection__q:hover { background: rgba(255,255,255,.03); }
.tep-objection__dot { font-size: .7em; margin-right: .4em; }
.tep-objection__arrow {
	width: 22px; height: 22px;
	flex-shrink: 0;
	color: var(--tep-gold-bright);
	transition: transform .3s var(--tep-ease);
}
.tep-objection[open] .tep-objection__arrow { transform: rotate(180deg); }
.tep-objection__a {
	padding: 0 34px 36px;
	border-top: 1px solid var(--tep-border-soft);
	padding-top: 30px;
}
.tep-objection__a p { color: var(--tep-muted); margin-bottom: 1rem; }
.tep-objection__a p:last-child { margin-bottom: 0; }
.tep-objection__a strong { color: var(--tep-white); }
.tep-objection__answer {
	font-size: 1.15rem !important;
	font-weight: 600;
	line-height: 1.7 !important;
	color: var(--tep-gold-light) !important;
	padding: 24px 30px;
	background: rgba(226,163,63,.09);
	border-radius: var(--tep-radius);
	border-left: 3px solid var(--tep-gold-bright);
	margin-bottom: 1.5rem !important;
}
.tep-objection__a ul.tep-check { margin: 1.2rem 0; }
.tep-objection__img {
	margin-top: 1.6rem;
	border-radius: var(--tep-radius);
	overflow: hidden;
	border: 1px solid var(--tep-border-soft);
}
.tep-objection__img img { width: 100%; }

/* ══════════════════════════════════════════════════════════════════════════
   LAURENT
══════════════════════════════════════════════════════════════════════════ */
.tep-laurent {
	background: linear-gradient(150deg, #16100a 0%, var(--tep-black) 100%);
	padding: 0;
	border-block: 1px solid var(--tep-border-soft);
}
.tep-laurent__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 460px);
	max-width: var(--tep-wrap);
	margin-inline: auto;
	min-height: 640px;
}
.tep-laurent__inner {
	padding: 90px clamp(24px, 5vw, 70px) 90px clamp(24px, 6vw, 32px);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.tep-laurent__sub {
	font-size: .8rem !important;
	font-weight: 700;
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: .6rem !important;
}
.tep-laurent__title {
	font-size: clamp(2rem, 4vw, 3rem);
	font-weight: 900;
	letter-spacing: .02em;
	color: var(--tep-white);
	line-height: 1.05;
	margin-bottom: 1.6rem;
}
.tep-laurent__quote {
	font-family: var(--tep-font-display);
	font-size: clamp(1.5rem, 2.8vw, 2.1rem) !important;
	font-style: italic;
	font-weight: 600;
	line-height: 1.3 !important;
	color: var(--tep-gold-light) !important;
	margin: 2rem 0 !important;
	padding-left: 24px;
	border-left: 3px solid var(--tep-gold-bright);
}
.tep-laurent__quote em { color: var(--tep-white); }
.tep-laurent__inner .tep-btn { align-self: flex-start; margin-top: 2rem; }
.tep-laurent__photo { position: relative; overflow: hidden; }
.tep-laurent__photo img {
	width: 100%; height: 100%;
	object-fit: cover;
	object-position: top center;
}
.tep-laurent__photo::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, #16100a 0%, transparent 32%);
	z-index: 1;
	pointer-events: none;
}

/* ══════════════════════════════════════════════════════════════════════════
   OFFRE
══════════════════════════════════════════════════════════════════════════ */
.tep-offre {
	background:
		radial-gradient(ellipse at 50% 0%, rgba(226,163,63,.13) 0%, transparent 55%),
		var(--tep-black);
	scroll-margin-top: 40px;
}
.tep-offre__inclus {
	margin: 3rem auto 3.5rem;
	max-width: 900px;
	padding: 52px clamp(28px, 4vw, 56px);
	background: var(--tep-panel);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
}
.tep-offre__inclus-title {
	font-size: 1.5rem !important;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--tep-gold-light) !important;
	text-align: center;
	margin-bottom: 1.8rem !important;
}
.tep-offre__inclus-list {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 18px 40px;
}
.tep-offre__inclus-list li {
	position: relative;
	padding-left: 2.1em;
	font-size: 1.1rem !important;
	line-height: 1.7 !important;
	color: var(--tep-text-soft);
}
.tep-offre__inclus-list li::before {
	content: '✔';
	position: absolute;
	left: 0; top: 0;
	color: var(--tep-gold-bright);
	font-weight: 700;
}

.tep-offre__inclus-note {
	margin-top: 1.8rem !important;
	text-align: center;
	font-size: 1.02rem !important;
	line-height: 1.7 !important;
	color: var(--tep-muted) !important;
}

.tep-offre__grid-title {
	/* Cible des CTA : on réserve la hauteur de l'en-tête Divi fixe, sinon
	   le titre arrive sous la barre de navigation. */
	scroll-margin-top: 120px;
	font-size: 1.9rem !important;
	font-weight: 800;
	color: var(--tep-white);
	margin-bottom: 2.5rem !important;
}

.tep-offre__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	/* `start` : chaque carte prend la hauteur de son contenu, et comme les trois
	   listes sont désormais déroulées en entier (7 → 13 → 16 lignes), les
	   colonnes grandissent de gauche à droite. C'est l'escalade elle-même qui
	   porte la hiérarchie — arbitrage du 23/07/2026, qui a aussi fait sauter la
	   liste « non inclus » de la Basique.
	   ⚠️ Ne pas égaliser les hauteurs : la Premium doit rester la plus haute. */
	align-items: start;
	/* marge haute : laisse respirer les cartes surélevées + leurs pastilles */
	padding-top: 60px;
}

/* ── Carte : base commune ─────────────────────────────────────────────────── */
.tep-offre-card {
	position: relative;
	display: flex;
	flex-direction: column;
	/* Pas de `height: 100%` : sur une grille, il se résout contre la hauteur de
	   la RANGÉE et égalise les trois cartes même en `align-items: start`. Or on
	   veut justement des colonnes qui grandissent de gauche à droite. */
	padding: 46px 34px 40px;
	background: var(--tep-panel);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
	overflow: hidden;
	transition: transform .3s var(--tep-ease), box-shadow .3s, border-color .3s;
}
.tep-offre-card__head { margin-bottom: 1.6rem; }
.tep-offre-card h4 {
	font-size: 1.75rem;
	font-weight: 800;
	letter-spacing: -.01em;
	color: var(--tep-white);
	line-height: 1.2;
	margin-bottom: .5rem;
}
.tep-offre-card__tagline {
	font-size: 1.08rem !important;
	line-height: 1.5 !important;
	color: var(--tep-muted) !important;
}
.tep-offre-card__price {
	padding-bottom: 1.6rem;
	margin-bottom: 1.6rem;
	border-bottom: 1px solid var(--tep-border-soft);
}


.tep-offre-card__amount {
	display: flex;
	align-items: baseline;
	gap: .25em;
	flex-wrap: wrap;
	font-family: var(--tep-font);
	font-size: clamp(2.4rem, 4vw, 3.1rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -.035em;
	color: var(--tep-text);
}
.tep-offre-card__currency {
	font-size: .3em;
	font-weight: 700;
	letter-spacing: .05em;
	color: var(--tep-muted);
}
.tep-offre-card__facilite {
	margin-top: .8rem !important;
	font-size: 1rem !important;
	font-weight: 600;
	color: var(--tep-muted) !important;
}

/* ── Early Bird ────────────────────────────────────────────────────────────
   Trois pièces, toutes conditionnées côté PHP à une remise réellement en
   cours : la pastille au-dessus du prix, le prix plein barré posé sur la même
   ligne de base que le montant, et la ligne d'économie en dessous.
   Le jour où `TEP2026_EARLYBIRD` passe à false, le balisage disparaît — ces
   règles restent sans effet, il n'y a rien à retirer ici. */
.tep-offre-card__eb-tag {
	display: inline-flex;
	align-items: center;
	padding: 10px !important;
	margin-bottom: .9rem !important;
	border: 1px solid rgba(226, 163, 63, .45);
	border-radius: 999px;
	background: rgba(226, 163, 63, .12);
	/* 16px plancher : c'est une pastille, mais elle porte une information de
	   prix — on ne la descend pas au niveau des pastilles décoratives. */
	font-size: 1rem !important;
	font-weight: 800;
	letter-spacing: .12em;
	line-height: 1.4 !important;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
}
/* Le prix barré vit DANS `__amount` (flex, baseline, wrap) : il se pose à
   côté du montant sur les cartes larges et passe à la ligne sur mobile, sans
   jamais désaligner le chiffre. */
.tep-offre-card__was {
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: 0;
	white-space: nowrap;
	color: var(--tep-muted);
	/* La Premium peint `__amount` en dégradé transparent : sans ça, le prix
	   barré hérite du `-webkit-text-fill-color: transparent` et s'efface. */
	-webkit-text-fill-color: var(--tep-muted);
}
.tep-offre-card__was s {
	text-decoration: line-through;
	text-decoration-thickness: 2px;
	text-decoration-color: rgba(226, 163, 63, .8);
}
.tep-offre-card__save {
	margin-top: .7rem !important;
	font-size: 1.08rem !important;
	line-height: 1.5 !important;
	font-weight: 600;
	color: var(--tep-text-soft) !important;
}
.tep-offre-card__save strong { color: var(--tep-gold-bright); font-weight: 800; }

/* Basique : pas de remise, mais l'argument inverse — ce tarif ne bougera pas. */
.tep-offre-card__hold {
	display: flex;
	align-items: flex-start;
	gap: .6em;
	padding: .8em 1em;
	margin-top: 1rem !important;
	border: 1px solid var(--tep-border-soft);
	border-radius: 10px;
	background: rgba(255, 255, 255, .035);
	font-size: 1.02rem !important;
	line-height: 1.55 !important;
	color: var(--tep-text-soft) !important;
}
.tep-offre-card__hold svg {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	margin-top: .15em;
	color: var(--tep-gold-bright);
}
.tep-offre-card__hold strong { color: var(--tep-white); }

/* Bandeau au-dessus des trois cartes. */
.tep-offre__eb {
	max-width: 820px;
	/* Le titre au-dessus pose déjà 2.5rem, la grille en dessous 40px de
	   `padding-top` pour les cartes surélevées : rien à ajouter ici. */
	margin: 0 auto;
	padding: 22px 28px;
	border: 1px solid rgba(63, 218, 226, 0.35);
	border-radius: var(--tep-radius);
	background: linear-gradient(150deg, rgba(63, 218, 226, 0.35) 0%, rgba(63, 218, 226, 0.35) 100%);
	text-align: center;
}
.tep-offre__eb-tag {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	margin-bottom: .7rem !important;
	font-size: .95rem !important;
	font-weight: 800;
	letter-spacing: .14em;
	line-height: 1.4 !important;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
}
.tep-offre__eb-tag svg { width: 18px; height: 18px; }
.tep-offre__eb-copy {
	margin: 0 !important;
	color: var(--tep-text-soft) !important;
}
.tep-offre__eb-copy strong { color: var(--tep-gold-light); }

/* Lieu des 3 rencontres, sous les dates de l'étape 3 du déroulé. */
.tep-deroule-step__lieu {
	display: flex;
	align-items: center;
	gap: .5em;
	margin-bottom: 1.4rem !important;
	font-size: 1.15rem !important;
	line-height: 1.5 !important;
	font-weight: 600;
	color: var(--tep-text-soft) !important;
}
.tep-deroule-step__lieu svg {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	color: var(--tep-gold-bright);
}
.tep-offre-card__includes { margin-bottom: 2rem; flex: 1; }
.tep-offre-card__includes li { font-size: 1.06rem !important; line-height: 1.65 !important; }
/* ── Intertitres des cartes ────────────────────────────────────────────────
   « Tout ce qui est inclus dans la formule X » puis « Plus : ». Ils découpent
   une liste qui reste déroulée en entier — le détail hérité est toujours là,
   l'intertitre ne fait que dire d'où il vient. Le second est en or plein :
   c'est lui qui porte l'argument de la montée en gamme. */
.tep-offre-card__group {
	font-size: .82rem !important;
	font-weight: 700;
	letter-spacing: .14em;
	line-height: 1.5 !important;
	text-transform: uppercase;
	color: var(--tep-muted) !important;
	margin-bottom: 1rem !important;
}
.tep-offre-card__group strong { color: var(--tep-text-soft); }
.tep-offre-card__group--plus {
	display: flex;
	align-items: center;
	gap: .8em;
	margin-top: 1.6rem !important;
	color: var(--tep-gold-bright) !important;
}
/* Filet qui prolonge le « Plus : » jusqu'au bord de la carte : la coupure entre
   l'hérité et l'ajouté doit se voir sans avoir à lire. */
.tep-offre-card__group--plus::after {
	content: '';
	flex: 1;
	height: 1px;
	background: linear-gradient(90deg, rgba(226,163,63,.5), transparent);
}
.tep-offre-card--t3 .tep-offre-card__group--plus { color: var(--tep-gold-light) !important; }

.tep-offre-card__inherit {
	padding-bottom: .7em;
	margin-bottom: .9em !important;
	border-bottom: 1px dashed var(--tep-border-soft);
	color: var(--tep-text) !important;
}
.tep-offre-card__inherit strong { color: var(--tep-gold-light); }

/* ── Pastille ─────────────────────────────────────────────────────────────── */
.tep-offre-card__flag {
	position: absolute;
	top: 0; left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	gap: .45em;
	padding: .5em 1.4em;
	border-radius: 0 0 12px 12px;
	background: linear-gradient(135deg, var(--tep-gold-bright), var(--tep-gold));
	color: #1a0f03;
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
	z-index: 2;
}
.tep-offre-card__flag svg { width: 14px; height: 14px; }
.tep-offre-card__flag--premium {
	background: linear-gradient(135deg, #fff2d8 0%, var(--tep-gold-light) 35%, var(--tep-gold-bright) 100%);
	box-shadow: 0 6px 22px rgba(226, 163, 63, .45);
}
/* Les cartes portant une pastille laissent la place en haut */
.tep-offre-card--t2,
.tep-offre-card--t3 { padding-top: 56px; }

/* ══ PALIER 1 — TEP Basique : sobre ═══════════════════════════════════════ */
.tep-offre-card--t1:hover {
	border-color: var(--tep-border);
	transform: translateY(-5px);
	box-shadow: 0 22px 50px rgba(0,0,0,.45);
}

/* ══ PALIER 2 — TEP Idéal : chaleur + relief ══════════════════════════════ */
.tep-offre-card--t2 {
	margin-top: -18px;
	border-color: rgba(226, 163, 63, .5);
	background: linear-gradient(172deg, rgba(226,163,63,.14) 0%, var(--tep-panel) 55%);
	box-shadow: 0 0 44px rgba(226, 163, 63, .12), 0 18px 44px rgba(0,0,0,.4);
}
.tep-offre-card--t2 .tep-offre-card__amount { color: var(--tep-gold-light); }
.tep-offre-card--t2:hover {
	transform: translateY(-7px);
	box-shadow: 0 0 60px rgba(226, 163, 63, .2), 0 28px 60px rgba(0,0,0,.5);
}

/* ══ PALIER 3 — TEP Premium : bordure dégradée, halo, reflet animé ════════ */
.tep-offre-card--t3 {
	margin-top: -38px;
	border: 1px solid transparent;
	background:
		linear-gradient(172deg, #2a1d0f 0%, #1d1712 45%, var(--tep-panel) 100%) padding-box,
		linear-gradient(150deg, #fff2d8 0%, var(--tep-gold-bright) 28%, var(--tep-gold-deep) 58%, var(--tep-gold-light) 100%) border-box;
	box-shadow:
		0 0 70px rgba(226, 163, 63, .24),
		0 26px 66px rgba(0, 0, 0, .55),
		inset 0 1px 0 rgba(255, 255, 255, .1);
}
.tep-offre-card--t3 .tep-offre-card__amount {
	font-size: clamp(2.7rem, 4.6vw, 3.5rem);
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-light) 40%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-offre-card--t3 .tep-offre-card__currency {
	-webkit-text-fill-color: var(--tep-gold-light);
	color: var(--tep-gold-light);
	opacity: .8;
}
.tep-offre-card--t3 h4 {
	font-size: 1.95rem;
	background: linear-gradient(100deg, #ffffff 0%, var(--tep-gold-light) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-offre-card--t3 .tep-offre-card__price { border-bottom-color: rgba(226, 163, 63, .3); }
.tep-offre-card--t3 .tep-check li::before { color: var(--tep-gold-light); }

/* ── Coche verte devant chaque avantage des 3 formules ────────────────────
   Demande de Kévin (31/07/2026). Uniquement dans le bloc offre : ailleurs
   (bonus, objections) la coche or ✔ reste, sinon l'émoji vert casse la
   palette noir & or sur toute la page.
   La pile de polices est indispensable : sans elle, U+2705 peut être rendu
   par la police de texte en glyphe monochrome, et on perd le vert. */
.tep-offre-card .tep-check li::before,
.tep-offre__inclus-list li::before {
	content: '✅';
	color: initial;
	font-size: .92em;
	font-weight: 400;
	font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', sans-serif;
	/* Cale la boîte de l'émoji sur la première ligne de texte : à .92em, il
	   faut 1,78 pour que les deux centres se superposent (li en 1,65/1,7). */
	line-height: 1.78;
	top: 0;
}
.tep-offre-card--t3:hover {
	transform: translateY(-8px);
	box-shadow:
		0 0 90px rgba(226, 163, 63, .34),
		0 34px 78px rgba(0, 0, 0, .6),
		inset 0 1px 0 rgba(255, 255, 255, .14);
}

/* Reflet qui balaie la carte Premium */
.tep-offre-card__shine {
	position: absolute;
	inset: 0;
	overflow: hidden;
	border-radius: inherit;
	pointer-events: none;
	z-index: 1;
}
.tep-offre-card__shine::after {
	content: '';
	position: absolute;
	top: -60%; left: -70%;
	width: 38%; height: 220%;
	background: linear-gradient(100deg, transparent 0%, rgba(255, 240, 214, .16) 50%, transparent 100%);
	transform: rotate(16deg);
	animation: tep-shine 6s ease-in-out infinite;
}
@keyframes tep-shine {
	0%, 68% { left: -70%; }
	100%    { left: 135%; }
}

/* ── Modalités de paiement ────────────────────────────────────────────────── */
.tep-offre__modalites {
	max-width: 900px;
	margin: 3.5rem auto 0;
	padding: 42px clamp(28px, 4vw, 52px);
	text-align: center;
	background: rgba(255, 255, 255, .03);
	border: 1px solid var(--tep-border-soft);
	border-radius: var(--tep-radius-lg);
}
.tep-offre__modalites-title {
	font-size: .8rem !important;
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: .9rem !important;
}
.tep-offre__modalites p { font-size: 1.12rem !important; color: var(--tep-muted) !important; }
.tep-offre__modalites strong { color: var(--tep-white); }

/* ── Encart de garantie, en fin de section offre ───────────────────────────
   Reprise à l'identique du contenu de la section GARANTIE (même texte, même
   sceau, mêmes deux choix), à la place de la pastille d'une ligne qui s'y
   trouvait — demande de Laurent, 23/07/2026. Le texte est servi par
   `tep2026_garantie_texte()` : une seule source pour les deux emplacements. */
.tep-offre__garantie {
	max-width: 900px;
	margin: 3.5rem auto 0;
	padding: 48px clamp(28px, 4vw, 56px);
	background:
		radial-gradient(ellipse at 50% 0%, rgba(226,163,63,.09) 0%, transparent 65%),
		var(--tep-panel);
	border: 1px solid var(--tep-border);
	border-radius: var(--tep-radius-lg);
}
.tep-offre__garantie .tep-garantie__seal { margin-inline: auto; }
.tep-offre__garantie-title {
	text-align: center;
	font-size: 1.65rem !important;
	font-weight: 900;
	letter-spacing: -.01em;
	line-height: 1.25;
	color: var(--tep-white);
	margin-bottom: 1.6rem !important;
}
.tep-offre__garantie .tep-prose { max-width: 640px; margin-inline: auto; text-align: center; }
.tep-offre__garantie .tep-garantie__choices { max-width: 640px; }

/* Pastille de rappel, en clôture du panneau « Modalités de paiement ».
   Volontairement courte : c'est une réassurance de fin de lecture, PAS l'énoncé
   de la garantie. Le texte légal complet (14 jours de rétractation, puis les 15
   jours) est dans l'encart juste en dessous — ne jamais faire porter à cette
   pastille seule le message de remboursement. */
.tep-offre__modalites-garantie {
	display: inline-flex;
	align-items: center;
	gap: .6em;
	margin-top: 1.6rem !important;
	padding: 18px 30px;
	border-radius: 50px;
	background: rgba(226, 163, 63, .1);
	border: 1px solid var(--tep-border);
	color: var(--tep-text-soft) !important;
	font-size: 1.02rem !important;
	text-align: left;
	line-height: 1.5 !important;
}
.tep-offre__modalites-garantie svg { width: 18px; height: 18px; flex-shrink: 0; color: var(--tep-gold-bright); }

.tep-offre__legal {
	margin-top: 3rem;
	text-align: center;
	font-size: .85rem !important;
	line-height: 1.7 !important;
	color: rgba(156, 143, 127, .7) !important;
	max-width: 700px;
	margin-inline: auto;
}

/* ══════════════════════════════════════════════════════════════════════════
   DERNIÈRE PROMOTION — clôture de l'enseignement TEP
   Trois points de contact : pastille héro, section dédiée, rappel sur l'offre.
══════════════════════════════════════════════════════════════════════════ */

/* ── 1. Pastille dans le héro ─────────────────────────────────────────────── */
/* Badge en deux segments : une étiquette pleine qui claque, puis le fait brut.
   Beaucoup plus lisible et plus dur qu'une pastille uniforme. */
.tep-hero__last {
	display: inline-flex;
	align-items: stretch;
	margin-bottom: 1.8rem !important;
	border-radius: 10px;
	overflow: hidden;
	font-size: 1.06rem !important;
	line-height: 1.35 !important;
	border: 1px solid rgba(226, 163, 63, .55);
	background: rgba(10, 9, 8, .82);
	backdrop-filter: blur(10px);
	box-shadow: 0 0 40px rgba(226, 163, 63, .22), 0 10px 30px rgba(0, 0, 0, .45);
}

/* Segment 1 — étiquette pleine or, texte noir */
.tep-hero__last-tag {
	display: inline-flex;
	align-items: center;
	gap: .6em;
	flex-shrink: 0;
	padding: .85em 1.15em;
	background: linear-gradient(135deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 55%, var(--tep-gold) 100%);
	color: #170d02;
	font-size: .88em;
	font-weight: 900;
	letter-spacing: .13em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Segment 2 — le fait, en clair sur fond sombre.
   Deux niveaux : la ligne forte annonce la clôture, la ligne basse la situe.
   La colonne est indispensable, en `flex` sur une rangée les deux lignes se
   retrouvaient côte à côte et la ligne forte perdait tout son poids. */
.tep-hero__last-text {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: .3em;
	padding: 1em 1.5em;
	color: var(--tep-text-soft);
	font-weight: 600;
}
.tep-hero__last-headline {
	display: block;
	font-size: 1.65em !important;
	line-height: 1.2;
	font-weight: 900;
	letter-spacing: .01em;
	color: var(--tep-gold-light);
	text-shadow: 0 0 26px rgba(226, 163, 63, .35);
}
.tep-hero__last-sub {
	display: block;
	font-size: .96em;
	line-height: 1.45;
	color: var(--tep-text-soft);
}
.tep-hero__last-text strong { color: var(--tep-gold-light); font-weight: 800; }

.tep-hero__last-dot {
	width: 9px; height: 9px;
	flex-shrink: 0;
	border-radius: 50%;
	background: #170d02;
	box-shadow: 0 0 0 0 rgba(23, 13, 2, .7);
	animation: tep-blip 2.4s ease-out infinite;
}

@media (max-width: 620px) {
	.tep-hero__last { flex-direction: column; align-items: flex-start; }
	.tep-hero__last-tag { width: 100%; }
	/* 1,65em sur une colonne de 320 px, la ligne forte casse en trois morceaux
	   et le badge occupe la moitié du premier écran. */
	.tep-hero__last-headline { font-size: 1.35em !important; }
}
@keyframes tep-blip {
	0%   { box-shadow: 0 0 0 0 rgba(23,13,2,.6); }
	70%  { box-shadow: 0 0 0 9px rgba(23,13,2,0); }
	100% { box-shadow: 0 0 0 0 rgba(23,13,2,0); }
}

/* ── 2. Section dédiée ────────────────────────────────────────────────────── */
.tep-derniere {
	position: relative;
	overflow: hidden;
	background: linear-gradient(168deg, #1c1409 0%, #120e0a 45%, var(--tep-black) 100%);
	border-block: 1px solid var(--tep-border);
	padding-block: 130px;
}
.tep-derniere__glow {
	position: absolute;
	top: -220px; left: 50%;
	transform: translateX(-50%);
	width: 900px; height: 620px;
	background: radial-gradient(ellipse, rgba(226,163,63,.22) 0%, transparent 68%);
	filter: blur(70px);
	pointer-events: none;
}
.tep-derniere .tep-wrap { position: relative; z-index: 1; }
.tep-derniere__inner { text-align: center; }

.tep-derniere__seal {
	width: 92px; height: 92px;
	margin: 0 auto 2.2rem;
	display: flex; align-items: center; justify-content: center;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(226,163,63,.2) 0%, rgba(226,163,63,.04) 70%);
	border: 1px solid rgba(226,163,63,.45);
	color: var(--tep-gold-light);
	box-shadow: 0 0 46px rgba(226,163,63,.24), inset 0 1px 0 rgba(255,255,255,.1);
}
.tep-derniere__seal svg { width: 46px; height: 46px; }

.tep-derniere__label {
	font-size: .92rem !important;
	font-weight: 700;
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: 1.4rem !important;
}
.tep-derniere__title {
	font-family: var(--tep-font);
	font-size: clamp(2.3rem, 5.2vw, 4.1rem);
	font-weight: 900;
	line-height: 1.06;
	letter-spacing: -.03em;
	color: var(--tep-white);
	margin-bottom: 2.4rem;
	text-wrap: balance;
}
.tep-derniere__title em {
	font-family: var(--tep-font-display);
	font-size: 1.04em;
	font-style: italic;
	font-weight: 700;
	letter-spacing: -.01em;
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-light) 45%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.tep-derniere__body { max-width: 740px; margin: 0 auto 3rem; }
.tep-derniere__body p { margin-bottom: 1.35rem; color: var(--tep-text-soft) !important; }
.tep-derniere__body p:last-child { margin-bottom: 0; }
.tep-derniere__punch {
	font-family: var(--tep-font-display);
	font-size: clamp(1.7rem, 3.4vw, 2.5rem) !important;
	font-style: italic;
	font-weight: 700;
	line-height: 1.25 !important;
	color: var(--tep-gold-light) !important;
	margin-block: 2.2rem 2rem !important;
}

.tep-derniere__facts {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	max-width: 760px;
	margin: 0 auto 3rem;
}
.tep-derniere__fact {
	padding: 30px 20px;
	border-radius: var(--tep-radius-lg);
	background: rgba(0,0,0,.4);
	border: 1px solid var(--tep-border-soft);
}
.tep-derniere__fact--strong {
	background: linear-gradient(170deg, rgba(226,163,63,.16) 0%, rgba(0,0,0,.4) 100%);
	border-color: rgba(226,163,63,.5);
	box-shadow: 0 0 40px rgba(226,163,63,.16);
}
.tep-derniere__fact-num {
	display: block;
	font-size: clamp(2.8rem, 5vw, 3.8rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -.04em;
	color: var(--tep-gold-light);
	margin-bottom: .5rem;
}
.tep-derniere__fact--strong .tep-derniere__fact-num {
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-derniere__fact-label {
	display: block;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--tep-muted);
}

.tep-derniere__chute {
	max-width: 700px;
	margin: 0 auto 2.4rem !important;
	font-size: clamp(1.25rem, 2.4vw, 1.7rem) !important;
	font-weight: 700;
	line-height: 1.45 !important;
	color: var(--tep-white) !important;
}

/* ── 3. Rappel au-dessus des formules ─────────────────────────────────────── */
.tep-offre__last {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: .9em;
	max-width: 900px;
	margin: 0 auto 3rem !important;
	padding: 22px 30px;
	border-radius: var(--tep-radius-lg);
	background: linear-gradient(120deg, rgba(226,163,63,.16) 0%, rgba(188,101,14,.06) 100%);
	border: 1px solid rgba(226,163,63,.45);
	font-size: 1.12rem !important;
	font-weight: 600;
	line-height: 1.55 !important;
	color: var(--tep-text-soft) !important;
	text-align: center;
}
.tep-offre__last-tag {
	flex-shrink: 0;
	padding: .45em 1.1em;
	border-radius: 50px;
	background: linear-gradient(135deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 55%, var(--tep-gold) 100%);
	color: #170d02;
	font-size: .82em;
	font-weight: 900;
	letter-spacing: .13em;
	text-transform: uppercase;
	white-space: nowrap;
}
.tep-offre__last strong { color: var(--tep-gold-light); font-weight: 800; }

@media (max-width: 900px) {
	.tep-derniere         { padding-block: 90px; }
	.tep-derniere__facts  { grid-template-columns: 1fr; max-width: 380px; }
	.tep-offre__last      { flex-direction: column; gap: .5em; }
}

/* ══════════════════════════════════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 1100px) {
	.tep-hero__content        { max-width: 100%; }
	/* Le texte occupe toute la largeur : plus de couloir libre où loger un
	   calque étroit — le badge « Dernière promotion » passerait devant le
	   visage. La photo redevient donc un fond pleine largeur, nettement
	   estompé : une ambiance, pas un sujet. */
	.tep-hero__bg             { --tep-hero-photo-w: 100%;
	                            left: 0; right: 0;
	                            background-position: 66% top;
	                            opacity: .55;
	                            -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 42%, #000 100%);
	                                    mask-image: linear-gradient(90deg, rgba(0,0,0,0) 0%, #000 42%, #000 100%); }
	.tep-reveil__layout,
	.tep-bascule__layout,
	.tep-garantie__layout,
	.tep-cercle__layout,
	.tep-pourquoi__layout     { grid-template-columns: 1fr; gap: 36px; }
	.tep-pourquoi__aside      { position: static; }
	.tep-bascule__layout .tep-bascule__visual { order: -1; }
	.tep-transfo-row,
	.tep-pilier               { grid-template-columns: 1fr; gap: 28px; }
	.tep-transfo-row--reverse .tep-transfo-row__visual,
	.tep-pilier--reverse .tep-pilier__visual { order: 0; }
	.tep-bonus__grid          { grid-template-columns: 1fr; }
	.tep-laurent__layout      { grid-template-columns: 1fr; }
	.tep-laurent__photo       { min-height: 420px; order: -1; }
	.tep-laurent__photo::before { background: linear-gradient(to bottom, transparent 55%, #16100a 100%); }
	.tep-laurent__inner       { padding: 60px 24px; }
}

@media (max-width: 900px) {
	/* Plus de place de part et d'autre du rail : les flèches passent dessous,
	   côte à côte et centrées. Elles restent grandes — c'est justement sur
	   petit écran qu'on a le plus besoin de les voir. */
	.tep-temo-stage           { flex-wrap: wrap; justify-content: center; gap: 16px; }
	.tep-temo-track-wrap      { order: -1; flex: 0 0 100%; }
	.tep-temo-prev,
	.tep-temo-next            { width: 64px; height: 64px; }
	.tep-temo-prev svg,
	.tep-temo-next svg        { width: 27px; height: 27px; }

	.tep-section              { padding-block: 72px; }
	.tep-benefits__grid       { grid-template-columns: 1fr; max-width: 520px; margin-inline: auto; }
	.tep-reveil__decalage-grid,
	.tep-reveil__doutes,
	.tep-cercle__offre-grid   { grid-template-columns: 1fr; }
	.tep-offre__inclus-list   { grid-template-columns: 1fr; }
}

/* Offre : 3 colonnes → 1 colonne empilée (l'escalade passe par l'ordre) */
@media (max-width: 1024px) {
	.tep-offre__grid {
		grid-template-columns: minmax(0, 460px);
		justify-content: center;
		gap: 28px;
		padding-top: 20px;
	}
	.tep-offre-card--t2,
	.tep-offre-card--t3 { margin-top: 0; }
}

@media (max-width: 768px) {
	.tep-wrap                 { padding-inline: 22px; }
	.tep-hero                 { min-height: auto; padding-block: 90px 70px; }
	.tep-hero .tep-wrap       { padding-inline: 22px; }
	/* Colonne unique et étroite : un fondu latéral ne laisserait plus rien de
	   la photo. On garde le cadre plein, simplement estompé. */
	.tep-hero__bg             { background-position: 62% top; opacity: .5;
	                            -webkit-mask-image: none; mask-image: none; }
	.tep-hero__content h1     { font-size: 3rem; }
	.tep-hero__actions        { align-items: stretch; width: 100%; }
	.tep-hero__actions .tep-btn { width: 100%; }
	.tep-hero__note           { text-align: center; }
	.tep-h2                   { font-size: 1.85rem; }
	.tep-transfo-row,
	.tep-pilier               { padding: 24px; }
	.tep-deroule-step         { grid-template-columns: 1fr; gap: 18px; padding: 26px; }
	.tep-deroule-step__num    { width: 60px; height: 60px; font-size: 1.7rem; }
	.tep-cta-band__inner      { flex-direction: column; text-align: center; }
	.tep-temo-bar             { flex-wrap: wrap; gap: 14px 18px; }
	.tep-temo-card            { flex: 0 0 88vw; }
	.tep-temo-card__body      { padding: 26px 24px 30px; }
	.tep-objection__q         { padding: 20px 22px; font-size: 1rem; }
	.tep-objection__a         { padding-inline: 22px; }
	.tep-pilier__num          { top: -10px; left: -10px; width: 48px; height: 48px; font-size: .95rem; }
	.tep-livre__proof         { flex-direction: column; text-align: center; border-radius: var(--tep-radius); }
	.tep-laurent__quote       { padding-left: 18px; }
}

@media (max-width: 480px) {
	body.tep2026-page #tep-page { font-size: 18px; }
	.tep-hero__content h1     { font-size: 2.4rem; }
	.tep-counter-number       { font-size: 4.2rem; }
	.tep-reset__title         { font-size: 2.4rem; }
	.tep-transfo__outro,
	.tep-bascule__panel,
	.tep-cercle__offre,
	.tep-bonus__warning,
	.tep-offre__inclus        { padding-inline: 20px; }
}

/* ══════════════════════════════════════════════════════════════════════════
   LISIBILITÉ — public 45-60 ans (override global, haute spécificité)
══════════════════════════════════════════════════════════════════════════ */
/* Corps de texte — public 45-70 ans, on ne doit jamais forcer pour lire. */
body.tep2026-page #tep-page p  { font-size: 22px; line-height: 1.9; }
body.tep2026-page #tep-page li { font-size: 21px; line-height: 1.85; }
body.tep2026-page #tep-page h3 { font-size: 27px; line-height: 1.3; }
body.tep2026-page #tep-page h4 { font-size: 25px; line-height: 1.25; }

/* Surtitres, libellés et pastilles : taille propre — sinon la règle `p`
   ci-dessus les écrase (elle est plus spécifique que la classe seule). */
body.tep2026-page #tep-page .tep-overline             { font-size: .92rem; }
body.tep2026-page #tep-page .tep-hero__kicker         { font-size: .95rem !important; }
body.tep2026-page #tep-page .tep-badge                { font-size: .9rem; }
body.tep2026-page #tep-page .tep-pilier__label        { font-size: .92rem !important; }
body.tep2026-page #tep-page .tep-laurent__sub         { font-size: .94rem !important; }
body.tep2026-page #tep-page .tep-timeline__marker     { font-size: .94rem; }
body.tep2026-page #tep-page .tep-offre-card__flag     { font-size: .8rem; }
body.tep2026-page #tep-page .tep-offre-card__group    { font-size: .82rem !important; }
body.tep2026-page #tep-page .tep-derniere__label      { font-size: .98rem !important; }
body.tep2026-page #tep-page .tep-offre__modalites-title { font-size: .92rem !important; }
body.tep2026-page #tep-page .tep-bonus-card__tag      { font-size: .98rem !important; }
body.tep2026-page #tep-page .tep-temo-card__author    { font-size: 1.02rem; }
body.tep2026-page #tep-page .tep-derniere__fact-label { font-size: 1.08rem; }
body.tep2026-page #tep-page .tep-up-step              { font-size: .88rem; }
body.tep2026-page #tep-page .tep-cf-up-card__step    { font-size: .84rem; }
body.tep2026-page #tep-page .tep-cf-up-card__title   { font-size: .84rem; }
body.tep2026-page #tep-page .tep-temo-dot             { font-size: 0; }

/* Mention légale — centrée, discrète mais lisible */
body.tep2026-page #tep-page .tep-offre__legal {
	font-size: 1rem;
	line-height: 1.75;
	text-align: center;
	margin-left: auto;
	margin-right: auto;
}

/* ══════════════════════════════════════════════════════════════════════════
   CENTRAGE DES PANNEAUX — correctif
   Un débordement horizontal (orbe, carousel, carte surélevée) suffit à
   décaler le calcul des marges `auto` : tout le bloc glisse alors sur la
   gauche. On coupe le débordement à la racine, puis on reverrouille le
   centrage horizontal ET l'équilibre vertical des panneaux centrés.
══════════════════════════════════════════════════════════════════════════ */
body.tep2026-page #tep-page { overflow-x: clip; }

body.tep2026-page #tep-page .tep-transfo__outro,
body.tep2026-page #tep-page .tep-bascule__panel,
body.tep2026-page #tep-page .tep-cercle__offre,
body.tep2026-page #tep-page .tep-bonus__warning,
body.tep2026-page #tep-page .tep-derniere__inner,
body.tep2026-page #tep-page .tep-livre__inner,
body.tep2026-page #tep-page .tep-offre__modalites {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

/* En contexte flex, les enfants ne s'étirent plus : on leur rend leur largeur
   pour que `max-width` + `margin: auto` continuent de centrer normalement. */
body.tep2026-page #tep-page .tep-transfo__outro > *,
body.tep2026-page #tep-page .tep-bascule__panel > *,
body.tep2026-page #tep-page .tep-cercle__offre > *,
body.tep2026-page #tep-page .tep-bonus__warning > *,
body.tep2026-page #tep-page .tep-derniere__inner > *,
body.tep2026-page #tep-page .tep-livre__inner > *,
body.tep2026-page #tep-page .tep-offre__modalites > * {
	width: 100%;
	margin-left: auto;
	margin-right: auto;
}

/* Les éléments qui doivent garder leur largeur naturelle (boutons, pastilles) */
body.tep2026-page #tep-page .tep-transfo__outro > .tep-btn,
body.tep2026-page #tep-page .tep-bascule__panel > .tep-btn,
body.tep2026-page #tep-page .tep-cercle__offre > .tep-btn,
body.tep2026-page #tep-page .tep-bonus__warning > .tep-btn,
body.tep2026-page #tep-page .tep-derniere__inner > .tep-btn,
body.tep2026-page #tep-page .tep-derniere__inner > .tep-derniere__seal,
body.tep2026-page #tep-page .tep-livre__inner > .tep-livre__proof,
body.tep2026-page #tep-page .tep-offre__modalites > .tep-offre__modalites-garantie {
	width: auto;
	max-width: 100%;
}

/* Padding vertical symétrique : le dernier enfant ne pousse plus vers le bas */
body.tep2026-page #tep-page .tep-transfo__outro > *:last-child,
body.tep2026-page #tep-page .tep-bascule__panel > *:last-child,
body.tep2026-page #tep-page .tep-cercle__offre > *:last-child,
body.tep2026-page #tep-page .tep-bonus__warning > *:last-child,
body.tep2026-page #tep-page .tep-derniere__inner > *:last-child,
body.tep2026-page #tep-page .tep-livre__inner > *:last-child,
body.tep2026-page #tep-page .tep-offre__modalites > *:last-child { margin-bottom: 0 !important; }

/* ══════════════════════════════════════════════════════════════════════════
   PAGE DE CONFIRMATION D'INSCRIPTION
   Le <body> porte `tep2026-page` ET `tep2026-confirm`, et le conteneur garde
   l'id `tep-page` : toute la base (reset, variables, typographie, boutons,
   apparitions) est donc héritée. Seules les règles propres à cette page
   figurent ci-dessous.
══════════════════════════════════════════════════════════════════════════ */

body.tep2026-confirm #tep-page { background: var(--tep-black); }

/* ── Accusé de réception ──────────────────────────────────────────────────── */
.tep-cf-hero {
	position: relative;
	overflow: hidden;
	padding: 130px 0 110px;
	background: linear-gradient(172deg, #1c1409 0%, #120e0a 48%, var(--tep-black) 100%);
	border-bottom: 1px solid var(--tep-border);
}
.tep-cf-hero__glow {
	position: absolute;
	top: -280px; left: 50%;
	transform: translateX(-50%);
	width: 980px; height: 700px;
	background: radial-gradient(ellipse, rgba(226,163,63,.26) 0%, transparent 68%);
	filter: blur(80px);
	pointer-events: none;
}
.tep-cf-hero .tep-wrap { position: relative; z-index: 1; }

/* Sceau : l'anneau se dessine, puis la coche. Le tracé part de `stroke-dashoffset`
   plutôt que d'une opacité : le geste se lit comme une validation. */
.tep-cf-seal {
	width: 116px; height: 116px;
	margin: 0 auto 2.4rem;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(226,163,63,.2) 0%, rgba(226,163,63,.04) 70%);
	border: 1px solid rgba(226,163,63,.45);
	box-shadow: 0 0 60px rgba(226,163,63,.3), inset 0 1px 0 rgba(255,255,255,.1);
	display: flex; align-items: center; justify-content: center;
}
.tep-cf-seal svg { width: 62px; height: 62px; overflow: visible; }
.tep-cf-seal__ring,
.tep-cf-seal__check {
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.tep-cf-seal__ring  { stroke: rgba(226,163,63,.45); stroke-width: 2; stroke-dasharray: 152; stroke-dashoffset: 152; }
.tep-cf-seal__check { stroke: var(--tep-gold-light); stroke-width: 4; stroke-dasharray: 44; stroke-dashoffset: 44; filter: drop-shadow(0 0 8px rgba(226,163,63,.6)); }
.tep-cf-seal.tep-visible .tep-cf-seal__ring  { animation: tep-cf-draw .8s var(--tep-ease) forwards; }
.tep-cf-seal.tep-visible .tep-cf-seal__check { animation: tep-cf-draw .5s var(--tep-ease) .55s forwards; }
@keyframes tep-cf-draw { to { stroke-dashoffset: 0; } }

.tep-cf-title {
	font-family: var(--tep-font);
	font-size: clamp(2.6rem, 6vw, 4.6rem);
	font-weight: 900;
	line-height: 1.02;
	letter-spacing: -.035em;
	color: var(--tep-white);
	margin-bottom: 1.6rem;
}
.tep-cf-title em {
	font-family: var(--tep-font-display);
	font-size: 1.06em;
	font-style: italic;
	font-weight: 700;
	letter-spacing: -.01em;
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-light) 45%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.tep-cf-formule {
	display: inline-flex;
	align-items: center;
	gap: .9em;
	margin-bottom: 1.8rem !important;
	padding: .6em 1.5em .6em 1.2em;
	border-radius: 50px;
	background: rgba(10,9,8,.6);
	border: 1px solid rgba(226,163,63,.5);
	backdrop-filter: blur(8px);
}
.tep-cf-formule__label {
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--tep-muted);
}
.tep-cf-formule__name {
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--tep-gold-light);
}
.tep-cf-lead {
	max-width: 640px;
	margin-inline: auto;
	color: var(--tep-text-soft) !important;
}

/* ── Libellé d'étape ──────────────────────────────────────────────────────── */
.tep-cf-step {
	font-size: .84rem !important;
	font-weight: 700;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: 1rem !important;
}

/* ── Action requise : l'adresse mail ──────────────────────────────────────── */
.tep-cf-mail { background: var(--tep-black); padding-top: 90px; }
.tep-cf-mail__card {
	padding: 56px clamp(26px, 5vw, 60px);
	border-radius: var(--tep-radius-lg);
	background:
		radial-gradient(ellipse at top, rgba(226,163,63,.12) 0%, transparent 62%),
		var(--tep-panel);
	border: 1px solid var(--tep-border);
	box-shadow: 0 0 60px rgba(226,163,63,.1), 0 24px 60px rgba(0,0,0,.5);
}
.tep-cf-mail__card .tep-h2 { font-size: clamp(1.8rem, 3.4vw, 2.7rem); }

.tep-cf-mail__address {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	margin: 2.2rem 0 1.4rem;
	padding: 22px 26px;
	border-radius: var(--tep-radius);
	background: rgba(0,0,0,.5);
	border: 1px dashed rgba(226,163,63,.5);
}
.tep-cf-mail__icon { display: flex; color: var(--tep-gold-bright); }
.tep-cf-mail__icon svg { width: 26px; height: 26px; }
.tep-cf-mail__value {
	flex: 1 1 auto;
	min-width: 0;
	font-family: ui-monospace, Menlo, monospace;
	font-size: clamp(1rem, 2.4vw, 1.35rem);
	font-weight: 600;
	color: var(--tep-gold-light);
	word-break: break-all;
}
.tep-cf-mail__copy {
	position: relative;
	flex-shrink: 0;
	padding: .7em 1.5em;
	border-radius: 50px;
	border: 1px solid rgba(226,163,63,.55);
	background: transparent;
	color: var(--tep-gold-light);
	font-family: var(--tep-font);
	font-size: .92rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	cursor: pointer;
	transition: all .25s var(--tep-ease);
}
.tep-cf-mail__copy:hover { background: rgba(226,163,63,.14); border-color: var(--tep-gold-bright); }
.tep-cf-mail__copy-done {
	position: absolute;
	inset: 0;
	display: flex; align-items: center; justify-content: center;
	border-radius: inherit;
	background: linear-gradient(135deg, var(--tep-gold-bright), var(--tep-gold));
	color: #170d02;
	opacity: 0;
	transition: opacity .2s;
}
.tep-cf-mail__copy.is-done .tep-cf-mail__copy-done { opacity: 1; }

.tep-cf-mail__help { margin-bottom: 1.2rem !important; }
.tep-cf-mail__help a {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	color: var(--tep-gold-bright) !important;
	font-weight: 700;
	border-bottom: 1px solid rgba(226,163,63,.35);
	padding-bottom: 2px;
	transition: border-color .25s, color .25s;
}
.tep-cf-mail__help a:hover { color: var(--tep-gold-light) !important; border-bottom-color: var(--tep-gold-light); }
.tep-cf-mail__help svg { width: 18px; height: 18px; flex-shrink: 0; }
.tep-cf-mail__note {
	font-size: 1rem !important;
	color: var(--tep-muted) !important;
	margin-bottom: 0 !important;
}

/* ── La suite ─────────────────────────────────────────────────────────────── */
.tep-cf-next { background: var(--tep-black-2); }
.tep-cf-steps {
	position: relative;
	margin-top: 3.5rem;
	padding-left: 30px;
	list-style: none;
}
.tep-cf-steps::before {
	content: '';
	position: absolute;
	left: 7px; top: 12px; bottom: 12px;
	width: 2px;
	background: linear-gradient(180deg, var(--tep-gold-bright) 0%, rgba(188,101,14,.2) 100%);
}
.tep-cf-step-item {
	position: relative;
	padding: 0 0 34px 24px;
}
.tep-cf-step-item::before {
	content: '';
	position: absolute;
	left: -30px; top: 12px;
	width: 16px; height: 16px;
	border-radius: 50%;
	background: var(--tep-black-2);
	border: 2px solid var(--tep-gold-bright);
	box-shadow: 0 0 0 5px rgba(226,163,63,.1);
}
.tep-cf-step-item--strong::before {
	background: var(--tep-gold-bright);
	box-shadow: 0 0 0 6px rgba(226,163,63,.2), 0 0 22px rgba(226,163,63,.55);
}
.tep-cf-step-item__when {
	display: inline-block;
	font-size: .88rem;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--tep-gold-bright);
	margin-bottom: .6rem;
}
.tep-cf-step-item p { color: var(--tep-muted); }
.tep-cf-step-item strong { color: var(--tep-white); }

.tep-cf-garantie {
	display: flex;
	align-items: center;
	gap: .8em;
	margin-top: 2.5rem !important;
	padding: 22px 30px;
	border-radius: var(--tep-radius-lg);
	background: rgba(226,163,63,.09);
	border: 1px solid var(--tep-border);
	font-size: 1.05rem !important;
	line-height: 1.65 !important;
	color: var(--tep-text-soft) !important;
}
.tep-cf-garantie svg { width: 26px; height: 26px; flex-shrink: 0; color: var(--tep-gold-bright); }

/* ── Rappel de la formule ─────────────────────────────────────────────────── */

.tep-cf-recap__card {
	padding: 48px clamp(26px, 5vw, 56px);
	border-radius: var(--tep-radius-lg);
	border: 1px solid transparent;
	background:
		linear-gradient(170deg, #241a0f 0%, var(--tep-panel) 60%) padding-box,
		linear-gradient(150deg, #fff2d8 0%, var(--tep-gold-bright) 30%, var(--tep-gold-deep) 62%, var(--tep-gold-light) 100%) border-box;
	box-shadow: 0 0 60px rgba(226,163,63,.16), 0 24px 60px rgba(0,0,0,.5);
}
.tep-cf-recap__head { margin-bottom: 1.8rem; }
.tep-cf-recap__head .tep-h2 { margin-bottom: 0; font-size: clamp(1.8rem, 3.4vw, 2.6rem); }

/* ── Deux colonnes : déroulé à gauche, formule à droite ───────────────────
   Ces trois blocs s'empilaient sur toute la hauteur de l'écran, ce qui
   obligeait à faire défiler longuement pour peu de contenu. Regroupés. */
.tep-cf-next__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
	gap: 40px;
	align-items: start;
}
.tep-cf-next__grid--solo { grid-template-columns: minmax(0, 780px); justify-content: center; }
.tep-cf-next__main .tep-h2 { font-size: clamp(1.7rem, 3vw, 2.4rem); }
.tep-cf-next__side {
	display: flex;
	flex-direction: column;
	gap: 24px;
	position: sticky;
	top: 110px;
}
.tep-cf-next .tep-cf-steps { margin-top: 2.2rem; }

/* Cartes de la colonne de droite : plus compactes que sur pleine largeur */
.tep-cf-recap__card { padding: 36px clamp(24px, 3vw, 38px); }
.tep-cf-recap__name {
	font-size: clamp(1.5rem, 2.6vw, 2rem) !important;
	font-weight: 800;
	line-height: 1.15;
	color: var(--tep-gold-light);
	margin-bottom: 1.4rem;
}

@media (max-width: 1000px) {
	.tep-cf-next__grid { grid-template-columns: 1fr; gap: 44px; }
	.tep-cf-next__side { position: static; }
}

/* ── Mot de Laurent ───────────────────────────────────────────────────────── */
.tep-cf-mot {
	background: linear-gradient(150deg, #16100a 0%, var(--tep-black) 100%);
	border-block: 1px solid var(--tep-border-soft);
	padding: 0;
}
.tep-cf-mot__layout {
	display: grid;
	grid-template-columns: 360px minmax(0, 1fr);
	max-width: var(--tep-wrap);
	margin-inline: auto;
	align-items: stretch;
}
.tep-cf-mot__photo { position: relative; overflow: hidden; }
.tep-cf-mot__photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.tep-cf-mot__photo::after {
	content: '';
	position: absolute; inset: 0;
	background: linear-gradient(to right, transparent 55%, #16100a 100%);
}
.tep-cf-mot__copy {
	position: relative;
	padding: 80px clamp(26px, 5vw, 64px);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.tep-cf-mot__quote {
	position: absolute;
	top: 26px; left: clamp(20px, 4vw, 52px);
	font-family: var(--tep-font-display);
	font-size: 7rem;
	line-height: 1;
	color: rgba(226,163,63,.16);
	pointer-events: none;
}
.tep-cf-mot__copy .tep-prose { position: relative; }
.tep-cf-mot__sign {
	margin-top: 1.8rem !important;
	font-family: var(--tep-font-display);
	font-size: 1.6rem !important;
	font-style: italic;
	font-weight: 700;
	color: var(--tep-gold-light) !important;
}

/* ── Aide ─────────────────────────────────────────────────────────────────── */
.tep-cf-aide { background: var(--tep-black); }
.tep-cf-aide__lead {
	max-width: 560px;
	margin: 0 auto 2.2rem !important;
	color: var(--tep-muted) !important;
}
.tep-cf-aide__actions {
	display: flex;
	gap: 16px;
	justify-content: center;
	flex-wrap: wrap;
}

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
	.tep-cf-hero          { padding: 90px 0 76px; }
	.tep-cf-mot__layout   { grid-template-columns: 1fr; }
	.tep-cf-mot__photo    { min-height: 340px; }
	.tep-cf-mot__photo::after { background: linear-gradient(to bottom, transparent 50%, #16100a 100%); }
	.tep-cf-mot__copy     { padding: 56px 26px 70px; }
	.tep-cf-garantie      { flex-direction: column; text-align: center; }
	.tep-cf-aide__actions .tep-btn { width: 100%; }
}
@media (max-width: 560px) {
	.tep-cf-mail__address { flex-direction: column; align-items: stretch; text-align: center; }
	.tep-cf-mail__icon    { justify-content: center; }
	.tep-cf-formule       { flex-direction: column; gap: .3em; text-align: center; }
}

/* Mouvement réduit : le sceau s'affiche déjà tracé, sans animation. */
@media (prefers-reduced-motion: reduce) {
	html:not(.tep-motion-full) .tep-cf-seal__ring,
	html:not(.tep-motion-full) .tep-cf-seal__check { stroke-dashoffset: 0; animation: none !important; }
}

/* ── Poussière d'or du héro de confirmation ───────────────────────────────── */
.tep-dust {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	z-index: 0;
	opacity: .9;
}
/* Sur la page de vente le canvas passe au-dessus du voile mais sous le texte */
.tep-hero .tep-dust { z-index: 1; }
.tep-hero .tep-wrap, .tep-hero__notice { z-index: 2; }
.tep-cf-hero__glow { z-index: 0; }

/* ══════════════════════════════════════════════════════════════════════════
   PAGE INTERMÉDIAIRE — MONTÉE EN GAMME IDÉALE → PREMIUM
   Le <body> porte `tep2026-page` ET `tep2026-upsell`, et le conteneur garde
   l'id `tep-page` : toute la base (reset, variables, typographie, boutons,
   apparitions) est donc héritée. Seules les règles propres à cette page
   figurent ci-dessous.

   Deux principes de mise en page :
   1. Le choix vient AVANT l'argumentaire. Les deux cartes de décision sont
      posées juste sous le héro : le lecteur arrive avec sa décision déjà
      prise, chaque écran de scroll avant l'action coûte des inscriptions.
   2. Le refus reste lisible. La carte « je garde mon choix de départ » est
      plus sobre que l'autre, jamais plus petite ni grisée — un tunnel qui
      piège son lecteur perd la vente et la confiance avec.
══════════════════════════════════════════════════════════════════════════ */

body.tep2026-upsell #tep-page { background: var(--tep-black); }

/* ── Héro ─────────────────────────────────────────────────────────────────── */
.tep-up-hero {
	position: relative;
	overflow: hidden;
	padding: 110px 0 90px;
	background: linear-gradient(180deg, #16100a 0%, var(--tep-black-2) 60%, var(--tep-black) 100%);
}
.tep-up-hero__glow {
	position: absolute;
	top: -30%; left: 50%;
	width: 900px; height: 600px;
	transform: translateX(-50%);
	background: radial-gradient(ellipse, rgba(226, 163, 63, .16) 0%, transparent 65%);
	pointer-events: none;
}
.tep-up-hero .tep-wrap { position: relative; z-index: 2; }
.tep-up-hero .tep-dust  { z-index: 1; }

/* Pastille d'étape : elle situe le lecteur dans un parcours au lieu de lui
   donner l'impression d'avoir été détourné vers une page de vente de plus. */
.tep-up-step {
	display: inline-flex;
	align-items: center;
	gap: .7em;
	border-radius: 50px;
	border: 1px solid rgba(226, 163, 63, .4);
	background: rgba(188, 101, 14, .14);
	backdrop-filter: blur(6px);
	color: var(--tep-gold-light) !important;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	line-height: 1.4 !important;
}
.tep-up-step__dot {
	width: 8px; height: 8px;
	border-radius: 50%;
	background: var(--tep-gold-bright);
	box-shadow: 0 0 10px var(--tep-gold-bright);
	animation: tep-pulse 2.6s ease-in-out infinite;
}

.tep-up-title {
	font-family: var(--tep-font-display);
	font-size: clamp(2.9rem, 7vw, 5rem);
	font-weight: 700;
	line-height: 1.06;
	color: var(--tep-white);
}
.tep-up-title em {
	display: block;
	font-style: italic;
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-light) 45%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.tep-up-lead {
	max-width: 700px;
	color: var(--tep-text-soft) !important;
}

/* ── Le choix : prix et décision dans une seule section ───────────────────── */
.tep-up-decision {
	padding-top: 90px;
	background: linear-gradient(180deg, var(--tep-black) 0%, #16100a 55%, var(--tep-black) 100%);
}
/* Passage d'une formule à l'autre : les deux prix encadrent l'écart, et
   l'écart est ce qu'on regarde. C'est la pièce visuelle de la page — elle
   fait le travail que trois paragraphes ne feraient pas. */
.tep-up-ecart__row {
	display: flex;
	align-items: stretch;
	justify-content: center;
	margin: 3rem 0 2.4rem;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	background: var(--tep-panel);
	overflow: hidden;
	text-align: center;
}
.tep-up-ecart__col {
	flex: 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .35em;
	padding: 34px 22px;
}
.tep-up-ecart__col--best {
	background:
		radial-gradient(ellipse at bottom, rgba(226, 163, 63, .18) 0%, transparent 70%),
		var(--tep-panel-2);
}
.tep-up-ecart__label {
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--tep-muted);
}
.tep-up-ecart__price {
	font-family: var(--tep-font-display);
	font-size: clamp(2rem, 4.4vw, 2.9rem);
	font-weight: 700;
	line-height: 1.1;
	color: var(--tep-text);
}
.tep-up-ecart__col--best .tep-up-ecart__price {
	background: linear-gradient(100deg, #fff2d8 0%, var(--tep-gold-light) 40%, var(--tep-gold-bright) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-up-ecart__name {
	font-size: 1rem;
	font-weight: 600;
	letter-spacing: .04em;
	color: var(--tep-text-soft);
}
.tep-up-ecart__delta {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .5em;
	padding: 0 clamp(14px, 3vw, 34px);
	border-inline: 1px solid var(--tep-border-soft);
	color: var(--tep-gold-bright);
}
.tep-up-ecart__delta-val {
	font-size: 1.15rem;
	font-weight: 800;
	letter-spacing: .04em;
	white-space: nowrap;
}
.tep-up-ecart__delta svg { width: 42px; height: 12px; }

.tep-up-decision__lead {
	max-width: 700px;
	color: var(--tep-text-soft) !important;
}
.tep-up-decision__lead strong { color: var(--tep-gold-light); }

.tep-up-decision__actions {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 26px;
	align-items: stretch;
	margin: 3.2rem 0 0;
	text-align: left;
}
.tep-up-choice {
	display: flex;
	flex-direction: column;
	padding: 44px clamp(24px, 3vw, 36px) 36px;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	background: var(--tep-panel);
	transition: transform .3s var(--tep-ease), box-shadow .3s var(--tep-ease), border-color .3s var(--tep-ease);
}
.tep-up-choice:hover { transform: translateY(-6px); }
.tep-up-choice .tep-btn { margin-top: auto; }

.tep-up-choice--go {
	position: relative;
	padding-top: 56px;
	border: 1px solid transparent;
	background:
		linear-gradient(172deg, #2a1d0f 0%, #1d1712 45%, var(--tep-panel) 100%) padding-box,
		linear-gradient(150deg, #fff2d8 0%, var(--tep-gold-bright) 28%, var(--tep-gold-deep) 58%, var(--tep-gold-light) 100%) border-box;
	box-shadow: 0 0 70px rgba(226, 163, 63, .22), 0 26px 60px rgba(0, 0, 0, .5);
}
.tep-up-choice--go:hover {
	box-shadow: 0 0 92px rgba(226, 163, 63, .32), 0 34px 74px rgba(0, 0, 0, .58);
}
.tep-up-choice--stay:hover {
	border-color: rgba(226, 163, 63, .42);
	box-shadow: 0 22px 50px rgba(0, 0, 0, .45);
}

.tep-up-choice__flag {
	position: absolute;
	top: 0; left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	gap: .45em;
	padding: .5em 1.4em;
	border-radius: 0 0 12px 12px;
	background: linear-gradient(135deg, #fff2d8 0%, var(--tep-gold-light) 35%, var(--tep-gold-bright) 100%);
	box-shadow: 0 6px 22px rgba(226, 163, 63, .45);
	color: #1a0f03;
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}
.tep-up-choice__flag svg { width: 14px; height: 14px; }

.tep-up-choice__name {
	font-family: var(--tep-font-display);
	font-size: clamp(1.6rem, 2.8vw, 2.1rem);
	font-weight: 700;
	line-height: 1.2;
	color: var(--tep-white);
}
.tep-up-choice--go .tep-up-choice__name {
	background: linear-gradient(100deg, #ffffff 0%, var(--tep-gold-light) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}
.tep-up-choice__price {
	display: block;
	margin: .7rem 0 2rem;
	padding-bottom: 1.6rem;
	border-bottom: 1px solid var(--tep-border-soft);
	font-size: 1.28rem;
	font-weight: 700;
	color: var(--tep-gold-light);
}
.tep-up-choice__price span {
	display: block;
	margin-top: .35em;
	font-size: .95rem;
	font-weight: 600;
	color: var(--tep-muted);
}
.tep-up-choice--stay .tep-up-choice__price { color: var(--tep-text-soft); }

/* `.tep-cf-garantie` est un composant générique, écrit à l'origine pour un
   contexte aligné à gauche. Ici il vit dans un bloc centré : on le recentre. */
.tep-up-decision .tep-cf-garantie {
	justify-content: center;
	max-width: 760px;
	margin-inline: auto;
	text-align: left;
}

/* ── Ce que le Premium ajoute ─────────────────────────────────────────────── */
.tep-up-plus { background: var(--tep-black-2); }
.tep-up-plus__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
	margin-top: 3.5rem;
}
.tep-up-plus-card {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 44px clamp(24px, 2.4vw, 34px) 38px;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border);
	background:
		radial-gradient(ellipse at top left, rgba(226, 163, 63, .1) 0%, transparent 60%),
		var(--tep-panel);
	transition: transform .3s var(--tep-ease), box-shadow .3s var(--tep-ease), border-color .3s var(--tep-ease);
}
.tep-up-plus-card:hover {
	transform: translateY(-5px);
	border-color: rgba(226, 163, 63, .5);
	box-shadow: 0 24px 56px rgba(0, 0, 0, .5);
}
.tep-up-plus-card--top {
	border-color: rgba(226, 163, 63, .55);
	box-shadow: 0 0 54px rgba(226, 163, 63, .16);
}
.tep-up-plus-card__num {
	display: block;
	margin-bottom: .6rem;
	font-family: var(--tep-font-display);
	font-size: 2.6rem;
	font-weight: 700;
	line-height: 1;
	color: rgba(226, 163, 63, .34);
}
/* Pastille de valeur : c'est elle qui rend l'écart de prix dérisoire. */
.tep-up-plus-card__val {
	position: absolute;
	top: 22px; right: clamp(24px, 2.4vw, 34px);
	padding: .35em 1em;
	border-radius: 50px;
	border: 1px solid rgba(226, 163, 63, .4);
	background: rgba(188, 101, 14, .16);
	color: var(--tep-gold-light);
	font-size: .74rem;
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}
.tep-up-plus-card__val--top {
	background: linear-gradient(135deg, #fff2d8 0%, var(--tep-gold-light) 35%, var(--tep-gold-bright) 100%);
	border-color: transparent;
	color: #1a0f03;
}
.tep-up-plus-card__list { margin-bottom: 1.4rem; }
.tep-up-plus-card__list li { font-size: 1.02rem !important; line-height: 1.6 !important; }
.tep-up-plus-card h3 {
	font-size: 1.55rem !important;
	font-weight: 700;
	line-height: 1.3;
	color: var(--tep-white);
	margin-bottom: 1.1rem !important;   /* le reset `#tep-page h3` bat la classe seule */
}
.tep-up-plus-card p { color: var(--tep-text-soft); }
.tep-up-plus-card__key {
	padding-top: 1.6rem;
	border-top: 1px solid var(--tep-border-soft);
	color: var(--tep-gold-light) !important;
	font-family: var(--tep-font-display);
	font-size: 1.3rem !important;
	font-style: italic;
	line-height: 1.5 !important;
}

/* ── Le constat, en fin de page ───────────────────────────────────────────── */
.tep-up-constat { background: var(--tep-black); }

.tep-up-pull {
	border-radius: var(--tep-radius);
	border-left: 3px solid var(--tep-gold-bright);
	background: linear-gradient(100deg, rgba(188, 101, 14, .14) 0%, rgba(0, 0, 0, .3) 70%);
	color: var(--tep-text) !important;
	font-family: var(--tep-font-display);
	font-size: 1.55rem !important;
	font-style: italic;
	line-height: 1.5 !important;
}
.tep-up-pull strong { color: var(--tep-gold-light); font-style: normal; font-weight: 700; }

/* Renvoi vers le choix : la dernière section de la page ne doit pas être un
   cul-de-sac, les boutons sont remontés tout en haut. */
.tep-up-constat__back { text-align: center; }

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
	.tep-up-hero              { padding: 84px 0 70px; }
	.tep-up-decision          { padding-top: 70px; }
	.tep-up-plus__grid,
	.tep-up-decision__actions { grid-template-columns: 1fr; }
	/* L'ordre du HTML est déjà le bon : le Premium d'abord, puis le choix de
	   départ. Passer à une colonne suffit. */

	/* La comparaison bascule à la verticale : la flèche pivote pour continuer
	   de pointer de l'Idéale vers le Premium. */
	.tep-up-ecart__row       { flex-direction: column; }
	.tep-up-ecart__delta     { flex-direction: row; border-inline: 0; border-block: 1px solid var(--tep-border-soft); padding: 16px 0; }
	.tep-up-ecart__delta svg { transform: rotate(90deg); }
	.tep-up-plus-card__key   { margin-top: 1.6rem; }   /* plus d'alignement à tenir en colonne */
}
@media (max-width: 560px) {
	.tep-up-pull                    { font-size: 1.3rem !important; }
	.tep-up-choice                  { padding-inline: 22px; }
	.tep-up-constat__back .tep-btn  { width: 100%; }
}

/* Mouvement réduit : la pastille d'étape cesse de battre. */
@media (prefers-reduced-motion: reduce) {
	html:not(.tep-motion-full) .tep-up-step__dot { animation: none; }
}

/* Précision de périmètre sous la liste d'une étape du déroulé (cas d'école).
   ⚠️ Bâtie sur un <p> : sans cette règle au même niveau de spécificité que
   `#tep-page p { margin: 0; padding: 0 }`, ni la marge ni le padding ne
   s'appliquent et l'encadré se colle à la liste du dessus. */
body.tep2026-page #tep-page .tep-deroule-step__note {
	display: flex;
	align-items: flex-start;
	gap: .75em;
	margin-top: 1.4rem;
	padding: .95em 1.2em;
	border: 1px solid rgba(226, 163, 63, .3);
	border-left: 3px solid var(--tep-gold-bright);
	border-radius: 8px;
	background: rgba(226, 163, 63, .07);
	font-size: 1rem !important;
	line-height: 1.6 !important;
	color: var(--tep-text-soft) !important;
}
.tep-deroule-step__note svg {
	width: 20px;
	height: 20px;
	flex-shrink: 0;
	margin-top: .18em;
	color: var(--tep-gold-bright);
}

/* Dates des week-ends TEP, sous le titre de l'étape 3 du déroulé. */
body.tep2026-page #tep-page .tep-deroule-step__dates {
	margin-bottom: 1.2rem;
	font-size: 1.05rem;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--tep-gold-light);
}

/* ══════════════════════════════════════════════════════════════════════════
   CONFIRMATION — MONTÉE EN GAMME
   L'encadré précédent vivait dans la colonne étroite et ne listait que le NOM
   des formules supérieures : le lecteur ne pouvait pas savoir ce qu'il ratait.
   Section pleine largeur, une carte par formule encore accessible, avec le
   contenu réellement débloqué. Jamais rendue sur la confirmation Premium.
══════════════════════════════════════════════════════════════════════════ */

.tep-cf-up {
	background:
		radial-gradient(ellipse at top, rgba(226, 163, 63, .1) 0%, transparent 60%),
		var(--tep-black-3);
	border-block: 1px solid var(--tep-border-soft);
}
.tep-cf-up__lead {
	max-width: 700px;
	color: var(--tep-text-soft) !important;
}
.tep-cf-up__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 28px;
	align-items: start;
	padding-top: 24px;   /* place pour la pastille de la carte mise en avant */
}
/* Une seule formule encore accessible (cas « Idéale → Premium ») : la carte
   ne s'étire pas sur toute la largeur, elle se centre. */
.tep-cf-up__grid--solo {
	grid-template-columns: minmax(0, 620px);
	justify-content: center;
}

.tep-cf-up-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	padding: 46px clamp(26px, 3vw, 40px) 40px;
	border-radius: var(--tep-radius-lg);
	border: 1px solid var(--tep-border-soft);
	background: var(--tep-panel);
	transition: transform .3s var(--tep-ease), box-shadow .3s var(--tep-ease), border-color .3s var(--tep-ease);
}
.tep-cf-up-card:hover {
	transform: translateY(-5px);
	border-color: rgba(226, 163, 63, .45);
	box-shadow: 0 24px 56px rgba(0, 0, 0, .5);
}
.tep-cf-up-card--best {
	padding-top: 58px;
	border: 1px solid transparent;
	background:
		linear-gradient(172deg, #2a1d0f 0%, #1d1712 45%, var(--tep-panel) 100%) padding-box,
		linear-gradient(150deg, #fff2d8 0%, var(--tep-gold-bright) 28%, var(--tep-gold-deep) 58%, var(--tep-gold-light) 100%) border-box;
	box-shadow: 0 0 64px rgba(226, 163, 63, .2), 0 24px 56px rgba(0, 0, 0, .5);
}
.tep-cf-up-card--best:hover {
	box-shadow: 0 0 86px rgba(226, 163, 63, .3), 0 32px 70px rgba(0, 0, 0, .58);
}

.tep-cf-up-card__flag {
	position: absolute;
	top: 0; left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	gap: .45em;
	padding: .5em 1.4em;
	border-radius: 0 0 12px 12px;
	background: linear-gradient(135deg, #fff2d8 0%, var(--tep-gold-light) 35%, var(--tep-gold-bright) 100%);
	box-shadow: 0 6px 22px rgba(226, 163, 63, .45);
	color: #1a0f03;
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	white-space: nowrap;
}
.tep-cf-up-card__flag svg { width: 14px; height: 14px; }

.tep-cf-up-card__step {
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--tep-muted) !important;
	line-height: 1.4 !important;
}
.tep-cf-up-card__name {
	font-family: var(--tep-font-display);
	font-size: clamp(1.9rem, 3.2vw, 2.5rem) !important;
	font-weight: 700;
	line-height: 1.15;
	color: var(--tep-white);
}
.tep-cf-up-card--best .tep-cf-up-card__name {
	background: linear-gradient(100deg, #ffffff 0%, var(--tep-gold-light) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

/* L'écart à régler : c'est le chiffre qui décide, il ne se lit pas au milieu
   d'un paragraphe. */
.tep-cf-up-card__delta {
	display: flex;
	align-items: baseline;
	gap: .6em;
	border-radius: var(--tep-radius);
	border: 1px dashed rgba(226, 163, 63, .4);
	background: rgba(188, 101, 14, .12);
	font-size: 1rem !important;
	line-height: 1.4 !important;
	color: var(--tep-muted) !important;
}
.tep-cf-up-card__delta span {
	font-family: var(--tep-font-display);
	font-size: 1.9rem;
	font-weight: 700;
	color: var(--tep-gold-light);
}

.tep-cf-up-card__title {
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	line-height: 1.4 !important;
}
.tep-cf-up-card__list { flex: 1; }
.tep-cf-up-card__list li { font-size: 1.06rem !important; line-height: 1.65 !important; }
.tep-cf-up-card .tep-btn { margin-top: auto; }

.tep-cf-up__note {
	max-width: 680px;
	font-size: 1.05rem !important;
	color: var(--tep-muted) !important;
}
.tep-cf-up__note strong { color: var(--tep-text); }

@media (max-width: 900px) {
	.tep-cf-up__grid { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════════════════════════════════════
   CTA DES CARTES DE FORMULE — centrage du libellé
   « Je choisis cette formule » passe sur deux lignes dans une carte de tiers
   de largeur. En `display: block`, le bloc de deux lignes s'assoit bas dans le
   bouton : le demi-interligne de la dernière ligne s'ajoute sous la seconde
   sans compensation au-dessus, et l'ensemble paraît décentré.
   Le centrage en flex supprime le problème quel que soit le nombre de lignes,
   et le `min-height` donne la même hauteur aux boutons qu'ils tiennent sur une
   ou deux lignes — les trois cartes gardent ainsi le même pied.
══════════════════════════════════════════════════════════════════════════ */
body.tep2026-page #tep-page .tep-offre-card .tep-btn--block,
body.tep2026-page #tep-page .tep-up-choice .tep-btn--block,
body.tep2026-page #tep-page .tep-cf-up-card .tep-btn--block {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 3.7em;
	padding-inline: 1.4em;   /* 2.4em faisait casser le libellé trop tôt */
	text-wrap: balance;      /* deux lignes de longueur comparable */
}

/* ══════════════════════════════════════════════════════════════════════════
   MODE VIDÉO  (?flow=video)
   Le bloc n'est rendu que dans ce mode. Il occupe l'écran entier : à
   l'arrivée, la vidéo est la seule chose à voir. Le voile qui masque le reste
   de la page est posé dans <head> par `tep2026_vsl_gate()`, pas ici, pour
   qu'il s'applique avant le premier rendu.
   ⚠️ Les tailles et les marges sont déclarées sous `body.tep2026-page
   #tep-page` : le reset des titres et des paragraphes bat une simple classe.
══════════════════════════════════════════════════════════════════════════ */
body.tep2026-page #tep-page .tep-vsl {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100svh;
	padding: clamp(40px, 6vw, 80px) 22px;
	overflow: hidden;
	background:
		radial-gradient(1100px 620px at 50% -12%, rgba(188, 101, 14, .24), transparent 62%),
		var(--tep-black);
}
.tep-vsl .tep-dust  { z-index: 1; }
.tep-vsl__inner {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: 1040px;
	text-align: center;
}

body.tep2026-page #tep-page .tep-vsl__kicker {
	font-size: .82rem !important;
	font-weight: 700;
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--tep-gold-bright) !important;
	margin-bottom: 1.1rem !important;
}
body.tep2026-page #tep-page .tep-vsl__title {
	font-family: var(--tep-font);
	font-size: clamp(2.7rem, 5.4vw, 4.6rem) !important;
	font-weight: 900;
	line-height: .95 !important;
	letter-spacing: -.035em;
	color: var(--tep-white) !important;
	margin-bottom: clamp(26px, 3.4vw, 44px) !important;
}
.tep-vsl__lead,
.tep-vsl__accent { display: block; }
body.tep2026-page #tep-page .tep-vsl__title em {
	display: inline-block;
	font-family: var(--tep-font-display);
	font-size: 1.06em;
	font-style: italic;
	font-weight: 700;
	letter-spacing: -.01em;
	background: linear-gradient(100deg, var(--tep-gold-light) 0%, var(--tep-gold-bright) 45%, var(--tep-gold) 100%);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
}

.tep-vsl__player,
.tep-video__player {
	position: relative;
	aspect-ratio: 16 / 9;
	border-radius: var(--tep-radius-lg);
	overflow: hidden;
	border: 1px solid var(--tep-border);
	background: #000;
	box-shadow: var(--tep-shadow-lg), 0 0 90px rgba(226, 163, 63, .14);
}
/* Positionnement absolu plutôt qu'une hauteur en pourcentage : c'est le cadre
   qui porte le rapport 16/9, le lecteur s'y cale sans jamais le déborder. */
.tep-vsl__player iframe,
.tep-video__player iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

/* Le bouton sort avant le reste de la page (TEP2026_VSL_CTA_DELAY) : il est
   masqué par un second voile, retiré à son échéance. L'animation ne se joue
   donc qu'au moment où il apparaît. */
.tep-vsl__cta {
	margin-top: clamp(26px, 3vw, 40px);
	animation: tep-vsl-in .7s var(--tep-ease) both;
}
body.tep2026-page #tep-page .tep-vsl__note {
	font-size: 1.02rem !important;
	color: var(--tep-muted) !important;
	margin-top: .9rem !important;
}
body.tep2026-page #tep-page .tep-vsl__hint {
	font-size: 1rem !important;
	color: var(--tep-muted) !important;
	margin-top: 1.8rem !important;
}
/* Une fois la page ouverte, l'annonce n'a plus d'objet. */
body.tep-vsl-ouvert .tep-vsl__hint { display: none; }

@keyframes tep-vsl-in {
	from { opacity: 0; transform: translateY(14px); }
	to   { opacity: 1; transform: none; }
}
@keyframes tep-vsl-fade {
	from { opacity: 0; }
	to   { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
	/* Le fondu reste, la montée disparaît : même arbitrage que partout ailleurs
	   sur la page. */
	html:not(.tep-motion-full) .tep-vsl__cta { animation-name: tep-vsl-fade; }
}

@media (max-width: 720px) {
	body.tep2026-page #tep-page .tep-vsl { min-height: auto; padding-block: 42px 54px; }
	body.tep2026-page #tep-page .tep-vsl .tep-btn { width: 100%; }
}

/* ── La vidéo dans le fil de la page (arrivée sans ?flow=video) ────────────
   Même lecteur, même cadre que le bloc plein écran : les deux blocs partagent
   les règles de `.tep-vsl__player` plus haut. Ne sont déclarées ici que la
   largeur, la place dans la section et l'entourage de texte. */
body.tep2026-page #tep-page .tep-video {
	background:
		radial-gradient(900px 460px at 50% 0%, rgba(188, 101, 14, .13), transparent 60%),
		var(--tep-black-3);
}
.tep-video__head {
	max-width: 840px;
	margin-inline: auto;
	text-align: center;
}
/* Deux lignes de longueur comparable plutôt qu'une longue et une courte. */
body.tep2026-page #tep-page .tep-video .tep-h2 { text-wrap: balance; }
body.tep2026-page #tep-page .tep-video__lead {
	font-size: 1.12rem !important;
	color: var(--tep-text-soft) !important;
	line-height: 1.8 !important;
	margin-top: 1.4rem !important;
}
.tep-video__player {
	max-width: 960px;
	margin: clamp(32px, 4vw, 50px) auto 0;
}
.tep-video__cta {
	text-align: center;
	margin-top: clamp(26px, 3vw, 40px);
}
body.tep2026-page #tep-page .tep-video__note {
	font-size: 1.02rem !important;
	color: var(--tep-muted) !important;
	margin-top: .9rem !important;
}

@media (max-width: 720px) {
	body.tep2026-page #tep-page .tep-video .tep-btn { width: 100%; }
}
