/* ILM Academy — composants front. Toutes les couleurs et polices viennent des variables
   --ilm-* (Réglages > Design), surchargeables widget par widget dans Elementor. */

.ilm {
	--_primary: var(--ilm-primary, #1C5694);
	--_primary-dark: var(--ilm-primary-dark, #123A66);
	--_secondary: var(--ilm-secondary, #6FB0E0);
	--_accent: var(--ilm-accent, #F0DB18);
	--_ink: var(--ilm-ink, #14213A);
	--_muted: var(--ilm-muted, #56627A);
	--_ground: var(--ilm-ground, #F4F7FB);
	--_surface: var(--ilm-surface, #FFFFFF);
	--_line: var(--ilm-line, #DCE4EF);
	--_ok: var(--ilm-success, #1E7B4F);
	--_bad: var(--ilm-danger, #B3261E);
	--_on-primary: var(--ilm-on-primary, #FFFFFF);
	--_on-accent: var(--ilm-on-accent, #14213A);
	--_heading: var(--ilm-heading, var(--ilm-primary-dark, #123A66));
	--_deep: var(--ilm-deep, var(--ilm-primary-dark, #123A66));
	--_hover: var(--ilm-primary-hover, var(--ilm-primary-dark, #123A66));
	--_link: var(--ilm-link, var(--ilm-primary, #1C5694));
	--_ok-bg: var(--ilm-success-bg, #E3F2EA);
	--_bad-bg: var(--ilm-danger-bg, #FBE4E2);
	--_warn: var(--ilm-warning, #C7771A);
	--_warn-bg: var(--ilm-warning-bg, #FDF3D0);
	--_warn-ink: var(--ilm-warning-ink, #6E5200);
	--_r: var(--ilm-radius, 16px);
	--_r-sm: var(--ilm-radius-sm, 8px);
	font-family: var(--ilm-font-body, "Poppins", system-ui, sans-serif);
	font-size: var(--ilm-fs-base, 16px);
	line-height: 1.55;
	color: var(--_ink);
	box-sizing: border-box;
}
.ilm *, .ilm *::before, .ilm *::after { box-sizing: border-box; }
.ilm [hidden] { display: none !important; }
.ilm .ilm-icon { flex-shrink: 0; vertical-align: middle; }

/* Typographie ---------------------------------------------------------- */
.ilm .ilm-title {
	margin: 0;
	font-family: var(--ilm-font-heading, "Raleway", system-ui, sans-serif);
	font-weight: var(--ilm-heading-weight, 700);
	font-size: var(--ilm-fs-2xl, 31px);
	line-height: 1.15;
	color: var(--_heading);
	letter-spacing: -0.01em;
}
.ilm .ilm-title--sm { font-size: var(--ilm-fs-xl, 25px); }
.ilm .ilm-title--xl { font-size: var(--ilm-fs-3xl, 39px); }
.ilm .ilm-text { margin: 0; color: var(--_muted); }
.ilm .ilm-small { font-size: var(--ilm-fs-sm, 13px); color: var(--_muted); }
.ilm .ilm-eyebrow {
	display: inline-block;
	font-size: var(--ilm-fs-sm, 13px);
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--_primary);
}
.ilm .ilm-eyebrow--accent { color: var(--_accent); }
.ilm .ilm-label {
	display: flex; align-items: center; gap: 8px;
	font-size: var(--ilm-fs-sm, 13px);
	font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
	color: var(--_muted);
}
.ilm a { color: var(--_link); }
.ilm a:hover { color: var(--_hover); }

/* Boutons ------------------------------------------------------------- */
.ilm .ilm-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 44px; padding: 0 20px;
	border: 1.5px solid transparent; border-radius: 999px;
	font: inherit; font-weight: 600; line-height: 1.2; text-decoration: none;
	cursor: pointer; transition: background-color .15s, color .15s, border-color .15s, transform .1s;
}
.ilm .ilm-btn:active { transform: translateY(1px); }
.ilm .ilm-btn:focus-visible, .ilm .ilm-option:focus-visible, .ilm input:focus-visible {
	outline: 3px solid var(--_secondary); outline-offset: 2px;
}
.ilm .ilm-btn--lg { min-height: 52px; padding: 0 26px; font-size: var(--ilm-fs-lg, 18px); }
.ilm .ilm-btn--block { width: 100%; }
.ilm .ilm-btn--primary { background: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-btn--primary:hover { background: var(--_hover); color: var(--_on-primary); }
.ilm .ilm-btn--accent { background: var(--_accent); color: var(--_on-accent); }
.ilm .ilm-btn--accent:hover { filter: brightness(0.95); color: var(--_on-accent); }
.ilm .ilm-btn--ghost { background: transparent; border-color: var(--_primary); color: var(--_link); }
.ilm .ilm-btn--ghost:hover { background: var(--_ground); }
.ilm .ilm-btn--outline-light { background: transparent; border-color: var(--_accent); color: var(--_accent); }
.ilm .ilm-btn--link { background: none; border: 0; padding: 0 8px; color: var(--_link); text-decoration: underline; text-underline-offset: 3px; }
.ilm .ilm-btn[disabled] { background: var(--_line); color: var(--_muted); border-color: transparent; cursor: not-allowed; }
.ilm .ilm-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

/* Cartes -------------------------------------------------------------- */
.ilm .ilm-card {
	display: flex; flex-direction: column; gap: 12px;
	padding: 24px; border-radius: var(--_r);
	background: var(--_surface); border: 1px solid var(--_line);
}
.ilm .ilm-card--outline { border: 2px solid var(--_primary); }
.ilm .ilm-card--dark { background: var(--_deep); border-color: transparent; color: #fff; }
.ilm .ilm-card--dark .ilm-card__big { color: #fff; }
.ilm .ilm-card--accent { background: var(--_accent); border-color: transparent; color: var(--_on-accent); }
.ilm .ilm-card--accent .ilm-label, .ilm .ilm-card--accent .ilm-text { color: var(--_on-accent); }
.ilm .ilm-card--flush { padding: 0; overflow: hidden; }
.ilm .ilm-card__big {
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
	font-weight: var(--ilm-heading-weight, 700);
	font-size: var(--ilm-fs-xl, 25px); line-height: 1.2; color: var(--_ink);
}
.ilm .ilm-on-dark-muted { color: rgba(255,255,255,.75); }
.ilm .ilm-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.ilm .ilm-row-between { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }

.ilm .ilm-pill {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 8px 14px; border-radius: 999px;
	background: var(--_surface); border: 1px solid var(--_line);
	font-weight: 600; font-size: var(--ilm-fs-sm, 14px);
}
.ilm .ilm-pill--streak .ilm-icon { color: var(--_warn); }
.ilm .ilm-badge { padding: 4px 12px; border-radius: 999px; font-size: var(--ilm-fs-sm, 13px); font-weight: 700; }
.ilm .ilm-badge--ok { background: var(--_ok-bg); color: var(--_ok); }
.ilm .ilm-badge--warn { background: var(--_warn-bg); color: var(--_warn-ink); }
.ilm .ilm-badge--late { background: var(--_bad-bg); color: var(--_bad); }

.ilm .ilm-alert { margin: 0; padding: 12px 16px; border-radius: var(--_r-sm); font-weight: 500; }
.ilm .ilm-alert--error { background: var(--_bad-bg); color: var(--_bad); }

/* Barres & progression ----------------------------------------------- */
.ilm .ilm-progress { height: 8px; border-radius: 999px; background: var(--_line); overflow: hidden; }
.ilm .ilm-progress > span { display: block; height: 100%; width: 0; background: var(--_primary); border-radius: 999px; transition: width .3s ease; }
.ilm .ilm-bars { display: flex; flex-direction: column; gap: 14px; }
.ilm .ilm-bar__top { display: flex; justify-content: space-between; font-size: var(--ilm-fs-sm, 14px); margin-bottom: 6px; }
.ilm .ilm-bar__track { height: 8px; border-radius: 999px; background: var(--_ground); overflow: hidden; }
.ilm .ilm-bar__track > span { display: block; height: 100%; background: var(--_primary); border-radius: 999px; }
.ilm .ilm-bar.is-low .ilm-bar__track > span { background: var(--_warn); }

.ilm .ilm-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.ilm .ilm-steps__bar { display: block; height: 8px; border-radius: 999px; background: rgba(255,255,255,.2); overflow: hidden; }
.ilm .ilm-steps__bar > span { display: block; height: 100%; background: var(--_accent); }
.ilm .ilm-steps__label { display: block; margin-top: 8px; font-size: var(--ilm-fs-sm, 13px); color: rgba(255,255,255,.75); }
.ilm .ilm-steps__item.is-current .ilm-steps__label { color: #fff; font-weight: 700; }

/* Options de réponse -------------------------------------------------- */
.ilm .ilm-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.ilm .ilm-options--stack { grid-template-columns: 1fr; gap: 10px; }
.ilm .ilm-option {
	display: flex; align-items: center; gap: 14px;
	min-height: 56px; padding: 12px 16px; width: 100%;
	text-align: left; font: inherit; font-weight: 500; color: var(--_ink);
	background: var(--_surface); border: 2px solid var(--_line); border-radius: var(--_r-sm);
	cursor: pointer; transition: border-color .15s, background-color .15s;
}
.ilm .ilm-option:hover { border-color: var(--_secondary); }
.ilm .ilm-option__key {
	width: 34px; height: 34px; flex-shrink: 0; border-radius: 10px;
	display: inline-flex; align-items: center; justify-content: center;
	background: var(--_ground); color: var(--_heading); font-weight: 700;
}
.ilm .ilm-option[aria-checked="true"], .ilm .ilm-option.is-selected { border-color: var(--_primary); background: color-mix(in srgb, var(--_primary) 8%, var(--_surface)); }
.ilm .ilm-option[aria-checked="true"] .ilm-option__key { background: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-option.is-right { border-color: var(--_ok); background: var(--_ok-bg); }
.ilm .ilm-option.is-wrong { border-color: var(--_bad); background: var(--_bad-bg); }
.ilm .ilm-option[disabled] { cursor: default; }

/* Test de niveau ------------------------------------------------------ */
.ilm-test { padding: clamp(24px, 4vw, 48px); background: var(--_surface); border: 1px solid var(--_line); border-radius: calc(var(--_r) * 1.5); }
.ilm-test__screen { display: flex; flex-direction: column; gap: 18px; }
.ilm-test__meta { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.ilm-test__meta li { padding: 6px 12px; border-radius: 999px; background: var(--_ground); font-size: var(--ilm-fs-sm, 13px); font-weight: 600; }
.ilm-test__screen > .ilm-btn { align-self: flex-start; }
.ilm-test__top { display: flex; justify-content: space-between; font-weight: 600; color: var(--_muted); font-size: var(--ilm-fs-sm, 14px); }
.ilm-test__prompt {
	margin: 12px 0 0;
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
	font-weight: var(--ilm-heading-weight, 700);
	font-size: var(--ilm-fs-2xl, 31px); line-height: 1.25; color: var(--_heading);
}
.ilm-test__prompt:focus { outline: none; }
.ilm-test__actions { display: flex; justify-content: flex-end; }
.ilm-test__audio audio { width: 100%; }

/* Formulaires --------------------------------------------------------- */
.ilm .ilm-form { display: flex; flex-direction: column; gap: 16px; }
.ilm .ilm-field { display: flex; flex-direction: column; gap: 6px; }
.ilm .ilm-field label { font-weight: 600; font-size: var(--ilm-fs-sm, 14px); }
.ilm .ilm-field input {
	width: 100%; min-height: 48px; padding: 10px 14px;
	font: inherit; color: var(--_ink);
	background: var(--_surface); border: 1.5px solid var(--_line); border-radius: var(--_r-sm);
}
.ilm .ilm-field input:focus { border-color: var(--_primary); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--_secondary) 40%, transparent); }
.ilm .ilm-input-icon { position: relative; display: flex; align-items: center; }
.ilm .ilm-input-icon > .ilm-icon { position: absolute; left: 14px; color: var(--_muted); pointer-events: none; }
.ilm .ilm-input-icon input { padding-left: 44px; }
.ilm .ilm-input-toggle {
	position: absolute; right: 4px; width: 44px; height: 44px;
	display: flex; align-items: center; justify-content: center;
	background: none; border: 0; color: var(--_muted); cursor: pointer; border-radius: var(--_r-sm);
}
.ilm .ilm-form__row { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; font-size: var(--ilm-fs-sm, 14px); }
.ilm .ilm-check { display: inline-flex; align-items: center; gap: 8px; }
.ilm .ilm-check input { width: 18px; height: 18px; accent-color: var(--_primary); }
.ilm .ilm-field input::placeholder { color: var(--_muted); opacity: .8; }

/* Connexion ----------------------------------------------------------- */
.ilm-login { display: grid; border-radius: calc(var(--_r) * 1.5); overflow: hidden; background: var(--_surface); border: 1px solid var(--_line); }
.ilm-login--split { grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.ilm-login--card { max-width: 480px; margin-inline: auto; }
.ilm-login__side {
	display: flex; flex-direction: column; justify-content: center; gap: 24px;
	padding: clamp(32px, 5vw, 56px);
	background: var(--_deep); color: #fff;
	background-image: radial-gradient(circle at 100% 0, color-mix(in srgb, var(--_secondary) 35%, transparent) 0, transparent 55%);
}
.ilm-login__quote {
	margin: 0;
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
	font-weight: var(--ilm-heading-weight, 700);
	font-size: var(--ilm-fs-3xl, 39px); line-height: 1.1; color: #fff;
}
.ilm-login__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; color: rgba(255,255,255,.88); }
.ilm-login__list li { display: flex; gap: 10px; align-items: center; }
.ilm-login__list .ilm-icon { color: var(--_accent); }
.ilm-login__main { display: flex; flex-direction: column; gap: 18px; padding: clamp(28px, 5vw, 56px); }
.ilm-login__help { margin: 0; }

/* Leçon du jour ------------------------------------------------------- */
.ilm-lesson { display: flex; flex-direction: column; gap: 16px; }
.ilm-lesson__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.ilm-lesson__word {
	display: flex; flex-direction: column; gap: 10px;
	padding: 24px; border-radius: calc(var(--_r) * 1.25);
	background: var(--_deep); color: #fff;
}
.ilm-lesson__term { font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-weight: var(--ilm-heading-weight, 700); font-size: var(--ilm-fs-3xl, 39px); line-height: 1.1; color: #fff; }
.ilm-lesson__phon { color: rgba(255,255,255,.78); }
.ilm-lesson__btns { display: flex; flex-wrap: wrap; gap: 10px; }
.ilm-lesson__meaning { display: flex; flex-direction: column; gap: 4px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.2); }
.ilm-lesson__meaning em { color: rgba(255,255,255,.8); }
.ilm-lesson__quiz { display: flex; flex-direction: column; gap: 10px; padding: 20px; border-radius: calc(var(--_r) * 1.25); background: var(--_surface); border: 1px solid var(--_line); }
.ilm-lesson__q { margin: 0; font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-weight: var(--ilm-heading-weight, 700); font-size: var(--ilm-fs-lg, 20px); }
.ilm-lesson__feedback { margin: 0; font-weight: 600; }
.ilm-lesson__feedback.is-good { color: var(--_ok); }
.ilm-lesson__feedback.is-bad { color: var(--_bad); }
.ilm-lesson--compact { gap: 0; }
.ilm-lesson--compact .ilm-lesson__word { border-radius: 0; }
.ilm-lesson--compact .ilm-lesson__quiz { border: 0; border-radius: 0; }

/* Espace apprenant ---------------------------------------------------- */
.ilm-dash { --ilm-cols: 3; --ilm-path-span: 2; display: flex; flex-direction: column; gap: 24px; }
.ilm-dash__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.ilm-dash__headright { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ilm-dash__grid { display: grid; grid-template-columns: repeat(var(--ilm-cols), minmax(0, 1fr)); gap: 20px; align-items: start; }
.ilm-dash__path { grid-column: span var(--ilm-path-span); }
.ilm-dash__grid > * { min-width: 0; }

/* S'adapte à la largeur réelle du conteneur (colonne Elementor, thème étroit…). */
.ilm-dash, .ilm-test, .ilm-login__main, .ilm-login__side { container-type: inline-size; }
@container (max-width: 860px) {
	.ilm-dash__grid { grid-template-columns: repeat(min(var(--ilm-cols), 2), minmax(0, 1fr)); }
	.ilm-dash__path { grid-column: 1 / -1; }
}
@container (max-width: 560px) {
	.ilm-dash__grid { grid-template-columns: 1fr; }
	.ilm .ilm-options, .ilm .ilm-grid-2 { grid-template-columns: 1fr; }
	.ilm .ilm-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (max-width: 420px) {
	.ilm-login__quote { font-size: var(--ilm-fs-2xl, 31px); }
}
.ilm-lesson--compact .ilm-lesson__term { font-size: var(--ilm-fs-2xl, 31px); }
.ilm [tabindex="-1"]:focus { outline: none; }

/* Responsive ---------------------------------------------------------- */
@media (max-width: 1024px) {
	.ilm-dash { --ilm-cols: 2; --ilm-path-span: 2; }
}
@media (max-width: 767px) {
	.ilm-dash { --ilm-cols: 1; --ilm-path-span: 1; }
	.ilm .ilm-options, .ilm .ilm-grid-2 { grid-template-columns: 1fr; }
	.ilm-login--split { grid-template-columns: 1fr; }
	.ilm-login__side { padding: 28px; }
	.ilm-login__quote { font-size: var(--ilm-fs-2xl, 31px); }
	.ilm .ilm-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ilm-test__actions .ilm-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
	.ilm * { transition: none !important; }
}

/* Mot de passe oublié (1.2) ------------------------------------------- */
.ilm .ilm-alert--success { background: var(--_ok-bg); color: var(--_ok); }
.ilm .ilm-back-link { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; font-weight: 600; text-decoration: none; }
.ilm .ilm-back-link:hover { text-decoration: underline; }
.ilm .ilm-sent { display: flex; gap: 14px; align-items: flex-start; padding: 16px; border-radius: var(--_r-sm); background: var(--_ground); }
.ilm .ilm-sent__icon { width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-meter { display: flex; align-items: center; gap: 10px; margin-top: 4px; }
.ilm .ilm-meter__bar { flex: 1; height: 6px; border-radius: 999px; background: var(--_line); overflow: hidden; }
.ilm .ilm-meter__bar > span { display: block; height: 100%; width: 0; border-radius: 999px; background: var(--_bad); transition: width .2s, background-color .2s; }
.ilm .ilm-meter[data-score="2"] .ilm-meter__bar > span { background: var(--_warn); }
.ilm .ilm-meter[data-score="3"] .ilm-meter__bar > span,
.ilm .ilm-meter[data-score="4"] .ilm-meter__bar > span { background: var(--_ok); }
.ilm .ilm-meter__label { font-size: var(--ilm-fs-sm, 13px); font-weight: 600; min-width: 80px; text-align: right; }
.ilm .ilm-match.is-ok { color: var(--_ok); }
.ilm .ilm-match.is-bad { color: var(--_bad); }

/* Mode clair / sombre et langue (1.3) ------------------------------------ */
.ilm, .ilm-floating, .ilm-lang, .ilm-theme-btn, .ilm-theme-switch, .ilm-theme-seg {
	transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}
html[data-ilm-theme="dark"] .ilm .ilm-card,
html[data-ilm-theme="dark"] .ilm-test,
html[data-ilm-theme="dark"] .ilm-login,
html[data-ilm-theme="dark"] .ilm-lesson__quiz { box-shadow: none; }
/* La carte « mot du jour » et le panneau de connexion gardent un contour discret sur fond sombre. */
html[data-ilm-theme="dark"] .ilm-lesson__word,
html[data-ilm-theme="dark"] .ilm-login__side,
html[data-ilm-theme="dark"] .ilm .ilm-card--dark { box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }

/* Visibilité selon le thème (contrôle Elementor « Afficher en mode… »). */
html[data-ilm-theme="dark"] .ilm-theme-only-light,
html:not([data-ilm-theme="dark"]) .ilm-theme-only-dark { display: none !important; }
/* Dans l'éditeur Elementor, les éléments masqués restent visibles mais atténués. */
body.elementor-editor-active .ilm-theme-only-light,
body.elementor-editor-active .ilm-theme-only-dark,
body.elementor-editor-active .ilm-lang-only-fr,
body.elementor-editor-active .ilm-lang-only-en { display: revert !important; outline: 1px dashed rgba(28,86,148,.5); outline-offset: -1px; }

/* Sélecteur de langue */
.ilm-lang { --_c: var(--ilm-ink, #14213A); --_p: var(--ilm-primary, #1C5694); display: inline-flex; align-items: center; gap: 4px; font-family: var(--ilm-font-body, inherit); font-weight: 600; font-size: 14px; line-height: 1; }
.ilm-lang a { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 36px; padding: 0 10px; border-radius: 999px; color: var(--_c); text-decoration: none; }
.ilm-lang a:hover { color: var(--_p); }
.ilm-lang a[aria-current="true"] { color: var(--ilm-on-primary, #fff); background: var(--_p); }
.ilm-lang a:focus-visible { outline: 3px solid var(--ilm-secondary, #6FB0E0); outline-offset: 2px; }
.ilm-lang--pills { padding: 3px; border-radius: 999px; background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); }
.ilm-lang--text a { min-width: 0; padding: 0 4px; background: none !important; }
.ilm-lang--text a[aria-current="true"] { color: var(--_p); text-decoration: underline; text-underline-offset: 4px; }
.ilm-lang__sep { color: var(--ilm-muted, #56627A); }
.ilm-lang--dropdown { position: relative; }
.ilm-lang--dropdown summary { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 14px; border-radius: 999px; cursor: pointer; list-style: none; color: var(--_c); background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); }
.ilm-lang--dropdown summary::-webkit-details-marker { display: none; }
.ilm-lang--dropdown ul { position: absolute; top: calc(100% + 6px); right: 0; z-index: 50; min-width: 150px; margin: 0; padding: 6px; list-style: none; background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); border-radius: 12px; box-shadow: var(--ilm-shadow, 0 8px 24px rgba(0,0,0,.12)); }
.ilm-lang--dropdown ul a { justify-content: flex-start; width: 100%; border-radius: 8px; }

/* Bouton clair / sombre */
.ilm-theme-btn { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border-radius: 999px; cursor: pointer; color: var(--ilm-ink, #14213A); background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); }
.ilm-theme-btn:hover { color: var(--ilm-primary, #1C5694); }
.ilm-theme-btn:focus-visible, .ilm-theme-switch:focus-visible, .ilm-theme-seg button:focus-visible { outline: 3px solid var(--ilm-secondary, #6FB0E0); outline-offset: 2px; }
.ilm-theme-btn > span { display: inline-flex; transition: transform .3s ease, opacity .2s ease; }
.ilm-theme-btn__moon { position: absolute; }
html:not([data-ilm-theme="dark"]) .ilm-theme-btn__moon,
html[data-ilm-theme="dark"] .ilm-theme-btn__sun { opacity: 0; transform: rotate(-60deg) scale(.6); }

.ilm-theme-switch { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0; border: 0; background: none; cursor: pointer; color: var(--ilm-ink, #14213A); font: inherit; font-weight: 600; }
.ilm-theme-switch__track { position: relative; width: 52px; height: 30px; border-radius: 999px; background: var(--ilm-line, #DCE4EF); transition: background-color .2s; }
.ilm-theme-switch__thumb { position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #fff; color: #C7771A; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .2s; }
.ilm-theme-switch__thumb .ilm-icon:last-child { display: none; }
.ilm-theme-switch[aria-checked="true"] .ilm-theme-switch__track { background: var(--ilm-primary, #1C5694); }
.ilm-theme-switch[aria-checked="true"] .ilm-theme-switch__thumb { transform: translateX(22px); color: #123A66; }
.ilm-theme-switch[aria-checked="true"] .ilm-theme-switch__thumb .ilm-icon:first-child { display: none; }
.ilm-theme-switch[aria-checked="true"] .ilm-theme-switch__thumb .ilm-icon:last-child { display: block; }

.ilm-theme-seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: 999px; background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); }
.ilm-theme-seg button { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 12px; border: 0; border-radius: 999px; background: none; color: var(--ilm-muted, #56627A); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; }
.ilm-theme-seg button[aria-checked="true"] { background: var(--ilm-primary, #1C5694); color: var(--ilm-on-primary, #fff); }

/* Préférences (langue + thème) et version flottante */
.ilm-prefs { display: inline-flex; align-items: center; gap: 8px; }
.ilm-floating { position: fixed; bottom: 16px; z-index: 9990; padding: 6px; border-radius: 999px; background: var(--ilm-surface, #fff); border: 1px solid var(--ilm-line, #DCE4EF); box-shadow: var(--ilm-shadow, 0 8px 24px rgba(0,0,0,.12)); }
.ilm-floating--left { left: 16px; }
.ilm-floating--right { right: 16px; }
.ilm-floating .ilm-lang--pills, .ilm-floating .ilm-theme-btn { border: 0; background: transparent; }
@media print { .ilm-floating { display: none; } }
@media (prefers-reduced-motion: reduce) {
	.ilm-theme-btn > span, .ilm-theme-switch__thumb, .ilm, .ilm-floating { transition: none !important; }
}
/* Carte « accent » (message du formateur) : version adoucie sur fond sombre. */
html[data-ilm-theme="dark"] .ilm .ilm-card--accent {
	background: color-mix(in srgb, var(--_accent) 12%, var(--_surface));
	border: 1px solid color-mix(in srgb, var(--_accent) 45%, transparent);
	color: var(--_ink);
}
html[data-ilm-theme="dark"] .ilm .ilm-card--accent .ilm-label { color: var(--_accent); }
html[data-ilm-theme="dark"] .ilm .ilm-card--accent .ilm-text { color: var(--_ink); }

/* Paiement en ligne (1.4) ---------------------------------------------- */
.ilm-pay { display: flex; flex-direction: column; gap: 20px; padding: clamp(20px, 4vw, 40px); background: var(--_surface); border: 1px solid var(--_line); border-radius: calc(var(--_r) * 1.5); }
.ilm-pay__head { display: flex; flex-direction: column; gap: 6px; }
.ilm .ilm-alert--warn { background: var(--_warn-bg); color: var(--_warn-ink); }
.ilm-pay__form { gap: 24px; }
.ilm-pay__step { margin: 0; padding: 0; border: 0; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.ilm-pay__legend { display: flex; align-items: center; gap: 10px; padding: 0; margin-bottom: 4px; font-family: var(--ilm-font-heading, sans-serif); font-weight: var(--ilm-heading-weight, 700); font-size: var(--ilm-fs-lg, 18px); color: var(--_heading); }
.ilm-pay__num { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; background: var(--_primary); color: var(--_on-primary); }
.ilm-pay__items, .ilm-pay__methods { display: grid; gap: 10px; }
.ilm-pay__methods { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.ilm-pay__item, .ilm-pay__method { position: relative; display: flex; align-items: center; gap: 14px; min-height: 60px; padding: 12px 16px; border: 2px solid var(--_line); border-radius: var(--_r-sm); background: var(--_surface); cursor: pointer; transition: border-color .15s, background-color .15s; }
.ilm-pay__item:hover, .ilm-pay__method:hover { border-color: var(--_secondary); }
.ilm-pay__item input, .ilm-pay__method input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ilm-pay__item:has(input:checked), .ilm-pay__method:has(input:checked) { border-color: var(--_primary); background: color-mix(in srgb, var(--_primary) 7%, var(--_surface)); }
.ilm-pay__item:has(input:focus-visible), .ilm-pay__method:has(input:focus-visible) { outline: 3px solid var(--_secondary); outline-offset: 2px; }
.ilm-pay__item-label { flex: 1; font-weight: 600; }
.ilm-pay__item-label em { font-style: normal; font-size: var(--ilm-fs-sm, 13px); font-weight: 600; color: var(--_warn-ink); background: var(--_warn-bg); padding: 2px 8px; border-radius: 999px; margin-left: 6px; }
.ilm-pay__item-amount { white-space: nowrap; color: var(--_heading); }
.ilm-pay__item::before { content: ""; width: 18px; height: 18px; flex-shrink: 0; border-radius: 50%; border: 2px solid var(--_line); background: var(--_surface); }
.ilm-pay__item:has(input:checked)::before { border-color: var(--_primary); background: radial-gradient(circle, var(--_primary) 0 4px, var(--_surface) 5px); }
.ilm-pay__method-icon { width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px; display: flex; align-items: center; justify-content: center; color: var(--_ink); background: color-mix(in srgb, var(--_tone) 18%, var(--_surface)); box-shadow: inset 0 -3px 0 var(--_tone); }
.ilm-pay__method-icon img { max-width: 36px; max-height: 32px; object-fit: contain; }
.ilm-pay__method-text { display: flex; flex-direction: column; gap: 2px; line-height: 1.3; }
.ilm-pay__method-text span { font-size: var(--ilm-fs-sm, 13px); color: var(--_muted); }
.ilm-pay__method:has(input:checked)::after { content: ""; position: absolute; top: 10px; right: 10px; width: 10px; height: 10px; border-radius: 50%; background: var(--_primary); }
.ilm .ilm-field.is-required label::after { content: " *"; color: var(--_bad); }
.ilm-pay__secure { margin: 0; text-align: center; }
.ilm-pay__wait { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 28px 12px; text-align: center; }
.ilm-spinner { width: 40px; height: 40px; border-radius: 50%; border: 4px solid var(--_line); border-top-color: var(--_primary); animation: ilm-spin .9s linear infinite; }
.ilm-spinner--sm { display: inline-block; width: 14px; height: 14px; border-width: 2px; vertical-align: -2px; }
@keyframes ilm-spin { to { transform: rotate(360deg); } }

.ilm-receipt { align-items: flex-start; }
.ilm-receipt__icon { width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--_warn-bg); color: var(--_warn-ink); }
.ilm-receipt.is-success .ilm-receipt__icon { background: var(--_ok-bg); color: var(--_ok); }
.ilm-receipt.is-failed .ilm-receipt__icon, .ilm-receipt.is-cancelled .ilm-receipt__icon { background: var(--_bad-bg); color: var(--_bad); }
.ilm-receipt__message { padding: 14px 16px; border-radius: var(--_r-sm); background: var(--_ground); color: var(--_ink); }
.ilm-receipt__table { width: 100%; margin: 0; display: flex; flex-direction: column; border-top: 1px solid var(--_line); }
.ilm-receipt__table > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--_line); }
.ilm-receipt__table dt { color: var(--_muted); }
.ilm-receipt__table dd { margin: 0; text-align: right; }
@media (prefers-reduced-motion: reduce) { .ilm-spinner { animation-duration: 3s; } }
@media print {
	body * { visibility: hidden !important; }
	.ilm-receipt, .ilm-receipt * { visibility: visible !important; }
	.ilm-receipt { position: absolute; inset: 0 auto auto 0; width: 100%; border: 0; color: #000; background: #fff; }
	.ilm-receipt__actions, .ilm-floating { display: none !important; }
}

/* ==========================================================================
   1.4.1 — Pages de la refonte (modèles Elementor « ILM · … »)
   Les sections portent la classe « ilm-site » : polices reprises des réglages ILM.
   ========================================================================== */
body .ilm-site { font-family: var(--ilm-font-body); color: var(--ilm-ink); }
body .ilm-site .elementor-heading-title { font-family: var(--ilm-font-heading); }
body .ilm-site .elementor-widget-text-editor,
body .ilm-site .elementor-button,
body .ilm-site .elementor-widget .elementor-icon-list-text { font-family: var(--ilm-font-body); }
body .ilm-site .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
body .ilm-site .elementor-widget-text-editor p { margin-top: 0; }
body .ilm-site .elementor-button { transition: background-color .15s, color .15s, border-color .15s; }
body .ilm-site .elementor-image img { display: block; }

/* Logo : pastille claire sur fond sombre (pied de page, mode sombre). */
.ilm-logo--on-dark img { background: #FFFFFF; padding: 8px 12px; border-radius: 12px; box-sizing: content-box; }
[data-ilm-theme="dark"] .ilm-site .ilm-logo img { background: #FFFFFF; padding: 6px 10px; border-radius: 10px; box-sizing: content-box; }
@media (prefers-color-scheme: dark) {
	[data-ilm-theme="auto"] .ilm-site .ilm-logo img { background: #FFFFFF; padding: 6px 10px; border-radius: 10px; box-sizing: content-box; }
}

/* Menu mobile (widget HTML « ilm-mnav »). */
.ilm-mnav { position: relative; }
.ilm-mnav > summary { list-style: none; cursor: pointer; width: 44px; height: 44px; border-radius: 12px; display: flex; flex-direction: column;
	align-items: center; justify-content: center; gap: 5px; border: 1.5px solid var(--ilm-line); background: var(--ilm-surface); }
.ilm-mnav > summary::-webkit-details-marker { display: none; }
.ilm-mnav > summary span { display: block; width: 18px; height: 2px; border-radius: 2px; background: var(--ilm-ink); transition: transform .2s, opacity .2s; }
.ilm-mnav[open] > summary span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.ilm-mnav[open] > summary span:nth-child(2) { opacity: 0; }
.ilm-mnav[open] > summary span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.ilm-mnav > nav { position: absolute; right: 0; top: calc(100% + 10px); z-index: 50; min-width: 240px; padding: 8px;
	display: flex; flex-direction: column; background: var(--ilm-surface); border: 1px solid var(--ilm-line); border-radius: 16px;
	box-shadow: var(--ilm-shadow); }
.ilm-mnav > nav a { padding: 12px 14px; border-radius: 10px; color: var(--ilm-ink); text-decoration: none; font-family: var(--ilm-font-body); font-weight: 500; font-size: 15px; }
.ilm-mnav > nav a:hover, .ilm-mnav > nav a:focus-visible { background: color-mix(in srgb, var(--ilm-primary) 10%, var(--ilm-surface)); color: var(--ilm-primary); }

/* ==========================================================================
   1.5 — Espaces connectés : espace étudiant complet et tableau de bord de l'équipe
   Disposition « barre latérale » sans media query : le menu passe au-dessus du contenu
   dès que la place manque (téléphone, colonne étroite d'Elementor).
   ========================================================================== */
.ilm.ilm-portal { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; }
.ilm-portal__side {
	flex: 1 1 236px; container: ilmside / inline-size;
	position: sticky; top: 24px;
	display: flex; flex-direction: column; gap: 18px; padding: 20px;
	background: var(--_surface); border: 1px solid var(--_line); border-radius: var(--_r);
}
.ilm-portal__main { flex: 999 1 0; min-width: min(100%, 62%); display: flex; flex-direction: column; gap: 20px; container: ilmmain / inline-size; }
.ilm-portal__who { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ilm-portal__avatar {
	flex: none; width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
	background: var(--_primary); color: var(--_on-primary); font-weight: 700; letter-spacing: .5px;
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
}
.ilm-portal__whotext { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.ilm-portal__whotext strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--_ink); }
.ilm-portal__whotext span { font-size: var(--ilm-fs-sm, 13px); color: var(--_muted); }
.ilm-portal__nav { display: flex; flex-direction: column; gap: 4px; }
.ilm .ilm-portal__link {
	display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--_r-sm);
	color: var(--_ink); text-decoration: none; font-weight: 500; white-space: nowrap;
}
.ilm .ilm-portal__link:hover { background: color-mix(in srgb, var(--_primary) 9%, var(--_surface)); color: var(--_primary); }
.ilm .ilm-portal__link.is-active { background: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-portal__link:focus-visible { outline: 3px solid color-mix(in srgb, var(--_primary) 45%, transparent); outline-offset: 2px; }
.ilm-portal__count {
	margin-left: auto; min-width: 22px; padding: 1px 7px; border-radius: 999px; font-style: normal; text-align: center;
	font-size: 12px; font-weight: 700; background: var(--_accent); color: var(--_on-accent);
}
.ilm-portal__help {
	display: flex; flex-direction: column; gap: 8px; padding: 16px; border-radius: var(--_r-sm);
	background: color-mix(in srgb, var(--_primary) 8%, var(--_surface)); font-size: var(--ilm-fs-sm, 14px); color: var(--_muted);
}
.ilm-portal__help strong { color: var(--_ink); }
.ilm .ilm-portal__help a:not(.ilm-btn) { color: var(--_link); text-decoration: none; }
.ilm .ilm-portal__help a:not(.ilm-btn):hover { text-decoration: underline; }
.ilm .ilm-portal__logout { display: inline-flex; align-items: center; gap: 8px; color: var(--_muted); text-decoration: none; font-size: var(--ilm-fs-sm, 14px); }
.ilm .ilm-portal__logout:hover { color: var(--_bad); }

/* Menu au-dessus du contenu : une ligne qui défile horizontalement. */
@container ilmside (min-width: 290px) {
	.ilm-portal__nav { flex-direction: row; overflow-x: auto; scrollbar-width: thin; margin: 0 -6px; padding: 0 6px 4px; }
	.ilm-portal__help { display: none; }
	.ilm-portal__logout { align-self: flex-start; }
}
@supports (container-type: inline-size) {
	.ilm-portal__side { position: static; }
	@media (min-width: 900px) { .ilm-portal__side { position: sticky; } }
}

.ilm-portal__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.ilm .ilm-portal__head .ilm-title { margin: 2px 0 0; }
.ilm-portal__headright { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

.ilm-portal__cols { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.ilm-portal__cols--even { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ilm-portal__colside { display: flex; flex-direction: column; gap: 20px; }
@container ilmmain (max-width: 760px) {
	.ilm-portal__cols, .ilm-portal__cols--even { grid-template-columns: minmax(0, 1fr); }
}
.ilm .ilm-portal__num { font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-weight: 800; font-size: 48px; line-height: 1; color: var(--_accent); }
.ilm .ilm-portal__num--ink { color: var(--_heading); }

.ilm .ilm-alert--info { background: color-mix(in srgb, var(--_primary) 10%, var(--_surface)); color: var(--_ink); }
.ilm .ilm-alert--success { background: var(--_ok-bg); color: var(--_ok); }
.ilm .ilm-badge--info { background: color-mix(in srgb, var(--_primary) 12%, var(--_surface)); color: var(--_primary); }
.ilm .ilm-badge--mute { background: var(--_ground); color: var(--_muted); }
.ilm .ilm-btn--sm { min-height: 34px; padding: 0 12px; font-size: 13px; gap: 6px; }
.ilm .ilm-nowrap { white-space: nowrap; }
.ilm .screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap; }

/* Chiffres clés */
.ilm-kpis2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; }
.ilm-kpi2 { display: flex; flex-direction: column; gap: 4px; padding: 18px 20px; border-radius: var(--_r); background: var(--_surface); border: 1px solid var(--_line); min-width: 0; }
.ilm-kpi2__label { font-size: var(--ilm-fs-sm, 13px); font-weight: 600; color: var(--_muted); }
.ilm-kpi2__value { font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-weight: 800; font-size: clamp(22px, 2.4vw, 30px); line-height: 1.15; color: var(--_heading); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ilm .ilm-kpi2__hint { font-size: var(--ilm-fs-sm, 13px); color: var(--_muted); text-decoration: none; }
.ilm a.ilm-kpi2__hint { color: var(--_link); }
.ilm-kpi2--deep { background: var(--_deep); border-color: transparent; }
.ilm-kpi2--deep .ilm-kpi2__label, .ilm-kpi2--deep .ilm-kpi2__hint { color: rgba(255,255,255,.75); }
.ilm-kpi2--deep .ilm-kpi2__value { color: var(--_accent); }
.ilm-kpi2--accent { background: var(--_accent); border-color: transparent; }
.ilm-kpi2--accent .ilm-kpi2__label, .ilm-kpi2--accent .ilm-kpi2__value, .ilm .ilm-kpi2--accent .ilm-kpi2__hint { color: var(--_on-accent); }

/* Listes d'actions */
.ilm .ilm-portal__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ilm-portal__item { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 0; border-top: 1px solid var(--_line); }
.ilm-portal__item:first-child { border-top: 0; padding-top: 4px; }
.ilm-portal__itemmain { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 220px; }
.ilm-portal__itemmain strong { color: var(--_ink); overflow-wrap: anywhere; }
.ilm-portal__itemact { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.ilm-portal__inline { display: flex; gap: 6px; align-items: center; margin: 0; }
.ilm .ilm-portal__inline select, .ilm .ilm-portal__filters input[type="search"] {
	min-height: 34px; padding: 0 10px; border-radius: var(--_r-sm); border: 1px solid var(--_line);
	background: var(--_surface); color: var(--_ink); font: inherit; font-size: 14px;
}
.ilm .ilm-portal__filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 0; }
.ilm .ilm-portal__filters input[type="search"] { flex: 1 1 220px; min-height: 44px; padding: 0 14px; }
.ilm-portal__chips { display: flex; gap: 6px; flex-wrap: wrap; flex-basis: 100%; }
.ilm .ilm-chip {
	padding: 7px 14px; border-radius: 999px; border: 1px solid var(--_line); background: var(--_surface);
	color: var(--_ink); text-decoration: none; font-size: 14px; font-weight: 500;
}
.ilm .ilm-chip:hover { border-color: var(--_primary); color: var(--_primary); }
.ilm .ilm-chip.is-active { background: var(--_primary); border-color: var(--_primary); color: var(--_on-primary); }
.ilm-portal__pager { display: flex; justify-content: center; align-items: center; gap: 12px; padding-top: 8px; }

/* Tableaux : en cartes quand la colonne est étroite */
.ilm-portal__tablewrap { overflow-x: auto; }
.ilm .ilm-portal__table { width: 100%; border-collapse: collapse; font-size: 15px; }
.ilm .ilm-portal__table th { text-align: left; font-size: 12px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; color: var(--_muted); padding: 0 10px 10px; border: 0; background: none; }
.ilm .ilm-portal__table td { padding: 12px 10px; border: 0; border-top: 1px solid var(--_line); vertical-align: middle; background: none; color: var(--_ink); }
.ilm-portal__rowact { white-space: nowrap; text-align: right; }
.ilm-portal__rowact .ilm-btn + .ilm-btn { margin-left: 6px; }
@container ilmmain (max-width: 620px) {
	.ilm .ilm-portal__table thead { display: none; }
	.ilm .ilm-portal__table, .ilm .ilm-portal__table tbody, .ilm .ilm-portal__table tr, .ilm .ilm-portal__table td { display: block; width: 100%; }
	.ilm .ilm-portal__table tr { padding: 12px 0; border-top: 1px solid var(--_line); }
	.ilm .ilm-portal__table tr:first-child { border-top: 0; }
	.ilm .ilm-portal__table td { border: 0; padding: 3px 0; display: flex; justify-content: space-between; gap: 12px; text-align: right; }
	.ilm .ilm-portal__table td[data-label]::before { content: attr(data-label); color: var(--_muted); font-size: 13px; text-align: left; }
	.ilm .ilm-portal__table td:first-child { display: block; text-align: left; }
	.ilm .ilm-portal__table td:first-child::before { display: none; }
	.ilm-portal__rowact { text-align: left; justify-content: flex-start !important; padding-top: 8px !important; }
}

/* Mini-graphique en barres */
.ilm-spark { display: flex; align-items: flex-end; gap: 3px; height: 140px; padding-top: 8px; border-bottom: 1px solid var(--_line); }
.ilm-spark__bar { flex: 1 1 0; height: var(--h); min-height: 0; background: var(--_primary); border-radius: 4px 4px 0 0; transition: background .15s; }
.ilm-spark__bar:hover { background: var(--_accent); }

/* Formulaires du profil */
.ilm.ilm-portal .ilm-field input[type="tel"], .ilm.ilm-portal .ilm-field input[type="email"], .ilm.ilm-portal .ilm-field input[type="password"], .ilm.ilm-portal .ilm-field input[type="text"] { width: 100%; }
.ilm.ilm-portal .ilm-form .ilm-field { margin: 0; }
.ilm.ilm-portal .ilm-form { gap: 14px; }
@container ilmmain (max-width: 520px) { .ilm.ilm-portal .ilm-grid-2 { grid-template-columns: minmax(0, 1fr); } }
@media print { .ilm-portal__side { display: none; } }
.ilm .ilm-badge { white-space: nowrap; display: inline-block; }
.ilm-kpis2 { container-type: inline-size; }
/* 1.5 — ajustements : menu vertical sur plusieurs lignes, chiffres clés en grille régulière. */
.ilm-portal__side { flex-basis: 250px; }
.ilm .ilm-portal__link { white-space: normal; line-height: 1.3; }
@container ilmside (min-width: 290px) { .ilm .ilm-portal__link { white-space: nowrap; } }
.ilm-kpis2 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@container (max-width: 640px) { .ilm-kpis2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container (max-width: 360px) { .ilm-kpis2 { grid-template-columns: minmax(0, 1fr); } }
.ilm-kpi2 { container-type: inline-size; }
.ilm-kpi2__value { white-space: nowrap; overflow-wrap: normal; font-size: clamp(18px, 12cqi, 30px); }

/* 1.5.4 — Galerie photos (widget Elementor « Galerie d'images » avec la classe ilm-gallery) :
   vignettes régulières, coins arrondis, léger zoom au survol. */
.ilm-gallery .gallery { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ilm-gallery-gap, 14px); margin: 0 !important; }
@media (max-width: 1024px) { .ilm-gallery .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 767px) { .ilm-gallery .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); --ilm-gallery-gap: 8px; } }
.ilm-gallery .gallery > br { display: none; }
.ilm-gallery .gallery-item { width: auto !important; max-width: none !important; margin: 0 !important; padding: 0 !important; float: none !important; overflow: hidden; border-radius: 16px; }
.ilm-gallery .gallery-icon { margin: 0; }
.ilm-gallery .gallery-item img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; display: block; border-radius: 16px; transition: transform .35s ease; }
.ilm-gallery .gallery-item a:hover img, .ilm-gallery .gallery-item a:focus-visible img { transform: scale(1.04); }
.ilm-gallery .gallery-item a:focus-visible { outline: 3px solid var(--ilm-primary, #1C5694); outline-offset: 3px; display: block; border-radius: 16px; }
@media (prefers-reduced-motion: reduce) { .ilm-gallery .gallery-item img { transition: none; } }

/* ==========================================================================
   1.6 — Inscription en ligne et gestion des étudiants sur le site
   ========================================================================== */
.ilm .ilm-field select, .ilm .ilm-field textarea {
	width: 100%; min-height: 48px; padding: 10px 14px; font: inherit; color: var(--_ink);
	background: var(--_surface); border: 1.5px solid var(--_line); border-radius: var(--_r-sm);
}
.ilm .ilm-field textarea { min-height: 96px; resize: vertical; line-height: 1.5; }
.ilm .ilm-field select:focus, .ilm .ilm-field textarea:focus { border-color: var(--_primary); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--_secondary) 40%, transparent); }
.ilm .ilm-field.is-required label::after { content: " *"; color: var(--_bad); }
.ilm .ilm-check { align-items: flex-start; }
.ilm .ilm-check input { flex: none; margin-top: 2px; }

.ilm.ilm-enrol { display: flex; flex-direction: column; gap: 20px; padding: clamp(20px, 4vw, 40px); background: var(--_surface); border: 1px solid var(--_line); border-radius: calc(var(--_r) * 1.5); }
.ilm-enrol__head { display: flex; flex-direction: column; gap: 8px; }
.ilm .ilm-enrol__head .ilm-title { margin: 0; }
.ilm-enrol__form { display: flex; flex-direction: column; gap: 26px; }
.ilm-enrol__step { margin: 0; padding: 0; border: 0; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.ilm-enrol__step > legend { display: flex; align-items: center; gap: 10px; padding: 0; margin-bottom: 6px; font-family: var(--ilm-font-heading, sans-serif); font-weight: var(--ilm-heading-weight, 700); font-size: var(--ilm-fs-lg, 18px); color: var(--_heading); }
.ilm-enrol__trap { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ilm-enrol__note { text-align: center; }
.ilm-enrol .ilm-receipt { border: 0; padding: 0; background: none; }
@container (max-width: 560px) { .ilm-enrol .ilm-grid-2 { grid-template-columns: minmax(0, 1fr); } }
.ilm.ilm-enrol { container-type: inline-size; }

.ilm-enrol-row { flex-wrap: wrap; }
.ilm-enrol-row__more { flex-basis: 100%; border-top: 1px dashed var(--_line); padding-top: 10px; }
.ilm-enrol-row__more > summary { cursor: pointer; color: var(--_link); font-weight: 600; font-size: 14px; }
.ilm-enrol-row__dl { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px 20px; margin: 14px 0; }
.ilm-enrol-row__dl div { display: flex; flex-direction: column; gap: 2px; }
.ilm-enrol-row__dl dt { font-size: 12px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--_muted); }
.ilm-enrol-row__dl dd { margin: 0; color: var(--_ink); white-space: pre-line; }
.ilm-enrol-row__actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.ilm-enrol-row__validate { display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 14px; border-radius: var(--_r-sm); background: color-mix(in srgb, var(--_primary) 7%, var(--_surface)); }
.ilm-portal__item strong .ilm-badge { margin-left: 6px; vertical-align: middle; font-size: 12px; }
.ilm .ilm-portal__flash .ilm-btn { margin-top: 10px; }
.ilm .ilm-portal__flash code { background: color-mix(in srgb, var(--_surface) 70%, transparent); padding: 1px 6px; border-radius: 6px; font-size: 15px; }
.ilm .ilm-back-link { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; font-weight: 600; font-size: 14px; }
.ilm .ilm-btn[disabled] { opacity: .55; }
.ilm.ilm-portal .ilm-field, .ilm.ilm-enrol .ilm-field { margin: 0; }
.ilm.ilm-enrol .ilm-grid-2, .ilm.ilm-portal .ilm-form .ilm-grid-2 { gap: 14px 16px; }

/* ==========================================================================
   1.7 — Programme des cours et nouvel espace étudiant
   ========================================================================== */

/* Séances (accueil, espace étudiant, aperçu équipe) ------------------------ */
.ilm.ilm-sched { display: flex; flex-direction: column; gap: 18px; container-type: inline-size; }
.ilm .ilm-sched__empty { margin: 0; padding: 22px; border: 1.5px dashed var(--_line); border-radius: var(--_r); color: var(--_muted); text-align: center; }
.ilm-sched__filters { display: flex; flex-wrap: wrap; gap: 8px; }
.ilm-sched__filters label, .ilm-seg label, .ilm-daypick label { position: relative; cursor: pointer; }
.ilm-sched__filters input, .ilm-seg input, .ilm-daypick input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ilm-sched__filters span, .ilm-seg span {
	display: inline-flex; align-items: center; min-height: 38px; padding: 0 16px; border-radius: 999px;
	border: 1.5px solid var(--_line); background: var(--_surface); color: var(--_ink); font-weight: 600; font-size: 14px; transition: background .15s, border-color .15s, color .15s;
}
.ilm-sched__filters input:checked + span, .ilm-seg input:checked + span { background: var(--_primary); border-color: var(--_primary); color: var(--_on-primary); }
.ilm-sched__filters input:focus-visible + span, .ilm-seg input:focus-visible + span, .ilm-daypick input:focus-visible + span { outline: 3px solid color-mix(in srgb, var(--_primary) 45%, transparent); outline-offset: 2px; }
.ilm-sched__days { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 16px; align-items: start; }
.ilm-sched__day { display: flex; flex-direction: column; gap: 10px; padding: 18px; background: var(--_surface); border: 1px solid var(--_line); border-radius: var(--_r); min-width: 0; }
.ilm-sched__day.is-today { border-color: var(--_primary); box-shadow: inset 0 3px 0 var(--_primary); }
.ilm .ilm-sched__dayname { margin: 0; display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-family: var(--ilm-font-heading, sans-serif); font-size: 17px; font-weight: 700; color: var(--_heading); }
.ilm .ilm-sched__dayname span { font-family: var(--ilm-font-body, sans-serif); font-size: 13px; font-weight: 500; color: var(--_muted); }
.ilm .ilm-sched__day.is-today .ilm-sched__dayname { color: var(--_primary); }
.ilm .ilm-sched__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ilm-sess { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px 10px 14px; border-radius: var(--_r-sm); background: color-mix(in srgb, var(--_primary) 6%, var(--_surface)); border-left: 4px solid var(--_primary); min-width: 0; }
.ilm-sess--atelier { border-left-color: var(--_secondary); }
.ilm-sess--club { border-left-color: var(--_accent); background: color-mix(in srgb, var(--_accent) 12%, var(--_surface)); }
.ilm-sess--examen { border-left-color: var(--_warn); background: var(--_warn-bg); }
.ilm-sess--evenement { border-left-color: var(--_ok); background: var(--_ok-bg); }
.ilm-sess__time { font-size: 13px; font-weight: 700; color: var(--_primary); font-variant-numeric: tabular-nums; }
.ilm-sess--examen .ilm-sess__time { color: var(--_warn-ink); }
.ilm-sess--evenement .ilm-sess__time { color: var(--_ok); }
.ilm-sess__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ilm .ilm-sess__title { color: var(--_ink); font-size: 15px; line-height: 1.35; overflow-wrap: anywhere; }
.ilm-sess__meta { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 13px; color: var(--_muted); }
.ilm-sess__kind { font-style: normal; font-weight: 700; color: var(--_ink); }
.ilm-sess__note { font-size: 13px; color: var(--_ink); margin-top: 4px; }

/* Programme : écran de l'équipe ------------------------------------------ */
.ilm-sadm-intro { flex-direction: row !important; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; }
.ilm-sadm-intro > div { flex: 1 1 320px; }
.ilm-sadm-week { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; align-items: start; }
.ilm-sadm-week__day { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.ilm .ilm-sadm-week__name { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; color: var(--_heading); }
.ilm .ilm-sadm-week__name span { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--_ground); color: var(--_muted); font-size: 12px; }
.ilm-sadm-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.ilm-sadm { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; border: 1px solid var(--_line); border-left: 4px solid var(--_primary); border-radius: var(--_r-sm); background: var(--_surface); min-width: 0; }
.ilm-sadm.ilm-sess--club { border-left-color: var(--_accent); }
.ilm-sadm.ilm-sess--examen { border-left-color: var(--_warn); }
.ilm-sadm.ilm-sess--evenement { border-left-color: var(--_ok); }
.ilm-sadm.ilm-sess--atelier { border-left-color: var(--_secondary); }
.ilm-sadm.is-draft { border-style: dashed; opacity: .8; }
.ilm-sadm__top { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
.ilm-sadm__time { font-size: 13px; font-weight: 700; color: var(--_primary); }
.ilm-sadm__flags { display: flex; gap: 4px; flex-wrap: wrap; }
.ilm-sadm__flags .ilm-badge { font-size: 11px; padding: 2px 8px; }
.ilm .ilm-sadm__title { color: var(--_ink); overflow-wrap: anywhere; }
.ilm-sadm__actions { display: flex; gap: 4px 10px; align-items: center; flex-wrap: wrap; margin-top: 4px; }
.ilm .ilm-btn--danger { color: var(--_bad); }
.ilm-seg { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.ilm-daypick { display: flex; flex-wrap: wrap; gap: 8px; }
.ilm-daypick span { display: inline-grid; place-items: center; width: 52px; height: 44px; border-radius: var(--_r-sm); border: 1.5px solid var(--_line); background: var(--_surface); font-weight: 600; font-size: 14px; }
.ilm-daypick input:checked + span { background: var(--_primary); border-color: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-field__label { font-weight: 600; font-size: var(--ilm-fs-sm, 14px); }
.ilm-sched-form .ilm-when-once { display: none; }
.ilm-sched-form:has(input[name="repeat"][value="once"]:checked) .ilm-when-once { display: block; }
.ilm-sched-form:has(input[name="repeat"][value="once"]:checked) .ilm-when-weekly { display: none; }
.ilm .ilm-field input[type="date"], .ilm .ilm-field input[type="time"] { width: 100%; }
.ilm-flip { display: inline-flex; transform: scaleX(-1); }

/* Nouvel espace étudiant --------------------------------------------------- */
.ilm.ilm-me { display: flex; flex-direction: column; gap: 22px; }
.ilm-me__hero {
	position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 24px;
	padding: clamp(22px, 3.5vw, 36px); border-radius: calc(var(--_r) * 1.6);
	background: radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--_primary) 70%, var(--_deep)) 0%, var(--_deep) 55%);
	color: #fff;
}
.ilm-me__hero::after { content: ""; position: absolute; right: -60px; bottom: -80px; width: 260px; height: 260px; border-radius: 50%; border: 36px solid color-mix(in srgb, var(--_accent) 18%, transparent); pointer-events: none; }
.ilm-me__herotop { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; flex-wrap: wrap; position: relative; z-index: 1; }
.ilm-me__id { display: flex; align-items: center; gap: 18px; min-width: 0; }
.ilm-me__avatar { flex: none; display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--_accent); color: var(--_on-accent); font-family: var(--ilm-font-heading, sans-serif); font-weight: 800; font-size: 22px; }
.ilm-me__hello { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ilm-me__date { font-size: 14px; color: rgba(255,255,255,.72); }
.ilm .ilm-me__title { margin: 0; font-family: var(--ilm-font-heading, sans-serif); font-weight: 800; font-size: clamp(26px, 4vw, 38px); line-height: 1.1; color: #fff; letter-spacing: -0.01em; }
.ilm-me__chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.ilm-me__chip { display: inline-flex; align-items: center; min-height: 28px; padding: 0 12px; border-radius: 999px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); font-size: 13px; font-weight: 600; color: #fff; }
.ilm-me__heroside { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.ilm-me__streak { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 999px; background: var(--_accent); color: var(--_on-accent); font-size: 14px; font-weight: 600; white-space: nowrap; }
.ilm-me__streak strong { font-size: 17px; }
.ilm .ilm-me__logout { display: inline-flex; align-items: center; gap: 6px; color: rgba(255,255,255,.8); font-size: 14px; text-decoration: none; }
.ilm .ilm-me__logout:hover { color: #fff; text-decoration: underline; }
.ilm-me__next { position: relative; z-index: 1; display: flex; align-items: center; gap: 16px; padding: 14px 16px; border-radius: var(--_r); background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.16); flex-wrap: wrap; }
.ilm-me__nexticon { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: rgba(255,255,255,.14); color: var(--_accent); }
.ilm-me__nexttext { display: flex; flex-direction: column; gap: 2px; flex: 1 1 240px; min-width: 0; }
.ilm-me__nextlabel { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--_accent); }
.ilm-me__nexttext strong { font-size: 17px; color: #fff; }
.ilm-me__nexttext span:last-child { font-size: 14px; color: rgba(255,255,255,.78); }
.ilm-me__nexttext strong + span { overflow-wrap: anywhere; }

.ilm-me__tabs { position: sticky; top: 0; z-index: 5; display: flex; gap: 6px; padding: 6px; overflow-x: auto; scrollbar-width: none; background: var(--_surface); border: 1px solid var(--_line); border-radius: 999px; box-shadow: 0 6px 18px -12px rgba(18,58,102,.35); }
.ilm-me__tabs::-webkit-scrollbar { display: none; }
.admin-bar .ilm-me__tabs { top: 32px; }
.ilm .ilm-me__tab { flex: none; display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 16px; border-radius: 999px; color: var(--_ink); font-weight: 600; font-size: 15px; text-decoration: none; white-space: nowrap; transition: background .15s, color .15s; }
.ilm .ilm-me__tab:hover { background: var(--_ground); color: var(--_primary); }
.ilm .ilm-me__tab.is-active { background: var(--_primary); color: var(--_on-primary); }
.ilm .ilm-me__tab:focus-visible { outline: 3px solid color-mix(in srgb, var(--_primary) 45%, transparent); outline-offset: 2px; }
.ilm-me__count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--_accent); color: var(--_on-accent); font-style: normal; font-size: 12px; font-weight: 700; }

.ilm-me__main { display: flex; flex-direction: column; gap: 20px; container: ilmmain / inline-size; min-width: 0; }
.ilm .ilm-me__pagetitle { margin: 4px 0 0; font-family: var(--ilm-font-heading, sans-serif); font-weight: 700; font-size: var(--ilm-fs-xl, 25px); color: var(--_heading); }
.ilm-me__msg { display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px; border-radius: var(--_r); background: color-mix(in srgb, var(--_accent) 22%, var(--_surface)); border: 1px solid color-mix(in srgb, var(--_accent) 55%, var(--_surface)); }
.ilm-me__msgicon { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--_accent); color: var(--_on-accent); }
.ilm-me__msglabel { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--_ink); }
.ilm .ilm-me__msg p { margin: 2px 0 0; color: var(--_ink); font-size: 16px; }

.ilm-me__grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
.ilm-me__card { display: flex; flex-direction: column; gap: 14px; min-width: 0; padding: 22px; background: var(--_surface); border: 1px solid var(--_line); border-radius: calc(var(--_r) * 1.25); }
.ilm-me__card--week { grid-column: span 8; grid-row: span 2; }
.ilm-me__card--level { grid-column: span 4; }
.ilm-me__card--lesson { grid-column: span 4; background: var(--_deep); border-color: var(--_deep); color: #fff; }
.ilm-me__card--skills { grid-column: span 6; }
.ilm-me__card--pay { grid-column: span 6; }
.ilm-me__cardhead { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.ilm .ilm-me__cardhead h4 { margin: 0; display: flex; align-items: center; gap: 8px; font-family: var(--ilm-font-heading, sans-serif); font-size: 17px; font-weight: 700; color: var(--_heading); }
.ilm .ilm-me__cardhead h4 .ilm-icon { color: var(--_primary); }
.ilm .ilm-me__cardhead a, .ilm .ilm-me__more { font-size: 14px; font-weight: 600; text-decoration: none; color: var(--_link); }
.ilm .ilm-me__cardhead a:hover, .ilm .ilm-me__more:hover { text-decoration: underline; }
.ilm .ilm-me__more { margin-top: auto; align-self: flex-start; }
.ilm .ilm-me__card--lesson .ilm-me__cardhead h4, .ilm .ilm-me__card--lesson .ilm-me__cardhead h4 .ilm-icon { color: #fff; }
.ilm-me__empty { margin: 0; color: var(--_muted); }

.ilm-me__strip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.ilm-me__stripday { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 0 12px; border-radius: 12px; background: var(--_ground); }
.ilm-me__stripday em { font-style: normal; font-size: 12px; color: var(--_muted); text-transform: capitalize; }
.ilm-me__stripday strong { font-size: 18px; color: var(--_ink); }
.ilm-me__stripday.has-class::after { content: ""; position: absolute; bottom: 5px; width: 6px; height: 6px; border-radius: 50%; background: var(--_primary); }
.ilm-me__stripday.is-today { background: var(--_primary); }
.ilm-me__stripday.is-today em, .ilm-me__stripday.is-today strong { color: var(--_on-primary); }
.ilm-me__stripday.is-today.has-class::after { background: var(--_accent); }
.ilm .ilm-me__weeklist { gap: 8px; }
.ilm-me__weekday { margin-top: 6px; font-size: 13px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--_muted); }
.ilm-me__weekday:first-child { margin-top: 0; }

.ilm-me__levelbody { display: flex; align-items: center; gap: 18px; }
.ilm-me__levelbody > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ilm .ilm-me__levelname { font-family: var(--ilm-font-heading, sans-serif); font-size: 22px; line-height: 1.2; color: var(--_heading); }
.ilm-ring { --p: 0; flex: none; display: grid; place-items: center; width: 96px; height: 96px; border-radius: 50%; background: conic-gradient(var(--_primary) calc(var(--p) * 1%), var(--_ground) 0); }
.ilm-ring > span { display: grid; place-items: center; grid-auto-flow: column; align-items: baseline; width: 74px; height: 74px; border-radius: 50%; background: var(--_surface); }
.ilm-ring strong { font-family: var(--ilm-font-heading, sans-serif); font-size: 24px; color: var(--_heading); }
.ilm-ring em { font-style: normal; font-size: 13px; color: var(--_muted); margin-left: 1px; }
.ilm .ilm-me__levels { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; font-size: 12px; color: var(--_muted); }
.ilm-me__levels li { display: flex; flex-direction: column; gap: 6px; line-height: 1.25; }
.ilm-me__levels li span { height: 6px; border-radius: 999px; background: var(--_ground); }
.ilm-me__levels li.is-done span { background: var(--_primary); }
.ilm-me__levels li.is-current span { background: linear-gradient(90deg, var(--_accent) 50%, var(--_ground) 50%); }
.ilm-me__levels li.is-current { color: var(--_ink); font-weight: 700; }

.ilm .ilm-me__word { font-family: var(--ilm-font-heading, sans-serif); font-weight: 800; font-size: 34px; line-height: 1.1; color: #fff; overflow-wrap: anywhere; }
.ilm-me__phon { color: rgba(255,255,255,.75); margin-top: -8px; }
.ilm-me__card--lesson .ilm-btn { align-self: flex-start; margin-top: auto; }
.ilm .ilm-me__amount { font-family: var(--ilm-font-heading, sans-serif); font-size: 28px; line-height: 1.15; color: var(--_heading); }
.ilm .ilm-me__amount--ok { color: var(--_ok); font-size: 22px; }
.ilm-me__card--pay .ilm-btn { align-self: flex-start; }

.ilm-me__weeknav { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ilm-me__weeknav strong { display: flex; flex-direction: column; align-items: center; text-align: center; font-size: 18px; color: var(--_heading); }
.ilm-me__weeknav strong span { font-size: 13px; font-weight: 500; color: var(--_muted); }
.ilm-me__weeknav .ilm-btn { width: 44px; padding: 0; }
.ilm-me__tt { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; align-items: start; }
.ilm-me__ttday { display: flex; flex-direction: column; gap: 10px; padding: 14px; border-radius: var(--_r); background: var(--_ground); min-width: 0; }
.ilm-me__ttday.is-today { background: color-mix(in srgb, var(--_primary) 9%, var(--_surface)); box-shadow: inset 0 0 0 2px var(--_primary); }
.ilm .ilm-me__ttday h4 { margin: 0; display: flex; justify-content: space-between; align-items: baseline; font-size: 15px; font-weight: 700; color: var(--_heading); }
.ilm .ilm-me__ttday h4 em { font-style: normal; font-size: 22px; font-family: var(--ilm-font-heading, sans-serif); }
.ilm-me__ttday .ilm-sess { background: var(--_surface); }
.ilm-me__ttday.is-empty { opacity: .75; }

/* Sous-onglets existants dans le nouvel espace */
.ilm.ilm-me .ilm-field input[type="tel"], .ilm.ilm-me .ilm-field input[type="email"], .ilm.ilm-me .ilm-field input[type="password"], .ilm.ilm-me .ilm-field input[type="text"] { width: 100%; }
.ilm.ilm-me .ilm-form .ilm-field, .ilm.ilm-me .ilm-field { margin: 0; }
.ilm.ilm-me .ilm-form { gap: 14px; }
.ilm.ilm-me .ilm-form .ilm-grid-2 { gap: 14px 16px; }
.ilm.ilm-me .ilm-card { border-radius: calc(var(--_r) * 1.25); }
@container ilmmain (max-width: 520px) { .ilm.ilm-me .ilm-grid-2 { grid-template-columns: minmax(0, 1fr); } }

@container ilmmain (max-width: 980px) {
	.ilm-me__card--week { grid-column: 1 / -1; grid-row: auto; }
	.ilm-me__card--level, .ilm-me__card--lesson { grid-column: span 6; }
}
@container ilmmain (max-width: 640px) {
	.ilm-me__grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.ilm-me__card--week, .ilm-me__card--level, .ilm-me__card--lesson, .ilm-me__card--skills, .ilm-me__card--pay { grid-column: 1 / -1; }
	.ilm-me__card { padding: 18px; }
	.ilm-me__tt { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
	.ilm-me__avatar { width: 48px; height: 48px; font-size: 17px; }
	.ilm-me__id { gap: 12px; }
	.ilm-me__heroside { flex-direction: row; align-items: center; width: 100%; justify-content: space-between; flex-wrap: wrap; }
	.ilm-me__hero { gap: 18px; }
	.ilm-me__tabs { border-radius: 16px; margin: 0 -4px; }
	.ilm .ilm-me__tab { min-height: 40px; padding: 0 12px; font-size: 14px; }
	.ilm-me__next .ilm-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .ilm .ilm-me__tab { transition: none; } }
@media print { .ilm-me__tabs, .ilm-me__heroside { display: none; } }
.ilm-sadm__actions .ilm-btn--link { padding: 0 2px; min-height: 28px; }
/* 1.7 — colonne de droite du tableau de bord étudiant */
.ilm-me__grid { align-items: start; }
.ilm-me__card--week { grid-column: span 8; grid-row: auto; }
.ilm-me__aside { grid-column: span 4; display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.ilm-me__card--skills { grid-column: 1 / -1; }
.ilm-me__card--skills .ilm-bars { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 32px; }
.ilm-me__card--lesson .ilm-btn { margin-top: 4px; }
.ilm-ring > span { display: flex; align-items: baseline; justify-content: center; }
@container ilmmain (max-width: 980px) {
	.ilm-me__card--week, .ilm-me__aside { grid-column: 1 / -1; }
	.ilm-me__aside { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}
@container ilmmain (max-width: 640px) {
	.ilm-me__aside { grid-column: 1 / -1; display: flex; gap: 16px; }
	.ilm-me__card--skills .ilm-bars { grid-template-columns: minmax(0, 1fr); }
}
.ilm-me__ttday.is-past { opacity: .55; }

/* ======================================================================
   1.8 — Connexion (étudiants et équipe)
   ====================================================================== */
.ilm-auth-page, body.ilm-blank { margin: 0; }
.ilm.ilm-auth {
	--_vis: var(--_deep);
	--_panel: var(--_surface);
	--_field: var(--_ground);
	--_tint: color-mix(in srgb, var(--_primary) 12%, var(--_surface));
	--_ring: color-mix(in srgb, var(--_primary) 22%, transparent);
	position: relative;
	isolation: isolate;
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
	background: var(--_panel);
	color: var(--_ink);
}
.ilm.ilm-auth--full { min-height: 100vh; min-height: 100dvh; }
.ilm.ilm-auth--split { min-height: 680px; border-radius: calc(var(--_r) * 1.5); overflow: hidden; border: 1px solid var(--_line); box-shadow: 0 40px 90px -50px rgba(10, 30, 60, .45); }
.ilm.ilm-auth--card { grid-template-columns: 1fr; max-width: 520px; margin-inline: auto; border-radius: calc(var(--_r) * 1.5); border: 1px solid var(--_line); }

/* Équipe : interface sombre et accent jaune, toujours, pour la distinguer de l'espace étudiant. */
.ilm.ilm-auth--staff {
	--_vis: #060B15;
	--_panel: #0D1625;
	--_surface: #0D1625;
	--_field: #09111E;
	--_ground: #121E31;
	--_ink: #E7EDF7;
	--_muted: #97A8C2;
	--_line: #22314A;
	--_heading: #F5F8FC;
	--_primary: var(--ilm-accent, #F0DB18);
	--_hover: #FFE94A;
	--_on-primary: #0B1220;
	--_link: var(--ilm-accent, #F0DB18);
	--_tint: rgba(240, 219, 24, .1);
	--_ring: rgba(240, 219, 24, .22);
	--_bad-bg: rgba(229, 72, 77, .14);
	--_bad: #FF8A8E;
	--_ok-bg: rgba(46, 160, 103, .16);
	--_ok: #6FD6A0;
	color-scheme: dark;
}

/* Panneau de marque -------------------------------------------------- */
.ilm-auth__visual {
	position: relative;
	z-index: 0;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	gap: clamp(24px, 3.5vh, 40px);
	padding: clamp(28px, 4vw, 56px);
	color: #fff;
	background: var(--_vis) var(--_img, none) center / cover no-repeat;
}
.ilm-auth__visual::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	background: linear-gradient(162deg, var(--_vis) 0%, var(--_vis) 38%, var(--_primary) 140%);
	opacity: .9;
}
.ilm-auth--staff .ilm-auth__visual::before { background: linear-gradient(180deg, #060B15 0%, #0A1322 100%); opacity: .94; }
.ilm-auth__visual::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, .13) 1px, transparent 1.2px);
	background-size: 22px 22px;
	-webkit-mask-image: linear-gradient(180deg, #000 0%, transparent 62%);
	mask-image: linear-gradient(180deg, #000 0%, transparent 62%);
}
.ilm-auth--staff .ilm-auth__visual::after {
	background-image: linear-gradient(rgba(255, 255, 255, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .045) 1px, transparent 1px);
	background-size: 36px 36px;
	-webkit-mask-image: radial-gradient(ellipse at 30% 20%, #000 0%, transparent 70%);
	mask-image: radial-gradient(ellipse at 30% 20%, #000 0%, transparent 70%);
}
.ilm-auth__glow {
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background:
		radial-gradient(circle at 92% 96%, color-mix(in srgb, var(--ilm-accent, #F0DB18) 34%, transparent) 0, transparent 38%),
		radial-gradient(circle at 0% 0%, color-mix(in srgb, var(--ilm-secondary, #6FB0E0) 38%, transparent) 0, transparent 42%);
}
.ilm-auth--staff .ilm-auth__glow {
	background:
		radial-gradient(circle at 100% 100%, rgba(240, 219, 24, .16) 0, transparent 42%),
		radial-gradient(circle at 10% 0%, rgba(28, 86, 148, .45) 0, transparent 46%);
}
.ilm-auth__brand { display: inline-flex; align-self: flex-start; text-decoration: none; color: #fff; }
.ilm-auth__logo { display: block; height: 46px; width: auto; max-width: 170px; object-fit: contain; filter: brightness(0) invert(1); }
.ilm-auth__wordmark { font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-weight: 800; font-size: 24px; letter-spacing: -.01em; }
.ilm-auth__pitch { max-width: 560px; }
.ilm-auth__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 7px 14px;
	border-radius: 999px;
	border: 1px solid rgba(255, 255, 255, .22);
	background: rgba(255, 255, 255, .08);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .02em;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}
.ilm-auth__eyebrow .ilm-icon { color: var(--ilm-accent, #F0DB18); }
.ilm .ilm-auth__quote {
	margin: 20px 0 14px;
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
	font-weight: 800;
	font-size: clamp(36px, 3.7vw, 60px);
	line-height: 1.04;
	letter-spacing: -.025em;
	color: #fff;
	text-wrap: balance;
}
.ilm .ilm-auth__quote em { font-style: normal; color: var(--ilm-accent, #F0DB18); }
.ilm .ilm-auth__lead { margin: 0; max-width: 46ch; font-size: 17px; line-height: 1.6; color: rgba(255, 255, 255, .8); }
.ilm-auth__facts { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px 22px; font-size: 14px; font-weight: 500; color: rgba(255, 255, 255, .82); }
.ilm-auth__facts li { display: inline-flex; align-items: center; gap: 8px; }
.ilm-auth__facts .ilm-icon { color: var(--ilm-accent, #F0DB18); }

/* Aperçu étudiant : cartes flottantes */
.ilm-auth__stack { position: relative; flex: 1 1 auto; min-height: 250px; max-height: 300px; margin-top: auto; }
.ilm-auth__float {
	position: absolute;
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 18px 14px 14px;
	border-radius: 18px;
	background: rgba(255, 255, 255, .97);
	color: #14213A;
	box-shadow: 0 28px 50px -24px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .08);
	animation: ilm-auth-float 7s ease-in-out infinite;
}
.ilm-auth__float small { display: block; font-size: 11px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: #6A7891; }
.ilm-auth__float strong { display: block; font-size: 16px; font-weight: 700; color: #102A4C; line-height: 1.3; }
.ilm-auth__float em { display: block; font-style: normal; font-size: 13px; color: #56627A; }
.ilm-auth__float--next { top: 0; left: 0; min-width: 270px; }
.ilm-auth__float--level { top: 92px; right: 0; animation-delay: -2.2s; }
.ilm-auth__float--doc { top: 168px; left: 7%; animation-delay: -4.1s; }
.ilm-auth__float--streak {
	top: 14px;
	right: 6%;
	gap: 6px;
	padding: 9px 14px;
	border-radius: 999px;
	background: rgba(8, 20, 40, .55);
	border: 1px solid rgba(255, 255, 255, .18);
	color: #fff;
	font-size: 14px;
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	animation-delay: -1.2s;
}
.ilm-auth__float--streak strong { display: inline; color: #fff; font-size: 15px; }
.ilm-auth__float--streak .ilm-icon { color: #FFB238; }
.ilm-auth__floaticon { width: 42px; height: 42px; flex-shrink: 0; display: grid; place-items: center; border-radius: 12px; background: var(--ilm-primary, #1C5694); color: #fff; }
.ilm-auth__floaticon--doc { background: #D9412F; }
.ilm-auth__ring {
	position: relative;
	width: 54px;
	height: 54px;
	flex-shrink: 0;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: conic-gradient(var(--ilm-primary, #1C5694) calc(var(--p) * 1%), #E2E9F3 0);
}
.ilm-auth__ring::before { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: #fff; }
.ilm-auth__ring b { position: relative; font-size: 12px; font-weight: 800; color: #102A4C; }
@keyframes ilm-auth-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-9px); } }

/* Aperçu équipe : fenêtre de tableau de bord */
.ilm-auth__window {
	margin-top: auto;
	padding: 14px;
	border-radius: 18px;
	background: linear-gradient(180deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .025));
	border: 1px solid rgba(255, 255, 255, .1);
	box-shadow: 0 40px 80px -40px rgba(0, 0, 0, .8);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
.ilm-auth__winbar { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.ilm-auth__winbar i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255, 255, 255, .22); }
.ilm-auth__winbar i:first-child { background: #F0DB18; }
.ilm-auth__winbar span { margin-left: 8px; font-size: 12px; color: rgba(255, 255, 255, .6); }
.ilm-auth__wingrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.ilm-auth__tile { display: grid; gap: 8px; padding: 12px; border-radius: 12px; background: rgba(255, 255, 255, .045); border: 1px solid rgba(255, 255, 255, .07); font-size: 12px; color: rgba(255, 255, 255, .72); }
.ilm-auth__tile .ilm-icon { color: #F0DB18; }
.ilm-auth__tile b { display: block; height: 7px; border-radius: 4px; background: linear-gradient(90deg, #F0DB18 var(--w), rgba(255, 255, 255, .1) var(--w)); }
.ilm-auth__chart { display: flex; align-items: flex-end; gap: 6px; height: 86px; margin: 14px 2px 12px; }
.ilm-auth__chart span { flex: 1; height: var(--h); border-radius: 5px 5px 2px 2px; background: linear-gradient(0deg, rgba(240, 219, 24, .12), rgba(240, 219, 24, .65)); }
.ilm-auth__chart span:last-child { background: #F0DB18; }
.ilm-auth__rows { display: grid; gap: 8px; }
.ilm-auth__rows span { height: 9px; border-radius: 5px; background: rgba(255, 255, 255, .07); }
.ilm-auth__rows span:nth-child(2) { width: 78%; }
.ilm-auth__rows span:nth-child(3) { width: 56%; }

/* Formulaire ---------------------------------------------------------- */
.ilm-auth__panel {
	display: flex;
	flex-direction: column;
	min-width: 0;
	padding: clamp(20px, 3vw, 36px) clamp(20px, 5vw, 72px);
	background: var(--_panel);
	color: var(--_ink);
}
.ilm-auth--card .ilm-auth__panel { padding: clamp(24px, 5vw, 44px); border-radius: inherit; }
.ilm-auth__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ilm .ilm-auth__home { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: var(--_muted); text-decoration: none; }
.ilm .ilm-auth__home:hover { color: var(--_heading); }
.ilm-auth__switch { display: inline-flex; padding: 4px; gap: 2px; border-radius: 999px; background: var(--_field); border: 1px solid var(--_line); }
.ilm .ilm-auth__switch a { padding: 7px 16px; border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--_muted); text-decoration: none; transition: background-color .2s, color .2s; }
.ilm .ilm-auth__switch a:hover { color: var(--_heading); }
.ilm .ilm-auth__switch a.is-active { background: var(--_panel); color: var(--_heading); box-shadow: 0 1px 3px rgba(16, 42, 76, .14); }
.ilm-auth--staff .ilm-auth__switch a.is-active { background: var(--_primary); color: var(--_on-primary); box-shadow: none; }
.ilm-auth__box {
	display: flex;
	flex-direction: column;
	gap: 20px;
	width: 100%;
	max-width: 420px;
	margin: auto;
	padding-block: clamp(32px, 6vh, 64px);
}
.ilm.ilm-auth .ilm-login { border: 0; border-radius: 0; background: transparent; display: flex; }
.ilm-auth__badge {
	width: 54px;
	height: 54px;
	display: grid;
	place-items: center;
	border-radius: 16px;
	background: var(--_tint);
	color: var(--_primary);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--_primary) 22%, transparent);
}
.ilm-auth--student .ilm-auth__badge { color: var(--_link); }
.ilm .ilm-auth__title {
	margin: 0;
	font-family: var(--ilm-font-heading, "Raleway", sans-serif);
	font-weight: 800;
	font-size: clamp(28px, 2.5vw, 36px);
	line-height: 1.12;
	letter-spacing: -.02em;
	color: var(--_heading);
	text-wrap: balance;
}
.ilm .ilm-auth__text { margin: 8px 0 0; color: var(--_muted); font-size: 16px; }
.ilm-auth__form { display: flex; flex-direction: column; gap: 18px; }
.ilm.ilm-auth .ilm-field label { font-size: 14px; font-weight: 600; color: var(--_heading); }
.ilm.ilm-auth .ilm-field input {
	width: 100%;
	height: 54px;
	padding: 0 16px;
	border: 1.5px solid var(--_line);
	border-radius: 14px;
	background: var(--_field);
	color: var(--_ink);
	font: inherit;
	font-size: 16px;
	transition: border-color .15s, box-shadow .15s, background-color .15s;
}
.ilm.ilm-auth .ilm-input-icon input { padding-left: 46px; }
.ilm.ilm-auth .ilm-input-icon input[type="password"], .ilm.ilm-auth .ilm-input-icon input[name="ilm_pass"] { padding-right: 52px; }
.ilm.ilm-auth .ilm-field input:hover { border-color: color-mix(in srgb, var(--_primary) 45%, var(--_line)); }
.ilm.ilm-auth .ilm-field input:focus { outline: none; border-color: var(--_primary); background: var(--_panel); box-shadow: 0 0 0 4px var(--_ring); }
.ilm.ilm-auth .ilm-input-icon > .ilm-icon { left: 16px; }
.ilm.ilm-auth .ilm-input-icon:focus-within > .ilm-icon { color: var(--_primary); }
.ilm.ilm-auth .ilm-input-toggle { color: var(--_muted); }
.ilm-auth__labelrow { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.ilm .ilm-auth__labelrow a { font-size: 14px; font-weight: 600; color: var(--_link); text-decoration: none; }
.ilm .ilm-auth__labelrow a:hover { text-decoration: underline; }
.ilm .ilm-auth__caps { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--_warn); }
.ilm-auth--staff .ilm-auth__caps { color: #FFC56B; }
.ilm .ilm-auth__remember { font-size: 15px; color: var(--_muted); }
.ilm .ilm-auth__submit { position: relative; gap: 10px; height: 56px; border-radius: 14px; font-weight: 700; box-shadow: 0 14px 30px -14px color-mix(in srgb, var(--_primary) 80%, transparent); transition: transform .15s, box-shadow .15s, background-color .15s; }
.ilm .ilm-auth__submit:hover { transform: translateY(-1px); }
.ilm .ilm-auth__submit .ilm-icon { transition: transform .2s; }
.ilm .ilm-auth__submit:hover .ilm-icon { transform: translateX(3px); }
.ilm .ilm-auth__submit .ilm-spinner { display: none; border-color: currentColor; border-top-color: transparent; }
.ilm .ilm-auth__submit.is-loading { pointer-events: none; opacity: .85; }
.ilm .ilm-auth__submit.is-loading .ilm-spinner { display: inline-block; }
.ilm .ilm-auth__submit.is-loading .ilm-icon { display: none; }
.ilm-auth__or { display: flex; align-items: center; gap: 14px; font-size: 13px; font-weight: 600; color: var(--_muted); }
.ilm-auth__or::before, .ilm-auth__or::after { content: ""; flex: 1; height: 1px; background: var(--_line); }
.ilm-auth__new { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.ilm .ilm-auth__new .ilm-btn { min-height: 48px; border-radius: 12px; border-color: var(--_line); color: var(--_heading); font-weight: 600; }
.ilm .ilm-auth__new .ilm-btn:hover { border-color: var(--_primary); color: var(--_link); background: var(--_tint); }
.ilm .ilm-auth__alt { margin: 0; font-size: 14px; color: var(--_muted); text-align: center; }
.ilm .ilm-auth__alt a { font-weight: 600; color: var(--_link); text-decoration: none; }
.ilm-auth__note { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: 14px; background: var(--_ground); border: 1px solid var(--_line); color: var(--_muted); font-size: 14px; }
.ilm-auth__note .ilm-icon { color: var(--_primary); margin-top: 1px; }
.ilm-auth__note p { margin: 0; }
.ilm-auth__actions { display: flex; flex-direction: column; gap: 8px; }
.ilm-auth__foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 13px; color: var(--_muted); }
.ilm .ilm-auth__foot a { display: inline-flex; align-items: center; gap: 6px; color: var(--_muted); text-decoration: none; font-weight: 500; }
.ilm .ilm-auth__foot a:hover { color: var(--_heading); }
/* Écrans « mot de passe oublié » et « nouveau mot de passe » dans le même panneau. */
.ilm.ilm-auth .ilm-auth__box .ilm-title--sm { font-size: clamp(26px, 2.2vw, 32px); font-weight: 800; color: var(--_heading); letter-spacing: -.02em; }
.ilm.ilm-auth .ilm-auth__box .ilm-form { display: flex; flex-direction: column; gap: 16px; }
.ilm.ilm-auth .ilm-auth__box .ilm-btn--lg { min-height: 54px; border-radius: 14px; }
.ilm.ilm-auth .ilm-auth__box .ilm-eyebrow { color: var(--_link); }

/* Responsive : le panneau de marque devient un bandeau compact. */
@media (max-width: 1080px) {
	.ilm-auth__float--doc { display: none; }
}
@media (max-width: 900px) {
	.ilm.ilm-auth { grid-template-columns: 1fr; }
	.ilm.ilm-auth--split { min-height: 0; }
	.ilm-auth__visual { gap: 18px; padding: 22px 20px 26px; }
	.ilm-auth__stack, .ilm-auth__window, .ilm-auth__facts, .ilm-auth__lead { display: none; }
	.ilm .ilm-auth__quote { font-size: clamp(28px, 7vw, 36px); margin: 14px 0 0; }
	.ilm-auth__logo { height: 38px; }
	.ilm-auth__panel { padding: 18px 20px 24px; }
	.ilm-auth__box { padding-block: 28px; }
	.ilm.ilm-auth--full { min-height: 100dvh; grid-template-rows: auto 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.ilm-auth__float { animation: none; }
	.ilm .ilm-auth__submit, .ilm .ilm-auth__submit .ilm-icon { transition: none; }
}
.ilm .ilm-auth__brand, .ilm .ilm-auth__brand:hover, .ilm .ilm-auth__wordmark { color: #fff; }
.ilm .ilm-auth__submit { font-size: 17px; white-space: nowrap; padding: 0 20px; }
.ilm-auth__foot .ilm-prefs { display: inline-flex; align-items: center; gap: 4px; }
/* Sur les pages de connexion, la langue et le thème sont dans le pied du formulaire. */
body.ilm-auth-page .ilm-floating { display: none; }
.ilm-auth__foot .ilm-lang--pills, .ilm-auth__foot .ilm-theme-btn { background: var(--_field); border-color: var(--_line); color: var(--_ink); }
.ilm-auth__foot .ilm-theme-btn { width: 38px; height: 38px; }
.ilm-auth__foot .ilm-lang a { min-height: 32px; color: var(--_muted); }
.ilm-auth--staff .ilm-auth__foot .ilm-lang a[aria-current="true"] { background: var(--_primary); color: var(--_on-primary); }

/* ======================================================================
   1.8 — Documents PDF
   ====================================================================== */
.ilm-docs { display: flex; flex-direction: column; gap: 18px; }
.ilm-docs__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 20px; }
.ilm-doc {
	display: flex;
	flex-direction: column;
	min-width: 0;
	overflow: hidden;
	background: var(--_surface);
	border: 1px solid var(--_line);
	border-radius: calc(var(--_r) * 1.25);
	transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.ilm-doc:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--_primary) 35%, var(--_line)); box-shadow: 0 22px 40px -26px rgba(16, 42, 76, .45); }
.ilm-doc__cover {
	position: relative;
	aspect-ratio: 16 / 10;
	display: grid;
	place-items: center;
	overflow: hidden;
	color: #fff;
	background: linear-gradient(135deg, #2A6CB0, #123A66);
}
.ilm-doc__cover::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 85% 10%, rgba(255, 255, 255, .22), transparent 45%); pointer-events: none; }
.ilm-doc__cover--cours { background: linear-gradient(135deg, #2A6CB0, #123A66); }
.ilm-doc__cover--exercices { background: linear-gradient(135deg, #14958A, #0F4C47); }
.ilm-doc__cover--examens { background: linear-gradient(135deg, #D07A1A, #7C2D12); }
.ilm-doc__cover--livres { background: linear-gradient(135deg, #7C4DDB, #3F1D8C); }
.ilm-doc__cover--pratique { background: linear-gradient(135deg, #5B6B82, #1E293B); }
.ilm-doc__cover--autre { background: linear-gradient(135deg, #1590B0, #164E63); }
.ilm-doc__cover.has-img { background: var(--_ground); }
.ilm-doc__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ilm-doc__sheet {
	position: relative;
	width: 34%;
	aspect-ratio: 3 / 4;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 7%;
	padding: 14% 12% 16%;
	border-radius: 6px;
	background: #fff;
	box-shadow: 0 18px 30px -12px rgba(0, 0, 0, .45);
	transform: rotate(-5deg) translateY(-4%);
	transition: transform .25s ease;
}
.ilm-doc:hover .ilm-doc__sheet { transform: rotate(-2deg) translateY(-8%); }
.ilm-doc__fold { position: absolute; top: 0; right: 0; width: 26%; aspect-ratio: 1; background: linear-gradient(225deg, transparent 50%, #DCE4EF 50%); border-bottom-left-radius: 4px; }
.ilm-doc__sheet b { position: absolute; top: 16%; left: -10%; padding: 2px 8px; border-radius: 4px; background: #D9412F; color: #fff; font-size: 11px; font-weight: 800; letter-spacing: .06em; box-shadow: 0 4px 10px -4px rgba(0, 0, 0, .4); }
.ilm-doc__sheet i { display: block; height: 5px; border-radius: 3px; background: #E3E9F2; }
.ilm-doc__sheet i:nth-of-type(2) { width: 80%; }
.ilm-doc__sheet i:nth-of-type(3) { width: 60%; }
.ilm-doc__cat { position: absolute; left: 12px; bottom: 10px; z-index: 1; font-size: 12px; font-weight: 700; letter-spacing: .02em; color: rgba(255, 255, 255, .92); }
.ilm-doc__body { flex: 1; display: flex; flex-direction: column; gap: 8px; padding: 16px 18px 18px; }
.ilm-doc__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ilm-doc__badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 700; line-height: 1.3; }
.ilm-doc__badge.is-free { background: var(--_ok-bg); color: var(--_ok); }
.ilm-doc__badge.is-students { background: color-mix(in srgb, var(--_primary) 12%, var(--_surface)); color: var(--_link); }
.ilm-doc__badge.is-paid { background: var(--_accent); color: var(--_on-accent); }
.ilm-doc__badge.is-owned { background: var(--_ok-bg); color: var(--_ok); }
.ilm-doc__star { font-size: 12px; font-weight: 700; color: var(--_warn); }
.ilm .ilm-doc__title { margin: 0; font-family: var(--ilm-font-heading, "Raleway", sans-serif); font-size: 17px; font-weight: 700; line-height: 1.3; color: var(--_heading); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ilm .ilm-doc__desc { margin: 0; font-size: 14px; color: var(--_muted); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ilm-doc__meta { font-size: 13px; color: var(--_muted); }
.ilm-doc__actions { display: flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 6px; }
.ilm .ilm-btn--icon { width: 34px; padding: 0; justify-content: center; }
.ilm-docs__empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 32px 20px; border: 1.5px dashed var(--_line); border-radius: var(--_r); text-align: center; }
.ilm-docs__emptyicon { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--_primary) 10%, var(--_surface)); color: var(--_primary); }
.ilm-docs--student .ilm-me__card { gap: 16px; }

/* Équipe : liste et formulaire */
.ilm-dadm { list-style: none; margin: 0; padding: 0; }
.ilm-dadm__item { display: flex; align-items: center; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--_line); }
.ilm-dadm__item:last-child { border-bottom: 0; }
.ilm-dadm__item.is-draft { opacity: .78; }
.ilm-dadm__icon { width: 46px; height: 46px; flex-shrink: 0; display: grid; place-items: center; border-radius: 12px; color: #fff; }
.ilm-dadm__main { flex: 1; min-width: 0; display: grid; gap: 4px; }
.ilm-dadm__main strong { color: var(--_heading); }
.ilm-dadm__flags { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ilm-dadm__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; justify-content: flex-end; }
.ilm-drop { position: relative; display: flex; align-items: center; gap: 14px; padding: 18px; border: 2px dashed var(--_line); border-radius: var(--_r); background: var(--_ground); cursor: pointer; transition: border-color .15s, background-color .15s; }
.ilm-drop:hover, .ilm-drop:focus-within, .ilm-drop.is-filled { border-color: var(--_primary); background: color-mix(in srgb, var(--_primary) 6%, var(--_surface)); }
.ilm-drop input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.ilm-drop__icon { width: 48px; height: 48px; flex-shrink: 0; display: grid; place-items: center; border-radius: 14px; background: var(--_primary); color: var(--_on-primary); }
.ilm-drop__text { display: grid; gap: 2px; min-width: 0; }
.ilm-drop__text strong { color: var(--_heading); overflow-wrap: anywhere; }
.ilm-drop__text span { font-size: 13px; color: var(--_muted); }
.ilm-doc-form .ilm-when-paid { display: none; }
.ilm-doc-form:has(input[name="access"][value="paid"]:checked) .ilm-when-paid { display: block; }
.ilm-seg--access { flex-wrap: wrap; }
.ilm-doc-form__thumb { width: 72px; height: 72px; object-fit: cover; border-radius: 10px; }
.ilm-field--check { justify-content: flex-end; }
.ilm-doc-grant { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ilm-doc-grant select { min-width: min(100%, 300px); min-height: 38px; padding: 0 10px; border: 1.5px solid var(--_line); border-radius: var(--_r-sm); background: var(--_surface); color: var(--_ink); font: inherit; }
@media (max-width: 640px) {
	.ilm-dadm__item { flex-wrap: wrap; }
	.ilm-dadm__actions { width: 100%; justify-content: flex-start; padding-left: 60px; }
}
@media (prefers-reduced-motion: reduce) { .ilm-doc, .ilm-doc__sheet { transition: none; } }
.ilm.ilm-auth .ilm-auth__logo { width: auto; height: 46px; max-width: 170px; }
@media (max-width: 900px) { .ilm.ilm-auth .ilm-auth__logo { height: 38px; } }
@media (max-height: 820px) and (min-width: 901px) { .ilm-auth__stack { min-height: 210px; } .ilm-auth__float--doc { display: none; } .ilm .ilm-auth__quote { font-size: clamp(34px, 3.2vw, 50px); } }
.ilm-auth__foot .ilm-lang a[aria-current="true"] { color: var(--ilm-on-primary, #fff); }

/* ======================================================================
   1.9 — Paiement par code QR (Orange Money, ChapChap Pay)
   ====================================================================== */
.ilm-pay__qrpanel { display: none; margin-top: 14px; padding: 16px; border-radius: var(--_r); background: var(--_ground); border: 1px solid var(--_line); }
.ilm-pay__form:has(input[name="method"][value="qr"]:checked) .ilm-pay__qrpanel { display: grid; gap: 12px; }
.ilm-qr__cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 14px; }
.ilm-qr__card { display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: calc(var(--_r) * 1.1); background: var(--_surface); border: 1px solid var(--_line); border-top: 5px solid var(--_tone, var(--_primary)); }
.ilm-qr__head { display: flex; flex-direction: column; gap: 2px; }
.ilm-qr__head strong { font-size: 17px; color: var(--_heading); }
.ilm-qr__head span { font-size: 13px; color: var(--_muted); }
.ilm-qr__head b { font-size: 16px; letter-spacing: .06em; color: var(--_ink); }
.ilm-qr__code { margin: 0; display: grid; justify-items: center; gap: 6px; }
.ilm-qr__code img { display: block; width: min(100%, 220px); height: auto; aspect-ratio: 1; padding: 8px; background: #fff; border-radius: 12px; border: 1px solid #E3E9F2; image-rendering: pixelated; }
.ilm-qr__code figcaption { font-size: 12px; color: var(--_muted); text-align: center; }
.ilm .ilm-qr__ussd { margin: 0; font-size: 13px; color: var(--_muted); }
.ilm .ilm-qr__ussd code { display: inline-block; margin-top: 2px; padding: 3px 8px; border-radius: 6px; background: var(--_ground); color: var(--_ink); font-size: 13px; font-weight: 700; overflow-wrap: anywhere; }
.ilm-qr__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
/* Liens « ouvrir l'application » et « composer » : utiles seulement sur téléphone. */
@media (hover: hover) and (pointer: fine) { .ilm-qr__mobile { display: none !important; } }
.ilm-qr { display: flex; flex-direction: column; gap: 18px; }
.ilm-qr__top { display: grid; gap: 10px; }
.ilm-qr__amount { display: grid; gap: 2px; padding: 16px 18px; border-radius: var(--_r); background: var(--_deep); color: #fff; }
.ilm-qr__amount span { font-size: 14px; color: rgba(255, 255, 255, .8); }
.ilm-qr__amount strong { font-size: 30px; font-weight: 800; letter-spacing: -.01em; color: var(--_accent); }
.ilm-qr__amount small { font-size: 13px; color: rgba(255, 255, 255, .72); }
.ilm-qr__steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ilm-qr__steps li { display: flex; gap: 12px; align-items: flex-start; }
.ilm-qr__steps b { width: 28px; height: 28px; flex-shrink: 0; display: grid; place-items: center; border-radius: 50%; background: var(--_primary); color: var(--_on-primary); font-size: 14px; }
.ilm-qr__declare { display: flex; flex-direction: column; gap: 14px; border: 2px solid var(--_primary); }
.ilm-qr__declaretitle { display: inline-flex; align-items: center; gap: 8px; font-size: 18px; color: var(--_heading); }
.ilm-portal__declared { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--_ok); }
/* Le sélecteur flottant ne doit jamais recouvrir un code QR à scanner. */
body:has(.ilm-qr), body:has(.ilm-pay__form input[name="method"][value="qr"]:checked) { --ilm-floating-hidden: 1; }
body:has(.ilm-qr) .ilm-floating, body:has(.ilm-pay__form input[name="method"][value="qr"]:checked) .ilm-floating { display: none; }

/* 1.9 — Lecteur de documents protégés */
.ilm-reader { position: relative; display: flex; flex-direction: column; gap: 12px; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.ilm-reader__bar { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 10px 12px; border-radius: var(--_r); background: var(--_surface); border: 1px solid var(--_line); box-shadow: 0 10px 24px -18px rgba(16, 42, 76, .5); }
.ilm-reader__title { flex: 1; min-width: 160px; color: var(--_heading); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ilm-reader__tools { display: flex; align-items: center; gap: 6px; }
.ilm-reader__page { font-size: 13px; font-weight: 600; color: var(--_muted); min-width: 84px; text-align: right; }
.ilm .ilm-reader__notice { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 13px; color: var(--_muted); }
.ilm-reader__pages { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 16px 8px; border-radius: var(--_r); background: color-mix(in srgb, var(--_ink) 8%, var(--_ground)); min-height: 320px; overflow-x: auto; }
.ilm-reader__sheet { width: min(100%, 980px); max-width: none; background: #fff; box-shadow: 0 10px 30px -14px rgba(0, 0, 0, .45); border-radius: 4px; overflow: hidden; }
.ilm-reader__sheet canvas { display: block; pointer-events: none; }
.ilm-reader__loading { display: flex; align-items: center; gap: 12px; margin: auto; color: var(--_muted); }
.ilm-reader__toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 9999; padding: 10px 16px; border-radius: 999px; background: #14213A; color: #fff; font-size: 14px; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); }
.ilm-reader:fullscreen { padding: 12px; background: var(--_ground); overflow: auto; }
.ilm-doc__lock { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; color: var(--_muted); }
@media print { .ilm-reader, .ilm-reader * { display: none !important; } body:has(.ilm-reader)::after { content: "Impression désactivée — document protégé."; display: block; padding: 40px; font: 16px sans-serif; } }
.ilm-reader.is-printing .ilm-reader__pages { visibility: hidden; }
.ilm-doc-form .ilm-when-public { display: none; }
.ilm-doc-form:has(input[name="access"][value="public"]:checked) .ilm-when-public { display: flex; }
.ilm-doc-form:has(input[name="access"][value="public"]:checked) .ilm-when-protected { display: none; }

/* 1.9 — Tableaux de tarifs des pages de la refonte (widget HTML) */
.ilm-ptable-wrap { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ilm-ptable { width: 100%; min-width: 300px; border-collapse: collapse; font-family: var(--ilm-font-body, "Poppins", sans-serif); font-size: 15px; color: var(--ilm-ink, #14213A); }
.ilm-ptable th, .ilm-ptable td { padding: 12px 10px; text-align: right; border-bottom: 1px solid var(--ilm-line, #DCE4EF); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ilm-ptable thead th { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ilm-muted, #56627A); border-bottom-width: 2px; }
.ilm-ptable th:first-child, .ilm-ptable td:first-child { text-align: left; white-space: normal; }
.ilm-ptable tbody th { font-weight: 600; }
.ilm-ptable td:last-child { font-weight: 700; color: var(--ilm-heading, #123A66); }
.ilm-ptable tfoot th, .ilm-ptable tfoot td { border-bottom: 0; font-weight: 800; font-size: 16px; color: var(--ilm-heading, #123A66); background: color-mix(in srgb, var(--ilm-primary, #1C5694) 7%, transparent); }
.ilm-ptable--num th:first-child, .ilm-ptable--num td:first-child { width: 36px; color: var(--ilm-muted, #56627A); }
.ilm-ptable--num tbody th:first-child { font-weight: 500; }
.ilm-ptable--num th:nth-child(2), .ilm-ptable--num td:nth-child(2) { text-align: left; white-space: normal; }
.ilm-ptable--dark { color: #fff; }
.ilm-ptable--dark th, .ilm-ptable--dark td { border-color: rgba(255, 255, 255, .14); }
.ilm-ptable--dark thead th { color: rgba(255, 255, 255, .7); }
.ilm-ptable--dark td:last-child { color: var(--ilm-accent, #F0DB18); }
.ilm-ptable__note { margin: 8px 0 0; font-size: 13px; color: var(--ilm-muted, #56627A); }
.ilm-promo { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; margin: 0; font-family: var(--ilm-font-heading, "Raleway", sans-serif); }
.ilm-promo s { font-size: 17px; color: rgba(255, 255, 255, .6); }
.ilm-promo strong { font-size: 34px; font-weight: 800; color: var(--ilm-accent, #F0DB18); letter-spacing: -.01em; }
.ilm-promo em { font-style: normal; padding: 3px 10px; border-radius: 999px; background: var(--ilm-accent, #F0DB18); color: var(--ilm-on-accent, #14213A); font-weight: 800; font-size: 14px; }
.ilm-promo--light span { font-weight: 700; color: var(--ilm-heading, #123A66); }
.ilm-promo--light s { color: var(--ilm-muted, #56627A); }
.ilm-promo--light strong { font-size: 24px; color: var(--ilm-primary, #1C5694); }
html[data-ilm-theme="dark"] .ilm-promo--light strong { color: var(--ilm-accent, #F0DB18); }
.ilm-ptable th, .ilm-ptable td { color: inherit; background: transparent; }
.ilm-ptable thead th { color: var(--ilm-muted, #56627A); }
.ilm-ptable td:last-child { color: var(--ilm-heading, #123A66); }
.ilm-ptable--dark tbody th, .ilm-ptable--dark tbody td { color: rgba(255, 255, 255, .88); }
.ilm-ptable--dark thead th { color: rgba(255, 255, 255, .7); }
.ilm-ptable--dark td:last-child { color: var(--ilm-accent, #F0DB18); }
html[data-ilm-theme="dark"] .ilm-ptable td:last-child, html[data-ilm-theme="dark"] .ilm-ptable tfoot th, html[data-ilm-theme="dark"] .ilm-ptable tfoot td { color: var(--ilm-heading, #DCE8F8); }

/* ======================================================================
   1.9.3 — Inscription : formation, durée, frais et récapitulatif
   ====================================================================== */
.ilm-fees__layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
.ilm-fees__main { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.ilm-fees__programs { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: 10px; }
.ilm-fees__program { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; border: 2px solid var(--_line); border-radius: var(--_r); background: var(--_surface); cursor: pointer; transition: border-color .15s, background-color .15s, box-shadow .15s; }
.ilm-fees__program input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ilm-fees__program:hover { border-color: color-mix(in srgb, var(--_primary) 45%, var(--_line)); }
.ilm-fees__program:has(input:checked), .ilm-fees__program.is-active { border-color: var(--_primary); background: color-mix(in srgb, var(--_primary) 7%, var(--_surface)); box-shadow: 0 10px 24px -18px color-mix(in srgb, var(--_primary) 80%, transparent); }
.ilm-fees__program:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--_primary) 40%, transparent); outline-offset: 2px; }
.ilm-fees__pname { font-weight: 700; color: var(--_heading); line-height: 1.3; }
.ilm-fees__phint { font-size: 13px; color: var(--_muted); line-height: 1.4; }
.ilm-fees__pprice { margin-top: auto; padding-top: 6px; font-size: 14px; color: var(--_link); }
.ilm-fees__panel { padding: 16px; border-radius: var(--_r); background: var(--_ground); border: 1px solid var(--_line); }
.ilm-fees__panel[hidden] { display: none !important; }
.ilm .ilm-fees__label { margin: 0 0 10px; font-weight: 700; font-size: 14px; color: var(--_heading); }
.ilm .ilm-fees__label em { font-style: normal; font-weight: 600; font-size: 12px; margin-left: 6px; padding: 2px 8px; border-radius: 999px; background: var(--_warn-bg); color: var(--_warn-ink); }
.ilm-fees__mlen { font-weight: 700; color: var(--_heading); }
.ilm-fees__pack { display: flex; gap: 12px; align-items: center; padding: 14px; margin-bottom: 14px; border-radius: 12px; border: 2px dashed var(--_primary); background: var(--_surface); cursor: pointer; }
.ilm-fees__pack input { width: 20px; height: 20px; accent-color: var(--_primary); flex-shrink: 0; }
.ilm-fees__pack span { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.ilm-fees__pack s { color: var(--_muted); font-size: 13px; }
.ilm-fees__pack b { color: var(--_link); font-size: 17px; }
.ilm-fees__pack em { font-style: normal; padding: 1px 8px; border-radius: 999px; background: var(--_accent); color: var(--_on-accent); font-weight: 800; font-size: 12px; }
.ilm-fees__pack:has(input:checked) { border-style: solid; background: color-mix(in srgb, var(--_primary) 8%, var(--_surface)); }
.ilm-fees__extras { display: grid; gap: 8px; }
.ilm-fees__extras[hidden], .ilm-fees__extra[hidden] { display: none !important; }
.ilm-fees__extra { display: flex; align-items: center; gap: 10px; padding: 11px 14px; border: 1.5px solid var(--_line); border-radius: 10px; background: var(--_surface); cursor: pointer; }
.ilm-fees__extra input { width: 18px; height: 18px; accent-color: var(--_primary); flex-shrink: 0; }
.ilm-fees__xname { flex: 1; font-weight: 600; font-size: 14px; }
.ilm-fees__extra b { font-size: 14px; white-space: nowrap; }
.ilm-fees__req { display: none; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: color-mix(in srgb, var(--_primary) 10%, var(--_surface)); color: var(--_link); font-size: 12px; font-weight: 700; }
.ilm-fees__extra.is-required { cursor: default; background: color-mix(in srgb, var(--_primary) 4%, var(--_surface)); }
.ilm-fees__extra.is-required .ilm-fees__req { display: inline-flex; }
.ilm-fees__opt { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--_line); color: var(--_muted, #64748b); font-size: 12px; font-weight: 600; }
.ilm-fees__extra.is-required .ilm-fees__opt, .ilm-fees:not(.is-js) .ilm-fees__opt { display: none; }
.ilm-fees__extra:not(.is-required):has(input:checked) { border-color: var(--_primary); }
/* Sans JavaScript : tous les panneaux restent visibles, le serveur applique les frais obligatoires. */
.ilm-fees:not(.is-js) .ilm-fees__req { display: none; }
.ilm-fees__summary { position: sticky; top: 90px; display: flex; flex-direction: column; gap: 10px; padding: 20px; border-radius: calc(var(--_r) * 1.2); background: var(--_deep); color: #fff; box-shadow: 0 24px 48px -30px rgba(10, 30, 60, .6); }
.ilm .ilm-fees__stitle { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--_accent); }
.ilm .ilm-fees__sprog { margin: 0; font-weight: 700; font-size: 17px; color: #fff; }
.ilm-fees__lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.ilm-fees__lines li { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; color: rgba(255, 255, 255, .85); }
.ilm-fees__lines li b { white-space: nowrap; color: #fff; }
.ilm-fees__lines li em { font-style: normal; font-size: 11px; opacity: .75; }
.ilm-fees__lines li.is-quote, .ilm-fees__lines li.is-warn { color: var(--_accent); }
.ilm-fees__total { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding-top: 12px; border-top: 1px solid rgba(255, 255, 255, .18); }
.ilm-fees__total span { font-weight: 600; color: rgba(255, 255, 255, .85); }
.ilm-fees__total strong { font-size: 24px; font-weight: 800; color: var(--_accent); white-space: nowrap; }
.ilm .ilm-fees__snote { margin: 0; font-size: 12px; color: rgba(255, 255, 255, .7); line-height: 1.5; }
.ilm-fees__recap { margin: 8px 0; padding: 18px; border-radius: var(--_r); background: var(--_deep); color: #fff; display: grid; gap: 10px; text-align: left; }
.ilm-enrol-row__fees { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--_ink); }
@media (max-width: 900px) {
	.ilm-fees__layout { grid-template-columns: 1fr; }
	.ilm-fees__summary { position: static; }
}

/* Documents en vente (tableaux de bord) */
.ilm-me__grid > .ilm-docsale, .ilm-docsale.ilm-me__card--wide { grid-column: 1 / -1; }
.ilm-docsale__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: 10px; }
.ilm-docsale__item { flex-wrap: wrap; }
.ilm-docsale__item { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--_line); border-radius: 14px; background: var(--_surface); }
.ilm-docsale__main { flex: 1 1 180px; min-width: 0; display: block; }
.ilm-docsale__main > * { display: block; }
.ilm-docsale__main > strong { margin-bottom: 2px; }
.ilm-docsale__main strong { color: var(--_heading); font-size: 15px; line-height: 1.3; overflow: hidden; display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ilm-docsale__price { font-size: 14px; white-space: nowrap; color: var(--_ink); }
.ilm-fees__extras, .ilm-fees__layout > * { min-width: 0; }
.ilm-fees__extras { grid-template-columns: minmax(0, 1fr); }
.ilm-fees__extra { flex-wrap: wrap; row-gap: 4px; }
.ilm-fees__xname { flex: 1 1 140px; min-width: 0; }
@media (max-width: 480px) {
	.ilm-fees__extra .ilm-fees__req, .ilm-fees__extra .ilm-fees__opt { order: 4; }
}
/* La mise en page suit la largeur du formulaire (colonne de page), pas celle de l'écran. */
.ilm-fees { container-type: inline-size; }
@container (max-width: 860px) {
	.ilm-fees__layout { grid-template-columns: minmax(0, 1fr); }
	.ilm-fees__summary { position: static; }
	.ilm-fees__programs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (max-width: 460px) {
	.ilm-fees__programs { grid-template-columns: minmax(0, 1fr); }
}
.ilm-docsale__item > .ilm-btn { margin-left: auto; }

/* 1.9.4 : tableaux des frais de scolarité (repris des fiches Anglais et Informatique). */
.ilm-fees__thead { display: grid; gap: 4px; margin: 0 0 10px; }
.ilm-fees__ttitle { margin: 0; font-weight: 800; font-size: 16px; color: var(--_heading); }
.ilm-fees__tmeta { margin: 0; display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; font-size: 13px; color: var(--_muted); }
.ilm-fees__tmeta span { display: inline-flex; align-items: center; gap: 5px; }
.ilm-fees__tmeta em { font-style: normal; padding: 1px 8px; border-radius: 999px; background: color-mix(in srgb, var(--_accent) 30%, var(--_surface)); color: var(--_ink); font-size: 12px; font-weight: 700; }
.ilm-fees__table { border: 1.5px solid var(--_line); border-radius: 12px; overflow: hidden; background: var(--_surface); margin-bottom: 14px; }
.ilm-fees__trow { display: grid; grid-template-columns: 22px minmax(0, .9fr) minmax(0, 1.1fr) minmax(0, .7fr) minmax(0, 1.2fr); gap: 8px; align-items: center; padding: 10px 14px; border-top: 1px solid var(--_line); font-size: 14px; font-variant-numeric: tabular-nums; }
.ilm-fees__modules .ilm-fees__trow { grid-template-columns: 22px minmax(0, 1fr) auto; }
.ilm-fees__trow:first-child { border-top: 0; }
.ilm-fees__trow--head { background: var(--_heading); color: #fff; font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding-top: 9px; padding-bottom: 9px; }
.ilm-fees__trow--total { background: color-mix(in srgb, var(--_accent) 35%, var(--_surface)); font-weight: 800; }
.ilm-fees__trow--total b { font-size: 15px; }
label.ilm-fees__trow { cursor: pointer; transition: background .15s; }
label.ilm-fees__trow:hover { background: color-mix(in srgb, var(--_primary) 4%, var(--_surface)); }
label.ilm-fees__trow input { width: 18px; height: 18px; margin: 0; accent-color: var(--_primary); }
label.ilm-fees__trow:has(input:checked), label.ilm-fees__trow.is-on { background: color-mix(in srgb, var(--_primary) 9%, var(--_surface)); box-shadow: inset 4px 0 0 var(--_primary); }
.ilm-fees__mlen, .ilm-fees__module > span { font-weight: 700; color: var(--_heading); }
.ilm-fees__base { color: var(--_muted); }
.ilm-fees__due, .ilm-fees__module > b { font-weight: 800; color: var(--_ink); text-align: right; }
.ilm-fees__trow--head span:last-child, .ilm-fees__trow--total b { text-align: right; }
.ilm-fees__off { display: inline-block; padding: 1px 8px; border-radius: 999px; background: var(--_accent); color: var(--_on-accent); font-size: 12px; font-weight: 800; }
.ilm-fees__rate { color: var(--_muted); }
.ilm-fees__module:has(input:disabled) { cursor: default; }
.ilm-fees__pack small { flex-basis: 100%; color: var(--_muted); font-size: 12.5px; }
@container (max-width: 520px) {
	.ilm-fees__trow { grid-template-columns: 20px minmax(0, .8fr) minmax(0, 1fr) minmax(0, .6fr) minmax(0, 1.1fr); gap: 6px; padding: 9px 10px; font-size: 13px; }
	.ilm-fees__trow--head { font-size: 10px; letter-spacing: 0; }
	.ilm-fees__off { padding: 1px 5px; font-size: 11px; }
}
