/* ==========================================================================
   LPA — Legendes du carrousel d'accueil
   Le carrousel positionne chaque couche en absolu, avec des coordonnees
   calculees pour un titre court. Des qu'un titre est long (« Agir
   concretement pour transformer les vies »), il se replie sur cinq lignes
   dans une colonne etroite et vient recouvrir l'accroche puis le bouton.
   On sort donc les couches du positionnement absolu et on les empile dans
   une colonne, alignee sur la grille du site.
   ========================================================================== */
.rev_slider .tp-revslider-mainul > li {
  display: flex !important;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding-left: max(24px, calc((100% - 1170px) / 2)) !important;
  padding-right: 24px !important;
}

/* L'image de fond reste en couche de fond. */
.rev_slider .tp-revslider-mainul > li > .slotholder {
  position: absolute !important;
  inset: 0 !important;
  padding: 0 !important;
}

.rev_slider .tp-revslider-mainul > li .tp-parallax-wrap {
  position: relative !important;
  left: auto !important;
  top: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: 640px !important;
  margin: 0 !important;
}

/* .tp-loop-wrap s'intercale entre .tp-parallax-wrap et .tp-mask-wrap et reste
   en position absolue : sans lui, la couche parente garde une hauteur nulle et
   toutes les legendes se superposent. */
.rev_slider .tp-revslider-mainul > li .tp-loop-wrap,
.rev_slider .tp-revslider-mainul > li .tp-mask-wrap {
  position: relative !important;
  left: auto !important;
  top: auto !important;
  width: 100% !important;
  height: auto !important;
  overflow: visible !important;
  transform: none !important;
}

.rev_slider .tp-revslider-mainul > li .tp-caption {
  position: relative !important;
  left: auto !important;
  top: auto !important;
  transform: none !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  white-space: normal !important;
}

/* Titre : casse d'origine conservee. Les majuscules integrales ralentissent
   la lecture et alourdissent une phrase francaise de huit mots. */
.gavias_sliderlayer .tp-caption.lpa-slide-title,
#gavias_slider_single .tp-caption.lpa-slide-title {
  margin-bottom: 16px !important;
  text-align: left !important;
  font-size: 46px !important;
  line-height: 1.1 !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  text-transform: none !important;
  text-shadow: 0 3px 18px rgba(9, 14, 42, 0.5);
}

.gavias_sliderlayer .tp-caption.lpa-slide-subtitle,
.gavias_sliderlayer .tp-caption.lpa-slide-desc,
#gavias_slider_single .tp-caption.lpa-slide-subtitle,
#gavias_slider_single .tp-caption.lpa-slide-desc {
  margin-bottom: 26px !important;
  max-width: 560px !important;
  text-align: left !important;
  font-size: 18px !important;
  line-height: 1.55 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  text-shadow: 0 2px 14px rgba(9, 14, 42, 0.55);
}

/* Le bouton ne doit pas s'etirer sur la largeur de la colonne. */
.rev_slider .tp-revslider-mainul > li .tp-parallax-wrap:has(.lpa-slide-cta),
.rev_slider .tp-revslider-mainul > li .tp-parallax-wrap:has(.lpa-slide-button) {
  width: auto !important;
}

.gavias_sliderlayer .tp-caption.lpa-slide-cta,
#gavias_slider_single .tp-caption.lpa-slide-cta {
  text-align: center !important;
}

.gavias_sliderlayer .tp-caption.lpa-slide-cta a,
#gavias_slider_single .tp-caption.lpa-slide-cta a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
}

header .site-branding-logo img {
  display: block;
  width: auto;
  max-width: 100%;
  height: 56px;
  object-fit: contain;
}

/* LPA 2027 official event announcement. */


.lpa-about-home-section {
  background: #fff;
}

.lpa-about-home-section .column-inner {
  height: 100%;
}

.lpa-about-image-content {
  height: 100%;
  overflow: hidden;
  border: 1px solid rgba(31, 10, 131, 0.08);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(15, 23, 42, 0.08);
}

.lpa-about-image-content .image img {
  width: 100%;
  height: 330px;
  object-fit: cover;
}

.lpa-about-image-content .content {
  padding: 28px 30px 30px;
}

.lpa-about-image-content .title {
  margin: 0 0 14px;
  color: #1f0a83;
  font-size: 28px;
  font-weight: 900;
  line-height: 1.15;
  letter-spacing: 0;
}

.lpa-about-image-content .desc p {
  margin-bottom: 12px;
  color: #4c5668;
  font-size: 15px;
  line-height: 1.72;
}

.lpa-about-image-content .action a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 11px 18px;
  border-radius: 999px;
  color: #fff;
  background: linear-gradient(135deg, #1f0a83 0%, #0a7a86 100%);
  font-size: 13px;
  font-weight: 800;
}

.lpa-about-home-section .lpa-about-point {
  min-height: 0;
  margin-bottom: 14px;
  padding: 22px 24px;
  border: 1px solid rgba(31, 10, 131, 0.08);
  border-radius: 8px;
  background: #f8fafc;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.055);
}

.lpa-about-home-section .lpa-about-point:last-child {
  margin-bottom: 0;
}

.lpa-about-home-section .lpa-about-point .highlight-icon {
  width: 54px;
}

.lpa-about-home-section .lpa-about-point .highlight-icon .icon-container {
  color: #0a7a86 !important;
}

.lpa-about-home-section .lpa-about-point .title {
  margin-bottom: 7px;
  color: #1f0a83;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.25;
  letter-spacing: 0;
}

.lpa-about-home-section .lpa-about-point .desc,
.lpa-about-home-section .lpa-about-point .desc p {
  color: #5b6475;
  font-size: 14px;
  line-height: 1.58;
}

.lpa-domaines-heading-section,
.lpa-domaines-grid-section {
  background: #f6f9fc;
}

.lpa-section-heading .sub-title span {
  color: #0a7a86;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.lpa-section-heading .title {
  color: #1f0a83;
  font-size: 32px;
  font-weight: 900;
  line-height: 1.15;
  letter-spacing: 0;
}

.lpa-section-heading .title-desc {
  max-width: 820px;
  margin: 12px auto 0;
  color: #5b6475;
  font-size: 15px;
  line-height: 1.68;
}

.lpa-domaines-grid-section .column {
  margin-bottom: 24px;
}

.lpa-domain-card {
  height: 100%;
  overflow: hidden;
  border: 1px solid rgba(31, 10, 131, 0.08);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.07);
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.lpa-domain-card:hover {
  transform: translateY(-3px);
  border-color: rgba(10, 122, 134, 0.36);
  box-shadow: 0 20px 42px rgba(15, 23, 42, 0.12);
}

.lpa-domain-card .image {
  position: relative;
  overflow: hidden;
}

.lpa-domain-card .image:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(31, 10, 131, 0) 42%, rgba(31, 10, 131, 0.32) 100%);
  pointer-events: none;
}

.lpa-domain-card .image img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  transition: transform 0.28s ease;
}

.lpa-domain-card:hover .image img {
  transform: scale(1.04);
}

.lpa-domain-card .content {
  padding: 20px 20px 22px;
}

.lpa-domain-card .title {
  min-height: 46px;
  margin: 0 0 10px;
  color: #1f0a83;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.25;
  letter-spacing: 0;
}

.lpa-domain-card .desc p {
  min-height: 68px;
  margin: 0 0 16px;
  color: #5b6475;
  font-size: 13px;
  line-height: 1.55;
}

.lpa-domain-card .action a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 9px 14px;
  border-radius: 999px;
  color: #1f0a83;
  background: rgba(31, 10, 131, 0.07);
  font-size: 12px;
  font-weight: 900;
}

