@import url("./stages-collectifs.css?v=2");

/*
 * G-ENV — couche graphique principale
 * Template : cassiopeia_extended
 * Projet : reconstruction Joomla 6
 *
 * Principe :
 * - règles globales limitées au header/footer et aux variables de design ;
 * - toute la homepage est encapsulée sous .genv-home ;
 * - aucun fichier cœur Joomla/Cassiopeia n'est modifié.
 */

/* =========================================================
   1. DESIGN TOKENS
   ========================================================= */

:root {
  --genv-green: #0f775f;
  --genv-green-dark: #095a48;
  --genv-green-bar: #2f725f;
  --genv-green-footer: #2a6254;
  --genv-orange: #b94f0a;
  --genv-gold: #e9ad24;
  --genv-ink: #243034;
  --genv-muted: #657176;
  --genv-sand: #f5f3ed;
  --genv-pale: #edf5f2;
  --genv-line: #dfe5e2;
  --genv-white: #ffffff;
  --genv-radius: 18px;
  --genv-shadow: 0 16px 40px rgba(24, 48, 42, 0.10);
  --genv-content-width: 1180px;
}

/* =========================================================
   2. BASE CASSIOPEIA G-ENV
   ========================================================= */

body {
  color: var(--genv-ink);
}

a {
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

.container-header {
  background: var(--genv-white);
  background-image: none;
  color: var(--genv-ink);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06);
}

.container-header .navbar-brand a,
.container-header .mod-menu,
.container-header .mod-menu a,
.container-header .metismenu-item > button {
  color: var(--genv-ink);
}

.container-header .container-topbar {
  background: var(--genv-green-bar);
  color: var(--genv-white);
}

.container-header .container-topbar a {
  color: var(--genv-white);
}

.container-footer {
  background: var(--genv-green-footer);
  background-image: none;
  color: var(--genv-white);
}

.container-footer a {
  color: var(--genv-white);
}

.btn-primary {
  background-color: var(--genv-gold);
  border-color: var(--genv-gold);
  color: #2e2c24;
}

.btn-primary:hover,
.btn-primary:focus {
  background-color: #d89b15;
  border-color: #d89b15;
  color: #242119;
}

/* =========================================================
   3. HOMEPAGE : RESET LOCAL / LARGEUR
   ========================================================= */

.genv-home {
  color: var(--genv-ink);
  line-height: 1.55;
}

.genv-home,
.genv-home * {
  box-sizing: border-box;
}

.genv-home a {
  color: inherit;
}

.genv-home__wrap {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
}

/* =========================================================
   4. HERO
   ========================================================= */

.genv-home__hero {
  min-height: 590px;
  display: flex;
  align-items: flex-end;
  position: relative;
  color: var(--genv-white);
  background:
    linear-gradient(
      90deg,
      rgba(8, 36, 31, 0.82) 0%,
      rgba(8, 36, 31, 0.52) 48%,
      rgba(8, 36, 31, 0.12) 78%
    ),
    url("/images/2019/08/23/slide_ufr2_1140x420.jpg") center / cover no-repeat;
}

.genv-home__hero-content {
  max-width: 760px;
  padding: 108px 0 78px;
}

.genv-home__eyebrow {
  color: var(--genv-green);
  font-size: 0.79rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.genv-home__hero .genv-home__eyebrow {
  color: #dbece6;
}

.genv-home__hero h1 {
  margin: 10px 0 22px;
  color: var(--genv-white);
  font-size: clamp(3rem, 7vw, 5.7rem);
  line-height: 0.95;
  letter-spacing: -0.055em;
}

.genv-home__hero p {
  max-width: 650px;
  margin: 0 0 30px;
  color: #f2f7f5;
  font-size: clamp(1.12rem, 2vw, 1.4rem);
}

.genv-home__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.genv-home__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 18px;
  border: 1px solid transparent;
  border-radius: 10px;
  font-weight: 750;
  text-decoration: none;
}

.genv-home__btn--primary {
  background: var(--genv-gold);
  color: #2e2c24;
}

.genv-home__btn--primary:hover,
.genv-home__btn--primary:focus {
  background: #d89b15;
  color: #242119;
}

.genv-home__btn--secondary {
  border-color: rgba(255, 255, 255, 0.65);
  background: rgba(255, 255, 255, 0.08);
  color: var(--genv-white);
}

.genv-home__btn--secondary:hover,
.genv-home__btn--secondary:focus {
  background: rgba(255, 255, 255, 0.18);
  color: var(--genv-white);
}

/* =========================================================
   5. TROIS PORTES D'ENTRÉE
   ========================================================= */

.genv-home__gateways {
  position: relative;
  z-index: 2;
  margin-top: -46px;
}

.genv-home__gateway-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.genv-home__gateway {
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: var(--genv-shadow);
  text-decoration: none;
}

.genv-home__gateway figure {
  height: 205px;
  margin: 0;
  overflow: hidden;
}

.genv-home__gateway img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.35s ease;
}

.genv-home__gateway:hover img {
  transform: scale(1.035);
}

.genv-home__gateway-body {
  padding: 23px 24px 26px;
}

.genv-home__gateway h2,
.genv-home__gateway h3 {
  margin: 0 0 9px;
  color: var(--genv-ink);
  font-size: 1.45rem;
  line-height: 1.15;
}

.genv-home__gateway p {
  margin: 0 0 18px;
  color: var(--genv-muted);
}

.genv-home__arrow {
  color: var(--genv-green);
  font-weight: 800;
}

/* =========================================================
   6. SECTIONS GÉNÉRIQUES
   ========================================================= */

.genv-home__section {
  padding: 78px 0;
}

.genv-home__section-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 30px;
  margin-bottom: 30px;
}

.genv-home__section-head h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2rem, 4vw, 3.15rem);
  line-height: 1.05;
  letter-spacing: -0.04em;
}

.genv-home__section-head > p {
  max-width: 560px;
  margin: 0;
  color: var(--genv-muted);
}

/* =========================================================
   7. MISSION
   ========================================================= */

.genv-home__mission {
  background: var(--genv-pale);
}

.genv-home__mission-grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: center;
  gap: 60px;
}

.genv-home__mission h2 {
  margin: 0 0 22px;
  color: var(--genv-ink);
  font-size: clamp(2.4rem, 4vw, 4.1rem);
  line-height: 0.98;
  letter-spacing: -0.05em;
}

.genv-home__mission p {
  color: #3b4a4e;
  font-size: 1.18rem;
}

.genv-home__mission-card {
  padding: 34px;
  border-left: 6px solid var(--genv-gold);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: var(--genv-shadow);
}

.genv-home__mission-card strong {
  display: block;
  margin-bottom: 7px;
  color: var(--genv-green);
  font-size: 1.7rem;
  line-height: 1.2;
}

/* =========================================================
   8. FORMATIONS
   ========================================================= */

.genv-home__training-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 15px;
}

