Romain Fillatre — Développeur WordPress · Automatisations · Conversion
WordPress · Automatisations · Conversion · France

Des sites qui convertissent,
des workflows qui travaillent
pour vous.

Développeur WordPress freelance, je conçois des sites rapides, des automatisations sur-mesure et des tunnels de conversion qui transforment vos visiteurs en clients. Du temps de dev disponible en packs d'heures — payable en avance, utilisable à votre rythme.

RGPD by design
100% hébergé France
Réponse sous 24h
Sans engagement

Un projet en tête ?

Je vous réponds sous 24h · Sans engagement

Message envoyé !

Je vous réponds sous 24h ouvrées pour caler un échange.


Besoin d'une réponse immédiate ?


06 50 74 28 50
+30
clients accompagnés
13 ans
d'expérience WordPress
100%
hébergé France
RGPD
by design, systématiquement

Trois expertises, un seul interlocuteur

Dev, automatisations et conversion — des compétences complémentaires qui travaillent ensemble pour vous faire gagner du temps et des clients.

Automatisations

Votre équipe silencieuse qui ne dort jamais

Make, n8n, Gravity Forms + webhooks. Je connecte vos outils et automatise les tâches répétitives pour que vous vous concentriez sur ce qui compte.

  • Onboarding client automatique
  • Sync CRM / formulaires / email
  • Notifications et alertes sur-mesure
  • Agents IA intégrés à vos process

Dev WordPress

Des sites solides, rapides, maintenables

Bricks Builder, Gravity Forms, intégrations API sur-mesure. Code propre, performances Core Web Vitals, sites faciles à maintenir dans la durée.

  • Bricks Builder — HTML propre, sans bloat
  • Gravity Forms — formulaires complexes
  • Intégrations API tierces
  • Optimisation performance & sécurité

Du temps de dev disponible, payable en avance

Achetez un bloc d'heures, utilisez-les à votre rythme sur les prochains mois. Pas d'abonnement, pas de surprise — vous savez exactement ce que vous payez.

Starter

Pour tester et avancer

450 €

5 heures · utilisables sur 3 mois

  • Idéal pour une tâche précise
  • Modifications, corrections, évolutions
  • Priorité planning standard

Journée dédiée

Focus total sur un objectif

600 €

7 heures · date fixée ensemble

  • Une journée entière dédiée
  • Idéal pour un lancement ou refonte
  • Livraison en fin de journée

Sprint

Pour les projets urgents

1 600 €

3 jours consécutifs · livraison rapide

  • 3 jours bloqués pour vous seul
  • Support 30 jours post-sprint inclus
  • Idéal pour un projet complet
  • Résultats visibles en une semaine

Les heures non consommées sont reportables, non remboursables. Facturation à l'achat.

Choisir mon pack — 06 50 74 28 50

Un modèle pensé pour votre liberté

Transparence des coûts Prix fixé à l'avance
Flexibilité d'utilisation À votre rythme
Relation de confiance Long terme

* Heures utilisables sur vos projets WordPress, automatisations et conversion.

Un seul interlocuteur,
trois expertises

100% France, RGPD natif

Serveurs hébergés en France, données jamais transmises à des tiers hors UE. Conformité RGPD intégrée dès la conception, pas ajoutée en fin de projet.

Dev + Automation + Conversion

Pas besoin de coordonner trois prestataires différents. Je conçois le site, j'automatise les process et j'optimise la conversion — en cohérence totale.

Orienté résultats, pas livrables

Je travaille sur ce qui génère de la valeur pour votre business. Chaque heure est justifiée par un impact mesurable, pas par une liste de tâches.

De l'achat à la livraison en 4 étapes

Vous choisissez votre pack

Starter, Pro, Journée ou Sprint — selon votre besoin et votre budget. Paiement en avance, pas de mauvaise surprise.

On cale les priorités

Un échange de 20 minutes pour aligner les objectifs, définir les tâches et planifier les premières interventions.

Je travaille, vous avancez

Chaque heure consommée est tracée et documentée. Vous voyez exactement où en est votre projet, à tout moment.

Livraison et suivi

Chaque livraison est testée et documentée. Les heures restantes restent disponibles pour vos prochains besoins.

Ce que mes clients disent

★★★★★

"Romain a complètement refait notre site et mis en place des automatisations Make qu'on n'osait même pas imaginer. Notre onboarding client est maintenant 100% automatique. Un gain de temps énorme."

Arnaud H.

Directeur, Artemys Habitat

★★★★★

"On cherchait quelqu'un qui comprenne à la fois le dev et le SEO technique. Romain a restructuré notre site et nos campagnes Ads en parallèle — le trafic qualifié a vraiment augmenté."

Sophie C.

HR Solar

★★★★★

"Le pack Pro est parfait pour nous. On utilise les heures au fur et à mesure de nos besoins, sans devoir relancer un devis à chaque fois. Simple, efficace, réactif."