.lpa-domain-card .action a:hover {
  color: #fff;
  background: linear-gradient(135deg, #1f0a83 0%, #0a7a86 100%);
}

.lpa-domaines-icon-heading,
.lpa-domaines-icon-grid-section {
  background:
    linear-gradient(180deg, #eef8fa 0%, #f8fcfd 42%, #fff 100%);
}

.lpa-domaines-icon-heading {
  position: relative;
  border-top: 1px solid rgba(31, 10, 131, 0.10);
  box-shadow:
    inset 0 18px 30px -26px rgba(31, 10, 131, 0.40),
    0 -14px 28px -30px rgba(15, 23, 42, 0.36);
}

.lpa-domaines-icon-heading:before {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  width: min(920px, calc(100% - 30px));
  height: 1px;
  transform: translateX(-50%);
  background: linear-gradient(90deg, transparent 0%, rgba(10, 122, 134, 0.55) 18%, rgba(31, 10, 131, 0.22) 50%, rgba(10, 122, 134, 0.55) 82%, transparent 100%);
}

.lpa-domain-icon-title {
  max-width: 920px;
  margin: 0 auto;
}

.lpa-domain-icon-title .title {
  text-align: left;
}

.lpa-domain-icon-title .heading-line {
  width: 88px;
  height: 4px;
  margin: 8px 0 0;
  background: #0a7a86;
}

.lpa-domaines-icon-grid-section .row-wrapper {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 5px;
  max-width: 920px;
  margin: 0 auto;
}

.lpa-domaines-icon-grid-section .row-wrapper:before,
.lpa-domaines-icon-grid-section .row-wrapper:after {
  content: none !important;
  display: none !important;
}

.lpa-domaines-icon-grid-section .row {
  margin-right: 0;
  margin-left: 0;
}

.lpa-domaines-icon-grid-section .gsc-column {
  float: none !important;
  width: auto !important;
  padding-right: 0 !important;
  padding-left: 0 !important;
}

/* Audit §4.4 — La grille compte 1 titre + 8 cartes + 1 bouton dans une grille
   de 4 colonnes. Faire passer la 9e cellule (la derniere carte) en pleine
   largeur laissait « Culture et identite » orpheline et lui donnait une
   importance qu'elle n'a pas. On fait plutot passer le titre et le bouton en
   pleine largeur : les 8 cartes forment alors deux rangees de quatre. */
.lpa-domaines-icon-grid-section .gsc-column:first-child,
.lpa-domaines-icon-grid-section .gsc-column:last-child {
  grid-column: 1 / -1;
  width: 100% !important;
}

.lpa-domaines-icon-grid-section .gsc-column:not(:last-child) .column-inner {
  height: 100%;
}

.lpa-domaines-icon-grid-section .gsc-column:nth-child(-n+8) .column-inner,
.lpa-domaines-icon-grid-section .gsc-column:nth-child(-n+8) .column-content-inner {
  margin: 0 !important;
  padding: 0 !important;
}

.lpa-domaines-icon-grid-section .gsc-column:nth-child(-n+8) {
  padding: 0 !important;
}

.lpa-domain-icon-box {
  min-height: 166px;
  height: 100%;
  margin: 0 !important;
  padding: 22px 18px 18px;
  border-right: 1px solid #e4e8ef;
  border-bottom: 1px solid #e4e8ef;
  border-left: 1px solid #e4e8ef;
  border-top: 1px solid #e4e8ef;
  border-radius: 8px;
  background: #fff;
  text-align: center;
  transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.lpa-domain-icon-box:hover {
  position: relative;
  z-index: 1;
  background: #f8fcfd;
  box-shadow: 0 16px 34px rgba(15, 23, 42, 0.08);
  transform: translateY(-2px);
}

.lpa-domain-icon-box .highlight-icon {
  margin-bottom: 12px;
}

.lpa-domain-icon-box .highlight-icon .icon-container {
  color: #0a7a86 !important;
  text-shadow: 2px 2px 0 rgba(31, 10, 131, 0.16);
}

.lpa-domain-icon-box .highlight-icon .icon {
  font-size: 44px;
  line-height: 1;
}

.lpa-domain-icon-box .title {
  max-width: 170px;
  min-height: 42px;
  margin: 0 auto;
  color: #172a5a;
  font-size: 15px;
  font-weight: 900;
  line-height: 1.35;
  letter-spacing: 0;
}

.lpa-domain-icon-box .title a {
  color: inherit;
}

.lpa-domain-icon-box:hover .title,
.lpa-domain-icon-box:hover .title a {
  color: #1f0a83;
}

.lpa-domaines-icon-grid-section .gsc-column:last-child {
  padding-top: 25px !important;
  text-align: center;
}

.lpa-domain-icon-button {
  min-width: 250px;
  border-radius: 6px !important;
  box-shadow: 0 8px 18px rgba(10, 122, 134, 0.22);
  font-weight: 900;
}

.lpa-events-home-section {
  background: #fff;
}

.lpa-events-heading {
  margin-bottom: 22px;
}

.lpa-events-heading .sub-title span {
  color: #0a7a86;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.lpa-events-carousel {
  margin-top: 8px;
}

.lpa-events-carousel .event-block {
  overflow: hidden;
  border: 1px solid rgba(31, 10, 131, 0.08);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.075);
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.lpa-events-carousel .event-block:hover {
  transform: translateY(-3px);
  border-color: rgba(10, 122, 134, 0.32);
  box-shadow: 0 20px 42px rgba(15, 23, 42, 0.12);
}

.lpa-events-carousel .event-image {
  position: relative;
  overflow: hidden;
}

.lpa-events-carousel .event-image img {
  width: 100%;
  height: 210px;
  object-fit: cover;
}

.lpa-events-carousel .event-image .date {
  position: absolute;
  top: 14px;
  left: 14px;
  min-width: 66px;
  overflow: hidden;
  border-radius: 6px;
  background: #1f0a83;
  box-shadow: 0 8px 18px rgba(15, 23, 42, 0.24);
}

.lpa-events-carousel .event-image .date .day,
.lpa-events-carousel .event-image .date .month {
  display: block;
  color: #fff;
  text-align: center;
  line-height: 1;
}

.lpa-events-carousel .event-image .date .day {
  padding: 8px 8px 3px;
  font-size: 24px;
  font-weight: 900;
}

.lpa-events-carousel .event-image .date .month {
  padding: 4px 8px 8px;
  background: #0a7a86;
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
}

.lpa-events-carousel .event-content {
  padding: 22px 22px 24px;
}

.lpa-events-carousel .event-info .title,
.lpa-events-carousel .event-info .title a {
  color: #1f0a83;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.28;
  letter-spacing: 0;
}

.lpa-events-carousel .event-info .address {
  margin-top: 10px;
  color: #5b6475;
  font-size: 13px;
  font-weight: 700;
}

.lpa-events-carousel .event-info .address i {
  margin-right: 6px;
  color: #0a7a86;
}

.lpa-events-carousel .event-info .body {
  margin-top: 12px;
  color: #5b6475;
  font-size: 14px;
  line-height: 1.6;
}

.lpa-events-carousel .owl-nav > div {
  border-radius: 999px;
}

.lpa-events-button {
  display: table !important;
  min-width: 245px;
  margin: 30px auto 0;
  border-radius: 6px !important;
  box-shadow: 0 8px 18px rgba(31, 10, 131, 0.18);
  font-weight: 900;
  text-align: center;
}

@media (min-width: 992px) {
  header .header-main {
    background: rgba(255, 255, 255, 0.98);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
  }

  header .header-main-inner .row {
    display: flex;
    align-items: center;
  }

  header .area-main-menu .area-inner {
    display: flex;
    align-items: center;
    justify-content: flex-end;
  }

  .navigation .gva_menu {
    float: none !important;
    display: flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
  }

  .navigation .gva_menu > li > a {
    padding: 11px 10px !important;
    border-radius: 999px;
    color: #17233d !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    line-height: 1.2;
  }

  .navigation .gva_menu > li > a:hover,
  .navigation .gva_menu > li.menu-item--active-trail > a,
  .navigation .gva_menu > li > a.is-active {
    background: rgba(31, 10, 131, 0.08);
    color: #1f0a83 !important;
  }

  .navigation .gva_menu > li > a .icaret {
    margin-left: 6px;
    font-size: 11px;
    color: #1f0a83;
  }

  /* Le bouton d'appel au don etait cible par :last-child : il changeait de
     place des qu'une entree de menu etait ajoutee. On cible le lien lui-meme. */
  .navigation .gva_menu > li > a[href$="/faire-un-don"] {
    margin-left: 6px;
    padding: 12px 16px !important;
    color: #fff !important;
    background: linear-gradient(135deg, #1f0a83 0%, #1f6f8b 100%);
    box-shadow: 0 8px 20px rgba(31, 10, 131, 0.22);
  }

  .navigation .gva_menu > li > a[href$="/faire-un-don"]:hover,
  .navigation .gva_menu > li.menu-item--active-trail > a[href$="/faire-un-don"] {
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 10px 24px rgba(31, 10, 131, 0.28);
  }

  .navigation .gva_menu .sub-menu {
    min-width: 0 !important;
    padding: 10px !important;
    border: 0 !important;
    border-radius: 10px !important;
    box-shadow: 0 18px 48px rgba(15, 23, 42, 0.16) !important;
  }

  .navigation .gva_menu .sub-menu > li {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  .navigation .gva_menu .sub-menu > li > a {
    margin-bottom: 0 !important;
    padding: 11px 12px !important;
    border-bottom: 0 !important;
    border-radius: 8px;
    color: #243047;
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
  }

  .navigation .gva_menu .sub-menu > li > a:hover {
    background: rgba(31, 10, 131, 0.07);
    color: #1f0a83 !important;
  }

  .navigation .gva_menu > li.mega-menu-block {
    position: static !important;
  }

  .navigation .gva_menu > li.mega-menu-block > .sub-menu {
    left: auto !important;
    right: 0 !important;
    width: min(820px, calc(100vw - 80px)) !important;
    min-width: 0 !important;
    padding: 0 !important;
    overflow: hidden;
  }

  .navigation .gva_menu > li.mega-menu-block:hover > .sub-menu,
  .navigation .gva_menu > li.mega-menu-block:focus-within > .sub-menu {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    top: 100% !important;
  }

  .navigation .gva_menu > li.mega-menu-block > .sub-menu .block,
  .navigation .gva_menu > li.mega-menu-block > .sub-menu .block-content {
    margin: 0 !important;
    padding: 0 !important;
  }

  .lpa-mega-panel {
    display: grid;
    grid-template-columns: 210px minmax(0, 1fr);
    gap: 14px;
    padding: 16px;
    background:
      linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 252, 0.98));
    box-sizing: border-box;
    max-width: 100%;
    overflow: hidden;
    white-space: normal !important;
  }

  .lpa-mega-panel *,
  .lpa-mega-panel a,
  .lpa-mega-panel span,
  .lpa-mega-panel strong,
  .lpa-mega-panel small,
  .lpa-mega-panel p {
    white-space: normal !important;
    word-break: normal;
    overflow-wrap: break-word;
  }

  .lpa-mega-intro {
    min-width: 0;
    padding: 14px;
    border-radius: 10px;
    color: #fff;
    background:
      linear-gradient(145deg, rgba(31, 10, 131, 0.96), rgba(31, 111, 139, 0.94)),
      url("../images/lpa/lpa-breadcrumb-bg.webp") center center / cover no-repeat;
  }

  .lpa-mega-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: rgba(255, 255, 255, 0.78);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  .lpa-mega-intro strong {
    display: block;
    color: #fff;
    font-size: 16px;
    line-height: 1.25;
    overflow-wrap: anywhere;
  }

  .lpa-mega-intro p {
    margin: 10px 0 0;
    color: rgba(255, 255, 255, 0.84);
    font-size: 12px;
    line-height: 1.42;
    overflow-wrap: anywhere;
  }

  .lpa-mega-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    min-width: 0;
  }

  .lpa-mega-card {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    gap: 8px;
    padding: 10px !important;
    border-radius: 10px;
    color: #17233d !important;
    background: #fff;
    border: 1px solid rgba(31, 10, 131, 0.08) !important;
    text-decoration: none !important;
    box-shadow: 0 8px 22px rgba(15, 23, 42, 0.06);
    box-sizing: border-box;
    min-width: 0;
    overflow: hidden;
    white-space: normal !important;
  }

  .lpa-mega-card:hover {
    transform: translateY(-1px);
    border-color: rgba(31, 10, 131, 0.24) !important;
    box-shadow: 0 14px 30px rgba(15, 23, 42, 0.12);
  }

  .lpa-mega-card img {
    width: 100%;
    height: 86px;
    object-fit: cover;
    border-radius: 8px;
    grid-row: auto;
  }

  .lpa-mega-card span,
  .lpa-mega-cta-list span {
    display: block;
    color: #1f0a83;
    font-size: 13px;
    font-weight: 900;
    line-height: 1.2;
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .lpa-mega-card small,
  .lpa-mega-cta-list small {
    display: block;
    margin-top: 4px;
    color: #5b6475;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.35;
    min-width: 0;
    overflow-wrap: anywhere;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }

  .lpa-mega-links {
    grid-column: 2;
    display: flex;
    gap: 8px;
    margin-top: -6px;
  }

  .lpa-mega-links a {
    display: inline-flex;
    padding: 8px 12px;
    border-radius: 999px;
    color: #1f0a83;
    background: rgba(31, 10, 131, 0.07);
    font-size: 12px;
    font-weight: 800;
  }

  .lpa-mega-panel-engage {
    grid-template-columns: 185px minmax(0, 1fr);
  }

  .lpa-mega-cta-list {
    display: grid;
    gap: 8px;
  }

  .lpa-mega-cta-list a {
    display: block;
    padding: 12px 14px;
    border-radius: 10px;
    background: #fff;
    border: 1px solid rgba(31, 10, 131, 0.09);
    min-width: 0;
    overflow: hidden;
  }

  .lpa-mega-cta-list a:hover {
    background: rgba(31, 10, 131, 0.06);
  }

  .lpa-mega-cta-list a.is-donate {
    background: linear-gradient(135deg, #1f0a83 0%, #1f6f8b 100%);
  }

  .lpa-mega-cta-list a.is-donate span,
  .lpa-mega-cta-list a.is-donate small {
    color: #fff;
  }

  .navigation .gva_menu > li:nth-child(5).mega-menu-block > .sub-menu {
    width: min(520px, calc(100vw - 80px)) !important;
  }

  .navigation .gva_menu > li:nth-child(5).mega-menu-block .lpa-mega-panel {
    grid-template-columns: 180px minmax(0, 1fr);
  }

  @media (max-width: 1199px) {
    .navigation .gva_menu > li.mega-menu-block > .sub-menu {
      width: min(680px, calc(100vw - 40px)) !important;
    }

    .lpa-mega-panel {
      grid-template-columns: 190px minmax(0, 1fr);
    }

    .lpa-mega-card {
      grid-template-columns: minmax(0, 1fr);
    }

    .lpa-mega-card img {
      width: 100%;
      height: 78px;
    }
  }
}

.breadcrumb-content-inner {
  background: #061b46 !important;
}

.breadcrumb-content-inner .gva-breadcrumb-content .gva-block-breadcrumb .breadcrumb-style {
  overflow: hidden;
  padding: 82px 0 96px !important;
  margin-bottom: 38px !important;
  background-image:
    linear-gradient(90deg, rgba(3, 16, 45, 0.92) 0%, rgba(5, 24, 65, 0.82) 46%, rgba(5, 24, 65, 0.54) 100%),
    url("../images/lpa/lpa-breadcrumb-bg.webp") !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
}

.breadcrumb-content-inner .gva-breadcrumb-content .breadcrumb-content-main {
  position: relative;
  z-index: 1;
}

.breadcrumb-content-inner .gva-breadcrumb-content .page-title {
  color: #fff !important;
  font-size: 34px !important;
  font-weight: 800 !important;
  line-height: 1.18 !important;
  letter-spacing: 0 !important;
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.42);
}

.breadcrumb-content-inner .gva-breadcrumb-content .breadcrumb-links nav.breadcrumb li,
.breadcrumb-content-inner .gva-breadcrumb-content .breadcrumb-links nav.breadcrumb li span,
.breadcrumb-content-inner .gva-breadcrumb-content .breadcrumb-links nav.breadcrumb li a {
  color: rgba(255, 255, 255, 0.86) !important;
}

.breadcrumb-content-inner .gva-breadcrumb-content .breadcrumb-links nav.breadcrumb li a:hover {
  color: #fff !important;
}

@media (max-width: 767px) {


  header .site-branding-logo img {
    width: auto;
    height: 44px;
  }

  .lpa-about-image-content .image img {
    height: 230px;
  }

  .lpa-about-image-content .content {
    padding: 22px 20px;
  }

  .lpa-about-image-content .title {
    font-size: 24px;
  }

  .lpa-about-home-section .lpa-about-point {
    padding: 18px 18px;
  }

  .lpa-section-heading .title {
    font-size: 26px;
  }

  .lpa-domain-card .image img {
    height: 210px;
  }

  .lpa-domain-card .title,
  .lpa-domain-card .desc p {
    min-height: 0;
  }

  .lpa-domain-icon-title .title {
    text-align: center;
  }

  .lpa-domain-icon-title .heading-line {
    margin-right: auto;
    margin-left: auto;
  }

  .lpa-domaines-icon-grid-section .row-wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 5px;
    max-width: 100%;
  }

  .lpa-domaines-icon-grid-section .gsc-column {
    float: none !important;
    width: auto !important;
    max-width: none !important;
    padding-right: 0 !important;
    padding-left: 0 !important;
  }

  .lpa-domain-icon-box {
    min-height: 132px;
    padding: 18px 12px 16px;
  }

  .lpa-domain-icon-box .highlight-icon {
    margin-bottom: 9px;
  }

  .lpa-domain-icon-box .highlight-icon .icon {
    font-size: 34px;
  }

  .lpa-domain-icon-box .title {
    max-width: 138px;
    min-height: 0;
    font-size: 12px;
    line-height: 1.28;
  }

  .lpa-domaines-icon-grid-section .gsc-column:last-child {
    padding-top: 18px !important;
  }

  .lpa-domain-icon-button {
    width: 100%;
    min-width: 0;
  }

  .lpa-events-carousel .event-image img {
    height: 190px;
  }

  .breadcrumb-content-inner .gva-breadcrumb-content .gva-block-breadcrumb .breadcrumb-style {
    padding: 58px 0 66px !important;
    background-position: center right !important;
  }

  .breadcrumb-content-inner .gva-breadcrumb-content .page-title {
    font-size: 25px !important;
  }
}

@media (max-width: 991px) {
  .gva-offcanvas-mobile .gva-navigation .gva_menu > li.mega-menu-block:hover .sub-menu {
    display: none;
  }

  .gva-offcanvas-mobile .gva-navigation .gva_menu > li.mega-menu-block > a {
    padding-right: 30px !important;
  }

  .gva-offcanvas-mobile .gva-navigation .gva_menu > li.mega-menu-block > .sub-menu {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 8px 0 0 !important;
    padding: 0 !important;
    position: static !important;
    overflow: visible !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
  }

  .gva-offcanvas-mobile .gva-navigation .gva_menu > li.mega-menu-block > .sub-menu .block,
  .gva-offcanvas-mobile .gva-navigation .gva_menu > li.mega-menu-block > .sub-menu .block-content {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
  }

  .gva-offcanvas-mobile .lpa-mega-panel,
  .gva-offcanvas-mobile .lpa-mega-panel-engage {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 10px;
    width: 100%;
    max-width: 100%;
    padding: 10px 0 4px;
    overflow: visible;
    background: transparent;
    white-space: normal !important;
  }

  .gva-offcanvas-mobile .lpa-mega-panel *,
  .gva-offcanvas-mobile .lpa-mega-panel a,
  .gva-offcanvas-mobile .lpa-mega-panel p,
  .gva-offcanvas-mobile .lpa-mega-panel small,
  .gva-offcanvas-mobile .lpa-mega-panel span,
  .gva-offcanvas-mobile .lpa-mega-panel strong {
    white-space: normal !important;
    word-break: normal;
    overflow-wrap: break-word;
  }

  .gva-offcanvas-mobile .lpa-mega-intro {
    padding: 13px 14px;
    border-radius: 8px;
  }

  .gva-offcanvas-mobile .lpa-mega-eyebrow {
    margin-bottom: 7px;
    font-size: 10px;
    line-height: 1.2;
  }

  .gva-offcanvas-mobile .lpa-mega-intro strong {
    font-size: 14px;
    line-height: 1.25;
  }

  .gva-offcanvas-mobile .lpa-mega-intro p {
    margin-top: 7px;
    font-size: 11px;
    line-height: 1.4;
  }

  .gva-offcanvas-mobile .lpa-mega-cards,
  .gva-offcanvas-mobile .lpa-mega-cta-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    width: 100%;
    min-width: 0;
  }

  .gva-offcanvas-mobile .lpa-mega-card,
  .gva-offcanvas-mobile .lpa-mega-cta-list a {
    display: block !important;
    width: 100%;
    min-width: 0;
    padding: 10px 12px !important;
    border-radius: 8px;
    box-shadow: none;
  }

  .gva-offcanvas-mobile .lpa-mega-card img {
    display: none;
  }

  .gva-offcanvas-mobile .lpa-mega-card span,
  .gva-offcanvas-mobile .lpa-mega-cta-list span {
    font-size: 12px;
    line-height: 1.25;
  }

  .gva-offcanvas-mobile .lpa-mega-card small,
  .gva-offcanvas-mobile .lpa-mega-cta-list small {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    line-height: 1.35;
    -webkit-line-clamp: initial;
    -webkit-box-orient: initial;
    overflow: visible;
  }

  .gva-offcanvas-mobile .lpa-mega-links {
    grid-column: auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
    margin-top: 0;
  }

  .gva-offcanvas-mobile .lpa-mega-links a {
    display: block;
    padding: 9px 12px;
    border-radius: 8px;
    font-size: 11px;
    line-height: 1.3;
  }
}

@media (max-width: 767px) {
  .gavias_sliderlayer .tp-caption.lpa-slide-title,
  #gavias_slider_single .tp-caption.lpa-slide-title {
    display: block !important;
    width: calc(100vw - 44px) !important;
    min-width: 0 !important;
    max-width: calc(100vw - 44px) !important;
    white-space: normal !important;
    font-size: 24px !important;
    line-height: 1.22 !important;
    letter-spacing: 0 !important;
  }

  /* Le sous-titre etait purement et simplement masque sur mobile : le message
     principal du site disparaissait pour les visiteurs sur telephone, qui sont
     la majorite du public vise. On l'affiche, a taille lisible. */
  .gavias_sliderlayer .tp-caption.lpa-slide-subtitle,
  #gavias_slider_single .tp-caption.lpa-slide-subtitle,
  .gavias_sliderlayer .tp-caption.lpa-slide-desc,
  #gavias_slider_single .tp-caption.lpa-slide-desc {
    display: block !important;
    width: calc(100vw - 44px) !important;
    min-width: 0 !important;
    max-width: calc(100vw - 44px) !important;
    white-space: normal !important;
    font-size: 15px !important;
    line-height: 1.5 !important;
  }

  .gavias_sliderlayer .tp-caption.lpa-slide-cta,
  .gavias_sliderlayer .tp-caption.lpa-slide-button {
    width: auto !important;
    max-width: calc(100vw - 44px) !important;
  }

  .gavias_sliderlayer .tp-caption.lpa-slide-cta,
  #gavias_slider_single .tp-caption.lpa-slide-cta {
    min-width: 0 !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
  }
}

