Outiref

Code source de l'URL : https://enprod.fr/

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>enprod.fr – Je vous aide à finaliser votre prototype commencé avec l'IA.</title>
<meta name="description" content="Freelance fullstack : passage en production de MVP (IA ou classique), sécurisation, scalabilité et déblocage de projets tech. Christophe Surbier, 20+ ans d'expérience. Réponse sous 48h.">
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
<meta name="author" content="Christophe Surbier">
<meta name="theme-color" content="#0d0f14">
<link rel="canonical" href="https://enprod.fr/">
<link rel="alternate" hreflang="fr" href="https://enprod.fr/">
<link rel="alternate" hreflang="x-default" href="https://enprod.fr/">
<meta property="og:locale" content="fr_FR">
<meta property="og:type" content="website">
<meta property="og:url" content="https://enprod.fr/">
<meta property="og:site_name" content="enprod.fr">
<meta property="og:title" content="enprod.fr – Je conclus ce que l'IA a commencé.">
<meta property="og:description" content="Freelance fullstack : passage en production de MVP (IA ou classique), sécurisation, scalabilité et déblocage de projets tech. Réponse sous 48h.">
<meta property="og:image" content="https://enprod.fr/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="enprod.fr — MVP et projets tech en production">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="enprod.fr – Je conclus ce que l'IA a commencé.">
<meta name="twitter:description" content="Freelance fullstack : MVP en prod, sécurisation, déblocage de projets. Réponse sous 48h.">
<meta name="twitter:image" content="https://enprod.fr/og-image.jpg">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-EFY2ZQENV8"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-EFY2ZQENV8');
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://enprod.fr/#website",
      "url": "https://enprod.fr/",
      "name": "enprod.fr",
      "description": "Accompagnement pour passer un MVP en production, sécuriser et débloquer des projets logiciels (Python, Django, Angular, cloud).",
      "inLanguage": "fr-FR",
      "publisher": { "@id": "https://enprod.fr/#organization" }
    },
    {
      "@type": "WebPage",
      "@id": "https://enprod.fr/#webpage",
      "url": "https://enprod.fr/",
      "name": "enprod.fr – Je conclus ce que l'IA a commencé.",
      "description": "Freelance fullstack : passage en production de MVP (IA ou classique), sécurisation, scalabilité et déblocage de projets tech. Réponse sous 48h.",
      "isPartOf": { "@id": "https://enprod.fr/#website" },
      "about": { "@id": "https://enprod.fr/#professional-service" },
      "inLanguage": "fr-FR"
    },
    {
      "@type": "Organization",
      "@id": "https://enprod.fr/#organization",
      "name": "enprod.fr",
      "url": "https://enprod.fr/",
      "description": "Prestations freelance de développement fullstack et mise en production.",
      "founder": { "@id": "https://enprod.fr/#christophe-surbier" }
    },
    {
      "@type": "ProfessionalService",
      "@id": "https://enprod.fr/#professional-service",
      "name": "Mise en production MVP & déblocage projets tech",
      "description": "Audit, structuration, sécurisation et déploiement réel de MVP (dont code généré par IA), reprise de projets bloqués, scalabilité et closing avant livraison.",
      "url": "https://enprod.fr/",
      "provider": { "@id": "https://enprod.fr/#organization" },
      "areaServed": { "@type": "Country", "name": "France" },
      "knowsAbout": ["Développement web", "Python", "Django", "Angular", "Cloud computing", "MVP", "Sécurité applicative"]
    },
    {
      "@type": "Person",
      "@id": "https://enprod.fr/#christophe-surbier",
      "name": "Christophe Surbier",
      "givenName": "Christophe",
      "familyName": "Surbier",
      "url": "https://enprod.fr/a-propos.html",
      "jobTitle": "Développeur fullstack freelance",
      "knowsAbout": ["Python", "Django", "Angular", "Capacitor", "Cloud"],
      "sameAs": [
        "https://www.malt.fr/profile/christophesurbier",
        "https://www.freelance-fullstack.dev"
      ],
      "worksFor": { "@id": "https://enprod.fr/#organization" }
    }
  ]
}
</script>
<link href="https://fonts.googleapis.com/css2?family=Syne:wght@400;600;700;800&family=DM+Sans:ital,wght@0,300;0,400;0,500;1,300&display=swap" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/iconify-icon@2/dist/iconify-icon.min.js" defer></script>
<style>
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

  :root {
    --bg: #0d0f14;
    --surface: #151820;
    --border: #1f2430;
    --accent: #f0a500;
    --accent2: #e05c2a;
    --text: #e8eaf0;
    --muted: #7a8099;
    --soft: #c5c9d8;
  }

  html { scroll-behavior: smooth; }

  body {
    font-family: 'DM Sans', sans-serif;
    background: var(--bg);
    color: var(--text);
    overflow-x: hidden;
    line-height: 1.6;
  }

  /* NAV */
  nav {
    position: fixed; top: 0; left: 0; right: 0; z-index: 100;
    display: flex; justify-content: space-between; align-items: center;
    padding: 1.2rem 5%;
    background: rgba(13,15,20,0.85);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--border);
  }
  .logo {
    font-family: 'Syne', sans-serif;
    font-weight: 800;
    font-size: 1.1rem;
    letter-spacing: -0.02em;
  }
  .logo span { color: var(--accent); }
  .nav-links { display: flex; align-items: center; gap: 2rem; }
  .nav-links a {
    color: var(--muted);
    text-decoration: none;
    font-size: 0.88rem;
    transition: color 0.2s;
  }
  .nav-links a:hover { color: var(--text); }
  /* TARIFS TEASER */
  .tarifs-teaser {
    background: var(--surface);
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    padding: 5rem 5%;
    display: flex; justify-content: space-between; align-items: center;
    gap: 3rem; flex-wrap: wrap;
  }
  .tarifs-teaser-left { max-width: 560px; }
  .tarifs-teaser h2 {
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    letter-spacing: -0.025em;
    margin-bottom: 0.8rem;
    line-height: 1.2;
  }
  .tarifs-teaser h2 em {
    font-style: normal;
    background: linear-gradient(135deg, var(--accent), var(--accent2));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
  }
  .tarifs-teaser p { color: var(--muted); font-size: 0.95rem; line-height: 1.7; }
  .tarifs-pills {
    display: flex; flex-wrap: wrap; gap: 0.6rem;
    margin-top: 1.5rem;
  }
  .tarifs-pill {
    background: rgba(240,165,0,0.07);
    border: 1px solid rgba(240,165,0,0.18);
    color: var(--soft);
    font-size: 0.82rem;
    padding: 0.4rem 0.9rem;
    border-radius: 100px;
  }
  .tarifs-pill strong { color: var(--accent); }
  .tarifs-teaser-right { flex-shrink: 0; }
  .btn-outline-accent {
    display: inline-block;
    border: 1.5px solid var(--accent);
    color: var(--accent);
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: 0.95rem;
    padding: 0.9rem 2rem;
    border-radius: 6px;
    text-decoration: none;
    transition: background 0.2s, color 0.2s;
  }
  .btn-outline-accent:hover { background: var(--accent); color: #0d0f14; }
  .nav-cta {
    background: var(--accent);
    color: #0d0f14;
    font-weight: 600;
    font-size: 0.85rem;
    padding: 0.55rem 1.2rem;
    border-radius: 4px;
    text-decoration: none;
    transition: opacity 0.2s;
  }
  .nav-cta:hover { opacity: 0.85; }

  .nav-toggle {
    display: none;
    flex-shrink: 0;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    margin-left: auto;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--text);
    cursor: pointer;
    border-radius: 6px;
  }
  .nav-toggle:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
  }
  .nav-toggle-bar {
    display: block;
    width: 22px;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
    transition: transform 0.2s ease, opacity 0.2s ease;
  }
  nav.is-open .nav-toggle-bar:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  nav.is-open .nav-toggle-bar:nth-child(2) { opacity: 0; }
  nav.is-open .nav-toggle-bar:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

  @media (max-width: 900px) {
    nav { flex-wrap: wrap; row-gap: 0; }
    .nav-toggle { display: inline-flex; }
    .nav-links {
      display: none;
      flex-basis: 100%;
      flex-direction: column;
      align-items: stretch;
      gap: 0;
      padding-top: 0;
      margin-top: 0;
      border-top: 1px solid transparent;
    }
    nav.is-open .nav-links {
      display: flex;
      padding-top: 1rem;
      margin-top: 0.75rem;
      border-top-color: var(--border);
    }
    .nav-links > a:not(.nav-cta) {
      padding: 0.75rem 0;
      font-size: 0.95rem;
      border-bottom: 1px solid var(--border);
    }
    .nav-links .nav-cta {
      margin-top: 0.75rem;
      text-align: center;
    }
  }

  /* HERO */
  .hero {
    min-height: 100vh;
    display: flex; flex-direction: column; justify-content: center;
    padding: 8rem 5% 5rem;
    position: relative;
    overflow: hidden;
  }
  .hero-bg {
    position: absolute; inset: 0; z-index: 0;
    background:
      radial-gradient(ellipse 60% 50% at 80% 30%, rgba(240,165,0,0.07) 0%, transparent 70%),
      radial-gradient(ellipse 40% 40% at 20% 70%, rgba(224,92,42,0.05) 0%, transparent 60%);
  }
  .grid-overlay {
    position: absolute; inset: 0; z-index: 0;
    background-image:
      linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
      linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
    background-size: 60px 60px;
  }
  .hero-content { position: relative; z-index: 1; max-width: 820px; }

  .badge {
    display: inline-flex; align-items: center; gap: 0.5rem;
    background: rgba(240,165,0,0.1);
    border: 1px solid rgba(240,165,0,0.25);
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.4rem 0.9rem;
    border-radius: 100px;
    margin-bottom: 2rem;
    animation: fadeUp 0.6s ease both;
  }
  .badge::before {
    content: '';
    width: 7px; height: 7px;
    background: var(--accent);
    border-radius: 50%;
    animation: pulse 2s infinite;
  }
  @keyframes pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.8); }
  }

  h1 {
    font-family: 'Syne', sans-serif;
    font-weight: 800;
    font-size: clamp(2.4rem, 5.5vw, 4.2rem);
    line-height: 1.08;
    letter-spacing: -0.03em;
    margin-bottom: 1.6rem;
    animation: fadeUp 0.6s 0.1s ease both;
  }
  h1 em {
    font-style: normal;
    background: linear-gradient(135deg, var(--accent), var(--accent2));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
  }

  .hero-sub {
    font-size: 1.1rem;
    color: var(--soft);
    max-width: 560px;
    font-weight: 300;
    margin-bottom: 2.5rem;
    animation: fadeUp 0.6s 0.2s ease both;
  }

  .hero-actions {
    display: flex; gap: 1rem; flex-wrap: wrap;
    animation: fadeUp 0.6s 0.3s ease both;
  }
  .btn-primary {
    background: var(--accent);
    color: #0d0f14;
    font-family: 'DM Sans', sans-serif;
    font-weight: 600;
    font-size: 0.95rem;
    padding: 0.85rem 2rem;
    border-radius: 5px;
    text-decoration: none;
    transition: transform 0.2s, box-shadow 0.2s;
    box-shadow: 0 0 30px rgba(240,165,0,0.15);
  }
  .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(240,165,0,0.25); }
  .btn-secondary {
    border: 1px solid var(--border);
    color: var(--soft);
    font-size: 0.95rem;
    padding: 0.85rem 2rem;
    border-radius: 5px;
    text-decoration: none;
    transition: border-color 0.2s, color 0.2s;
  }
  .btn-secondary:hover { border-color: var(--muted); color: var(--text); }

  .hero-stats {
    display: flex; gap: 2.5rem; margin-top: 4rem;
    animation: fadeUp 0.6s 0.4s ease both;
  }
  .stat-item { display: flex; flex-direction: column; gap: 0.2rem; }
  .stat-value {
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: 1.6rem;
    color: var(--accent);
  }
  .stat-label { font-size: 0.8rem; color: var(--muted); }

  @keyframes fadeUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* SECTIONS */
  section { padding: 6rem 5%; }

  .section-label {
    font-size: 0.75rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 600;
    margin-bottom: 0.8rem;
  }
  .section-title {
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: clamp(1.8rem, 3.5vw, 2.6rem);
    letter-spacing: -0.025em;
    margin-bottom: 1rem;
    line-height: 1.15;
  }
  .section-sub {
    color: var(--muted);
    font-size: 1rem;
    max-width: 480px;
    margin-bottom: 3.5rem;
  }

  /* PROBLEMS */
  .problems-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1px;
    background: var(--border);
    border: 1px solid var(--border);
    border-radius: 10px;
    overflow: hidden;
  }
  .problem-card {
    background: var(--surface);
    padding: 2rem;
    transition: background 0.25s;
    cursor: default;
  }
  .problem-card:hover { background: #1a1f2e; }
  .problem-icon {
    margin-bottom: 1rem;
    display: block;
    line-height: 0;
  }
  .problem-icon iconify-icon {
    width: 1.65rem;
    height: 1.65rem;
    color: var(--accent);
  }
  .problem-icon--accent2 iconify-icon { color: var(--accent2); }
  .problem-icon--soft iconify-icon { color: var(--soft); }
  .pill-icon {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
  }
  .pill-icon iconify-icon {
    width: 0.95rem;
    height: 0.95rem;
    flex-shrink: 0;
  }
  .about-avatar-icon iconify-icon {
    width: 2rem;
    height: 2rem;
    color: var(--muted);
  }
  .problem-tag {
    font-size: 0.7rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--accent2);
    font-weight: 600;
    margin-bottom: 0.6rem;
  }
  .problem-title {
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: 1rem;
    margin-bottom: 0.7rem;
    line-height: 1.3;
  }
  .problem-desc {
    font-size: 0.88rem;
    color: var(--muted);
    line-height: 1.6;
  }

  /* PROCESS */
  .process-section {
    background: var(--surface);
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
  }
  .process-steps {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 2rem;
    margin-top: 3rem;
  }
  .step { display: flex; flex-direction: column; gap: 0.8rem; }
  .step-num {
    font-family: 'Syne', sans-serif;
    font-weight: 800;
    font-size: 2.5rem;
    color: rgba(240, 165, 0, 0.42);
    line-height: 1;
    margin-bottom: 0.2rem;
  }
  .step-title {
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: 1rem;
  }
  .step-desc { font-size: 0.88rem; color: var(--muted); }

  /* CTA */
  .cta-section {
    text-align: center;
    padding: 6rem 5%;
    position: relative;
    overflow: hidden;
  }
  .cta-bg {
    position: absolute; inset: 0;
    background: radial-gradient(ellipse 70% 60% at 50% 50%, rgba(240,165,0,0.06) 0%, transparent 70%);
  }
  .cta-section h2 {
    font-family: 'Syne', sans-serif;
    font-weight: 800;
    font-size: clamp(1.8rem, 4vw, 3rem);
    letter-spacing: -0.025em;
    margin-bottom: 1rem;
    position: relative;
  }
  .cta-section p {
    color: var(--muted);
    margin-bottom: 2.5rem;
    position: relative;
  }
  .cta-form {
    display: flex; flex-direction: column; gap: 1rem;
    max-width: 520px; margin: 0 auto;
    position: relative;
  }
  .cta-form textarea {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text);
    font-family: 'DM Sans', sans-serif;
    font-size: 0.95rem;
    padding: 1rem 1.2rem;
    resize: none;
    height: 120px;
    transition: border-color 0.2s;
    outline: none;
  }
  .cta-form textarea::placeholder { color: var(--muted); }
  .cta-form textarea:focus { border-color: rgba(240,165,0,0.4); }
  .cta-form input[type=email] {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    color: var(--text);
    font-family: 'DM Sans', sans-serif;
    font-size: 0.95rem;
    padding: 0.85rem 1.2rem;
    outline: none;
    transition: border-color 0.2s;
  }
  .cta-form input[type=email]::placeholder { color: var(--muted); }
  .cta-form input[type=email]:focus { border-color: rgba(240,165,0,0.4); }
  .cta-form button {
    background: var(--accent);
    color: #0d0f14;
    font-family: 'Syne', sans-serif;
    font-weight: 700;
    font-size: 1rem;
    padding: 1rem;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: opacity 0.2s, transform 0.2s;
  }
  .cta-form button:hover { opacity: 0.88; transform: translateY(-1px); }
  .cta-note { font-size: 0.78rem; color: var(--muted); margin-top: 0.5rem; }
  .form-feedback {
    font-size: 0.9rem;
    padding: 0.85rem 1rem;
    border-radius: 8px;
    text-align: left;
    line-height: 1.45;
  }
  .form-feedback--success {
    background: rgba(34, 197, 94, 0.12);
    border: 1px solid rgba(34, 197, 94, 0.35);
    color: #4ade80;
  }
  .form-feedback--error {
    background: rgba(239, 68, 68, 0.1);
    border: 1px solid rgba(239, 68, 68, 0.35);
    color: #f87171;
  }
  .form-honeypot {
    position: absolute !important;
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
  }

  /* DISPO */
  .dispo {
    display: inline-flex; align-items: center; gap: 0.5rem;
    background: rgba(34,197,94,0.08);
    border: 1px solid rgba(34,197,94,0.2);
    color: #4ade80;
    font-size: 0.78rem; font-weight: 500;
    padding: 0.35rem 0.85rem;
    border-radius: 100px;
    margin-top: 1.5rem;
  }
  .dispo::before {
    content: '';
    width: 6px; height: 6px;
    background: #4ade80;
    border-radius: 50%;
    animation: pulse 2s infinite;
  }

  /* FOOTER */
  footer {
    border-top: 1px solid var(--border);
    padding: 2rem 5%;
    display: flex; justify-content: space-between; align-items: center;
    font-size: 0.82rem; color: var(--muted);
    flex-wrap: wrap; gap: 1rem;
  }
  .footer-logo { font-family: 'Syne', sans-serif; font-weight: 700; }
  .footer-logo span { color: var(--accent); }
  footer a[href^="mailto:"] { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
  footer a[href^="mailto:"]:hover { color: var(--accent); }
</style>
</head>
<body>

<nav>
  <div class="logo">en<span>prod</span>.fr</div>
  <button type="button" class="nav-toggle" aria-label="Ouvrir le menu" aria-expanded="false" aria-controls="main-nav">
    <span class="nav-toggle-bar" aria-hidden="true"></span>
    <span class="nav-toggle-bar" aria-hidden="true"></span>
    <span class="nav-toggle-bar" aria-hidden="true"></span>
  </button>
  <div class="nav-links" id="main-nav">
    <a href="tarifs.html">Tarifs</a>
    <a href="a-propos.html">À propos</a>
    <a href="#contact" class="nav-cta">Décrire mon problème →</a>
  </div>
</nav>

<!-- HERO -->
<section class="hero">
  <div class="hero-bg"></div>
  <div class="grid-overlay"></div>
  <div class="hero-content">
    <div class="badge">Réponse sous 48h</div>
    <h1>Votre prototype est prêt ?<br>Il est temps de <em>passer en prod.</em></h1>
    <p class="hero-sub">
      Vous avez construit un prototype avec l'IA, ou avez un projet qui tourne en rond depuis des mois — je vous aide à le conclure, le sécuriser et le mettre en production.
    </p>
    <div class="hero-actions">
      <a href="#contact" class="btn-primary">Décrire mon besoin</a>
      <a href="#problemes" class="btn-secondary">Voir ce que je résous</a>
    </div>
    <div class="hero-stats">
      <div class="stat-item">
        <span class="stat-value">Expert</span>
        <span class="stat-label">Technical Leader</span>
      </div>
      <div class="stat-item">
        <span class="stat-value">20+</span>
        <span class="stat-label">Années d'expérience</span>
      </div>
      <div class="stat-item">
        <span class="stat-value">100% satisfaction</span>
        <span class="stat-label">Résultat garanti</span>
      </div>
    </div>
    <div class="dispo">Disponible — </div>
  </div>
</section>

<!-- PROBLÈMES -->
<section id="problemes">
  <p class="section-label">Vous vous reconnaissez ?</p>
  <h2 class="section-title">Deux situations.<br>Une réponse concrète.</h2>
  <p class="section-sub">Que vous ayez buildé avec l'IA ou réalisé un projet avec votre développeur qui n'avance plus — le problème est le même : il faut conclure.</p>

  <div style="display:flex; gap: 0.6rem; margin-bottom: 2rem; flex-wrap: wrap;">
    <span class="pill-icon" style="background:rgba(240,165,0,0.08); border:1px solid rgba(240,165,0,0.2); color:var(--accent); font-size:0.78rem; font-weight:600; padding:0.3rem 0.9rem; border-radius:100px;"><iconify-icon icon="lucide:sparkles" aria-hidden="true"></iconify-icon> Vous avez buildé avec l'IA</span>
    <span class="pill-icon" style="background:rgba(224,92,42,0.08); border:1px solid rgba(224,92,42,0.2); color:var(--accent2); font-size:0.78rem; font-weight:600; padding:0.3rem 0.9rem; border-radius:100px;"><iconify-icon icon="lucide:refresh-cw" aria-hidden="true"></iconify-icon> Votre projet tourne en rond</span>
  </div>

  <div class="problems-grid">

    <div class="problem-card">
      <span class="problem-icon" aria-hidden="true"><iconify-icon icon="lucide:bot"></iconify-icon></span>
      <p class="problem-tag">MVP IA → Production</p>
      <p class="problem-title">Vous avez un MVP généré avec Cursor, Lovable ou Chat GPT — mais il ne tient pas en prod</p>
      <p class="problem-desc">Le code fonctionne en démo, mais il n'est ni sécurisé, ni scalable, ni vraiment maîtrisé. J'audite, je structure et je vous emmène jusqu'au déploiement réel.</p>
    </div>

    <div class="problem-card">
      <span class="problem-icon" aria-hidden="true"><iconify-icon icon="lucide:trending-up"></iconify-icon></span>
      <p class="problem-tag">Scalabilité</p>
      <p class="problem-title">Votre app démo tourne bien — mais elle ne tiendra pas la charge des premiers vrais utilisateurs</p>
      <p class="problem-desc">Architecture fragile, base de données non optimisée, infra sous-dimensionnée. J'identifie les points de rupture avant qu'ils ne cassent en production.</p>
    </div>

    <div class="problem-card">
      <span class="problem-icon" aria-hidden="true"><iconify-icon icon="lucide:puzzle"></iconify-icon></span>
      <p class="problem-tag">Reprise de code IA</p>
      <p class="problem-title">Le code généré par l'IA fonctionne, mais personne ne le comprend vraiment</p>
      <p class="problem-desc">Dépendances inutiles, structure chaotique, zero tests. Je reprends la base, documente ce qui doit l'être et vous donne les clés pour l'évolution.</p>
    </div>

    <div class="problem-card">
      <span class="problem-icon problem-icon--accent2" aria-hidden="true"><iconify-icon icon="lucide:refresh-cw"></iconify-icon></span>
      <p class="problem-tag">Projet qui tourne en rond</p>
      <p class="problem-title">Vous avez un développeur — mais le projet n'avance plus depuis des semaines</p>
      <p class="problem-desc">Délais qui glissent, livrables flous, communication difficile. Un regard extérieur expérimenté suffit souvent à débloquer la situation et remettre le projet sur les rails.</p>
    </div>

    <div class="problem-card">
      <span class="problem-icon" aria-hidden="true"><iconify-icon icon="lucide:flag"></iconify-icon></span>
      <p class="problem-tag">Closing de projet</p>
      <p class="problem-title">Votre projet est à 80% depuis trois mois et personne ne franchit la ligne</p>
      <p class="problem-desc">Les derniers 20% sont souvent les plus durs : intégrations, edge cases, déploiement, recette. Je prends en charge cette dernière ligne droite pour vous aider à livrer quelque chose qui tourne vraiment.</p>
    </div>

    <div class="problem-card" style="background: rgba(240,165,0,0.04); border-left: 2px solid var(--accent);">
      <span class="problem-icon problem-icon--soft" aria-hidden="true"><iconify-icon icon="lucide:message-circle"></iconify-icon></span>
      <p class="problem-tag">Autre situation ?</p>
      <p class="problem-title">Votre situation ne rentre pas exactement dans ces cases</p>
      <p class="problem-desc">Décrivez-la en quelques lignes. Si je peux vous aider, je vous le dis franchement — sinon aussi.</p>
    </div>

  </div>
</section>

<!-- PROCESS -->
<section class="process-section">
  <p class="section-label">Comment ça marche</p>
  <h2 class="section-title">Simple, direct, efficace.</h2>
  <p class="section-sub">Pas de réunions interminables. On va droit au but.</p>

  <div class="process-steps">
    <div class="step">
      <div class="step-num">01</div>
      <div class="step-title">Vous décrivez votre problème</div>
      <div class="step-desc">En quelques lignes, décrivez vos points de blocage pour que je puisse vous aider. Le formulaire est là pour ça.</div>
    </div>
    <div class="step">
      <div class="step-num">02</div>
      <div class="step-title">Je reviens vers vous sous 48h</div>
      <div class="step-desc">Un premier retour sur votre situation et une proposition d'échange en visio pour approfondir</div>
    </div>
    <div class="step">
      <div class="step-num">03</div>
      <div class="step-title">On travaille ensemble</div>
      <div class="step-desc">Accès à votre code, vos outils, vos échanges. J'avance de façon transparente, avec des points réguliers pour que vous restiez dans la boucle.</div>
    </div>
    <div class="step">
      <div class="step-num">04</div>
      <div class="step-title">Vous reprenez la main</div>
      <div class="step-desc">Avec une solution documentée, testée, et explicable à votre équipe.</div>
    </div>
  </div>
</section>

<!-- À PROPOS TEASER -->
<div style="padding: 5rem 5%; display: flex; justify-content: space-between; align-items: center; gap: 3rem; flex-wrap: wrap; border-bottom: 1px solid var(--border);">
  <div style="display: flex; align-items: center; gap: 2rem; flex-wrap: wrap;">
    <div class="about-avatar-icon" style="width:72px; height:72px; border-radius:50%; background:var(--surface); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; flex-shrink:0;" aria-hidden="true"><iconify-icon icon="lucide:user"></iconify-icon></div>
    <div>
      <p style="font-size:0.75rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--accent); font-weight:600; margin-bottom:0.4rem;">Qui suis-je ?</p>
      <p style="font-family:'Syne',sans-serif; font-weight:700; font-size:1.1rem; margin-bottom:0.4rem;">Je suis Christophe Surbier, développeur fullstack freelance depuis plus de 20 ans, passé par des rôles de Technical Leader dans l'industrie musicale.</p>
      <p style="font-size:0.88rem; color:var(--muted); max-width:480px;">200+ applications (mobile & web) livrées, responsable technique de HopHopFood — j'aide les entrepreneurs et startups qui ont besoin d'un résultat, pas d'une promesse.</p>
    </div>
  </div>
  <a href="a-propos.html" style="flex-shrink:0; border:1.5px solid var(--border); color:var(--soft); font-size:0.88rem; font-weight:500; padding:0.75rem 1.5rem; border-radius:6px; text-decoration:none; white-space:nowrap; transition:border-color 0.2s, color 0.2s;" onmouseover="this.style.borderColor='var(--accent)';this.style.color='var(--accent)'" onmouseout="this.style.borderColor='var(--border)';this.style.color='var(--soft)'">En savoir plus →</a>
</div>

<!-- TARIFS TEASER -->
<div class="tarifs-teaser">
  <div class="tarifs-teaser-left">
    <p class="section-label">Tarifs</p>
    <h2>Des forfaits <br><em>sans mauvaise surprise.</em></h2>
    <p>Pas de régie à l'heure ni de devis flou. Chaque intervention est cadrée à l'avance — avec un premier échange gratuit pour estimer ensemble ce dont vous avez besoin.</p>
    <div class="tarifs-pills">
      <span class="tarifs-pill">Diagnostic à partir de <strong>350 €</strong></span>
     
    </div>
  </div>
  <div class="tarifs-teaser-right">
    <a href="tarifs.html" class="btn-outline-accent">Voir tous les tarifs →</a>
  </div>
</div>

<!-- CONTACT -->
<section class="cta-section" id="contact">
  <div class="cta-bg"></div>
  <h2>Un besoin ou un problème ?</h2>
  <p>Décrivez-le en 2 minutes. Je vous réponds sous 48h.</p>
  <form class="cta-form" method="post" action="contact.php" accept-charset="UTF-8">
    <div id="form-feedback" class="form-feedback" role="status" hidden></div>
    <p class="form-honeypot" aria-hidden="true">
      <label for="website">Ne pas remplir ce champ</label>
      <input type="text" name="website" id="website" tabindex="-1" autocomplete="off">
    </p>
    <textarea name="message" id="message" required maxlength="8000" placeholder="Ex : notre app Django plante depuis une mise à jour, on ne sait pas pourquoi. On a environ 500 utilisateurs actifs..."></textarea>
    <input type="email" name="email" id="email" required placeholder="Votre adresse email" autocomplete="email">
    <button type="submit">Envoyer ma demande →</button>
    <p class="cta-note">Réponse garantie sous 48h · Pas d'engagement · Confidentialité assurée</p>
  </form>
</section>

<footer>
  <div class="footer-logo">en<span>prod</span>.fr</div>
  <div>Expert Développeur freelance</div>
  <div><a href="mailto:christophe@enprod.fr">christophe@enprod.fr</a></div>
  <div>© 2026 · Barcelone</div>
</footer>

<script>
(function () {
  var params = new URLSearchParams(window.location.search);
  var key = params.get('contact');
  if (!key) return;
  var fb = document.getElementById('form-feedback');
  if (!fb) return;
  fb.removeAttribute('hidden');
  if (key === 'sent') {
    fb.className = 'form-feedback form-feedback--success';
    fb.textContent = 'Merci ! Votre message a bien été envoyé. Je vous réponds sous 48h.';
  } else if (key === 'invalid') {
    fb.className = 'form-feedback form-feedback--error';
    fb.textContent = 'Veuillez vérifier votre email et votre message, puis réessayer.';
  } else if (key === 'error') {
    fb.className = 'form-feedback form-feedback--error';
    fb.textContent = 'Envoi impossible pour le moment. Écrivez-moi directement à christophe@enprod.fr.';
  }
  history.replaceState(null, '', window.location.pathname + window.location.hash);
})();
(function () {
  var nav = document.querySelector('nav');
  var btn = nav && nav.querySelector('.nav-toggle');
  var menu = document.getElementById('main-nav');
  if (!nav || !btn || !menu) return;
  function setOpen(open) {
    nav.classList.toggle('is-open', open);
    btn.setAttribute('aria-expanded', open);
    btn.setAttribute('aria-label', open ? 'Fermer le menu' : 'Ouvrir le menu');
    document.body.style.overflow = open ? 'hidden' : '';
  }
  btn.addEventListener('click', function () { setOpen(!nav.classList.contains('is-open')); });
  menu.querySelectorAll('a').forEach(function (a) {
    a.addEventListener('click', function () { setOpen(false); });
  });
  document.addEventListener('keydown', function (e) {
    if (e.key === 'Escape') setOpen(false);
  });
})();
</script>

</body>
</html>