/* =========================================================
   SGN — HEADER DROPDOWNS
   ========================================================= */

header .menu-item-has-children {
	position: relative;
}

header .menu-item-has-children > .sub-menu {
	position: absolute;
	z-index: 9999;

	top: calc(100% + 1px);
	left: 0;

	width: 290px;
	min-width: 290px;

	margin: 0;
	padding: 14px 22px;

	visibility: hidden;
	opacity: 0;
	pointer-events: none;

	transform: translateY(8px);

	background: #fff;

	box-shadow:
		0 10px 26px
		rgba(7, 30, 58, .14);

	transition:
		opacity .18s ease,
		transform .18s ease,
		visibility .18s ease;
}

header .menu-item-has-children:hover > .sub-menu,
header .menu-item-has-children:focus-within > .sub-menu {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;

	transform: translateY(0);
}

header .menu-item-has-children > .sub-menu > li {
	position: relative;

	margin: 0;
	padding: 0 0 0 27px;

	list-style: none;

	border-bottom: 1px solid #e8ebee;
}

header .menu-item-has-children > .sub-menu > li:last-child {
	border-bottom: 0;
}

header .menu-item-has-children > .sub-menu > li::before {
	content: "";

	position: absolute;

	top: 50%;
	left: 0;

	width: 9px;
	height: 9px;

	border: 2px solid #d7dce1;
	border-radius: 50%;

	background: #fff;

	transform: translateY(-50%);
}

header .menu-item-has-children > .sub-menu > li:hover::before,
header .menu-item-has-children > .sub-menu > li.current-menu-item::before {
	border-color: #3278be;
	background: #3278be;
}

header .menu-item-has-children > .sub-menu > li > a {
	display: block;

	padding: 17px 0;

	background: transparent !important;
	color: #777 !important;

	text-decoration: none;

	font-size: 15px;
	line-height: 1.45;
	font-weight: 500;

	white-space: normal;

	transition:
		color .18s ease,
		padding-left .18s ease;
}

header .menu-item-has-children > .sub-menu > li:hover > a,
header .menu-item-has-children > .sub-menu > li.current-menu-item > a {
	padding-left: 3px;
	color: #3278be !important;
}


/* =========================================================
   SGN — PRELOADER
   ========================================================= */

.sgn-preloader {
	position: fixed;
	z-index: 999999;

	inset: 0;

	display: flex;
	align-items: center;
	justify-content: center;

	visibility: visible;
	opacity: 1;

	background: #fff;

	transition:
		opacity .28s ease,
		visibility .28s ease;
}

.sgn-preloader.is-hidden {
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
}

.sgn-preloader__mark {
	position: relative;

	width: 74px;
	height: 74px;
}

.sgn-preloader__ring {
	position: absolute;
	inset: 0;

	border-radius: 50%;

	background:
		conic-gradient(
			#e30613 0deg 72deg,
			#d7eef8 72deg 155deg,
			#009fe3 155deg 250deg,
			#ffed00 250deg 330deg,
			#e30613 330deg 360deg
		);

	-webkit-mask:
		radial-gradient(
			farthest-side,
			transparent calc(100% - 6px),
			#000 calc(100% - 5px)
		);

	mask:
		radial-gradient(
			farthest-side,
			transparent calc(100% - 6px),
			#000 calc(100% - 5px)
		);

	animation:
		sgn-preloader-spin 1.05s linear infinite;
}

.sgn-preloader__dots {
	position: absolute;
	inset: 0;

	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;

	gap: 5px;
}

.sgn-preloader__dots span {
	display: block;

	width: 14px;
	height: 14px;

	border-radius: 50%;
}

.sgn-preloader__dots span:nth-child(1) {
	background: #e30613;
}

.sgn-preloader__dots span:nth-child(2) {
	background: #009fe3;
}

.sgn-preloader__dots span:nth-child(3) {
	background: #ffed00;
}

@keyframes sgn-preloader-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.sgn-preloader__ring {
		animation: none;
	}
}


/* Mobile : le menu mobile conserve son propre comportement */
@media (max-width: 900px) {
	header .menu-item-has-children > .sub-menu {
		transition: none;
	}
}

/* SGN — dropdown légèrement plus compact */
header .menu-item-has-children > .sub-menu > li > a {
	padding-top: 14px;
	padding-bottom: 14px;
}

/* =========================================================
   HEADER — suppression barre tricolore
   ========================================================= */

header [class*="tricolor"],
header [class*="tricolore"],
header [class*="color-bar"],
header [class*="colour-bar"],
header [class*="accent-bar"],
.sgn-header__tricolor,
.sgn-site-header__tricolor {
	display: none !important;
	height: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

.sgn-header::after,
.sgn-site-header::after,
.wp-block-sgn-header::after {
	display: none !important;
	content: none !important;
	height: 0 !important;
}


/* Aucun vide header → hero */

.sgn-header,
.sgn-site-header,
.wp-block-sgn-header {
	margin-bottom: 0 !important;
	border-bottom: 0 !important;
}

.sgn-hero,
.sgn-page-hero,
.sgn-agenda-hero,
.sgn-article-hero {
	margin-top: 0 !important;
}

/* =========================================================
   HEADER → HERO
   Suppression définitive de la barre tricolore
   et de tout espace résiduel
   ========================================================= */

/* Éléments éventuels utilisés pour la bande */
.sgn-site-header [class*="tricolor"],
.sgn-site-header [class*="tricolore"],
.sgn-site-header [class*="color-strip"],
.sgn-site-header [class*="colour-strip"],
.sgn-site-header [class*="flag-bar"],
.sgn-site-header [class*="flag-strip"] {
	display: none !important;
	height: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

/* Si la bande est générée par un pseudo-élément */
.sgn-site-header::before,
.sgn-site-header::after {
	border-bottom: 0 !important;
}

/* Aucun espace sous le header */
.sgn-site-header,
.sgn-header,
header.wp-block-sgn-header {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
	border-bottom: 0 !important;
}

/* Le bloc suivant doit commencer immédiatement */
.sgn-site-header + *,
.sgn-header + *,
header.wp-block-sgn-header + * {
	margin-top: 0 !important;
}

/* Heroes connus */
.sgn-hero,
.sgn-page-hero,
.sgn-agenda-hero,
.sgn-article-hero {
	margin-top: 0 !important;
}

/* Header collé au Hero */
.sgn-site-header {
	margin-bottom: 0 !important;
	border-bottom: 0 !important;
}

.sgn-site-header + * {
	margin-top: 0 !important;
}

.sgn-hero,
.sgn-page-hero,
.sgn-agenda-hero,
.sgn-article-hero {
	margin-top: 0 !important;
}