/* LPA - Modern homepage call to action */
.path-frontpage .gsc-call-to-action,
.front .gsc-call-to-action {
  position: relative;
  z-index: 1;
  overflow: hidden;
  max-width: none !important;
  padding: 46px 52px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  background:
    linear-gradient(112deg, rgba(31, 10, 131, 0.96) 0%, rgba(23, 58, 139, 0.94) 48%, rgba(10, 122, 134, 0.92) 100%),
    url("/sites/default/files/lpa/lpa-nous-rejoindre.png") center/cover no-repeat !important;
  box-shadow: 0 26px 60px rgba(15, 23, 42, 0.2);
}

.path-frontpage .gsc-call-to-action:before,
.front .gsc-call-to-action:before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(circle at 14% 22%, rgba(255, 255, 255, 0.18), transparent 28%),
    linear-gradient(90deg, rgba(6, 12, 38, 0.28), transparent 58%);
}

.path-frontpage .gsc-call-to-action:after,
.front .gsc-call-to-action:after {
  content: "";
  position: absolute;
  right: 34px;
  bottom: 28px;
  z-index: -1;
  width: 170px;
  height: 170px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  opacity: 0.75;
}

.path-frontpage .gsc-call-to-action .content-inner,
.front .gsc-call-to-action .content-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 34px;
}

.path-frontpage .gsc-call-to-action .content,
.front .gsc-call-to-action .content {
  max-width: 720px;
}

.path-frontpage .gsc-call-to-action .title,
.front .gsc-call-to-action .title {
  margin: 0 0 12px;
  color: #fff !important;
  font-size: 34px;
  font-weight: 900;
  line-height: 1.15;
  letter-spacing: 0;
}

.path-frontpage .gsc-call-to-action .title span,
.front .gsc-call-to-action .title span {
  color: inherit !important;
}

.path-frontpage .gsc-call-to-action .desc,
.front .gsc-call-to-action .desc {
  max-width: 650px;
}

.path-frontpage .gsc-call-to-action .desc,
.path-frontpage .gsc-call-to-action .desc p,
.front .gsc-call-to-action .desc,
.front .gsc-call-to-action .desc p {
  color: rgba(255, 255, 255, 0.88) !important;
  font-size: 16px;
  line-height: 1.7;
}

.path-frontpage .gsc-call-to-action .desc p:last-child,
.front .gsc-call-to-action .desc p:last-child {
  margin-bottom: 0;
}

.path-frontpage .gsc-call-to-action .button-action,
.front .gsc-call-to-action .button-action {
  flex: 0 0 auto;
}

.path-frontpage .gsc-call-to-action .button-action a,
.front .gsc-call-to-action .button-action a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 14px 24px;
  border: 0 !important;
  border-radius: 999px !important;
  color: #1f0a83 !important;
  background: #fff !important;
  box-shadow: 0 14px 30px rgba(6, 12, 38, 0.24);
  font-size: 13px;
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.path-frontpage .gsc-call-to-action .button-action a:after,
.front .gsc-call-to-action .button-action a:after {
  content: "\f178";
  margin-left: 10px;
  font-family: FontAwesome;
  font-weight: normal;
}

.path-frontpage .gsc-call-to-action .button-action a:hover,
.path-frontpage .gsc-call-to-action .button-action a:focus,
.front .gsc-call-to-action .button-action a:hover,
.front .gsc-call-to-action .button-action a:focus {
  transform: translateY(-2px);
  color: #fff !important;
  background: #0a7a86 !important;
  box-shadow: 0 18px 38px rgba(6, 12, 38, 0.3);
}

@media (max-width: 767px) {
  .path-frontpage .gsc-call-to-action,
  .front .gsc-call-to-action {
    padding: 34px 24px;
  }

  .path-frontpage .gsc-call-to-action .content-inner,
  .front .gsc-call-to-action .content-inner {
    display: block;
  }

  .path-frontpage .gsc-call-to-action .title,
  .front .gsc-call-to-action .title {
    font-size: 27px;
  }

  .path-frontpage .gsc-call-to-action .desc,
  .path-frontpage .gsc-call-to-action .desc p,
  .front .gsc-call-to-action .desc,
  .front .gsc-call-to-action .desc p {
    font-size: 15px;
  }

  .path-frontpage .gsc-call-to-action .button-action,
  .front .gsc-call-to-action .button-action {
    margin-top: 22px;
  }

  .path-frontpage .gsc-call-to-action .button-action a,
  .front .gsc-call-to-action .button-action a {
    width: 100%;
  }
}