.genv-home__training-card {
  min-height: 155px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 21px;
  border: 1px solid var(--genv-line);
  border-radius: 15px;
  background: linear-gradient(180deg, #fff, #fbfcfb);
  text-decoration: none;
}

.genv-home__training-card:hover,
.genv-home__training-card:focus {
  border-color: #9fc9bc;
  box-shadow: 0 10px 28px rgba(24, 48, 42, 0.08);
}

.genv-home__training-card small {
  color: var(--genv-orange);
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.genv-home__training-card h3 {
  margin: 14px 0 0;
  color: var(--genv-ink);
  font-size: 1.1rem;
  line-height: 1.28;
}

/* =========================================================
   9. ACTUALITÉS
   ========================================================= */

.genv-home__news {
  background: var(--genv-sand);
}

.genv-home__news-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
}

.genv-home__news-card {
  overflow: hidden;
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 10px 25px rgba(20, 40, 35, 0.06);
}

.genv-home__news-card img {
  width: 100%;
  height: 220px;
  display: block;
  object-fit: cover;
}

.genv-home__news-body {
  padding: 22px;
}

.genv-home__news-meta {
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.genv-home__news-card h3 {
  margin: 9px 0 10px;
  color: var(--genv-ink);
  font-size: 1.22rem;
  line-height: 1.3;
}

.genv-home__news-card p {
  margin: 0;
  color: var(--genv-muted);
  font-size: 0.95rem;
}

/* =========================================================
   10. INTERNATIONAL
   ========================================================= */

.genv-home__international {
  position: relative;
  color: var(--genv-white);
  background:
    linear-gradient(
      90deg,
      rgba(8, 58, 47, 0.95),
      rgba(8, 58, 47, 0.78)
    ),
    url("/images/header/bg_carte.jpg") center / cover no-repeat;
}

.genv-home__international-grid {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  align-items: center;
  gap: 60px;
}

.genv-home__international .genv-home__eyebrow {
  color: #dbece6;
}

.genv-home__international h2 {
  margin: 0 0 22px;
  color: var(--genv-white);
  font-size: clamp(2.4rem, 5vw, 4.6rem);
  line-height: 0.98;
  letter-spacing: -0.05em;
}

.genv-home__international p {
  color: #e4f0ec;
  font-size: 1.15rem;
}

.genv-home__keywords {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.genv-home__keyword {
  padding: 8px 12px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.07);
}

/* =========================================================
   11. PAROLES / TÉMOIGNAGES
   ========================================================= */

.genv-home__voice-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}

.genv-home__voice {
  min-height: 230px;
  display: flex;
  flex-direction: column;
  justify-content: end;
  padding: 30px;
  border-radius: var(--genv-radius);
  background: #183e37;
  color: var(--genv-white);
}

.genv-home__voice:nth-child(2) {
  background: #8c4b19;
}

.genv-home__voice small {
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0.76;
}

.genv-home__voice h3 {
  margin: 12px 0 0;
  color: var(--genv-white);
  font-size: 1.35rem;
  line-height: 1.25;
}

/* =========================================================
   12. RESPONSIVE
   ========================================================= */

@media (max-width: 900px) {
  .genv-home__gateway-grid,
  .genv-home__news-grid {
    grid-template-columns: 1fr;
  }

  .genv-home__training-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .genv-home__mission-grid,
  .genv-home__international-grid {
    grid-template-columns: 1fr;
  }

  .genv-home__gateways {
    margin-top: 24px;
  }

  .genv-home__hero {
    min-height: 520px;
  }
}

@media (max-width: 560px) {
  .genv-home__wrap {
    width: min(var(--genv-content-width), calc(100% - 26px));
  }

  .genv-home__hero-content {
    padding: 88px 0 55px;
  }

  .genv-home__training-grid,
  .genv-home__voice-grid {
    grid-template-columns: 1fr;
  }

  .genv-home__section {
    padding: 58px 0;
  }

  .genv-home__section-head {
    align-items: start;
    flex-direction: column;
  }
}
/* =========================================================
   HOMEPAGE FR — COMPOSANT PLEINE LARGEUR
   ========================================================= */

body.genv-homepage .site-grid > .container-component {
  grid-column: full-start / full-end;
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}

body.genv-homepage .container-component > main {
  width: 100%;
  max-width: none;
  margin-top: 0;
}

body.genv-homepage .com-content-article,
body.genv-homepage .com-content-article__body {
  width: 100%;
  max-width: none;
  margin: 0;
}

body.genv-homepage .page-header {
  display: none;
}

body.genv-homepage .genv-home {
  width: 100%;
  max-width: none;
  margin: 0;
}
/* =========================================================
   13. HEADER G-ENV
   Marque + navigation sur une ligne à partir de 768 px.
   Ciblage explicite du <header> réel de Cassiopeia.
   ========================================================= */

body.site > header.container-header {
  display: flex !important;
  flex-flow: row wrap !important;
  align-items: center !important;
  min-height: 78px;
  padding-left: max(0.5rem, calc((100vw - 1320px) / 2));
  padding-right: max(0.5rem, calc((100vw - 1320px) / 2));
}


/* Topbar AgroParisTech + langues */
body.site > header.container-header > .container-topbar {
  flex: 0 0 100% !important;
  width: 100% !important;
  max-width: none !important;
  min-height: 46px;
  margin: 0 !important;
  padding: 6px max(1rem, calc((100vw - 1320px) / 2)) !important;

  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 1rem;

  background: var(--genv-green-bar);
  color: var(--genv-white);
}

/* Logo AgroParisTech */
body.site > header.container-header .container-topbar .mod-custom,
body.site > header.container-header .container-topbar .custom {
  margin: 0;
  padding: 0;
}

body.site > header.container-header .container-topbar p {
  margin: 0;
}

body.site > header.container-header .container-topbar img {
  display: block;
  width: auto;
  max-height: 34px;
}

/* Sélecteur de langue */
body.site > header.container-header .container-topbar .mod-languages {
  margin-left: auto;
}

body.site > header.container-header .container-topbar .mod-languages ul {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

body.site > header.container-header .container-topbar .mod-languages a,
body.site > header.container-header .container-topbar .mod-languages span {
  color: var(--genv-white);
}

body.site > header.container-header .container-topbar .mod-languages a {
  text-decoration: none;
}

body.site > header.container-header .container-topbar .mod-languages a:hover,
body.site > header.container-header .container-topbar .mod-languages a:focus {
  text-decoration: underline;
}

/* Séparation visuelle entre les deux lignes du header */
body.site > header.container-header > .grid-child:not(.container-nav):not(.container-below-top),
body.site > header.container-header > .container-nav {
  min-height: 78px;
}

/* Bloc marque G-ENV */
body.site > header.container-header
  > .grid-child:not(.container-nav):not(.container-below-top) {
  flex: 0 0 auto !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0.5rem !important;
}

body.site > header.container-header .navbar-brand {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 2rem;
  line-height: 1;
}

body.site > header.container-header .navbar-brand a {
  text-decoration: none;
}

/* Bloc navigation */
body.site > header.container-header > .container-nav {
  flex: 1 1 0 !important;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0.5rem !important;
  align-items: center !important;
  justify-content: flex-end !important;
}

body.site > header.container-header nav {
  margin-top: 0 !important;
}

body.site > header.container-header .container-nav .mod-menu {
  justify-content: flex-end;
}

/*
 * Sous 768 px, retour à une structure empilée.
 * Le responsive fin sera traité lors de la recette mobile.
 */
@media (max-width: 767.98px) {
  body.site > header.container-header {
    display: block !important;
    min-height: 0;
    padding-left: 0;
    padding-right: 0;
  }

  body.site > header.container-header
    > .grid-child:not(.container-nav):not(.container-below-top),
  body.site > header.container-header > .container-nav {
    width: 100% !important;
    max-width: 1320px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: 0.5em !important;
  }

  body.site > header.container-header > .container-nav {
    justify-content: space-between !important;
  }

  body.site > header.container-header > .container-topbar {
    display: flex !important;
    min-height: 42px;
    padding: 5px 0.8rem !important;
  }

}

/* =========================================================
   14. FINITIONS TOPBAR / HEADER
   Base validée : V4
   ========================================================= */

/* Ne pas laisser les contrôles d'édition frontend Joomla
   perturber la mise en page pendant les sessions administrateur. */
body.site > header.container-header .container-topbar .jmodedit {
  display: none !important;
}

/* --- Topbar --- */

body.site > header.container-header > .container-topbar {
  min-height: 40px;
  padding-top: 4px !important;
  padding-bottom: 4px !important;
}

body.site > header.container-header .container-topbar img {
  max-height: 28px;
}

body.site > header.container-header .container-topbar .mod-languages {
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}

body.site > header.container-header .container-topbar .mod-languages a,
body.site > header.container-header .container-topbar .mod-languages span {
  padding: 0.2rem 0.35rem;
  border-radius: 5px;
}

/* Langue active : discrète mais identifiable */
body.site > header.container-header .container-topbar .mod-languages .lang-active > a,
body.site > header.container-header .container-topbar .mod-languages .lang-active > span {
  background: rgba(255, 255, 255, 0.14);
}

/* --- Ligne marque + navigation --- */

@media (min-width: 768px) {

  body.site > header.container-header
    > .grid-child:not(.container-nav):not(.container-below-top),
  body.site > header.container-header > .container-nav {
    min-height: 74px;
  }

  body.site > header.container-header .navbar-brand {
    font-size: 1.95rem;
    letter-spacing: -0.03em;
  }

  body.site > header.container-header .container-nav .mod-menu {
    gap: 0.15rem;
  }

  body.site > header.container-header .container-nav .mod-menu > li > a,
  body.site > header.container-header .container-nav .mod-menu > li > button {
    position: relative;
    padding: 0.75rem 0.85rem;
    border-radius: 7px;
    text-decoration: none;
    transition:
      color 0.18s ease,
      background-color 0.18s ease;
  }

  body.site > header.container-header .container-nav .mod-menu > li > a:hover,
  body.site > header.container-header .container-nav .mod-menu > li > a:focus,
  body.site > header.container-header .container-nav .mod-menu > li > button:hover,
  body.site > header.container-header .container-nav .mod-menu > li > button:focus {
    color: var(--genv-green);
    background: var(--genv-pale);
  }

  body.site > header.container-header .container-nav .mod-menu > li.active > a,
  body.site > header.container-header .container-nav .mod-menu > li.current > a {
    color: var(--genv-green);
    font-weight: 700;
  }
}

/* =========================================================
   15. SÉLECTEUR DE LANGUE — CORRECTION EXACTE JOOMLA 6
   mod_languages rend la langue active sans drapeau avec :
   <span class="badge bg-secondary">FR</span>
   ========================================================= */

/* Neutralise le fond gris natif placé sur le <li> actif. */
body.site > header.container-header
  .container-topbar div.mod-languages ul li.lang-active {
  background-color: transparent !important;
}

/* Vrai "bouton" visible de la langue active. */
body.site > header.container-header
  .container-topbar div.mod-languages
  li.lang-active .badge.bg-secondary {
  display: inline-block;
  padding: 0.28rem 0.48rem;
  border-radius: 5px;
  background-color: var(--genv-gold) !important;
  color: var(--genv-ink) !important;
  font-size: inherit;
  font-weight: 700;
  line-height: 1.1;
}

/* Le lien actif ne rajoute aucun fond autour du badge. */
body.site > header.container-header
  .container-topbar div.mod-languages
  li.lang-active > a {
  background: transparent !important;
  color: var(--genv-ink) !important;
  text-decoration: none !important;
}

/* Langue inactive : texte blanc, fond transparent. */
body.site > header.container-header
  .container-topbar div.mod-languages
  li:not(.lang-active) > a,
body.site > header.container-header
  .container-topbar div.mod-languages
  li:not(.lang-active) .label {
  background: transparent !important;
  color: var(--genv-white) !important;
}

/* Survol de la langue inactive. */
body.site > header.container-header
  .container-topbar div.mod-languages
  li:not(.lang-active) > a:hover,
body.site > header.container-header
  .container-topbar div.mod-languages
  li:not(.lang-active) > a:focus {
  background: rgba(255, 255, 255, 0.12) !important;
  border-radius: 5px;
}

/* =========================================================
   16. SOUS-MENUS / DROPDOWNS CASSIOPEIA
   Habillage uniquement : le fonctionnement MetisMenu natif
   de Joomla est conservé.
   ========================================================= */

@media (min-width: 768px) {

  /* Le menu doit pouvoir passer devant le hero et les autres sections. */
  body.site > header.container-header,
  body.site > header.container-header > .container-nav,
  body.site > header.container-header nav,
  body.site > header.container-header .metismenu.mod-menu {
    overflow: visible !important;
  }

  body.site > header.container-header {
    z-index: 1000;
  }

  /* Dropdown principal. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    > .metismenu-item > .mm-collapse {
    min-width: 280px;
    max-width: 340px;
    padding: 0.55rem 0 !important;

    border: 1px solid var(--genv-line);
    border-radius: 0 0 12px 12px;
    background: var(--genv-white) !important;

    box-shadow: 0 14px 32px rgba(24, 48, 42, 0.14) !important;
  }

  /* Un peu plus large pour les menus à intitulés longs. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    > .metismenu-item:nth-child(4) > .mm-collapse,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    > .metismenu-item:nth-child(6) > .mm-collapse {
    min-width: 300px;
  }

  /* Chaque entrée de dropdown. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item {
    width: 100%;
    padding: 0 !important;
    font-size: 0.94rem;
    line-height: 1.35;
  }

  /* Liens et éventuels boutons de sous-menu. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > span,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > button {
    width: 100%;
    min-height: 38px;
    padding: 0.55rem 1rem !important;

    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;

    color: var(--genv-ink) !important;
    background: transparent !important;
    border-radius: 0;
    text-align: left;
    text-decoration: none !important;
  }

  /* Hover / focus des entrées. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a:hover,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a:focus,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > button:hover,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > button:focus {
    color: var(--genv-green) !important;
    background: var(--genv-pale) !important;
  }

  /* Entrée active dans un dropdown. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item.active > a,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item.current > a {
    color: var(--genv-green) !important;
    background: #f3f8f6 !important;
    font-weight: 700;
  }

  /* Trait d'accent discret au début d'une entrée au survol/actif. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a {
    border-left: 3px solid transparent;
  }

  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a:hover,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item > a:focus,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item.active > a,
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse > .metismenu-item.current > a {
    border-left-color: var(--genv-green);
  }

  /* Niveau supplémentaire (ex. Ressources > Fiches Modules > ...).
     Cassiopeia le garde dans le dropdown : on le distingue légèrement. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse .metismenu-item > ul {
    position: relative !important;
    top: auto !important;
    width: 100%;
    margin: 0 !important;
    padding: 0.25rem 0 0.4rem 0.8rem !important;

    border: 0;
    border-top: 1px solid var(--genv-line);
    background: #f8faf9 !important;
    box-shadow: none !important;
  }

  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-collapse .metismenu-item > ul
    > .metismenu-item > a {
    min-height: 34px;
    padding: 0.42rem 0.85rem !important;
    font-size: 0.9rem;
    border-left: 2px solid transparent;
  }

  /* Le bouton chevron d'un parent ouvert reste cohérent. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    .mm-toggler[aria-expanded="true"] {
    color: var(--genv-green) !important;
  }

  /* Le parent de niveau 1 ouvert reste visuellement identifiable. */
  body.site > header.container-header
    .container-nav .metismenu.mod-menu
    > .metismenu-item.parent:has(> .mm-toggler[aria-expanded="true"]) {
    background: var(--genv-pale);
    border-radius: 8px 8px 0 0;
  }
}

/* =========================================================
   17. CONTRÔLES D'ÉDITION FRONTEND JOOMLA
   Le site de reconstruction est consulté connecté en admin.
   Ces boutons perturbent parfois les mises en page.
   L'édition reste disponible depuis l'administration Joomla.
   ========================================================= */

html body .jmodedit,
html body a.jmodedit,
html body .btn.jmodedit,
html body .btn.btn-link.jmodedit {
  display: none !important;
  visibility: hidden !important;
}

/* =========================================================
   18. FOOTER G-ENV
   Deux modules natifs : adresse à gauche, crédits à droite.
   ========================================================= */

body.site .container-footer {
  margin-top: 0;
  padding: 0;
  background: var(--genv-green-footer) !important;
  color: var(--genv-white);
}

body.site .container-footer > .grid-child {
  width: min(1180px, calc(100% - 40px));
  max-width: none;
  margin-inline: auto;
  padding: 46px 0 38px;

  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  gap: 48px;
  align-items: end;
}

/* Chaque module du footer */
body.site .container-footer .moduletable,
body.site .container-footer .mod-custom {
  margin: 0;
}

/* Bloc adresse */
body.site .container-footer h3,
body.site .container-footer h4 {
  margin: 0 0 0.65rem;
  color: var(--genv-white);
  font-size: 1.35rem;
  line-height: 1.2;
  font-weight: 750;
}

body.site .container-footer p {
  margin: 0;
  color: rgba(255, 255, 255, 0.92);
  line-height: 1.55;
}

/* Liens */
body.site .container-footer a {
  color: var(--genv-white);
  text-decoration-color: rgba(255, 255, 255, 0.45);
}

body.site .container-footer a:hover,
body.site .container-footer a:focus {
  color: var(--genv-gold);
  text-decoration-color: var(--genv-gold);
}

/* Crédit : aligné à droite sur desktop */
body.site .container-footer > .grid-child > *:last-child {
  text-align: right;
  justify-self: end;
  align-self: end;
  font-size: 0.92rem;
  color: rgba(255, 255, 255, 0.78);
}

/* Ligne supérieure discrète */
body.site .container-footer {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
}

@media (max-width: 767.98px) {
  body.site .container-footer > .grid-child {
    width: min(100% - 28px, 1180px);
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 34px 0 30px;
  }

  body.site .container-footer > .grid-child > *:last-child {
    text-align: left;
    justify-self: start;
  }
}
.genv-home__news-actions {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 30px;
}

.genv-home__news-actions .genv-home__btn {
  margin-inline: auto;
}

/* =========================================================
   19. NAVIGATION MOBILE — HAMBURGER CASSIOPEIA
   Le bouton natif est blanc par défaut dans Cassiopeia
   (prévu pour un header sombre). Le header G-ENV étant blanc,
   on le recolore et on place G-ENV + hamburger sur une ligne.
   ========================================================= */

@media (max-width: 767.98px) {

  /* Header : topbar sur 100 %, puis G-ENV + hamburger sur une ligne. */
  body.site > header.container-header {
    position: relative !important;
    z-index: 1000;
    display: flex !important;
    flex-flow: row wrap !important;
    align-items: center !important;
    min-height: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  body.site > header.container-header > .container-topbar {
    flex: 0 0 100% !important;
    width: 100% !important;
  }

  /* Bloc marque G-ENV */
  body.site > header.container-header
    > .grid-child:not(.container-nav):not(.container-below-top) {
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: none !important;
    min-height: 64px !important;
    margin: 0 !important;
    padding: 0.65rem 0.75rem !important;
    display: flex;
    align-items: center;
  }

  body.site > header.container-header .navbar-brand {
    margin: 0 !important;
    font-size: 1.8rem;
  }

  /* Bloc du bouton hamburger */
  body.site > header.container-header > .container-nav {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: none !important;
    min-height: 64px !important;
    margin: 0 0 0 auto !important;
    padding: 0.5rem 0.75rem !important;
    position: static !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
  }

  body.site > header.container-header .container-nav nav {
    margin: 0 !important;
    padding: 0 !important;
    position: static !important;
  }

  /* Bouton natif Cassiopeia : visible sur fond blanc. */
  body.site > header.container-header .navbar-toggler {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
    padding: 0.45rem 0.65rem !important;

    color: var(--genv-green-dark) !important;
    background: var(--genv-pale) !important;
    border: 1px solid #9fc9bc !important;
    border-radius: 8px !important;
    box-shadow: none !important;
  }

  body.site > header.container-header .navbar-toggler:hover,
  body.site > header.container-header .navbar-toggler:focus {
    color: var(--genv-white) !important;
    background: var(--genv-green) !important;
    border-color: var(--genv-green) !important;
  }

  body.site > header.container-header .navbar-toggler .icon-menu,
  body.site > header.container-header .navbar-toggler [class*="icon-"] {
    color: inherit !important;
    font-size: 1.25rem;
  }

  /* Menu ouvert : panneau blanc sous le header, pleine largeur. */
  body.site > header.container-header .container-nav .navbar-collapse {
    position: absolute !important;
    z-index: 1100;
    top: 100%;
    left: 0;
    right: 0;

    width: 100% !important;
    margin: 0 !important;
    padding: 0.6rem 0.9rem 1rem !important;

    background: var(--genv-white) !important;
    border-top: 1px solid var(--genv-line);
    box-shadow: 0 14px 30px rgba(24, 48, 42, 0.14);
  }

  body.site > header.container-header
    .container-nav .navbar-collapse.show {
    display: block !important;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu {
    display: flex !important;
    flex-direction: column !important;
    width: 100%;
    gap: 0.15rem;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu > li {
    width: 100%;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu > li > a,
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu > li > button {
    width: 100%;
    padding: 0.65rem 0.75rem !important;
    color: var(--genv-ink) !important;
    text-align: left;
  }
}

/* =========================================================
   20. NAVIGATION MOBILE — CHEVRONS SUR LA MÊME LIGNE
   Les parents avec sous-menu sont affichés en flex :
   intitulé + chevron côte à côte, sous-menu sur la ligne suivante.
   ========================================================= */

@media (max-width: 767.98px) {

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    width: 100%;
  }

  /* L'intitulé garde seulement la largeur dont il a besoin. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > a {
    flex: 0 1 auto !important;
    width: auto !important;
    padding-right: 0.35rem !important;
  }

  /* Le bouton chevron reste immédiatement après le texte. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > .mm-toggler {
    flex: 0 0 auto !important;
    width: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    margin: 0 !important;
    padding: 0.35rem !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    color: var(--genv-ink) !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > .mm-toggler:hover,
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > .mm-toggler:focus {
    color: var(--genv-green) !important;
    background: var(--genv-pale) !important;
    border-radius: 6px;
  }

  /* Le contenu du sous-menu repasse sur toute la largeur en dessous. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > .mm-collapse {
    flex: 0 0 100% !important;
    width: 100% !important;
  }

  /* Cas où Joomla rend le titre directement dans le bouton
     (ex. certaines entrées de type séparateur/heading). */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > .metismenu-item.parent > .mm-toggler:first-child {
    width: auto !important;
    min-width: 0 !important;
    justify-content: flex-start !important;
    gap: 0.35rem;
    padding-left: 0.75rem !important;
    padding-right: 0.5rem !important;
  }
}

/* =========================================================
   21. NAVIGATION MOBILE — CORRECTION EXACTE DES PARENTS LIÉS
   Cassiopeia rend certains parents sous la forme :
   <a>Intitulé</a><button class="mm-toggler-link"></button>
   On impose donc explicitement une grille 2 colonnes :
   texte | chevron
   puis le sous-menu sur toute la largeur.
   ========================================================= */

@media (max-width: 767.98px) {

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper {
    display: grid !important;
    grid-template-columns: max-content 34px 1fr;
    align-items: center !important;
    column-gap: 0.2rem;
    width: 100%;
  }

  /* Lien parent cliquable */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper > a {
    grid-column: 1 !important;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0.65rem 0 0.65rem 0.75rem !important;
  }

  /* Chevron séparé généré par Joomla */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper
    > button.mm-toggler.mm-toggler-link {
    grid-column: 2 !important;
    width: 34px !important;
    min-width: 34px !important;
    height: 34px !important;
    min-height: 34px !important;

    margin: 0 !important;
    padding: 0 !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    color: var(--genv-ink) !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper
    > button.mm-toggler.mm-toggler-link:hover,
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper
    > button.mm-toggler.mm-toggler-link:focus {
    color: var(--genv-green) !important;
    background: var(--genv-pale) !important;
    border-radius: 6px;
  }

  /* Le sous-menu passe sous texte + chevron. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper > ul.mm-collapse {
    grid-column: 1 / -1 !important;
    width: 100% !important;
  }

  /* Cas heading/separator type Ressources :
     il reste tel quel puisque texte + chevron sont déjà dans le même bouton. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper
    > button.mm-toggler-nolink {
    grid-column: 1 / span 2 !important;
    width: auto !important;
    justify-self: start;
  }
}

/* =========================================================
   22. NAVIGATION MOBILE — ALIGNEMENT FINAL DES CHEVRONS
   Cas réel Joomla :
   <li class="... deeper parent">
     <a>Intitulé</a>
     <button class="mm-toggler mm-toggler-link"></button>
     <ul class="mm-collapse">...</ul>
   </li>

   Ressources utilise mm-toggler-nolink et n'est pas modifié ici.
   ========================================================= */

@media (max-width: 767.98px) {

  /* Parents cliquables uniquement : exclut les separators/dividers
     comme "Ressources". */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider) {
    display: flex !important;
    flex-flow: row wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
  }

  /* Le texte prend seulement sa largeur naturelle. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider) > a {
    flex: 0 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: calc(100% - 40px) !important;
    margin: 0 !important;
    padding: 0.65rem 0.25rem 0.65rem 0.75rem !important;
  }

  /* IMPORTANT :
     Cassiopeia positionne ce bouton séparément.
     On le remet explicitement dans le flux après le texte. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider)
    > button.mm-toggler.mm-toggler-link {
    position: static !important;
    inset: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    transform: none !important;
    float: none !important;

    flex: 0 0 34px !important;
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    height: 34px !important;
    min-height: 34px !important;

    margin: 0 0 0 0.1rem !important;
    padding: 0 !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    color: var(--genv-ink) !important;
    background: transparent !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
  }

  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider)
    > button.mm-toggler.mm-toggler-link:hover,
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider)
    > button.mm-toggler.mm-toggler-link:focus {
    color: var(--genv-green) !important;
    background: var(--genv-pale) !important;
    border-radius: 6px !important;
  }

  /* Le sous-menu occupe obligatoirement la ligne suivante. */
  body.site > header.container-header
    .container-nav .navbar-collapse .mod-menu
    > li.metismenu-item.deeper.parent:not(.divider)
    > ul.mm-collapse {
    flex: 0 0 100% !important;
    width: 100% !important;
    margin-top: 0 !important;
  }
}

/* =========================================================
   23. HOMEPAGE — PICTOGRAMMES DES FORMATIONS
   ========================================================= */

.genv-home__training-card {
  min-height: 265px;
  align-items: flex-start;
}

.genv-home__training-picto {
  display: block;
  width: 132px;
  height: 132px;
  margin: 0 auto 14px;
  object-fit: contain;
  align-self: center;
}

/* Tous les pictogrammes sont désormais normalisés sur le même canevas. */
.genv-home__training-picto--short {
  width: 132px;
  height: 132px;
  border-radius: 0;
  object-fit: contain;
  filter: none;
}

.genv-home__training-card small {
  margin-top: auto;
}

.genv-home__training-card h3 {
  margin-top: 10px;
}

/* =========================================================
   24. HOMEPAGE — PAROLES DE G-ENV / VIDÉOS
   Intégration directe YouTube responsive.
   ========================================================= */

.genv-home__video-card {
  overflow: hidden;
  border: 1px solid var(--genv-line);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.10);
}

.genv-home__video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #000;
}

.genv-home__video-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.genv-home__video-body {
  padding: 20px 22px 22px;
}

.genv-home__video-body small {
  display: block;
  margin-bottom: 7px;
  color: var(--genv-green);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.genv-home__video-card:nth-child(2) .genv-home__video-body small {
  color: var(--genv-orange);
}

.genv-home__video-body h3 {
  margin: 0;
  color: var(--genv-ink);
  font-size: 1.24rem;
  line-height: 1.3;
}

@media (max-width: 560px) {
  .genv-home__training-card {
    min-height: 235px;
  }

  .genv-home__training-picto,
  .genv-home__training-picto--short {
    width: 118px;
    height: 118px;
  }
}

/* =========================================================
   25. PAGES INTERNES G-ENV
   Gabarit réutilisable — première application : Qui sommes-nous ?
   ========================================================= */

.genv-page {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin: 0 auto;
  padding: 64px 0 76px;
  color: var(--genv-ink);
  line-height: 1.55;
}

.genv-page,
.genv-page * {
  box-sizing: border-box;
}

.genv-page__header {
  max-width: 900px;
  margin-bottom: 38px;
}

.genv-page__eyebrow {
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.genv-page__header h1 {
  margin: 8px 0 18px;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.3rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

.genv-page__lead {
  max-width: 780px;
  margin: 0;
  color: var(--genv-muted);
  font-size: 1.22rem;
}

.genv-page__team-photo {
  margin: 0 0 62px;
  overflow: hidden;
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: var(--genv-shadow);
}

.genv-page__team-photo img {
  display: block;
  width: 100%;
  height: auto;
}

.genv-page__team-photo figcaption {
  margin: 0;
  padding: 14px 20px 17px;
  color: var(--genv-muted);
  font-size: 0.9rem;
  text-align: center;
}

.genv-page__team-section {
  margin-inline: calc(50% - 50vw);
  padding: 68px max(20px, calc((100vw - var(--genv-content-width)) / 2));
  background: var(--genv-sand);
}

.genv-page__section-head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: end;
  gap: 40px;
  margin-bottom: 30px;
}

.genv-page__section-head h2 {
  margin: 5px 0 0;
  color: var(--genv-ink);
  font-size: clamp(2.2rem, 4vw, 3.8rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

.genv-page__section-head > p {
  margin: 0;
  color: var(--genv-muted);
  font-size: 1.05rem;
}

.genv-page__campus-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  gap: 22px;
  align-items: start;
}

.genv-page__campus-card {
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 10px 26px rgba(20, 40, 35, 0.06);
}

.genv-page__campus-head {
  padding: 24px 26px 20px;
  border-bottom: 1px solid var(--genv-line);
  background: var(--genv-pale);
}

.genv-page__campus-head small {
  display: block;
  margin-bottom: 4px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.genv-page__campus-head h3 {
  margin: 0;
  color: var(--genv-ink);
  font-size: 1.55rem;
  line-height: 1.15;
}

.genv-page__people {
  margin: 0;
  padding: 12px 26px 20px;
  list-style: none;
}

.genv-page__people li {
  padding: 13px 0;
  border-bottom: 1px solid var(--genv-line);
}

.genv-page__people li:last-child {
  border-bottom: 0;
}

.genv-page__people a {
  color: var(--genv-green-dark);
  font-weight: 750;
  text-decoration: none;
}

.genv-page__people a:hover,
.genv-page__people a:focus {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

.genv-page__people span {
  display: block;
  margin-top: 2px;
  color: #4f5c61;
  font-size: 0.93rem;
}

.genv-page__related {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
  padding-top: 64px;
}

.genv-page__related-card {
  min-height: 190px;
  display: block;
  padding: 30px;
  border-radius: var(--genv-radius);
  color: var(--genv-white) !important;
  text-decoration: none;
  box-shadow: var(--genv-shadow);
}

.genv-page__related-card--green {
  background: var(--genv-green-dark);
}

.genv-page__related-card--orange {
  background: #8c4b19;
}

.genv-page__related-card small {
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0.78;
}

.genv-page__related-card h3 {
  margin: 12px 0 8px;
  color: var(--genv-white);
  font-size: 1.8rem;
  line-height: 1.1;
}

.genv-page__related-card p {
  max-width: 520px;
  margin: 0;
  color: rgba(255, 255, 255, 0.9);
}

.genv-page__related-card strong {
  display: inline-block;
  margin-top: 22px;
  color: var(--genv-gold);
}

.genv-page__related-card:hover,
.genv-page__related-card:focus {
  transform: translateY(-2px);
  box-shadow: 0 18px 42px rgba(24, 48, 42, 0.16);
}

@media (max-width: 900px) {
  .genv-page {
    padding-top: 50px;
  }

  .genv-page__section-head,
  .genv-page__campus-grid,
  .genv-page__related {
    grid-template-columns: 1fr;
  }

  .genv-page__section-head {
    align-items: start;
  }
}

@media (max-width: 560px) {
  .genv-page {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding: 42px 0 56px;
  }

  .genv-page__header {
    margin-bottom: 28px;
  }

  .genv-page__lead {
    font-size: 1.08rem;
  }

  .genv-page__team-photo {
    margin-bottom: 46px;
    border-radius: 14px;
  }

  .genv-page__team-section {
    padding-top: 48px;
    padding-bottom: 48px;
  }

  .genv-page__campus-head,
  .genv-page__people,
  .genv-page__related-card {
    padding-left: 20px;
    padding-right: 20px;
  }

  .genv-page__related {
    padding-top: 48px;
  }
}

/* =========================================================
   26. PAGE PARTENAIRES
   Complément au gabarit .genv-page
   ========================================================= */

.genv-page__partners-photo {
  margin: 0 0 56px;
  overflow: hidden;
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: var(--genv-shadow);
}

.genv-page__partners-photo img {
  display: block;
  width: 100%;
  height: auto;
}

.genv-page__partners-intro {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 60px;
  align-items: start;
  margin-bottom: 36px;
}

.genv-page__partners-intro h2 {
  margin: 6px 0 0;
  color: var(--genv-ink);
  font-size: clamp(2.2rem, 4vw, 3.7rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

.genv-page__partners-copy p {
  margin: 0 0 16px;
  color: #46555a;
  font-size: 1.05rem;
}

.genv-page__partners-role {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin: 38px 0 56px;
}

.genv-page__partners-role-card {
  padding: 26px;
  border: 1px solid var(--genv-line);
  border-radius: var(--genv-radius);
  background: linear-gradient(180deg, var(--genv-white), #fbfcfb);
}

.genv-page__partners-role-number {
  color: var(--genv-gold);
  font-size: 0.78rem;
  font-weight: 850;
  letter-spacing: 0.12em;
}

.genv-page__partners-role-card h3 {
  margin: 9px 0 8px;
  color: var(--genv-ink);
  font-size: 1.25rem;
}

.genv-page__partners-role-card p {
  margin: 0;
  color: var(--genv-muted);
}

.genv-page__partners-uses {
  margin: 0 0 64px;
  padding: 30px 34px;
  border-left: 6px solid var(--genv-gold);
  border-radius: var(--genv-radius);
  background: var(--genv-pale);
}

.genv-page__partners-uses p {
  margin: 0;
  color: #33464a;
  font-size: 1.08rem;
}

.genv-page__partners-directory {
  margin-inline: calc(50% - 50vw);
  padding: 68px max(20px, calc((100vw - var(--genv-content-width)) / 2));
  background: var(--genv-sand);
}

.genv-page__partners-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
  align-items: start;
}

.genv-page__partner-card {
  overflow: hidden;
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 10px 26px rgba(20, 40, 35, 0.06);
}

.genv-page__partner-card-head {
  padding: 24px 26px 20px;
  border-bottom: 1px solid var(--genv-line);
  background: var(--genv-pale);
}

.genv-page__partner-card-head small {
  display: block;
  margin-bottom: 4px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 800;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.genv-page__partner-card-head h3 {
  margin: 0;
  color: var(--genv-ink);
  font-size: 1.45rem;
  line-height: 1.15;
}

.genv-page__partner-card ul {
  margin: 0;
  padding: 14px 26px 22px 46px;
}

.genv-page__partner-card li {
  padding: 7px 0;
  color: #445257;
  border-bottom: 1px solid #edf0ee;
}

.genv-page__partner-card li:last-child {
  border-bottom: 0;
}

.genv-page__partner-card a {
  color: var(--genv-green-dark);
  font-weight: 700;
}

@media (max-width: 900px) {
  .genv-page__partners-intro,
  .genv-page__partners-grid {
    grid-template-columns: 1fr;
  }

  .genv-page__partners-role {
    grid-template-columns: 1fr;
  }

  .genv-page__partners-intro {
    gap: 24px;
  }
}

@media (max-width: 560px) {
  .genv-page__partners-photo {
    margin-bottom: 42px;
    border-radius: 14px;
  }

  .genv-page__partners-role {
    margin: 30px 0 44px;
  }

  .genv-page__partners-uses {
    margin-bottom: 48px;
    padding: 24px 22px;
  }

  .genv-page__partners-directory {
    padding-top: 48px;
    padding-bottom: 48px;
  }

  .genv-page__partner-card-head {
    padding-left: 20px;
    padding-right: 20px;
  }

  .genv-page__partner-card ul {
    padding-left: 38px;
    padding-right: 20px;
  }
}

/* =========================================================
   27. ANCIENS DOCTORANTS — BLOG DE CATÉGORIE JOOMLA
   Menu FR : ajouter la classe de page "genv-phd-grid"
   ========================================================= */

body.genv-phd-grid .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  max-width: none;
  margin-inline: auto;
  padding-top: 64px;
  padding-bottom: 76px;
}

body.genv-phd-grid .blog {
  color: var(--genv-ink);
}

body.genv-phd-grid .blog > .page-header {
  max-width: 900px;
  margin: 0 0 18px;
}

body.genv-phd-grid .blog > .page-header h1,
body.genv-phd-grid .blog > h1 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.3rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

body.genv-phd-grid .blog > .page-header::before {
  content: "G-ENV · RECHERCHE";
  display: block;
  margin-bottom: 10px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
}

body.genv-phd-grid .blog .category-desc {
  max-width: 820px;
  margin: 0 0 42px;
  color: var(--genv-muted);
  font-size: 1.12rem;
  line-height: 1.6;
}

body.genv-phd-grid .blog .category-desc p {
  margin: 0;
}

body.genv-phd-grid .blog .blog-items,
body.genv-phd-grid .blog .items-leading {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}

body.genv-phd-grid .blog .blog-item {
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.09);
}

body.genv-phd-grid .blog .blog-item > *,
body.genv-phd-grid .blog .blog-item .item-content {
  min-width: 0;
}

body.genv-phd-grid .blog .blog-item figure,
body.genv-phd-grid .blog .blog-item .item-image {
  margin: 0;
  overflow: hidden;
}

body.genv-phd-grid .blog .blog-item .item-image img,
body.genv-phd-grid .blog .blog-item figure img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
}

body.genv-phd-grid .blog .blog-item .item-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 24px 25px 26px;
}

body.genv-phd-grid .blog .blog-item .page-header {
  margin: 0 0 12px;
}

body.genv-phd-grid .blog .blog-item .page-header h2,
body.genv-phd-grid .blog .blog-item h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: 1.45rem;
  line-height: 1.12;
  letter-spacing: -0.025em;
}

body.genv-phd-grid .blog .blog-item .page-header h2 a,
body.genv-phd-grid .blog .blog-item h2 a {
  color: var(--genv-ink);
  text-decoration: none;
}

body.genv-phd-grid .blog .blog-item .page-header h2 a:hover,
body.genv-phd-grid .blog .blog-item .page-header h2 a:focus,
body.genv-phd-grid .blog .blog-item h2 a:hover,
body.genv-phd-grid .blog .blog-item h2 a:focus {
  color: var(--genv-green);
}

body.genv-phd-grid .blog .blog-item .article-info {
  margin: 0 0 12px;
  color: var(--genv-muted);
  font-size: 0.82rem;
}

body.genv-phd-grid .blog .blog-item p {
  color: #4f5c61;
  line-height: 1.55;
}

body.genv-phd-grid .blog .blog-item .readmore,
body.genv-phd-grid .blog .blog-item .readmore-btn {
  margin-top: auto;
  padding-top: 12px;
}

body.genv-phd-grid .blog .blog-item .readmore a,
body.genv-phd-grid .blog .blog-item .readmore-btn a,
body.genv-phd-grid .blog .blog-item a.btn {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0.6rem 0.9rem;
  border: 0;
  border-radius: 8px;
  background: var(--genv-green);
  color: var(--genv-white);
  font-weight: 750;
  text-decoration: none;
}

body.genv-phd-grid .blog .blog-item .readmore a:hover,
body.genv-phd-grid .blog .blog-item .readmore a:focus,
body.genv-phd-grid .blog .blog-item .readmore-btn a:hover,
body.genv-phd-grid .blog .blog-item .readmore-btn a:focus,
body.genv-phd-grid .blog .blog-item a.btn:hover,
body.genv-phd-grid .blog .blog-item a.btn:focus {
  background: var(--genv-green-dark);
  color: var(--genv-white);
}

body.genv-phd-grid .blog .pagination {
  margin-top: 42px;
}

@media (max-width: 980px) {
  body.genv-phd-grid .blog .blog-items,
  body.genv-phd-grid .blog .items-leading {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  body.genv-phd-grid .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding-top: 42px;
    padding-bottom: 56px;
  }

  body.genv-phd-grid .blog .category-desc {
    margin-bottom: 30px;
    font-size: 1.04rem;
  }

  body.genv-phd-grid .blog .blog-items,
  body.genv-phd-grid .blog .items-leading {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  body.genv-phd-grid .blog .blog-item .item-content {
    padding: 21px 20px 23px;
  }
}

/* =========================================================
   28. PERSONNELS DE L'UFR — EN-TÊTE ÉDITORIAL + GRILLE DE VIGNETTES
   Menu FR : ajouter la classe de page "genv-staff-grid"
   Le nombre de colonnes est géré ici par CSS.
   ========================================================= */

body.genv-staff-grid .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  max-width: none;
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 76px;
}

body.genv-staff-grid .blog {
  color: var(--genv-ink);
}

/* En-tête éditorial */
body.genv-staff-grid .blog > .page-header {
  max-width: 900px;
  margin: 0 0 18px;
}

body.genv-staff-grid .blog > .page-header::before {
  content: "G-ENV · ÉQUIPE";
  display: block;
  margin-bottom: 10px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
}

body.genv-staff-grid .blog > .page-header h1,
body.genv-staff-grid .blog > h1 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.3rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

body.genv-staff-grid .blog .category-desc {
  max-width: 850px;
  margin: 0 0 42px;
  color: var(--genv-muted);
  font-size: 1.12rem;
  line-height: 1.6;
}

body.genv-staff-grid .blog .category-desc p {
  margin: 0;
}

/* La grille Joomla native devient une vraie grille de portraits. */
body.genv-staff-grid .blog .blog-items,
body.genv-staff-grid .blog .items-leading {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}

/* Une personne = une carte. */
body.genv-staff-grid .blog .blog-item {
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.09);
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}

body.genv-staff-grid .blog .blog-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 38px rgba(24, 48, 42, 0.14);
}

/* Neutralise les anciens flottements Joomla des images d'introduction. */
body.genv-staff-grid .blog .blog-item figure,
body.genv-staff-grid .blog .blog-item .item-image,
body.genv-staff-grid .blog .blog-item .item-image.float-start,
body.genv-staff-grid .blog .blog-item .item-image.float-end {
  float: none !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  overflow: hidden;
  background: var(--genv-pale);
}

/* Tous les portraits ont exactement le même format. */
body.genv-staff-grid .blog .blog-item .item-image img,
body.genv-staff-grid .blog .blog-item figure img {
  display: block;
  width: 100% !important;
  max-width: none !important;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: center;
}

/* Contenu sous la photo. */
body.genv-staff-grid .blog .blog-item .item-content {
  min-width: 0;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 20px 21px 22px;
}

body.genv-staff-grid .blog .blog-item .page-header {
  margin: 0;
}

body.genv-staff-grid .blog .blog-item .page-header h2,
body.genv-staff-grid .blog .blog-item h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: 1.24rem;
  line-height: 1.18;
  letter-spacing: -0.025em;
}

body.genv-staff-grid .blog .blog-item .page-header h2 a,
body.genv-staff-grid .blog .blog-item h2 a {
  color: var(--genv-green-dark);
  text-decoration: none;
}

body.genv-staff-grid .blog .blog-item .page-header h2 a:hover,
body.genv-staff-grid .blog .blog-item .page-header h2 a:focus,
body.genv-staff-grid .blog .blog-item h2 a:hover,
body.genv-staff-grid .blog .blog-item h2 a:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

/* Éventuel texte d'introduction d'une fiche. */
body.genv-staff-grid .blog .blog-item .item-content > p {
  margin: 12px 0 0;
  color: var(--genv-muted);
  font-size: 0.92rem;
  line-height: 1.5;
}

/* Les contrôles d'édition frontend ne doivent pas déformer la grille
   pendant les tests connecté en administrateur. */
body.genv-staff-grid .blog-item .icons,
body.genv-staff-grid .blog-item .btn-group,
body.genv-staff-grid .blog-item a[href*="task=article.edit"] {
  display: none !important;
}

/* Pagination éventuelle. */
body.genv-staff-grid .blog .pagination {
  margin-top: 42px;
}

/* Responsive */
@media (max-width: 1050px) {
  body.genv-staff-grid .blog .blog-items,
  body.genv-staff-grid .blog .items-leading {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  body.genv-staff-grid .blog .blog-items,
  body.genv-staff-grid .blog .items-leading {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }
}

@media (max-width: 520px) {
  body.genv-staff-grid .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding-top: 40px;
    padding-bottom: 56px;
  }

  body.genv-staff-grid .blog .category-desc {
    margin-bottom: 30px;
    font-size: 1.04rem;
  }

  body.genv-staff-grid .blog .blog-items,
  body.genv-staff-grid .blog .items-leading {
    grid-template-columns: 1fr;
  }

  body.genv-staff-grid .blog .blog-item .item-content {
    padding: 19px 20px 21px;
  }
}

/* =========================================================
   29. VENIR NOUS VOIR — CAMPUS & ACCÈS
   Article #64 / menu #115
   ========================================================= */

.contact-native {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding: 64px 0 78px;
  color: var(--genv-ink);
}

.contact-native__hero {
  max-width: 900px;
  margin-bottom: 52px;
}

.contact-native__eyebrow,
.contact-access-card__label {
  margin: 0 0 10px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
}

.contact-native__hero h1 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.3rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

.contact-native__intro {
  max-width: 780px;
  margin: 20px 0 0;
  color: var(--genv-muted);
  font-size: 1.12rem;
  line-height: 1.6;
}

.contact-native__campuses,
.contact-native__access,
.contact-native__palaiseau {
  margin-top: 58px;
}

.contact-native__section-head {
  margin-bottom: 22px;
}

.contact-native__section-head h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2rem, 3.4vw, 3.15rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

.contact-native__campus-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, 0.9fr);
  gap: 24px;
  align-items: start;
}

.contact-map--noiframe {
  align-self: start;
}

.contact-map--noiframe .contact-map__link--standalone {
  padding: 16px 0 0;
}

.contact-map,
.contact-campus-photo,
.contact-access-card {
  overflow: hidden;
  margin: 0;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.09);
}

.contact-map {
  display: flex;
  min-width: 0;
  flex-direction: column;
}

.contact-map__content {
  padding: 24px 26px 20px;
}

.contact-map__content h3 {
  margin: 0 0 10px;
  color: var(--genv-ink);
  font-size: 1.35rem;
  line-height: 1.2;
}

.contact-map__content p {
  margin: 0;
  color: var(--genv-muted);
  line-height: 1.55;
}

.contact-map__iframe {
  display: block;
  width: 100%;
  height: 390px;
  border: 0;
}

.contact-map__link {
  margin: 0;
  padding: 15px 26px 18px;
}

.contact-map__link a,
.contact-native__transport-link a {
  color: var(--genv-green-dark);
  font-weight: 750;
  text-decoration: none;
}

.contact-map__link a:hover,
.contact-map__link a:focus,
.contact-native__transport-link a:hover,
.contact-native__transport-link a:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.contact-campus-photo {
  display: flex;
  flex-direction: column;
}

.contact-campus-photo img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 390px;
  object-fit: cover;
}

