/**
 * FeedVideo — styles frontaux.
 *
 * Blindage WordPress / Elementor :
 *  - préfixe unique « fv- » sur TOUTES les classes (aucune classe générique) ;
 *  - aucun style sur balise nue : tout passe par une classe préfixée ;
 *  - sélecteurs composés (.fv-player .fv-…) de spécificité 0-2-0, suffisante
 *    pour battre la quasi-totalité des règles Elementor sans !important ;
 *  - reset explicite des boutons (background/border/box-shadow/font/padding)
 *    pour neutraliser l'héritage du thème/Elementor.
 *
 * Unités : px exclusivement (jamais d'em). Animations : transform/opacity.
 *
 * Échelle de z-index (locale au conteneur, stacking context isolé) :
 *   1  → vidéo
 *   2  → barre de progression
 *   3  → boutons son / plein écran / pause
 *   4  → bouton lecture (repli)
 *   5  → bouton « Regarder à nouveau »
 */

/* ---------------------------------------------------------------------- */
/* Conteneur racine                                                       */
/* ---------------------------------------------------------------------- */

.fv-player {
	--fv-ratio: 16 / 9;
	--fv-accent: #ffffff;
	--fv-overlay: rgba(0, 0, 0, 0.55);
	--fv-overlay-hover: rgba(0, 0, 0, 0.72);
	--fv-radius: 16px; /* Coins arrondis façon réseau social. Mettre 0px pour des angles droits. */

	position: relative;
	display: block;
	width: 100%;
	margin: 0;
	padding: 0;
	aspect-ratio: var(--fv-ratio);
	background-color: #000000;
	border-radius: var(--fv-radius);
	overflow: hidden;
	isolation: isolate; /* Stacking context : z-index local et prévisible. */
}

.fv-player, .fv-player * {
	box-sizing: border-box;
}

/*
 * Avertissement éditeur « poster manquant ». Émis hors de .fv-player (au-dessus
 * du lecteur), donc classe autonome — le préfixe fv- garantit l'absence de
 * collision. N'apparaît que dans l'éditeur Elementor (le front ne le rend pas).
 */
.fv-editor-notice {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 8px;
	padding: 10px 14px;
	border: 1px solid #f0c36d;
	border-left-width: 4px;
	border-radius: 6px;
	background-color: #fff8e5;
	color: #5c4400;
	font-size: 13px;
	line-height: 1.4;
}

.fv-editor-notice__icon {
	flex: 0 0 auto;
	font-size: 16px;
	line-height: 1;
}

/* Repli aspect-ratio pour très anciens navigateurs (padding-hack neutre). */
@supports not (aspect-ratio: 16 / 9) {
	.fv-player {
		height: 0;
		padding-bottom: 56.25%; /* défaut 16:9 ; le ratio exact reste géré via JS si besoin. */
	}
}

/* ---------------------------------------------------------------------- */
/* Intégration Elementor : anti-effondrement en conteneur flex-row        */
/* ---------------------------------------------------------------------- */

/*
 * Placé dans un conteneur Elementor en flex-direction:row, le widget n'a AUCUNE
 * largeur intrinsèque : tout le contenu de .fv-player est en position:absolute,
 * donc la largeur de contenu vaut 0. Le widget s'effondre alors à 0px de large,
 * et width:100% (résolu contre un parent à 0) + aspect-ratio donnent 0px de haut
 * → lecteur totalement invisible.
 *
 * On force la pleine largeur sur le wrapper Elementor PROPRE à ce widget
 * (.elementor-widget-feedvideo, généré automatiquement par Elementor par type de
 * widget : sélecteur de fait scopé à FeedVideo). Conforme à l'exigence « largeur
 * fluide 100 % du conteneur Elementor » (cahier des charges §4.8).
 *
 * NB : on cible ici une classe Elementor (non préfixée fv-), seule exception au
 * préfixage — inévitable car ce wrapper est situé AU-DESSUS de notre racine.
 */
.elementor-widget-feedvideo,
.elementor-widget-feedvideo > .elementor-widget-container {
	width: 100%;
	min-width: 0;
}