/* ==========================================================================
   LPA — Bandeaux photo : voile sombre obligatoire sous le texte
   Audit §4.7 / §5 — WCAG 2.1 AA, critère 1.4.3 (contraste du texte).
   Tout texte posé sur une photo passe par la classe .lpa-hero-banner.
   ========================================================================== */
.lpa-hero-banner {
  position: relative;
}

.lpa-hero-banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(9, 14, 42, 0.78) 0%,
    rgba(9, 14, 42, 0.62) 50%,
    rgba(9, 14, 42, 0.80) 100%
  );
  pointer-events: none;
}

.lpa-hero-banner > * {
  position: relative;
  z-index: 1;
}

.lpa-hero-banner .gsc-heading .title,
.lpa-hero-banner .gsc-heading .title span,
.lpa-hero-banner .gsc-heading .sub-title,
.lpa-hero-banner .gsc-heading .title-desc,
.lpa-hero-banner .gsc-heading .title-desc p,
.lpa-hero-banner .gsc-column .title,
.lpa-hero-banner .gsc-column p {
  color: #ffffff;
}

.lpa-hero-banner .gsc-heading .heading-line {
  background: #ffffff;
}

.lpa-hero-banner .gsc-heading .title-desc {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
}

/* ==========================================================================
   LPA — Formulaires (Webform)
   Le thème affiche les libellés en ligne, ce qui donne des champs de largeurs
   différentes et un alignement cassé. On repasse en libellé au-dessus du champ,
   avec des champs pleine largeur.
   ========================================================================== */
.lpa-form-embed .form-item,
.webform-submission-form .form-item,
.lpa-form-embed .js-form-item ,
.webform-submission-form .js-form-item {
  display: block;
  margin-bottom: 20px;
}

.lpa-form-embed label,
.webform-submission-form label,
.lpa-form-embed .form-item label ,
.webform-submission-form .form-item label {
  display: block;
  width: auto;
  margin-bottom: 6px;
  font-size: 15px;
  font-weight: 600;
  color: #17233d;
}

.lpa-form-embed input[type="text"],
.webform-submission-form input[type="text"],
.lpa-form-embed input[type="email"],
.webform-submission-form input[type="email"],
.lpa-form-embed input[type="tel"],
.webform-submission-form input[type="tel"],
.lpa-form-embed select,
.webform-submission-form select,
.lpa-form-embed textarea ,
.webform-submission-form textarea {
  width: 100%;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid #cfd6e4;
  border-radius: 6px;
  font-size: 16px;
  background: #fff;
}

.lpa-form-embed textarea ,
.webform-submission-form textarea {
  min-height: 160px;
}

.lpa-form-embed input:focus,
.webform-submission-form input:focus,
.lpa-form-embed select:focus,
.webform-submission-form select:focus,
.lpa-form-embed textarea:focus ,
.webform-submission-form textarea:focus {
  border-color: #1f0a83;
  outline: 3px solid rgba(31, 10, 131, 0.22);
  outline-offset: 1px;
}

/* Indicateur de champ obligatoire, absent du thème. */
.lpa-form-embed label.form-required::after ,
.webform-submission-form label.form-required::after {
  content: " *";
  color: #b3261e;
  font-weight: 700;
}

.lpa-form-embed .description,
.webform-submission-form .description,
.lpa-form-embed .webform-element-description ,
.webform-submission-form .webform-element-description {
  margin-top: 4px;
  font-size: 14px;
  color: #5b6475;
}

.lpa-form-embed fieldset ,
.webform-submission-form fieldset {
  margin: 0 0 32px;
  padding: 0;
  border: 0;
}

.lpa-form-embed legend ,
.webform-submission-form legend {
  width: auto;
  margin-bottom: 16px;
  padding: 0 0 8px;
  border-bottom: 2px solid #e4e8ef;
  font-size: 20px;
  font-weight: 700;
  color: #1f0a83;
}

.lpa-form-embed .form-checkboxes .form-item,
.webform-submission-form .form-checkboxes .form-item,
.lpa-form-embed .form-radios .form-item ,
.webform-submission-form .form-radios .form-item {
  margin-bottom: 10px;
}

.lpa-form-embed .form-type-checkbox label,
.webform-submission-form .form-type-checkbox label,
.lpa-form-embed .form-type-radio label ,
.webform-submission-form .form-type-radio label {
  display: inline;
  font-weight: 400;
}

.lpa-form-embed input[type="checkbox"],
.webform-submission-form input[type="checkbox"],
.lpa-form-embed input[type="radio"] ,
.webform-submission-form input[type="radio"] {
  width: 20px;
  height: 20px;
  margin-right: 8px;
  vertical-align: -4px;
}

/* ==========================================================================
   LPA — Liste de contacts (page Contact)
   ========================================================================== */
.lpa-contact-list {
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}

.lpa-contact-list li {
  display: grid;
  grid-template-columns: 28px 1fr;
  align-items: start;
  gap: 4px 10px;
  padding: 12px 0;
  border-bottom: 1px solid #e4e8ef;
}

.lpa-contact-list li i {
  grid-row: span 2;
  margin-top: 4px;
  font-size: 18px;
  color: #0c6f7a;
}

.lpa-contact-list li a {
  font-size: 17px;
  font-weight: 600;
}

.lpa-contact-list li small {
  grid-column: 2;
  font-size: 14px;
  color: #5b6475;
}

/* Page de formulaire autonome : une colonne de saisie trop large nuit à la
   lecture et à la vitesse de remplissage. */
.webform-submission-form {
  max-width: 720px;
}

/* ==========================================================================
   LPA — Socle de design system
   Audit §4.1 / §5. La page d'accueil utilisait quatre bleus differents pour
   ses boutons, dont #4582ff qui est la couleur par defaut du theme Edmix et
   ne fait pas partie de la charte LPA. Les couleurs etaient posees une par une
   en style inline avec un identifiant genere (#button-xdyk6r34voeq), ce qui
   rendait toute harmonisation impossible.

   On definit ici des jetons, un bouton primaire et un bouton secondaire.
   Les couleurs d'accent ont ete assombries pour atteindre 4,5:1 sur blanc
   (WCAG 2.1 AA, critere 1.4.3) :
     turquoise #0f8f9c -> #0a7a86  (3,87:1 -> 5,07:1)
     bleu Edmix #4582ff -> supprime au profit du marine LPA (14,69:1)
   ========================================================================== */
:root {
  /* Couleurs de marque */
  --lpa-marine: #1f0a83;
  --lpa-marine-fonce: #160779;
  --lpa-turquoise: #0a7a86;
  --lpa-turquoise-fonce: #076570;
  --lpa-turquoise-clair: #eef8fa;

  /* Texte */
  --lpa-texte: #17233d;
  --lpa-texte-doux: #4a5568;
  --lpa-texte-discret: #5b6475;

  /* Surfaces */
  --lpa-fond: #ffffff;
  --lpa-fond-alt: #f6f9fc;
  --lpa-bordure: #e4e8ef;

  /* Rythme et formes */
  --lpa-rayon: 8px;
  --lpa-rayon-pill: 999px;
  --lpa-ombre: 0 10px 30px rgba(15, 23, 42, 0.10);
  --lpa-section-y: 64px;
  --lpa-section-y-mobile: 44px;

  /* Cible tactile minimale (WCAG 2.5.5) */
  --lpa-cible: 44px;
}

/* --------------------------------------------------------------------------
   Boutons — un primaire, un secondaire, rien d'autre.
   -------------------------------------------------------------------------- */
.btn-theme,
.gsc-button,
.lpa-btn,
.webform-submission-form .button--primary,
.gsc-call-to-action .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--lpa-cible);
  padding: 12px 26px;
  border: 2px solid var(--lpa-marine);
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-marine);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.btn-theme:hover,
.btn-theme:focus,
.gsc-button:hover,
.gsc-button:focus,
.lpa-btn:hover,
.lpa-btn:focus,
.webform-submission-form .button--primary:hover,
.webform-submission-form .button--primary:focus,
.gsc-call-to-action .btn:hover,
.gsc-call-to-action .btn:focus {
  background: var(--lpa-marine-fonce);
  border-color: var(--lpa-marine-fonce);
  color: #fff;
}

/* Bouton secondaire : contour marine sur fond clair. */
.lpa-btn--secondaire,
.gsc-button.lpa-domain-icon-button {
  background: transparent;
  border-color: var(--lpa-marine);
  color: var(--lpa-marine);
}

.lpa-btn--secondaire:hover,
.lpa-btn--secondaire:focus,
.gsc-button.lpa-domain-icon-button:hover,
.gsc-button.lpa-domain-icon-button:focus {
  background: var(--lpa-marine);
  color: #fff;
}

/* Le theme pose des couleurs en style inline par identifiant genere.
   On neutralise ces valeurs pour que le design system reprenne la main. */
[id^="button-"].gsc-button {
  background: var(--lpa-marine) !important;
  border-color: var(--lpa-marine) !important;
  color: #fff !important;
}

[id^="button-"].gsc-button:hover,
[id^="button-"].gsc-button:focus {
  background: var(--lpa-marine-fonce) !important;
  border-color: var(--lpa-marine-fonce) !important;
  color: #fff !important;
}

[id^="button-"].gsc-button.lpa-domain-icon-button {
  background: transparent !important;
  color: var(--lpa-marine) !important;
}

[id^="button-"].gsc-button.lpa-domain-icon-button:hover,
[id^="button-"].gsc-button.lpa-domain-icon-button:focus {
  background: var(--lpa-marine) !important;
  color: #fff !important;
}

/* Focus visible au clavier, absent du theme. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.gsc-button:focus-visible,
.btn-theme:focus-visible {
  outline: 3px solid var(--lpa-marine);
  outline-offset: 2px;
  border-radius: 4px;
}

/* --------------------------------------------------------------------------
   Contrastes — remplace le turquoise et le bleu du theme, sous le seuil AA.
   -------------------------------------------------------------------------- */
.text-theme,
.gsc-icon-box .icon i,
.gsc-icon-box .icon span,
a.text-theme {
  color: var(--lpa-turquoise) !important;
}

.event-block .date,
.event-block-2 .event-date {
  background: var(--lpa-turquoise) !important;
}

/* Liens du pied de page : #808080 sur #f3f4f8 ne donnait que 3,59:1. */
.footer a,
.footer .menu a,
.footer li a {
  color: var(--lpa-texte-discret);
}

.footer a:hover,
.footer a:focus {
  color: var(--lpa-marine);
  text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Typographie francaise — audit §4.2
   Le theme applique text-transform: capitalize a 11 endroits. En francais,
   cela produit « Sante Et Action Humanitaire » ou « Faire Un Don » :
   seule la premiere lettre prend la majuscule.
   -------------------------------------------------------------------------- */
body,
.breadcrumb,
.breadcrumbs,
.gsc-heading .title,
.gsc-heading .sub-title,
.gsc-icon-box .title,
.gsc-icon-box .title a,
.widget .block-title,
.node .title,
.node-title,
.post-title,
.event-content .title,
.gva-navigation .gva_menu > li > a,
.topbar .gva_topbar_menu a,
h1, h2, h3, h4, h5, h6 {
  text-transform: none;
}

/* Le menu principal reste en capitales : c'est un choix graphique assume,
   et les capitales integrales ne souffrent pas du probleme du title case. */
.gva-navigation .gva_menu_main > li > a {
  text-transform: uppercase;
}

/* --------------------------------------------------------------------------
   Lisibilite du corps de texte — audit §5 (critere 1.4.4)
   Les cartes et les boutons descendaient a 12-13 px.
   -------------------------------------------------------------------------- */
.gsc-icon-box .content,
.gsc-icon-box .desc,
.event-content .body,
.node__content,
.widget .content {
  font-size: 16px;
  line-height: 1.65;
}

/* --------------------------------------------------------------------------
   Cibles tactiles — audit §6 (critere 2.5.5)
   Icones sociales 32x19, « Connexion » 34x15, entrees de menu 310x32.
   -------------------------------------------------------------------------- */
.topbar .social-list a,
.topbar .gva_topbar_menu a,
.footer .social-list a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--lpa-cible);
  min-height: var(--lpa-cible);
  padding: 0 10px;
}

