/* Menu de l'en-tête (refonte du 03/11/2026) : ordinateur = barre et panneau éditorial, mobile = accordéon.
   Cahier des charges : docs/menu-cahier-des-charges.md. Toutes les règles sont préfixées .nfm-. */

.nfm-pc ul,
.nfm-mob ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.nfm-sr {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ---------- Ordinateur ---------- */

.nfm-pc {
	height: 100%;
	display: flex;
	align-items: stretch;
}
.nfm-pc .nfm-barre {
	display: flex;
	align-items: stretch;
	height: 100%;
}
.nfm-pc .nfm-li {
	display: flex;
	align-items: stretch;
}
.nfm-pc a.nfm-top {
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: 0 20px;
	font-family: Montserrat, sans-serif;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	line-height: 1;
	color: #111;
	text-decoration: none;
	border-top: 2px solid transparent;
	border-bottom: 2px solid transparent;
}
.nfm-pc a.nfm-top:hover,
.nfm-pc a.nfm-top:focus,
.nfm-pc .nfm-li.is-open a.nfm-top {
	color: #1A472A;
}
.nfm-pc .nfm-li.is-open a.nfm-top {
	border-bottom-color: #1A472A;
}

.nfm-pc .nfm-panneau {
	display: none;
	position: absolute;
	z-index: 1000;
	left: 0;
	top: 100%;
	background: #fff;
	border-top: 1px solid #E6E4DF;
	border-bottom: 1px solid #E6E4DF;
	text-align: left;
	font-family: Montserrat, sans-serif;
	/* La barre Astra passe ses liens en capitales : le panneau reste en minuscules. */
	text-transform: none;
	letter-spacing: normal;
	line-height: 1.4;
}
.nfm-pc .nfm-li.is-open .nfm-panneau {
	display: block;
	animation: nfm-fondu 0.14s ease-out;
}
/* Opacité seulement : animée par la carte graphique, et le panneau est toujours à sa place exacte. */
@keyframes nfm-fondu {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}
/* Page assombrie sous le panneau : une ombre, coupée au ras du haut du panneau pour laisser l'en-tête clair.
   Une ombre ne capte pas la souris (y passer referme le panneau) et n'allonge jamais la page. */
.nfm-pc .nfm-li.is-open .nfm-panneau {
	box-shadow: 0 0 0 100vmax rgba(17, 17, 17, 0.28);
	clip-path: inset(0 0 -100vmax 0);
}
/* Bande invisible entre la rubrique et son panneau : la souris peut descendre lentement sans le fermer. */
.nfm-pc .nfm-li.is-open a.nfm-top {
	position: relative;
}
.nfm-pc .nfm-li.is-open a.nfm-top::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	height: 32px;
}
.nfm-pc .nfm-in {
	max-width: 1360px;
	margin: 0 auto;
	padding: 36px 40px 12px;
	box-sizing: border-box;
	display: grid;
	grid-template-columns: minmax(0, 1fr) 264px;
	gap: 64px;
}
.nfm-pc .nfm-cols {
	display: grid;
	grid-template-columns: repeat(var(--nfm-n, 4), minmax(0, 1fr));
	column-gap: 40px;
	align-items: start;
}
.nfm-pc .nfm-g {
	margin: 0 0 24px;
}
.nfm-pc a.nfm-h {
	display: block;
	margin: 0 0 6px;
	font-size: 14px;
	font-weight: 700;
	line-height: 20px;
	color: #111;
	text-decoration: none;
}
.nfm-pc a.nfm-l {
	display: block;
	padding: 5px 0;
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	color: #4A4A4A;
	text-decoration: none;
}
.nfm-pc a.nfm-h:hover,
.nfm-pc a.nfm-l:hover,
.nfm-pc a.nfm-h:focus,
.nfm-pc a.nfm-l:focus {
	color: #1A472A;
}