.fv-player .fv-stage {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.fv-player .fv-video {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	background-color: #000000;
	border-radius: var(--fv-radius); /* Renfort iOS Safari : clippe la vidéo même quand overflow:hidden du parent ne suffit pas. */
	/* Chrome/Firefox compositent la <video> sur sa propre couche GPU, qui ignore
	   le border-radius (le sien comme le overflow:hidden du parent) une fois la
	   lecture lancée → coins carrés noirs. clip-path clippe bien la couche
	   compositée et corrige les 4 angles pendant la lecture. */
	clip-path: inset(0 round var(--fv-radius));
	z-index: 1;
}

/* ---------------------------------------------------------------------- */
/* Bouton son                                                             */
/* ---------------------------------------------------------------------- */

.fv-player .fv-sound-btn {
	/* Reset anti-héritage Elementor/thème. */
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	box-shadow: none;
	font: inherit;
	line-height: 0;
	text-decoration: none;

	position: absolute;
	z-index: 3;
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	padding: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--fv-accent);
	background-color: var(--fv-overlay);
	border-radius: 50%;
	cursor: pointer;
	transition: transform 180ms ease-out, background-color 180ms ease-out, opacity 180ms ease-out;
	-webkit-tap-highlight-color: transparent;
}

.fv-player .fv-sound-btn:hover {
	background-color: var(--fv-overlay-hover);
	transform: scale(1.06);
}

.fv-player .fv-sound-btn:active {
	transform: scale(0.94);
}

.fv-player .fv-sound-btn:focus-visible {
	outline: 3px solid var(--fv-accent);
	outline-offset: 2px;
}

.fv-player .fv-sound-btn .fv-sound-icon {
	display: none;
	width: 24px;
	height: 24px;
}

.fv-player .fv-sound-btn .fv-sound-icon svg {
	display: block;
	width: 24px;
	height: 24px;
}

/* Muet (défaut) → icône barrée visible ; son actif → icône ondes visible.
 * IMPORTANT : on inclut « .fv-sound-btn » dans le sélecteur pour atteindre la
 * même spécificité (0-3-0) que la règle de base « .fv-player .fv-sound-btn
 * .fv-sound-icon { display:none } ». Sans cela, la règle de base (0-3-0)
 * l'emportait sur « .fv-player .fv-sound-icon--off » (0-2-0) et masquait les
 * deux icônes → bouton son vide. */
.fv-player .fv-sound-btn .fv-sound-icon--off {
	display: block;
}
.fv-player .fv-sound-btn .fv-sound-icon--on {
	display: none;
}
.fv-player.fv-sound-on .fv-sound-btn .fv-sound-icon--off {
	display: none;
}
.fv-player.fv-sound-on .fv-sound-btn .fv-sound-icon--on {
	display: block;
}

/* Positions du bouton son (cible tactile ≥ 44px, marge 16px du bord). */
.fv-player.fv-pos-bottom-right .fv-sound-btn { bottom: 16px; right: 16px; }
.fv-player.fv-pos-bottom-left  .fv-sound-btn { bottom: 16px; left: 16px; }
.fv-player.fv-pos-top-right    .fv-sound-btn { top: 16px; right: 16px; }
.fv-player.fv-pos-top-left     .fv-sound-btn { top: 16px; left: 16px; }

/* La barre de progression occupe le bas : on remonte le bouton bas de 8px. */
.fv-player.fv-has-progress.fv-pos-bottom-right .fv-sound-btn,
.fv-player.fv-has-progress.fv-pos-bottom-left  .fv-sound-btn {
	bottom: 24px;
}

/* Pulse du bouton son lors d'une bascule (feedback discret). */
@keyframes fv-pulse {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.18); }
	100% { transform: scale(1); }
}
.fv-player .fv-sound-btn.fv-pulse {
	animation: fv-pulse 320ms ease-out;
}

/* ---------------------------------------------------------------------- */
/* Bouton lecture (repli autoplay refusé) — au centre                     */
/* ---------------------------------------------------------------------- */

