<!DOCTYPE html>
<html lang="en" class="scroll-smooth">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="Content-Security-Policy"
    content="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://datafa.st https://*.madamore.com https://*.convex.cloud https://vercel.live https://js.stripe.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; connect-src 'self' blob: data: https://datafa.st https://*.madamore.com https://*.convex.cloud wss://*.convex.cloud https://places.googleapis.com https://nominatim.openstreetmap.org https://api.stripe.com https://api.frankfurter.app; img-src 'self' blob: data: https: http: https://*.madamore.com https://*.convex.cloud https://lh3.googleusercontent.com https://maps.googleapis.com https://images.unsplash.com; font-src 'self' https://fonts.gstatic.com; frame-src 'self' https://www.google.com https://www.youtube.com https://www.youtube-nocookie.com;">
  <title>Date Planner: Budget-Friendly Date Ideas Near You | Madamore</title>
  <meta name="description"
    content="Date itineraries with real spots, budgets & travel times—Google Maps verified. From $0 solo dates to $50 nights out. Free to try.">
  <meta name="keywords"
    content="date planner, date ideas, date night ideas, Date Planner, romantic date ideas, cheap date ideas, date ideas near me, date itinerary, budget date ideas, solo date ideas, date yourself, things to do alone, solo activities, first date ideas, surprise date planner">
  <meta name="author" content="Madamore">
  <meta name="robots" content="index, follow">
  <link rel="canonical" href="https://www.madamore.com/" />

  <!-- Open Graph / Facebook -->
  <meta property="og:site_name" content="Madamore" />
  <meta property="og:locale" content="en_US" />
  <meta property="og:title" content="Date Planner: Budget-Friendly Date Ideas Near You | Madamore" />
  <meta property="og:description"
    content="Date itineraries with real spots, budgets & travel times—Google Maps verified. From $0 solo dates to $50 nights out. Free to try." />
  <meta property="og:image" content="https://www.madamore.com/og-image.webp" />
  <meta property="og:image:width" content="1200" />
  <meta property="og:image:height" content="630" />
  <meta property="og:image:alt" content="Madamore - Date Planner" />
  <meta property="og:type" content="website" />
  <meta property="og:url" content="https://www.madamore.com/" />

  <!-- Twitter -->
  <meta name="twitter:card" content="summary_large_image" />
  <meta name="twitter:title" content="Date Planner: Budget-Friendly Date Ideas Near You | Madamore" />
  <meta name="twitter:description"
    content="Date itineraries with real spots, budgets & travel times—Google Maps verified. From $0 solo dates to $50 nights out. Free to try." />
  <meta name="twitter:image" content="https://www.madamore.com/og-image.webp" />

  <!-- Favicons -->
  <link rel="icon" type="image/svg+xml" href="/icon.svg" />
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
  <link rel="manifest" href="/site.webmanifest" />
  <meta name="theme-color" content="#e11d48" />

  <!-- Critical CSS - Inlined for immediate render -->
  <style>
    /* Critical above-the-fold styles */
    body {
      font-family: 'Outfit', sans-serif;
      min-height: 100vh;
      background: linear-gradient(to bottom right, #fff8f9, #fdf2f8, #f9fafb);
    }

    #root {
      min-height: 100vh;
    }

    /* Prevent flash of unstyled content */
    [x-cloak] {
      display: none !important;
    }
  </style>

  <!-- CSS handled by Vite -->

  <!-- Resource Hints -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="dns-prefetch" href="https://maps.googleapis.com">
  <link rel="preconnect" href="https://maps.googleapis.com">
  <link rel="dns-prefetch" href="https://*.convex.cloud">
  <link rel="preconnect" href="https://*.convex.cloud">

  <!-- Font Display - Async loading with swap -->
  <link rel="preload" as="style"
    href="https://fonts.googleapis.com/css2?family=Outfit:wght@100;200;300;400;500;600;700;800;900&display=swap"
    onload="this.onload=null;this.rel='stylesheet'">
  <noscript>
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100;200;300;400;500;600;700;800;900&display=swap"
      rel="stylesheet">
  </noscript>

  <!-- Datafa.st Analytics - Loaded asynchronously to prevent blocking -->
  <script id="datafast-queue">
    window.datafast = window.datafast || function () {
      window.datafast.q = window.datafast.q || [];
      window.datafast.q.push(arguments);
    };
  </script>
  <script>
    // Load DataFast script asynchronously after React has rendered to prevent blocking
    // Use requestIdleCallback for better performance, fallback to setTimeout
    (function() {
      function loadDataFastScript() {
        var script = document.createElement('script');
        script.src = 'https://datafa.st/js/script.js';
        script.setAttribute('data-website-id', 'dfid_f2MgAIJ369gxNuXMZrIAO');
        script.setAttribute('data-domain', 'www.madamore.com');
        script.async = true;
        script.defer = true;
        script.onerror = function() {
          console.warn('[DataFast] Script failed to load - analytics may not work');
        };
        document.head.appendChild(script);
      }

      // Wait for page to be fully interactive before loading analytics
      if (document.readyState === 'complete') {
        // Use requestIdleCallback if available, otherwise setTimeout
        if (window.requestIdleCallback) {
          window.requestIdleCallback(loadDataFastScript, { timeout: 2000 });
        } else {
          setTimeout(loadDataFastScript, 500);
        }
      } else {
        window.addEventListener('load', function() {
          if (window.requestIdleCallback) {
            window.requestIdleCallback(loadDataFastScript, { timeout: 2000 });
          } else {
            setTimeout(loadDataFastScript, 500);
          }
        });
      }
    })();
  </script>

  <script type="module" crossorigin src="/assets/index-CipKMmSw.js"></script>
  <link rel="modulepreload" crossorigin href="/assets/vendor-9WOLqn4n.js">
  <link rel="modulepreload" crossorigin href="/assets/ui-7KNO8bCT.js">
  <link rel="stylesheet" crossorigin href="/assets/index-BE3dqQBL.css">
</head>

<body>
  <div id="root"></div>
</body>

</html>