/* ========================================
   GTV Design System - Version 2.0
   Palette Orange/Amber modernisee
   ======================================== */

:root {
  /* === PALETTE PRINCIPALE (Orange/Amber) === */
  --gtvAmber-50: #fffbeb;
  --gtvAmber-100: #fef3c7;
  --gtvAmber-200: #fde68a;
  --gtvAmber-300: #fcd34d;
  --gtvAmber-400: #fbbf24;
  --gtvAmber-500: #f59e0b;
  --gtvAmber-600: #d97706;
  --gtvAmber-700: #b45309;
  --gtvAmber-800: #92400e;
  --gtvAmber-900: #78350f;

  /* === PALETTE VERTE (Accent nature) === */
  --gtvGreen-50: #ecfdf5;
  --gtvGreen-100: #d1fae5;
  --gtvGreen-200: #a7f3d0;
  --gtvGreen-300: #6ee7b7;
  --gtvGreen-400: #34d399;
  --gtvGreen-500: #10b981;
  --gtvGreen-600: #059669;
  --gtvGreen-700: #047857;
  --gtvGreen-800: #065f46;
  --gtvGreen-900: #064e3b;

  /* === PALETTE ROUGE (Danger/Erreur) === */
  --gtvRed-50: #fef2f2;
  --gtvRed-100: #fee2e2;
  --gtvRed-200: #fecaca;
  --gtvRed-300: #fca5a5;
  --gtvRed-400: #f87171;
  --gtvRed-500: #ef4444;
  --gtvRed-600: #dc2626;
  --gtvRed-700: #b91c1c;
  --gtvRed-800: #991b1b;
  --gtvRed-900: #7f1d1d;

  /* === NEUTRES (Stone) === */
  --gtvStone-50: #fafaf9;
  --gtvStone-100: #f5f5f4;
  --gtvStone-200: #e7e5e4;
  --gtvStone-300: #d6d3d1;
  --gtvStone-400: #a8a29e;
  --gtvStone-500: #78716c;
  --gtvStone-600: #57534e;
  --gtvStone-700: #44403c;
  --gtvStone-800: #292524;
  --gtvStone-900: #1c1917;

  /* === PALETTE DU LOGO (refonte) === */
  --gtvForet: #1F3B2C;
  --gtvForet-700: #2C5238;
  --gtvMousse: #6E8B3D;
  --gtvMousseFonce: #4F6A2A;
  --gtvOcre: #D98A1F;
  --gtvOcreBouton: #A35A0B;
  --gtvOcreBoutonSurvol: #8A4B08;
  --gtvOcreClair: #F2C27A;
  --gtvCreme: #F6F1E7;
  --gtvBordeaux: #7A2B2B;
  --gtvBordeaux-50: #F4E3E3;
  --gtvBordeaux-100: #E8C9C9;
  --gtvBordeaux-800: #5E1F1F;
  --gtvBordeaux-900: #4A1818;
  --gtvOcre-50: #FBEBD0;
  --gtvCreme-300: #E6DDC8;
  --gtvEncre: #1E2420;
  --fontTitre: 'Montserrat', system-ui, sans-serif;
  --fontTexte: 'Source Sans 3', system-ui, sans-serif;

  /* === ALIASES PRINCIPAUX === */
  --colorPrimary: var(--gtvOcreBouton);
  --colorPrimaryHover: var(--gtvOcreBoutonSurvol);
  --colorPrimaryLight: var(--gtvOcre-50);
  --colorAccent: var(--gtvMousseFonce);
  --colorAccentHover: var(--gtvForet-700);
  --colorText: var(--gtvEncre);
  --colorTextMuted: var(--gtvStone-600);
  --colorTextLight: var(--gtvStone-500);
  --colorBg: #ffffff;
  --colorBgAlt: var(--gtvStone-50);
  --colorBgWarm: var(--gtvCreme);
  --colorBorder: var(--gtvStone-200);

  /* === TYPOGRAPHIE === */
  --fontPrimary: var(--fontTexte);
  --fontSecondary: var(--fontPrimary);

  --textXs: 0.75rem;
  --textSm: 0.875rem;
  --textBase: 1rem;
  --textLg: 1.125rem;
  --textXl: 1.25rem;
  --text2xl: 1.5rem;
  --text3xl: 1.875rem;
  --text4xl: 2.25rem;
  --text5xl: 3rem;
  --text6xl: 3.75rem;

  /* === ESPACEMENTS === */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;

  /* === EFFETS === */
  --shadowSm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --shadowMd: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  --shadowLg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --shadowXl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  --shadow2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);

  --radiusSm: 0.25rem;
  --radiusMd: 0.5rem;
  --radiusLg: 0.75rem;
  --radiusXl: 1rem;
  --radius2xl: 1.5rem;
  --radiusFull: 9999px;

  --transitionFast: 150ms ease;
  --transitionBase: 300ms ease;
  --transitionSlow: 500ms ease;

  /* Legacy aliases */
  --gtvForest-50: #F3F6EC;
  --gtvForest-100: #E3EAD2;
  --gtvForest-200: #C8D5A8;
  --gtvForest-500: #6E8B3D;
  --gtvForest-600: #4F6A2A;
  --gtvForest-700: #2C5238;
  --gtvForest-800: #1F3B2C;
  --gtvSlate-50: var(--gtvStone-50);
  --gtvSlate-100: var(--gtvStone-100);
  --gtvSlate-200: var(--gtvStone-200);
  --gtvSlate-300: var(--gtvStone-300);
  --gtvSlate-400: var(--gtvStone-400);
  --gtvSlate-500: var(--gtvStone-500);
  --gtvSlate-600: var(--gtvStone-600);
  --gtvSlate-700: var(--gtvStone-700);
  --gtvSlate-800: var(--gtvStone-800);
  --gtvSlate-900: var(--gtvStone-900);
  --gtvAccent-100: #FBEBD0;
  --gtvAccent-500: var(--gtvOcre);
  --gtvAccent-600: var(--gtvOcreBouton);
  --gtvAccent-700: var(--gtvOcreBoutonSurvol);
  --colorBgCard: #ffffff;

  /* Couleurs sémantiques */
  --gtvError: var(--gtvRed-500);
  --gtvErrorDark: var(--gtvRed-600);
  --gtvWarning: var(--gtvOcreBouton);
  --gtvSuccess: var(--gtvMousseFonce);
}

/* ========================================
   RESET & BASE
   ======================================== */
body {
  font-family: var(--fontPrimary);
  line-height: 1.6;
  color: var(--colorText);
  background: var(--colorBg);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--fontTitre);
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--gtvForet);
  outline-offset: 2px;
}

:where(.hero-gtv, .hero-gtv-page, .section-gtv-dark, .footer-gtv) :where(a, button, input, [tabindex]):focus-visible {
  outline-color: var(--gtvOcreClair);
}

/* ========================================
   NAVIGATION
   ======================================== */
.navbar-gtv {
  background: rgba(246, 241, 231, 0.97);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(31, 59, 44, 0.12);
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  transition: var(--transitionBase);
}

.navbar-gtv.scrolled {
  background: var(--gtvCreme);
  box-shadow: 0 2px 12px rgba(31, 59, 44, 0.12);
}

.navbar-container {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 var(--space-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  height: 80px;
}

.navbar-logo {
  flex-shrink: 0;
}

.navbar-logo img,
.navbar-mobile-header img {
  height: 56px;
  width: auto;
  object-fit: contain;
  mix-blend-mode: multiply; /* le fond blanc du logo prend la teinte crème */
}

/* Menu principal */
.navbar-menu {
  display: flex;
  align-items: center;
  gap: 0;
  list-style: none;
  margin: 0;
  padding: 0;
}

.navbar-item {
  position: relative;
}

.navbar-link {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  color: var(--gtvForet);
  text-decoration: none;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.9375rem;
  white-space: nowrap;
  border-radius: var(--radiusMd);
  position: relative;
  transition: color var(--transitionFast);
}

.navbar-link::after {
  content: '';
  position: absolute;
  left: var(--space-3);
  right: var(--space-3);
  bottom: 0;
  height: 2px;
  background: var(--gtvOcre);
  transform: scaleX(0);
  transition: transform var(--transitionFast);
}

.navbar-link:hover,
.navbar-link.active {
  color: var(--gtvOcreBouton);
}

.navbar-link:hover::after,
.navbar-link.active::after {
  transform: scaleX(1);
}

.navbar-link .dropdown-arrow {
  transition: transform var(--transitionFast);
}

.navbar-item.open .navbar-link .dropdown-arrow {
  transform: rotate(180deg);
}

/* Dropdown */
.navbar-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 240px;
  background: #ffffff;
  border-radius: 10px;
  box-shadow: 0 10px 24px rgba(31, 59, 44, 0.14);
  border: 1px solid rgba(31, 59, 44, 0.1);
  border-top: 3px solid var(--gtvOcre);
  padding: var(--space-2) 0;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: var(--transitionFast);
  list-style: none;
  margin: 0;
  z-index: 100;
}

.navbar-item.has-dropdown:hover .navbar-dropdown,
.navbar-item.has-dropdown.open .navbar-dropdown,
.navbar-item.has-dropdown:focus-within .navbar-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.navbar-dropdown li a {
  display: block;
  padding: var(--space-3) var(--space-5);
  color: var(--gtvEncre);
  text-decoration: none;
  font-size: 0.9375rem;
  transition: var(--transitionFast);
}

.navbar-dropdown li a:hover {
  background: var(--gtvCreme);
  color: var(--gtvOcreBouton);
}

/* Actions (connexion/admin, Agir avec nous) */
.navbar-actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
}

.navbar-action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radiusMd);
  color: var(--gtvForet);
  text-decoration: none;
  transition: var(--transitionFast);
}

.navbar-action-btn:hover {
  background: rgba(31, 59, 44, 0.08);
  color: var(--gtvOcreBouton);
}

.navbar-action-btn-accent {
  color: var(--gtvOcreBouton);
}

.navbar-agir {
  white-space: nowrap;
  margin-left: var(--space-2);
}

/* Burger menu mobile */
.navbar-burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 44px;
  height: 44px;
  background: transparent;
  border: none;
  border-radius: var(--radiusMd);
  cursor: pointer;
  padding: 0;
  gap: 5px;
}

.navbar-burger span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--gtvForet);
  transition: var(--transitionFast);
}

/* Menu mobile */
.navbar-mobile-overlay {
  position: fixed;
  inset: 0;
  background: rgba(31, 59, 44, 0.55);
  opacity: 0;
  visibility: hidden;
  transition: var(--transitionBase);
  z-index: 1001;
}

.navbar-mobile-overlay.open {
  opacity: 1;
  visibility: visible;
}

.navbar-mobile {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: 320px;
  max-width: 88vw;
  background: var(--gtvCreme);
  transform: translateX(100%);
  visibility: hidden;
  transition: transform var(--transitionBase), visibility var(--transitionBase);
  z-index: 1002;
  display: flex;
  flex-direction: column;
}

.navbar-mobile.open {
  transform: translateX(0);
  visibility: visible;
}

.navbar-mobile-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid rgba(31, 59, 44, 0.12);
}

.navbar-mobile-header img {
  height: 44px;
}

.navbar-mobile-close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--gtvForet);
  border-radius: var(--radiusMd);
}

.navbar-mobile-close:hover {
  background: rgba(31, 59, 44, 0.08);
}

.navbar-mobile-menu {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-2) 0;
  list-style: none;
  margin: 0;
}

.navbar-mobile-item {
  border-bottom: 1px solid rgba(31, 59, 44, 0.1);
}

.navbar-mobile-link {
  display: block;
  padding: var(--space-4) var(--space-5);
  color: var(--gtvForet);
  text-decoration: none;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.9375rem;
}

.navbar-mobile-item.has-submenu .navbar-mobile-link {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.navbar-mobile-item.has-submenu .navbar-mobile-link::after {
  content: '+';
  font-size: 1.25rem;
  color: var(--gtvMousseFonce);
  transition: var(--transitionFast);
}

.navbar-mobile-item.has-submenu.open .navbar-mobile-link::after {
  content: '\2212';
}

.navbar-mobile-submenu {
  display: none;
  background: #ffffff;
  list-style: none;
  margin: 0;
  padding: 0;
}

.navbar-mobile-item.open .navbar-mobile-submenu {
  display: block;
}

.navbar-mobile-submenu li a {
  display: block;
  padding: var(--space-3) var(--space-5) var(--space-3) var(--space-8);
  color: var(--gtvEncre);
  text-decoration: none;
  font-size: 0.9375rem;
  border-bottom: 1px solid var(--gtvStone-100);
}

.navbar-mobile-submenu li:last-child a {
  border-bottom: none;
}

.navbar-mobile-submenu li a:hover {
  color: var(--gtvOcreBouton);
}

.navbar-mobile-footer {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-5);
  border-top: 1px solid rgba(31, 59, 44, 0.12);
}

.navbar-mobile-footer .btn-gtv {
  width: 100%;
}

/* Responsive Navigation : six entrées + bouton, le burger prend le relais sous 1200 px */
@media (max-width: 1199px) {
  .navbar-menu {
    display: none;
  }

  .navbar-actions {
    display: none;
  }

  .navbar-burger {
    display: flex;
  }
}

/* Legacy nav-link-gtv */
.nav-link-gtv {
  color: var(--gtvStone-700);
  text-decoration: none;
  font-weight: 500;
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radiusMd);
  transition: var(--transitionFast);
}

.nav-link-gtv:hover {
  color: var(--colorPrimary);
  background: var(--gtvCreme);
}

.nav-link-gtv.active {
  color: var(--colorPrimary);
}

/* ========================================
   BUTTONS
   ======================================== */
.btn-gtv {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0.8125rem 1.5rem;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.9375rem;
  line-height: 1.2;
  text-decoration: none;
  border: 2px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  transition: background-color var(--transitionFast), color var(--transitionFast),
    border-color var(--transitionFast), transform var(--transitionFast);
}

.btn-gtv:hover {
  transform: translateY(-1px);
  text-decoration: none;
}

.btn-gtv-primary {
  background: var(--gtvOcreBouton);
  color: #ffffff;
  box-shadow: 0 2px 6px rgba(31, 59, 44, 0.18);
}

.btn-gtv-primary:hover {
  background: var(--gtvOcreBoutonSurvol);
  color: #ffffff;
}

.btn-gtv-accent {
  background: var(--gtvForet);
  color: #ffffff;
}

.btn-gtv-accent:hover {
  background: var(--gtvForet-700);
  color: #ffffff;
}

/* Contour blanc, sur photo ou fond sombre */
.btn-gtv-outline {
  background: transparent;
  color: #ffffff;
  border-color: #ffffff;
}

.btn-gtv-outline:hover {
  background: #ffffff;
  color: var(--gtvForet);
}

/* Contour forêt, sur fond clair */
.btn-gtv-outline-dark {
  background: transparent;
  color: var(--gtvForet);
  border-color: var(--gtvForet);
}

.btn-gtv-outline-dark:hover {
  background: var(--gtvForet);
  color: #ffffff;
}

/* Dans le panneau mobile (fond crème), le contour blanc ne se verrait pas */
.navbar-mobile .btn-gtv-outline {
  color: var(--gtvForet);
  border-color: var(--gtvForet);
}

.btn-gtv-white {
  background: #ffffff;
  color: var(--gtvForet);
}

.btn-gtv-white:hover {
  background: var(--gtvCreme);
  color: var(--gtvForet);
}

