:root {
  --green: #0F3627; --ink: #14211B; --cream: #FDFBF6; --mint: #EDF3EF; --mint-2: #DCE6DF; --line: #E4EAE5;
  --pink: #C4185B; --pink-hover: #E01F6C; --pink-dark: #A81250; --teal: #3A8F72; --muted: #4C5F55; --muted-2: #5C6E64;
  --display: 'Literata', Georgia, serif;
  --gutter: clamp(20px, 4vw, 56px); --maxw: 1320px; --header-h: 104px;
}
* { box-sizing: border-box; }
/* Un élément masqué par le code (attribut hidden) le reste, même si sa classe lui donne un affichage (.btn, .don-custom…). */
[hidden] { display: none !important; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 12px); }
body { margin: 0; font-family: 'DM Sans', system-ui, sans-serif; color: var(--ink); background: var(--cream); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { max-width: 100%; }
a { color: var(--pink); text-decoration: none; }
a:hover { color: var(--green); }
::selection { background: var(--pink); color: var(--cream); }
:focus-visible { outline: 3px solid var(--pink); outline-offset: 3px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; }
.section { max-width: var(--maxw); margin: 0 auto; padding: 96px 28px 0; }
/* Lien vers une section : on saute la majeure partie de sa marge du haut pour que le titre arrive juste sous l'en-tête. */
.section[id] { scroll-margin-top: -80px; }
#don { scroll-margin-top: -24px; }
.eyebrow { font-size: 14px; font-weight: 600; color: var(--teal); margin-bottom: 18px; }
.eyebrow.pink { color: var(--pink); }
h1, h2, h3 { font-family: var(--display); margin: 0; }
h2.title { font-weight: 600; font-size: clamp(30px, 4.5vw, 46px); line-height: 1; letter-spacing: -.01em; }
.section-head { display: flex; justify-content: space-between; align-items: end; gap: 40px; margin-bottom: 40px; flex-wrap: wrap; }
.section-head p { font-size: 17px; line-height: 1.6; color: var(--muted); margin: 0; max-width: 26em; text-wrap: pretty; }
.btn { display: inline-block; border: 0; cursor: pointer; font-family: inherit; text-align: center; border-radius: 999px; font-weight: 700; transition: background .15s, border-color .15s, color .15s; }
.btn-pink { background: var(--pink); color: #fff; }
.btn-pink:hover { background: var(--pink-hover); color: #fff; }
.btn-green { background: var(--green); color: var(--cream); }
.btn-green:hover { background: var(--ink); color: var(--cream); }
.btn-ghost { color: var(--cream); border: 1.5px solid rgba(253,251,246,.3); font-weight: 500; }
.btn-ghost:hover { border-color: var(--cream); background: rgba(253,251,246,.08); color: var(--cream); }

/* Bandeau d'annonces */
.announce { background: var(--pink); color: #fff; font-size: 15px; }
.announce-row { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 11px 52px; position: relative; text-align: center; line-height: 1.4; }
.announce-row + .announce-row { border-top: 1px solid rgba(255,255,255,.25); }
.announce-row .tag { font-size: 12.5px; font-weight: 600; background: rgba(255,255,255,.2); padding: 3px 9px; border-radius: 999px; flex-shrink: 0; }
.announce a { color: #fff; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.announce button { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); background: none; border: 0; color: #fff; font-size: 22px; cursor: pointer; width: 34px; height: 34px; border-radius: 50%; line-height: 1; }
.announce button:hover { background: rgba(255,255,255,.2); }

/* En-tête : bandeau blanc pleine largeur, logo agrandi */
.site-header { position: sticky; top: 0; z-index: 60; background: #fff; border-bottom: 1px solid var(--line); }
.header-in { display: flex; align-items: center; gap: 24px; padding: 0 var(--gutter); min-height: var(--header-h); }
.logo-link { display: flex; align-items: center; flex-shrink: 0; }
/* Le fichier logo contient beaucoup de marge blanche : on le recadre pour que le logo occupe vraiment la hauteur du bandeau. */
.logo { height: 84px; aspect-ratio: 1.9 / 1; object-fit: cover; object-position: 50% 44%; display: block; }
.main-nav { display: flex; gap: 4px; margin-left: auto; align-items: center; font-size: 16px; font-weight: 500; }
.main-nav a { color: #2C3B33; padding: 11px 15px; border-radius: 999px; white-space: nowrap; display: inline-flex; align-items: center; gap: 8px; }
.main-nav a:hover, .main-nav a[aria-current] { background: var(--mint); color: var(--green); }
.badge { background: var(--pink); color: #fff; font-size: 12px; font-weight: 700; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; }
.header-cta { flex-shrink: 0; padding: 15px 30px; font-size: 16px; }
.menu-btn { display: none; margin-left: auto; background: var(--mint); border: 0; width: 48px; height: 48px; border-radius: 50%; cursor: pointer; flex-direction: column; gap: 5px; align-items: center; justify-content: center; }
.menu-btn span { display: block; width: 20px; height: 2px; background: var(--green); border-radius: 2px; }
@media (max-width: 1080px) {
  :root { --header-h: 84px; }
  .logo { height: 68px; }
  .menu-btn { display: flex; }
  .header-cta { display: none; }
  .main-nav { display: none; position: absolute; top: 100%; left: 0; right: 0; margin: 0; background: #fff; flex-direction: column; align-items: stretch; padding: 12px var(--gutter) 22px; border-bottom: 1px solid var(--line); box-shadow: 0 18px 30px -20px rgba(15,54,39,.3); gap: 2px; }
  .main-nav.open { display: flex; }
  .main-nav a { padding: 15px 16px; font-size: 18px; }
  .main-nav .nav-don { display: block; background: var(--pink); color: #fff; text-align: center; margin-top: 10px; font-weight: 700; }
}
@media (min-width: 1081px) { .main-nav .nav-don { display: none; } }

/* Héros */
.hero { background: var(--green); color: var(--cream); }
.hero-grid { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 48px; align-items: center; }
.hero-copy { padding: 52px 0 64px; }
.pill { display: inline-block; background: rgba(253,251,246,.1); border: 1px solid rgba(253,251,246,.2); padding: 7px 16px; border-radius: 999px; font-size: 14px; font-weight: 600; margin-bottom: 26px; }
.hero h1 { font-weight: 600; font-size: clamp(36px, 5.5vw, 72px); line-height: 1.05; letter-spacing: -.01em; margin: 0 0 24px; text-wrap: balance; }
.hero p { font-size: 19px; line-height: 1.55; color: rgba(253,251,246,.76); margin: 0 0 36px; max-width: 31em; text-wrap: pretty; }
.hero-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.hero-actions .btn { padding: 18px 34px; font-size: 17px; }
.hero-actions .btn-ghost { padding: 18px 30px; }
.hero-photo { align-self: stretch; display: flex; align-items: center; justify-content: center; padding: 28px 0; }
.hero-photo .slot { width: 100%; max-width: 500px; aspect-ratio: 5/6; border-radius: 220px 220px 24px 24px; }

/* Emplacements photo */
.slot { position: relative; overflow: hidden; background: #DCE6DF; }
.slot img { width: 100%; height: 100%; object-fit: cover; display: block; }
.slot:not(.has-img) { background: linear-gradient(160deg, rgba(58,143,114,.35), rgba(15,54,39,.1)), repeating-linear-gradient(135deg, rgba(15,54,39,.07) 0 9px, transparent 9px 18px); }
.hero .slot:not(.has-img) { background: linear-gradient(160deg, rgba(58,143,114,.45), rgba(253,251,246,.06)); }

/* Chiffres */
.stats { max-width: var(--maxw); margin: 0 auto; padding: 28px; display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; }
.stat { background: var(--mint); border-radius: 20px; padding: 28px 26px; }
.stat b { display: block; font-family: var(--display); font-weight: 600; font-size: 38px; line-height: 1; letter-spacing: -.01em; color: var(--green); }
.stat span { display: block; font-size: 14.5px; color: var(--muted); margin-top: 10px; line-height: 1.45; }

/* Don + projets */
.don-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 20px; align-items: stretch; }
.card { background: #fff; border: 1.5px solid var(--line); border-radius: 30px; padding: 44px 40px; display: flex; flex-direction: column; }
.card.mint { background: var(--mint); border-color: transparent; }
.card h3 { font-weight: 600; font-size: clamp(26px, 3.5vw, 34px); letter-spacing: -.025em; color: var(--green); margin-bottom: 10px; }
.card > p { font-size: 16px; line-height: 1.55; color: var(--muted); margin: 0 0 26px; text-wrap: pretty; }
.tabs { display: flex; gap: 6px; margin-bottom: 16px; background: var(--mint); padding: 5px; border-radius: 999px; }
.tabs button { flex: 1; border: 0; cursor: pointer; font: inherit; padding: 12px 8px; border-radius: 999px; font-size: 15px; font-weight: 600; background: transparent; color: var(--muted); }
.tabs button[aria-pressed="true"] { background: var(--green); color: var(--cream); }
.amounts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 22px; }
.amounts button { border: 1.5px solid var(--mint-2); background: #fff; color: var(--green); padding: 15px 4px; border-radius: 14px; font: inherit; font-size: 16px; font-weight: 600; cursor: pointer; }
.amounts button[aria-pressed="true"] { border-color: var(--pink); background: var(--pink); color: #fff; }
.don-sentence { font-size: 14.5px; color: var(--muted); line-height: 1.6; margin-bottom: 24px; min-height: 3em; text-wrap: pretty; }
/* La carte de don garde sa hauteur naturelle (le bouton reste sous les montants, même si la carte « Action en cours »
   voisine est longue) et accompagne le défilement quand les deux cartes sont côte à côte. Empilées (téléphone),
   elle ne doit pas rester collée : elle recouvrirait la carte « Action en cours » placée dessous. */
#don-card { align-self: start; }
@media (min-width: 780px) { #don-card { position: sticky; top: calc(var(--header-h) + 16px); } }
.don-cta { padding: 18px 24px; font-size: 17px; display: block; }
.secure { font-size: 12.5px; color: #8B9A91; text-align: center; margin-top: 14px; }
.don-custom { display: flex; flex-direction: column; gap: 8px; margin: -8px 0 18px; font-size: 14.5px; font-weight: 600; color: var(--green); }
.don-custom-field { display: flex; align-items: center; gap: 10px; font-size: 18px; }
.don-custom-field input { font: inherit; font-weight: 600; flex: 1; min-width: 0; padding: 14px 16px; border: 1.5px solid var(--mint-2); border-radius: 14px; background: #fff; color: var(--green); }
.don-custom-field input:focus { outline: 2px solid var(--pink); outline-offset: 1px; border-color: var(--pink); }
.don-cta[aria-disabled="true"] { opacity: .7; cursor: progress; }
#don-msg.err { margin-top: 14px; }

.project-photo { margin: -44px -40px 28px; height: 190px; border-radius: 28px 28px 0 0; }
.project .kicker { font-size: 14px; font-weight: 600; color: var(--pink); margin-bottom: 16px; }
.project h3 { font-size: 30px; line-height: 1.08; }
.gauge-row { display: flex; gap: 28px; align-items: center; margin-bottom: 24px; }
.gauge { width: 148px; height: 148px; border-radius: 999px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.gauge div { width: 112px; height: 112px; border-radius: 999px; background: var(--mint); display: flex; flex-direction: column; align-items: center; justify-content: center; }
.gauge b { font-family: var(--display); font-weight: 700; font-size: 27px; letter-spacing: -.02em; color: var(--green); }
.gauge span { font-size: 11.5px; color: var(--muted-2); margin-top: 2px; }
.gauge-nums .big { font-family: var(--display); font-weight: 700; font-size: 26px; letter-spacing: -.02em; color: var(--green); }
.gauge-nums .small { font-family: var(--display); font-weight: 700; font-size: 17px; color: var(--green); }
.gauge-nums .lbl { font-size: 13.5px; color: var(--muted-2); }
.gauge-nums .lbl + .small { margin-top: 10px; }
.facts { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 26px; }
.fact { background: #fff; border-radius: 16px; padding: 16px 18px; flex: 1; min-width: 160px; }
.fact b { display: block; font-family: var(--display); font-weight: 600; font-size: 22px; color: var(--green); }
.fact span { display: block; font-size: 13px; color: var(--muted-2); margin-top: 4px; }
.project .btn { margin-top: auto; padding: 17px 24px; font-size: 16px; display: block; }
.no-project { align-items: flex-start; justify-content: center; }

.more-projects { margin-top: 56px; }
.more-projects h3 { font-weight: 600; font-size: 28px; letter-spacing: -.02em; color: var(--green); margin-bottom: 22px; }
.project-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.mini { background: #fff; border: 1px solid var(--line); border-radius: 24px; overflow: hidden; display: flex; flex-direction: column; }
.mini .slot { aspect-ratio: 16/9; }
.mini-body { padding: 26px 26px 28px; display: flex; flex-direction: column; flex: 1; }
.mini .kicker { font-size: 14px; font-weight: 600; color: var(--pink); margin-bottom: 12px; }
.mini h4 { font-family: var(--display); font-weight: 600; font-size: 22px; line-height: 1.15; letter-spacing: -.02em; color: var(--green); margin: 0 0 10px; }
.mini p { font-size: 15px; line-height: 1.55; color: var(--muted); margin: 0 0 20px; }
.bar { height: 10px; background: var(--mint-2); border-radius: 99px; overflow: hidden; }
.bar i { display: block; height: 100%; background: var(--green); border-radius: 99px; }
.bar-legend { display: flex; justify-content: space-between; font-size: 13.5px; color: var(--muted-2); margin: 8px 0 20px; }
.bar-legend b { color: var(--green); }
.mini .btn { margin-top: auto; padding: 14px 20px; font-size: 15px; background: var(--green); color: var(--cream); }
.mini .btn:hover { background: var(--ink); color: var(--cream); }

/* Qui sommes-nous */
.about-lead { max-width: 900px; margin-bottom: 48px; }
.about-lead h2 { font-weight: 500; font-size: clamp(30px, 4.5vw, 48px); line-height: 1.06; letter-spacing: -.01em; margin-bottom: 20px; text-wrap: balance; }
.about-lead p { font-size: 20px; line-height: 1.5; color: var(--pink); margin: 0; font-weight: 500; }
.about-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; }
.about-text { background: var(--mint); border-radius: 26px; padding: 40px 38px; font-size: 17px; line-height: 1.7; color: #2C3B33; display: grid; gap: 16px; align-content: start; }
.about-text p, .about-box p { margin: 0; text-wrap: pretty; }
.about-photos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; }
.about-photos .slot { aspect-ratio: 3/4; border-radius: 26px; }
.about-box { background: var(--cream); border: 1.5px solid var(--line); border-radius: 26px; padding: 44px 40px; margin-top: 20px; }
.about-box h3 { font-weight: 600; font-size: 30px; line-height: 1.15; letter-spacing: -.025em; margin-bottom: 22px; color: var(--green); }
.about-box .body { font-size: 16.5px; line-height: 1.7; color: #3D4F45; display: grid; gap: 16px; }
.about-box .slogan { font-family: var(--display); font-weight: 500; font-size: 28px; line-height: 1.25; letter-spacing: -.02em; color: var(--pink); margin: 26px 0 0; text-wrap: balance; }

/* Actions */
.actions-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
.action { background: var(--mint); border-radius: 24px; padding: 30px 28px 32px; display: flex; flex-direction: column; gap: 14px; min-height: 180px; }
.action:hover { background: #E2ECE6; }
.action .num { font-size: 13px; font-weight: 600; color: var(--pink); }
.action h3 { font-weight: 600; font-size: 24px; line-height: 1.12; letter-spacing: -.02em; color: var(--green); margin-top: auto; }
.action p { font-size: 14.5px; color: var(--muted-2); line-height: 1.5; margin: 0; }
.banner { margin-top: 20px; background: var(--mint); border-radius: 24px; padding: 34px 38px; display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
.banner h3 { font-weight: 600; font-size: 26px; letter-spacing: -.02em; color: var(--green); margin-bottom: 8px; }
.banner p { font-size: 15.5px; color: var(--muted); margin: 0; max-width: 46em; line-height: 1.55; text-wrap: pretty; }
.banner .btn { padding: 15px 30px; font-size: 16px; font-weight: 600; flex-shrink: 0; }

/* Articles */
.articles { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.article { display: block; color: var(--ink); background: #fff; border: 1px solid var(--line); border-radius: 24px; overflow: hidden; }
.article:hover { border-color: var(--green); color: var(--ink); }
.article .slot { aspect-ratio: 16/10; }
.article-body { padding: 26px 26px 30px; }
.article .kicker { font-size: 14px; font-weight: 600; color: var(--pink); margin-bottom: 14px; }
.article h3 { font-weight: 600; font-size: 22px; line-height: 1.15; letter-spacing: -.02em; margin-bottom: 12px; color: var(--green); }
.article p { font-size: 15px; line-height: 1.6; color: var(--muted); margin: 0; text-wrap: pretty; }
.article .more { margin-top: 20px; font-size: 15px; font-weight: 600; color: var(--pink); }

/* Équipe */
.team { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; }
.member { background: var(--mint); border-radius: 20px; padding: 14px 14px 20px; }
.member .slot { aspect-ratio: 1; border-radius: 14px; margin-bottom: 14px; }
.member .slot img { object-position: top center; }
.member b { display: block; font-family: var(--display); font-weight: 600; font-size: 16px; color: var(--green); }
.member span { display: block; font-size: 12.5px; color: var(--muted-2); line-height: 1.4; margin-top: 4px; }
.join-card { margin-top: 20px; background: var(--green); color: var(--cream); border-radius: 28px; padding: 38px 42px; display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; }
.join-card h3 { font-weight: 600; font-size: 28px; letter-spacing: -.02em; margin-bottom: 8px; }
.join-card p { margin: 0; color: rgba(253,251,246,.78); max-width: 38em; line-height: 1.55; }
.join-card .btn { padding: 16px 30px; font-size: 16px; flex-shrink: 0; }

/* FAQ */
.faq-box { background: var(--mint); border-radius: 32px; padding: 52px 48px; display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 56px; align-items: start; }
.faq-box h2 { color: var(--green); margin-bottom: 20px; }
.faq-box > div:first-child p { font-size: 16px; color: var(--muted); line-height: 1.6; margin: 0; }
details.q { background: #fff; border-radius: 20px; padding: 24px 26px; margin-bottom: 12px; border: 1.5px solid transparent; }
details.q[open] { border-color: var(--green); }
details.q summary { cursor: pointer; list-style: none; font-family: var(--display); font-weight: 600; font-size: 20px; line-height: 1.3; letter-spacing: -.015em; color: var(--green); display: flex; justify-content: space-between; gap: 24px; align-items: baseline; }
details.q summary::-webkit-details-marker { display: none; }
details.q summary::after { content: '+'; font-size: 20px; color: var(--pink); flex-shrink: 0; }
details.q[open] summary::after { content: '−'; }
details.q p { font-size: 16px; line-height: 1.7; color: #3D4F45; margin: 14px 0 0; padding-right: 48px; max-width: 42em; text-wrap: pretty; }

/* Contact */
.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; }
.panel { background: var(--cream); border: 1.5px solid var(--line); border-radius: 32px; padding: 48px 44px; }
.panel.mint { background: var(--mint); border-color: transparent; padding: 40px 38px; }
.panel h2, .panel h3 { font-weight: 600; letter-spacing: -.01em; color: var(--green); }
.panel h2 { font-size: clamp(28px, 4vw, 38px); line-height: 1.05; margin-bottom: 14px; }
.panel h3 { font-size: 28px; line-height: 1.1; margin-bottom: 12px; }
.panel > p { font-size: 16px; line-height: 1.6; color: var(--muted); margin: 0 0 30px; max-width: 26em; text-wrap: pretty; }
.panel.mint > p { font-size: 15.5px; margin-bottom: 22px; }
.form { display: grid; gap: 12px; }
.form .two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.form input, .form select, .form textarea { width: 100%; background: var(--mint); border: 1px solid var(--mint-2); border-radius: 12px; padding: 15px 18px; font: inherit; font-size: 15px; color: var(--ink); }
.form textarea { resize: vertical; }
.form .btn { padding: 17px 24px; font-size: 16px; margin-top: 4px; }
.form .hp { position: absolute; left: -9999px; }
.form-msg { font-size: 15px; line-height: 1.5; padding: 0; margin: 0; min-height: 0; }
.form-msg.ok { color: var(--green); background: #D9EFE3; padding: 14px 18px; border-radius: 12px; font-weight: 600; }
.form-msg.err { color: #8a1236; background: #FBE3EA; padding: 14px 18px; border-radius: 12px; }
.news { display: flex; gap: 8px; flex-wrap: wrap; }
.news input { flex: 1; min-width: 180px; background: #fff; border: 1px solid var(--mint-2); border-radius: 999px; padding: 15px 20px; font: inherit; font-size: 15px; color: var(--ink); }
.news .btn { padding: 15px 26px; font-size: 15px; }
.contact-info { display: grid; gap: 18px; }
.contact-info small { display: block; font-size: 13px; color: #6E8177; margin-bottom: 4px; }
.contact-info b, .contact-info a { font-family: var(--display); font-weight: 600; font-size: 24px; color: var(--green); }
.contact-info a { color: var(--pink); }
.contact-info a:hover { color: var(--green); }
.stack { display: grid; gap: 20px; align-content: start; }

/* Pied de page */
.site-footer { margin-top: 96px; background: var(--green); color: var(--cream); }
.footer-in { max-width: var(--maxw); margin: 0 auto; padding: 44px 28px; display: flex; justify-content: space-between; align-items: center; gap: 40px; flex-wrap: wrap; }
.footer-logo { background: var(--cream); border-radius: 999px; padding: 6px 22px; display: flex; align-items: center; }
.footer-logo .logo { height: 56px; }
.footer-nav { display: flex; gap: 26px; font-size: 15px; flex-wrap: wrap; }
.footer-nav a { color: rgba(253,251,246,.75); }
.footer-nav a:hover { color: #fff; }
.copy { max-width: var(--maxw); margin: 0 auto; padding: 0 28px 40px; font-size: 12.5px; color: rgba(253,251,246,.45); }

/* Page « Rejoindre l'équipe » */
.page-hero { background: var(--green); color: var(--cream); }
.page-hero .wrap { padding-top: 64px; padding-bottom: 72px; display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 48px; align-items: center; }
.page-hero h1 { font-weight: 600; font-size: clamp(36px, 5.5vw, 68px); line-height: 1.05; letter-spacing: -.01em; margin-bottom: 22px; text-wrap: balance; }
.page-hero p { font-size: 19px; line-height: 1.55; color: rgba(253,251,246,.78); margin: 0; max-width: 30em; text-wrap: pretty; }
.page-hero .slot { aspect-ratio: 16/10; border-radius: 28px; }
.page-hero .slot:not(.has-img) { display: none; }
.filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 28px; }
.filters button { border: 1.5px solid var(--mint-2); background: #fff; color: var(--green); font: inherit; font-weight: 600; font-size: 15px; padding: 10px 18px; border-radius: 999px; cursor: pointer; }
.filters button[aria-pressed="true"] { background: var(--green); border-color: var(--green); color: var(--cream); }
.jobs { display: grid; gap: 14px; }
details.job { background: #fff; border: 1.5px solid var(--line); border-radius: 24px; }
details.job[open] { border-color: var(--green); }
details.job summary { list-style: none; cursor: pointer; padding: 28px 32px; display: flex; gap: 20px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
details.job summary::-webkit-details-marker { display: none; }
.job-main h3 { font-weight: 600; font-size: 24px; letter-spacing: -.02em; color: var(--green); margin-bottom: 10px; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip { font-size: 13px; font-weight: 600; padding: 5px 12px; border-radius: 999px; background: var(--mint); color: var(--green); }
.chip.pink { background: #FBE3EA; color: var(--pink-dark); }
.job-toggle { font-weight: 700; color: var(--pink); display: inline-flex; align-items: center; gap: 8px; }
.job-toggle::after { content: '+'; font-size: 22px; }
details.job[open] .job-toggle::after { content: '−'; }
.job-body { padding: 0 32px 32px; display: grid; gap: 22px; }
.job-body p { margin: 0; font-size: 16.5px; line-height: 1.65; color: #3D4F45; }
.job-body h4 { font-family: var(--display); font-size: 17px; color: var(--green); margin: 0 0 10px; }
.job-body ul { margin: 0; padding-left: 20px; display: grid; gap: 7px; font-size: 16px; line-height: 1.55; color: #3D4F45; }
.job-body .btn { justify-self: start; padding: 15px 30px; font-size: 16px; }
.empty { background: var(--mint); border-radius: 28px; padding: 48px 40px; }
.empty h3 { font-weight: 600; font-size: 28px; letter-spacing: -.02em; color: var(--green); margin-bottom: 10px; }
.empty p { margin: 0; color: var(--muted); font-size: 17px; line-height: 1.6; max-width: 36em; }

@media (max-width: 640px) {
  .section { padding-top: 72px; }
  .section[id] { scroll-margin-top: -60px; }
  .card, .panel { padding: 34px 24px; }
  .project-photo { margin: -34px -24px 24px; }
  .faq-box { padding: 36px 24px; gap: 32px; }
  .gauge-row { gap: 18px; }
  .gauge { width: 124px; height: 124px; }
  .gauge div { width: 94px; height: 94px; }
  .hero-copy { padding: 44px 0 20px; }
  .about-text, .about-box { padding: 30px 24px; }
  .join-card, .banner { padding: 28px 24px; }
  details.job summary { padding: 22px 22px; }
  .job-body { padding: 0 22px 26px; }
  .form .two { grid-template-columns: 1fr; }
  .announce-row { padding: 11px 44px 11px 16px; flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
.contact-info a.plain { color: var(--green); }
.contact-info a.plain:hover { color: var(--pink); }

.project-summary { font-size: 15.5px; line-height: 1.55; color: var(--muted); margin: 10px 0 28px; max-width: 30em; }
.empty-cta { margin-top: 24px; padding: 15px 30px; }

.skip-link { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--green); color: var(--cream); padding: 12px 20px; border-radius: 999px; font-weight: 700; }
.skip-link:focus { top: 12px; color: var(--cream); }

/* Pages de texte : articles, mentions légales… */
.doc { max-width: 820px; margin: 0 auto; padding: 56px 28px 0; }
.doc-back { display: inline-block; margin-bottom: 28px; font-weight: 600; }
.doc-head { margin-bottom: 32px; }
.doc-head h1 { font-weight: 600; font-size: clamp(32px, 5vw, 52px); line-height: 1.04; letter-spacing: -.01em; color: var(--green); margin-bottom: 14px; text-wrap: balance; }
.doc-head time { display: block; font-size: 14px; font-weight: 600; color: var(--muted-2); }
.doc-cover { margin: 0 0 32px; border-radius: 24px; overflow: hidden; }
.doc-cover img { width: 100%; display: block; }
.prose { font-size: 18px; line-height: 1.75; color: #2C3B33; }
.prose > * + * { margin-top: 1.1em; }
.prose p { margin-bottom: 0; text-wrap: pretty; }
.prose h2 { font-family: var(--display); font-weight: 600; font-size: 28px; line-height: 1.15; letter-spacing: -.02em; color: var(--green); margin-top: 1.8em; }
.prose h3 { font-family: var(--display); font-weight: 600; font-size: 21px; color: var(--green); margin-top: 1.5em; }
.prose ul { padding-left: 1.3em; display: grid; gap: .4em; }
.prose a { text-decoration: underline; text-underline-offset: 3px; }
.prose figure { margin: 1.6em 0; }
.prose img, .prose video { width: 100%; max-height: 80vh; display: block; border-radius: 18px; background: #000; }
.prose img { background: var(--mint); object-fit: contain; }
.doc-cta { margin: 56px 0 0; background: var(--mint); border-radius: 26px; padding: 32px 36px; display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; }
.doc-cta h2 { font-family: var(--display); font-weight: 600; font-size: 24px; color: var(--green); margin-bottom: 6px; }
.doc-cta p { margin: 0; color: var(--muted); }
.doc-cta .btn { padding: 15px 30px; font-size: 16px; }
.empty-note { color: var(--muted); }
@media (max-width: 640px) { .doc { padding: 36px 20px 0; } .prose { font-size: 17px; } .doc-cta { padding: 26px 24px; } }

/* Mode test */
.preview-bar { background: #FFF4D6; color: #5C4600; text-align: center; font-size: 14.5px; padding: 9px 16px; border-bottom: 1px solid #F0D58A; }
.gate-body { background: var(--green); min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.gate { width: 100%; max-width: 440px; }
.gate-card { background: #fff; border-radius: 28px; padding: 40px 36px; display: grid; gap: 12px; }
.gate-logo { width: 190px; height: auto; aspect-ratio: 1.9 / 1; margin: 0 auto 6px; }
.gate-card h1 { font-weight: 600; font-size: 26px; letter-spacing: -.02em; color: var(--green); text-align: center; }
.gate-card p { margin: 0; text-align: center; color: var(--muted); line-height: 1.55; }
.gate-card label { font-weight: 700; margin-top: 10px; color: var(--green); }
.gate-card input[type=password] { font: inherit; padding: 15px 18px; border: 1.5px solid var(--mint-2); border-radius: 14px; background: var(--mint); width: 100%; }
.gate-card .btn { padding: 16px 24px; font-size: 17px; margin-top: 6px; }
.gate-error { color: #8a1236 !important; font-weight: 700; }

.maintenance-bar { background: #FBE3EA; color: #8a1236; border-bottom-color: #F0B8C8; }
.gate-contact { margin-top: 6px !important; font-size: 15px; }
.gate-contact a { font-weight: 700; }