.contact-campus-photo figcaption {
  padding: 14px 18px 16px;
  color: var(--genv-muted);
  font-size: 0.88rem;
  line-height: 1.4;
}

.contact-native__access {
  padding: 58px 0;
}

.contact-native__access-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}

.contact-access-card {
  display: flex;
  flex-direction: column;
}

.contact-access-card > img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 8.6;
  object-fit: cover;
}

.contact-access-card__content {
  flex: 1 1 auto;
  padding: 24px 26px 28px;
}

.contact-access-card__label {
  color: var(--genv-orange);
}

.contact-access-card h3 {
  margin: 0 0 18px;
  color: var(--genv-ink);
  font-size: 1.45rem;
  line-height: 1.18;
}

.contact-access-card ul {
  margin: 0;
  padding-left: 1.15rem;
  color: #4f5c61;
  line-height: 1.55;
}

.contact-access-card li + li {
  margin-top: 8px;
}

.contact-native__transport-link {
  margin-top: 24px;
  padding: 18px 22px;
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 10px 10px 0;
  background: var(--genv-pale);
}

.contact-native__palaiseau {
  padding-top: 6px;
}

.contact-map--palaiseau .contact-map__iframe {
  height: 430px;
}

/* Évite qu'un contrôle frontend d'édition ne perturbe la page. */
body .contact-native ~ .icons,
body .contact-native .icons,
body .contact-native a[href*="task=article.edit"] {
  display: none !important;
}

@media (max-width: 920px) {
  .contact-native__campus-grid,
  .contact-native__access-grid {
    grid-template-columns: 1fr;
  }

  .contact-campus-photo img {
    min-height: 0;
    aspect-ratio: 16 / 8.5;
  }
}

@media (max-width: 640px) {
  .contact-native {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding-top: 42px;
    padding-bottom: 56px;
  }

  .contact-native__hero {
    margin-bottom: 40px;
  }

  .contact-native__campuses,
  .contact-native__access,
  .contact-native__palaiseau {
    margin-top: 42px;
  }

  .contact-native__access {
    padding: 42px 0;
  }

  .contact-map__content,
  .contact-access-card__content {
    padding-left: 20px;
    padding-right: 20px;
  }

  .contact-map__iframe,
  .contact-map--palaiseau .contact-map__iframe {
    height: 310px;
  }
}

/* =========================================================
   30. FICHE INDIVIDUELLE CONTACT — ÉQUIPE G-ENV
   Override : com_contact/contact/default.php
   ========================================================= */

.genv-contact-profile {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding: 58px 0 82px;
  color: var(--genv-ink);
}

.genv-contact-profile__back {
  display: inline-block;
  margin-bottom: 34px;
  color: var(--genv-green-dark);
  font-weight: 800;
  text-decoration: none;
}

.genv-contact-profile__back:hover,
.genv-contact-profile__back:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

.genv-contact-profile__hero {
  max-width: 900px;
  margin-bottom: 44px;
}

.genv-contact-profile__eyebrow,
.genv-contact-profile__kicker {
  margin: 0 0 10px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.genv-contact-profile__hero h1 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.15rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

.genv-contact-profile__role {
  max-width: 820px;
  margin: 18px 0 0;
  color: var(--genv-muted);
  font-size: 1.15rem;
  line-height: 1.55;
}

.genv-contact-profile__layout {
  display: grid;
  grid-template-columns: minmax(250px, 310px) minmax(0, 1fr);
  gap: 52px;
  align-items: start;
}

.genv-contact-profile__aside {
  min-width: 0;
}

.genv-contact-profile__photo {
  overflow: hidden;
  border-radius: var(--genv-radius);
  background: var(--genv-pale);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.10);
}

.genv-contact-profile__photo img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

.genv-contact-profile__photo-placeholder {
  display: grid;
  width: 100%;
  aspect-ratio: 1 / 1;
  place-items: center;
  color: var(--genv-green-dark);
  font-size: 1.7rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.genv-contact-profile__contact-card {
  margin-top: 20px;
  padding: 23px 24px 24px;
  border-radius: var(--genv-radius);
  background: var(--genv-pale);
}

.genv-contact-profile__contact-card h2 {
  margin: 0 0 17px;
  color: var(--genv-ink);
  font-size: 1.3rem;
  letter-spacing: -0.025em;
}

.genv-contact-profile__contact-row {
  padding: 11px 0;
  border-top: 1px solid rgba(15, 119, 95, 0.12);
  overflow-wrap: anywhere;
}

.genv-contact-profile__contact-row:first-of-type {
  border-top: 0;
  padding-top: 0;
}

.genv-contact-profile__contact-row > span {
  display: block;
  margin-bottom: 3px;
  color: var(--genv-muted);
  font-size: 0.75rem;
  font-weight: 750;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.genv-contact-profile__contact-row a,
.genv-contact-profile__email joomla-hidden-mail {
  color: var(--genv-green-dark);
  font-weight: 750;
}

.genv-contact-profile__contact-row a {
  text-decoration: none;
}

.genv-contact-profile__contact-row a:hover,
.genv-contact-profile__contact-row a:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-underline-offset: 0.16em;
}

.genv-contact-profile__resources {
  margin-top: 18px;
  padding: 19px 20px;
  border: 1px solid var(--genv-line);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
}

.genv-contact-profile__resources-title {
  margin: 0 0 12px;
  color: var(--genv-ink);
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.genv-contact-profile__resource-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.genv-contact-profile__resource-links a {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 11px;
  border-radius: 999px;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 0.82rem;
  font-weight: 800;
  text-decoration: none;
}

.genv-contact-profile__resource-links a:hover,
.genv-contact-profile__resource-links a:focus {
  background: #e4eee9;
  color: var(--genv-green);
}

.genv-contact-profile__main {
  min-width: 0;
}

.genv-contact-profile__section {
  padding: 0 0 30px;
  margin: 0 0 30px;
  border-bottom: 1px solid var(--genv-line);
}

.genv-contact-profile__section:last-child {
  margin-bottom: 0;
  border-bottom: 0;
}

.genv-contact-profile__section h2 {
  margin: 0 0 16px;
  color: var(--genv-ink);
  font-size: clamp(1.65rem, 2.5vw, 2.2rem);
  line-height: 1.08;
  letter-spacing: -0.035em;
}

.genv-contact-profile__richtext {
  color: #46555a;
  font-size: 1rem;
  line-height: 1.68;
  text-align: justify;
  text-justify: inter-word;
  hyphens: auto;
}

.genv-contact-profile__richtext > :first-child {
  margin-top: 0;
}

.genv-contact-profile__richtext > :last-child {
  margin-bottom: 0;
}

.genv-contact-profile__richtext p,
.genv-contact-profile__richtext li {
  text-align: justify;
  text-justify: inter-word;
  hyphens: auto;
}

.genv-contact-profile__richtext a {
  color: var(--genv-green-dark);
  font-weight: 700;
  text-underline-offset: 0.14em;
}

.genv-contact-profile__empty {
  min-height: 1px;
}

/* La fiche G-ENV n'utilise volontairement pas le formulaire de contact natif. */
.genv-contact-profile + .com-contact__form,
.genv-contact-profile .com-contact__form {
  display: none !important;
}

/* Évite que les contrôles d'édition frontend perturbent la maquette connectée. */
body:has(.genv-contact-profile) .icons,
body:has(.genv-contact-profile) a[href*="task=contact.edit"] {
  display: none !important;
}

@media (max-width: 820px) {
  .genv-contact-profile__layout {
    grid-template-columns: 1fr;
    gap: 34px;
  }

  .genv-contact-profile__aside {
    display: grid;
    grid-template-columns: minmax(180px, 280px) minmax(0, 1fr);
    gap: 20px;
    align-items: start;
  }

  .genv-contact-profile__contact-card {
    margin-top: 0;
  }

  .genv-contact-profile__resources {
    grid-column: 1 / -1;
    margin-top: 0;
  }
}

@media (max-width: 560px) {
  .genv-contact-profile {
    width: calc(100% - 26px);
    padding-top: 40px;
    padding-bottom: 58px;
  }

  .genv-contact-profile__back {
    margin-bottom: 26px;
  }

  .genv-contact-profile__hero {
    margin-bottom: 34px;
  }

  .genv-contact-profile__aside {
    grid-template-columns: 1fr;
  }

  .genv-contact-profile__photo {
    max-width: 300px;
  }

  .genv-contact-profile__resources {
    grid-column: auto;
  }
}

/* =========================================================
   31. ANNUAIRE CONTACTS — ÉQUIPE G-ENV
   Overrides :
   com_contact/category/default.php
   com_contact/category/default_items.php
   ========================================================= */

.genv-contact-directory {
  color: var(--genv-ink);
}

.genv-contact-directory__hero,
.genv-contact-directory__section {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
}

.genv-contact-directory__hero {
  padding: 64px 0 48px;
}

.genv-contact-directory__eyebrow {
  margin: 0 0 11px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.genv-contact-directory__hero h1 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(3rem, 6vw, 5.2rem);
  line-height: 0.96;
  letter-spacing: -0.055em;
}

.genv-contact-directory__intro {
  max-width: 830px;
  margin-top: 20px;
  color: var(--genv-muted);
  font-size: 1.12rem;
  line-height: 1.6;
}

.genv-contact-directory__intro > :first-child {
  margin-top: 0;
}

.genv-contact-directory__intro > :last-child {
  margin-bottom: 0;
}

.genv-contact-directory__section {
  padding: 34px 0 82px;
}

.genv-contact-directory__section-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 1fr);
  gap: 44px;
  align-items: end;
  margin-bottom: 30px;
}

.genv-contact-directory__section-head h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2rem, 3.4vw, 3.15rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

.genv-contact-directory__section-head > p {
  margin: 0;
  color: var(--genv-muted);
  line-height: 1.58;
}

.genv-contact-directory__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  align-items: stretch;
}

.genv-contact-card {
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(0, 0, 0, 0.04);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.09);
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}

.genv-contact-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 38px rgba(24, 48, 42, 0.14);
}

.genv-contact-card__top {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr);
  min-height: 118px;
  color: inherit;
  text-decoration: none;
}

.genv-contact-card__photo {
  overflow: hidden;
  height: 118px;
  align-self: start;
  background: var(--genv-pale);
}

.genv-contact-card__photo img {
  display: block;
  width: 100%;
  height: 118px;
  object-fit: cover;
}

.genv-contact-card__placeholder {
  display: grid;
  width: 100%;
  height: 118px;
  place-items: center;
  color: var(--genv-green-dark);
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.genv-contact-card__summary {
  min-width: 0;
  padding: 17px 18px 15px;
}

.genv-contact-card__summary h3 {
  margin: 0 0 7px;
  color: var(--genv-green-dark);
  font-size: 1.12rem;
  line-height: 1.18;
  letter-spacing: -0.02em;
}

.genv-contact-card__top:hover h3,
.genv-contact-card__top:focus h3 {
  color: var(--genv-green);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

.genv-contact-card__role {
  margin: 0;
  color: var(--genv-muted);
  font-size: 0.87rem;
  line-height: 1.4;
}

.genv-contact-card__campus {
  display: inline-block;
  margin-top: 10px;
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 0.70rem;
  font-weight: 800;
  letter-spacing: 0.045em;
}

.genv-contact-card__contact {
  flex: 1 1 auto;
  padding: 15px 18px 18px;
  border-top: 1px solid var(--genv-line);
}

.genv-contact-card__contact-row {
  margin-bottom: 10px;
  overflow-wrap: anywhere;
}

.genv-contact-card__contact-row > span {
  display: block;
  margin-bottom: 2px;
  color: var(--genv-muted);
  font-size: 0.69rem;
  font-weight: 750;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

.genv-contact-card__contact-row a,
.genv-contact-card__email joomla-hidden-mail {
  color: var(--genv-green-dark);
  font-size: 0.87rem;
  font-weight: 700;
}

.genv-contact-card__contact-row a {
  text-decoration: none;
}

.genv-contact-card__contact-row a:hover,
.genv-contact-card__contact-row a:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.genv-contact-card__profile {
  display: inline-block;
  margin-top: 3px;
  color: var(--genv-orange);
  font-size: 0.85rem;
  font-weight: 800;
  text-decoration: none;
}

.genv-contact-card__profile:hover,
.genv-contact-card__profile:focus {
  color: #8f3e08;
  text-decoration: underline;
  text-underline-offset: 0.17em;
}

.genv-contact-directory__empty {
  padding: 24px;
  border-radius: var(--genv-radius);
  background: var(--genv-pale);
  color: var(--genv-muted);
}

.genv-contact-directory__pagination {
  margin-top: 38px;
}

/* L'override fournit sa propre structure : on neutralise les contrôles
   frontend qui n'ont pas à modifier la grille pendant les tests admin. */
body:has(.genv-contact-directory) .jmodedit,
body:has(.genv-contact-directory) a[href*="task=contact.edit"],
body:has(.genv-contact-directory) a[href*="task=contact.add"] {
  display: none !important;
}

@media (max-width: 1050px) {
  .genv-contact-directory__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .genv-contact-directory__section-head {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

@media (max-width: 620px) {
  .genv-contact-directory__hero,
  .genv-contact-directory__section {
    width: calc(100% - 26px);
  }

  .genv-contact-directory__hero {
    padding-top: 42px;
    padding-bottom: 34px;
  }

  .genv-contact-directory__section {
    padding-top: 26px;
    padding-bottom: 58px;
  }

  .genv-contact-directory__grid {
    grid-template-columns: 1fr;
  }

  .genv-contact-card__top {
    grid-template-columns: 104px minmax(0, 1fr);
    min-height: 104px;
  }

  .genv-contact-card__photo {
    height: 104px;
  }

  .genv-contact-card__photo img,
  .genv-contact-card__placeholder {
    height: 104px;
  }
}

/* =========================================================
   32. ANCIENS DOCTORANTS / FORMER PHD — FICHES INDIVIDUELLES
   v34 : ciblage conforme au DOM Joomla réellement rendu.

   Diagnostic 2026-09-14 :
   - body porte bien .view-article et .genv-phd-grid ;
   - .genv-phd-profile est présent ;
   - aucun wrapper .item-page n'est présent dans le DOM observé.

   On scope donc la fiche sur la vue article + la classe de page du menu,
   puis on cible directement les classes éditoriales du profil.
   ========================================================= */

/* Conteneur composant : la largeur générale est déjà définie en section 27
   pour body.genv-phd-grid. Sur la vue article, on conserve ce cadre. */
body.view-article.genv-phd-grid .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  max-width: none;
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 76px;
  color: var(--genv-ink);
}

/* Titre Joomla de la personne. La vue article ne possède pas .item-page
   dans le DOM réellement observé, d'où le ciblage direct de .page-header. */
body.view-article.genv-phd-grid .container-component > .page-header,
body.view-article.genv-phd-grid .container-component .page-header {
  width: min(980px, 100%);
  margin: 0 auto 22px;
}

body.view-article.genv-phd-grid .container-component > .page-header h1,
body.view-article.genv-phd-grid .container-component > .page-header h2,
body.view-article.genv-phd-grid .container-component .page-header h1,
body.view-article.genv-phd-grid .container-component .page-header h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2.55rem, 5vw, 4.45rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

/* Bouton d'édition admin : on le laisse fonctionnel sans perturber le rendu. */
body.view-article.genv-phd-grid .container-component .icons,
body.view-article.genv-phd-grid .container-component .float-end {
  position: relative;
  z-index: 2;
}

/* Profil : ciblage direct, indépendant du wrapper Joomla. */
body.view-article.genv-phd-grid .genv-phd-profile {
  width: min(980px, 100%);
  margin: 0 auto;
  color: var(--genv-ink);
}

/* En-tête éditorial : thèse + date. */
body.view-article.genv-phd-grid .genv-phd-profile__header {
  margin: 0 0 22px;
  padding: 27px 30px 29px;
  border-left: 6px solid var(--genv-gold);
  border-radius: var(--genv-radius);
  background: var(--genv-sand);
}

body.view-article.genv-phd-grid .genv-phd-profile__header .genv-page__eyebrow {
  margin: 0 0 12px;
  color: var(--genv-green);
  font-size: 0.78rem;
  font-weight: 850;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

body.view-article.genv-phd-grid .genv-phd-profile__header p {
  max-width: 880px;
  margin: 8px 0 0;
}

body.view-article.genv-phd-grid .genv-phd-profile__thesis {
  color: var(--genv-ink);
  font-size: 1.10rem;
  line-height: 1.58;
}

body.view-article.genv-phd-grid .genv-phd-profile__date {
  color: var(--genv-muted);
  font-size: 0.95rem;
  font-weight: 700;
}

/* Sections : lecture proche des pages internes FR validées. */
body.view-article.genv-phd-grid .genv-phd-profile__section {
  margin: 0 0 12px;
  padding: 19px 22px 21px;
  border: 1px solid var(--genv-line);
  border-radius: 14px;
  background: var(--genv-white);
  box-shadow: 0 8px 24px rgba(24, 48, 42, 0.06);
}

body.view-article.genv-phd-grid .genv-phd-profile__section h2 {
  margin: 0 0 11px;
  color: var(--genv-green-dark);
  font-size: clamp(1.35rem, 2vw, 1.72rem);
  line-height: 1.17;
  letter-spacing: -0.025em;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext {
  color: #46555a;
  font-size: 1rem;
  line-height: 1.72;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext p {
  margin: 0 0 0.85rem;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext p:last-child,
body.view-article.genv-phd-grid .genv-phd-profile__richtext ul:last-child,
body.view-article.genv-phd-grid .genv-phd-profile__richtext ol:last-child {
  margin-bottom: 0;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext ul,
body.view-article.genv-phd-grid .genv-phd-profile__richtext ol {
  margin: 0.35rem 0 0.8rem;
  padding-left: 1.35rem;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext li + li {
  margin-top: 0.35rem;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext a {
  color: var(--genv-green);
  font-weight: 750;
  text-underline-offset: 0.16em;
}

body.view-article.genv-phd-grid .genv-phd-profile__richtext a:hover,
body.view-article.genv-phd-grid .genv-phd-profile__richtext a:focus {
  color: var(--genv-green-dark);
}

/* Image historique si une fiche en conserve une. */
body.view-article.genv-phd-grid .genv-phd-profile img {
  display: block;
  max-width: min(320px, 100%);
  height: auto;
  margin: 0 0 24px;
  border-radius: 12px;
}

/* Anciennes injections de module éventuelles. */
body.view-article.genv-phd-grid .genv-phd-profile p:has(> .moduletable:only-child) {
  display: none;
}

@media (max-width: 640px) {
  body.view-article.genv-phd-grid .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding-top: 40px;
    padding-bottom: 56px;
  }

  body.view-article.genv-phd-grid .container-component > .page-header,
  body.view-article.genv-phd-grid .container-component .page-header {
    margin-bottom: 18px;
  }

  body.view-article.genv-phd-grid .genv-phd-profile__header {
    padding: 23px 21px 24px;
  }

  body.view-article.genv-phd-grid .genv-phd-profile__section {
    padding: 18px 17px 19px;
  }

  body.view-article.genv-phd-grid .genv-phd-profile__thesis {
    font-size: 1.02rem;
  }
}
/* =========================================================
   33. ACTUALITÉS / NEWS — GRILLE + ARTICLE
   Scope : pageclass_sfx "genv-news-grid" sur menus #107 / #142
   ========================================================= */

/* ---------- Vue catégorie ---------- */

body.view-category.genv-news-grid .site-grid > .container-component,
body.genv-news-grid .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 42px));
}

body.view-category.genv-news-grid .container-component,
body.genv-news-grid.view-category .container-component {
  padding-top: 48px;
  padding-bottom: 72px;
}

/* Une vraie grille éditoriale, indépendante des espacements Bootstrap natifs. */
body.view-category.genv-news-grid .blog .blog-items,
body.view-category.genv-news-grid .blog .items-leading,
body.genv-news-grid.view-category .blog .blog-items,
body.genv-news-grid.view-category .blog .items-leading {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 30px;
  align-items: stretch;
}

/* Carte d'actualité. */
body.view-category.genv-news-grid .blog .blog-item,
body.genv-news-grid.view-category .blog .blog-item {
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
  border: 1px solid rgba(20, 52, 44, 0.07);
  border-radius: var(--genv-radius);
  background: var(--genv-white);
  box-shadow: 0 12px 32px rgba(24, 48, 42, 0.08);
  transition: transform 160ms ease, box-shadow 160ms ease;
}

body.view-category.genv-news-grid .blog .blog-item:hover,
body.genv-news-grid.view-category .blog .blog-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 17px 38px rgba(24, 48, 42, 0.12);
}

body.view-category.genv-news-grid .blog .blog-item > *,
body.view-category.genv-news-grid .blog .blog-item .item-content,
body.genv-news-grid.view-category .blog .blog-item > *,
body.genv-news-grid.view-category .blog .blog-item .item-content {
  min-width: 0;
}

/* Image de vignette : même emprise pour toutes, sans rogner logos/affiches. */
body.view-category.genv-news-grid .blog .blog-item figure,
body.view-category.genv-news-grid .blog .blog-item .item-image,
body.genv-news-grid.view-category .blog .blog-item figure,
body.genv-news-grid.view-category .blog .blog-item .item-image {
  margin: 0;
  overflow: hidden;
  background: #f7f8f5;
}

body.view-category.genv-news-grid .blog .blog-item .item-image img,
body.view-category.genv-news-grid .blog .blog-item figure img,
body.genv-news-grid.view-category .blog .blog-item .item-image img,
body.genv-news-grid.view-category .blog .blog-item figure img {
  display: block;
  width: 100%;
  height: 220px;
  padding: 0;
  object-fit: contain;
  object-position: center;
  background: #f7f8f5;
}

/* Corps de carte. */
body.view-category.genv-news-grid .blog .blog-item .item-content,
body.genv-news-grid.view-category .blog .blog-item .item-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 23px 24px 25px;
}

body.view-category.genv-news-grid .blog .blog-item .page-header,
body.genv-news-grid.view-category .blog .blog-item .page-header {
  margin: 0 0 10px;
}

body.view-category.genv-news-grid .blog .blog-item .page-header h2,
body.view-category.genv-news-grid .blog .blog-item .page-header h3,
body.genv-news-grid.view-category .blog .blog-item .page-header h2,
body.genv-news-grid.view-category .blog .blog-item .page-header h3 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(1.12rem, 1.6vw, 1.28rem);
  font-weight: 780;
  line-height: 1.28;
  letter-spacing: -0.012em;
}

body.view-category.genv-news-grid .blog .blog-item .page-header a,
body.genv-news-grid.view-category .blog .blog-item .page-header a {
  color: var(--genv-green-dark);
  text-decoration: none;
}

body.view-category.genv-news-grid .blog .blog-item .page-header a:hover,
body.view-category.genv-news-grid .blog .blog-item .page-header a:focus,
body.genv-news-grid.view-category .blog .blog-item .page-header a:hover,
body.genv-news-grid.view-category .blog .blog-item .page-header a:focus {
  color: var(--genv-green);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

/* Métadonnées : discrètes et espacées. */
body.view-category.genv-news-grid .blog .blog-item .article-info,
body.view-category.genv-news-grid .blog .blog-item .article-info dd,
body.genv-news-grid.view-category .blog .blog-item .article-info,
body.genv-news-grid.view-category .blog .blog-item .article-info dd {
  color: var(--genv-muted);
  font-size: 0.79rem;
  line-height: 1.45;
}

body.view-category.genv-news-grid .blog .blog-item .article-info,
body.genv-news-grid.view-category .blog .blog-item .article-info {
  margin: 0 0 17px;
  padding: 0 0 13px;
  border-bottom: 1px solid var(--genv-line);
}

/* Extrait éditorial. */
body.view-category.genv-news-grid .blog .blog-item .item-content p,
body.genv-news-grid.view-category .blog .blog-item .item-content p {
  margin: 0 0 0.85rem;
  color: #46555a;
  font-size: 0.94rem;
  line-height: 1.62;
}

body.view-category.genv-news-grid .blog .blog-item .item-content p:last-child,
body.genv-news-grid.view-category .blog .blog-item .item-content p:last-child {
  margin-bottom: 0;
}

body.view-category.genv-news-grid .blog .blog-item .item-content ul,
body.view-category.genv-news-grid .blog .blog-item .item-content ol,
body.genv-news-grid.view-category .blog .blog-item .item-content ul,
body.genv-news-grid.view-category .blog .blog-item .item-content ol {
  margin: 0.3rem 0 0.9rem;
  padding-left: 1.25rem;
  color: #46555a;
  font-size: 0.92rem;
  line-height: 1.55;
}

/* Les contenus WordPress importés ne doivent jamais sortir d'une carte. */
body.view-category.genv-news-grid .blog .blog-item img,
body.view-category.genv-news-grid .blog .blog-item iframe,
body.view-category.genv-news-grid .blog .blog-item video,
body.genv-news-grid.view-category .blog .blog-item img,
body.genv-news-grid.view-category .blog .blog-item iframe,
body.genv-news-grid.view-category .blog .blog-item video {
  max-width: 100%;
}

body.view-category.genv-news-grid .blog .blog-item iframe,
body.genv-news-grid.view-category .blog .blog-item iframe {
  width: 100%;
}

/* Pagination aérée. */
body.view-category.genv-news-grid .pagination,
body.genv-news-grid.view-category .pagination {
  margin-top: 42px;
}

/* ---------- Vue article ---------- */

body.view-article.genv-news-grid .site-grid > .container-component {
  width: min(1080px, calc(100% - 42px));
  padding-top: 52px;
  padding-bottom: 78px;
}

/* Titre principal. */
body.view-article.genv-news-grid .container-component .page-header {
  margin: 0 0 18px;
}

body.view-article.genv-news-grid .container-component .page-header h1,
body.view-article.genv-news-grid .container-component .page-header h2 {
  max-width: 930px;
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2rem, 4.1vw, 3rem);
  font-weight: 790;
  line-height: 1.08;
  letter-spacing: -0.032em;
}

/* Métadonnées article. */
body.view-article.genv-news-grid .container-component .article-info {
  max-width: 930px;
  margin: 0 0 34px;
  padding: 0 0 17px;
  border-bottom: 1px solid var(--genv-line);
  color: var(--genv-muted);
  font-size: 0.86rem;
}

/* Image principale. */
body.view-article.genv-news-grid .container-component > figure,
body.view-article.genv-news-grid .container-component .item-image {
  margin: 0 0 34px;
  overflow: hidden;
  border-radius: 16px;
  background: #f7f8f5;
}

body.view-article.genv-news-grid .container-component > figure img,
body.view-article.genv-news-grid .container-component .item-image img {
  display: block;
  width: 100%;
  max-height: 560px;
  object-fit: contain;
  object-position: center;
  background: #f7f8f5;
}

/* Typographie de lecture. */
body.view-article.genv-news-grid .container-component p,
body.view-article.genv-news-grid .container-component ul,
body.view-article.genv-news-grid .container-component ol,
body.view-article.genv-news-grid .container-component blockquote,
body.view-article.genv-news-grid .container-component h2,
body.view-article.genv-news-grid .container-component h3,
body.view-article.genv-news-grid .container-component h4 {
  max-width: 900px;
}

body.view-article.genv-news-grid .container-component p {
  margin: 0 0 1.15rem;
  color: #3f4f54;
  font-size: 1.02rem;
  line-height: 1.78;
}

body.view-article.genv-news-grid .container-component h2,
body.view-article.genv-news-grid .container-component h3,
body.view-article.genv-news-grid .container-component h4 {
  color: var(--genv-green-dark);
  font-weight: 780;
  line-height: 1.22;
  letter-spacing: -0.018em;
}

body.view-article.genv-news-grid .container-component h2 {
  margin: 2.2rem 0 1rem;
  font-size: clamp(1.55rem, 2.6vw, 2rem);
}

body.view-article.genv-news-grid .container-component h3 {
  margin: 1.8rem 0 0.85rem;
  font-size: clamp(1.28rem, 2vw, 1.55rem);
}

body.view-article.genv-news-grid .container-component h4 {
  margin: 1.55rem 0 0.75rem;
  font-size: 1.15rem;
}

body.view-article.genv-news-grid .container-component ul,
body.view-article.genv-news-grid .container-component ol {
  margin: 0.5rem 0 1.35rem;
  padding-left: 1.4rem;
  color: #3f4f54;
  font-size: 1rem;
  line-height: 1.7;
}

body.view-article.genv-news-grid .container-component li + li {
  margin-top: 0.35rem;
}

body.view-article.genv-news-grid .container-component a {
  color: var(--genv-green);
  font-weight: 650;
  text-underline-offset: 0.17em;
}

body.view-article.genv-news-grid .container-component a:hover,
body.view-article.genv-news-grid .container-component a:focus {
  color: var(--genv-green-dark);
}

/* Illustrations internes : grandes mais jamais débordantes. */
body.view-article.genv-news-grid .container-component p:has(> img),
body.view-article.genv-news-grid .container-component figure {
  max-width: 100%;
}

body.view-article.genv-news-grid .container-component p > img,
body.view-article.genv-news-grid .container-component div > img,
body.view-article.genv-news-grid .container-component figure img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 24px auto 30px;
  border-radius: 12px;
}

/* Médias/embeds importés. */
body.view-article.genv-news-grid .container-component iframe,
body.view-article.genv-news-grid .container-component video {
  display: block;
  width: min(100%, 900px);
  max-width: 100%;
  margin: 24px 0 30px;
  border: 0;
  border-radius: 12px;
}

/* Séparateurs et citations. */
body.view-article.genv-news-grid .container-component hr {
  max-width: 900px;
  margin: 2rem 0;
  border: 0;
  border-top: 1px solid var(--genv-line);
  opacity: 1;
}

body.view-article.genv-news-grid .container-component blockquote {
  margin: 1.7rem 0;
  padding: 18px 22px;
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 10px 10px 0;
  background: var(--genv-sand);
  color: #46555a;
}

/* Tableaux historiques : pas de débordement horizontal de la page. */
body.view-article.genv-news-grid .container-component table {
  width: 100%;
  max-width: 100%;
  margin: 1.5rem 0 2rem;
}

/* ---------- Responsive ---------- */

@media (max-width: 980px) {
  body.view-category.genv-news-grid .blog .blog-items,
  body.view-category.genv-news-grid .blog .items-leading,
  body.genv-news-grid.view-category .blog .blog-items,
  body.genv-news-grid.view-category .blog .items-leading {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
  }
}

@media (max-width: 640px) {
  body.view-category.genv-news-grid .site-grid > .container-component,
  body.view-article.genv-news-grid .site-grid > .container-component,
  body.genv-news-grid .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 26px));
  }

  body.view-category.genv-news-grid .container-component,
  body.genv-news-grid.view-category .container-component {
    padding-top: 38px;
    padding-bottom: 56px;
  }

  body.view-category.genv-news-grid .blog .blog-items,
  body.view-category.genv-news-grid .blog .items-leading,
  body.genv-news-grid.view-category .blog .blog-items,
  body.genv-news-grid.view-category .blog .items-leading {
    grid-template-columns: 1fr;
    gap: 20px;
  }

  body.view-category.genv-news-grid .blog .blog-item .item-image img,
  body.view-category.genv-news-grid .blog .blog-item figure img,
  body.genv-news-grid.view-category .blog .blog-item .item-image img,
  body.genv-news-grid.view-category .blog .blog-item figure img {
    height: 205px;
  }

  body.view-category.genv-news-grid .blog .blog-item .item-content,
  body.genv-news-grid.view-category .blog .blog-item .item-content {
    padding: 20px 20px 22px;
  }

  body.view-article.genv-news-grid .site-grid > .container-component {
    padding-top: 38px;
    padding-bottom: 58px;
  }

  body.view-article.genv-news-grid .container-component .article-info {
    margin-bottom: 26px;
  }

  body.view-article.genv-news-grid .container-component p {
    font-size: 0.98rem;
    line-height: 1.72;
  }
}
/* =========================================================
   34. ACTUALITÉS / NEWS — AXE DE LECTURE ET CENTRAGE MÉDIAS
   Correction v37 : images anciennes centrées dans la même
   colonne de lecture que le texte, sans débordement latéral.
   ========================================================= */