.fv-player .fv-play-btn {
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	box-shadow: none;
	font: inherit;
	line-height: 0;

	position: absolute;
	z-index: 4;
	top: 50%;
	left: 50%;
	width: 72px;
	height: 72px;
	padding: 0;
	display: none; /* Affiché uniquement en mode manuel. */
	align-items: center;
	justify-content: center;
	color: var(--fv-accent);
	background-color: var(--fv-overlay);
	border-radius: 50%;
	cursor: pointer;
	transform: translate(-50%, -50%);
	transition: background-color 180ms ease-out, opacity 180ms ease-out;
	-webkit-tap-highlight-color: transparent;
}

.fv-player .fv-play-btn .fv-play-icon {
	display: inline-flex;
	width: 32px;
	height: 32px;
	margin-left: 4px; /* Centrage optique du triangle. */
}

.fv-player .fv-play-btn:hover {
	background-color: var(--fv-overlay-hover);
}

.fv-player .fv-play-btn:focus-visible {
	outline: 3px solid var(--fv-accent);
	outline-offset: 2px;
}

/* Mode manuel : poster visible + bouton lecture proéminent. */
.fv-player.fv-manual .fv-play-btn {
	display: inline-flex;
}

/* En mode manuel, le bouton son est masqué (le son n'a pas de sens sans lecture). */
.fv-player.fv-manual .fv-sound-btn {
	opacity: 0;
	pointer-events: none;
}

/* ---------------------------------------------------------------------- */
/* Bouton « Regarder à nouveau » (fin de vidéo, hors lecture en boucle)   */
/* ---------------------------------------------------------------------- */

/* Voile sombre sur la dernière frame pour la lisibilité du bouton.
   z-index 4 : au-dessus de la vidéo (1), sous le bouton replay (5). */
.fv-player.fv-ended::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 4;
	background-color: rgba(0, 0, 0, 0.45);
	border-radius: var(--fv-radius);
	pointer-events: none; /* Laisse passer le tap vers la vidéo. */
}

.fv-player .fv-replay-btn {
	/* Reset anti-héritage Elementor/thème. */
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	box-shadow: none;
	text-decoration: none;

	position: absolute;
	z-index: 5;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	display: none; /* Affiché uniquement à la fin de la vidéo (classe .fv-ended). */
	align-items: center;
	gap: 8px;
	padding: 12px 20px;
	color: var(--fv-accent);
	background-color: var(--fv-overlay);
	border-radius: 999px;
	font-family: inherit;
	font-size: 15px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition: transform 180ms ease-out, background-color 180ms ease-out;
	-webkit-tap-highlight-color: transparent;
}

.fv-player .fv-replay-btn .fv-replay-icon {
	display: inline-flex;
	width: 20px;
	height: 20px;
}

.fv-player .fv-replay-btn .fv-replay-icon svg {
	display: block;
	width: 20px;
	height: 20px;
}

.fv-player .fv-replay-btn:hover {
	background-color: var(--fv-overlay-hover);
	transform: translate(-50%, -50%) scale(1.04);
}

.fv-player .fv-replay-btn:active {
	transform: translate(-50%, -50%) scale(0.97);
}

.fv-player .fv-replay-btn:focus-visible {
	outline: 3px solid var(--fv-accent);
	outline-offset: 2px;
}

/* Fin de vidéo : on affiche le bouton replay et on masque le bouton son. */
.fv-player.fv-ended .fv-replay-btn {
	display: inline-flex;
}
.fv-player.fv-ended .fv-sound-btn {
	opacity: 0;
	pointer-events: none;
}

/* ---------------------------------------------------------------------- */
/* Bouton plein écran (optionnel)                                         */
/* ---------------------------------------------------------------------- */

.fv-player .fv-fullscreen-btn {
	/* Reset anti-héritage Elementor/thème. */
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	box-shadow: none;
	font: inherit;
	line-height: 0;
	text-decoration: none;

	position: absolute;
	z-index: 3;
	top: 16px;
	right: 16px;
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	padding: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--fv-accent);
	background-color: var(--fv-overlay);
	border-radius: 50%;
	cursor: pointer;
	opacity: 0;             /* Couche temporaire : caché au repos, comme le bouton pause. */
	pointer-events: none;
	transition: transform 180ms ease-out, background-color 180ms ease-out, opacity 200ms ease-out;
	-webkit-tap-highlight-color: transparent;
}

