/*
Theme Name: ERCA Conference 2026
Theme URI: https://conference.erca-arcc.org/
Author: ERCA / ARCC
Description: Thème dédié à la Conférence annuelle inaugurale de l'ERCA/ARCC — 15–17 septembre 2026, SDKJ-ICC Centre, Bijilo, Gambie. Page unique (one-page) avec navigation par ancres, menus WordPress éditables et formulaire d'inscription en trois étapes.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: erca-conference
Tags: one-page, conference, custom-menu, translation-ready
*/

/* =========================================================
   SYSTÈME COMMUN DES SECTIONS (aligné sur le slide)
   ========================================================= */
:root {
  --g-dark: #0a3d20;
  --g: #14a139;
  --g-deep: #0f8a2e;
  --lime2: #8dcc3a;
  --yel: #ffc20a;
  --txt: #1b1b1b;
  --muted: #5b6166;
  --hair: #e3e4de;
  --paper: #ffffff;
  --paper-alt: #f6f7f3;
  --cream: #fbfaf4;
  --c-green: #008244;
  --c-terra: #ad4f2e;
  --c-wine: #8e1d36;
  --c-blue: #004c71;
  --c-gold: #E4CA00;
  --c-gold2: #EDC006;
  --c-lime: #c2ee45;
  --c-lime2: #d2ec57;
  --c-viz: #1aa23c;
  --c-dark: #0a2417;
}

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

body {
  margin: 0;
  font-family: "Lato", system-ui, sans-serif;
  color: var(--txt);
  background: #fff
}

a {
  color: inherit;
  text-decoration: none
}

button {
  font-family: inherit;
  cursor: pointer;
  border: 0;
  background: none
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid var(--yel);
  outline-offset: 2px
}

::selection {
  background: var(--g);
  color: #fff
}

.sec {
  padding: clamp(34px, 3.2vw, 52px) clamp(18px, 5vw, 40px)
}

.sec+.sec {
  padding-top: clamp(30px, 2.8vw, 46px)
}

.sec--alt {
  background: var(--paper-alt)
}

.hub {
  background: #fff;
  padding-top: clamp(26px, 2.4vw, 38px)
}

.sec--cream {
  background: var(--cream)
}

.wrap {
  width: 100%;
  max-width: 1240px;
  margin: 0 auto
}

.pill {
  display: inline-block;
  border: 1.5px solid var(--hair);
  border-radius: 40px;
  padding: 8px 20px;
  font-size: 15px;
  font-weight: 700;
  color: var(--txt);
  background: #fff
}

.s-head {
  display: flex;
  align-items: flex-start;
  gap: 30px;
  margin-bottom: 30px;
  flex-wrap: wrap
}

.s-head .main {
  flex: 1 1 420px;
  min-width: 0
}

.s-head h2 {
  font-size: clamp(30px, 3.2vw, 45px);
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: -.025em;
  margin: 10px 0 12px
}

.s-head p {
  font-size: 17px;
  line-height: 1.55;
  color: var(--muted);
  max-width: 760px;
  margin: 0
}

.cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--c-gold);
  color: var(--txt);
  border-radius: 40px;
  padding: 14px 26px;
  font-size: 16px;
  font-weight: 700;
  white-space: nowrap;
  transition: background .2s, color .2s, transform .2s
}

.cta-btn:hover {
  background: var(--c-wine);
  color: #fff;
  transform: translateY(-1px)
}

.cta-btn svg {
  width: 16px;
  height: 16px
}

.arrow-pill {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: var(--g-dark);
  color: #fff;
  padding: 11px 12px 11px 22px;
  border-radius: 30px;
  font-weight: 700;
  font-size: 15px;
  transition: background .2s, transform .2s
}

.arrow-pill:hover {
  background: #0c5a2c;
  transform: translateY(-1px)
}

.arrow-pill i {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--yel);
  color: var(--g-dark);
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 900;
  font-style: normal
}

/* ---------- 2. HUB D'INFORMATION (Solarize) ---------- */
.hub .top {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(28px, 3.4vw, 56px);
  flex-wrap: wrap;
  margin-bottom: 32px
}

.hub .lead {
  flex: 1 1 520px;
  max-width: 720px
}

.hub h2 {
  font-size: clamp(30px, 3.6vw, 50px);
  font-weight: 900;
  line-height: 1.04;
  letter-spacing: -.025em;
  margin: 14px 0 12px
}

.hub .intro {
  font-size: 18px;
  line-height: 1.55;
  color: var(--muted);
  max-width: 620px
}

.hub .figures {
  display: flex;
  gap: clamp(22px, 3vw, 42px);
  align-items: stretch
}

.hub .fig-n {
  font-size: clamp(30px, 3vw, 44px);
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.02em
}

.hub .fig-l {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.25;
  margin-top: 10px
}

.hub .vline {
  width: 1.5px;
  background: var(--hair)
}

.hub .grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(18px, 1.8vw, 28px)
}

.hub .card {
  border-radius: 24px;
  padding: clamp(22px, 2vw, 30px);
  min-height: 250px;
  color: #fff;
  display: flex;
  flex-direction: column;
  box-shadow: 0 18px 40px -26px rgba(10, 40, 20, .55);
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s cubic-bezier(.4, 0, .2, 1), transform .7s cubic-bezier(.4, 0, .2, 1), box-shadow .3s
}

.hub .card.in {
  opacity: 1;
  transform: none
}

.hub .card:hover {
  transform: translateY(-6px);
  box-shadow: 0 26px 54px -22px rgba(10, 40, 20, .6)
}

.hub .card:nth-child(1) {
  background: var(--c-green);
  transition-delay: 0s
}

.hub .card:nth-child(2) {
  background: var(--c-terra);
  transition-delay: .1s
}

.hub .card:nth-child(3) {
  background: var(--c-wine);
  transition-delay: .2s
}

.hub .card:nth-child(4) {
  background: var(--c-blue);
  transition-delay: .3s
}

.hub .card .ic {
  margin-bottom: 20px
}

.hub .card .ic svg {
  width: 36px;
  height: 36px
}

.hub .card h3 {
  font-size: 21px;
  font-weight: 900;
  line-height: 1.18;
  margin: 0 0 10px
}

.hub .card p {
  font-size: 16px;
  line-height: 1.5;
  margin: 0;
  opacity: .92
}

/* ---------- 3. AGENDA RÉGIONAL — 3 par ligne ---------- */
.agenda {
  background: rgba(228, 202, 0, .30)
}

.agenda .grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px
}

.ev {
  position: relative;
  background: #008244;
  border-radius: 22px;
  padding: 16px;
  color: #fff;
  display: flex;
  flex-direction: column;
  transition: transform .25s, box-shadow .25s
}

.ev:hover {
  transform: translateY(-5px);
  box-shadow: 0 26px 46px -22px rgba(8, 40, 20, .55)
}

.ev .ph {
  border-radius: 15px;
  overflow: hidden;
  aspect-ratio: 1.7;
  background: #0b5e2a
}

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

.ev .cat {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
  opacity: .85;
  margin: 18px 6px 10px
}

.ev h3 {
  font-size: 19px;
  font-weight: 900;
  line-height: 1.28;
  text-transform: uppercase;
  letter-spacing: .01em;
  margin: 0 6px 18px
}

.ev .date {
  margin: auto 6px 6px;
  font-size: 15px;
  font-weight: 700
}

.ev .go {
  position: absolute;
  right: 20px;
  bottom: 20px;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: #fff;
  color: var(--g-dark);
  display: grid;
  place-items: center;
  transition: .2s
}

.ev .go:hover {
  background: var(--c-gold);
  color: #fff;
  transform: translateY(-2px)
}

.ev .go svg {
  width: 20px;
  height: 20px
}

/* ---------- 5. VISION 2050 — 6 priorités ---------- */
.pri .grid2 {
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
  gap: clamp(30px, 4vw, 56px);
  align-items: stretch
}

.pri .photo {
  position: relative;
  border-radius: 26px;
  overflow: hidden;
  width: 100%;
  min-height: 560px;
  background: linear-gradient(160deg, #9fb4c0, #6f8a93 55%, #2c3b30);
  box-shadow: 0 10px 40px rgba(0, 0, 0, .08)
}

.pri .photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity .4s ease
}

.pri .award {
  position: absolute;
  top: 0;
  left: 0;
  width: 210px;
  height: 210px;
  background: var(--c-terra);
  border-radius: 22px;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 20px;
  box-shadow: 6px 6px 0 6px #fff
}

.pri .award svg {
  width: 38px;
  height: 38px;
  color: #fff;
  margin-bottom: 12px
}

.pri .award h4 {
  color: var(--c-lime);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.25;
  margin: 0
}

.pri .plus {
  position: absolute;
  right: -2px;
  bottom: 38px;
  width: 60px;
  height: 60px;
  background: var(--c-dark);
  border-radius: 16px;
  display: grid;
  place-items: center;
  z-index: 3;
  box-shadow: -7px 7px 0 7px #fff
}

.pri .plus svg {
  width: 26px;
  height: 26px;
  color: var(--c-lime)
}

.pri .right {
  padding-top: 6px
}

.pri .feats {
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-top: 26px
}

.pri .feat {
  position: relative;
  cursor: pointer
}

.pri .num {
  position: absolute;
  top: -4px;
  left: -4px;
  width: 58px;
  height: 58px;
  background: var(--c-gold);
  border-radius: 16px;
  display: grid;
  place-items: center;
  font-size: 24px;
  font-weight: 900;
  color: var(--c-green);
  z-index: 2;
  box-shadow: 0 0 0 6px #fff
}

.pri .bar {
  background: var(--c-terra);
  border-radius: 20px;
  padding: 0 24px 0 10px;
  transition: transform .25s, background .25s
}

.pri .feat:hover .bar {
  transform: translateY(-3px);
  background: #9a4527
}

.pri .theme {
  color: var(--c-gold);
  font-size: 20px;
  font-weight: 900;
  padding-left: 80px;
  min-height: 62px;
  display: flex;
  align-items: center
}

/* ---------- 6. ECOWAS NEWS ---------- */
.news .vp {
  overflow: hidden
}

.news .track {
  display: flex;
  gap: 26px;
  transition: transform .55s cubic-bezier(.45, .05, .2, 1)
}

.news .card {
  flex: 0 0 calc((100% - 3 * 26px) / 4);
  background: var(--c-terra);
  border-radius: 20px;
  padding: 16px 16px 24px;
  color: #fff
}

.news .thumb {
  border-radius: 14px;
  overflow: hidden;
  aspect-ratio: 1.55;
  background: #16331f
}

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

.news .meta {
  display: flex;
  align-items: center;
  gap: 22px;
  margin: 16px 6px 0;
  font-size: 13px;
  font-weight: 700
}

.news .meta span {
  display: inline-flex;
  align-items: center;
  gap: 7px
}

.news .meta svg {
  width: 15px;
  height: 15px
}

.news h3 {
  font-size: 19px;
  font-weight: 900;
  line-height: 1.25;
  margin: 12px 6px 0
}

.news .learn {
  display: inline-block;
  margin: 20px 6px 0;
  background: var(--c-gold);
  color: var(--txt);
  border-radius: 40px;
  padding: 12px 26px;
  font-size: 15px;
  font-weight: 700;
  transition: .2s
}