Marc L.

Rénovons Mieux

Un projet en tête ?

Parlons-en — si je ne réponds pas, je vous rappelle sous 2h.

/* * ╔══════════════════════════════════════════════════════════════════════╗ * ║ ARTISAN CORE CSS · v1.0 ║ * ║ Fichier CSS unique pour tous les templates service pro ║ * ╠══════════════════════════════════════════════════════════════════════╣ * ║ ║ * ║ PRINCIPE DE THÉMISATION ║ * ║ ───────────────────────────────────────────────────────────────── ║ * ║ Ce fichier ne se modifie jamais. ║ * ║ Le thème est configuré par un bloc :root dans le HTML : ║ * ║ ║ * ║ ║ * ║ ║ * ║ OU via l'attribut data-theme sur : ║ * ║ → accent teal ║ * ║ → accent or ║ * ║ → accent rouge/urgence ║ * ║ → les variables :root surchargeront ║ * ║ ║ * ║ SECTIONS PRÉSENTES/ABSENTES ║ * ║ ───────────────────────────────────────────────────────────────── ║ * ║ Supprimer simplement le bloc HTML de la section non souhaitée. ║ * ║ Le CSS de la section devient inactif sans erreur. ║ * ║ ║ * ║ CLASSES DE LAYOUT VARIANTS (optionnelles) ║ * ║ ───────────────────────────────────────────────────────────────── ║ * ║ .sp-hero--stacked Hero en 1 colonne (sans formulaire latéral) ║ * ║ .sp-variants--2col Grille variantes en 2 colonnes ║ * ║ .sp-variants--1col Grille variantes en 1 colonne ║ * ║ .sp-steps--3 Process en 3 étapes max ║ * ║ .sp-steps--4 Process en 4 étapes max ║ * ║ .sp-reviews--2col Témoignages en 2 colonnes ║ * ║ .sp-aides--2col Aides en 2 colonnes ║ * ║ ║ * ║ NOTE BRICKS BUILDER ║ * ║ ───────────────────────────────────────────────────────────────── ║ * ║ html { font-size: 62.5% } est commenté en bas de ce fichier. ║ * ║ Il est automatiquement géré par Bricks Builder. ║ * ║ Pour une page HTML standalone (hors Bricks), décommenter. ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════════╝ */ /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. VARIABLES & THÈME ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ :root { /* ── Accent — LA variable à changer pour personnaliser ── */ --sp-accent: #ffc72c; /* Couleur principale : gold par défaut */ --sp-accent-dark: #e6b020; /* Hover accent */ --sp-accent-dim: rgba(255,199,44,.12); /* Fond badges, icônes */ --sp-accent-glow: rgba(255,199,44,.08); /* Lueurs subtiles */ --sp-accent-border: rgba(255,199,44,.25); /* Bordures accent */ /* ── Fond & Structure ── */ --sp-bg-deep: #0f1520; /* Fond général page */ --sp-bg-nav: #1b2236; /* Barre de navigation */ --sp-bg-section: #1b2236; /* Sections alternées (dark) */ --sp-bg-card: #1e2a40; /* Cards contenu */ --sp-bg-form: #242e47; /* Form card */ --sp-bg-mid: #242e47; /* Intermédiaire */ /* ── Texte ── */ --sp-white: #ffffff; --sp-text: #e8eaf0; /* Texte secondaire */ --sp-muted: #8b93a8; /* Texte discret */ /* ── Polices — surcharger dans le bloc thème ── */ --sp-font-title: 'Barlow', sans-serif; --sp-font-body: 'DM Sans', sans-serif; /* ── Typographie scale (base : 1rem = 10px) ── */ --sp-fs-2xs: 1.05rem; /* 10.5px */ --sp-fs-xs: 1.15rem; /* 11.5px */ --sp-fs-sm: 1.2rem; /* 12px */ --sp-fs-sm2: 1.25rem; /* 12.5px */ --sp-fs-sm3: 1.3rem; /* 13px */ --sp-fs-sm4: 1.35rem; /* 13.5px */ --sp-fs-md: 1.4rem; /* 14px */ --sp-fs-md2: 1.45rem; /* 14.5px */ --sp-fs-base: 1.6rem; /* 16px */ --sp-fs-md3: 1.7rem; /* 17px */ --sp-fs-lg: 1.85rem; /* 18.5px */ --sp-fs-xl: 2.4rem; /* 24px */ --sp-fs-2xl: 2.7rem; /* 27px */ --sp-fs-3xl: 3.05rem; /* 30.5px */ --sp-fs-4xl: 3.2rem; /* 32px */ --sp-fs-5xl: 4.15rem; /* 41.5px */ --sp-fs-hero: 6.1rem; /* 61px */ /* ── Radius ── */ --sp-radius: 12px; --sp-radius-lg: 20px; --sp-radius-xl: 24px; /* ── Dégradés calculés depuis --sp-accent ── */ /* Ces variables sont redéfinies par les presets data-theme ci-dessous */ --sp-form-gradient: linear-gradient(90deg, var(--sp-accent), #ffdd80); --sp-bar-gradient: linear-gradient(90deg, var(--sp-accent), #ffdd80); --sp-avatar-gradient: linear-gradient(135deg, var(--sp-accent), var(--sp-bg-mid)); --sp-cta-gradient: linear-gradient(180deg, transparent 0%, rgba(255,199,44,.04) 100%); /* ── Lueurs fond parallax ── */ --sp-glow-1: rgba(255,199,44,.09); --sp-glow-2: rgba(0,196,180,.07); /* ── Sections ── */ --sp-section-py: 80px; --sp-container: 1100px; } /* ── PRESETS data-theme ── */ [data-theme="gold"], [data-theme="gold"] :root { --sp-accent: #ffc72c; --sp-accent-dark: #e6b020; --sp-accent-dim: rgba(255,199,44,.12); --sp-accent-glow: rgba(255,199,44,.08); --sp-accent-border: rgba(255,199,44,.25); --sp-form-gradient: linear-gradient(90deg, #ffc72c, #ffdd80); --sp-bar-gradient: linear-gradient(90deg, #ffc72c, #ffdd80); --sp-avatar-gradient:linear-gradient(135deg, #ffc72c, var(--sp-bg-mid)); --sp-cta-gradient: linear-gradient(180deg, transparent 0%, rgba(255,199,44,.04) 100%); --sp-glow-1: rgba(255,199,44,.09); --sp-glow-2: rgba(0,196,180,.07); } [data-theme="teal"], [data-theme="teal"] :root { --sp-accent: #00c4b4; --sp-accent-dark: #00a89a; --sp-accent-dim: rgba(0,196,180,.12); --sp-accent-glow: rgba(0,196,180,.08); --sp-accent-border: rgba(0,196,180,.25); --sp-form-gradient: linear-gradient(90deg, #00c4b4, #ffc72c); --sp-bar-gradient: linear-gradient(90deg, #00c4b4, #80ffe8); --sp-avatar-gradient:linear-gradient(135deg, #00c4b4, var(--sp-bg-mid)); --sp-cta-gradient: linear-gradient(180deg, transparent 0%, rgba(0,196,180,.04) 100%); --sp-glow-1: rgba(0,196,180,.09); --sp-glow-2: rgba(255,199,44,.07); } [data-theme="red"], [data-theme="red"] :root { --sp-accent: #ff4d4d; --sp-accent-dark: #e63c3c; --sp-accent-dim: rgba(255,77,77,.12); --sp-accent-glow: rgba(255,77,77,.08); --sp-accent-border: rgba(255,77,77,.25); --sp-form-gradient: linear-gradient(90deg, #ff4d4d, #ffc72c); --sp-bar-gradient: linear-gradient(90deg, #ff4d4d, #ff9966); --sp-avatar-gradient:linear-gradient(135deg, #ff4d4d, var(--sp-bg-mid)); --sp-cta-gradient: linear-gradient(180deg, transparent 0%, rgba(255,77,77,.04) 100%); --sp-glow-1: rgba(255,77,77,.08); --sp-glow-2: rgba(0,196,180,.07); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2. RESET & BASE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* html { font-size: 62.5%; } */ /* ↑ Commenté pour Bricks Builder. Décommenter pour standalone. */ body { font-family: var(--sp-font-body); font-size: var(--sp-fs-base); background: var(--sp-bg-deep); color: var(--sp-white); overflow-x: hidden; padding-top: 56px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } img { max-width: 100%; height: auto; display: block; } a { text-decoration: none; color: inherit; } ul, ol { list-style: none; } button { font-family: inherit; cursor: pointer; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3. FOND PARALLAX ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-bg { position: fixed; inset: 0; z-index: -1; background: linear-gradient(145deg, #0d1420 0%, #111827 50%, #0a1628 100%); overflow: hidden; } /* Lueur haut-droite */ .sp-bg::before { content: ''; position: absolute; top: -10%; right: -5%; width: 650px; height: 650px; border-radius: 50%; background: radial-gradient(circle, var(--sp-glow-1) 0%, transparent 65%); transition: background .4s; } /* Lueur bas-gauche */ .sp-bg::after { content: ''; position: absolute; bottom: 10%; left: -10%; width: 500px; height: 500px; border-radius: 50%; background: radial-gradient(circle, var(--sp-glow-2) 0%, transparent 65%); transition: background .4s; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. NAVIGATION ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; height: 56px; background: var(--sp-bg-nav); border-bottom: 2px solid var(--sp-accent); display: flex; align-items: center; justify-content: space-between; padding: 0 40px; box-shadow: 0 4px 24px rgba(0,0,0,.4); transition: border-color .3s; } .sp-nav-logo { display: flex; align-items: center; gap: 10px; font-family: var(--sp-font-title); font-weight: 800; font-size: var(--sp-fs-lg); color: var(--sp-white); letter-spacing: -.02em; } .sp-nav-logo-icon { width: 30px; height: 30px; background: var(--sp-accent); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: var(--sp-fs-sm2); color: var(--sp-bg-deep); font-style: normal; transition: background .3s; } .sp-nav-logo span { color: var(--sp-accent); transition: color .3s; } .sp-nav-links { display: flex; align-items: center; gap: 32px; } .sp-nav-links a { font-size: var(--sp-fs-md2); color: rgba(255,255,255,.65); font-weight: 500; transition: color .2s; } .sp-nav-links a:hover { color: var(--sp-white); } .sp-nav-links a.sp-active { color: var(--sp-accent); } .sp-nav-cta { display: flex; align-items: center; gap: 8px; background: var(--sp-accent); color: var(--sp-bg-deep); font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-md2); padding: 8px 16px; border-radius: 8px; white-space: nowrap; transition: background .2s, transform .15s; } .sp-nav-cta:hover { background: var(--sp-accent-dark); transform: scale(1.03); } /* Nav minimale (landing sans liens) */ .sp-nav--minimal .sp-nav-links { display: none; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5. LAYOUT UTILITAIRES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-container { max-width: var(--sp-container); margin: 0 auto; padding: 0 24px; } .sp-section-py { padding-top: var(--sp-section-py); padding-bottom: var(--sp-section-py); } .sp-section-dark { background: var(--sp-bg-section); } .sp-section-band { background: var(--sp-bg-section); border-top: 1px solid rgba(255,255,255,.06); border-bottom: 1px solid rgba(255,255,255,.06); } .sp-text-center { text-align: center; } /* Utilitaires couleur */ .sp-color-accent { color: var(--sp-accent) !important; } .sp-color-gold { color: #ffc72c !important; } .sp-color-teal { color: #00c4b4 !important; } .sp-color-muted { color: var(--sp-muted) !important; } .sp-color-white { color: var(--sp-white) !important; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6. TYPOGRAPHIE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-h1 { font-family: var(--sp-font-title); font-weight: 800; font-size: clamp(var(--sp-fs-4xl), 4.5vw, var(--sp-fs-hero)); line-height: 1.06; letter-spacing: -.04em; color: var(--sp-white); } .sp-h2 { font-family: var(--sp-font-title); font-weight: 800; font-size: clamp(var(--sp-fs-2xl), 3vw, var(--sp-fs-5xl)); line-height: 1.15; letter-spacing: -.03em; color: var(--sp-white); } .sp-section-label { font-family: var(--sp-font-title); font-size: var(--sp-fs-sm); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--sp-accent); display: block; margin-bottom: 12px; transition: color .3s; } .sp-section-label--gold { color: #ffc72c !important; } .sp-section-label--muted { color: var(--sp-muted) !important; } .sp-section-sub { font-size: var(--sp-fs-base); color: var(--sp-muted); line-height: 1.65; max-width: 540px; margin-bottom: 48px; } /* Texte dégradé accent */ .sp-gradient-text { background: linear-gradient(90deg, var(--sp-accent), #ffffff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Texte gold constant (indépendant du thème) */ .sp-gold-text { background: linear-gradient(90deg, #ffc72c, #ffdd80); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Couleur accent dans le texte */ .sp-accent-text { color: var(--sp-accent); transition: color .3s; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7. BADGES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-badge { display: inline-flex; align-items: center; gap: 8px; font-family: var(--sp-font-title); font-weight: 600; font-size: var(--sp-fs-sm); letter-spacing: .08em; text-transform: uppercase; padding: 6px 14px; border-radius: 100px; border: 1px solid var(--sp-accent-border); background: var(--sp-accent-dim); color: var(--sp-accent); margin-bottom: 28px; transition: background .3s, border-color .3s, color .3s; } /* Badge gold fixe (indépendant du thème) */ .sp-badge--gold { background: rgba(255,199,44,.12); border-color: rgba(255,199,44,.25); color: #ffc72c; } /* Badge teal fixe */ .sp-badge--teal { background: rgba(0,196,180,.10); border-color: rgba(0,196,180,.25); color: #00c4b4; } /* Badge urgence fixe */ .sp-badge--urgent { background: rgba(255,77,77,.10); border-color: rgba(255,77,77,.25); color: #ff4d4d; } /* Point clignotant dans le badge */ .sp-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; animation: sp-pulse 2s infinite; flex-shrink: 0; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8. BOUTONS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ /* Bouton principal — TOUJOURS gold (jamais teal seul en CTA principal) */ .sp-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 10px; background: #ffc72c; color: #1b2236; font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-base); padding: 16px 32px; border-radius: var(--sp-radius); border: none; cursor: pointer; transition: background .2s, transform .15s, box-shadow .2s; width: fit-content; white-space: nowrap; } .sp-btn-primary:hover { background: #e6b020; transform: translateY(-2px); box-shadow: 0 8px 32px rgba(255,199,44,.3); } .sp-btn-primary:active { transform: translateY(0); } /* Bouton secondaire (téléphone, liens) */ .sp-btn-secondary { display: inline-flex; align-items: center; justify-content: center; gap: 10px; background: transparent; color: var(--sp-white); font-family: var(--sp-font-title); font-weight: 600; font-size: var(--sp-fs-base); padding: 14px 28px; border-radius: var(--sp-radius); border: 1.5px solid rgba(255,255,255,.2); transition: border-color .2s, color .2s; width: fit-content; white-space: nowrap; } .sp-btn-secondary:hover { border-color: #ffc72c; color: #ffc72c; } /* Bouton accent (couleur thème) */ .sp-btn-accent { display: inline-flex; align-items: center; justify-content: center; gap: 10px; background: var(--sp-accent); color: var(--sp-bg-deep); font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-base); padding: 16px 32px; border-radius: var(--sp-radius); border: none; cursor: pointer; transition: background .2s, transform .15s; width: fit-content; } .sp-btn-accent:hover { background: var(--sp-accent-dark); transform: translateY(-2px); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9. FORMULAIRE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-form-card { background: var(--sp-bg-form); border-radius: var(--sp-radius-xl); padding: 32px 28px; border: 1px solid rgba(255,255,255,.06); box-shadow: 0 24px 60px rgba(0,0,0,.4); position: relative; overflow: hidden; } /* Bande colorée en haut de la card — couleur thème */ .sp-form-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--sp-form-gradient); } .sp-form-title { font-family: var(--sp-font-title); font-size: var(--sp-fs-xl); font-weight: 700; color: var(--sp-white); margin-bottom: 4px; } .sp-form-sub { font-size: var(--sp-fs-sm4); color: var(--sp-muted); margin-bottom: 24px; } .sp-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .sp-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; } .sp-field label { font-size: var(--sp-fs-md); font-weight: 600; color: var(--sp-text); } .sp-field input, .sp-field select, .sp-field textarea { background: rgba(255,255,255,.05); border: 1.5px solid rgba(255,255,255,.1); border-radius: var(--sp-radius); color: var(--sp-white); font-family: var(--sp-font-body); font-size: var(--sp-fs-md2); padding: 12px 14px; transition: border-color .2s; outline: none; width: 100%; } .sp-field input::placeholder, .sp-field textarea::placeholder { color: rgba(255,255,255,.2); } .sp-field input:focus, .sp-field select:focus, .sp-field textarea:focus { border-color: var(--sp-accent); } .sp-field select option { background: var(--sp-bg-mid); } .sp-form-submit { width: 100%; display: flex; align-items: center; justify-content: center; gap: 10px; padding: 16px 24px; background: #ffc72c; color: #1b2236; font-family: var(--sp-font-title); font-size: var(--sp-fs-base); font-weight: 700; border: none; border-radius: var(--sp-radius); cursor: pointer; transition: background .2s, transform .15s; margin-top: 8px; } .sp-form-submit:hover { background: #e6b020; transform: translateY(-1px); } .sp-form-legal { font-size: var(--sp-fs-2xs); color: rgba(255,255,255,.25); text-align: center; margin-top: 12px; line-height: 1.5; } /* État succès */ .sp-form-success { display: none; text-align: center; padding: 24px 0; } .sp-form-success-icon { font-size: 3.6rem; margin-bottom: 12px; } .sp-form-success h3 { font-family: var(--sp-font-title); font-size: var(--sp-fs-xl); font-weight: 700; margin-bottom: 8px; } .sp-form-success p { font-size: var(--sp-fs-sm4); color: var(--sp-text); margin-bottom: 8px; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10. HERO ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-hero { padding: 60px 0 80px; } /* Layout 2 colonnes (défaut) : texte + formulaire */ .sp-hero-inner { display: grid; grid-template-columns: 1fr 420px; gap: 60px; align-items: start; max-width: var(--sp-container); margin: 0 auto; padding: 0 24px; } /* Variant stacked : 1 colonne centrée (sans formulaire côté) */ .sp-hero--stacked .sp-hero-inner { grid-template-columns: 1fr; max-width: 760px; text-align: center; } .sp-hero--stacked .sp-hero-sub { max-width: 100%; margin-left: auto; margin-right: auto; } .sp-hero--stacked .sp-hero-ctas { align-items: center; } .sp-hero--stacked .sp-hero-trust { justify-content: center; } .sp-hero-content {} .sp-hero-sub { font-size: var(--sp-fs-base); color: var(--sp-muted); line-height: 1.7; max-width: 520px; margin: 24px 0 36px; } .sp-hero-sub strong { color: var(--sp-white); } .sp-hero-ctas { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; } .sp-hero-trust { display: flex; flex-wrap: wrap; gap: 12px 20px; } .sp-trust-item { display: flex; align-items: center; gap: 8px; font-size: var(--sp-fs-sm4); color: var(--sp-muted); } .sp-trust-icon { font-size: var(--sp-fs-base); } /* Formulaire hero collant */ .sp-hero-form { position: sticky; top: 72px; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11. BANDE URGENCE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-urgence { background: linear-gradient(90deg, rgba(255,77,77,.12), rgba(255,77,77,.06)); border-top: 1px solid rgba(255,77,77,.2); border-bottom: 1px solid rgba(255,77,77,.2); padding: 14px 24px; text-align: center; font-family: var(--sp-font-title); font-weight: 600; font-size: var(--sp-fs-sm4); color: var(--sp-text); } .sp-urgence span { color: #ff4d4d; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12. BANDE STATISTIQUES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-stats { background: var(--sp-bg-section); border-top: 1px solid rgba(255,255,255,.06); border-bottom: 1px solid rgba(255,255,255,.06); padding: 0; } .sp-stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); max-width: var(--sp-container); margin: 0 auto; } .sp-stat-item { padding: 36px 24px; text-align: center; border-right: 1px solid rgba(255,255,255,.06); } .sp-stat-item:last-child { border-right: none; } .sp-stat-num { font-family: var(--sp-font-title); font-weight: 800; font-size: var(--sp-fs-3xl); color: #ffc72c; /* Stat toujours en gold */ letter-spacing: -.02em; line-height: 1; margin-bottom: 8px; } .sp-stat-label { font-size: var(--sp-fs-sm2); color: var(--sp-muted); line-height: 1.4; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13. SECTION VARIANTES (cartes déclinaisons du service) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-variants { padding: var(--sp-section-py) 0; } /* Grille : 3 colonnes par défaut */ .sp-variants-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 48px; } .sp-variants--2col .sp-variants-grid { grid-template-columns: repeat(2, 1fr); } .sp-variants--1col .sp-variants-grid { grid-template-columns: 1fr; } .sp-variant-card { background: var(--sp-bg-card); border: 1px solid rgba(255,255,255,.07); border-radius: var(--sp-radius-lg); padding: 28px 24px; position: relative; transition: border-color .25s, transform .25s, box-shadow .25s; overflow: hidden; } .sp-variant-card:hover { border-color: var(--sp-accent-border); transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0,0,0,.3); } /* Carte mise en avant */ .sp-variant-card--featured { border-color: var(--sp-accent-border); box-shadow: 0 0 30px var(--sp-accent-glow); } /* Badge "Le plus demandé" / "Recommandé" */ .sp-variant-card--featured::before { content: attr(data-badge); /* data-badge="Recommandé" */ position: absolute; top: -1px; right: 20px; background: var(--sp-accent); color: var(--sp-bg-deep); font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-xs); letter-spacing: .05em; padding: 4px 12px; border-radius: 0 0 10px 10px; transition: background .3s; } .sp-variant-icon { font-size: 2.8rem; display: block; margin-bottom: 14px; } .sp-variant-name { font-family: var(--sp-font-title); font-weight: 800; font-size: var(--sp-fs-lg); color: var(--sp-white); margin-bottom: 4px; } .sp-variant-tagline { font-size: var(--sp-fs-sm4); color: var(--sp-accent); font-weight: 600; margin-bottom: 12px; transition: color .3s; } .sp-variant-desc { font-size: var(--sp-fs-sm4); color: var(--sp-text); line-height: 1.6; margin-bottom: 18px; } .sp-variant-pros { display: flex; flex-direction: column; gap: 7px; } .sp-variant-pros li { font-size: var(--sp-fs-sm3); color: var(--sp-muted); padding-left: 18px; position: relative; line-height: 1.4; } .sp-variant-pros li::before { content: '✓'; position: absolute; left: 0; color: var(--sp-accent); font-weight: 700; transition: color .3s; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14. SECTION ÉCONOMIES + POURQUOI NOUS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-eco { padding: var(--sp-section-py) 0; } .sp-eco-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; } /* Barres comparaison */ .sp-eco-bars { display: flex; flex-direction: column; gap: 22px; margin-top: 32px; } .sp-eco-bar-label { display: flex; justify-content: space-between; align-items: center; font-family: var(--sp-font-title); font-weight: 600; font-size: var(--sp-fs-sm4); margin-bottom: 8px; color: var(--sp-text); } .sp-eco-saving { color: var(--sp-accent); font-size: var(--sp-fs-base); transition: color .3s; } .sp-eco-track { height: 10px; background: rgba(255,255,255,.07); border-radius: 100px; overflow: hidden; } .sp-bar-fill { height: 100%; background: var(--sp-bar-gradient); border-radius: 100px; width: 0; /* Initialisé JS → IntersectionObserver */ transition: width 1.2s cubic-bezier(.4, 0, .2, 1); } .sp-bar-fill--gold { background: linear-gradient(90deg, #ffc72c, #ffdd80) !important; } .sp-eco-note { margin-top: 16px; font-size: var(--sp-fs-xs); color: rgba(255,255,255,.2); font-style: italic; } /* Points "Pourquoi nous" */ .sp-why-points { display: flex; flex-direction: column; gap: 22px; margin-top: 28px; } .sp-why-point { display: flex; gap: 16px; align-items: flex-start; } .sp-why-icon { width: 44px; height: 44px; flex-shrink: 0; background: var(--sp-accent-dim); border: 1px solid var(--sp-accent-border); border-radius: var(--sp-radius); display: flex; align-items: center; justify-content: center; font-size: 2rem; transition: background .3s, border-color .3s; } .sp-why-title { font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-base); color: var(--sp-white); margin-bottom: 4px; } .sp-why-desc { font-size: var(--sp-fs-sm4); color: var(--sp-muted); line-height: 1.65; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15. SECTION PROCESSUS (étapes) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-process { padding: var(--sp-section-py) 0; } /* Ligne de connexion */ .sp-steps { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; position: relative; margin-top: 48px; counter-reset: sp-step; } .sp-steps::before { content: ''; position: absolute; top: 24px; left: calc(100% / 10); right: calc(100% / 10); height: 2px; background: linear-gradient( 90deg, transparent, var(--sp-accent-border), var(--sp-accent-border), transparent ); z-index: 0; transition: background .3s; } /* Variants nombre d'étapes */ .sp-steps--3 { grid-template-columns: repeat(3, 1fr); } .sp-steps--4 { grid-template-columns: repeat(4, 1fr); } .sp-step { text-align: center; padding: 0 12px; position: relative; z-index: 1; counter-increment: sp-step; } .sp-step-num { width: 48px; height: 48px; border-radius: 50%; background: var(--sp-bg-deep); border: 2px solid var(--sp-accent-border); font-family: var(--sp-font-title); font-weight: 800; font-size: var(--sp-fs-lg); color: var(--sp-accent); display: flex; align-items: center; justify-content: center; margin: 0 auto 18px; transition: background .2s, color .2s, border-color .2s; } /* Numéro via CSS counter (pas de champ ACF nécessaire) */ .sp-step-num::after { content: counter(sp-step); } .sp-step:hover .sp-step-num { background: var(--sp-accent); color: var(--sp-bg-deep); border-color: var(--sp-accent); } .sp-step-title { font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-md2); color: var(--sp-white); margin-bottom: 8px; } .sp-step-desc { font-size: var(--sp-fs-sm3); color: var(--sp-muted); line-height: 1.55; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16. SECTION AIDES FINANCIÈRES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-aides { padding: var(--sp-section-py) 0; } .sp-aides-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 48px; } .sp-aides--2col .sp-aides-grid { grid-template-columns: repeat(2, 1fr); } .sp-aide-card { background: var(--sp-bg-card); border: 1px solid rgba(255,255,255,.07); border-radius: var(--sp-radius-lg); padding: 28px 24px; text-align: center; transition: border-color .2s, transform .2s; } .sp-aide-card:hover { border-color: rgba(255,199,44,.3); transform: translateY(-3px); } .sp-aide-amount { font-family: var(--sp-font-title); font-weight: 800; font-size: var(--sp-fs-3xl); color: #ffc72c; /* Toujours gold */ line-height: 1; margin-bottom: 8px; letter-spacing: -.02em; } .sp-aide-name { font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-base); color: var(--sp-white); margin-bottom: 10px; } .sp-aide-desc { font-size: var(--sp-fs-sm4); color: var(--sp-muted); line-height: 1.65; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17. SECTION TÉMOIGNAGES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-reviews { padding: var(--sp-section-py) 0; } .sp-reviews-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 48px; } .sp-reviews--2col .sp-reviews-grid { grid-template-columns: repeat(2, 1fr); } .sp-review-card { background: var(--sp-bg-card); border: 1px solid rgba(255,255,255,.07); border-radius: var(--sp-radius-lg); padding: 24px; display: flex; flex-direction: column; } .sp-stars { color: #ffc72c; font-size: var(--sp-fs-base); letter-spacing: 2px; margin-bottom: 12px; } .sp-review-text { font-size: var(--sp-fs-md2); color: var(--sp-text); line-height: 1.7; font-style: italic; flex: 1; margin-bottom: 20px; } .sp-reviewer { display: flex; align-items: center; gap: 12px; margin-top: auto; } .sp-avatar { width: 38px; height: 38px; border-radius: 50%; background: var(--sp-avatar-gradient); display: flex; align-items: center; justify-content: center; font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-sm4); color: var(--sp-white); flex-shrink: 0; transition: background .3s; } .sp-reviewer-name { font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-sm4); color: var(--sp-white); } .sp-reviewer-loc { font-size: var(--sp-fs-xs); color: var(--sp-muted); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18. BANDE CERTIFICATIONS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-certifs { background: var(--sp-bg-section); border-top: 1px solid rgba(255,255,255,.06); padding: 36px 24px; text-align: center; } .sp-certifs-label { font-size: var(--sp-fs-xs); color: var(--sp-muted); letter-spacing: .12em; text-transform: uppercase; font-weight: 600; margin-bottom: 20px; display: block; } .sp-certifs-row { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; max-width: 800px; margin: 0 auto; } .sp-certif-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(255,255,255,.04); border: 1.5px solid var(--sp-accent-border); border-radius: var(--sp-radius); padding: 10px 18px; font-family: var(--sp-font-title); font-weight: 700; font-size: var(--sp-fs-sm4); color: var(--sp-accent); transition: background .2s, color .3s, border-color .3s; } .sp-certif-badge:hover { background: var(--sp-accent-dim); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19. CTA FINAL ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-cta-final { padding: 80px 24px; text-align: center; background: var(--sp-cta-gradient); transition: background .3s; } .sp-cta-final p { font-size: var(--sp-fs-base); color: var(--sp-muted); max-width: 500px; margin: 12px auto 36px; line-height: 1.65; } .sp-cta-actions { display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20. FOOTER ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-footer { border-top: 1px solid rgba(255,255,255,.06); padding: 24px; text-align: center; font-size: var(--sp-fs-sm); color: rgba(255,255,255,.2); } .sp-footer a { color: rgba(255,255,255,.3); text-decoration: none; transition: color .2s; } .sp-footer a:hover { color: var(--sp-accent); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21. FAB TÉLÉPHONE MOBILE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ .sp-fab { position: fixed; bottom: 24px; right: 24px; z-index: 99; display: none; } .sp-fab a { width: 56px; height: 56px; border-radius: 50%; background: #ffc72c; color: #1b2236; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 24px rgba(255,199,44,.4); transition: transform .2s; } .sp-fab a:hover { transform: scale(1.1); } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22. ANIMATIONS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ @keyframes sp-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .4; transform: scale(1.5); } } @keyframes sp-fadeUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } } @keyframes sp-shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } .sp-fade-up { opacity: 0; transform: translateY(28px); animation: sp-fadeUp .7s ease forwards; animation-play-state: paused; } /* Décalages pour les enfants (jusqu'à 6) */ .sp-fade-up:nth-child(1) { animation-delay: .1s; } .sp-fade-up:nth-child(2) { animation-delay: .2s; } .sp-fade-up:nth-child(3) { animation-delay: .3s; } .sp-fade-up:nth-child(4) { animation-delay: .4s; } .sp-fade-up:nth-child(5) { animation-delay: .5s; } .sp-fade-up:nth-child(6) { animation-delay: .6s; } /* Décalages manuels */ .sp-delay-1 { animation-delay: .1s !important; } .sp-delay-2 { animation-delay: .2s !important; } .sp-delay-3 { animation-delay: .3s !important; } .sp-delay-4 { animation-delay: .4s !important; } /* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23. RESPONSIVE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */ @media (max-width: 1100px) { .sp-variants-grid { grid-template-columns: repeat(2, 1fr); } .sp-steps { grid-template-columns: repeat(3, 1fr); } .sp-steps::before { display: none; } .sp-steps--3 { grid-template-columns: repeat(3, 1fr); } .sp-steps--4 { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 900px) { :root { --sp-section-py: 60px; } .sp-nav { padding: 0 20px; } .sp-nav-links { display: none; } .sp-nav-cta span { display: none; } .sp-hero-inner { grid-template-columns: 1fr; gap: 40px; } .sp-hero-form { position: static; } .sp-stats-grid { grid-template-columns: repeat(2, 1fr); } .sp-stat-item { border-right: none; border-bottom: 1px solid rgba(255,255,255,.06); } .sp-stat-item:last-child { border-bottom: none; } .sp-eco-inner { grid-template-columns: 1fr; gap: 48px; } .sp-variants-grid { grid-template-columns: 1fr; } .sp-aides-grid { grid-template-columns: 1fr; } .sp-reviews-grid { grid-template-columns: 1fr; } .sp-form-row { grid-template-columns: 1fr; } .sp-fab { display: block; } } @media (max-width: 600px) { :root { --sp-section-py: 48px; } .sp-steps { grid-template-columns: 1fr; } .sp-stats-grid { grid-template-columns: repeat(2, 1fr); } .sp-cta-actions { flex-direction: column; align-items: center; } .sp-hero-ctas { gap: 10px; } }