.btn-gtv-lg {
  padding: 1rem 2rem;
  font-size: var(--textBase);
}

.btn-gtv-sm {
  padding: 0.5625rem 1rem;
  font-size: 0.8125rem;
}

.btn-gtv svg {
  flex-shrink: 0;
}

/* Sur-titre : capitales espacées au-dessus d'un titre */
.sur-titre {
  display: block;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.8125rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gtvMousseFonce);
  margin: 0 0 var(--space-2);
}

/* Sur fond sombre : ocre éclairci (l'ocre du logo n'atteint pas 4,5:1 sur le vert forêt) */
.hero-gtv .sur-titre,
.hero-gtv-page .sur-titre,
.section-gtv-dark .sur-titre,
.footer-gtv .sur-titre,
.sur-titre--clair {
  color: var(--gtvOcreClair);
}

/* ========================================
   HERO SECTIONS
   ======================================== */
/* ========================================
   HERO (hero-gtv) - photo, voile forêt, aligné à gauche
   ======================================== */
.hero-gtv {
  position: relative;
  height: 600px;
  display: flex;
  align-items: center;
  overflow: hidden;
  background-color: var(--gtvForet);
  margin-top: -80px;
  padding-top: 80px;
}

/* Voile vert forêt, de gauche (texte) vers la droite (photo) */
.hero-gtv::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(31,59,44,.88), rgba(31,59,44,.55) 45%, rgba(31,59,44,0) 75%);
  z-index: 1;
  pointer-events: none;
}

/* Bandeau de page : hauteur réduite */
.hero-gtv--page {
  height: 380px;
}

.hero-gtv-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}

.hero-gtv-content {
  position: relative;
  z-index: 2;
  max-width: 1280px;
  /* width: 100%;*/
  margin: 0 auto;
  padding: 0 24px 0 80px;
  color: #ffffff;
}

.hero-gtv-title,
.hero-gtv h1,
section.hero-gtv h1 {
  font-family: var(--fontTitre);
  font-size: clamp(2.25rem, 1.4rem + 3.4vw, 3.75rem);
  font-weight: 800;
  line-height: 1.08;
  margin-bottom: 20px;
  color: #ffffff;
  text-wrap: balance;
}

.hero-gtv.hero-gtv--page .hero-gtv-title,
.hero-gtv.hero-gtv--page h1 {
  font-size: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
}

.hero-gtv-subtitle,
section.hero-gtv .hero-gtv-subtitle {
  font-size: 1.25rem;
  line-height: 1.55;
  color: #EDE7DA;
  max-width: 640px;
  margin-bottom: 32px;
}

.hero-gtv-actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

/* Ligne de crête sous la photo : prend la couleur de la section suivante
   (blanc par défaut, --creme pour un fond crème, ou --crete-fond en style) */
.hero-gtv__crete {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: clamp(16px, 3.2vw, 46px);
  background: var(--crete-fond, #ffffff);
  -webkit-mask: url('../images/motifs/crete.svg') 0 0 / 100% 100% no-repeat;
  mask: url('../images/motifs/crete.svg') 0 0 / 100% 100% no-repeat;
  z-index: 3;
  pointer-events: none;
}

.hero-gtv__crete--creme {
  --crete-fond: var(--gtvCreme);
}

.hero-gtv__crete--foret {
  --crete-fond: var(--gtvForet-700);
}

@media (max-width: 768px) {
  .hero-gtv-content {
    padding: 0 24px;
  }
}

/* Note: hero-gtv-page styles complets définis plus bas */

/* ========================================
   SECTIONS
   ======================================== */
.section-gtv {
  padding: var(--space-20) var(--space-6);
}

.section-gtv-alt {
  background: var(--colorBgAlt);
}

.section-gtv-dark {
  background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
  color: white;
}

.section-gtv-warm,
.section-gtv--creme {
  background: var(--gtvCreme);
}

/* Titre de section (h2), précédé d'un .sur-titre */
.titre-section,
.section-gtv-title {
  font-family: var(--fontTitre);
  font-weight: 800;
  font-size: clamp(1.625rem, 1.2rem + 1.6vw, 2.25rem);
  line-height: 1.15;
  color: var(--gtvForet);
  margin-bottom: var(--space-4);
}

.section-gtv-title {
  text-align: center;
}

.section-gtv-dark .titre-section,
.section-gtv-dark .section-gtv-title {
  color: #ffffff;
}

.section-gtv-subtitle {
  font-size: var(--textLg);
  color: var(--colorTextMuted);
  text-align: center;
  max-width: 672px;
  margin: 0 auto var(--space-12);
}

.section-divider {
  width: 96px;
  height: 4px;
  background: var(--colorPrimary);
  margin: 0 auto var(--space-8);
  border-radius: var(--radiusFull);
}

.section-header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-8);
}

.section-bar {
  width: 4px;
  height: 32px;
  background: var(--colorPrimary);
  border-radius: var(--radiusFull);
}

.section-header h2 {
  font-size: var(--text3xl);
  font-weight: 700;
  color: var(--colorText);
  margin: 0;
}

/* News header - titre à gauche, bouton à droite */
.news-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 48px;
  flex-wrap: wrap;
  gap: 24px;
}

@media (max-width: 768px) {
  .news-header {
    flex-direction: column;
    text-align: center;
  }
}

/* ========================================
   CARDS
   ======================================== */
.card-gtv,
.carte-gtv {
  background: #ffffff;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
  transition: box-shadow var(--transitionBase), transform var(--transitionBase);
}

.card-gtv:hover,
a.carte-gtv:hover,
.carte-gtv:focus-within {
  box-shadow: 0 8px 22px rgba(31, 59, 44, 0.14);
  transform: translateY(-3px);
}

.card-gtv-image {
  position: relative;
  height: 192px;
  overflow: hidden;
}

.card-gtv-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.card-gtv:hover .card-gtv-image img {
  transform: scale(1.1);
}

.card-gtv-body {
  padding: var(--space-6);
}

.card-gtv-title {
  font-family: var(--fontTitre);
  font-size: var(--textLg);
  font-weight: 700;
  color: var(--gtvForet);
  margin-bottom: var(--space-2);
}

.card-gtv-text {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  line-height: 1.6;
}

.card-gtv-link {
  color: var(--gtvOcreBouton);
  font-weight: 600;
  font-size: var(--textSm);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  transition: gap var(--transitionFast);
}

.card-gtv:hover .card-gtv-link {
  gap: var(--space-3);
}

/* Featured card (horizontal) */
.card-gtv-featured {
  background: linear-gradient(135deg, var(--gtvStone-50), var(--gtvStone-100));
  border-radius: var(--radius2xl);
  overflow: hidden;
  box-shadow: var(--shadowXl);
}

.card-gtv-featured:hover {
  box-shadow: var(--shadow2xl);
}

.card-gtv-featured-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}

.card-gtv-featured-image {
  position: relative;
  height: 400px;
  overflow: hidden;
}

.card-gtv-featured-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.card-gtv-featured:hover .card-gtv-featured-image img {
  transform: scale(1.05);
}

.card-gtv-featured-content {
  padding: var(--space-12);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.card-gtv-featured-title {
  font-size: var(--text4xl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-6);
  transition: color var(--transitionFast);
}

.card-gtv-featured:hover .card-gtv-featured-title {
  color: var(--colorPrimary);
}

/* ========================================
   BADGES
   ======================================== */
.badge-gtv {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-4);
  font-size: var(--textXs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  border-radius: var(--radiusFull);
}

.badge-gtv-primary {
  background: var(--gtvForest-100);
  color: var(--gtvMousseFonce);
}

.badge-gtv-accent {
  background: var(--gtvAccent-100);
  color: var(--gtvOcreBoutonSurvol);
}

.badge-gtv-success {
  background: var(--gtvCreme);
  color: var(--gtvMousseFonce);
}

.badge-gtv-warning {
  background: var(--gtvOcre-50);
  color: var(--gtvOcreBoutonSurvol);
}

.badge-gtv-danger {
  background: rgba(239, 68, 68, 0.1);
  color: #dc2626;
}

.badge-featured {
  position: absolute;
  top: var(--space-6);
  left: var(--space-6);
  padding: var(--space-2) var(--space-4);
  background: var(--colorPrimary);
  color: white;
  font-size: var(--textSm);
  font-weight: 600;
  border-radius: var(--radiusFull);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
}

/* Étiquettes de catégorie d'actualité (texte blanc, contraste >= 4,5:1) */
.etiquette-cat {
  display: inline-block;
  padding: 0.25rem 0.625rem;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.6875rem;
  line-height: 1.3;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  color: #ffffff;
  background: var(--gtvForet);
  border-radius: 4px;
}

.etiquette-cat--vie-asso { background: var(--gtvForet-700); }
.etiquette-cat--terrain { background: var(--gtvMousseFonce); }
.etiquette-cat--etudes { background: var(--gtvStone-700); }
.etiquette-cat--sensibilisation { background: var(--gtvOcreBouton); }
.etiquette-cat--evenements { background: var(--gtvBordeaux); }

/* ========================================
   CONTENT BLOCKS
   ======================================== */
.content-block {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
  gap: var(--space-12);
  align-items: center;
}

.content-block-text h2 {
  font-size: var(--text4xl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-6);
}

.content-block-text p {
  font-size: var(--textLg);
  color: var(--colorTextMuted);
  line-height: 1.75;
  margin-bottom: var(--space-6);
}

.content-block-image {
  position: relative;
}

.content-block-image img {
  border-radius: var(--radius2xl);
  box-shadow: var(--shadow2xl);
  width: 100%;
  height: auto;
}

.stat-box {
  position: absolute;
  bottom: -24px;
  left: -24px;
  background: var(--colorPrimary);
  color: white;
  padding: var(--space-6);
  border-radius: var(--radiusXl);
  box-shadow: var(--shadowXl);
}

.stat-box-number {
  font-size: var(--text3xl);
  font-weight: 700;
  margin-bottom: var(--space-1);
}

.stat-box-label {
  font-size: var(--textSm);
  color: var(--gtvOcreClair);
}

.status-box {
  position: absolute;
  top: -24px;
  right: -24px;
  background: white;
  padding: var(--space-6);
  border-radius: var(--radiusXl);
  box-shadow: var(--shadowXl);
  border: 2px solid var(--gtvOcreClair);
}

.status-box-label {
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  margin-bottom: var(--space-1);
}

.status-box-value {
  font-size: var(--text2xl);
  font-weight: 700;
  color: var(--colorPrimary);
}

/* Mission highlight */
.mission-highlight {
  background: var(--gtvCreme);
  border-left: 4px solid var(--colorPrimary);
  padding: var(--space-6);
  border-radius: 0 var(--radiusMd) var(--radiusMd) 0;
}

.mission-highlight p {
  color: var(--gtvStone-800);
  margin: 0;
}

/* ========================================
   NEWSLETTER / CTA
   ======================================== */
.cta-section {
  background: linear-gradient(135deg, var(--gtvOcreBouton), var(--gtvOcreBoutonSurvol), var(--gtvOcreBoutonSurvol));
  color: white;
  position: relative;
  overflow: hidden;
}

.cta-section-bg {
  position: absolute;
  inset: 0;
  opacity: 0.1;
  background-size: cover;
  background-position: center;
}

.cta-content {
  position: relative;
  z-index: 1;
  max-width: 896px;
  margin: 0 auto;
  text-align: center;
}

.cta-section h2 {
  font-size: var(--text4xl);
  font-weight: 700;
  margin-bottom: var(--space-6);
}

.cta-section p {
  font-size: var(--textXl);
  color: var(--gtvOcre-50);
  margin-bottom: var(--space-8);
}

.newsletter-form {
  display: flex;
  gap: var(--space-4);
  max-width: 672px;
  margin: 0 auto;
  flex-wrap: wrap;
  justify-content: center;
}

.newsletter-form input {
  flex: 1;
  min-width: 250px;
  padding: var(--space-4) var(--space-6);
  border-radius: var(--radiusMd);
  border: none;
  outline: none;
  font-size: var(--textBase);
}

.newsletter-form input:focus {
  box-shadow: 0 0 0 4px rgba(254, 243, 199, 0.3);
}

/* ========================================
   PARTNERS
   ======================================== */
.partners-section {
  padding: var(--space-16) var(--space-6);
  border-top: 1px solid var(--colorBorder);
  border-bottom: 1px solid var(--colorBorder);
}

.partners-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-12);
  opacity: 0.6;
  transition: opacity var(--transitionBase);
}

.partners-grid:hover {
  opacity: 1;
}

.partners-grid img {
  max-height: 48px;
  width: auto;
  filter: grayscale(100%);
  transition: filter var(--transitionBase);
}

.partners-grid img:hover {
  filter: grayscale(0%);
}

/* ========================================
   FOOTER
   ======================================== */
/* Lisière de futaie irrégulière (tools/foret_aeree.py) sur dégradé ocre, juste avant le pied de page */
.pied-sapins {
  height: 112px;
  background:
    url('../images/motifs/foret_mixte_aeree.svg') left bottom / auto 96px repeat-x,
    linear-gradient(var(--gtvCreme), #F3D9A8);
}

.footer-gtv {
  background: var(--gtvForet);
  color: #E8E2D4;
  padding: var(--space-10) 0 var(--space-6);
  margin-top: -1px;
}

.footer-gtv-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 var(--space-6);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6) var(--space-10);
}

.footer-gtv-identite {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-4) var(--space-6);
}

.footer-gtv-logo {
  display: inline-block;
  background: #ffffff;
  padding: 6px 10px;
  border-radius: 8px;
  line-height: 0;
}

.footer-gtv-logo img {
  height: 48px;
  width: auto;
}

.footer-gtv address {
  font-style: normal;
  line-height: 1.6;
  margin: 0;
  color: #E8E2D4;
}

.footer-gtv-title {
  font-size: var(--textLg);
  font-weight: 700;
  margin-bottom: var(--space-4);
  color: #ffffff;
}

.footer-gtv-liens {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-6);
}

.footer-gtv-link {
  color: #ffffff;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.875rem;
  text-decoration: none;
  padding: var(--space-1) 0;
  transition: color var(--transitionFast);
}

.footer-gtv-link:hover {
  color: var(--gtvOcreClair);
  text-decoration: underline;
}

.footer-gtv-social {
  display: flex;
  gap: var(--space-3);
}

.footer-gtv-social a {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.1);
  border-radius: var(--radiusFull);
  color: #ffffff;
  text-decoration: none;
  transition: background-color var(--transitionFast);
}

.footer-gtv-social a:hover {
  background: var(--gtvOcreBouton);
}

.footer-gtv-bottom {
  max-width: 1280px;
  margin: var(--space-8) auto 0;
  padding: var(--space-5) var(--space-6) 0;
  border-top: 1px solid rgba(255, 255, 255, 0.15);
  text-align: center;
  color: #C9C3B4;
  font-size: var(--textSm);
}

.footer-gtv-bottom p {
  margin: 0;
  color: inherit;
}

/* ========================================
   FILTER BUTTONS (Actualites)
   ======================================== */
.filter-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.filter-btn {
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radiusFull);
  font-size: var(--textSm);
  font-weight: 500;
  border: 1px solid var(--colorBorder);
  background: white;
  color: var(--gtvStone-700);
  cursor: pointer;
  transition: var(--transitionFast);
}

.filter-btn:hover {
  background: var(--gtvStone-100);
}

.filter-btn.active {
  background: var(--colorPrimary);
  color: white;
  border-color: var(--colorPrimary);
  box-shadow: 0 4px 6px -1px rgba(163, 90, 11, 0.3);
}