.news .learn:hover {
  background: var(--c-wine);
  color: #fff
}

.nav-arrows {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-top: 34px
}

.nav-arrows button {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1.5px solid var(--hair);
  display: grid;
  place-items: center;
  transition: .2s;
  background: #fff
}

.nav-arrows button:hover:not(:disabled) {
  background: var(--c-lime);
  border-color: var(--c-lime);
  color: var(--txt)
}

.nav-arrows button:disabled {
  opacity: .35;
  cursor: default
}

.nav-arrows svg {
  width: 21px;
  height: 21px
}

/* ---------- 7. TABLEAU HÔTELS ---------- */
.hotels .tbl {
  background: #fff;
  border: 1px solid var(--hair);
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 18px 40px -30px rgba(10, 40, 20, .5)
}

.hotels .scroll {
  overflow-x: auto
}

.hotels table {
  width: 100%;
  border-collapse: collapse;
  min-width: 940px
}

.hotels thead th {
  background: var(--c-green);
  color: #fff;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .09em;
  text-transform: uppercase;
  text-align: left;
  padding: 16px 20px;
  white-space: nowrap
}

.hotels thead th:not(:first-child) {
  border-left: 1px solid rgba(255, 255, 255, .14)
}

.hotels tbody td {
  padding: 16px 20px;
  font-size: 15.5px;
  border-top: 1px solid var(--hair);
  color: var(--txt);
  vertical-align: middle
}

.hotels tbody tr:nth-child(even) {
  background: #fafbf7
}

.hotels tbody tr:hover {
  background: #f1f7ec
}

.hotels td:first-child {
  font-weight: 900
}

.hotels .tag {
  display: inline-block;
  background: var(--c-lime);
  color: #12300f;
  border-radius: 30px;
  padding: 4px 12px;
  font-size: 12.5px;
  font-weight: 900
}

.hotels .empty {
  color: #9aa39a
}

.hotels .note {
  margin-top: 14px;
  font-size: 13.5px;
  color: var(--muted);
  font-style: italic
}

/* ---------- 8. OPPORTUNITÉS — 3 blocs ---------- */
.opp .grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px
}

.opp .card {
  background: var(--c-blue);
  border-radius: 22px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  box-shadow: 0 16px 34px -24px rgba(8, 40, 20, .55);
  transition: .25s
}

.opp .card:hover {
  transform: translateY(-5px);
  box-shadow: 0 26px 46px -20px rgba(8, 40, 20, .6)
}

.opp .ph {
  border-radius: 15px;
  overflow: hidden;
  aspect-ratio: 1.3;
  background: #0b5e2a
}

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

.opp h3 {
  margin: 16px 6px;
  font-size: 22px;
  font-weight: 900;
  line-height: 1.12;
  color: #fff
}

.opp .foot {
  margin-top: auto;
  display: flex;
  align-items: stretch;
  gap: 8px
}

.opp .info {
  flex: 1;
  min-width: 0;
  background: #fff;
  border-radius: 14px;
  padding: 11px 16px;
  display: flex;
  flex-direction: column;
  justify-content: center
}

.opp .info .u {
  font-size: 12px;
  font-weight: 700;
  color: #8a8f86
}

.opp .info .n {
  font-size: 16px;
  font-weight: 700;
  margin-top: 2px
}

.opp .info .n b {
  color: #0f7a37;
  font-weight: 900
}

.opp .go {
  flex: 0 0 52px;
  width: 52px;
  height: 52px;
  align-self: center;
  border-radius: 50%;
  background: #f4cf1e;
  color: #0a3d20;
  display: grid;
  place-items: center;
  transition: .2s
}

.opp .card:hover .go {
  background: #fff
}

.opp .go svg {
  width: 21px;
  height: 21px
}

/* ---------- 9. RESSOURCES — 3 blocs, sans chiffres ---------- */
.res {
  padding-left: clamp(12px, 1.4vw, 22px);
  padding-right: clamp(12px, 1.4vw, 22px)
}

.res .wrap {
  max-width: none
}

.res .panel {
  position: relative;
  border-radius: 26px;
  overflow: hidden;
  background: var(--c-viz);
  padding: clamp(34px, 3.4vw, 48px)
}

.res .panel::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, var(--c-viz) 0%, var(--c-viz) 42%, rgba(26, 162, 60, .86) 56%, rgba(26, 162, 60, .28) 100%)
}

.res .wm {
  position: absolute;
  right: 32px;
  top: 22px;
  font-size: clamp(60px, 8vw, 120px);
  font-weight: 900;
  color: rgba(255, 255, 255, .10);
  line-height: 1;
  letter-spacing: .04em;
  user-select: none
}

.res .in {
  position: relative;
  z-index: 1
}

.res .pill {
  border-color: rgba(255, 255, 255, .6);
  color: #fff;
  background: transparent
}

.res h2 {
  color: #fff;
  font-size: clamp(28px, 3.2vw, 45px);
  font-weight: 900;
  line-height: 1.06;
  letter-spacing: -.02em;
  margin: 24px 0 40px;
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap
}

.res h2 .rule {
  display: inline-block;
  width: min(260px, 30vw);
  height: 3px;
  background: var(--c-lime2);
  border-radius: 2px
}

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

.res .card {
  background: rgba(4, 58, 24, .42);
  border-radius: 18px;
  padding: 24px;
  color: #fff;
  transition: transform .25s, background .25s
}

.res .card:hover {
  transform: translateY(-5px);
  background: rgba(4, 58, 24, .6)
}

.res .card .ic {
  margin-bottom: 34px
}

.res .card .ic svg {
  width: 34px;
  height: 34px
}

.res .card h3 {
  font-size: 21px;
  font-weight: 900;
  line-height: 1.2;
  margin: 0 0 10px
}

.res .card p {
  font-size: 16px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .85);
  margin: 0
}

.res .more {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 14px;
  color: var(--c-lime2);
  font-size: 15px;
  font-weight: 900
}

.res .more svg {
  width: 15px;
  height: 15px;
  transition: transform .25s
}

.res .card:hover .more svg {
  transform: translateX(4px)
}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1200px) {
  .hub .grid {
    grid-template-columns: repeat(2, 1fr)
  }

  .news .card {
    flex: 0 0 calc((100% - 2 * 26px) / 3)
  }
}

@media (max-width:980px) {

  .agenda .grid,
  .opp .grid,
  .res .grid {
    grid-template-columns: repeat(2, 1fr)
  }

  .pri .grid2 {
    grid-template-columns: 1fr
  }

  .pri .photo {
    min-height: 420px
  }

  .news .card {
    flex: 0 0 calc((100% - 26px) / 2)
  }

}

@media (max-width:640px) {

  .hub .grid,
  .agenda .grid,
  .opp .grid,
  .res .grid {
    grid-template-columns: 1fr
  }

  .news .card {
    flex: 0 0 100%
  }

  .steps .lbl {
    display: none
  }
}



/* =========================================================
   BLOCS REPRIS DU CODE DE BASE (team / cons / footer)
   ========================================================= */

.team {
  --ink: #16181a;
  --muted: #6a7075;
  --olive-line: #c7c8ab;
  --dot: #2f7d32;
  --gap: 26px;
  font-family: 'Source Sans 3', system-ui, -apple-system, sans-serif;
  background: #ffffff;
  color: var(--ink);
  line-height: 1.5;
  display: flex;
  justify-content: center;
  padding: clamp(45px, 6vw, 45px) clamp(18px, 5vw, 40px);
}

.team :where(*) {
  box-sizing: border-box;
}

.team .wrap {
  width: 100%;
  max-width: 1240px;
  display: grid;
  grid-template-columns: minmax(280px, 0.56fr) minmax(0, 1fr);
  gap: 54px;
  align-items: center;
}

.team .intro-top {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 30px;
}

.team .pill {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  border: 1.5px solid var(--olive-line);
  border-radius: 40px;
  padding: 9px 20px;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .13em;
  color: #4a4a3a;
  text-transform: uppercase;
}

.team .pill .dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--dot);
}

.team .ring {
  width: 54px;
  height: 54px;
  border-radius: 50%;
  border: 1.5px solid var(--olive-line);
  flex: 0 0 auto;
}

.team h1 {
  font-size: 45px;
  font-weight: 800;
  line-height: .97;
  letter-spacing: -0.03em;
  color: var(--ink);
  margin-bottom: 26px;
}

.team .lead {
  font-size: 18px;
  color: black;
  max-width: 370px;
  line-height: 1.62;
  margin-bottom: 44px;
  font-weight: 500;
}

.team .nav {
  display: flex;
  gap: 18px;
}

.team .nav button {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  border: 1.5px solid var(--olive-line);
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #4a4a3a;
  transition: background .25s, color .25s, border-color .25s;
}

.team .nav button:hover {
  background: #8e1d36;
  color: #fff;
  border-color: #8e1d36;
}

.team .nav button:focus-visible {
  outline: 3px solid #9aa06a;
  outline-offset: 3px;
}

.team .nav svg {
  width: 24px;
  height: 24px;
}

.team .viewport {
  overflow: hidden;
  cursor: grab;
  touch-action: pan-y;
}

.team .viewport.grabbing {
  cursor: grabbing;
}

.team .track {
  display: flex;
  gap: var(--gap);
  transition: transform .55s cubic-bezier(.45, .05, .2, 1);
  will-change: transform;
}

.team .card {
  flex: 0 0 calc((100% - 2 * var(--gap)) / 3);
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  aspect-ratio: 0.72;
  /* >>> HAUTEUR DES CARTES MEMBRES : baisse cette valeur pour des cartes plus HAUTES (0.72), monte-la pour plus courtes (0.84). <<< */
  background: linear-gradient(160deg, #b9c4cb, #7d8a8f 60%, #3c4a42);
}

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

.team .card .avatar-ph {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(160deg, #cfd8d1, #9fb0a4 58%, #5c6f60);
}

.team .card .avatar-ph svg {
  width: 44%;
  height: 44%;
  color: rgba(255, 255, 255, .85);
}

.team .card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(8, 12, 10, .78) 0%, rgba(8, 12, 10, .35) 26%, rgba(0, 0, 0, 0) 52%);
}

.team .meta {
  position: absolute;
  left: 22px;
  bottom: 20px;
  right: 18px;
  z-index: 2;
  color: #fff;
}

.team .meta .name {
  font-size: 24px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -0.01em;
}

.team .meta .role {
  margin-top: 7px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: #e9ece8;
  opacity: .92;
}

@media (max-width: 980px) {
  .team .wrap {
    grid-template-columns: 1fr;
    gap: 44px;
  }

  .team h1 {
    font-size: 60px;
  }

  .team .card {
    flex: 0 0 calc((100% - var(--gap)) / 2);
  }
}

