Atelier interactif
Du code. Du caractère.
Une interface composée dans le code, ajustée à votre image. Changez quelques détails : le code et le résultat évoluent ensemble.
:root {
--accent: #a78bfa;
--arrondi: 20px;
color-scheme: dark;
}
* { box-sizing: border-box; }
body {
margin: 0;
padding: 22px;
min-height: 100vh;
display: grid;
align-items: center;
background: #0d0d10;
color: #f4f4f4;
font-family: system-ui, sans-serif;
}
.demo-card {
position: relative;
display: grid;
grid-template-columns: 1.2fr 1fr;
align-items: center;
gap: 16px;
padding: 28px;
border: 1px solid #ffffff24;
border-radius: var(--arrondi);
background: radial-gradient(ellipse at 100% 0%,
color-mix(in srgb, var(--accent) 15%, transparent),
transparent 70%), #151519;
transition: border-radius .2s ease;
}
.copy { min-width: 0; }
.eyebrow {
margin: 0 0 22px;
font-size: 9px;
font-weight: 700;
letter-spacing: .18em;
color: var(--accent);
}
h1 {
margin: 0;
font-size: clamp(27px, 4.7vw, 40px);
line-height: 1.06;
letter-spacing: -.055em;
overflow-wrap: anywhere;
}
h1 span { display: block; color: var(--accent); }
.intro { font-size: 12px; line-height: 1.7; color: #b6b6c2; }
.demo-button {
display: inline-flex;
align-items: center;
gap: 14px;
margin-top: 10px;
padding: 13px 16px;
border-radius: var(--arrondi);
background: var(--accent);
color: #17121f;
font-size: 11px;
font-weight: 750;
cursor: pointer;
}
.signal {
position: absolute;
width: 1px;
height: 1px;
opacity: 0;
}
.signal:focus-visible ~ .copy .demo-button {
outline: 2px solid white;
outline-offset: 5px;
}
.on { display: none; }
.signal:checked ~ .copy .off { display: none; }
.signal:checked ~ .copy .on { display: inline; }
.mascot { color: var(--accent); }
.mascot svg { display: block; width: 100%; }
.bulb { opacity: .35; transition: filter .2s, opacity .2s; }
.signal:checked ~ .mascot .bulb {
opacity: 1;
filter: drop-shadow(0 0 10px var(--accent));
}
@media (max-width: 480px) {
body { padding: 16px; }
.demo-card { grid-template-columns: 1fr; gap: 22px; padding: 24px; }
.mascot { width: 120px; margin: 0 auto; }
.eyebrow { margin-bottom: 16px; }
}
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; }
}
Dans l’aperçu, allumez l’antenne de la mascotte : même cette interaction est dessinée dans le code.
HTML pour la structure · CSS pour le style · SVG pour le dessin.
Le besoin de départ
Présenter mon activité de création de sites et permettre à un indépendant de comprendre ce que je peux lui proposer.
01
Une offre accessible plus tôt
Le constat
Les prestations arrivaient après trois grands aperçus de projets.
Le choix
Les services suivent désormais l’accueil. Une sélection plus courte permet ensuite d’explorer les créations.
02
Des aperçus adaptés au téléphone
Le constat
La vue agrandie réduisait l’aperçu sur mobile et conservait une mise en page d’ordinateur.
Le choix
Une vue mobile dédiée affiche des contenus lisibles, un menu et des questions déroulantes. La vue ordinateur reste disponible.
03
Des parcours plus explicites
Le constat
Les choix de prestation se perdaient en arrivant sur le contact, et un formulaire inactif restait remplissable.
Le choix
Le choix de prestation ou de concept est conservé. Le contact affiche un état de préparation sans demander de remplir des champs inutilisables.
Ce projet personnel illustre ma démarche. Aucun gain de ventes ou de demandes n’est revendiqué : les résultats commerciaux ne sont pas encore mesurés.
Explorer les autres concepts