1<!DOCTYPE html><html lang="en"><head> 2 <!-- Analytics will be loaded after DOM ready for better performance --> 3 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> 6
6<script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-TZZ5448V"></script>
6<script type="text/javascript" async="" src="https://www.clarity.ms/tag/txssedjw3f?ref=gtm"></script>
6<script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-VXZQGNBXN9&cx=c&gtm=4e69u2"></script>
6<script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-TZZ5448V"></script>
6<script type="text/javascript" async="" src="//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"></script>
6<script> 7 (function () { 8 var protocol = window.location && window.location.protocol; 9 var isNativeShell = protocol === "capacitor:" || protocol === "ionic:"; 10 11 if (!isNativeShell) { 12 return; 13 } 14 15 document.documentElement.classList.add("native-capacitor-shell"); 16 17 function clearNativeStartupRoot() { 18 var root = document.getElementById("root"); 19 if (!root) { 20 return false; 21 } 22 23 var hasPrerenderedContent = 24 root.getAttribute("data-prerendered") === "true"; 25 var hasStartupLoader = !!root.querySelector("#loading-indicator"); 26 27 if (!hasPrerenderedContent && !hasStartupLoader) { 28 return false; 29 } 30 31 root.innerHTML = ""; 32 root.removeAttribute("data-prerendered"); 33 root.removeAttribute("style"); 34 root.setAttribute("data-native-startup-cleared", "true"); 35 return true; 36 } 37 38 if (!clearNativeStartupRoot()) { 39 var observer = new MutationObserver(function () { 40 if (clearNativeStartupRoot()) { 41 observer.disconnect(); 42 } 43 }); 44 45 observer.observe(document.documentElement, { 46 childList: true, 47 subtree: true, 48 }); 49 50 document.addEventListener( 51 "DOMContentLoaded", 52 function () { 53 clearNativeStartupRoot(); 54 observer.disconnect(); 55 }, 56 { once: true } 57 ); 58 } 59 })(); 60 </script>
60 61 <style> 62 html.native-capacitor-shell #root[data-prerendered="true"] { 63 visibility: hidden !important; 64 opacity: 0 !important; 65 } 66 </style> 67 68 <!-- Safari Compatibility Meta Tags --> 69 <meta name="format-detection" content="telephone=no"> 70 <meta name="apple-mobile-web-app-capable" content="yes"> 71 <meta name="apple-mobile-web-app-status-bar-style" content="default"> 72 <meta name="apple-touch-fullscreen" content="yes"> 73 74 <!-- Additional Safari iOS Support --> 75 <meta name="mobile-web-app-capable" content="yes"> 76 <meta name="apple-mobile-web-app-title" content="REPSShield"> 77 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 78 <!-- SEO Meta Tags --> 79 <meta name="description" content="REPSShield pricing starts at $10/month with a 14-day free trial. Choose Shield Essential for audit-ready activity logs or Shield Advisor for AI-powered REPS compliance guidance."> 80 <meta name="keywords" content="REPSShield pricing, REP status tracking cost, real estate professional software pricing, free trial, subscription plans, AI tax advisor"> 81 <meta name="author" content="REPSShield"> 82 <meta name="robots" content="index, follow"> 83 84 <!-- Open Graph Meta Tags --> 85 <meta property="og:title" content="REPSShield Pricing - Shield Essential & Shield Advisor Plans"> 86 <meta property="og:description" content="Choose Shield Essential for audit-ready activity logging or Shield Advisor for continuous AI-powered REPS compliance guidance."> 87 <meta property="og:type" content="website"> 88 <meta property="og:image" content="https://repsshield.com/repsshield-logo-main.png"> 89 <meta property="og:url" content="https://repsshield.com/pricing"> 90 <meta property="og:locale" content="en_US"> 91 <meta property="og:site_name" content="REPSShield"> 92 93 <!-- Twitter Card Meta Tags --> 94 <meta name="twitter:card" content="summary_large_image"> 95 <meta name="twitter:title" content="REPSShield Pricing - 14-Day Free Trial"> 96 <meta name="twitter:description" content="Shield Essential and Shield Advisor plans for REPS documentation, organization, and AI-powered compliance guidance."> 97 <meta name="twitter:image" content="https://repsshield.com/repsshield-logo-main.png"> 98 99 <!-- Google Workspace Domain Verification --> 100 <meta name="google-site-verification" content="cqP-09PR0BaU2WIhFBeqgZVvytDSELFNgi81gP7DLYc"> 101 102 <!-- Technical Meta Tags --> 103 <meta name="theme-color" content="#55b021"> 104 <meta name="apple-mobile-web-app-capable" content="yes"> 105 <meta name="apple-mobile-web-app-status-bar-style" content="default"> 106 <meta name="apple-mobile-web-app-title" content="REPSShield"> 107 <meta name="mobile-web-app-capable" content="yes"> 108 109 <!-- SEO Technical Tags --> 110 <link rel="canonical" id="canonical-link" href="https://repsshield.com/pricing"> 111 <meta name="referrer" content="no-referrer-when-downgrade"> 112 <meta http-equiv="content-language" content="en-US"> 113 <meta name="geo.region" content="US"> 114 <meta name="geo.placename" content="United States"> 115 116 <!-- Resource Links --> 117 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 118 <link rel="shortcut icon" href="/favicon.png"> 119 <link rel="apple-touch-icon" href="/repsshield-logo-main.png"> 120 <link rel="manifest" href="/manifest.json"> 121 <link rel="sitemap" type="application/xml" href="/sitemap.xml"> 122 123 <!-- LunchMoney Style System with performance optimization --> 124 <link rel="stylesheet" href="/style.css" media="all"> 125 126 <!-- Performance: Preload critical CSS --> 127 <link rel="stylesheet" href="/style.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 128 <noscript><link rel="stylesheet" href="/style.css" /></noscript> 129 130 <title>REPSShield Pricing - Shield Essential & Shield Advisor Plans | 14-Day Free Trial</title> 131 132 <!-- Performance Optimization: Resource Hints --> 133 <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin=""> 134 <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin="">
135 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 136 <link rel="dns-prefetch" href="//www.google-analytics.com"> 137 <link rel="preconnect" href="https://cdn.amplitude.com" crossorigin=""> 138 139 <!-- Deferred Google Tag Manager for better performance --> 140
140<script> 141 // Defer GTM loading until after page load for better performance 142 window.addEventListener("load", function () { 143 (function (w, d, s, l, i) { 144 w[l] = w[l] || []; 145 w[l].push({ 146 "gtm.start": new Date().getTime(), 147 event: "gtm.js", 148 }); 149 var f = d.getElementsByTagName(s)[0], 150 j = d.createElement(s), 151 dl = l != "dataLayer" ? "&l=" + l : ""; 152 j.async = true; 153 j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl; 154 f.parentNode.insertBefore(j, f); 155 })(window, document, "script", "dataLayer", "GTM-TZZ5448V"); 156 }); 157 </script>
157 158 159 <!-- Structured Data for SEO --> 160
160<script type="application/ld+json"> 161 { 162 "@context": "https://schema.org", 163 "@type": "SoftwareApplication", 164 "name": "REPSShield", 165 "applicationCategory": "BusinessApplication", 166 "description": "Professional IRS REP tracking software to track REP hours and maintain IRS compliance for real estate professionals", 167 "url": "https://repsshield.com", 168 "operatingSystem": "Web Browser", 169 "softwareVersion": "1.0", 170 "offers": { 171 "@type": "Offer", 172 "price": "5.00", 173 "priceCurrency": "USD", 174 "priceValidUntil": "2026-12-31" 175 }, 176 "applicationSubCategory": "Time Tracking Software", 177 "featureList": [ 178 "IRS REP tracking", 179 "Track REP hours", 180 "IRS compliance tools", 181 "Material participation tracking", 182 "Audit-ready reports", 183 "Real estate professional time tracking" 184 ], 185 "creator": { 186 "@type": "Organization", 187 "name": "REPSShield", 188 "url": "https://repsshield.com" 189 } 190 } 191 </script>
191 192
vendor: 3,251 bytes, lines 192-268
192<script type="text/javascript"> 193 (function (e, c) { 194 if (!c.__SV) { 195 var l, h; 196 window.mixpanel = c; 197 c._i = []; 198 c.init = function (q, r, f) { 199 function t(d, a) { 200 var g = a.split("."); 201 2 == g.length && ((d = d[g[0]]), (a = g[1])); 202 d[a] = function () { 203 d.push([a].concat(Array.prototype.slice.call(arguments, 0))); 204 }; 205 } 206 var b = c; 207 "undefined" !== typeof f ? (b = c[f] = []) : (f = "mixpanel"); 208 b.people = b.people || []; 209 b.toString = function (d) { 210 var a = "mixpanel"; 211 "mixpanel" !== f && (a += "." + f); 212 d || (a += " (stub)"); 213 return a; 214 }; 215 b.people.toString = function () { 216 return b.toString(1) + ".people (stub)"; 217 }; 218 l = 219 "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders start_session_recording stop_session_recording people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split( 220 " " 221 ); 222 for (h = 0; h < l.length; h++) t(b, l[h]); 223 var n = "set set_once union unset remove delete".split(" "); 224 b.get_group = function () { 225 function d(p) { 226 a[p] = function () { 227 b.push([ 228 g, 229 [p].concat(Array.prototype.slice.call(arguments, 0)), 230 ]); 231 }; 232 } 233 for ( 234 var a = {}, 235 g = ["get_group"].concat( 236 Array.prototype.slice.call(arguments, 0) 237 ), 238 m = 0; 239 m < n.length; 240 m++ 241 ) 242 d(n[m]); 243 return a; 244 }; 245 c._i.push([q, r, f]); 246 }; 247 c.__SV = 1.2; 248 var k = e.createElement("script"); 249 k.type = "text/javascript"; 250 k.async = !0; 251 k.src = 252 "undefined" !== typeof MIXPANEL_CUSTOM_LIB_URL 253 ? MIXPANEL_CUSTOM_LIB_URL 254 : "file:" === e.location.protocol && 255 "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//) 256 ? "https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js" 257 : "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"; 258 e = e.getElementsByTagName("script")[0]; 259 e.parentNode.insertBefore(k, e); 260 } 261 })(document, window.mixpanel || []); 262 mixpanel.init("edfe0ecd8c675dbbc5d0103ee433f5e5", { 263 autocapture: true, 264 // Session recording consolidated into PostHog â Mixpanel keeps 265 // analytics/autocapture only, it no longer records sessions. 266 record_sessions_percent: 0, 267 }); 268 </script>
268 269 270 <!-- Amplitude Analytics (session replay consolidated into PostHog: 271 the Session Replay plugin is no longer loaded or registered) --> 272
272<script defer="" src="https://cdn.amplitude.com/libs/analytics-browser-2.11.1-min.js.gz"></script>
272 273
273<script> 274 window.addEventListener("load", function () { 275 if (window.amplitude?.init) { 276 window.amplitude.init("c705623f4bce3f86b242ede807f4c23e", { 277 autocapture: { elementInteractions: true }, 278 }); 279 } 280 }); 281 </script>
281 282
282<script type="module" crossorigin="" src="/assets/index-DGo-vssZ.js"></script>
282 283 <link rel="modulepreload" crossorigin="" href="/assets/vendor-Qgthw7N1.js"> 284 <link rel="stylesheet" crossorigin="" href="/assets/index-C2doZrJs.css"> 285 <style id="immediate-overlay-kill"> 286 vite-error-overlay, 287 [data-type="error"], 288 .error-overlay { 289 display: none !important; 290 visibility: hidden !important; 291 opacity: 0 !important; 292 pointer-events: none !important; 293 z-index: -999999 !important; 294 } 295 #root { display: block !important; visibility: visible !important; opacity: 1 !important; } 296 body { pointer-events: auto !important; visibility: visible !important; opacity: 1 !important; } 297 </style>
297<script defer="" src="https://cloud.umami.is/script.js" data-website-id="0473b837-662f-4cd9-ada3-b65b89dc1e73"></script>
297<link rel="modulepreload" as="script" crossorigin="" href="/assets/PricingPage-d-MW6XDB.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/minus-DxLgY3aB.js">
297<script type="application/ld+json" data-page="pricing">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"How does the 14-day free trial work?","acceptedAnswer":{"@type":"Answer","text":"Start your free trial immediately with full access to all features on your chosen plan. No credit card required upfront. After 14 days, choose to continue with your selected plan or cancel anytime."}},{"@type":"Question","name":"What is the AI Compliance Advisor on the Shield Advisor plan?","acceptedAnswer":{"@type":"Answer","text":"Think of it as a compliance co-pilot that lives inside REPSShield. Ask it REPS questions like 'Do I qualify this year?', 'What are my documentation gaps?', or 'How do STR rules apply to my properties?' and it helps you organize your next steps with guidance grounded in IRS publications and Tax Court context."}},{"@type":"Question","name":"What makes REPSShield different from basic time trackers?","acceptedAnswer":{"@type":"Answer","text":"REPSShield is purpose-built for IRS REP compliance with AI automation, audit-ready reporting, and real estate-specific features like material participation tracking and Gmail integration."}},{"@type":"Question","name":"Can I change my plan anytime?","acceptedA
297nswer":{"@type":"Answer","text":"Yes. Move from Shield Essential to Shield Advisor or adjust your billing interval anytime through your account settings. Changes take effect at your next billing cycle."}},{"@type":"Question","name":"Is my data secure and audit-ready?","acceptedAnswer":{"@type":"Answer","text":"Absolutely. We use enterprise-grade encryption and generate professional audit reports that meet IRS documentation requirements for Real Estate Professional status."}}]}</script>
297<script type="application/ld+json" data-page="pricing">{"@context":"https://schema.org","@type":"Offer","name":"REPSShield Shield Essential Plan","description":"Audit-ready REPS activity logging, documentation, and reports for real estate investors","price":"10.00","priceCurrency":"USD","priceValidUntil":"2027-12-31","availability":"https://schema.org/InStock","seller":{"@type":"Organization","name":"REPSShield"}}</script>
297<script type="application/ld+json" data-page="pricing">{"@context":"https://schema.org","@type":"Offer","name":"REPSShield Shield Advisor Plan","description":"Everything in Shield Essential plus AI-powered REPS compliance guidance and personalized recommendations","price":"29.00","priceCurrency":"USD","priceValidUntil":"2027-12-31","availability":"https://schema.org/InStock","seller":{"@type":"Organization","name":"REPSShield"}}</script>
297<script defer="" data-domain="repsshield.com" data-api="https://plausible.io/api/event" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
297</head> 298 <body class="wallpaper-bg"> 299 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 299-301
299 300 <noscript><iframe 301 src="https://www.googletagmanager.com/ns.html?id=
301GTM-TZZ5448V
vendor: 126 bytes, lines 301-307
301" 302 height="0" 303 width="0" 304 style="display: none; visibility: hidden" 305 ></iframe 306 ></noscript> 307
307<!-- End Google Tag Manager (noscript) --> 308 309 <!-- Debug: Ensure body and root are visible --> 310 <style> 311 body { 312 visibility: visible !important; 313 opacity: 1 !important; 314 display: block !important; 315 background-color: #f7f7f7; 316 } 317 #root { 318 visibility: visible !important; 319 opacity: 1 !important; 320 display: block !important; 321 min-height: 100vh; 322 } 323 .native-startup-shell { 324 min-height: 100vh; 325 display: flex; 326 align-items: center; 327 justify-content: center; 328 background: #f7f7f7; 329 color: #111827; 330 font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; 331 padding: max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom)); 332 } 333 .native-startup-mascot-wrap { 334 position: relative; 335 display: inline-flex; 336 flex-direction: column; 337 align-items: center; 338 margin: 16px 0 24px; 339 } 340 .native-startup-mascot { 341 width: 96px; 342 height: 96px; 343 -o-object-fit: contain; 344 object-fit: contain; 345 animation: native-startup-bounce 1.4s ease-in-out infinite; 346 } 347 .native-startup-shadow { 348 width: 64px; 349 height: 12px; 350 margin-top: 8px; 351 border-radius: 999px; 352 background: rgba(0, 0, 0, 0.18); 353 filter: blur(2px); 354 animation: native-startup-shadow 1.4s ease-in-out infinite; 355 } 356 @keyframes native-startup-bounce { 357 0%, 100% { transform: translateY(0); } 358 50% { transform: translateY(-14px); } 359 } 360 @keyframes native-startup-shadow { 361 0%, 100% { transform: scale(1); opacity: 0.2; } 362 50% { transform: scale(0.72); opacity: 0.1; } 363 } 364 </style> 365 366 <div id="root" data-prerendered="true"><div class="min-h-screen flex flex-col" data-prerendered="true"><header class="bg-transparent safe-area-top mt-6"><div class="lm-container"><div class="flex justify-between items-center h-16"><a href="/" class="flex items-center hover:opacity-80 transition-opacity"><img src="/repsshield-logo-main.png" alt="REPSShield Logo" class="h-6 w-6 sm:h-8 sm:w-8 mr-2 sm:mr-3"><span class="text-base font-semibold" style="color: var(--color-text); margin: 0px; line-height: 1.5;">REPSShield</span></a><nav class="hidden md:flex items-center space-x-6" role="navigation" aria-label="Main navigation"><ul class="flex items-center space-x-6 list-none m-0 p-0"><li class="relative group"><a aria-haspopup="true" aria-expanded="false" href="/features" class="lm-nav-link flex items-center">Features<svg class="w-4 h-4 ml-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></a><ul class="absolute left-0 mt-2 w-56 bg-white rounded-md shadow-lg opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 border list-none p-2" role="menu" aria-label="Features submenu"><li><a role="menuitem" href="/features/time-tracking" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">REP Time Tracking</a></li><li><a role="menuitem" href="/features/material-participation" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">Material Participation Tests</a></li><li><a role="menuitem" href="/features/audit-ready-reporting" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">Audit-Ready Reports</a></li><li><a role="menuitem" href="/features/goal-progress-tracker" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">REP Goal Tracker</a></li><li><a role="menuitem" href="/features/multi-property-support" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">Multi-Property Management</a></li><li><a role="menuitem" href="/features/premium-features" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">AI-Powered Features</a></li></ul></li><li class="relative group"><a aria-haspopup="true" aria-expanded="false" href="/tools" class="lm-nav-link flex items-center">Tools<svg class="w-4 h-4 ml-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg></a><ul class="absolute left-0 mt-2 w-56 bg-white rounded-md shadow-lg op
366acity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 border list-none p-2" role="menu" aria-label="Tools submenu"><li><a role="menuitem" href="/tools/rental-calculator" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">Rental Property Calculator</a></li><li><a role="menuitem" href="/tools/brrr-calculator" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">BRRR Strategy Calculator</a></li><li><a role="menuitem" href="/tools/rep-status-calculator" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">REP Status Calculator</a></li><li><a role="menuitem" href="/tools/rep-status-audit-scan" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">REP Audit Scan</a></li><li><a role="menuitem" href="/tools/rep-hours-tracker" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">REP Hours Tracker</a></li><li><a role="menuitem" href="/tools/1031-exchange-timer" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">1031 Exchange Timer</a></li><li><a role="menuitem" href="/tools/cost-seg-estimator" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded">Cost Seg Estimator</a></li></ul></li><li><a href="/pricing" class="lm-nav-link">Pricing</a></li><li><a href="/why-reps-shield" class="lm-nav-link">Why REPSShield?</a></li><li><a href="/blog" class="lm-nav-link">Blog</a></li><li><a href="/about" class="lm-nav-link">About</a></li><li><a href="/login"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 h-12 px-4 py-2 sm:h-10 border border-[#44958C] text-[#44958C] bg-white hover:bg-[#44958C] hover:text-white transition-colors" aria-label="Sign in to your account">Login</button></a></li></ul></nav><div class="md:hidden"><div><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 hover:bg-accent hover:text-accent-foreground h-10 rounded-md sm:h-9 p-2 touch-target" aria-label="Toggle navigation menu"><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 h-5 w-5 transition-transform duration-200"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div></div></div></div></header><main class="flex-1"><div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12"><div class="text-center mb-16 space-y-6"><div class="mb-6"><span class="inline-block rounded-full bg-green-50 text-green-700 text-xs font-bold px-4 py-1.5">Pricing</span></div><h1 class="text-4xl md:text-5xl font-bold text-gray-900 dark:text-white">Choose How You Want to Protect Your REPS Deduction</h1><p class="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto leading-relaxed">Whether you simply need an audit-ready activity log or ongoing AI guidance to stay compliant, REPSShield helps you document, organize, and better prepare your REPS records throughout the year.</p><div class="flex items-center justify-center mt-8"><div class="relative inline-flex items-center bg-gray-100 dark:bg-gray-800 rounded-full p-1 gap-1"><button class="px-5 py-2 rounded-full text-sm font-medium transition-all duration-200 bg-white dark:bg-gray-700 text-gray-900 dark:text-white shadow-sm">Monthly</button><button class="px-5 py-2 rounded-full text-sm font-medium transition-all duration-200 flex items-center gap-2 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200">Annual<span class="bg-green-600 text-white text-xs font-semibold px-2 py-0.5 rounded-full">Save 20%</span></button></div></div></div><div class="grid lg:grid-cols-2 gap-8 mb-16 max-w-5xl mx-auto"><div class="bg-card text-card-foreground relative border border-gray-200 dark:border-gray-700 hover:border-green-200 dark:hover:border-green-700 transition-all duration-200 rounded-2xl shadow-sm hover:shadow-md flex flex-col"><div class="flex flex-col p-6 text-center px-6 pt-8 pb-6 space-y-3"><div class="text-2xl font-bold text-gray-900 dark:text-white tracking-tight">Shield Essential</div><div class="space-y-2"><p class="text-base font-semibold text-gray-900 dark:text-white">Build an audit-ready activity log.</p><p class="text-sm text-gray-600 dark:text-gray-400 leading-relaxed">Designed for investors who already understand REPS requirements and simply need the easiest way to document qualifying activities throughout the year.</p></div><div class="mascot-container mt-3 mb-5"><img src="/repsshield-logo-main.png" alt="REPSShield" class="bouncing-mascot-price">
366<div class="mascot-shadow-price"></div></div><div class="mb-2"><div class="h-14 flex items-center justify-center"><div class="h-10 w-24 bg-gray-200 dark:bg-gray-700 rounded animate-pulse"></div></div></div><p class="text-sm text-gray-600 dark:text-gray-300">Full access, cancel anytime</p></div><div class="p-6 pt-0 px-6 pb-6 flex flex-col flex-1"><div class="flex-1"></div><div class="mt-8"><a href="/auth?plan=base"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm ring-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 border bg-background hover:text-accent-foreground h-12 px-4 sm:h-10 w-full border-green-300 text-green-700 hover:bg-green-50 dark:border-green-600 dark:text-green-400 dark:hover:bg-green-900/20 py-3 rounded-xl font-semibold transition">Start Tracking</button></a><p class="text-xs text-center text-gray-500 dark:text-gray-400 mt-2">14-day free trial. No credit card required.</p></div></div></div><div class="bg-card text-card-foreground duration-200 relative border-2 border-green-500 dark:border-green-500 bg-gradient-to-br from-green-50 to-blue-50 dark:from-green-900/20 dark:to-blue-900/20 rounded-2xl shadow-md hover:shadow-lg transition-shadow flex flex-col"><div class="absolute -top-4 left-1/2 -translate-x-1/2"><div class="border transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 border-transparent hover:bg-primary/80 bg-green-600 text-white px-4 py-1 flex items-center justify-center text-sm font-medium rounded-full shadow-sm whitespace-nowrap"><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-star h-4 w-4 mr-1 shrink-0"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>Most Popular</div></div><div class="flex flex-col p-6 text-center px-6 pt-8 pb-6 space-y-3"><div class="text-2xl font-bold text-green-700 dark:text-white tracking-tight">Shield Advisor</div><div class="space-y-2"><p class="text-base font-semibold text-gray-900 dark:text-white">Your AI REPS Compliance Advisor.</p><p class="text-sm text-gray-600 dark:text-gray-400 leading-relaxed">Everything in Shield Essential plus continuous AI guidance that helps identify compliance gaps, monitor participation, and provide personalized recommendations to better prepare for tax season.</p></div><div class="mascot-container mt-3 mb-5"><img src="/repsshield-logo-main.png" alt="REPSShield" class="bouncing-mascot-price"><div class="mascot-shadow-price"></div></div><div class="mb-2"><div class="h-14 flex items-center justify-center"><div class="h-10 w-24 bg-gray-200 dark:bg-gray-700 rounded animate-pulse"></div></div></div><p class="text-sm text-gray-600 dark:text-gray-300">Full access, cancel anytime</p></div><div class="p-6 pt-0 px-6 pb-6 flex flex-col flex-1"><div class="flex-1"></div><div class="mt-8"><a href="/auth?plan=premium"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm ring-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 h-12 px-4 sm:h-10 w-full bg-green-600 hover:bg-green-700 text-white py-3 rounded-xl font-semibold shadow-sm hover:shadow-md transition">Protect My Deduction</button></a><p class="text-xs text-center text-gray-500 dark:text-gray-400 mt-2">14-day free trial. No credit card required.</p></div></div></div></div><section class="max-w-5xl mx-auto mb-20 px-4"><div class="text-center mb-8"><h2 class="text-3xl font-extrabold text-gray-900 dark:text-white mb-4 leading-snug">Compare What's Included</h2><p class="text-base text-gray-600 dark:text-gray-400 max-w-2xl mx-auto leading-relaxed">Both plans include the core tracking and documentation tools. Shield Advisor adds the AI guidance layer for year-round REPS compliance support.</p></div><div class="overflow-hidden rounded-2xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-900"><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-200 bg-gray-50 text-xs font-bold uppercase tracking-wide text-gray-600 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300"><div class="px-4 py-4 sm:px-6">Features</div><div class="px-2 py-4 text-center sm:px-4"><span class="hidden sm:inline">Shield Essential</span><span class="sm:hidden">Essential</span></div><div class="bg-green-50 px-2 py-4 text-center text-green-700 dark:bg-green-900/20 dark:text-green-300 sm:px-4"><span class="hidden sm:inline">Shield Advisor</span><span class="sm:hidden">Advisor</span></div></div><div><div class="border-b border-gray-200 bg-blue-50/60 px-4 py-3 text-xs font-bold uppercase tracking-wide text-blue-700 dark:border-gray-700 dark:bg-blue-900/20 dark:text-blue-300 sm:px-6">Activity Tracking & Documentation</div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Unlimited rental properties</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Unlimited invited users</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">AI email analysis</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">AI calendar analysis</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Smart AI time logging</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Geofenced property visit detection</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">IRS-ready reports & exports</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Statements</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill=
366"none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Android app</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">iPhone app</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Secure cloud sync</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div></div><div><div class="border-b border-gray-200 bg-blue-50/60 px-4 py-3 text-xs font-bold uppercase tracking-wide text-blue-700 dark:border-gray-700 dark:bg-blue-900/20 dark:text-blue-300 sm:px-6">AI Guidance & Compliance</div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">AI Compliance Advisor</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Compliance Mode</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Material Participation insights</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Personalized recommendations</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">IRS guidance</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Proactive compliance alerts</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div><div class="grid grid-cols-[minmax(0,1fr)_5.5rem_5.5rem] sm:grid-cols-[minmax(0,1fr)_11rem_11rem] border-b border-gray-100 text-sm last:border-b-0 dark:border-gray-800"><div class="flex min-h-12 items-center px-4 py-3 font-medium text-gray-900 dark:text-gray-100 sm:px-6">Ask AI tax questions</div><div class="flex min-h-12 items-center justify-center px-2 py-3 sm:px-4"><span aria-label="Shield Essential not included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-gray-100 text-gray-400 dark:bg-gray-800 dark:text-gray-500"><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-minus h-4 w-4"><path d="M5 12h14"></path></svg></span></div><div class="flex min-h-12 items-center justify-center bg-green-50/50 px-2 py-3 dark:bg-green-900/10 sm:px-4"><span aria-label="Shield Advisor included" class="inline-flex h-7 w-7 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-4 w-4"><path d="M20 6 9 17l-5-5"></path></svg></span></div></div></div></div></section><section class="max-w-5xl mx-auto mb-20 px-4"><div class="text-center mb-8"><h2 class="text-3xl font-extrabold text-gray-900 dark:text-white mb-4 leading-snug">Who's This For?</h2></div><div class="grid md:grid-cols-2 gap-8 mb-8"><div class="rounded-2xl border p-6 shadow-sm border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900"><div class="mb-5 flex h-12 w-12 items-center justify-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"><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-users h-6
366w-6"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div><h3 class="text-xl font-bold text-blue-700 dark:text-blue-300">Shield Essential</h3><p class="mt-1 text-sm text-gray-600 dark:text-gray-400">Ideal if you:</p><ul class="mt-4 space-y-3"><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Already understand REPS rules</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Work with a CPA</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Need organized documentation</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-blue-50 text-blue-700 dark:bg-blue-900/30 dark:text-blue-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Want audit-ready reports</span></li></ul></div><div class="rounded-2xl border p-6 shadow-sm border-green-200 bg-green-50/60 dark:border-green-800 dark:bg-green-900/10"><div class="mb-5 flex h-12 w-12 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-users h-6 w-6"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div><h3 class="text-xl font-bold text-green-700 dark:text-green-300">Shield Advisor</h3><p class="mt-1 text-sm text-gray-600 dark:text-gray-400">Ideal if you:</p><ul class="mt-4 space-y-3"><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Aren't sure you're qualifying</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Want year-round AI guidance</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Want proactive recommendations</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Want help staying compliant</span></li><li class="flex items-start gap-3 text-sm font-medium text-gray-800 dark:text-gray-200"><span class="mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300"><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-check h-3.5 w-3.5"><path d="M20 6 9 17l-5-5"></path></svg></span><span>Want confidence before tax season</span></li></ul></div></div><div class="rounded-2xl border border-amber-300 bg-amber-50 p-6 shadow-sm dark:border-amber-700 dark:bg-amber-900/10"><div class="flex flex-col gap-5 sm:flex-row sm:items-start"><div class="flex h-14 w-14 shrink-0 items-center justify-center rounded-full bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300"><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 h-7 w-7"><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></svg></div><div><h3 class="text-xl font-bold text-gray-900 dark:text-white">Protect a Tax Benefit Worth Thousands</h3><p class="mt-2 text-sm leading-relaxed text-gray-700 dark:text-gray-300">Real Estate Professional Status can significantly reduce taxes for qualifying investors. REPSShield helps you document qualifying activities, stay organized, and maintain records that are better prepared for IRS review.</p><p class="mt-3 text-xs leading-relaxed text-gray-600 dark:text-gray-400">REPSShield does not provide legal or tax advice. Always consult a qualified tax professional.</p></div></div></div></section><div class="max-w-3xl mx-auto mb-16"><div class="bg-white dark:bg-gray-900 rounded-2xl p-8 shadow-sm"><div class="text-center"><div class="bg-green-100 dark:bg-green-900/30 rounded-full w-16 h-16 mx-auto mb-5 flex items-center justify-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-users h-8 w-8 text-green-600 dark:text-green-400"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div><h2 class="text-3xl font-bold text-gray-900 dark:text-white mb-4"><span class="text-green-600">Partner</span> with REPSShield</h2><p class="text-lg text-gray-600 dark:text-gray-300 mb-4 leading-relaxed">Join our affiliate program and earn <span class="font-semibold text-green-600 dark:text-green-400">20% recurring commissions</span> while helping real estate professionals stay IRS compliant. Gain access to industry-leading support, resources, and transparent tracking.</p><p class="text-lg text-gray-600 dark:text-gray-300 mb-8 leading-relaxed">Whether you're a tax professional, coach, or industry influencer, we provide dedicated support and professional marketing tools to maximize your success.</p><div class="flex flex-col sm:flex-row gap-3 justify-center"><a href="/affiliate-program"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 border bg-background hover:bg-accent hover:text-accent-foreground h-12 sm:h-10 border-green-300 text-green-700 dark:border-green-600 dark:text-green-400 px-5 py-3 rounded-lg transition">Learn More</button></a><a href="/affiliate-signup"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 h-12 sm:h-10 bg-green-600 hover:bg-green-700 text-white px-5 py-3 rounded-lg shadow-sm hover:shadow-md transition">Apply Now</button></a></div></div></div></div><div class="max-w-4xl mx-auto"><div class="space-y-16"><div class="text-center"><h3 class="text-2xl font-bold text-green-700 dark:text-green-400 mb-4">How does the 14-day free trial work?</h3><p class="text-lg text-gray-700 dark:text-gray-300 leading-relaxed max-w-2xl mx-auto">Start your free trial immediately with full access to all features on your chosen plan. No credit card required upfront. After 14 days, choose to continue with your selected plan or cancel anytime.</p></div><div class="text-center"><h3 class="text-2xl font-bold text-green-700 dark:text-green-400 mb-4">What is the AI Compliance Advisor on the Shield Advisor plan?</h3><p class="text-lg text-gray-700 dark:text-gray-300 leading-relaxed max-w-2xl mx-auto">Think of it as a compliance co-pilot that lives inside REPSShield. Ask it REPS questions like 'Do I qualify this year?', 'What are my documentation gaps?', or 'How do STR rules apply to my properties?' and it helps you organize your next steps with guid
366ance grounded in IRS publications and Tax Court context.</p></div><div class="text-center"><h3 class="text-2xl font-bold text-green-700 dark:text-green-400 mb-4">What makes REPSShield different from basic time trackers?</h3><p class="text-lg text-gray-700 dark:text-gray-300 leading-relaxed max-w-2xl mx-auto">REPSShield is purpose-built for IRS REP compliance with AI automation, audit-ready reporting, and real estate-specific features like material participation tracking and Gmail integration.</p></div><div class="text-center"><h3 class="text-2xl font-bold text-green-700 dark:text-green-400 mb-4">Can I change my plan anytime?</h3><p class="text-lg text-gray-700 dark:text-gray-300 leading-relaxed max-w-2xl mx-auto">Yes. Move from Shield Essential to Shield Advisor or adjust your billing interval anytime through your account settings. Changes take effect at your next billing cycle.</p></div><div class="text-center"><h3 class="text-2xl font-bold text-green-700 dark:text-green-400 mb-4">Is my data secure and audit-ready?</h3><p class="text-lg text-gray-700 dark:text-gray-300 leading-relaxed max-w-2xl mx-auto">Absolutely. We use enterprise-grade encryption and generate professional audit reports that meet IRS documentation requirements for Real Estate Professional status.</p></div></div></div></div></main><section class="relative overflow-hidden border-b-[3px] border-[#44958C] bg-[#FDF8EC]"><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex left-[5%] top-10 -rotate-6 bg-sky-100">ð </span><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex right-[6%] top-12 rotate-6 bg-amber-100">ð</span><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex left-[9%] bottom-24 -rotate-3 bg-teal-100">â±ï¸</span><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex right-[8%] bottom-28 rotate-3 bg-rose-100">ð
</span><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex left-[16%] top-24 rotate-2 bg-emerald-100">ð¡ï¸</span><span aria-hidden="true" class="absolute z-0 hidden h-14 w-14 items-center justify-center rounded-2xl text-[26px] shadow-sm ring-1 ring-black/5 md:flex right-[17%] top-28 -rotate-2 bg-violet-100">ð</span><div class="lm-container relative z-10"><div class="mx-auto max-w-2xl px-6 py-16 text-center sm:py-20"><p class="text-[13px] font-semibold uppercase tracking-[0.18em] text-[#44958C]">Built for real estate professionals</p><h2 class="mt-4 font-['Playfair_Display'] text-4xl font-bold leading-tight tracking-tight text-gray-900 sm:text-5xl">A thoughtful tool for serious <span class="relative inline-block whitespace-nowrap"><span aria-hidden="true" class="absolute inset-x-0 bottom-1 h-[0.32em] rounded-sm bg-yellow-300/80"></span><span class="relative">REP clarity</span></span>.</h2><p class="mx-auto mt-5 max-w-xl text-lg leading-relaxed text-gray-600">Join thousands of real estate professionals who track hours effortlessly, stay audit-ready, and protect their REP status with confidence.</p><form class="mx-auto mt-9 max-w-lg"><div class="flex flex-col gap-2 rounded-[2rem] border border-gray-200 bg-white p-2 shadow-md shadow-amber-900/5 sm:flex-row sm:items-center sm:rounded-full"><input type="email" class="flex w-full border-input 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-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 sm:h-10 text-base sm:text-sm sm:rounded-md touch-manipulation h-12 flex-1 rounded-full border-0 bg-transparent px-4 text-gray-900 placeholder-gray-400 shadow-none focus-visible:ring-0" placeholder="Enter your email" required="" value=""><button class="inline-flex items-center gap-2 whitespace-nowrap text-sm r
366ing-offset-background duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 touch-manipulation active:scale-[0.97] active:opacity-90 py-2 sm:h-10 h-12 w-full shrink-0 justify-center rounded-full bg-[#44958C] px-6 font-medium text-white transition-colors hover:bg-[#3A7F76] sm:w-auto" type="submit">Get Started Free<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-arrow-right ml-2 h-4 w-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div><p class="mt-4 text-sm text-gray-500">14-day free trial · <span class="font-medium text-gray-700 underline decoration-yellow-400 decoration-2 underline-offset-4">No credit card required</span> · Cancel anytime</p></form></div></div></section><footer class="bg-white border-t mt-12 sm:mt-16 spacing-responsive-lg safe-area-bottom"><div class="container-mobile container-safe"><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-6 gap-8 lg:gap-12"><div class="lg:col-span-1 max-w-md"><div class="flex items-center mb-3 sm:mb-4"><img src="/repsshield-logo-main.png" alt="REPSShield Logo" class="h-6 w-6 sm:h-8 sm:w-8 mr-2 sm:mr-3"><span class="text-responsive-base sm:text-xl font-semibold" style="color: var(--color-text);">REPSShield</span></div><p class="text-gray-600 dark:text-gray-300 mb-3 sm:mb-4 text-responsive-xs">Professional time tracking for Real Estate Professional status qualification. IRS-compliant, audit-ready, AI-powered.</p></div><div><h3 class="text-responsive-sm font-semibold mb-3 sm:mb-4" style="color: var(--color-text);">Features</h3><div class="space-y-1 sm:space-y-2"><a href="/features/time-tracking" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Time Tracking</a><a href="/features/material-participation" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Material Participation</a><a href="/features/audit-ready-reporting" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Audit Reports</a><a href="/features/goal-progress-tracker" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Goal Tracker</a><a href="/features/multi-property-support" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Multi Property</a><a href="/features/premium-features" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">AI Features</a></div></div><div><h3 class="text-responsive-sm font-semibold mb-3 sm:mb-4" style="color: var(--color-text);">Tools</h3><div class="space-y-1 sm:space-y-2"><a href="/tools/rental-calculator" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Rental Calculator</a><a href="/tools/brrr-calculator" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">BRRR Calculator</a><a href="/tools/rep-status-calculator" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">REP Status Calculator</a><a href="/tools/rep-status-audit-scan" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Audit Scan</a><a href="/tools/rep-hours-tracker" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Hours Tracker</a><a href="/tools/1031-exchange-timer" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">1031 Exchange Timer</a></div></div><div><h3 class="text-responsive-sm font-semibold mb-3 sm:mb-4" style="color: var(--color-text);">Evaluate</h3><div class="space-y-1 sm:space-y-2"><a href="/repstracker-alternative" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">REPSTracker Alternative</a></div></div><div><h3 class="text-responsive-sm font-semibold mb-3 sm:mb-4" style="color: var(--color-text);">Company</h3><div class="space-y-1 sm:space-y-2"><a href="/about" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">About</a><a href="/pricing" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Pricing</a><a href="/why-reps-shield" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Why REPSShield?</a><a href="/changelog" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Change Log</a><a href="/docs/api" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Developer API</a><a href="mailto:[email protected]" class="block text-gray-600 hover:text-blue-600 text-responsive-xs touch-target">Email</a></div></div></div>
366<div class="border-t mt-6 sm:mt-8 pt-6 sm:pt-8 text-center text-gray-500 text-responsive-xs"><p class="px-4">© 2025 REPSShield. All rights reserved. | <a href="/privacy" class="hover:text-blue-600 touch-target">Privacy Policy</a> | <a href="/terms" class="hover:text-blue-600 touch-target">Terms of Service</a></p></div></div></footer></div><div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events: none;"><ol tabindex="-1" class="fixed top-0 z-[11000] 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></div> 367 368 369 370 <!-- Performance Optimized React Pre-Initialization --> 371
371<script type="text/javascript" crossorigin="anonymous" src="https://us-assets.i.posthog.com/static/1.435.3/web-vitals-with-attribution.js"></script>
371<script type="text/javascript" crossorigin="anonymous" src="https://us-assets.i.posthog.com/static/1.435.3/dead-clicks-autocapture.js"></script>
371<script type="text/javascript" crossorigin="anonymous" src="https://us-assets.i.posthog.com/static/1.435.3/posthog-recorder.js"></script>
371<script type="text/javascript" crossorigin="anonymous" src="https://us-assets.i.posthog.com/static/1.435.3/surveys.js"></script>
371<script type="text/javascript" crossorigin="anonymous" src="https://us-assets.i.posthog.com/array/phc_x5APwUeWZHhqtjerPtcWNqvv2PQN5EsWdYHsqXj9tgwx/config.js"></script>
371<script defer=""> 372 // Optimize: Defer execution until DOM is parsed 373 document.addEventListener("DOMContentLoaded", function () { 374 // Environment detection 375 const isDevUrl = !window.parent || window.parent === window; 376 const isPreview = window.parent && window.parent !== window; 377 378 379 380 // Create React namespace with complete hooks implementation IMMEDIATELY 381 window.React = { 382 // Core hooks that the plugin tries to access 383 useState: function (initialState) { 384 385 let state = initialState; 386 const setState = (newState) => { 387 state = 388 typeof newState === "function" ? newState(state) : newState; 389 }; 390 return [state, setState]; 391 }, 392 393 useEffect: function (effect, deps) { 394 395 try { 396 if (typeof effect === "function") { 397 const cleanup = effect(); 398 if (typeof cleanup === "function") { 399 setTimeout(cleanup, 0); 400 } 401 } 402 } catch (e) { 403 console.warn("IMMEDIATE: useEffect error handled safely:", e); 404 } 405 }, 406 407 useRef: function (initialValue) { 408 409 return { current: initialValue }; 410 }, 411 412 useContext: function (context) { 413 414 return context?._currentValue || null; 415 }, 416 417 useReducer: function (reducer, initialState) { 418 419 let state = initialState; 420 const dispatch = (action) => { 421 try { 422 state = reducer(state, action); 423 } catch (e) { 424 console.warn("IMMEDIATE: useReducer error handled:", e); 425 } 426 }; 427 return [state, dispatch]; 428 }, 429 430 useCallback: function (callback, deps) { 431 432 return callback; 433 }, 434 435 useMemo: function (factory, deps) { 436 437 try { 438 return factory(); 439 } catch (e) { 440 console.warn("IMMEDIATE: useMemo error handled:", e); 441 return null; 442 } 443 }, 444 445 // Additional React properties that might be accessed 446 createElement: function (type, props, ...children) { 447 return { 448 type, 449 props: { 450 ...props, 451 children: children.length === 1 ? children[0] : children, 452 }, 453 key: props?.key || null, 454 ref: props?.ref || null, 455 }; 456 }, 457 458 Component: class Component { 459 constructor(props) { 460 this.props = props; 461 this.state = {}; 462 } 463 setState(partialState) { 464 this.state = { ...this.state, ...partialState }; 465 } 466 render() { 467 return null; 468 } 469 }, 470 471 Fragment: "React.Fragment", 472 version: "18.0.0", 473 }; 474 475 // Ensure React hooks are NEVER null by overriding property access 476 const reactProxy = new Proxy(window.React, { 477 get(target, prop) { 478 if (target[prop]) { 479 return target[prop]; 480 } 481 482 // If a hook is accessed that we haven't defined, provide a safe fallback 483 if (prop.startsWith("use")) { 484 485 return function (...args) { 486 console.warn( 487 `IMMEDIATE: Safe fallback ${prop} called with:`, 488 args 489 ); 490 return prop === "useState" 491 ? [null, () => {}] 492 : prop === "useRef" 493 ? { current: null } 494 : null; 495 }; 496 } 497 498 return target[prop]; 499 }, 500 }); 501 502 window.React = reactProxy; 503 504 // Enhanced global error suppression for plugin errors including wallet extensions 505 window.addEventListener( 506 "error", 507 function (event) { 508 const message = event.message || ""; 509 const filename = event.filename || ""; 510 511 // Suppress React hook null access errors 512 if ( 513 message.includes("Cannot read properties of null") && 514 (message.includes("useEffect") || message.includes("useState")) 515 ) { 516 console.log( 517 "IMMEDIATE: Prevented plugin null access error from displaying" 518 ); 519 event.preventDefault(); 520 event.stopPropagation(); 521 return false;
522 } 523 524 // Suppress browser extension property redefinition errors 525 if ( 526 message.includes("Cannot redefine property") && 527 filename.includes("extension") 528 ) { 529 console.log( 530 "IMMEDIATE: Prevented browser extension error from displaying" 531 ); 532 event.preventDefault(); 533 event.stopPropagation(); 534 return false; 535 } 536 537 // Suppress browser extension injection errors 538 if ( 539 message.includes("TypeError") && 540 filename.includes("extension") 541 ) { 542 console.log( 543 "IMMEDIATE: Prevented browser extension error from displaying" 544 ); 545 event.preventDefault(); 546 event.stopPropagation(); 547 return false; 548 } 549 }, 550 true 551 ); // Use capture phase to catch early 552 553 // Enhanced console.error suppression for plugin and wallet extension errors 554 const originalConsoleError = console.error; 555 console.error = function (...args) { 556 const message = args.join(" "); 557 558 // Suppress plugin runtime errors 559 if ( 560 message.includes("[plugin:runtime-error-plugin]") && 561 message.includes("Cannot read properties of null") 562 ) { 563 console.warn("IMMEDIATE: Suppressed plugin error message"); 564 return; 565 } 566 567 // Suppress browser extension property errors 568 if ( 569 message.includes("Cannot redefine property") && 570 filename.includes("extension") 571 ) { 572 console.warn( 573 "IMMEDIATE: Suppressed browser extension error message" 574 ); 575 return; 576 } 577 578 originalConsoleError.apply(console, args); 579 }; 580 581 // Immediate overlay suppression 582 const suppressOverlaysImmediately = () => { 583 const overlays = document.querySelectorAll( 584 'vite-error-overlay, [data-type="error"], .error-overlay' 585 ); 586 overlays.forEach((overlay) => { 587 if ( 588 overlay.textContent && 589 overlay.textContent.includes("runtime-error-plugin") 590 ) { 591 overlay.style.display = "none !important"; 592 overlay.remove(); 593 } 594 }); 595 596 // Add permanent CSS suppression 597 if (!document.getElementById("immediate-overlay-kill")) { 598 const style = document.createElement("style"); 599 style.id = "immediate-overlay-kill"; 600 style.textContent = ` 601 vite-error-overlay, 602 [data-type="error"], 603 .error-overlay { 604 display: none !important; 605 visibility: hidden !important; 606 opacity: 0 !important; 607 pointer-events: none !important; 608 z-index: -999999 !important; 609 } 610 #root { display: block !important; visibility: visible !important; opacity: 1 !important; } 611 body { pointer-events: auto !important; visibility: visible !important; opacity: 1 !important; } 612 `; 613 document.head.appendChild(style); 614 } 615 }; 616 617 // Run immediately and continuously for first few seconds 618 suppressOverlaysImmediately(); 619 const immediateInterval = setInterval(suppressOverlaysImmediately, 25); 620 621 // Early detection: Stop suppression as soon as React content appears 622 const earlyDetection = setInterval(() => { 623 const hasAppElements = 624 window.__APP_INITIALIZED__ || 625 document.querySelector( 626 '.bg-background, .min-h-screen, #root > div, .text-center, .dashboard-container, [class*="card"], [class*="container"]' 627 ) || 628 (document.querySelector("#root") && 629 document.querySelector("#root").innerHTML.length > 100); 630 if (hasAppElements) { 631 console.log( 632 "IMMEDIATE: Early React app detection - stopping overlay suppression" 633 ); 634 clearInterval(immediateInterval);
635 clearInterval(earlyDetection); 636 } 637 }, 200); // Check every 200ms for early detection 638 639 // Stop after React app loads or timeout (Safari gets special treatment) 640 const isSafari = 641 /Safari/.test(navigator.userAgent) && 642 !/Chrome/.test(navigator.userAgent); 643 const timeoutDuration = isSafari ? 60000 : 45000; // Safari gets 60s, others get 45s 644 645 setTimeout(() => { 646 const hasAppElements = 647 window.__APP_INITIALIZED__ || 648 document.querySelector( 649 '.bg-background, .min-h-screen, #root > div, .text-center, .dashboard-container, [class*="card"], [class*="container"]' 650 ) || 651 (document.querySelector("#root") && 652 document.querySelector("#root").innerHTML.length > 100); 653 654 console.log( 655 "IMMEDIATE: Timeout check - App elements found:", 656 hasAppElements 657 ); 658 console.log( 659 "IMMEDIATE: Available elements:", 660 document.querySelector("#root") 661 ? document.querySelector("#root").innerHTML.length + 662 " chars in root" 663 : "No root element" 664 ); 665 666 if (hasAppElements) { 667 console.log( 668 "IMMEDIATE: React app loaded successfully, stopping overlay suppression" 669 ); 670 clearInterval(immediateInterval); 671 clearInterval(earlyDetection); 672 } else { 673 console.log( 674 "IMMEDIATE: React app failed to load after " + 675 timeoutDuration / 1000 + 676 "s - applying fallback strategy" 677 ); 678 clearInterval(immediateInterval); 679 clearInterval(earlyDetection); 680 681 // For mobile devices, especially Safari and post-OAuth, handle specially 682 const isMobile = /Mobi|Android|iPhone|iPad/i.test( 683 navigator.userAgent 684 ); 685 const isAfterOAuth = 686 document.referrer.includes("/api/auth/") || 687 window.location.search.includes("code=") || 688 sessionStorage.getItem("oauth-in-progress") === "true" || 689 sessionStorage.getItem("oauthFlowInitiated") === "true"; 690 691 // Clear OAuth flags 692 sessionStorage.removeItem("oauth-in-progress"); 693 sessionStorage.removeItem("oauthFlowInitiated"); 694 695 // Safari NEVER goes to static page - always reloads or redirects to login 696 if (isSafari) { 697 console.log( 698 "IMMEDIATE: Safari detected - NEVER redirecting to static page" 699 ); 700 console.log( 701 "IMMEDIATE: Safari fallback - redirecting to login page for fresh auth check" 702 ); 703 window.location.href = "/login"; 704 } else if (isMobile || isAfterOAuth) { 705 console.log( 706 "IMMEDIATE: Mobile/post-OAuth detected - reloading page instead of static redirect" 707 ); 708 console.log( 709 "IMMEDIATE: isMobile:", 710 isMobile, 711 "isAfterOAuth:", 712 isAfterOAuth 713 ); 714 window.location.reload(); 715 } else { 716 console.log( 717 "IMMEDIATE: Desktop device - redirecting to login for auth check" 718 ); 719 window.location.href = "/login"; 720 } 721 } 722 }, timeoutDuration); 723 724 725 726 // Fix canonical URL to reflect current page URL 727 // Always uses the production base and strips trailing slashes so 728 // /blog/slug and /blog/slug/ resolve to the same canonical URL. 729 const canonicalLink = document.getElementById("canonical-link"); 730 if (canonicalLink) { 731 let currentPath = location.pathname; 732 if (currentPath.length > 1 && currentPath.endsWith("/")) { 733 currentPath = currentPath.slice(0, -1); 734 } 735 const correctUrl = `https://repsshield.com${currentPath}`; 736 canonicalLink.setAttribute("href", correctUrl); 737 } 738 }); // End DOMContentLoaded 739 </script>
739 740 741 <!-- Performance Monitoring and Optimization --> 742
742<script> 743 // Critical Web Vitals monitoring 744 const observer = new PerformanceObserver((list) => { 745 for (const entry of list.getEntries()) { 746 if (entry.entryType === "measure") { 747 748 } 749 } 750 }); 751 observer.observe({ entryTypes: ["measure"] }); 752 753 // Lazy load non-critical images 754 if ("IntersectionObserver" in window) { 755 const imageObserver = new IntersectionObserver((entries, observer) => { 756 entries.forEach((entry) => { 757 if (entry.isIntersecting) { 758 const img = entry.target; 759 img.src = img.dataset.src; 760 img.classList.remove("lazy"); 761 imageObserver.unobserve(img); 762 } 763 }); 764 }); 765 766 document.addEventListener("DOMContentLoaded", () => { 767 document.querySelectorAll("img[data-src]").forEach((img) => { 768 imageObserver.observe(img); 769 }); 770 }); 771 } 772 </script>
772 773 774 <!-- Optimized Post-OAuth Analytics Loading --> 775
775<script defer=""> 776 // Performance-optimized analytics loading for post-OAuth scenarios 777 window.deferredAnalyticsLoad = function () { 778 779 780 // Google Tag Manager - Load after dashboard render 781 (function (w, d, s, l, i) { 782 w[l] = w[l] || []; 783 w[l].push({ 784 "gtm.start": new Date().getTime(), 785 event: "gtm.js", 786 }); 787 var f = d.getElementsByTagName(s)[0], 788 j = d.createElement(s), 789 dl = l != "dataLayer" ? "&l=" + l : ""; 790 j.async = true; 791 j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl; 792 f.parentNode.insertBefore(j, f); 793 })(window, document, "script", "dataLayer", "GTM-TZZ5448V"); 794 795 // Umami Analytics - Deferred to post-dashboard render using requestIdleCallback 796 function loadUmami() { 797 798 var umamiScript = document.createElement("script"); 799 umamiScript.defer = true; 800 umamiScript.src = "https://cloud.umami.is/script.js"; 801 umamiScript.setAttribute( 802 "data-website-id", 803 "0473b837-662f-4cd9-ada3-b65b89dc1e73" 804 ); 805 umamiScript.onload = function () { 806 807 }; 808 umamiScript.onerror = function () { 809 console.warn("[Analytics] Umami analytics failed to load"); 810 }; 811 document.head.appendChild(umamiScript); 812 } 813 814 // Use requestIdleCallback to load Umami when browser is idle (after dashboard render) 815 if (window.requestIdleCallback) {
816 window.requestIdleCallback(loadUmami, { timeout: 3000 }); 817 } else { 818 setTimeout(loadUmami, 1500); // Fallback with 1.5s delay 819 } 820 }; 821 822 // Global performance optimization for ALL pages 823 window.addEventListener("DOMContentLoaded", function () { 824 // For ALL pages (public and authenticated), defer analytics to improve performance 825 console.log( 826 "[Analytics] Page loaded - deferring analytics for optimal performance" 827 ); 828 829 // Always use maximum delay for public pages performance 830 const isPublicPage = 831 ["/features", "/pricing", "/why-reps-shield", "/about"].includes( 832 window.location.pathname 833 ) || window.location.pathname.startsWith("/features/"); 834 835 if (isPublicPage) { 836 console.log( 837 "[Analytics] Public page detected - maximum deferral for speed" 838 ); 839 // For public marketing pages, defer analytics heavily to maximize page speed 840 if (window.requestIdleCallback) { 841 window.requestIdleCallback(window.deferredAnalyticsLoad, { 842 timeout: 5000, 843 }); 844 } else { 845 setTimeout(window.deferredAnalyticsLoad, 2000); // 2s delay for public pages 846 } 847 } else if ( 848 window.location.pathname === "/" || 849 window.location.hash === "#/" 850 ) { 851 console.log( 852 "[Analytics] Dashboard detected - deferring analytics until after render" 853 ); 854 // Wait for dashboard to be fully rendered before loading analytics 855 function waitForDashboard() { 856 if ( 857 document.querySelector( 858 '[data-testid="dashboard-content"], .dashboard-container, .min-h-screen' 859 ) 860 ) { 861 862 window.deferredAnalyticsLoad(); 863 } else { 864 setTimeout(waitForDashboard, 100); 865 } 866 } 867 setTimeout(waitForDashboard, 500); // Give dashboard time to start rendering 868 } else { 869 // For other pages, load analytics with moderate delay 870 if (window.requestIdleCallback) { 871 window.requestIdleCallback(window.deferredAnalyticsLoad, { 872 timeout: 3000, 873 }); 874 } else { 875 setTimeout(window.deferredAnalyticsLoad, 1000); 876 } 877 } 878 }); 879 </script>
879 880 <!-- This is a replit script which adds a banner on the top of the page when opened in development mode outside the replit environment --> 881 <!-- Commented out to prevent blue debug banner showing in production 882
882<script type="text/javascript" src="https://replit.com/public/js/replit-dev-banner.js"></script>
882 883 --> 884 885 <!-- React App Entry Point - MUST be last to ensure all scripts are loaded first --> 886 887 888
889<script type="text/javascript" id="" charset="">var script=document.createElement("script");script.defer=!0;script.dataset.domain="repsshield.com";script.dataset.api="https://plausible.io/api/event";script.src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js";document.getElementsByTagName("head")[0].appendChild(script);</script>
889 890
891<script type="text/javascript" id="" charset="">window.plausible=window.plausible||function(){(window.plausible.q=window.plausible.q||[]).push(arguments)};</script>
891 892</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.