@media (max-width: 640px) {
  .team {
    padding: 56px 18px;
  }

  .team h1 {
    font-size: 46px;
  }

  .team .card {
    flex: 0 0 100%;
    aspect-ratio: 0.85;
  }

  .team .meta .name {
    font-size: 30px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .team .track {
    transition: none;
  }
}


.cons {
  --lime: #c2ee45;
  --lime-bright: #cdf24f;
  --dark: #0c2316;
  --ink: #141414;
  --label: #1b2a21;
  --page: #ffffff;
  --field-border: #e3e6df;
  --placeholder: #9aa39a;


  --panel-min-h: 480px;

  --form-w: 430px;

  --form-right: 220px;

  --form-h: 525px;
}

.cons :where(*) {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.cons {
  font-family: 'Source Sans 3', system-ui, -apple-system, sans-serif;
  background: var(--page);
  color: var(--ink);
  line-height: 1.5;
  padding: clamp(40px, 4.5vw, 40px) clamp(18px, 5vw, 40px);
}

.cons .wrap {
  margin: 0 auto;
  position: relative;
}

.cons .cta {
  position: relative;
  border-radius: 28px;
  overflow: hidden;
  min-height: var(--panel-min-h);
  padding: 54px 60px;
  display: flex;
  align-items: center;
  background: var(--dark);
}

.cons .cta-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.cons .cta-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scaleX(-1);
}

.cons .cta-bg .overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgb(7 101 44 / 94%) 0%, rgba(3 52 21 / 80%) 100%, rgb(3 52 21 / 80%) 100%);
}

.cons .cta-content {
  position: relative;
  z-index: 1;
  max-width: 700px;
}

.cons .eyebrow {
  display: inline-block;
  border: 1.5px solid #EDC006;
  color: white;
  border-radius: 40px;
  padding: 9px 20px;
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 26px;
}

.cons .cta h1 {
  color: #fff;
  font-size: 45px;
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -0.025em;
  margin-bottom: 22px;
}

.cons .cta .lead {
  color: rgba(255, 255, 255, .85);
  font-size: 18px;
  line-height: 1.6;
  max-width: 580px;
  margin-bottom: 36px;
}

.cons .cta .lead b {
  color: #fff;
  font-weight: 700;
}

.cons .cta .btn {
  display: inline-block;
  background: #EDC006;
  color: black;
  border: none;
  border-radius: 40px;
  padding: 16px 34px;
  font-size: 18px;
  font-weight: 700;
  cursor: pointer;
  transition: transform .2s, box-shadow .2s;
}

.cons .cta .btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 26px rgba(0, 0, 0, .22);
}

.cons .form-card {
  position: absolute;
  right: var(--form-right);
  top: 50%;
  transform: translateY(-50%) scale(calc(var(--form-h) / 600px));
  transform-origin: center right;

  width: var(--form-w);
  background: var(--page);
  border-radius: 15px;
  padding: 30px 32px;

  z-index: 2;
}

.cons .form-card h2 {
  font-size: 26px;
  font-weight: 800;
  color: var(--ink);
  letter-spacing: -0.02em;
  margin-bottom: 20px;
}

.cons .field {
  margin-bottom: 16px;
}

.cons .field label {
  display: block;
  font-size: 18px;
  font-weight: 600;
  color: var(--label);
  margin-bottom: 8px;
}

.cons .field label .req {
  color: #e23744;
}

.cons .field input,
.cons .field textarea {
  width: 100%;
  border: 1.5px solid var(--field-border);
  border-radius: 11px;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 14.5px;
  color: var(--ink);
  background: #fff;
  transition: border-color .2s, box-shadow .2s;
}

.cons .field input::placeholder,
.cons .field textarea::placeholder {
  color: var(--placeholder);
}

.cons .field input:focus,
.cons .field textarea:focus {
  outline: none;
  border-color: var(--lime);
  box-shadow: 0 0 0 4px rgba(194, 238, 69, .25);
}

.cons .field textarea {
  min-height: 96px;
  resize: vertical;
}

.cons .form-card .submit {
  background: #EDC006;
  color: var(--ink);
  border: none;
  border-radius: 40px;
  padding: 14px 28px;
  font-size: 18px;
  font-weight: 700;
  cursor: pointer;
  transition: background .2s, transform .2s;
}

.cons .form-card .submit:hover {
  background: var(--lime-bright);
  transform: translateY(-2px);
}

@media (max-width:1080px) {
  .cons .cta {
    padding: 52px;
    min-height: auto;
  }

  .cons .cta-content {
    max-width: none;
    padding-right: 0;
  }

  .cons .form-card {
    position: static;
    transform: none;
    width: auto;
    margin: 26px 0 0;
    right: auto;
    top: auto;
  }

  .cons .wrap {
    display: flex;
    flex-direction: column;
  }
}

@media (max-width:560px) {
  .cons {
    padding: 34px 16px;
  }

  .cons .cta {
    padding: 36px 28px;
    border-radius: 22px;
  }

  .cons .cta h1 {
    font-size: 34px;
  }

  .cons .form-card {
    padding: 28px 24px;
  }

  .cons .form-card h2 {
    font-size: 25px;
  }
}

@media (prefers-reduced-motion:reduce) {

  .cons .cta .btn,
  .cons .form-card .submit {
    transition: none;
  }
}


.ftr {
  --lime: #c2ee45;
  --lime-bright: #cdf24f;
  --dark: #0a1f0d;
  --line: rgba(255, 255, 255, .12);
  --muted: #aebaa9;
  --white: #ffffff;
}

.ftr :where(*) {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.ftr {
  font-family: 'Source Sans 3', system-ui, -apple-system, sans-serif;
  background: #f1f3ef;
  color: var(--white);
  line-height: 1.5;
  padding: clamp(20px, 3vw, 36px) clamp(18px, 5vw, 40px);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.ftr .footer {
  width: 100%;
  max-width: 1820px;
  background: #8e1d36;
  border-radius: 26px;
  padding: 56px 60px 30px;
}

.foot-cta {
  position: relative;
  z-index: 3;
  width: min(1400px, 92%);
  margin: 30px auto -55px;
  display: flex;
  align-items: stretch;
  background: #0f8b82;
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 34px 70px -30px rgba(0, 0, 0, .45);
}

.foot-cta-text {
  flex: 1 1 100%;
  padding: 30px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
  color: #fff;
}

.foot-cta-eyebrow {
  align-self: flex-start;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, .16);
  padding: 6px 14px;
  border-radius: 40px;
}

.foot-cta h2 {
  font-size: 26px;
  line-height: 1.15;
  font-weight: 800;
  color: #fff;
  margin: 0;
}

.foot-cta-info {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

.foot-cta .cta-item {
  display: flex;
  align-items: center;
  gap: 11px;
  font-size: 15px;
  color: rgba(255, 255, 255, .94);
}

.foot-cta .cta-item svg {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}

.foot-cta-btn {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
  background: #0a1f1c;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  padding: 8px 8px 8px 26px;
  border-radius: 40px;
  transition: transform .2s;
}

.foot-cta-btn:hover {
  transform: translateY(-2px);
}

.foot-cta-btn .cta-arrow {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #fff;
  color: #0a1f1c;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}

.foot-cta-btn .cta-arrow svg {
  width: 17px;
  height: 17px;
}

.foot-cta-img {
  flex: 1 1 48%;
  min-height: 170px;
}

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

@media (max-width: 860px) {
  .foot-cta {
    flex-direction: column;
  }

  .foot-cta-img {
    min-height: 160px;
  }
}

.ftr .contact .socials a.soc-wa {
  background: #25D366;
  color: #fff;
}

.ftr .contact .socials a.soc-wa i {
  color: #fff;
}

.ftr .contact .socials a.soc-tv,
.ftr .contact .socials a.soc-radio,
.ftr .contact .socials a.soc-news,
.ftr .contact .socials a.soc-lib {
  background: #1aa23c;
  color: #fff;
}

.ftr .contact .socials a.soc-tv i,
.ftr .contact .socials a.soc-radio i,
.ftr .contact .socials a.soc-news i,
.ftr .contact .socials a.soc-lib i {
  color: #fff;
}

.ftr .top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
  padding-bottom: 42px;
  border-bottom: 1px solid var(--line);
}

.ftr .brand {
  display: flex;
  align-items: center;
  gap: 16px;
}

.ftr .brand .logo {
  /* width: 74px;
        height: 74px;
        border-radius: 18px;
        background: var(--lime); */
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}

.ftr .brand .logo svg {
  width: 38px;
  height: 38px;
  color: var(--dark);
}

.ftr .brand .name {
  font-size: 34px;
  font-weight: 800;
  color: #fff;
  line-height: 1;
  letter-spacing: -0.01em;
}

.ftr .brand .tag {
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  margin-top: 6px;
}

.ftr .news {}

.ftr .news h3 {
  font-size: 26px;
  font-weight: 800;
  color: #fff;
  letter-spacing: -0.01em;
  margin-bottom: 22px;
}

.ftr .news .row {
  display: flex;
  align-items: center;
  background: transparent;
  border: 1.5px solid var(--lime);
  border-radius: 50px;
  padding: 8px 8px 8px 28px;
}

.ftr .news input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  color: #fff;
  font-family: inherit;
  font-size: 17px;
  padding: 14px 8px;
}

.ftr .news input::placeholder {
  color: #cfd6cb;
}

.ftr .news button {
  background: #EDC006;
  color: var(--dark);
  border: none;
  border-radius: 50px;
  padding: 16px 34px;
  font-size: 17px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: background .2s;
}

.ftr .news button:hover {
  background: var(--lime-bright);
}

.ftr .cols {
  display: grid;
  grid-template-columns: 1.25fr 1fr 1.15fr 1.2fr;
  gap: 40px;
  padding: 46px 0;
  border-bottom: 1px solid var(--line);
}

.ftr .about p {
  font-size: 26px;
  font-weight: 800;
  line-height: 1.6;
  color: #fff;
  letter-spacing: -0.01em;
  max-width: 380px;
}

.ftr .contact .socials {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 18px;
}

.ftr .contact .socials a {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #EDC006;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--dark);
  margin-bottom: 0;
  transition: transform .3s ease, box-shadow .3s ease;
}

.ftr .contact .socials a:hover {
  transform: translateY(-3px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, .18);
}

.ftr .contact .socials a.soc-fb {
  background: #1877F2;
  color: #fff;
}

.ftr .contact .socials a.soc-fb i {
  color: #fff;
}

.ftr .contact .socials a.soc-x {
  background: #000000;
  color: #fff;
}

.ftr .contact .socials a.soc-x i {
  color: #fff;
}

.ftr .contact .socials a.soc-ig {
  background: radial-gradient(circle at 30% 110%, #fdf497 0%, #fdf497 5%, #fd5949 45%, #d6249f 60%, #285AEB 90%);
  color: #fff;
}

.ftr .contact .socials a.soc-ig i {
  color: #fff;
}

.ftr .contact .socials a.soc-li {
  background: #0A66C2;
  color: #fff;
}

.ftr .contact .socials a.soc-li i {
  color: #fff;
}

.ftr .contact .socials a.soc-yt {
  background: #FF0000;
  color: #fff;
}

.ftr .contact .socials a.soc-yt i {
  color: #fff;
}

.ftr .contact .socials svg {
  width: 22px;
  height: 22px;
}

.ftr .contact .socials a i {
  font-size: 20px;
  line-height: 1;
  color: var(--dark);
}


.ftr .col h4 {
  color: white;
  font-size: 21px;
  font-weight: 700;
  margin-bottom: 22px;
}

.ftr .col a {
  display: block;
  color: #e7ede5;
  font-size: 18px;
  font-weight: 600;
  text-decoration: none;
  margin-bottom: 16px;
  transition: color .2s;
}

.ftr .col a:hover {
  color: white;
}

.ftr .contact .item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 22px;
}

.ftr .contact .item .ic {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  flex: 0 0 auto;
  display: flex;
  /* align-items: center; */
  justify-content: center;
  color: #EDC006;
}

.ftr .contact .item .ic svg {
  width: 22px;
  height: 22px;
}

.ftr .contact .item .txt {
  color: #fff;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.35;
}

.ftr .bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 26px;
  gap: 20px;
  flex-wrap: wrap;
}

