/*
 * Grammaire d'animation — cf. ux/specifications.md section 0 et research/references.md
 * (geste Linear.app retenu comme référence "effet waouh sobre").
 *
 * Principe : l'état initial (masqué) n'est appliqué QUE si JavaScript a pu charger et
 * ajouter la classe .nwc-reveal-ready sur <html> (voir js/animations.js). Si JS est
 * indisponible/bloqué, le contenu reste visible par défaut — une animation ne doit
 * jamais être une condition d'accès au contenu.
 */

.nwc-reveal {
	opacity: 1;
	transform: none;
}

html.nwc-reveal-ready .nwc-reveal {
	opacity: 0;
	transform: translateY(var(--nwc-reveal-distance));
	transition: opacity var(--nwc-duration-base) var(--nwc-ease),
		transform var(--nwc-duration-base) var(--nwc-ease);
	transition-delay: calc(var(--nwc-stagger-step) * var(--nwc-reveal-order, 0));
	will-change: opacity, transform;
}

html.nwc-reveal-ready .nwc-reveal.is-visible {
	opacity: 1;
	transform: none;
}

/* Jamais plus de 6 éléments décalés d'affilée dans une même grille (references.md) :
   on plafonne le multiplicateur de stagger, les éléments suivants apparaissent ensemble. */
.nwc-reveal:nth-child(n+7) {
	--nwc-reveal-order: 6;
}

@media (prefers-reduced-motion: reduce) {
	html.nwc-reveal-ready .nwc-reveal,
	html.nwc-reveal-ready .nwc-reveal.is-visible {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* Micro-interaction au survol — jamais de rebond/élastique, juste un déplacement net et court */
.nwc-hover-lift {
	transition: transform var(--nwc-duration-fast) var(--nwc-ease),
		box-shadow var(--nwc-duration-fast) var(--nwc-ease);
}

.nwc-hover-lift:hover {
	transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
	.nwc-hover-lift:hover {
		transform: none;
	}
}

/* Ouverture du menu mobile — 300ms max (ux/specifications.md), désactivée sous reduced-motion
   via la règle générale ci-dessus appliquée à .nwc-mobile-panel dans components.css. */

/* Repli vidéo de fond de hero : la vidéo n'est insérée en DOM par JS que si le script juge
   la connexion favorable ET prefers-reduced-motion non actif ; cette règle garantit que
   l'image statique de repli reste visible tant que la vidéo n'a pas explicitement pris le relais. */
.nwc-hero-video {
	display: none;
}

.nwc-hero-video.is-active {
	display: block;
}
