/* HEM Admissions 2027 — base commune. Aucun style de direction ici. */

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var(--hem-bg);
	color: var(--hem-fg);
	font-family: var(--hem-font-text);
	font-size: var(--hem-text-base);
	font-weight: 400;
	line-height: var(--hem-leading-text);
	/* Agrandir n'a qu'une graisse : le navigateur ne doit ni la graisser ni l'incliner. */
	font-synthesis: none;
}

h1,
h2,
h3 {
	margin: 0;
	font-family: var(--hem-font-display);
	font-weight: 400;
	line-height: var(--hem-leading-tight);
	text-wrap: balance;
}

p,
ul,
ol,
figure {
	margin: 0;
}

ul,
ol {
	padding: 0;
	list-style: none;
}

a {
	color: inherit;
}

img,
video {
	display: block;
	max-width: 100%;
	height: auto;
}

:focus-visible {
	outline: 2px solid var(--hem-focus);
	outline-offset: 3px;
}

.hem-visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.hem-skip {
	position: absolute;
	top: var(--hem-space-2);
	left: var(--hem-space-2);
	z-index: 10;
	padding: var(--hem-space-2) var(--hem-space-3);
	background: var(--hem-fg);
	color: var(--hem-bg);
	transform: translateY(-200%);
}

.hem-skip:focus {
	transform: none;
}

/* Sélecteur de langue : même balisage partout, apparence laissée aux directions. */
.hem-lang ul {
	display: flex;
	gap: var(--hem-space-2);
}

.hem-lang a {
	display: inline-block;
	padding: var(--hem-space-2);
	text-decoration: none;
}

.hem-lang [aria-current] {
	text-decoration: underline;
	text-underline-offset: 0.25em;
}

/* CTA : cible tactile et lisibilité minimales, sans parti pris graphique. */
.hem-cta {
	display: inline-block;
	padding: var(--hem-space-3) var(--hem-space-4);
	border: var(--hem-line) solid currentColor;
	font-weight: 500;
	text-decoration: none;
}

/* Emplacement média vide. */
.hem-slot {
	background: color-mix(in srgb, var(--hem-fg) 8%, transparent);
}

/* Bandeau de phase prototype. */
.hem-proto {
	display: flex;
	gap: var(--hem-space-3);
	justify-content: space-between;
	padding: var(--hem-space-2) var(--hem-gutter);
	border-bottom: var(--hem-line) solid currentColor;
	font-size: var(--hem-text-sm);
}

/* Flèche HEM (hem_adm_arrow) : un trait fin, de la couleur du texte, qui
   garde la même finesse à toutes les tailles. */
.hem-arrow {
	--hem-arrow-stroke: 1.5px;

	flex: none;
	overflow: visible;
	fill: none;
	stroke: currentColor;
	stroke-linecap: round;
	stroke-linejoin: round;
	stroke-width: var(--hem-arrow-stroke);
}

.hem-arrow * {
	vector-effect: non-scaling-stroke;
}

/* Dans le cercle : le cercle est un peu plus appuyé que la flèche. */
.hem-arrow--circle circle {
	stroke-width: calc(var(--hem-arrow-stroke) * 1.6);
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}
