473 lines
15 KiB
Vue
473 lines
15 KiB
Vue
<template>
|
|
<div class="apropos-page">
|
|
<div class="apropos-inner">
|
|
|
|
<!-- Retour -->
|
|
<NuxtLink to="/" class="back-link">
|
|
← Retour à la carte
|
|
</NuxtLink>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 1 — Mission AEP
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire le pitch (~100 mots) — qui est AEP, pour qui, pourquoi, quelle promesse -->
|
|
<section class="section-mission">
|
|
<h1>Architecture d'Écologie Politique</h1>
|
|
<p class="mission-text">
|
|
[Placeholder — Jules réécrira ce texte. Pitch ~100 mots : la carte, pourquoi elle existe, pour qui, ce qu'elle change pour les architectes en transition.]
|
|
</p>
|
|
</section>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 2 — Souveraineté technique
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire 1-2 phrases d'intro sur la posture technique (pourquoi c'est important pour toi) -->
|
|
<section class="section">
|
|
<h2>Souveraineté technique</h2>
|
|
<p class="section-intro">
|
|
[Placeholder — une phrase sur le choix délibéré d'une stack souveraine.]
|
|
</p>
|
|
<div class="badges-row">
|
|
<div class="badge">
|
|
<span class="badge-icon" aria-hidden="true">
|
|
<!-- Mistral logo placeholder -->
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 8v4l3 3"/></svg>
|
|
</span>
|
|
<span class="badge-label">IA souveraine</span>
|
|
<span class="badge-detail">Mistral AI, Paris</span>
|
|
</div>
|
|
<div class="badge">
|
|
<span class="badge-icon" aria-hidden="true">
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
|
|
</span>
|
|
<span class="badge-label">Hébergé en Europe</span>
|
|
<span class="badge-detail">Hetzner, Allemagne</span>
|
|
</div>
|
|
<div class="badge">
|
|
<span class="badge-icon" aria-hidden="true">
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
</span>
|
|
<span class="badge-label">Zéro cookie US</span>
|
|
<span class="badge-detail">Pas de Google Analytics, pas de Meta Pixel, pas de tracker tiers</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 3 — Gouvernance
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire qui porte ce projet, le collectif, la posture politique, le lien Liberapay -->
|
|
<section class="section">
|
|
<h2>Gouvernance</h2>
|
|
<p class="section-text">
|
|
[Placeholder — Projet porté par [nom], collectif informel, [...]. Décisions prises en transparence. Financement participatif via <a href="https://liberapay.com/trans-former.fr" target="_blank" rel="noopener noreferrer" class="text-link">Liberapay</a>.]
|
|
</p>
|
|
</section>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 4 — Transparence Liberapay
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire pourquoi Liberapay (pas Patreon, pas Ko-fi), le modèle de financement voulu -->
|
|
<section class="section section-liberapay">
|
|
<h2>Soutenir le projet</h2>
|
|
<p class="section-text">
|
|
[Placeholder — Ce que le projet coûte, pourquoi un financement participatif, ce que ça permettrait de faire.]
|
|
</p>
|
|
<p class="liberapay-note">
|
|
Liberapay est une plateforme open source EU (ASBL belge non-lucrative), 0% de frais.
|
|
</p>
|
|
|
|
<!-- Widget Liberapay -->
|
|
<div class="liberapay-widget-wrap">
|
|
<iframe
|
|
src="https://liberapay.com/trans-former.fr/widgets/receiving.html"
|
|
width="100%"
|
|
height="60"
|
|
style="border: 0;"
|
|
title="Dons reçus via Liberapay"
|
|
loading="lazy"
|
|
></iframe>
|
|
</div>
|
|
|
|
<!-- Bouton CTA -->
|
|
<a
|
|
href="https://liberapay.com/trans-former.fr/donate"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="btn-liberapay"
|
|
>
|
|
Soutenir sur Liberapay →
|
|
</a>
|
|
</section>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 5 — Transparence IA
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire la posture sur l'IA — pourquoi ces modèles, pourquoi la transparence, ce que ça signifie politiquement -->
|
|
<section id="ia" class="section">
|
|
<h2>Transparence IA</h2>
|
|
<p class="section-text">
|
|
[Placeholder — Pourquoi afficher les coûts IA en clair. Ce que ça dit du projet.]
|
|
</p>
|
|
|
|
<div class="ia-grid">
|
|
<div class="ia-card">
|
|
<div class="ia-card-label">Enrichissement des fiches</div>
|
|
<div class="ia-card-model">Mistral Nemo</div>
|
|
<div class="ia-card-cost">~0,00003 €/fiche</div>
|
|
</div>
|
|
<div class="ia-card">
|
|
<div class="ia-card-label">Chatbot de recherche</div>
|
|
<div class="ia-card-model">Mistral Small</div>
|
|
<div class="ia-card-cost">~0,003 €/requête</div>
|
|
</div>
|
|
</div>
|
|
|
|
<ul class="ia-details">
|
|
<li>Budget plafonné à 20 € / mois — coupure automatique si dépassement</li>
|
|
<li>Coût visible en direct dans le bandeau bas de la carte</li>
|
|
<li>Aucun modèle US, aucune donnée transmise hors UE</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<!-- ══════════════════════════════════════════════════════════
|
|
SECTION 6 — Contribuer
|
|
══════════════════════════════════════════════════════════ -->
|
|
<!-- TODO Jules : Écrire l'invitation à contribuer — ton, posture, ce qu'on attend des contributeurs -->
|
|
<section class="section section-contribuer">
|
|
<h2>Contribuer</h2>
|
|
<p class="section-text">
|
|
[Placeholder — Comment rejoindre le projet, ce qu'on peut apporter : fiches, corrections, soutien financier.]
|
|
</p>
|
|
<div class="contribuer-ctas">
|
|
<NuxtLink to="/contribuer" class="btn-primary">
|
|
Proposer une fiche →
|
|
</NuxtLink>
|
|
<a
|
|
href="https://liberapay.com/trans-former.fr/donate"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
class="btn-secondary"
|
|
>
|
|
Soutenir financièrement
|
|
</a>
|
|
</div>
|
|
</section>
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
useHead({ title: 'À propos — AEP' })
|
|
</script>
|
|
|
|
<style scoped>
|
|
/* ── Layout ─────────────────────────────────────────────────────────────────── */
|
|
|
|
.apropos-page {
|
|
min-height: 100vh;
|
|
background: var(--nav-bg);
|
|
padding: 1.5rem 1rem 5rem;
|
|
}
|
|
|
|
.apropos-inner {
|
|
max-width: 720px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
/* ── Retour ──────────────────────────────────────────────────────────────────── */
|
|
|
|
.back-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
font-size: 0.875rem;
|
|
color: var(--nav-primary-solid);
|
|
opacity: 0.7;
|
|
text-decoration: none;
|
|
margin-bottom: 2rem;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
.back-link:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* ── Sections ────────────────────────────────────────────────────────────────── */
|
|
|
|
.section-mission,
|
|
.section {
|
|
margin-bottom: 3rem;
|
|
}
|
|
|
|
.section-mission h1 {
|
|
font-size: 1.75rem;
|
|
font-weight: 700;
|
|
color: var(--nav-text);
|
|
margin: 0 0 1rem;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.section h2 {
|
|
font-size: 1.2rem;
|
|
font-weight: 700;
|
|
color: var(--nav-text);
|
|
margin: 0 0 0.75rem;
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 1px solid var(--nav-bg-alt);
|
|
}
|
|
|
|
.mission-text,
|
|
.section-intro,
|
|
.section-text {
|
|
font-size: 0.95rem;
|
|
color: var(--nav-text);
|
|
line-height: 1.65;
|
|
margin: 0 0 1rem;
|
|
}
|
|
|
|
.section-intro {
|
|
color: var(--nav-text-muted);
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.text-link {
|
|
color: var(--nav-primary-solid);
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
}
|
|
|
|
.text-link:hover {
|
|
opacity: 0.75;
|
|
}
|
|
|
|
/* ── Badges souveraineté ──────────────────────────────────────────────────────── */
|
|
|
|
.badges-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.badge {
|
|
display: inline-flex;
|
|
align-items: flex-start;
|
|
gap: 0.5rem;
|
|
padding: 0.625rem 0.875rem;
|
|
background: var(--nav-bg-alt);
|
|
border-radius: 9999px;
|
|
flex-direction: column;
|
|
min-width: 160px;
|
|
flex: 1;
|
|
}
|
|
|
|
@media (min-width: 560px) {
|
|
.badge {
|
|
flex-direction: row;
|
|
align-items: center;
|
|
flex: none;
|
|
min-width: auto;
|
|
}
|
|
}
|
|
|
|
.badge-icon {
|
|
color: var(--nav-text-muted);
|
|
flex-shrink: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.badge-label {
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
color: var(--nav-text);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.badge-detail {
|
|
font-size: 0.775rem;
|
|
color: var(--nav-text-muted);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@media (max-width: 559px) {
|
|
.badge {
|
|
border-radius: 12px;
|
|
padding: 0.75rem 1rem;
|
|
}
|
|
.badge-label {
|
|
font-size: 0.9rem;
|
|
}
|
|
}
|
|
|
|
/* ── Liberapay ───────────────────────────────────────────────────────────────── */
|
|
|
|
.liberapay-note {
|
|
font-size: 0.8rem;
|
|
color: var(--nav-text-muted);
|
|
margin: 0 0 1rem;
|
|
font-style: italic;
|
|
}
|
|
|
|
.liberapay-widget-wrap {
|
|
margin-bottom: 1rem;
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.btn-liberapay {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
padding: 0.625rem 1.25rem;
|
|
background: var(--nav-primary);
|
|
color: var(--nav-text-on-primary);
|
|
border-radius: 8px;
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
text-decoration: none;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.btn-liberapay:hover {
|
|
background: rgba(26, 34, 56, 0.75);
|
|
}
|
|
|
|
/* ── IA grid ─────────────────────────────────────────────────────────────────── */
|
|
|
|
.ia-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.75rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.ia-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
.ia-card {
|
|
background: var(--nav-surface);
|
|
border: 1px solid rgba(26, 34, 56, 0.1);
|
|
border-radius: 10px;
|
|
padding: 1rem 1.125rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
}
|
|
|
|
.ia-card-label {
|
|
font-size: 0.75rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--nav-text-muted);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.ia-card-model {
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
color: var(--nav-text);
|
|
}
|
|
|
|
.ia-card-cost {
|
|
font-size: 0.825rem;
|
|
color: var(--nav-text-muted);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.ia-details {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.375rem;
|
|
}
|
|
|
|
.ia-details li {
|
|
font-size: 0.875rem;
|
|
color: var(--nav-text-muted);
|
|
padding-left: 1rem;
|
|
position: relative;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.ia-details li::before {
|
|
content: '—';
|
|
position: absolute;
|
|
left: 0;
|
|
color: var(--nav-text-muted);
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/* ── CTAs contribuer ─────────────────────────────────────────────────────────── */
|
|
|
|
.contribuer-ctas {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.75rem;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.btn-primary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 0.75rem 1.5rem;
|
|
background: var(--nav-accent);
|
|
color: var(--nav-text);
|
|
border-radius: 8px;
|
|
font-size: 0.9rem;
|
|
font-weight: 600;
|
|
text-decoration: none;
|
|
transition: opacity 0.15s;
|
|
}
|
|
|
|
.btn-primary:hover {
|
|
opacity: 0.85;
|
|
}
|
|
|
|
.btn-secondary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 0.75rem 1.25rem;
|
|
background: transparent;
|
|
color: var(--nav-text-muted);
|
|
border: 1px solid rgba(26, 34, 56, 0.2);
|
|
border-radius: 8px;
|
|
font-size: 0.9rem;
|
|
text-decoration: none;
|
|
transition: border-color 0.15s, color 0.15s;
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
border-color: var(--nav-primary-solid);
|
|
color: var(--nav-text);
|
|
}
|
|
|
|
/* ── Responsive général ──────────────────────────────────────────────────────── */
|
|
|
|
@media (max-width: 480px) {
|
|
.apropos-page {
|
|
padding: 1rem 0.75rem 4rem;
|
|
}
|
|
|
|
.section-mission h1 {
|
|
font-size: 1.4rem;
|
|
}
|
|
|
|
.contribuer-ctas {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.btn-primary,
|
|
.btn-secondary {
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
}
|
|
</style>
|