diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb3e776 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Claude settings +# ——————————————— +.claude \ No newline at end of file diff --git a/api/cache/donorbox_data.json b/api/cache/donorbox_data.json index 7cf3fb2..9c44861 100644 --- a/api/cache/donorbox_data.json +++ b/api/cache/donorbox_data.json @@ -5,8 +5,8 @@ "donations_count": 533, "recurring_donors_count": 56, "campaign_name": "Soutenez Index avant le 31 d\u00e9cembre 2025 !", - "updated_at": "2026-03-06T07:41:46+00:00", - "DEBUG_plans_breakdown": { + "updated_at": "2026-03-06T09:53:03+00:00", + "plans_detail": { "cancelled|monthly": 36, "active|monthly": 56, "failed|monthly": 19 diff --git a/backup/260311/.htaccess b/backup/260311/.htaccess new file mode 100644 index 0000000..5b0df2c --- /dev/null +++ b/backup/260311/.htaccess @@ -0,0 +1,26 @@ + +RewriteEngine On +RewriteCond %{SERVER_PORT} 80 +RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] + + +# compress text file responses + +AddOutputFilterByType DEFLATE text/plain +AddOutputFilterByType DEFLATE text/html +AddOutputFilterByType DEFLATE text/css +AddOutputFilterByType DEFLATE text/javascript +AddOutputFilterByType DEFLATE application/json +AddOutputFilterByType DEFLATE application/javascript +AddOutputFilterByType DEFLATE application/x-javascript + + +# set security headers in all responses + + +# serve files as plain text if the actual content type is not known +# (hardens against attacks from malicious file uploads) +Header set Content-Type "text/plain" "expr=-z %{CONTENT_TYPE}" +Header set X-Content-Type-Options "nosniff" + + \ No newline at end of file diff --git a/backup/260311/api/.env b/backup/260311/api/.env new file mode 100644 index 0000000..6dfc008 --- /dev/null +++ b/backup/260311/api/.env @@ -0,0 +1,12 @@ +# Configuration Brevo API +# ATTENTION : Ce fichier contient des informations sensibles +# Ne JAMAIS commiter ce fichier dans Git + +# Clé API Brevo +BREVO_API_KEY=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 + +# ID de la liste de contacts Brevo +BREVO_LIST_ID=2 + +# Origines autorisées pour CORS +ALLOWED_ORIGINS=* diff --git a/backup/260311/api/.htaccess b/backup/260311/api/.htaccess new file mode 100644 index 0000000..c962ba9 --- /dev/null +++ b/backup/260311/api/.htaccess @@ -0,0 +1,9 @@ +# Protection du dossier cache + + Deny from all + + +# Autoriser uniquement l'accès au proxy PHP + + Allow from all + diff --git a/backup/260311/api/brevo-config.php b/backup/260311/api/brevo-config.php new file mode 100644 index 0000000..eb0cc3f --- /dev/null +++ b/backup/260311/api/brevo-config.php @@ -0,0 +1,31 @@ + 'Method not allowed']); + exit(); +} + +if (empty(BREVO_API_KEY)) { + http_response_code(500); + echo json_encode([ + 'error' => 'Server configuration error', + 'message' => 'Brevo API key not configured' + ]); + exit(); +} + +$input = file_get_contents('php://input'); +$data = json_decode($input, true); + +if (!isset($data['email']) || empty($data['email'])) { + http_response_code(400); + echo json_encode(['error' => 'Email required']); + exit(); +} + +$email = filter_var($data['email'], FILTER_VALIDATE_EMAIL); +if ($email === false) { + http_response_code(400); + echo json_encode(['error' => 'Invalid email']); + exit(); +} + +$brevoData = [ + 'email' => $email, + 'listIds' => [BREVO_LIST_ID], + 'updateEnabled' => true +]; + +// Only include attributes if provided and not empty +if (isset($data['attributes']) && is_array($data['attributes']) && !empty($data['attributes'])) { + $brevoData['attributes'] = $data['attributes']; +} + +$ch = curl_init(); + +curl_setopt_array($ch, [ + CURLOPT_URL => BREVO_API_URL, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => json_encode($brevoData), + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'api-key: ' . BREVO_API_KEY, + 'User-Agent: Index-NGO-Newsletter' + ], + CURLOPT_TIMEOUT => 10, + CURLOPT_SSL_VERIFYPEER => true +]); + +$response = curl_exec($ch); +$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); +$curlError = curl_error($ch); +curl_close($ch); + +if ($response === false) { + http_response_code(500); + echo json_encode([ + 'error' => 'Connection error', + 'details' => $curlError + ]); + exit(); +} + +$responseData = json_decode($response, true); + +switch ($httpCode) { + case 201: + case 204: + http_response_code(200); + echo json_encode([ + 'success' => true, + 'message' => 'Successfully subscribed', + 'email' => $email + ]); + break; + + case 400: + http_response_code(400); + $isDuplicate = isset($responseData['code']) && $responseData['code'] === 'duplicate_parameter'; + + echo json_encode([ + 'error' => $isDuplicate ? 'email_already_exists' : 'invalid_data', + 'message' => $isDuplicate + ? 'This email is already subscribed to our newsletter.' + : 'Invalid email address.', + 'user_message' => $isDuplicate + ? 'You are already subscribed!' + : 'Please check your email address.' + ]); + break; + + case 401: + http_response_code(500); + $isIpIssue = isset($responseData['code']) && $responseData['code'] === 'unauthorized' + && strpos($responseData['message'] ?? '', 'IP address') !== false; + + echo json_encode([ + 'error' => $isIpIssue ? 'ip_not_authorized' : 'invalid_api_key', + 'message' => $isIpIssue + ? 'Server IP not authorized on Brevo' + : 'Invalid API key', + 'user_message' => 'A technical error occurred. Please try again later.', + 'admin_info' => $responseData['message'] ?? null + ]); + break; + + case 404: + http_response_code(500); + echo json_encode([ + 'error' => 'list_not_found', + 'message' => 'Contact list not found', + 'user_message' => 'A technical error occurred. Please try again later.' + ]); + break; + + default: + http_response_code($httpCode); + echo json_encode([ + 'error' => 'api_error', + 'message' => 'Error communicating with subscription service', + 'user_message' => 'An error occurred. Please try again.', + 'http_code' => $httpCode + ]); + break; +} diff --git a/backup/260311/api/cache/donorbox_data.json b/backup/260311/api/cache/donorbox_data.json new file mode 100644 index 0000000..583646b --- /dev/null +++ b/backup/260311/api/cache/donorbox_data.json @@ -0,0 +1,8 @@ +{ + "total_raised": "35871.03", + "goal_amt": "50000.0", + "currency": "eur", + "donations_count": 537, + "campaign_name": "Soutenez Index avant le 31 d\u00e9cembre 2025 !", + "updated_at": "2026-03-11T06:58:07+01:00" +} \ No newline at end of file diff --git a/backup/260311/api/donorbox-proxy.php b/backup/260311/api/donorbox-proxy.php new file mode 100644 index 0000000..90fdb04 --- /dev/null +++ b/backup/260311/api/donorbox-proxy.php @@ -0,0 +1,150 @@ + 'Méthode non autorisée']); + exit(); +} + +// Configuration de l'API Donorbox +define('DONORBOX_EMAIL', 'contact@index.ngo'); +define('DONORBOX_API_KEY', 'Q5oiaoxPwA5C2s1iafh_pihynM_5HOZbMZz6QwjVx2aLhWijOPI9rw'); +define('CAMPAIGN_SLUG', 'soutenir-index-2025-don'); // Slug de la campagne à filtrer +define('DONORBOX_API_URL', 'https://donorbox.org/api/v1/campaigns'); + +// Gestion du cache (5 minutes) +$cacheFile = __DIR__ . '/cache/donorbox_data.json'; +$cacheTime = 300; // 5 minutes en secondes + +// Vérifier si le cache existe et est valide +if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $cacheTime)) { + // Utiliser le cache + $cachedData = file_get_contents($cacheFile); + echo $cachedData; + exit(); +} + +// Appel à l'API Donorbox avec Basic Auth (--user format) +$ch = curl_init(); + +curl_setopt_array($ch, [ + CURLOPT_URL => DONORBOX_API_URL, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_USERPWD => DONORBOX_EMAIL . ':' . DONORBOX_API_KEY, // Format --user de cURL + CURLOPT_HTTPAUTH => CURLAUTH_BASIC, + CURLOPT_HTTPHEADER => [ + 'Content-Type: application/json', + 'User-Agent: Index-NGO-Website' + ], + CURLOPT_TIMEOUT => 10, + CURLOPT_SSL_VERIFYPEER => true +]); + +$response = curl_exec($ch); +$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); +$curlError = curl_error($ch); + +curl_close($ch); + +// Gestion des erreurs +if ($response === false) { + http_response_code(500); + echo json_encode([ + 'error' => 'Erreur de connexion à Donorbox', + 'details' => $curlError + ]); + exit(); +} + +if ($httpCode !== 200) { + http_response_code($httpCode); + echo json_encode([ + 'error' => 'Erreur API Donorbox', + 'http_code' => $httpCode, + 'response' => json_decode($response) + ]); + exit(); +} + +// Décoder et valider la réponse +$campaigns = json_decode($response, true); + +if (json_last_error() !== JSON_ERROR_NONE) { + http_response_code(500); + echo json_encode([ + 'error' => 'Réponse JSON invalide', + 'details' => json_last_error_msg() + ]); + exit(); +} + +// Trouver la campagne correspondante par son slug/name +$campaign = null; +if (is_array($campaigns)) { + foreach ($campaigns as $camp) { + // Recherche par slug ou par name + if (isset($camp['slug']) && $camp['slug'] === CAMPAIGN_SLUG) { + $campaign = $camp; + break; + } + if (isset($camp['name']) && strpos(strtolower($camp['name']), strtolower(CAMPAIGN_SLUG)) !== false) { + $campaign = $camp; + break; + } + } +} + +// Si aucune campagne trouvée, utiliser la première ou renvoyer une erreur +if ($campaign === null) { + if (is_array($campaigns) && count($campaigns) > 0) { + $campaign = $campaigns[0]; // Prendre la première campagne par défaut + } else { + http_response_code(404); + echo json_encode([ + 'error' => 'Aucune campagne trouvée', + 'campaigns_count' => is_array($campaigns) ? count($campaigns) : 0 + ]); + exit(); + } +} + +// 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, + 'campaign_name' => $campaign['name'] ?? 'Unknown', + 'updated_at' => date('c') +]; + +$jsonResponse = json_encode($filteredData, JSON_PRETTY_PRINT); + +// Sauvegarder dans le cache +if (!file_exists(dirname($cacheFile))) { + mkdir(dirname($cacheFile), 0755, true); +} +file_put_contents($cacheFile, $jsonResponse); + +// Retourner la réponse +echo $jsonResponse; diff --git a/backup/260311/assets/css/base/_body.scss b/backup/260311/assets/css/base/_body.scss new file mode 100644 index 0000000..98452c6 --- /dev/null +++ b/backup/260311/assets/css/base/_body.scss @@ -0,0 +1,44 @@ +* { + margin: 0; + padding: 0; + + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; + + scroll-behavior: smooth; +} +a { + color: currentColor; +} +button{ + background: none; + outline: none; + border: none; + color: var(--color-txt); +} +iframe{ + border: none; +} + +body{ + font-family: var(--font); + line-height: var(--leading-normal); + font-size: var(--fs-normal); + + color: var(--color-txt); + background-color: var(--color-bg); + padding: 0px var(--padding-body); + + width: 100vw; + overflow-x: hidden; + +} + + + +main{ + padding-top: var(--header-h); + // padding-bottom: 10vh; +} \ No newline at end of file diff --git a/backup/260311/assets/css/base/_responsive.scss b/backup/260311/assets/css/base/_responsive.scss new file mode 100644 index 0000000..ff9bac4 --- /dev/null +++ b/backup/260311/assets/css/base/_responsive.scss @@ -0,0 +1,11 @@ +$desktop: "screen and (min-width: 1200px)"; +$medium: "screen and (max-width: 1080px)"; +$medium-up: "screen and (min-width: 1080px)"; +$small-up: "screen and (min-width: 720px)"; +$small: "screen and (max-width: 720px)"; +$x-small: "screen and (max-width: 560px)"; +$paysage: "screen and (max-height: 670px) and (min-width: 1080px)"; + +@media #{$medium}{ + +} diff --git a/backup/260311/assets/css/base/_var.scss b/backup/260311/assets/css/base/_var.scss new file mode 100644 index 0000000..bbab83b --- /dev/null +++ b/backup/260311/assets/css/base/_var.scss @@ -0,0 +1,60 @@ +:root { + --font: 'Executive', Arial, sans-serif; + --title: 'System', Arial, sans-serif; + + // --fs-x-small: 10px; + // --fs-small: 12px; + // --fs-normal: 16px; + // --fs-medium: 22px; + // --fs-big: 38px; + + --fs-x-small: 10px; + --fs-small: 12px; + --fs-normal: 16px; + --fs-medium: 20px; + --fs-big: 30px; + --fs-x-big: 38px; + + --fs-button-bold: 22px; + + @media #{$small} { + --fs-medium: 20px; + --fs-big: 26px; + } + + --leading-tight: 1; + --leading-normal: 1.2; + // --leading-relaxed: 1.4; + // --leading-loose: 1.8; + + --fw-normal: 400; + --fw-medium: 500; + --fw-bold: 600; + + --color-bg: #161616; + --color-txt: #ffffff; + --color-accent: #00ff00; + --color-accent-50: #e9ffe9; + --color-accent-100: #d8fdd8; + + --grey-100: #d8d8d8; + --grey-300: #b9b9b9; + --grey-400: #969696; + --grey-600: #6d6d6d; + --grey-800: #383838; + + --border: 1px solid var(--color-txt); + --border-light: 1px solid var(--grey-800); + + --header-h: 80px; + --header-h-shrinked: 50px; + + // responsive + --padding-body: 20px; + + --radius-small: 4px; + --spacing: 30px; + --h-block: 30px; + + --curve: cubic-bezier(0.175, 0.885, 0.32, 1.275); +} diff --git a/backup/260311/assets/css/components/_btn--default.scss b/backup/260311/assets/css/components/_btn--default.scss new file mode 100644 index 0000000..1edcd10 --- /dev/null +++ b/backup/260311/assets/css/components/_btn--default.scss @@ -0,0 +1,79 @@ +.btn__default{ + + + --size: calc(var(--h-block) - 8px); + font-size: var(--fs-normal); + font-weight: var(--fw-normal); + height: var(--size); + padding-right: 1.5ch; + + position: relative; + + + display: flex; + align-items: center; + gap: 0ch; + // padding-right: 0.5ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + + cursor: pointer; + + + .icon, .txt{ z-index: 10; } + + .icon{ + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; + + svg{ + fill: var(--color-bg); + width: 80%; + } + } + + .txt{ + font-family: var(--font-title); + color: var(--color-accent); + font-size: var(--fs-normal); + font-weight: var(--fw-bold); + padding-left: 1ch; + } + + &::after{ + content: ''; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size)/2); + width: var(--size); + height: var(--size); + position: absolute; + left: 0; + z-index: 0; + transition: width .2s + } + + &:hover{ + // + .txt{ + color: var(--color-bg); + display: block; + } + &::after{ + width: 100%; + } + } + + + + + + +} + diff --git a/backup/260311/assets/css/components/_btn--don.scss b/backup/260311/assets/css/components/_btn--don.scss new file mode 100644 index 0000000..3c4e2d0 --- /dev/null +++ b/backup/260311/assets/css/components/_btn--don.scss @@ -0,0 +1,60 @@ +#btn--don__mobile { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + + padding-top: calc(var(--spacing) * 0.5); + padding-bottom: calc(var(--spacing) * 1.5); + position: fixed; + bottom: 0px; + left: 0; + z-index: 100; + opacity: 0; + transition: opacity ease-in 0.2s; + + pointer-events: none; + &.is-visible { + pointer-events: all; + opacity: 1; + } + + &.is-sticky { + position: relative; + } + + @media #{$small-up} { + display: none !important; + } +} + +.btn--don { + --vertical-padding: 0.5ch; + height: calc(var(--h-block) + var(--vertical-padding)); + border-radius: calc(var(--h-block) / 1); + padding: var(--vertical-padding) 2ch; + background-color: var(--color-accent); + color: var(--color-bg); + font-family: var(--font); + font-size: var(--fs-medium); + font-weight: var(--fw-bold); + + a { + text-decoration: none; + display: flex; + align-items: center; + gap: 0.5ch; + } + + .icon { + height: 28px; + position: relative; + top: 1px; + } + + svg { + fill: var(--color-bg); + width: 24px; + height: 24px; + } +} diff --git a/backup/260311/assets/css/components/_form-newsletter.scss b/backup/260311/assets/css/components/_form-newsletter.scss new file mode 100644 index 0000000..8eac349 --- /dev/null +++ b/backup/260311/assets/css/components/_form-newsletter.scss @@ -0,0 +1,127 @@ +.form__newsletter{ + --size: 24px; + + position: relative; + display: flex; + align-items: center; + position: relative; + + + + input[type="email"]{ + + height: calc(var(--h-block)*1.25); + width: 100%; + border-radius: calc(var(--h-block)*0.625); + outline: none; + border: none; + padding: 0 2ch; + font-family: var(--font); + + font-size: var(--fs-normal); + z-index: 40; + padding-top: 4px; + &::placeholder{ + font-family: var(--font); + font-size: var(--fs-normal); + } + + &:focus{ + outline: 3px solid var(--grey-400); + } + + + } + + button[type="submit"].btn--bold{ + position: absolute; + right: 2px; + z-index: 100; + } + + + button[type="submit"].btn--bold { + + + --size: calc(var(--h-block)*1.25 - 4px); + font-family: var(--font); + font-size: var(--fs-button-bold); + height: var(--size); + + + display: flex; + align-items: center; + gap: 0.75ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + + cursor: pointer; + + + .icon, .txt{ z-index: 10; } + + .icon{ + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; + + svg{ + fill: var(--color-bg); + width: 80%; + } + } + + .txt{ + position: relative; + top: 2px; + font-size: var(--fs-normal); + display: none; + padding-left: 1ch; + } + + &::after{ + content: ''; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size)/2); + width: var(--size); + height: var(--size); + position: absolute; + right: 0; + z-index: 0; + transition: width .2s + } + + &:hover{ + .txt{ + color: var(--color-bg); + display: block; + } + &::after{ + width: 100%; + } + } + + // @media #{$small}{ + // .txt{ + // color: var(--color-bg); + // display: block; + // } + // &::after{ + // width: 100%; + // } + // } + + + + } + + + + +} \ No newline at end of file diff --git a/backup/260311/assets/css/components/_gauge.scss b/backup/260311/assets/css/components/_gauge.scss new file mode 100644 index 0000000..42fd1fb --- /dev/null +++ b/backup/260311/assets/css/components/_gauge.scss @@ -0,0 +1,90 @@ +.gauge__container { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + position: relative; + top: calc(var(--spacing) * 0.25); + + padding: 0 calc(var(--spacing) * 0.5); +} + +#gauge { + --gauge-h: 12px; + width: 100%; + margin-bottom: calc(var(--spacing) * 0.25); + height: var(--gauge-h); + border-radius: calc(var(--gauge-h) * 0.5); + background-color: var(--color-bg); + border: 1px solid var(--color-txt); + position: relative; + // overflow: hidden; + box-shadow: 7px 6px 5px -3px rgba(0, 0, 0, 0.14); + &::before { + content: ''; + display: block; + height: calc(var(--gauge-h) - 2px); + border-radius: calc(var(--gauge-h) * 0.5); + width: var(--pourcent); + min-width: 20px; + background-color: var(--color-accent); + position: absolute; + top: 0px; + left: 0px; + transition: width cubic-bezier(0.86, 0, 0.07, 1) 1s; + } +} + +.gauge--infos { + .property { + font-size: var(--fs-small); + padding-bottom: 3px; + } + + .value { + font-size: var(--fs-small); + } + + &:last-of-type { + text-align: right; + } +} + +#gauge--infos__donors { + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; + + .value { + font-weight: bold; + display: inline; + } + + .property { + display: inline; + padding-bottom: 0; + } +} + + +@media #{$small-up} { + #gauge { + --gauge-h: 18px; + + border: 2px solid var(--color-txt); + &::before { + height: calc(var(--gauge-h) - 4px); + } + } + + .gauge--infos { + .property { + font-size: var(--fs-small); + } + .value { + font-size: var(--fs-normal); + } + } +} diff --git a/backup/260311/assets/css/components/_nav-tabs.scss b/backup/260311/assets/css/components/_nav-tabs.scss new file mode 100644 index 0000000..2cbf6df --- /dev/null +++ b/backup/260311/assets/css/components/_nav-tabs.scss @@ -0,0 +1,40 @@ +.nav--tabs{ + height: calc(var(--h-block)*1); + width: auto; + border: var(--border); + border-radius: var(--radius-small); + overflow: hidden; + + + display: inline-flex; + + width: auto; + margin: 0 auto; + margin-bottom: var(--spacing); + + + .nav--tabs__btn{ + font-family: var(--font); + font-size: var(--fs-small); + font-weight: var(--fw-medium); + padding: 0 2ch; + + &.is-selected{ + background-color: var(--color-txt); + color: var(--color-bg); + } + + &:not(.is-selected):hover{ + background-color: var(--grey-800); + cursor: pointer; + } + + } + + .nav--tabs__btn + .nav--tabs__btn{ + border-left: var(--border); + + } + + +} \ No newline at end of file diff --git a/backup/260311/assets/css/components/_text.scss b/backup/260311/assets/css/components/_text.scss new file mode 100644 index 0000000..2aa69f1 --- /dev/null +++ b/backup/260311/assets/css/components/_text.scss @@ -0,0 +1,68 @@ +[data-template="subscription-newsletter"], +[data-template="thanks"], +[data-template="support"], +[data-template="store"]{ + + .p__baseline-big{ + font-family: var(--title); + font-size: var(--fs-big); + font-weight: var(--fw-bold); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing)*1) 0; + + strong{ + font-weight: var(--fw-bolf); + color: var(--color-accent); + } + + .link-don{ + display: block; + color: var(--color-accent); + text-decoration: none; + // &::after{ + // content: ' ↗'; + // font-size: 0.8em; + // } + &:hover{ + text-decoration: underline 2px; + text-underline-offset: 4px; + + } + } + } + + .p__baseline{ + font-size: var(--fs-medium); + font-weight: var(--fw-medium); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing)*1) 0; + @media #{$small}{ + text-align: center; + margin: var(--spacing) 0; + } + } + + .p__details{ + font-size: var(--fs-small); + margin-bottom: 0.5em; + color: var(--grey-400); + } + + .section__heading{ + font-size: var(--fs-normal); + font-weight: var(--fw-medium); + line-height: 1; + text-align: center; + margin-top: calc(var(--spacing)*0.5); + margin-bottom: calc(var(--spacing)*1); + } + + ul, ol{ + margin-left: 3ch; + margin-bottom: 0.5em; + } + +} + diff --git a/backup/260311/assets/css/partials/_site-footer.scss b/backup/260311/assets/css/partials/_site-footer.scss new file mode 100644 index 0000000..b6ae09d --- /dev/null +++ b/backup/260311/assets/css/partials/_site-footer.scss @@ -0,0 +1,122 @@ +#site-footer{ + + background-color: black; + + width: 100vw; + position: relative; + left: calc(var(--padding-body)*-1); + padding: calc(var(--padding-body)*2) var(--padding-body); +// border-top: var(--border-light); + + p{ + margin: calc(var(--spacing)*0.5) 0; + + a{ + text-decoration: none; + &:hover{ + text-decoration: underline; + } + } + } + + .p__small{ + font-size: var(--fs-x-small); + // margin-top: calc(var(--spacing)*0.5) + } + + #list-socials { + list-style: none; + columns: 2; + max-width: 500px; + margin: 0; + a{ + + display: flex; + align-items: center; + gap: 1ch; + text-decoration: none; + height: calc(var(--spacing)*1); + + &::after{ + content: '↗'; + color: var(--grey-300); + } + } + + .text{ + line-height: 1; + + } + + .icon{ + width: 20px; + height: 20px; + position: relative; + top: -2px; + } + svg{ + display: flex; + align-items: center; + width: 20px; + height: 20px; + + } + } + + + + + @media #{$small}{ + margin-top: calc(var(--spacing)*2); + .footer__socials{ + margin-top: calc(var(--spacing)*1.5); + } + .footer__mentions{ + margin-top: calc(var(--spacing)*0.5); + p{ + // font-size: var(--font-size); + margin-top: calc(var(--spacing)*2); + } + } + } + + + @media #{$small-up}{ + + .site-footer__container{ + display: grid; + grid-template-columns: 1fr 1fr; + column-gap: calc(var(--spacing)*2); + + max-width: 1200px; + margin: 0 auto; + } + + .footer__mentions{ + grid-column: span 2; + text-align: center; + p{ + font-size: var(--font-size); + margin-top: calc(var(--spacing)*2); + } + + } + + } + + @media #{$medium-up}{ + .site-footer__container{ + column-gap: calc(var(--spacing)*4); + } + } + + @media #{$small}{ + .footer__mentions{ + padding-top: calc(var(--spacing)*1); + p{ margin-top: 0;} + + text-align: center; + } + } + +} \ No newline at end of file diff --git a/backup/260311/assets/css/partials/_site-header.scss b/backup/260311/assets/css/partials/_site-header.scss new file mode 100644 index 0000000..cf92821 --- /dev/null +++ b/backup/260311/assets/css/partials/_site-header.scss @@ -0,0 +1,78 @@ +@keyframes add-border { + from { + border-bottom-color: transparent; + } + to { + border-bottom: var(--grey-800); + } +} + +#site-header { + position: fixed; + left: var(--padding-body); + top: 0px; + z-index: 900; + + width: calc(100vw - var(--padding-body) * 2); + // padding: 0 var(--padding-body); + height: var(--header-h); + &.is-shrinked { + height: var(--header-h-shrinked); + // animation: add-border 0.2s linear 0.2s; + border-bottom: var(--border-light); + } + // transition: all ease-in 0.2s; + + background-color: var(--color-bg); + display: flex; + align-items: center; + justify-content: space-between; + + .site-title { + display: flex; + width: 120px; + transition: all ease-in 0.2s; + overflow: hidden; + svg { + fill: var(--color-txt); + } + } + &.is-shrinked { + .site-title { + width: 80px !important; + } + } + + .header-left, + .header-right { + width: 90px; + display: flex; + align-items: center; + justify-content: flex-end; + } + + .header-center { + display: flex; + flex-direction: column; + align-items: center; + } + + #toggle-lang { + list-style: none; + display: flex; + justify-content: flex-end; + gap: 0.75ch; + text-transform: uppercase; + color: var(--grey-400); + line-height: 1; + margin: 0; + padding: 0; + + a { + text-decoration: none; + } + li.is-selected { + color: var(--color-txt); + } + } +} diff --git a/backup/260311/assets/css/style.css b/backup/260311/assets/css/style.css new file mode 100644 index 0000000..68d32fd --- /dev/null +++ b/backup/260311/assets/css/style.css @@ -0,0 +1,1311 @@ +@charset "UTF-8"; +:root { + --font: "Executive", Arial, sans-serif; + --title: "System", Arial, sans-serif; + --fs-x-small: 10px; + --fs-small: 12px; + --fs-normal: 16px; + --fs-medium: 20px; + --fs-big: 30px; + --fs-x-big: 38px; + --fs-button-bold: 22px; + --leading-tight: 1; + --leading-normal: 1.2; + --fw-normal: 400; + --fw-medium: 500; + --fw-bold: 600; + --color-bg: #161616; + --color-txt: #ffffff; + --color-accent: #00ff00; + --color-accent-50: #e9ffe9; + --color-accent-100: #d8fdd8; + --grey-100: #d8d8d8; + --grey-300: #b9b9b9; + --grey-400: #969696; + --grey-600: #6d6d6d; + --grey-800: #383838; + --border: 1px solid var(--color-txt); + --border-light: 1px solid var(--grey-800); + --header-h: 80px; + --header-h-shrinked: 50px; + --padding-body: 20px; + --radius-small: 4px; + --spacing: 30px; + --h-block: 30px; + --curve: cubic-bezier(0.175, 0.885, 0.32, 1.275); +} +@media screen and (max-width: 720px) { + :root { + --fs-medium: 20px; + --fs-big: 26px; + } +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-font-smoothing: antialiased; + -o-font-smoothing: antialiased; + scroll-behavior: smooth; +} + +a { + color: currentColor; +} + +button { + background: none; + outline: none; + border: none; + color: var(--color-txt); +} + +iframe { + border: none; +} + +body { + font-family: var(--font); + line-height: var(--leading-normal); + font-size: var(--fs-normal); + color: var(--color-txt); + background-color: var(--color-bg); + padding: 0px var(--padding-body); + width: 100vw; + overflow-x: hidden; +} + +main { + padding-top: var(--header-h); +} + +.nav--tabs { + height: calc(var(--h-block) * 1); + width: auto; + border: var(--border); + border-radius: var(--radius-small); + overflow: hidden; + display: inline-flex; + width: auto; + margin: 0 auto; + margin-bottom: var(--spacing); +} +.nav--tabs .nav--tabs__btn { + font-family: var(--font); + font-size: var(--fs-small); + font-weight: var(--fw-medium); + padding: 0 2ch; +} +.nav--tabs .nav--tabs__btn.is-selected { + background-color: var(--color-txt); + color: var(--color-bg); +} +.nav--tabs .nav--tabs__btn:not(.is-selected):hover { + background-color: var(--grey-800); + cursor: pointer; +} +.nav--tabs .nav--tabs__btn + .nav--tabs__btn { + border-left: var(--border); +} + +.btn__default { + --size: calc(var(--h-block) - 8px); + font-size: var(--fs-normal); + font-weight: var(--fw-normal); + height: var(--size); + padding-right: 1.5ch; + position: relative; + display: flex; + align-items: center; + gap: 0ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + cursor: pointer; +} +.btn__default .icon, .btn__default .txt { + z-index: 10; +} +.btn__default .icon { + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; +} +.btn__default .icon svg { + fill: var(--color-bg); + width: 80%; +} +.btn__default .txt { + font-family: var(--font-title); + color: var(--color-accent); + font-size: var(--fs-normal); + font-weight: var(--fw-bold); + padding-left: 1ch; +} +.btn__default::after { + content: ""; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size) / 2); + width: var(--size); + height: var(--size); + position: absolute; + left: 0; + z-index: 0; + transition: width 0.2s; +} +.btn__default:hover .txt { + color: var(--color-bg); + display: block; +} +.btn__default:hover::after { + width: 100%; +} + +#btn--don__mobile { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + padding-top: calc(var(--spacing) * 0.5); + padding-bottom: calc(var(--spacing) * 1.5); + position: fixed; + bottom: 0px; + left: 0; + z-index: 100; + opacity: 0; + transition: opacity ease-in 0.2s; + pointer-events: none; +} +#btn--don__mobile.is-visible { + pointer-events: all; + opacity: 1; +} +#btn--don__mobile.is-sticky { + position: relative; +} +@media screen and (min-width: 720px) { + #btn--don__mobile { + display: none !important; + } +} + +.btn--don { + --vertical-padding: 0.5ch; + height: calc(var(--h-block) + var(--vertical-padding)); + border-radius: calc(var(--h-block) / 1); + padding: var(--vertical-padding) 2ch; + background-color: var(--color-accent); + color: var(--color-bg); + font-family: var(--font); + font-size: var(--fs-medium); + font-weight: var(--fw-bold); +} +.btn--don a { + text-decoration: none; + display: flex; + align-items: center; + gap: 0.5ch; +} +.btn--don .icon { + height: 28px; + position: relative; + top: 1px; +} +.btn--don svg { + fill: var(--color-bg); + width: 24px; + height: 24px; +} + +.form__newsletter { + --size: 24px; + position: relative; + display: flex; + align-items: center; + position: relative; +} +.form__newsletter input[type=email] { + height: calc(var(--h-block) * 1.25); + width: 100%; + border-radius: calc(var(--h-block) * 0.625); + outline: none; + border: none; + padding: 0 2ch; + font-family: var(--font); + font-size: var(--fs-normal); + z-index: 40; + padding-top: 4px; +} +.form__newsletter input[type=email]::-moz-placeholder { + font-family: var(--font); + font-size: var(--fs-normal); +} +.form__newsletter input[type=email]::placeholder { + font-family: var(--font); + font-size: var(--fs-normal); +} +.form__newsletter input[type=email]:focus { + outline: 3px solid var(--grey-400); +} +.form__newsletter button[type=submit].btn--bold { + position: absolute; + right: 2px; + z-index: 100; +} +.form__newsletter button[type=submit].btn--bold { + --size: calc(var(--h-block)*1.25 - 4px); + font-family: var(--font); + font-size: var(--fs-button-bold); + height: var(--size); + display: flex; + align-items: center; + gap: 0.75ch; + color: var(--color-accent); + font-weight: var(--fw-medium); + text-decoration: none; + cursor: pointer; +} +.form__newsletter button[type=submit].btn--bold .icon, .form__newsletter button[type=submit].btn--bold .txt { + z-index: 10; +} +.form__newsletter button[type=submit].btn--bold .icon { + width: var(--size); + height: var(--size); + display: flex; + align-items: center; + justify-content: center; + color: var(--color-bg); + text-align: center; +} +.form__newsletter button[type=submit].btn--bold .icon svg { + fill: var(--color-bg); + width: 80%; +} +.form__newsletter button[type=submit].btn--bold .txt { + position: relative; + top: 2px; + font-size: var(--fs-normal); + display: none; + padding-left: 1ch; +} +.form__newsletter button[type=submit].btn--bold::after { + content: ""; + display: block; + background-color: var(--color-accent); + border-radius: calc(var(--size) / 2); + width: var(--size); + height: var(--size); + position: absolute; + right: 0; + z-index: 0; + transition: width 0.2s; +} +.form__newsletter button[type=submit].btn--bold:hover .txt { + color: var(--color-bg); + display: block; +} +.form__newsletter button[type=submit].btn--bold:hover::after { + width: 100%; +} + +.gauge__container { + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; + top: calc(var(--spacing) * 0.25); + padding: 0 calc(var(--spacing) * 0.5); +} + +#gauge { + --gauge-h: 12px; + width: 100%; + margin-bottom: calc(var(--spacing) * 0.25); + height: var(--gauge-h); + border-radius: calc(var(--gauge-h) * 0.5); + background-color: var(--color-bg); + border: 1px solid var(--color-txt); + position: relative; + box-shadow: 7px 6px 5px -3px rgba(0, 0, 0, 0.14); +} +#gauge::before { + content: ""; + display: block; + height: calc(var(--gauge-h) - 2px); + border-radius: calc(var(--gauge-h) * 0.5); + width: var(--pourcent); + min-width: 20px; + background-color: var(--color-accent); + position: absolute; + top: 0px; + left: 0px; + transition: width cubic-bezier(0.86, 0, 0.07, 1) 1s; +} + +.gauge--infos .property { + font-size: var(--fs-small); + padding-bottom: 3px; +} +.gauge--infos .value { + font-size: var(--fs-small); +} +.gauge--infos:last-of-type { + text-align: right; +} + +#gauge--infos__donors { + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; +} +#gauge--infos__donors .value { + font-weight: bold; + display: inline; +} +#gauge--infos__donors .property { + display: inline; + padding-bottom: 0; +} + +@media screen and (min-width: 720px) { + #gauge { + --gauge-h: 18px; + border: 2px solid var(--color-txt); + } + #gauge::before { + height: calc(var(--gauge-h) - 4px); + } + .gauge--infos .property { + font-size: var(--fs-small); + } + .gauge--infos .value { + font-size: var(--fs-normal); + } +} +[data-template=subscription-newsletter] .p__baseline-big, +[data-template=thanks] .p__baseline-big, +[data-template=support] .p__baseline-big, +[data-template=store] .p__baseline-big { + font-family: var(--title); + font-size: var(--fs-big); + font-weight: var(--fw-bold); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing) * 1) 0; +} +[data-template=subscription-newsletter] .p__baseline-big strong, +[data-template=thanks] .p__baseline-big strong, +[data-template=support] .p__baseline-big strong, +[data-template=store] .p__baseline-big strong { + font-weight: var(--fw-bolf); + color: var(--color-accent); +} +[data-template=subscription-newsletter] .p__baseline-big .link-don, +[data-template=thanks] .p__baseline-big .link-don, +[data-template=support] .p__baseline-big .link-don, +[data-template=store] .p__baseline-big .link-don { + display: block; + color: var(--color-accent); + text-decoration: none; +} +[data-template=subscription-newsletter] .p__baseline-big .link-don:hover, +[data-template=thanks] .p__baseline-big .link-don:hover, +[data-template=support] .p__baseline-big .link-don:hover, +[data-template=store] .p__baseline-big .link-don:hover { + -webkit-text-decoration: underline 2px; + text-decoration: underline 2px; + text-underline-offset: 4px; +} +[data-template=subscription-newsletter] .p__baseline, +[data-template=thanks] .p__baseline, +[data-template=support] .p__baseline, +[data-template=store] .p__baseline { + font-size: var(--fs-medium); + font-weight: var(--fw-medium); + line-height: 1.1; + text-align: center; + margin: calc(var(--spacing) * 1) 0; +} +@media screen and (max-width: 720px) { + [data-template=subscription-newsletter] .p__baseline, + [data-template=thanks] .p__baseline, + [data-template=support] .p__baseline, + [data-template=store] .p__baseline { + text-align: center; + margin: var(--spacing) 0; + } +} +[data-template=subscription-newsletter] .p__details, +[data-template=thanks] .p__details, +[data-template=support] .p__details, +[data-template=store] .p__details { + font-size: var(--fs-small); + margin-bottom: 0.5em; + color: var(--grey-400); +} +[data-template=subscription-newsletter] .section__heading, +[data-template=thanks] .section__heading, +[data-template=support] .section__heading, +[data-template=store] .section__heading { + font-size: var(--fs-normal); + font-weight: var(--fw-medium); + line-height: 1; + text-align: center; + margin-top: calc(var(--spacing) * 0.5); + margin-bottom: calc(var(--spacing) * 1); +} +[data-template=subscription-newsletter] ul, [data-template=subscription-newsletter] ol, +[data-template=thanks] ul, +[data-template=thanks] ol, +[data-template=support] ul, +[data-template=support] ol, +[data-template=store] ul, +[data-template=store] ol { + margin-left: 3ch; + margin-bottom: 0.5em; +} + +@keyframes add-border { + from { + border-bottom-color: transparent; + } + to { + border-bottom: var(--grey-800); + } +} +#site-header { + position: fixed; + left: var(--padding-body); + top: 0px; + z-index: 900; + width: calc(100vw - var(--padding-body) * 2); + height: var(--header-h); + background-color: var(--color-bg); + display: flex; + align-items: center; + justify-content: space-between; +} +#site-header.is-shrinked { + height: var(--header-h-shrinked); + border-bottom: var(--border-light); +} +#site-header .site-title { + display: flex; + width: 120px; + transition: all ease-in 0.2s; + overflow: hidden; +} +#site-header .site-title svg { + fill: var(--color-txt); +} +#site-header.is-shrinked .site-title { + width: 80px !important; +} +#site-header .header-left, +#site-header .header-right { + width: 90px; + display: flex; + align-items: center; + justify-content: flex-end; +} +#site-header .header-center { + display: flex; + flex-direction: column; + align-items: center; +} +#site-header #toggle-lang { + list-style: none; + display: flex; + justify-content: flex-end; + gap: 0.75ch; + text-transform: uppercase; + color: var(--grey-400); + line-height: 1; + margin: 0; + padding: 0; +} +#site-header #toggle-lang a { + text-decoration: none; +} +#site-header #toggle-lang li.is-selected { + color: var(--color-txt); +} + +#site-footer { + background-color: black; + width: 100vw; + position: relative; + left: calc(var(--padding-body) * -1); + padding: calc(var(--padding-body) * 2) var(--padding-body); +} +#site-footer p { + margin: calc(var(--spacing) * 0.5) 0; +} +#site-footer p a { + text-decoration: none; +} +#site-footer p a:hover { + text-decoration: underline; +} +#site-footer .p__small { + font-size: var(--fs-x-small); +} +#site-footer #list-socials { + list-style: none; + -moz-columns: 2; + columns: 2; + max-width: 500px; + margin: 0; +} +#site-footer #list-socials a { + display: flex; + align-items: center; + gap: 1ch; + text-decoration: none; + height: calc(var(--spacing) * 1); +} +#site-footer #list-socials a::after { + content: "↗"; + color: var(--grey-300); +} +#site-footer #list-socials .text { + line-height: 1; +} +#site-footer #list-socials .icon { + width: 20px; + height: 20px; + position: relative; + top: -2px; +} +#site-footer #list-socials svg { + display: flex; + align-items: center; + width: 20px; + height: 20px; +} +@media screen and (max-width: 720px) { + #site-footer { + margin-top: calc(var(--spacing) * 2); + } + #site-footer .footer__socials { + margin-top: calc(var(--spacing) * 1.5); + } + #site-footer .footer__mentions { + margin-top: calc(var(--spacing) * 0.5); + } + #site-footer .footer__mentions p { + margin-top: calc(var(--spacing) * 2); + } +} +@media screen and (min-width: 720px) { + #site-footer .site-footer__container { + display: grid; + grid-template-columns: 1fr 1fr; + -moz-column-gap: calc(var(--spacing) * 2); + column-gap: calc(var(--spacing) * 2); + max-width: 1200px; + margin: 0 auto; + } + #site-footer .footer__mentions { + grid-column: span 2; + text-align: center; + } + #site-footer .footer__mentions p { + font-size: var(--font-size); + margin-top: calc(var(--spacing) * 2); + } +} +@media screen and (min-width: 1080px) { + #site-footer .site-footer__container { + -moz-column-gap: calc(var(--spacing) * 4); + column-gap: calc(var(--spacing) * 4); + } +} +@media screen and (max-width: 720px) { + #site-footer .footer__mentions { + padding-top: calc(var(--spacing) * 1); + text-align: center; + } + #site-footer .footer__mentions p { + margin-top: 0; + } +} + +[data-template=support] section { + display: flex; + flex-direction: column; + margin: 0 auto; + padding-bottom: calc(var(--spacing) * 0.75); + margin-bottom: calc(var(--spacing) * 0.75); + border-bottom: var(--border-light); +} +[data-template=support] #section__hero { + margin-top: calc(var(--spacing) * 1); + display: block; +} +[data-template=support] #section__questions { + border-bottom: none; +} +[data-template=support] #section__donation:target { + padding-top: calc(var(--header-h) * 1.25); +} +[data-template=support] #section__video { + display: flex; + flex-direction: column; + align-items: center; +} +[data-template=support] #section__video .video-container { + display: flex; +} +[data-template=support] #section__video video { + width: 100%; + border: 1px solid var(--grey-800); + max-height: 90vh; + display: flex; +} +@media screen and (min-width: 1080px) { + [data-template=support] main { + display: grid; + grid-template-columns: 50% 50%; + grid-template-rows: repeat(4, auto); + max-width: 1200px; + margin: 0 auto; + padding-bottom: 0; + } + [data-template=support] #section__donation { + padding-top: calc(var(--spacing) * 1); + } + [data-template=support] #section__donation, + [data-template=support] #section__comments { + border: none; + } + [data-template=support] #section__baseline { + padding: calc(var(--spacing) * 0.5) 0; + } + [data-template=support] .gauge__container { + padding-top: calc(var(--spacing) * 1); + } + [data-template=support] .col-left, + [data-template=support] .col-right { + padding-top: calc(var(--spacing) * 1); + } + [data-template=support] .col-left { + grid-column: 1; + grid-row: 1/5; + } + [data-template=support] .col-right { + position: sticky; + top: calc(var(--spacing) * 2.5); + grid-column: 2; + grid-row: 1; + overflow: hidden; + } +} +@media screen and (max-width: 1080px) { + [data-template=support] main { + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: stretch; + max-width: 600px; + margin: 0 auto; + } + [data-template=support] section { + width: 100%; + } + [data-template=support] .col-left, + [data-template=support] .col-right { + display: contents; + } + [data-template=support] #section__hero { + order: 1; + } + [data-template=support] #section__donation { + order: 2; + } + [data-template=support] #section__baseline { + order: 3; + } + [data-template=support] #section__video { + order: 4; + } + [data-template=support] #section__comments { + order: 5; + } + [data-template=support] #section__questions { + order: 6; + margin-bottom: calc(var(--spacing) * 2); + } +} +@media screen and (max-height: 670px) and (min-width: 1080px) { + [data-template=support] .col-left, + [data-template=support] .col-right { + display: contents; + } + [data-template=support] section { + width: 100%; + } + [data-template=support] #section__donation { + grid-row: 1; + grid-column: 2; + position: sticky; + top: calc(var(--spacing) * 3.75); + } + [data-template=support] #section__hero { + grid-row: 1; + grid-column: 1; + } + [data-template=support] #section__baseline { + grid-row: 2; + grid-column: 1; + } + [data-template=support] #section__video { + grid-row: 3; + grid-column: 1; + } + [data-template=support] #section__comments { + grid-row: 4; + grid-column: 1; + border-bottom: var(--border-light); + } + [data-template=support] #section__questions { + grid-row: 5; + grid-column: 1; + } +} + +#section__donation { + display: flex; + align-items: center; +} +#section__donation .btn--donation__container { + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: calc(var(--padding-body) * 0.75); + display: none; +} +@media screen and (min-width: 1080px) { + #section__donation .btn--donation__container { + width: 420px; + } +} +@media screen and (max-width: 1080px) { + #section__donation .btn--donation__container { + width: 100%; + max-width: 420px; + } +} +#section__donation .btn--donation__container .btn--donation__grow-2 { + grid-column: span 2; +} +#section__donation .btn--donation__container.is-selected { + display: grid; +} +#section__donation .btn--donation { + background-color: var(--color-txt); + color: var(--color-bg); + border-radius: var(--radius-small); + height: calc(var(--h-block) * 2); +} +#section__donation .btn--donation .bold { + font-family: var(--title); + font-size: var(--fs-medium); + font-weight: var(--fw-bold); + margin-bottom: 0.25em; +} +#section__donation .btn--donation .small { + font-family: var(--font); + font-weight: var(--fw-medium); + font-size: var(--fs-small); +} +#section__donation .btn--donation:hover { + outline: 4px solid var(--color-accent); + cursor: pointer; +} + +.comment__text { + font-size: var(--fs-medium); + font-weight: var(--fw-medium); + line-height: var(--leading-tight); + line-height: 1.1; + max-width: 28ch; + text-align: center; +} + +.comment__name { + margin-top: calc(var(--spacing) * 0.5); + text-align: center; +} + +.swiper { + width: 100%; + max-width: 700px; + height: auto; + position: relative; + padding-bottom: 40px; /* espace réservé pour les dots */ +} +.swiper .swiper-slide { + display: flex; + flex-direction: column; + align-items: center; +} +.swiper .comments-slider__dots { + position: absolute; + bottom: 10px; /* espace du bas */ + left: 0; + width: 100%; + text-align: center; +} +.swiper .comments-slider__dots .swiper-pagination-bullet { + background-color: var(--grey-600); + opacity: 1; +} +.swiper .comments-slider__dots .swiper-pagination-bullet-active { + background-color: var(--color-txt); + opacity: 1; +} + +#section__questions { + max-width: 700px; +} +#section__questions summary::marker { + content: ""; + display: none; +} +#section__questions summary::-webkit-details-marker { + content: ""; + display: none; +} +#section__questions details { + border-bottom: var(--border); +} +#section__questions details:first-of-type { + border-top: var(--border); +} +#section__questions details summary { + padding-top: calc(var(--spacing) * 0.25 + 2px); + padding-bottom: calc(var(--spacing) * 0.25); + cursor: pointer; + position: relative; + padding-right: 2ch; +} +#section__questions details[open] summary::after { + content: "✕"; + position: absolute; + right: 0; +} +#section__questions details p { + margin: calc(var(--spacing) * 0.5) 0; +} +#section__questions details ul, #section__questions details ol { + margin-bottom: calc(var(--spacing) * 0.5); +} + +#section__video { + margin-bottom: calc(var(--spacing) * 2); +} +#section__video .btn__deploy { + margin-top: calc(var(--spacing) * 1); + --size: var(--h-block); + font-family: var(--font); + font-size: var(--fs-small); + font-weight: var(--fw-normal); + line-height: 1; + border: var(--border-light); + height: var(--size); + border-radius: calc(var(--size) / 2); + padding-left: 1.5ch; + padding-right: 2ch; + padding-top: 1px; + position: relative; + cursor: pointer; + display: flex; + align-items: center; + gap: 1ch; + font-weight: var(--fw-medium); + text-decoration: none; + cursor: pointer; +} +#section__video .btn__deploy:hover { + background-color: var(--grey-800); + border-color: var(--color-txt); +} +#section__video .btn__deploy svg { + fill: var(--color-txt); + width: 10px; + position: relative; + top: 1px; + left: 1px; +} +#section__video .videos__ul { + list-style: none; + width: 100%; + margin-top: calc(var(--spacing) * 1); + display: none; +} +#section__video .videos__ul .videos__li { + position: relative; + padding-left: 40px; + padding-right: 2ch; + margin-bottom: calc(var(--spacing) * 0.75); + cursor: pointer; +} +@media screen and (max-width: 520px) { + #section__video .videos__ul .videos__li .br-desktop { + display: none; + } +} +#section__video .videos__ul .videos__li:hover { + color: var(--grey-100); +} +#section__video .videos__ul .videos__li .icon { + --size: 20px; + flex-shrink: 0; + width: var(--size); + height: var(--size); + border-radius: calc(var(--size) / 2); + border: var(--border); + display: flex; + align-items: center; + justify-content: center; + position: absolute; + left: 0px; +} +#section__video .videos__ul .videos__li svg { + fill: var(--color-txt); + width: 7px; +} +#section__video #videos__input { + display: none; +} +#section__video #videos__input:checked ~ .videos__ul { + display: block; +} + +#video__fullscreen { + width: 100vw; + height: 100vh; + background-color: var(--color-bg); + padding: var(--padding-body); + position: fixed; + top: 0px; + left: 0; + z-index: 3000; +} +#video__fullscreen iframe { + width: 90%; + height: calc(100vh - 60px); + height: calc(100dvh - 60px); + border: var(--border); +} +#video__fullscreen #video__close { + height: 60px; + font-size: 20px; + width: 100%; + font-weight: bold; + display: flex; + align-items: top; + justify-content: flex-end; +} + +body.is-fullscreen { + overflow: hidden; +} + +[data-template=store] main { + margin-bottom: calc(var(--spacing) * 2); +} +[data-template=store] .p__baseline-big { + margin-top: calc(var(--spacing) * 2); +} +[data-template=store] #store__container { + margin-top: calc(var(--spacing) * 2); + margin-bottom: calc(var(--spacing) * 4); + width: 100%; + max-width: 1000px; +} +[data-template=store] #store__container .store__product { + position: relative; +} +[data-template=store] #store__container .store__product figure { + aspect-ratio: 4/3; + background-color: var(--color-bg); + background-color: var(--data-bg); + margin-bottom: calc(var(--spacing) * 0.5); + overflow: hidden; +} +[data-template=store] #store__container .store__product img { + width: 100%; + height: 100%; + -o-object-fit: contain; + object-fit: contain; + transition: var(--curve) 0.5s; +} +[data-template=store] #store__container .store__product a { + text-decoration: none; +} +[data-template=store] #store__container .store__product .link-block { + display: block; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + cursor: pointer; +} +[data-template=store] #store__container .store__product:hover figure { + overflow: hidden; +} +[data-template=store] #store__container .store__product:hover img { + transform: scale(1.05); +} +[data-template=store] #store__container .store__product:hover .line-1 { + text-decoration: underline; +} +@media screen and (max-width: 720px) { + [data-template=store] #store__container .store__product { + margin-top: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 0.5); + } +} +@media screen and (min-width: 720px) { + [data-template=store] #store__container { + display: grid; + grid-template-columns: repeat(6, 1fr); + -moz-column-gap: calc(var(--padding-body) * 0.75); + column-gap: calc(var(--padding-body) * 0.75); + row-gap: calc(var(--spacing) * 2); + margin-left: auto; + margin-right: auto; + } + [data-template=store] #store__container .store__product { + grid-column: span 2; + } + [data-template=store] #store__container .store__product:nth-of-type(1), + [data-template=store] #store__container .store__product:nth-of-type(2) { + grid-column: span 3; + } +} +[data-template=store] #site-footer { + margin-top: calc(var(--spacing) * 4); + padding-top: 0px; +} + +.section__product, +.store__nav { + max-width: 1000px; + margin-left: auto; + margin-right: auto; +} + +.store__nav { + padding-top: calc(var(--spacing) * 1); +} +.store__nav a { + text-decoration: none; +} +.store__nav a:hover { + text-decoration: underline; +} +.store__nav a::before { + content: "← "; +} + +.section__product figure { + aspect-ratio: 1/1; +} +.section__product figure img { + width: 100%; + height: 100%; + -o-object-fit: contain; + object-fit: contain; +} +.section__product #list-size { + list-style: none; + display: flex; + margin-top: calc(var(--spacing) * 0.5); + margin-bottom: calc(var(--spacing) * 0.5); + gap: 2ch; +} +.section__product #list-size li { + position: relative; +} +.section__product #list-size li input[type=radio] { + position: fixed; + opacity: 0; + pointer-events: none; +} +.section__product #list-size li label { + font-family: var(--title); + font-size: var(--fs-normal); + height: 4ch; + width: 4ch; + border-radius: 50%; + border: var(--border); + border-color: transparent; + display: flex; + align-items: center; + justify-content: center; + padding-top: 0px; + cursor: pointer; +} +.section__product #list-size li input[type=radio]:checked + label { + border-color: var(--color-txt); +} +.section__product #list-size li input[type=radio]:not(:checked) + label:hover { + border-color: var(--grey-600); + background-color: var(--grey-800); +} +.section__product .hero { + margin-bottom: calc(var(--spacing) * 1); + padding-top: calc(var(--spacing) * 0.5); + border-top: var(--border-light); +} +.section__product .hero .p__baseline-big { + margin: 0; + text-align: left; +} +.section__product .add-to-cart, +.section__product #list-size { + margin: 0; + border-bottom: var(--border-light); + padding: calc(var(--spacing) * 0.5) 0; +} + +@media screen and (max-width: 720px) { + .store__nav a { + padding-top: 0; + font-size: var(--fs-small); + } + .section__product { + display: flex; + flex-direction: column; + } + .section__product .col-left { + display: contents; + } + .section__product .hero { + margin-top: calc(var(--spacing) * 0.5); + order: 1; + } + .section__product figure { + order: 2; + margin-bottom: calc(var(--spacing) * 1); + } + .section__product .details { + order: 3; + margin-bottom: calc(var(--spacing) * 1.5); + } + .section__product .size { + border-top: var(--border-light); + order: 4; + } + .section__product .add-to-cart { + order: 5; + } +} +@media screen and (min-width: 720px) { + .section__product { + display: grid; + grid-template-columns: 50% 50%; + aspect-ratio: 2/1; + margin-top: calc(var(--spacing) * 0.5); + position: relative; + } + .section__product .col-left { + padding-right: var(--padding-body); + } + .section__product .details { + margin-bottom: calc(var(--spacing) * 3); + } + .section__product .add-to-cart, + .section__product #list-size { + width: calc(50% - var(--padding-body)); + } + .section__product .add-to-cart { + position: absolute; + bottom: 10px; + } + .section__product #list-size { + position: absolute; + bottom: calc(var(--spacing) * 2); + border-top: var(--border-light); + } +} +[data-template=thanks] .p__baseline-big { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 3); +} +[data-template=thanks] .p__baseline { + text-align: left; + max-width: 800px; + margin: var(--spacing) auto; +} +[data-template=thanks] .p__baseline a { + color: var(--color-accent); + text-decoration: none; +} +[data-template=thanks] .p__baseline a:hover { + text-decoration: underline; +} +[data-template=thanks] #site-footer { + border-top: none; + margin-top: calc(var(--spacing) * 4); +} + +.snipcart-modal__container { + z-index: 1000; +} + +[data-template=subscription-newsletter] main { + margin-top: calc(var(--spacing) * 2); +} +[data-template=subscription-newsletter] #form__newsletter__container { + max-width: 700px; + margin: calc(var(--spacing) * 3) auto; + margin-bottom: calc(var(--spacing) * 4); +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter { + margin: calc(var(--spacing) * 1) 0; +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter input[type=email] { + height: calc(var(--h-block) * 1.75); + border-radius: calc(var(--h-block) * 0.875); + font-size: var(--fs-medium); +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter input[type=email]::-moz-placeholder { + font-size: var(--fs-medium); +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter input[type=email]::placeholder { + font-size: var(--fs-medium); +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter button[type=submit].btn--bold { + --size: calc(var(--h-block)*1.75 - 4px); +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter button[type=submit].btn--bold .icon svg { + width: 28px; +} +[data-template=subscription-newsletter] #form__newsletter__container .form__newsletter .txt { + padding-left: 2ch; +} +[data-template=subscription-newsletter] #form__newsletter__container .p__baseline { + max-width: 52ch; + text-align: left; +} +[data-template=subscription-newsletter] #form__newsletter__container .p__details { + color: var(--color-txt); + max-width: 80ch; +} +[data-template=subscription-newsletter] #site-footer { + margin-top: calc(var(--spacing) * 4); + padding-top: 0px; +}/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/backup/260311/assets/css/style.css.map b/backup/260311/assets/css/style.css.map new file mode 100644 index 0000000..03b6a08 --- /dev/null +++ b/backup/260311/assets/css/style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["style.css","base/_var.scss","base/_body.scss","components/_nav-tabs.scss","components/_btn--default.scss","components/_btn--don.scss","components/_form-newsletter.scss","components/_gauge.scss","components/_text.scss","partials/_site-header.scss","partials/_site-footer.scss","template/support/_layout.scss","template/support/_section--donation.scss","template/support/_section--comments.scss","template/support/_section--questions.scss","template/support/_section--video.scss","template/store/_layout.scss","template/store/_section--product.scss","template/store/_thanks.scss","template/store/_snipcart.scss","template/subscription-newsletter/_layout.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/backup/260311/assets/css/style.scss b/backup/260311/assets/css/style.scss new file mode 100644 index 0000000..9eed384 --- /dev/null +++ b/backup/260311/assets/css/style.scss @@ -0,0 +1,29 @@ +@charset "UTF-8"; +@import 'base/responsive'; +@import 'base/var'; +@import 'base/body'; + +@import 'components/nav-tabs'; +@import 'components/btn--default'; +@import 'components/btn--don'; +@import 'components/form-newsletter'; +@import 'components/gauge'; +@import 'components/text'; + +@import 'partials/site-header'; +@import 'partials/site-footer'; + +@import 'template/support/layout'; +@import 'template/support/section--donation'; +@import 'template/support/section--comments'; +@import 'template/support/section--questions'; +@import 'template/support/section--video'; + +@import 'template/store/layout'; +@import 'template/store/section--product'; +@import 'template/store/thanks'; +@import 'template/store/snipcart'; + +@import 'template/subscription-newsletter/layout'; + + diff --git a/backup/260311/assets/css/template/store/_layout.scss b/backup/260311/assets/css/template/store/_layout.scss new file mode 100644 index 0000000..e64adcd --- /dev/null +++ b/backup/260311/assets/css/template/store/_layout.scss @@ -0,0 +1,90 @@ +[data-template='store'] { + main { + margin-bottom: calc(var(--spacing) * 2); + } + + .p__baseline-big { + margin-top: calc(var(--spacing) * 2); + } + + #store__container { + margin-top: calc(var(--spacing) * 2); + margin-bottom: calc(var(--spacing) * 4); + width: 100%; + max-width: 1000px; + + .store__product { + position: relative; + figure { + aspect-ratio: 4/3; + background-color: var(--color-bg); + background-color: var(--data-bg); + margin-bottom: calc(var(--spacing) * 0.5); + overflow: hidden; + } + img { + width: 100%; + height: 100%; + object-fit: contain; + transition: var(--curve) 0.5s; + } + + a { + text-decoration: none; + } + + .link-block { + display: block; + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + cursor: pointer; + } + + &:hover { + figure { + overflow: hidden; + } + img { + transform: scale(1.05); + } + + .line-1 { + text-decoration: underline; + } + } + } + + @media #{$small} { + .store__product { + margin-top: calc(var(--spacing) * 1.5); + margin-bottom: calc(var(--spacing) * 0.5); + } + } + + @media #{$small-up} { + display: grid; + grid-template-columns: repeat(6, 1fr); + column-gap: calc(var(--padding-body) * 0.75); + row-gap: calc(var(--spacing) * 2); + margin-left: auto; + margin-right: auto; + + .store__product { + grid-column: span 2; + } + .store__product:nth-of-type(1), + .store__product:nth-of-type(2) { + grid-column: span 3; + } + } + } + + + #site-footer{ + margin-top: calc(var(--spacing)*4); + padding-top: 0px; + } +} diff --git a/backup/260311/assets/css/template/store/_section--product.scss b/backup/260311/assets/css/template/store/_section--product.scss new file mode 100644 index 0000000..40563ef --- /dev/null +++ b/backup/260311/assets/css/template/store/_section--product.scss @@ -0,0 +1,168 @@ +.section__product, +.store__nav { + max-width: 1000px; + margin-left: auto; + margin-right: auto; +} + +.store__nav { + padding-top: calc(var(--spacing) * 1); + + a { + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + a::before { + content: '← '; + } +} + +.section__product { + figure { + aspect-ratio: 1/1; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + } + + #list-size { + list-style: none; + display: flex; + margin-top: calc(var(--spacing) * 0.5); + margin-bottom: calc(var(--spacing) * 0.5); + gap: 2ch; + + li { + position: relative; + + input[type='radio'] { + position: fixed; + opacity: 0; + pointer-events: none; + } + + label { + font-family: var(--title); + font-size: var(--fs-normal); + height: 4ch; + width: 4ch; + border-radius: 50%; + border: var(--border); + border-color: transparent; + display: flex; + align-items: center; + justify-content: center; + padding-top: 0px; + cursor: pointer; + } + + input[type='radio']:checked + label { + border-color: var(--color-txt); + } + + input[type='radio']:not(:checked) + label:hover { + border-color: var(--grey-600); + background-color: var(--grey-800); + } + } + } + + .hero { + margin-bottom: calc(var(--spacing) * 1); + padding-top: calc(var(--spacing) * 0.5); + border-top: var(--border-light); + + .p__baseline-big { + margin: 0; + text-align: left; + } + } + + .add-to-cart, + #list-size { + margin: 0; + border-bottom: var(--border-light); + padding: calc(var(--spacing) * 0.5) 0; + } +} + +@media #{$small} { + .store__nav a { + padding-top: 0; + font-size: var(--fs-small); + } + + .section__product { + display: flex; + flex-direction: column; + + .col-left { + display: contents; + } + + .hero { + margin-top: calc(var(--spacing) * 0.5); + order: 1; + } + figure { + order: 2; + margin-bottom: calc(var(--spacing) * 1); + } + + .details { + order: 3; + margin-bottom: calc(var(--spacing) * 1.5); + } + + .size { + border-top: var(--border-light); + order: 4; + } + + .add-to-cart { + order: 5; + } + } +} + +@media #{$small-up} { + .section__product { + display: grid; + grid-template-columns: 50% 50%; + aspect-ratio: 2/1; + + margin-top: calc(var(--spacing) * 0.5); + position: relative; + + .col-left { + padding-right: var(--padding-body); + } + + .details { + margin-bottom: calc(var(--spacing) * 3); + } + + .add-to-cart, + #list-size { + width: calc(50% - var(--padding-body)); + } + + .add-to-cart { + position: absolute; + bottom: 10px; + } + + #list-size { + position: absolute; + bottom: calc(var(--spacing) * 2); + border-top: var(--border-light); + } + } +} diff --git a/backup/260311/assets/css/template/store/_snipcart.scss b/backup/260311/assets/css/template/store/_snipcart.scss new file mode 100644 index 0000000..aab74c7 --- /dev/null +++ b/backup/260311/assets/css/template/store/_snipcart.scss @@ -0,0 +1,3 @@ +.snipcart-modal__container { + z-index: 1000; +} diff --git a/backup/260311/assets/css/template/store/_thanks.scss b/backup/260311/assets/css/template/store/_thanks.scss new file mode 100644 index 0000000..670fdef --- /dev/null +++ b/backup/260311/assets/css/template/store/_thanks.scss @@ -0,0 +1,29 @@ +[data-template="thanks"]{ + .p__baseline-big { + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 3); + // font-size: var(--fs-x-big); + } + + .p__baseline { + // font-size: var(--fs-big); + text-align: left; + max-width: 800px; + margin: var(--spacing) auto; + + a{ + color: var(--color-accent); + text-decoration: none; + &:hover{ + text-decoration: underline; + } + } + } + + #site-footer{ + border-top: none; + margin-top: calc(var(--spacing) * 4); + + } + +} \ No newline at end of file diff --git a/backup/260311/assets/css/template/subscription-newsletter/_layout.scss b/backup/260311/assets/css/template/subscription-newsletter/_layout.scss new file mode 100644 index 0000000..85fe399 --- /dev/null +++ b/backup/260311/assets/css/template/subscription-newsletter/_layout.scss @@ -0,0 +1,55 @@ +[data-template="subscription-newsletter"]{ + + main{ + margin-top: calc(var(--spacing)*2); + } + + + #form__newsletter__container{ + max-width: 700px; + margin: calc(var(--spacing)*3) auto; + margin-bottom: calc(var(--spacing)*4); + + + .form__newsletter{ + margin: calc(var(--spacing)*1) 0; + + input[type="email"]{ + height: calc(var(--h-block)*1.75); + border-radius: calc(var(--h-block)*0.875); + font-size: var(--fs-medium); + &::placeholder{ + font-size: var(--fs-medium); + } + } + button[type="submit"].btn--bold { + --size: calc(var(--h-block)*1.75 - 4px); + + .icon svg{ + width: 28px; + } + } + .txt{ + padding-left: 2ch; + } + } + + .p__baseline{ + max-width: 52ch; + // margin: 0 auto; + text-align: left; + } + + .p__details{ + color: var(--color-txt); + max-width: 80ch; + } + + } + + #site-footer{ + margin-top: calc(var(--spacing)*4); + padding-top: 0px; + } + +} \ No newline at end of file diff --git a/backup/260311/assets/css/template/support/_layout.scss b/backup/260311/assets/css/template/support/_layout.scss new file mode 100644 index 0000000..95ed351 --- /dev/null +++ b/backup/260311/assets/css/template/support/_layout.scss @@ -0,0 +1,177 @@ +[data-template="support"]{ + + section{ + display: flex; + flex-direction: column; + margin: 0 auto; + padding-bottom: calc(var(--spacing)*0.75); + margin-bottom: calc(var(--spacing)*0.75); + border-bottom: var(--border-light); + } + + #section__hero{ + margin-top: calc(var(--spacing)*1); + display: block; + } + + #section__questions{ + border-bottom: none; + } + + #section__donation:target{ + padding-top: calc(var(--header-h)*1.25); + } + + #section__video{ + display: flex; + flex-direction: column; + align-items: center; + + .video-container{ + display: flex; + } + video{ + width: 100%; + border: 1px solid var(--grey-800); + max-height: 90vh; + display: flex; + } + } + + + @media #{$medium-up}{ + + main{ + display: grid; + grid-template-columns: 50% 50%; + grid-template-rows: repeat(4, auto); + max-width: 1200px; + margin: 0 auto; + padding-bottom: 0; + } + + #section__donation{ + padding-top: calc(var(--spacing)*1); + } + + #section__donation, + #section__comments{ + border: none; + } + + #section__baseline{ + padding: calc(var(--spacing)*0.5) 0; + } + + .gauge__container{ + padding-top: calc(var(--spacing)*1); + } + + .col-left, + .col-right{ + padding-top: calc(var(--spacing)*1); + } + .col-left{ + grid-column: 1; + grid-row: 1/5; + } + .col-right{ + position: sticky; + top: calc(var(--spacing)*2.5); + grid-column: 2; + grid-row: 1; + overflow: hidden; + } + + } + + + @media #{$medium}{ + main{ + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: stretch; + max-width: 600px; + margin: 0 auto; + } + + section{ + width: 100%; + } + + + .col-left, + .col-right{ + display: contents; + } + + #section__hero{ + order: 1; + } + #section__donation{ + order: 2; + } + #section__baseline{ + order: 3; + } + #section__video{ + order: 4; + } + #section__comments{ + order: 5; + } + #section__questions{ + order: 6; + margin-bottom: calc(var(--spacing)*2); + + } + + } + + + @media #{$paysage}{ + .col-left, + .col-right{ + display: contents; + } + + section{ + width: 100%; + } + + #section__donation{ + grid-row: 1; + grid-column: 2; + position: sticky; + top: calc(var(--spacing)*3.75); + } + + #section__hero{ + grid-row: 1; + grid-column: 1; + } + #section__baseline{ + grid-row: 2; + grid-column: 1; + } + #section__video{ + grid-row: 3; + grid-column: 1; + } + #section__comments{ + grid-row: 4; + grid-column: 1; + border-bottom: var(--border-light); + + } + #section__questions{ + grid-row: 5; + grid-column: 1; + } + + } + + + +} \ No newline at end of file diff --git a/backup/260311/assets/css/template/support/_section--comments.scss b/backup/260311/assets/css/template/support/_section--comments.scss new file mode 100644 index 0000000..6d72bde --- /dev/null +++ b/backup/260311/assets/css/template/support/_section--comments.scss @@ -0,0 +1,55 @@ + + .comment__text{ + font-size: var(--fs-medium); + font-weight: var(--fw-medium); + line-height: var(--leading-tight); + line-height: 1.1; + max-width: 28ch; + text-align: center; + } + + .comment__name { + margin-top: calc(var(--spacing)*0.5); + text-align: center; + } + + + + + .swiper { + width: 100%; + max-width: 700px; + height: auto; + position: relative; + padding-bottom: 40px; /* espace réservé pour les dots */ + + .swiper-slide{ + display: flex; + flex-direction: column; + align-items: center; + } + + .comments-slider__dots{ + position: absolute; + bottom: 10px; /* espace du bas */ + left: 0; + width: 100%; + text-align: center; + + .swiper-pagination-bullet{ + background-color: var(--grey-600); + opacity: 1; + } + .swiper-pagination-bullet-active{ + background-color: var(--color-txt); + opacity: 1; + } + + + } + + + } + + + \ No newline at end of file diff --git a/backup/260311/assets/css/template/support/_section--donation.scss b/backup/260311/assets/css/template/support/_section--donation.scss new file mode 100644 index 0000000..20825b7 --- /dev/null +++ b/backup/260311/assets/css/template/support/_section--donation.scss @@ -0,0 +1,63 @@ +#section__donation{ + + display: flex; + align-items: center; + + + + .btn--donation__container{ + display: grid; + grid-template-columns: 1fr 1fr; + grid-gap: calc(var(--padding-body)*0.75); + + @media #{$medium-up}{ + width: 420px; + } + + @media #{$medium}{ + width: 100%; + max-width: 420px; + } + + .btn--donation__grow-2{ + grid-column: span 2; + } + + display: none; + &.is-selected{ + display: grid; + } + } + + + .btn--donation{ + background-color: var(--color-txt); + color: var(--color-bg); + border-radius: var(--radius-small); + height: calc(var(--h-block)*2); + + .bold{ + font-family: var(--title); + font-size: var(--fs-medium); + font-weight: var(--fw-bold); + margin-bottom: 0.25em; + } + + .small{ + font-family: var(--font); + font-weight: var(--fw-medium); + font-size: var(--fs-small); + } + + &:hover{ + outline: 4px solid var(--color-accent); + cursor: pointer; + } + + } + + + + + +} \ No newline at end of file diff --git a/backup/260311/assets/css/template/support/_section--questions.scss b/backup/260311/assets/css/template/support/_section--questions.scss new file mode 100644 index 0000000..e133d4e --- /dev/null +++ b/backup/260311/assets/css/template/support/_section--questions.scss @@ -0,0 +1,48 @@ +#section__questions{ + + max-width: 700px; + + + summary::marker{ + content: ""; + display: none; + } + summary::-webkit-details-marker{ + content: ""; + display: none; + } + + + details{ + + border-bottom: var(--border); + &:first-of-type{ + border-top: var(--border); + } + + summary{ + padding-top: calc(var(--spacing)*0.25 + 2px); + padding-bottom: calc(var(--spacing)*0.25); + cursor: pointer; + position: relative; + padding-right: 2ch; + } + + &[open] summary::after{ + content: "✕"; + position: absolute; + right: 0; + } + + + p{ + margin: calc(var(--spacing)*0.5) 0; + } + + ul, ol{ + margin-bottom: calc(var(--spacing)*0.5); + } + + } + +} \ No newline at end of file diff --git a/backup/260311/assets/css/template/support/_section--video.scss b/backup/260311/assets/css/template/support/_section--video.scss new file mode 100644 index 0000000..ee2bf96 --- /dev/null +++ b/backup/260311/assets/css/template/support/_section--video.scss @@ -0,0 +1,140 @@ +#section__video{ + margin-bottom: calc(var(--spacing)*2); + + .btn__deploy{ + margin-top: calc(var(--spacing)*1); + --size: var(--h-block); + font-family: var(--font); + font-size: var(--fs-small); + font-weight: var(--fw-normal); + line-height: 1; + border: var(--border-light); + height: var(--size); + border-radius: calc(var(--size)/2); + padding-left: 1.5ch; + padding-right: 2ch; + padding-top: 1px; + + position: relative; + cursor: pointer; + + display: flex; + align-items: center; + gap: 1ch; + // padding-right: 0.5ch; + font-weight: var(--fw-medium); + text-decoration: none; + + &:hover{ + background-color: var(--grey-800); + border-color: var(--color-txt); + } + + + + cursor: pointer; + + svg{ + fill: var(--color-txt); + width: 10px; + position: relative; + top: 1px; + left: 1px; + } + + } + + + .videos__ul{ + list-style: none; + width: 100%; + margin-top: calc(var(--spacing)*1); + display: none; + + .videos__li{ + + position: relative; + padding-left: 40px; + padding-right: 2ch; + // padding-top: calc(var(--spacing)*0.25); + // padding-bottom: calc(var(--spacing)*0.25); + // border-top: var(--border-light); + // border-bottom: var(--border-light); + + margin-bottom: calc(var(--spacing)*0.75); + + cursor: pointer; + + @media screen and (max-width: 520px){ + .br-desktop{ display: none; } + } + + + &:hover{ + color: var(--grey-100); + } + + .icon{ + --size: 20px; + flex-shrink: 0; + width: var(--size); + height: var(--size); + border-radius: calc(var(--size)/2); + border: var(--border); + display: flex; + align-items: center; + justify-content: center; + position: absolute; + left: 0px; + + } + + svg{ + fill: var(--color-txt); + width: 7px; + } + } + } + + #videos__input{ display: none } + + #videos__input:checked ~ .videos__ul{ + display: block; + } +} + + +#video__fullscreen{ + + width: 100vw; + height: 100vh; + background-color: var(--color-bg); + padding: var(--padding-body); + position: fixed; + top: 0px; + left: 0; + z-index: 3000; + + + iframe{ + width: 90%; + height: calc(100vh - 60px); + height: calc(100dvh - 60px); + border: var(--border); + } + + #video__close{ + height: 60px; + font-size: 20px; + width: 100%; + font-weight: bold; + display: flex; + align-items: top; + justify-content: flex-end; + + } +} + +body.is-fullscreen{ + overflow: hidden; +} \ No newline at end of file diff --git a/backup/260311/assets/favicon.png b/backup/260311/assets/favicon.png new file mode 100644 index 0000000..bca6cd5 Binary files /dev/null and b/backup/260311/assets/favicon.png differ diff --git a/backup/260311/assets/fonts/Executive-55Regular.woff b/backup/260311/assets/fonts/Executive-55Regular.woff new file mode 100644 index 0000000..99eaf84 Binary files /dev/null and b/backup/260311/assets/fonts/Executive-55Regular.woff differ diff --git a/backup/260311/assets/fonts/Executive-56Italic.woff b/backup/260311/assets/fonts/Executive-56Italic.woff new file mode 100644 index 0000000..e70c795 Binary files /dev/null and b/backup/260311/assets/fonts/Executive-56Italic.woff differ diff --git a/backup/260311/assets/fonts/Executive-65Medium.woff b/backup/260311/assets/fonts/Executive-65Medium.woff new file mode 100644 index 0000000..16c2373 Binary files /dev/null and b/backup/260311/assets/fonts/Executive-65Medium.woff differ diff --git a/backup/260311/assets/fonts/Executive-66MediumIt.woff b/backup/260311/assets/fonts/Executive-66MediumIt.woff new file mode 100644 index 0000000..31f7584 Binary files /dev/null and b/backup/260311/assets/fonts/Executive-66MediumIt.woff differ diff --git a/backup/260311/assets/fonts/System-Bold.woff2 b/backup/260311/assets/fonts/System-Bold.woff2 new file mode 100644 index 0000000..d041a01 Binary files /dev/null and b/backup/260311/assets/fonts/System-Bold.woff2 differ diff --git a/backup/260311/assets/fonts/System-BoldItalic.woff2 b/backup/260311/assets/fonts/System-BoldItalic.woff2 new file mode 100644 index 0000000..0ca3899 Binary files /dev/null and b/backup/260311/assets/fonts/System-BoldItalic.woff2 differ diff --git a/backup/260311/assets/fonts/System-Medium.woff2 b/backup/260311/assets/fonts/System-Medium.woff2 new file mode 100644 index 0000000..10541f0 Binary files /dev/null and b/backup/260311/assets/fonts/System-Medium.woff2 differ diff --git a/backup/260311/assets/fonts/System-MediumItalic.woff2 b/backup/260311/assets/fonts/System-MediumItalic.woff2 new file mode 100644 index 0000000..db78574 Binary files /dev/null and b/backup/260311/assets/fonts/System-MediumItalic.woff2 differ diff --git a/backup/260311/assets/fonts/stylesheet.css b/backup/260311/assets/fonts/stylesheet.css new file mode 100644 index 0000000..95bf8b1 --- /dev/null +++ b/backup/260311/assets/fonts/stylesheet.css @@ -0,0 +1,57 @@ +/* Executive - Regular */ +@font-face { + font-family: "Executive"; + src: url("Executive-55Regular.woff") format("woff"); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: "Executive"; + src: url("Executive-56Italic.woff") format("woff"); + font-weight: 300; + font-style: italic; +} + +@font-face { + font-family: "Executive"; + src: url("Executive-65Medium.woff") format("woff"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Executive"; + src: url("Executive-66MediumIt.woff") format("woff"); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: "System"; + src: url("System-Medium.woff2") format("woff2"); + font-weight: 500; + font-style: normal; +} + +@font-face { + font-family: "System"; + src: url("System-MediumItalic.woff2") format("woff2"); + font-weight: 500; + font-style: italic; +} + + +@font-face { + font-family: "System"; + src: url("System-Bold.woff2") format("woff2"); + font-weight: 600; + font-style: normal; +} + +@font-face { + font-family: "System"; + src: url("System-BoldItalic.woff2") format("woff2"); + font-weight: 600; + font-style: italic; +} \ No newline at end of file diff --git a/backup/260311/assets/icons/arrow-left.svg b/backup/260311/assets/icons/arrow-left.svg new file mode 100644 index 0000000..09437b0 --- /dev/null +++ b/backup/260311/assets/icons/arrow-left.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/backup/260311/assets/icons/arrow-top-right.svg b/backup/260311/assets/icons/arrow-top-right.svg new file mode 100644 index 0000000..e46faa9 --- /dev/null +++ b/backup/260311/assets/icons/arrow-top-right.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/backup/260311/assets/icons/bluesky.svg b/backup/260311/assets/icons/bluesky.svg new file mode 100644 index 0000000..3944e93 --- /dev/null +++ b/backup/260311/assets/icons/bluesky.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/backup/260311/assets/icons/facebook.svg b/backup/260311/assets/icons/facebook.svg new file mode 100644 index 0000000..cf4118e --- /dev/null +++ b/backup/260311/assets/icons/facebook.svg @@ -0,0 +1,3 @@ + + + diff --git a/backup/260311/assets/icons/instagram.svg b/backup/260311/assets/icons/instagram.svg new file mode 100644 index 0000000..57775b0 --- /dev/null +++ b/backup/260311/assets/icons/instagram.svg @@ -0,0 +1,3 @@ + + + diff --git a/backup/260311/assets/icons/linkedin.svg b/backup/260311/assets/icons/linkedin.svg new file mode 100644 index 0000000..5a9c0a5 --- /dev/null +++ b/backup/260311/assets/icons/linkedin.svg @@ -0,0 +1,3 @@ + + + diff --git a/backup/260311/assets/icons/play-button.svg b/backup/260311/assets/icons/play-button.svg new file mode 100644 index 0000000..d4fbef9 --- /dev/null +++ b/backup/260311/assets/icons/play-button.svg @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/backup/260311/assets/icons/threads.svg b/backup/260311/assets/icons/threads.svg new file mode 100644 index 0000000..3619982 --- /dev/null +++ b/backup/260311/assets/icons/threads.svg @@ -0,0 +1,3 @@ + + + diff --git a/backup/260311/assets/icons/youtube.svg b/backup/260311/assets/icons/youtube.svg new file mode 100644 index 0000000..40ca348 --- /dev/null +++ b/backup/260311/assets/icons/youtube.svg @@ -0,0 +1,3 @@ + + + diff --git a/backup/260311/assets/images/abrs-visuel-couverture-min.png b/backup/260311/assets/images/abrs-visuel-couverture-min.png new file mode 100644 index 0000000..ffd6713 Binary files /dev/null and b/backup/260311/assets/images/abrs-visuel-couverture-min.png differ diff --git a/backup/260311/assets/images/casquette-01.png b/backup/260311/assets/images/casquette-01.png new file mode 100644 index 0000000..9d22a75 Binary files /dev/null and b/backup/260311/assets/images/casquette-01.png differ diff --git a/backup/260311/assets/images/hero-1.png b/backup/260311/assets/images/hero-1.png new file mode 100644 index 0000000..fc3d595 Binary files /dev/null and b/backup/260311/assets/images/hero-1.png differ diff --git a/backup/260311/assets/images/hero-2.png b/backup/260311/assets/images/hero-2.png new file mode 100644 index 0000000..e65534d Binary files /dev/null and b/backup/260311/assets/images/hero-2.png differ diff --git a/backup/260311/assets/images/hero-3.png b/backup/260311/assets/images/hero-3.png new file mode 100644 index 0000000..7dcfb86 Binary files /dev/null and b/backup/260311/assets/images/hero-3.png differ diff --git a/backup/260311/assets/images/poster-video-campagne.jpg b/backup/260311/assets/images/poster-video-campagne.jpg new file mode 100644 index 0000000..f3090ae Binary files /dev/null and b/backup/260311/assets/images/poster-video-campagne.jpg differ diff --git a/backup/260311/assets/images/publi-lebal.jpg b/backup/260311/assets/images/publi-lebal.jpg new file mode 100644 index 0000000..07d03b4 Binary files /dev/null and b/backup/260311/assets/images/publi-lebal.jpg differ diff --git a/backup/260311/assets/images/tshirt-01.png b/backup/260311/assets/images/tshirt-01.png new file mode 100644 index 0000000..99899b8 Binary files /dev/null and b/backup/260311/assets/images/tshirt-01.png differ diff --git a/backup/260311/assets/images/video-temp.mp4 b/backup/260311/assets/images/video-temp.mp4 new file mode 100644 index 0000000..113f900 Binary files /dev/null and b/backup/260311/assets/images/video-temp.mp4 differ diff --git a/backup/260311/assets/index-logo.svg b/backup/260311/assets/index-logo.svg new file mode 100644 index 0000000..5da04f5 --- /dev/null +++ b/backup/260311/assets/index-logo.svg @@ -0,0 +1,14 @@ + + Index.ngo + + + + + + + + + + + + diff --git a/backup/260311/assets/js/donation.js b/backup/260311/assets/js/donation.js new file mode 100644 index 0000000..8c3ef58 --- /dev/null +++ b/backup/260311/assets/js/donation.js @@ -0,0 +1,154 @@ +(function () { + 'use strict'; + + const DONORBOX_CAMPAIGN_URL = 'https://donorbox.org/soutenir-index-2025-don'; + const TAX_REDUCTION_RATE = 0.66; + + const AMOUNTS = { + oneOff: [200, 100, 50, 20], + monthly: [50, 20, 10, 5], + }; + + const TRANSLATIONS = { + fr: { + afterTax: 'Soit {amount} € après impôts', + perMonth: '€/mois', + withTaxReduction: 'Avec 66 % de déduction fiscale', + }, + en: { + afterTax: 'That is {amount} € after tax', + perMonth: '€/month', + withTaxReduction: 'With 66 % tax deduction', + }, + }; + + function getLanguage() { + return document.documentElement.lang || 'fr'; + } + + function translate(key, params = {}) { + const lang = getLanguage(); + let text = TRANSLATIONS[lang][key] || TRANSLATIONS['fr'][key]; + Object.keys(params).forEach((param) => { + text = text.replace(`{${param}}`, params[param]); + }); + return text; + } + + function calculateAfterTax(amount) { + const result = amount * (1 - TAX_REDUCTION_RATE); + const rounded = Math.round(result * 100) / 100; + return rounded % 1 === 0 ? Math.round(rounded) : rounded.toFixed(2); + } + + function formatAmount(amount) { + return amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '\u202F'); + } + + function generateDonorboxUrl(amount, isMonthly) { + const params = new URLSearchParams(); + params.append('default_interval', isMonthly ? 'm' : 'o'); + if (amount) { + params.append('amount', amount); + } + + // Récupérer les paramètres UTM de l'URL actuelle + const currentUrlParams = new URLSearchParams(window.location.search); + const utmParams = [ + 'utm_source', + 'utm_medium', + 'utm_campaign', + 'utm_term', + 'utm_content', + ]; + + utmParams.forEach((utmParam) => { + const value = currentUrlParams.get(utmParam); + if (value) { + params.append(utmParam, value); + } + }); + + return `${DONORBOX_CAMPAIGN_URL}?${params.toString()}`; + } + + function initTabs() { + const tabButtons = document.querySelectorAll('.nav--tabs__btn'); + const containers = document.querySelectorAll('.btn--donation__container'); + + tabButtons.forEach((button, index) => { + button.addEventListener('click', () => { + tabButtons.forEach((btn) => btn.classList.remove('is-selected')); + containers.forEach((container) => + container.classList.remove('is-selected') + ); + + button.classList.add('is-selected'); + containers[index].classList.add('is-selected'); + }); + }); + } + + function initDonationButtons() { + const oneOffContainer = document.querySelector( + '[data-donnation="one-off"]' + ); + const oneOffButtons = oneOffContainer.querySelectorAll('.btn--donation'); + + oneOffButtons.forEach((button, index) => { + if (index < AMOUNTS.oneOff.length) { + const amount = AMOUNTS.oneOff[index]; + const afterTax = calculateAfterTax(amount); + + button.innerHTML = ` +

