Hold
Maintenir = la cloche se lève lentement ; relâcher = elle retombe amortie. Pour la scène WebGL de Mayor.
SpawnKit Studio — boîte à outils frontend, en direct
Chaque section ci-dessous est une technique réelle, appliquée à Mayor Traiteur, SBR Therapy, OpenCRM et FeedCast. Pas de maquette : ce que tu vois tourne dans cette page.
Mascotte
Bouge la souris · clique sur Spawn
Sur mobile : la mascotte reste en place, les yeux suivent le toucher
Une image transparente + deux yeux en CSS. Les pupilles suivent le pointeur avec un lissage exponentiel (lerp 0.12). Le corps global suit à 60 fps via requestAnimationFrame, avec inertie et léger tilt.
SBR (React → page-mascot npm, MIT), Mayor en version discrète sur la 404 uniquement, OpenCRM dans l'état vide du chat. Jamais sur les pages de conversion Mayor : le ton luxe ne s'y prête pas.
Désactivée sur écran tactile et sous prefers-reduced-motion. Zéro dépendance, 2 Ko de JS, 1 PNG.
Motion
Maintenir = la cloche se lève lentement ; relâcher = elle retombe amortie. Pour la scène WebGL de Mayor.
Le chiffre monte quand il entre à l'écran, easing out, chiffres tabulaires pour ne pas trembler.
Bordure conique animée via @property, flèche qui glisse au survol. Le bouton « physical key » descend de 2 px au clic.
Bento

Une seule courbe d'easing partagée par tout le site.
convives, une seule cuisine
38 avis Google — la preuve avant l'argument

2×3, jamais 3×3

3 animateurs clonés

La plus grande tuile est toujours le CTA ou la preuve, jamais la déco.
Conversion
Mayor a aujourd'hui cinq liens vers /contact et zéro formulaire sur sa page d'accueil. SBR n'a ni téléphone ni formulaire. La règle : quatre champs, la preuve à côté, le reste replié. Sur mobile, une barre sticky apparaît une fois le hero passé — descends pour la voir.
Système
Cette page est construite depuis les jetons ci-contre. Le même fichier, commité dans le repo et référencé dans CLAUDE.md, empêche les 14 directions Mayor et les 11 concepts SBR de diverger à chaque itération. Refero fournit des exemples copiables ; on convertit au format Google puis npx @google/design.md lint.
--- version: alpha name: SpawnKit Studio --- # SpawnKit Studio — Style Reference Warm near-black, cream ceramic, copper as the only accent. Serif for feeling (Fraunces, opsz 144), sans for doing (Inter Tight). ## Colors | token | value | role | | --e0 | #131210 | page | | --e1 | #1b1916 | panel (+4 %) | | --e2 | #23201c | card (+8 %) | | --e3 | #2c2823 | floating (+12 %, blur 14) | | --cream | #efe6d6 | display, key surfaces | | --copper | #c47a3a | accent — buttons, rules, one tile | ## Motion | --out | cubic-bezier(.22,1,.36,1) | settle | | --spring | cubic-bezier(.34,1.56,.64,1) | snap-in | | durations | 140 / 260 / 520 ms | ## Rules - DO: one primary ask per page; proof beside every button. - DO: reveal with a no-JS fallback (`html.js .rv`). - DON'T: gradients as background; icons above every heading. - DON'T: a second accent. Copper or nothing.
Erreur

Pour Mayor : la scène WebGL déjà chargée — on soulève la cloche, il n'y a rien dessous, deux sorties : Catalogue et Devis. Pour SBR : « la colonne s'est désalignée », un bouton « Book an assessment ». Pour OpenCRM : la mascotte hausse les épaules dans le chat vide et propose trois actions.
Source 404s.design · footer.designAudio

FeedCast tourne sur eleven_v3 + text-to-dialogue. VoiceStudio (16 moteurs, API OpenAI-compatible) n'est pas un remplacement 1:1 : dialogue par réplique + assemblage, pas de tags d'émotion, et le moteur par défaut est non commercial. Reste trois candidats sérieux.
| Moteur | FR | Clonage | Émotion | Licence | Cible |
|---|---|---|---|---|---|
| VoxCPM2 | oui | oui | instruct | Apache-2.0 | Mac M4 Pro |
| PocketTTS | oui | oui | non | CC-BY-4.0 | sycopa CPU |
| CosyVoice 3 | oui | oui | tags | Apache-2.0 | GPU loué |
| OmniVoice | oui | oui | partiel | CC-BY-NC | interdit |
Roadmap
@spawnkit/mascot (vanilla + React)