.ftr .bottom .copy {
  color: #cfd6cb;
  font-size: 15px;
  font-weight: 500;
}

.ftr .bottom .legal {
  display: flex;
  align-items: center;
  gap: 22px;
}

.ftr .bottom .legal a {
  color: #e7ede5;
  font-size: 15px;
  text-decoration: none;
}

.ftr .bottom .legal a:hover {
  color: var(--lime);
}

.ftr .bottom .legal .sep {
  color: rgba(255, 255, 255, .3);
}

@media (max-width:1100px) {
  .ftr .top {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .ftr .cols {
    grid-template-columns: 1fr 1fr;
    gap: 40px 30px;
  }
}

@media (max-width:660px) {
  .ftr {
    padding: 16px;
  }

  .ftr .footer {
    padding: 36px 24px 24px;
    border-radius: 20px;
  }

  .ftr .news .row {
    flex-direction: column;
    align-items: stretch;
    padding: 14px;
    gap: 12px;
    border-radius: 18px;
  }

  .ftr .news button {
    border-radius: 14px;
  }

  .ftr .cols {
    grid-template-columns: 1fr;
  }

  .ftr .about p {
    font-size: 22px;
  }

  .ftr .bottom {
    flex-direction: column;
    align-items: flex-start;
  }
}


.p2-hero {
  width: 100%;
  max-width: 1820px;
  margin: 0 auto 34px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
  align-items: stretch;
}

.p2-left {
  background: #8e1d36;
  border-radius: 24px;
  padding: 46px;
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
}

.p2-badge {
  align-self: flex-start;
  background: rgba(255, 255, 255, .16);
  border-radius: 40px;
  padding: 6px 16px;
  font-size: 12px;
  letter-spacing: .06em;
  font-weight: 700;
  text-transform: uppercase;
}

.p2-left h2 {
  font-size: 40px;
  line-height: 1.08;
  font-weight: 800;
  color: #fff;
  margin: 0;
}

.p2-left h2 span {
  color: #EDC006;
}

.p2-info {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.p2-item {
  display: flex;
  align-items: center;
  gap: 11px;
  font-size: 15px;
  color: rgba(255, 255, 255, .92);
}

.p2-item svg {
  width: 20px;
  height: 20px;
  flex: 0 0 auto;
}

.p2-socials {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
}

.p2-socials a {
  width: 42px;
  height: 42px;
  border-radius: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  background: #1aa23c;
  transition: transform .2s;
  text-decoration: none;
}

.p2-socials a:hover {
  transform: translateY(-2px);
}

.p2-socials a i {
  font-size: 18px;
  color: #fff;
}

.p2-socials a.soc-fb {
  background: #1877F2;
}

.p2-socials a.soc-li {
  background: #0A66C2;
}

.p2-socials a.soc-x {
  background: #000000;
}

.p2-socials a.soc-yt {
  background: #FF0000;
}

.p2-socials a.soc-wa {
  background: #25D366;
}

.p2-btn {
  align-self: flex-start;
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #EDC006;
  color: #10210f;
  text-decoration: none;
  font-weight: 700;
  padding: 14px 12px 14px 26px;
  border-radius: 40px;
}


.p2-btn:hover {
  background: #1AA23C;
  color: #fff;
  transform: translateY(-1px);
}


.p2-btn .p2-arrow {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: #10210f;
  color: #EDC006;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}

.p2-right {
  position: relative;
  border-radius: 24px;
  overflow: hidden;
  min-height: 420px;
}

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

.p2-states {
  position: absolute;
  left: 18px;
  bottom: 18px;
  background: #fff;
  border-radius: 16px;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 10px;
  box-shadow: 0 12px 30px -12px rgba(0, 0, 0, .4);
}

.p2-states strong {
  font-size: 34px;
  color: #1aa23c;
  line-height: 1;
}

.p2-states span {
  font-size: 13px;
  color: #10210f;
  font-weight: 600;
  max-width: 110px;
}

@media (max-width: 820px) {
  .p2-hero {
    grid-template-columns: 1fr;
  }

  .p2-right {
    min-height: 280px;
  }
}


.ftr .brand .name {
  font-size: 28px;
}

.ftr .brand .tag {
  font-size: 12px;
}

.ftr .news h3 {
  font-size: 22px;
  margin-bottom: 18px;
}

.ftr .news input {
  font-size: 15px;
  padding: 12px 8px;
}

.ftr .news button {
  font-size: 15px;
  padding: 14px 30px;
}

.ftr .about p {
  font-size: 22px;
}

.ftr .col h4 {
  font-size: 21px;
  margin-bottom: 18px;
}

.ftr .col a {
  font-size: 17px;
  margin-bottom: 14px;
}

.ftr .contact .item .txt {
  font-size: 18px;
}

.ftr .bottom .copy {
  font-size: 14px;
}

.ftr .bottom .legal a {
  font-size: 14px;
}


/* ===== Contact : bloc élargi + formulaire en 3 étapes ===== */
.cons {
  padding: clamp(30px, 3vw, 44px) clamp(12px, 2vw, 26px)
}

.cons .wrap {
  max-width: 1820px
}

.cons {
  --panel-min-h: 760px;
  --form-w: 640px;
  --form-right: 70px
}

.cons .cta {
  padding: 54px 70px
}

.cons .cta-content {
  max-width: 640px;
  padding-right: 60px
}

.cons .form-card {
  transform: translateY(-50%);
  padding: 28px 30px;
  border-radius: 18px;
  max-height: calc(var(--panel-min-h) - 60px);
  overflow: auto;
  box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .45);
}

.cons .form-card h2 {
  font-size: 24px;
  margin-bottom: 18px
}

.cons .steps {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 22px
}

.cons .steps .st {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0
}

.cons .steps .dot {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 14px;
  background: #eef0ea;
  color: #98a196;
  transition: .25s
}

.cons .steps .st.on .dot {
  background: #07652c;
  color: #fff
}

.cons .steps .st.done .dot {
  background: var(--lime);
  color: #12300f
}

.cons .steps .lbl {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #98a196;
  white-space: nowrap
}

.cons .steps .st.on .lbl,
.cons .steps .st.done .lbl {
  color: var(--ink)
}

.cons .steps .bar {
  flex: 1;
  height: 2px;
  background: #eef0ea;
  border-radius: 2px;
  min-width: 12px
}

.cons .fset {
  display: none;
  border: 0
}

.cons .fset.on {
  display: block;
  animation: consFade .35s ease
}

@keyframes consFade {
  from {
    opacity: 0;
    transform: translateY(8px)
  }

  to {
    opacity: 1;
    transform: none
  }
}

.cons .grp-title {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #b1502f;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--field-border);
  margin-bottom: 18px
}

.cons .fgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 18px
}

.cons .field {
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  min-width: 0
}

.cons .field.full {
  grid-column: 1 / -1
}

.cons .field label {
  font-size: 14px;
  font-weight: 700;
  margin-bottom: 6px
}

.cons .field select {
  width: 100%;
  border: 1.5px solid var(--field-border);
  border-radius: 11px;
  padding: 12px 38px 12px 14px;
  font-family: inherit;
  font-size: 14.5px;
  color: var(--ink);
  background: #fff;
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23555' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 18px;
  transition: border-color .2s, box-shadow .2s
}

.cons .field select:focus {
  outline: none;
  border-color: var(--lime);
  box-shadow: 0 0 0 4px rgba(194, 238, 69, .25)
}

.cons .field .hint {
  font-size: 12.5px;
  color: #b1502f;
  margin-top: 5px
}

.cons .chk {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 14.5px;
  line-height: 1.45;
  font-weight: 500
}

.cons .chk input {
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  margin-top: 3px;
  accent-color: #07652c
}

.cons .f-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--field-border)
}

.cons .ghost {
  background: none;
  border: 1.5px solid var(--field-border);
  border-radius: 40px;
  padding: 13px 24px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  cursor: pointer;
  transition: .2s
}

.cons .ghost:hover {
  border-color: #07652c;
  color: #07652c
}

.cons .recap {
  border: 1.5px solid var(--field-border);
  border-radius: 14px;
  background: #fbfcf8;
  padding: 4px 18px 12px
}

.cons .recap .r {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 10px 0;
  font-size: 14.5px
}

.cons .recap .r+.r {
  border-top: 1px solid #eef0ea
}

.cons .recap .k {
  color: #7b857c;
  font-weight: 700
}

.cons .recap .v {
  font-weight: 700;
  text-align: right;
  word-break: break-word
}

.cons .done {
  display: none;
  text-align: center;
  padding: 20px 6px
}

.cons .done.on {
  display: block
}

.cons .done .ok {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: #07652c;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px
}

.cons .done h3 {
  font-size: 23px;
  font-weight: 800;
  margin-bottom: 8px
}

.cons .done p {
  color: #55605a;
  font-size: 15px
}

@media (max-width:1080px) {
  .cons .cta-content {
    padding-right: 0
  }

  .cons .form-card {
    transform: none;
    max-height: none;
    overflow: visible;
    width: auto
  }
}

@media (max-width:560px) {
  .cons .fgrid {
    grid-template-columns: 1fr
  }

  .cons .steps .lbl {
    display: none
  }
}

/* ===== +10px d'espacement entre les blocs, jusqu'à Hébergement inclus ===== */
.sec.hub {
  padding-top: calc(clamp(26px, 2.4vw, 38px) + 10px);
  padding-bottom: calc(clamp(34px, 3.2vw, 52px) + 10px)
}

.sec.agenda,
.sec.pri,
.sec.news,
.sec.hotels {
  padding-top: calc(clamp(30px, 2.8vw, 46px) + 10px);
  padding-bottom: calc(clamp(34px, 3.2vw, 52px) + 10px)
}

.team {
  padding-top: calc(clamp(45px, 6vw, 45px) + 10px) !important;
  padding-bottom: calc(clamp(45px, 6vw, 45px) + 10px) !important
}

/* ===== Formulaire de contact : version compacte ===== */
.cons {
  --panel-min-h: 600px;
  --form-w: 600px;
  --form-right: 26px
}

.cons .cta {
  padding: 38px 56px
}

.cons .cta-content {
  max-width: 620px;
  padding-right: 30px
}

.cons .cta h1 {
  font-size: 40px;
  margin-bottom: 18px
}

.cons .cta .lead {
  font-size: 16.5px;
  margin-bottom: 0
}

.cons .form-card {
  padding: 22px 26px;
  border-radius: 16px;
  max-height: calc(var(--panel-min-h) - 28px)
}

.cons .form-card h2 {
  font-size: 20px;
  margin-bottom: 14px
}

.cons .steps {
  gap: 7px;
  margin-bottom: 16px
}

.cons .steps .dot {
  width: 25px;
  height: 25px;
  font-size: 12px
}

.cons .steps .lbl {
  font-size: 10.5px;
  letter-spacing: .06em
}

.cons .steps .bar {
  min-width: 8px
}