/* Même axe central de 900 px pour le contenu éditorial. */
body.view-article.genv-news-grid .container-component p,
body.view-article.genv-news-grid .container-component ul,
body.view-article.genv-news-grid .container-component ol,
body.view-article.genv-news-grid .container-component blockquote,
body.view-article.genv-news-grid .container-component h2,
body.view-article.genv-news-grid .container-component h3,
body.view-article.genv-news-grid .container-component h4,
body.view-article.genv-news-grid .container-component hr {
  margin-left: auto;
  margin-right: auto;
}

/* Les conteneurs consacrés à une image suivent le même axe de lecture. */
body.view-article.genv-news-grid .container-component .item-image,
body.view-article.genv-news-grid .container-component figure,
body.view-article.genv-news-grid .container-component p:has(> img),
body.view-article.genv-news-grid .container-component div.wp-block-image,
body.view-article.genv-news-grid .container-component .pull-center {
  width: 100%;
  max-width: 900px;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
  text-align: center;
}

/* Neutralise les anciens alignements/float hérités des contenus Joomla. */
body.view-article.genv-news-grid .container-component img {
  display: block !important;
  float: none !important;
  clear: both;
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* L'image principale Joomla suit elle aussi la colonne de lecture. */
body.view-article.genv-news-grid .container-component .item-image img,
body.view-article.genv-news-grid .container-component > figure img {
  max-width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Les légendes restent alignées avec leur illustration. */
body.view-article.genv-news-grid .container-component figcaption {
  max-width: 900px;
  margin: 8px auto 0;
  color: var(--genv-muted);
  font-size: 0.85rem;
  line-height: 1.5;
  text-align: center;
}

@media (max-width: 640px) {
  body.view-article.genv-news-grid .container-component .item-image,
  body.view-article.genv-news-grid .container-component figure,
  body.view-article.genv-news-grid .container-component p:has(> img),
  body.view-article.genv-news-grid .container-component div.wp-block-image,
  body.view-article.genv-news-grid .container-component .pull-center {
    max-width: 100%;
  }
}
/* =========================================================
   35. FORMATIONS — LANDING FR / EN
   Scope : pageclass_sfx "genv-formations-page"
   ========================================================= */

body.genv-formations-page .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 42px));
  padding-top: 58px;
  padding-bottom: 82px;
}

body.genv-formations-page .formations-native,
body.genv-formations-page .formations-native * {
  box-sizing: border-box;
}

body.genv-formations-page .formations-native {
  color: var(--genv-ink);
}

/* ---------- En-tête ---------- */

body.genv-formations-page .formations-native__header {
  max-width: 980px;
  margin: 0 auto 52px;
}

body.genv-formations-page .formations-native__header h1 {
  margin: 8px 0 22px;
  color: var(--genv-ink);
  font-size: clamp(2.8rem, 6vw, 5rem);
  font-weight: 790;
  line-height: 1.03;
  letter-spacing: -0.045em;
}

body.genv-formations-page .formations-native__intro blockquote {
  margin: 0;
  padding: 22px 25px;
  border: 1px solid rgba(20, 52, 44, 0.08);
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 13px 13px 0;
  background: var(--genv-sand);
  color: #435157;
  font-size: 1.02rem;
  line-height: 1.72;
}

body.genv-formations-page .formations-native__intro blockquote > *:first-child {
  margin-top: 0;
}

body.genv-formations-page .formations-native__intro blockquote > *:last-child {
  margin-bottom: 0;
}

/* ---------- Têtes de section ---------- */

body.genv-formations-page .formations-native__section-head {
  max-width: 820px;
  margin: 0 0 27px;
}

body.genv-formations-page .formations-native__section-head h2 {
  margin: 7px 0 10px;
  color: var(--genv-ink);
  font-size: clamp(1.75rem, 3.2vw, 2.45rem);
  font-weight: 780;
  line-height: 1.12;
  letter-spacing: -0.025em;
}

body.genv-formations-page .formations-native__section-head p {
  margin: 0;
  color: var(--genv-muted);
  font-size: 1rem;
  line-height: 1.62;
}

/* ---------- Schéma natif des niveaux ---------- */

body.genv-formations-page .formations-native__levels {
  margin: 0 0 64px;
  padding: 34px;
  border-radius: 20px;
  background: #f7f8f5;
}

body.genv-formations-page .formations-native__levels-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 17px;
}

body.genv-formations-page .formations-native__level {
  position: relative;
  min-width: 0;
  min-height: 225px;
  padding: 23px 21px 22px;
  overflow: hidden;
  border: 1px solid rgba(20, 52, 44, 0.08);
  border-radius: 15px;
  background: var(--genv-white);
  box-shadow: 0 9px 24px rgba(24, 48, 42, 0.055);
}

body.genv-formations-page .formations-native__level::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 5px;
  background: var(--genv-green);
}

body.genv-formations-page .formations-native__level--master::before {
  background: var(--genv-gold);
}

body.genv-formations-page .formations-native__level--postmaster::before {
  background: var(--genv-orange);
}

body.genv-formations-page .formations-native__level--phd::before {
  background: var(--genv-green-dark);
}

body.genv-formations-page .formations-native__level--short::before {
  background: var(--genv-green);
}

body.genv-formations-page .formations-native__level-kicker {
  display: block;
  margin-bottom: 8px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 820;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

body.genv-formations-page .formations-native__level h3 {
  margin: 0 0 13px;
  color: var(--genv-ink);
  font-size: 1.18rem;
  font-weight: 780;
  line-height: 1.25;
}

body.genv-formations-page .formations-native__level ul {
  margin: 0;
  padding-left: 1.1rem;
  color: #536066;
  font-size: 0.89rem;
  line-height: 1.55;
}

body.genv-formations-page .formations-native__level li + li {
  margin-top: 0.3rem;
}

/* ---------- Contenu éditorial ---------- */

body.genv-formations-page .formations-native__content {
  margin-bottom: 66px;
}

body.genv-formations-page .formations-native__main {
  max-width: 900px;
  margin: 0 auto;
  color: #405056;
  font-size: 1rem;
  line-height: 1.75;
}

body.genv-formations-page .formations-native__main h2 {
  margin: 2.35rem 0 1rem;
  color: var(--genv-green-dark);
  font-size: clamp(1.45rem, 2.5vw, 1.9rem);
  font-weight: 780;
  line-height: 1.2;
  letter-spacing: -0.018em;
}

body.genv-formations-page .formations-native__main h2:first-child {
  margin-top: 0;
}

body.genv-formations-page .formations-native__main p,
body.genv-formations-page .formations-native__main > div {
  margin-top: 0;
  margin-bottom: 1rem;
}

body.genv-formations-page .formations-native__main ul,
body.genv-formations-page .formations-native__main ol {
  margin: 0.45rem 0 1.25rem;
  padding-left: 1.35rem;
}

body.genv-formations-page .formations-native__main li + li {
  margin-top: 0.35rem;
}

body.genv-formations-page .formations-native__main a {
  color: var(--genv-green);
  font-weight: 650;
  text-underline-offset: 0.17em;
}

body.genv-formations-page .formations-native__main a:hover,
body.genv-formations-page .formations-native__main a:focus {
  color: var(--genv-green-dark);
}

/* ---------- Grille des formations ---------- */

body.genv-formations-page .formations-native__programmes {
  margin-top: 12px;
  padding-top: 50px;
  border-top: 1px solid var(--genv-line);
}

body.genv-formations-page .formations-native__links {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 17px;
}

body.genv-formations-page .formations-native__link {
  min-width: 0;
  min-height: 265px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 21px;
  border: 1px solid var(--genv-line);
  border-radius: 15px;
  background: linear-gradient(180deg, #fff, #fbfcfb);
  color: inherit;
  text-decoration: none;
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

body.genv-formations-page .formations-native__link:hover,
body.genv-formations-page .formations-native__link:focus {
  transform: translateY(-2px);
  border-color: #9fc9bc;
  box-shadow: 0 12px 30px rgba(24, 48, 42, 0.09);
  text-decoration: none;
}

body.genv-formations-page .formations-native__picto {
  display: block;
  width: 132px;
  height: 132px;
  margin: 0 auto 14px;
  object-fit: contain;
  align-self: center;
}

body.genv-formations-page .formations-native__picto.short {
  border-radius: 0;
  filter: none;
}

body.genv-formations-page .formations-native__link small {
  margin-top: auto;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 820;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

body.genv-formations-page .formations-native__link h3 {
  margin: 10px 0 0;
  color: var(--genv-ink);
  font-size: 1.08rem;
  font-weight: 760;
  line-height: 1.28;
}

/* Le titre Joomla natif, s'il est rendu par configuration, ne doit pas doubler notre H1. */
body.genv-formations-page .container-component > .page-header:first-child,
body.genv-formations-page .com-content-article > .page-header:first-child {
  display: none;
}

/* ---------- Responsive ---------- */

@media (max-width: 980px) {
  body.genv-formations-page .formations-native__levels-grid,
  body.genv-formations-page .formations-native__links {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  body.genv-formations-page .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 26px));
    padding-top: 40px;
    padding-bottom: 60px;
  }

  body.genv-formations-page .formations-native__header {
    margin-bottom: 38px;
  }

  body.genv-formations-page .formations-native__header h1 {
    font-size: clamp(2.45rem, 13vw, 3.55rem);
  }

  body.genv-formations-page .formations-native__levels {
    margin-bottom: 48px;
    padding: 22px 18px;
    border-radius: 16px;
  }

  body.genv-formations-page .formations-native__levels-grid,
  body.genv-formations-page .formations-native__links {
    grid-template-columns: 1fr;
  }

  body.genv-formations-page .formations-native__level {
    min-height: 0;
  }

  body.genv-formations-page .formations-native__link {
    min-height: 235px;
  }

  body.genv-formations-page .formations-native__picto {
    width: 118px;
    height: 118px;
  }

  body.genv-formations-page .formations-native__content {
    margin-bottom: 50px;
  }

  body.genv-formations-page .formations-native__programmes {
    padding-top: 40px;
  }
}

/* =========================================================
   36. FICHES FORMATION — GEEFT
   DA GEEFT FR #238 / ST2AE-GEEFT FR #159 / MSc GEEFT EN #363
   Structure native commune : .geeft-native
   ========================================================= */

/* ---------- Cadre général de page ---------- */

body:has(.geeft-native) .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 82px;
}

body:has(.geeft-native) .com-content-article {
  color: var(--genv-ink);
}

body:has(.geeft-native) .com-content-article > .page-header {
  max-width: 1040px;
  margin: 0 0 34px;
  padding: 0;
  border: 0;
}

body:has(.geeft-native) .com-content-article > .page-header h1,
body:has(.geeft-native) .com-content-article > .page-header h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2.45rem, 5.4vw, 4.7rem);
  font-weight: 820;
  line-height: 0.98;
  letter-spacing: -0.052em;
  text-wrap: balance;
}

body:has(.geeft-native) .com-content-article > .page-header h1::before,
body:has(.geeft-native) .com-content-article > .page-header h2::before {
  content: "FORMATION";
  display: block;
  margin-bottom: 12px;
  color: var(--genv-green);
  font-size: 0.76rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.genv-native-placeholder,
.geeft-native,
.geeft-native * {
  box-sizing: border-box;
}

.geeft-native {
  color: #405056;
  font-size: 1rem;
  line-height: 1.68;
}

.geeft-native a {
  color: var(--genv-green-dark);
  font-weight: 700;
  text-underline-offset: 0.16em;
}

.geeft-native a:hover,
.geeft-native a:focus {
  color: var(--genv-green);
}

/* On neutralise les anciens alignements inline justifiés sur ces trois pages. */
.geeft-native [style*="text-align: justify"] {
  text-align: left !important;
}

/* ---------- Hero formation ---------- */

.geeft-native__hero {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(330px, 0.92fr);
  gap: 32px 42px;
  align-items: start;
  margin: 0 0 50px;
  padding: 30px;
  border: 1px solid var(--genv-line);
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(237, 245, 242, 0.82), rgba(255, 255, 255, 0.96));
}

.geeft-native__hero > h3 {
  grid-column: 1;
  margin: 0;
  color: var(--genv-orange);
  font-size: 0.82rem;
  font-weight: 850;
  line-height: 1.3;
  letter-spacing: 0.095em;
  text-transform: uppercase;
}

.geeft-native__hero > div:first-of-type {
  grid-column: 1;
  min-width: 0;
  margin: 0;
  color: #425156;
  font-size: 1.04rem;
  line-height: 1.72;
}

.geeft-da-native .geeft-native__hero > div:first-of-type {
  grid-row: 2;
}

.geeft-native__hero > div:last-of-type {
  grid-column: 2;
  grid-row: 1 / span 2;
  min-width: 0;
  margin: 0;
  align-self: stretch;
}

.geeft-native__hero > div:last-of-type img {
  display: block;
  width: 100% !important;
  height: 100% !important;
  min-height: 245px;
  max-height: 330px;
  margin: 0;
  border-radius: 15px;
  object-fit: cover;
  box-shadow: 0 14px 32px rgba(24, 48, 42, 0.12);
}

.geeft-native__hero p,
.geeft-native__hero div {
  margin-top: 0;
}

.geeft-native__hero > div:first-of-type > :last-child {
  margin-bottom: 0;
}

/* Alerte d'ouverture du Master ST2AE — FR et EN. */
.geeft-native:not(.geeft-da-native)
  .geeft-native__hero
  > div:first-of-type
  > p:first-child {
  margin: 0 0 22px;
  padding: 14px 16px;
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 10px 10px 0;
  background: #fff8e5;
  color: #594821;
  line-height: 1.55;
}

.geeft-native:not(.geeft-da-native)
  .geeft-native__hero
  > div:first-of-type
  > p:first-child strong {
  font-weight: 800;
}

/* ---------- Corps : contenu + colonne latérale ---------- */

.geeft-native__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(255px, 315px);
  gap: 44px;
  align-items: start;
}

.geeft-native__main,
.geeft-native__aside {
  min-width: 0;
}

.geeft-native__main {
  max-width: 820px;
}

/* ---------- Accordions ---------- */

.geeft-native__accordion {
  display: grid;
  gap: 13px;
}

.geeft-native__item {
  overflow: hidden;
  margin: 0;
  border: 1px solid var(--genv-line);
  border-radius: 14px;
  background: var(--genv-white);
  box-shadow: 0 5px 16px rgba(24, 48, 42, 0.035);
}

.geeft-native__item > summary {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 62px;
  padding: 17px 52px 17px 19px;
  color: var(--genv-ink);
  font-size: 1.03rem;
  font-weight: 780;
  line-height: 1.3;
  cursor: pointer;
  list-style: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.geeft-native__item > summary::-webkit-details-marker {
  display: none;
}

.geeft-native__item > summary::after {
  content: "+";
  position: absolute;
  right: 19px;
  top: 50%;
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
  border-radius: 50%;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 1.25rem;
  font-weight: 650;
  line-height: 1;
}

.geeft-native__item[open] > summary {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

.geeft-native__item[open] > summary::after {
  content: "–";
  background: var(--genv-green-dark);
  color: var(--genv-white);
}

.geeft-native__item > summary:hover,
.geeft-native__item > summary:focus-visible {
  background: #f2f7f5;
  color: var(--genv-green-dark);
}

.geeft-native__item > summary strong {
  font-weight: inherit;
}

.geeft-native__item-content {
  padding: 5px 20px 22px;
  color: #47565b;
  line-height: 1.72;
}

.geeft-native__item[open] .geeft-native__item-content {
  border-top: 1px solid rgba(15, 119, 95, 0.10);
  padding-top: 20px;
}

.geeft-native__item-content > :first-child {
  margin-top: 0;
}

.geeft-native__item-content > :last-child {
  margin-bottom: 0;
}

.geeft-native__item-content p,
.geeft-native__item-content ul,
.geeft-native__item-content ol {
  margin-top: 0;
  margin-bottom: 1rem;
}

.geeft-native__item-content ul,
.geeft-native__item-content ol {
  padding-left: 1.35rem;
}

.geeft-native__item-content li + li {
  margin-top: 0.42rem;
}

.geeft-native__item-content h3 {
  margin: 1.5rem 0 0.65rem;
  color: var(--genv-green-dark);
  font-size: 1.12rem;
  font-weight: 780;
  line-height: 1.3;
}

.geeft-native__item-content h3:first-child {
  margin-top: 0;
}

/* ---------- Colonne latérale ---------- */

.geeft-native__aside {
  position: sticky;
  top: 28px;
  display: grid;
  gap: 15px;
}

.geeft-native__aside-block {
  overflow-wrap: anywhere;
  padding: 20px 21px;
  border: 1px solid var(--genv-line);
  border-radius: 15px;
  background: var(--genv-white);
  box-shadow: 0 7px 22px rgba(24, 48, 42, 0.05);
}

.geeft-native__aside-block:first-child {
  background: var(--genv-pale);
  border-color: rgba(15, 119, 95, 0.12);
}

.geeft-native__aside-block h5 {
  margin: 0 0 10px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 850;
  line-height: 1.25;
  letter-spacing: 0.085em;
  text-transform: uppercase;
}

.geeft-native__aside-block h5:not(:first-child) {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(15, 119, 95, 0.14);
}

.geeft-native__aside-block > br:first-child,
.geeft-native__aside-block h5 > br:first-child {
  display: none;
}

.geeft-native__aside-block a {
  color: var(--genv-green-dark);
  font-weight: 800;
}

.geeft-native__aside-block:first-child a {
  text-decoration: none;
}

.geeft-native__aside-block:first-child a:hover,
.geeft-native__aside-block:first-child a:focus {
  text-decoration: underline;
}

/* "Descriptif des modules" : neutralise les restes de taille inline. */
.geeft-native__aside-block ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.geeft-native__aside-block li {
  margin: 0;
}

.geeft-native__aside-block span[style*="font-size"] {
  font-size: inherit !important;
}

/* Les deux blocs d'action deviennent de vrais boutons. */
.geeft-native__aside-block h3 {
  margin: 0 !important;
  text-align: left !important;
  font-size: 0.92rem;
  line-height: 1.25;
}

.geeft-native__aside-block h3 a {
  display: flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 11px 14px;
  border-radius: 10px;
  background: var(--genv-green-dark);
  color: var(--genv-white);
  font-size: 0.78rem;
  font-weight: 850;
  letter-spacing: 0.065em;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform 150ms ease, background-color 150ms ease;
}

.geeft-native__aside-block h3 a:hover,
.geeft-native__aside-block h3 a:focus {
  transform: translateY(-1px);
  background: var(--genv-green);
  color: var(--genv-white);
  text-decoration: none;
}

/* Différencie le lien de retour à toutes les formations. */
.geeft-native__aside-block:last-child h3 a {
  border: 1px solid var(--genv-green-dark);
  background: transparent;
  color: var(--genv-green-dark);
}

.geeft-native__aside-block:last-child h3 a:hover,
.geeft-native__aside-block:last-child h3 a:focus {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

/* Le bloc "Descriptif des modules" fonctionne comme un lien ressource. */
.geeft-native__aside-block:nth-child(2) a {
  display: block;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--genv-sand);
  color: var(--genv-green-dark);
  text-align: center;
  text-decoration: none;
}

.geeft-native__aside-block:nth-child(2) a:hover,
.geeft-native__aside-block:nth-child(2) a:focus {
  background: #ede8dd;
  color: var(--genv-green);
}

/* ---------- Compatibilité anciens fragments natifs ---------- */

.geeft-native .panel-collapse,
.geeft-native .collapse,
.geeft-native .in,
.geeft-native .spip,
.geeft-native .spip_out {
  max-width: 100%;
}

/* ---------- Responsive ---------- */

@media (max-width: 980px) {
  .geeft-native__hero {
    grid-template-columns: minmax(0, 1fr) minmax(285px, 0.82fr);
    gap: 26px 30px;
  }

  .geeft-native__body {
    grid-template-columns: minmax(0, 1fr) minmax(235px, 285px);
    gap: 30px;
  }
}

@media (max-width: 820px) {
  body:has(.geeft-native) .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 30px));
    padding-top: 46px;
    padding-bottom: 66px;
  }

  body:has(.geeft-native) .com-content-article > .page-header {
    margin-bottom: 28px;
  }

  .geeft-native__hero {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-bottom: 38px;
    padding: 24px;
  }

  .geeft-native__hero > h3,
  .geeft-native__hero > div:first-of-type,
  .geeft-da-native .geeft-native__hero > div:first-of-type,
  .geeft-native__hero > div:last-of-type {
    grid-column: 1;
    grid-row: auto;
  }

  .geeft-native__hero > div:last-of-type img {
    height: auto !important;
    min-height: 0;
    max-height: none;
    aspect-ratio: 850 / 285;
  }

  .geeft-native__body {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .geeft-native__main {
    max-width: none;
  }

  .geeft-native__aside {
    position: static;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  body:has(.geeft-native) .site-grid > .container-component {
    width: calc(100% - 26px);
    padding-top: 38px;
    padding-bottom: 56px;
  }

  body:has(.geeft-native) .com-content-article > .page-header h1,
  body:has(.geeft-native) .com-content-article > .page-header h2 {
    font-size: clamp(2.15rem, 11vw, 3.25rem);
  }

  .geeft-native {
    font-size: 0.96rem;
  }

  .geeft-native__hero {
    padding: 19px;
    border-radius: 15px;
  }

  .geeft-native__item > summary {
    min-height: 57px;
    padding: 15px 48px 15px 16px;
    font-size: 0.98rem;
  }

  .geeft-native__item > summary::after {
    right: 15px;
  }

  .geeft-native__item-content {
    padding-left: 16px;
    padding-right: 16px;
  }

  .geeft-native__aside {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   37. AUTRES FICHES FORMATION — GABARIT COMMUN v40
   BioGET / GloFor / FNS-MI / PPSE — FR + EN
   Référence visuelle : fiches GEEFT validées en v39
   ========================================================= */

/* ---------- Cadre général commun ---------- */

body:has(.bioget-native) .site-grid > .container-component,
body:has(.glofor-native) .site-grid > .container-component,
body:has(.fnsmi-native) .site-grid > .container-component,
body:has(.ppse-native) .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 82px;
}

body:has(.bioget-native) .com-content-article,
body:has(.glofor-native) .com-content-article,
body:has(.fnsmi-native) .com-content-article,
body:has(.ppse-native) .com-content-article {
  color: var(--genv-ink);
}

body:has(.bioget-native) .com-content-article > .page-header,
body:has(.glofor-native) .com-content-article > .page-header,
body:has(.fnsmi-native) .com-content-article > .page-header,
body:has(.ppse-native) .com-content-article > .page-header {
  max-width: 1040px;
  margin: 0 0 34px;
  padding: 0;
  border: 0;
}

body:has(.bioget-native) .com-content-article > .page-header h1,
body:has(.bioget-native) .com-content-article > .page-header h2,
body:has(.glofor-native) .com-content-article > .page-header h1,
body:has(.glofor-native) .com-content-article > .page-header h2,
body:has(.fnsmi-native) .com-content-article > .page-header h1,
body:has(.fnsmi-native) .com-content-article > .page-header h2,
body:has(.ppse-native) .com-content-article > .page-header h1,
body:has(.ppse-native) .com-content-article > .page-header h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2.45rem, 5.4vw, 4.7rem);
  font-weight: 820;
  line-height: 0.98;
  letter-spacing: -0.052em;
  text-wrap: balance;
}

