Compare commits

...

2 commits

Author SHA1 Message Date
isUnknown
f49c9d7712 Mise à jour contenu : FAQ Soutiens, textes hero et titre vidéo EN
- Ajout de 5 nouvelles questions sur les Soutiens d'Index en tête de FAQ (FR + EN)
- Hero : "Objectif 500 Soutiens au 21 juin 2026" / "Goal: 500 Supporters by 21 June 2026"
- Titre vidéo EN : "Why support Index? Hear from those at the heart of it."
- Onglets dons : don mensuel affiché en premier et sélectionné par défaut

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 09:02:10 +01:00
isUnknown
97766e6bb7 Refonte jauge : affichage des soutiens réguliers vers objectif 500
- Remplace le montant collecté par le nombre de soutiens réguliers actifs
  (plans Donorbox status=active + 98 soutiens historiques) avec objectif 500
- Proxy PHP : appel à /api/v1/plans pour compter les plans actifs toutes
  campagnes confondues, avec pagination et détail plans_detail dans la réponse
- Jauge initialisée à 19.6% (98/500) en fallback si l'API est indisponible
- Versions FR et EN mises à jour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 08:45:11 +01:00
5 changed files with 470 additions and 122 deletions

View file

@ -1,8 +1,14 @@
{
"total_raised": "35675.25",
"total_raised": "35825.53",
"goal_amt": "50000.0",
"currency": "eur",
"donations_count": 521,
"donations_count": 533,
"recurring_donors_count": 56,
"campaign_name": "Soutenez Index avant le 31 d\u00e9cembre 2025 !",
"updated_at": "2026-02-27T12:51:20+01:00"
"updated_at": "2026-03-06T07:41:46+00:00",
"DEBUG_plans_breakdown": {
"cancelled|monthly": 36,
"active|monthly": 56,
"failed|monthly": 19
}
}

View file

@ -128,14 +128,56 @@ if ($campaign === null) {
}
}
// Compter tous les donateurs réguliers actifs (toutes campagnes confondues)
$recurring_count = 0;
$plans_page = 1;
do {
$plans_url = 'https://donorbox.org/api/v1/plans?per_page=100&page=' . $plans_page;
$ch_plans = curl_init();
curl_setopt_array($ch_plans, [
CURLOPT_URL => $plans_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => DONORBOX_EMAIL . ':' . DONORBOX_API_KEY,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'User-Agent: Index-NGO-Website'],
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => true
]);
$plans_response = curl_exec($ch_plans);
$plans_http_code = curl_getinfo($ch_plans, CURLINFO_HTTP_CODE);
curl_close($ch_plans);
if ($plans_response === false || $plans_http_code !== 200) {
break;
}
$plans = json_decode($plans_response, true);
if (!is_array($plans)) break;
foreach ($plans as $plan) {
if (isset($plan['status']) && $plan['status'] === 'active') {
$recurring_count++;
}
$status = $plan['status'] ?? 'unknown';
$type = $plan['type'] ?? 'unknown';
$plans_detail[$status . '|' . $type] = ($plans_detail[$status . '|' . $type] ?? 0) + 1;
}
$plans_page++;
} while (count($plans) === 100);
// Extraire uniquement les données nécessaires
$filteredData = [
'total_raised' => $campaign['total_raised'] ?? 0,
'goal_amt' => $campaign['goal_amt'] ?? 50000,
'currency' => $campaign['currency'] ?? 'EUR',
'donations_count' => $campaign['donations_count'] ?? 0,
'recurring_donors_count' => $recurring_count,
'campaign_name' => $campaign['name'] ?? 'Unknown',
'updated_at' => date('c')
'updated_at' => date('c'),
'plans_detail' => $plans_detail ?? []
];
$jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT);

View file

