feat: ajouter la page de politique de confidentialité bilingue

This commit is contained in:
herel committed 2026-08-31 15:12:27 +02:00
1 parent 91ae6587fa
commit b4f450c6f8
1 file changed
+292
+292
View File
@@ -0,0 +1,292 @@
<!DOCTYPE html>
<html lang="fr" class="fr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Politique de confidentialité — Livrets</title>
<meta
name="description"
content="Politique de confidentialité du jeu Livrets : vos données restent sur votre appareil. Privacy policy for the Livrets game: your data stays on your device."
/>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
darkMode: 'media',
theme: {
extend: {
colors: {
navy: '#1D3557',
accent: '#457B9D',
mist: '#A8DADC',
paper: '#F1FAEE',
coral: '#E63946',
},
},
},
};
</script>
<style>
html.fr [data-lang='en'] { display: none !important; }
html.en [data-lang='fr'] { display: none !important; }
.placeholder {
border: 1px dashed #e63946;
color: #e63946;
border-radius: 0.375rem;
padding: 0 0.375rem;
font-weight: 600;
white-space: nowrap;
}
</style>
</head>
<body class="min-h-screen bg-paper text-navy antialiased dark:bg-navy dark:text-paper">
<div class="mx-auto max-w-2xl px-6 py-10">
<header class="flex items-center justify-between gap-4">
<div class="flex items-center gap-4">
<svg width="48" height="48" viewBox="0 0 128 128" aria-hidden="true" class="shrink-0">
<rect x="4" y="4" width="120" height="120" rx="28" fill="#1D3557"/>
<rect x="18" y="18" width="42" height="42" rx="12" fill="#A8DADC"/>
<rect x="68" y="18" width="42" height="42" rx="12" fill="#E63946"/>
<rect x="18" y="68" width="42" height="42" rx="12" fill="#F1FAEE"/>
<rect x="68" y="68" width="42" height="42" rx="12" fill="#457B9D"/>
<path d="M29,28 L49,28 L36,50" fill="none" stroke="#1D3557" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M81,31 L97,47 M97,31 L81,47" fill="none" stroke="#F1FAEE" stroke-width="6.5" stroke-linecap="round"/>
<circle cx="39" cy="82.75" r="5.5" fill="#1D3557"/>
<circle cx="39" cy="93.25" r="7.5" fill="#1D3557"/>
<path d="M81,81 C81,73 97,73 97,81 C97,86.5 89,86.5 89,93 L89,95.5" fill="none" stroke="#F1FAEE" stroke-width="6" stroke-linecap="round"/>
<circle cx="89" cy="102.5" r="3.4" fill="#F1FAEE"/>
</svg>
<div>
<p class="text-sm font-medium text-accent">Livrets</p>
<h1 class="text-2xl font-bold" data-lang="fr">Politique de confidentialité</h1>
<h1 class="text-2xl font-bold" data-lang="en">Privacy Policy</h1>
</div>
</div>
<button
id="lang-toggle"
type="button"
aria-label="Switch to English"
class="shrink-0 rounded-lg border border-navy/20 px-3 py-1.5 text-sm font-semibold hover:bg-mist/50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-accent dark:border-paper/30 dark:hover:bg-paper/10"
>
English
</button>
</header>
<p class="mt-8 rounded-xl bg-mist/40 p-4 text-sm dark:bg-paper/10" data-lang="fr">
<strong>En résumé : vos données restent sur votre appareil.</strong> Le jeu ne contient
ni publicité ni analytique, et rien n'est envoyé à des serveurs, sauf si vous activez
volontairement Google Play Jeux sur Android.
</p>
<p class="mt-8 rounded-xl bg-mist/40 p-4 text-sm dark:bg-paper/10" data-lang="en">
<strong>In short: your data stays on your device.</strong> The game contains no ads and
no analytics, and nothing is sent to servers unless you voluntarily sign in to
Google Play Games on Android.
</p>
<main class="mt-10 space-y-10 text-base leading-relaxed text-navy/85 dark:text-paper/85">
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">1. Éditeur</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">1. Publisher</h2>
<p data-lang="fr">
Cette politique de confidentialité décrit la manière dont Livrets (« le jeu »),
édité par <span class="placeholder">[ÉDITEUR — À REMPLIR]</span>, traite les données.
Dernière mise à jour : <span class="placeholder">[DATE]</span>.
</p>
<p data-lang="en">
This privacy policy describes how Livrets (“the game”), published by
<span class="placeholder">[ÉDITEUR — À REMPLIR]</span>, handles data.
Last updated: <span class="placeholder">[DATE]</span>.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
2. Données stockées localement
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
2. Data stored locally
</h2>
<p data-lang="fr">
Le jeu enregistre sur votre appareil — et uniquement sur votre appareil :
l'historique des parties (score, date, réponses) et le taux de réussite cumulé
par table. Ces données ne sont jamais transmises à des serveurs : elles restent
dans le stockage local de l'application (<code>~/.livrets/</code> sur desktop,
stockage privé de l'app sur Android et iOS). Désinstaller l'application
les supprime définitivement.
</p>
<p data-lang="en">
The game saves the following data on your device — and only on your device:
game history (score, date, answers) and cumulative success rate per table.
This data is never transmitted to servers: it stays in the app's local storage
(<code>~/.livrets/</code> on desktop, private app storage on Android and iOS).
Uninstalling the app permanently deletes it.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
3. Google Play Jeux (Android, optionnel)
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
3. Google Play Games (Android, optional)
</h2>
<p data-lang="fr">
Sur Android, si vous choisissez de vous connecter à Google Play Jeux, le jeu envoie
vos scores aux classements. Google traite alors votre identifiant joueur et votre
pseudonyme Play Jeux conformément à
<a
href="https://policies.google.com/privacy"
class="font-medium text-accent underline underline-offset-2"
>sa propre politique de confidentialité</a
>. La connexion est optionnelle : sans elle, le jeu reste pleinement jouable et
aucune donnée ne quitte votre appareil.
</p>
<p data-lang="en">
On Android, if you choose to sign in to Google Play Games, the game submits your
scores to leaderboards. Google then processes your Play Games player ID and
nickname under
<a
href="https://policies.google.com/privacy"
class="font-medium text-accent underline underline-offset-2"
>its own privacy policy</a
>. Signing in is optional: without it, the game remains fully playable and no data
leaves your device.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
4. Ce que le jeu ne fait pas
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
4. What the game does not do
</h2>
<ul class="list-disc space-y-1 pl-5" data-lang="fr">
<li>pas de publicité ;</li>
<li>pas d'analytique ni de mesure d'audience ;</li>
<li>pas de création de compte par nos soins ;</li>
<li>pas d'accès à votre position ;</li>
<li>pas d'accès à vos contacts, photos ou fichiers ;</li>
<li>aucune donnée vendue ni partagée à des tiers.</li>
</ul>
<ul class="list-disc space-y-1 pl-5" data-lang="en">
<li>no advertising;</li>
<li>no analytics or audience measurement;</li>
<li>no account creation on our side;</li>
<li>no access to your location;</li>
<li>no access to your contacts, photos or files;</li>
<li>no data sold or shared with third parties.</li>
</ul>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">5. Mineurs</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">5. Minors</h2>
<p data-lang="fr">
Livrets est un jeu éducatif destiné à l'apprentissage des tables de multiplication.
Le jeu ne collecte délibérément aucune donnée personnelle d'enfant. Les seules
données susceptibles de transiter le sont via Google Play Jeux, sous la
responsabilité de Google.
</p>
<p data-lang="en">
Livrets is an educational game for learning multiplication tables. The game does not
knowingly collect any personal data from children. The only data that may transit
does so via Google Play Games, under Google's responsibility.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
6. Conservation des données
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
6. Data retention
</h2>
<p data-lang="fr">
Les données locales sont conservées tant que l'application est installée sur votre
appareil ; vous pouvez les effacer à tout moment en désinstallant l'application.
Les scores envoyés aux classements Play Jeux sont conservés par Google selon ses
propres règles.
</p>
<p data-lang="en">
Local data is kept as long as the app is installed on your device; you can erase it
at any time by uninstalling the app. Scores submitted to Play Games leaderboards are
retained by Google under its own rules.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
7. Vos droits
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
7. Your rights
</h2>
<p data-lang="fr">
Conformément au RGPD, vous disposez de droits d'accès, de rectification et de
suppression. Comme l'essentiel des données reste sur votre appareil, l'exercice de
ces droits passe par la désinstallation de l'application. Pour toute autre demande :
<span class="placeholder">[EMAIL — À REMPLIR]</span>.
</p>
<p data-lang="en">
Under the GDPR, you have rights of access, rectification and erasure. Since most
data stays on your device, exercising these rights is done by uninstalling the app.
For any other request:
<span class="placeholder">[EMAIL — À REMPLIR]</span>.
</p>
</section>
<section>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="fr">
8. iOS et desktop
</h2>
<h2 class="mb-2 text-lg font-semibold text-navy dark:text-mist" data-lang="en">
8. iOS and desktop
</h2>
<p data-lang="fr">
Sur iOS et macOS, le jeu n'a aucune fonctionnalité en ligne : toutes les données
restent sur votre appareil.
</p>
<p data-lang="en">
On iOS and macOS, the game has no online features: all data stays on your device.
</p>
</section>
</main>
<footer class="mt-12 border-t border-navy/10 pt-6 text-sm text-navy/70 dark:border-paper/20 dark:text-paper/70">
<p data-lang="fr">
Contact : <span class="placeholder">[EMAIL — À REMPLIR]</span>
</p>
<p data-lang="en">
Contact: <span class="placeholder">[EMAIL — À REMPLIR]</span>
</p>
</footer>
</div>
<script>
(function () {
var root = document.documentElement;
var btn = document.getElementById('lang-toggle');
function set(lang) {
root.classList.remove('fr', 'en');
root.classList.add(lang);
root.lang = lang;
btn.textContent = lang === 'fr' ? 'English' : 'Français';
btn.setAttribute('aria-label', lang === 'fr' ? 'Switch to English' : 'Passer en français');
try {
localStorage.setItem('livrets-lang', lang);
} catch (e) {}
}
var saved = null;
try {
saved = localStorage.getItem('livrets-lang');
} catch (e) {}
var initial =
location.hash === '#en' ? 'en' : location.hash === '#fr' ? 'fr' : saved === 'en' ? 'en' : 'fr';
set(initial);
btn.addEventListener('click', function () {
set(root.classList.contains('fr') ? 'en' : 'fr');
});
})();
</script>
</body>
</html>