@media (max-width: 991px) {
  .gva-offcanvas-mobile .gva_menu > li > a,
  .gva-offcanvas-mobile .gva_menu li a {
    display: flex;
    align-items: center;
    min-height: var(--lpa-cible);
    padding-top: 10px;
    padding-bottom: 10px;
  }
}

/* ==========================================================================
   LPA — Rythme vertical et equilibre des colonnes
   Audit §4.3. Les grands vides ne venaient pas des marges entre sections mais
   de colonnes de hauteurs tres differentes : la colonne courte laissait
   jusqu'a 300 px de blanc a cote de la colonne longue.
   ========================================================================== */
.lpa-about-home-section .row-wrapper {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
}

.lpa-about-home-section .gsc-column {
  display: flex;
}

.lpa-about-home-section .gsc-column > .column-inner {
  display: flex;
  width: 100%;
}

.lpa-about-home-section .gsc-column > .column-inner > .column-content-inner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 16px;
  width: 100%;
}

/* Le titre de section occupe toute la largeur, il ne doit pas s'etirer. */
.lpa-about-home-section .gsc-column:first-child > .column-inner > .column-content-inner {
  display: block;
}

/* Les trois encarts de valeurs se repartissent sur la hauteur de la photo. */
.lpa-about-home-section .lpa-highlight-item,
.lpa-about-home-section .gsc-icon-box {
  margin-bottom: 0;
}

@media (max-width: 991px) {
  .lpa-about-home-section .row-wrapper {
    display: block;
  }
}

/* Marges de section homogenes, en s'appuyant sur les jetons. */
.gbb-row .bb-inner {
  padding-top: 0;
  padding-bottom: 0;
}

@media (max-width: 767px) {
  .gbb-row[style*="padding-top"] {
    padding-top: var(--lpa-section-y-mobile) !important;
    padding-bottom: var(--lpa-section-y-mobile) !important;
  }
}

/* ==========================================================================
   LPA — Titres de bloc : trait decoratif
   Audit §4.5. Le trait sous « Agenda LPA » restait colle a gauche alors que le
   titre etait centre : .block .block-title:after est en position absolue avec
   left: 0, sans tenir compte de l'alignement. Il etait aussi au bleu Edmix.
   ========================================================================== */
.block .block-title:after,
.block .block-title:before {
  background: var(--lpa-turquoise);
}

.title-align-center .block-title:after,
.title-align-center .block-title:before {
  left: 50%;
  transform: translateX(-50%);
}

.title-align-right .block-title:after,
.title-align-right .block-title:before {
  right: 0;
  left: auto;
}

/* Le trait des titres de section suit la meme couleur de marque. */
.gsc-heading .heading-line {
  background: var(--lpa-turquoise);
}

.lpa-hero-banner .gsc-heading .heading-line {
  background: #ffffff;
}

/* Filet de securite sur les accroches : ecretage propre a trois lignes avec
   points de suspension, plutot qu'une coupe brutale en plein mot. */
.lpa-events-carousel .event-info .body,
.event-block .event-content .event-info .body {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ==========================================================================
   LPA — Carrousel d'accueil
   Audit §4.7 / §5. Le message etait pose en blanc sur une photo de ciel clair
   et illisible, le bouton d'action etait un contour blanc sur fond clair, et
   le carrousel defilait toutes les 9 s sans aucun controle (WCAG 2.2.2).
   ========================================================================== */
.rev_slider_wrapper,
.gavias_sliderlayer {
  position: relative;
}

/* Voile degrade pose sur l'image de fond de chaque diapositive.
   Il doit etre applique a .tp-bgimg et non au conteneur : l'image porte un
   z-index de 20, un voile pose sur le conteneur passait donc dessous. */
.rev_slider_wrapper .tp-bgimg::after,
.gavias_sliderlayer .tp-bgimg::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(
    100deg,
    rgba(9, 14, 42, 0.80) 0%,
    rgba(9, 14, 42, 0.58) 40%,
    rgba(9, 14, 42, 0.20) 70%,
    rgba(9, 14, 42, 0.08) 100%
  );
}

.rev_slider_wrapper .tp-caption,
.gavias_sliderlayer .tp-caption {
  z-index: 6;
}

/* Le fond sombre du titre faisait surligneur : le voile general suffit. */
.tp-caption.largeblackbg,
.tp-caption.lpa-slide-title {
  background: transparent !important;
  padding: 0 !important;
  text-shadow: 0 2px 18px rgba(9, 14, 42, 0.55);
}

.tp-caption.backcorner,
.tp-caption.lpa-slide-desc {
  background: transparent !important;
  text-shadow: 0 2px 14px rgba(9, 14, 42, 0.65);
}

/* Bouton d'action du carrousel : plein, pas fantome. */
.gavias_sliderlayer .tp-caption.lpa-slide-button a,
#gavias_slider_single .tp-caption.lpa-slide-button a,
.tp-caption.btn-slide-line a,
.tp-caption.lpa-slide-button,
.tp-caption.btn-slide-line {
  min-height: var(--lpa-cible);
  padding: 13px 30px;
  border: 2px solid #fff;
  border-radius: var(--lpa-rayon-pill);
  background: #fff;
  color: var(--lpa-marine);
  font-weight: 700;
  letter-spacing: 0.05em;
}

.gavias_sliderlayer .tp-caption.lpa-slide-button a:hover,
.gavias_sliderlayer .tp-caption.lpa-slide-button a:focus,
.tp-caption.btn-slide-line a:hover,
.tp-caption.btn-slide-line a:focus,
.tp-caption.lpa-slide-button:hover,
.tp-caption.lpa-slide-button:focus-within,
.tp-caption.btn-slide-line:hover {
  background: var(--lpa-marine);
  border-color: #fff;
  color: #fff;
}

/* Bouton pause / lecture. */
.lpa-carrousel-pause {
  position: absolute;
  right: 18px;
  bottom: 18px;
  z-index: 20;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--lpa-cible);
  padding: 0 16px;
  border: 2px solid rgba(255, 255, 255, 0.85);
  border-radius: var(--lpa-rayon-pill);
  background: rgba(9, 14, 42, 0.72);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.lpa-carrousel-pause:hover,
.lpa-carrousel-pause:focus-visible {
  background: var(--lpa-marine);
  border-color: #fff;
}

.lpa-carrousel-pause__icone {
  width: 12px;
  height: 14px;
  border-left: 4px solid currentColor;
  border-right: 4px solid currentColor;
}

.lpa-carrousel-pause.est-en-pause .lpa-carrousel-pause__icone {
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 12px solid currentColor;
  border-right: 0;
}

.lpa-carrousel-fige * {
  animation-play-state: paused !important;
  transition: none !important;
}

@media (max-width: 767px) {
  .lpa-carrousel-pause__texte {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .lpa-carrousel-pause {
    padding: 0;
    justify-content: center;
    width: var(--lpa-cible);
  }
}

/* Le bouton du carrousel peut etre le .tp-caption lui-meme ou contenir un
   lien : le texte interieur doit suivre la couleur du bouton, sans quoi on
   obtient une pastille blanche au texte blanc. */
.tp-caption.lpa-slide-button,
.tp-caption.btn-slide-line,
.tp-caption.lpa-slide-cta {
  color: var(--lpa-marine) !important;
}

.tp-caption.lpa-slide-button a,
.tp-caption.btn-slide-line a,
.tp-caption.lpa-slide-cta a {
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  color: inherit !important;
  min-height: 0 !important;
}

.tp-caption.lpa-slide-button:hover,
.tp-caption.lpa-slide-button:focus-within,
.tp-caption.btn-slide-line:hover,
.tp-caption.lpa-slide-cta:hover,
.tp-caption.lpa-slide-cta:focus-within {
  color: #ffffff !important;
}

/* ==========================================================================
   LPA — Mobile
   Audit §6. Le titre du carrousel depassait du bord droit de l'ecran (780 px
   de large pour un viewport de 390 px) et les titres de cartes, seuls elements
   cliquables, ne faisaient que 21 px de haut.
   ========================================================================== */
@media (max-width: 767px) {
  /* Le carrousel pose des styles en ligne contradictoires
     (min-width: 260px et max-width: 110px) et laisse le titre s'etaler sur
     780 px dans un viewport de 390 px. On force un bloc a largeur contrainte. */
  .tp-caption.lpa-slide-title,
  .tp-caption.largeblackbg,
  .tp-caption.lpa-slide-desc,
  .tp-caption.backcorner,
  .tp-mask-wrap > .tp-caption {
    display: block !important;
    width: calc(100vw - 40px) !important;
    min-width: 0 !important;
    max-width: calc(100vw - 40px) !important;
    white-space: normal !important;
    word-break: normal;
    overflow-wrap: break-word;
  }

  .tp-mask-wrap,
  .tp-parallax-wrap {
    max-width: calc(100vw - 40px) !important;
    overflow: visible !important;
  }

  .tp-caption.lpa-slide-title,
  .tp-caption.largeblackbg {
    font-size: 26px !important;
    line-height: 1.22 !important;
  }

  .tp-caption.lpa-slide-desc,
  .tp-caption.backcorner {
    font-size: 16px !important;
    line-height: 1.5 !important;
  }
}

/* Carte entierement cliquable : le titre seul faisait 21 px de haut, bien en
   dessous de la cible minimale. On etend la zone active a toute la carte
   (WCAG 2.5.8). */
.gsc-icon-box,
.event-block,
.lpa-highlight-item {
  position: relative;
}

.gsc-icon-box .title a::after,
.event-block .event-content .title a::after,
.lpa-highlight-item .title a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Les liens reellement presents dans la carte restent accessibles au-dessus
   de cette zone. */
.gsc-icon-box a:not(.title a),
.event-block a:not(.title a) {
  position: relative;
  z-index: 2;
}

/* ==========================================================================
   LPA — Bandeau d'accueil statique pour les petits ecrans
   Audit §6. Remplace le carrousel sous 768 px : message complet, lisible,
   sans JavaScript ni superposition de couches.
   ========================================================================== */
/* Sur grand ecran, le bandeau mobile disparait visuellement mais son titre
   reste dans l'arbre d'accessibilite : le document conserve ainsi un h1 unique,
   visible sur telephone et annonce aux lecteurs d'ecran sur ordinateur. */
.lpa-hero-mobile {
  padding: 0;
  margin: 0;
  border: 0;
}

.lpa-hero-mobile__media,
.lpa-hero-mobile p,
.lpa-hero-mobile__actions {
  display: none;
}

.lpa-hero-mobile h1 {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 767px) {
  .lpa-hero-mobile__media,
  .lpa-hero-mobile p,
  .lpa-hero-mobile__actions {
    display: block;
  }

  .lpa-hero-mobile__actions {
    display: flex;
  }

  .lpa-hero-mobile h1 {
    position: static;
    width: auto;
    height: auto;
    margin: 0 0 14px;
    overflow: visible;
    clip: auto;
    white-space: normal;
  }
}

@media (max-width: 767px) {
  .lpa-hero-mobile {
    position: relative;
    display: block;
    min-height: 420px;
    overflow: hidden;
  }

  .lpa-hero-mobile__media {
    position: absolute;
    inset: 0;
    background-image: url("/sites/default/files/lpa/home-banners/lpa-home-banner-vision-unite.webp");
    background-size: cover;
    background-position: 62% center;
  }

  .lpa-hero-mobile__media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
      180deg,
      rgba(9, 14, 42, 0.68) 0%,
      rgba(9, 14, 42, 0.78) 60%,
      rgba(9, 14, 42, 0.88) 100%
    );
  }

  .lpa-hero-mobile__contenu {
    position: relative;
    z-index: 1;
    padding: 46px 22px 40px;
    color: #fff;
  }

  .lpa-hero-mobile h1 {
    margin: 0 0 14px;
    color: #fff;
    font-size: 27px;
    line-height: 1.22;
    font-weight: 800;
  }

  .lpa-hero-mobile p {
    margin: 0 0 24px;
    color: rgba(255, 255, 255, 0.92);
    font-size: 16px;
    line-height: 1.55;
  }

  .lpa-hero-mobile__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
  }

  .lpa-hero-mobile .lpa-btn {
    flex: 1 1 auto;
    background: #fff;
    border-color: #fff;
    color: var(--lpa-marine);
  }

  .lpa-hero-mobile .lpa-btn--inverse {
    background: transparent;
    border-color: #fff;
    color: #fff;
  }

  /* Le carrousel n'est plus affiche sous 768 px. */
  .slideshow_content,
  .rev_slider_wrapper,
  .gavias_sliderlayer {
    display: none !important;
  }
}

