1<!DOCTYPE html><html lang="en" dir="ltr" class="light" style="color-scheme:light" data-beasties-container><head> 2 <meta charset="UTF-8"> 3 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4 <!-- Title: keyword first, differentiator second, brand last, and under the 5 ~60 characters Google renders. The previous title was four pipe-joined 6 keyword phrases; Google rewrites titles that read as keyword lists, so 7 the stuffing bought nothing and cost the click-through. --> 8 <title>RentalTide App Store | Integrations & Add-ons</title> 9 10 <meta name="author" content="RentalTide"> 11 <!-- meta keywords: Google has ignored this since 2009 and a 60-term list 12 reads as spam to the engines that still parse it. Trimmed to the few 13 terms that describe the homepage; per-page values come from SEOHead. --> 14 15 <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 16 <meta name="googlebot" content="index, follow"> 17 <meta name="theme-color" content="#FFFFFF" media="(prefers-color-scheme: light)"> 18 <meta name="theme-color" content="#0B1320" media="(prefers-color-scheme: dark)"> 19 <meta name="mobile-web-app-capable" content="yes"> 20 <meta name="apple-mobile-web-app-capable" content="yes"> 21 <meta name="apple-mobile-web-app-status-bar-style" content="default"> 22 <meta name="format-detection" content="telephone=no"> 23 24 <!-- Open Graph / Facebook --> 25 26 27 28 29 30 <meta property="og:image:width" content="1200"> 31 <meta property="og:image:height" content="622"> 32 33 34 <meta property="og:locale" content="en_US"> 35 36 <!-- Twitter Card --> 37 38 39 <meta name="twitter:creator" content="@rentaltide"> 40 41 42 43 <meta name="twitter:image:alt" content="RentalTide Dashboard - AI-Powered Rental Management Software"> 44 45 <!-- Favicon --> 46 <link rel="icon" href="/favicon.ico" sizes="16x16 32x32 48x48"> 47 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 48 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 49 <link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png"> 50 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 51 <link rel="manifest" href="/site.webmanifest"> 52 53 <!-- Canonical URL --> 54 55 56 <!-- dns-prefetch third-party origins used after load. --> 57 <link rel="dns-prefetch" href="https://ipapi.co"> 58 <link rel="dns-prefetch" href="https://uptime.betterstack.com"> 59 <link rel="dns-prefetch" href="https://www.googletagmanager.com"> 60 <link rel="dns-prefetch" href="https://bzrcdn.openai.com"> 61 62 <!-- Preload the self-hosted Inter font (same-origin, one hop) so the hero 63 text paints in Inter without a Google Fonts round-trip. 64 65 Low priority, not high. The file is 51KB, and at high priority it was 66 taking that bandwidth from the HTML and the critical CSS before first 67 paint. Nothing waits on it: the face is font-display:swap and the 68 fallback is the metrics-matched "Inter Fallback" (Arial with Inter's 69 ascent/descent and size-adjust:100%), so the pre-swap text occupies the 70 same box and the swap neither shifts layout nor resizes the hero. --> 71 <link rel="preload" href="/fonts/inter-latin.woff2" as="font" type="font/woff2" crossorigin fetchpriority="low"> 72 73 <!-- The AdSense loader (ca-pub-4816323906670922) was removed. The site has 74 no <ins class="adsbygoogle"> slot on any route, so it rendered nothing 75 while costing a 57KB script, a 166KB follow-up bundle and three 76 injected iframes on every page. It was also the one third party that 77 loaded before the consent gate below, which contradicted the Cookie 78 Policy. Re-add it inside __rtLoadTags (marketing consent) if ad 79 inventory ever ships. --> 80 81 <!-- The dashboard LCP preload was removed with the hero screenshot it 82 pointed at. The desktop LCP element is now the h1, which paints from the
83 prerendered HTML with no image request at all. --> 84 85 <!-- Load non-critical third-party JS (widgets + analytics) on the first user 86 interaction, or a timeout fallback, so it executes after the initial load 87 instead of competing with hydration on the main thread. A click/scroll 88 loads it immediately (so conversions are still tracked); only a viewer who 89 leaves within the timeout with zero interaction is missed. --> 90
90<script> 91 window.__rtDeferTP = function (cb, timeout) { 92 var done = false; 93 var evts = ['pointerdown', 'keydown', 'touchstart', 'scroll']; 94 function fire() { 95 if (done) return; 96 done = true; 97 evts.forEach(function (e) { window.removeEventListener(e, fire); }); 98 cb(); 99 } 100 evts.forEach(function (e) { window.addEventListener(e, fire, { passive: true }); }); 101 window.addEventListener('load', function () { setTimeout(fire, timeout || 5000); }); 102 }; 103 104 // Status / announcement widget. 105 window.__rtDeferTP(function () { 106 var s = document.createElement('script'); 107 s.src = 'https://uptime.betterstack.com/widgets/announcement.js'; 108 s.async = true; 109 s.setAttribute('data-id', '198358'); 110 document.body.appendChild(s); 111 }); 112 </script>
112 113 <!-- Defer GTM/GA until first interaction or a 3.5s fallback. dataLayer + gtag 114 are defined now so any early events (e.g. ai_referral) queue and flush 115 once gtag.js loads. --> 116
116<script> 117 window.dataLayer = window.dataLayer || []; 118 function gtag(){dataLayer.push(arguments);} 119 120 /* 121 CONSENT GATE. Nothing that sets a non-essential cookie may load before the 122 visitor decides. Our own Cookie Policy has promised a banner, a reject 123 option and GPC support since May 2026; until this block existed GA4 and 124 Google Ads loaded unconditionally, which is a live GDPR/UK-GDPR problem 125 (Italy's Garante enforces on exactly this) and a misstatement of our own 126 published policy. 127 128 Consent Mode v2 denied-by-default is declared FIRST, before any config, so 129 even a tag that somehow loads early cannot write storage. src/lib/consent.ts 130 sends the `consent: update` once a decision exists. 131 */ 132 gtag('consent', 'default', { 133 analytics_storage: 'denied', 134 ad_storage: 'denied', 135 ad_user_data: 'denied', 136 ad_personalization: 'denied', 137 functionality_storage: 'denied', 138 personalization_storage: 'denied', 139 security_storage: 'granted', 140 wait_for_update: 500 141 }); 142 143 /* 144 The tag scripts themselves are ALSO parked, not merely consent-moded. 145 Consent Mode alone still contacts Google on load; for a visitor who has 146 rejected, the correct number of requests is zero. `__rtLoadTags` is 147 idempotent and is called by consent.ts on grant. 148 */ 149 window.__rtLoadTags = (function () { 150 var loaded = false; 151 return function () { 152 if (loaded) return; 153 loaded = true; 154 var ga = document.createElement('script'); 155 ga.async = true; 156 ga.src = 'https://www.googletagmanager.com/gtag/js?id=G-G0C0TBZJFX'; 157 document.head.appendChild(ga); 158 gtag('js', new Date()); 159 gtag('config', 'G-G0C0TBZJFX'); 160 gtag('config', 'AW-16910183435'); 161 }; 162 })(); 163 164 /* 165 OpenAI conversion pixel (id JY17d3jkiRNMtEqay8Tm7R). 166 167 Parked behind the same gate as Google Ads, and for the same reason: it 168 is an advertising measurement tag that sets its own storage, so it may 169 not load until the visitor has accepted the MARKETING category. Loading 170 it on analytics-only consent would be a category confusion the banner 171 does not offer the visitor. 172 173 This site has no signup form of its own. The conversion itself is 174 measured on app.rentaltide.com, where the account is actually created; 175 the pixel is initialised here so an ad click that lands on a marketing 176 page is seen before the visitor crosses over to the app. 177 178 `__rtLoadPixel` is idempotent and is also called by src/lib/consent.ts 179 the moment consent is granted. 180 */ 181 window.__rtLoadPixel = (function () { 182 var loaded = false; 183 return function () { 184 if (loaded) return; 185 loaded = true; 186 !(function (w, d, s, u) { 187 if (w.oaiq) return; 188 var q = function () { 189 q.q.push(arguments); 190 }; 191 q.q = []; 192 w.oaiq = q; 193 var j = d.createElement(s); 194 j.async = 1; 195 j.src = u; 196 var f = d.getElementsByTagName(s)[0]; 197 f.parentNode.insertBefore(j, f); 198 })(window, document, 'script', 'https://bzrcdn.openai.com/sdk/oaiq.min.js'); 199 // debug only off production, it logs every call to the console. 200 oaiq('init', { 201 pixelId: 'JY17d3jkiRNMtEqay8Tm7R', 202 debug: location.hostname !== 'rentaltide.com' && location.hostname !== 'www.rentaltide.com' 203 }); 204 }; 205 })(); 206 207 /* 208 Returning visitors who already consented get the tags on the same defer 209 schedule as before, so nothing regresses for them. First-time visitors 210 wait for the banner. Read inline rather than importing consent.ts, this 211 runs in <head>, long before the bundle. 212 */ 213 (function () { 214 try { 215 var m = document.cookie.match(/(?:^|; )rt_consent=([^;]*)/); 216 if (!m) return; 217 var c = JSON.parse(decodeURIComponent(m[1])); 218 if (!c || c.v !== 1) return; 219 gtag('consent', 'update', { 220 analytics_storage: c.analytics ? 'granted' : 'denied', 221 ad_storage: c.marketing ? 'granted' : 'denied', 222 ad_user_data: c.marketing ? 'granted' : 'denied', 223 ad_personalization: c.marketing ? 'granted' : 'denied', 224 functionality_storage: c.functional ? 'granted' : 'denied', 225 personalization_storage: c.functional ? 'granted' : 'denied', 226 security_storage: 'granted' 227 }); 228 if (c.analytics || c.marketing) window.__rtDeferTP(window.__rtLoadTags, 3500); 229 // Marketing category only: the pixel is an ad-measurement tag. 230 if (c.marketing) window.__rtDeferTP(window.__rtLoadPixel, 3500); 231 } catch (e) { /* unreadable cookie â stay denied and re-ask */ } 232 })(); 233 </script>
233 234 <!-- AI search referral tracking --> 235 <!-- Flags visits arriving from AI assistants (ChatGPT, Perplexity, Gemini, 236 Copilot, Claude, Grok, ...) via referrer or utm_source, and reports an 237 `ai_referral` GA4 event + dataLayer push so AI-driven traffic can be 238 segmented as classic organic-search traffic declines. --> 239
239<script> 240 (function () { 241 try { 242 var SOURCES = [ 243 { m: 'chatgpt.com', s: 'chatgpt' }, 244 { m: 'chat.openai.com', s: 'chatgpt' }, 245 { m: 'openai.com', s: 'chatgpt' }, 246 { m: 'perplexity.ai', s: 'perplexity' }, 247 { m: 'gemini.google.com', s: 'gemini' }, 248 { m: 'bard.google.com', s: 'gemini' }, 249 { m: 'copilot.microsoft.com', s: 'copilot' }, 250 { m: 'bing.com/chat', s: 'copilot' }, 251 { m: 'claude.ai', s: 'claude' }, 252 { m: 'grok.com', s: 'grok' }, 253 { m: 'x.com/i/grok', s: 'grok' }, 254 { m: 'you.com', s: 'you' }, 255 { m: 'phind.com', s: 'phind' }, 256 { m: 'poe.com', s: 'poe' }, 257 { m: 'meta.ai', s: 'meta-ai' }, 258 { m: 'chat.mistral.ai', s: 'mistral' }, 259 { m: 'duckduckgo.com/aichat', s: 'ddg-ai' } 260 ]; 261 var ref = (document.referrer || '').toLowerCase(); 262 var utm = ''; 263 try { utm = (new URLSearchParams(location.search).get('utm_source') || '').toLowerCase(); } catch (e) {} 264 var src = ''; 265 if (ref) { 266 for (var i = 0; i < SOURCES.length; i++) { 267 if (ref.indexOf(SOURCES[i].m) !== -1) { src = SOURCES[i].s; break; } 268 } 269 } 270 if (!src && utm) { 271 for (var j = 0; j < SOURCES.length; j++) { 272 if (utm.indexOf(SOURCES[j].s) !== -1) { src = SOURCES[j].s; break; } 273 } 274 if (!src && /chatgpt|openai|perplexity|gemini|copilot|claude|grok|llm|\bai\b/.test(utm)) src = utm; 275 } 276 if (src) { 277 window.__aiReferral = src; 278 window.dataLayer = window.dataLayer || []; 279 window.dataLayer.push({ event: 'ai_referral', ai_source: src, ai_referrer: ref || ('utm:' + utm) }); 280 (function send() { 281 if (typeof gtag === 'function') { 282 gtag('event', 'ai_referral', { ai_source: src, page_location: location.href, page_referrer: document.referrer }); 283 } else { setTimeout(send, 500); } 284 })(); 285 try { sessionStorage.setItem('rt_ai_src', src); } catch (e) {} 286 } 287 } catch (e) {} 288 })(); 289 </script>
289 290 <!-- Site-wide structured data. 291 Organization + WebSite only, and deliberately so. This block is in the 292 shell head, so it is emitted on EVERY route. The SoftwareApplication 293 node that used to live here went with it, for three reasons: 294 1. It carried an aggregateRating and six Review nodes on every page 295 of the site, including pages that render neither. Google only 296 accepts rating and review markup where the visitor can see the 297 same rating, so this was non-compliant everywhere except the 298 industry pages (which render <TrustRating /> and emit their own). 299 2. Its offers still advertised the two revenue-banded tiers 300 ("4.9% under $2.5M", "2.5% over $2.5M") that /pricing stopped 301 selling two pricing models ago. A rich result is the one place a 302 wrong price reaches a buyer before any page copy can correct it. 303 3. It duplicated the SoftwareApplication node the homepage, /ai and 304 every industry page already emit from src/lib/schema.ts. 305 The product node now comes from softwareApplicationSchema() in 306 src/lib/schema.ts, on the pages that are actually about the product. 307 Keep the Organization fields below identical to organizationSchema() 308 in src/lib/schema.ts: they share an @id and must resolve to one node. --> 309
309<script type="application/ld+json"> 310 [{ 311 "@context": "https://schema.org", 312 "@type": "Organization", 313 "@id": "https://rentaltide.com/#organization", 314 "name": "RentalTide Inc.", 315 "url": "https://rentaltide.com", 316 "logo": { 317 "@type": "ImageObject", 318 "url": "https://rentaltide.com/RentalTide_Dark.png" 319 }, 320 "description": "General-purpose AI-first rental management software for equipment rentals, boat hire, marinas, tours, and experiences.", 321 "foundingDate": "2025", 322 "address": { 323 "@type": "PostalAddress", 324 "streetAddress": "110 Didsbury Road", 325 "addressLocality": "Ottawa", 326 "addressRegion": "Ontario", 327 "addressCountry": "CA" 328 }, 329 "contactPoint": { 330 "@type": "ContactPoint", 331 "contactType": "customer service", 332 "email": "[email protected]", 333 "availableLanguage": "English" 334 }, 335 "sameAs": [ 336 "https://linkedin.com/company/rentaltide", 337 "https://facebook.com/rentaltide", 338 "https://instagram.com/rentaltide", 339 "https://youtube.com/@rentaltide" 340 ] 341 }, 342 { 343 "@context": "https://schema.org", 344 "@type": "WebSite", 345 "@id": "https://rentaltide.com/#website", 346 "name": "RentalTide", 347 "url": "https://rentaltide.com", 348 "publisher": { "@id": "https://rentaltide.com/#organization" }, 349 "inLanguage": ["en", "en-AU", "es", "fr", "de", "it", "pt", "zh", "ja", "ar", "ru", "ko"], 350 "description": "AI-powered asset rental management software", 351 "potentialAction": { 352 "@type": "SearchAction", 353 "target": "https://rentaltide.com/search?q={search_term_string}", 354 "query-input": "required name=search_term_string" 355 } 356 }] 357 </script>
357 358 <!-- Google Ads tag - deferred to first interaction / 3.5s fallback (same as GA). 359 A click loads it before any conversion fires, so conversion tracking holds. --> 360 <!-- Google Ads now loads through the same consent-gated `__rtLoadTags` as GA 361 (it is the same gtag.js endpoint, so one script serves both ids). Loading 362 it separately here would have re-opened the gate the block above closes. --> 363
363<script type="module" fetchpriority="low" crossorigin src="/assets/index-BBlr5mjY.js"></script>
363 364 <link rel="modulepreload" fetchpriority="low" crossorigin href="/assets/vendor-icons-DdDstFZX.js"> 365 <style>*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,Inter Fallback,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2,h3{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}h1,h2,h3,p{margin:0}ol,ul{list-style:none;margin:0;padding:0}input::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}img,svg{display:block;vertical-align:middle}img{max-width:100%;height:auto}:root,.light{--surface:0 0% 100%;--surface-tint:210 40% 96.1%;--surface-raised:202 40% 96%;--surface-sunken:207 33% 95%;--surface-overlay:0 0% 100%;--ink:217 49% 8.4%;--ink-muted:210 21% 33%;--ink-subtle:211 18% 41%;--hairline:212.7 24.4% 91.2%;--hairline-soft:217 25% 94%;--hairline-strong:212 25% 87%;--control-border:211 13% 55%;--accent-brand:179 85% 40.2%;--accent-hover:179 85% 36%;--accent-active:179 85% 32%;--accent-strong:179 87% 24%;--accent-strong-band:179 87% 20%;--accent-ink:217 49% 8.4%;--accent-tint:180 51% 94%;--accent-border:179 60% 78%;--accent-glow:191.1 86.7% 55.9%;--grad-0:187 60% 97%;--grad-1:178 60% 83%;--grad-2:202 82% 86%;--grad-3:209 80% 90%;--grad-4:191 78% 87%;--grad-ink-a:179 87% 24%;--grad-ink-b:196 85% 26%;--success:179 87% 24%;--success-fill:180 51% 94%;--warning:39 100% 27%;--warning-fill:41 80% 92%;--danger:4 77% 40%;--danger-fill:4 80% 95%;--band:217 49% 8.4%;--band-raised:214 46% 14%;--band-hairline:219 37% 21%;--band-ink:210 50% 98%;--band-ink-muted:211 27% 70%;--band-accent:179 68% 63%;--band-danger:4 90% 71%;--shadow-sm:0 1px 2px hsl(217 49% 8.4% / .06), 0 1px 1px hsl(217 49% 8.4% / .04);--shadow-card:0 1px 2px hsl(217 49% 8.4% / .06), 0 8px 24px hsl(217 49% 8.4% / .06);--shadow-hover:0 1px 2px hsl(217 49% 8.4% / .07), 0 12px 32px hsl(217 49% 8.4% / .1);--shadow-overlay:0 2px 4px hsl(217 49% 8.4% / .06), 0 16px 48px hsl(217 49% 8.4% / .14);--radius:.75rem;--radius-frame:1rem;--radius-ctrl:.5rem;--radius-chip:.375rem;--radius-pill:999px;--background:var(--surface);--foreground:var(--ink);--card:var(--surface);--card-foreground:var(--ink);--popover:var(--surface-overlay);--popover-foreground:var(--ink);--primary:var(--accent-brand);--primary-foreground:var(--accent-ink);--primary-glow:var(--accent-glow);--secondary:var(--surface-raised);--secondary-foreground:var(--ink);--muted:var(--surface-tint);--muted-foreground:var(--ink-muted);
365--accent:var(--surface-raised);--accent-foreground:var(--ink);--destructive:var(--danger);--destructive-foreground:0 0% 100%;--border:var(--hairline);--input:var(--hairline-strong);--ring:var(--accent-strong);--mist:var(--ink-muted);--faint:var(--ink-subtle);--abyss:var(--surface);--sky:var(--surface-tint);--haze:var(--surface-tint);--water:var(--surface-sunken);--tide-body:var(--accent-strong);--tide-core:var(--accent-brand);--tide-deep:186 46% 88%;--tide-glass:var(--surface-raised);--danger-text:var(--danger);--brand-teal:var(--accent-brand);--brand-cyan:var(--accent-glow);--brand-sky:208 83% 74%;--brand-petrol:189 100% 15%;--brand-lime:82 80% 70%;--glass-fill:var(--surface-raised);--glass-stroke:var(--hairline);--glass-stroke-strong:var(--hairline-strong);--glass-highlight:0 0% 100% / .28;--glass-blur:0px;--gradient-primary:linear-gradient(135deg, hsl(var(--accent-brand)), hsl(var(--accent-glow)));--gradient-secondary:linear-gradient(135deg, hsl(var(--surface)), hsl(var(--surface-tint)));--gradient-ink:linear-gradient(96deg, hsl(var(--grad-ink-a)), hsl(var(--grad-ink-b)));--sidebar-background:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%;--sidebar-ring:217.2 91.2% 59.8%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));font-family:Inter,Inter Fallback,system-ui,sans-serif;color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:hsl(var(--surface))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width: 1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.left-0{left:0}.left-4{left:1rem}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-12{margin-top:3rem}.mt-4{margin-top:1rem}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-9{height:2.25rem}.h-auto{height:auto}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-16{width:4rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-\[200px\]{width:200px}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-\[34ch\]{max-width:34ch}.max-w-xl{max-width:36rem}.flex-shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-7{gap:1.75rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-10{row-gap:2.5rem}.gap-y-12{row-gap:3rem}.gap-y-2{row-gap:.5rem}.gap-y-4{row-gap:1rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-2xl{border-radius:var(--radius-frame)}.rounded-full{border-radius:9999px}
365.rounded-md{border-radius:var(--radius-ctrl)}.rounded-xl{border-radius:var(--radius)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-border{border-color:hsl(var(--border))}.border-border\/30{border-color:hsl(var(--border) / .3)}.border-hairline{border-color:hsl(var(--hairline))}.border-hairline-strong{border-color:hsl(var(--hairline-strong))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-brand{background-color:hsl(var(--accent-brand))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-surface{background-color:hsl(var(--surface))}.bg-surface-overlay{background-color:hsl(var(--surface-overlay))}.bg-surface-tint{background-color:hsl(var(--surface-tint))}.bg-transparent{background-color:transparent}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-primary\/5{--tw-gradient-from:hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to:rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-secondary\/5{--tw-gradient-to:hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.p-0{padding:0}.p-4{padding:1rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pb-16{padding-bottom:4rem}.pb-20{padding-bottom:5rem}.pl-12{padding-left:3rem}.pt-10{padding-top:2.5rem}.pt-16{padding-top:4rem}.pt-20{padding-top:5rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[10px\]{font-size:10px}.text-caption{font-size:.8125rem;line-height:1.45;letter-spacing:0;font-weight:400}.text-label{font-size:.8125rem;line-height:1.4;letter-spacing:.01em;font-weight:500}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-small{font-size:.875rem;line-height:1.55;letter-spacing:0;font-weight:400}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-\[hsl\(var\(--accent-strong\)\)\]{color:hsl(var(--accent-strong))}.text-brand-ink{color:hsl(var(--accent-ink))}.text-foreground{color:hsl(var(--foreground))}.text-ink{color:hsl(var(--ink))}.text-ink-muted{color:hsl(var(--ink-muted))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--accent-strong))}.opacity-50{opacity:.5}.shadow-sm{--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-sha
365dow)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.transition-\[background-color\,border-color\,color\,box-shadow\]{transition-property:background-color,border-color,color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[border-color\]{transition-property:border-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-120{transition-duration:.12s}.duration-240{transition-duration:.24s}.ease-rt-settle{transition-timing-function:var(--rt-ease-settle)}.duration-120{animation-duration:.12s}.duration-240{animation-duration:.24s}.ease-rt-settle{animation-timing-function:var(--rt-ease-settle)}.\[box-shadow\:inset_0_1px_0_hsl\(0_0\%_100\%\/0\.28\)\,var\(--shadow-sm\)\]{box-shadow:inset 0 1px #ffffff47,var(--shadow-sm)}html,body,#root{overflow-x:hidden}html{scroll-padding-top:88px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}:root{--rt-dur-fast:.12s;--rt-dur-settle:.24s;--rt-dur-line:.32s;--rt-dur-cross:.4s;--rt-dur-scene:.45s;--rt-dur-reveal:.48s;--rt-dur-draw:.8s;--rt-dur-glide:1.6s;--rt-dur-stage:.8s;--rt-dur-tide:6s;--rt-exit-menu:.1s;--rt-exit-dialog:.16s;--rt-exit-sheet:.2s;--rt-readout-progress:5.2s;--rt-readout-spinner:.8s;--rt-period-breath:7.2s;--rt-ease-out:cubic-bezier(.21, .47, .32, .98);--rt-ease-glide:cubic-bezier(.16, 1, .3, 1);--rt-ease-settle:cubic-bezier(.4, 0, .2, 1);--rt-ease-in-out:cubic-bezier(.65, 0, .35, 1);--rt-ease-breath:cubic-bezier(.37, 0, .63, 1);--rt-d-lift:-2px;--rt-d-nudge:4px;--rt-d-sheet:8px;--rt-d-scene:12px;--rt-d-rise:16px;--rt-d-slot:40px;--rt-d-dash:60px;--rt-stagger-grid:60ms;--rt-stagger-scene:.12s;--rt-scale-dash:.97;--rt-scale-play:1.05;--rt-blur-glass:16px;--rt-t-color:color var(--rt-dur-fast) var(--rt-ease-settle), background-color var(--rt-dur-fast) var(--rt-ease-settle), border-color var(--rt-dur-fast) var(--rt-ease-settle), outline-color var(--rt-dur-fast) var(--rt-ease-settle);--rt-t-lift:transform var(--rt-dur-reveal) var(--rt-ease-out);--rt-t-halo:opacity var(--rt-dur-settle) var(--rt-ease-settle), filter var(--rt-dur-settle) var(--rt-ease-settle);--rt-t-fade:opacity var(--rt-dur-cross) var(--rt-ease-out);--rt-t-cross:opacity var(--rt-dur-cross) var(--rt-ease-in-out)}.rt-container{width:100%;max-width:1128px;margin-inline:auto;padding-inline:20px}@media (min-width: 640px){.rt-container{padding-inline:24px}}.rt-eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:hsl(var(--accent-strong));margin-bottom:12px}.rt-footer{background:hsl(var(--surface-tint));color:hsl(var(--ink));border-top:1px solid hsl(var(--hairline))}.rt-footer .rt-footer__link{color:hsl(var(--ink-muted));transition:var(--rt-t-color)}.rt-footer .rt-footer__link:hover{color:hsl(var(--ink))}.rt-footer .rt-footer__social{color:hsl(var(--ink-muted));border-color:hsl(var(--hairline-strong));transition:var(--rt-t-color)}.rt-footer .rt-footer__social:hover{color:hsl(var(--ink));border-color:hsl(var(--accent-strong))}.rt-store-badge{filter:invert(1)}.rt-footer__wordmark--dark{display:none}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-\[hsl\(var\(--control-border\)\)\]:hover{border-color:hsl(var(--control-border))}.hover\:bg-brand-hover:hover{background-color:hsl(var(--accent-hover))}.hover\:bg-surface-raised:hover{background-color:hsl(var(--surface-raised))}.hover\:bg-surface-tint:hover{background-color:hsl(var(--surface-tint))}.hover\:text-brand-strong:hover{color:hsl(var(--accent-strong))}.hover\:text-ink:hover{color:hsl(var(--ink))}.hover\:text-primary:hover{color:hsl(var(--accent-strong))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
365dow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:\[outline-offset\:2px\]:focus-visible{outline-offset:2px}.focus-visible\:\[outline\:2px_solid_hsl\(var\(--accent-strong\)\)\]:focus-visible{outline:2px solid hsl(var(--accent-strong))}.active\:bg-brand-active:active{background-color:hsl(var(--accent-active))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.dark\:block:is(.dark *){display:block}.dark\:inline:is(.dark *){display:inline}.dark\:hidden:is(.dark *){display:none}.dark\:from-primary\/10:is(.dark *){--tw-gradient-from:hsl(var(--primary) / .1) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:to-secondary\/10:is(.dark *){--tw-gradient-to:hsl(var(--secondary) / .1) var(--tw-gradient-to-position)}@media (min-width: 640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width: 1195px){.md\:max-w-\[420px\]{max-width:420px}.md\:shrink-0{flex-shrink:0}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[13rem_minmax\(0\,1fr\)\]{grid-template-columns:13rem minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1200px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:text-6xl{font-size:3.75rem;line-height:1}}</style><link rel="preload" crossorigin href="/assets/index-kF3kxLGF.css" onload="this.rel='stylesheet'" as="style"><noscript><link rel="stylesheet" crossorigin href="/assets/index-kF3kxLGF.css"></noscript> 366 <style type="text/css">:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
366left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
366:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
366--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} 367</style><link rel="canonical" href="https://rentaltide.com/apps" data-rh="true"><link rel="alternate" hreflang="x-default" href="https://rentaltide.com/apps" data-rh="true"><link rel="alternate" hreflang="en" href="https://rentaltide.com/apps" data-rh="true"><link rel="alternate" hreflang="en-AU" href="https://rentaltide.com/en-AU/apps" data-rh="true"><link rel="alternate" hreflang="es" href="https://rentaltide.com/es/apps" data-rh="true"><link rel="alternate" hreflang="fr" href="https://rentaltide.com/fr/apps" data-rh="true"><link rel="alternate" hreflang="de" href="https://rentaltide.com/de/apps" data-rh="true"><link rel="alternate" hreflang="it" href="https://rentaltide.com/it/apps" data-rh="true"><link rel="alternate" hreflang="pt" href="https://rentaltide.com/pt/apps" data-rh="true"><link rel="alternate" hreflang="zh" href="https://rentaltide.com/zh/apps" data-rh="true"><link rel="alternate" hreflang="ja" href="https://rentaltide.com/ja/apps" data-rh="true"><link rel="alternate" hreflang="ar" href="https://rentaltide.com/ar/apps" data-rh="true"><link rel="alternate" hreflang="ru" href="https://rentaltide.com/ru/apps" data-rh="true"><link rel="alternate" hreflang="ko" href="https://rentaltide.com/ko/apps" data-rh="true"><meta name="description" content="Browse RentalTide's app store for integrations with Stripe, QuickBooks, GPS tracking, security cameras, and more for your rental business." data-rh="true"><meta name="keywords" content="RentalTide integrations, rental softw
367are apps, rental add-ons, rental platform marketplace" data-rh="true"><meta property="og:title" content="RentalTide App Store | Integrations & Add-ons" data-rh="true"><meta property="og:description" content="Browse RentalTide's app store for integrations with Stripe, QuickBooks, GPS tracking, security cameras, and more for your rental business." data-rh="true"><meta property="og:type" content="website" data-rh="true"><meta property="og:url" content="https://rentaltide.com/apps" data-rh="true"><meta property="og:image" content="https://rentaltide.com/dashboard.png" data-rh="true"><meta property="og:image:alt" content="RentalTide - AI-Powered Rental Management Software" data-rh="true"><meta property="og:site_name" content="RentalTide" data-rh="true"><meta name="twitter:card" content="summary_large_image" data-rh="true"><meta name="twitter:site" content="@rentaltide" data-rh="true"><meta name="twitter:title" content="RentalTide App Store | Integrations & Add-ons" data-rh="true"><meta name="twitter:description" content="Browse RentalTide's app store for integrations with Stripe, QuickBooks, GPS tracking, security cameras, and more for your rental business." data-rh="true"><meta name="twitter:image" content="https://rentaltide.com/dashboard.png" data-rh="true">
367<script type="application/ld+json" data-rh="true">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://rentaltide.com/"},{"@type":"ListItem","position":2,"name":"Apps","item":"https://rentaltide.com/apps"}]}</script>
367</head> 368 369 <body> 370 <!-- 371 _____ _ _ _______ _ _ 372 | __ \ | | | | |__ __(_) | | 373 | |__) |___ _ __ | |_ __ _| | | | _ __| | ___ 374 | _ // _ | '_ \| __/ _` | | | | | |/ _` |/ _ \ 375 | | \ | __| | | | || (_| | | | | | | (_| | __/ 376 |_| \_\___|_| |_|\__\__,_|_| |_| |_|\__,_|\___| Inc. 377 © 2026 RentalTide Inc. All rights reserved. 378 379 RentalTide Booking Platform 380 Don't copy, just apply for a job. :) 381 --> 382 <div id="root">
382<script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if(e){c.add(e|| '')}else{c.add('light');}if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'light'}catch(t){}}();</script>
382<div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events:none"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div data-rt-suspense="true" style="display:contents"><!--$--><div class="min-h-screen bg-background overflow-x-hidden"><nav class="fixed top-0 left-0 right-0 z-50 bg-surface-overlay border-b border-transparent data-[scrolled]:border-hairline transition-[border-color] duration-240 ease-rt-settle"><div class="container mx-auto px-6 py-3"><div class="flex items-center justify-between"><a class="flex items-center space-x-2 flex-shrink-0" href="/"><img src="/RentalTide_Dark.svg" alt="RentalTide Logo" class="h-10 w-auto dark:hidden" width="187" height="40" fetchpriority="high"><img src="/RentalTide_Light.svg" alt aria-hidden="true" class="h-10 w-auto hidden dark:block" width="187" height="40"></a><div class="hidden lg:flex items-center space-x-1"><div><button class="flex items-center gap-1 px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md">Why RentalTide?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-3.5 h-3.5 transition-transform"><path d="m6 9 6 6 6-6"/></svg></button></div><div><button class="flex items-center gap-1 px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md">Products<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-3.5 h-3.5 transition-transform"><path d="m6 9 6 6 6-6"/></svg></button></div><div><button class="flex items-center gap-1 px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md">Industries<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-3.5 h-3.5 transition-transform"><path d="m6 9 6 6 6-6"/></svg></button></div><a class="flex items-center gap-1.5 px-3 py-2 text-sm text-ink hover:text-brand-strong transition-colors duration-120 ease-rt-settle rounded-md" href="/everything">Everything<span class="rounded-full bg-surface-tint border border-hairline px-1.5 py-0.5 text-[10px] font-semibold text-ink">789</span></a><a class="px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md" href="/pricing">Pricing</a><button class="px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md">Security</button><a href="https://docs.rentaltide.com" target="_blank" rel="noopener noreferrer" class="px-3 py-2 text-sm text-ink-muted hover:text-ink transition-colors duration-120 ease-rt-settle rounded-md">Docs</a></div><div class="hidden lg:flex items-center space-x-2"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-transparent text-ink-muted hover:bg-surface-raised hover:text-ink h-10 w-10 p-0 relative" type="button" id="radix-:r3:" aria-haspopup="menu" aria-expanded="false" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe h-5 w-5"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg><span class="sr-only">Change language</span></button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-transparent text-ink-muted hover:bg-surface-raised hover:text-ink p-0 h-9 w-9"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon h-4 w-4 dark:hidden" aria-hidden="true"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"/></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun h-4 w-4 hidden dark:block" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></svg><span class="sr-only dark:hidden">Switch to dark mode</span><span class="sr-only hidden dark:inline">Switch to light mode</span></button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-transparent text-ink-muted hover:bg-surface-raised hover:text-ink h-10 px-4 text-sm">Sign In</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-sm">Start for $0</button></div><button class="lg:hidden text-ink" aria-label="Open menu" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg></button></div></div></nav><div class="pt-20"><nav aria-label="Breadcrumbs" class="bg-muted/30 border-b border-border/30 "><div class="container mx-auto px-4 sm:px-6 py-3"><ol class="flex items-center space-x-2 text-sm"><li class="flex items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house w-4 h-4 mr-1 text-muted-foreground"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"/><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg><a class="text-muted-foreground hover:text-primary transition-colors" href="/">Home</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-4 h-4 mx-2 text-muted-foreground"><path d="m9 18 6-6-6-6"/></svg></li><li class="flex items-center"><span class="text-foreground font-medium" aria-current="page">Apps</span></li></ol></div></nav></div><main class="overflow-x-hidden"><section class="relative pt-5 pb-16 overflow-hidden"><div class="absolute inset-0 bg-gradient-to-br from-primary/5 via-trans
382parent to-secondary/5 dark:from-primary/10 dark:to-secondary/10"></div><div class="container mx-auto px-4 relative z-10"><div class="max-w-4xl mx-auto text-center"><div class="inline-flex items-center gap-2 mb-6"><div class="inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 text-primary border-primary">App Marketplace</div></div><h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-foreground mb-6">Extend Your<!-- --> <span class="text-primary">RentalTide Experience</span></h1><p class="text-xl text-muted-foreground mb-8 max-w-2xl mx-auto">Discover powerful integrations and tools built by our partners to streamline your rental business operations.</p><div class="max-w-xl mx-auto relative"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search absolute left-4 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg><input class="flex w-full border px-3 py-2 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm pl-12 h-14 text-lg rounded-xl border-border bg-background" placeholder="Search apps..." value></div></div></div></section><section class="py-12"><div class="container mx-auto px-4"><div class="max-w-6xl mx-auto"><div class="flex flex-wrap gap-2 mb-8"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-brand text-brand-ink [box-shadow:inset_0_1px_0_hsl(0_0%_100%/0.28),var(--shadow-sm)] hover:bg-brand-hover active:bg-brand-active h-10 px-4 text-[0.875rem] rounded-full">All Apps</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Integrations</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Analytics</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Marketing</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Operations</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Accounting</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-10 px-4 text-[0.875rem] rounded-full">Communication</button></div><div class="text-center py-24 bg-muted/30 rounded-2xl"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-grid h-16 w-16 text-muted-foreground mx-auto mb-4 opacity-50"><rect width="7" height="7" x="3" y="3" rx="1"/><rect width="7" height="7" x="14" y="3" rx="1"/><rect width="7" height="7" x="14" y="14" rx="1"/><rect width="7" height="7" x="3" y="14" rx="1"/></svg><p class="text-xl font-semibold text-foreground mb-2">No apps found</p><p class="text-muted-foreground">Try adjusting your search or filters</p></div></div></div></section><section class="py-24 bg-gradient-to-br from-primary/5 to-secondary/5"><div class="container mx-auto px-4"><div class="max-w-3xl mx-auto text-center"><h2 class="text-3xl md:text-4xl font-bold text-foreground mb-4">Build Your Own Integration</h2><p class="text-xl text-muted-foreground mb-8">Join our partner program and build apps that reach thousands of rental businesses using RentalTide.</p><div class="flex flex-col sm:flex-row gap-4 justify-center"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-brand text-brand-ink [box-shadow:inset_0_1px_0_hsl(0_0%_100%/0.28),var(--shadow-sm)] hover:bg-brand-hover active:bg-brand-active h-12 px-6">Become a Partner</button><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md transition-[background-color,border-color,color,box-shadow] duration-120 ease-rt-settle focus-visible:outline-none focus-visible:ring-0 focus-visible:[outline:2px_solid_hsl(var(--accent-strong))] focus-visible:[outline-offset:2px] disabled:pointer-events-none disabled:opacity-60 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-surface text-ink border border-hairline-strong shadow-sm hover:bg-surface-tint hover:border-[hsl(var(--control-border))] h-12 px-6">View API Docs</button></div></div></div></section></main><footer class="rt-footer"><div class="rt-container pb-20 pt-16"><div class="grid md:grid-cols-[13rem_minmax(0,1fr)] md:gap-x-8 gap-y-12"><div class="flex flex-col items-start gap-7"><div><img src="/RentalTide_Dark.svg" alt="RentalTide" class="rt-footer__wordmark rt-footer__wordmark--light h-auto w-[200px]" width="300" height="64" loading="lazy"><img src="/RentalTide_Light.svg" alt="RentalTide" class="rt-footer__wordmark rt-footer__wordmark--dark h-auto w-[200px]" width="300" height="64" loading="lazy"></div><p class="max-w-[34ch] text-small text-ink-muted">The AI-powered operations platform for rental businesses.</p><div class="flex items-center gap-2"><a href="https://linkedin.com/company/rentaltide" target="_blank" rel="noopener noreferrer" class="rt-footer__social flex h-9 w-9 items-center justify-center rounded-md border" aria-label="LinkedIn"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
382ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect width="4" height="12" x="2" y="9"/><circle cx="4" cy="4" r="2"/></svg></a><a href="https://facebook.com/rentaltide" target="_blank" rel="noopener noreferrer" class="rt-footer__social flex h-9 w-9 items-center justify-center rounded-md border" aria-label="Facebook"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-facebook"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg></a><a href="https://instagram.com/rentaltide" target="_blank" rel="noopener noreferrer" class="rt-footer__social flex h-9 w-9 items-center justify-center rounded-md border" aria-label="Instagram"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-instagram"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" x2="17.51" y1="6.5" y2="6.5"/></svg></a><a href="https://youtube.com/@rentaltide" target="_blank" rel="noopener noreferrer" class="rt-footer__social flex h-9 w-9 items-center justify-center rounded-md border" aria-label="YouTube"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-youtube"><path d="M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17"/><path d="m10 15 5-3-5-3z"/></svg></a></div><div class="flex flex-wrap items-center gap-3"><a href="https://apps.apple.com/ca/app/rentaltide-booking-software/id6622908746" target="_blank" rel="noopener noreferrer" aria-label="Download on the App Store" class="flex-shrink-0"><img src="/appstore.svg" alt="Download on the App Store" width="121" height="36" class="rt-store-badge h-9 w-auto" loading="lazy"></a><a href="https://play.google.com/store/apps/details?id=com.wetrentals.booking" target="_blank" rel="noopener noreferrer" aria-label="Get it on Google Play" class="flex-shrink-0"><img src="/google-play.svg" alt="Get it on Google Play" width="122" height="36" class="rt-store-badge h-9 w-auto" loading="lazy"></a></div></div><div class="grid grid-cols-1 gap-x-6 gap-y-10 sm:grid-cols-2 md:grid-cols-3"><div><h3 class="mb-4 text-label text-ink">Product</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/#features">Features</a></li><li><a class="rt-footer__link text-sm" href="/everything">Every Feature</a></li><li><a class="rt-footer__link text-sm" href="/ai">AI Agents</a></li><li><a class="rt-footer__link text-sm" href="/pricing">Pricing</a></li><li><a class="rt-footer__link text-sm" href="/integrations">Integrations</a></li><li><a class="rt-footer__link text-sm" href="/#security">Security</a></li><li><a class="rt-footer__link text-sm" href="/new">What's New</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Industries</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/boats-marinas">Boats & Marinas</a></li><li><a class="rt-footer__link text-sm" href="/marina-management">Marina Management</a></li><li><a class="rt-footer__link text-sm" href="/tour-operations">Tour Operations</a></li><li><a class="rt-footer__link text-sm" href="/construction-equipment">Construction Equipment</a></li><li><a class="rt-footer__link text-sm" href="/equipment-tools">Equipment & Tools</a></li><li><a class="rt-footer__link text-sm" href="/spas">Spas & Wellness</a></li><li><a class="rt-footer__link text-sm" href="/jet-ski-rentals">Jet Ski & PWC</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">More industries</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/pontoon-rentals">Pontoon Boats</a></li><li><a class="rt-footer__link text-sm" href="/yacht-charter">
382Yacht Charter</a></li><li><a class="rt-footer__link text-sm" href="/ebike-rentals">E-Bikes</a></li><li><a class="rt-footer__link text-sm" href="/rv-rentals">RV & Camper</a></li><li><a class="rt-footer__link text-sm" href="/moped-scooter-rentals">Moped & Scooter</a></li><li><a class="rt-footer__link text-sm" href="/ski-snowboard-rentals">Ski & Snowboard</a></li><li><a class="rt-footer__link text-sm" href="/camera-gear-rentals">Camera & Gear</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Company</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/about">About</a></li><li><a class="rt-footer__link text-sm" href="/careers">Careers</a></li><li><a class="rt-footer__link text-sm" href="/press">Press</a></li><li><a class="rt-footer__link text-sm" href="/blog">Blog</a></li><li><a class="rt-footer__link text-sm" href="/developer">Developers</a></li><li><a href="https://help.rentaltide.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link text-sm">Contact</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Resources</h3><ul class="space-y-3"><li><a href="https://docs.rentaltide.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link text-sm">Documentation</a></li><li><a class="rt-footer__link text-sm" href="/rental-industry-benchmarks">Industry Benchmarks</a></li><li><a href="https://status.rentaltide.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link text-sm">Status</a></li><li><a href="https://climate.stripe.com/U87smj" target="_blank" rel="noopener noreferrer" class="rt-footer__link text-sm">Environment</a></li><li><a class="rt-footer__link text-sm" href="/apps">App Store</a></li><li><a class="rt-footer__link text-sm" href="/podcast">Podcast</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Guides</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/blog/best-boat-rental-software-2026">Best Boat Rental Software</a></li><li><a class="rt-footer__link text-sm" href="/blog/best-rental-management-software-2026">Best Rental Management Software</a></li><li><a class="rt-footer__link text-sm" href="/blog/what-is-rental-management-software">What Is Rental Management Software?</a></li><li><a class="rt-footer__link text-sm" href="/blog/how-to-start-boat-rental-business">Start a Boat Rental Business</a></li><li><a class="rt-footer__link text-sm" href="/blog/rental-inventory-management-guide">Rental Inventory Management</a></li><li><a class="rt-footer__link text-sm" href="/blog/gps-tracking-rental-assets-guide">GPS Tracking for Rental Assets</a></li></ul></div></div></div><div class="mt-12 border-t border-hairline pt-10 grid md:grid-cols-[13rem_minmax(0,1fr)] md:gap-x-8 gap-y-4"><h3 class="rt-eyebrow mb-0">Better alternatives to rental management software</h3><div class="grid grid-cols-1 gap-x-6 gap-y-10 sm:grid-cols-2 md:grid-cols-3"><div><h3 class="mb-4 text-label text-ink">Tour and activity platforms</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/fareharbor-alternative">FareHarbor Alternative</a></li><li><a class="rt-footer__link text-sm" href="/rezdy-alternative">Rezdy Alternative</a></li><li><a class="rt-footer__link text-sm" href="/flybook-alternative">FlyBook Alternative</a></li><li><a class="rt-footer__link text-sm" href="/peek-alternative">Peek Alternative</a></li><li><a class="rt-footer__link text-sm" href="/checkfront-alternative">Checkfront Alternative</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Equipment rental software</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/booqable-alternative">Booqable Alternative</a></li><li><a class="rt-footer__link text-sm" href="/hirehop-alternative">HireHop Alternative</a></li><li><a class="rt-footer__link text-sm" href="/ezrentout-alternative">EZRentOut Alternative</a></li><li><a class="rt-footer__link text-sm" href="/point-of-rental-alternative">Point of Rental Alternative</a></li><li><a class="rt-footer__link text-sm" href="/rentalman-alternative">RentalMan Alternative</a></li></ul></div><div><h3 class="mb-4 text-label text-ink">Specialized platforms</h3><ul class="space-y-3"><li><a class="rt-footer__link text-sm" href="/quipli-alternative">Quipli Alternative</a></li><li><a class="rt-footer__link text-sm" href="/tapgoods-alternative">TapGoods Alternative</a></li><li><a class="rt-footer__link text-sm" href="/rentrax-alternative">Rentrax Alternative</a></li><li><a class="rt-footer__link text-sm" href="/stellar-ims-alternative">Stellar IMS Alternative</a></li><li><a class="rt-footer__link text-sm" href="/manual-booking-alternative">Manual Booking Alternative</a></li></ul></div></div></div><div class="mt-12 border-t border-hairline pt-8"><p class="flex flex-wrap items-start gap-x-2 gap-y-1 text-caption text-ink-muted"><span class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check mt-0.5 h-4 w-4 flex-shrink-0 text-[hsl(var(--accent-strong))]" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/></svg><span>Built on PCI-DSS, SOC 2 &
382 GDPR-compliant infrastructure</span></span><span class="flex items-center gap-2"><span aria-hidden="true">·</span><a href="https://stripe.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link">Stripe</a></span><span class="flex items-center gap-2"><span aria-hidden="true">·</span><a href="https://aws.amazon.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link">AWS</a></span><span class="flex items-center gap-2"><span aria-hidden="true">·</span><a href="https://www.twilio.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link">Twilio</a></span><span class="flex items-center gap-2"><span aria-hidden="true">·</span><a href="https://sendgrid.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link">SendGrid</a></span></p><div class="mt-4 flex flex-col gap-4 md:flex-row md:items-start md:justify-between"><p class="text-caption text-ink-muted">RentalTide © 2026, All rights reserved.<!-- --> <!-- -->·<!-- --> <!-- -->In partnership with<!-- --> <a href="https://waypointlabz.com" target="_blank" rel="noopener noreferrer" class="rt-footer__link">Waypoint Labs</a> <!-- -->·<!-- --> <!-- -->RENTALTIDE⢠is a trademark of RentalTide Inc.</p><div class="flex flex-wrap items-center gap-x-6 gap-y-2 text-caption text-ink-muted md:shrink-0 md:justify-end"><a class="rt-footer__link" href="/legal/privacy-policy">Privacy Policy</a><a class="rt-footer__link" href="/legal/terms-of-service">Terms of Service</a><a class="rt-footer__link" href="/legal">All Legal Docs</a><button type="button" class="rt-footer__link">Cookie preferences</button></div></div></div></div></footer></div><!--/$--></div></div> 383 384 <!-- PipeBase Live Chat Widget - loaded on first interaction (or timeout) so it 385 stays off the startup main thread. Chat is only needed once a user engages. --> 386
386<script> 387 window.__rtDeferTP(function () { 388 (function(w,d,s,o,f,js,fjs){ 389 w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)}; 390 js=d.createElement(s);fjs=d.getElementsByTagName(s)[0]; 391 js.id=o;js.src=f;js.async=1;fjs.parentNode.insertBefore(js,fjs); 392 }(window,document,'script','PipeBase','https://getpipebase.com/widget/v1/widget.js')); 393 394 PipeBase('init', { tenantSlug: 'rentaltide' }); 395 }); 396 </script>
396 397 398 399</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.