/* Révélation : interaction (.fv-controls-on), pause manuelle (.fv-paused), focus
   clavier, ou plein écran actif (le bouton de sortie reste alors accessible). */
.fv-player.fv-controls-on .fv-fullscreen-btn,
.fv-player.fv-paused .fv-fullscreen-btn,
.fv-player.fv-fs-on .fv-fullscreen-btn,
.fv-player .fv-fullscreen-btn:focus-visible {
	opacity: 1;
	pointer-events: auto;
}

.fv-player .fv-fullscreen-btn:hover {
	background-color: var(--fv-overlay-hover);
	transform: scale(1.06);
}

.fv-player .fv-fullscreen-btn:active {
	transform: scale(0.94);
}

.fv-player .fv-fullscreen-btn:focus-visible {
	outline: 3px solid var(--fv-accent);
	outline-offset: 2px;
}

.fv-player .fv-fullscreen-btn .fv-fs-icon {
	display: none;
	width: 24px;
	height: 24px;
}

.fv-player .fv-fullscreen-btn .fv-fs-icon svg {
	display: block;
	width: 24px;
	height: 24px;
}

/* Icône « agrandir » par défaut ; « réduire » en plein écran.
   (Sélecteurs à 0-3-0 pour battre la règle de base ci-dessus — cf. leçon bouton son.) */
.fv-player .fv-fullscreen-btn .fv-fs-icon--open {
	display: block;
}
.fv-player .fv-fullscreen-btn .fv-fs-icon--close {
	display: none;
}
.fv-player.fv-fs-on .fv-fullscreen-btn .fv-fs-icon--open {
	display: none;
}
.fv-player.fv-fs-on .fv-fullscreen-btn .fv-fs-icon--close {
	display: block;
}

/* Anti-collision : si le bouton son est lui aussi en haut à droite,
   on bascule le bouton plein écran en haut à gauche. */
.fv-player.fv-pos-top-right .fv-fullscreen-btn {
	right: auto;
	left: 16px;
}

/* Plein écran natif (desktop / Android) : le conteneur occupe tout l'écran.
   Règles séparées : un pseudo-sélecteur invalide annulerait toute la liste. */
.fv-player:fullscreen {
	width: 100%;
	height: 100%;
	aspect-ratio: auto;
	border-radius: 0;
}
.fv-player:-webkit-full-screen {
	width: 100%;
	height: 100%;
	aspect-ratio: auto;
	border-radius: 0;
}
.fv-player:fullscreen .fv-video {
	object-fit: contain;
	border-radius: 0;
	clip-path: none;
}
.fv-player:-webkit-full-screen .fv-video {
	object-fit: contain;
	border-radius: 0;
	clip-path: none;
}

/* ---------------------------------------------------------------------- */
/* Bouton pause / lecture — couche temporaire, bas-gauche                  */
/* ---------------------------------------------------------------------- */

/*
 * Masqué au repos. Révélé (avec la barre épaisse) quand l'utilisateur manifeste
 * une intention : survol (desktop), tap/interaction (.fv-controls-on, posée 3 s
 * par le JS), ou pause manuelle (.fv-paused → contrôles persistants). En pause,
 * il affiche l'icône ▶ pour reprendre.
 */
.fv-player .fv-pause-btn {
	/* Reset anti-héritage Elementor/thème. */
	-webkit-appearance: none;
	appearance: none;
	margin: 0;
	border: 0;
	box-shadow: none;
	font: inherit;
	line-height: 0;
	text-decoration: none;

	position: absolute;
	z-index: 3;
	bottom: 16px;
	left: 16px;
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	padding: 11px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--fv-accent);
	background-color: var(--fv-overlay);
	border-radius: 50%;
	cursor: pointer;
	opacity: 0;             /* Caché tant que les contrôles ne sont pas révélés. */
	pointer-events: none;
	transition: opacity 200ms ease-out, background-color 180ms ease-out, transform 120ms ease-out;
	-webkit-tap-highlight-color: transparent;
}