/* ========================================
   SEARCH BOX
   ======================================== */
.search-box {
  position: relative;
  flex: 1;
  max-width: 448px;
}

.search-box input {
  width: 100%;
  padding: var(--space-3) var(--space-3) var(--space-3) var(--space-12);
  border-radius: var(--radiusMd);
  border: 1px solid var(--colorBorder);
  outline: none;
  transition: var(--transitionFast);
}

.search-box input:focus {
  border-color: var(--colorPrimary);
  box-shadow: 0 0 0 3px rgba(163, 90, 11, 0.1);
}

.search-box .search-icon {
  position: absolute;
  left: var(--space-4);
  top: 50%;
  transform: translateY(-50%);
  color: var(--gtvStone-400);
}

/* ========================================
   ARTICLE CARDS (Actualites)
   ======================================== */
.article-card {
  background: white;
  border-radius: var(--radiusXl);
  overflow: hidden;
  box-shadow: var(--shadowSm);
  transition: var(--transitionBase);
}

.article-card:hover {
  box-shadow: var(--shadowXl);
  transform: translateY(-8px);
}

.article-image {
  position: relative;
  height: 224px;
  overflow: hidden;
}

.article-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.article-card:hover .article-image img {
  transform: scale(1.1);
}

.article-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(28, 25, 23, 0.5), transparent);
  opacity: 0;
  transition: opacity var(--transitionFast);
}

.article-card:hover .article-overlay {
  opacity: 1;
}

.article-content {
  padding: var(--space-6);
}

.article-meta {
  display: flex;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  align-items: center;
}

.article-category {
  padding: var(--space-1) var(--space-3);
  background: var(--gtvOcre-50);
  color: var(--gtvOcreBoutonSurvol);
  font-size: var(--textXs);
  font-weight: 600;
  border-radius: var(--radiusFull);
}

.article-date {
  color: var(--gtvStone-500);
  font-size: var(--textXs);
}

.article-content h3 {
  font-size: var(--textXl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-3);
  transition: color var(--transitionFast);
}

.article-card:hover .article-content h3 {
  color: var(--colorPrimary);
}

.article-content p {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  line-height: 1.6;
  margin-bottom: var(--space-4);
}

.article-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--space-4);
  border-top: 1px solid var(--colorBorder);
}

.article-read-time {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--gtvStone-500);
  font-size: var(--textXs);
}

.article-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--colorPrimary);
  font-weight: 500;
  font-size: var(--textSm);
  text-decoration: none;
  transition: gap var(--transitionFast);
}

.article-card:hover .article-link {
  gap: var(--space-3);
}

/* ========================================
   GRIDS
   ======================================== */
.grid-4 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: var(--space-6);
}

.grid-3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: var(--space-8);
}

.grid-2 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
  gap: var(--space-12);
  align-items: center;
}

/* ========================================
   ANIMATIONS
   ======================================== */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translateX(-20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translateX(20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

.reveal-right {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.reveal-right.visible {
  opacity: 1;
  transform: translateX(0);
}

.delay-100 { transition-delay: 0.1s; }
.delay-200 { transition-delay: 0.2s; }
.delay-300 { transition-delay: 0.3s; }
.delay-400 { transition-delay: 0.4s; }
.delay-500 { transition-delay: 0.5s; }

/* ========================================
   UTILITIES
   ======================================== */
.container {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 var(--space-6);
}

.text-primary { color: var(--colorPrimary); }
.text-accent { color: var(--colorAccent); }
.text-muted { color: var(--colorTextMuted); }

.bg-primary { background: var(--colorPrimary); color: white; }
.bg-accent { background: var(--colorAccent); color: white; }
.bg-alt { background: var(--colorBgAlt); }
.bg-warm { background: var(--colorBgWarm); }

/* ========================================
   RESPONSIVE
   ======================================== */
@media (max-width: 1024px) {
  .hero-gtv {
    min-height: 500px;
  }

  .hero-gtv-title {
    font-size: var(--text4xl);
  }

  .hero-gtv-subtitle {
    font-size: var(--textXl);
  }

  .content-block {
    grid-template-columns: 1fr;
  }

  .stat-box,
  .status-box {
    position: static;
    margin-top: var(--space-4);
  }

  .navbar-container {
    height: 64px;
  }
}

@media (max-width: 768px) {
  .hero-gtv-title {
    font-size: var(--text3xl);
  }

  .hero-gtv-subtitle {
    font-size: var(--textLg);
  }

  .hero-gtv-actions {
    flex-direction: column;
    align-items: center;
  }

  .section-gtv {
    padding: var(--space-12) var(--space-4);
  }

  .section-gtv-title {
    font-size: var(--text2xl);
  }

  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }

  .card-gtv-featured-grid {
    grid-template-columns: 1fr;
  }

  .card-gtv-featured-content {
    padding: var(--space-8) var(--space-6);
  }

  .card-gtv-featured-title {
    font-size: var(--text2xl);
  }

  .newsletter-form {
    flex-direction: column;
  }

  .newsletter-form input {
    min-width: 100%;
  }
}

/* ========================================
   Legacy compatibility
   ======================================== */
.section-title {
  font-family: var(--fontPrimary);
  font-size: var(--text3xl);
  font-weight: 700;
  color: var(--colorText);
  text-align: center;
  margin-bottom: var(--space-8);
}

.section-subtitle {
  font-size: var(--textLg);
  color: var(--colorTextMuted);
  text-align: center;
  max-width: 600px;
  margin: -0.5rem auto var(--space-10);
  line-height: 1.6;
}

.btn-gtv-outline-white {
  background: transparent;
  color: white;
  border: 2px solid rgba(255, 255, 255, 0.5);
}

.btn-gtv-outline-white:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: white;
  color: white;
}

/* Fix pour Bootstrap 5 */
@media (min-width: 992px) {
  .g-lg-4 {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 1.5rem;
  }
  .g-lg-5 {
    --bs-gutter-x: 3rem;
    --bs-gutter-y: 3rem;
  }
}

/* ========================================
   HERO PAGE (Pages internes) - Centré
   ======================================== */
.hero-gtv-page {
  position: relative;
  height: 400px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background-color: var(--gtvForet);
  margin-top: -80px;
  padding-top: 80px;
}

/* Overlay automatique - voile vert forêt vertical */
.hero-gtv-page::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(31, 59, 44, 0.82), rgba(31, 59, 44, 0.66), rgba(31, 59, 44, 0.82));
  z-index: 1;
  pointer-events: none;
}

.hero-gtv-page-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}

.hero-gtv-page-overlay {
  display: none; /* Utiliser ::after à la place */
}

.hero-gtv-page-content {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 896px;
  margin: 0 auto;
  padding: 0 24px;
  text-align: center;
  color: #ffffff;
}

.hero-gtv-page-title,
.hero-gtv-page h1.hero-gtv-page-title,
section.hero-gtv-page h1 {
  font-family: var(--fontTitre);
  font-size: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
  font-weight: 800;
  margin-bottom: 24px;
  color: #ffffff;
  text-align: center;
}

.hero-gtv-page-subtitle,
.hero-gtv-page p.hero-gtv-page-subtitle,
section.hero-gtv-page p {
  font-size: 1.25rem;
  color: #e7e5e4;
  max-width: 672px;
  margin: 0 auto;
  text-align: center;
}

/* Forcer la visibilite des elements dans le hero */
.hero-gtv-page .reveal,
.hero-gtv-page .reveal-left,
.hero-gtv-page .reveal-right,
.hero-gtv .reveal,
.hero-gtv .reveal-left,
.hero-gtv .reveal-right {
  opacity: 1;
  transform: none;
}

@media (max-width: 768px) {
  /* Hero home */
  .hero-gtv {
    height: auto;
    min-height: 400px;
  }

  .hero-gtv-subtitle {
    font-size: 1.125rem;
  }

  /* Hero pages internes */
  .hero-gtv-page {
    height: auto;
    min-height: 300px;
  }

  .hero-gtv-page-subtitle {
    font-size: 1rem;
  }
}

/* ========================================
   FILTER SECTION GTV
   ======================================== */
.filter-section-gtv {
  padding: var(--space-8) var(--space-6);
  background: var(--gtvStone-50);
  border-bottom: 1px solid var(--colorBorder);
  position: sticky;
  top: 80px;
  z-index: 40;
}

.filter-container-gtv {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  gap: var(--space-6);
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
}

.filter-buttons-gtv {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
  justify-content: center;
}

.filter-btn-gtv {
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radiusFull);
  font-size: var(--textSm);
  font-weight: 500;
  border: 1px solid var(--gtvStone-300);
  background: white;
  color: var(--gtvStone-700);
  cursor: pointer;
  transition: var(--transitionBase);
  text-decoration: none;
}

.filter-btn-gtv:hover {
  background: var(--gtvStone-100);
  color: var(--colorPrimary);
  border-color: var(--gtvStone-400);
}

.filter-btn-gtv.active {
  background: var(--colorPrimary);
  color: white;
  border-color: var(--colorPrimary);
  box-shadow: 0 4px 6px -1px rgba(163, 90, 11, 0.3);
}

/* Article Tags */
.featured-article-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-4);
}

.article-tag-gtv {
  display: inline-block;
  padding: var(--space-1) var(--space-3);
  background: var(--gtvOcre-50);
  color: var(--gtvOcreBoutonSurvol);
  font-size: var(--textXs);
  font-weight: 500;
  border-radius: var(--radiusFull);
}

@media (max-width: 768px) {
  .filter-section-gtv {
    top: 70px;
    padding: var(--space-4) var(--space-4);
  }

  .filter-btn-gtv {
    padding: var(--space-1) var(--space-3);
    font-size: var(--textXs);
  }
}

/* ========================================
   SECTION HEADER GTV
   ======================================== */
.section-header-gtv {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-8);
}

.section-bar-gtv {
  width: 4px;
  height: 32px;
  background: var(--colorPrimary);
  border-radius: var(--radiusFull);
}

.section-title-gtv {
  font-size: var(--text3xl);
  font-weight: 700;
  color: var(--colorText);
  margin: 0;
}

.section-count-gtv {
  margin-left: auto;
  color: var(--colorTextMuted);
  font-weight: 500;
}

/* ========================================
   FEATURED ARTICLE GTV (A la une)
   ======================================== */
.featured-article-gtv {
  background: linear-gradient(135deg, var(--gtvStone-50), var(--gtvStone-100));
  border-radius: var(--radius2xl);
  overflow: hidden;
  box-shadow: var(--shadowXl);
  transition: var(--transitionBase);
}

.featured-article-gtv:hover {
  box-shadow: var(--shadow2xl);
}

.featured-article-link {
  text-decoration: none;
  color: inherit;
  display: block;
}

.featured-article-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}

.featured-article-image {
  position: relative;
  height: 400px;
  overflow: hidden;
}

.featured-article-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.featured-article-gtv:hover .featured-article-image img {
  transform: scale(1.05);
}

.featured-article-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, var(--gtvStone-400), var(--gtvStone-500));
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255, 255, 255, 0.3);
}

.featured-article-badge {
  position: absolute;
  top: var(--space-6);
  left: var(--space-6);
  padding: var(--space-2) var(--space-4);
  background: var(--colorPrimary);
  color: white;
  font-size: var(--textSm);
  font-weight: 600;
  border-radius: var(--radiusFull);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
}

.featured-article-content {
  padding: var(--space-12);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.featured-article-meta {
  display: flex;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
  font-size: var(--textSm);
  color: var(--colorTextMuted);
}

.featured-article-title {
  font-size: var(--text4xl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-6);
  transition: color var(--transitionFast);
}

.featured-article-gtv:hover .featured-article-title {
  color: var(--colorPrimary);
}

.featured-article-excerpt {
  font-size: var(--textLg);
  color: var(--colorTextMuted);
  line-height: 1.75;
  margin-bottom: var(--space-8);
}

@media (max-width: 768px) {
  .featured-article-grid {
    grid-template-columns: 1fr;
  }

  .featured-article-image {
    height: 250px;
  }

  .featured-article-content {
    padding: var(--space-8) var(--space-6);
  }

  .featured-article-title {
    font-size: var(--text2xl);
  }
}

/* ========================================
   ARTICLES GRID GTV
   ======================================== */
.articles-grid-gtv {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: var(--space-8);
}

.article-card-gtv {
  background: white;
  border-radius: var(--radiusXl);
  overflow: hidden;
  box-shadow: var(--shadowSm);
  transition: var(--transitionBase);
}

.article-card-gtv:hover {
  box-shadow: var(--shadowXl);
  transform: translateY(-8px);
}

.article-card-link {
  text-decoration: none;
  color: inherit;
  display: block;
  height: 100%;
}

.article-card-image {
  position: relative;
  height: 224px;
  overflow: hidden;
}

.article-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.article-card-gtv:hover .article-card-image img {
  transform: scale(1.1);
}

.article-card-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, var(--gtvStone-300), var(--gtvStone-400));
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255, 255, 255, 0.4);
}

.article-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(28, 25, 23, 0.5), transparent);
  opacity: 0;
  transition: opacity var(--transitionFast);
}

.article-card-gtv:hover .article-card-overlay {
  opacity: 1;
}

.article-card-body {
  padding: var(--space-6);
}

.article-card-meta {
  display: flex;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  align-items: center;
}

.article-card-category {
  padding: var(--space-1) var(--space-3);
  background: var(--gtvOcre-50);
  color: var(--gtvOcreBoutonSurvol);
  font-size: var(--textXs);
  font-weight: 600;
  border-radius: var(--radiusFull);
}

.article-card-date {
  color: var(--gtvStone-500);
  font-size: var(--textXs);
}

.article-card-title {
  font-size: var(--textXl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-3);
  transition: color var(--transitionFast);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.article-card-gtv:hover .article-card-title {
  color: var(--colorPrimary);
}

.article-card-excerpt {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  line-height: 1.6;
  margin-bottom: var(--space-4);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.article-card-footer {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  padding-top: var(--space-4);
  border-top: 1px solid var(--colorBorder);
}

.article-card-readmore {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--colorPrimary);
  font-weight: 500;
  font-size: var(--textSm);
  transition: gap var(--transitionFast);
}

.article-card-gtv:hover .article-card-readmore {
  gap: var(--space-3);
}

/* ========================================
   CTA SECTION GTV
   ======================================== */
.cta-section-gtv {
  background: linear-gradient(135deg, var(--gtvOcreBouton), var(--gtvOcreBoutonSurvol), var(--gtvOcreBoutonSurvol));
  color: white;
  position: relative;
  overflow: hidden;
  padding: var(--space-20) var(--space-6);
}

.cta-bg-gtv {
  position: absolute;
  inset: 0;
  opacity: 0.1;
  background-image: url('images/img_hp3.jpg');
  background-size: cover;
  background-position: center;
}

.cta-content-gtv {
  position: relative;
  z-index: 1;
  max-width: 896px;
  margin: 0 auto;
  text-align: center;
}

.cta-title-gtv {
  font-size: var(--text4xl);
  font-weight: 700;
  margin-bottom: var(--space-6);
}

.cta-subtitle-gtv {
  font-size: var(--textXl);
  color: var(--gtvOcre-50);
  margin-bottom: var(--space-8);
}

@media (max-width: 768px) {
  .cta-title-gtv {
    font-size: var(--text2xl);
  }

  .cta-subtitle-gtv {
    font-size: var(--textBase);
  }
}

/* ========================================
   EMPTY STATE GTV
   ======================================== */
.empty-state-gtv {
  text-align: center;
  padding: var(--space-12);
  max-width: 400px;
  margin: 0 auto;
}

.empty-state-icon {
  width: 96px;
  height: 96px;
  background: var(--gtvStone-100);
  border-radius: var(--radiusFull);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto var(--space-6);
  color: var(--gtvStone-400);
}

.empty-state-title {
  font-size: var(--text2xl);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-3);
}

