<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Téléphonie Pro PME — Smartpointers | Numéro local pro, activé en 1h</title>
    <meta name="description" content="Numéro local géolocalisé pour votre entreprise, activé en 1h. Accueil pro, redirection mobile, softphone. À partir de 29,90€ HT/mois. Configuration incluse.">
    <link rel="canonical" href="https://pme.smartpointers.fr/">

    <!-- Open Graph -->
    <meta property="og:title" content="Téléphonie Pro PME — Numéro local en 1h | Smartpointers">
    <meta property="og:description" content="Numéro local pro + accueil automatique + softphone à partir de 29,90€ HT/mois. Activé en 1 heure après règlement.">
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://pme.smartpointers.fr/">
    <meta property="og:locale" content="fr_FR">
    <meta property="og:locale:alternate" content="en_GB">
    <meta property="og:image" content="https://pme.smartpointers.fr/og-image.png">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">

    <!-- Twitter Card -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Téléphonie Pro PME — Smartpointers">
    <meta name="twitter:description" content="Numéro local pro + accueil automatique + softphone à partir de 29,90€ HT/mois. Activé en 1 heure.">
    <meta name="twitter:image" content="https://pme.smartpointers.fr/og-image.png">

    <!-- Hreflang -->
    <link rel="alternate" hreflang="fr" href="https://pme.smartpointers.fr/?lang=fr">
    <link rel="alternate" hreflang="en" href="https://pme.smartpointers.fr/?lang=en">
    <link rel="alternate" hreflang="x-default" href="https://pme.smartpointers.fr/">

    <!-- Fonts -->
    <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=Inter:wght@400;500;600;700;800&family=Playfair+Display:wght@700;800&display=swap" rel="stylesheet">

    <!-- Turnstile -->
    <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

    <!-- Schema.org - LocalBusiness -->
    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "LocalBusiness",
        "name": "Smartpointers - Téléphonie Pro PME",
        "description": "Numéro local pro activé en 1h, accueil automatique, softphone. À partir de 29,90€ HT/mois.",
        "url": "https://pme.smartpointers.fr",
        "telephone": "+33666153782",
        "email": "sebastien@smartpointers.fr",
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 rue Sainte Geneviève",
            "addressLocality": "Lyon",
            "postalCode": "69006",
            "addressCountry": "FR"
        },
        "priceRange": "€€",
        "areaServed": "FR",
        "sameAs": []
    }
    </script>
    <!-- Schema.org - Product offers -->
    <script type="application/ld+json">
    {
        "@context": "https://schema.org",
        "@type": "Product",
        "name": "Téléphonie Pro PME - Pack Ideal",
        "description": "Numéro local géolocalisé, standard pro avec message d'accueil et musique d'attente, renvoi automatique vers mobile, softphone inclus.",
        "brand": { "@type": "Brand", "name": "Smartpointers" },
        "offers": [
            {
                "@type": "Offer",
                "name": "Pack Ideal",
                "price": "29.90",
                "priceCurrency": "EUR",
                "priceSpecification": { "@type": "UnitPriceSpecification", "billingDuration": "P1M", "unitText": "HT" },
                "url": "https://pme.smartpointers.fr/#configurateur",
                "availability": "https://schema.org/InStock"
            },
            {
                "@type": "Offer",
                "name": "Pack Essentiel",
                "price": "49.90",
                "priceCurrency": "EUR",
                "priceSpecification": { "@type": "UnitPriceSpecification", "billingDuration": "P1M", "unitText": "HT" },
                "url": "https://pme.smartpointers.fr/#configurateur",
                "availability": "https://schema.org/InStock"
            }
        ]
    }
    </script>

    <style>
        :root {
            --cream: #f9f8f6;
            --cream-dark: #f0eeea;
            --green: #41e784;
            --green-dark: #2bc96c;
            --teal: #285c55;
            --teal-light: #357a71;
            --yellow: #fdf150;
            --charcoal: #161411;
            --charcoal-light: #2d2a25;
            --gray-warm: #8a8580;
            --gray-light: #c5c0ba;
            --white: #ffffff;
            --purple: #8b5cf6;
            --purple-dark: #7c3aed;
            --radius: 16px;
            --radius-sm: 10px;
            --radius-xl: 24px;
        }

        *, *::before, *::after {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html {
            scroll-behavior: smooth;
            scroll-padding-top: 80px;
        }

        body {
            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
            color: var(--charcoal);
            background: var(--cream);
            line-height: 1.6;
            -webkit-font-smoothing: antialiased;
            overflow-x: hidden;
        }

        .serif { font-family: 'Playfair Display', Georgia, serif; }

        /* ---- ANIMATIONS ---- */
        .js-ready .reveal {
            opacity: 0;
            transform: translateY(30px);
            transition: opacity 0.7s ease, transform 0.7s ease;
        }
        .js-ready .reveal.visible {
            opacity: 1;
            transform: translateY(0);
        }
        .reveal-delay-1 { transition-delay: 0.1s; }
        .reveal-delay-2 { transition-delay: 0.2s; }
        .reveal-delay-3 { transition-delay: 0.3s; }
        .reveal-delay-4 { transition-delay: 0.4s; }

        @keyframes float {
            0%, 100% { transform: translateY(0px) rotate(0deg); }
            50% { transform: translateY(-15px) rotate(2deg); }
        }
        @keyframes pulse-glow {
            0%, 100% { box-shadow: 0 0 0 0 rgba(65, 231, 132, 0.3); }
            50% { box-shadow: 0 0 0 15px rgba(65, 231, 132, 0); }
        }
        @keyframes marquee {
            0% { transform: translateX(0); }
            100% { transform: translateX(-50%); }
        }

        /* ---- NAV ---- */
        .nav {
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 100;
            background: rgba(249, 248, 246, 0.9);
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            transition: box-shadow 0.3s;
        }
        .nav.scrolled {
            box-shadow: 0 1px 20px rgba(22,20,17,0.08);
        }
        .nav-inner {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 2rem;
            display: flex;
            align-items: center;
            justify-content: space-between;
            height: 72px;
        }
        .nav-logo {
            font-weight: 800;
            font-size: 1.2rem;
            color: var(--charcoal);
            text-decoration: none;
            display: flex;
            align-items: center;
            gap: 0.6rem;
        }
        .nav-logo-dot {
            width: 10px;
            height: 10px;
            background: var(--green);
            border-radius: 50%;
            animation: pulse-glow 2s ease infinite;
        }
        .nav-links {
            display: flex;
            align-items: center;
            gap: 2.5rem;
            list-style: none;
        }
        .nav-links a {
            color: var(--gray-warm);
            text-decoration: none;
            font-size: 0.9rem;
            font-weight: 600;
            transition: color 0.2s;
        }
        .nav-links a:hover {
            color: var(--charcoal);
        }
        .nav-cta {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            background: var(--charcoal);
            color: var(--cream);
            padding: 0.6rem 1.4rem;
            border-radius: 50px;
            text-decoration: none;
            font-size: 0.85rem;
            font-weight: 700;
            transition: transform 0.2s, box-shadow 0.2s;
        }
        .nav-cta:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(22,20,17,0.15);
        }
        .nav-login {
            display: inline-flex;
            align-items: center;
            gap: 0.3rem;
            border: 1.5px solid var(--teal);
            color: var(--teal);
            padding: 0.5rem 1.2rem;
            border-radius: 50px;
            text-decoration: none;
            font-size: 0.85rem;
            font-weight: 600;
            transition: background 0.2s, color 0.2s, transform 0.2s;
        }
        .nav-login:hover {
            background: var(--teal);
            color: #fff;
            transform: translateY(-2px);
        }
        .nav-burger {
            display: none;
            background: none;
            border: none;
            cursor: pointer;
            padding: 0.5rem;
        }
        .nav-burger span {
            display: block;
            width: 24px;
            height: 2.5px;
            background: var(--charcoal);
            margin: 5px 0;
            border-radius: 2px;
            transition: 0.3s;
        }

        /* ---- HERO ---- */
        .hero {
            padding: 10rem 2rem 6rem;
            text-align: center;
            position: relative;
            overflow: hidden;
        }
        .hero-deco {
            position: absolute;
            border-radius: 50%;
            pointer-events: none;
        }
        .hero-deco-1 {
            width: 400px;
            height: 400px;
            background: var(--green);
            opacity: 0.12;
            top: -100px;
            right: -100px;
            animation: float 8s ease infinite;
        }
        .hero-deco-2 {
            width: 250px;
            height: 250px;
            background: var(--yellow);
            opacity: 0.2;
            bottom: -50px;
            left: -50px;
            animation: float 6s ease infinite 1s;
        }
        .hero-deco-3 {
            width: 150px;
            height: 150px;
            background: var(--purple);
            opacity: 0.08;
            top: 30%;
            left: 10%;
            animation: float 10s ease infinite 2s;
        }
        .hero-content {
            max-width: 850px;
            margin: 0 auto;
            position: relative;
            z-index: 1;
        }
        .hero-pill {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            background: var(--white);
            border: 1px solid var(--gray-light);
            color: var(--teal);
            padding: 0.45rem 1.2rem;
            border-radius: 50px;
            font-size: 0.8rem;
            font-weight: 700;
            margin-bottom: 2rem;
            letter-spacing: 0.02em;
        }
        .hero-pill-dot {
            width: 8px;
            height: 8px;
            background: var(--green);
            border-radius: 50%;
        }
        .hero h1 {
            font-size: 4rem;
            font-weight: 800;
            color: var(--charcoal);
            line-height: 1.08;
            margin-bottom: 1.5rem;
            letter-spacing: -0.03em;
        }
        .hero h1 .accent {
            font-family: 'Playfair Display', Georgia, serif;
            font-style: italic;
            color: var(--teal);
        }
        .hero h1 .highlight {
            position: relative;
            display: inline-block;
        }
        .hero h1 .highlight::after {
            content: '';
            position: absolute;
            bottom: 5px;
            left: -4px;
            right: -4px;
            height: 14px;
            background: var(--yellow);
            opacity: 0.5;
            z-index: -1;
            border-radius: 2px;
            transform: rotate(-1deg);
        }
        .hero p {
            font-size: 1.25rem;
            color: var(--gray-warm);
            margin-bottom: 2.5rem;
            max-width: 550px;
            margin-left: auto;
            margin-right: auto;
            line-height: 1.7;
        }
        .hero-features {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 0.6rem;
            margin-bottom: 2rem;
        }
        .hero-feat {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            background: var(--white);
            border: 1px solid rgba(22,20,17,0.08);
            padding: 0.5rem 1rem;
            border-radius: 50px;
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--charcoal-light);
        }
        .hero-feat-icon {
            font-size: 1rem;
        }
        .hero-price {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            background: var(--teal);
            color: var(--white);
            padding: 0.5rem 1.2rem;
            border-radius: 50px;
            font-size: 0.9rem;
            font-weight: 800;
        }
        .hero-btns {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 1rem;
            flex-wrap: wrap;
        }
        .btn-primary {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            background: var(--teal);
            color: var(--white);
            padding: 1rem 2.2rem;
            border-radius: 50px;
            text-decoration: none;
            font-size: 1rem;
            font-weight: 700;
            transition: transform 0.2s, box-shadow 0.2s;
            border: none;
            cursor: pointer;
            font-family: inherit;
        }
        .btn-primary:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 25px rgba(40, 92, 85, 0.3);
        }
        .btn-secondary {
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            background: transparent;
            color: var(--charcoal);
            padding: 1rem 2.2rem;
            border-radius: 50px;
            text-decoration: none;
            font-size: 1rem;
            font-weight: 700;
            border: 2px solid var(--charcoal);
            transition: background 0.2s, transform 0.2s;
            cursor: pointer;
            font-family: inherit;
        }
        .btn-secondary:hover {
            background: var(--charcoal);
            color: var(--cream);
            transform: translateY(-2px);
        }

        /* ---- MARQUEE ---- */
        .marquee-wrap {
            overflow: hidden;
            padding: 2rem 0;
            border-top: 1px solid rgba(22,20,17,0.06);
            border-bottom: 1px solid rgba(22,20,17,0.06);
            margin: 4rem 0;
        }
        .marquee {
            display: flex;
            gap: 3rem;
            animation: marquee 25s linear infinite;
            width: max-content;
        }
        .marquee-item {
            font-size: 1rem;
            font-weight: 600;
            color: var(--gray-warm);
            white-space: nowrap;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }
        .marquee-dot {
            width: 6px;
            height: 6px;
            background: var(--green);
            border-radius: 50%;
        }

        /* ---- SECTION COMMON ---- */
        section {
            padding: 6rem 2rem;
        }
        .section-inner {
            max-width: 1100px;
            margin: 0 auto;
        }
        .section-tag {
            display: inline-flex;
            align-items: center;
            gap: 0.4rem;
            font-size: 0.75rem;
            font-weight: 800;
            letter-spacing: 0.1em;
            text-transform: uppercase;
            color: var(--teal);
            background: rgba(40,92,85,0.08);
            padding: 0.4rem 1rem;
            border-radius: 50px;
            margin-bottom: 1.25rem;
        }
        .section-title {
            font-size: 2.8rem;
            font-weight: 800;
            color: var(--charcoal);
            line-height: 1.1;
            margin-bottom: 1rem;
            letter-spacing: -0.02em;
        }
        .section-desc {
            font-size: 1.1rem;
            color: var(--gray-warm);
            max-width: 550px;
            margin-bottom: 3.5rem;
            line-height: 1.7;
        }

        /* ---- FEATURES ---- */
        .features-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 1.25rem;
        }
        .feature-card {
            background: var(--white);
            border: 1px solid rgba(22,20,17,0.06);
            border-radius: var(--radius);
            padding: 2rem 1.5rem;
            transition: transform 0.3s, box-shadow 0.3s;
            position: relative;
            overflow: hidden;
        }
        .feature-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 3px;
            background: var(--green);
            transform: scaleX(0);
            transition: transform 0.3s;
            transform-origin: left;
        }
        .feature-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 15px 40px rgba(22,20,17,0.08);
        }
        .feature-card:hover::before {
            transform: scaleX(1);
        }
        .feature-emoji {
            font-size: 2rem;
            margin-bottom: 1rem;
            display: block;
        }
        .feature-card h4 {
            font-size: 1.05rem;
            font-weight: 800;
            color: var(--charcoal);
            margin-bottom: 0.5rem;
        }
        .feature-card p {
            font-size: 0.88rem;
            color: var(--gray-warm);
            line-height: 1.6;
        }

        /* ---- CONFIGURATEUR ---- */
        #configurateur {
            background: var(--charcoal);
            color: var(--cream);
            border-radius: var(--radius-xl);
            margin: 0 2rem;
            position: relative;
            overflow: hidden;
        }
        #configurateur .section-tag {
            background: rgba(65,231,132,0.15);
            color: var(--green);
        }
        #configurateur .section-title {
            color: var(--cream);
        }
        #configurateur .section-desc {
            color: var(--gray-light);
        }
        .config-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 3rem;
            align-items: start;
        }
        .config-steps {
            display: flex;
            flex-direction: column;
            gap: 2.5rem;
        }
        .config-step {}
        .step-label {
            display: flex;
            align-items: center;
            gap: 0.6rem;
            margin-bottom: 1rem;
            font-size: 0.85rem;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.06em;
            color: var(--gray-light);
        }
        .step-num {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: var(--green);
            color: var(--charcoal);
            font-size: 0.82rem;
            font-weight: 800;
        }
        .config-options-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1.5rem;
        }
        .config-left {
            display: flex;
            flex-direction: column;
            gap: 1.5rem;
        }
        .config-item {
            background: rgba(255,255,255,0.06);
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: var(--radius);
            padding: 1.5rem;
            transition: border-color 0.2s;
        }
        .config-item.active {
            border-color: var(--green);
        }
        .config-item-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 0.5rem;
        }
        .config-item-title {
            font-weight: 700;
            font-size: 1rem;
        }
        .config-item-price {
            font-weight: 800;
            color: var(--green);
            font-size: 1.1rem;
        }
        .config-item-desc {
            font-size: 0.85rem;
            color: var(--gray-light);
            line-height: 1.5;
        }
        .config-item-included {
            display: inline-block;
            background: var(--green);
            color: var(--charcoal);
            font-size: 0.7rem;
            font-weight: 800;
            padding: 0.2rem 0.6rem;
            border-radius: 50px;
            letter-spacing: 0.03em;
        }

        .zone-search-wrap {
            position: relative;
            margin-top: 0.75rem;
        }
        .config-input {
            width: 100%;
            padding: 0.75rem 1rem;
            background: rgba(255,255,255,0.08);
            border: 1px solid rgba(255,255,255,0.15);
            border-radius: 8px;
            color: #fff;
            font-size: 0.9rem;
            box-sizing: border-box;
        }
        .config-input:focus {
            outline: none;
            border-color: var(--green);
        }
        .config-input::placeholder {
            color: rgba(255,255,255,0.35);
        }
        .zone-results {
            display: none;
            position: absolute;
            top: 100%;
            left: 0;
            right: 0;
            z-index: 50;
            background: #1a1a2e;
            border: 1px solid rgba(255,255,255,0.15);
            border-top: none;
            border-radius: 0 0 8px 8px;
            max-height: 220px;
            overflow-y: auto;
        }
        .zone-results.open {
            display: block;
        }
        .zone-result-item {
            padding: 0.6rem 1rem;
            cursor: pointer;
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-size: 0.85rem;
            transition: background 0.15s;
        }
        .zone-result-item:hover {
            background: rgba(255,255,255,0.08);
        }
        .zone-result-city {
            color: #fff;
            font-weight: 600;
        }
        .zone-result-num {
            color: var(--gray-light);
            font-size: 0.78rem;
            font-family: monospace;
        }
        .zone-result-empty {
            padding: 0.6rem 1rem;
            color: var(--gray-light);
            font-size: 0.85rem;
        }
        .zone-selected {
            margin-top: 0.5rem;
            padding: 0.5rem 0.75rem;
            background: rgba(40,92,85,0.15);
            border: 1px solid var(--green);
            border-radius: 8px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            font-size: 0.85rem;
        }
        .zone-selected-city {
            color: #fff;
            font-weight: 600;
        }
        .zone-selected-num {
            color: var(--green);
            font-family: monospace;
            font-size: 0.82rem;
        }
        .zone-selected-clear {
            color: var(--gray-light);
            cursor: pointer;
            margin-left: 0.75rem;
            font-size: 0.9rem;
        }
        .zone-selected-clear:hover {
            color: #e74c3c;
        }
        .config-error {
            color: #e74c3c;
            font-size: 0.8rem;
            margin-top: 0.5rem;
        }

        .config-qty {
            display: flex;
            align-items: center;
            gap: 1rem;
            margin-top: 1rem;
        }
        .config-qty label {
            font-size: 0.85rem;
            color: var(--gray-light);
            font-weight: 600;
        }
        .qty-controls {
            display: flex;
            align-items: center;
            gap: 0;
            background: rgba(255,255,255,0.08);
            border-radius: 50px;
            overflow: hidden;
        }
        .qty-btn {
            width: 40px;
            height: 40px;
            border: none;
            background: transparent;
            color: var(--cream);
            font-size: 1.2rem;
            font-weight: 700;
            cursor: pointer;
            transition: background 0.15s;
            font-family: inherit;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .qty-btn:hover {
            background: rgba(255,255,255,0.12);
        }
        .qty-value {
            width: 50px;
            text-align: center;
            font-weight: 800;
            font-size: 1.1rem;
            color: var(--cream);
        }

        .config-ai-toggle {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            margin-top: 1rem;
        }
        .toggle {
            position: relative;
            width: 48px;
            height: 26px;
            background: rgba(255,255,255,0.15);
            border-radius: 50px;
            cursor: pointer;
            transition: background 0.3s;
        }
        .toggle.on {
            background: var(--purple);
        }
        .toggle::after {
            content: '';
            position: absolute;
            top: 3px;
            left: 3px;
            width: 20px;
            height: 20px;
            background: var(--white);
            border-radius: 50%;
            transition: transform 0.3s;
        }
        .toggle.on::after {
            transform: translateX(22px);
        }
        .toggle-label {
            font-size: 0.85rem;
            font-weight: 600;
            color: var(--gray-light);
        }

        /* Summary card */
        .config-summary {
            background: rgba(255,255,255,0.04);
            border: 1px solid rgba(255,255,255,0.1);
            border-radius: var(--radius);
            padding: 2rem;
            position: sticky;
            top: 100px;
        }
        .config-summary h3 {
            font-size: 1.3rem;
            font-weight: 800;
            margin-bottom: 1.5rem;
        }
        .summary-line {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0.75rem 0;
            border-bottom: 1px solid rgba(255,255,255,0.06);
            font-size: 0.9rem;
        }
        .summary-line:last-of-type {
            border-bottom: none;
        }
        .summary-line .label {
            color: var(--gray-light);
        }
        .summary-line .value {
            font-weight: 700;
        }
        .summary-total {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            margin-top: 1.5rem;
            padding-top: 1.5rem;
            border-top: 2px solid rgba(255,255,255,0.15);
        }
        .summary-total .label {
            font-size: 1rem;
            font-weight: 700;
        }
        .summary-total .amount {
            font-size: 2.5rem;
            font-weight: 800;
            color: var(--green);
            line-height: 1;
        }
        .summary-total .period {
            font-size: 0.85rem;
            color: var(--gray-light);
            font-weight: 500;
        }
        .summary-cta {
            display: block;
            width: 100%;
            margin-top: 1.5rem;
            padding: 1rem;
            background: var(--green);
            color: var(--charcoal);
            border: none;
            border-radius: 50px;
            font-size: 1rem;
            font-weight: 800;
            cursor: pointer;
            font-family: inherit;
            transition: transform 0.2s, box-shadow 0.2s;
            text-align: center;
            text-decoration: none;
        }
        .summary-cta:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 25px rgba(65,231,132,0.3);
        }
        .summary-note {
            text-align: center;
            font-size: 0.78rem;
            color: var(--gray-warm);
            margin-top: 0.75rem;
        }

        /* Deco blobs in configurator */
        .config-deco {
            position: absolute;
            border-radius: 50%;
            pointer-events: none;
        }
        .config-deco-1 {
            width: 300px;
            height: 300px;
            background: var(--green);
            opacity: 0.04;
            top: -80px;
            right: -80px;
        }
        .config-deco-2 {
            width: 200px;
            height: 200px;
            background: var(--purple);
            opacity: 0.05;
            bottom: -60px;
            left: -60px;
        }

        /* ---- CONTACT ---- */
        .contact-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 3rem;
            align-items: start;
        }
        .contact-info h3 {
            font-size: 1.5rem;
            font-weight: 800;
            color: var(--charcoal);
            margin-bottom: 1rem;
        }
        .contact-info p {
            color: var(--gray-warm);
            margin-bottom: 2rem;
            line-height: 1.7;
        }
        .contact-detail {
            display: flex;
            align-items: center;
            gap: 0.75rem;
            margin-bottom: 1rem;
            color: var(--charcoal-light);
            font-size: 0.95rem;
            font-weight: 500;
        }
        .contact-detail-icon {
            width: 40px;
            height: 40px;
            background: rgba(40,92,85,0.08);
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }
        .contact-form {
            background: var(--white);
            border-radius: var(--radius);
            padding: 2.5rem;
            box-shadow: 0 2px 20px rgba(22,20,17,0.04);
            border: 1px solid rgba(22,20,17,0.06);
        }
        .form-group {
            margin-bottom: 1.25rem;
        }
        .form-group label {
            display: block;
            font-size: 0.82rem;
            font-weight: 700;
            color: var(--charcoal);
            margin-bottom: 0.4rem;
        }
        .form-group input,
        .form-group textarea {
            width: 100%;
            padding: 0.75rem 1rem;
            border: 1.5px solid rgba(22,20,17,0.1);
            border-radius: var(--radius-sm);
            font-family: inherit;
            font-size: 0.95rem;
            color: var(--charcoal);
            background: var(--cream);
            transition: border-color 0.2s, box-shadow 0.2s;
        }
        .form-group input:focus,
        .form-group textarea:focus {
            outline: none;
            border-color: var(--teal);
            box-shadow: 0 0 0 3px rgba(40,92,85,0.08);
        }
        .form-group textarea {
            resize: vertical;
            min-height: 100px;
        }
        .form-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1rem;
        }
        .form-submit {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
            width: 100%;
            padding: 0.9rem;
            background: var(--charcoal);
            color: var(--cream);
            border: none;
            border-radius: 50px;
            font-family: inherit;
            font-size: 1rem;
            font-weight: 700;
            cursor: pointer;
            transition: transform 0.2s, box-shadow 0.2s;
        }
        .form-submit:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 20px rgba(22,20,17,0.15);
        }
        .form-submit:disabled {
            opacity: 0.5;
            cursor: not-allowed;
            transform: none;
        }
        .form-msg {
            margin-top: 1rem;
            padding: 0.75rem 1rem;
            border-radius: var(--radius-sm);
            font-size: 0.9rem;
            display: none;
        }
        .form-msg.success {
            display: block;
            background: rgba(65,231,132,0.1);
            color: var(--teal);
            border: 1px solid rgba(65,231,132,0.2);
        }
        .success-overlay {
            position: fixed; inset: 0; z-index: 9999;
            background: rgba(0,0,0,0.7); display: flex; align-items: center; justify-content: center;
        }
        .success-modal {
            background: #fff; border: 2px solid var(--teal);
            border-radius: 16px; padding: 2.5rem; max-width: 480px; text-align: center;
            box-shadow: 0 20px 60px rgba(0,0,0,0.3);
        }
        .success-modal h2 { color: var(--teal); font-size: 1.5rem; margin-bottom: 1rem; }
        .success-modal p { color: #555; line-height: 1.6; margin-bottom: 1.5rem; }
        .success-modal button {
            background: var(--teal); color: #fff; border: none;
            padding: 0.75rem 2rem; border-radius: 8px; font-weight: 600; cursor: pointer;
        }
        .form-msg.error {
            display: block;
            background: rgba(239,68,68,0.1);
            color: #dc2626;
            border: 1px solid rgba(239,68,68,0.2);
        }

        /* ---- FOOTER ---- */
        .footer {
            background: var(--charcoal);
            color: var(--gray-warm);
            padding: 3rem 2rem;
            margin-top: 4rem;
        }
        .footer-inner {
            max-width: 1100px;
            margin: 0 auto;
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .footer-logo {
            font-weight: 800;
            font-size: 1.1rem;
            color: var(--cream);
            margin-bottom: 0.3rem;
        }
        .footer-addr {
            font-size: 0.85rem;
            line-height: 1.6;
        }
        .footer-right {
            text-align: right;
            font-size: 0.85rem;
        }
        .footer-right a {
            color: var(--gray-warm);
            text-decoration: none;
            transition: color 0.2s;
        }
        .footer-right a:hover {
            color: var(--cream);
        }

        /* ---- COMPARATIF ---- */
        .compare-table {
            width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            border-radius: var(--radius);
            overflow: hidden;
            box-shadow: 0 2px 20px rgba(22,20,17,0.06);
        }
        .compare-table thead th {
            padding: 1.25rem 1.5rem;
            text-align: left;
            font-size: 0.95rem;
            font-weight: 800;
        }
        .compare-table thead th:first-child {
            background: var(--white);
            color: var(--gray-warm);
            width: 35%;
        }
        .compare-table thead th.old {
            background: var(--charcoal-light);
            color: var(--gray-light);
            width: 32.5%;
        }
        .compare-table thead th.new {
            background: var(--teal);
            color: var(--white);
            width: 32.5%;
        }
        .compare-table tbody td {
            padding: 1rem 1.5rem;
            font-size: 0.9rem;
            border-bottom: 1px solid rgba(22,20,17,0.04);
            vertical-align: top;
            line-height: 1.5;
        }
        .compare-table tbody tr:last-child td {
            border-bottom: none;
        }
        .compare-table tbody td:first-child {
            font-weight: 700;
            color: var(--charcoal);
            background: var(--white);
        }
        .compare-table tbody td.old {
            background: rgba(22,20,17,0.02);
            color: var(--gray-warm);
        }
        .compare-table tbody td.new {
            background: rgba(40,92,85,0.03);
            color: var(--charcoal);
        }
        .compare-table .total-row td {
            font-weight: 800;
            font-size: 1.05rem;
            padding-top: 1.25rem;
            padding-bottom: 1.25rem;
            border-top: 2px solid rgba(22,20,17,0.08);
        }
        .compare-table .total-row td.new {
            color: var(--teal);
        }
        .compare-tag-bad {
            display: inline-block;
            background: rgba(239,68,68,0.08);
            color: #dc2626;
            font-size: 0.7rem;
            font-weight: 700;
            padding: 0.15rem 0.5rem;
            border-radius: 50px;
            margin-left: 0.4rem;
            vertical-align: middle;
        }
        .compare-tag-good {
            display: inline-block;
            background: rgba(65,231,132,0.12);
            color: var(--teal);
            font-size: 0.7rem;
            font-weight: 700;
            padding: 0.15rem 0.5rem;
            border-radius: 50px;
            margin-left: 0.4rem;
            vertical-align: middle;
        }
        .compare-bottom {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 2rem;
            margin-top: 2.5rem;
            flex-wrap: wrap;
        }
        .compare-stat {
            text-align: center;
        }
        .compare-stat .num {
            font-size: 2rem;
            font-weight: 800;
            color: var(--teal);
            line-height: 1;
        }
        .compare-stat .lbl {
            font-size: 0.82rem;
            color: var(--gray-warm);
            font-weight: 600;
            margin-top: 0.25rem;
        }

        /* ---- MODAL ---- */
        .modal-overlay {
            position: fixed;
            top: 0; left: 0; right: 0; bottom: 0;
            background: rgba(22,20,17,0.5);
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
            z-index: 200;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 2rem;
        }
        .modal-content {
            background: var(--cream);
            border-radius: var(--radius);
            padding: 2.5rem;
            max-width: 640px;
            width: 100%;
            max-height: 80vh;
            overflow-y: auto;
            position: relative;
            box-shadow: 0 20px 60px rgba(22,20,17,0.2);
        }
        .modal-content p {
            font-size: 0.9rem;
            color: var(--gray-warm);
            line-height: 1.7;
        }
        .modal-close {
            position: absolute;
            top: 1rem;
            right: 1.25rem;
            background: none;
            border: none;
            font-size: 1.8rem;
            color: var(--gray-warm);
            cursor: pointer;
            line-height: 1;
            transition: color 0.2s;
        }
        .modal-close:hover { color: var(--charcoal); }

        /* ---- TIER SELECTOR ---- */
        .tier-selector {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 1rem;
            margin-bottom: 1.5rem;
        }
        .tier-card {
            background: rgba(255,255,255,0.04);
            border: 2px solid rgba(255,255,255,0.1);
            border-radius: var(--radius);
            padding: 1.5rem;
            cursor: pointer;
            transition: border-color 0.2s, transform 0.2s;
            position: relative;
        }
        .tier-card:hover {
            border-color: rgba(255,255,255,0.25);
            transform: translateY(-2px);
        }
        .tier-card.active {
            border-color: var(--green);
            background: rgba(65,231,132,0.06);
        }
        .tier-badge {
            position: absolute;
            top: -10px;
            right: 1rem;
            background: var(--green);
            color: var(--charcoal);
            font-size: 0.65rem;
            font-weight: 800;
            padding: 0.2rem 0.6rem;
            border-radius: 50px;
            letter-spacing: 0.05em;
        }
        .tier-icon {
            font-size: 1.8rem;
            margin-bottom: 0.5rem;
        }
        .tier-name {
            font-size: 1.1rem;
            font-weight: 800;
            color: var(--cream);
            margin-bottom: 0.4rem;
        }
        .tier-price {
            font-size: 1.5rem;
            font-weight: 800;
            color: var(--green);
            margin-bottom: 0.75rem;
            line-height: 1.2;
        }
        .tier-price span {
            font-size: 0.75rem;
            font-weight: 500;
            color: var(--gray-light);
        }
        .tier-features {
            list-style: none;
            padding: 0;
        }
        .tier-features li {
            font-size: 0.8rem;
            color: var(--gray-light);
            padding: 0.2rem 0 0.2rem 1.2rem;
            position: relative;
            line-height: 1.4;
        }
        .tier-features li::before {
            content: '✓';
            position: absolute;
            left: 0;
            color: var(--green);
            font-weight: 700;
            font-size: 0.75rem;
        }
        .tier-highlight {
            display: inline-block;
            background: rgba(65,231,132,0.15);
            color: var(--green);
            font-size: 0.7rem;
            font-weight: 700;
            padding: 0.15rem 0.5rem;
            border-radius: 50px;
            margin-top: 0.5rem;
        }

        /* ---- LANG SWITCHER ---- */
        .lang-switcher {
            display: flex;
            gap: 0.25rem;
            background: rgba(22,20,17,0.06);
            border-radius: 8px;
            padding: 0.2rem;
        }
        .lang-btn {
            border: none;
            background: transparent;
            color: var(--gray-warm);
            font-size: 0.75rem;
            font-weight: 500;
            padding: 0.3rem 0.5rem;
            border-radius: 6px;
            cursor: pointer;
            transition: all 0.2s;
            font-family: 'Inter', sans-serif;
        }
        .lang-btn.active {
            background: var(--white);
            color: var(--teal);
            font-weight: 600;
            box-shadow: 0 1px 3px rgba(0,0,0,0.1);
        }

        /* ---- RESPONSIVE ---- */
        @media (max-width: 1024px) {
            .features-grid {
                grid-template-columns: repeat(2, 1fr);
            }
            .config-grid {
                grid-template-columns: 1fr;
            }
            .config-options-grid {
                grid-template-columns: 1fr;
            }
            .config-summary {
                position: static;
            }
        }
        @media (max-width: 768px) {
            .nav-links { display: none; }
            .nav-burger { display: block; }
            .nav-links.open {
                display: flex;
                flex-direction: column;
                position: absolute;
                top: 72px;
                left: 0;
                right: 0;
                background: var(--cream);
                padding: 1.5rem 2rem;
                gap: 1rem;
                border-bottom: 1px solid rgba(22,20,17,0.06);
            }
            .nav-links.open .nav-cta,
            .nav-links.open .nav-login { width: fit-content; }

            .hero { padding: 8rem 1.5rem 4rem; }
            .hero h1 { font-size: 2.5rem; }
            .hero p { font-size: 1.05rem; }

            section { padding: 4rem 1.5rem; }
            .section-title { font-size: 2rem; }
            #configurateur { margin: 0 1rem; border-radius: var(--radius); }

            .features-grid { grid-template-columns: 1fr; }
            .tier-selector { grid-template-columns: 1fr; }
            .contact-grid { grid-template-columns: 1fr; }
            .form-row { grid-template-columns: 1fr; }

            .compare-table thead th { padding: 0.8rem 0.7rem; font-size: 0.75rem; }
            .compare-table tbody td { padding: 0.7rem 0.7rem; font-size: 0.78rem; }
            .compare-table thead th:first-child { width: 30%; }
            .compare-table thead th.old, .compare-table thead th.new { width: 35%; }
            .compare-table .total-row td { font-size: 0.85rem; }
            .compare-tag-bad, .compare-tag-good { font-size: 0.6rem; padding: 0.1rem 0.35rem; }
            .compare-bottom { flex-direction: column; gap: 1rem; }

            .footer-inner {
                flex-direction: column;
                text-align: center;
                gap: 1.5rem;
            }
            .footer-right { text-align: center; }
        }
    </style>
</head>
<body>

<!-- NAV -->
<nav class="nav" id="nav">
    <div class="nav-inner">
        <a href="#" class="nav-logo">
            <svg width="180" height="38" viewBox="0 0 180 38" fill="none" xmlns="http://www.w3.org/2000/svg">
                <rect x="0" y="4" width="30" height="30" rx="7" fill="#FDC901"/>
                <rect x="3" y="7" width="24" height="24" rx="5" fill="#FDC901" stroke="white" stroke-width="1.5" stroke-opacity="0.4"/>
                <path d="M11 14h8v2h-8v-2zm0 4h8v2h-8v-2zm0 4h5v2h-5v-2z" fill="white" fill-opacity="0.9"/>
                <text x="38" y="26" font-family="Inter, sans-serif" font-weight="800" font-size="16" fill="#161411" letter-spacing="-0.5">SMART</text>
                <text x="98" y="26" font-family="Inter, sans-serif" font-weight="800" font-size="16" fill="#285c55" letter-spacing="-0.5">POINTERS</text>
            </svg>
        </a>
        <ul class="nav-links" id="navLinks">
            <li><a href="#fonctionnalites" data-i18n="nav_features">Fonctionnalités</a></li>
            <li><a href="#comparatif" data-i18n="nav_compare">Comparatif</a></li>
            <li><a href="#configurateur" data-i18n="nav_pricing">Tarifs</a></li>
            <li><a href="#contact" data-i18n="nav_contact">Contact</a></li>
            <li><a href="/app/login" class="nav-login" data-i18n="nav_login">Espace client</a></li>
            <li><a href="#configurateur" class="nav-cta" data-i18n="nav_cta">Configurer mon offre</a></li>
        </ul>
        <div class="lang-switcher">
            <button class="lang-btn active" onclick="setLang('fr')">FR</button>
            <button class="lang-btn" onclick="setLang('en')">EN</button>
        </div>
        <button class="nav-burger" id="navBurger" aria-label="Menu">
            <span></span><span></span><span></span>
        </button>
    </div>
</nav>

<!-- HERO -->
<section class="hero">
    <div class="hero-deco hero-deco-1"></div>
    <div class="hero-deco hero-deco-2"></div>
    <div class="hero-deco hero-deco-3"></div>
    <div class="hero-content">
        <div class="hero-pill reveal">
            <span class="hero-pill-dot"></span>
            <span data-i18n="hero_pill">Téléphonie cloud pour PME</span>
        </div>
        <h1 class="reveal reveal-delay-1">
            <span data-i18n="hero_title_1">Votre téléphonie pro</span><br>
            <span class="accent" data-i18n="hero_title_2">s'adapte à vous,</span><br>
            <span class="highlight" data-i18n="hero_title_3">pas l'inverse.</span>
        </h1>
        <div class="hero-features reveal reveal-delay-2">
            <span class="hero-feat"><span class="hero-feat-icon">📍</span> <span data-i18n="hero_f1">Numéro local</span></span>
            <span class="hero-feat"><span class="hero-feat-icon">📞</span> <span data-i18n="hero_f2">Accueil pro & musique</span></span>
            <span class="hero-feat"><span class="hero-feat-icon">📱</span> <span data-i18n="hero_f3">Renvoi vers mobile</span></span>
            <span class="hero-feat"><span class="hero-feat-icon">⚡</span> <span data-i18n="hero_f4">Ligne provisionnée en 1 heure</span></span>
            <span class="hero-feat"><span class="hero-feat-icon">🔓</span> <span data-i18n="hero_f5">Zéro engagement</span></span>
            <span class="hero-price" data-i18n="hero_price">À partir de 29,90€ HT/mois</span>
        </div>
        <div class="hero-btns reveal reveal-delay-3">
            <a href="#configurateur" class="btn-primary">
                <span data-i18n="hero_cta_config">Configurer mon offre</span>
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14m-7-7l7 7-7 7"/></svg>
            </a>
            <a href="#contact" class="btn-secondary" data-i18n="hero_cta_contact">Nous contacter</a>
        </div>
    </div>

    <!-- Features intégrées au hero -->
    <div id="fonctionnalites" style="max-width:1100px; margin:4rem auto 0; padding:0 2rem; position:relative; z-index:1;">
        <h2 class="section-title reveal" style="text-align:center; margin-bottom:2.5rem;"><span data-i18n="features_title_1">Tout ce qu'il faut,</span><br><span class="serif" style="color:var(--teal)" data-i18n="features_title_2">rien de superflu</span></h2>
        <div class="features-grid">
            <div class="feature-card reveal">
                <span class="feature-emoji">📍</span>
                <h4 data-i18n="feat_local_title">Numéro Local Géolocalisé</h4>
                <p data-i18n="feat_local_desc">Un numéro en 01, 02, 03, 04 ou 05 selon votre ville. Vos clients appellent un numéro local, vous répondez de n'importe où.</p>
            </div>
            <div class="feature-card reveal reveal-delay-1">
                <span class="feature-emoji">📞</span>
                <h4 data-i18n="feat_svi_title">Accueil Pro Automatique</h4>
                <p data-i18n="feat_svi_desc">Message d'accueil personnalisé, musique d'attente, horaires d'ouverture automatiques, aiguillage des appels. L'image d'une grande entreprise, sans la complexité.</p>
            </div>
            <div class="feature-card reveal reveal-delay-2">
                <span class="feature-emoji">📱</span>
                <h4 data-i18n="feat_soft_title">Renvoi vers Mobile</h4>
                <p data-i18n="feat_soft_desc">Les appels arrivent sur votre mobile ou via l'app softphone (mobile + desktop). Pas besoin de forfait supplémentaire.</p>
            </div>
            <div class="feature-card reveal reveal-delay-3">
                <span class="feature-emoji">☁️</span>
                <h4 data-i18n="feat_cloud_title">100% Cloud, Zéro Matériel</h4>
                <p data-i18n="feat_cloud_desc">Toute votre téléphonie est dans le cloud. Rien à installer dans vos bureaux — juste votre mobile ou un téléphone IP si vous préférez un poste fixe.</p>
            </div>
        </div>
    </div>
</section>

<!-- COMPARATIF -->
<section id="comparatif" style="background: var(--cream);">
    <div class="section-inner">
        <div class="section-tag reveal" data-i18n="compare_tag">Comparatif</div>
        <h2 class="section-title reveal reveal-delay-1"><span data-i18n="compare_title_1">Pourquoi passer</span> <span class="serif" style="color:var(--green)" data-i18n="compare_title_2">au cloud ?</span></h2>
        <p class="section-desc reveal reveal-delay-2" data-i18n="compare_desc">Exemple : un artisan avec 3 collaborateurs — Pack Essentiel + 2 lignes supplémentaires.</p>

        <div class="reveal reveal-delay-3" style="overflow-x:auto;">
            <table class="compare-table">
                <thead>
                    <tr>
                        <th></th>
                        <th class="old" data-i18n="compare_th_old">Téléphonie traditionnelle</th>
                        <th class="new" data-i18n="compare_th_new">Pack Essentiel</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td data-i18n="compare_r1_label">Matériel (central + postes)</td>
                        <td class="old" data-i18n-html="compare_r1_old">80 €/mois <span class="compare-tag-bad">Location 48 mois</span></td>
                        <td class="new" data-i18n-html="compare_r1_new">0 € <span class="compare-tag-good">Softphone inclus</span><br><span style="font-size:0.78rem;color:var(--gray-warm);">Téléphone IP disponible gratuitement en option</span></td>
                    </tr>
                    <tr>
                        <td data-i18n="compare_r2_label">Maintenance</td>
                        <td class="old" data-i18n="compare_r2_old">15 €/mois</td>
                        <td class="new" data-i18n-html="compare_r2_new">0 € <span class="compare-tag-good">Incluse</span></td>
                    </tr>
                    <tr>
                        <td data-i18n="compare_r3_label">Abonnement lignes + appels</td>
                        <td class="old" data-i18n="compare_r3_old">35 €/mois</td>
                        <td class="new" data-i18n-html="compare_r3_new">Inclus <span class="compare-tag-good">Illimités France</span></td>
                    </tr>
                    <tr>
                        <td data-i18n="compare_r4_label">Numéro + accueil pro</td>
                        <td class="old" data-i18n="compare_r4_old">8 €/mois</td>
                        <td class="new" data-i18n-html="compare_r4_new">0 € <span class="compare-tag-good">Inclus</span></td>
                    </tr>
                    <tr>
                        <td data-i18n="compare_r5_label">Engagement</td>
                        <td class="old" data-i18n-html="compare_r5_old"><span class="compare-tag-bad">48 mois minimum</span></td>
                        <td class="new" data-i18n-html="compare_r5_new"><span class="compare-tag-good">Sans engagement</span></td>
                    </tr>
                    <tr class="total-row">
                        <td data-i18n="compare_total_label">Total mensuel HT (3 postes)</td>
                        <td class="old" data-i18n="compare_total_old">~138 €/mois</td>
                        <td class="new" data-i18n-html="compare_total_new">99,90 €/mois<br><span style="font-size:0.75rem;font-weight:500;color:var(--gray-warm);">49,90€ + 2 lignes × 25€</span></td>
                    </tr>
                    <tr class="total-row">
                        <td data-i18n="compare_cost5y_label">Coût sur 4 ans d'engagement</td>
                        <td class="old" data-i18n-html="compare_cost5y_old">6 624 € <span class="compare-tag-bad">Impossible de résilier</span></td>
                        <td class="new" data-i18n-html="compare_cost5y_new">4 796 € <span class="compare-tag-good">Résiliable à tout moment</span></td>
                    </tr>
                </tbody>
            </table>
        </div>

        <div class="compare-bottom reveal">
            <div class="compare-stat">
                <div class="num" style="color:var(--green)" data-i18n="compare_stat1_num">-28%</div>
                <div class="lbl" data-i18n="compare_stat1_label">sur votre facture</div>
            </div>
            <div class="compare-stat">
                <div class="num" style="color:var(--green)">0 €</div>
                <div class="lbl" data-i18n="compare_stat2_label">de matériel à installer</div>
            </div>
            <div class="compare-stat">
                <div class="num" style="color:var(--teal)">0</div>
                <div class="lbl" data-i18n="compare_stat3_label">mois d'engagement</div>
            </div>
        </div>
    </div>
</section>

<!-- CONFIGURATEUR -->
<section id="configurateur">
    <div class="config-deco config-deco-1"></div>
    <div class="config-deco config-deco-2"></div>
    <div class="section-inner" style="position:relative; z-index:1;">
        <div class="section-tag reveal" data-i18n="config_tag">Tarifs</div>
        <h2 class="section-title reveal reveal-delay-1"><span data-i18n="config_title_1">Composez</span> <span class="serif" style="color:var(--green)" data-i18n="config_title_2">votre offre</span></h2>
        <p class="section-desc reveal reveal-delay-2" data-i18n="config_desc">Un nouvel employé ? On lui crée une ligne en 2 minutes. Il part ? On la supprime. Vous ne payez que ce que vous utilisez, sans engagement.</p>

        <div class="config-steps">
            <!-- STEP 1: Zone -->
            <div class="config-step reveal" id="configStep1">
                <div class="step-label"><span class="step-num">1</span> <span data-i18n="config_step1">Votre ville</span></div>
                <div class="config-item active" id="zoneItem">
                    <div class="config-item-header">
                        <span class="config-item-title" data-i18n="config_zone_title">📍 Votre zone géographique</span>
                    </div>
                    <p class="config-item-desc" data-i18n="config_zone_desc">Choisissez la ville pour votre numéro local. Vos clients verront un indicatif de proximité.</p>
                    <div class="zone-search-wrap">
                        <input type="text" id="zoneInput" class="config-input" autocomplete="off" data-i18n-ph="config_zone_placeholder" placeholder="Tapez le nom de votre ville…" />
                        <div id="zoneResults" class="zone-results"></div>
                    </div>
                    <div id="zoneSelected" class="zone-selected" style="display:none;"></div>
                    <div id="zoneError" class="config-error" style="display:none;" data-i18n="config_zone_error">Veuillez sélectionner une ville pour votre numéro.</div>
                </div>
            </div>

            <!-- STEP 2: Offer -->
            <div class="config-step reveal reveal-delay-1" id="configStep2">
                <div class="step-label"><span class="step-num">2</span> <span data-i18n="config_step2">Votre offre</span></div>
                <div class="tier-selector">
                    <div class="tier-card active" id="tierImagePro" onclick="selectTier('pack_ideal')">
                        <div class="tier-badge" data-i18n="tier_image_badge">POPULAIRE</div>
                        <div class="tier-icon">📱</div>
                        <h3 class="tier-name" data-i18n="tier_image_title">Pack Ideal</h3>
                        <div class="tier-price" data-i18n-html="tier_image_price">29,90€ <span>HT/mois</span></div>
                        <p style="font-size:0.78rem;color:var(--gray-light);margin-bottom:0.6rem;line-height:1.5;" data-i18n="tier_image_flow">Vos clients appellent votre numéro local → le standard pro répond → l'appel est renvoyé sur votre mobile.</p>
                        <ul class="tier-features">
                            <li data-i18n="tier_image_f1">1 numéro local géolocalisé (01-05)</li>
                            <li data-i18n="tier_image_f2">Standard pro : message, musique, horaires</li>
                            <li data-i18n="tier_image_f3">Renvoi automatique vers votre mobile</li>
                            <li data-i18n="tier_image_f4">Softphone mobile + desktop inclus</li>
                            <li data-i18n="tier_image_f5">Pas de forfait appels inclus</li>
                        </ul>
                        <div class="tier-highlight" data-i18n="tier_image_highlight">Activé en 1 heure</div>
                    </div>
                    <div class="tier-card" id="tierPackEssentiel" onclick="selectTier('pack_essentiel')">
                        <div class="tier-icon">📞</div>
                        <h3 class="tier-name" data-i18n="tier_pack_title">Pack Essentiel</h3>
                        <div class="tier-price" data-i18n-html="tier_pack_price">49,90€ <span>HT/mois</span></div>
                        <ul class="tier-features">
                            <li data-i18n="tier_pack_f1">Tout Pack Ideal inclus</li>
                            <li data-i18n="tier_pack_f2">Appels illimités fixe + mobile France</li>
                            <li data-i18n="tier_pack_f3">Ajoutez des lignes pour votre équipe</li>
                        </ul>
                        <div class="tier-highlight" data-i18n="tier_pack_highlight">Idéal pour les équipes</div>
                    </div>
                </div>
            </div>

            <!-- STEP 3: Options -->
            <div class="config-step reveal reveal-delay-2" id="configStep3">
                <div class="step-label"><span class="step-num">3</span> <span data-i18n="config_step3">Options</span></div>
                <div class="config-options-grid">
                    <!-- Lignes supplémentaires (Pack Essentiel only) -->
                    <div class="config-item" id="linesItem" style="display:none;">
                        <div class="config-item-header">
                            <span class="config-item-title" data-i18n="config_lines_title">🎧 Lignes supplémentaires</span>
                            <span class="config-item-price" id="linesPrice">0€</span>
                        </div>
                        <p class="config-item-desc" data-i18n="config_lines_desc">Chaque ligne supplémentaire = 1 softphone (mobile + desktop) + appels illimités fixe & mobile France.</p>
                        <div class="config-qty">
                            <label data-i18n="config_lines_label">Postes supplémentaires :</label>
                            <div class="qty-controls">
                                <button class="qty-btn" onclick="updateLines(-1)">−</button>
                                <span class="qty-value" id="linesQty">0</span>
                                <button class="qty-btn" onclick="updateLines(1)">+</button>
                            </div>
                        </div>
                    </div>

                    <!-- AI Assist Pro -->
                    <div class="config-item" id="aiItem">
                        <div class="config-item-header">
                            <span class="config-item-title" data-i18n="config_ai_title">🤖 AI Assist Pro</span>
                            <span class="config-item-price" id="aiPrice">0€</span>
                        </div>
                        <p class="config-item-desc" data-i18n="config_ai_desc">Transcription automatique, résumé IA, détection de sentiment, historique consultable. Par utilisateur.</p>
                        <div class="config-ai-toggle">
                            <div class="toggle" id="aiToggle" onclick="toggleAI()"></div>
                            <span class="toggle-label" id="aiToggleLabel" data-i18n="toggle_off">Désactivé</span>
                        </div>
                        <div id="aiQtyWrap" style="display:none;">
                            <div class="config-qty">
                                <label data-i18n="config_ai_label">Utilisateurs AI :</label>
                                <div class="qty-controls">
                                    <button class="qty-btn" onclick="updateAI(-1)">−</button>
                                    <span class="qty-value" id="aiQty">1</span>
                                    <button class="qty-btn" onclick="updateAI(1)">+</button>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- STEP 4: Summary + CTA -->
            <div class="config-step reveal reveal-delay-3" id="configStep4">
                <div class="config-summary">
                    <h3 data-i18n="config_summary_title">Récapitulatif</h3>
                    <div class="summary-line" id="summaryZone" style="display:none;">
                        <span class="label" id="summaryZoneLabel">—</span>
                        <span class="value" style="color:var(--green);">✓</span>
                    </div>
                    <div class="summary-line" id="summaryTier">
                        <span class="label" data-i18n="config_summary_image">Pack Ideal (1 numéro + accueil pro)</span>
                        <span class="value">29,90€</span>
                    </div>
                    <div class="summary-line" id="summaryLines" style="display:none;">
                        <span class="label">0 ligne supp.</span>
                        <span class="value">0€</span>
                    </div>
                    <div class="summary-line" id="summaryAI" style="display:none;">
                        <span class="label">AI Assist Pro (1 user)</span>
                        <span class="value">49,00€</span>
                    </div>
                    <div class="summary-total">
                        <div>
                            <div class="label" data-i18n="config_total_label">Total HT/mois</div>
                        </div>
                        <div style="text-align:right;">
                            <div class="amount" id="totalAmount">29,90€</div>
                            <div class="period" data-i18n="config_total_period">HT / mois</div>
                        </div>
                    </div>
                    <button class="summary-cta" id="orderBtn" onclick="startCheckout()">
                        Commander — 29,90€ HT/mois
                    </button>
                    <div class="summary-note" data-i18n="config_summary_note">Sans engagement · Activé en 1h · Paiement sécurisé par Stripe</div>
                </div>
            </div>
        </div>
    </div>
</section>

<!-- CONTACT -->
<section id="contact">
    <div class="section-inner">
        <div class="section-tag reveal" data-i18n="contact_tag">Contact</div>
        <h2 class="section-title reveal reveal-delay-1"><span data-i18n="contact_title_1">Une question ?</span><br><span class="serif" style="color:var(--teal)" data-i18n="contact_title_2">Parlons-en</span></h2>
        <p class="section-desc reveal reveal-delay-2" data-i18n="contact_desc">Décrivez votre besoin, on vous rappelle sous 24h.</p>

        <div class="contact-grid">
            <div class="contact-info reveal">
                <h3>Smartpointers</h3>
                <p data-i18n="contact_company_desc">Nous accompagnons les PME dans leur téléphonie pro. De la config au support, on gère tout pour que vous puissiez bosser tranquille.</p>
                <div class="contact-detail">
                    <div class="contact-detail-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--teal)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg>
                    </div>
                    50 rue Sainte Geneviève, 69006 Lyon
                </div>
                <div class="contact-detail">
                    <div class="contact-detail-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--teal)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>
                    </div>
                    sebastien@smartpointers.fr
                </div>
            </div>

            <form class="contact-form reveal reveal-delay-1" id="contactForm" novalidate>
                <div class="form-row">
                    <div class="form-group">
                        <label for="name" data-i18n="contact_label_name">Nom *</label>
                        <input type="text" id="name" name="name" required placeholder="Jean Dupont" data-i18n-ph="contact_ph_name">
                    </div>
                    <div class="form-group">
                        <label for="company" data-i18n="contact_label_company">Entreprise</label>
                        <input type="text" id="company" name="company" placeholder="Votre entreprise" data-i18n-ph="contact_ph_company">
                    </div>
                </div>
                <div class="form-row">
                    <div class="form-group">
                        <label for="email" data-i18n="contact_label_email">Email *</label>
                        <input type="email" id="email" name="email" required placeholder="jean@entreprise.fr" data-i18n-ph="contact_ph_email">
                    </div>
                    <div class="form-group">
                        <label for="phone" data-i18n="contact_label_phone">Téléphone</label>
                        <input type="tel" id="phone" name="phone" placeholder="06 12 34 56 78" data-i18n-ph="contact_ph_phone">
                    </div>
                </div>
                <div class="form-group">
                    <label for="message" data-i18n="contact_label_message">Message *</label>
                    <textarea id="message" name="message" required placeholder="Décrivez votre besoin : nombre de postes, fonctionnalités souhaitées..." data-i18n-ph="contact_ph_message"></textarea>
                </div>
                <div class="cf-turnstile" data-sitekey="0x4AAAAAAACmXpCjY9yaVCV-L" data-callback="onTurnstileSuccess" data-theme="light"></div>
                <button type="submit" class="form-submit" id="submitBtn">
                    <span data-i18n="contact_submit">Envoyer</span>
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4 20-7z"/></svg>
                </button>
                <div class="form-msg" id="formMsg"></div>
            </form>
        </div>
    </div>
</section>

<!-- MENTIONS LEGALES MODAL -->
<div class="modal-overlay" id="mentionsModal" style="display:none;">
    <div class="modal-content">
        <button class="modal-close" onclick="closeMentions()">&times;</button>
        <h2 style="font-size:1.5rem; font-weight:800; margin-bottom:1.5rem; color:var(--charcoal);" data-i18n="mentions_title">Mentions légales</h2>
        <h3 style="font-size:1rem; font-weight:700; margin-bottom:0.5rem; color:var(--charcoal);" data-i18n="mentions_editor_title">Éditeur du site</h3>
        <p data-i18n-html="mentions_editor_content">SAS Smartpointers<br>
        50 rue Sainte Geneviève, 69006 Lyon<br>
        SIRET : 793 967 092 00040<br>
        Capital social : 1 000 €<br>
        Directeur de la publication : Sébastien Doido<br>
        Contact : sebastien@smartpointers.fr</p>

        <h3 style="font-size:1rem; font-weight:700; margin-top:1.5rem; margin-bottom:0.5rem; color:var(--charcoal);" data-i18n="mentions_hosting_title">Hébergement</h3>
        <p data-i18n-html="mentions_hosting_content">Cloudflare, Inc.<br>
        101 Townsend Street, San Francisco, CA 94107, USA<br>
        www.cloudflare.com</p>

        <h3 style="font-size:1rem; font-weight:700; margin-top:1.5rem; margin-bottom:0.5rem; color:var(--charcoal);" data-i18n="mentions_data_title">Protection des données</h3>
        <p data-i18n="mentions_data_content">Les informations recueillies via le formulaire de contact sont destinées à SAS Smartpointers pour le traitement de votre demande. Conformément au RGPD, vous disposez d'un droit d'accès, de rectification et de suppression de vos données. Pour exercer ces droits, contactez-nous à sebastien@smartpointers.fr.</p>

        <h3 style="font-size:1rem; font-weight:700; margin-top:1.5rem; margin-bottom:0.5rem; color:var(--charcoal);" data-i18n="mentions_cookies_title">Cookies</h3>
        <p data-i18n="mentions_cookies_content">Ce site utilise uniquement Cloudflare Turnstile pour la protection anti-bot du formulaire de contact. Aucun cookie publicitaire ou de suivi n'est utilisé.</p>
    </div>
</div>

<!-- FOOTER -->
<footer class="footer">
    <div class="footer-inner">
        <div>
            <div class="footer-logo">Smartpointers</div>
            <div class="footer-addr">SAS Smartpointers<br>50 rue Sainte Geneviève, 69006 Lyon</div>
        </div>
        <div class="footer-right">
            <a href="#" onclick="openMentions(); return false;" data-i18n="footer_mentions">Mentions légales</a>
        </div>
    </div>
</footer>

<script>
    // ---- i18n Translations ----
    const translations = {
        fr: {
            // Nav
            nav_features: "Fonctionnalités", nav_compare: "Comparatif", nav_pricing: "Tarifs", nav_contact: "Contact", nav_login: "Espace client", nav_cta: "Configurer mon offre",
            // Hero
            hero_pill: "Téléphonie cloud pour PME",
            hero_title_1: "Votre téléphonie pro", hero_title_2: "s'adapte à vous,", hero_title_3: "pas l'inverse.",
            hero_f1: "Numéro local", hero_f2: "Accueil pro & musique", hero_f3: "Renvoi vers mobile", hero_f4: "Ligne provisionnée en 1 heure", hero_f5: "Zéro engagement", hero_price: "À partir de 29,90€ HT/mois",
            hero_cta_config: "Configurer mon offre", hero_cta_contact: "Nous contacter",
            // Marquee
            marquee_1: "Activé en 1 heure", marquee_2: "Numéro local géolocalisé", marquee_3: "Sans engagement",
            marquee_4: "Accueil pro automatique", marquee_5: "Softphone mobile + desktop", marquee_6: "Redirection vers mobile",
            marquee_7: "Configuration incluse", marquee_8: "Zéro frais cachés",
            // Features
            features_tag: "Fonctionnalités", features_title_1: "Tout ce qu'il faut,", features_title_2: "rien de superflu",
            features_desc: "Une téléphonie pro dans le cloud. Rien à installer, tout est géré pour vous.",
            feat_local_title: "Numéro Local Géolocalisé", feat_local_desc: "Un numéro en 01, 02, 03, 04 ou 05 selon votre ville. Vos clients appellent un numéro local, vous répondez de n'importe où.",
            feat_svi_title: "Accueil Pro Automatique", feat_svi_desc: "Message d'accueil personnalisé, musique d'attente, horaires d'ouverture automatiques, aiguillage des appels. L'image d'une grande entreprise, sans la complexité.",
            feat_soft_title: "Renvoi vers Mobile", feat_soft_desc: "Les appels arrivent sur votre mobile ou via l'app softphone (mobile + desktop). Pas besoin de forfait supplémentaire.",
            feat_cloud_title: "100% Cloud, Zéro Matériel", feat_cloud_desc: "Toute votre téléphonie est dans le cloud. Rien à installer dans vos bureaux — juste votre mobile ou un téléphone IP si vous préférez un poste fixe.",
            // Comparatif
            compare_tag: "Comparatif", compare_title_1: "Pourquoi passer", compare_title_2: "au cloud ?",
            compare_desc: "Exemple : un artisan avec 3 collaborateurs — Pack Essentiel + 2 lignes supplémentaires.",
            compare_th_old: "Téléphonie traditionnelle", compare_th_new: "Pack Essentiel",
            compare_r1_label: "Matériel (central + postes)",
            compare_r1_old: '80 €/mois <span class="compare-tag-bad">Location 48 mois</span>',
            compare_r1_new: '0 € <span class="compare-tag-good">Softphone inclus</span><br><span style="font-size:0.78rem;color:var(--gray-warm);">Téléphone IP disponible gratuitement en option</span>',
            compare_r2_label: "Maintenance", compare_r2_old: "15 €/mois",
            compare_r2_new: '0 € <span class="compare-tag-good">Incluse</span>',
            compare_r3_label: "Abonnement lignes + appels", compare_r3_old: "35 €/mois",
            compare_r3_new: 'Inclus <span class="compare-tag-good">Illimités France</span>',
            compare_r4_label: "Numéro + accueil pro", compare_r4_old: "8 €/mois",
            compare_r4_new: '0 € <span class="compare-tag-good">Inclus</span>',
            compare_r5_label: "Engagement",
            compare_r5_old: '<span class="compare-tag-bad">48 mois minimum</span>',
            compare_r5_new: '<span class="compare-tag-good">Sans engagement</span>',
            compare_r6_label: "Appels sur mobile",
            compare_r6_old: '<span class="compare-tag-bad">Non inclus</span>',
            compare_r6_new: '<span class="compare-tag-good">App mobile + desktop</span>',
            compare_total_label: "Total mensuel HT (3 postes)", compare_total_old: "~138 €/mois",
            compare_total_new: '99,90 €/mois<br><span style="font-size:0.75rem;font-weight:500;color:var(--gray-warm);">49,90€ + 2 lignes × 25€</span>',
            compare_cost5y_label: "Coût sur 4 ans d'engagement",
            compare_cost5y_old: '6 624 € <span class="compare-tag-bad">Impossible de résilier</span>',
            compare_cost5y_new: '4 796 € <span class="compare-tag-good">Résiliable à tout moment</span>',
            compare_stat1_num: "-28%", compare_stat1_label: "sur votre facture",
            compare_stat2_label: "de matériel à installer", compare_stat3_label: "mois d'engagement",
            // Configurateur
            config_tag: "Tarifs", config_title_1: "Composez", config_title_2: "votre offre",
            config_desc: "Un nouvel employé ? On lui crée une ligne en 2 minutes. Il part ? On la supprime. Vous ne payez que ce que vous utilisez, sans engagement.",
            // Tier cards
            tier_image_badge: "POPULAIRE",
            tier_image_title: "Pack Ideal",
            tier_image_price: '29,90€ <span>HT/mois</span>',
            tier_image_flow: "Vos clients appellent votre numéro local → le standard pro répond → l'appel est renvoyé sur votre mobile.",
            tier_image_f1: "1 numéro local géolocalisé (01-05)",
            tier_image_f2: "Standard pro : message, musique, horaires",
            tier_image_f3: "Renvoi automatique vers votre mobile",
            tier_image_f4: "Softphone mobile + desktop inclus",
            tier_image_f5: "Pas de forfait appels inclus",
            tier_image_highlight: "Activé en 1 heure",
            tier_pack_title: "Pack Essentiel",
            tier_pack_price: '49,90€ <span>HT/mois</span>',
            tier_pack_f1: "Tout Pack Ideal inclus",
            tier_pack_f2: "Appels illimités fixe + mobile France",
            tier_pack_f3: "Ajoutez des lignes pour votre équipe",
            tier_pack_highlight: "Idéal pour les équipes",
            // Config items
            config_step1: "Votre ville", config_step2: "Votre offre", config_step3: "Options",
            config_zone_title: "📍 Votre zone géographique",
            config_zone_desc: "Choisissez la ville pour votre numéro local. Vos clients verront un indicatif de proximité.",
            config_zone_placeholder: "Tapez le nom de votre ville…",
            config_zone_error: "Veuillez sélectionner une ville pour votre numéro.",
            config_zone_no_results: "Aucune ville trouvée. Essayez un autre nom.",
            config_lines_title: "🎧 Lignes supplémentaires",
            config_lines_desc: "Chaque ligne supplémentaire = 1 softphone (mobile + desktop) + appels illimités fixe & mobile France. Ajoutez ou retirez des lignes à tout moment.",
            config_lines_label: "Postes supplémentaires :",
            config_ai_title: "🤖 AI Assist Pro",
            config_ai_desc: "Transcription automatique, résumé IA, détection de sentiment, historique consultable. Par utilisateur.",
            config_ai_label: "Utilisateurs AI :",
            config_summary_title: "Récapitulatif",
            config_summary_image: "Pack Ideal (1 numéro + accueil pro)",
            config_summary_pack: "Pack Essentiel (1 ligne illimitée)",
            config_total_label: "Total HT/mois", config_total_period: "HT / mois",
            config_summary_note: "Sans engagement · Activé en 1h · Paiement sécurisé par Stripe",
            // Dynamic
            toggle_on: "Activé", toggle_off: "Désactivé",
            lines_supp: "ligne(s) supp.", order_prefix: "Commander", order_suffix: "HT/mois",
            checkout_redirect: "Redirection...",
            checkout_success_title: "Paiement confirmé !",
            checkout_success_msg: "Merci pour votre commande. Vous allez recevoir un email de confirmation de Stripe. Notre équipe vous contactera sous 24h pour activer votre ligne.<br><br><a href='/app/login' style='color:#2563eb;text-decoration:underline;'>Accéder à votre espace client →</a>",
            checkout_success_close: "Fermer",
            form_sending: "Envoi...",
            form_success: "Message envoyé ! On vous recontacte sous 24h.",
            form_error: "Erreur à l'envoi. Réessayez ou contactez-nous directement.",
            contact_submit: "Envoyer",
            // Contact
            contact_tag: "Contact", contact_title_1: "Une question ?", contact_title_2: "Parlons-en",
            contact_desc: "Décrivez votre besoin, on vous rappelle sous 24h.",
            contact_company_desc: "Nous accompagnons les PME dans leur téléphonie pro. De la config au support, on gère tout pour que vous puissiez bosser tranquille.",
            contact_label_name: "Nom *", contact_label_company: "Entreprise", contact_label_email: "Email *", contact_label_phone: "Téléphone", contact_label_message: "Message *",
            contact_ph_name: "Jean Dupont", contact_ph_company: "Votre entreprise", contact_ph_email: "jean@entreprise.fr", contact_ph_phone: "06 12 34 56 78",
            contact_ph_message: "Décrivez votre besoin : nombre de postes, fonctionnalités souhaitées...",
            // Mentions légales
            mentions_title: "Mentions légales",
            mentions_editor_title: "Éditeur du site",
            mentions_editor_content: "SAS Smartpointers<br>50 rue Sainte Geneviève, 69006 Lyon<br>SIRET : 793 967 092 00040<br>Capital social : 1 000 €<br>Directeur de la publication : Sébastien Doido<br>Contact : sebastien@smartpointers.fr",
            mentions_hosting_title: "Hébergement",
            mentions_hosting_content: "Cloudflare, Inc.<br>101 Townsend Street, San Francisco, CA 94107, USA<br>www.cloudflare.com",
            mentions_data_title: "Protection des données",
            mentions_data_content: "Les informations recueillies via le formulaire de contact sont destinées à SAS Smartpointers pour le traitement de votre demande. Conformément au RGPD, vous disposez d'un droit d'accès, de rectification et de suppression de vos données. Pour exercer ces droits, contactez-nous à sebastien@smartpointers.fr.",
            mentions_cookies_title: "Cookies",
            mentions_cookies_content: "Ce site utilise uniquement Cloudflare Turnstile pour la protection anti-bot du formulaire de contact. Aucun cookie publicitaire ou de suivi n'est utilisé.",
            // Footer
            footer_mentions: "Mentions légales"
        },
        en: {
            // Nav
            nav_features: "Features", nav_compare: "Comparison", nav_pricing: "Pricing", nav_contact: "Contact", nav_login: "My account", nav_cta: "Configure my plan",
            // Hero
            hero_pill: "Cloud telephony for SMBs",
            hero_title_1: "Your business phone", hero_title_2: "adapts to you,", hero_title_3: "not the other way around.",
            hero_f1: "Local number", hero_f2: "Pro greeting & music", hero_f3: "Forward to mobile", hero_f4: "Line provisioned in 1 hour", hero_f5: "No commitment", hero_price: "From €29.90 excl. tax/mo",
            hero_cta_config: "Configure my plan", hero_cta_contact: "Contact us",
            // Marquee
            marquee_1: "Activated in 1 hour", marquee_2: "Local area number", marquee_3: "No commitment",
            marquee_4: "Auto-attendant", marquee_5: "Mobile + desktop softphone", marquee_6: "Forward to mobile",
            marquee_7: "Setup included", marquee_8: "Zero hidden fees",
            // Features
            features_tag: "Features", features_title_1: "Everything you need,", features_title_2: "nothing superfluous",
            features_desc: "Cloud-based business telephony. Nothing to install, everything managed for you.",
            feat_local_title: "Local Area Number", feat_local_desc: "A local number matching your city's area code. Your customers call a local number, you answer from anywhere.",
            feat_svi_title: "Professional Auto-Attendant", feat_svi_desc: "Custom welcome message, hold music, automatic business hours, call routing. The image of a big company, without the complexity.",
            feat_soft_title: "Forward to Mobile", feat_soft_desc: "Calls arrive on your mobile or via the softphone app (mobile + desktop). No extra plan needed.",
            feat_cloud_title: "100% Cloud, Zero Hardware", feat_cloud_desc: "Your entire phone system is in the cloud. Nothing to install in your office — just your mobile or an IP desk phone if you prefer.",
            // Comparatif
            compare_tag: "Comparison", compare_title_1: "Why switch", compare_title_2: "to the cloud?",
            compare_desc: "Example: a tradesman with 3 team members — Essential Pack + 2 extra lines.",
            compare_th_old: "Traditional telephony", compare_th_new: "Essential Pack",
            compare_r1_label: "Hardware (PBX + handsets)",
            compare_r1_old: '€80/mo <span class="compare-tag-bad">48-month lease</span>',
            compare_r1_new: '€0 <span class="compare-tag-good">Softphone included</span><br><span style="font-size:0.78rem;color:var(--gray-warm);">IP desk phone available free as option</span>',
            compare_r2_label: "Maintenance", compare_r2_old: "€15/mo",
            compare_r2_new: '€0 <span class="compare-tag-good">Included</span>',
            compare_r3_label: "Lines + calls subscription", compare_r3_old: "€35/mo",
            compare_r3_new: 'Included <span class="compare-tag-good">Unlimited France</span>',
            compare_r4_label: "Number + pro greeting", compare_r4_old: "€8/mo",
            compare_r4_new: '€0 <span class="compare-tag-good">Included</span>',
            compare_r5_label: "Commitment",
            compare_r5_old: '<span class="compare-tag-bad">48 months minimum</span>',
            compare_r5_new: '<span class="compare-tag-good">No commitment</span>',
            compare_r6_label: "Calls on mobile",
            compare_r6_old: '<span class="compare-tag-bad">Not included</span>',
            compare_r6_new: '<span class="compare-tag-good">Mobile + desktop app</span>',
            compare_total_label: "Monthly total excl. tax (3 ext.)", compare_total_old: "~€138/mo",
            compare_total_new: '€99.90/mo<br><span style="font-size:0.75rem;font-weight:500;color:var(--gray-warm);">€49.90 + 2 lines × €25</span>',
            compare_cost5y_label: "Cost over 4-year contract",
            compare_cost5y_old: '€6,624 <span class="compare-tag-bad">Cannot cancel</span>',
            compare_cost5y_new: '€4,796 <span class="compare-tag-good">Cancel anytime</span>',
            compare_stat1_num: "-28%", compare_stat1_label: "on your bill",
            compare_stat2_label: "hardware to install", compare_stat3_label: "months commitment",
            // Configurateur
            config_tag: "Pricing", config_title_1: "Build", config_title_2: "your plan",
            config_desc: "New employee? We create their line in 2 minutes. They leave? We remove it. You only pay for what you use, no commitment.",
            // Tier cards
            tier_image_badge: "POPULAR",
            tier_image_title: "Pack Ideal",
            tier_image_price: '€29.90 <span>excl. tax/mo</span>',
            tier_image_flow: "Your clients call your local number → the pro greeting answers → the call is forwarded to your mobile.",
            tier_image_f1: "1 local area number (01-05)",
            tier_image_f2: "Pro greeting: message, music, hours",
            tier_image_f3: "Auto-forward to your mobile",
            tier_image_f4: "Mobile + desktop softphone included",
            tier_image_f5: "No calling plan included",
            tier_image_highlight: "Activated in 1 hour",
            tier_pack_title: "Essential Pack",
            tier_pack_price: '€49.90 <span>excl. tax/mo</span>',
            tier_pack_f1: "Everything in Pack Ideal",
            tier_pack_f2: "Unlimited calls landline + mobile France",
            tier_pack_f3: "Add lines for your team",
            tier_pack_highlight: "Ideal for teams",
            // Config items
            config_step1: "Your city", config_step2: "Your plan", config_step3: "Options",
            config_zone_title: "📍 Your area",
            config_zone_desc: "Choose the city for your local number. Your clients will see a local area code.",
            config_zone_placeholder: "Type your city name…",
            config_zone_error: "Please select a city for your number.",
            config_zone_no_results: "No city found. Try a different name.",
            config_lines_title: "🎧 Additional lines",
            config_lines_desc: "Each additional line = 1 softphone (mobile + desktop) + unlimited landline & mobile France calls. Add or remove lines anytime.",
            config_lines_label: "Additional extensions:",
            config_ai_title: "🤖 AI Assist Pro",
            config_ai_desc: "Automatic transcription, AI summary, sentiment detection, searchable history. Per user.",
            config_ai_label: "AI Users:",
            config_summary_title: "Summary",
            config_summary_image: "Pack Ideal (1 number + pro greeting)",
            config_summary_pack: "Essential Pack (1 unlimited line)",
            config_total_label: "Total excl. tax/mo", config_total_period: "excl. tax / mo",
            config_summary_note: "No commitment · Activated in 1 hour · Secure payment via Stripe",
            // Dynamic
            toggle_on: "Enabled", toggle_off: "Disabled",
            lines_supp: "add. line(s)", order_prefix: "Order", order_suffix: "excl. tax/mo",
            checkout_redirect: "Redirecting...",
            checkout_success_title: "Payment confirmed!",
            checkout_success_msg: "Thank you for your order. You will receive a confirmation email from Stripe. Our team will contact you within 24h to activate your line.<br><br><a href='/app/login' style='color:#2563eb;text-decoration:underline;'>Access your dashboard →</a>",
            checkout_success_close: "Close",
            form_sending: "Sending...",
            form_success: "Message sent! We'll get back to you within 24h.",
            form_error: "Sending error. Please retry or contact us directly.",
            contact_submit: "Send",
            // Contact
            contact_tag: "Contact", contact_title_1: "Have a question?", contact_title_2: "Let's talk",
            contact_desc: "Describe your needs, we'll call you back within 24h.",
            contact_company_desc: "We help SMBs with their business telephony. From setup to support, we handle everything so you can work in peace.",
            contact_label_name: "Name *", contact_label_company: "Company", contact_label_email: "Email *", contact_label_phone: "Phone", contact_label_message: "Message *",
            contact_ph_name: "John Doe", contact_ph_company: "Your company", contact_ph_email: "john@company.com", contact_ph_phone: "+33 6 12 34 56 78",
            contact_ph_message: "Describe your needs: number of extensions, desired features...",
            // Mentions légales
            mentions_title: "Legal notice",
            mentions_editor_title: "Site publisher",
            mentions_editor_content: "SAS Smartpointers<br>50 rue Sainte Geneviève, 69006 Lyon, France<br>SIRET: 793 967 092 00040<br>Share capital: €1,000<br>Publication director: Sébastien Doido<br>Contact: sebastien@smartpointers.fr",
            mentions_hosting_title: "Hosting",
            mentions_hosting_content: "Cloudflare, Inc.<br>101 Townsend Street, San Francisco, CA 94107, USA<br>www.cloudflare.com",
            mentions_data_title: "Data protection",
            mentions_data_content: "Information collected through the contact form is intended for SAS Smartpointers to process your request. In accordance with the GDPR, you have the right to access, rectify and delete your data. To exercise these rights, contact us at sebastien@smartpointers.fr.",
            mentions_cookies_title: "Cookies",
            mentions_cookies_content: "This site only uses Cloudflare Turnstile for anti-bot protection on the contact form. No advertising or tracking cookies are used.",
            // Footer
            footer_mentions: "Legal notice"
        }
    };

    // ---- i18n engine ----
    let currentLang = 'fr';

    function setLang(lang) {
        currentLang = lang;
        document.documentElement.lang = lang;
        // Toggle active button
        document.querySelectorAll('.lang-btn').forEach(btn => {
            btn.classList.toggle('active', btn.textContent.trim().toLowerCase() === lang);
        });
        // Translate data-i18n (textContent)
        document.querySelectorAll('[data-i18n]').forEach(el => {
            const key = el.getAttribute('data-i18n');
            if (translations[lang] && translations[lang][key]) {
                el.textContent = translations[lang][key];
            }
        });
        // Translate data-i18n-html (innerHTML)
        document.querySelectorAll('[data-i18n-html]').forEach(el => {
            const key = el.getAttribute('data-i18n-html');
            if (translations[lang] && translations[lang][key]) {
                el.innerHTML = translations[lang][key];
            }
        });
        // Translate data-i18n-ph (placeholder)
        document.querySelectorAll('[data-i18n-ph]').forEach(el => {
            const key = el.getAttribute('data-i18n-ph');
            if (translations[lang] && translations[lang][key]) {
                el.placeholder = translations[lang][key];
            }
        });
        // Title
        const titles = {
            fr: "Téléphonie Pro PME — Smartpointers | Numéro local pro, activé en 1h",
            en: "Business Phone for SMBs — Smartpointers | Local number, live in minutes"
        };
        document.title = titles[lang] || titles.fr;
        // Persist
        try { localStorage.setItem('lang', lang); } catch(e) {}
        const url = new URL(window.location);
        url.searchParams.set('lang', lang);
        history.replaceState(null, '', url);
        // Re-render dynamic configurator text (guard: recalc may not exist on first setLang call)
        try { recalc(); } catch(e) {}
    }

    // Auto-detect: URL param > localStorage > default fr (no browser sniffing)
    (function() {
        const urlParams = new URLSearchParams(window.location.search);
        const urlLang = urlParams.get('lang');
        if (urlLang && translations[urlLang]) { setLang(urlLang); return; }
        try {
            const stored = localStorage.getItem('lang');
            if (stored && translations[stored]) { setLang(stored); return; }
        } catch(e) {}
        // Default: fr — no browser language detection, site is French-first
    })();

    // ---- Success modal ----
    (function() {
        const params = new URLSearchParams(window.location.search);
        if (params.get('success') === '1') {
            const overlay = document.createElement('div');
            overlay.className = 'success-overlay';
            function dismissSuccess() { overlay.remove(); history.replaceState({}, '', '/'); }
            overlay.innerHTML = `<div class="success-modal">
                <h2>${t('checkout_success_title')}</h2>
                <p>${t('checkout_success_msg')}</p>
                <button>${t('checkout_success_close')}</button>
            </div>`;
            document.body.appendChild(overlay);
            overlay.querySelector('button').addEventListener('click', dismissSuccess);
            overlay.addEventListener('click', (e) => {
                if (e.target === overlay) dismissSuccess();
            });
        }
    })();

    // ---- Mentions légales modal ----
    function openMentions() { document.getElementById('mentionsModal').style.display = 'flex'; }
    function closeMentions() { document.getElementById('mentionsModal').style.display = 'none'; }
    document.getElementById('mentionsModal').addEventListener('click', (e) => {
        if (e.target === e.currentTarget) closeMentions();
    });

    // ---- Scroll reveal ----
    document.documentElement.classList.add('js-ready');
    const observer = new IntersectionObserver((entries) => {
        entries.forEach(e => {
            if (e.isIntersecting) {
                e.target.classList.add('visible');
                observer.unobserve(e.target);
            }
        });
    }, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });
    document.querySelectorAll('.reveal').forEach(el => observer.observe(el));

    // ---- Nav ----
    const nav = document.getElementById('nav');
    window.addEventListener('scroll', () => nav.classList.toggle('scrolled', window.scrollY > 20));
    const burger = document.getElementById('navBurger');
    const navLinks = document.getElementById('navLinks');
    burger.addEventListener('click', () => navLinks.classList.toggle('open'));
    navLinks.querySelectorAll('a').forEach(a => a.addEventListener('click', () => navLinks.classList.remove('open')));

    // ---- Configurateur ----
    const IMAGE_PRO_PRICE = 29.90;
    const PACK_ESSENTIEL_PRICE = 49.90;
    const LINE_PRICE = 25.00;
    const AI_PRICE = 49.00;

    let selectedTier = 'pack_ideal';
    let selectedZone = null;
    let selectedCity = null;
    let lines = 0;
    let aiEnabled = false;
    let aiUsers = 1;

    function t(key) { return (translations[currentLang] && translations[currentLang][key]) || key; }

    // ---- Zone search (client-side filtering, single API fetch) ----
    let allZones = null;
    const zoneInput = document.getElementById('zoneInput');
    const zoneResults = document.getElementById('zoneResults');
    const zoneSelectedEl = document.getElementById('zoneSelected');

    // Fetch full zone list once (cached 24h server-side + browser cache 1h)
    async function loadZones() {
        if (allZones && allZones.length > 0) return;
        try {
            const res = await fetch('/api/zones');
            const data = await res.json();
            allZones = Array.isArray(data) ? data : [];
            window.allZones = allZones;
        } catch (err) {
            console.error('Failed to load zones:', err);
            allZones = [];
            window.allZones = allZones;
        }
    }

    // Normalize for accent-insensitive matching
    function norm(s) { return s.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase(); }

    function filterZones(q) {
        if (!allZones || !q) return [];
        const nq = norm(q);
        return allZones.filter(z => norm(z.city).includes(nq)).slice(0, 10);
    }

    zoneInput.addEventListener('focus', () => { loadZones(); });

    zoneInput.addEventListener('input', () => {
        const q = zoneInput.value.trim();
        if (q.length < 2) {
            zoneResults.classList.remove('open');
            return;
        }
        if (!allZones) {
            loadZones().then(() => renderZoneResults(filterZones(q)));
            return;
        }
        renderZoneResults(filterZones(q));
    });

    document.addEventListener('click', (e) => {
        if (!e.target.closest('.zone-search-wrap')) {
            zoneResults.classList.remove('open');
        }
    });

    function renderZoneResults(zones) {
        zoneResults.innerHTML = '';
        if (zones.length === 0) {
            zoneResults.innerHTML = `<div class="zone-result-empty">${t('config_zone_no_results')}</div>`;
        } else {
            zones.forEach(z => {
                const div = document.createElement('div');
                div.className = 'zone-result-item';
                const displayNum = z.number ? z.number.replace(/x/g, '·') : '';
                div.innerHTML = `<span class="zone-result-city">${z.city}</span><span class="zone-result-num">${displayNum}</span>`;
                div.addEventListener('click', () => pickZone(z));
                zoneResults.appendChild(div);
            });
        }
        zoneResults.classList.add('open');
    }

    function pickZone(z) {
        selectedZone = z.zone;
        selectedCity = z.city;
        const displayNum = z.number ? z.number.replace(/x/g, '·') : '';
        zoneInput.style.display = 'none';
        zoneResults.classList.remove('open');
        zoneSelectedEl.innerHTML = `<div><span class="zone-selected-city">${z.city}</span> <span class="zone-selected-num">${displayNum}</span></div><span class="zone-selected-clear" onclick="clearZone()">✕</span>`;
        zoneSelectedEl.style.display = 'flex';
        document.getElementById('zoneError').style.display = 'none';
        // Update summary
        const sz = document.getElementById('summaryZone');
        sz.style.display = 'flex';
        document.getElementById('summaryZoneLabel').textContent = `📍 ${z.city} (${displayNum})`;
    }

    function clearZone() {
        selectedZone = null;
        selectedCity = null;
        zoneInput.value = '';
        zoneInput.style.display = '';
        zoneSelectedEl.style.display = 'none';
        zoneResults.innerHTML = '';
        document.getElementById('summaryZone').style.display = 'none';
        zoneInput.focus();
    }

    function selectTier(tier) {
        selectedTier = tier;
        document.getElementById('tierImagePro').classList.toggle('active', tier === 'pack_ideal');
        document.getElementById('tierPackEssentiel').classList.toggle('active', tier === 'pack_essentiel');

        const linesItem = document.getElementById('linesItem');
        if (tier === 'pack_essentiel') {
            linesItem.style.display = 'block';
        } else {
            linesItem.style.display = 'none';
            lines = 0;
            document.getElementById('linesQty').textContent = 0;
            document.getElementById('linesPrice').textContent = '0€';
            linesItem.classList.remove('active');
        }
        // Update summary tier line
        const st = document.getElementById('summaryTier');
        const tierLabel = tier === 'pack_ideal' ? t('config_summary_image') : t('config_summary_pack');
        const tierPrice = tier === 'pack_ideal' ? IMAGE_PRO_PRICE : PACK_ESSENTIEL_PRICE;
        st.innerHTML = `<span class="label">${tierLabel}</span><span class="value">${tierPrice.toFixed(2).replace('.', ',')}€</span>`;
        recalc();
    }

    function updateLines(delta) {
        lines = Math.max(0, lines + delta);
        document.getElementById('linesQty').textContent = lines;
        document.getElementById('linesPrice').textContent = lines > 0 ? (lines * LINE_PRICE).toFixed(2).replace('.', ',') + '€' : '0€';
        document.getElementById('linesItem').classList.toggle('active', lines > 0);
        const totalLines = 1 + lines;
        if (aiUsers > totalLines) {
            aiUsers = totalLines;
            document.getElementById('aiQty').textContent = aiUsers;
        }
        recalc();
    }

    function toggleAI() {
        aiEnabled = !aiEnabled;
        const toggle = document.getElementById('aiToggle');
        const label = document.getElementById('aiToggleLabel');
        const wrap = document.getElementById('aiQtyWrap');
        const item = document.getElementById('aiItem');
        toggle.classList.toggle('on', aiEnabled);
        label.textContent = aiEnabled ? t('toggle_on') : t('toggle_off');
        wrap.style.display = aiEnabled ? 'block' : 'none';
        item.classList.toggle('active', aiEnabled);
        if (aiEnabled) aiUsers = Math.min(aiUsers, 1 + lines) || 1;
        recalc();
    }

    function updateAI(delta) {
        const maxUsers = selectedTier === 'pack_essentiel' ? 1 + lines : 1;
        aiUsers = Math.max(1, Math.min(maxUsers, aiUsers + delta));
        document.getElementById('aiQty').textContent = aiUsers;
        recalc();
    }

    function recalc() {
        const tierPrice = selectedTier === 'pack_ideal' ? IMAGE_PRO_PRICE : PACK_ESSENTIEL_PRICE;
        const linesTotal = lines * LINE_PRICE;
        const aiTotal = aiEnabled ? aiUsers * AI_PRICE : 0;
        const total = tierPrice + linesTotal + aiTotal;

        document.getElementById('aiPrice').textContent = aiTotal > 0 ? aiTotal.toFixed(2).replace('.', ',') + '€' : '0€';

        const sl = document.getElementById('summaryLines');
        if (lines > 0) {
            sl.style.display = 'flex';
            sl.innerHTML = `<span class="label">${lines} ${t('lines_supp')}</span><span class="value">${linesTotal.toFixed(2).replace('.', ',')}€</span>`;
        } else {
            sl.style.display = 'none';
        }

        const sa = document.getElementById('summaryAI');
        if (aiEnabled) {
            sa.style.display = 'flex';
            sa.innerHTML = `<span class="label">AI Assist Pro (${aiUsers} user${aiUsers > 1 ? 's' : ''})</span><span class="value">${aiTotal.toFixed(2).replace('.', ',')}€</span>`;
        } else {
            sa.style.display = 'none';
        }

        const formatted = total.toFixed(2).replace('.', ',') + '€';
        document.getElementById('totalAmount').textContent = formatted;
        document.getElementById('orderBtn').textContent = `${t('order_prefix')} — ${formatted} ${t('order_suffix')}`;
    }

    // ---- Stripe Checkout ----
    function resetOrderBtn() {
        const btn = document.getElementById('orderBtn');
        if (btn && btn.disabled) {
            const formatted = document.getElementById('totalAmount').textContent;
            btn.textContent = `${t('order_prefix')} — ${formatted} ${t('order_suffix')}`;
            btn.disabled = false;
        }
    }
    document.addEventListener('visibilitychange', () => {
        if (!document.hidden) resetOrderBtn();
    });
    window.addEventListener('pageshow', resetOrderBtn);

    async function startCheckout() {
        // Validate zone selection
        if (!selectedZone) {
            document.getElementById('zoneError').style.display = 'block';
            document.getElementById('zoneInput').focus();
            return;
        }

        const btn = document.getElementById('orderBtn');
        btn.textContent = t('checkout_redirect');
        btn.disabled = true;

        try {
            const res = await fetch('/api/checkout', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ tier: selectedTier, lines, aiEnabled, aiUsers, zone: selectedZone, city: selectedCity })
            });
            const data = await res.json();
            if (data.url) {
                window.location.href = data.url;
            } else {
                throw new Error(data.error || 'Erreur');
            }
        } catch (err) {
            resetOrderBtn();
            window.location.href = '#contact';
        }
    }

    // ---- Turnstile ----
    let turnstileToken = null;
    function onTurnstileSuccess(token) {
        turnstileToken = token;
    }

    // ---- Contact form ----
    const form = document.getElementById('contactForm');
    const formMsg = document.getElementById('formMsg');
    const submitBtn = document.getElementById('submitBtn');
    const submitSvg = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 2L11 13"/><path d="M22 2l-7 20-4-9-9-4 20-7z"/></svg>';

    form.addEventListener('submit', async (e) => {
        e.preventDefault();
        formMsg.className = 'form-msg';
        formMsg.style.display = 'none';
        if (!form.checkValidity()) { form.reportValidity(); return; }

        if (!turnstileToken) {
            const input = document.querySelector('[name="cf-turnstile-response"]');
            if (input) turnstileToken = input.value;
        }

        submitBtn.disabled = true;
        submitBtn.textContent = t('form_sending');

        try {
            const data = {
                name: form.name.value.trim(),
                email: form.email.value.trim(),
                phone: form.phone.value.trim(),
                company: form.company.value.trim(),
                message: form.message.value.trim(),
                token: turnstileToken || ''
            };
            const res = await fetch('/api/contact', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify(data)
            });
            const result = await res.json();
            if (res.ok) {
                formMsg.className = 'form-msg success';
                formMsg.textContent = t('form_success');
                formMsg.style.display = 'block';
                form.reset();
                turnstileToken = null;
                if (window.turnstile) turnstile.reset();
            } else {
                throw new Error(result.error || 'Erreur');
            }
        } catch (err) {
            formMsg.className = 'form-msg error';
            formMsg.textContent = t('form_error');
            formMsg.style.display = 'block';
        } finally {
            submitBtn.disabled = false;
            submitBtn.innerHTML = t('contact_submit') + ' ' + submitSvg;
        }
    });
</script>
<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "9c90c79450a4453087be2bfe0f9d4cb5"}'></script><!-- Cloudflare Pages Analytics --></body>
</html>