${formatAmount(amount)} €

+

${translate('afterTax', { + amount: formatAmount(afterTax), + })}

+ `; + + button.addEventListener('click', () => { + window.open(generateDonorboxUrl(amount, false), '_blank'); + }); + } else { + button.addEventListener('click', () => { + window.open(generateDonorboxUrl(null, false), '_blank'); + }); + } + }); + + const monthlyContainer = document.querySelector( + '[data-donnation="monthly"]' + ); + const monthlyButtons = monthlyContainer.querySelectorAll('.btn--donation'); + + monthlyButtons.forEach((button, index) => { + if (index < AMOUNTS.monthly.length) { + const amount = AMOUNTS.monthly[index]; + const afterTax = calculateAfterTax(amount); + + button.innerHTML = ` +

${formatAmount(amount)} ${translate( + 'perMonth' + )}

+

${translate('afterTax', { + amount: formatAmount(afterTax), + })}

+ `; + + button.addEventListener('click', () => { + window.open(generateDonorboxUrl(amount, true), '_blank'); + }); + } else { + button.addEventListener('click', () => { + window.open(generateDonorboxUrl(null, true), '_blank'); + }); + } + }); + } + + document.addEventListener('DOMContentLoaded', () => { + initTabs(); + initDonationButtons(); + }); +})(); diff --git a/backup/260311/assets/js/donorbox-gauge.js b/backup/260311/assets/js/donorbox-gauge.js new file mode 100644 index 0000000..a410517 --- /dev/null +++ b/backup/260311/assets/js/donorbox-gauge.js @@ -0,0 +1,105 @@ +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€'; +} + +async function fetchDonorboxData() { + try { + const response = await fetch(DONORBOX_CONFIG.proxyUrl, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) { + throw new Error(`HTTP error ${response.status}: ${response.statusText}`); + } + + const data = await response.json(); + + if (data.error) { + throw new Error(data.error); + } + + return data; + } catch (error) { + console.error('Error fetching Donorbox data:', error); + throw error; + } +} + +function updateGaugeDisplay(campaignData) { + const collected = campaignData.total_raised || 0; + const goal = campaignData.goal_amt || 50000; + const percentage = Math.min((collected / goal) * 100, 100); + + const gaugeElement = document.getElementById('gauge'); + if (gaugeElement) { + gaugeElement.style.setProperty( + '--pourcent', + `${percentage > 2.5 ? percentage : 2.5}%` + ); + } + + const collectedElement = 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; + } + + console.log('Gauge updated:', { + collected: formatCurrency(collected), + goal: formatCurrency(goal), + percentage: `${percentage.toFixed(1)}%`, + }); +} + +async function initDonorboxGauge() { + try { + console.log('Fetching Donorbox data...'); + const campaignData = await fetchDonorboxData(); + updateGaugeDisplay(campaignData); + } catch (error) { + console.error('Failed to update gauge:', error); + } +} + +function setupAutoRefresh(intervalMinutes = 5) { + const intervalMs = intervalMinutes * 60 * 1000; + setInterval(initDonorboxGauge, intervalMs); + console.log(`Auto-refresh configured: every ${intervalMinutes} minutes`); +} + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => { + initDonorboxGauge(); + setupAutoRefresh(5); + }); +} else { + initDonorboxGauge(); + setupAutoRefresh(5); +} diff --git a/backup/260311/assets/js/newsletter-brevo.js b/backup/260311/assets/js/newsletter-brevo.js new file mode 100644 index 0000000..f84b403 --- /dev/null +++ b/backup/260311/assets/js/newsletter-brevo.js @@ -0,0 +1,89 @@ +(function () { + 'use strict'; + + const PROXY_URL = '/api/brevo-newsletter-proxy.php'; + + async function subscribeToNewsletter(email, attributes = {}) { + const response = await fetch(PROXY_URL, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ email, attributes }), + }); + + const data = await response.json(); + + if (!response.ok) { + const error = new Error( + data.user_message || data.message || 'Subscription error' + ); + error.code = data.error; + error.data = data; + throw error; + } + + return data; + } + + function showMessage(form, text, isError = false) { + const oldMessages = form.parentNode.querySelectorAll('.newsletter-message'); + oldMessages.forEach((msg) => msg.remove()); + + const message = document.createElement('p'); + message.className = 'newsletter-message'; + message.textContent = text; + message.style.marginTop = '0.5rem'; + message.style.fontSize = '0.9rem'; + message.style.color = isError + ? 'var(--color-error, #ef4444)' + : 'var(--color-success, #22c55e)'; + + form.parentNode.insertBefore(message, form.nextSibling); + + if (!isError) { + setTimeout(() => message.remove(), 5000); + } + } + + async function handleFormSubmit(event) { + event.preventDefault(); + + const form = event.target; + const emailInput = form.querySelector('input[type="email"]'); + const submitButton = form.querySelector('button[type="submit"]'); + + if (!emailInput || !emailInput.value) { + const message = location.pathname.includes('/en/') + ? 'Please enter a valid email address.' + : 'Veuillez entrer une adresse email valide.'; + showMessage(form, messsage, true); + return; + } + + const email = emailInput.value.trim(); + submitButton.disabled = true; + + try { + await subscribeToNewsletter(email); + const message = location.pathname.includes('/en/') + ? 'Thank you! Your subscription has been confirmed.' + : 'Merci, votre inscription est confirmée !'; + showMessage(form, message, false); + form.reset(); + } catch (error) { + const isAlreadySubscribed = error.code === 'email_already_exists'; + showMessage(form, error.message, !isAlreadySubscribed); + } finally { + submitButton.disabled = false; + } + } + + function initNewsletterForms() { + const forms = document.querySelectorAll('.form__newsletter'); + forms.forEach((form) => form.addEventListener('submit', handleFormSubmit)); + } + + document.addEventListener('DOMContentLoaded', initNewsletterForms); +})(); diff --git a/backup/260311/assets/js/onload.js b/backup/260311/assets/js/onload.js new file mode 100644 index 0000000..c2c7211 --- /dev/null +++ b/backup/260311/assets/js/onload.js @@ -0,0 +1,90 @@ +window.onload = function () { + headerShrink(); + initCart(); + toggleDonationButton(); + videos(); +}; + +window.onscroll = function () { + headerShrink(); + toggleDonationButton(); +}; + +function initCart() { + const items = document.querySelectorAll('.store__product .link-block'); + const header = document.querySelector('#site-header'); +} + +function headerShrink() { + const header = document.getElementById('site-header'); + const scrollPosition = window.scrollY || document.documentElement.scrollTop; + + if (scrollPosition > 100) { + header.classList.add('is-shrinked'); + } else { + header.classList.remove('is-shrinked'); + } +} + +function toggleDonationButton() { + const btn = document.getElementById('btn--don__mobile'); + const section = document.getElementById('section__donation'); + const footer = document.getElementById('site-footer'); + + if (!btn || !section || !footer) return; // sécurité + + const scrollTop = window.scrollY || window.pageYOffset; + const triggerPoint = section.offsetTop + section.offsetHeight / 2; + + // 1️⃣ Gestion de la visibilité du bouton + if (scrollTop >= triggerPoint) { + btn.classList.add('is-visible'); + } else { + btn.classList.remove('is-visible'); + } + + // 2️⃣ Gestion de la position par rapport au footer + const footerRect = footer.getBoundingClientRect(); + const windowHeight = window.innerHeight; + + if (footerRect.top < windowHeight) { + const footerVisibleHeight = windowHeight - footerRect.top; + btn.style.bottom = footerVisibleHeight + 'px'; + } else { + btn.style.bottom = '0px'; + } +} + + +function videos(){ + console.log("video"); + let section = document.getElementById("section__video"); + console.log(section); + + let videoslinks = document.querySelectorAll(".videos__li"); + videoslinks.forEach(function (video, index) { + + video.addEventListener("click", (event) => { + let data = video.getAttribute('data-video'); + + var div = document.createElement('section'); + div.id = "video__fullscreen"; + div.innerHTML = '\ + '; + document.body.appendChild(div); + document.body.classList.add("is-fullscreen"); + + let close = document.querySelector("#video__close"); + close.addEventListener("click", (event) => { + div.remove(); + document.body.classList.remove("is-fullscreen"); + }); + }); + + }); + +} \ No newline at end of file diff --git a/backup/260311/assets/js/product-size.js b/backup/260311/assets/js/product-size.js new file mode 100644 index 0000000..bd02e34 --- /dev/null +++ b/backup/260311/assets/js/product-size.js @@ -0,0 +1,47 @@ +/** + * Gestion de la sélection de taille pour les produits + * Met à jour l'attribut data-item-size au changement de sélection + */ + +(function() { + 'use strict'; + + /** + * Initialise la gestion des tailles + */ + function initSizeSelector() { + const sizeRadios = document.querySelectorAll('#list-size input[type="radio"]'); + const addToCartButton = document.querySelector('.add-to-cart'); + + if (!addToCartButton) { + console.warn('Bouton add-to-cart non trouvé'); + return; + } + + // Définir la taille initiale (taille sélectionnée par défaut) + const checkedRadio = document.querySelector('#list-size input[type="radio"]:checked'); + if (checkedRadio) { + addToCartButton.setAttribute('data-item-size', checkedRadio.value); + } + + // Écouter les changements de sélection + sizeRadios.forEach(radio => { + radio.addEventListener('change', function() { + // Mettre à jour l'attribut data-item-size + addToCartButton.setAttribute('data-item-size', this.value); + + // Optionnel: gérer la classe is-selected sur les li parents + // (pour compatibilité avec d'éventuels styles existants) + const allLi = document.querySelectorAll('#list-size li'); + allLi.forEach(li => li.classList.remove('is-selected')); + this.closest('li').classList.add('is-selected'); + }); + }); + } + + /** + * Initialisation au chargement de la page + */ + document.addEventListener('DOMContentLoaded', initSizeSelector); + +})(); diff --git a/backup/260311/assets/js/snipcart.js b/backup/260311/assets/js/snipcart.js new file mode 100644 index 0000000..cdb9359 --- /dev/null +++ b/backup/260311/assets/js/snipcart.js @@ -0,0 +1,82 @@ +window.SnipcartSettings = { + publicApiKey: + 'NGU4ODQ3MjAtY2MzMC00MWEyLWI2YTMtNjBmNGYzMTBlOTZkNjM4OTY1NDY4OTE5MTQyMTI3', + loadStrategy: 'on-user-interaction', +}; + +(() => { + var c, d; + (d = (c = window.SnipcartSettings).version) != null || (c.version = '3.0'); + var s, S; + (S = (s = window.SnipcartSettings).timeoutDuration) != null || + (s.timeoutDuration = 2750); + var l, p; + (p = (l = window.SnipcartSettings).domain) != null || + (l.domain = 'cdn.snipcart.com'); + var w, u; + (u = (w = window.SnipcartSettings).protocol) != null || + (w.protocol = 'https'); + var f = + window.SnipcartSettings.version.includes('v3.0.0-ci') || + (window.SnipcartSettings.version != '3.0' && + window.SnipcartSettings.version.localeCompare('3.4.0', void 0, { + numeric: !0, + sensitivity: 'base', + }) === -1), + m = ['focus', 'mouseover', 'touchmove', 'scroll', 'keydown']; + window.LoadSnipcart = o; + document.readyState === 'loading' + ? document.addEventListener('DOMContentLoaded', r) + : r(); + function r() { + window.SnipcartSettings.loadStrategy + ? window.SnipcartSettings.loadStrategy === 'on-user-interaction' && + (m.forEach((t) => document.addEventListener(t, o)), + setTimeout(o, window.SnipcartSettings.timeoutDuration)) + : o(); + } + var a = !1; + function o() { + if (a) return; + a = !0; + let t = document.getElementsByTagName('head')[0], + e = document.querySelector('#snipcart'), + i = document.querySelector( + `src[src^="${window.SnipcartSettings.protocol}://${window.SnipcartSettings.domain}"][src$="snipcart.js"]` + ), + n = document.querySelector( + `link[href^="${window.SnipcartSettings.protocol}://${window.SnipcartSettings.domain}"][href$="snipcart.css"]` + ); + e || + ((e = document.createElement('div')), + (e.id = 'snipcart'), + e.setAttribute('hidden', 'true'), + document.body.appendChild(e)), + v(e), + i || + ((i = document.createElement('script')), + (i.src = `${window.SnipcartSettings.protocol}://${window.SnipcartSettings.domain}/themes/v${window.SnipcartSettings.version}/default/snipcart.js`), + (i.async = !0), + t.appendChild(i)), + n || + ((n = document.createElement('link')), + (n.rel = 'stylesheet'), + (n.type = 'text/css'), + (n.href = `${window.SnipcartSettings.protocol}://${window.SnipcartSettings.domain}/themes/v${window.SnipcartSettings.version}/default/snipcart.css`), + t.prepend(n)), + m.forEach((g) => document.removeEventListener(g, o)); + } + function v(t) { + !f || + ((t.dataset.apiKey = window.SnipcartSettings.publicApiKey), + window.SnipcartSettings.addProductBehavior && + (t.dataset.configAddProductBehavior = + window.SnipcartSettings.addProductBehavior), + window.SnipcartSettings.modalStyle && + (t.dataset.configModalStyle = window.SnipcartSettings.modalStyle), + window.SnipcartSettings.currency && + (t.dataset.currency = window.SnipcartSettings.currency), + window.SnipcartSettings.templatesUrl && + (t.dataset.templatesUrl = window.SnipcartSettings.templatesUrl)); + } +})(); diff --git a/backup/260311/assets/js/temp/includeHtml.js b/backup/260311/assets/js/temp/includeHtml.js new file mode 100644 index 0000000..58f04bb --- /dev/null +++ b/backup/260311/assets/js/temp/includeHtml.js @@ -0,0 +1,33 @@ +// How to use +// + + +function includeHTML() { + + var z, i, elmnt, file, xhttp; + /* Loop through a collection of all HTML elements: */ + z = document.getElementsByTagName("*"); + for (i = 0; i < z.length; i++) { + elmnt = z[i]; + /*search for elements with a certain atrribute:*/ + file = elmnt.getAttribute("w3-include-html"); + if (file) { + /* Make an HTTP request using the attribute value as the file name: */ + xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4) { + if (this.status == 200) {elmnt.innerHTML = this.responseText;} + if (this.status == 404) {elmnt.innerHTML = "Page not found.";} + /* Remove the attribute, and call this function once more: */ + elmnt.removeAttribute("w3-include-html"); + includeHTML(); + } + } + xhttp.open("GET", file, true); + xhttp.send(); + /* Exit the function: */ + return; + } + } + +} diff --git a/backup/260311/en/index.html b/backup/260311/en/index.html new file mode 100644 index 0000000..6f59cab --- /dev/null +++ b/backup/260311/en/index.html @@ -0,0 +1,631 @@ + + + + + + Support Index + + + + + + + + + + + + + + + + + +
+
+
+