.cons .grp-title {
  font-size: 10.5px;
  padding-bottom: 8px;
  margin-bottom: 14px
}

.cons .fgrid {
  gap: 10px 14px
}

.cons .field label {
  font-size: 12.5px;
  margin-bottom: 5px
}

.cons .field input,
.cons .field textarea,
.cons .field select {
  padding: 9px 12px;
  font-size: 13.5px;
  border-radius: 9px;
  border-width: 1px
}

.cons .field select {
  padding-right: 32px;
  background-size: 15px;
  background-position: right 10px center
}

.cons .field textarea {
  min-height: 62px
}

.cons .field .hint {
  font-size: 11.5px;
  margin-top: 4px
}

.cons .chk {
  font-size: 13px;
  gap: 8px
}

.cons .chk input {
  width: 14px;
  height: 14px;
  margin-top: 2px
}

.cons .f-nav {
  margin-top: 16px;
  padding-top: 14px
}

.cons .form-card .submit {
  padding: 10px 22px;
  font-size: 14.5px
}

.cons .ghost {
  padding: 10px 18px;
  font-size: 14px;
  border-width: 1px
}

.cons .recap {
  padding: 2px 14px 10px;
  border-radius: 11px;
  border-width: 1px
}

.cons .recap .r {
  padding: 8px 0;
  font-size: 13px
}

.cons .done {
  padding: 14px 4px
}

.cons .done .ok {
  width: 52px;
  height: 52px;
  margin-bottom: 12px
}

.cons .done h3 {
  font-size: 20px
}

.cons .done p {
  font-size: 14px
}


/* =========================================================
   AJUSTEMENTS POUR LE CONTENU DE LA CONFÉRENCE
   ========================================================= */

/* --- Hero : titre long sur deux lignes + surtitre --- */
#heroSection .kicker {
  display: inline-block;
  align-self: flex-start;
  border: 1.5px solid rgba(255, 255, 255, .6);
  border-radius: 40px;
  padding: 7px 18px;
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  margin-bottom: 18px;
  letter-spacing: .02em
}

#heroSection .h1 {
  font-size: min(4.1vw, 7.4vh, 74px);
  white-space: normal;
  text-wrap: balance
}

#heroSection .lead {
  max-width: min(680px, 50%);
  text-align: left
}

#heroSection .menu {
  font-size: 15px;
  gap: 26px
}

#heroSection .menu li {
  margin-right: 26px
}

#heroSection .contact {
  width: auto;
  padding: 0 14px;
  white-space: nowrap
}

#heroSection .story h2 {
  font-size: clamp(26px, 2vw, 34px)
}

#heroSection .story p {
  font-size: 14.5px
}

#heroSection .vision h3 {
  font-size: clamp(20px, 1.5vw, 24px)
}

#heroSection .word {
  font-size: 96px;
  letter-spacing: -2px
}

/* --- Hub : pastilles numérotées à la place des icônes --- */
.hub .card .ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 13px;
  background: rgba(255, 255, 255, .18);
  font-size: 17px;
  font-weight: 900;
  letter-spacing: .02em;
  margin-bottom: 18px
}

.hub .card p {
  font-size: 15.5px;
  line-height: 1.52
}

.hub .fig-n {
  font-size: clamp(34px, 3.2vw, 48px)
}

/* --- Programme : cartes-jour avec liste --- */
.agenda .ev {
  padding: 26px 26px 22px
}

.agenda .ev .cat {
  margin: 0 0 12px;
  font-size: 11.5px;
  letter-spacing: .16em;
  opacity: .9
}

.agenda .ev h3 {
  font-size: 21px;
  line-height: 1.24;
  text-transform: none;
  margin: 0 0 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(255, 255, 255, .22)
}

.agenda .pts {
  list-style: none;
  margin: 0 0 22px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 11px
}

.agenda .pts li {
  position: relative;
  padding-left: 22px;
  font-size: 15px;
  line-height: 1.45;
  color: #eaf6ea
}

.agenda .pts li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 8px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--c-gold)
}

.agenda .dayl {
  margin-top: auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: var(--c-gold);
  color: #12300f;
  border-radius: 40px;
  padding: 11px 22px;
  font-size: 14.5px;
  font-weight: 800;
  transition: .2s
}

.agenda .dayl:hover {
  background: #fff;
  transform: translateY(-1px)
}

/* --- Intervenants : initiales à la place des photos --- */
.team .card .avatar-ph {
  background: linear-gradient(160deg, #1a7a3f, #0f5a2c 58%, #08361b)
}

.team .card .avatar-ph .ini {
  font-size: clamp(44px, 4vw, 62px);
  font-weight: 800;
  letter-spacing: .02em;
  color: rgba(255, 255, 255, .9);
  font-family: 'Lato', sans-serif
}

.team .meta .name {
  font-size: 21px
}

.team .meta .role {
  font-size: 10.5px;
  letter-spacing: .11em
}

/* --- Appel à communications : panneau statut à la place de la photo --- */
.pri .statut {
  color: #fff
}

.pri .st-eb {
  display: inline-block;
  border: 1.5px solid var(--c-gold);
  border-radius: 40px;
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 700;
  margin-bottom: 20px
}

.pri .statut strong {
  display: block;
  font-size: clamp(38px, 3.6vw, 54px);
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--c-gold);
  margin-bottom: 16px
}

.pri .statut p {
  font-size: 16px;
  line-height: 1.55;
  color: rgba(255, 255, 255, .88);
  max-width: 400px
}

.pri .specs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 34px
}

.pri .specs div {
  background: rgba(255, 255, 255, .10);
  border-radius: 14px;
  padding: 14px 16px
}

.pri .specs span {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .7);
  margin-bottom: 5px
}

.pri .specs b {
  font-size: 15.5px;
  font-weight: 800;
  color: #fff;
  word-break: break-word
}

.pri .specs a {
  color: var(--c-gold)
}

.pri .pri-h {
  font-size: clamp(28px, 3vw, 42px);
  font-weight: 900;
  letter-spacing: -.025em;
  line-height: 1.06;
  margin: 16px 0 4px
}

.pri .num {
  font-size: 26px
}

.pri .theme {
  font-size: 18px;
  line-height: 1.25;
  padding: 14px 0 14px 80px;
  min-height: 62px
}

/* --- Infos pratiques : vignettes sans photo + texte --- */
.news .card {
  display: flex;
  flex-direction: column
}

.news .thumb {
  display: block;
  background: #a9542f
}

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

.ph-lbl {
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .85)
}

.news .meta span {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, .18);
  border-radius: 30px;
  padding: 5px 13px
}

.news h3 {
  font-size: 20px;
  line-height: 1.22;
  margin: 12px 6px 8px
}

.news .txt {
  font-size: 15px;
  line-height: 1.5;
  margin: 0 6px;
  color: rgba(255, 255, 255, .9)
}

.news .learn {
  margin-top: auto
}

/* --- Hôtels : contacts cliquables --- */
.hotels tbody td a {
  color: var(--c-green);
  font-weight: 700
}

.hotels tbody td a:hover {
  text-decoration: underline
}

/* --- Partenaires : vignettes libellées + texte --- */
.opp .ph {
  display: grid;
  place-items: center;
  background: linear-gradient(150deg, #2f7fa8, #0f5c82 58%, #04374f)
}

.opp h3 {
  font-size: 24px;
  line-height: 1.1
}

.opp .txt {
  margin: 0 6px 20px;
  font-size: 15px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .86)
}

/* --- Ressources : icône de téléchargement --- */
.res .more svg {
  width: 16px;
  height: 16px
}

.res .card h3 {
  min-height: auto
}

/* --- Inscription : encadrés du panneau --- */
.cons .cta-notes {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 26px;
  max-width: 520px
}

.cons .cta-note {
  background: rgba(255, 255, 255, .10);
  border-radius: 14px;
  padding: 13px 18px;
  border-left: 3px solid var(--c-gold)
}

.cons .cta-note b {
  display: block;
  font-size: 14px;
  font-weight: 800;
  color: var(--c-gold);
  margin-bottom: 4px
}

.cons .cta-note span {
  font-size: 14.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .88)
}

.cons .cta-note.help {
  border-left-color: #fff
}

.cons .cta-note.help b {
  color: #fff
}

.cons .cta-note a {
  color: var(--c-gold)
}

.cons .cta .lead {
  margin-bottom: 0
}

/* --- Footer : logo texte + note --- */
.ftr .brand .logo .mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 16px;
  background: var(--lime);
  color: #0a1f0d;
  font-size: 17px;
  font-weight: 900;
  letter-spacing: .06em
}

.p2-note {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255, 255, 255, .86);
  margin: 4px 0 0;
  max-width: 460px
}

.ftr .about p {
  font-size: 20px;
  line-height: 1.55
}

@media (max-width:980px) {
  .pri .specs {
    grid-template-columns: 1fr
  }

  #heroSection .lead {
    max-width: none
  }
}

/* =========================================================
   PASSE D'AJUSTEMENTS — alignements et respirations
   ========================================================= */

/* 1 · En-têtes de section : le titre démarre sur la ligne de la pastille */
.s-head {
  align-items: flex-start
}

.s-head .pill {
  margin-top: 4px
}

.s-head h2 {
  margin: 0 0 12px
}

.s-head .cta-btn {
  margin-top: 2px
}

.hub .top {
  align-items: flex-start
}

.hub .lead .pill {
  margin-top: 4px
}

.hub h2 {
  margin: 0 0 12px
}

/* 2 · Intervenants : noms et fonctions sur une trame régulière */
.team .meta {
  left: 20px;
  right: 16px;
  bottom: 18px
}

.team .meta .name {
  font-size: 19px;
  line-height: 1.18;
  min-height: 2.36em;
  display: flex;
  align-items: flex-end
}

.team .meta .role {
  font-size: 10px;
  letter-spacing: .1em;
  line-height: 1.35;
  min-height: 2.7em;
  margin-top: 8px
}

.team .card .avatar-ph .ini {
  font-size: clamp(40px, 3.4vw, 54px)
}

.team .card::after {
  background: linear-gradient(to top, rgba(8, 12, 10, .88) 0%,
      rgba(8, 12, 10, .55) 34%, rgba(0, 0, 0, 0) 62%)
}

/* 3 · Appel à communications : colonnes de hauteur égale */
.pri .grid2 {
  align-items: stretch
}

.pri .left {
  display: flex
}

.pri .photo {
  flex: 1;
  min-height: 0;
  height: auto;
  padding: 0;
  display: block;
  background: linear-gradient(160deg, #9fb4c0, #6f8a93 55%, #2c3b30)
}

.pri .right {
  display: flex;
  flex-direction: column
}

.pri .pri-h {
  margin: 14px 0 10px
}

.pri .pri-sub {
  font-size: 16px;
  line-height: 1.55;
  color: var(--muted);
  max-width: 560px;
  margin: 0
}

.pri .feats {
  margin-top: 22px;
  flex: 1;
  justify-content: space-between;
  gap: 14px
}

.pri .award {
  width: 200px;
  height: 200px;
  padding: 22px
}

.pri .award h4 {
  font-size: 15px;
  line-height: 1.3
}

/* 4 · Infos pratiques : texte détaché du bouton */
.news .txt {
  margin-bottom: 20px
}

.news .learn {
  margin: 0 6px
}

.news .card {
  padding-bottom: 22px
}

/* 5 · Hébergement : moins d'air au-dessus */
.sec.hotels {
  padding-top: clamp(22px, 2vw, 34px)
}

/* 6 · Ressources : filet plus court */
.res h2 .rule {
  width: min(140px, 16vw)
}

/* 7 · Inscription : les deux blocs calés sur les mêmes marges */
.cons {
  --panel-min-h: 680px
}

.cons .cta {
  padding: 40px 56px;
  align-items: stretch
}

.cons .cta-content {
  display: flex;
  flex-direction: column;
  justify-content: center
}

.cons .form-card {
  top: 40px;
  bottom: 40px;
  transform: none;
  height: auto;
  max-height: none;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 26px 28px;
}

.cons .form-card h2 {
  font-size: 22px;
  margin-bottom: 16px;
  flex: none
}

.cons .steps {
  flex: none
}

.cons #regForm {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 4px
}

