/* Champ piège anti-robot (honeypot) : masqué globalement, quel que soit le
   formulaire (contact, estimation, ...) qui l'utilise. */
.hp-field {
	position: absolute;
	left: -9999px;
	top: -9999px;
}

/* Transition de page (animsition) + écran de chargement animé */
.animsition {
	opacity: 0;
}
.animsition-loading {
	position: fixed;
	inset: 0;
	z-index: 9999;
	background: #f2f2f2;
	display: flex;
	align-items: center;
	justify-content: center;
}
.animsition-loading::before {
	content: "\e4e5";
	font-family: 'FontAwesomeSolid';
	font-weight: 900;
	font-size: 90px;
	color: #21409a;
	animation: computerPulse 1.1s ease-in-out infinite;
}
@keyframes computerPulse {
	0%, 100% { transform: scale(1); opacity: 1; }
	50% { transform: scale(1.18); opacity: .55; }
}

/* Le menu principal étant fixe (sticky), les ancres (#pg-legal, #sv-vitrine,
   ...) doivent s'arrêter plus bas pour ne pas passer sous le menu. Couvre à
   la fois les ancres natives de l'URL et les scrollIntoView() en JS. */
html {
	scroll-padding-top: 160px;
}

/* Bouton flottant "remonter en haut" */
.rstpl-go-top {
	position: fixed;
	right: 24px;
	bottom: 24px;
	left: auto;
	z-index: 900;
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px);
	transition: opacity .25s ease, transform .25s ease, visibility .25s;
}
.rstpl-go-top.rstpl-go-top-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.rstpl-go-top a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	background-color: #21409a;
	border-radius: 50%;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
	transition: background-color .2s ease;
}
.rstpl-go-top a:hover {
	background-color: #182f70;
}
.rstpl-go-top a .triangle-up {
	margin-top: 3px;
	border-left: 8px solid transparent;
	border-right: 8px solid transparent;
	border-bottom: 11px solid #fff;
}
/* Le thème masque cet élément en dessous de 768px (hidden-phone) : on le
   garde visible, un accès rapide en haut de page est utile aussi au tactile. */
@media (max-width: 767px) {
	.rstpl-go-top.hidden-phone {
		display: block;
	}
	.rstpl-go-top {
		right: 16px;
		bottom: 16px;
	}
}

/* Menu principal fixe pendant le défilement */
/* Le thème met overflow:hidden sur #rstpl-pagewrap ; combiné à
   overflow-y:visible, un axe "hidden" force l'autre à devenir "auto"
   (règle CSS), ce qui recrée un conteneur de défilement local et casse
   position:sticky. "clip" évite cette règle tout en bloquant toujours le
   débordement horizontal. */
#rstpl-pagewrap {
	overflow-x: clip;
	overflow-y: visible;
}
.rstpl-main-menu-position {
	position: sticky;
	top: 0;
	z-index: 1000;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}

/* Mega-menu Portfolio : 6 vignettes sur 2 lignes de 3, logos réduits et uniformisés */
.rstpl-mega-menu-container .carousel-inner {
	display: flex;
	flex-wrap: wrap;
}
.rstpl-mega-menu-container .carousel-inner .span4,
.rstpl-mega-menu-container .carousel-inner .span4 + .span4 {
	flex: 0 0 33.3333%;
	max-width: 33.3333%;
	vertical-align: top;
	padding: 6px;
	margin-left: 0;
	box-sizing: border-box;
}
.rstpl-mega-menu-container .rspbld-image {
	height: 55px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.rstpl-mega-menu-container .rspbld-image img {
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: 55px;
	object-fit: contain;
}
.rstpl-mega-menu-container .rspbld-item-title {
	font-size: 12px;
}