+ To keep investigating,
Index needs your help +

+ +
+
+
+

Raised

+

0€

+
+
+

Donors

+

0

+
+
+

Goal

+

+
+
+ +

+ Support us in 2026 +

+
+ +
+

+ Index is a not-for-profit,
digital investigation NGO.
Your + support guarantees our independence. +

+
+ +
+

2025–2026 campaign video

+
+ +
+
+ +
+

Frequently Asked Questions

+ +
+ How will my donation to Index be used? +

+ All donations we receive are allocated to funding our + investigations, through the remuneration of our team members. +

+

+ Our investigations take time. They require meticulous + collaborative work involving studying court files, analyzing + videos, modeling scenes in 3D, verifying scenarios, and more. + Although the members of the Index team accept solidarity-based + pay, we need funds to cover the cost of their investigative work. + That is what your donations will be used for. +

+
+ +
+ Are donations tax deductible? +

+ Yes, because Index is a non-profit organization. If you are + taxable in France, your donation to Index is 66% tax deductible. + This means that a donation of €200 will actually only cost you €68 + after tax. +

+

+ Your tax receipt will be sent to you automatically by email in + March of the year following your donation, in time for your tax + return. +

+
+ +
+ What exactly is Index? +

+ Index is an independent, non-profit investigative NGO founded in + France in 2020. Established as a non-profit organization under the + French law of 1901, Index operates both as an investigative media + outlet and as an independent expert firm accessible to all victims + of institutional violence and abuse of power. +