.empty-state-text {
  color: var(--colorTextMuted);
  margin-bottom: var(--space-6);
}

/* ========================================
   TIMELINE GTV (Archives)
   ======================================== */
.timeline-gtv {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.timeline-item-gtv {
  position: relative;
}

.timeline-link-gtv {
  text-decoration: none;
  color: inherit;
  display: block;
}

.timeline-card-gtv {
  background: white;
  border-radius: var(--radiusXl);
  overflow: hidden;
  box-shadow: var(--shadowSm);
  transition: var(--transitionBase);
  display: flex;
  flex-direction: row;
}

.timeline-card-gtv:hover {
  box-shadow: var(--shadowLg);
  transform: translateX(8px);
}

.timeline-image-gtv {
  flex-shrink: 0;
  width: 180px;
  height: 140px;
  overflow: hidden;
}

.timeline-image-gtv img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transitionSlow);
}

.timeline-card-gtv:hover .timeline-image-gtv img {
  transform: scale(1.1);
}

.timeline-content-gtv {
  flex: 1;
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.timeline-meta-gtv {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
  margin-bottom: var(--space-2);
}

.timeline-date-gtv {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
}

.timeline-tags-gtv {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}

.timeline-title-gtv {
  font-size: var(--textLg);
  font-weight: 700;
  color: var(--colorText);
  margin-bottom: var(--space-2);
  transition: color var(--transitionFast);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.timeline-card-gtv:hover .timeline-title-gtv {
  color: var(--colorPrimary);
}

.timeline-excerpt-gtv {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  line-height: 1.5;
  margin-bottom: var(--space-3);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.timeline-readmore-gtv {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--colorPrimary);
  font-weight: 500;
  font-size: var(--textSm);
  transition: gap var(--transitionFast);
}

.timeline-card-gtv:hover .timeline-readmore-gtv {
  gap: var(--space-3);
}

@media (max-width: 768px) {
  .timeline-card-gtv {
    flex-direction: column;
  }

  .timeline-image-gtv {
    width: 100%;
    height: 160px;
  }

  .timeline-card-gtv:hover {
    transform: translateY(-4px);
  }
}

/* ========================================
   TAG BADGES GTV
   ======================================== */
.tag-badge-gtv {
  display: inline-block;
  padding: var(--space-1) var(--space-3);
  background: var(--gtvStone-100);
  color: var(--colorText);
  border-radius: var(--radiusFull);
  text-decoration: none;
  transition: var(--transitionBase);
  font-weight: 500;
}

.tag-badge-gtv:hover {
  background: var(--gtvOcre-50);
  color: var(--gtvOcreBoutonSurvol);
}

.tag-badge-gtv-active {
  background: var(--colorPrimary);
  color: white;
}

.tag-badge-gtv-active:hover {
  background: var(--colorPrimaryHover);
  color: white;
}

/* ========================================
   SIDEBAR NAV LINKS GTV
   ======================================== */
.nav-link-sidebar-gtv {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  color: var(--colorText);
  text-decoration: none;
  border-radius: var(--radiusMd);
  transition: var(--transitionBase);
}

.nav-link-sidebar-gtv:hover {
  background: var(--gtvCreme);
  color: var(--colorPrimary);
}

.nav-link-sidebar-gtv svg {
  color: var(--colorPrimary);
  flex-shrink: 0;
}


/* ========================================
   SECTIONS DU CMS (global/sections/types)
   ======================================== */

/* Fonds : les css_class existantes (bg-alternate...) deviennent le fond crème */
.section-gtv.bg-alternate,
.section-gtv.bg-alt,
.section-gtv.section-gtv-alt {
  background: var(--gtvCreme);
}

.section-gtv.bg-forest {
  background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
  color: #ffffff;
}

/* En-tête de section : sur-titre, titre, sous-titre, centrés */
.entete-section {
  text-align: center;
  margin-bottom: var(--space-10);
}

.entete-section .titre-section {
  margin-bottom: var(--space-3);
}

.entete-section .section-gtv-subtitle {
  margin-bottom: 0;
}

.section-gtv-dark .section-gtv-subtitle {
  color: rgba(255, 255, 255, 0.85);
}

/* Texte courant des colonnes de section */
.texte-section {
  color: var(--colorTextMuted);
  line-height: 1.8;
  margin-bottom: var(--space-4);
}

.texte-section--accent {
  color: var(--gtvMousseFonce);
  font-weight: 700;
}

.texte-section--bas {
  margin-bottom: var(--space-6);
}

.section-text.text-columns-2 { column-count: 2; column-gap: var(--space-8); }
.section-text.text-columns-3 { column-count: 3; column-gap: var(--space-8); }
.section-text.text-columns-4 { column-count: 4; column-gap: var(--space-8); }

@media (max-width: 768px) {
  .section-text.text-columns-2,
  .section-text.text-columns-3,
  .section-text.text-columns-4 { column-count: 1; }
}

/* --- Bloc CTA : fond forêt, bouton plein ocre --- */
.cta-block {
  text-align: center;
  max-width: 700px;
  margin: 0 auto;
}

.cta-title {
  font-family: var(--fontTitre);
  font-size: clamp(1.625rem, 1.2rem + 1.6vw, 2.25rem);
  font-weight: 800;
  line-height: 1.15;
  color: #ffffff;
  margin-bottom: var(--space-4);
}

.cta-text {
  font-size: var(--textLg);
  color: rgba(255, 255, 255, 0.88);
  margin-bottom: var(--space-6);
}

.cta-buttons {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}

/* --- Image --- */
.image-section {
  margin: 0;
  text-align: center;
}

.image-section img {
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.12);
}

.image-full img { width: 100%; }
.image-medium img { max-width: 800px; width: 100%; }
.image-small img { max-width: 500px; width: 100%; }

.image-section figcaption {
  margin-top: var(--space-4);
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  font-style: italic;
}

/* --- Galerie --- */
.gallery-grid { display: grid; gap: var(--space-4); }
.gallery-grid-2 { grid-template-columns: repeat(2, 1fr); }
.gallery-grid-3 { grid-template-columns: repeat(3, 1fr); }
.gallery-grid-4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 768px) {
  .gallery-grid-3, .gallery-grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .gallery-grid-2, .gallery-grid-3, .gallery-grid-4 { grid-template-columns: 1fr; }
}

.gallery-item { margin: 0; position: relative; }

.gallery-link {
  display: block;
  position: relative;
  overflow: hidden;
  border-radius: 10px;
}

.gallery-link img {
  width: 100%;
  height: 250px;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.gallery-link:hover img { transform: scale(1.05); }

.gallery-overlay {
  position: absolute;
  inset: 0;
  background: rgba(31, 59, 44, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s ease;
  color: #ffffff;
  font-size: 1.5rem;
}

.gallery-link:hover .gallery-overlay,
.gallery-link:focus-visible .gallery-overlay { opacity: 1; }

.gallery-item figcaption {
  margin-top: var(--space-2);
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  text-align: center;
}

/* --- Accordéon --- */
.accordion-gtv { max-width: 800px; margin: 0 auto; }

.accordion-item {
  border: 1px solid rgba(31, 59, 44, 0.12);
  border-radius: 10px;
  margin-bottom: var(--space-3);
  overflow: hidden;
  background: #ffffff;
}

.accordion-header {
  width: 100%;
  padding: var(--space-4) var(--space-5);
  background: #ffffff;
  border: none;
  text-align: left;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--fontTitre);
  font-size: var(--textBase);
  font-weight: 700;
  color: var(--gtvForet);
  transition: background 0.2s ease;
}

.accordion-header:hover,
.accordion-header[aria-expanded="true"] { background: var(--gtvCreme); }

.accordion-header i {
  transition: transform 0.3s ease;
  color: var(--gtvMousseFonce);
}

.accordion-header[aria-expanded="true"] i { transform: rotate(180deg); }

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}

.accordion-content.open { max-height: 500px; }

.accordion-body {
  padding: var(--space-4) var(--space-5);
  color: var(--colorTextMuted);
  line-height: 1.7;
}

.accordion-body p { margin-bottom: var(--space-3); }

/* --- Logos --- */
.logos-grid {
  display: grid;
  gap: var(--space-6);
  align-items: center;
  justify-items: center;
}
.logos-grid-2 { grid-template-columns: repeat(2, 1fr); }
.logos-grid-3 { grid-template-columns: repeat(3, 1fr); }
.logos-grid-4 { grid-template-columns: repeat(4, 1fr); }
.logos-grid-5 { grid-template-columns: repeat(5, 1fr); }
.logos-grid-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 992px) {
  .logos-grid-4, .logos-grid-5, .logos-grid-6 { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .logos-grid-3, .logos-grid-4, .logos-grid-5, .logos-grid-6 { grid-template-columns: repeat(2, 1fr); }
}

.logo-item {
  background: #ffffff;
  padding: var(--space-4);
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
  transition: box-shadow var(--transitionBase), transform var(--transitionBase);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 100px;
  width: 100%;
}

.logo-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 22px rgba(31, 59, 44, 0.14);
}

.logo-item a {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-decoration: none;
}

.logo-item img {
  max-width: 100%;
  max-height: 80px;
  object-fit: contain;
  filter: grayscale(20%);
  transition: filter var(--transitionBase);
}

.logo-item:hover img { filter: grayscale(0%); }

.logo-name {
  margin-top: var(--space-2);
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  text-align: center;
}

/* --- Chronologie --- */
.timeline-gtv {
  position: relative;
  max-width: 900px;
  margin: 0 auto;
  padding: var(--space-8) 0;
}

.timeline-gtv::before {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(to bottom, var(--gtvForest-200), var(--gtvMousse), var(--gtvForest-200));
  border-radius: 3px;
}

.timeline-item {
  display: flex;
  gap: var(--space-8);
  margin-bottom: var(--space-12);
  position: relative;
}

.timeline-item.reverse { flex-direction: row-reverse; }

.timeline-marker {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 48px;
  height: 48px;
  background: #ffffff;
  border: 3px solid var(--gtvMousse);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gtvMousseFonce);
  z-index: 1;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.12);
}

.timeline-marker.highlight {
  background: var(--gtvOcreBouton);
  border-color: var(--gtvOcre);
  color: #ffffff;
}

.timeline-content {
  flex: 1;
  max-width: calc(50% - 60px);
  background: #ffffff;
  padding: var(--space-6);
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
}

.timeline-item:not(.reverse) .timeline-content { margin-right: auto; }

.timeline-item.reverse .timeline-content {
  margin-left: auto;
  text-align: right;
}

.timeline-title {
  font-family: var(--fontTitre);
  font-size: var(--textXl);
  font-weight: 700;
  color: var(--gtvForet);
  margin: var(--space-4) 0;
}

.timeline-text { color: var(--colorTextMuted); line-height: 1.8; }
.timeline-text p { margin-bottom: var(--space-3); }
.timeline-text strong { color: var(--colorText); }

@media (max-width: 768px) {
  .timeline-gtv::before { left: 24px; }

  .timeline-item,
  .timeline-item.reverse {
    flex-direction: column;
    padding-left: 70px;
  }

  .timeline-marker { left: 24px; transform: translateX(-50%); }

  .timeline-content,
  .timeline-item.reverse .timeline-content {
    max-width: 100%;
    text-align: left;
    margin: 0;
  }
}

/* --- Cartes (.carte-gtv) --- */
.cards-grid { display: grid; gap: var(--space-6); }
.cards-grid-2 { grid-template-columns: repeat(2, 1fr); }
.cards-grid-3 { grid-template-columns: repeat(3, 1fr); }
.cards-grid-4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 992px) {
  .cards-grid-3, .cards-grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 576px) {
  .cards-grid-2, .cards-grid-3, .cards-grid-4 { grid-template-columns: 1fr; }
}

.carte-section { padding: var(--space-6); }

.carte-section__icone {
  width: 60px;
  height: 60px;
  background: var(--gtvForest-100);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--space-4);
  color: var(--gtvMousseFonce);
  font-size: 1.5rem;
}

.carte-section__image {
  margin: calc(-1 * var(--space-6));
  margin-bottom: var(--space-4);
  overflow: hidden;
}

.carte-section__image img {
  width: 100%;
  height: 180px;
  object-fit: cover;
}

.carte-section__titre {
  font-family: var(--fontTitre);
  font-size: var(--textLg);
  font-weight: 700;
  color: var(--gtvForet);
  margin-bottom: var(--space-2);
}

.carte-section__texte {
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  line-height: 1.6;
}

.carte-section__lien {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-4);
  color: var(--gtvMousseFonce);
  font-weight: 700;
  text-decoration: none;
}

.carte-section__lien:hover { text-decoration: underline; }

/* --- Texte + cartes --- */
.text-cards-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.text-card-item {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-5);
}

.text-card-item:hover { transform: translateX(8px); }

.text-card-icon {
  width: 50px;
  height: 50px;
  background: var(--gtvForest-100);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gtvMousseFonce);
  flex-shrink: 0;
}

.text-card-item:hover .text-card-icon {
  background: var(--gtvForet-700);
  color: #ffffff;
}

.text-card-content h3 {
  font-family: var(--fontTitre);
  font-size: var(--textBase);
  font-weight: 700;
  color: var(--gtvForet);
  margin: 0 0 var(--space-1) 0;
}

.text-card-content p {
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  margin: 0;
}

/* --- Texte + encart forêt (text_highlight, commission) --- */
.info-card-highlight,
.commission-card {
  background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
  color: #ffffff;
  padding: var(--space-8);
  border-radius: 10px;
  box-shadow: 0 8px 22px rgba(31, 59, 44, 0.14);
}

.commission-card { height: 100%; }

.info-card-highlight .info-card-icon,
.commission-card .commission-icon {
  width: 60px;
  height: 60px;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--space-5);
  color: var(--gtvOcreClair);
}

.info-card-highlight h3,
.commission-card h2 {
  font-family: var(--fontTitre);
  font-size: var(--textXl);
  font-weight: 700;
  margin-bottom: var(--space-3);
  color: #ffffff;
}

.info-card-highlight p,
.commission-card p {
  color: rgba(255, 255, 255, 0.88);
  line-height: 1.8;
  margin: 0;
}

.info-card-highlight strong { color: var(--gtvOcreClair); }

/* --- Statistiques --- */
.stats-grid { display: grid; gap: var(--space-8); text-align: center; }
.stats-grid-1 { grid-template-columns: 1fr; max-width: 400px; margin: 0 auto; }
.stats-grid-2 { grid-template-columns: repeat(2, 1fr); }
.stats-grid-3 { grid-template-columns: repeat(3, 1fr); }
.stats-grid-4 { grid-template-columns: repeat(4, 1fr); }

.stat-item { padding: var(--space-6); }