body:has(.bioget-native) .com-content-article > .page-header h1::before,
body:has(.bioget-native) .com-content-article > .page-header h2::before,
body:has(.glofor-native) .com-content-article > .page-header h1::before,
body:has(.glofor-native) .com-content-article > .page-header h2::before,
body:has(.fnsmi-native) .com-content-article > .page-header h1::before,
body:has(.fnsmi-native) .com-content-article > .page-header h2::before,
body:has(.ppse-native) .com-content-article > .page-header h1::before,
body:has(.ppse-native) .com-content-article > .page-header h2::before {
  content: "FORMATION";
  display: block;
  margin-bottom: 12px;
  color: var(--genv-green);
  font-size: 0.76rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.bioget-native,
.glofor-native,
.fnsmi-native,
.ppse-native,
.bioget-native *,
.glofor-native *,
.fnsmi-native *,
.ppse-native * {
  box-sizing: border-box;
}

.bioget-native,
.glofor-native,
.fnsmi-native,
.ppse-native {
  color: #405056;
  font-size: 1rem;
  line-height: 1.68;
}

.bioget-native a,
.glofor-native a,
.fnsmi-native a,
.ppse-native a {
  color: var(--genv-green-dark);
  font-weight: 700;
  text-underline-offset: 0.16em;
}

.bioget-native a:hover,
.bioget-native a:focus,
.glofor-native a:hover,
.glofor-native a:focus,
.fnsmi-native a:hover,
.fnsmi-native a:focus,
.ppse-native a:hover,
.ppse-native a:focus {
  color: var(--genv-green);
}

.bioget-native [style*="text-align: justify"],
.glofor-native [style*="text-align: justify"],
.fnsmi-native [style*="text-align: justify"],
.ppse-native [style*="text-align: justify"] {
  text-align: left !important;
}

/* ---------- HERO : BioGET ---------- */

.bioget-native__hero {
  margin: 0 0 38px;
  padding: 25px 28px 28px;
  border: 1px solid var(--genv-line);
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(237, 245, 242, 0.82), rgba(255, 255, 255, 0.96));
}

.bioget-native__hero > h3 {
  margin: 0 0 19px;
  color: var(--genv-orange);
  font-size: 0.82rem;
  font-weight: 850;
  line-height: 1.3;
  letter-spacing: 0.095em;
  text-transform: uppercase;
}

.bioget-native__hero > h3 > br:first-child {
  display: none;
}

.bioget-native__hero > div {
  margin: 0;
}

.bioget-native__hero img {
  display: block;
  width: 100% !important;
  height: auto !important;
  max-height: 360px;
  margin: 0;
  border-radius: 15px;
  object-fit: cover;
  box-shadow: 0 14px 32px rgba(24, 48, 42, 0.12);
}

/* Notice spécifique de la page EN BioGET. */
.bioget-native__notice {
  margin: -18px 0 34px;
  padding: 14px 17px;
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 10px 10px 0;
  background: #fff8e5;
  color: #594821;
}

.bioget-native__notice h3 {
  margin: 0;
  color: inherit;
  font-size: 0.98rem;
  line-height: 1.5;
}

/* ---------- HERO : FNS-MI / PPSE ---------- */

.fnsmi-native__hero,
.ppse-native__intro {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(330px, 0.92fr);
  gap: 18px 42px;
  align-items: start;
  margin: 0 0 50px;
  padding: 30px;
  border: 1px solid var(--genv-line);
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(237, 245, 242, 0.82), rgba(255, 255, 255, 0.96));
}

.fnsmi-native__hero > h3,
.ppse-native__intro > h3 {
  grid-column: 1;
  margin: 0;
  color: var(--genv-orange);
  font-size: 0.82rem;
  font-weight: 850;
  line-height: 1.3;
  letter-spacing: 0.095em;
  text-transform: uppercase;
}

.fnsmi-native__hero > div,
.ppse-native__intro > div {
  grid-column: 1;
  min-width: 0;
  margin: 0;
  color: #425156;
  font-size: 1.04rem;
  line-height: 1.72;
}

.fnsmi-native__hero > br,
.ppse-native__intro > br {
  display: none;
}

.fnsmi-native__hero > img,
.ppse-native__intro > img {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: block;
  width: 100% !important;
  height: 100% !important;
  min-height: 245px;
  max-height: 330px;
  margin: 0;
  border-radius: 15px;
  object-fit: cover;
  box-shadow: 0 14px 32px rgba(24, 48, 42, 0.12);
}

.fnsmi-native__hero > span {
  grid-column: 2;
  margin-top: -7px;
  color: var(--genv-muted);
  font-size: 0.76rem !important;
  line-height: 1.4;
}

/* ---------- HERO / identité : GloFor ---------- */

.glofor-native {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(255px, 315px);
  gap: 13px 44px;
  align-items: start;
}

.glofor-native__logo {
  grid-column: 1 / -1;
  margin: 0 0 6px;
  text-align: left !important;
}

.glofor-native__logo img {
  display: block;
  width: auto;
  max-width: min(340px, 70%);
  max-height: 105px;
  margin: 0;
  object-fit: contain;
}

.glofor-native__intro,
.glofor-native > .glofor-native__logo + div:not([class]) {
  grid-column: 1 / -1;
  margin: 0 0 36px;
  padding: 26px 28px 28px;
  border: 1px solid var(--genv-line);
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(237, 245, 242, 0.82), rgba(255, 255, 255, 0.96));
  color: #425156;
  font-size: 1.04rem;
  line-height: 1.72;
}

.glofor-native__intro img,
.glofor-native > .glofor-native__logo + div:not([class]) img {
  max-width: 100%;
  height: auto !important;
}

.glofor-native__intro img[src*="Co-Funded"],
.glofor-native > .glofor-native__logo + div:not([class]) img[src*="Co-Funded"] {
  display: block;
  width: auto !important;
  max-width: 270px;
  margin: 0 0 18px;
  box-shadow: none;
}

.glofor-native__intro img[src*="mosaic"],
.glofor-native > .glofor-native__logo + div:not([class]) img[src*="mosaic"] {
  display: block;
  width: 100% !important;
  max-height: 390px;
  margin: 22px 0 0;
  border-radius: 15px;
  object-fit: cover;
  box-shadow: 0 14px 32px rgba(24, 48, 42, 0.12);
}

/* ---------- Corps en deux colonnes : BioGET / FNS-MI ---------- */

.bioget-native__body,
.fnsmi-native__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(255px, 315px);
  gap: 44px;
  align-items: start;
}

.bioget-native__main,
.fnsmi-native__main,
.bioget-native__aside,
.fnsmi-native__aside {
  min-width: 0;
}

.bioget-native__main,
.fnsmi-native__main {
  max-width: 820px;
}

/* ---------- Corps en deux colonnes : PPSE ---------- */

.ppse-native {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(255px, 315px);
  gap: 0 44px;
  align-items: start;
}

.ppse-native__intro {
  grid-column: 1 / -1;
}

.ppse-native__sections {
  grid-column: 1;
  min-width: 0;
  display: grid;
  gap: 13px;
}

.ppse-native__aside {
  grid-column: 2;
  min-width: 0;
}

/* ---------- Accordéons communs ---------- */

.bioget-native__accordion,
.fnsmi-native__accordion {
  display: grid;
  gap: 13px;
}

.bioget-native__item,
.fnsmi-native__item,
.ppse-native__section,
.glofor-native__section {
  overflow: hidden;
  margin: 0;
  border: 1px solid var(--genv-line);
  border-radius: 14px;
  background: var(--genv-white);
  box-shadow: 0 5px 16px rgba(24, 48, 42, 0.035);
}

.glofor-native__section {
  grid-column: 1;
}

.bioget-native__item > summary,
.fnsmi-native__item > summary,
.ppse-native__section > summary,
.glofor-native__section > summary {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 62px;
  padding: 17px 52px 17px 19px;
  color: var(--genv-ink);
  font-size: 1.03rem;
  font-weight: 780;
  line-height: 1.3;
  cursor: pointer;
  list-style: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.bioget-native__item > summary::-webkit-details-marker,
.fnsmi-native__item > summary::-webkit-details-marker,
.ppse-native__section > summary::-webkit-details-marker,
.glofor-native__section > summary::-webkit-details-marker {
  display: none;
}

.bioget-native__item > summary::after,
.fnsmi-native__item > summary::after,
.ppse-native__section > summary::after,
.glofor-native__section > summary::after {
  content: "+";
  position: absolute;
  right: 19px;
  top: 50%;
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
  border-radius: 50%;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 1.25rem;
  font-weight: 650;
  line-height: 1;
}

.bioget-native__item[open] > summary,
.fnsmi-native__item[open] > summary,
.ppse-native__section[open] > summary,
.glofor-native__section[open] > summary {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

.bioget-native__item[open] > summary::after,
.fnsmi-native__item[open] > summary::after,
.ppse-native__section[open] > summary::after,
.glofor-native__section[open] > summary::after {
  content: "–";
  background: var(--genv-green-dark);
  color: var(--genv-white);
}

.bioget-native__item > summary:hover,
.bioget-native__item > summary:focus-visible,
.fnsmi-native__item > summary:hover,
.fnsmi-native__item > summary:focus-visible,
.ppse-native__section > summary:hover,
.ppse-native__section > summary:focus-visible,
.glofor-native__section > summary:hover,
.glofor-native__section > summary:focus-visible {
  background: #f2f7f5;
  color: var(--genv-green-dark);
}

.bioget-native__item > summary strong,
.fnsmi-native__item > summary strong,
.ppse-native__section > summary strong,
.glofor-native__section > summary strong {
  font-weight: inherit;
}

.bioget-native__item-content,
.fnsmi-native__item-content,
.ppse-native__section-content,
.glofor-native__section-content {
  padding: 5px 20px 22px;
  color: #47565b;
  line-height: 1.72;
}

.bioget-native__item[open] .bioget-native__item-content,
.fnsmi-native__item[open] .fnsmi-native__item-content,
.ppse-native__section[open] .ppse-native__section-content,
.glofor-native__section[open] .glofor-native__section-content {
  border-top: 1px solid rgba(15, 119, 95, 0.10);
  padding-top: 20px;
}

.bioget-native__item-content > :first-child,
.fnsmi-native__item-content > :first-child,
.ppse-native__section-content > :first-child,
.glofor-native__section-content > :first-child {
  margin-top: 0;
}

.bioget-native__item-content > :last-child,
.fnsmi-native__item-content > :last-child,
.ppse-native__section-content > :last-child,
.glofor-native__section-content > :last-child {
  margin-bottom: 0;
}

.bioget-native__item-content h2,
.fnsmi-native__item-content h2,
.ppse-native__section-content h2,
.glofor-native__section-content h2 {
  margin: 0 0 1rem;
  color: var(--genv-green-dark);
  font-size: 1.22rem;
  line-height: 1.3;
}

.bioget-native__item-content h3,
.fnsmi-native__item-content h3,
.ppse-native__section-content h3,
.glofor-native__section-content h3 {
  margin: 1.5rem 0 0.65rem;
  color: var(--genv-green-dark);
  font-size: 1.12rem;
  font-weight: 780;
  line-height: 1.3;
}

.bioget-native__item-content p,
.bioget-native__item-content ul,
.bioget-native__item-content ol,
.fnsmi-native__item-content p,
.fnsmi-native__item-content ul,
.fnsmi-native__item-content ol,
.ppse-native__section-content p,
.ppse-native__section-content ul,
.ppse-native__section-content ol,
.glofor-native__section-content p,
.glofor-native__section-content ul,
.glofor-native__section-content ol {
  margin-top: 0;
  margin-bottom: 1rem;
}

.bioget-native__item-content ul,
.bioget-native__item-content ol,
.fnsmi-native__item-content ul,
.fnsmi-native__item-content ol,
.ppse-native__section-content ul,
.ppse-native__section-content ol,
.glofor-native__section-content ul,
.glofor-native__section-content ol {
  padding-left: 1.35rem;
}

.bioget-native__item-content li + li,
.fnsmi-native__item-content li + li,
.ppse-native__section-content li + li,
.glofor-native__section-content li + li {
  margin-top: 0.42rem;
}

/* ---------- Colonnes latérales ---------- */

.bioget-native__aside,
.fnsmi-native__aside,
.ppse-native__aside {
  position: sticky;
  top: 28px;
  display: grid;
  gap: 15px;
}

.bioget-native__aside-block,
.fnsmi-native__aside-block,
.ppse-native__aside-block,
.glofor-native__contacts,
.glofor-native__official,
.glofor-native__application,
.glofor-native__all-courses {
  overflow-wrap: anywhere;
  padding: 20px 21px;
  border: 1px solid var(--genv-line);
  border-radius: 15px;
  background: var(--genv-white);
  box-shadow: 0 7px 22px rgba(24, 48, 42, 0.05);
}

.bioget-native__aside-block:first-child,
.fnsmi-native__aside-block:first-child,
.ppse-native__aside-block:first-child,
.glofor-native__contacts {
  background: var(--genv-pale);
  border-color: rgba(15, 119, 95, 0.12);
}

.bioget-native__aside-block h5,
.fnsmi-native__aside-block h5,
.ppse-native__aside-block h5,
.glofor-native__contacts h4,
.glofor-native__contacts h5 {
  margin: 0 0 10px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 850;
  line-height: 1.25;
  letter-spacing: 0.085em;
  text-transform: uppercase;
}

.bioget-native__aside-block h5:not(:first-child),
.fnsmi-native__aside-block h5:not(:first-child),
.ppse-native__aside-block h5:not(:first-child),
.glofor-native__contacts h4:not(:first-child),
.glofor-native__contacts h5:not(:first-child) {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(15, 119, 95, 0.14);
}

.bioget-native__aside-block > br:first-child,
.fnsmi-native__aside-block > br:first-child,
.ppse-native__aside-block > br:first-child,
.bioget-native__aside-block h5 > br:first-child,
.fnsmi-native__aside-block h5 > br:first-child,
.ppse-native__aside-block h5 > br:first-child,
.glofor-native__contacts h5 > br:first-child {
  display: none;
}

.bioget-native__aside-block a,
.fnsmi-native__aside-block a,
.ppse-native__aside-block a,
.glofor-native__contacts a {
  color: var(--genv-green-dark);
  font-weight: 800;
}

.bioget-native__aside-block:first-child a,
.fnsmi-native__aside-block:first-child a,
.ppse-native__aside-block:first-child a,
.glofor-native__contacts a {
  text-decoration: none;
}

.bioget-native__aside-block:first-child a:hover,
.bioget-native__aside-block:first-child a:focus,
.fnsmi-native__aside-block:first-child a:hover,
.fnsmi-native__aside-block:first-child a:focus,
.ppse-native__aside-block:first-child a:hover,
.ppse-native__aside-block:first-child a:focus,
.glofor-native__contacts a:hover,
.glofor-native__contacts a:focus {
  text-decoration: underline;
}

/* ---------- Ressources latérales ---------- */

.bioget-native__aside-block ul,
.fnsmi-native__aside-block ul,
.ppse-native__aside-block ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.bioget-native__aside-block li,
.fnsmi-native__aside-block li,
.ppse-native__aside-block li {
  margin: 0;
}

.bioget-native__aside-block span[style*="font-size"],
.fnsmi-native__aside-block span[style*="font-size"],
.ppse-native__aside-block span[style*="font-size"] {
  font-size: inherit !important;
}

.bioget-native__aside-block:nth-child(2) a,
.fnsmi-native__aside-block:nth-child(2) a,
.ppse-native__aside-block:nth-child(2) a,
.glofor-native__official a {
  display: block;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--genv-sand);
  color: var(--genv-green-dark);
  text-align: center;
  text-decoration: none;
}

.bioget-native__aside-block:nth-child(2) a:hover,
.bioget-native__aside-block:nth-child(2) a:focus,
.fnsmi-native__aside-block:nth-child(2) a:hover,
.fnsmi-native__aside-block:nth-child(2) a:focus,
.ppse-native__aside-block:nth-child(2) a:hover,
.ppse-native__aside-block:nth-child(2) a:focus,
.glofor-native__official a:hover,
.glofor-native__official a:focus {
  background: #ede8dd;
  color: var(--genv-green);
}

.glofor-native__official {
  grid-column: 2;
  grid-row: 3;
}

.glofor-native__contacts {
  grid-column: 2;
  grid-row: 4;
}

.glofor-native__application {
  grid-column: 2;
  grid-row: 5;
}

.glofor-native__all-courses {
  grid-column: 2;
  grid-row: 6;
}

.glofor-native__official h3,
.glofor-native__application h3,
.glofor-native__all-courses h3 {
  margin: 0 !important;
  text-align: left !important;
  font-size: 0.92rem;
  line-height: 1.25;
}

/* ---------- Boutons CTA ---------- */

.bioget-native__aside-block h3,
.fnsmi-native__aside-block h3,
.ppse-native__aside-block h3 {
  margin: 0 !important;
  text-align: left !important;
  font-size: 0.92rem;
  line-height: 1.25;
}

.bioget-native__aside-block h3 a,
.fnsmi-native__aside-block h3 a,
.ppse-native__aside-block h3 a,
.glofor-native__application h3 a,
.glofor-native__all-courses h3 a {
  display: flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 11px 14px;
  border-radius: 10px;
  background: var(--genv-green-dark);
  color: var(--genv-white);
  font-size: 0.78rem;
  font-weight: 850;
  letter-spacing: 0.065em;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform 150ms ease, background-color 150ms ease;
}

.bioget-native__aside-block h3 a:hover,
.bioget-native__aside-block h3 a:focus,
.fnsmi-native__aside-block h3 a:hover,
.fnsmi-native__aside-block h3 a:focus,
.ppse-native__aside-block h3 a:hover,
.ppse-native__aside-block h3 a:focus,
.glofor-native__application h3 a:hover,
.glofor-native__application h3 a:focus,
.glofor-native__all-courses h3 a:hover,
.glofor-native__all-courses h3 a:focus {
  transform: translateY(-1px);
  background: var(--genv-green);
  color: var(--genv-white);
  text-decoration: none;
}

/* Dernier bouton = retour vers toutes les formations. */
.bioget-native__aside-block:last-child h3 a,
.fnsmi-native__aside-block:last-child h3 a,
.ppse-native__aside-block:last-child h3 a,
.glofor-native__all-courses h3 a {
  border: 1px solid var(--genv-green-dark);
  background: transparent;
  color: var(--genv-green-dark);
}

.bioget-native__aside-block:last-child h3 a:hover,
.bioget-native__aside-block:last-child h3 a:focus,
.fnsmi-native__aside-block:last-child h3 a:hover,
.fnsmi-native__aside-block:last-child h3 a:focus,
.ppse-native__aside-block:last-child h3 a:hover,
.ppse-native__aside-block:last-child h3 a:focus,
.glofor-native__all-courses h3 a:hover,
.glofor-native__all-courses h3 a:focus {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

/* ---------- GloFor : rangées accordéons ---------- */

.glofor-native__section:nth-of-type(1) {
  grid-row: 3;
}

.glofor-native__section:nth-of-type(2) {
  grid-row: 4;
}

.glofor-native__section:nth-of-type(3) {
  grid-row: 5;
}

.glofor-native__section:nth-of-type(4) {
  grid-row: 6;
}

/* ---------- Témoignages FNS-MI ---------- */

.fnsmi-native__testimonials {
  margin-top: 58px;
  padding-top: 42px;
  border-top: 1px solid var(--genv-line);
}

.fnsmi-native__testimonials > h2 {
  margin: 0 0 25px;
  color: var(--genv-ink);
  font-size: clamp(1.75rem, 3vw, 2.45rem);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.025em;
}

.fnsmi-native__testimonial {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 19px 22px;
  align-items: start;
  margin: 0 0 16px;
  padding: 21px;
  border: 1px solid var(--genv-line);
  border-radius: 15px;
  background: var(--genv-white);
  box-shadow: 0 5px 16px rgba(24, 48, 42, 0.035);
}

.fnsmi-native__testimonial-avatar {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.fnsmi-native__testimonial-avatar img {
  display: block;
  width: 82px !important;
  height: 82px !important;
  border-radius: 50%;
  object-fit: cover;
}

.fnsmi-native__testimonial h3 {
  grid-column: 2;
  margin: 0;
  color: var(--genv-green-dark);
  font-size: 1.05rem;
  line-height: 1.3;
}

.fnsmi-native__testimonial-message {
  grid-column: 2;
  min-width: 0;
}

.fnsmi-native__testimonial-message > :first-child {
  margin-top: 0;
}

.fnsmi-native__testimonial-message > :last-child {
  margin-bottom: 0;
}

/* ---------- Compatibilité anciens fragments ---------- */

.ppse-native .panel-collapse,
.ppse-native .collapse,
.ppse-native .in,
.ppse-native .spip,
.ppse-native .spip_out,
.bioget-native .spip,
.fnsmi-native .spip,
.glofor-native .spip {
  max-width: 100%;
}

/* ---------- Responsive ---------- */

@media (max-width: 980px) {
  .fnsmi-native__hero,
  .ppse-native__intro {
    grid-template-columns: minmax(0, 1fr) minmax(285px, 0.82fr);
    gap: 18px 30px;
  }

  .bioget-native__body,
  .fnsmi-native__body,
  .ppse-native,
  .glofor-native {
    grid-template-columns: minmax(0, 1fr) minmax(235px, 285px);
    column-gap: 30px;
  }
}

@media (max-width: 820px) {
  body:has(.bioget-native) .site-grid > .container-component,
  body:has(.glofor-native) .site-grid > .container-component,
  body:has(.fnsmi-native) .site-grid > .container-component,
  body:has(.ppse-native) .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 30px));
    padding-top: 46px;
    padding-bottom: 66px;
  }

  body:has(.bioget-native) .com-content-article > .page-header,
  body:has(.glofor-native) .com-content-article > .page-header,
  body:has(.fnsmi-native) .com-content-article > .page-header,
  body:has(.ppse-native) .com-content-article > .page-header {
    margin-bottom: 28px;
  }

  .fnsmi-native__hero,
  .ppse-native__intro {
    grid-template-columns: 1fr;
    gap: 20px;
    margin-bottom: 38px;
    padding: 24px;
  }

  .fnsmi-native__hero > h3,
  .fnsmi-native__hero > div,
  .fnsmi-native__hero > img,
  .fnsmi-native__hero > span,
  .ppse-native__intro > h3,
  .ppse-native__intro > div,
  .ppse-native__intro > img {
    grid-column: 1;
    grid-row: auto;
  }

  .fnsmi-native__hero > img,
  .ppse-native__intro > img {
    height: auto !important;
    min-height: 0;
    max-height: none;
    aspect-ratio: 850 / 285;
  }

  .bioget-native__body,
  .fnsmi-native__body,
  .ppse-native,
  .glofor-native {
    grid-template-columns: 1fr;
    gap: 28px;
  }

  .bioget-native__main,
  .fnsmi-native__main {
    max-width: none;
  }

  .bioget-native__aside,
  .fnsmi-native__aside,
  .ppse-native__aside {
    position: static;
    grid-column: 1;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ppse-native__sections {
    grid-column: 1;
  }

  .glofor-native__logo,
  .glofor-native__intro,
  .glofor-native > .glofor-native__logo + div:not([class]),
  .glofor-native__section,
  .glofor-native__official,
  .glofor-native__contacts,
  .glofor-native__application,
  .glofor-native__all-courses {
    grid-column: 1;
    grid-row: auto !important;
  }

  .glofor-native__official,
  .glofor-native__contacts,
  .glofor-native__application,
  .glofor-native__all-courses {
    margin-top: 0;
  }
}

@media (max-width: 560px) {
  body:has(.bioget-native) .site-grid > .container-component,
  body:has(.glofor-native) .site-grid > .container-component,
  body:has(.fnsmi-native) .site-grid > .container-component,
  body:has(.ppse-native) .site-grid > .container-component {
    width: calc(100% - 26px);
    padding-top: 38px;
    padding-bottom: 56px;
  }

  body:has(.bioget-native) .com-content-article > .page-header h1,
  body:has(.bioget-native) .com-content-article > .page-header h2,
  body:has(.glofor-native) .com-content-article > .page-header h1,
  body:has(.glofor-native) .com-content-article > .page-header h2,
  body:has(.fnsmi-native) .com-content-article > .page-header h1,
  body:has(.fnsmi-native) .com-content-article > .page-header h2,
  body:has(.ppse-native) .com-content-article > .page-header h1,
  body:has(.ppse-native) .com-content-article > .page-header h2 {
    font-size: clamp(2.15rem, 11vw, 3.25rem);
  }

  .bioget-native,
  .glofor-native,
  .fnsmi-native,
  .ppse-native {
    font-size: 0.96rem;
  }

  .bioget-native__hero,
  .fnsmi-native__hero,
  .ppse-native__intro,
  .glofor-native__intro,
  .glofor-native > .glofor-native__logo + div:not([class]) {
    padding: 19px;
    border-radius: 15px;
  }

  .bioget-native__item > summary,
  .fnsmi-native__item > summary,
  .ppse-native__section > summary,
  .glofor-native__section > summary {
    min-height: 57px;
    padding: 15px 48px 15px 16px;
    font-size: 0.98rem;
  }

  .bioget-native__item > summary::after,
  .fnsmi-native__item > summary::after,
  .ppse-native__section > summary::after,
  .glofor-native__section > summary::after {
    right: 15px;
  }

  .bioget-native__item-content,
  .fnsmi-native__item-content,
  .ppse-native__section-content,
  .glofor-native__section-content {
    padding-left: 16px;
    padding-right: 16px;
  }

  .bioget-native__aside,
  .fnsmi-native__aside,
  .ppse-native__aside {
    grid-template-columns: 1fr;
  }

  .fnsmi-native__testimonial {
    grid-template-columns: 1fr;
  }

  .fnsmi-native__testimonial-avatar,
  .fnsmi-native__testimonial h3,
  .fnsmi-native__testimonial-message {
    grid-column: 1;
    grid-row: auto;
  }
}

/* =========================================================
   38. DOCTORAT / PHD / FORMATIONS COURTES — v41
   Structure native légère : .training-simple-native
   ========================================================= */

/* ---------- Cadre de page + titre Joomla ---------- */

body:has(.training-simple-native) .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 82px;
}