/* Rappel de l'appel au don dans le pied de page (audit §7.6). */
.lpa-footer-don {
  margin-top: 26px;
  padding: 20px;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: #ffffff;
}

.lpa-footer-don__titre {
  margin: 0 0 8px;
  color: var(--lpa-marine);
  font-size: 16px;
  font-weight: 700;
}

.lpa-footer-don p {
  margin: 0 0 14px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--lpa-texte-discret);
}

.lpa-footer-don__cta {
  width: 100%;
}

/* Reste de text-transform: capitalize (audit §4.2).
   Selecteurs manques au premier passage : titres des encarts a icone
   (.highlight_content .title) et fil d'Ariane. En francais, seule la premiere
   lettre prend la majuscule. */
.highlight_content .title,
.highlight_content .title a,
.gsc-icon-box .highlight_content .title,
.breadcrumb li,
.breadcrumb li a,
.breadcrumb-links li,
.breadcrumb-links li a,
.widget.gsc-team .team-position,
.portfolio-item .portfolio-content .title a,
.portfolio-item .image .read-more a {
  text-transform: none !important;
}

/* ==========================================================================
   LPA — Tableaux de contenu
   Le thème ne stylait pas les tableaux insérés dans les pages.
   ========================================================================== */
.lpa-table {
  width: 100%;
  margin: 0 0 20px;
  border-collapse: collapse;
  font-size: 15px;
}

.lpa-table caption {
  margin-bottom: 10px;
  color: var(--lpa-texte-discret);
  font-size: 14px;
  text-align: left;
}

.lpa-table th,
.lpa-table td {
  padding: 12px 14px;
  border-bottom: 1px solid var(--lpa-bordure);
  text-align: left;
  vertical-align: top;
}

.lpa-table thead th {
  border-bottom: 2px solid var(--lpa-marine);
  color: var(--lpa-marine);
  font-weight: 700;
}

.lpa-table tbody tr:last-child td {
  border-bottom: 0;
}

.lpa-table td:last-child,
.lpa-table th:last-child {
  width: 22%;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 575px) {
  .lpa-table,
  .lpa-table thead,
  .lpa-table tbody,
  .lpa-table tr,
  .lpa-table th,
  .lpa-table td {
    display: block;
  }

  .lpa-table thead {
    display: none;
  }

  .lpa-table tr {
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--lpa-bordure);
  }

  .lpa-table td {
    padding: 4px 0;
    border: 0;
  }

  .lpa-table td:last-child {
    width: auto;
    font-weight: 700;
    color: var(--lpa-marine);
  }
}

/* Frise chronologique et onglets : couleurs de marque. */
.gsc-workprocess .entry-timeline .icon span,
.lpa-frise .icon span {
  color: var(--lpa-turquoise);
}

.lpa-onglets .nav-tabs > li.active > a,
.lpa-onglets .nav-tabs > li > a:hover {
  border-color: var(--lpa-marine);
  color: var(--lpa-marine);
}

/* Chiffres clés. */
.lpa-chiffres-cles .gsc-counter .number,
.lpa-chiffres-cles .counter-number {
  color: var(--lpa-marine);
  font-weight: 800;
}

/* Bandeau d'appel a l'action : le lien du bouton n'a aucune classe dans le
   gabarit du theme, il s'affichait donc en texte simple. */
.gsc-call-to-action .button-action a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--lpa-cible);
  padding: 12px 26px;
  border: 2px solid var(--lpa-marine);
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-marine);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.18s ease, border-color 0.18s ease;
}

.gsc-call-to-action .button-action a:hover,
.gsc-call-to-action .button-action a:focus {
  background: var(--lpa-marine-fonce);
  border-color: var(--lpa-marine-fonce);
  color: #fff;
}

.gsc-call-to-action .content-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 20px;
  padding: 28px 30px;
}

.gsc-call-to-action .content {
  flex: 1 1 320px;
}

.gsc-call-to-action .title {
  margin: 0 0 8px;
  font-size: 22px;
}

.gsc-call-to-action .desc p {
  margin: 0;
  color: var(--lpa-texte-discret);
}

@media (max-width: 575px) {
  .gsc-call-to-action .button-action,
  .gsc-call-to-action .button-action a {
    width: 100%;
  }
}

/* ==========================================================================
   LPA — Sélecteur de langue
   Le site est bilingue français / anglais : sans sélecteur, les pages
   anglaises ne sont atteignables qu'en tapant l'URL. La barre supérieure du
   thème ne contient aucune région, les liens sont donc construits dans
   gavias_edmix_preprocess_page() et affichés par topbar.html.twig.
   ========================================================================== */
.lpa-langues {
  display: inline-flex;
  margin-right: 12px;
  vertical-align: middle;
}

.lpa-langues ul {
  display: flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-langues li {
  margin: 0;
  padding: 0;
}

.lpa-langues a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--lpa-cible);
  min-height: 34px;
  padding: 0 10px;
  border: 1px solid rgba(255, 255, 255, 0.30);
  border-radius: var(--lpa-rayon);
  color: rgba(255, 255, 255, 0.88);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
}

.lpa-langues a:hover,
.lpa-langues a:focus {
  border-color: #fff;
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
}

.lpa-langues a.est-active {
  border-color: #fff;
  background: #fff;
  color: var(--lpa-marine);
}

.topbar-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

@media (max-width: 767px) {
  .topbar-right {
    flex-wrap: wrap;
    justify-content: flex-start;
  }
}

/* ==========================================================================
   LPA — Onglets et frise chronologique
   Le thème ne donnait aucune forme visible aux onglets : les trois journées du
   programme apparaissaient comme trois liens flottants.
   ========================================================================== */
.lpa-onglets .nav-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 22px;
  padding: 0;
  border-bottom: 2px solid var(--lpa-bordure);
  list-style: none;
}

.lpa-onglets .nav-tabs > li {
  margin: 0 0 -2px;
}

.lpa-onglets .nav-tabs > li > a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--lpa-cible);
  padding: 10px 18px;
  border: 0;
  border-bottom: 3px solid transparent;
  border-radius: 0;
  background: transparent;
  color: var(--lpa-texte-doux);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}

.lpa-onglets .nav-tabs > li > a:hover,
.lpa-onglets .nav-tabs > li > a:focus {
  background: var(--lpa-turquoise-clair);
  color: var(--lpa-marine);
}

.lpa-onglets .nav-tabs > li.active > a,
.lpa-onglets .nav-tabs > li > a.active {
  border-bottom-color: var(--lpa-marine);
  background: transparent;
  color: var(--lpa-marine);
}

.lpa-onglets .tab-content {
  padding: 4px 0;
}

.lpa-onglets .tab-content p {
  margin-bottom: 12px;
  line-height: 1.7;
}

/* ==========================================================================
   LPA — Frise chronologique
   Le thème dispose les étapes en deux colonnes alternées
   (.service-timeline > li:nth-child(2n+1) .hentry { float: right }), ce qui
   laisse de grands vides quand les textes sont courts et rend la lecture
   chronologique difficile. On repasse en une seule colonne.
   Structure : li.entry-timeline > .hentry > (.icon + .hentry-box)
   ========================================================================== */
.lpa-frise {
  position: relative;
}