+

+ Index was created as an autonomous extension of the international + research laboratory Forensic Architecture, to which it remains + closely linked both through its team and its methods. +

+
+ +
+ Who is behind Index? +

+ In November 2025, the Index team has seven regular members, + including four employees: +

+
    +
  • Francesco Sebregondi, Founder/Director
  • +
  • Dounia Idhmida, Management Manager
  • +
  • Léonie Montjarret, Communications Manager
  • +
  • Nadav Joffe, Investigator & 3D Modeler
  • +
  • Guillaume Seyller, Investigator & 3D Modeler
  • +
  • Basile Trouillet, Investigator & Video Editor
  • +
  • Filippo Ortona, Investigator & Journalist
  • +
+

+ The Index Board of Directors has five members: Yessa Belkhodja, + Lucie Simon, Kaoutar Harchi, Michel Feher, and Mathieu Molard. +

+
+ +
+ Is there a minimum donation amount? +

+ In order to cover our processing costs, the minimum donation + amount is €5, whether it is a one-time or monthly donation. + Regardless of the amount, all your donations bring us closer to + our funding goal. Furthermore, we are committed to developing the + largest possible support community: even a simple donation of €5 + gives us the strength to continue our work. +

+
+ +
+ I can't make a donation, how else can I help? +

+ If you are unable to make a donation but would still like to + support us, don't worry: there are other ways to help Index! +