.stat-value {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.stat-number {
  font-family: var(--fontTitre);
  font-size: var(--text5xl);
  font-weight: 800;
  color: var(--gtvOcreBouton);
  line-height: 1;
}

.stat-unit {
  font-size: var(--textXl);
  font-weight: 700;
  color: var(--gtvOcreBouton);
}

.stat-label { font-size: var(--textBase); color: var(--colorTextMuted); }

.stat-description {
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  margin: var(--space-2) auto 0;
  max-width: 300px;
}

.stats-highlight-grid { display: grid; gap: var(--space-6); }
.stats-highlight-1 { grid-template-columns: 1fr; max-width: 500px; margin: 0 auto; }
.stats-highlight-2 { grid-template-columns: repeat(2, 1fr); }
.stats-highlight-3 { grid-template-columns: repeat(3, 1fr); }

.stat-highlight {
  text-align: center;
  background: #ffffff;
  padding: var(--space-6);
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
  border-left: 4px solid var(--gtvOcre);
}

.stat-highlight-number {
  font-family: var(--fontTitre);
  font-size: clamp(2.5rem, 6vw, 3.5rem);
  font-weight: 800;
  line-height: 1;
  margin-bottom: var(--space-2);
  color: var(--gtvOcreBouton);
}

.stat-highlight-label {
  font-size: var(--textBase);
  color: var(--gtvForet);
  font-weight: 700;
}

.stat-highlight-desc {
  margin-top: var(--space-3);
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  line-height: 1.6;
}

.objective-card {
  display: flex;
  gap: var(--space-6);
  background: #ffffff;
  padding: var(--space-6);
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
  transition: box-shadow var(--transitionBase), transform var(--transitionBase);
}

.objective-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 22px rgba(31, 59, 44, 0.14);
}

.objective-number {
  font-family: var(--fontTitre);
  font-size: var(--text4xl);
  font-weight: 800;
  color: var(--gtvMousse);
  line-height: 1;
}

.objective-content h3 {
  font-family: var(--fontTitre);
  font-size: var(--textLg);
  font-weight: 700;
  color: var(--gtvForet);
  margin-bottom: var(--space-3);
}

.objective-content p { color: var(--colorTextMuted); line-height: 1.7; margin: 0; }

@media (max-width: 768px) {
  .stats-grid-3, .stats-grid-4 { grid-template-columns: repeat(2, 1fr); }
  .stats-highlight-2, .stats-highlight-3 { grid-template-columns: 1fr; }
  .objective-card { flex-direction: column; gap: var(--space-3); text-align: center; }
}
@media (max-width: 480px) {
  .stats-grid-2, .stats-grid-3, .stats-grid-4 { grid-template-columns: 1fr; }
}

/* --- Équipe + chiffres --- */
.team-info-card {
  background: #ffffff;
  padding: var(--space-8);
  border-radius: 10px;
  border: 1px solid rgba(31, 59, 44, 0.08);
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
}

.team-titre {
  font-family: var(--fontTitre);
  font-size: var(--textLg);
  font-weight: 700;
  color: var(--gtvForet);
  margin-bottom: var(--space-4);
}

.team-titre svg {
  vertical-align: middle;
  margin-right: var(--space-2);
  color: var(--gtvMousseFonce);
}

.team-members { display: flex; flex-direction: column; gap: var(--space-4); }
.team-members-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4); }

@media (max-width: 768px) {
  .team-members-grid { grid-template-columns: 1fr; }
}

.team-member {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  background: var(--gtvCreme);
  padding: var(--space-4);
  border-radius: 10px;
}

.team-avatar {
  width: 48px;
  height: 48px;
  background: var(--gtvForet-700);
  color: #ffffff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: var(--textSm);
  flex-shrink: 0;
}

.team-avatar.cdd { background: var(--gtvOcreBouton); }

.team-member strong {
  display: block;
  font-family: var(--fontTitre);
  color: var(--gtvForet);
}

.team-member span { font-size: var(--textSm); color: var(--colorTextMuted); }

.stats-grid-team { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4); }

.stat-item-team {
  background: #ffffff;
  padding: var(--space-6);
  border-radius: 10px;
  text-align: center;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
}

.stat-number-team {
  font-family: var(--fontTitre);
  font-size: var(--text3xl);
  font-weight: 800;
  color: var(--gtvOcreBouton);
  line-height: 1;
  margin-bottom: var(--space-2);
}

.stat-label-team { font-size: var(--textSm); color: var(--colorTextMuted); }

@media (max-width: 576px) {
  .stats-grid-team { grid-template-columns: 1fr; }
}

/* --- Image + texte (content_block) --- */
.content-block-gtv-text--secondaire { color: var(--colorTextMuted); line-height: 1.8; margin-bottom: var(--space-4); }

/* ========================================
   ACCUEIL (modules/accueil/vues/accueil.php)
   ======================================== */

/* Repli quand une photo manque : fond crème et motif de crête */
.image-repli {
  width: 100%;
  height: 100%;
  min-height: 160px;
  background:
    url('../images/motifs/crete.svg') center bottom / 100% 40% no-repeat,
    var(--gtvCreme);
}

/* Ouverture : photo en <img> (LCP, non différée), voile et crête du .hero-gtv */
.hero-accueil {
  height: auto;
  min-height: min(720px, 92vh);
  padding-bottom: clamp(40px, 6vw, 80px);
}

.hero-gtv-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 40%;
  z-index: 0;
}

.hero-accueil .hero-gtv-content {
  width: 100%;
  max-width: 1280px;
}

.hero-accueil .hero-gtv-actions {
  align-items: flex-start;
}

.hero-accueil .hero-gtv-title,
.hero-accueil .hero-gtv-subtitle {
  max-width: 680px;
}

/* Boutons côte à côte */
.accueil-boutons {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}

/* En-tête de section : titre à gauche, lien à droite */
.entete-ligne {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-4) var(--space-8);
  margin-bottom: var(--space-8);
}

.entete-ligne .titre-section {
  margin-bottom: var(--space-2);
}

.entete-ligne .texte-section {
  margin-bottom: 0;
}

/* --- Notre association et missions --- */
.accueil-asso-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-10);
  align-items: center;
}

.missions-gtv {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-8) var(--space-4);
}

.mission-gtv {
  text-align: center;
  padding: 0 var(--space-2);
}

.mission-icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: var(--gtvCreme);
  color: var(--gtvForet);
  margin-bottom: var(--space-3);
}

.mission-titre {
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 1.0625rem;
  color: var(--gtvForet);
  margin: 0 0 var(--space-1);
}

.mission-texte {
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--colorTextMuted);
  margin: 0;
}

/* --- Vieilles forêts --- */
.accueil-forets-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-8);
  align-items: center;
}

.accueil-forets-photo,
.accueil-tetras-photo {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 6px 24px rgba(31, 59, 44, 0.16);
}

.accueil-forets-photo img,
.accueil-tetras-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.accueil-forets-photo {
  aspect-ratio: 4 / 3;
}

.badge-annees {
  position: absolute;
  left: var(--space-4);
  bottom: var(--space-4);
  display: flex;
  flex-direction: column;
  max-width: 200px;
  padding: var(--space-3) var(--space-4);
  border-radius: 8px;
  background: var(--gtvOcreBouton);
  color: #ffffff;
}

.badge-annees-nombre {
  font-family: var(--fontTitre);
  font-weight: 800;
  font-size: 2rem;
  line-height: 1;
}

.badge-annees-texte {
  font-size: 0.875rem;
  line-height: 1.3;
  margin-top: var(--space-1);
}

.vignettes-forets {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}

.vignette-foret {
  aspect-ratio: 348 / 219;
  border-radius: 8px;
  overflow: hidden;
}

.vignette-foret img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* --- Grand Tétras --- */
.accueil-tetras-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-8);
  align-items: center;
}

.accueil-tetras-photo {
  aspect-ratio: 16 / 9;
}

.accueil-tetras-photo img {
  object-position: 65% 50%;
}

.statut-uicn {
  position: absolute;
  left: var(--space-4);
  bottom: var(--space-4);
  display: flex;
  flex-direction: column;
  padding: var(--space-3) var(--space-4);
  border-radius: 8px;
  background: var(--gtvBordeaux);
  color: #ffffff;
}

.statut-uicn-label {
  font-size: 0.8125rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.statut-uicn-valeur {
  font-family: var(--fontTitre);
  font-weight: 800;
  font-size: 1.25rem;
  line-height: 1.2;
}

/* --- Espèces : défilement horizontal sur petit écran --- */
.cartes-especes {
  list-style: none;
  margin: 0;
  padding: 0 0 var(--space-2);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(240px, 80%);
  gap: var(--space-4);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
}

.cartes-especes > li {
  scroll-snap-align: start;
}

.carte-espece {
  display: flex;
  flex-direction: column;
  height: 100%;
  text-decoration: none;
  color: inherit;
}

.carte-espece-photo {
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
}

.carte-espece-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.carte-espece-corps {
  display: block;
  padding: var(--space-4);
}

.carte-espece-nom {
  display: block;
  font-family: var(--fontTitre);
  font-weight: 700;
  color: var(--gtvForet);
  margin-bottom: var(--space-1);
}

.carte-espece-texte {
  display: block;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--colorTextMuted);
}

/* --- Actualités --- */
.cartes-actus {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-6);
}

.carte-actu {
  position: relative;
  display: flex;
  flex-direction: column;
}

.carte-actu-photo {
  aspect-ratio: 2 / 1;
  overflow: hidden;
}

.carte-actu-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.carte-actu-corps {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--space-4) var(--space-6) var(--space-6);
}

.carte-actu-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  margin-bottom: var(--space-2);
}

.carte-actu-date {
  font-size: 0.875rem;
  color: var(--colorTextMuted);
}

.carte-actu-titre {
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 1.125rem;
  line-height: 1.3;
  margin: 0 0 var(--space-2);
}

.carte-actu-titre a {
  color: var(--gtvForet);
  text-decoration: none;
}

/* Toute la carte est cliquable via le lien du titre */
.carte-actu-titre a::after {
  content: '';
  position: absolute;
  inset: 0;
}

.carte-actu-titre a:focus-visible {
  outline: none;
}

.carte-actu:focus-within {
  outline: 3px solid var(--gtvOcreBouton);
  outline-offset: 2px;
}

.carte-actu-texte {
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--colorTextMuted);
  margin: 0 0 var(--space-4);
}

.carte-actu-lien {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.875rem;
  color: var(--gtvOcreBouton);
}

/* --- Partenaires --- */
.accueil-partenaires {
  padding-top: var(--space-12);
  padding-bottom: var(--space-12);
}

.accueil-partenaires .entete-section {
  margin-bottom: var(--space-8);
}

.logos-partenaires {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-6) var(--space-10);
}

.logos-partenaires a {
  display: block;
  line-height: 0;
}

.logos-partenaires img {
  max-height: 52px;
  max-width: 140px;
  width: auto;
  height: auto;
  filter: grayscale(100%);
  opacity: 0.75;
  transition: filter var(--transitionBase), opacity var(--transitionBase);
}

.logos-partenaires a:hover img,
.logos-partenaires a:focus-visible img {
  filter: none;
  opacity: 1;
}

/* --- Lettre d'information : sur le haut du dégradé crème vers ocre des sapins --- */
.bandeau-lettre {
  background: linear-gradient(#ffffff, var(--gtvCreme));
  padding: var(--space-12) var(--space-6) var(--space-6);
  text-align: center;
}

.bandeau-lettre .titre-section {
  margin-bottom: var(--space-3);
}

.bandeau-lettre p {
  max-width: 640px;
  margin: 0 auto var(--space-6);
  color: var(--gtvEncre);
}

/* Petits écrans : badge plus discret sur la photo */
@media (max-width: 639px) {
  .badge-annees {
    left: var(--space-3);
    bottom: var(--space-3);
    max-width: 150px;
    padding: var(--space-2) var(--space-3);
  }

  .badge-annees-nombre {
    font-size: 1.5rem;
  }

  .badge-annees-texte {
    font-size: 0.8125rem;
  }
}

/* Écrans moyens */
@media (min-width: 640px) {
  .missions-gtv {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .cartes-especes {
    grid-auto-columns: minmax(240px, 45%);
  }

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

/* Grands écrans : mise en page de la maquette */
@media (min-width: 1024px) {
  .accueil-asso-grille {
    grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
    gap: var(--space-12);
  }

  .accueil-forets-grille {
    grid-template-columns: minmax(0, 5fr) minmax(0, 5fr) minmax(0, 2fr);
    gap: var(--space-8);
  }

  .vignettes-forets {
    grid-template-columns: minmax(0, 1fr);
  }

  .accueil-tetras-grille {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: var(--space-12);
  }

  .cartes-especes {
    grid-auto-flow: row;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow: visible;
  }

  .cartes-actus {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ========================================
   ACTUALITÉS (modules/actu/vues/)
   ======================================== */

/* Bandeau : hauteur selon le contenu (titres d'article longs) */
.hero-actu {
  height: auto;
  min-height: 380px;
  padding-bottom: clamp(48px, 6vw, 72px);
}

.hero-actu .hero-gtv-content {
  width: 100%;
  padding-top: var(--space-10);
}

.hero-actu .hero-gtv-subtitle {
  margin-bottom: 0;
}

/* Fil d'Ariane sur photo */
.fil-ariane-gtv {
  list-style: none;
  margin: 0 0 var(--space-4);
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-2);
  font-size: 0.875rem;
  color: #ffffff;
}

.fil-ariane-gtv li + li::before {
  content: '\203A';
  margin-right: var(--space-2);
  color: var(--gtvOcreClair);
}

.fil-ariane-gtv a {
  color: #ffffff;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.fil-ariane-gtv a:hover {
  color: var(--gtvOcreClair);
}

.article-actu-entete {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}

.article-actu-date {
  font-size: 0.9375rem;
  color: #EDE7DA;
}

/* Lien de relecture d'un article non publié */
.relecture-bandeau {
  margin: 0 0 var(--space-6);
  padding: var(--space-3) var(--space-4);
  border-left: 4px solid var(--gtvForet);
  background: var(--gtvOcreClair);
  color: var(--gtvForet);
  border-radius: 4px;
}

a.etiquette-cat:hover {
  color: #ffffff;
  text-decoration: underline;
}

/* Filtres et recherche */
.actus-page {
  padding-top: var(--space-10);
}

.actus-outils {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4) var(--space-6);
  margin-bottom: var(--space-8);
}

.filtres-actu ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.filtre-actu {
  display: inline-block;
  padding: 0.5625rem 1rem;
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.8125rem;
  line-height: 1.3;
  color: var(--gtvForet);
  background: var(--gtvCreme);
  border: 1px solid rgba(31, 59, 44, 0.12);
  border-radius: 6px;
  text-decoration: none;
  transition: background-color var(--transitionFast), color var(--transitionFast);
}

.filtre-actu:hover {
  background: var(--gtvStone-200);
  color: var(--gtvForet);
  text-decoration: none;
}

.filtre-actu[aria-current="true"] {
  background: var(--gtvOcreBouton);
  border-color: var(--gtvOcreBouton);
  color: #ffffff;
}

.recherche-actu {
  display: flex;
  flex: 1 1 260px;
  max-width: 360px;
  border: 1px solid var(--gtvStone-200);
  border-radius: 6px;
  background: #ffffff;
  overflow: hidden;
}

.recherche-actu:focus-within {
  outline: 3px solid var(--gtvForet);
  outline-offset: 2px;
}

.recherche-actu input[type="search"] {
  flex: 1;
  min-width: 0;
  border: 0;
  padding: 0.625rem 0.875rem;
  font-size: 0.9375rem;
  color: var(--gtvEncre);
  background: transparent;
}

.recherche-actu input[type="search"]:focus-visible {
  outline: none;
}

.recherche-actu-bouton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 0.875rem;
  border: 0;
  background: var(--gtvForet);
  color: #ffffff;
  cursor: pointer;
}

.recherche-actu-bouton:hover {
  background: var(--gtvForet-700);
}

.actus-compte {
  margin: 0 0 var(--space-6);
  color: var(--colorTextMuted);
}

/* À la une : une grande carte, deux secondaires à droite sur grand écran */
.actus-une {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-6);
  margin-bottom: var(--space-6);
}

.carte-actu--une .carte-actu-titre {
  font-size: clamp(1.375rem, 1.1rem + 1vw, 1.75rem);
  font-weight: 800;
}

.carte-actu--une .carte-actu-texte {
  font-size: 1.0625rem;
}

.carte-actu--une .carte-actu-corps {
  padding: var(--space-6) var(--space-8) var(--space-8);
}

/* Pagination */
.pagination-gtv {
  margin-top: var(--space-10);
}

.pagination-gtv ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
}

