<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <!-- Zoom stays enabled (WCAG 1.4.4); blocking it tanks accessibility. -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />

    <!-- Google tag (gtag.js) — Google Analytics 4 -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-MKLV48HTTQ"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'G-MKLV48HTTQ');
    </script>

    <!-- Fonts load async (print→all swap) so text paints immediately with
         fallbacks instead of blocking first render for ~1s on mobile.
         Instrument Serif = display, Inter = UI, JetBrains Mono = data labels.
         The previous DM Sans / DM Serif / Playfair stack (loaded but never
         referenced by the theme) is archived in src/styles/typography-legacy.css. -->
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link rel="preconnect" href="https://api.citylens.city" />
    <link
      rel="stylesheet"
      href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
      media="print"
      onload="this.media='all'"
    />
    <noscript>
      <link
        rel="stylesheet"
        href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
      />
    </noscript>
    <!-- seo:start — scripts/prerender.mjs replaces this block per route -->
    <title>CityLens — The Map of Everyday Places</title>
    <!-- No static canonical/og:url here: the prerender injects the right one
         per page, and React hoists one client-side for SPA-fallback routes —
         a static value would conflict with those. -->
    <meta name="description" content="CityLens turns places into searchable local knowledge. Explore any area, find businesses and landmarks, and ask questions about the places around you." />
    <meta property="og:site_name" content="CityLens" />
    <meta property="og:title" content="CityLens — The Map of Everyday Places" />
    <meta property="og:image" content="https://www.citylens.city/icons/icon-512.png" />
    <meta property="og:type" content="website" />
    <meta property="og:description" content="CityLens turns places into searchable local knowledge. Explore any area, find businesses and landmarks, and ask questions about the places around you." />
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="CityLens — The Map of Everyday Places" />
    <meta name="twitter:description" content="CityLens turns places into searchable local knowledge. Explore any area, find businesses and landmarks, and ask questions about the places around you." />
    <meta name="twitter:image" content="https://www.citylens.city/icons/icon-512.png" />
    <!-- seo:end -->

    <!-- PWA -->
    <link rel="manifest" href="/manifest.webmanifest" />
    <meta name="theme-color" content="#FAF8F5" media="(prefers-color-scheme: light)" />
    <meta name="theme-color" content="#1A1614" media="(prefers-color-scheme: dark)" />
    <meta name="mobile-web-app-capable" content="yes" />

    <!-- iOS standalone -->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
    <meta name="apple-mobile-web-app-title" content="CityLens" />
    <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" />

    <!-- Icons -->
    <link rel="icon" type="image/svg+xml" href="/icons/icon.svg" />
    <link rel="icon" type="image/png" sizes="192x192" href="/icons/icon-192.png" />
    <script type="module" crossorigin src="/assets/index-DRH7OPpQ.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/router-Fq98-Pkx.js">
    <link rel="modulepreload" crossorigin href="/assets/motion-DIDYhB6x.js">
    <link rel="stylesheet" crossorigin href="/assets/index-Dze-9gIw.css">
  </head>
  <body>
    <div id="root"></div>
    <script src="/runtime-config.js" defer></script>
  </body>
</html>