/* Révélation : contrôles posés à l'interaction (.fv-controls-on, géré en JS :
   tap mobile + survol/mouvement souris desktop, masqué après 3 s d'inactivité),
   ou pause manuelle (.fv-paused → persistant). */
.fv-player.fv-controls-on .fv-pause-btn,
.fv-player.fv-paused .fv-pause-btn,
.fv-player .fv-pause-btn:focus-visible {
	opacity: 1;
	pointer-events: auto;
}

.fv-player .fv-pause-btn:hover {
	background-color: var(--fv-overlay-hover);
}

.fv-player .fv-pause-btn:active {
	transform: scale(0.94);
}

.fv-player .fv-pause-btn:focus-visible {
	outline: 3px solid var(--fv-accent);
	outline-offset: 2px;
}

.fv-player .fv-pause-btn .fv-pause-icon {
	display: none;
	width: 22px;
	height: 22px;
}

.fv-player .fv-pause-btn .fv-pause-icon svg {
	display: block;
	width: 22px;
	height: 22px;
}

/* Lecture → icône pause ; pause → icône lecture (0-3-0 pour battre la base). */
.fv-player .fv-pause-btn .fv-pause-icon--pause {
	display: block;
}
.fv-player .fv-pause-btn .fv-pause-icon--play {
	display: none;
}
.fv-player.fv-paused .fv-pause-btn .fv-pause-icon--pause {
	display: none;
}
.fv-player.fv-paused .fv-pause-btn .fv-pause-icon--play {
	display: block;
}

/* La barre de progression occupe le bas : on remonte le bouton (aligné au son). */
.fv-player.fv-has-progress .fv-pause-btn {
	bottom: 24px;
}

/* Modes repli : en mode manuel (gros ▶ central) ou fin de vidéo, on masque le
   bouton pause de la couche temporaire (placé après la révélation pour gagner). */
.fv-player.fv-manual .fv-pause-btn,
.fv-player.fv-ended .fv-pause-btn {
	opacity: 0;
	pointer-events: none;
}

/* ---------------------------------------------------------------------- */
/* Barre de progression interactive (seek « façon TikTok »)               */
/* ---------------------------------------------------------------------- */

/*
 * .fv-progress = zone tactile généreuse, ancrée au bas de la vidéo. Au repos,
 * SEULE la fine ligne .fv-progress-track est visible, très basse (sous les
 * sous-titres incrustés). La pastille .fv-progress-thumb est MASQUÉE au repos
 * et n'apparaît qu'à la révélation (tap / survol / drag) — comme sur TikTok.
 * La ligne est légèrement remontée (align-items:center, ~7px du bas) pour que la
 * pastille soit CENTRÉE dessus tout en restant entièrement visible (non rognée
 * par overflow:hidden) et au-dessus du bord bas.
 */
.fv-player .fv-progress {
	position: absolute;
	z-index: 2;
	left: 0;
	right: 0;
	bottom: 0;
	height: 14px;
	display: flex;
	align-items: center; /* Ligne ~7px du bas → pastille centrable sans rognage. */
	margin: 0;
	padding: 0;
	background: transparent;
	cursor: pointer;
	touch-action: none; /* Le drag horizontal ne fait pas défiler la page. */
	-webkit-tap-highlight-color: transparent;
}

.fv-player .fv-progress-track {
	position: relative;
	flex: 1 1 auto;
	height: 3px;
	/* Léger retrait aligné sur le rayon des coins : la pastille reste entièrement
	   visible aux extrémités (0 % / 100 %) sans être rognée par l'arrondi du
	   lecteur. 0 px si coins droits, plafonné à 22 px sur les forts arrondis. */
	margin: 0 clamp(0px, var(--fv-radius), 22px);
	background-color: rgba(255, 255, 255, 0.25); /* Presque invisible au repos. */
	transition: height 150ms ease-out, background-color 150ms ease-out;
}

.fv-player .fv-progress-fill {
	display: block;
	width: 100%;
	height: 100%;
	background-color: var(--fv-accent);
	transform: scaleX(0);
	transform-origin: left center;
	will-change: transform;
}

