Files
sucupira d0d80a105e 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
2026-07-21 08:00:16 -04:00

165 lines
4.0 KiB
HTML

<!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>