.cons #regForm::-webkit-scrollbar {
  width: 6px
}

.cons #regForm::-webkit-scrollbar-thumb {
  background: #dfe3da;
  border-radius: 6px
}

/* formulaire : typographie un cran au-dessus */
.cons .steps .dot {
  width: 27px;
  height: 27px;
  font-size: 13px
}

.cons .steps .lbl {
  font-size: 11px
}

.cons .grp-title {
  font-size: 11.5px;
  margin-bottom: 16px
}

.cons .fgrid {
  gap: 13px 18px
}

.cons .field label {
  font-size: 13.5px;
  margin-bottom: 6px
}

.cons .field input,
.cons .field textarea,
.cons .field select {
  padding: 11px 13px;
  font-size: 14.5px;
  border-radius: 10px
}

.cons .field select {
  padding-right: 34px
}

.cons .field textarea {
  min-height: 74px
}

.cons .field .hint {
  font-size: 12px
}

.cons .chk {
  font-size: 13.5px
}

.cons .form-card .submit {
  padding: 12px 26px;
  font-size: 15px
}

.cons .ghost {
  padding: 12px 22px;
  font-size: 14.5px
}

.cons .recap .r {
  font-size: 13.5px
}

@media (max-width:1080px) {
  .cons .form-card {
    position: static;
    top: auto;
    bottom: auto;
    height: auto;
    overflow: visible
  }

  .cons #regForm {
    overflow: visible
  }
}


/* =========================================================
   SLIDE DE RÉFÉRENCE — repris tel quel, isolé sous #hero
   ========================================================= */

:root {
  --green-dark: #0b5a1c;
  --lime: #8dcc3a;
  --yellow: #ffc20a;
  --ink: #1b1b1b;
  --line: #cfcfcf;
  --pad: 2rem;

}

@media (min-width:768px) {
  :root {
    --pad: 3.5rem
  }
}

@media (min-width:1024px) {
  :root {
    --pad: 5rem
  }
}

#heroSection * {
  box-sizing: border-box;
  margin: 0;
  padding: 0
}

#heroSection {
  font-family: "Lato", system-ui, sans-serif;
  background: #fff;
  color: var(--ink)
}

#heroSection a {
  color: inherit;
  text-decoration: none
}

#heroSection button {
  font-family: inherit;
  cursor: pointer;
  border: 0;
  background: none
}

#heroSection button:focus-visible,
#heroSection a:focus-visible {
  outline: 3px solid var(--yellow);
  outline-offset: 3px
}

#heroSection .slide-screen {
  height: 100vh;
  min-height: 100px;
  display: flex;
  flex-direction: column
}

#heroSection .gl-stage {
  position: relative;
  flex: 1 1 0%;
  min-height: 0;
  margin: 1rem .75rem;
  border-radius: 28px;
  overflow: hidden;
  background: #fff;
}

@media (min-width:768px) {
  #heroSection .gl-stage {
    margin: 1.25rem
  }
}

#heroSection .hero {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(58% 70% at 104% 96%, #f7c58f 0%, rgba(247, 197, 143, 0) 60%),
    radial-gradient(50% 70% at 92% 20%, #fff9ec 0%, rgba(255, 249, 236, 0) 62%),
    linear-gradient(112deg, #0f8a2e 0%, #14a139 34%, #4bb56b 55%, #a5d4a8 72%, #f4e2c0 100%);
}

#heroSection .sky {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  overflow: hidden;
  z-index: 1;
  pointer-events: none
}

#heroSection .cloud {
  position: absolute;
  border-radius: 50%;
  background: #fff;
  filter: blur(16px)
}

#heroSection .c1 {
  width: 380px;
  height: 120px;
  right: -40px;
  bottom: -10px;
  opacity: .9
}

#heroSection .c2 {
  width: 300px;
  height: 110px;
  right: 230px;
  bottom: 6px;
  opacity: .75
}

#heroSection .c3 {
  width: 440px;
  height: 150px;
  right: 40px;
  bottom: -60px;
  opacity: .95
}

#heroSection .c4 {
  width: 320px;
  height: 110px;
  right: 430px;
  bottom: -30px;
  opacity: .5;
  background: #ffe9cf
}

#heroSection .c5 {
  width: 210px;
  height: 80px;
  right: 130px;
  bottom: 96px;
  opacity: .45
}

#heroSection .plane {
  position: absolute;
  right: 1%;
  bottom: 6%;
  width: min(60%, 940px);
  filter: drop-shadow(0 26px 30px rgba(20, 60, 30, .22));
  animation: float 8s ease-in-out infinite;
}

@keyframes float {
  50% {
    transform: translateY(-8px)
  }
}

@media (prefers-reduced-motion:reduce) {
  #heroSection .plane {
    animation: none
  }
}

#heroSection .inner {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  flex-direction: column
}

#heroSection .topbar {
  margin: 22px 30px 0;
  flex: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  color: #fff
}

#heroSection .brand {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none
}

#heroSection .seal {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  flex: none;
  background: radial-gradient(circle at 50% 46%, #f4c400 0 36%, #fff 37% 50%, #128a2e 51%);
  border: 2px solid #fff;
  box-shadow: 0 0 0 1.5px #0b5a1c
}

#heroSection .brand b {
  display: block;
  font-size: 17px;
  font-weight: 900;
  line-height: 1
}

#heroSection .brand small {
  display: block;
  font-size: 9px;
  margin-top: 3px;
  opacity: .95
}

#heroSection .menu {
  display: flex;
  align-items: center;
  gap: 34px;
  list-style: none;
  font-weight: 700;
  font-size: 16px;
  flex: 1 1 auto;
  justify-content: center
}

#heroSection .menu li {
  position: relative;
  padding: 6px 0;
  white-space: nowrap
}

#heroSection .menu sup {
  color: var(--yellow);
  font-size: 13px;
  margin-left: 2px;
  vertical-align: top
}

#heroSection .menu li.active {
  padding: 6px 16px
}

#heroSection .menu li.active::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -8px;
  height: 2px;
  background: var(--yellow)
}

#heroSection .menu a:hover {
  opacity: .85
}

#heroSection .lang {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 15px
}

#heroSection .flag {
  width: 19px;
  height: 13px;
  border-radius: 2px;
  position: relative;
  overflow: hidden;
  background: repeating-linear-gradient(#b22234 0 1.9px, #fff 1.9px 3.8px)
}

#heroSection .flag::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 44%;
  height: 55%;
  background: #3c3b6e
}

#heroSection .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border-radius: 999px;
  font-weight: 700;
  transition: transform .15s
}

#heroSection .btn:hover {
  transform: translateY(-1px)
}

#heroSection .btn-dark {
  background: var(--green-dark);
  color: #fff
}

#heroSection .dot {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--lime);
  display: grid;
  place-items: center;
  color: var(--green-dark);
  font-size: 10px;
  font-weight: 900
}

#heroSection .contact {
  flex: none;
  width: 106px;
  height: 32px;
  font-size: 12.5px;
  gap: 8px
}

#heroSection .text {
  flex: 1 1 0%;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 16px var(--pad) 0;
  margin-bottom: clamp(26px, 6.5vh, 80px);
  color: #fff
}

#heroSection .h1 {
  font-size: min(4.6vw, 8.4vh, 86px);
  line-height: 1.03;
  font-weight: 900;
  letter-spacing: -1.2px;
  margin-bottom: clamp(12px, 2.6vh, 26px)
}

#heroSection .lead {
  font-size: min(1.42vw, 2.55vh, 26.5px);
  line-height: 1.36;
  text-align: justify;
  max-width: min(795px, 52%);
  margin-bottom: clamp(16px, 3.2vh, 32px)
}

#heroSection .read {
  align-self: flex-start;
  width: 222px;
  height: clamp(42px, 5.2vh, 50px);
  flex: none;
  background: var(--yellow);
  color: var(--ink);
  font-size: 17px;
  gap: 14px
}

#heroSection .cards {
  position: relative;
  flex: none;
  height: clamp(232px, 30vh, 280px);
  margin-bottom: 24px
}

#heroSection .story {
  position: absolute;
  left: var(--pad);
  top: 0;
  bottom: 0;
  width: calc(50% - var(--pad) - 40px);
  background: var(--lime);
  border-radius: 22px;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 26px;
  padding: 0 30px 0 40px
}

#heroSection .story h2 {
  font-size: clamp(28px, 2.1vw, 38px);
  line-height: 1.05;
  font-weight: 900;
  margin-bottom: 22px
}

#heroSection .story p {
  font-size: 15px;
  line-height: 1.45;
  text-align: justify;
  max-width: 390px
}

#heroSection .video {
  position: relative;
  width: 180px;
  height: 180px;
  border-radius: 16px;
  overflow: hidden;
  flex: none;
  background: linear-gradient(180deg, #a9d0f2 0 46%, #c39355 46% 100%);
  box-shadow: 0 10px 24px rgba(0, 0, 0, .12)
}

#heroSection .fig {
  position: absolute;
  bottom: 0;
  border-radius: 40px 40px 4px 4px
}

#heroSection .f1 {
  left: 22px;
  width: 56px;
  height: 118px;
  background: #f2f2f2
}

#heroSection .f2 {
  right: 28px;
  width: 52px;
  height: 116px;
  background: #dcff5a
}

#heroSection .play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 66px;
  height: 66px;
  border-radius: 50%;
  background: rgba(22, 150, 50, .9);
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 22px;
  box-shadow: 0 0 0 8px rgba(22, 150, 50, .35);
  transition: transform .15s
}

#heroSection .video:hover .play {
  transform: scale(1.06)
}

#heroSection .rgroup {
  position: absolute;
  left: calc(50% + 20px);

  top: -40px;
  bottom: 0;
  display: flex;
  gap: 24px
}

#heroSection .stats {
  flex: 1 1 auto;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: #fff;
  padding: 26px 28px 26px 34px;
  display: flex;
  flex-direction: column
}

#heroSection .stats .intro {
  font-size: clamp(16px, 1.15vw, 19px);
  line-height: 1.34;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 16px
}

#heroSection .row {
  display: flex;
  flex: 1
}

#heroSection .col {
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  min-width: 0
}

#heroSection .col+.col {
  border-left: 1px solid var(--line);
  padding-left: 22px;
  margin-left: 6px
}

#heroSection .big {
  font-size: clamp(34px, 2.6vw, 48px);
  font-weight: 900;
  letter-spacing: -1px;
  line-height: 1
}