body:has(.training-simple-native) .com-content-article {
  color: var(--genv-ink);
}

body:has(.training-simple-native) .com-content-article > .page-header {
  max-width: 1040px;
  margin: 0 0 34px;
  padding: 0;
  border: 0;
}

body:has(.training-simple-native) .com-content-article > .page-header h1,
body:has(.training-simple-native) .com-content-article > .page-header h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2.45rem, 5.4vw, 4.7rem);
  font-weight: 820;
  line-height: 0.98;
  letter-spacing: -0.052em;
  text-wrap: balance;
}

body:has(.training-simple-native) .com-content-article > .page-header h1::before,
body:has(.training-simple-native) .com-content-article > .page-header h2::before {
  content: "FORMATION";
  display: block;
  margin-bottom: 12px;
  color: var(--genv-green);
  font-size: 0.76rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

/* ---------- Base ---------- */

.training-simple-native,
.training-simple-native * {
  box-sizing: border-box;
}

.training-simple-native {
  max-width: 1040px;
  color: #405056;
  font-size: 1rem;
  line-height: 1.72;
}

.training-simple-native a {
  color: var(--genv-green-dark);
  font-weight: 700;
  text-underline-offset: 0.16em;
}

.training-simple-native a:hover,
.training-simple-native a:focus {
  color: var(--genv-green);
}

.training-simple-native__hero {
  position: relative;
  margin: 0;
  padding: 30px 32px;
  overflow: hidden;
  border: 1px solid var(--genv-line);
  border-radius: 20px;
  background:
    linear-gradient(135deg, rgba(237, 245, 242, 0.86), rgba(255, 255, 255, 0.98));
  box-shadow: 0 7px 22px rgba(24, 48, 42, 0.045);
}

.training-simple-native__hero::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 5px;
  height: 100%;
  background: var(--genv-green);
}

.training-simple-native__hero > :first-child {
  margin-top: 0;
}

.training-simple-native__hero > :last-child {
  margin-bottom: 0;
}

.training-simple-native__hero p {
  margin: 0 0 1rem;
  max-width: 900px;
}

.training-simple-native__hero a {
  font-weight: 800;
}

/* ---------- Note EN formations courtes ---------- */

.training-simple-native__note {
  margin-top: 18px !important;
  padding: 12px 15px;
  border-left: 4px solid var(--genv-gold);
  border-radius: 0 10px 10px 0;
  background: #fff8e5;
  color: #594821;
  font-size: 0.92rem;
}

/* ---------- Actions / CTA ---------- */

.training-simple-native__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 20px 0 0;
}

.training-simple-native__cta {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: 12px 19px;
  border: 1px solid var(--genv-green-dark);
  border-radius: 10px;
  background: var(--genv-green-dark);
  color: var(--genv-white) !important;
  font-size: 0.8rem;
  font-weight: 850 !important;
  line-height: 1.2;
  letter-spacing: 0.065em;
  text-align: center;
  text-decoration: none !important;
  text-transform: uppercase;
  transition:
    transform 150ms ease,
    background-color 150ms ease,
    border-color 150ms ease;
}

.training-simple-native__cta:hover,
.training-simple-native__cta:focus {
  transform: translateY(-1px);
  border-color: var(--genv-green);
  background: var(--genv-green);
  color: var(--genv-white) !important;
}

/* ---------- Section Doctorat / PhD ---------- */

.training-simple-native__section {
  margin-top: 54px;
}

.training-simple-native__section > h2 {
  margin: 0 0 26px;
  max-width: 900px;
  color: var(--genv-ink);
  font-size: clamp(1.65rem, 3.2vw, 2.35rem);
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: -0.025em;
  text-wrap: balance;
}

.training-simple-native__section--directory {
  padding-top: 38px;
  border-top: 1px solid var(--genv-line);
}

/* Le module injecté reste maître de sa structure interne.
   On neutralise seulement les marges parasites les plus fréquentes. */
.training-simple-native__section--directory > .moduletable,
.training-simple-native__section--directory > .moduletable:last-child,
.training-simple-native__section--directory > div:last-child {
  margin-bottom: 0;
}

.training-simple-native__section--directory .moduletable > h3 {
  margin-top: 0;
}

/* ---------- Pages courtes ---------- */

.training-simple-native--short {
  max-width: 900px;
}

.training-simple-native--short .training-simple-native__hero {
  padding-top: 34px;
  padding-bottom: 34px;
}

.training-simple-native--short .training-simple-native__actions {
  margin-top: 22px;
}

/* ---------- Responsive ---------- */

@media (max-width: 820px) {
  body:has(.training-simple-native) .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 30px));
    padding-top: 46px;
    padding-bottom: 66px;
  }

  body:has(.training-simple-native) .com-content-article > .page-header {
    margin-bottom: 28px;
  }

  .training-simple-native__hero {
    padding: 25px 26px;
  }

  .training-simple-native__section {
    margin-top: 44px;
  }

  .training-simple-native__section--directory {
    padding-top: 32px;
  }
}

@media (max-width: 560px) {
  body:has(.training-simple-native) .site-grid > .container-component {
    width: calc(100% - 26px);
    padding-top: 38px;
    padding-bottom: 56px;
  }

  body:has(.training-simple-native) .com-content-article > .page-header h1,
  body:has(.training-simple-native) .com-content-article > .page-header h2 {
    font-size: clamp(2.15rem, 11vw, 3.25rem);
  }

  .training-simple-native {
    font-size: 0.96rem;
  }

  .training-simple-native__hero {
    padding: 21px 20px 21px 23px;
    border-radius: 15px;
  }

  .training-simple-native__actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .training-simple-native__cta {
    width: 100%;
  }

  .training-simple-native__section > h2 {
    font-size: 1.55rem;
  }
}

/* =========================================================
   39. DOCTORAT / PHD — CARTES DE NAVIGATION v42
   Doctorants actuels / anciens doctorants — FR + EN
   ========================================================= */

.training-simple-native__section--phd-nav {
  margin-top: 58px;
  padding-top: 40px;
  border-top: 1px solid var(--genv-line);
}

.training-simple-native__section--phd-nav > h2 {
  margin-bottom: 14px;
}

.training-simple-native__section-intro {
  max-width: 860px;
  margin: 0 0 28px;
  color: #516065;
  font-size: 1.01rem;
  line-height: 1.72;
}

.training-simple-native__phd-nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.training-simple-native__phd-card {
  position: relative;
  display: flex;
  min-height: 250px;
  flex-direction: column;
  padding: 25px 25px 23px;
  overflow: hidden;
  border: 1px solid var(--genv-line);
  border-radius: 16px;
  background: var(--genv-white);
  box-shadow: 0 7px 22px rgba(24, 48, 42, 0.045);
}

.training-simple-native__phd-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: var(--genv-green);
}

.training-simple-native__phd-kicker {
  display: inline-block;
  margin-bottom: 12px;
  color: var(--genv-orange);
  font-size: 0.73rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.training-simple-native__phd-card h3 {
  margin: 0 0 12px;
  color: var(--genv-ink);
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: -0.015em;
}

.training-simple-native__phd-card > p {
  margin: 0 0 16px;
  color: #4c5b60;
  line-height: 1.65;
}

.training-simple-native__phd-card > p:last-of-type {
  margin-bottom: 0;
}

/* ---------- Carte inactive : doctorants actuels ---------- */

.training-simple-native__phd-card--inactive {
  background:
    linear-gradient(135deg, rgba(246, 248, 247, 0.96), rgba(255, 255, 255, 1));
  border-color: #dce4e1;
  box-shadow: none;
}

.training-simple-native__phd-card--inactive::before {
  background: #aebbb7;
}

.training-simple-native__phd-card--inactive .training-simple-native__phd-kicker {
  color: #77857f;
}

.training-simple-native__phd-card--inactive h3 {
  color: #4f5e59;
}

.training-simple-native__phd-status {
  margin-top: auto !important;
  padding-top: 16px;
  border-top: 1px solid #e2e8e5;
  color: #7a8783 !important;
  font-size: 0.9rem;
  font-style: italic;
}

/* ---------- Carte active : anciens doctorants ---------- */

.training-simple-native__phd-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  min-height: 46px;
  margin-top: auto;
  padding: 11px 15px;
  border: 1px solid var(--genv-green-dark);
  border-radius: 10px;
  background: var(--genv-green-dark);
  color: var(--genv-white) !important;
  font-size: 0.76rem;
  font-weight: 850 !important;
  line-height: 1.2;
  letter-spacing: 0.06em;
  text-align: center;
  text-decoration: none !important;
  text-transform: uppercase;
  transition:
    transform 150ms ease,
    background-color 150ms ease,
    border-color 150ms ease;
}

.training-simple-native__phd-link:hover,
.training-simple-native__phd-link:focus {
  transform: translateY(-1px);
  border-color: var(--genv-green);
  background: var(--genv-green);
  color: var(--genv-white) !important;
}

/* ---------- Responsive ---------- */

@media (max-width: 760px) {
  .training-simple-native__section--phd-nav {
    margin-top: 48px;
    padding-top: 34px;
  }

  .training-simple-native__phd-nav {
    grid-template-columns: 1fr;
  }

  .training-simple-native__phd-card {
    min-height: 0;
  }

  .training-simple-native__phd-link {
    margin-top: 8px;
  }
}

@media (max-width: 560px) {
  .training-simple-native__phd-card {
    padding: 21px 19px 20px;
    border-radius: 14px;
  }

  .training-simple-native__phd-card h3 {
    font-size: 1.22rem;
  }

  .training-simple-native__phd-link {
    width: 100%;
  }
}

/* =========================================================
   40. FINANCER SA FORMATION / STUDENT SCHOLARSHIPS — v43
   Page transverse de financement — FR + EN
   ========================================================= */

/* ---------- Cadre de page + titre Joomla ---------- */

body:has(.financement-native) .site-grid > .container-component {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
  padding-top: 58px;
  padding-bottom: 82px;
}

body:has(.financement-native) .com-content-article {
  color: var(--genv-ink);
}

body:has(.financement-native) .com-content-article > .page-header {
  max-width: 1040px;
  margin: 0 0 34px;
  padding: 0;
  border: 0;
}

body:has(.financement-native) .com-content-article > .page-header h1,
body:has(.financement-native) .com-content-article > .page-header h2 {
  margin: 0;
  color: var(--genv-ink);
  font-size: clamp(2.45rem, 5.4vw, 4.7rem);
  font-weight: 820;
  line-height: 0.98;
  letter-spacing: -0.052em;
  text-wrap: balance;
}