+
    +
  1. + Subscribe to our newsletter: Join the 2,000 + subscribers to the Index newsletter. It's the best way to be the + first to receive our investigations, news, and exclusive + content. +
  2. +
  3. + Share our publications: Share our surveys, + news, and calls for donations by email and on social media. + Helping to spread the word about Index is a concrete way to + support us! +
  4. +
  5. + Talk about Index to those around you: Invite us + into your conversations! There is bound to be a colleague or + loved one who would benefit from discovering Index. +
  6. +
+
+ +
+ How can I contact the team? +

+ If you have any questions or comments, please feel free to write + to us at: + contact@index.ngo. +

+

+ And if you appreciate our work, please send us a message of + encouragement! We are always delighted to receive them. +

+
+
+
+ +
+
+ + +
+ + + + + +
+ +
+ + + + + +
+
+ +
+

Donor comments

+ +
+
+
+

+ You are doing admirable work. Thank you for helping Justice + with a capital J. Keep up the good work! +

+

Olivier

+
+ +
+

+ Thank you for the beneficial, valuable, and extremely + professional work you do. +

+

Myriam

+
+ +
+

+ You are truly serving the public good, and the methods you use + deserve to be widely known. +

+

Frédéric

+
+ +
+

+ Thank you for continuing your tireless quest to reveal the + truths that are being kept from us. +