.pagination-gtv a,
.pagination-gtv-ellipse {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 44px;
  padding: 0 var(--space-2);
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 0.9375rem;
  color: var(--gtvForet);
  border-radius: 6px;
  text-decoration: none;
}

.pagination-gtv a:hover {
  background: var(--gtvCreme);
  color: var(--gtvForet);
}

.pagination-gtv a[aria-current="page"] {
  background: var(--gtvForet);
  color: #ffffff;
}

.pagination-gtv a.pagination-gtv-fleche {
  border: 1px solid var(--gtvStone-200);
  border-radius: 50%;
}

/* Aucun résultat */
.actus-vide {
  text-align: center;
  padding: var(--space-12) var(--space-6);
  background: var(--gtvCreme);
  border-radius: 10px;
}

.actus-vide-titre {
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 1.25rem;
  color: var(--gtvForet);
  margin-bottom: var(--space-2);
}

.actus-retour {
  margin: var(--space-10) auto 0;
  text-align: center;
}

/* Accès complémentaires (Brèves, Bibliographie, Vidéothèque), au-dessus des sapins */
.acces-actu {
  background: var(--gtvCreme);
  padding: 0 var(--space-6) var(--space-12);
}

.acces-actu-liste {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-4);
}

.acces-actu-lien {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  height: 100%;
  padding: var(--space-4) var(--space-6);
  background: #ffffff;
  border-radius: 10px;
  border: 1px solid rgba(31, 59, 44, 0.08);
  color: var(--gtvForet);
  text-decoration: none;
  transition: box-shadow var(--transitionBase);
}

.acces-actu-lien:hover {
  color: var(--gtvForet);
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(31, 59, 44, 0.14);
}

.acces-actu-icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--gtvCreme);
  color: var(--gtvOcreBouton);
}

.acces-actu-texte {
  flex: 1;
  line-height: 1.35;
  color: var(--gtvEncre);
}

.acces-actu-texte strong {
  display: block;
  font-family: var(--fontTitre);
  font-weight: 700;
  color: var(--gtvForet);
}

.acces-actu-lien > svg {
  color: var(--gtvOcreBouton);
}

/* Page article */
.article-actu-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-10);
}

.article-actu-chapo {
  font-size: 1.25rem;
  line-height: 1.5;
  color: var(--gtvForet);
  margin-bottom: var(--space-6);
}

.article-actu-photo {
  margin: 0 0 var(--space-6);
}

.article-actu-photo img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 10px;
}

.article-actu-photo figcaption {
  margin-top: var(--space-2);
  font-size: 0.875rem;
  color: var(--colorTextMuted);
}

.article-actu-credit {
  margin-left: var(--space-2);
}

.article-actu-texte {
  font-size: var(--textLg);
  line-height: 1.8;
  color: var(--gtvEncre);
  overflow-wrap: break-word;
}

/* Le corps d'un article porte aussi .article-content (cartes) : texte de lecture, pas de résumé */
.article-actu-texte p,
.article-actu-texte li {
  font-size: inherit;
  line-height: inherit;
  color: inherit;
}

/* Tailles et polices imposées dans le texte (ancien éditeur, copier-coller) : la mise en page du site l'emporte */
.article-actu-texte :is(p, li, ul, ol, div, span, font, strong, b, em, i, a, blockquote) {
  font-size: inherit !important;
  font-family: inherit !important;
  line-height: inherit !important;
}

.article-actu-texte img,
.article-actu-texte iframe,
.article-actu-texte table {
  max-width: 100%;
}

.article-actu-texte img {
  height: auto;
}

.article-actu-auteur {
  margin-top: var(--space-8);
  padding-top: var(--space-4);
  border-top: 1px solid var(--gtvStone-200);
  font-size: 0.875rem;
  color: var(--colorTextMuted);
}

.article-actu-aside {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.article-actu-bloc {
  padding: var(--space-6);
}

.article-actu-bloc-titre {
  font-family: var(--fontTitre);
  font-weight: 700;
  font-size: 1rem;
  color: var(--gtvForet);
  margin: 0 0 var(--space-4);
}

.mots-cles-actu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.mot-cle-actu {
  display: inline-block;
  padding: 0.3125rem 0.75rem;
  font-size: 0.8125rem;
  color: var(--gtvForet);
  background: var(--gtvCreme);
  border-radius: 999px;
  text-decoration: none;
}

.mot-cle-actu:hover {
  background: var(--gtvStone-200);
  color: var(--gtvForet);
}

.partage-actu {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.partage-actu-bouton {
  min-width: 44px;
  min-height: 44px;
  padding: var(--space-2);
}

.partage-actu-bouton[hidden] {
  display: none;
}

.partage-actu-statut {
  margin: var(--space-2) 0 0;
  font-size: 0.875rem;
  overflow-wrap: anywhere;
}

.partage-actu-statut:empty {
  display: none;
}

.visionneuse-actu {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.9);
  cursor: zoom-out;
}

.visionneuse-actu img {
  max-width: 90%;
  max-height: 90%;
  object-fit: contain;
}

@media (min-width: 768px) {
  .acces-actu-liste {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .actus-une {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    grid-template-rows: auto auto;
  }

  .carte-actu--une {
    grid-row: 1 / span 2;
  }

  .carte-actu--une .carte-actu-photo {
    aspect-ratio: 16 / 9;
  }

  .carte-actu--secondaire .carte-actu-photo {
    aspect-ratio: 5 / 2;
  }

  .article-actu-grille {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: var(--space-12);
  }
}


/* ========================================
   FICHES ESPÈCES, BRÈVES ET RESSOURCES
   (styles déplacés des vues)
   ======================================== */

/* --- Fiche espèce --- */
/* Styles pour le contenu texte dynamique */
.content-text p {
	margin-bottom: var(--space-4);
}
.content-text p:last-child {
	margin-bottom: 0;
}
.content-text h3 {
	font-family: var(--fontPrimary);
	font-size: var(--textLg);
	font-weight: 600;
	color: var(--colorText);
	margin-top: var(--space-6);
	margin-bottom: var(--space-4);
	padding-top: var(--space-4);
	border-top: 1px solid var(--gtvSlate-200);
}
.content-text h3:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: none;
}
.content-text ul, .content-text ol {
	margin-bottom: var(--space-4);
	padding-left: var(--space-6);
}
.content-text li {
	margin-bottom: var(--space-2);
	line-height: 1.7;
}
.content-text strong {
	color: var(--colorText);
	font-weight: 600;
}
.content-text em {
	font-style: italic;
}

/* Section protection - texte blanc */
.section-gtv-dark .content-text h3 {
	color: white;
	border-top-color: rgba(255,255,255,0.2);
}
.section-gtv-dark .content-text strong {
	color: white;
}

/* Menaces - style spécial pour les listes */
.content-text-menaces h3 {
	color: var(--gtvError);
}

/* Protection - style spécial pour fond sombre */
.content-text-protection,
.content-text-protection p,
.content-text-protection span,
.content-text-protection div {
	color: rgba(255,255,255,0.95) !important;
}
.content-text-protection h3,
.content-text-protection h4 {
	color: white !important;
	border-top-color: rgba(255,255,255,0.3);
}
.content-text-protection strong,
.content-text-protection b {
	color: white !important;
	font-weight: 600;
}
.content-text-protection ul,
.content-text-protection ol {
	padding-left: var(--space-5);
	color: rgba(255,255,255,0.95);
}
.content-text-protection li {
	position: relative;
	padding-left: var(--space-2);
	color: rgba(255,255,255,0.95);
}
.content-text-protection li::marker {
	color: var(--colorAccent);
}
.content-text-protection a {
	color: var(--colorAccent) !important;
	text-decoration: underline;
}
.content-text-protection a:hover {
	color: var(--gtvOcreBoutonSurvol) !important;
}

/* Navigation espèces */
.species-nav-link {
	display: inline-block;
	padding: var(--space-2) var(--space-4);
	color: var(--colorTextMuted);
	text-decoration: none;
	font-size: var(--textSm);
	font-weight: 500;
	border-radius: var(--radiusFull);
	transition: var(--transitionBase);
}
.species-nav-link:hover {
	color: var(--colorPrimary);
	background: var(--gtvForest-50);
}

/* --- Brèves --- */
.archive-card {
	background: white;
	border-radius: var(--radiusLg);
	box-shadow: var(--shadowMd);
	border: 1px solid var(--gtvSlate-200);
	overflow: hidden;
	height: 100%;
	transition: var(--transitionBase);
}

.archive-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadowLg);
	border-color: var(--gtvForest-300);
}

.archive-year {
	background: linear-gradient(135deg, var(--gtvForest-500), var(--gtvForest-700));
	padding: var(--space-4) var(--space-5);
	text-align: center;
}

.archive-year span {
	font-family: var(--fontPrimary);
	font-size: var(--text2xl);
	font-weight: 800;
	color: white;
}

.archive-list {
	list-style: none;
	margin: 0;
	padding: var(--space-4);
}

.archive-list li {
	margin-bottom: var(--space-2);
}

.archive-list li:last-child {
	margin-bottom: 0;
}

.archive-list a {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	padding: var(--space-3) var(--space-4);
	background: var(--gtvSlate-50);
	border-radius: var(--radiusMd);
	text-decoration: none;
	color: var(--colorText);
	transition: var(--transitionBase);
}

.archive-list a:hover {
	background: var(--gtvForest-50);
	color: var(--colorPrimary);
}

.archive-list a svg {
	color: var(--gtvAccent-500);
	flex-shrink: 0;
}

.archive-list a:hover svg {
	color: var(--colorPrimary);
}

.archive-list a span {
	font-size: var(--textSm);
	font-weight: 500;
}

/* --- Bibliographie --- */
.biblio-stat-card {
	background: white;
	padding: var(--space-4);
	border-radius: var(--radiusLg);
	box-shadow: var(--shadowSm);
}

.biblio-stat-icon {
	width: 60px;
	height: 60px;
	background: linear-gradient(135deg, var(--gtvMousse), var(--gtvMousseFonce));
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: white;
	margin: 0 auto var(--space-3);
}

.biblio-stat-number {
	font-family: var(--fontPrimary);
	font-size: var(--text2Xl);
	font-weight: 700;
	color: var(--gtvForest-700);
}

.biblio-stat-label {
	font-size: var(--textSm);
	color: var(--gtvSlate-600);
}

.biblio-tabs {
	display: flex;
	gap: var(--space-2);
	margin-bottom: var(--space-5);
	flex-wrap: wrap;
}

.biblio-tab {
	padding: var(--space-2) var(--space-4);
	border: 2px solid var(--gtvSlate-200);
	background: white;
	border-radius: var(--radiusFull);
	font-size: var(--textSm);
	font-weight: 500;
	color: var(--gtvSlate-600);
	cursor: pointer;
	transition: var(--transitionBase);
}

.biblio-tab:hover {
	border-color: var(--gtvForest-400);
	color: var(--gtvForest-600);
}

.biblio-tab.active {
	background: var(--gtvForest-500);
	border-color: var(--gtvForest-500);
	color: white;
}

.biblio-card {
	background: white;
	border-radius: var(--radiusLg);
	box-shadow: var(--shadowMd);
	border: 1px solid var(--gtvSlate-200);
	overflow: hidden;
	transition: var(--transitionBase);
	height: 100%;
	display: flex;
	flex-direction: column;
}

.biblio-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadowXl);
	border-color: var(--gtvForest-300);
}

.biblio-card-header {
	padding: var(--space-3) var(--space-4);
	background: var(--gtvSlate-50);
	border-bottom: 1px solid var(--gtvSlate-200);
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.biblio-type-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--space-1);
	padding: var(--space-1) var(--space-3);
	border-radius: var(--radiusFull);
	font-size: var(--textXs);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

.badge-diaporama {
	background: linear-gradient(135deg, var(--gtvAccent-100), var(--gtvAccent-200));
	color: var(--gtvAccent-700);
}

.badge-rapport {
	background: linear-gradient(135deg, var(--gtvForest-100), var(--gtvForest-200));
	color: var(--gtvForest-700);
}

.biblio-year {
	font-size: var(--textSm);
	font-weight: 600;
	color: var(--gtvSlate-500);
	background: white;
	padding: var(--space-1) var(--space-2);
	border-radius: var(--radiusSm);
}

.biblio-card-body {
	padding: var(--space-4);
	flex: 1;
}

.biblio-title {
	font-family: var(--fontPrimary);
	font-size: var(--textLg);
	font-weight: 600;
	color: var(--colorText);
	margin: 0 0 var(--space-2) 0;
	line-height: 1.4;
}

.biblio-author {
	display: flex;
	align-items: center;
	gap: var(--space-2);
	font-size: var(--textSm);
	color: var(--gtvSlate-600);
	margin: 0 0 var(--space-3) 0;
}

.biblio-author svg {
	flex-shrink: 0;
	opacity: 0.7;
}

.biblio-resume {
	font-size: var(--textSm);
	color: var(--gtvSlate-600);
	line-height: 1.6;
	margin: 0;
}

.biblio-card-footer {
	padding: var(--space-3) var(--space-4);
	background: var(--gtvSlate-50);
	border-top: 1px solid var(--gtvSlate-200);
	display: flex;
	gap: var(--space-3);
	flex-wrap: wrap;
}

.biblio-link {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2);
	padding: var(--space-2) var(--space-3);
	border-radius: var(--radiusMd);
	font-size: var(--textSm);
	font-weight: 500;
	text-decoration: none;
	transition: var(--transitionBase);
}

.biblio-link-pdf {
	background: linear-gradient(135deg, var(--gtvBordeaux), var(--gtvBordeaux-800));
	color: white;
}

.biblio-link-pdf:hover {
	background: linear-gradient(135deg, var(--gtvBordeaux-800), var(--gtvBordeaux-900));
	color: white;
	transform: translateY(-2px);
}

.biblio-link-details {
	background: linear-gradient(135deg, var(--gtvSlate-600), var(--gtvSlate-700));
	color: white;
}

.biblio-link-details:hover {
	background: linear-gradient(135deg, var(--gtvSlate-700), var(--gtvSlate-800));
	color: white;
	transform: translateY(-2px);
}

.biblio-link-external {
	background: linear-gradient(135deg, var(--gtvMousse), var(--gtvMousseFonce));
	color: white;
}

.biblio-link-external:hover {
	background: linear-gradient(135deg, var(--gtvForest-600), var(--gtvForest-700));
	color: white;
	transform: translateY(-2px);
}

@media (max-width: 768px) {
	.biblio-tabs {
		justify-content: center;
	}

	.biblio-card-footer {
		flex-direction: column;
	}

	.biblio-link {
		justify-content: center;
	}
}

