PageSourceSearch

https://getproperly.com/about

html getproperly.com collected 2026-10-02 11:09:12 UTC 115,561 bytes, 426 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="help" type="text/plain" href="/llms.txt"><link rel="help" type="text/plain" href="/llms-full.txt"><!-- GA4 Consent Mode v2 — MUST be first script before any GA/GTM loading -->
1<script>(function(){const analyticsContentGroup = "company";
2const analyticsLocale = "en";
3const analyticsTagId = "GT-NBXPWL5";
4
5      /* eslint-disable prefer-rest-params */
6      window.dataLayer = window.dataLayer || [];
7      function gtag() {
8        dataLayer.push(arguments);
9      }
10      window.gtag = gtag;
11      // Global default: analytics ON by default; ad signals are not used.
12      gtag('consent', 'default', {
13        analytics_storage: 'granted',
14        ad_storage: 'denied',
15        ad_user_data: 'denied',
16        ad_personalization: 'denied',
17      });
18      // EU/EEA + UK + Switzerland: deny everything by default until the visitor opts in
19      // (Necessary or Accept all). GDPR/ePrivacy require prior consent for analytics here.
20      gtag('consent', 'default', {
21        region: [
22          'AT',
23          'BE',
24          'BG',
25          'HR',
26          'CY',
27          'CZ',
28          'DK',
29          'EE',
30          'FI',
31          'FR',
32          'DE',
33          'GR',
34          'HU',
35          'IE',
36          'IT',
37          'LV',
38          'LT',
39          'LU',
40          'MT',
41          'NL',
42          'PL',
43          'PT',
44          'RO',
45          'SK',
46          'SI',
47          'ES',
48          'SE',
49          'IS',
50          'LI',
51          'NO',
52          'GB',
53          'CH',
54        ],
55        analytics_storage: 'denied',
56        ad_storage: 'denied',
57        ad_user_data: 'denied',
58        ad_personalization: 'denied',
59        wait_for_update: 500,
60      });
61      // Restore saved consent before the initial GA config/pageview is queued.
62      // Stored values:
63      //   'accepted'              -> analytics consent, ad signals denied
64      //   'essential'/'analytics' -> analytics only, ad signals denied
65      //   'rejected' (legacy)     -> all denied; honor prior opt-outs
66      const consentCookie = (document.cookie.match(/(^|; )properly_consent=([^;]*)/) || [])[2];
67      if (consentCookie === 'accepted') {
68        gtag('consent', 'update', {
69          analytics_storage: 'granted',
70          ad_storage: 'denied',
71          ad_user_data: 'denied',
72          ad_personalization: 'denied',
73        });
74      } else if (consentCookie === 'essential' || consentCookie === 'analytics') {
75        gtag('consent', 'update', {
76          analytics_storage: 'granted',
77          ad_storage: 'denied',
78          ad_user_data: 'denied',
79          ad_personalization: 'denied',
80        });
81      } else if (consentCookie === 'rejected') {
82        gtag('consent', 'update', {
83          analytics_storage: 'denied',
84          ad_storage: 'denied',
85          ad_user_data: 'denied',
86          ad_personalization: 'denied',
87        });
88      }
89      gtag('js', new Date());
90      const analyticsPageLocation = window.location.href.split('#')[0];
91      gtag('set', 'user_properties', { locale: analyticsLocale });
92      gtag('config', analyticsTagId, {
93        send_page_view: true,
94        page_location: analyticsPageLocation,
95        content_group: analyticsContentGroup,
96        linker: {
97          domains: [
98            'app.getproperly.com',
99            'getproperly.com',
100            'help.getproperly.com',
101            'findacleaner.getproperly.com',
102          ],
103        },
104      });
105      /* eslint-enable prefer-rest-params */
106    })();</script>
106<!-- Preconnect to Google Fonts for faster font loading --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><!-- Google Fonts: Plus Jakarta Sans (headings), DM Sans (body), JetBrains Mono (mono/stats) --><!-- Preload critical font (headings) for LCP, async-load the full stylesheet --><link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap"><link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'"><noscript><link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet"></noscript><!-- DNS prefetch for external domains --><link rel="dns-prefetch" href="https://app.getproperly.com"><link rel="dns-prefetch" href="https://images.getproperly.com"><link rel="dns-prefetch" href="https://bookings.zoho.com"><link rel="dns-prefetch" href="https://www.youtube.com"><link rel="dns-prefetch" href="https://i.ytimg.com"><link rel="dns-prefetch" href="https://widget.intercom.io"><link rel="dns-prefetch" href="https://www.googletagmanager.com"><!-- Favicon --><link rel="icon" type="image/x-icon" href="/favicon.ico"><!-- SEO Head --><!-- Primary Meta --><title>About Properly — Founded 2014</title> <meta name="description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <link rel="canonical" href="https://getproperly.com/about">  <!-- Open Graph --> <meta property="og:type" content="website"> <meta property="og:title" content="About Properly — Founded 2014"> <meta property="og:description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <meta property="og:image" content="https://getproperly.com/images/og-default.jpg"> <meta property="og:url" content="https://getproperly.com/about"> <meta property="og:site_name" content="Properly"> <!-- Twitter Card --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@GetProperly"> <meta name="twitter:creator" content="@GetProperly"> <meta name="twitter:title" content="About Properly — Founded 2014"> <meta name="twitter:description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <meta name="twitter:image" content="https://getproperly.com/images/og-default.jpg"> <!-- Hreflang — only emitted when the page has localized variants. English-only
107     pages (e.g. /careers) skip these so we don't advertise URLs that 404. --> <link rel="alternate" hreflang="en" href="https://getproperly.com/about"><link rel="alternate" hreflang="fr" href="https://getproperly.com/fr/about"><link rel="alternate" hreflang="de" href="https://getproperly.com/de/about"><link rel="alternate" hreflang="it" href="https://getproperly.com/it/about"><link rel="alternate" hreflang="pt-BR" href="https://getproperly.com/pt-br/about"><link rel="alternate" hreflang="es" href="https://getproperly.com/es/about"><link rel="alternate" hreflang="hr" href="https://getproperly.com/hr/about"><link rel="alternate" hreflang="ru" href="https://getproperly.com/ru/about"> <link rel="alternate" hreflang="x-default" href="https://getproperly.com/about"> <!-- JSON-LD Structured Data --> 
107<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://getproperly.com"},{"@type":"ListItem","position":2,"name":"About Properly — Founded 2014","item":"https://getproperly.com/about"}]}</script>
107<link rel="stylesheet" href="/_astro/Footer.BognTUcR.css">
107<script type="module" src="/_astro/page.BZqDKivF.js"></script>
107</head> <body class="bg-white text-gray-900 font-body antialiased">   <a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:bg-white focus:px-4 focus:py-2 focus:rounded-lg focus:shadow-lg focus:text-primary-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2"> Skip to content </a> <header id="site-header" class="fixed top-0 left-0 right-0 z-50 transition-all duration-500" role="banner"> <!-- Background — frosted glass on scroll --><div id="header-bg" class="absolute inset-0 transition-all duration-500 border-b border-transparent"></div> <nav class="relative mx-auto flex h-[72px] max-w-[1280px] items-center justify-between px-5 max-[374px]:px-4 sm:px-8 lg:px-10" aria-label="Main navigation"> <!-- Logo --><a href="/" class="relative z-10 flex items-center gap-2.5 no-underline hover:no-underline shrink-0 group" aria-label="Properly home"> <img src="/images/properly-logo-horizontal.png" alt="Properly: Vacation Rental Quality Management" width="224" height="50" loading="eager" fetchpriority="high" class="h-[25px] max-[359px]:h-5.5 w-auto transition-opacity duration-200 group-hover:opacity-80"> </a> <!-- Desktop Navigation — centered --> <div class="hidden lg:flex lg:items-center lg:gap-0.5 xl:gap-1"> <div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Products <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg>  <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button>  <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]">  <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/platform" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Platform"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3.75 3A1.75 1.75 0 002 4.75v3.5C2 9.216 2.784 10 3.75 10h3.5A1.75 1.75 0 009 8.25v-3.5A1.75 1.75 0 007.25 3h-3.5zM12.75 3a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 8.25v-3.5A1.75 1.75 0 0016.25 3h-3.5zM2 12.75c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 017.25 18h-3.5A1.75 1.75 0 012 16.25v-3.5zM12.75 11a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 16.25v-3.5A1.75 1.75 0 0016.25 11h-3.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Platform   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Self-service tools from $12.99/property/mo </span> </span> </a><a href="/actionable-intelligence" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Actionable Intelligence"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M15.98 1.804a1 1 0 00-1.96 0l-.24 1.192a1 1 0 01-.784.785l-1.192.238a1 1 0 000 1.962l1.192.238a1 1 0 01.785.785l.238 1.192a1 1 0 001.962 0l.238-1.192a1 1 0 01.785-.785l1.192-.238a1 1 0 000-1.962l-1.192-.238a1 1 0 01-.785-.785l-.238-1.192zM6.949 5.684a1 1 0 00-1.898 0l-.683 2.051a1 1 0 01-.633.633l-2.051.683a1 1 0 000 1.898l2.051.684a1 1 0 01.633.632l.683 2.051a1 1 0 001.898 0l.683-2.051a1 1 0 01.633-.633l2.051-.683a1 1 0 000-1.898l-2.051-.683a1 1 0 01-.633-.633L6.95 5.684zM13.949 13.684a1 1 0 00-1.898 0l-.184.551a1 1 0 01-.632.633l-.551.183a1 1 0 000 1.898l.551.183a1 1 0 01.633.633l.183.551a1 1 0 001.898 0l.184-.551a1 1 0 01.632-.633l.551-.183a1 1 0 000-1.898l-.551-.184a1 1 0 01-.633-.632l-.183-.551z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Actionable Intelligence <span class="inline-flex items-center rounded-full bg-accent-500/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-accent-600"> New </span>  </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> AI onboarding: video → workflows </span> </span> </a><a href="/real-time-inspection" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Real-Time Inspection"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Real-Time Inspection   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Expert-led review at $5/inspection </span> </span> </a><a href="/co-host" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Cohost Pro"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Cohost Pro   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600">
107 Managed service for property managers </span> </span> </a><a href="/co-host-owners" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Guest Support Plus"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Guest Support Plus   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Managed guest and turnover support for owners </span> </span> </a> </div> </div> </div> </div><div class="relative group" data-navlink> <a href="/ai" class="relative block px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 no-underline hover:no-underline text-gray-600 hover:text-gray-900"> AI <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] rounded-full bg-primary-500 transition-transform duration-300 origin-left scale-x-0 group-hover:scale-x-100"></span> </a> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Features <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg>  <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button>  <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]">  <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/autoscheduler" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Autoscheduler"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm.75-11.25a.75.75 0 00-1.5 0v2.5c0 .414.336.75.75.75h2.5a.75.75 0 000-1.5h-1.75v-1.75z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Autoscheduler   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Automated turnover scheduling </span> </span> </a><a href="/features/photo-checklists" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Photo Checklists"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M1 8a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 018.07 3h3.86a2 2 0 011.
107664.89l.812 1.22A2 2 0 0016.07 6H17a2 2 0 012 2v7a2 2 0 01-2 2H3a2 2 0 01-2-2V8zm13.5 3a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zM10 14a3 3 0 100-6 3 3 0 000 6z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Photo Checklists   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Photo-verified cleaning </span> </span> </a><a href="/features/marketplace" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Marketplace"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zm0 16a3 3 0 01-3-3h6a3 3 0 01-3 3z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Marketplace   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Find trusted cleaners </span> </span> </a><a href="/skills" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Skills &amp; Training"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.394 2.08a1 1 0 00-.788 0l-7 3a1 1 0 000 1.84L5.25 8.051a.999.999 0 01.356-.257l4-1.714a1 1 0 11.788 1.838L7.667 9.088l1.94.831a1 1 0 00.787 0l7-3a1 1 0 000-1.838l-7-3zM3.31 9.397L5 10.12v4.102a8.969 8.969 0 00-1.05-.174 1 1 0 01-.89-.89 11.115 11.115 0 01.25-3.762zM9.3 16.573A9.026 9.026 0 007 14.935v-3.547l1.607.688a3 3 0 002.346 0l1.607-.688v3.547a9.026 9.026 0 00-2.3 1.638z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Skills &amp; Training   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Certification and training library </span> </span> </a><a href="/features" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="All Features"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3.75 3A1.75 1.75 0 002 4.75v3.5C2 9.216 2.784 10 3.75 10h3.5A1.75 1.75 0 009 8.25v-3.5A1.75 1.75 0 007.25 3h-3.5zM12.75 3a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 8.25v-3.5A1.75 1.75 0 0016.25 3h-3.5zM2 12.75c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 017.25 18h-3.5A1.75 1.75 0 012 16.25v-3.5zM12.75 11a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 16.25v-3.5A1.75 1.75 0 0016.25 11h-3.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> All Features   </span>  </span> </a> </div> </div> </div> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Solutions <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg>  <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button>  <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]">  <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Property Owners"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Property Owners   </span>  </span> </a><a href="/property-managers" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Property Managers"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 4a2 2 0 012-2h8a2 2 0 012 2v12a1 1 0 110 2h-3a1 1 0 01-1-1v-2a1 1 0 00-1-1H9a1 1 0 00-1 1v2a1 1 0 01-1 1H4a1 1 0 110-2V4zm3 1h2v2H7V5zm2 4H7v2h2V9zm2-4h2v2h-2V5zm2 4h-2v2h2V9z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Property Managers   </span>  </span> </a><a href="/service-providers" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Service Providers"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M11.3 1.046A1 1 0 0112 2v5h4a1 1 0 01.82 1.573l-7 10A1 1 0 018 18v-5H4a1 1 0 01-.82-1.573l7-10a1 1 0 011.12-.38z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Service Providers   </span>  </span> </a> </div> </div> </div> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-primary-700" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Resources <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg>  <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button>  <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]">  <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/blog" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Blog"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M2 5a2 2 0 012-2h7a2 2 0 012 2v4a2 2 0 01-2 2H9l-3 3v-3H4a2 2 0 01-2-2V5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Blog   </span>  </span> </a><a href="/case-studies" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Case Studies"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V7.414A2 2 0 0015.414 6L12 2.586A2 2 0 0010.586 2H4zm5 3a1 1 0 012 0v2a1 1 0 11-2 0V5zm-2 6a1 1 0 011-1h4a1 1 0 110 2H8a1 1 0 01-1-1zm1 3h6a1 1 0 110 2H8a1 1 0 110-2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Case Studies   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Measured customer outcomes </span> </span> </a><a href="/str-shopping-list" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Vacation Rental Shopping List"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4zm1 4.75A.75.75 0 015.75 7h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 015 7.75zm0 3A.75.75 0 015.75 10h7.5a.75.75 0 010 1.5h-7.5A.75.75 0 015 10.75zm0 3A.75.75 0 015.75 13h5.5a.75.75 0 010 1.5h-5.5A.75.75 0 015 13.75zM15.5 7a1 1 0 100 2 1 1 0 000-2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Vacation Rental Shopping List   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Room-by-room STR setup picks </span> </span> </a><a href="/properly-vs-turno" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Properly vs Turno"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7 3a3 3 0 00-3 3v8a3 3 0 003 3h6a3 3 0 003-3V6a3 3 0 00-3-3H7zm0 2h6a1 1 0 011 1v1H6V6a1 1 0 011-1zm-1 4h8v5a1 1 0 01-1 1H7a1 1 0 01-1-1V9zm2 2a1 1 0 100 2h1a1 1 0 100-2H8zm4 0a1 1 0 100 2h1a1 1 0 100-2h-1z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Properly vs Turno   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Compare scheduling vs verification </span> </span> </a><a href="/properly-vs-breezeway" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Properly vs Breezeway"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5 3a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2V5a2 2 0 00-2-2H5zm7 0a1 1 0 100 2h3v10h-3a1 1 0 100 2h3a2 2 0 002-2V5a2 2 0 00-2-2h-3zm-7 9a2 2 0 00-2 2v1a2 2 0 002 2h3a2 2 0 002-2v-1a2 2 0 00-2-2H5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Properly vs Breezeway   </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Compare property operations tools </span> </span> </a><a href="/partners" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="
107Partners"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Partners   </span>  </span> </a><a href="/about" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 bg-primary-50/80 text-primary-700" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="About Us"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-primary-100 text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-primary-700"> About Us   </span>  </span> </a><a href="https://help.getproperly.com/en/" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" target="_blank" rel="noopener noreferrer" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Support"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Support  <svg class="h-3 w-3 text-gray-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4.25 5.5a.75.75 0 00-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 00.75-.75v-4a.75.75 0 011.5 0v4A2.25 2.25 0 0112.75 17h-8.5A2.25 2.25 0 012 14.75v-8.5A2.25 2.25 0 014.25 4h5a.75.75 0 010 1.5h-5zm7.25-.75a.75.75 0 01.75-.75h3.5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0V6.31l-5.47 5.47a.75.75 0 01-1.06-1.06l5.47-5.47H12.25a.75.75 0 01-.75-.75z" clip-rule="evenodd"></path> </svg> </span>  </span> </a> </div> </div> </div> </div><div class="relative group" data-navlink> <a href="/pricing" class="relative block px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 no-underline hover:no-underline text-gray-600 hover:text-gray-900"> Pricing <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] rounded-full bg-primary-500 transition-transform duration-300 origin-left scale-x-0 group-hover:scale-x-100"></span> </a> </div> </div> <!-- Right side: Login, Language, dual CTAs --> <div class="hidden lg:flex lg:items-center lg:gap-1 xl:gap-1.5"> <a href="https://app.getproperly.com/login" class="px-2.5 py-2 text-[13px] font-medium text-gray-500 no-underline hover:no-underline transition-colors duration-200 hover:text-gray-800" data-ga-event="login" data-ga-label="nav"> Log in </a> <div class="h-4 w-px bg-gray-200 mx-1" aria-hidden="true"></div> <!-- Language switcher — compact globe --> <div class="lang-dropdown group relative" data-dropdown> <button class="flex items-center gap-1 rounded-full px-2 py-2 text-gray-500 transition-all duration-200 hover:bg-gray-100 hover:text-gray-700" aria-expanded="false" aria-haspopup="true" aria-label="Select language" data-dropdown-trigger> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.
107089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.497-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z" clip-rule="evenodd"></path> </svg> <span class="text-[11px] font-semibold tracking-wider">EN</span> </button> <div class="mega-panel pointer-events-none invisible absolute right-0 top-full pt-2 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[180px]"> <p class="px-3 py-1.5 text-[10px] font-bold uppercase tracking-[0.15em] text-gray-400"> Language </p> <a href="/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 bg-primary-50 text-primary-700 font-semibold" data-ga-event="select_content" data-ga-category="locale" data-ga-label="en"> <span>English</span> <span class="text-[10px] font-semibold tracking-wider text-primary-500"> EN </span> </a><a href="/fr/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="fr"> <span>Français</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> FR </span> </a><a href="/de/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="de"> <span>Deutsch</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> DE </span> </a><a href="/it/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="it"> <span>Italiano</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> IT </span> </a><a href="/pt-br/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="pt-br"> <span>Português</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> PT </span> </a><a href="/es/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="es"> <span>Español</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> ES </span> </a><a href="/hr/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="hr"> <span>Hrvatski</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> HR </span> </a><a href="/ru/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="ru"> <span>Русский</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> RU </span> </a> </div> </div> </div> </div> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border border-gray-300 bg-white px-4 py-[7px] text-[13px] font-semibold text-gray-700 no-underline hover:no-underline shadow-sm transition-all duration-200 hover:border-gray-400 hover:text-gray-900 hover:shadow-md active:scale-[0.97]" data-ga-event="sign_up" data-ga-label="nav"> Start Free Trial </a> <!-- Primary CTA — path-aware --> <a href="/book-demo" class="cta-primary group relative inline-flex items-center gap-1.5 overflow-hidden rounded-full bg-accent-500 px-5 py-[7px] text-[13px] font-bold text-gray-900 no-underline hover:no-underline shadow-[0_1px_3px_rgba(245,158,11,0.4)] transition-all duration-200 hover:bg-accent-600 hover:shadow-[0_4px_16px_rgba(245,158,11,0.35)] active:scale-[0.97]" data-ga-event="demo_cta_click" data-ga-label="nav"> <span class="relative z-10">Book a Demo</span> <svg class="relative z-10 h-3.5 w-3.5 transition-transform duration-200 group-hover:translate-x-0.5" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z" clip-rule="evenodd"></path> </svg> <span class="absolute inset-0 -translate-x-full bg-gradient-to-r from-transparent via-white/25 to-transparent transition-transform duration-700 group-hover:translate-x-full" aria-hidden="true"></span> </a> </div> <!-- Mobile: CTA + Hamburger. The CTA wraps long localized labels instead of nowrap (checked 320-414px, 8 locales); the toggle never shrinks. --> <div class="ml-2 flex items-center gap-2.5 max-[359px]:gap-2 lg:hidden"> <a href="/book-demo" class="inline-flex items-center min-h-11 rounded-full bg-accent-500 px-5 py-1.5 max-[359px]:px-3 text-center text-sm leading-tight text-balance wrap-anywhere max-[359px]:text-[13px] font-bold text-gray-900 no-underline hover:no-underline shadow-sm transition-all duration-200 hover:bg-accent-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-500 focus-visible:ring-offset-2" data-ga-event="demo_cta_click" data-ga-label="nav_mobile"> Book a Demo </a> <button id="mobile-menu-toggle" class="relative z-50 flex h-11 w-11 shrink-0 items-center justify-center rounded-xl text-gray-600 transition-all duration-200 hover:bg-gray-100 hover:text-gray-900" aria-expanded="false" aria-controls="mobile-menu" aria-label="Toggle navigation menu"> <svg id="hamburger-icon" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path> </svg> <svg id="close-icon" class="hidden h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path> </svg> </button> </div> </nav> </header> <!-- Mobile menu overlay — rendered outside header to preserve z-index stacking --> <!-- Mobile Menu — slide-in from right with backdrop --><div id="mobile-menu" class="fixed inset-0 z-40 hidden" role="dialog" aria-modal="true" aria-label="Navigation menu"> <div class="mobile-backdrop absolute inset-0 bg-black/40 backdrop-blur-sm opacity-0 transition-opacity duration-300"></div> <div class="mobile-panel absolute top-0 right-0 bottom-0 w-full max-w-[min(380px,90vw)] translate-x-full transition-transform duration-300 ease-out bg-white overflow-hidden flex flex-col shadow-2xl"> <!-- Panel header --><div class="flex items-center justify-between px-6 h-[72px] border-b border-gray-100 shrink-0"> <a href="/" class="no-underline hover:no-underline"> <img src="/images/properly-logo-horizontal.png" alt="Properly: Vacation Rental Quality Management" width="224" height="50" loading="eager" class="h-[22px] w-auto"> </a> </div> <!-- CTAs first — conversion optimized, path-aware primary --> <div class="px-5 pt-5 pb-3 space-y-2.5 shrink-0"> <a href="/book-demo" class="mobile-nav-link flex items-center justify-center gap-2 rounded-xl bg-accent-500 px-5 py-3 text-[14px] font-bold text-gray-900 no-underline hover:no-underline shadow-md transition-all duration-200 hover:bg-accent-600" data-ga-event="demo_cta_click" data-ga-label="mobile_menu"> Book a Demo <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z" clip-rule="evenodd"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="mobile-nav-link flex items-center justify-center rounded-xl border border-gray-200 bg-white px-5 py-2.5 text-[14px] font-semibold text-gray-700 no-underline hover:no-underline transition-colors hover:bg-gray-50" data-ga-event="sign_up" data-ga-label="mobile_menu"> Start Free Trial </a> </div> <!-- Scrollable nav --> <nav class="flex-1 overflow-y-auto px-5 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]" aria-label="Mobile navigation"> <ul class="space-y-0.5" role="list"> <li class="mobile-nav-item" style="--delay: 0ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-products"> Products <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-products" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/platform" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Platform  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Self-service tools from $12.99/property/mo </span> </a> </li><li> <a href="/actionable-intelligence" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Actionable Intelligence <span class="inline-flex items-center rounded-full bg-accent-500/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-accent-600"> New </span> </span> <span class="text-[11px] text-gray-400 mt-0.5"> AI onboarding: video → workflows </span> </a> </li><li> <a href="/real-time-inspection" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Real-Time Inspection  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Expert-led review at $5/inspection </span> </a> </li><li> <a href="/co-host" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Cohost Pro  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Managed service for property managers </span> </a> </li><li> <a href="/co-host-owners" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Guest Support Plus  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Managed guest and turnover support for owners </span> </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 50ms"> <a href="/ai" class="mobile-nav-link block rounded-xl px-4 py-3 text-[14px] font-semibold no-underline hover:no-underline transition-colors text-gray-800 hover:bg-gray-50"> AI </a> </li><li class="mobile-nav-item" style="--delay: 100ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-features"> Features <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-features" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/autoscheduler" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Autoscheduler  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Automated turnover scheduling </span> </a> </li><li> <a href="/features/photo-checklists" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Photo Checklists  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Photo-verified cleaning </span> </a> </li><li> <a href="/features/marketplace" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Marketplace  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Find trusted cleaners </span> </a> </li><li> <a href="/skills" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Skills &amp; Training  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Certification and training library </span> </a> </li><li> <a href="/features" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> All Features  </span>  </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 150ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-solutions"> Solutions <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-solutions" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Property Owners  </span>  </a> </li><li> <a href="/property-managers" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Property Managers  </span>  </a> </li><li> <a href="/service-providers" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Service Providers  </span>  </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 200ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-resources"> Resources <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-resources" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/blog" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Blog  </span>  </a> </li><li> <a href="/case-studies" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Case Studies  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Measured customer outcomes </span> </a> </li><li> <a href="/str-shopping-list" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Vacation Rental Shopping List  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Room-by-room STR setup picks </span> </a> </li><li> <a href="/properly-vs-turno" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Properly vs Turno  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Compare scheduling vs verification </span> </a> </li><li> <a href="/properly-vs-breezeway" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Properly vs Breezeway  </span> <span class="text-[11px] text-gray-400 mt-0.5"> Compare property operations tools </span> </a> </li><li> <a href="/partners" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5">
107 Partners  </span>  </a> </li><li> <a href="/about" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors bg-primary-50 text-primary-700"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> About Us  </span>  </a> </li><li> <a href="https://help.getproperly.com/en/" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900" target="_blank" rel="noopener noreferrer"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Support  </span>  </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 250ms"> <a href="/pricing" class="mobile-nav-link block rounded-xl px-4 py-3 text-[14px] font-semibold no-underline hover:no-underline transition-colors text-gray-800 hover:bg-gray-50"> Pricing </a> </li> </ul> <!-- Footer links --> <div class="mt-6 border-t border-gray-100 pt-5 space-y-1 mobile-nav-item" style="--delay: 300ms"> <a href="https://app.getproperly.com/login" class="flex items-center gap-2 rounded-xl px-4 py-2.5 text-[13.5px] font-medium text-gray-600 no-underline hover:no-underline transition-colors hover:bg-gray-50 hover:text-gray-900" data-ga-event="login" data-ga-label="mobile_menu"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z" clip-rule="evenodd"></path> <path fill-rule="evenodd" d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z" clip-rule="evenodd"></path> </svg> Log in to Dashboard </a> <div class="px-4 pt-3"> <p class="mb-2 text-[10px] font-bold uppercase tracking-[0.15em] text-gray-400"> Language </p> <div class="flex flex-wrap gap-1.5"> <a href="/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-primary-600 text-white" data-ga-event="select_content" data-ga-category="locale" data-ga-label="en"> EN </a><a href="/fr/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="fr"> FR </a><a href="/de/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="de"> DE </a><a href="/it/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="it"> IT </a><a href="/pt-br/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="pt-br"> PT </a><a href="/es/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="es"> ES </a><a href="/hr/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="hr"> HR </a><a href="/ru/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="ru"> RU </a> </div> </div> </div> </nav> </div> </div> <!-- Spacer for fixed header --> <div class="h-[72px]" aria-hidden="true"></div>
107<script type="module" src="/_astro/Nav.astro_astro_type_script_index_0_lang.DbJaRtW2.js"></script>
107 <main id="main-content" tabindex="-1">  
107<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Properly","url":"https://getproperly.com","logo":"https://getproperly.com/_astro/properly-logo-horizontal.BGFSTgfB.png","foundingDate":"2014","description":"Vacation rental operations platform with two managed remote-service offers — Cohost Pro from $119 per active property per month for property managers, working with their systems and local vendors, and Guest Support Plus at $149 per listing per month for owner guest and turnover support. Founded 2014; 4.5M+ turnovers across 10,000+ hosts in 45+ countries.","areaServed":"Global","sameAs":["https://www.facebook.com/GetProperly/","https://www.linkedin.com/company/properly-inc/","https://www.instagram.com/theproperlyteam/","https://x.com/GetProperly","https://www.youtube.com/@getproperly"]}</script>
107 <section class="relative overflow-hidden grain" style="background: radial-gradient(ellipse 80% 50% at 60% 30%, rgba(20,145,155,0.2) 0%, transparent 100%), radial-gradient(ellipse 40% 60% at 15% 70%, rgba(34,184,199,0.1) 0%, transparent 100%), linear-gradient(170deg, #0A2E33 0%, #0D4D56 55%, #107080 100%);"> <div class="relative z-10 mx-auto max-w-[1280px] px-6 py-28 text-center md:px-12 lg:px-20 lg:py-36"> <p class="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.15em] text-primary-400"> <span class="inline-block h-px w-6 bg-primary-500" aria-hidden="true"></span> About Properly <span class="inline-block h-px w-6 bg-primary-500" aria-hidden="true"></span> </p> <h1 class="mx-auto mt-6 max-w-3xl font-display text-4xl font-extrabold tracking-tight text-white sm:text-5xl lg:text-[3.75rem]"> Founded by Hosts, for <span class="text-primary-400">Hosts</span> </h1> <p class="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-white/60 md:text-xl"> Since 2014, we&#39;ve built vacation-rental tools and remote operating services. Today Properly serves 10,000+ hosts across 45+ countries through the self-service Platform, Cohost Pro, and Guest Support Plus. </p> <!-- Above-fold CTAs --> <div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row sm:flex-wrap sm:*:whitespace-nowrap"> <a href="/book-demo" class="inline-flex items-center gap-2 rounded-full bg-accent-500 px-8 py-4 text-base font-bold text-primary-950 shadow-lg shadow-accent-500/20 transition-all duration-300 hover:scale-[1.03] hover:bg-accent-600 hover:shadow-xl hover:shadow-accent-500/30 active:scale-[0.98] no-underline hover:no-underline"> Book a Demo <svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border-2 border-white/30 px-8 py-4 text-base font-semibold text-white transition-all duration-300 hover:scale-[1.02] hover:border-white/60 hover:bg-white/10 no-underline hover:no-underline"> Start Free Trial </a> </div> <!-- Stats row --> <div class="mx-auto mt-14 grid max-w-xl grid-cols-3 gap-6"> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl">
1082014
109</p> <p class="mt-1 text-xs text-white/60">Founded</p> </div> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl">
11045+
111</p> <p class="mt-1 text-xs text-white/60">Countries</p> </div> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl">
11210K+
113</p> <p class="mt-1 text-xs text-white/60">Hosts</p> </div> </div> </div> </section>  <section class="section-padding bg-white"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="grid grid-cols-1 items-center gap-12 md:grid-cols-2 md:gap-16" data-animate> <div> <div class="mb-6 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100"> <svg class="h-6 w-6 text-primary-700" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 01-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 006.16-12.12A14.98 14.98 0 009.631 8.41m5.96 5.96a14.926 14.926 0 01-5.841 2.58m-.119-8.54a6 6 0 00-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 00-2.58 5.841m2.699-2.842a4.5 4.5 0 10-.92-.814"></path> </svg> </div> <h2 class="font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Mission </h2> <p class="mt-6 text-lg leading-relaxed text-gray-600">Properly started with a simple idea: every vacation rental guest deserves a perfect arrival, and every host deserves the tools to make that happen without burning out. Today, the Properly Platform helps hands-on operators run their own workflows, while Cohost Pro and Guest Support Plus add clearly scoped remote operating support for property managers and owners.</p> </div> <div class="flex justify-center">  <img src="/_astro/about-company.CxVTtKte_ZJIfkh.webp" alt="The Properly team building vacation rental quality management tools" loading="lazy" decoding="async" width="751" height="871" class="w-full max-w-lg"> </div> </div> </div> </section>  <section class="section-padding bg-gray-50"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="mx-auto mb-16 max-w-2xl text-center" data-animate> <p class="text-xs font-semibold uppercase tracking-[0.2em] text-primary-600"> Our Journey </p> <h2 class="mt-4 font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Story </h2> <p class="mt-4 text-base leading-relaxed text-gray-500">From a simple idea born of real frustration to a global quality management platform.</p> </div> <!-- Timeline --> <div class="relative mx-auto max-w-4xl"> <div class="absolute left-8 top-0 bottom-0 w-px bg-gradient-to-b from-primary-400 via-primary-300 to-primary-200 md:left-1/2 md:-translate-x-px" aria-hidden="true"></div> <div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div>  <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pr-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700"> 2014 </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Founded </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Properly was created by hosts who were frustrated with unreliable turnovers. The idea was simple: use checklists and photo verification to ensure every turnover is done right. </p> </div> </div> </div><div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row-reverse" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div>  <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pl-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700">
113 2016-2020 </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Growth </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Expanded from a simple checklist tool to a full quality management platform — adding autoscheduling, a certified service provider marketplace, real-time inspections with AI, and an extensive skills training library. </p> </div> </div> </div><div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div>  <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pr-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700"> 2021–Present </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Global </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Properly now serves 10,000+ hosts across 45+ countries with the self-service Platform, Real-Time Inspection, Cohost Pro, and Guest Support Plus, working alongside customers&#39; local teams and vendors. </p> </div> </div> </div> </div> </div> </section>  <section class="section-padding bg-white"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="mx-auto mb-14 max-w-2xl text-center" data-animate> <p class="text-xs font-semibold uppercase tracking-[0.2em] text-primary-600"> What We Believe </p> <h2 class="mt-4 font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Values </h2> </div> <div class="grid grid-cols-1 gap-8 lg:grid-cols-3" data-animate> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Collaboration </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">Success is built on alignment between hosts, service providers, and platforms.</p> </div> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Quality </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">Every turnover should meet hotel-grade standards, consistently.</p> </div> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-
113primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Empowerment </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">We equip every person in the process to excel in their role.</p> </div> </div> </div> </section>  <section class="relative overflow-hidden bg-gradient-to-br from-primary-800 to-primary-900"> <div class="absolute inset-0 opacity-10" aria-hidden="true" style="background-image: radial-gradient(circle at 20% 50%, rgba(34,184,199,0.3) 0%, transparent 50%), radial-gradient(circle at 80% 50%, rgba(245,158,11,0.15) 0%, transparent 50%);"></div> <div class="relative mx-auto max-w-[1280px] px-6 py-20 text-center md:px-12 lg:px-20 lg:py-24" data-animate> <h2 class="mx-auto max-w-2xl font-display text-3xl font-extrabold tracking-tight text-white md:text-4xl lg:text-[2.75rem]"> Join the Properly Community </h2> <p class="mx-auto mt-5 max-w-xl text-lg leading-relaxed text-primary-100/80"> Thousands of hosts, property managers, and service providers trust Properly to deliver quality at every turnover. Start your free trial today. </p> <div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row sm:flex-wrap sm:*:whitespace-nowrap"> <a href="/book-demo" class="inline-flex items-center gap-2 rounded-full bg-accent-500 px-8 py-4 text-base font-bold text-primary-950 shadow-lg shadow-accent-500/25 transition-all duration-300 hover:scale-[1.03] hover:bg-accent-600 hover:shadow-xl hover:shadow-accent-500/30 active:scale-[0.98] no-underline hover:no-underline"> Book a Demo <svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border-2 border-white/30 px-8 py-4 text-base font-semibold text-white transition-all duration-300 hover:scale-[1.02] hover:border-white/60 hover:bg-white/10 no-underline hover:no-underline"> Start Free Trial </a> </div> </div> </section>  </main> <!-- Pre-footer CTA block --> <!-- Footer --> <footer class="bg-primary-900 text-white/80" role="contentinfo"> <div class="mx-auto max-w-[1200px] px-6 py-12 md:px-12 lg:px-20 lg:py-16"> <!-- Footer grid: the brand column gets 1.5 shares at lg so its app-store badges aren't squeezed. --><div class="grid grid-cols-2 gap-10 sm:grid-cols-3 lg:grid-cols-[1.5fr_repeat(5,minmax(0,1fr))] lg:gap-6 xl:grid-cols-6"> <!-- Column 1: Brand --><div class="col-span-2 sm:col-span-3 lg:col-span-1"> <a href="/" class="inline-block font-display text-2xl font-extrabold tracking-tight text-white no-underline hover:no-underline">
114PROPERLY
115</a> <p class="mt-4 max-w-xs text-sm leading-relaxed">Remote vacation-rental operations for owners and professional property managers.</p> <div class="mt-6 flex flex-col gap-3"> <a href="https://apple.co/3cpJDrS" target="_blank" rel="noopener noreferrer" class="inline-flex w-fit items-center gap-2.5 rounded-lg border border-white/15 bg-white/5 px-4 py-2.5 text-xs font-semibold text-white/90 transition-colors duration-200 hover:border-white/30 hover:bg-white/10 hover:text-white" aria-label="Download on the App Store" data-ga-event="app_store_click" data-ga-category="app_download" data-ga-label="app_store"> <!-- Apple icon --><svg class="h-5 w-5 shrink-0" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"></path> </svg> <span class="flex flex-col leading-tight"> <span class="text-[10px] font-normal text-white/60">Download on the</span> <span class="text-sm">App Store</span> </span> </a> <a href="https://play.google.com/store/apps/details?id=com.getproperly.properlyv2" target="_blank" rel="noopener noreferrer" class="inline-flex w-fit items-center gap-2.5 rounded-lg border border-white/15 bg-white/5 px-4 py-2.5 text-xs font-semibold text-white/90 transition-colors duration-200 hover:border-white/30 hover:bg-white/10 hover:text-white" aria-label="Get it on Google Play" data-ga-event="app_store_click" data-ga-category="app_download" data-ga-label="google_play"> <!-- Google Play icon -->
115<svg class="h-5 w-5 shrink-0" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M3.609 1.814L13.792 12 3.61 22.186a.996.996 0 01-.61-.92V2.734a1 1 0 01.609-.92zm10.89 10.893l2.302 2.302-10.937 6.333 8.635-8.635zm3.199-3.199l2.302 1.33-3.066 1.775-2.093-2.093 2.857-1.012zM5.864 2.658L16.8 8.99l-2.302 2.302-8.635-8.635z"></path> </svg> <span class="flex flex-col leading-tight"> <span class="text-[10px] font-normal text-white/60">Get it on</span> <span class="text-sm">Google Play</span> </span> </a> </div> </div> <!-- Column 2: Products --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Products </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/platform" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Platform"> Platform </a> </li><li> <a href="/actionable-intelligence" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Actionable Intelligence"> Actionable Intelligence </a> </li><li> <a href="/real-time-inspection" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Real-Time Inspection"> Real-Time Inspection </a> </li><li> <a href="/co-host" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Cohost Pro"> Cohost Pro </a> </li><li> <a href="/co-host-owners" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Guest Support Plus"> Guest Support Plus </a> </li> </ul> </div> <!-- Column 3: Features --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Features </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/autoscheduler" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Autoscheduler"> Autoscheduler </a> </li><li> <a href="/features/photo-checklists" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Photo Checklists"> Photo Checklists </a> </li><li> <a href="/features/marketplace" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Marketplace"> Marketplace </a> </li><li> <a href="/skills" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Skills &amp; Training"> Skills &amp; Training </a> </li><li> <a href="/ai" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="AI &amp; Innovation"> AI &amp; Innovation </a> </li><li> <a href="/features" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="All Features"> All Features </a> </li> </ul> </div> <!-- Column 4: Solutions --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Solutions </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Property Owners"> For Property Owners </a> </li><li> <a href="/property-managers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Property Managers"> For Property Managers </a> </li><li> <a href="/service-providers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Service Providers"> For Service Providers </a> </li> </ul> </div> <!-- Column 5: Resources --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Resources </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/blog" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Blog"> Blog </a> </li><li> <a href="/case-studies" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Case Studies"> Case Studies </a> </li><li> <a href="/str-shopping-list" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Vacation Rental Shopping List"> Vacation Rental Shopping List </a> </li><li> <a href="/properly-vs-turno" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Properly vs Turno"> Properly vs Turno </a> </li><li> <a href="/properly-vs-breezeway" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Properly vs Breezeway"> Properly vs Breezeway </a> </li><li> <a href="/partners" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Partners"> Partners </a> </li><li> <a href="/about" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="About"> About Us </a> </li><li> <a href="/pricing" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Plans &amp; Pricing"> Plans &amp; Pricing </a> </li><li> <a href="/careers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Careers"> Careers </a> </li><li> <a href="https://help.getproperly.com/en/" target="_blank" rel="noopener noreferrer" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Support"> Support </a> </li> </ul> </div> <!-- Column 6: Connect --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Connect </h3> <ul class="mt-5 flex flex-wrap gap-3"> <li> <a href="https://www.facebook.com/GetProperly/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="Facebook" data-ga-event="social_click" data-ga-label="facebook"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path> </svg> </a> </li> <li> <a href="https://www.linkedin.com/company/properly-inc/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="LinkedIn" data-ga-event="social_click" data-ga-label="linkedin"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path> </svg> </a> </li> <li> <a href="https://www.instagram.com/theproperlyteam/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="Instagram" data-ga-event="social_click" data-ga-label="instagram"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 
11512 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678a6.162 6.162 0 100 12.324 6.162 6.162 0 100-12.324zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405a1.441 1.441 0 11-2.88 0 1.441 1.441 0 012.88 0z"></path> </svg> </a> </li> <li> <a href="https://x.com/GetProperly" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="X (formerly Twitter)" data-ga-event="social_click" data-ga-label="twitter"> <svg class="h-[16px] w-[16px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path> </svg> </a> </li> <li> <a href="https://www.youtube.com/@getproperly" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="YouTube" data-ga-event="social_click" data-ga-label="youtube"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path> </svg> </a> </li> </ul> </div> </div> <!-- Bottom bar --> <div class="mt-12 border-t border-primary-700/50 pt-8 lg:mt-16"> <div class="flex flex-col items-center gap-4 text-center sm:flex-row sm:justify-between sm:text-left"> <!-- Copyright + legal links --><div class="flex flex-col items-center gap-x-5 gap-y-2 sm:flex-row"> <p class="text-xs text-white/60"> © 2014–2026 Properly Inc. All rights reserved. </p> <ul class="flex items-center gap-5"> <li> <a href="/terms" class="text-xs text-white/60 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Terms of Service"> Terms of Service </a> </li><li> <a href="/privacy" class="text-xs text-white/60 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Privacy Policy"> Privacy Policy </a> </li> </ul> </div> <!-- Positioning descriptor --> <p class="text-xs text-white/60">Vacation rental quality management</p> </div> </div> </div> </footer>  <!-- Intercom Chat Widget — delayed until interaction or 10s after load to protect initial LCP --> 
115<script>
116      (function () {
117        let loaded = false;
118        let passiveLoadTimer;
119        function loadIntercom() {
120          if (loaded) return;
121          if (passiveLoadTimer) {
122            window.clearTimeout(passiveLoadTimer);
123            passiveLoadTimer = undefined;
124          }
125          // Intercom is functional support chat (not advertising/analytics), so it
126          // loads regardless of cookie consent — deferred so it does not compete
127          // with first paint/LCP work.
128          loaded = true;
129          window.intercomSettings = {
130            api_base: 'https://api-iam.intercom.io',
131            app_id: 'qr66vi0q',
132            // Below lg the sticky bottom CTA bar (~65px) owns the bottom edge;
133            // lift the launcher above it so it never covers the CTA button.
134            vertical_padding: window.matchMedia('(max-width: 1023px)').matches ? 88 : 20,
135          };
136          const w = window;
137          const ic = w.Intercom;
138          if (typeof ic === 'function') {
139            ic('reattach_activator');
140            ic('update', w.intercomSettings);
141          } else {
142            /* eslint-disable prefer-rest-params, no-var */
143            var d = document;
144            var i = function () {
145              i.c(arguments);
146            };
147            i.q = [];
148            i.c = function (args) {
149              i.q.push(args);
150            };
151            w.Intercom = i;
152            var s = d.createElement('script');
153            s.type = 'text/javascript';
154            s.async = true;
155            s.src = 'https://widget.intercom.io/widget/qr66vi0q';
156            var x = d.getElementsByTagName('script')[0];
157            x.parentNode.insertBefore(s, x);
158            /* eslint-enable prefer-rest-params, no-var */
159          }
160          // Track Intercom chat engagement via GA4
161          function trackIntercom(ic) {
162            if (typeof ic !== 'function') return;
163            ic('onShow', function () {
164              if (w.__properly && w.__properly.trackEvent) {
165                w.__properly.trackEvent('chat_open', { chat_provider: 'intercom' });
166              }
167            });
168            ic('onUserReplyMessage', function () {
169              if (w.__properly && w.__properly.trackEvent) {
170                w.__properly.trackEvent('chat_message_sent', { chat_provider: 'intercom' });
171              }
172            });
173          }
174          // Intercom may not be fully ready yet — poll briefly
175          let pollCount = 0;
176          const pollTimer = setInterval(function () {
177            pollCount++;
178            if (typeof w.Intercom === 'function' && w.Intercom.booted !== false) {
179              trackIntercom(w.Intercom);
180              clearInterval(pollTimer);
181            } else if (pollCount > 50) {
182              clearInterval(pollTimer);
183            }
184          }, 200);
185
186          // Clean up listeners after loading
187          window.removeEventListener('scroll', loadIntercom);
188          window.removeEventListener('click', loadIntercom);
189          window.removeEventListener('touchstart', loadIntercom);
190          window.removeEventListener('pointerdown', loadIntercom);
191          window.removeEventListener('keydown', loadIntercom);
192        }
193        window.addEventListener('scroll', loadIntercom, { once: true, passive: true });
194        window.addEventListener('click', loadIntercom, { once: true });
195        window.addEventListener('touchstart', loadIntercom, { once: true, passive: true });
196        window.addEventListener('pointerdown', loadIntercom, { once: true, passive: true });
197        window.addEventListener('keydown', loadIntercom, { once: true });
198
199        // Fallback: load for passive visitors, but outside the initial Lighthouse
200        // mobile measurement window.
201        function schedulePassiveLoad() {
202          passiveLoadTimer = window.setTimeout(loadIntercom, 10000);
203        }
204        if (document.readyState === 'complete') {
205          schedulePassiveLoad();
206        } else {
207          window.addEventListener('load', schedulePassiveLoad, { once: true });
208        }
209      })();
210    </script>
210<!-- Scroll-triggered animations via Intersection Observer --> 
210<script>
211      (function () {
212        function initObserver() {
213          const els = document.querySelectorAll('[data-animate]');
214          if (!els.length) return;
215          // Respect prefers-reduced-motion
216          if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
217            els.forEach(function (el) {
218              el.classList.remove('data-animate-hidden');
219            });
220            return;
221          }
222          const observer = new IntersectionObserver(
223            function (entries) {
224              entries.forEach(function (entry) {
225                if (entry.isIntersecting) {
226                  const el = entry.target;
227                  el.classList.remove('data-animate-hidden');
228                  // Support custom animation direction via data-animate value
229                  const anim = el.getAttribute('data-animate') || 'fade-in-up';
230                  el.classList.add('animate-' + anim);
231                  // Support animation delay via data-animate-delay
232                  const delay = el.getAttribute('data-animate-delay');
233                  if (delay) el.style.animationDelay = delay;
234                  // Auto-stagger children with [data-animate-child]
235                  const children = el.querySelectorAll('[data-animate-child]');
236                  children.forEach(function (child, i) {
237                    child.classList.remove('data-animate-hidden');
238                    const childAnim = child.getAttribute('data-animate-child') || 'fade-in-up';
239                    child.classList.add('animate-' + childAnim);
240                    child.style.animationDelay = i * 120 + 'ms';
241                  });
242                  observer.unobserve(el);
243                }
244              });
245            },
246            { threshold: 0.1, rootMargin: '0px 0px -40px 0px' },
247          );
248          els.forEach(function (el) {
249            el.classList.add('data-animate-hidden');
250            // Also hide children that will be staggered
251            const children = el.querySelectorAll('[data-animate-child]');
252            children.forEach(function (child) {
253              child.classList.add('data-animate-hidden');
254            });
255            observer.observe(el);
256          });
257        }
258        if (document.readyState === 'complete' || document.readyState === 'interactive') {
259          initObserver();
260        } else {
261          document.addEventListener('DOMContentLoaded', initObserver);
262        }
263        document.addEventListener('astro:page-load', initObserver);
264      })();
265    </script>
265<!-- Sticky mobile CTA bar — appears after scrolling past hero --> <div id="sticky-cta" class="fixed bottom-0 left-0 right-0 z-40 translate-y-full transition-transform duration-300 lg:hidden" aria-hidden="true" inert> <div class="flex items-center justify-between gap-3 border-t border-gray-200 bg-white/95 px-4 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur-lg shadow-[0_-4px_16px_rgba(0,0,0,0.08)]"> <a href="/book-demo" class="block w-full rounded-full bg-accent-500 px-5 py-3 text-center text-sm font-bold text-primary-950 shadow-sm transition-all duration-200 hover:bg-accent-600 no-underline hover:no-underline" data-ga-event="demo_cta_click" data-ga-label="sticky_mobile"> Book a Demo </a> </div> </div> 
265<script>
266      (function () {
267        let stickyCta = document.getElementById('sticky-cta');
268        if (!stickyCta) return;
269        let shown = false;
270
271        /** Returns true when the cookie-consent banner is currently visible (not translated off-screen). */
272        function isCookieBannerVisible() {
273          const banner = document.getElementById('cookie-consent');
274          // Banner is visible when it exists, is not aria-hidden, and has not been slid away
275          if (!banner) return false;
276          if (banner.getAttribute('aria-hidden') === 'true') return false;
277          return banner.classList.contains('translate-y-full') === false;
278        }
279
280        function checkScroll() {
281          const shouldShow = window.scrollY > 600 && !isCookieBannerVisible();
282          if (shouldShow && !shown) {
283            stickyCta.classList.remove('translate-y-full');
284            stickyCta.setAttribute('aria-hidden', 'false');
285            // Keep the bar's link out of the tab order / a11y tree while hidden,
286            // and restore it here. inert mirrors aria-hidden so keyboard and
287            // screen-reader users can't reach an off-screen CTA.
288            stickyCta.removeAttribute('inert');
289            shown = true;
290          } else if (!shouldShow && shown) {
291            stickyCta.classList.add('translate-y-full');
292            stickyCta.setAttribute('aria-hidden', 'true');
293            stickyCta.setAttribute('inert', '');
294            shown = false;
295          }
296        }
297
298        window.addEventListener('scroll', checkScroll, { passive: true });
299
300        // Re-evaluate when the cookie banner is dismissed so the sticky CTA can appear immediately
301        window.addEventListener('consentGranted', checkScroll);
302        // Also re-check when the banner hides after a rejection (fired by cookie-consent script)
303        window.addEventListener('consentDismissed', checkScroll);
304
305        document.addEventListener('astro:page-load', function () {
306          stickyCta = document.getElementById('sticky-cta');
307          shown = false;
308          checkScroll();
309        });
310      })();
311    </script>
311<!-- Google Analytics — always load gtag.js; Consent Mode gates storage --> 
311<script>(function(){const analyticsTagId = "GT-NBXPWL5";
312
313      (function () {
314        const s = document.createElement('script');
315        s.async = true;
316        s.src = 'https://www.googletagmanager.com/gtag/js?id=' + encodeURIComponent(analyticsTagId);
317        document.head.appendChild(s);
318      })();
319    })();</script>
319<!-- Analytics event tracking initialization --> 
319<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.INiKB_zu.js"></script>
319<!-- UTM parameter forwarding to external links (signup, login, findacleaner) --> 
319<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_1_lang.ocehvnp3.js"></script>
319<div id="cookie-consent" class="fixed bottom-0 inset-x-0 z-[60] translate-y-full transition-transform duration-500 ease-out" role="alertdialog" aria-label="Cookie consent" aria-describedby="cookie-consent-message" aria-hidden="true" inert> <div class="mx-auto max-w-[820px] px-4 pb-[max(1rem,env(safe-area-inset-bottom))] sm:px-6"> <div class="rounded-2xl border border-gray-200 bg-white p-5 shadow-[0_-8px_30px_rgba(0,0,0,0.1)] sm:p-6"> <div id="cookie-consent-message" class="text-sm leading-relaxed text-gray-600"> We use cookies for analytics and to improve your experience. We share data with Google Analytics and Intercom. See our Privacy Policy for details. <a href="/privacy" class="font-medium text-primary-600 underline underline-offset-2 transition-colors duration-150 hover:text-primary-700"> Privacy Policy </a> </div> <!-- Consent choices: decline (all denied) / accept (analytics granted, no ad signals) --> <div class="mt-4 flex flex-wrap items-center gap-2 sm:justify-end"> <button id="cookie-reject" type="button" class="min-h-11 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 transition-colors duration-150 hover:bg-gray-50 hover:border-gray-400"> Decline </button> <button id="cookie-accept" type="button" class="min-h-11 rounded-lg bg-primary-600 px-4 py-2 text-sm font-semibold text-white shadow-sm transition-colors duration-150 hover:bg-primary-700"> Accept </button> </div> </div> </div> </div> 
319<script>
320  (function () {
321    const COOKIE_NAME = 'properly_consent';
322
323    function getCookie(name) {
324      const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
325      return match ? match[2] : null;
326    }
327
328    function setCookie(name, value, days) {
329      const d = new Date();
330      d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000);
331      const secure = location.protocol === 'https:' ? ';Secure' : '';
332      document.cookie =
333        name + '=' + value + ';expires=' + d.toUTCString() + ';path=/;SameSite=Lax' + secure;
334    }
335
336    function trackConsentEvent(eventName, params) {
337      if (window.__properly && window.__properly.trackEvent) {
338        window.__properly.trackEvent(eventName, params || {});
339        return;
340      }
341
342      const eventParams = Object.assign({}, params || {}, { page_path: window.location.pathname });
343      if (typeof window.gtag === 'function') {
344        window.gtag('event', eventName, eventParams);
345      } else {
346        window.dataLayer = window.dataLayer || [];
347        window.dataLayer.push(['event', eventName, eventParams]);
348      }
349    }
350
351    // If consent has already been recorded, do nothing
352    if (getCookie(COOKIE_NAME)) return;
353
354    const banner = document.getElementById('cookie-consent');
355    if (!banner) return;
356
357    let bannerShownAt = 0;
358
359    // Show the banner after a short delay so it doesn't block first paint
360    setTimeout(function () {
361      banner.classList.remove('translate-y-full');
362      banner.setAttribute('aria-hidden', 'false');
363      // Only reachable by keyboard/AT while actually shown — mirrors the
364      // sticky-CTA inert pattern in BaseLayout.astro.
365      banner.removeAttribute('inert');
366      bannerShownAt = Date.now();
367      trackConsentEvent('consent_banner_shown');
368    }, 800);
369
370    function hideBanner() {
371      banner.classList.add('translate-y-full');
372      banner.setAttribute('aria-hidden', 'true');
373      banner.setAttribute('inert', '');
374    }
375
376    function timeToConsent() {
377      return bannerShownAt > 0 ? Math.round((Date.now() - bannerShownAt) / 1000) : 0;
378    }
379
380    /** "Accept" — grants analytics; ad signals stay denied because ad tracking is not used */
381    document.getElementById('cookie-accept').addEventListener('click', function () {
382      setCookie(COOKIE_NAME, 'accepted', 365);
383      hideBanner();
384      // Update GA4 Consent Mode: analytics consent only
385      if (typeof window.gtag === 'function') {
386        window.gtag('consent', 'update', {
387          analytics_storage: 'granted',
388          ad_storage: 'denied',
389          ad_user_data: 'denied',
390          ad_personalization: 'denied',
391        });
392      }
393      // Dispatch event so analytics-dependent scripts can re-initialize
394      window.dispatchEvent(new CustomEvent('consentGranted'));
395      // Track consent acceptance with time to decision
396      const ttc = timeToConsent();
397      trackConsentEvent('consent_update', {
398        action: 'accept',
399        time_to_consent_sec: ttc,
400      });
401    });
402
403    /** "Decline" — denies all signals so the visitor can opt out as easily as opt in */
404    document.getElementById('cookie-reject').addEventListener('click', function () {
405      setCookie(COOKIE_NAME, 'rejected', 365);
406      hideBanner();
407      // Explicitly signal denial to GA4 Consent Mode for all four signals
408      if (typeof window.gtag === 'function') {
409        window.gtag('consent', 'update', {
410          analytics_storage: 'denied',
411          ad_storage: 'denied',
412          ad_user_data: 'denied',
413          ad_personalization: 'denied',
414        });
415      }
416      // Track the rejection through gtag; Consent Mode gates storage/identifiers.
417      const ttc = timeToConsent();
418      trackConsentEvent('consent_update', {
419        action: 'reject',
420        time_to_consent_sec: ttc,
421      });
422      // Notify other scripts (e.g. sticky CTA) that the banner has been dismissed
423      window.dispatchEvent(new CustomEvent('consentDismissed'));
424    });
425  })();
426</script>
426 </body> </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.