+

Pauline

+
+ +
+

+ Index investigators do essential work for democracy and + justice. Through this citizen support, I express my gratitude + for their commitment and rigor. +

+

Anne

+
+
+ +
+
+
+
+ + +
+ + + + + + diff --git a/backup/260311/index.html b/backup/260311/index.html new file mode 100644 index 0000000..2cda8cd --- /dev/null +++ b/backup/260311/index.html @@ -0,0 +1,776 @@ + + + + + + Pour continuer, Index a besoin de vous. + + + + + + + + + + + + + + + + + + + +
+
+
+

+ Pour continuer à enquêter,
Index a besoin de vous +

+ +
+
+
+

Collectés

+

0€

+
+
+

Donateur·ices

+

0

+
+
+

Objectif

+

+
+
+ +

+ Soutenez-nous
en 2026 +

+
+ +
+

+ Index est une ONG d’investigation
à but non-lucratif. +
Vos dons garantissent notre indépendance. +

+
+ +
+

Pourquoi soutenir Index  ?
Écoutez les premier·es concerné·es

+
+ +
+ + + + +
    +
  • + + + + + +

    « Index fait un travail que la justice ne fait pas » :
    le témoignage d’Issam El Khalfaoui

    +
  • + + + +
  • + + + + + +

    « Votre travail nous a permis de nous rendre au tribunal la tête haute » : le témoignage de Dominique Rodtchenki-Pontonnier

    +
  • + + + + +
  • + + + + + +

    « Les enquêtes d'Index doivent continuer » :
    le témoignage d’Assa Traoré

    +
  • + +
  • + + + + + +

    « Vous faites un travail rare et concret » :
    le témoignage de Jérôme Rodrigues

    +
  • + +
  • + + + + + +

    « Index est d’un intérêt public absolu » :
    le témoignage de Fatiha B.

    +
  • + +
  • + + + + + +

    « Je n’aurais jamais imaginé recevoir un tel soutien » :
    le témoignage de Jean-François Martin

    +
  • + +
  • + + + + + +

    « Le travail d'Index a permis de rétablir la vérité » :
    le témoignage de Mahamadou Camara, frère de Gaye

    +
  • + +
  • + + + + + +

    « Pour les familles endeuillées, Index est essentiel » :
    le témoignage de Christelle Vendeiro-Bico, belle-sœur de Luis Bico

    +
  • + + +
