- Remove GalleryAnimation preloading (was downloading full-size originals
via new Image(), causing 5MB+ redundant downloads on top of WebP srcset)
- Gallery now shows immediately, images load lazily via DOM
- Force eager loading on mockup img when slide becomes active (fixes
first-project gallery never showing — lazy img off-screen on bg slide)
- Resize all direct ->url() calls to appropriate display dimensions:
gallery src 600px, mockup src 960px, backgrounds 1920px,
play lettering 500px, play preview 1000px, team photos 400px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New Kirby template/blueprint/JSON for privacy page (confidentialite slug)
- Standalone page state in slides store + router handling for non-nav pages
- Privacy.svelte view with background image, text blocks, footer
- Centralize vertical lines in App.svelte as fixed elements with per-slide visibility
- Footer privacy link language-aware (FR/EN)
- Portfolio mockup fix: read from default language for consistent EN display
- menu.php: add privacy page to Kirby panel navigation
refs #44
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le champ mockup (translate: false) retournait null en version anglaise
car Kirby lisait le fichier de contenu EN vide. On lit maintenant
explicitement via defaultLanguage pour toutes les langues.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Ajout de tobimori/kirby-seo via Composer
- snippet('seo/head') dans header.php (remplace les meta manuels)
- snippet('seo/schemas') dans footer.php pour JSON-LD
- Onglet SEO ajouté dans site.yml et tous les blueprints de pages
- Configuration SEO dans config.php (sitemap, robots, canonicalBase TODO)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajout du mode horizontal dans GalleryAnimation (5 rangées, scrollLeft/scrollRight)
avec toggle vertical/horizontal dans le panel projet.
refs #21
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- jeu.php : iframe démarre sur about:blank, URL stockée dans data-src
- Article.svelte : event delegation sur document (plus de timeout/querySelector)
→ le src de l'iframe est injecté seulement quand l'user clique (évite l'iframe noir)
→ supprime l'ancien $effect avec setTimeout au profit d'une délégation propre
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- jeu.php : supprime les espaces de l'URL (preg_replace), ajoute data-state="initial" sur l'overlay
- Article.svelte : porte le CSS complet depuis l'ancienne app React
(background opaque, play icon, hover, deactivate btn, game-active state)
- JS : ignore les clics sur overlay ended, remet data-state="initial" au deactivate
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- site/blueprints/blocks/jeu.yml : champ URL pour l'iframe
- site/snippets/blocks/jeu.php : rendu HTML statique (container + overlay + bouton désactivation)
- Article.svelte : $effect pour attacher les handlers clic sur .iframe-game-container
et onMount pour écouter postMessage GameReleaseFocus depuis impact.games
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Expertise : réordonne align-self avant font-size dans .expertise-title
- Router : ajout console.log pour debug des données de slide
- expertise.json.php : suppression newline final
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nouveau layout desktop : flex row avec catch-area (label + titre) et form-area (formulaire)
- Mobile : height 100vh non-scrollable, overlay formulaire déclenché au clic
- Tablet : grid 2 colonnes
- Suppression des préfixes wp- sur toutes les classes (CSS scopé Svelte)
- white-paper.json.php : intro via ->inline() pour texte brut
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Footer global fixé en bas (App.svelte), masqué par le contenu des slides
- margin-bottom sur .page-scrollable pour l'effet footer reveal (about, blog, article)
- About : champ intro remplacé par heading (text) + subtitle (writer), blueprint + API + vue mis à jour
- LanguageSwitcher : div → button avec hitbox élargie
- i18n : clé our_team (fr: NOTRE ÉQUIPE / en: OUR TEAM)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>