body:has(.financement-native) .com-content-article > .page-header h1::before,
body:has(.financement-native) .com-content-article > .page-header h2::before {
  content: "FINANCEMENT";
  display: block;
  margin-bottom: 12px;
  color: var(--genv-green);
  font-size: 0.76rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

/* ---------- Structure générale ---------- */

.financement-native,
.financement-native * {
  box-sizing: border-box;
}

.financement-native {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(255px, 315px);
  gap: 13px 44px;
  align-items: start;
  color: #405056;
  font-size: 1rem;
  line-height: 1.7;
}

.financement-native a {
  color: var(--genv-green-dark);
  font-weight: 700;
  text-underline-offset: 0.16em;
}

.financement-native a:hover,
.financement-native a:focus {
  color: var(--genv-green);
}

.financement-native [style*="text-align: justify"] {
  text-align: left !important;
}

/* ---------- Accordéons ---------- */

.financement-native__item {
  grid-column: 1;
  overflow: hidden;
  margin: 0;
  border: 1px solid var(--genv-line);
  border-radius: 14px;
  background: var(--genv-white);
  box-shadow: 0 5px 16px rgba(24, 48, 42, 0.035);
}

.financement-native__item > summary {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 66px;
  padding: 18px 54px 18px 20px;
  color: var(--genv-ink);
  font-size: 1.06rem;
  font-weight: 790;
  line-height: 1.3;
  cursor: pointer;
  list-style: none;
  transition:
    background-color 150ms ease,
    color 150ms ease;
}

.financement-native__item > summary::-webkit-details-marker {
  display: none;
}

.financement-native__item > summary::after {
  content: "+";
  position: absolute;
  right: 19px;
  top: 50%;
  width: 29px;
  height: 29px;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
  border-radius: 50%;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 1.25rem;
  font-weight: 650;
  line-height: 1;
}

.financement-native__item[open] > summary {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

.financement-native__item[open] > summary::after {
  content: "–";
  background: var(--genv-green-dark);
  color: var(--genv-white);
}

.financement-native__item > summary:hover,
.financement-native__item > summary:focus-visible {
  background: #f2f7f5;
  color: var(--genv-green-dark);
}

.financement-native__item > summary strong {
  font-weight: inherit;
}

.financement-native__content {
  padding: 5px 21px 24px;
  color: #47565b;
  line-height: 1.72;
}

.financement-native__item[open] .financement-native__content {
  border-top: 1px solid rgba(15, 119, 95, 0.10);
  padding-top: 20px;
}

.financement-native__content > :first-child {
  margin-top: 0;
}

.financement-native__content > :last-child {
  margin-bottom: 0;
}

.financement-native__content p,
.financement-native__content div,
.financement-native__content ul,
.financement-native__content ol {
  max-width: 100%;
}

.financement-native__content p,
.financement-native__content ul,
.financement-native__content ol {
  margin-top: 0;
  margin-bottom: 1rem;
}

.financement-native__content ul,
.financement-native__content ol {
  padding-left: 1.35rem;
}

.financement-native__content li + li {
  margin-top: 0.55rem;
}

.financement-native__content h3 {
  margin: 1.65rem 0 0.7rem;
  color: var(--genv-green-dark);
  font-size: 1.14rem;
  font-weight: 800;
  line-height: 1.3;
}

.financement-native__content h3:first-child {
  margin-top: 0;
}

.financement-native__content strong {
  color: #31423f;
}

/* ---------- Bloc contacts ---------- */

.financement-native__contacts {
  grid-column: 2;
  grid-row: 1 / span 3;
  position: sticky;
  top: 28px;
  overflow-wrap: anywhere;
  padding: 22px 22px 23px;
  border: 1px solid rgba(15, 119, 95, 0.13);
  border-radius: 15px;
  background: var(--genv-pale);
  box-shadow: 0 7px 22px rgba(24, 48, 42, 0.05);
}

.financement-native__contacts::before {
  content: "CONTACTS";
  display: block;
  margin-bottom: 18px;
  color: var(--genv-green);
  font-size: 0.72rem;
  font-weight: 850;
  line-height: 1.2;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.financement-native__contacts h5 {
  margin: 0 0 8px;
  color: var(--genv-orange);
  font-size: 0.74rem;
  font-weight: 850;
  line-height: 1.28;
  letter-spacing: 0.075em;
  text-transform: uppercase;
}

.financement-native__contacts h5:not(:first-of-type) {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(15, 119, 95, 0.14);
}

.financement-native__contacts h5 > br:first-child {
  display: none;
}

.financement-native__contacts strong {
  display: inline-block;
  margin-bottom: 2px;
  color: var(--genv-ink);
  font-weight: 800;
}

.financement-native__contacts a {
  font-weight: 800;
}

/* ---------- Quelques respirations dans les contenus longs ---------- */

.financement-native__content ul {
  margin-top: 0.65rem;
}

.financement-native__content > div + div,
.financement-native__content > p + p {
  margin-top: 0.85rem;
}

.financement-native__content br + br {
  display: block;
  content: "";
  margin-top: 0.55rem;
}

/* ---------- Responsive ---------- */

@media (max-width: 900px) {
  .financement-native {
    grid-template-columns: minmax(0, 1fr) minmax(235px, 285px);
    column-gap: 30px;
  }
}

@media (max-width: 820px) {
  body:has(.financement-native) .site-grid > .container-component {
    width: min(var(--genv-content-width), calc(100% - 30px));
    padding-top: 46px;
    padding-bottom: 66px;
  }

  body:has(.financement-native) .com-content-article > .page-header {
    margin-bottom: 28px;
  }

  .financement-native {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .financement-native__item,
  .financement-native__contacts {
    grid-column: 1;
    grid-row: auto;
  }

  .financement-native__contacts {
    position: static;
    margin-top: 14px;
  }
}

@media (max-width: 560px) {
  body:has(.financement-native) .site-grid > .container-component {
    width: calc(100% - 26px);
    padding-top: 38px;
    padding-bottom: 56px;
  }

  body:has(.financement-native) .com-content-article > .page-header h1,
  body:has(.financement-native) .com-content-article > .page-header h2 {
    font-size: clamp(2.15rem, 11vw, 3.25rem);
  }

  .financement-native {
    font-size: 0.96rem;
  }

  .financement-native__item > summary {
    min-height: 58px;
    padding: 15px 48px 15px 16px;
    font-size: 0.98rem;
  }

  .financement-native__item > summary::after {
    right: 15px;
  }

  .financement-native__content {
    padding-left: 16px;
    padding-right: 16px;
  }

  .financement-native__contacts {
    padding: 20px 18px;
  }
}

/* === G-ENV 40 — RESEARCH LANDING === */

/* Conteneur général */
.genv-research-page .research-native {
  max-width: 1120px;
  margin-inline: auto;
  line-height: 1.72;
}

/* Introduction */
.genv-research-page .research-native__intro {
  max-width: 980px;
  margin: 0 auto 2rem;
  font-size: clamp(1.04rem, 1vw + .78rem, 1.18rem);
  line-height: 1.78;
}

/* Axes scientifiques */
.genv-research-page .research-native__orientations {
  margin: 0 0 3rem;
  padding: clamp(1.25rem, 2vw, 2rem);
  border: 1px solid color-mix(in srgb, var(--genv-green) 24%, transparent);
  border-left: 5px solid var(--genv-green);
  border-radius: 14px;
  background: color-mix(in srgb, var(--genv-green) 6%, white);
}

.genv-research-page .research-native__orientations > :first-child {
  margin-top: 0;
}

.genv-research-page .research-native__orientations > :last-child {
  margin-bottom: 0;
}

.genv-research-page .research-native__orientations h2,
.genv-research-page .research-native__orientations h3 {
  margin-bottom: 1rem;
  color: var(--genv-green);
}

/* Transition vers les unités de recherche */
.genv-research-page .research-native__units-heading {
  margin: 3.25rem 0 1.25rem;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(0, 0, 0, .12);
}

.genv-research-page .research-native__units-heading h2,
.genv-research-page .research-native__units-heading h3 {
  margin: 0;
}

/* Logos des unités */
.genv-research-page .research-native > img[src*="logo_"] {
  display: block;
  width: auto;
  max-width: min(260px, 76%);
  max-height: 118px;
  object-fit: contain;
  margin: 2.75rem 0 1rem;
  padding: .7rem 1rem;
  border: 1px solid rgba(0, 0, 0, .10);
  border-radius: 12px;
  background: #fff;
}

/* Contenu principal de chaque unité */
.genv-research-page .research-native__unit-content {
  margin-bottom: 1rem;
}

.genv-research-page .research-native__unit-content h2,
.genv-research-page .research-native__unit-content h3 {
  margin-top: 0;
  margin-bottom: .85rem;
  color: var(--genv-green);
}

/* Nettoyage des anciens styles éditoriaux */
.genv-research-page .research-native div[style*="text-align: justify"],
.genv-research-page .research-native p[style*="text-align: justify"] {
  text-align: left !important;
}

.genv-research-page .research-native p,
.genv-research-page .research-native div {
  overflow-wrap: anywhere;
}

.genv-research-page .research-native ul,
.genv-research-page .research-native ol {
  margin: .65rem 0 1.2rem;
  padding-left: 1.35rem;
}

.genv-research-page .research-native li + li {
  margin-top: .32rem;
}

/* Liens */
.genv-research-page .research-native a {
  text-decoration-thickness: .08em;
  text-underline-offset: .18em;
}

.genv-research-page .research-native a:hover,
.genv-research-page .research-native a:focus-visible {
  text-decoration-thickness: .13em;
}

/* Images et médias */
.genv-research-page .research-native img {
  max-width: 100%;
  height: auto;
}

/* Mobile */
@media (max-width: 767.98px) {
  .genv-research-page .research-native__intro {
    font-size: 1rem;
  }

  .genv-research-page .research-native__orientations {
    margin-bottom: 2.25rem;
    padding: 1.1rem 1rem;
    border-radius: 10px;
  }

  .genv-research-page .research-native__units-heading {
    margin-top: 2.5rem;
  }

  .genv-research-page .research-native > img[src*="logo_"] {
    margin-top: 2.2rem;
    max-width: min(220px, 82%);
  }
}

/* === /G-ENV 40 — RESEARCH LANDING === */

/* === G-ENV 41 — RESEARCH UNITS === */

/* Visuel d'ouverture : centré dans la colonne */
.genv-research-page .research-native img[src*="bandeau_recherche"] {
  display: block;
  width: auto;
  max-width: min(420px, 100%);
  height: auto;
  margin: 0 auto 1.75rem !important;
}

/* Les trois unités deviennent des cartes repliables homogènes */
.genv-research-page .research-native details {
  margin: 0 0 1rem;
  border: 1px solid rgba(20, 83, 68, .20);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 3px 14px rgba(0, 0, 0, .045);
  overflow: hidden;
}

/* En-tête cliquable */
.genv-research-page .research-native details > summary {
  display: grid;
  grid-template-columns: minmax(150px, 190px) minmax(0, 1fr) 24px;
  gap: 1.25rem;
  align-items: center;
  min-height: 112px;
  padding: .85rem 1.2rem;
  cursor: pointer;
  list-style: none;
  font-weight: 750;
  line-height: 1.35;
  color: #1d2926;
  transition:
    background-color .18s ease,
    color .18s ease;
}

/* Supprime le marqueur natif à gauche */
.genv-research-page .research-native details > summary::-webkit-details-marker {
  display: none;
}

.genv-research-page .research-native details > summary::marker {
  content: "";
}

/* Chevron maison à droite */
.genv-research-page .research-native details > summary::after {
  content: "›";
  display: block;
  justify-self: end;
  font-size: 1.75rem;
  font-weight: 400;
  line-height: 1;
  color: var(--genv-green);
  transform: rotate(0deg);
  transform-origin: center;
  transition: transform .18s ease;
}

.genv-research-page .research-native details[open] > summary::after {
  transform: rotate(90deg);
}

/* Logo dans le summary */
.genv-research-page .research-native details > summary img {
  display: block;
  justify-self: center;
  width: auto !important;
  max-width: 180px !important;
  max-height: 88px !important;
  height: auto !important;
  object-fit: contain;
  margin: 0 !important;
  padding: .25rem .4rem !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
}

/* États interactifs */
.genv-research-page .research-native details > summary:hover,
.genv-research-page .research-native details > summary:focus-visible {
  background: rgba(20, 83, 68, .045);
}

.genv-research-page .research-native details > summary:focus-visible {
  outline: 3px solid rgba(20, 83, 68, .22);
  outline-offset: -3px;
}

.genv-research-page .research-native details[open] > summary {
  border-bottom: 1px solid rgba(20, 83, 68, .14);
  background: rgba(20, 83, 68, .035);
  color: var(--genv-green);
}

/* Contenu déplié */
.genv-research-page .research-native details > :not(summary) {
  margin-left: 1.4rem;
  margin-right: 1.4rem;
}

.genv-research-page .research-native details > :nth-child(2) {
  margin-top: 1.25rem;
}

.genv-research-page .research-native details > :last-child {
  margin-bottom: 1.4rem;
}

/* Le premier bloc de texte de l'unité garde une bonne hiérarchie */
.genv-research-page .research-native details .research-native__unit-content {
  margin-bottom: 1rem;
}

/* E-mails / contacts et vieux divs : respiration plus régulière */
.genv-research-page .research-native details > div {
  margin-top: .35rem;
  margin-bottom: .55rem;
}

/* Mobile */
@media (max-width: 767.98px) {
  .genv-research-page .research-native img[src*="bandeau_recherche"] {
    max-width: min(340px, 94%);
    margin-bottom: 1.35rem !important;
  }

  .genv-research-page .research-native details {
    border-radius: 11px;
  }

  .genv-research-page .research-native details > summary {
    grid-template-columns: 112px minmax(0, 1fr) 20px;
    gap: .8rem;
    min-height: 92px;
    padding: .8rem .85rem;
    font-size: .94rem;
  }

  .genv-research-page .research-native details > summary img {
    max-width: 108px !important;
    max-height: 68px !important;
  }

  .genv-research-page .research-native details > summary::after {
    font-size: 1.45rem;
  }

  .genv-research-page .research-native details > :not(summary) {
    margin-left: 1rem;
    margin-right: 1rem;
  }

  .genv-research-page .research-native details > :last-child {
    margin-bottom: 1.1rem;
  }
}

/* Très petits écrans : logo au-dessus du titre */
@media (max-width: 480px) {
  .genv-research-page .research-native details > summary {
    grid-template-columns: 1fr 24px;
  }

  .genv-research-page .research-native details > summary img {
    grid-column: 1 / 2;
    justify-self: start;
    max-width: 130px !important;
    margin-bottom: .3rem !important;
  }

  .genv-research-page .research-native details > summary::after {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }
}

/* === /G-ENV 41 — RESEARCH UNITS === */

/* === G-ENV 42 — RESEARCH PROJECT ARCHIVE === */

.genv-research-projects-page .genv-project-archive-note {
  max-width: 1050px;
  margin: 0 auto 2rem;
  padding: 1rem 1.15rem;
  border: 1px solid rgba(20, 83, 68, .22);
  border-left: 5px solid var(--genv-green);
  border-radius: 12px;
  background: rgba(20, 83, 68, .045);
  line-height: 1.6;
}

.genv-research-projects-page .genv-project-archive-note strong {
  color: var(--genv-green);
}

@media (max-width: 767.98px) {
  .genv-research-projects-page .genv-project-archive-note {
    margin-bottom: 1.5rem;
    padding: .9rem 1rem;
    border-radius: 10px;
  }
}

/* === /G-ENV 42 — RESEARCH PROJECT ARCHIVE === */

/* === G-ENV 43 — RESEARCH PROJECT ACCORDIONS === */

/* Liste des projets : même rythme que les accordéons formations */
.genv-research-projects-page .research-projects-native {
  display: grid;
  gap: 13px;
}

/* Chaque projet devient une carte accordéon */
.genv-research-projects-page .research-projects-native__item {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--genv-line);
  border-radius: 12px;
  background: var(--genv-white);
}

/* Titre : même langage graphique que GEEFT / BioGET / FNS-MI */
.genv-research-projects-page .research-projects-native__item > summary {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 62px;
  padding: 17px 54px 17px 19px;
  color: var(--genv-ink);
  font-size: 1.03rem;
  font-weight: 780;
  line-height: 1.32;
  cursor: pointer;
  list-style: none;
  transition:
    background-color 150ms ease,
    color 150ms ease;
}

.genv-research-projects-page
  .research-projects-native__item > summary::-webkit-details-marker {
  display: none;
}

.genv-research-projects-page
  .research-projects-native__item > summary::marker {
  content: "";
}

/* Bouton + circulaire */
.genv-research-projects-page
  .research-projects-native__item > summary::after {
  content: "+";
  position: absolute;
  right: 19px;
  top: 50%;
  width: 29px;
  height: 29px;
  display: grid;
  place-items: center;
  transform: translateY(-50%);
  border-radius: 50%;
  background: var(--genv-pale);
  color: var(--genv-green-dark);
  font-size: 1.25rem;
  font-weight: 650;
  line-height: 1;
}

/* Survol / clavier */
.genv-research-projects-page
  .research-projects-native__item > summary:hover,
.genv-research-projects-page
  .research-projects-native__item > summary:focus-visible {
  background: #f2f7f5;
  color: var(--genv-green-dark);
}

.genv-research-projects-page
  .research-projects-native__item > summary:focus-visible {
  outline: 3px solid rgba(20, 83, 68, .18);
  outline-offset: -3px;
}

/* État ouvert */
.genv-research-projects-page
  .research-projects-native__item[open] > summary {
  background: var(--genv-pale);
  color: var(--genv-green-dark);
}

.genv-research-projects-page
  .research-projects-native__item[open] > summary::after {
  content: "–";
  background: var(--genv-green-dark);
  color: var(--genv-white);
}

/* Contenu déplié */
.genv-research-projects-page
  .research-projects-native__item > :not(summary) {
  margin-left: 19px;
  margin-right: 19px;
}

.genv-research-projects-page
  .research-projects-native__item > :nth-child(2) {
  margin-top: 18px;
}

.genv-research-projects-page
  .research-projects-native__item > :last-child {
  margin-bottom: 20px;
}

/* Le texte ancien était parfois justifié : harmonisation avec le site */
.genv-research-projects-page
  .research-projects-native__item div[style*="text-align: justify"],
.genv-research-projects-page
  .research-projects-native__item p[style*="text-align: justify"] {
  text-align: left !important;
}

/* Paragraphes / listes / liens du contenu */
.genv-research-projects-page .research-projects-native__item p {
  margin-top: 0;
  margin-bottom: .9rem;
  line-height: 1.67;
}

.genv-research-projects-page .research-projects-native__item ul,
.genv-research-projects-page .research-projects-native__item ol {
  margin: .45rem 0 1rem;
  padding-left: 1.35rem;
}

.genv-research-projects-page .research-projects-native__item li + li {
  margin-top: .3rem;
}

.genv-research-projects-page .research-projects-native__item a {
  text-decoration-thickness: .08em;
  text-underline-offset: .18em;
}

/* Sépare subtilement le contenu de l'en-tête ouvert */
.genv-research-projects-page
  .research-projects-native__item[open] > summary {
  border-bottom: 1px solid var(--genv-line);
}

/* Mobile : mêmes proportions que les accordéons formations */
@media (max-width: 767.98px) {
  .genv-research-projects-page .research-projects-native {
    gap: 10px;
  }

  .genv-research-projects-page
    .research-projects-native__item > summary {
    min-height: 57px;
    padding: 15px 48px 15px 16px;
    font-size: .98rem;
  }

  .genv-research-projects-page
    .research-projects-native__item > summary::after {
    right: 15px;
    width: 27px;
    height: 27px;
  }

  .genv-research-projects-page
    .research-projects-native__item > :not(summary) {
    margin-left: 16px;
    margin-right: 16px;
  }

  .genv-research-projects-page
    .research-projects-native__item > :nth-child(2) {
    margin-top: 15px;
  }

  .genv-research-projects-page
    .research-projects-native__item > :last-child {
    margin-bottom: 17px;
  }
}

/* === /G-ENV 43 — RESEARCH PROJECT ACCORDIONS === */


/* GENV-HEADER-LOGO-SIZE-v1 */
body.site > header.container-header .navbar-brand img {
  display: block;
  width: auto;
  height: auto;
  max-width: 50px;
  max-height: 50px;
}

@media (max-width: 767.98px) {
  body.site > header.container-header .navbar-brand img {
    max-width: 25px;
    max-height: 25px;
  }
}
/* /GENV-HEADER-LOGO-SIZE-v1 */

/* G-ENV — SMART SEARCH : LARGEUR CENTRALE — v1 */
.com-finder.finder {
  width: min(var(--genv-content-width), calc(100% - 40px));
  margin-inline: auto;
}

@media (max-width: 640px) {
  .com-finder.finder {
    width: min(var(--genv-content-width), calc(100% - 26px));
  }
}
/* FIN G-ENV — SMART SEARCH : LARGEUR CENTRALE — v1 */
/* =========================================================
   G-ENV — SMART SEARCH TOPBAR / LOUPE — v1
   ========================================================= */

body.site > header.container-header .container-topbar .genv-topbar-searchbox {
  position: relative;
  display: flex;
  align-items: center;
  margin-left: 0.25rem;
}

body.site > header.container-header .container-topbar .genv-topbar-search-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--genv-white);
  cursor: pointer;
}

body.site > header.container-header .container-topbar .genv-topbar-search-toggle:hover,
body.site > header.container-header .container-topbar .genv-topbar-search-toggle:focus-visible,
body.site > header.container-header .container-topbar .genv-topbar-search-toggle[aria-expanded="true"] {
  background: rgba(255, 255, 255, 0.14);
}

body.site > header.container-header .container-topbar .genv-topbar-search-toggle:focus-visible {
  outline: 2px solid var(--genv-white);
  outline-offset: 2px;
}

body.site > header.container-header .container-topbar .genv-topbar-search-panel {
  position: absolute;
  z-index: 1200;
  top: calc(100% + 6px);
  right: 0;
  width: min(300px, calc(100vw - 2rem));
  padding: 0.45rem;
  border: 1px solid rgba(0, 0, 0, 0.14);
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.16);
}

body.site > header.container-header .container-topbar .genv-topbar-search-panel[hidden] {
  display: none !important;
}

body.site > header.container-header .container-topbar .genv-topbar-search-panel search,
body.site > header.container-header .container-topbar .genv-topbar-search-panel form {
  display: block;
  margin: 0;
}

body.site > header.container-header .container-topbar .genv-topbar-search-input {
  width: 100%;
  min-width: 0;
  height: 36px;
  margin: 0;
  color: var(--genv-ink);
  background: #fff;
}

@media (max-width: 640px) {
  body.site > header.container-header .container-topbar .genv-topbar-search-panel {
    width: min(300px, calc(100vw - 1.6rem));
  }
}

/* FIN G-ENV — SMART SEARCH TOPBAR / LOUPE — v1 */
/* G-ENV SMART SEARCH FINITIONS v1 — START */
.com-finder.finder .com-finder__search .btn.btn-primary {
  background-color: var(--genv-green-bar) !important;
  border-color: var(--genv-green-bar) !important;
  color: #fff !important;
}

.com-finder.finder .com-finder__search .btn.btn-primary:hover,
.com-finder.finder .com-finder__search .btn.btn-primary:focus {
  background-color: var(--genv-green-bar) !important;
  border-color: var(--genv-green-bar) !important;
  color: #fff !important;
  filter: brightness(0.92);
}
/* G-ENV SMART SEARCH FINITIONS v1 — END */