+
+ + + +
+

Questions fréquentes

+ +
+ À quoi va servir mon don à Index ? +

+ L'intégralité des dons que nous recevons est alloué au financement + de nos enquêtes, à travers la rémunération des membres de notre + équipe. +

+

+ Nos enquêtes prennent du temps. Elles nécessitent un travail + collaboratif minutieux consistant à étudier des dossiers + judiciaires, analyser des vidéos, modéliser des scènes en 3D, + vérifier des scénarios… Bien que les membres de l'équipe d'Index + acceptent une rémunération à taux solidaire, nous avons besoin de + fonds pour couvrir le coût de leur travail d'investigation. C'est + à cela que serviront vos dons. +

+
+ +
+ Les dons sont-ils défiscalisables ? +

+ Oui, car Index est une association d'intérêt général. Si vous êtes + imposable en France, votre don à Index est déductible des impôts à + hauteur de 66 %. Ainsi, un don de 200 € ne vous coûte en réalité + que 68 € après déduction fiscale. +

+

+ Votre reçu fiscal vous sera envoyé automatiquement par e-mail en + mars de l'année qui suit votre don, à temps pour votre déclaration + des impôts. +

+
+ +
+ Index, c'est quoi au juste ? +

+ Index est une ONG d'investigation indépendante, à but + non-lucratif, créée en France en 2020. Constituée en association + loi 1901, Index opère à la fois en tant que média d'investigation + et comme cabinet d'expertise indépendante accessible à toutes les + victimes de violences institutionnelles et d'abus de pouvoir. +