/* --- Données (portée .page-donnees) --- */
/* Stats highlight bar */
.page-donnees .stats-highlight {
	background: linear-gradient(135deg, var(--gtvForet-700) 0%, var(--gtvForet) 100%);
	padding: var(--space-8) 0;
	margin-top: -1px;
}

.page-donnees .stats-grid {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--space-6);
}

.page-donnees .stat-item {
	text-align: center;
	padding: 0 var(--space-6);
}

.page-donnees .stat-value {
	font-family: var(--fontPrimary);
	font-size: clamp(2rem, 5vw, 3.5rem);
	font-weight: 800;
	color: white;
	line-height: 1;
	margin-bottom: var(--space-2);
}

.page-donnees .stat-label {
	font-size: var(--textSm);
	color: var(--gtvForest-200);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 600;
}

.page-donnees .stat-divider {
	width: 1px;
	height: 60px;
	background: rgba(255,255,255,0.2);
}

@media (max-width: 768px) {
	.page-donnees .stat-divider {
		display: none;
	}
	.page-donnees .stat-item {
		flex: 0 0 50%;
		padding: var(--space-4);
	}
}

/* WebObs preview with browser chrome */
.page-donnees .webobs-preview {
	border-radius: var(--radiusXl);
	overflow: hidden;
	box-shadow: var(--shadowXl);
	border: 1px solid var(--gtvSlate-200);
	background: white;
}

.page-donnees .webobs-preview-header {
	display: flex;
	align-items: center;
	padding: var(--space-3) var(--space-4);
	background: var(--gtvSlate-100);
	border-bottom: 1px solid var(--gtvSlate-200);
	gap: var(--space-2);
}

.page-donnees .webobs-dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: var(--gtvSlate-300);
}

.webobs-dot:nth-child(1) { background: var(--gtvBordeaux); }
.webobs-dot:nth-child(2) { background: var(--gtvOcre); }
.webobs-dot:nth-child(3) { background: var(--gtvMousse); }

.page-donnees .webobs-url {
	flex: 1;
	text-align: center;
	font-size: var(--textSm);
	color: var(--gtvSlate-500);
	background: white;
	padding: var(--space-1) var(--space-3);
	border-radius: var(--radiusSm);
	margin-left: var(--space-4);
}

.page-donnees .webobs-preview img {
	width: 100%;
	height: auto;
	display: block;
}

/* Principle cards */
.page-donnees .principle-card {
	background: white;
	padding: var(--space-6);
	border-radius: var(--radiusLg);
	box-shadow: var(--shadowMd);
	border: 1px solid var(--gtvSlate-200);
	height: 100%;
	text-align: center;
	transition: var(--transitionBase);
}

.page-donnees .principle-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadowLg);
	border-color: var(--gtvForest-300);
}

.page-donnees .principle-icon {
	width: 70px;
	height: 70px;
	margin: 0 auto var(--space-4);
	background: linear-gradient(135deg, var(--gtvForest-50), var(--gtvForest-100));
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--gtvForest-600);
	transition: var(--transitionBase);
}

.page-donnees .principle-card:hover .principle-icon {
	background: linear-gradient(135deg, var(--gtvMousse), var(--gtvMousseFonce));
	color: white;
}

.page-donnees .principle-card h3 {
	font-family: var(--fontPrimary);
	font-size: var(--textLg);
	font-weight: 700;
	color: var(--colorText);
	margin-bottom: var(--space-3);
}

.page-donnees .principle-card p {
	color: var(--colorTextMuted);
	line-height: 1.7;
	margin: 0;
	font-size: var(--textSm);
}

/* Stat cards */
.page-donnees .stat-card {
	background: white;
	padding: var(--space-6);
	border-radius: var(--radiusXl);
	box-shadow: var(--shadowMd);
	border: 1px solid var(--gtvSlate-200);
	text-align: center;
	height: 100%;
	transition: var(--transitionBase);
}

.page-donnees .stat-card:hover {
	transform: translateY(-8px);
	box-shadow: var(--shadowXl);
}

.page-donnees .stat-card-icon {
	width: 70px;
	height: 70px;
	margin: 0 auto var(--space-4);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: var(--transitionBase);
}

.page-donnees .stat-card-icon-obs {
	background: linear-gradient(135deg, var(--gtvOcre-50), var(--gtvOcreClair));
	color: var(--gtvOcreBouton);
}
.page-donnees .stat-card:hover .stat-card-icon-obs {
	background: linear-gradient(135deg, var(--gtvOcreBouton), var(--gtvOcreBoutonSurvol));
	color: white;
}

.page-donnees .stat-card-icon-species {
	background: linear-gradient(135deg, var(--gtvForest-50), var(--gtvForest-100));
	color: var(--gtvForest-600);
}
.page-donnees .stat-card:hover .stat-card-icon-species {
	background: linear-gradient(135deg, var(--gtvMousse), var(--gtvMousseFonce));
	color: white;
}

.page-donnees .stat-card-icon-users {
	background: linear-gradient(135deg, var(--gtvCreme), var(--gtvCreme-300));
	color: var(--gtvForet);
}
.page-donnees .stat-card:hover .stat-card-icon-users {
	background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
	color: white;
}

.page-donnees .stat-card-icon-photos {
	background: linear-gradient(135deg, var(--gtvBordeaux-50), var(--gtvBordeaux-100));
	color: var(--gtvBordeaux);
}
.page-donnees .stat-card:hover .stat-card-icon-photos {
	background: linear-gradient(135deg, var(--gtvBordeaux), var(--gtvBordeaux-800));
	color: white;
}

.page-donnees .stat-card-number {
	font-family: var(--fontPrimary);
	font-size: var(--text3xl);
	font-weight: 800;
	color: var(--colorPrimary);
	line-height: 1;
	margin-bottom: var(--space-2);
}

.page-donnees .stat-card-label {
	font-family: var(--fontPrimary);
	font-size: var(--textBase);
	font-weight: 600;
	color: var(--colorText);
	margin-bottom: var(--space-3);
}

.page-donnees .stat-card-desc {
	color: var(--colorTextMuted);
	line-height: 1.6;
	font-size: var(--textSm);
	margin: 0;
}

/* CTA Section */
.page-donnees .section-cta {
	background: transparent;
	padding: var(--space-12) 0;
}

.page-donnees .cta-box {
	background: linear-gradient(135deg, var(--gtvForet-700) 0%, var(--gtvForet) 100%);
	border-radius: var(--radiusXl);
	padding: var(--space-10);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-8);
	flex-wrap: wrap;
}

.page-donnees .cta-content h2 {
	font-family: var(--fontPrimary);
	font-size: var(--text2xl);
	font-weight: 700;
	color: white;
	margin-bottom: var(--space-3);
}

.page-donnees .cta-content p {
	color: var(--gtvForest-200);
	font-size: var(--textLg);
	margin: 0;
	max-width: 500px;
}

.page-donnees .cta-actions {
	display: flex;
	gap: var(--space-4);
	flex-wrap: wrap;
}

@media (max-width: 768px) {
	.page-donnees .cta-box {
		text-align: center;
		justify-content: center;
	}
	.page-donnees .cta-content p {
		max-width: none;
	}
	.page-donnees .cta-actions {
		justify-content: center;
		width: 100%;
	}
}

/* --- Vidéothèque --- */
.video-card {
	background: white;
	border-radius: var(--radiusLg);
	box-shadow: var(--shadowMd);
	border: 1px solid var(--gtvSlate-200);
	overflow: hidden;
	transition: var(--transitionBase);
}

.video-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadowXl);
	border-color: var(--gtvForest-300);
}

.video-card-header {
	padding: var(--space-4) var(--space-5);
	display: flex;
	align-items: center;
	gap: var(--space-3);
	background: var(--gtvSlate-50);
	border-bottom: 1px solid var(--gtvSlate-200);
}

.video-icon {
	width: 40px;
	height: 40px;
	background: linear-gradient(135deg, var(--gtvForest-500), var(--gtvForest-600));
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: white;
	flex-shrink: 0;
}

.video-card-header h3 {
	font-family: var(--fontPrimary);
	font-size: var(--textBase);
	font-weight: 600;
	color: var(--colorText);
	margin: 0;
	line-height: 1.4;
}

.video-embed {
	position: relative;
	padding-bottom: 56.25%;
	height: 0;
	overflow: hidden;
}

.video-embed iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: none;
}

.video-description {
	padding: var(--space-3) var(--space-5);
	background: var(--gtvSlate-50);
	border-top: 1px solid var(--gtvSlate-200);
}

.video-description p {
	margin: 0;
	font-size: var(--textSm);
	color: var(--gtvSlate-600);
}

/* --- Fiche espèce : blocs --- */
.espece-fiche__titre {
	font-family: var(--fontTitre);
	font-size: var(--text3xl);
	font-weight: 700;
	color: var(--gtvForet);
	margin-bottom: var(--space-5);
}

.espece-fiche__texte {
	color: var(--colorTextMuted);
	line-height: 1.9;
}

.espece-ligne {
	display: flex;
	align-items: center;
	gap: var(--space-3);
}

.espece-ligne--espace {
	margin-bottom: var(--space-4);
}

.espece-fort { font-weight: 500; }
.espece-fort--italique { font-style: italic; }
.espece-note { font-size: var(--textSm); opacity: 0.8; }
.espece-icone-doux { opacity: 0.8; }
.espece-icone-fait { margin-bottom: var(--space-2); }

.espece-corps { padding: var(--space-5); }
.espece-corps--large { padding: var(--space-6); }

.espece-carte {
	border: 1px solid var(--gtvSlate-200);
	overflow: hidden;
}

.espece-carte--alerte {
	border: 2px solid rgba(122, 43, 43, 0.25);
}

/* Statut de conservation */
.espece-statut {
	border: 2px solid var(--gtvSlate-200);
	margin-bottom: var(--space-4);
	overflow: hidden;
}

.espece-statut__entete {
	background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
	padding: var(--space-5);
	color: white;
}

.espece-statut__icone {
	width: 50px;
	height: 50px;
	background: rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}

.espece-statut__valeur {
	font-size: var(--textLg);
	font-weight: 600;
}

.espece-statut__etiquette {
	font-size: var(--textXs);
	color: var(--colorTextMuted);
	text-transform: uppercase;
}

.espece-fait {
	background: var(--gtvSlate-50);
	border-radius: var(--radiusLg);
	padding: var(--space-4);
	text-align: center;
	border: 1px solid var(--gtvSlate-200);
}

.espece-fait__etiquette {
	font-size: var(--textSm);
	color: var(--colorTextMuted);
	margin: 0;
}

.espece-fait__valeur {
	font-size: var(--textSm);
	font-weight: 600;
	color: var(--colorText);
}

/* Pastilles rondes des titres de section */
.espece-section__pastille {
	width: 80px;
	height: 80px;
	background: var(--gtvForest-100);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto var(--space-4);
}

.espece-section__pastille--alerte { background: rgba(122, 43, 43, 0.1); }
.espece-section__pastille--clair { background: rgba(255, 255, 255, 0.15); }

.espece-pastille {
	width: 36px;
	height: 36px;
	background: rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

/* Habitats */
.espece-bloc-foret {
	background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
	border-radius: var(--radiusXl);
	padding: var(--space-6);
	color: white;
	height: 100%;
}

.espece-bloc-foret__titre,
.espece-reglementation__titre {
	font-family: var(--fontTitre);
	font-size: var(--textLg);
	font-weight: 700;
	margin-bottom: var(--space-5);
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

.espece-liste {
	list-style: none;
	padding: 0;
	margin: 0;
}

.espece-liste__item {
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
	margin-bottom: var(--space-4);
}

.espece-liste__item:last-child { margin-bottom: 0; }

/* Menaces */
.espece-bloc-alerte {
	background: linear-gradient(135deg, var(--gtvBordeaux), var(--gtvBordeaux-800));
	border-radius: var(--radiusXl);
	padding: var(--space-6);
	color: white;
}

.espece-bloc-alerte__titre {
	font-family: var(--fontTitre);
	font-weight: 700;
	margin-bottom: var(--space-2);
}

.espece-bloc-alerte__texte {
	opacity: 0.95;
	line-height: 1.7;
	margin: 0;
}

.espece-menace {
	background: white;
	border: 1px solid var(--gtvSlate-200);
	border-radius: var(--radiusLg);
	padding: var(--space-4);
}

.espece-menace__icone {
	width: 45px;
	height: 45px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}

.espece-menace__icone--ocre { background: var(--gtvAccent-100); }
.espece-menace__icone--alerte { background: rgba(122, 43, 43, 0.1); }
.espece-menace__icone--neutre { background: var(--gtvSlate-100); }

.espece-menace__titre {
	font-weight: 600;
	color: var(--colorText);
}

/* Protection (fond forêt) */
.espece-protection__titre { color: white; }
.espece-protection__soustitre { color: rgba(255, 255, 255, 0.85); }

.espece-protection__carte {
	background: rgba(255, 255, 255, 0.1);
	border: 1px solid rgba(255, 255, 255, 0.2);
	backdrop-filter: blur(10px);
}

.espece-protection__texte {
	color: rgba(255, 255, 255, 0.95);
	line-height: 1.9;
}

.espece-protection__contenu { color: rgba(255, 255, 255, 0.95); }

.espece-protection__puce {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
	background: rgba(255, 255, 255, 0.15);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 2px;
}

.protection-item {
	display: flex;
	gap: var(--space-4);
	margin-bottom: var(--space-5);
}

.protection-item--dernier { margin-bottom: 0; }

.espece-protection__paragraphe {
	margin: 0;
	line-height: 1.8;
	flex: 1;
}

.espece-reglementation {
	background: rgba(255, 255, 255, 0.15);
	border-radius: var(--radiusXl);
	padding: var(--space-6);
	backdrop-filter: blur(10px);
	height: 100%;
}

.espece-reglementation__titre { color: white; }

.espece-reglementation__nom {
	font-weight: 500;
	color: white;
}

.espece-reglementation__ref {
	font-size: var(--textSm);
	color: rgba(255, 255, 255, 0.75);
}

.espece-action {
	background: rgba(255, 255, 255, 0.1);
	border-radius: var(--radiusLg);
	padding: var(--space-5);
	text-align: center;
	backdrop-filter: blur(10px);
}

.espece-action__icone {
	width: 60px;
	height: 60px;
	background: rgba(255, 255, 255, 0.15);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto var(--space-4);
}

.espece-action__titre {
	color: white;
	font-family: var(--fontTitre);
	font-weight: 700;
	margin-bottom: var(--space-2);
}

.espece-action__texte {
	color: rgba(255, 255, 255, 0.85);
	font-size: var(--textSm);
	margin: 0;
}

/* Galerie et autres espèces */
.espece-galerie__img {
	height: 250px;
	width: 100%;
	object-fit: cover;
}

.espece-galerie__corps {
	padding: var(--space-4);
	background: white;
	text-align: center;
}

.espece-galerie__credit {
	color: var(--colorTextMuted);
	margin: 4px 0 0;
	font-size: var(--textXs);
}

.espece-suite__cadre {
	height: 192px;
	overflow: hidden;
}

.espece-suite__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.espece-suite__image {
	background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
	height: 192px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: rgba(255, 255, 255, 0.3);
}

.espece-suite__corps {
	padding: var(--space-5);
	background: white;
}

.espece-suite__badge { margin-bottom: var(--space-3); }
.espece-suite__titre { font-size: var(--textLg); }

/* --- Bandeaux de page (espèces, brèves, ressources) --- */
.hero-gtv-bg--repli {
	background: linear-gradient(135deg, var(--gtvForet), var(--gtvForet-700));
}

.badge-hero {
	margin-bottom: var(--space-4);
}

.icone-texte {
	margin-right: 6px;
	vertical-align: -2px;
}

.icone-bouton {
	margin-right: 8px;
}

.hero-gtv__credit {
	position: absolute;
	bottom: 18px;
	right: 15px;
	z-index: 4;
	color: rgba(255, 255, 255, 0.85);
	font-size: var(--textXs);
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
}

/* --- Fiche espèce : navigation, fil d'Ariane, photo --- */
.species-nav {
	background: #ffffff;
	border-bottom: 1px solid var(--gtvSlate-200);
	position: sticky;
	top: 76px;
	z-index: 100;
}

.species-nav-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	justify-content: center;
	padding: var(--space-4) 0;
	margin: 0;
	list-style: none;
}

.espece-ariane {
	background: var(--gtvCreme);
	padding: var(--space-4) 0;
}

.espece-ariane__liste {
	background: transparent;
	padding: 0;
	margin: 0;
	display: flex;
	align-items: center;
	gap: var(--space-2);
	flex-wrap: wrap;
}

.espece-ariane a {
	color: var(--gtvForet-700);
}

.espece-ariane__accueil {
	display: flex;
	align-items: center;
	gap: 4px;
}

.espece-photo {
	padding: var(--space-8) 0;
	background: #ffffff;
}

.espece-photo__fig {
	margin: 0;
	position: relative;
}

.espece-photo__img {
	width: 100%;
	max-height: 500px;
	object-fit: cover;
	border-radius: var(--radiusXl);
	box-shadow: var(--shadowXl);
}

.espece-photo__legende {
	margin-top: var(--space-3);
	text-align: center;
	color: var(--colorTextMuted);
	font-size: var(--textSm);
}

.espece-photo__credit {
	opacity: 0.85;
}

/* --- Brèves, bibliographie, données --- */
.texte-intro {
	color: var(--colorTextMuted);
	line-height: 1.8;
	font-size: var(--textLg);
}

.biblio-bandeau {
	padding: var(--space-6) 0;
}

.texte-courant {
	color: var(--colorTextMuted);
	line-height: 1.8;
	margin-bottom: var(--space-4);
}

.mot-fort {
	color: var(--gtvOcreBouton);
}

.titre-section--gauche {
	text-align: left;
}

/* --- Fiche espèce introuvable --- */
.espece-404__icone {
	font-size: 4rem;
	margin-bottom: var(--space-6);
	opacity: 0.5;
}

.espece-404__vignette {
	height: 120px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.espece-404__vignette .fa {
	font-size: 2.5rem;
	color: rgba(255, 255, 255, 0.35);
}

.espece-404__vignette--foret { background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet)); }
.espece-404__vignette--ocre { background: linear-gradient(135deg, var(--gtvOcreBouton), var(--gtvOcreBoutonSurvol)); }
.espece-404__vignette--mousse { background: linear-gradient(135deg, var(--gtvMousseFonce), var(--gtvForet-700)); }
.espece-404__vignette--bordeaux { background: linear-gradient(135deg, var(--gtvBordeaux), var(--gtvBordeaux-800)); }