.fv-player .fv-progress-thumb {
	position: absolute;
	top: 50%;           /* Centrée verticalement sur la piste (la ligne la traverse). */
	left: 0;
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background-color: var(--fv-accent);
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
	/* left piloté en JS ; le transform gère le centrage (H + V) et l'apparition.
	   MASQUÉE au repos (scale 0). La ligne étant ~7px du bas, la pastille centrée
	   reste entièrement visible (non rognée par overflow:hidden). */
	transform: translate(-50%, -50%) scale(0);
	transition: transform 150ms ease-out;
	pointer-events: none;
	will-change: transform;
}

/* Révélation de la couche temporaire : piste épaissie + plus contrastée +
   pastille visible. Déclencheurs : contrôles posés à l'interaction (.fv-controls-on,
   3 s après un tap), pause manuelle (.fv-paused), focus clavier ou drag. */
.fv-player.fv-controls-on .fv-progress-track,
.fv-player.fv-paused .fv-progress-track,
.fv-player .fv-progress:focus-visible .fv-progress-track,
.fv-player .fv-progress.fv-scrubbing .fv-progress-track {
	height: 6px;
	background-color: rgba(255, 255, 255, 0.5);
}

.fv-player.fv-controls-on .fv-progress-thumb,
.fv-player.fv-paused .fv-progress-thumb,
.fv-player .fv-progress:focus-visible .fv-progress-thumb,
.fv-player .fv-progress.fv-scrubbing .fv-progress-thumb {
	transform: translate(-50%, -50%) scale(1);
}

.fv-player .fv-progress:focus-visible {
	outline: none; /* L'apparition de la pastille matérialise le focus. */
}

.fv-player .fv-progress:focus-visible .fv-progress-track {
	outline: 2px solid var(--fv-accent);
	outline-offset: 3px;
}

/* ---------------------------------------------------------------------- */
/* Feedback central fugace (« Son activé / coupé »)                       */
/* ---------------------------------------------------------------------- */

.fv-player .fv-sound-feedback {
	position: absolute;
	z-index: 5;
	top: 50%;
	left: 50%;
	display: flex;
	align-items: center;
	max-width: 80%;
	padding: 10px 18px;
	background-color: rgba(0, 0, 0, 0.62);
	color: #ffffff;
	border-radius: 999px;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
	opacity: 0;
	pointer-events: none;
	transform: translate(-50%, -50%) scale(0.9);
	transition: opacity 200ms ease-out, transform 200ms ease-out;
	will-change: opacity, transform;
}

.fv-player .fv-sound-feedback.fv-feedback-show {
	opacity: 1;
	transform: translate(-50%, -50%) scale(1);
}

/* ---------------------------------------------------------------------- */
/* État vide (éditeur Elementor, sans URL)                                */
/* ---------------------------------------------------------------------- */

.fv-player--empty {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 120px;
	padding: 24px;
	color: #ffffff;
	background-color: #1f2933;
	border: 1px dashed rgba(255, 255, 255, 0.4);
	border-radius: 8px;
	font-size: 14px;
	text-align: center;
	aspect-ratio: auto;
}

/* ---------------------------------------------------------------------- */
/* Accessibilité : mouvement réduit                                       */
/* ---------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	.fv-player .fv-sound-btn,
	.fv-player .fv-play-btn,
	.fv-player .fv-replay-btn,
	.fv-player .fv-fullscreen-btn,
	.fv-player .fv-pause-btn,
	.fv-player .fv-progress-fill,
	.fv-player .fv-progress-track,
	.fv-player .fv-progress-thumb,
	.fv-player .fv-sound-feedback {
		transition: none;
	}
	.fv-player .fv-sound-btn:hover,
	.fv-player .fv-sound-btn:active,
	.fv-player .fv-fullscreen-btn:hover,
	.fv-player .fv-fullscreen-btn:active,
	.fv-player .fv-pause-btn:active {
		transform: none;
	}
	.fv-player .fv-sound-btn.fv-pulse {
		animation: none;
	}
	.fv-player .fv-sound-feedback.fv-feedback-show {
		transform: translate(-50%, -50%); /* Pas de scale animé. */
	}
}