@ -2,17 +2,8 @@ const DONORBOX_CONFIG = {
proxyUrl: '/api/donorbox-proxy.php',
};
function formatCurrency(amount) {
const rounded = Math.round(amount * 100) / 100;
const hasDecimals = rounded % 1 !== 0;
const formatted = rounded.toLocaleString('fr-FR', {
minimumFractionDigits: 0,
maximumFractionDigits: hasDecimals ? 2 : 0,
});
return formatted.replace(/[\s\u00A0\u202F]/g, '\u202F') + '\u202F€';
}
const RECURRING_DONORS_OFFSET = 98;
const GOAL_SUPPORTERS = 500;
async function fetchDonorboxData() {
try {
@ -41,9 +32,9 @@ async function fetchDonorboxData() {
}
function updateGaugeDisplay(campaignData) {
const collected = campaignData.total_raised || 0;
const goal = campaignData.goal_amt || 50000;
const percentage = Math.min((collected / goal) * 100, 100);
const recurringCount = campaignData.recurring_donors_count || 0;
const totalSupport = recurringCount + RECURRING_DONORS_OFFSET;
const percentage = Math.min((totalSupport / GOAL_SUPPORTERS) * 100, 100);
const gaugeElement = document.getElementById('gauge');
if (gaugeElement) {
@ -53,27 +44,16 @@ function updateGaugeDisplay(campaignData) {
);
}
const collectedElement = document.querySelector(
const countElement = document.querySelector(
'#gauge--infos__donateurs .value'
);
if (collectedElement) {
collectedElement.textContent = formatCurrency(collected);
}
const goalElement = document.querySelector('#gauge--infos__objectif .value');
if (goalElement) {
goalElement.textContent = formatCurrency(goal);
}
const donorsCount = campaignData.donations_count || 0;
const donorsElement = document.querySelector('#gauge--infos__donors .value');
if (donorsElement) {
donorsElement.textContent = donorsCount;
if (countElement) {
countElement.textContent = totalSupport;
}
console.log('Gauge updated:', {
collected: formatCurrency(collected),
goal: formatCurrency(goal),
recurringDonors: recurringCount,
totalSupport,
percentage: `${percentage.toFixed(1)}%`,
});
}

View file

@ -96,21 +96,17 @@
<div class="gauge__container">
<div id="gauge" style="--pourcent: 0%"></div>
<div class="gauge--infos" id="gauge--infos__donateurs">
<p class="property">Raised</p>
<p class="value">0€</p>
</div>
<div class="gauge--infos" id="gauge--infos__donors">
<p class="property">Donors</p>
<p class="property">Regular supporters</p>
<p class="value">0</p>
</div>
<div class="gauge--infos" id="gauge--infos__objectif">
<p class="property">Goal</p>
<p class="value"></p>
<p class="value">500</p>
</div>
</div>
<p class="p__baseline-big">
Support us <strong>in 2026</strong>
Goal: 500 Supporters<br /><strong>by 21 June 2026</strong>
</p>
</section>
@ -122,7 +118,7 @@
</section>
<section id="section__video">
<h2 class="section__heading">20252026 campaign video</h2>
<h2 class="section__heading">Why support Index? Hear from those at the heart of it.</h2>
<div class="video-container">
<iframe
src="https://player.vimeo.com/video/1136957715?h=215c38e160&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1"
@ -137,6 +133,84 @@
<section id="section__questions">
<h3 class="section__heading">Frequently Asked Questions</h3>
<details>
<summary>What are Index Supporters?</summary>
<p>
"Supporters" is the name we give to everyone who makes a monthly
donation to Index. 5, 10, 20 euros or more: it is this regularity
that allows us to plan ahead and build our financial independence.
In 2026, we are launching a campaign to grow this base of
Supporters. If you have made a one-time donation in the past,
please know we are deeply grateful — you can continue to give
occasionally whenever you wish. But we encourage monthly giving
because it is the form of support that best enables us to sustain
our work over time.
</p>
</details>
<details>
<summary>What do I get by becoming a Supporter?</summary>
<p>
By becoming an Index Supporter, you join a community committed to
independent investigation. Specifically, you get:
</p>
<ul>
<li>
access to the Index Discord, where you can exchange directly
with the team and other Supporters;
</li>
<li>
a 20% discount on the entire Index support shop, including
training courses;
</li>
<li>
priority access to training sessions and events organized by
Index;
</li>
<li>
and our deepest gratitude — because you become one of the
people who make Index's long-term work possible.
</li>
</ul>
</details>
<details>
<summary>I already have a monthly donation from a previous campaign — do I get Supporter benefits?</summary>
<p>
Yes! If your monthly donation to Index is active, regardless of
the campaign through which you first subscribed, you are an Index
Supporter and you enjoy all associated benefits: Discord access,
20% shop and training discount, priority access to events. No
additional steps are required on your part. You have received or
will soon receive a message detailing your benefits, along with
our renewed thanks. For more information, contact us at
<a href="mailto:soutiens@index.ngo">soutiens@index.ngo</a>.
</p>
</details>
<details>
<summary>I've already made a one-time donation — how do I become a Supporter?</summary>
<p>
Simply return to this page and select a monthly donation. Your
regular support will complement your one-time gift — the two are
not mutually exclusive. If you would rather switch to a monthly
donation in place of occasional gifts, no additional steps are
needed: just choose the monthly amount that suits you.
</p>
</details>
<details>
<summary>I'm already a Supporter — how do I change or cancel my monthly donation?</summary>
<p>
You can adjust the amount of your monthly donation or cancel it
at any time through your donor dashboard on Donorbox. An access
link was sent to you by email when you first donated. If you
cannot find it, contact us at
<a href="mailto:dons@index.ngo">dons@index.ngo</a> and we will
help.
</p>
</details>
<details>
<summary>How will my donation to Index be used?</summary>
<p>
@ -262,15 +336,15 @@
<div class="col-right">
<section id="section__donation">
<nav class="nav--tabs">
<button class="nav--tabs__btn is-selected">
<button class="nav--tabs__btn is-selected">Monthly donation</button>
<button class="nav--tabs__btn">
One-time donation
</button>
<button class="nav--tabs__btn">Monthly donation</button>
</nav>
<div
data-donnation="one-off"
class="btn--donation__container is-selected"
class="btn--donation__container"
>
<button class="btn--donation">
<p class="bold">200&#8239;</p>
@ -294,7 +368,7 @@
</button>
</div>
<div data-donnation="monthly" class="btn--donation__container">
<div data-donnation="monthly" class="btn--donation__container is-selected">
<button class="btn--donation">
<p class="bold">5€/month</p>
<p class="small">That is X€ after taxes</p>
@ -518,16 +592,36 @@
target="_blank"
rel="noopener noreferrer"
>
<span class="icon">
<svg width="100%" height="100%" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill:white;"/>
</g>
<g transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)">
<path d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z" style="fill-rule:nonzero;"/>
</g>
</svg>
</span>
<span class="icon">
<svg
width="100%"
height="100%"
viewBox="0 0 24 24"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill: white" />
</g>
<g
transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)"
>
<path
d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z"
style="fill-rule: nonzero"
/>
</g>
</svg>
</span>
<span class="text">X</span>
</a>
</li>

View file

@ -97,21 +97,17 @@
<div class="gauge__container">
<div id="gauge" style="--pourcent: 0%"></div>
<div class="gauge--infos" id="gauge--infos__donateurs">
<p class="property">Collectés</p>
<p class="value">0€</p>
</div>
<div class="gauge--infos" id="gauge--infos__donors">
<p class="property">Donateur·ices</p>
<p class="property">Soutiens réguliers</p>
<p class="value">0</p>
</div>
<div class="gauge--infos" id="gauge--infos__objectif">
<p class="property">Objectif</p>
<p class="value"></p>
<p class="value">500</p>
</div>
</div>
<p class="p__baseline-big">
Soutenez-nous<br /><strong>en 2026</strong>
Objectif 500 Soutiens<br /><strong>au 21 juin 2026</strong>
</p>
</section>
@ -123,7 +119,10 @@
</section>
<section id="section__video">
<h2 class="section__heading">Pourquoi soutenir Index&#8239; ? <br>Écoutez les premier·es concerné·es </h2>
<h2 class="section__heading">
Pourquoi soutenir Index&#8239; ? <br />Écoutez les premier·es
concerné·es
</h2>
<div class="video-container">
<iframe
title="Vidéo de campagne"
@ -147,7 +146,13 @@
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="fill-rule: evenodd; clip-rule: evenodd; stroke-linejoin: round; stroke-miterlimit: 2;">
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<rect
x="0"
y="0"
@ -165,22 +170,9 @@
</label>
<ul class="videos__ul">
<li class="videos__li" data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1">
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
</svg>
</span>
<p class="txt">«&#8239;Index fait un travail que&nbsp;la&nbsp;justice ne&nbsp;fait pas »&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage dIssam&nbsp;El&nbsp;Khalfaoui</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1145581831?h=ce46358189&autoplay=1"
data-video="https://player.vimeo.com/video/1138884807?h=384a2d15ea&autoplay=1"
>
<span class="icon">
<svg
@ -197,67 +189,199 @@
/>
</svg>
</span>
<p class="txt">«&#8239;Votre travail nous a&nbsp;permis de nous rendre au tribunal la&nbsp;tête haute&#8239;»&#8239;: le&nbsp;témoignage de&nbsp;Dominique&nbsp;Rodtchenki-Pontonnier</p>
<p class="txt">
«&#8239;Index fait un travail que&nbsp;la&nbsp;justice
ne&nbsp;fait pas »&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
dIssam&nbsp;El&nbsp;Khalfaoui
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1145581831?h=ce46358189&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Les enquêtes d'Index doivent continuer&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage dAssa&nbsp;Traoré</p>
<p class="txt">
«&#8239;Votre travail nous a&nbsp;permis de nous rendre au
tribunal la&nbsp;tête haute&#8239;»&#8239;: le&nbsp;témoignage
de&nbsp;Dominique&nbsp;Rodtchenki-Pontonnier
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1142401468?h=f88778b3dd&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Vous faites un travail rare et&nbsp;concret&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Jérôme&nbsp;Rodrigues</p>
<p class="txt">
«&#8239;Les enquêtes d'Index doivent continuer&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
dAssa&nbsp;Traoré
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1143395847?h=f28d317c46&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Index est dun intérêt public absolu&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Fatiha&nbsp;B.</p>
<p class="txt">
«&#8239;Vous faites un travail rare
et&nbsp;concret&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Jérôme&nbsp;Rodrigues
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1144550389?h=5781ebef9b&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Je naurais jamais imaginé recevoir un&nbsp;tel soutien&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de&nbsp;Jean-François&nbsp;Martin</p>
<p class="txt">
«&#8239;Index est dun intérêt public absolu&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Fatiha&nbsp;B.
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1146620554?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1145649552?h=63bd03334b&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Le travail d'Index a permis de rétablir la&nbsp;vérité&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de Mahamadou&nbsp;Camara, frère de&nbsp;Gaye</p>
<p class="txt">
«&#8239;Je naurais jamais imaginé recevoir un&nbsp;tel
soutien&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage
de&nbsp;Jean-François&nbsp;Martin
</p>
</li>
<li class="videos__li" data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1">
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1146620554?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479&autoplay=1"
>
<span class="icon">
<svg height="80px" width="80px" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" >
<path d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"/>
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">«&#8239;Pour les familles endeuillées, Index est essentiel&#8239;»&#8239;: <span class="br-desktop"><br></span>le&nbsp;témoignage de Christelle Vendeiro-Bico, belle-sœur de Luis&nbsp;Bico</p>
<p class="txt">
«&#8239;Le travail d'Index a permis de rétablir
la&nbsp;vérité&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage de
Mahamadou&nbsp;Camara, frère de&nbsp;Gaye
</p>
</li>
<li
class="videos__li"
data-video="https://player.vimeo.com/video/1148007280?h=2e9c81e900&autoplay=1"
>
<span class="icon">
<svg
height="80px"
width="80px"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 512 512"
xml:space="preserve"
>
<path
d="M500.203,236.907L30.869,2.24c-6.613-3.285-14.443-2.944-20.736,0.939C3.84,7.083,0,13.931,0,21.333v469.333 c0,7.403,3.84,14.251,10.133,18.155c3.413,2.112,7.296,3.179,11.2,3.179c3.264,0,6.528-0.747,9.536-2.24l469.333-234.667 C507.435,271.467,512,264.085,512,256S507.435,240.533,500.203,236.907z"
/>
</svg>
</span>
<p class="txt">
«&#8239;Pour les familles endeuillées, Index est
essentiel&#8239;»&#8239;:
<span class="br-desktop"><br /></span>le&nbsp;témoignage de
Christelle Vendeiro-Bico, belle-sœur de Luis&nbsp;Bico
</p>
</li>
</ul>
</section>
@ -274,6 +398,88 @@
<section id="section__questions">
<h3 class="section__heading">Questions fréquentes</h3>
<details>
<summary>Les Soutiens d'Index, c'est quoi ?</summary>
<p>
« Soutiens » est le nom que nous donnons à toutes celles et ceux
qui font un don mensuel à Index. 5, 10, 20 euros ou plus : c'est
cette régularité qui nous permet de planifier notre action et de
construire notre indépendance financière. En 2026, nous lançons
une campagne pour élargir cette base de soutiens. Si vous avez
déjà fait un don ponctuel par le passé, sachez que nous vous en
sommes très reconnaissant·es — vous pouvez continuer à donner
ponctuellement quand vous le souhaitez. Mais si nous encourageons
le don mensuel, c'est parce qu'il est le mode de soutien qui nous
permet le mieux de structurer notre travail dans la durée.
</p>
</details>
<details>
<summary>Qu'est-ce que je reçois en devenant Soutien ?</summary>
<p>
En devenant Soutien d'Index, vous rejoignez une communauté engagée
pour l'investigation indépendante. Concrètement, vous bénéficiez :
</p>
<ul>
<li>
d'un accès au Discord d'Index, où vous pouvez échanger
directement avec l'équipe et les autres soutiens ;
</li>
<li>
d'une réduction de 20 % sur l'ensemble de la boutique de
soutien à Index, y compris les offres de formation ;
</li>
<li>
d'un accès prioritaire aux formations et aux événements
organisés par Index ;
</li>
<li>
de notre plus grande reconnaissance : car vous faites alors
partie des personnes qui rendent possible l'action d'Index sur
le long terme.
</li>
</ul>
</details>
<details>
<summary>J'ai souscrit à un don mensuel à Index lors d'une précédente campagne : ai-je accès aux avantages des Soutiens d'Index ?</summary>
<p>
Oui ! Si votre don mensuel à Index est actif, quelle que soit la
campagne lors de laquelle vous l'avez souscrit, vous êtes un·e
Soutien d'Index et vous bénéficiez de l'ensemble des avantages
associés : accès au Discord, réduction de 20 % sur la boutique et
les formations, accès prioritaire aux événements. Aucune démarche
supplémentaire n'est nécessaire de votre part. Vous avez reçu ou
allez recevoir un message qui contient le détail de vos avantages,
et nos remerciements renouvelés. Pour plus d'infos, contactez-nous
à <a href="mailto:soutiens@index.ngo">soutiens@index.ngo</a>.
</p>
</details>
<details>
<summary>Je suis déjà donateur·rice ponctuel·le, comment devenir Soutien ?</summary>
<p>
Il vous suffit de revenir sur cette page et de sélectionner un don
mensuel. Votre soutien régulier viendra s'ajouter à votre don
ponctuel — les deux sont complémentaires. Si vous souhaitez
basculer vers un soutien mensuel en remplacement de vos dons
ponctuels, aucune démarche supplémentaire n'est nécessaire :
choisissez simplement le montant mensuel qui vous convient.
</p>
</details>
<details>
<summary>Je suis déjà Soutien, comment modifier ou arrêter mon don mensuel ?</summary>
<p>
Vous pouvez modifier le montant de votre don mensuel ou
l'interrompre à tout moment depuis votre espace donateur sur
Donorbox. Un lien d'accès vous a été envoyé par e-mail lors de
votre premier don. Si vous ne le retrouvez pas, contactez-nous à
<a href="mailto:dons@index.ngo">dons@index.ngo</a> et nous vous
aiderons.
</p>
</details>
<details>
<summary>À quoi va servir mon don à Index ?</summary>
<p>
@ -405,15 +611,15 @@
<div class="col-right">
<section id="section__donation">
<nav class="nav--tabs">
<button class="nav--tabs__btn is-selected">
<button class="nav--tabs__btn is-selected">Je donne tous les mois</button>
<button class="nav--tabs__btn">
Je donne une fois
</button>
<button class="nav--tabs__btn">Je donne tous les mois</button>
</nav>
<div
data-donnation="one-off"
class="btn--donation__container is-selected"
class="btn--donation__container"
>
<button class="btn--donation">
<p class="bold">200&#8239;</p>
@ -437,7 +643,7 @@
</button>
</div>
<div data-donnation="monthly" class="btn--donation__container">
<div data-donnation="monthly" class="btn--donation__container is-selected">
<button class="btn--donation">
<p class="bold">5€/mois</p>
<p class="small">Soit X€ après impôts</p>
@ -663,16 +869,36 @@
target="_blank"
rel="noopener noreferrer"
>
<span class="icon">
<svg width="100%" height="100%" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill:white;"/>
</g>
<g transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)">
<path d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z" style="fill-rule:nonzero;"/>
</g>
</svg>
</span>
<span class="icon">
<svg
width="100%"
height="100%"
viewBox="0 0 24 24"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve"
xmlns:serif="http://www.serif.com/"
style="
fill-rule: evenodd;
clip-rule: evenodd;
stroke-linejoin: round;
stroke-miterlimit: 2;
"
>
<g transform="matrix(1,0,0,1,-2,1.77636e-15)">
<circle cx="14" cy="12" r="12" style="fill: white" />
</g>
<g
transform="matrix(0.692308,0,0,0.692308,3.69231,3.69231)"
>
<path
d="M21.742,21.75L14.179,10.571L21.235,2.25L18.779,2.25L13.088,8.964L8.548,2.25L2.359,2.25L9.649,13.026L2.25,21.75L4.706,21.75L10.741,14.632L15.559,21.75L21.75,21.75L21.742,21.75ZM7.739,3.818L18.81,20.182L16.363,20.182L5.29,3.818L7.739,3.818Z"
style="fill-rule: nonzero"
/>
</g>
</svg>
</span>
<span class="text">X</span>
</a>
</li>