feat(session-1): socle SvelteKit et encyclopédie /zerbaj/ prérendue
SvelteKit 2 + Svelte 5 runes + TS strict, adapter-static en prérendu intégral, trailingSlash always, paths.relative false. Mesures de la porte de sortie - 56 pages HTML prérendues (13 fiches × 3 langues + pages de service) - 59 Ko de JS gzip (budget : 170) · build total 1,4 Mo (budget : 2 Mo) - 0 chargement tiers, vérifié par grep du build - fiche lisible sans JS : 1694 caractères de texte rendu - npm run check : 248 fichiers, 0 erreur, 0 warning - 0 erreur console au chargement Lighthouse non exécuté : porte encore ouverte, à vérifier avant la S6. Charte OKI Tokens partagés, thème sombre par défaut, Archivo et Inter self-hébergées (124 Ko de woff2), flag-bar à segments francs, bouton à balayage or, gate prefers-reduced-motion unique. CSP stricte en .htaccess et _headers, 404 statique autonome, PWA avec registerSW à chemin absolu (playbook 2.9). L'interface kréyòl n'est pas écrite par l'agent Le catalogue gcf ne contient que les termes venant des documents du porteur — 10 chaînes sur 132. Le reste vaut null et se replie sur le français ; check:i18n produit la liste des 122 phrases à traduire, par écran. <html lang> annonce la langue réellement écrite : fr tant que la couverture reste sous 60 %, avec les fragments kréyòl marqués un par un. Des tournures kréyòl que j'avais inventées ont été retirées. Corrections en cours de build - vite-plugin-pwa/sveltekit n'existe pas sans @vite-pwa/sveltekit : VitePWA en direct, comme le prescrivait déjà le playbook. - @sveltejs/vite-plugin-svelte v7 n'exporte plus sveltekit : import depuis @sveltejs/kit/vite, vérifié sur les exports réels. - Le sélecteur de langue fabriquait /fr/offline/, page inexistante. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Page introuvable — KI FWI SA YÉ ?</title>
|
||||
<meta name="robots" content="noindex" />
|
||||
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
||||
<style>
|
||||
/* Autonome : aucune dépendance, aucune police à charger. Cette page doit
|
||||
s'afficher même quand tout le reste du site est cassé. */
|
||||
:root {
|
||||
--noir: #0d0d0d;
|
||||
--creme: #fff8e7;
|
||||
--or: #fdb813;
|
||||
--vert: #00d66c;
|
||||
--rouge: #ff1654;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
display: grid;
|
||||
place-content: center;
|
||||
gap: 1rem;
|
||||
padding: 2rem;
|
||||
background: var(--noir);
|
||||
color: var(--creme);
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
text-align: center;
|
||||
}
|
||||
.flag {
|
||||
height: 6px;
|
||||
width: 220px;
|
||||
margin: 0 auto;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
#0d0d0d 0 25%,
|
||||
var(--or) 25% 50%,
|
||||
var(--vert) 50% 75%,
|
||||
var(--rouge) 75% 100%
|
||||
);
|
||||
}
|
||||
h1 {
|
||||
margin: 0;
|
||||
font-size: clamp(1.6rem, 6vw, 2.6rem);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
p {
|
||||
margin: 0;
|
||||
opacity: 0.75;
|
||||
max-width: 44ch;
|
||||
}
|
||||
a {
|
||||
display: inline-block;
|
||||
margin-top: 0.5rem;
|
||||
min-height: 44px;
|
||||
padding: 0.7em 1.4em;
|
||||
color: var(--or);
|
||||
border: 2px solid var(--or);
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.03em;
|
||||
}
|
||||
a:hover,
|
||||
a:focus-visible {
|
||||
background: var(--or);
|
||||
color: var(--noir);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flag"></div>
|
||||
<h1>Page introuvable</h1>
|
||||
<p>Cette page n’existe pas.</p>
|
||||
<a href="/">Retour à l’accueil</a>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user