.nfm-pc a.nfm-une {
	display: block;
	color: #111;
	text-decoration: none;
}
.nfm-pc .nfm-une-t {
	display: block;
	margin-bottom: 10px;
	font-size: 12px;
	font-weight: 700;
	color: #1A472A;
}
/* Cadres photo : le gris des fonds studio (moyenne mesurée sur les photos, 03/11/2026). Photo studio en plein
   cadre (son fond devient le cadre), photo détourée à 66 % (produit à la même échelle). */
.nfm-pc .nfm-une-img {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 264px;
	height: 264px;
	overflow: hidden;
	background: #E6E4E4;
}
.nfm-pc .nfm-une-img img {
	width: 264px;
	height: 264px;
	object-fit: cover;
}
.nfm-pc .nfm-une-img img.nfm-detoure {
	width: 174px;
	height: 174px;
	object-fit: contain;
}
.nfm-pc .nfm-une-n {
	display: block;
	margin-top: 14px;
	font-size: 15px;
	font-weight: 700;
	line-height: 20px;
}
.nfm-pc .nfm-une-p {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	font-weight: 500;
	color: #4A4A4A;
}
.nfm-pc a.nfm-une:hover .nfm-une-n {
	color: #1A472A;
}

.nfm-pc .nfm-pied {
	max-width: 1280px;
	margin: 0 auto;
	padding: 16px 0 20px;
	border-top: 1px solid #ECEAE5;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	box-sizing: content-box;
}
.nfm-pc a.nfm-tout {
	font-size: 14px;
	font-weight: 700;
	color: #1A472A;
	text-decoration: none;
}
.nfm-pc a.nfm-diag {
	font-size: 14px;
	font-weight: 500;
	color: #4A4A4A;
	text-decoration: none;
}
.nfm-pc a.nfm-diag > span {
	font-weight: 700;
	color: #1A472A;
}
.nfm-pc a.nfm-tout:hover,
.nfm-pc a.nfm-diag:hover > span {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Écrans de 922 à 1360 px : marges intérieures alignées sur l'en-tête ; sous 1200 px, place aux colonnes. */
@media (max-width: 1360px) {
	.nfm-pc .nfm-pied {
		margin: 0 40px;
	}
}
@media (max-width: 1199px) {
	.nfm-pc .nfm-in {
		grid-template-columns: minmax(0, 1fr);
		padding: 28px 24px 8px;
	}
	.nfm-pc a.nfm-une {
		display: none;
	}
	.nfm-pc .nfm-cols {
		column-gap: 24px;
	}
	.nfm-pc .nfm-pied {
		margin: 0 24px;
	}
	.nfm-pc a.nfm-top {
		padding: 0 14px;
	}
}

/* ---------- Mobile (tiroir Astra) ---------- */

/* Grande carte verte du diagnostic : remplacée par le bloc en bas du menu. */
body.nfm-v2 .ast-mobile-popup-content .ast-header-html-3 {
	display: none;
}

.nfm-mob {
	width: 100%;
	font-family: Montserrat, sans-serif;
	color: #111;
	text-align: left;
	text-transform: none;
	letter-spacing: normal;
}
.nfm-mob .nfm-cherche {
	margin: 0;
	padding: 4px 20px 8px;
}
.nfm-mob .nfm-cherche label {
	display: flex;
	align-items: center;
	gap: 10px;
	height: 46px;
	padding: 0 14px;
	background: #F2F1F1;
	color: #6B6B6B;
}
.nfm-mob .nfm-cherche input[type="search"] {
	flex: 1;
	min-width: 0;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 0;
	outline: none;
	background: transparent;
	box-shadow: none;
	font-family: Montserrat, sans-serif;
	font-size: 16px;
	color: #111;
}

.nfm-mob .nfm-e {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 56px;
	margin: 0;
	padding: 0 20px;
	box-sizing: border-box;
	background: none;
	border: 0;
	border-bottom: 1px solid #EEECE7;
	border-radius: 0;
	font-family: Montserrat, sans-serif;
	font-size: 17px;
	font-weight: 700;
	line-height: 1.2;
	color: #111;
	text-align: left;
	text-decoration: none;
	text-transform: none;
	letter-spacing: 0;
	cursor: pointer;
}
.nfm-mob .nfm-e:hover,
.nfm-mob .nfm-e:focus {
	background: none;
	color: #111;
}
.nfm-mob .nfm-e[aria-expanded="true"] {
	border-bottom-color: transparent;
}
.nfm-mob a.nfm-e-lien {
	font-size: 16px;
	font-weight: 500;
	color: #2B2B2B;
}
.nfm-mob .nfm-plus {
	position: relative;
	width: 14px;
	height: 14px;
	flex: none;
}
.nfm-mob .nfm-plus::before,
.nfm-mob .nfm-plus::after {
	content: "";
	position: absolute;
	left: 0;
	top: 6px;
	width: 14px;
	height: 2px;
	background: #111;
}
.nfm-mob .nfm-plus::after {
	transform: rotate(90deg);
}
.nfm-mob .nfm-e[aria-expanded="true"] .nfm-plus::after {
	transform: rotate(0deg);
}
.nfm-mob .nfm-e-p {
	border-bottom: 1px solid #EEECE7;
	padding-bottom: 6px;
}

.nfm-mob .nfm-s {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 48px;
	margin: 0;
	padding: 0 20px 0 32px;
	box-sizing: border-box;
	background: none;
	border: 0;
	border-radius: 0;
	font-family: Montserrat, sans-serif;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.25;
	color: #2B2B2B;
	text-align: left;
	text-decoration: none;
	text-transform: none;
	letter-spacing: 0;
	cursor: pointer;
}
.nfm-mob .nfm-s:hover,
.nfm-mob .nfm-s:focus {
	background: none;
	color: #2B2B2B;
}
.nfm-mob .nfm-s[aria-expanded="true"] {
	color: #1A472A;
	font-weight: 700;
}
.nfm-mob .nfm-s svg {
	flex: none;
	transition: transform 0.2s;
}
.nfm-mob .nfm-s[aria-expanded="true"] svg {
	transform: rotate(180deg);
}
.nfm-mob .nfm-s-p .nfm-rail {
	padding-left: 32px;
}
.nfm-mob .nfm-s-p a.nfm-tout {
	padding-left: 32px;
}

.nfm-mob .nfm-rail {
	display: flex;
	gap: 12px;
	overflow-x: auto;
	padding: 4px 20px 14px;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}
.nfm-mob .nfm-rail::-webkit-scrollbar {
	display: none;
}
.nfm-mob .nfm-rail > li {
	flex: none;
}
.nfm-mob .nfm-sous-carte .nfm-rail {
	padding-left: 32px;
}
.nfm-mob a.nfm-carte {
	display: block;
	width: 120px;
	color: #111;
	text-decoration: none;
}
.nfm-mob .nfm-carte-img {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 120px;
	height: 120px;
	overflow: hidden;
	background: #E6E4E4;
}
.nfm-mob .nfm-carte-img img {
	width: 120px;
	height: 120px;
	object-fit: cover;
}
.nfm-mob .nfm-carte-img img.nfm-detoure {
	width: 80px;
	height: 80px;
	object-fit: contain;
}
.nfm-mob .nfm-carte-n {
	display: block;
	margin-top: 8px;
	font-size: 13px;
	font-weight: 700;
	line-height: 17px;
}
.nfm-mob .nfm-carte-p {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	font-weight: 500;
	color: #4A4A4A;
}
.nfm-mob a.nfm-tout {
	display: block;
	padding: 2px 20px 14px;
	font-size: 14px;
	font-weight: 700;
	color: #1A472A;
	text-decoration: none;
}

.nfm-mob a.nfm-diag {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 24px 20px 32px;
	padding: 16px 0;
	border-top: 1px solid #1A472A;
	border-bottom: 1px solid #1A472A;
	color: #1A472A;
	text-decoration: none;
}
.nfm-mob .nfm-diag-t {
	display: block;
	font-size: 15px;
	font-weight: 700;
	color: #1A472A;
}
.nfm-mob .nfm-diag-s {
	display: block;
	margin-top: 3px;
	font-size: 13px;
	font-weight: 500;
	color: #4A4A4A;
}