.lpa-frise .service-timeline {
  position: relative;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-frise .service-timeline::before {
  content: "";
  position: absolute;
  top: 22px;
  bottom: 22px;
  left: 20px;
  width: 2px;
  background: var(--lpa-bordure);
}

.lpa-frise .entry-timeline {
  width: 100% !important;
  margin: 0 0 14px !important;
  padding: 0 !important;
  float: none !important;
  clear: both !important;
  text-align: left !important;
}

.lpa-frise .entry-timeline:last-child {
  margin-bottom: 0 !important;
}

.lpa-frise .service-timeline > li .hentry,
.lpa-frise .service-timeline > li:nth-child(2n+1) .hentry,
.lpa-frise .service-timeline > li:nth-child(2n) .hentry {
  position: relative;
  width: 100% !important;
  max-width: 680px;
  min-height: 42px;
  margin: 0 !important;
  padding: 0 0 0 60px !important;
  float: none !important;
  clear: none !important;
  text-align: left !important;
  opacity: 1 !important;
}

.lpa-frise .entry-timeline .icon {
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  margin: 0 !important;
  padding: 0 !important;
  border: 2px solid var(--lpa-turquoise);
  border-radius: 50%;
  background: #ffffff;
}

.lpa-frise .entry-timeline .icon span {
  color: var(--lpa-turquoise);
  font-size: 16px;
  line-height: 1;
}

.lpa-frise .entry-timeline .hentry-box {
  width: 100%;
  margin: 0 !important;
  padding: 12px 18px;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: #ffffff;
}

.lpa-frise .entry-timeline .hentry-box::before,
.lpa-frise .entry-timeline .hentry-box::after {
  content: none !important;
}

.lpa-frise .entry-timeline .title {
  margin: 0 0 4px;
  color: var(--lpa-marine);
  font-size: 16px;
  font-weight: 700;
  text-transform: none;
}

.lpa-frise .entry-timeline .content p {
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 15px;
  line-height: 1.6;
}

@media (max-width: 575px) {
  .lpa-frise .service-timeline > li .hentry {
    padding-left: 52px !important;
  }

  .lpa-frise .entry-timeline .icon {
    width: 36px;
    height: 36px;
  }

  .lpa-frise .service-timeline::before {
    left: 17px;
  }
}


/* Contrastes restants releves au controle final (WCAG 1.4.3).
   - Citation : le theme la rend en #999 sur blanc, soit 2,85:1.
   - Bouton de don du pied de page : la regle generique .footer a lui imposait
     la couleur de texte discrete sur fond marine, soit 2,47:1. */
.gsc-quote-text,
.gsc-quote-text p,
.lpa-citation,
.lpa-citation p {
  color: var(--lpa-texte-doux);
}

.lpa-citation em,
.gsc-quote-text em {
  color: var(--lpa-texte-discret);
}

.footer .lpa-footer-don__cta,
.footer a.lpa-btn,
.footer .lpa-btn {
  color: #ffffff;
}

.footer .lpa-footer-don__cta:hover,
.footer .lpa-footer-don__cta:focus,
.footer a.lpa-btn:hover,
.footer a.lpa-btn:focus {
  color: #ffffff;
  text-decoration: none;
}

/* Pastille de date des evenements : le turquoise de marque donne 4,14:1 avec
   du blanc a 10 px. On assombrit cette pastille precise pour atteindre le
   seuil AA sans toucher a la couleur de marque ailleurs. */
.event-block .date,
.event-block-2 .event-date,
.lpa-events-carousel .event-block .date {
  background: #06666e !important;
}

/* Sur la page de listing des evenements, le texte de la pastille de date
   restait noir sur le fond turquoise fonce (3,13:1). */
.event-block .date,
.event-block .date *,
.event-block-2 .event-date,
.event-block-2 .event-date * {
  color: #ffffff !important;
}

/* ==========================================================================
   LPA — Couleur des liens de contenu
   Le bleu #4582ff du theme Edmix ne fait pas partie de la charte LPA et ne
   donne que 3,57:1 sur blanc (seuil AA : 4,5:1). On le remplace la ou il est
   utilise comme couleur de lien, sans toucher aux boutons, qui ont leur
   propre couleur de texte.
   ========================================================================== */
.node__content a:not(.lpa-btn):not(.gsc-button):not(.btn-theme),
.gsc-column a:not(.lpa-btn):not(.gsc-button):not(.btn-theme),
.block-content a:not(.lpa-btn):not(.gsc-button):not(.btn-theme),
.page-notfound .action a,
.action a,
.read-more a,
.more-link a,
.widget .content a:not(.lpa-btn):not(.gsc-button) {
  color: var(--lpa-marine);
}

.action a,
.read-more a,
.more-link a {
  font-weight: 700;
}

.node__content a:hover,
.gsc-column a:hover,
.action a:hover,
.read-more a:hover,
.more-link a:hover {
  color: var(--lpa-marine-fonce);
}

/* Les liens poses sur fond sombre, photo ou bouton colore gardent leur
   couleur propre. */
.lpa-hero-banner a,
.lpa-hero-banner .gsc-column a,
.footer .lpa-footer-don__cta,
.tp-caption a {
  color: inherit;
}

/* Boutons du bandeau d'accueil mobile : couleurs explicites, pour qu'ils ne
   heritent pas de la couleur de texte du conteneur. */
.lpa-hero-mobile .lpa-btn {
  background: #ffffff;
  border-color: #ffffff;
  color: var(--lpa-marine);
}

.lpa-hero-mobile .lpa-btn--inverse {
  background: transparent;
  border-color: #ffffff;
  color: #ffffff;
}

/* Le bouton de l'element « image + contenu » est pose sur un degrade marine :
   son texte doit rester blanc. */
.gsc-image-content .action a,
.gsc-image-content .content .action a {
  color: #ffffff !important;
  font-weight: 700;
}

/* Bouton du bandeau d'appel a l'action : texte blanc sur le marine. */
.gsc-call-to-action .button-action a,
.gsc-call-to-action .button-action a.btn-theme {
  color: #ffffff !important;
}

/* ==========================================================================
   LPA — Grille des domaines d'action
   L'ancienne page sortait une liste verticale sans mise en forme, avec des
   images qui se chevauchaient et une puce parasite « En savoir plus ».
   ========================================================================== */
.lpa-grille-domaines .view-content-wrap,
.lpa-grille-domaines .view-content,
.lpa-grille-domaines .views-view-grid,
.lpa-grille-domaines .item-list > ul {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 22px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-grille-domaines .lpa-grille__element,
.lpa-grille-domaines .item-list > ul > li,
.lpa-grille-domaines .views-row {
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-grille-domaines .lpa-grille__element::before,
.lpa-grille-domaines .item-list > ul > li::before,
.lpa-grille-domaines .views-row::before {
  content: none;
}

.lpa-carte-domaine {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: #ffffff;
  transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.lpa-carte-domaine:hover,
.lpa-carte-domaine:focus-within {
  transform: translateY(-3px);
  border-color: rgba(31, 10, 131, 0.28);
  box-shadow: var(--lpa-ombre);
}

/* Toute la carte est cliquable : le titre seul faisait une cible de 21 px. */
.lpa-carte-domaine__lien {
  position: absolute;
  inset: 0;
  z-index: 2;
}

.lpa-carte-domaine__image {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--lpa-turquoise-clair);
}

.lpa-carte-domaine__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.lpa-carte-domaine:hover .lpa-carte-domaine__image img {
  transform: scale(1.04);
}

.lpa-carte-domaine__contenu {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: 8px;
  padding: 18px 18px 16px;
}

.lpa-carte-domaine__titre {
  margin: 0;
  color: var(--lpa-marine);
  font-size: 17px;
  line-height: 1.3;
  font-weight: 700;
  text-transform: none;
}

.lpa-carte-domaine__accroche {
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 14px;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.lpa-carte-domaine__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: auto 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--lpa-bordure);
  font-size: 13px;
}

.lpa-carte-domaine__compte {
  color: var(--lpa-turquoise-fonce);
  font-weight: 700;
}

.lpa-carte-domaine__action {
  color: var(--lpa-marine);
  font-weight: 700;
}

.lpa-carte-domaine__action::after {
  content: " →";
}

@media (max-width: 1199px) {
  .lpa-grille-domaines .view-content-wrap,
  .lpa-grille-domaines .item-list > ul {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  .lpa-grille-domaines .view-content-wrap,
  .lpa-grille-domaines .item-list > ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  .lpa-carte-domaine__contenu {
    padding: 14px;
  }

  .lpa-carte-domaine__accroche {
    -webkit-line-clamp: 3;
    font-size: 13px;
  }
}

@media (max-width: 420px) {
  .lpa-grille-domaines .view-content-wrap,
  .lpa-grille-domaines .item-list > ul {
    grid-template-columns: 1fr;
  }
}

/* ==========================================================================
   LPA — Galerie médias
   L'ancienne page empilait les images à gauche, sans grille ni visionneuse :
   le lightGallery embarqué par le thème ne se déclenchait jamais, faute de la
   structure `.image-item > a.zoomGallery` qu'il attend.
   ========================================================================== */
.lpa-galerie .view-content-wrap {
  display: flex;
  flex-direction: column;
  gap: 52px;
}

.lpa-album {
  margin: 0;
}

.lpa-album__entete {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 14px;
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--lpa-bordure);
}

.lpa-album__titre {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  text-transform: none;
}

.lpa-album__titre a {
  color: var(--lpa-marine);
  text-decoration: none;
}

.lpa-album__titre a:hover,
.lpa-album__titre a:focus {
  text-decoration: underline;
}

.lpa-album__accroche {
  flex: 1 1 260px;
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 15px;
}

.lpa-album__compte {
  margin: 0;
  padding: 3px 10px;
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-turquoise-clair);
  color: var(--lpa-turquoise-fonce);
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

.lpa-album__grille {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 14px;
}

.lpa-album .image-item {
  margin: 0;
}

.lpa-album .image-item a {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: var(--lpa-rayon);
  background: var(--lpa-turquoise-clair);
}

.lpa-album .image-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}

.lpa-album .image-item a:hover img,
.lpa-album .image-item a:focus-visible img {
  transform: scale(1.05);
}

/* Indice d'agrandissement : sans lui, rien ne signale que l'image est
   cliquable. */
.lpa-album__loupe {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(9, 14, 42, 0.42);
  color: #ffffff;
  font-size: 22px;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.lpa-album .image-item a:hover .lpa-album__loupe,
.lpa-album .image-item a:focus-visible .lpa-album__loupe {
  opacity: 1;
}

.lpa-album .image-item a:focus-visible {
  outline: 3px solid var(--lpa-marine);
  outline-offset: 3px;
}

@media (max-width: 575px) {
  .lpa-album__grille {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .lpa-album__titre {
    font-size: 19px;
  }
}

/* ==========================================================================
   LPA — Fenêtre modale d'annonce de l'événement (page d'accueil)
   L'annonce occupait auparavant un bandeau inséré dans le flux de la page.
   Elle est désormais présentée en modale, refermable, pour laisser l'accueil
   pleinement accessible ensuite.
   ========================================================================== */
.lpa-modale-evenement {
  width: min(880px, calc(100vw - 32px));
  max-width: none;
  max-height: calc(100vh - 48px);
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: 14px;
  background: #ffffff;
  box-shadow: 0 30px 80px rgba(9, 14, 42, 0.38);
  color: var(--lpa-texte);
}

.lpa-modale-evenement::backdrop {
  background: rgba(9, 14, 42, 0.72);
  backdrop-filter: blur(2px);
}

.lpa-modale-evenement[open] {
  animation: lpa-modale-entree 0.28s ease-out;
}

@keyframes lpa-modale-entree {
  from { opacity: 0; transform: translateY(12px) scale(0.985); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .lpa-modale-evenement[open] {
    animation: none;
  }
}

.lpa-modale-evenement__cadre {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
  max-height: calc(100vh - 48px);
}

.lpa-modale-evenement__visuel {
  overflow: hidden;
  background: var(--lpa-marine);
}

/* L'affiche officielle est montrée en entier : la rogner couperait le titre
   de l'événement et les mentions de date et de lieu qu'elle porte. */
.lpa-modale-evenement__visuel img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

.lpa-modale-evenement__contenu {
  overflow-y: auto;
  padding: 34px 34px 30px;
}

.lpa-modale-evenement__surtitre {
  margin: 0 0 10px;
  color: var(--lpa-turquoise-fonce);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.lpa-modale-evenement__titre {
  margin: 0 0 8px;
  color: var(--lpa-marine);
  font-size: 27px;
  line-height: 1.2;
  font-weight: 800;
  text-transform: none;
}

.lpa-modale-evenement__soustitre {
  margin: 0 0 20px;
  color: var(--lpa-texte-doux);
  font-size: 16px;
  line-height: 1.5;
}

.lpa-modale-evenement__infos {
  display: grid;
  gap: 12px;
  margin: 0 0 18px;
  padding: 16px 0;
  border-top: 1px solid var(--lpa-bordure);
  border-bottom: 1px solid var(--lpa-bordure);
}

.lpa-modale-evenement__infos > div {
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
}

.lpa-modale-evenement__infos dt {
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.lpa-modale-evenement__infos dd {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  color: var(--lpa-texte);
}

.lpa-modale-evenement__slogan {
  margin: 0 0 22px;
  color: var(--lpa-marine);
  font-size: 17px;
  font-style: italic;
}

.lpa-modale-evenement__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.lpa-modale-evenement__cta {
  flex: 0 1 auto;
}

.lpa-modale-evenement__continuer {
  min-height: var(--lpa-cible);
  padding: 10px 6px;
  border: 0;
  background: none;
  color: var(--lpa-texte-discret);
  font-size: 14px;
  font-weight: 600;
  text-decoration: underline;
  cursor: pointer;
}

.lpa-modale-evenement__continuer:hover,
.lpa-modale-evenement__continuer:focus-visible {
  color: var(--lpa-marine);
}

.lpa-modale-evenement__fermer {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--lpa-cible);
  height: var(--lpa-cible);
  border: 0;
  border-radius: 50%;
  background: rgba(9, 14, 42, 0.62);
  color: #ffffff;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
  transition: background-color 0.18s ease;
}

.lpa-modale-evenement__fermer:hover,
.lpa-modale-evenement__fermer:focus-visible {
  background: var(--lpa-marine);
}

/* Empêche le défilement de la page derrière la modale. */
body.lpa-modale-ouverte {
  overflow: hidden;
}

@media (max-width: 767px) {
  .lpa-modale-evenement {
    width: calc(100vw - 20px);
    max-height: calc(100vh - 24px);
  }

  .lpa-modale-evenement__cadre {
    grid-template-columns: 1fr;
    max-height: calc(100vh - 24px);
    overflow-y: auto;
  }

  .lpa-modale-evenement__visuel {
    max-height: 32vh;
  }

  .lpa-modale-evenement__contenu {
    overflow: visible;
    padding: 22px 20px 26px;
  }

  .lpa-modale-evenement__titre {
    font-size: 22px;
  }

  .lpa-modale-evenement__infos > div {
    grid-template-columns: 1fr;
    gap: 2px;
  }

  .lpa-modale-evenement__actions {
    flex-direction: column;
    align-items: stretch;
  }

  .lpa-modale-evenement__cta {
    width: 100%;
  }
}

/* Repli sans <dialog> : la modale reste un bandeau lisible en tête de page. */
.lpa-modale-evenement:not([open]) {
  display: none;
}

/* Frise : le thème décale encore l'icône des étapes paires
   (.service-timeline > li:nth-child(2n) .icon). On l'aligne sur la ligne. */
.lpa-frise .service-timeline > li .icon,
.lpa-frise .service-timeline > li:nth-child(2n) .icon,
.lpa-frise .service-timeline > li:nth-child(2n+1) .icon {
  left: 0 !important;
  right: auto !important;
  margin: 0 !important;
}

/* ==========================================================================
   LPA — Pages de détail (domaine, projet, événement, organe, album)
   Remplacent le rendu par défaut de Drupal : libellés de champs bruts, champ
   interne « Ordre d'affichage » visible, titre en double, carte Google en
   erreur, HTML échappé.
   ========================================================================== */
.lpa-fiche__intro {
  padding: 56px 0 48px;
}

.lpa-fiche__section {
  padding: 56px 0;
}

.lpa-fiche__intro-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}

.lpa-fiche__projet-grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 40px;
  align-items: start;
}

.lpa-fiche__deux-colonnes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px;
}

.lpa-fiche__visuel {
  overflow: hidden;
  border-radius: var(--lpa-rayon);
  background: var(--lpa-turquoise-clair);
}

.lpa-fiche__visuel img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

.lpa-fiche__principal .lpa-fiche__visuel {
  margin-bottom: 24px;
}

.lpa-fiche__surtitre {
  margin: 0 0 10px;
  color: var(--lpa-turquoise-fonce);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.lpa-fiche__chapo,
.lpa-fiche__chapo p {
  margin: 0 0 16px;
  color: var(--lpa-texte);
  font-size: 19px;
  line-height: 1.6;
}

.lpa-fiche__chapo--seul {
  max-width: 760px;
}

.lpa-fiche__compte {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 4px 0 0;
  padding: 6px 14px;
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-turquoise-clair);
  color: var(--lpa-turquoise-fonce);
  font-size: 14px;
  font-weight: 700;
}

/* Listes d'objectifs : coches ; listes de programmes : cartes. */
.lpa-liste-coches ul,
.lpa-liste-programmes ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-liste-coches li {
  position: relative;
  margin: 0 0 12px;
  padding-left: 32px;
  font-size: 16px;
  line-height: 1.55;
}

.lpa-liste-coches li::before {
  content: "\f00c";
  position: absolute;
  top: 1px;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--lpa-turquoise);
  color: #fff;
  font-family: FontAwesome;
  font-size: 11px;
}

.lpa-liste-programmes li {
  margin: 0 0 10px;
  padding: 12px 16px;
  border: 1px solid var(--lpa-bordure);
  border-left: 4px solid var(--lpa-marine);
  border-radius: var(--lpa-rayon);
  background: #fff;
  font-size: 15px;
  line-height: 1.5;
}

/* Encart latéral (projet, événement). */
.lpa-fiche__encart {
  position: sticky;
  top: 24px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 22px;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: #fff;
  box-shadow: var(--lpa-ombre);
}

.lpa-fiche__encart-titre {
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.lpa-fiche__domaine {
  display: block;
  overflow: hidden;
  border-radius: var(--lpa-rayon);
  color: var(--lpa-marine);
  font-weight: 700;
  text-decoration: none;
}

.lpa-fiche__domaine img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  margin-bottom: 8px;
}

.lpa-fiche__encart-texte {
  margin: 0;
  color: var(--lpa-texte-discret);
  font-size: 14px;
  line-height: 1.55;
}

.lpa-fiche__encart-bouton {
  width: 100%;
}

.lpa-fiche__infos {
  display: grid;
  gap: 12px;
  margin: 0;
}

.lpa-fiche__infos div {
  display: grid;
  gap: 2px;
}

.lpa-fiche__infos dt {
  color: var(--lpa-texte-discret);
  font-size: 13px;
  font-weight: 600;
}

.lpa-fiche__infos dt i {
  width: 16px;
  color: var(--lpa-turquoise);
}

.lpa-fiche__infos dd {
  margin: 0;
  color: var(--lpa-texte);
  font-size: 16px;
  font-weight: 700;
}

/* Grille de contenus liés. */
.lpa-cartes-liees {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.lpa-cartes-liees--compact {
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
}

.lpa-carte-liee {
  margin: 0;
}

.lpa-carte-liee a {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: #fff;
  color: var(--lpa-marine);
  text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.lpa-carte-liee a:hover,
.lpa-carte-liee a:focus-visible {
  transform: translateY(-3px);
  box-shadow: var(--lpa-ombre);
}

.lpa-carte-liee img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

.lpa-carte-liee__titre {
  padding: 14px 16px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
}

@media (max-width: 991px) {
  .lpa-fiche__intro-grille,
  .lpa-fiche__projet-grille,
  .lpa-fiche__deux-colonnes {
    grid-template-columns: 1fr;
  }

  .lpa-fiche__encart {
    position: static;
  }
}

/* Le widget de titre du thème est flottant sur toute la largeur : une grille
   qui le suit crée un contexte de formatage et se réduit à la place restante,
   c'est-à-dire zéro, et la première puce d'une liste vient se loger à côté du
   titre. On annule le flottant dans les fiches de détail. */
.lpa-fiche .widget.gsc-heading {
  float: none;
  width: auto;
  margin-bottom: 22px;
}

.lpa-fiche .lpa-cartes-liees,
.lpa-fiche .lpa-liste-coches,
.lpa-fiche .lpa-liste-programmes {
  clear: both;
  padding-left: 0;
}

/* Cartes texte (projets d'un même domaine). */
.lpa-cartes-liees--texte {
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}

.lpa-cartes-liees--texte .lpa-carte-liee a {
  flex-direction: row;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-left: 4px solid var(--lpa-turquoise);
}

.lpa-cartes-liees--texte .lpa-carte-liee a i {
  color: var(--lpa-turquoise);
  font-size: 18px;
}

.lpa-cartes-liees--texte .lpa-carte-liee__titre {
  padding: 0;
}

/* ==========================================================================
   LPA — Liste filtrable des projets
   ========================================================================== */
.lpa-projets .view-filters,
.lpa-projets form.views-exposed-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px;
  margin: 0 0 28px;
  padding: 18px 20px;
  border: 1px solid var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: var(--lpa-fond-alt);
}

.lpa-projets .views-exposed-form .form-item {
  margin: 0;
}

.lpa-projets .views-exposed-form label {
  display: block;
  margin-bottom: 6px;
  font-weight: 700;
  color: var(--lpa-texte);
}

.lpa-projets .views-exposed-form select {
  min-width: 300px;
  min-height: var(--lpa-cible);
  padding: 8px 12px;
  border: 1px solid #cfd6e4;
  border-radius: 6px;
  background: #fff;
  font-size: 16px;
}

.lpa-projets .views-exposed-form .form-actions {
  display: flex;
  gap: 10px;
  margin: 0;
}

.lpa-projets .views-exposed-form input[type="submit"] {
  min-height: var(--lpa-cible);
  padding: 10px 22px;
  border: 2px solid var(--lpa-marine);
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-marine);
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}

.lpa-projets .views-exposed-form input[type="submit"][id*="reset"] {
  background: transparent;
  color: var(--lpa-marine);
}

.lpa-projets .view-content-wrap,
.lpa-projets .view-content {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

.lpa-projets .lpa-grille__element {
  margin: 0;
}

.lpa-carte-projet {
  height: 100%;
}

.lpa-carte-projet__lien {
  display: flex;
  flex-direction: column;
  gap: 10px;
  height: 100%;
  padding: 18px 18px 16px;
  border: 1px solid var(--lpa-bordure);
  border-top: 4px solid var(--lpa-turquoise);
  border-radius: var(--lpa-rayon);
  background: #fff;
  text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.lpa-carte-projet__lien:hover,
.lpa-carte-projet__lien:focus-visible {
  transform: translateY(-3px);
  box-shadow: var(--lpa-ombre);
}

.lpa-carte-projet__domaine {
  align-self: flex-start;
  padding: 3px 10px;
  border-radius: var(--lpa-rayon-pill);
  background: var(--lpa-turquoise-clair);
  color: var(--lpa-turquoise-fonce);
  font-size: 12px;
  font-weight: 700;
}

.lpa-carte-projet__titre {
  flex: 1;
  margin: 0;
  color: var(--lpa-marine);
  font-size: 17px;
  line-height: 1.35;
  font-weight: 700;
  text-transform: none;
}

.lpa-carte-projet__action {
  color: var(--lpa-texte-discret);
  font-size: 13px;
  font-weight: 700;
}

.lpa-carte-projet__action::after {
  content: " →";
}

@media (max-width: 575px) {
  .lpa-projets .views-exposed-form select {
    min-width: 0;
    width: 100%;
  }
}

/* Annonce sans visuel : une seule colonne. */
.lpa-modale-evenement--sans-visuel {
  width: min(620px, calc(100vw - 32px));
}

.lpa-modale-evenement--sans-visuel .lpa-modale-evenement__cadre {
  grid-template-columns: 1fr;
}

/* Aperçu d'une annonce sur sa propre page (rédacteurs). */
.lpa-annonce-apercu__reglages {
  max-width: 880px;
  margin: 0 auto 28px;
  padding: 18px 22px;
  border: 1px dashed var(--lpa-bordure);
  border-radius: var(--lpa-rayon);
  background: var(--lpa-fond-alt);
}

.lpa-annonce-apercu__reglages .lpa-fiche__infos {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.lpa-annonce-apercu {
  display: block;
  margin: 0 auto;
  box-shadow: var(--lpa-ombre);
}

@media (max-width: 767px) {
  .lpa-annonce-apercu__reglages .lpa-fiche__infos {
    grid-template-columns: 1fr;
  }
}

/* L'aperçu reprend la classe de la modale, masquée hors état [open]. */
.lpa-modale-evenement.lpa-annonce-apercu {
  position: static;
  display: block !important;
  width: min(880px, 100%);
  max-height: none;
}

.lpa-annonce-apercu .lpa-modale-evenement__cadre {
  max-height: none;
}

/* ==========================================================================
   Messagerie LPA (/webmail) : carte de connexion au webmail
   ========================================================================== */
.lpa-webmail {
  background: #fff;
  border-top: 4px solid var(--lpa-turquoise);
  border-radius: 12px;
  box-shadow: 0 12px 40px rgba(31, 10, 131, .12);
  padding: 32px 28px 24px;
  text-align: center;
}
.lpa-webmail__embleme { display: block; margin: 0 auto 12px; width: 80px; height: 80px; }
.lpa-webmail__titre { color: var(--lpa-marine); font-size: 24px; margin: 0 0 20px; }
.lpa-webmail__form { text-align: left; }
.lpa-webmail__form label {
  display: block; font-weight: 600; color: #33334d; margin: 14px 0 6px; font-size: 14px;
}
.lpa-webmail__form input[type="email"],
.lpa-webmail__form input[type="password"] {
  width: 100%; height: 48px; padding: 0 14px; font-size: 16px;
  border: 1px solid #c9cbd8; border-radius: 8px; background: #fff; color: #1d1d2c;
}
.lpa-webmail__form input:focus {
  outline: 3px solid rgba(10, 122, 134, .35); outline-offset: 1px; border-color: var(--lpa-turquoise);
}
.lpa-webmail__form button { width: 100%; margin-top: 22px; }
.lpa-webmail__note { font-size: 13px; color: #55576b; margin: 16px 0 0; line-height: 1.5; }
.lpa-webmail__note .fa { color: var(--lpa-turquoise); }
/* Icônes à gauche : largeur fixe pour aligner les textes des encadrés. */
.widget.gsc-icon-box.left .highlight-icon { width: 56px; min-width: 56px; text-align: center; }
@media (max-width: 767px) {
  .lpa-webmail { margin-bottom: 40px; }
}
