Spaces:
Running
Running
| <html lang="fr"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Souvenir+ | Redonnez vie à vos souvenirs</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Montserrat:wght@300;400;500;600&display=swap" rel="stylesheet"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script> | |
| tailwind.config = { | |
| theme: { | |
| extend: { | |
| colors: { | |
| sepia: { | |
| 50: '#f8f5f0', | |
| 100: '#f0e6d9', | |
| 200: '#e1cdb3', | |
| 300: '#d2b48c', | |
| 400: '#c19a66', | |
| 500: '#a67c52', | |
| 600: '#8c6744', | |
| 700: '#6f5236', | |
| 800: '#533d28', | |
| 900: '#362819', | |
| }, | |
| gold: { | |
| 50: '#fffdf5', | |
| 100: '#fff7e0', | |
| 200: '#ffecbf', | |
| 300: '#ffe09e', | |
| 400: '#ffd47d', | |
| 500: '#ffc85c', | |
| 600: '#cc9e3a', | |
| 700: '#997429', | |
| 800: '#664a17', | |
| 900: '#332506', | |
| } | |
| }, | |
| fontFamily: { | |
| serif: ['Playfair Display', 'serif'], | |
| sans: ['Montserrat', 'sans-serif'] | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| <style> | |
| .before-after-container { | |
| position: relative; | |
| width: 100%; | |
| overflow: hidden; | |
| border-radius: 12px; | |
| box-shadow: 0 10px 30px rgba(0,0,0,0.1); | |
| } | |
| .before-after-slider { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| width: 50%; | |
| overflow: hidden; | |
| pointer-events: none; | |
| } | |
| .before-after-slider img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .slider-handle { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| width: 4px; | |
| background: rgba(255, 200, 92, 0.8); | |
| left: 50%; | |
| transform: translateX(-50%); | |
| cursor: ew-resize; | |
| z-index: 10; | |
| } | |
| .slider-handle::after { | |
| content: ''; | |
| position: absolute; | |
| width: 40px; | |
| height: 40px; | |
| background: white; | |
| border: 3px solid rgba(255, 200, 92, 0.8); | |
| border-radius: 50%; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| } | |
| .testimonial-card { | |
| transition: all 0.3s ease; | |
| } | |
| .testimonial-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 15px 30px rgba(0,0,0,0.1); | |
| } | |
| .service-card { | |
| transition: all 0.3s ease; | |
| } | |
| .service-card:hover { | |
| transform: translateY(-5px); | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-white text-sepia-900 font-sans antialiased"> | |
| <!-- Navigation --> | |
| <nav class="bg-white/80 backdrop-blur-md border-b border-sepia-100 fixed w-full z-50"> | |
| <div class="container mx-auto px-6 py-4"> | |
| <div class="flex justify-between items-center"> | |
| <div class="flex items-center"> | |
| <span class="text-2xl font-serif font-bold text-sepia-700">Souvenir+</span> | |
| </div> | |
| <div class="hidden md:flex space-x-8"> | |
| <a href="#accueil" class="hover:text-gold-600 transition">Accueil</a> | |
| <a href="#about" class="hover:text-gold-600 transition">À propos</a> | |
| <a href="#services" class="hover:text-gold-600 transition">Services</a> | |
| <a href="#process" class="hover:text-gold-600 transition">Comment ça marche</a> | |
| <a href="#testimonials" class="hover:text-gold-600 transition">Témoignages</a> | |
| <a href="#pricing" class="hover:text-gold-600 transition">Tarifs</a> | |
| <a href="#contact" class="hover:text-gold-600 transition">Contact</a> | |
| </div> | |
| <div class="md:hidden"> | |
| <button id="menu-toggle" class="text-sepia-700"> | |
| <i data-feather="menu"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </nav> | |
| <!-- Mobile Menu --> | |
| <div id="mobile-menu" class="hidden fixed inset-0 bg-white z-40 pt-20 px-6"> | |
| <div class="flex flex-col space-y-6"> | |
| <a href="#accueil" class="text-xl hover:text-gold-600 transition">Accueil</a> | |
| <a href="#about" class="text-xl hover:text-gold-600 transition">À propos</a> | |
| <a href="#services" class="text-xl hover:text-gold-600 transition">Services</a> | |
| <a href="#process" class="text-xl hover:text-gold-600 transition">Comment ça marche</a> | |
| <a href="#testimonials" class="text-xl hover:text-gold-600 transition">Témoignages</a> | |
| <a href="#pricing" class="text-xl hover:text-gold-600 transition">Tarifs</a> | |
| <a href="#contact" class="text-xl hover:text-gold-600 transition">Contact</a> | |
| </div> | |
| <button id="menu-close" class="absolute top-6 right-6 text-sepia-700"> | |
| <i data-feather="x"></i> | |
| </button> | |
| </div> | |
| <!-- Hero Section --> | |
| <section id="accueil" class="pt-32 pb-20 px-6 bg-gradient-to-b from-sepia-50 to-white"> | |
| <div class="container mx-auto text-center"> | |
| <h1 class="text-4xl md:text-6xl font-serif font-bold text-sepia-800 mb-6">Redonnez vie à vos souvenirs</h1> | |
| <p class="text-xl text-sepia-600 max-w-2xl mx-auto mb-10">Restaurez, recolorisez et sublimez vos anciennes photos grâce à la magie de l'IA.</p> | |
| <button class="bg-gold-500 hover:bg-gold-600 text-white font-medium py-3 px-8 rounded-full shadow-lg transition transform hover:scale-105"> | |
| Envoyer ma photo maintenant | |
| </button> | |
| <div class="mt-16 max-w-4xl mx-auto"> | |
| <div class="before-after-container h-96"> | |
| <img src="http://static.photos/vintage/1024x576/1" alt="Photo avant restauration" class="w-full h-full object-cover"> | |
| <div class="before-after-slider"> | |
| <img src="http://static.photos/vintage/1024x576/2" alt="Photo après restauration" class="w-full h-full object-cover"> | |
| <div class="slider-handle"></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- About Section --> | |
| <section id="about" class="py-20 px-6 bg-white"> | |
| <div class="container mx-auto max-w-4xl text-center"> | |
| <h2 class="text-3xl font-serif font-bold text-sepia-800 mb-6">Vos photos, vos émotions, nos soins</h2> | |
| <p class="text-lg text-sepia-600 mb-10">Chez Souvenir+, chaque image raconte une histoire. Nous utilisons l'intelligence artificielle et la retouche manuelle pour faire renaître vos souvenirs avec soin et émotion.</p> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8 mt-12"> | |
| <div class="bg-sepia-50 p-8 rounded-xl service-card"> | |
| <div class="text-gold-600 mb-4"> | |
| <i data-feather="image" class="w-12 h-12 mx-auto"></i> | |
| </div> | |
| <h3 class="text-xl font-serif font-bold text-sepia-800 mb-3">Restauration photo</h3> | |
| <p class="text-sepia-600">Restaurez vos vieilles photos en quelques secondes. Réparation des fissures, ravivement des couleurs et netteté retrouvée.</p> | |
| </div> | |
| <div class="bg-sepia-50 p-8 rounded-xl service-card"> | |
| <div class="text-gold-600 mb-4"> | |
| <i data-feather="edit" class="w-12 h-12 mx-auto"></i> | |
| </div> | |
| <h3 class="text-xl font-serif font-bold text-sepia-800 mb-3">Retouche et correction</h3> | |
| <p class="text-sepia-600">Suppression de fond, ajustement de lumière et couleurs pour un rendu naturel et professionnel.</p> | |
| </div> | |
| <div class="bg-sepia-50 p-8 rounded-xl service-card"> | |
| <div class="text-gold-600 mb-4"> | |
| <i data-feather="droplet" class="w-12 h-12 mx-auto"></i> | |
| </div> | |
| <h3 class="text-xl font-serif font-bold text-sepia-800 mb-3">Colorisation réaliste</h3> | |
| <p class="text-sepia-600">Transformez vos photos en noir et blanc en images colorées fidèles à la réalité.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Process Section --> | |
| <section id="process" class="py-20 px-6 bg-sepia-50"> | |
| <div class="container mx-auto max-w-4xl text-center"> | |
| <h2 class="text-3xl font-serif font-bold text-sepia-800 mb-12">Comment ça marche</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
| <div class="p-6"> | |
| <div class="bg-gold-100 text-gold-600 w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4"> | |
| <span class="text-2xl font-bold">1</span> | |
| </div> | |
| <h3 class="text-xl font-serif font-medium text-sepia-800 mb-2">Téléversez votre photo</h3> | |
| <p class="text-sepia-600">Envoyez-nous votre image numérique ou photo scannée</p> | |
| </div> | |
| <div class="p-6"> | |
| <div class="bg-gold-100 text-gold-600 w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4"> | |
| <span class="text-2xl font-bold">2</span> | |
| </div> | |
| <h3 class="text-xl font-serif font-medium text-sepia-800 mb-2">Choisissez votre traitement</h3> | |
| <p class="text-sepia-600">Sélectionnez les options de restauration souhaitées</p> | |
| </div> | |
| <div class="p-6"> | |
| <div class="bg-gold-100 text-gold-600 w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4"> | |
| <span class="text-2xl font-bold">3</span> | |
| </div> | |
| <h3 class="text-xl font-serif font-medium text-sepia-800 mb-2">Recevez votre photo</h3> | |
| <p class="text-sepia-600">Obtenez votre photo rénovée sous 48 heures</p> | |
| </div> | |
| </div> | |
| <button class="mt-12 bg-gold-500 hover:bg-gold-600 text-white font-medium py-3 px-8 rounded-full shadow-lg transition transform hover:scale-105"> | |
| Envoyer ma photo | |
| </button> | |
| </div> | |
| </section> | |
| <!-- Testimonials Section --> | |
| <section id="testimonials" class="py-20 px-6 bg-white"> | |
| <div class="container mx-auto max-w-4xl"> | |
| <h2 class="text-3xl font-serif font-bold text-center text-sepia-800 mb-12">Témoignages</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
| <div class="bg-sepia-50 p-6 rounded-xl testimonial-card"> | |
| <div class="flex items-center mb-4"> | |
| <img src="http://static.photos/people/200x200/1" alt="Client" class="w-12 h-12 rounded-full mr-4"> | |
| <div> | |
| <h4 class="font-serif font-bold text-sepia-800">Sophie D.</h4> | |
| <div class="flex text-gold-500"> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <p class="text-sepia-600 italic">"J'ai retrouvé le visage de ma grand-mère comme si c'était hier."</p> | |
| </div> | |
| <div class="bg-sepia-50 p-6 rounded-xl testimonial-card"> | |
| <div class="flex items-center mb-4"> | |
| <img src="http://static.photos/people/200x200/2" alt="Client" class="w-12 h-12 rounded-full mr-4"> | |
| <div> | |
| <h4 class="font-serif font-bold text-sepia-800">Pierre L.</h4> | |
| <div class="flex text-gold-500"> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <p class="text-sepia-600 italic">"Incroyable travail sur mes photos de mariage des années 60."</p> | |
| </div> | |
| <div class="bg-sepia-50 p-6 rounded-xl testimonial-card"> | |
| <div class="flex items-center mb-4"> | |
| <img src="http://static.photos/people/200x200/3" alt="Client" class="w-12 h-12 rounded-full mr-4"> | |
| <div> | |
| <h4 class="font-serif font-bold text-sepia-800">Émilie T.</h4> | |
| <div class="flex text-gold-500"> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| <i data-feather="star" class="w-4 h-4 fill-current"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <p class="text-sepia-600 italic">"La colorisation a redonné vie à nos photos de famille."</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Pricing Section --> | |
| <section id="pricing" class="py-20 px-6 bg-sepia-50"> | |
| <div class="container mx-auto max-w-4xl text-center"> | |
| <h2 class="text-3xl font-serif font-bold text-sepia-800 mb-12">Tarifs simples</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
| <div class="bg-white p-8 rounded-xl shadow-md"> | |
| <h3 class="text-2xl font-serif font-bold text-sepia-800 mb-4">2,99 €</h3> | |
| <p class="text-sepia-600 mb-6">par photo</p> | |
| <button class="w-full bg-gold-500 hover:bg-gold-600 text-white font-medium py-2 px-4 rounded-full transition"> | |
| Choisir | |
| </button> | |
| </div> | |
| <div class="bg-white p-8 rounded-xl shadow-md border-2 border-gold-500 relative"> | |
| <div class="absolute -top-3 -right-3 bg-gold-500 text-white text-xs font-bold px-2 py-1 rounded-full">ÉCONOMIE</div> | |
| <h3 class="text-2xl font-serif font-bold text-sepia-800 mb-4">9,99 €</h3> | |
| <p class="text-sepia-600 mb-6">pour 5 photos</p> | |
| <button class="w-full bg-gold-500 hover:bg-gold-600 text-white font-medium py-2 px-4 rounded-full transition"> | |
| Choisir | |
| </button> | |
| </div> | |
| <div class="bg-white p-8 rounded-xl shadow-md"> | |
| <h3 class="text-2xl font-serif font-bold text-sepia-800 mb-4">14,99 €</h3> | |
| <p class="text-sepia-600 mb-6">pour 10 photos</p> | |
| <button class="w-full bg-gold-500 hover:bg-gold-600 text-white font-medium py-2 px-4 rounded-full transition"> | |
| Choisir | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Contact Section --> | |
| <section id="contact" class="py-20 px-6 bg-white"> | |
| <div class="container mx-auto max-w-4xl"> | |
| <h2 class="text-3xl font-serif font-bold text-center text-sepia-800 mb-12">Contact</h2> | |
| <form class="max-w-2xl mx-auto" action="mailto:rachid.chabi@rocket-school.eu" method="post" enctype="multipart/form-data"> | |
| <div class="mb-6"> | |
| <label for="name" class="block text-sepia-700 mb-2">Nom</label> | |
| <input type="text" id="name" name="name" required class="w-full px-4 py-2 border border-sepia-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-gold-500"> | |
| </div> | |
| <div class="mb-6"> | |
| <label for="email" class="block text-sepia-700 mb-2">Email</label> | |
| <input type="email" id="email" name="email" required class="w-full px-4 py-2 border border-sepia-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-gold-500"> | |
| </div> | |
| <div class="mb-6"> | |
| <label for="photos" class="block text-sepia-700 mb-2">Photos à restaurer (max 10)</label> | |
| <input type="file" id="photos" name="photos" accept="image/*" multiple class="w-full px-4 py-2 border border-sepia-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-gold-500"> | |
| </div> | |
| <div class="mb-6"> | |
| <label for="message" class="block text-sepia-700 mb-2">Message</label> | |
| <textarea id="message" name="message" rows="4" class="w-full px-4 py-2 border border-sepia-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-gold-500"></textarea> | |
| </div> | |
| <button type="submit" class="w-full bg-gold-500 hover:bg-gold-600 text-white font-medium py-3 px-6 rounded-full shadow-lg transition transform hover:scale-[1.02]"> | |
| Envoyer mes photos | |
| </button> | |
| </form> | |
| <p class="text-center text-sepia-600 mt-8 max-w-2xl mx-auto">Vos photos sont traitées avec confidentialité et soin. Chaque photo mérite une seconde vie.</p> | |
| </div> | |
| </section> | |
| <script> | |
| feather.replace(); | |
| // Before/After Slider | |
| document.addEventListener('DOMContentLoaded', function() { | |
| const slider = document.querySelector('.before-after-slider'); | |
| const handle = document.querySelector('.slider-handle'); | |
| let isDragging = false; | |
| handle.addEventListener('mousedown', function(e) { | |
| isDragging = true; | |
| document.body.style.cursor = 'ew-resize'; | |
| }); | |
| document.addEventListener('mousemove', function(e) { | |
| if (!isDragging) return; | |
| const container = slider.parentElement; | |
| const rect = container.getBoundingClientRect(); | |
| let x = e.clientX - rect.left; | |
| // Constrain within container | |
| x = Math.max(0, Math.min(x, rect.width)); | |
| const percent = (x / rect.width) * 100; | |
| slider.style.width = `${percent}%`; | |
| }); | |
| document.addEventListener('mouseup', function() { | |
| isDragging = false; | |
| document.body.style.cursor = ''; | |
| }); | |
| // Mobile menu toggle | |
| const menuToggle = document.getElementById('menu-toggle'); | |
| const menuClose = document.getElementById('menu-close'); | |
| const mobileMenu = document.getElementById('mobile-menu'); | |
| menuToggle.addEventListener('click', function() { | |
| mobileMenu.classList.remove('hidden'); | |
| }); | |
| menuClose.addEventListener('click', function() { | |
| mobileMenu.classList.add('hidden'); | |
| }); | |
| // Close menu when clicking a link | |
| document.querySelectorAll('#mobile-menu a').forEach(link => { | |
| link.addEventListener('click', function() { | |
| mobileMenu.classList.add('hidden'); | |
| }); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |