PageSourceSearch

https://marketlyzer.ai/pricing

html marketlyzer.ai collected 2026-10-05 12:13:46 UTC 69,606 bytes, 1,179 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <meta name="description" content="Marketlyzer scales with your team. One plan with everything included, per-seat pricing starting at $1,000/month — plus a custom enterprise package with white-label and on-premise deployment.">
7    <meta name="author" content="Marketlyzer">
8    <meta name="robots" content="index, follow">
9
10    <!-- Canonical URL for SEO -->
11    <link rel="canonical" href="https://marketlyzer.ai/pricing" />
12
13    <!-- Open Graph / Facebook -->
14    <meta property="og:type" content="website">
15    <meta property="og:url" content="https://marketlyzer.ai/pricing">
16    <meta property="og:title" content="Pricing | Marketlyzer">
17    <meta property="og:description" content="Marketlyzer scales with your team. One plan with everything included, per-seat pricing starting at $1,000/month — plus a custom enterprise package with white-label and on-premise deployment.">
18    <meta property="og:image" content="http://marketlyzer.ai/static/img/logo.png">
19    <meta property="og:image:width" content="1200">
20    <meta property="og:image:height" content="630">
21    <meta property="og:image:type" content="image/png">
22    <meta property="og:site_name" content="Marketlyzer">
23    <meta property="og:locale" content="en_US">
24    
25    <!-- Twitter -->
26    <meta name="twitter:card" content="summary_large_image">
27    <meta name="twitter:url" content="https://marketlyzer.ai/pricing">
28    <meta name="twitter:title" content="Pricing | Marketlyzer">
29    <meta name="twitter:description" content="Marketlyzer scales with your team. One plan with everything included, per-seat pricing starting at $1,000/month — plus a custom enterprise package with white-label and on-premise deployment.">
30    <meta name="twitter:image" content="http://marketlyzer.ai/static/img/logo.png">
31    <meta name="twitter:image:alt" content="Marketlyzer - Location Intelligence & Foot Traffic Analysis">
32    <meta name="twitter:creator" content="@marketlyzer">
33    
34    <title>Pricing | Marketlyzer</title>
35    
36    <!-- Preconnect to external domains for performance -->
37    <link rel="preconnect" href="https://fonts.googleapis.com">
38    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
39    <link rel="preconnect" href="https://cdn.jsdelivr.net">
40    <link rel="preconnect" href="https://unpkg.com">
41    <link rel="preconnect" href="https://cdnjs.cloudflare.com">
42    
43    <!-- Google Fonts - Updated for better UI -->
44    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Manrope:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
45    
46    <!-- Font Awesome -->
47    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
48    
49    <!-- Tailwind CSS via CDN -->
50    
50<script src="https://cdn.tailwindcss.com"></script>
50
51    
52    <!-- Favicon and App Icons -->
53    <link rel="icon" href="/static/img/favicon/favicon.ico" sizes="any">
54    <link rel="icon" type="image/png" sizes="16x16" href="/static/img/favicon/favicon-16x16.png">
55    <link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon/favicon-32x32.png">
56    <link rel="apple-touch-icon" sizes="180x180" href="/static/img/favicon/apple-touch-icon.png">
57    <link rel="manifest" href="/static/site.webmanifest">
58    
59    <!-- Android Chrome Icons -->
60    <link rel="icon" type="image/png" sizes="192x192" href="/static/img/favicon/android-chrome-192x192.png">
61    <link rel="icon" type="image/png" sizes="512x512" href="/static/img/favicon/android-chrome-512x512.png">
62    
63    <!-- Theme color for mobile browsers -->
64    <meta name="theme-color" content="#3B82F6">
65    <meta name="msapplication-TileColor" content="#3B82F6">
66    <meta name="msapplication-TileImage" content="/static/img/favicon/android-chrome-192x192.png">
67    
68    <!-- Apple mobile web app settings -->
69    <meta name="apple-mobile-web-app-capable" content="yes">
70    <meta name="apple-mobile-web-app-status-bar-style" content="default">
71    <meta name="apple-mobile-web-app-title" content="Marketlyzer">
72    
73    <!-- Critical CSS Inline (would be inlined in production) -->
74    <style>
75      /* Critical rendering styles */
76      body {
77        font-family: 'Inter', sans-serif;
78        color: #1f2937;
79        overflow-x: hidden;
80        line-height: 1.5;
81      }
82      h1, h2, h3, h4, h5, h6 {
83        font-family: 'Manrope', sans-serif;
84        font-weight: 600;
85        line-height: 1.2;
86      }
87
88      /* Remove default focus outline on click/tap */
89      button:focus:not(:focus-visible),
90      a:focus:not(:focus-visible) {
91        outline: none;
92      }
93
94      /* Keep focus visible for keyboard navigation (accessibility) */
95      button:focus-visible,
96      a:focus-visible {
97        outline: 2px solid rgba(99, 102, 241, 0.5);
98        outline-offset: 2px;
99      }
100    </style>
101    
102    <!-- Optimized CSS Structure -->
103    <link rel="stylesheet" href="/static/css/variables.css">
104    <link rel="stylesheet" href="/static/css/main.css">
105
106    <!-- Landing/public navbar styles for non-authenticated users -->
107    
108    <link rel="stylesheet" href="/static/css/landing.css">
109    
110
111    <!-- Conditional CSS Loading Based on Page Type -->
112    
113    
114    
115    
116    <!-- Leaflet - Only on pages that need maps -->
117    
118
119    <!-- Basemap provider — loaded everywhere, since child templates pull in
120         Leaflet from their own head block. maplibre-gl is fetched lazily on
121         first map render, so pages without a map pay nothing. -->
122    
122<script>window.MKT_BASEMAP_CONFIG = {"cartoApiKey": "", "provider": "openfreemap"};</script>
122
123    <!-- Not deferred: the map scripts that call it (business-explorer.js,
124         building-analysis.js, ...) are plain body scripts and would run first. -->
125    
125<script src="/static/js/basemap.js?v=1791202426"></script>
125
126    
127    <!-- Chart.js for visualizations - Deferred loading -->
128    
128<script defer src="https://cdn.jsdelivr.net/npm/chart.js"></script>
128
129    
130    <!-- Alpine.js for interactive components -->
131    
131<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script>
131
132    
133    <!-- AOS Animation Library - Deferred loading -->
134    
134<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/aos.js"></script>
134
135    
136    <!-- Base JavaScript -->
137    
137<script defer src="/static/js/base.js"></script>
137
138    
139    <!-- Schema.org structured data -->
140    
141    
141<script type="application/ld+json">
142    {
143      "@context": "https://schema.org",
144      "@type": "Organization",
145      "name": "Marketlyzer",
146      "url": "https://marketlyzer.ai",
147      "logo": "https://marketlyzer.ai/static/img/logo.png",
148      "contactPoint": {
149        "@type": "ContactPoint",
150        "contactType": "customer service",
151        "availableLanguage": "English"
152      },
153      "sameAs": [
154        "https://twitter.com/marketlyzer",
155        "https://www.linkedin.com/company/marketlyzer-ai"
156      ],
157      "description": "Marketlyzer is a location intelligence platform that helps enterprise teams make data-driven decisions about site selection and expansion strategy.",
158      "address": {
159        "@type": "PostalAddress",
160        "addressCountry": "US"
161      }
162    }
163    </script>
163
164    
164<script type="application/ld+json">
165    {
166      "@context": "https://schema.org",
167      "@type": "WebSite",
168      "name": "Marketlyzer",
169      "url": "https://marketlyzer.ai",
170      "publisher": {
171        "@type": "Organization",
172        "name": "Marketlyzer",
173        "logo": {
174          "@type": "ImageObject",
175          "url": "https://marketlyzer.ai/static/img/logo.png"
176        }
177      }
178    }
179    </script>
179
180    
180<script type="application/ld+json">
181    {
182      "@context": "https://schema.org",
183      "@type": "ItemList",
184      "itemListElement": [
185        {
186          "@type": "SiteNavigationElement",
187          "position": 1,
188          "name": "Home",
189          "url": "https://marketlyzer.ai/"
190        },
191        {
192          "@type": "SiteNavigationElement",
193          "position": 2,
194          "name": "Pricing",
195          "description": "Flexible pricing plans for location intelligence",
196          "url": "https://marketlyzer.ai/pricing"
197        },
198        {
199          "@type": "SiteNavigationElement",
200          "position": 3,
201          "name": "Schedule Demo",
202          "description": "Book a personalized demo of our platform",
203          "url": "https://marketlyzer.ai/schedule-demo"
204        },
205        {
206          "@type": "SiteNavigationElement",
207          "position": 4,
208          "name": "Sign Up",
209          "description": "Create your Marketlyzer account",
210          "url": "https://marketlyzer.ai/sign-up"
211        },
212        {
213          "@type": "SiteNavigationElement",
214          "position": 5,
215          "name": "Contact",
216          "description": "Get in touch with our team",
217          "url": "https://marketlyzer.ai/contact"
218        }
219      ]
220    }
221    </script>
221
222    
222<script type="application/ld+json">
223    {
224      "@context": "https://schema.org",
225      "@type": "BreadcrumbList",
226      "itemListElement": [
227        {
228          "@type": "ListItem",
229          "position": 1,
230          "name": "Home",
231          "item": "https://marketlyzer.ai/"
232        },
233        {
234          "@type": "ListItem",
235          "position": 2,
236          "name": "Pricing | Marketlyzer",
237          "item": "http://marketlyzer.ai/pricing"
238        }
239      ]
240    }
241    </script>
241
242    
243    
244    <!-- Plausible Analytics -->
245    <!-- Privacy-friendly analytics by Plausible -->
246    
246<script async src="https://plausible.io/js/pa-PknVCi6GqiT9Ut6HErkBq.js"></script>
246
247    
247<script>
248    window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
249    plausible.init()
250    </script>
250
251
252    
253    
254<link rel="preconnect" href="https://fonts.googleapis.com">
255<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
256<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet">
257<link rel="stylesheet" href="/static/css/landing.css">
258<link rel="stylesheet" href="/static/css/pricing.css">
259
260</head>
261<body class="bg-gray-50 min-h-screen custom-scrollbar" x-data="{ commandPaletteOpen: false, theme: localStorage.getItem('theme') || 'light' }" x-init="$watch('theme', val => { localStorage.setItem('theme', val); document.documentElement.classList.toggle('dark', val === 'dark') })">
262    <!-- Page Load Progress Bar -->
263    <div id="progress-bar" class="fixed top-0 left-0 h-1 bg-gradient-to-r from-primary-500 via-secondary-500 to-primary-600 z-[100] transition-all duration-300" style="width: 0%;"></div>
264
265
266    
267    
268    <!-- Landing page navbar for non-authenticated users -->
269    <header class="mtl-nav">
270        <div class="mtl-nav__inner">
271            <a href="/" class="flex items-center group">
272                <div class="bg-gradient-to-br from-primary-500 via-primary-600 to-secondary-500 rounded-xl p-2.5 mr-3 shadow-md group-hover:shadow-lg transform group-hover:scale-105 transition-all duration-300">
273                    <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5">
274                        <defs>
275                            <linearGradient id="pinGradient2" x1="0%" y1="0%" x2="100%" y2="100%">
276                                <stop offset="0%" style="stop-color:currentColor;stop-opacity:0.3" />
277                                <stop offset="100%" style="stop-color:currentColor;stop-opacity:0.1" />
278                            </linearGradient>
279                            <linearGradient id="coreGradient2" x1="0%" y1="0%" x2="100%" y2="100%">
280                                <stop offset="0%" style="stop-color:currentColor;stop-opacity:1" />
281                                <stop offset="100%" style="stop-color:currentColor;stop-opacity:0.8" />
282                            </linearGradient>
283                        </defs>
284                        <path d="M12 2C8.134 2 5 5.134 5 9c0 6.25 7 15 7 15s7-8.75 7-15c0-3.866-3.134-7-7-7z"
285                              fill="url(#pinGradient2)"
286                              stroke="currentColor"
287                              stroke-width="1.2"/>
288                        <circle cx="12" cy="9" r="3" fill="url(#coreGradient2)" stroke="currentColor" stroke-width="0.5"/>
289                    </svg>
290                </div>
291                <span class="text-xl font-bold font-display bg-clip-text text-transparent bg-gradient-to-r from-primary-600 via-primary-500 to-secondary-600 group-hover:from-primary-500 group-hover:via-primary-600 group-hover:to-secondary-500 transition-all duration-300 group-hover:scale-105 transform origin-left">Marketlyzer</span>
292            </a>
293            <nav class="mtl-nav__links">
294                <a href="/" class="nav-link group flex items-center px-3 py-2 text-sm font-medium rounded-lg text-gray-700 hover:text-purple-600 hover:bg-purple-50/50 transition-all duration-200">
295                    <div class="flex items-center justify-center w-8 h-8 rounded-lg bg-purple-100 text-purple-600 mr-2 group-hover:bg-purple-200 transition-colors duration-200">
296                        <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
297                    </div>
298                    <span>Explore Markets</span>
299                </a>
300                <a href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener" class="nav-link group flex items-center px-3 py-2 text-sm font-medium rounded-lg text-gray-700 hover:text-primary-600 hover:bg-primary-50/50 transition-all duration-200">
301                    <div class="flex items-center justify-center w-8 h-8 rounded-lg bg-primary-100 text-primary-600 mr-2 group-hover:bg-primary-200 transition-colors duration-200">
302                        <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>
303                    </div>
304                    <span>Schedule demo</span>
305                </a>
306                <a href="/pricing" class="nav-link group flex items-center px-3 py-2 text-sm font-medium rounded-lg text-gray-700 hover:text-secondary-600 hover:bg-secondary-50/50 transition-all duration-200">
307                    <div class="flex items-center justify-center w-8 h-8 rounded-lg bg-secondary-100 text-secondary-600 mr-2 group-hover:bg-secondary-200 transition-colors duration-200">
308                        <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6"/></svg>
309                    </div>
310                    <span>Pricing</span>
311                </a>
312                <a href="/careers" class="nav-link group flex items-center px-3 py-2 text-sm font-medium rounded-lg text-gray-700 hover:text-purple-600 hover:bg-purple-50/50 transition-all duration-200">
313                    <div class="flex items-center justify-center w-8 h-8 rounded-lg bg-purple-100 text-purple-600 mr-2 group-hover:bg-purple-200 transition-colors duration-200">
314                        <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v16"/></svg>
315                    </div>
316                    <span>Careers</span>
317                </a>
318                <a href="/contact" class="nav-link group flex items-center px-3 py-2 text-sm font-medium rounded-lg text-gray-700 hover:text-green-600 hover:bg-green-50/50 transition-all duration-200">
319                    <div class="flex items-center justify-center w-8 h-8 rounded-lg bg-green-100 text-green-600 mr-2 group-hover:bg-green-200 transition-colors duration-200">
320                        <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" 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>
321                    </div>
322                    <span>Contact</span>
323                </a>
324            </nav>
325            <div class="mtl-nav__actions">
326                <a class="mtl-btn mtl-btn--ghost" href="/sign-in">Sign in</a>
327                <a class="mtl-btn mtl-btn--primary" href="/sign-up">Get started</a>
328            </div>
329            <!-- Mobile hamburger -->
330            <button class="mtl-nav__hamburger" id="mtlNavToggle" aria-label="Open menu" aria-expanded="false">
331                <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M4 6h16M4 12h16M4 18h16"/></svg>
332            </button>
333        </div>
334        <!-- Mobile drawer -->
335        <div class="mtl-nav__mobile" id="mtlNavMobile">
336            <a href="/">Explore Markets</a>
337            <a href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener">Schedule demo</a>
338            <a href="/pricing">Pricing</a>
339            <a href="/careers">Careers</a>
340            <a href="/contact">Contact</a>
341            <div class="mtl-nav__mobile-actions">
342                <a class="mtl-btn mtl-btn--ghost" href="/sign-in">Sign in</a>
343                <a class="mtl-btn mtl-btn--primary" href="/sign-up">Get started</a>
344            </div>
345        </div>
346        </div>
347    </header>
348    
349    
350
351    <main>
352        <!-- Notification system (Fixed position) -->
353<div id="notifications-container" class="fixed top-20 inset-x-0 z-50 flex flex-col items-center space-y-3 pointer-events-none">
354    
355    
356    
357</div>
358
359<!-- Notification JavaScript -->
360<script>
361document.addEventListener('DOMContentLoaded', function() {
362    // Initialize notifications
363    initNotifications();
364});
365
366// Notifications functions
367function initNotifications() {
368    const toasts = document.querySelectorAll('.notification-toast');
369    
370    toasts.forEach((toast, index) => {
371        // Stagger the appearance of multiple notifications
372        setTimeout(() => {
373            // Show the notification with animation
374            toast.style.opacity = '1';
375            toast.style.transform = 'translateY(0)';
376            
377            // Auto dismiss after 5 seconds (error messages stay longer)
378            const isError = toast.classList.contains('error');
379            const dismissTime = isError ? 8000 : 5000;
380            
381            setTimeout(() => {
382                dismissNotification(toast);
383            }, dismissTime);
384        }, index * 200); // Stagger by 200ms
385    });
386}
387
388function dismissNotification(element) {
389    // Add dismiss animation
390    element.style.opacity = '0';
391    element.style.transform = 'translateY(-4px)';
392    
393    // Remove from DOM after animation completes
394    setTimeout(() => {
395        if (element.parentNode) {
396            element.parentNode.removeChild(element);
397        }
398    }, 300);
399}
400
401// Function to create a notification programmatically
402window.showNotification = function(message, category = 'info') {
403    const container = document.getElementById('notifications-container');
404    if (!container) return;
405    
406    // Create notification element
407    const notification = document.createElement('div');
408    notification.className = `notification-toast pointer-events-auto opacity-0 transform -translate-y-4 flex items-center max-w-md p-4 pr-8 rounded-lg shadow-lg backdrop-blur-md transition-all duration-300`;
409    
410    // Add category-specific styling
411    if (category === 'error') {
412        notification.classList.add('bg-red-50/90', 'text-red-800', 'border-l-4', 'border-red-500', 'error');
413    } else if (category === 'success') {
414        notification.classList.add('bg-green-50/90', 'text-green-800', 'border-l-4', 'border-green-500', 'success');
415    } else {
416        notification.classList.add('bg-blue-50/90', 'text-blue-800', 'border-l-4', 'border-blue-500', 'info');
417    }
418    
419    // Icon color based on category
420    const iconColor = category === 'error' ? 'text-red-500' : 
421                    category === 'success' ? 'text-green-500' : 'text-blue-500';
422    
423    // Path based on category
424    let path;
425    if (category === 'error') {
426        path = 'M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z';
427    } else if (category === 'success') {
428        path = 'M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z';
429    } else {
430        path = 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z';
431    }
432    
433    // Create inner content
434    notification.innerHTML = `
435        <div class="flex items-center">
436            <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 mr-2 ${iconColor}" fill="none" viewBox="0 0 24 24" stroke="currentColor">
437                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="${path}" />
438            </svg>
439            <span>${message}</span>
440        </div>
441        <button onclick="dismissNotification(this.parentElement)" class="absolute top-3 right-2 text-gray-500 hover:text-gray-700">
442            <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
443                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
444            </svg>
445        </button>
446    `;
447    
448    // Add to container
449    container.appendChild(notification);
450    
451    // Animate in and set auto-dismiss
452    setTimeout(() => {
453        notification.style.opacity = '1';
454        notification.style.transform = 'translateY(0)';
455        
456        // Auto dismiss
457        const dismissTime = category === 'error' ? 8000 : 5000;
458        setTimeout(() => {
459            dismissNotification(notification);
460        }, dismissTime);
461    }, 10);
462    
463    return notification;
464}
465</script>
465 
466        
467<div class="mtl-landing" id="pricingPage">
468
469    <!-- Hero -->
470    <section class="mtl-pricing-hero">
471        <div class="mtl-container">
472            <span class="mtl-pill">Simple, transparent pricing</span>
473            <h1 class="mtl-pricing-hero__title">
474                One plan that scales with
475                <span class="mtl-gradient-text">your team</span>
476            </h1>
477            <p class="mtl-hero__subtitle">
478                Every feature included. Pay per seat — monthly or annual.
479            </p>
480
481            <!-- Billing toggle -->
482            <div class="mtl-pricing-toggle">
483                <span class="mtl-pricing-toggle__label mtl-pricing-toggle__label--active" data-billing="monthly">Monthly</span>
484                <div class="mtl-pricing-toggle__track" id="billingToggle" role="switch" aria-checked="false" aria-label="Toggle annual billing">
485                    <div class="mtl-pricing-toggle__thumb"></div>
486                </div>
487                <span class="mtl-pricing-toggle__label" data-billing="annual">Annual</span>
488                <span class="mtl-pricing-toggle__save">SAVE 20%</span>
489            </div>
490        </div>
491    </section>
492
493    <!-- Plan grid -->
494    <section class="mtl-section mtl-section--plans">
495        <div class="mtl-container">
496            <div class="mtl-plans-grid">
497
498                <!-- Pro Plan -->
499                <article class="mtl-pp" id="proPlan">
500                    <header class="mtl-pp__header">
501                        <span class="mtl-pp__badge mtl-pp__badge--pro">
502                            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
503                            Pro
504                        </span>
505                        <h2 class="mtl-pp__name">Marketlyzer Pro</h2>
506                        <p class="mtl-pp__desc">The complete Marketlyzer platform — every module and feature included, on one transparent per-seat price.</p>
507                    </header>
508
509                    <!-- Live price -->
510                    <div class="mtl-pp__price">
511                        <span class="mtl-pp__price-label">Starts at</span>
512                        <div class="mtl-pp__price-row">
513                            <span class="mtl-pp__price-currency">$</span>
514                            <span class="mtl-pp__price-amount" id="priceAmount">1,000</span>
515                            <span class="mtl-pp__price-period">/month</span>
516                        </div>
517                        <div class="mtl-pp__price-meta">
518                            <span class="mtl-pp__price-billed" id="priceBilled">Billed monthly</span>
519                        </div>
520                    </div>
521
522                    <!-- Seat selector -->
523                    <div class="mtl-seats">
524                        <div class="mtl-seats__header">
525                            <div>
526                                <div class="mtl-seats__title">Team size</div>
527                                <div class="mtl-seats__sub">Starting at 5 seats — scale as you grow</div>
528                            </div>
529                            <div class="mtl-seats__stepper">
530                                <button type="button" class="mtl-seats__step" id="seatsDown" aria-label="Decrease seats">
531                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="5" y1="12" x2="19" y2="12"/></svg>
532                                </button>
533                                <div class="mtl-seats__count">
534                                    <input type="number" class="mtl-seats__input" id="seatsInput" value="5" min="5" max="50" inputmode="numeric" />
535                                    <span class="mtl-seats__count-label">seats</span>
536                                </div>
537                                <button type="button" class="mtl-seats__step" id="seatsUp" aria-label="Increase seats">
538                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
539                                </button>
540                            </div>
541                        </div>
542                        <div class="mtl-seats__slider-wrap">
543                            <input type="range" class="mtl-seats__slider" id="seatsSlider" min="5" max="50" value="5" step="1" aria-label="Number of seats" />
544                            <div class="mtl-seats__ticks">
545                                <span>5</span>
546                                <span>15</span>
547                                <span>25</span>
548                                <span>35</span>
549                                <span>50+</span>
550                            </div>
551                        </div>
552                    </div>
553
554                    <!-- Features -->
555                    <div class="mtl-pp__features">
556                        <div class="mtl-pp__features-title">Everything included</div>
557                        <ul class="mtl-pp__features-grid">
558                            <li class="mtl-pp__feature">
559                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--primary">
560                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"/></svg>
561                                </span>
562                                <span>Market Explorer</span>
563                            </li>
564                            <li class="mtl-pp__feature">
565                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--primary">
566                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 4m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"/><path d="M7 21l3 -4"/><path d="M16 21l-2 -4l-3 -3l1 -6"/><path d="M6 12l2 -3l4 -1l3 3l3 1"/></svg>
567                                </span>
568                                <span>Foot traffic analytics</span>
569                            </li>
570                            <li class="mtl-pp__feature">
571                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--teal">
572                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
573                                </span>
574                                <span>Demographics &amp; population</span>
575                            </li>
576                            <li class="mtl-pp__feature">
577                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--pink">
578                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>
579                                </span>
580                                <span>Competition mapping</span>
581                            </li>
582                            <li class="mtl-pp__feature">
583                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--green">
584                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="19" r="3"/><path d="M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15"/><circle cx="18" cy="5" r="3"/></svg>
585                                </span>
586                                <span>Pedestrian infrastructure</span>
587                            </li>
588                            <li class="mtl-pp__feature">
589                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--blue">
590                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M5 21V7l8-4v18"/><path d="M19 21V11l-6-4"/><path d="M9 9v.01"/><path d="M9 13v.01"/><path d="M9 17v.01"/></svg>
591                                </span>
592                                <span>3D building analysis</span>
593                            </li>
594                            <li class="mtl-pp__feature">
595                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--indigo">
596                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 10a7.31 7.31 0 0 0 10 10Z"/><path d="m9 15 3-3"/><path d="M17 13a6 6 0 0 0-6-6"/><path d="M21 13A10 10 0 0 0 11 3"/></svg>
597                                </span>
598                                <span>Satellite imagery</span>
599                            </li>
600                            <li class="mtl-pp__feature">
601                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--green">
602                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
603                                </span>
604                                <span>Cost of living data</span>
605                            </li>
606                            <li class="mtl-pp__feature">
607                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--amber">
608                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="M20 12h2"/><path d="m19.07 4.93-1.41 1.41"/><path d="M15.947 12.65a4 4 0 0 0-5.925-4.128"/><path d="M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z"/></svg>
609                                </span>
610                                <span>Weather insights</span>
611                            </li>
612                            <li class="mtl-pp__feature">
613                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--purple">
614                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l1.9 4.9L19 9.8l-4.1 3.1L16.2 18 12 15.3 7.8 18l1.3-5.1L5 9.8l5.1-1.9L12 3z"/></svg>
615                                </span>
616                                <span>AI Market Analyst</span>
617                            </li>
618                            <li class="mtl-pp__feature">
619                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--teal">
620                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/></svg>
621                                </span>
622                                <span>Review sentiment analysis</span>
623                            </li>
624                            <li class="mtl-pp__feature">
625                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--pink">
626                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><line x1="7" y1="7" x2="7.01" y2="7"/></svg>
627                                </span>
628                                <span>Customer theme detection</span>
629                            </li>
630                            <li class="mtl-pp__feature">
631                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--amber">
632                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2"/><path d="M18 14h-8"/>
632<path d="M15 18h-5"/><path d="M10 6h8v4h-8V6Z"/></svg>
633                                </span>
634                                <span>Brand news monitoring</span>
635                            </li>
636                            <li class="mtl-pp__feature">
637                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--primary">
638                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
639                                </span>
640                                <span>Branch discovery</span>
641                            </li>
642                            <li class="mtl-pp__feature">
643                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--indigo">
644                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>
645                                </span>
646                                <span>Success factor modeling</span>
647                            </li>
648                            <li class="mtl-pp__feature">
649                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--teal">
650                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="17 1 21 5 17 9"/><path d="M3 11V9a4 4 0 0 1 4-4h14"/><polyline points="7 23 3 19 7 15"/><path d="M21 13v2a4 4 0 0 1-4 4H3"/></svg>
651                                </span>
652                                <span>Location comparison</span>
653                            </li>
654                            <li class="mtl-pp__feature">
655                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--blue">
656                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>
657                                </span>
658                                <span>Foot traffic heatmaps</span>
659                            </li>
660                            <li class="mtl-pp__feature">
661                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--sky">
662                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
663                                </span>
664                                <span>Branded PDF reports</span>
665                            </li>
666                            <li class="mtl-pp__feature">
667                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--indigo">
668                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/></svg>
669                                </span>
670                                <span>Shareable web reports</span>
671                            </li>
672                            <li class="mtl-pp__feature">
673                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--slate">
674                                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
675                                </span>
676                                <span>REST API access</span>
677                            </li>
678                        </ul>
679                    </div>
680
681                    <a class="mtl-btn mtl-btn--primary mtl-pp__cta" href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener">
682                        Schedule demo
683                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>
684                    </a>
685                </article>
686
687                <!-- Enterprise Plan -->
688                <article class="mtl-pp mtl-pp--enterprise" id="enterprisePlan">
689                    <header class="mtl-pp__header">
690                        <span class="mtl-pp__badge mtl-pp__badge--ent">
691                            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
692                            Enterprise
693                        </span>
694                        <h2 class="mtl-pp__name">Marketlyzer Enterprise</h2>
695                        <p class="mtl-pp__desc">For organizations that need a fully tailored deployment — your branding, your infrastructure, your terms.</p>
696                    </header>
697
698                    <!-- Custom price -->
699                    <div class="mtl-pp__price mtl-pp__price--enterprise">
700                        <div class="mtl-pp__price-row">
701                            <span class="mtl-pp__price-custom">Custom</span>
702                        </div>
703                        <div class="mtl-pp__price-meta">
704                            <span class="mtl-pp__price-billed">Tailored to your scale &amp; deployment model</span>
705                        </div>
706                    </div>
707
708                    <!-- Enterprise highlights -->
709                    <div class="mtl-ent-highlights">
710                        <div class="mtl-ent-highlight">
711                            <div class="mtl-ent-highlight__icon mtl-ent-highlight__icon--whitelabel">
712                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="13.5" cy="6.5" r="2.5"/><path d="M17.5 10.5a2.5 2.5 0 1 0 0-5"/><circle cx="8.5" cy="8.5" r="2.5"/><circle cx="6.5" cy="14.5" r="2.5"/><circle cx="12" cy="18" r="2.5"/><circle cx="17.5" cy="15.5" r="2.5"/></svg>
713                            </div>
714                            <div>
715                                <strong>White-label platform</strong>
716                                <p>Your brand, your domain, your customers — fully reskinned with custom theming, logos, and email.</p>
717                            </div>
718                        </div>
719                        <div class="mtl-ent-highlight">
720                            <div class="mtl-ent-highlight__icon mtl-ent-highlight__icon--server">
721                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg>
722                            </div>
723                            <div>
724                                <strong>On-premise &amp; private cloud</strong>
725                                <p>Deploy inside your VPC, on your own servers, or air-gapped. Full data sovereignty included.</p>
726                            </div>
727                        </div>
728                        <div class="mtl-ent-highlight">
729                            <div class="mtl-ent-highlight__icon mtl-ent-highlight__icon--security">
730                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
731                            </div>
732                            <div>
733                                <strong>SSO, SCIM &amp; compliance</strong>
734                                <p>SAML / OIDC sign-on, user provisioning, SOC 2 controls, GDPR, audit logs &amp; custom DPAs.</p>
735                            </div>
736                        </div>
737                        <div class="mtl-ent-highlight">
738                            <div class="mtl-ent-highlight__icon mtl-ent-highlight__icon--success">
739                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>
740                            </div>
741                            <div>
742                                <strong>Dedicated success team</strong>
743                                <p>Named CSM, solutions architect, and 24/7 priority engineering support backed by a 99.9% SLA.</p>
744                            </div>
745                        </div>
746                    </div>
747
748                    <!-- Enterprise features -->
749                    <div class="mtl-pp__features">
750                        <div class="mtl-pp__features-title">Everything in Pro, plus</div>
751                        <ul class="mtl-pp__features-list">
752                            <li class="mtl-pp__feature">
753                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--ent"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
754                                <span>Custom data sources &amp; ingestion pipelines</span>
755                            </li>
756                            <li class="mtl-pp__feature">
757                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--ent"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
758                                <span>Bespoke integrations (Salesforce, ERP, BI)</span>
759                            </li>
760                            <li class="mtl-pp__feature">
761                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--ent">
761<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
762                                <span>Unlimited seats &amp; usage</span>
763                            </li>
764                            <li class="mtl-pp__feature">
765                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--ent"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
766                                <span>Custom contractual &amp; payment terms</span>
767                            </li>
768                            <li class="mtl-pp__feature">
769                                <span class="mtl-pp__feature-icon mtl-pp__feature-icon--ent"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
770                                <span>Onboarding, training &amp; change management</span>
771                            </li>
772                        </ul>
773                    </div>
774
775                    <a class="mtl-btn mtl-btn--ghost mtl-pp__cta mtl-pp__cta--ent" href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener">
776                        Talk to sales
777                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>
778                    </a>
779                </article>
780
781            </div>
782        </div>
783    </section>
784
785    <!-- CTA -->
786    <section class="mtl-section">
787        <div class="mtl-container">
788            <div class="mtl-cta">
789                <div class="mtl-cta__ball" aria-hidden="true"></div>
790                <div class="mtl-cta__ball mtl-cta__ball--2" aria-hidden="true"></div>
791                <h2>Not sure which fits?</h2>
792                <p class="mtl-hero__subtitle">Book a 30-minute walkthrough and we'll recommend the right deployment for your team.</p>
793                <div class="mtl-hero__actions">
794                    <a class="mtl-btn mtl-btn--cta" href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener">Schedule a demo</a>
795                    <a class="mtl-btn mtl-btn--ghost-light" href="/contact">Talk to sales</a>
796                </div>
797            </div>
798        </div>
799    </section>
800
801</div>
802
803<script>
804(function () {
805    const PER_SEAT_MONTHLY = 200;
806    const PER_SEAT_ANNUAL  = 160;
807    const MIN_SEATS = 5;
808    const MAX_SEATS = 50;
809
810    const slider     = document.getElementById('seatsSlider');
811    const input      = document.getElementById('seatsInput');
812    const btnUp      = document.getElementById('seatsUp');
813    const btnDown    = document.getElementById('seatsDown');
814    const amountEl   = document.getElementById('priceAmount');
815    const billedEl   = document.getElementById('priceBilled');
816    const track      = document.getElementById('billingToggle');
817    const labels     = document.querySelectorAll('.mtl-pricing-toggle__label');
818
819    let seats = MIN_SEATS;
820    let isAnnual = false;
821
822    function clamp(v) {
823        v = parseInt(v, 10);
824        if (isNaN(v)) v = MIN_SEATS;
825        return Math.max(MIN_SEATS, Math.min(MAX_SEATS, v));
826    }
827
828    function formatPrice(n) {
829        return n.toLocaleString('en-US');
830    }
831
832    function syncSliderFill() {
833        const pct = ((seats - MIN_SEATS) / (MAX_SEATS - MIN_SEATS)) * 100;
834        slider.style.setProperty('--seat-pct', pct + '%');
835    }
836
837    function render() {
838        slider.value = seats;
839        input.value  = seats;
840        syncSliderFill();
841
842        const perSeat = isAnnual ? PER_SEAT_ANNUAL : PER_SEAT_MONTHLY;
843        const total   = seats * perSeat;
844
845        amountEl.textContent = formatPrice(total);
846        billedEl.textContent = isAnnual ? 'Billed annually' : 'Billed monthly';
847
848        track.classList.toggle('is-annual', isAnnual);
849        track.setAttribute('aria-checked', isAnnual ? 'true' : 'false');
850        labels.forEach(function (l) {
851            l.classList.toggle('mtl-pricing-toggle__label--active', (l.dataset.billing === 'annual') === isAnnual);
852        });
853    }
854
855    function setSeats(v) {
856        seats = clamp(v);
857        render();
858    }
859
860    slider.addEventListener('input', function () { setSeats(slider.value); });
861    input.addEventListener('input', function () { setSeats(input.value); });
862    input.addEventListener('blur',  function () { setSeats(input.value); });
863    btnUp.addEventListener('click',   function () { setSeats(seats + 1); });
864    btnDown.addEventListener('click', function () { setSeats(seats - 1); });
865
866    track.addEventListener('click', function () { isAnnual = !isAnnual; render(); });
867    labels.forEach(function (l) {
868        l.addEventListener('click', function () { isAnnual = l.dataset.billing === 'annual'; render(); });
869    });
870
871    render();
872})();
873</script>
873
874
875    </main>
876
877    
878    
879<footer class="mtl-footer">
880    <div class="mtl-footer__grid">
881        <div>
882            <div class="mtl-footer__title">Marketlyzer</div>
883            <p>AI-powered location analytics for confident expansion decisions.</p>
884        </div>
885        <div>
886            <div class="mtl-footer__title">Product</div>
887            <a class="mtl-footer__link" href="/pricing">Pricing</a>
888            <a class="mtl-footer__link" href="https://calendly.com/marketlyzer/30min" target="_blank" rel="noopener">Schedule demo</a>
889        </div>
890        <div>
891            <div class="mtl-footer__title">Company</div>
892            <a class="mtl-footer__link" href="/contact">Contact</a>
893            <a class="mtl-footer__link" href="/careers">Careers</a>
894            <a class="mtl-footer__link" href="/privacy-policy">Privacy policy</a>
895            <a class="mtl-footer__link" href="/terms-of-service">Terms of service</a>
896        </div>
897        <div>
898            <div class="mtl-footer__title">Get started</div>
899            <a class="mtl-footer__link" href="/sign-up">Create an account</a>
900            <a class="mtl-footer__link" href="/sign-in">Sign in</a>
901        </div>
902    </div>
903    <div class="mtl-footer__bottom">
904        <span>&copy; 2026 Marketlyzer. All rights reserved.</span>
905        <span>Built for location strategy teams.</span>
906    </div>
907</footer>
908
909    
910
911    
912
913    <!-- Add modal interaction script -->
914    
914<script>
915        document.addEventListener('DOMContentLoaded', function() {
916            const signInModal = document.getElementById('sign-in-modal');
917            const closeModalButton = document.getElementById('close-modal');
918            const modalBackdrop = document.getElementById('modal-backdrop');
919
920            // The sign-in modal is not on every page. Without this guard the
921            // handler threw on the missing element and the init calls below
922            // never ran (no flash toasts, no progress bar, no header shadow).
923            if (signInModal && closeModalButton && modalBackdrop) {
924                // Close modal functions
925                const closeModal = function() {
926                    const modalContent = signInModal.querySelector('.bg-white');
927                    modalContent.style.opacity = '0';
928                    modalContent.style.transform = 'scale(0.95)';
929
930                    setTimeout(() => {
931                        signInModal.classList.add('hidden');
932                        document.body.classList.remove('overflow-hidden');
933                    }, 200);
934                };
935
936                // Close modal when close button is clicked
937                closeModalButton.addEventListener('click', closeModal);
938
939                // Close modal when clicking outside
940                modalBackdrop.addEventListener('click', function(e) {
941                    if (e.target === modalBackdrop) {
942                        closeModal();
943                    }
944                });
945
946                // Close modal when ESC key is pressed
947                document.addEventListener('keydown', function(e) {
948                    if (e.key === 'Escape' && !signInModal.classList.contains('hidden')) {
949                        closeModal();
950                    }
951                });
952            }
953
954            // Initialize notifications
955            initNotifications();
956
957            // Initialize progress bar
958            initProgressBar();
959
960            // Initialize scroll effects
961            initScrollEffects();
962        });
963
964        // Progress Bar
965        function initProgressBar() {
966            const progressBar = document.getElementById('progress-bar');
967
968            // Show progress on page load
969            progressBar.style.width = '30%';
970
971            window.addEventListener('load', () => {
972                progressBar.style.width = '100%';
973                setTimeout(() => {
974                    progressBar.style.opacity = '0';
975                    setTimeout(() => {
976                        progressBar.style.width = '0%';
977                        progressBar.style.opacity = '1';
978                    }, 300);
979                }, 200);
980            });
981
982            // Show progress on link clicks
983            document.querySelectorAll('a:not([target="_blank"]):not([href^="#"])').forEach(link => {
984                link.addEventListener('click', (e) => {
985                    if (link.href && !link.href.includes('javascript:')) {
986                        progressBar.style.width = '70%';
987                    }
988                });
989            });
990        }
991
992        // Scroll Effects
993        function initScrollEffects() {
994            const header = document.getElementById('main-header-shell');
995
996            window.addEventListener('scroll', () => {
997                const currentScroll = window.pageYOffset;
998
999                // Add shadow on scroll
1000                if (currentScroll > 10) {
1001                    header.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.08)';
1002                } else {
1003                    header.style.boxShadow = '';
1004                }
1005            });
1006        }
1007
1008        // Notifications functions
1009        function initNotifications() {
1010            const toasts = document.querySelectorAll('.notification-toast');
1011            
1012            toasts.forEach((toast, index) => {
1013                // Stagger the appearance of multiple notifications
1014                setTimeout(() => {
1015                    // Show the notification with animation
1016                    toast.style.opacity = '1';
1017                    toast.style.transform = 'translateY(0)';
1018                    
1019                    // Auto dismiss after 5 seconds (error messages stay longer)
1020                    const isError = toast.classList.contains('bg-red-50/90');
1021                    const dismissTime = isError ? 8000 : 5000;
1022                    
1023                    setTimeout(() => {
1024                        dismissNotification(toast);
1025                    }, dismissTime);
1026                }, index * 200); // Stagger by 200ms
1027            });
1028        }
1029        
1030        function dismissNotification(element) {
1031            // Add dismiss animation
1032            element.style.opacity = '0';
1033            element.style.transform = 'translateY(4px)';
1034            
1035            // Remove from DOM after animation completes
1036            setTimeout(() => {
1037                if (element.parentNode) {
1038                    element.parentNode.removeChild(element);
1039                }
1040            }, 300);
1041        }
1042    </script>
1042
1043
1044    <!-- Sign Up Modal -->
1045    <div id="sign-up-modal" class="fixed inset-0 z-50 hidden">
1046        <div class="fixed inset-0 bg-black bg-opacity-50 transition-opacity" id="signup-modal-backdrop"></div>
1047        <div class="fixed inset-0 z-10 flex items-center justify-center">
1048            <div class="bg-white rounded-xl shadow-elegant w-full max-w-md mx-4 transform transition-all">
1049                <div class="relative">
1050                    <!-- Close button -->
1051                    <button id="close-signup-modal" class="absolute right-4 top-4 text-gray-400 hover:text-gray-600 focus:outline-none">
1052                        <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1053                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
1054                        </svg>
1055                    </button>
1056                    
1057                    <!-- Header with logo -->
1058                    <div class="pt-8 px-8 pb-0 text-center">
1059                        <div class="inline-flex items-center justify-center">
1060                            <div class="bg-gradient-to-r from-primary-600 to-secondary-500 rounded-lg p-2 mr-3">
1061                                <svg xmlns="http://www.w3.org/2000/svg" class="h-8 w-8 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5">
1062                                    <!-- Modern AI-powered location intelligence logo -->
1063                                    
1064                                    <!-- Outer location pin with gradient effect -->
1065                                    <defs>
1066                                        <linearGradient id="pinGradientSignup" x1="0%" y1="0%" x2="100%" y2="100%">
1067                                            <stop offset="0%" style="stop-color:currentColor;stop-opacity:0.3" />
1068                                            <stop offset="100%" style="stop-color:currentColor;stop-opacity:0.1" />
1069                                        </linearGradient>
1070                                        <linearGradient id="coreGradientSignup" x1="0%" y1="0%" x2="100%" y2="100%">
1071                                            <stop offset="0%" style="stop-color:currentColor;stop-opacity:1" />
1072                                            <stop offset="100%" style="stop-color:currentColor;stop-opacity:0.8" />
1073                                        </linearGradient>
1074                                    </defs>
1075                                    
1076                                    <!-- Location pin base with modern styling -->
1077                                    <path d="M12 2C8.134 2 5 5.134 5 9c0 6.25 7 15 7 15s7-8.75 7-15c0-3.866-3.134-7-7-7z" 
1078                                          fill="url(#pinGradientSignup)" 
1079                                          stroke="currentColor" 
1080                                          stroke-width="1.2"/>
1081                                    
1082                                    <!-- AI core center with subtle pulsing effect -->
1083                                    <circle cx="12" cy="9" r="3" fill="url(#coreGradientSignup)" stroke="currentColor" stroke-width="0.5"/>
1084                                    
1085                                    <!-- Neural network connections -->
1086                                    <g opacity="0.7" stroke="currentColor" stroke-width="0.8" fill="none">
1087                                        <!-- Primary connections from center -->
1088                                        <line x1="12" y1="9" x2="9.5" y2="6.5" stroke-linecap="round"/>
1089                                        <line x1="12" y1="9" x2="14.5" y2="6.5" stroke-linecap="round"/>
1090                                        <line x1="12" y1="9" x2="9.5" y2="11.5" stroke-linecap="round"/>
1091                                        <line x1="12" y1="9" x2="14.5" y2="11.5" stroke-linecap="round"/>
1092                                        
1093                                        <!-- Secondary network nodes -->
1094                                        <circle cx="9.5" cy="6.5" r="0.8" fill="currentColor" opacity="0.6"/>
1095                                        <circle cx="14.5" cy="6.5" r="0.8" fill="currentColor" opacity="0.6"/>
1096                                        <circle cx="9.5" cy="11.5" r="0.8" fill="currentColor" opacity="0.6"/>
1097                                        <circle cx="14.5" cy="11.5" r="0.8" fill="currentColor" opacity="0.6"/>
1098                                    </g>
1099                                    
1100                                    <!-- Data visualization elements -->
1101                                    <g opacity="0.5" stroke="currentColor" stroke-width="0.6" fill="none">
1102                                        <!-- Mini chart bars inside the core -->
1103                                        <line x1="10.5" y1="10" x2="10.5" y2="8.5" stroke-linecap="round"/>
1104                                        <line x1="11.2" y1="10" x2="11.2" y2="7.8" stroke-linecap="round"/>
1105                                        <line x1="11.9" y1="10" x2="11.9" y2="8.2" stroke-linecap="round"/>
1106                                        <line x1="12.6" y1="10" x2="12.6" y2="7.5" stroke-linecap="round"/>
1107                                        <line x1="13.3" y1="10" x2="13.3" y2="8.8" stroke-linecap="round"/>
1108                                    </g>
1109                                    
1110                                    <!-- Intelligence indicators - small dots around the pin -->
1111                                    <g fill="currentColor" opacity="0.4">
1112                                        <circle cx="7" cy="7" r="0.5"/>
1113                                        <circle cx="17" cy="7" r="0.5"/>
1114                                        <circle cx="8" cy="12" r="0.5"/>
1115                                        <circle cx="16" cy="12" r="0.5"/>
1116                                    </g>
1117                                    
1118                                    <!-- Subtle scanning lines for tech feel -->
1119                                    <g opacity="0.3" stroke="currentColor" stroke-width="0.3">
1120                                        <line x1="6" y1="8" x2="18" y2="8" stroke-dasharray="2,1"/>
1121                                        <line x1="6" y1="10" x2="18" y2="10" stroke-dasharray="2,1"/>
1122                                    </g>
1123                                </svg>
1124                            </div>
1125                            <span class="text-2xl font-bold font-display bg-clip-text text-transparent bg-gradient-to-r from-primary-600 to-secondary-600">Marketlyzer</span>
1126                        </div>
1127                        <h2 class="mt-6 text-2xl font-semibold text-gray-900 font-display">Create your account</h2>
1128                        <p class="mt-2 text-gray-600">Start finding business opportunities today</p>
1129                    </div>
1130                    
1131                    <!-- Sign-up form -->
1132                    <div class="p-8">
1133                        <!-- Email Sign Up Form -->
1134                        <form class="space-y-4">
1135                            <div class="grid grid-cols-2 gap-4">
1136                                <div>
1137                                    <label for="first-name" class="block text-sm font-medium text-gray-700 mb-1">First name</label>
1138                                    <input type="text" id="first-name" name="first-name" required class="w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-primary-500 focus:border-primary-500">
1139                                </div>
1140                                <div>
1141                                    <label for="last-name" class="block text-sm font-medium text-gray-700 mb-1">Last name</label>
1142                                    <input type="text" id="last-name" name="last-name" required class="w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-primary-500 focus:border-primary-500">
1143                                </div>
1144                            </div>
1145                            <div>
1146                                <label for="signup-email" class="block text-sm font-medium text-gray-700 mb-1">Email address</label>
1147                                <input type="email" id="signup-email" name="email" required class="w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-primary-500 focus:border-primary-500">
1148                            </div>
1149                            <div>
1150                                <label for="signup-password" class="block text-sm font-medium text-gray-700 mb-1">Password</label>
1151                                <input type="password" id="signup-password" name="password" required class="w-full px-4 py-2.5 border border-gray-300 rounded-lg focus:ring-primary-500 focus:border-primary-500">
1152                                <p class="mt-1 text-xs text-gray-500">At least 8 characters with letters, numbers and special characters</p>
1153                            </div>
1154                            <div class="flex items-start">
1155                                <input id="terms" name="terms" type="checkbox" class="h-4 w-4 mt-1 text-primary-600 focus:ring-primary-500 border-gray-300 rounded">
1156                                <label for="terms" class="ml-2 block text-sm text-gray-700">
1157                                    I agree to the <a href="/terms-of-service" class="text-primary-600 hover:text-primary-500">Terms of Service</a> and <a href="/privacy-policy" class="text-primary-600 hover:text-primary-500">Privacy Policy</a>
1158                                </label>
1159                            </div>
1160                            <button type="submit" class="w-full flex justify-center py-2.5 px-4 border border-transparent rounded-lg shadow-sm text-sm font-medium text-white bg-gradient-to-r from-primary-600 to-primary-700 hover:from-primary-700 hover:to-primary-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
1161                                Create account
1162                            </button>
1163                        </form>
1164                        
1165                        <div class="mt-6 text-center text-sm">
1166                            <p class="text-gray-600">
1167                                Already have an account? 
1168                                <a href="/sign-in" class="text-primary-600 hover:text-primary-500 font-medium">Sign in</a>
1169                            </p>
1170                        </div>
1171                    </div>
1172                </div>
1173            </div>
1174        </div>
1175    </div>
1176
1177    
1178</body>
1179</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.