feat: migre le site vers SvelteKit (Svelte 5, statique, zéro tiers)
- Rebuild complet SvelteKit 2 + Svelte 5 runes + TypeScript, adapter-static - Images self-hébergées optimisées au build (vite-imagetools), fonts Archivo/Inter en woff2 local — BunnyCDN et Google Fonts supprimés (corrige les 403 d'images) - Tokens charte OKI, thème sombre par défaut / clair opt-in, zéro emoji (set SVG) - Motion : KineticText (stagger syncopé gwoka), ScrollProgressBar, View Transitions - Village SVG isométrique pour les services hébergés + fallback accessible - PWA (manifest + SW hors-ligne), 404 en KA, CSP nettoyée (.htaccess + _headers) - Lighthouse mobile : 91/100/100/100 — JS initial 67 Ko gzip
This commit is contained in:
+164
@@ -0,0 +1,164 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<meta name="theme-color" content="#0D0D0D" />
|
||||
<title>404 — Paj la rivé périyòd… · ORGANISATION KA INTERNATIONALE</title>
|
||||
<link rel="icon" href="/favicon.ico" sizes="48x48" />
|
||||
<link rel="icon" href="/images/logo-512x512.png" type="image/png" />
|
||||
<link rel="stylesheet" href="/fonts/fonts.css" />
|
||||
<style>
|
||||
/* 404 autonome — tokens OKI recopiés (charte §2), aucune dépendance JS */
|
||||
:root {
|
||||
--noir-oki: #0d0d0d;
|
||||
--blanc-creme: #fff8e7;
|
||||
--line: rgba(255, 255, 255, 0.1);
|
||||
--or-oki: #fdb813;
|
||||
--or-clair: #ffe066;
|
||||
--vert-oki: #00d66c;
|
||||
--rouge-oki: #ff1654;
|
||||
--font-display: 'Archivo', 'Arial Black', sans-serif;
|
||||
--font-body: 'Inter', system-ui, sans-serif;
|
||||
--radius-sm: 3px;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--font-body);
|
||||
background: var(--noir-oki);
|
||||
color: var(--blanc-creme);
|
||||
min-height: 100vh;
|
||||
line-height: 1.5;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
/* Flag-bar — 6 px, 4 segments francs, arrêts nets (charte §2.4) */
|
||||
.flag-bar {
|
||||
height: 6px;
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
#0d0d0d 0 25%,
|
||||
#fdb813 25% 50%,
|
||||
#00d66c 50% 75%,
|
||||
#ff1654 75% 100%
|
||||
);
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
padding: 4rem 2rem;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.ka-drum {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
color: var(--or-oki);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: var(--font-display);
|
||||
font-weight: 900;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -0.01em;
|
||||
line-height: 1.1;
|
||||
font-size: clamp(4rem, 15vw, 8rem);
|
||||
color: var(--blanc-creme);
|
||||
}
|
||||
|
||||
.ka {
|
||||
font-size: 1.25rem;
|
||||
color: var(--or-oki);
|
||||
}
|
||||
|
||||
.fr {
|
||||
max-width: 52ch;
|
||||
color: color-mix(in srgb, var(--blanc-creme) 70%, transparent);
|
||||
}
|
||||
|
||||
/* Bouton or : bordure 2 px, angles nets (charte §2.2) */
|
||||
.btn {
|
||||
display: inline-block;
|
||||
font-family: var(--font-display);
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.03em;
|
||||
padding: 0.75rem 1.5rem;
|
||||
border: 2px solid var(--or-oki);
|
||||
border-radius: var(--radius-sm);
|
||||
background: transparent;
|
||||
color: var(--or-oki);
|
||||
text-decoration: none;
|
||||
transition:
|
||||
background 120ms cubic-bezier(0.22, 1, 0.36, 1),
|
||||
color 120ms cubic-bezier(0.22, 1, 0.36, 1),
|
||||
transform 120ms cubic-bezier(0.22, 1, 0.36, 1);
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background: var(--or-oki);
|
||||
color: var(--noir-oki);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.btn:focus-visible {
|
||||
outline: 2px solid var(--or-oki);
|
||||
outline-offset: 3px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 1.5rem 2rem;
|
||||
border-top: 1px solid var(--line);
|
||||
text-align: center;
|
||||
font-size: 0.85rem;
|
||||
color: color-mix(in srgb, var(--blanc-creme) 70%, transparent);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flag-bar" aria-hidden="true"></div>
|
||||
<main>
|
||||
<!-- Tambour ka : fût conique + sangles croisées, stroke 2 px, angles nets (charte §4) -->
|
||||
<svg
|
||||
class="ka-drum"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="square"
|
||||
stroke-linejoin="miter"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path d="M6 4 H18" />
|
||||
<path d="M6 4 L4 20" />
|
||||
<path d="M18 4 L20 20" />
|
||||
<path d="M4 20 H20" />
|
||||
<path d="M6 4 L20 20" />
|
||||
<path d="M18 4 L4 20" />
|
||||
</svg>
|
||||
<h1>404</h1>
|
||||
<p class="ka" lang="gcf">« Paj la rivé périyòd… »</p>
|
||||
<p class="fr">La page que vous cherchez n'existe pas ou a été déplacée. La route continue ailleurs.</p>
|
||||
<a class="btn" href="/">Retour à l'accueil</a>
|
||||
</main>
|
||||
<footer>ORGANISATION KA INTERNATIONALE · o-k-i.net</footer>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user