#heroSection .label {
  font-size: clamp(15px, 1.1vw, 18.5px);
  font-weight: 700;
  line-height: 1.3;
  margin-top: auto
}

#heroSection .grid-ico {
  width: 64px;
  height: 48px;
  border-radius: 8px;
  background: var(--lime);
  display: grid;
  place-items: center
}

#heroSection .grid-ico i {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2px;
  width: 28px;
  height: 18px
}

#heroSection .grid-ico b {
  background: #fff;
  opacity: .9;
  border-radius: 1px
}

#heroSection .vision {
  flex: 0 0 clamp(268px, 22.5%, 340px);
  position: relative;
  overflow: hidden;
  background: var(--lime);
  border-radius: 22px;
  padding: 34px 0 0 34px
}

#heroSection .vision h3 {
  font-size: clamp(23px, 1.7vw, 28px);
  font-weight: 900;
  line-height: 1.25;
  position: relative;
  z-index: 2
}

#heroSection .word {
  position: absolute;
  right: -30px;
  bottom: -4px;
  font-size: 104px;
  font-weight: 900;
  color: #fff;
  letter-spacing: -1px;
  line-height: 1;
  transform: rotate(-26deg) skewX(-8deg);
  transform-origin: bottom right;
  text-shadow: 1px 1px 0 #7fbccd, 2px 2px 0 #77b6c8, 4px 4px 0 #6faec0, 6px 6px 0 #67a6b8, 8px 8px 0 #5f9eb0, 10px 10px 0 #5796a8, 12px 12px 0 #4f8ea0, 14px 14px 0 #478698, 16px 16px 0 #3f7e90;
  z-index: 1;
  user-select: none;
  pointer-events: none
}

#heroSection .explore {
  position: absolute;
  left: 20px;
  bottom: 24px;
  width: 240px;
  height: 50px;
  font-size: 18px;
  gap: 12px;
  z-index: 3
}

#heroSection .explore .dot {
  width: 22px;
  height: 22px;
  font-size: 12px
}


@media (max-width:1279px) {
  #heroSection .slide-screen {
    height: auto
  }

  #heroSection .gl-stage {
    background:
      linear-gradient(160deg, rgba(6, 42, 78, .95) 0%, rgba(12, 80, 138, .88) 45%, rgba(28, 124, 188, .58) 100%),
      url("images/hero.jpg");
    background-size: cover, cover;
    background-position: center, center 30%;
    background-repeat: no-repeat, no-repeat;
  }

  #heroSection .hero {
    display: none
  }

  #heroSection .plane {
    display: none
  }

  #heroSection .sky {
    height: 0
  }

  #heroSection .topbar {
    flex-wrap: wrap
  }

  #heroSection .menu {
    order: 3;
    flex-basis: 100%;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 18px
  }

  #heroSection .text {
    margin: 56px 0 40px
  }

  #heroSection .lead {
    max-width: none
  }

  #heroSection .cards {
    height: auto;
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 0 var(--pad) 28px;
    margin-bottom: 0
  }

  #heroSection .story,
  #heroSection .rgroup {
    position: static;
    width: auto
  }

  #heroSection .story {
    flex-direction: column;
    align-items: flex-start;
    padding: 28px;
    height: auto
  }

  #heroSection .rgroup {
    flex-direction: column
  }

  #heroSection .stats,
  #heroSection .vision {
    flex: none;
    min-height: 270px
  }
}

/* ===== Image de fond du slide + voile bleu ===== */
#heroSection .hero {
  background:
    /* >>> OPACITÉ DU VOILE : le 4e nombre de chaque rgba() (0 = photo nue, 1 = couleur pleine).
           Pour éclaircir la DROITE du slide, baissez les deux dernières lignes (78% et 100%). <<< */
    linear-gradient(105deg,
      rgba(6, 42, 78, .95) 0%,
      /* gauche  — sous le titre, garder élevé pour la lisibilité */
      rgba(10, 68, 120, .88) 34%,
      /* centre gauche */
      rgba(18, 102, 165, .50) 58%,
      /* milieu */
      rgba(36, 140, 200, .18) 78%,
      /* DROITE — baissez ici pour dévoiler la photo */
      rgba(206, 231, 246, .04) 100%),
    /* bord droit */
    url("images/hero.jpg");
  background-size: cover, cover;
  background-position: center, center 30%;
  background-repeat: no-repeat, no-repeat;
}

/* logo */
#heroSection .seal {
  width: auto;
  height: 62px;
  border-radius: 0;
  background: none;
  border: 0;
  box-shadow: none;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none
}

#heroSection .seal img {
  height: 100%;
  width: auto;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, .35))
}

/* accents du slide accordés au bleu */
#heroSection .menu li.active::after {
  background: #7fd0ff
}

#heroSection .menu sup {
  color: #7fd0ff
}

#heroSection .contact {
  background: #062a4e
}

#heroSection .contact .dot {
  background: #7fd0ff;
  color: #062a4e
}

#heroSection .read {
  background: #ffc20a
}

#heroSection .kicker {
  border-color: rgba(255, 255, 255, .7)
}

#heroSection .story {
  background: #12558f
}

#heroSection .vision {
  background: #1a73b8
}

#heroSection .explore {
  background: #062a4e
}

#heroSection .explore .dot {
  background: #7fd0ff;
  color: #062a4e
}

#heroSection .grid-ico {
  background: #1a73b8
}

#heroSection .play {
  background: rgba(18, 85, 143, .9);
  box-shadow: 0 0 0 8px rgba(18, 85, 143, .35)
}

#heroSection .word {
  text-shadow: 1px 1px 0 #9ec9e0, 2px 2px 0 #96c2da, 4px 4px 0 #8ebad2, 6px 6px 0 #86b2ca,
    8px 8px 0 #7eaac2, 10px 10px 0 #76a2ba, 12px 12px 0 #6e9ab2, 14px 14px 0 #6692aa, 16px 16px 0 #5e8aa2
}

/* l'avion et les nuages étaient des repères : on les retire */
#heroSection .plane,
#heroSection .cloud {
  display: none
}

/* lisibilité du texte sur la photo */
#heroSection .h1 {
  text-shadow: 0 2px 14px rgba(4, 30, 12, .45)
}

#heroSection .lead {
  text-shadow: 0 1px 10px rgba(4, 30, 12, .4)
}

#heroSection .topbar,
#heroSection .brand,
#heroSection .menu {
  text-shadow: 0 1px 8px rgba(4, 30, 12, .4)
}
  
/* ===== Emplacements d'images des cartes Partenaires =====
   Le <img> est vide : dès qu'un src est renseigné, la photo couvre la vignette
   et le libellé disparaît. Sans src, l'aplat coloré et le libellé restent. */
.opp .ph{position:relative}
.opp .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  display:block;z-index:1}
.opp .ph img[src=""],.opp .ph img.vide{display:none}
.opp .ph img:not([src=""]):not(.vide) ~ .ph-lbl{display:none}
.opp .ph .ph-lbl{position:relative;z-index:2}

/* ===== Retour en haut de page ===== */
#backTop{
  position:fixed;right:22px;bottom:22px;z-index:900;
  width:50px;height:50px;border-radius:50%;
  background:#062a4e;color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 26px -8px rgba(0,0,0,.45);cursor:pointer;
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .28s ease,transform .28s ease,visibility .28s,background .2s;
}
#backTop.on{opacity:1;visibility:visible;transform:none}
#backTop:hover{background:#12558f;transform:translateY(-3px)}
#backTop svg{width:22px;height:22px;position:relative;z-index:2}
#backTop .ring{z-index:1}
/* anneau logé à l'intérieur du bouton, le long de son bord */
#backTop .ring{position:absolute;inset:0;border-radius:50%;pointer-events:none;
  transform:rotate(-90deg);width:100%;height:100%}
#backTop .ring circle{fill:none;stroke-width:3.5}
#backTop .ring .bg{stroke:rgba(255,255,255,.16)}
#backTop .ring .fg{stroke:#7fd0ff;stroke-linecap:round;
  stroke-dasharray:var(--len);stroke-dashoffset:var(--off);transition:stroke-dashoffset .1s linear}
@media (max-width:640px){#backTop{right:14px;bottom:14px;width:44px;height:44px}
  #backTop svg:not(.ring){width:19px;height:19px}
  #backTop .ring circle{stroke-width:4}}
@media (prefers-reduced-motion:reduce){#backTop{transition:opacity .01s}}


/* ===== Navigation one-page ===== */
html{scroll-behavior:smooth}
section[id]{scroll-margin-top:18px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* =========================================================
   NEWSLETTER — messages du formulaire du pied de page

   Le kit calibre .is-ok / .is-err pour un fond clair ; le bloc
   du pied de page est sur #8e1d36. On reprend donc les teintes
   claires prevues par le kit pour fond sombre.
   ========================================================= */
.ftr .news .erca-nl-msg {
  margin-top: 14px;
  border-radius: 12px;
  font-family: 'Source Sans 3', system-ui, sans-serif;
  font-size: 15px;
}

.ftr .news .erca-nl-msg.is-ok {
  background: rgba(255, 255, 255, .14);
  color: #d7ffe6;
  border: 1px solid rgba(215, 255, 230, .45);
}

.ftr .news .erca-nl-msg.is-err {
  background: rgba(0, 0, 0, .18);
  color: #ffdfdb;
  border: 1px solid rgba(255, 223, 219, .45);
}

/* Le kit rend un <form class="row"> la ou le gabarit avait un <div> :
   on neutralise la marge propre au form. */
.ftr .news form.row {
  margin: 0;
}

/* =========================================================
   INSCRIPTION — retour d'erreur et reference
   ========================================================= */
.cons .reg-err {
  display: none;
  margin: 0 0 16px;
  padding: 12px 16px;
  border-radius: 10px;
  background: rgba(226, 55, 68, .08);
  border: 1px solid rgba(226, 55, 68, .45);
  color: #a5271b;
  font-size: 15px;
  line-height: 1.45;
}

.cons .reg-err.on {
  display: block;
}

.cons .done .ref {
  margin-top: 10px;
  font-weight: 700;
  letter-spacing: .5px;
  color: var(--c-blue);
}


/* =========================================================
   CORRECTIONS D'AFFICHAGE MOBILE

   Des règles responsives existent plus haut dans cette feuille,
   mais deux passes d'ajustements écrites ensuite les écrasent à
   spécificité égale — par exemple « .pri .photo { min-height:420px } »
   prévu sous 980 px, annulé plus bas par « height:auto ».
   Ce bloc est volontairement placé en dernier pour rétablir le
   comportement attendu sans toucher aux règles d'origine.
   ========================================================= */

/* ---------------------------------------------------------
   1 · HERO

   « .inner » est en position:absolute, donc hors du flux : il ne
   donne aucune hauteur à son conteneur. Tant que « .slide-screen »
   valait 100vh, « .gl-stage » était étiré par flex ; dès que la
   hauteur passe en auto sous 1280 px, la chaîne s'effondre à zéro
   et le hero disparaît entièrement. On remet le contenu dans le flux.
   --------------------------------------------------------- */
@media (max-width: 1279px) {
  #heroSection .slide-screen {
    height: auto;
    min-height: 0;
  }

  #heroSection .gl-stage {
    flex: 0 0 auto;
    min-height: 0;
  }

  #heroSection .inner {
    position: relative;
    inset: auto;
  }

  /* Même cause : ce bloc se réduisait à zéro et masquait le titre. */
  #heroSection .text {
    flex: none;
    min-height: 0;
    overflow: visible;
    padding-bottom: 10px;
  }
}