+

+ Index a été créée en tant qu'extension autonome du laboratoire de + recherche international Forensic Architecture, auquel elle reste + étroitement liée tant par son équipe que par ses méthodes. +

+
+ +
+ Qui est derrière Index ? +

+ En novembre 2025, l'équipe d'Index compte sept membres réguliers, + dont quatre salariés : +

+
    +
  • Francesco Sebregondi, Fondateur/Directeur
  • +
  • Dounia Idhmida, Responsable de gestion
  • +
  • Leonie Montjarret, Responsable de communication
  • +
  • Nadav Joffe, Enquêteur & modélisateur 3D
  • +
  • Guillaume Seyller, Enquêteur & modélisateur 3D
  • +
  • Basile Trouillet, Enquêteur & monteur vidéo
  • +
  • Filippo Ortona, Enquêteur & journaliste
  • +
+

+ Le Conseil d'administration d'Index compte cinq membres : Yessa + Belkhodja, Lucie Simon, Kaoutar Harchi, Michel Feher, Mathieu + Molard. +

+
+ +
+ Y a-t-il un montant minimum pour un don ? +

+ Afin de couvrir nos frais de traitement, le montant minimum de don + est de 5 €, qu'il soit ponctuel ou mensuel. Quel qu'en soit le + montant, tous vos dons nous permettent de nous rapprocher de notre + objectif de financement. Par ailleurs, nous tenons à développer + une communauté de soutien la plus large possible : même un simple + don de 5 € nous donne de la force pour poursuivre notre action. +

+
+ +
+ + Je ne peux pas faire un don, comment vous aider autrement ? + +

+ Si vous ne pouvez pas faire un don mais souhaitez quand même nous + soutenir, rassurez-vous : il y a d'autres façons d'aider Index ! +

+
    +
  1. + Abonnez-vous à notre newsletter : Rejoignez-les + 2 000 abonné·es à la newsletter d'Index. C'est le moyen le plus + sûr de recevoir nos enquêtes, nos actualités et des contenus + exclusifs en premier. +
  2. +
  3. + Relayez nos publications : Partagez nos + enquêtes, actualités et appels aux dons, par e-mail et sur les + réseaux sociaux. Contribuer à faire connaître Index, c'est nous + aider concrètement ! +
  4. +
  5. + Parlez d'Index autour de vous : Invitez-nous + dans vos discussions ! Il y a forcément un·e collègue ou un·e + proche qui gagnerait à découvrir Index. +
  6. +
+
+ +
+ Comment contacter l'équipe ? +

+ Pour toute question ou commentaire, n'hésitez pas à nous écrire à + l'adresse : + contact@index.ngo. +

+

+ Et si vous appréciez notre travail, n'hésitez pas à nous envoyer + un message d'encouragement ! Nous sommes toujours ravi·es d'en + recevoir. +

+
+
+
+ +
+
+ + +
+ + + + + +
+ +
+ + + + + +
+
+ +
+

Commentaires de donateur·ices

+ +
+
+
+

+ Vous faites un travail admirable. Merci de faire avancer la + Justice avec un grand J. Force à vous! +

+

Olivier

+
+ +
+

+ Merci du travail salutaire, précieux et extrêmement + professionnel que vous réalisez. +

+

Myriam

+
+ +
+

+ Vous êtes vraiment d'utilité publique et les méthodes que vous + utilisez méritent d'être popularisées. +

+

Frédéric

+
+ +
+

+ Merci de poursuivre cette quête inlassable pour révéler les + vérités que l'on nous tait. +

+

Pauline

+
+ +
+

+ Les enquêteurs d'Index font un travail essentiel pour la + démocratie et la justice. Par ce soutien citoyen, j'exprime + toute ma reconnaissance pour leur engagement et leur rigueur. +

+

Anne

+
+
+ +
+
+
+
+ + +
+ + + + + + diff --git a/backup/260311/merci/index.html b/backup/260311/merci/index.html new file mode 100644 index 0000000..cd430e7 --- /dev/null +++ b/backup/260311/merci/index.html @@ -0,0 +1,108 @@ + + + + + + Index.ngo + + + + + + + + + + + + + + + +
+

+ Un grand merci ! +

+ +

+ Votre soutien nous permet de continuer à enquêter en toute indépendance.

+ +

Nous vous remercions sincèrement pour votre solidarité, qui est essentielle à la poursuite de notre mission.

+ +

Retour à la page d’accueil →

+

+
+ + + + diff --git a/backup/260311/thanks/index.html b/backup/260311/thanks/index.html new file mode 100644 index 0000000..242cf6a --- /dev/null +++ b/backup/260311/thanks/index.html @@ -0,0 +1,108 @@ + + + + + + Index.ngo + + + + + + + + + + + + + + + +
+

+ Thank you! +

+ +

+ Your support allows us to continue investigating with complete independence.

+ +

We sincerely thank you for your solidarity, which is essential to the pursuit of our mission.

+ +

Back to home page →

+

+
+ + + +