Chargement...
🎉
APP - Votre business, un seul tableau de bord :root { --bg: #060606; --bg-card: #0c0c0e; --orange: #f97316; --amber: #fbbf24; --white: #f8f8f8; --off-white: #e4e4e7; --gray: #71717a; --gray-mid: #a1a1aa; --border: rgba(255,255,255,0.06); --border-hover: rgba(249,115,22,0.2); --glow: rgba(249,115,22,0.08); --green: #22c55e; --blue: #60a5fa; --purple: #a78bfa; } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: 'Space Grotesk', sans-serif; background: var(--bg); color: var(--white); overflow-x: hidden; -webkit-font-smoothing: antialiased; } ::selection { background: var(--orange); color: #000; } /* Grain */ body::before { content: ''; position: fixed; inset: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); opacity: 0.02; pointer-events: none; z-index: 9999; } /* ═══ CURSOR GLOW ═══ */ .cursor-glow { position: fixed; width: 300px; height: 300px; border-radius: 50%; pointer-events: none; z-index: 9998; background: radial-gradient(circle, rgba(249,115,22,0.04) 0%, transparent 70%); transform: translate(-50%, -50%); transition: opacity 0.3s; opacity: 0; } body:hover .cursor-glow { opacity: 1; } /* ═══ SCROLL ANIMATIONS ═══ */ .reveal { opacity: 0; transform: translateY(40px); transition: opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1); } .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; } .reveal-delay-5 { transition-delay: 0.5s; } /* Scale reveal variant */ .reveal-scale { opacity: 0; transform: scale(0.92); transition: opacity 0.7s cubic-bezier(0.16,1,0.3,1), transform 0.7s cubic-bezier(0.16,1,0.3,1); } .reveal-scale.visible { opacity: 1; transform: scale(1); } /* ═══ FLOATING NAV ═══ */ .nav { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); z-index: 1000; display: flex; align-items: center; gap: 32px; background: rgba(6,6,6,0.75); backdrop-filter: blur(24px); border: 1px solid var(--border); padding: 10px 18px 10px 22px; border-radius: 100px; transition: all 0.5s cubic-bezier(0.16,1,0.3,1); } .nav.scrolled { box-shadow: 0 8px 32px rgba(0,0,0,0.5); border-color: rgba(255,255,255,0.08); padding: 8px 16px 8px 20px; } .nav-logo { display: flex; align-items: center; gap: 9px; text-decoration: none; color: var(--white); transition: transform 0.3s; } .nav-logo:hover { transform: scale(1.06); } .nav-logo svg { height: 22px; width: 22px; color: var(--orange); transition: filter 0.3s; } .nav-logo:hover svg { filter: drop-shadow(0 0 8px rgba(249,115,22,0.5)); } .nav-logo b { font-family: 'Syne', sans-serif; font-weight: 800; font-size: 1rem; } .nav-links { display: flex; gap: 28px; } .nav-links a { color: var(--gray); text-decoration: none; font-size: 0.82rem; font-weight: 500; transition: color 0.3s, transform 0.3s; } .nav-links a:hover { color: var(--white); transform: translateY(-1px); } .nav-cta { background: var(--orange); color: #fff; padding: 9px 24px; border-radius: 100px; text-decoration: none; font-weight: 700; font-size: 0.82rem; transition: all 0.3s; position: relative; overflow: hidden; } .nav-cta::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); transform: translateX(-100%); transition: transform 0.6s; } .nav-cta:hover::before { transform: translateX(100%); } .nav-cta:hover { transform: scale(1.04); box-shadow: 0 0 24px rgba(249,115,22,0.4); } /* ═══ HERO ═══ */ .hero { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 140px 40px 100px; position: relative; overflow: hidden; } .hero-mesh { position: absolute; inset: 0; background: radial-gradient(ellipse 80% 60% at 50% 0%, rgba(249,115,22,0.1) 0%, transparent 55%), radial-gradient(ellipse 50% 40% at 85% 75%, rgba(249,115,22,0.04) 0%, transparent 50%); pointer-events: none; } .hero-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,0.012) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.012) 1px, transparent 1px); background-size: 80px 80px; mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 65%); -webkit-mask-image: radial-gradient(ellipse 60% 50% at 50% 40%, black 20%, transparent 65%); pointer-events: none; animation: gridFloat 20s ease-in-out infinite; } @keyframes gridFloat { 0%,100% { transform: translate(0,0); } 50% { transform: translate(-8px, -8px); } } /* Floating particles */ .hero-particles { position: absolute; inset: 0; pointer-events: none; overflow: hidden; } .particle { position: absolute; width: 2px; height: 2px; background: var(--orange); border-radius: 50%; opacity: 0; animation: particleFloat linear infinite; } @keyframes particleFloat { 0% { opacity: 0; transform: translateY(100vh) scale(0); } 10% { opacity: 0.6; } 90% { opacity: 0.6; } 100% { opacity: 0; transform: translateY(-20vh) scale(1); } } .hero-badge { display: inline-flex; align-items: center; gap: 8px; padding: 6px 18px; border: 1px solid var(--border); border-radius: 100px; font-size: 0.72rem; font-weight: 600; color: var(--gray-mid); background: rgba(255,255,255,0.02); margin-bottom: 28px; position: relative; z-index: 2; cursor: pointer; transition: all 0.3s; } .hero-badge:hover { border-color: var(--green); background: rgba(34,197,94,0.05); } .hero-badge .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--green); animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%,100%{opacity:.3;transform:scale(.9)} 50%{opacity:1;transform:scale(1.1)} } .hero-pills { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-bottom: 32px; position: relative; z-index: 2; } .hero-pill { padding: 7px 20px; border: 1px solid var(--border); border-radius: 100px; font-family: 'Syne', sans-serif; font-weight: 600; font-size: 0.85rem; background: rgba(255,255,255,0.02); transition: all 0.4s; } .hero-pill b { color: var(--orange); } .hero-pill:hover { border-color: var(--border-hover); background: rgba(249,115,22,0.03); transform: translateY(-2px); box-shadow: 0 4px 16px rgba(249,115,22,0.1); } .hero-title { position: relative; z-index: 2; margin-bottom: 24px; } .hero-title .pre { font-family: 'Syne', sans-serif; font-size: clamp(1rem, 2vw, 1.6rem); font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: rgba(255,255,255,0.2); line-height: 1.3; } .hero-title .main { font-family: 'Syne', sans-serif; font-size: clamp(5rem, 14vw, 11rem); font-weight: 800; line-height: 0.85; letter-spacing: -0.04em; background: linear-gradient(135deg, var(--orange) 0%, var(--amber) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; filter: drop-shadow(0 0 60px rgba(249,115,22,0.15)); position: relative; } /* Shimmer on title */ .hero-title .main::after { content: 'APP'; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.08) 50%, transparent 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; background-size: 200% 100%; animation: shimmer 4s ease-in-out infinite; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .hero-title .post { font-family: 'Syne', sans-serif; font-size: clamp(1.2rem, 3vw, 2.4rem); font-weight: 700; color: var(--off-white); line-height: 1.3; margin-top: 10px; } .hero-sub { font-size: 1.1rem; color: var(--gray-mid); max-width: 560px; line-height: 1.75; margin: 0 auto 40px; position: relative; z-index: 2; } .hero-sub strong { color: var(--white); font-weight: 600; } .hero-actions { display: flex; gap: 14px; position: relative; z-index: 2; flex-wrap: wrap; justify-content: center; } /* Magnetic button */ .btn { padding: 15px 36px; border-radius: 10px; font-weight: 700; font-size: 0.92rem; text-decoration: none; transition: all 0.3s cubic-bezier(0.16,1,0.3,1); display: inline-flex; align-items: center; gap: 8px; position: relative; overflow: hidden; } .btn-orange { background: var(--orange); color: #fff; } .btn-orange::before { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.15), transparent); transform: translateX(-100%); transition: transform 0.5s; } .btn-orange:hover::before { transform: translateX(100%); } .btn-orange:hover { box-shadow: 0 12px 40px rgba(249,115,22,0.35); transform: translateY(-3px) scale(1.02); } .btn-ghost { border: 1px solid var(--border); color: var(--gray-mid); background: transparent; } .btn-ghost:hover { border-color: rgba(255,255,255,0.15); color: var(--white); background: rgba(255,255,255,0.02); transform: translateY(-2px); } .hero-note { margin-top: 18px; font-size: 0.75rem; color: var(--gray); position: relative; z-index: 2; } .hero-note span { color: var(--orange); font-weight: 600; } /* ═══ STATS ═══ */ .stats { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); } .stat { padding: 48px 28px; text-align: center; border-right: 1px solid var(--border); transition: all 0.4s; } .stat:last-child { border-right: none; } .stat:hover { background: rgba(255,255,255,0.012); } .stat:hover .stat-num { transform: scale(1.08); } .stat-num { font-family: 'Syne', sans-serif; font-size: 2.6rem; font-weight: 800; line-height: 1; background: linear-gradient(135deg, var(--orange), var(--amber)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; transition: transform 0.4s; } .stat-label { font-size: 0.76rem; color: var(--gray); margin-top: 10px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 500; } /* ═══ FEATURE BLOCKS ═══ */ .section-wrap { max-width: 1200px; margin: 0 auto; padding: 100px 40px; } .s-eyebrow { font-family: 'Syne', sans-serif; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.18em; color: var(--orange); font-weight: 700; margin-bottom: 14px; } .s-title { font-family: 'Syne', sans-serif; font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; margin-bottom: 16px; } .s-desc { color: var(--gray-mid); font-size: 1.05rem; max-width: 580px; line-height: 1.7; margin-bottom: 56px; } .feat-block { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; padding: 80px 0; border-bottom: 1px solid var(--border); } .feat-block:last-child { border-bottom: none; } .feat-block.rev .feat-visual { order: -1; } .feat-content { max-width: 480px; } .feat-tag { display: inline-flex; padding: 5px 14px; background: rgba(249,115,22,0.07); border: 1px solid rgba(249,115,22,0.12); border-radius: 100px; font-size: 0.68rem; font-weight: 700; color: var(--orange); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 20px; } .feat-content h3 { font-family: 'Syne', sans-serif; font-size: 1.65rem; font-weight: 800; margin-bottom: 16px; line-height: 1.15; } .feat-content p { color: var(--gray-mid); font-size: 0.95rem; line-height: 1.75; margin-bottom: 24px; } .feat-list { list-style: none; display: flex; flex-direction: column; gap: 11px; } .feat-list li { display: flex; align-items: flex-start; gap: 11px; font-size: 0.88rem; color: var(--off-white); line-height: 1.5; opacity: 0; transform: translateX(-16px); transition: all 0.5s cubic-bezier(0.16,1,0.3,1); } .feat-list.animated li { opacity: 1; transform: translateX(0); } .feat-list li::before { content: '\2713'; color: var(--orange); font-weight: 700; font-size: 0.82rem; flex-shrink: 0; margin-top: 2px; } .feat-visual { background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; padding: 32px; min-height: 340px; display: flex; flex-direction: column; justify-content: center; position: relative; overflow: hidden; transition: all 0.4s cubic-bezier(0.16,1,0.3,1); } .feat-visual:hover { border-color: var(--border-hover); } .feat-visual::after { content: ''; position: absolute; top: -40%; right: -40%; width: 80%; height: 80%; background: radial-gradient(circle, var(--glow), transparent 70%); pointer-events: none; transition: opacity 0.4s; } .feat-visual:hover::after { opacity: 1.5; } .fv-header { font-family: 'Syne', sans-serif; font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--gray); margin-bottom: 18px; position: relative; z-index: 2; } .fv-rows { display: flex; flex-direction: column; gap: 9px; position: relative; z-index: 2; } .fv-row { display: flex; align-items: center; gap: 12px; padding: 13px 16px; background: rgba(255,255,255,0.025); border: 1px solid rgba(255,255,255,0.04); border-radius: 10px; font-size: 0.8rem; transition: all 0.35s cubic-bezier(0.16,1,0.3,1); } .fv-row:hover { border-color: var(--border-hover); background: rgba(255,255,255,0.04); transform: translateX(4px); } .fv-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .fv-name { flex: 1; color: var(--off-white); } .fv-tag { padding: 3px 10px; border-radius: 100px; font-size: 0.63rem; font-weight: 600; } /* ═══ TABS ENGINE ═══ */ .engine-tabs { display: flex; gap: 0; margin-bottom: 48px; border: 1px solid var(--border); border-radius: 12px; overflow: hidden; width: fit-content; } .engine-tab { padding: 13px 34px; font-family: 'Syne', sans-serif; font-weight: 700; font-size: 0.88rem; cursor: pointer; background: transparent; color: var(--gray); transition: all 0.4s cubic-bezier(0.16,1,0.3,1); border: none; outline: none; border-right: 1px solid var(--border); position: relative; } .engine-tab:last-child { border-right: none; } .engine-tab.active { background: var(--orange); color: #fff; } .engine-tab:hover:not(.active) { background: rgba(255,255,255,0.03); color: var(--gray-mid); } .engine-panel { display: none; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; opacity: 0; transform: translateY(12px); animation: panelIn 0.5s cubic-bezier(0.16,1,0.3,1) forwards; } .engine-panel.active { display: grid; } @keyframes panelIn { to { opacity: 1; transform: translateY(0); } } .ep-content h3 { font-family: 'Syne', sans-serif; font-size: 1.5rem; font-weight: 800; margin-bottom: 14px; line-height: 1.2; } .ep-content > p { color: var(--gray-mid); font-size: 0.95rem; line-height: 1.7; margin-bottom: 24px; } .ep-feats { display: flex; flex-direction: column; gap: 18px; } .ep-feat { display: flex; gap: 14px; align-items: flex-start; } .ep-icon { width: 38px; height: 38px; border-radius: 10px; background: var(--glow); border: 1px solid rgba(249,115,22,0.1); display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0; transition: all 0.3s; } .ep-feat:hover .ep-icon { transform: scale(1.1) rotate(-4deg); box-shadow: 0 4px 16px rgba(249,115,22,0.15); } .ep-feat h4 { font-family: 'Syne', sans-serif; font-weight: 700; font-size: 0.92rem; margin-bottom: 3px; } .ep-feat p { color: var(--gray); font-size: 0.8rem; line-height: 1.5; } /* ═══ MARQUEE ═══ */ .marquee-wrap { padding: 30px 0; overflow: hidden; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); } .marquee-track { display: flex; animation: mScroll 40s linear infinite; width: max-content; } .marquee-track:hover { animation-play-state: paused; } .marquee-item { padding: 9px 24px; margin: 0 5px; border: 1px solid var(--border); border-radius: 8px; font-size: 0.78rem; font-weight: 500; white-space: nowrap; color: var(--gray); background: rgba(255,255,255,0.015); transition: all 0.3s; } .marquee-item:hover { color: var(--orange); border-color: var(--border-hover); transform: scale(1.06); } @keyframes mScroll { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} } /* ═══ BENTO MODULES ═══ */ .bento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } .bento-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 14px; padding: 26px; transition: all 0.4s cubic-bezier(0.16,1,0.3,1); position: relative; overflow: hidden; } .bento-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--orange), transparent); opacity: 0; transition: opacity 0.3s; } .bento-card:hover::before { opacity: 1; } .bento-card:hover { border-color: var(--border-hover); transform: translateY(-4px); box-shadow: 0 16px 40px rgba(0,0,0,0.3); } .bento-card.wide { grid-column: span 2; } .bento-top { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 14px; } .bento-icon { font-size: 1.5rem; transition: transform 0.3s; } .bento-card:hover .bento-icon { transform: scale(1.15) rotate(-6deg); } .bento-badge { padding: 3px 10px; border-radius: 100px; font-size: 0.6rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; background: rgba(34,197,94,0.1); color: var(--green); } .bento-card h4 { font-family: 'Syne', sans-serif; font-weight: 700; font-size: 0.95rem; margin-bottom: 6px; } .bento-card p { color: var(--gray); font-size: 0.8rem; line-height: 1.55; } /* ═══ PRICING ═══ */ .pricing-section { padding: 100px 40px; text-align: center; } .pr-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; max-width: 780px; margin: 48px auto 0; } .pr-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; padding: 40px 30px; text-align: left; transition: all 0.4s cubic-bezier(0.16,1,0.3,1); position: relative; } .pr-card.pop { border-color: rgba(249,115,22,0.25); } .pr-card.pop::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--orange), var(--amber)); } .pr-card.pop::after { content: 'Populaire'; position: absolute; top: 14px; right: 16px; background: var(--orange); color: #fff; padding: 4px 12px; border-radius: 100px; font-size: 0.62rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; animation: badgePulse 3s ease-in-out infinite; } @keyframes badgePulse { 0%,100% { box-shadow: 0 0 0 0 rgba(249,115,22,0); } 50% { box-shadow: 0 0 12px 4px rgba(249,115,22,0.2); } } .pr-card:hover { transform: translateY(-5px); box-shadow: 0 24px 60px rgba(0,0,0,0.4); } .pr-type { font-family: 'Syne', sans-serif; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.14em; color: var(--orange); font-weight: 700; margin-bottom: 6px; } .pr-name { font-family: 'Syne', sans-serif; font-size: 1.2rem; font-weight: 800; margin-bottom: 18px; } .pr-amount { display: flex; align-items: baseline; gap: 4px; margin-bottom: 6px; } .pr-big { font-family: 'Syne', sans-serif; font-size: 3.2rem; font-weight: 800; line-height: 1; background: linear-gradient(135deg, var(--orange), var(--amber)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .pr-freq { font-size: 0.88rem; color: var(--gray); } .pr-note { font-size: 0.78rem; color: var(--gray); line-height: 1.5; margin-bottom: 22px; } .pr-list { list-style: none; display: flex; flex-direction: column; gap: 9px; } .pr-list li { display: flex; align-items: center; gap: 10px; font-size: 0.82rem; color: var(--off-white); } .pr-list li::before { content: '\2713'; color: var(--orange); font-weight: 700; font-size: 0.78rem; flex-shrink: 0; } /* ═══ FINAL CTA ═══ */ .final { text-align: center; padding: 120px 40px; position: relative; } .final-glow { position: absolute; inset: 0; background: radial-gradient(ellipse 50% 50% at 50% 60%, rgba(249,115,22,0.06), transparent); pointer-events: none; } .final h2 { font-family: 'Syne', sans-serif; font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 800; margin-bottom: 16px; position: relative; z-index: 2; line-height: 1.1; } .final p { color: var(--gray-mid); font-size: 1rem; margin-bottom: 36px; position: relative; z-index: 2; } .final .btn { position: relative; z-index: 2; } /* ═══ FOOTER ═══ */ .footer { border-top: 1px solid var(--border); padding: 32px 48px; display: flex; justify-content: space-between; align-items: center; color: var(--gray); font-size: 0.72rem; } .footer-left { display: flex; align-items: center; gap: 8px; cursor: pointer; } .footer-left svg { height: 16px; width: 16px; color: var(--orange); } .footer-left b { font-family: 'Syne', sans-serif; font-weight: 800; color: var(--gray-mid); font-size: 0.8rem; } /* ═══ CONFETTI ═══ */ .confetti { position: fixed; pointer-events: none; z-index: 99999; width: 8px; height: 8px; border-radius: 2px; animation: confettiFall 1.5s ease-out forwards; } @keyframes confettiFall { 0% { opacity: 1; transform: translateY(0) rotate(0deg) scale(1); } 100% { opacity: 0; transform: translateY(200px) rotate(720deg) scale(0); } } /* ═══ MATRIX RAIN ═══ */ #matrix-canvas { position: fixed; inset: 0; z-index: 99998; pointer-events: none; opacity: 0; transition: opacity 0.5s; } #matrix-canvas.active { opacity: 1; pointer-events: all; } /* ═══ SECRET MESSAGE ═══ */ .secret-msg { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.8); background: rgba(6,6,6,0.95); border: 1px solid var(--orange); border-radius: 16px; padding: 40px; text-align: center; z-index: 99999; opacity: 0; pointer-events: none; transition: all 0.5s cubic-bezier(0.16,1,0.3,1); max-width: 400px; } .secret-msg.show { opacity: 1; transform: translate(-50%, -50%) scale(1); pointer-events: all; } .secret-msg h3 { font-family: 'Syne', sans-serif; color: var(--orange); margin-bottom: 8px; } .secret-msg p { color: var(--gray-mid); font-size: 0.88rem; line-height: 1.6; } .secret-close { margin-top: 16px; background: var(--orange); color: #fff; border: none; padding: 8px 24px; border-radius: 100px; font-weight: 700; cursor: pointer; font-size: 0.8rem; } /* ═══ RESPONSIVE ═══ */ @media (max-width: 900px) { .nav { padding: 8px 14px; gap: 12px; } .nav-links { display: none; } .hero { padding: 120px 20px 80px; } .stats { grid-template-columns: repeat(2, 1fr); } .stat { border-bottom: 1px solid var(--border); } .section-wrap { padding: 60px 20px; } .feat-block { grid-template-columns: 1fr; gap: 32px; } .feat-block.rev .feat-visual { order: 0; } .engine-panel.active { grid-template-columns: 1fr; } .engine-tabs { flex-wrap: wrap; } .bento { grid-template-columns: 1fr; } .bento-card.wide { grid-column: span 1; } .pr-grid { grid-template-columns: 1fr; } .footer { flex-direction: column; gap: 10px; text-align: center; } }

P.A.M. vous observe 👀

Propulsé par l'IA la plus coquine du marché. Vous pensiez vraiment qu'on n'allait pas mettre d'easter egg? Bienvenue dans l'univers Solutions M.

Propulsé par Solutions M
Automatisation
Programmation
& Publication
Votre business
APP
Un seul tableau de bord. 12 modules.

Vos leads, vos conversations, vos pipelines, vos automatisations et votre contenu social : tout est centralisé dans une seule plateforme conçue pour faire croître votre entreprise.

500$ de configuration · puis 50$/mois · annulez quand vous voulez

0
Modules actifs
Contacts illimités
0
Canaux intégrés
24/7
Automatisations actives
Module principal

Un CRM complet. Pas un carnet d'adresses.

Chaque lead, chaque client, chaque interaction vit dans une fiche unique. Quand quelqu'un vous appelle, vous voyez l'historique complet avant même de décrocher. Fini les fichiers Excel, les Post-it et les "je pensais que t'avais rappelé".

  • Contacts illimités avec profil comportemental
  • Pipelines de vente drag & drop avec valeurs de deals
  • Tags, listes intelligentes et segmentation automatique
  • Historique unifié : appels, emails, SMS, rendez-vous
  • Champs personnalisés pour votre industrie
Pipeline de vente
Sophie BergeronProposition envoyée
Restaurant L'AtelierEn négociation
Clinique Sainte-AnneNouveau lead
Plomberie LavoieClient actif
Marie-Ève CôtéRendez-vous pris
Messagerie unifiée

Toutes vos conversations. Une seule boîte de réception.

Un client texte par SMS. Un autre écrit sur Instagram. Un troisième envoie un email. Normalement, ça veut dire 3 apps et des messages qui tombent entre les craques. Avec APP, tout arrive au même endroit.

  • SMS / MMS bidirectionnels
  • Email avec tracking d'ouverture et de clics
  • DMs Instagram et Facebook Messenger
  • Google Business Chat et WhatsApp
  • Réponses automatisées et templates
  • Historique complet rattaché à chaque contact
Messages entrants
📱SMS — Bonjour, je veux un rendez-vous
📸Instagram — C'est quoi vos tarifs?
📧Email — Suite à notre rencontre...
💚WhatsApp — Merci pour le devis!
💬Messenger — Êtes-vous ouverts samedi?
Le moteur de croissance

Capturez. Convertissez. Fermez.

Le cycle complet de vente, automatisé dans une seule plateforme.

Capturez chaque lead. Automatiquement.

Que ce soit via vos réseaux sociaux, un formulaire web, une pub Facebook ou un appel entrant, chaque prospect atterrit dans votre CRM avec un profil complet.

📄

Formulaires & sondages

Capturez des leads avec des formulaires intégrés à vos pages.

📅

Booking en ligne

Vos prospects réservent eux-mêmes. Rappels automatiques.

🌐

Landing pages & funnels

Builder drag & drop pour des pages à haute conversion.

Nouveaux leads aujourd'hui
Sophie BergeronFormulaire
Restaurant L'AtelierFacebook Ad
Dr. Marc PelletierRendez-vous
Marie-Ève CôtéInstagram

Transformez vos prospects en clients. Sans effort.

APP envoie les bons messages, sur le bon canal, au bon moment. Votre prospect reçoit un SMS 30 secondes après avoir rempli un formulaire. Même à 23h un vendredi.

💬

Multi-canal

SMS, email, Instagram, Messenger, WhatsApp. Une seule inbox.

🤖

Séquences automatisées

Email jour 1, SMS jour 3, relance jour 7. Automatique.

📱

Bidirectionnel

Vos prospects répondent directement. Tout dans APP.

Séquence de nurturing
SMS auto — Bonjour Sophie! Merci pour votre intérêt...
Sophie — Parfait, je réserve pour jeudi!
Email auto — Confirmation de votre rendez-vous...
Rappel SMS — N'oubliez pas, demain à 14h!

Fermez plus de deals. Gardez le contrôle.

Votre pipeline visuel montre exactement où en est chaque opportunité. Combien en négociation, combien prêts à closer, combien en jeu.

📊

Pipeline drag & drop

Déplacez vos deals entre les étapes visuellement.

💳

Paiements intégrés

Collectez via Stripe sur vos pages et bookings.

📈

Analytics

Leads par source, revenus par phase, conversion par étape.

Pipeline ce mois
Nouveaux leads12 deals
Proposition envoyée8 deals
En négociation5 deals · 24 500$
Gagné3 deals · 18 200$
CRM & ContactsPipelinesConversationsSocial PlannerEmail MarketingAutomatisationsBookingFunnels & PagesTéléphonie IPRéputationReportingPaiements CRM & ContactsPipelinesConversationsSocial PlannerEmail MarketingAutomatisationsBookingFunnels & PagesTéléphonie IPRéputationReportingPaiements
Écosystème complet

12 modules. Tous actifs. Zéro intégration.

Tout est inclus dans votre abonnement. Pas de modules à débloquer, pas de frais cachés.

👤
Actif

CRM & Contacts

Base illimitée avec profil comportemental complet. Chaque interaction trackée automatiquement. Tags, listes intelligentes et segmentation avancée.

💬
Actif

Conversations

Boîte de réception unifiée : SMS, email, Instagram, Messenger, WhatsApp, Google Chat.

📊
Actif

Pipelines de vente

Suivez chaque deal visuellement. Valeurs, probabilités, étapes personnalisables.

📅
Actif

Social Planner

Calendrier drag & drop pour Facebook, Instagram, LinkedIn, Google Business et TikTok.

📧
Actif

Email Marketing

Builder drag & drop, templates, séquences automatisées et analytics.

🤖
Actif

Automatisations

Workflows visuels multi-canal. Triggers, conditions et actions sans code.

📆
Actif

Calendrier & Booking

Prise de rendez-vous en ligne avec rappels SMS/email et sync Google Calendar.

🌐
Actif

Funnels & Landing Pages

Builder drag & drop pour créer des funnels de vente et landing pages optimisées. Templates par industrie, formulaires intégrés, A/B testing et analytics.

📞
Actif

Téléphonie IP

Appels entrants/sortants, call tracking, enregistrement et voicemail drops.

Actif

Réputation

Demandes d'avis automatisées, monitoring Google Reviews et alertes.

📈
Actif

Reporting

Tableaux de bord marketing, attribution par canal et rapports exportables.

💳
Actif

Paiements

Intégration Stripe pour collecter paiements sur pages, funnels et bookings.

Tarification

Simple. Transparent. Complet.

12 modules actifs à une fraction du coût de 7 outils séparés.

Unique
Configuration
500$
On configure tout pour vous. CRM, pipelines, canaux, automatisations de base et formation.
  • CRM personnalisé à votre industrie
  • Pipelines de vente sur mesure
  • Connexion de vos canaux
  • Automatisations de base configurées
  • Formation de démarrage
Mensuel
Plateforme APP
50$ /mois
Accès complet aux 12 modules. Contacts illimités. Sans engagement.
  • 12 modules actifs
  • Contacts illimités
  • Conversations multi-canal
  • Pipelines & CRM
  • Email & Social Planner
  • Automatisations
  • Booking, Funnels, Téléphonie
  • Réputation, Reporting, Paiements
  • Support Solutions M

Prêt à centraliser
votre croissance?

12 modules. 50$/mois. Zéro intégration à maintenir.

// ═══════════ SCROLL ANIMATIONS (Intersection Observer) ═══════════ const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('visible'); // Stagger feat-list items const list = entry.target.querySelector('.feat-list'); if (list) { list.classList.add('animated'); list.querySelectorAll('li').forEach((li, i) => { li.style.transitionDelay = `${0.15 * i}s`; }); } } }); }, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' }); document.querySelectorAll('.reveal, .reveal-scale').forEach(el => observer.observe(el)); // ═══════════ ANIMATED STAT COUNTERS ═══════════ const counterObserver = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const el = entry.target; const target = parseInt(el.dataset.count); const suffix = el.dataset.suffix || ''; if (!target) return; let current = 0; const step = Math.ceil(target / 30); const interval = setInterval(() => { current += step; if (current >= target) { current = target; clearInterval(interval); } el.textContent = current + suffix; }, 40); counterObserver.unobserve(el); } }); }, { threshold: 0.5 }); document.querySelectorAll('.stat-num[data-count]').forEach(el => counterObserver.observe(el)); // ═══════════ NAV SCROLL ═══════════ window.addEventListener('scroll', () => { document.getElementById('mainNav').classList.toggle('scrolled', window.scrollY > 60); }); // ═══════════ CURSOR GLOW ═══════════ const glow = document.getElementById('cursorGlow'); document.addEventListener('mousemove', e => { glow.style.left = e.clientX + 'px'; glow.style.top = e.clientY + 'px'; }); // ═══════════ HERO PARTICLES ═══════════ const particleContainer = document.getElementById('particles'); for (let i = 0; i { p.classList.remove('active'); p.style.animation = 'none'; }); document.querySelectorAll('.engine-tab').forEach(t => t.classList.remove('active')); const panel = document.getElementById('tab-' + id); panel.classList.add('active'); panel.style.animation = 'none'; panel.offsetHeight; // trigger reflow panel.style.animation = 'panelIn 0.5s cubic-bezier(0.16,1,0.3,1) forwards'; event.target.classList.add('active'); } // ═══════════════════════════════════════ // EASTER EGGS // ═══════════════════════════════════════ // 1. CONFETTI on green dot click document.getElementById('heroBadge').addEventListener('click', (e) => { const colors = ['#f97316', '#fbbf24', '#22c55e', '#60a5fa', '#a78bfa', '#f43f5e']; for (let i = 0; i c.remove(), 2000); } }); // 2. TRIPLE-CLICK logo footer -> secret P.A.M. message let footerClicks = 0; let footerTimer; document.getElementById('footerLogo').addEventListener('click', () => { footerClicks++; clearTimeout(footerTimer); footerTimer = setTimeout(() => footerClicks = 0, 600); if (footerClicks >= 3) { document.getElementById('secretMsg').classList.add('show'); footerClicks = 0; } }); // 3. KONAMI CODE -> Matrix rain const konamiCode = [38,38,40,40,37,39,37,39,66,65]; let konamiIndex = 0; let matrixActive = false; document.addEventListener('keydown', (e) => { if (e.keyCode === konamiCode[konamiIndex]) { konamiIndex++; if (konamiIndex === konamiCode.length) { konamiIndex = 0; toggleMatrix(); } } else { konamiIndex = 0; } }); function toggleMatrix() { const canvas = document.getElementById('matrix-canvas'); matrixActive = !matrixActive; canvas.classList.toggle('active', matrixActive); if (matrixActive) startMatrix(canvas); else setTimeout(() => { canvas.classList.remove('active'); }, 500); } function startMatrix(canvas) { const ctx = canvas.getContext('2d'); canvas.width = window.innerWidth; canvas.height = window.innerHeight; const chars = 'APPSOLUTIONSMHUBLEE01'.split(''); const fontSize = 14; const columns = Math.floor(canvas.width / fontSize); const drops = Array(columns).fill(1); function draw() { if (!matrixActive) return; ctx.fillStyle = 'rgba(6,6,6,0.06)'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#f97316'; ctx.font = fontSize + 'px Syne'; drops.forEach((y, i) => { const text = chars[Math.floor(Math.random() * chars.length)]; ctx.fillText(text, i * fontSize, y * fontSize); if (y * fontSize > canvas.height && Math.random() > 0.975) drops[i] = 0; drops[i]++; }); requestAnimationFrame(draw); } draw(); // Auto-stop after 6 seconds setTimeout(() => { matrixActive = false; canvas.classList.remove('active'); }, 6000); } // Click matrix to dismiss document.getElementById('matrix-canvas').addEventListener('click', () => { matrixActive = false; document.getElementById('matrix-canvas').classList.remove('active'); }); // 4. CONSOLE easter egg console.log('%c🔥 APP by Solutions M', 'font-size: 24px; font-weight: bold; color: #f97316;'); console.log('%cP.A.M. dit: "Si tu lis ça, tu es probablement un dev curieux. Respect. 😏"', 'font-size: 12px; color: #a1a1aa;'); console.log('%cTry the Konami code: ↑↑↓↓←→←→BA', 'font-size: 11px; color: #71717a;'); // 5. LOGO NAV double-click -> quick spin document.getElementById('navLogo').addEventListener('dblclick', (e) => { e.preventDefault(); const svg = e.currentTarget.querySelector('svg'); svg.style.transition = 'transform 0.6s cubic-bezier(0.16,1,0.3,1)'; svg.style.transform = 'rotate(360deg)'; setTimeout(() => { svg.style.transform = ''; }, 700); });