/* Le titre est dimensionné en 4.6vw, soit 17 px sur un téléphone.
   On repasse sur une échelle lisible en dessous du format tablette. */
@media (max-width: 900px) {
  #heroSection .h1 {
    font-size: clamp(32px, 7.4vw, 58px);
    letter-spacing: -.5px;
  }

  #heroSection .lead {
    font-size: clamp(15px, 3.6vw, 18px);
  }

  #heroSection .story h2 {
    font-size: clamp(24px, 5.4vw, 34px);
  }

  #heroSection .vision h3 {
    font-size: clamp(22px, 5vw, 30px);
  }
}

@media (max-width: 640px) {
  #heroSection .gl-stage {
    margin: .75rem .5rem;
    border-radius: 20px;
  }

  #heroSection .topbar {
    margin: 18px 20px 0;
  }

  /* Deux blocs de 270 px chacun allongent inutilement la page. */
  #heroSection .stats,
  #heroSection .vision {
    min-height: 0;
  }
}

/* ---------------------------------------------------------
   2 · INFORMATIONS PRATIQUES

   Les quatre cartes vivent dans un rail flex clippé par
   « overflow:hidden », prévu pour être défilé — mais aucun script
   ne pilote ce rail. Sous 640 px, chaque carte occupant 100 % de
   la largeur, seule la première restait atteignable. On fait
   passer les cartes à la ligne plutôt que de les clipper.
   --------------------------------------------------------- */
@media (max-width: 980px) {
  .news .vp {
    overflow: visible;
  }

  .news .track {
    flex-wrap: wrap;
    transform: none;
    transition: none;
  }

  .news .card {
    flex: 0 0 calc((100% - 26px) / 2);
  }
}

@media (max-width: 640px) {
  .news .card {
    flex: 0 0 100%;
  }
}

/* ---------------------------------------------------------
   3 · APPEL À COMMUNICATIONS

   Le cadre de l'image ne contient qu'un <img> en position:absolute.
   Sur grand écran il est étiré par « align-items:stretch » de la
   grille ; en une seule colonne, plus rien ne l'étire et sa hauteur
   tombe à zéro — l'image existe mais n'a aucune surface où s'afficher.
   On lui donne donc une hauteur propre.
   --------------------------------------------------------- */
@media (max-width: 980px) {
  .pri .grid2 {
    grid-template-columns: 1fr;
  }

  .pri .left {
    display: block;
  }

  .pri .photo {
    flex: none;
    height: auto;
    min-height: 300px;
    aspect-ratio: 4 / 3;
  }
}

@media (max-width: 560px) {
  .pri .photo {
    min-height: 240px;
    aspect-ratio: 3 / 2;
  }
}

/* ---------------------------------------------------------
   4 · INSCRIPTION

   La carte du formulaire est en position:absolute, calée à droite
   du panneau et centrée par une transformation. La règle prévue
   sous 1080 px la remettait à plat, mais une passe ultérieure lui
   rendait sa transformation et sa hauteur maximale : sur mobile,
   le formulaire se superposait au panneau au lieu de le suivre.
   --------------------------------------------------------- */
@media (max-width: 1080px) {
  .cons .cta {
    min-height: 0;
    padding: 34px 26px;
  }

  .cons .cta-content {
    max-width: none;
    padding-right: 0;
  }

  .cons .cta h1 {
    font-size: clamp(28px, 6.4vw, 40px);
  }

  .cons .form-card {
    position: static;
    transform: none;
    transform-origin: initial;
    width: auto;
    max-height: none;
    overflow: visible;
    margin-top: 22px;
  }
}

/* ---------------------------------------------------------
   5 · GARDE-FOUS

   Aucun média ne doit pouvoir élargir la page au-delà de l'écran.
   --------------------------------------------------------- */
@media (max-width: 980px) {
  #heroSection img,
  .sec img,
  .ftr img {
    max-width: 100%;
  }

  .res .wm {
    display: none;
  }
}

/* ---------------------------------------------------------
   6 · MENU BURGER

   Sous 900 px, la barre du haut faisait passer les six entrees
   sur une troisieme ligne, qui mangeait la hauteur du hero.
   Elles sont regroupees dans un panneau depliant.
   --------------------------------------------------------- */
#heroSection .nav-toggle {
  display: none;
}

@media (max-width: 900px) {
  #heroSection .topbar {
    position: relative;
    flex-wrap: nowrap;
    gap: 12px;
  }

  #heroSection .nav-toggle {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 46px;
    height: 46px;
    flex: none;
    padding: 0 11px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .14);
    border: 1px solid rgba(255, 255, 255, .30);
    cursor: pointer;
  }

  #heroSection .nav-toggle span {
    display: block;
    width: 100%;
    height: 2px;
    background: #fff;
    border-radius: 2px;
    transition: transform .25s ease, opacity .2s ease;
  }

  /* Les trois barres deviennent une croix a l'ouverture. */
  #heroSection .topbar.is-open .nav-toggle span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
  }

  #heroSection .topbar.is-open .nav-toggle span:nth-child(2) {
    opacity: 0;
  }

  #heroSection .topbar.is-open .nav-toggle span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
  }

  #heroSection .menu {
    position: absolute;
    top: calc(100% + 14px);
    left: 0;
    right: 0;
    z-index: 60;
    order: 0;
    flex-basis: auto;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 8px;
    background: rgba(6, 42, 78, .98);
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 16px;
    box-shadow: 0 24px 48px -16px rgba(0, 0, 0, .5);
  }

  #heroSection .topbar.is-open .menu {
    display: flex;
  }

  #heroSection .menu li {
    padding: 0;
    border-radius: 10px;
  }

  #heroSection .menu li+li {
    border-top: 1px solid rgba(255, 255, 255, .10);
  }

  #heroSection .menu li a {
    display: block;
    padding: 14px 16px;
    font-size: 16px;
  }

  /* Le soulignement jaune n'a plus de sens dans une liste verticale. */
  #heroSection .menu li.active {
    padding: 0;
    background: rgba(127, 208, 255, .16);
  }

  #heroSection .menu li.active::after {
    display: none;
  }
}

@media (max-width: 560px) {
  /* Le nom de l'autorite passe a la ligne et pousse le burger : le sceau suffit. */
  #heroSection .brand span:last-child {
    display: none;
  }

  #heroSection .contact {
    padding: 10px 16px;
    font-size: 14px;
  }
}

/* ---------------------------------------------------------
   7 · HERO PLUS COMPACT SUR TELEPHONE

   Empiles, les trois blocs de cartes et leurs marges de grand
   ecran donnaient un hero interminable au defilement.
   --------------------------------------------------------- */
@media (max-width: 640px) {
  #heroSection .text {
    margin: 24px 0 18px;
  }

  #heroSection .lead {
    margin-bottom: 16px;
  }

  #heroSection .cards {
    gap: 14px;
    padding-bottom: 18px;
  }

  #heroSection .story {
    padding: 20px;
    gap: 16px;
  }

  #heroSection .video {
    width: 118px;
    height: 118px;
  }

  #heroSection .stats {
    padding: 20px 22px;
  }

  #heroSection .vision {
    padding: 22px 0 0 22px;
  }

  #heroSection .word {
    font-size: 58px;
  }

  #heroSection .big {
    font-size: 32px;
  }
}

/* ---------------------------------------------------------
   8 · CRÉDIT DE CONCEPTION

   « .ftr .copy » est en #cfd6cb sur fond #8e1d36 : sans traitement
   propre, le lien se confondrait avec le texte de copyright.
   --------------------------------------------------------- */
.ftr .bottom .copy .credit {
  display: inline-block;
  margin-left: 8px;
}

.ftr .bottom .copy .credit a {
  color: #ffffff;
  font-weight: 700;
  text-decoration: none;
  transition: color .2s;
}

.ftr .bottom .copy .credit a:hover,
.ftr .bottom .copy .credit a:focus-visible {
  color: var(--lime);
}

@media (max-width: 560px) {
  /* Sur une colonne etroite, le credit merite sa propre ligne. */
  .ftr .bottom .copy .credit {
    display: block;
    margin-left: 0;
    margin-top: 6px;
  }
}

/* ---------------------------------------------------------
   9 · PORTRAITS DES INTERVENANTS

   Les cartes sans photo gardent leurs initiales sur aplat ;
   celles qui en ont une recoivent un <img> place exactement
   comme l'etait le bloc d'initiales, sous le degrade de
   lisibilite du nom.
   --------------------------------------------------------- */
.team .card img {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Cadrage haut : sur un portrait plus large que la carte,
     un recadrage centre couperait le haut du visage. */
  object-position: center 18%;
}


/* ---------------------------------------------------------
   10 · LECTEUR VIDEO

   Fenetre modale native : <dialog> apporte le piege de focus,
   la touche Echap et le fond assombri sans code supplementaire.
   --------------------------------------------------------- */
.video-modal {
  width: min(1100px, 92vw);
  max-width: none;
  padding: 0;
  border: 0;
  background: transparent;
  overflow: visible;
}

.video-modal::backdrop {
  background: rgba(4, 16, 10, .86);
}

.video-modal__frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .8);
}

.video-modal__frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

.video-modal__close {
  position: absolute;
  top: -52px;
  right: 0;
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .35);
  background: rgba(255, 255, 255, .12);
  color: #fff;
  cursor: pointer;
  transition: background .2s, transform .2s;
}

.video-modal__close:hover {
  background: rgba(255, 255, 255, .24);
  transform: scale(1.06);
}

.video-modal__close svg {
  width: 20px;
  height: 20px;
}

@media (max-width: 640px) {
  .video-modal {
    width: 94vw;
  }

  /* Plus de place au-dessus sur petit ecran : le bouton passe dans l'angle. */
  .video-modal__close {
    top: -48px;
    right: 0;
    width: 38px;
    height: 38px;
  }
}

/* ---------------------------------------------------------
   11 · ADRESSES EMAIL DES HOTELS

   Sous le numero, dans la meme cellule : plus petite et sans
   la graisse du telephone, pour que la colonne garde une
   hierarchie lisible.
   --------------------------------------------------------- */
.hotels tbody td a.mail {
  display: inline-block;
  margin-top: 4px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--muted);
  word-break: break-word;
}

.hotels tbody td a.mail:hover {
  color: var(--c-green);
}


/* ---------------------------------------------------------
   12 · TELECHARGEMENT DES JOURNEES DU PROGRAMME

   Le lien de chaque journee rapporte desormais un fichier au
   lieu d'ouvrir un onglet : la fleche vers la droite laisse la
   place a une fleche de telechargement, qu'il faut dimensionner
   — sans regle, un SVG en ligne occupe toute la largeur.
   --------------------------------------------------------- */
.agenda .dayl svg {
  width: 15px;
  height: 15px;
  flex: none;
}

/* La mention du poids allonge le libelle : sur une carte etroite
   il passe a la ligne plutot que de deborder du bouton. */
.agenda .dayl {
  max-width: 100%;
  flex-wrap: wrap;
  row-gap: 2px;
}
