/**
 * Styles communs à toutes les sections du plugin.
 *
 * Règle de conduite : ce fichier ne contient QUE de la structure
 * (boîte, débordement, largeur). Aucune couleur, aucune taille de police,
 * aucune marge décorative : tout cela doit rester réglable depuis Elementor.
 */

/* Conteneur externe de la section : les espacements viennent des contrôles. */
.arvy-section {
	position: relative;
	box-sizing: border-box;
	width: 100%;
	/* Empêche tout débordement horizontal, quel que soit le contenu. */
	max-width: 100%;
	overflow-wrap: break-word;
}

/* Conteneur interne : c'est lui dont la largeur maximale est réglable. */
.arvy-section__inner {
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
}

.arvy-section *,
.arvy-section *::before,
.arvy-section *::after {
	box-sizing: border-box;
}

/* Les médias ne débordent jamais de leur colonne. */
.arvy-section img,
.arvy-section video,
.arvy-section iframe {
	max-width: 100%;
	height: auto;
}

/* Grille utilitaire pour les sections à colonnes (voir add_columns_control). */
.arvy-section .arvy-grid {
	display: grid;
	grid-template-columns: repeat(1, minmax(0, 1fr));
}

/*
 * Animations — état d'attente et garde-fous.
 *
 * Un élément destiné à apparaître porte l'attribut data-arvy-anim. Il n'est
 * masqué que si le JS tourne réellement (classe « arvy-js » posée par
 * plugin.js) : sans JavaScript, le contenu reste visible. Dès que la section
 * renonce à animer — mouvement réduit, GSAP absent, erreur —, plugin.js pose
 * « arvy-no-motion » et tout réapparaît.
 */

.arvy-js [data-arvy-anim] {
	opacity: 0;
}

.arvy-js .arvy-no-motion [data-arvy-anim] {
	opacity: 1;
}

/* Filet de sécurité : même si le JS ne s'exécute jamais, un visiteur qui a
   demandé moins de mouvement voit le contenu et aucune transition. */
@media ( prefers-reduced-motion: reduce ) {
	.arvy-js [data-arvy-anim] {
		opacity: 1;
	}

	.arvy-section *,
	.arvy-section *::before,
	.arvy-section *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}