.espece-404__nom {
	padding: var(--space-4);
	background: #ffffff;
	text-align: center;
}

.espece-404__nom h3 {
	font-family: var(--fontTitre);
	font-size: var(--textBase);
	font-weight: 700;
	color: var(--gtvForet);
	margin: 0;
}

/* ===== Contact, connexion et plan du site =====
   Les règles de formulaire sont limitées à .connexion-page / .contact-page
   pour ne pas entrer en collision avec les composants communs. */

:is(.connexion-page, .contact-page) .form-group-gtv { margin-bottom: var(--space-2); }

:is(.connexion-page, .contact-page) .form-group-gtv label {
  display: block;
  font-family: var(--fontTexte);
  font-size: var(--textSm);
  font-weight: 600;
  color: var(--gtvForet);
  margin-bottom: var(--space-2);
}

:is(.connexion-page, .contact-page) .required { color: var(--gtvBordeaux); }

:is(.connexion-page, .contact-page) .input-gtv {
  display: block;
  width: 100%;
  font-family: var(--fontTexte);
  font-size: 1rem;
  color: var(--gtvForet);
  background: #ffffff;
  border: 1px solid rgba(31, 59, 44, 0.3);
  border-radius: 8px;
  padding: 0.7rem 0.9rem;
  transition: border-color var(--transitionBase), box-shadow var(--transitionBase);
}

:is(.connexion-page, .contact-page) .input-gtv:focus {
  outline: none;
  border-color: var(--gtvForet);
  box-shadow: 0 0 0 3px rgba(79, 106, 42, 0.3);
}

:is(.connexion-page, .contact-page) textarea.input-gtv { min-height: 120px; resize: vertical; }

:is(.connexion-page, .contact-page) .input-gtv.is-invalid {
  border-color: var(--gtvBordeaux);
  box-shadow: 0 0 0 3px rgba(122, 41, 41, 0.15);
}

:is(.connexion-page, .contact-page) .input-gtv.is-valid { border-color: var(--gtvMousseFonce); }

:is(.connexion-page, .contact-page) .error-message {
  display: block;
  color: var(--gtvBordeaux);
  font-size: var(--textSm);
  margin-top: var(--space-1);
  min-height: 1.25rem;
}

:is(.connexion-page, .contact-page) .form-note {
  font-size: var(--textSm);
  color: var(--colorTextMuted);
  margin-bottom: var(--space-4);
}

:is(.connexion-page, .contact-page) .alert-gtv {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  border-radius: 8px;
  margin-bottom: var(--space-5);
}

:is(.connexion-page, .contact-page) .alert-gtv svg { flex-shrink: 0; margin-top: 2px; }

:is(.connexion-page, .contact-page) .alert-gtv.alert-danger {
  background: var(--gtvBordeaux-50);
  border: 1px solid var(--gtvBordeaux-100);
  color: var(--gtvBordeaux-800);
}

:is(.connexion-page, .contact-page) .alert-gtv.alert-success {
  background: var(--gtvCreme);
  border: 1px solid var(--gtvMousseFonce);
  color: var(--gtvForet);
}

:is(.connexion-page, .contact-page) .alert-gtv.alert-info {
  background: var(--gtvCreme);
  border: 1px solid rgba(31, 59, 44, 0.25);
  color: var(--gtvForet);
}

:is(.connexion-page, .contact-page) .spinner {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-radius: 50%;
  border-top-color: #ffffff;
  animation: connexion-rotation 0.8s linear infinite;
  margin-right: 8px;
}

@keyframes connexion-rotation { to { transform: rotate(360deg); } }

:is(.connexion-page, .contact-page) .btn-gtv-block { width: 100%; justify-content: center; }

/* Contact */
.contact-info-card {
  background: linear-gradient(135deg, var(--gtvForet-700), var(--gtvForet));
  color: #ffffff;
  padding: var(--space-8);
  border-radius: 12px;
  height: 100%;
}

.contact-form-card,
.auth-card {
  background: #ffffff;
  padding: var(--space-8);
  border-radius: 12px;
  box-shadow: 0 2px 10px rgba(31, 59, 44, 0.08);
  border: 1px solid rgba(31, 59, 44, 0.08);
}

.contact-titre {
  font-family: var(--fontTitre);
  font-size: var(--textXl);
  font-weight: 800;
  color: var(--gtvForet);
  margin-bottom: var(--space-6);
}

.contact-info-card .contact-titre { color: #ffffff; }

.contact-item {
  display: flex;
  gap: var(--space-4);
  margin-bottom: var(--space-5);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.contact-icon {
  width: 44px;
  height: 44px;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.contact-item strong { display: block; font-size: var(--textSm); margin-bottom: var(--space-1); }
.contact-item p { margin: 0; line-height: 1.6; }
.contact-item a { color: #ffffff; text-decoration: underline; }
.contact-item a:hover { text-decoration-thickness: 2px; }

.contact-social { margin-top: var(--space-6); }
.contact-social-titre { font-size: var(--textSm); color: #ffffff; margin-bottom: var(--space-3); }
.contact-social .social-links { display: flex; gap: var(--space-3); }

.contact-social .social-links a {
  width: 40px;
  height: 40px;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  transition: var(--transitionBase);
}

.contact-social .social-links a:hover { background: var(--gtvOcreBouton); transform: translateY(-2px); }

.contact-page .form-privacy {
  font-size: var(--textXs);
  color: var(--colorTextMuted);
  margin-top: var(--space-6);
  padding-top: var(--space-4);
  border-top: 1px solid rgba(31, 59, 44, 0.12);
  line-height: 1.6;
}

.contact-page .form-privacy a { color: var(--gtvForet); text-decoration: underline; }

/* Connexion */
.connexion-page .auth-card-header { text-align: center; margin-bottom: var(--space-6); }

.connexion-page .auth-icon {
  width: 70px;
  height: 70px;
  margin: 0 auto var(--space-4);
  background: var(--gtvCreme);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gtvForet);
}

.connexion-page .auth-card-header h2 {
  font-family: var(--fontTitre);
  font-size: var(--textXl);
  font-weight: 800;
  color: var(--gtvForet);
  margin-bottom: var(--space-2);
}

.connexion-page .auth-card-header p { color: var(--colorTextMuted); font-size: var(--textSm); margin: 0; }

.connexion-page .input-icon-wrapper { position: relative; display: flex; align-items: center; }

.connexion-page .input-icon-wrapper > svg:first-child {
  position: absolute;
  left: 14px;
  color: var(--colorTextMuted);
  pointer-events: none;
  z-index: 1;
}

.connexion-page .input-with-icon { padding-left: 44px; }

.connexion-page .toggle-password {
  position: absolute;
  right: 12px;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--colorTextMuted);
  padding: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: var(--transitionBase);
}

.connexion-page .toggle-password:hover { color: var(--gtvForet); }

.connexion-page .form-row-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--space-5);
  flex-wrap: wrap;
  gap: var(--space-2);
}

.connexion-page .link-gtv {
  font-size: var(--textSm);
  color: var(--gtvForet);
  text-decoration: underline;
  transition: var(--transitionBase);
}

.connexion-page .link-gtv:hover { color: var(--gtvMousseFonce); }

.connexion-page .password-strength { display: none; margin-top: var(--space-2); }
.connexion-page .password-strength.visible { display: block; }

.connexion-page .strength-bar-container {
  height: 4px;
  background: rgba(31, 59, 44, 0.12);
  border-radius: 2px;
  overflow: hidden;
}

.connexion-page .strength-bar { height: 100%; width: 0; transition: width 0.3s, background-color 0.3s; }
.connexion-page .strength-bar[data-strength="1"] { width: 25%; background: var(--gtvBordeaux); }
.connexion-page .strength-bar[data-strength="2"] { width: 50%; background: var(--gtvOcreBouton); }
.connexion-page .strength-bar[data-strength="3"] { width: 75%; background: var(--gtvMousseFonce); }
.connexion-page .strength-bar[data-strength="4"] { width: 100%; background: var(--gtvForet); }

.connexion-page .strength-text { font-size: var(--textXs); color: var(--colorTextMuted); margin-top: var(--space-1); display: block; }
.connexion-page .strength-text.weak { color: var(--gtvBordeaux); }
.connexion-page .strength-text.medium { color: var(--gtvOcreBouton); }
.connexion-page .strength-text.strong { color: var(--gtvMousseFonce); }
.connexion-page .strength-text.very-strong { color: var(--gtvForet); }

.connexion-page .match-indicator { display: block; font-size: var(--textSm); margin-top: var(--space-1); }
.connexion-page .match-indicator.match { color: var(--gtvMousseFonce); }
.connexion-page .match-indicator.no-match { color: var(--gtvBordeaux); }

.connexion-page .auth-terms {
  text-align: center;
  font-size: var(--textXs);
  color: var(--colorTextMuted);
  margin-top: var(--space-4);
  line-height: 1.6;
}

.connexion-page .auth-separator { display: flex; align-items: center; gap: var(--space-4); margin: var(--space-6) 0; }

.connexion-page .auth-separator::before,
.connexion-page .auth-separator::after {
  content: '';
  flex: 1;
  height: 1px;
  background: rgba(31, 59, 44, 0.15);
}

.connexion-page .auth-separator span { font-size: var(--textSm); color: var(--colorTextMuted); }

.connexion-page .auth-footer-text {
  text-align: center;
  color: var(--colorTextMuted);
  font-size: var(--textSm);
  margin-bottom: var(--space-3);
}

.connexion-page .success-message,
.connexion-page .error-message-block { text-align: center; padding: var(--space-6); }

.connexion-page .success-icon,
.connexion-page .error-icon {
  width: 80px;
  height: 80px;
  margin: 0 auto var(--space-4);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.connexion-page .success-icon { background: var(--gtvCreme); color: var(--gtvMousseFonce); }
.connexion-page .error-icon { background: var(--gtvBordeaux-50); color: var(--gtvBordeaux); }

.connexion-page .success-message h3,
.connexion-page .error-message-block h3 {
  font-family: var(--fontTitre);
  font-size: var(--textXl);
  font-weight: 800;
  color: var(--gtvForet);
  margin-bottom: var(--space-3);
}

.connexion-page .success-message p,
.connexion-page .error-message-block p {
  color: var(--colorTextMuted);
  margin-bottom: var(--space-5);
  line-height: 1.7;
}

.connexion-page .validation-actions { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }

@media (max-width: 576px) {
  .connexion-page .form-row-between { flex-direction: column; align-items: flex-start; }
  .contact-form-card, .auth-card, .contact-info-card { padding: var(--space-6); }
}

/* Plan du site */
.plan-titre {
  font-family: var(--fontTitre);
  font-size: 1.125rem;
  font-weight: 800;
  color: var(--gtvForet);
  margin-bottom: var(--space-3);
}

.plan-titre a { color: var(--gtvForet); text-decoration: none; }
.plan-titre a:hover { color: var(--gtvMousseFonce); text-decoration: underline; }

.plan-liste { list-style: none; margin: 0; padding: 0 0 0 var(--space-4); border-left: 3px solid var(--gtvOcre); }
.plan-liste li { padding: 0.2rem 0; }
.plan-liste a { color: var(--gtvForet); text-decoration: underline; }
.plan-liste a:hover { color: var(--gtvMousseFonce); }

/* Mouvement réduit : pas de transition, d'animation ni de déplacement au survol */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }
  .card-gtv:hover, a.carte-gtv:hover, .carte-gtv:focus-within,
  .btn-gtv:hover, .article-card:hover, .article-card-gtv:hover, .timeline-card-gtv:hover,
  .text-card-item:hover, .logo-item:hover, .objective-card:hover, .archive-card:hover,
  .biblio-card:hover, .biblio-link-pdf:hover, .biblio-link-details:hover, .biblio-link-external:hover,
  .page-donnees .principle-card:hover, .page-donnees .stat-card:hover, .video-card:hover,
  .contact-social .social-links a:hover { transform: none !important; }
  .card-gtv:hover .card-gtv-image img, .card-gtv-featured:hover .card-gtv-featured-image img,
  .article-card:hover .article-image img, .featured-article-gtv:hover .featured-article-image img,
  .article-card-gtv:hover .article-card-image img, .timeline-card-gtv:hover .timeline-image-gtv img,
  .gallery-link:hover img { transform: none !important; }
}
