PageSourceSearch

https://lotcheck.ai/

html lotcheck.ai collected 2026-10-05 12:52:23 UTC 49,550 bytes, 733 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" data-theme="lotcheck" style="color-scheme: light">
3  <head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <meta name="csrf-token" content="GT8IDHgZKzsHf38cIAYMYyZeLw1KJnUC4y044sSIUFFDTtoNn2Iy8yDX">
7    <title>LotCheck — What Can You Build on Your Lot? Free ADU Tools</title>
8
9    <meta name="description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX.">
10<link rel="canonical" href="https://lotcheck.ai">
11
12
13<meta property="og:type" content="website">
14<meta property="og:site_name" content="LotCheck">
15<meta property="og:title" content="LotCheck — What Can You Build on Your Lot? Free ADU Tools">
16<meta property="og:description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX.">
17<meta property="og:url" content="https://lotcheck.ai">
18<meta property="og:image" content="https://lotcheck.ai/images/og-default.png">
19
20
21
22<meta name="twitter:card" content="summary_large_image">
23<meta name="twitter:site" content="@lotcheck">
24<meta name="twitter:title" content="LotCheck — What Can You Build on Your Lot? Free ADU Tools">
25<meta name="twitter:description" content="Free tools to check what you can build on any lot. ADU eligibility, setbacks, permits, and costs for 40 cities across CA, FL, and TX.">
26<meta name="twitter:image" content="https://lotcheck.ai/images/og-default.png">
27
28
29
30  
31    
31<script type="application/ld+json">
32      {"@context":"https://schema.org","@type":"WebSite","description":"Discover what you can build on any lot. ADU eligibility, setback requirements, zoning rules, and development tools for properties across California, Florida, Texas, and more.","name":"LotCheck","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://lotcheck.ai/search?q={search_term_string}"}},"url":"https://lotcheck.ai"}
33    </script>
33
34  
35
36
37    <link rel="preconnect" href="https://fonts.googleapis.com">
38    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
39
40    <link phx-track-static rel="stylesheet" href="/assets/css/app-b56c26e0dee2961861671e26b586d803.css?vsn=d">
41    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" crossorigin="">
42    
42<script src="https://unpkg.com/[email protected]/dist/leaflet.js" crossorigin=""></script>
42
43    
43<script defer phx-track-static type="text/javascript" src="/assets/js/app-1e82302f27e27a859182bf3e43bba212.js?vsn=d"></script>
43
44
45    <link rel="icon" type="image/x-icon" href="/favicon-91f37b602a111216f1eef3aa337ad763.ico?vsn=d">
46
47    
47<script>
48      window.__GOOGLE_MAPS_KEY = "AIzaSyB2R6AGveQ97KRzrY-h1SLiKGjLflgeWXA";
49    </script>
49
50    
50<script>
51      (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.googleapis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
52        key: "AIzaSyB2R6AGveQ97KRzrY-h1SLiKGjLflgeWXA",
53        v: "weekly"
54      });
55    </script>
55
56  </head>
57  <body class="bg-white text-black">
58    <div class="min-h-screen bg-white">
59
60
61
62  <section class="relative bg-black text-white min-h-[85vh] sm:min-h-[90vh] flex flex-col">
63
64    <nav class="flex items-center justify-between px-6 py-4 sm:py-5 max-w-6xl mx-auto w-full">
65      <span class="text-[14px] sm:text-[16px] font-black tracking-tight text-white/80">LOTCHECK</span>
66      <div class="flex items-center gap-4 sm:gap-6">
67        <a href="/tools" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Tools</a>
68        <a href="/guides" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Guides</a>
69        <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Cities</a>
70        <a href="/tools/codes" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.2em] hover:text-white transition-colors">Codes</a>
71      </div>
72    </nav>
73
74    <div class="flex-1 flex items-center">
75    <div class="max-w-3xl mx-auto px-6 w-full">
76
77      <p class="text-[10px] sm:text-[11px] text-white/40 uppercase tracking-[0.3em] mb-6 sm:mb-8">Free Property Lookup</p>
78
79      <h1 class="text-[40px] sm:text-[64px] lg:text-[80px] font-black leading-[0.95] tracking-tight mb-6 sm:mb-8">
80        What can you<br>build on<br>your lot?
81      </h1>
82
83      <p class="text-[16px] sm:text-[20px] text-white/50 max-w-md leading-relaxed mb-10 sm:mb-14">
84        Enter any address. Get zoning, setbacks, ADU eligibility, and development scenarios — instantly.
85      </p>
86
87      <div id="address-search" class="relative max-w-xl">
88        <div class="flex">
89          <input type="text" id="address-input" placeholder="Enter an address..." class="flex-1 px-5 sm:px-6 py-4 sm:py-5 bg-white text-black text-[15px] sm:text-[17px] border-0 focus:outline-none focus:ring-2 focus:ring-white/30 placeholder:text-black/35" style="border-radius: 2px 0 0 2px;" autofocus autocomplete="off">
90          <button id="address-submit" type="button" class="px-6 sm:px-10 py-4 sm:py-5 bg-[oklch(45%_0.12_250)] text-white font-bold text-[14px] sm:text-[15px] tracking-wide hover:brightness-110 transition-all" style="border-radius: 0 2px 2px 0;">
91            Check
92          </button>
93        </div>
94        <div id="search-dropdown" class="hidden absolute top-full left-0 right-0 bg-white border border-black/10 shadow-lg z-50 max-h-[320px] overflow-y-auto mt-px"></div>
95        <div id="search-status" class="hidden mt-3 text-[13px] text-white/60"></div>
96      </div>
97
98      <div class="mt-5 flex flex-wrap items-center gap-3">
99        <span class="text-[10px] text-white/25 uppercase tracking-[0.2em]">Try</span>
100        <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="1600 Vine St, Los Angeles">1600 Vine St, Los Angeles</button>
101        <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="800 Bagby St, Houston">800 Bagby St, Houston</button>
102        <button class="search-example text-[11px] sm:text-[12px] text-white/40 hover:text-white border-b border-white/15 hover:border-white/50 transition-colors cursor-pointer" data-query="100 E Broward Blvd, Fort Lauderdale">100 E Broward Blvd, Fort Lauderdale</button>
103      </div>
104
105      <div class="mt-10 sm:mt-14 flex items-center gap-6 sm:gap-10">
106        <div>
107          <p class="text-[22px] sm:text-[28px] font-black text-white/90">3</p>
108          <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">States</p>
109        </div>
110        <div class="w-px h-8 bg-white/10"></div>
111        <div>
112          <p class="text-[22px] sm:text-[28px] font-black text-white/90">40</p>
113          <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">Cities</p>
114        </div>
115        <div class="w-px h-8 bg-white/10"></div>
116        <div>
117          <p class="text-[22px] sm:text-[28px] font-black text-white/90">Free</p>
118          <p class="text-[10px] text-white/30 uppercase tracking-[0.15em] mt-0.5">To search</p>
119        </div>
120      </div>
121    </div>
122    </div>
123
124    <div class="absolute bottom-6 left-1/2 -translate-x-1/2 text-white/20 animate-bounce">
125      <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
126        <path d="M12 5v14M5 12l7 7 7-7"></path>
127      </svg>
128    </div>
129  </section>
130
131
132
133  <section class="border-b border-black/10 py-14 sm:py-20 bg-neutral-50">
134    <div class="max-w-5xl mx-auto px-6">
135      <p class="text-[10px] text-black/30 uppercase tracking-[0.2em] font-bold mb-8">How It Works</p>
136      <div class="grid grid-cols-1 sm:grid-cols-3 gap-10 sm:gap-12">
137        <div>
138          <span class="text-[36px] font-black text-black/8">01</span>
139          <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">Search any address</h3>
140          <p class="text-[13px] text-black/45 leading-relaxed">Enter a property address in California, Florida, or Texas. We pull parcel data from county records in seconds.</p>
141        </div>
142        <div>
143          <span class="text-[36px] font-black text-black/8">02</span>
144          <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">See what's allowed</h3>
145          <p class="text-[13px] text-black/45 leading-relaxed">Zoning, setbacks, lot dimensions, assessed value — plus what state and local law allows you to build.</p>
146        </div>
147        <div>
148          <span class="text-[36px] font-black text-black/8">03</span>
149          <h3 class="font-bold text-black mt-3 mb-2 text-[15px]">Run scenarios</h3>
150          <p class="text-[13px] text-black/45 leading-relaxed">ADU, duplex, lot split, multi-unit — see what's possible on your lot with development rules calculated.</p>
151        </div>
152      </div>
153    </div>
154  </section>
155
156
157
158  <section class="border-b border-black/10 py-14 sm:py-20">
159    <div class="max-w-5xl mx-auto px-6">
160      <p class="text-[10px] text-black/30 uppercase tracking-[0.2em] font-bold mb-8">Who This Is For</p>
161      <div class="grid grid-cols-1 sm:grid-cols-3 gap-10">
162        <div>
163          <h3 class="font-bold text-black mb-2 text-[15px]">Homeowners</h3>
164          <p class="text-[13px] text-black/45 leading-relaxed italic">"Can I add a second unit to my backyard?"</p>
165        </div>
166        <div>
167          <h3 class="font-bold text-black mb-2 text-[15px]">Investors</h3>
168          <p class="text-[13px] text-black/45 leading-relaxed italic">"How many units can I build on this SB 9 lot split?"</p>
169        </div>
170        <div>
171          <h3 class="font-bold text-black mb-2 text-[15px]">Builders & Architects</h3>
172          <p class="text-[13px] text-black/45 leading-relaxed italic">"What's the max buildable envelope under current zoning?"</p>
173        </div>
174      </div>
175    </div>
176  </section>
177
178
179
180  <div class="max-w-6xl mx-auto px-4 sm:px-6">
181
182    <div class="pt-14 sm:pt-20 pb-4 flex items-center gap-4">
183      <h2 class="text-[20px] sm:text-[24px] font-black text-black tracking-tight shrink-0">Housing News</h2>
184      <div class="flex-1 h-px bg-black/10"></div>
185    </div>
186    <p class="text-[13px] text-black/40 mb-6 max-w-lg">ADU permits, zoning reform, building code updates — everything builders, architects, and developers need to know.</p>
187
188    <div class="pb-4 flex items-center gap-3 sm:gap-4 border-b border-black/10">
189      <div class="flex gap-2 sm:gap-3 items-center overflow-x-auto no-scrollbar">
190        <a href="/" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black font-bold">All</a>
191
192          <a href="/?topic=adu" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">ADU News</a>
193
194          <a href="/?topic=sb9" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">SB 9 &amp; Lot Splits</a>
195
196          <a href="/?topic=zoning" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Zoning Changes</a>
197
198          <a href="/?topic=legislation" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">New Legislation</a>
199
200          <a href="/?topic=housing-market" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Housing Market</a>
201
202          <a href="/?topic=affordability" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Affordability</a>
203
204          <a href="/?topic=development" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Development</a>
205
206          <a href="/?topic=permits" data-phx-link="redirect" data-phx-link-state="push" class="text-[10px] uppercase tracking-[0.15em] whitespace-nowrap text-black/50 hover:text-black">Permits &amp; Approvals</a>
207
208      </div>
209    </div>
210
211    
212
213    <div class="grid grid-cols-1 lg:grid-cols-12 gap-0">
214
215      <main class="lg:col-span-8 lg:border-r lg:border-black/10 lg:pr-8">
216
217        <div class="grid grid-cols-1 sm:grid-cols-3 gap-5 sm:gap-6 py-6 sm:py-8 border-b border-black/10">
218
219            <a href="/pulse/democrat-fiona-ma-republican-gloria-romero-to-face-off-in-race-for-lieutenant-go-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group">
220              <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden">
221                <img src="https://ca-times.brightspotcdn.com/dims4/default/5ad3a94/2147483647/strip/false/crop/1624x1082+0+0/resize/1500x999!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F78%2Fe0%2F41063c6141058c9ab61c0fcd4946%2Flt-governor-fiona-ma-gloria-romero.png" alt="Democrat Fiona Ma, Republican Gloria Romero to face off in race for lieutenant governor" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy">
222              </div>
223              
224              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p>
225              <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors">
226                Democrat Fiona Ma, Republican Gloria Romero to face off in race for lieutenant governor
227              </h3>
228              <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p>
229            </a>
230
231            <a href="/pulse/a-long-stalled-venice-affordable-housing-project-could-be-moving-forward-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group">
232              <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden">
233                <img src="https://ca-times.brightspotcdn.com/dims4/default/a13a2b8/2147483647/strip/false/crop/5760x3840+0+0/resize/1500x1000!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F19%2Fba%2Fbec3994644c583e14a3e871acf5b%2F1458214-me-0607-rose-apartments-homeless-gem-012.jpg" alt="A long-stalled Venice affordable housing project could be moving forward" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy">
234              </div>
235              
236              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p>
237              <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors">
238                A long-stalled Venice affordable housing project could be moving forward
239              </h3>
240              <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p>
241            </a>
242
243            <a href="/pulse/its-a-high-demand-job-with-lots-of-openings-how-lausd-trains-adults-for-a-role-i-2026" data-phx-link="redirect" data-phx-link-state="push" class="block group">
244              <div class="aspect-[16/9] sm:aspect-[4/3] bg-neutral-100 mb-2 sm:mb-3 overflow-hidden">
245                <img src="https://ca-times.brightspotcdn.com/dims4/default/9a7a4e1/2147483647/strip/false/crop/7280x5464+0+0/resize/1500x1126!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fd2%2F85%2F062869304be99939bfd4c105282a%2F1553485-me-maxine-waters-adult-school-child-development-gem-006.jpg" alt="It&#39;s a high-demand job with lots of openings. How LAUSD trains adults for a role in child care" class="w-full h-full object-cover group-hover:scale-[1.02] transition-transform duration-500" loading="lazy">
246              </div>
247              
248              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
249              <h3 class="text-[14px] font-bold text-black leading-snug line-clamp-3 group-hover:text-[oklch(45%_0.12_250)] transition-colors">
250                It&#39;s a high-demand job with lots of openings. How LAUSD trains adults for a role in child care
251              </h3>
252              <p class="text-[10px] text-black/45 mt-1.5 sm:mt-2">LA Times California</p>
253            </a>
254
255        </div>
256
257
258          <a href="/pulse/18-year-old-killed-3-wounded-including-child-11-in-shooting-at-california-gradua-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
259            <div class="flex-1 min-w-0">
260              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
261              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
262                18-year-old killed, 3 wounded including child, 11, in shooting at California graduation
263              </h3>
264              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">
264A deadly shooting at a Northern California high school graduation ceremony has highlighted ongoing public safety concerns that could impact residential development and property values in affected comm</p>
265              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 05</p>
266            </div>
267            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
268              <img src="https://ca-times.brightspotcdn.com/dims4/default/640226b/2147483647/strip/true/crop/5325x2796+0+377/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F37%2F06%2F1571ed6c4b4c9d761d4be9bfe25a%2Fap26155815743909.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
269            </div>
270          </a>
271
272          <a href="/pulse/1-dead-3-injured-in-shooting-after-high-school-graduation-ceremony-in-fairfield-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
273            <div class="flex-1 min-w-0">
274              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
275              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
276                1 dead, 3 injured in shooting after high school graduation ceremony in Fairfield
277              </h3>
278              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">A fatal shooting at Fairfield High School Wednesday evening that left one dead and three injured highlights ongoing public safety concerns that continue to influence residential development patterns a</p>
279              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 04</p>
280            </div>
281            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
282              <img src="https://ca-times.brightspotcdn.com/dims4/default/6e1a800/2147483647/strip/true/crop/4749x2493+0+407/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F9e%2F1c%2F57e16aca48d98d86edf0eb28fad4%2Fgettyimages-1408755897.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
283            </div>
284          </a>
285
286          <a href="/pulse/family-driving-to-graduation-is-killed-including-4-year-old-twins-in-fiery-socal-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
287            <div class="flex-1 min-w-0">
288              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
289              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
290                Family driving to graduation is killed, including 4-year-old twins, in fiery SoCal crash
291              </h3>
292              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">I cannot write a news summary connecting this tragic traffic accident to California housing development or ADU news, as there is no meaningful connection between the fatal crash and housing policy mat</p>
293              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · Jun 03</p>
294            </div>
295            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
296              <img src="https://ca-times.brightspotcdn.com/dims4/default/5e0b471/2147483647/strip/false/crop/3823x2178+0+0/resize/1500x855!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F4a%2F9c%2F7bb400414ec2a9143d2b5e758fed%2F1540887-me-cult-murder-prelim-ajs-004.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
297            </div>
298          </a>
299
300          <a href="/pulse/your-last-minute-guide-for-california-insurance-commissioner-controller-and-othe-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
301            <div class="flex-1 min-w-0">
302              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p>
303              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
304                Your last-minute guide for California insurance commissioner, controller and other statewide offices
305              </h3>
306              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">California voters will elect new statewide officials in 2026 who will have significant impact on housing costs and development across the state. While much attention has focused on the gubernatorial r</p>
307              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 31</p>
308            </div>
309            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
310              <img src="https://ca-times.brightspotcdn.com/dims4/default/08e204a/2147483647/strip/false/crop/2501x1667+0+0/resize/1500x1000!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fe2%2F8d%2Fd8e6273548c59d7361f8665c08a2%2Fvoter-survival-guide-hp.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
311            </div>
312          </a>
313
314          <a href="/pulse/your-last-minute-voter-guide-to-the-2026-california-governors-race-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
315            <div class="flex-1 min-w-0">
316              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p>
317              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
318                Your last minute voter guide to the 2026 California governor&#39;s race
319              </h3>
320              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Eight candidates are competing to replace Governor Gavin Newsom in California&#39;s 2026 gubernatorial race, with housing affordability emerging as a central campaign issue. The field includes former U.S.</p>
321              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 30</p>
322            </div>
323            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
324              <img src="https://ca-times.brightspotcdn.com/dims4/default/f6e6b49/2147483647/strip/true/crop/5000x2625+0+354/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F2c%2Fe4%2F3e23b43c4bd08aac2f27c52b0c93%2F2273625296.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
325            </div>
326          </a>
327
328          <a href="/pulse/thousands-are-leaving-los-angeles-year-after-year-this-is-why-we-still-have-a-ho-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
329            <div class="flex-1 min-w-0">
330              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">Affordability</p>
331              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
332                Thousands are leaving Los Angeles year after year. This is why we still have a housing crunch
333              </h3>
334              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Los Angeles continues to face a persistent housing affordability crisis despite losing nearly 10,000 residents last year and 62,000 across LA County. While population declines in other regions typical</p>
335              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 29</p>
336            </div>
337            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
338              <img src="https://ca-times.brightspotcdn.com/dims4/default/6bcdc2e/2147483647/strip/true/crop/5836x3064+0+414/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F41%2F3e%2F4a3b2dbc4dad8e0d18215f2cc524%2Fgettyimages-2277488688.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
339            </div>
340          </a>
341
342          <a href="/pulse/evidence-suggests-mom-pulled-trigger-in-north-hills-murder-suicide-that-left-4-d-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
343            <div class="flex-1 min-w-0">
344              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
345              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
346                Evidence suggests mom pulled trigger in North Hills murder-suicide that left 4 dead, sources say
347              </h3>
348              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">I cannot write a news summary about this tragic murder-suicide case for a housing development website. This article details a horrific family tragedy involving the deaths of four people, including chi</p>
349              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p>
350            </div>
351            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
352              <img src="https://ca-times.brightspotcdn.com/dims4/default/4690fd7/2147483647/strip/false/crop/7148x5187+0+0/resize/1500x1088!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F63%2Fba%2F773deed44deb9fd086227c77ddae%2F1556716-me-four
352-dead-north-hills-gem-001.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
353            </div>
354          </a>
355
356          <a href="/pulse/socal-teen-is-graduating-from-high-school-and-college-and-another-college-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
357            <div class="flex-1 min-w-0">
358              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
359              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
360                SoCal teen is graduating from high school. And college. And another college
361              </h3>
362              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">An 18-year-old Adelanto resident has made headlines for an extraordinary academic achievement that highlights the growing educational opportunities in California&#39;s Inland Empire region, an area experi</p>
363              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p>
364            </div>
365            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
366              <img src="https://ca-times.brightspotcdn.com/dims4/default/e5838ce/2147483647/strip/true/crop/6720x3528+0+476/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2F0c%2F1e%2F7332d17d44d8b50a30e7227b5279%2F1555933-me-contreras-graduates-gxc-0226.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
367            </div>
368          </a>
369
370          <a href="/pulse/2-adults-and-2-children-fatally-shot-in-possible-murder-suicide-in-north-hills-h-2026" data-phx-link="redirect" data-phx-link-state="push" class="flex gap-4 sm:gap-6 py-4 sm:py-5 border-b border-black/5 group">
371            <div class="flex-1 min-w-0">
372              <p class="text-[10px] text-[oklch(45%_0.12_250)] font-bold uppercase tracking-[0.15em] mb-1">ADU News</p>
373              <h3 class="text-[14px] sm:text-[15px] font-bold text-black leading-snug group-hover:text-[oklch(45%_0.12_250)] transition-colors mb-1">
374                2 adults and 2 children fatally shot in possible murder-suicide in North Hills home
375              </h3>
376              <p class="text-[12px] text-black/55 line-clamp-2 leading-relaxed hidden sm:block overflow-hidden">Los Angeles Police Department investigators are examining a fatal shooting in North Hills that left four people dead in what authorities believe was a murder-suicide incident. Officers responded to a </p>
377              <p class="text-[10px] text-black/35 mt-1.5 sm:mt-2">LA Times California · May 28</p>
378            </div>
379            <div class="w-20 h-20 sm:w-24 sm:h-24 bg-neutral-100 overflow-hidden shrink-0">
380              <img src="https://ca-times.brightspotcdn.com/dims4/default/6198e1a/2147483647/strip/true/crop/6653x3493+0+471/resize/1200x630!/quality/75/?url=https%3A%2F%2Fcalifornia-times-brightspot.s3.amazonaws.com%2Fbd%2Fac%2F8aac4bb6451e933bce721c70cedf%2F914001-me-lapd-06-mjc-2.jpg" alt="" class="w-full h-full object-cover" loading="lazy">
381            </div>
382          </a>
383
384
385        <div class="flex justify-center gap-3 py-6 sm:py-8">
386          
387          <span class="text-[11px] text-black/35">
3871/8</span>
388          <a href="/?topic=&amp;page=2" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-black/55 hover:text-black uppercase tracking-wider">Older →</a>
389        </div>
390      </main>
391
392      <aside class="hidden lg:block lg:col-span-4 lg:pl-8 pt-6">
393
394        
395
396        <div class="pb-6 mb-6 border-b border-black/10">
397          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Tools</p>
398          <div class="space-y-2">
399            <a href="/tools/adu-eligibility" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">ADU Eligibility Calculator</a>
400            <a href="/tools/setback-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">Setback Calculator</a>
401            <a href="/tools/parking-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">Parking Calculator</a>
402            <a href="/tools/far-calculator" data-phx-link="redirect" data-phx-link-state="push" class="block text-[13px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">FAR Calculator</a>
403          </div>
404          <a href="/tools" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline">All Tools →</a>
405        </div>
406
407        <div class="pb-6 mb-6 border-b border-black/10">
408          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">ADU Guides</p>
409          <div class="space-y-1.5">
410            <a href="/cities/los-angeles/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">→ Los Angeles</a>
411            <a href="/cities/san-francisco/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">→ San Francisco</a>
412            <a href="/cities/miami/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">→ Miami</a>
413            <a href="/cities/houston/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">→ Houston</a>
414            <a href="/cities/austin/adu-guide" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-black transition-colors">→ Austin</a>
415          </div>
416          <a href="/guides" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline">All guides →</a>
417        </div>
418
419        <div class="pb-6 mb-6 border-b border-black/10">
420          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Legislation</p>
421          <div class="space-y-3">
422            <div>
423              <span class="text-[13px] font-black text-black">SB 9</span>
424              <span class="text-[12px] text-black/50 ml-1">Duplex + lot split on SF lots</span>
425            </div>
426            <div>
427              <span class="text-[13px] font-black text-black">ADU</span>
428              <span class="text-[12px] text-black/50 ml-1">Accessory units up to 1,200 sf</span>
429            </div>
430            <div>
431              <span class="text-[13px] font-black text-black">SB 1211</span>
432              <span class="text-[12px] text-black/50 ml-1">Multiple ADUs per lot</span>
433            </div>
434          </div>
435        </div>
436
437        <div>
438          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-4">Cities</p>
439          <div class="grid grid-cols-2 gap-x-4 gap-y-1.5">
440
441              <a href="/cities/los-angeles" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
442                Los Angeles
443              </a>
444
445              <a href="/cities/san-diego" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
446                San Diego
447              </a>
448
449              <a href="/cities/san-jose" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
450                San Jose
451              </a>
452
453              <a href="/cities/san-francisco" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
454                San Francisco
455              </a>
456
457              <a href="/cities/fresno" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
458                Fresno
459              </a>
460
461              <a href="/cities/sacramento" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
462                Sacramento
463              </a>
464
465              <a href="/cities/long-beach" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
466                Long Beach
467              </a>
468
469              <a href="/cities/oakland" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
470                Oakland
471              </a>
472
473              <a href="/cities/bakersfield" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
474                Bakersfield
475              </a>
476
477              <a href="/cities/anaheim" data-phx-link="redirect" data-phx-link-state="push" class="text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
478                Anaheim
479              </a>
480
481          </div>
482          <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-3 inline-block hover:underline">
483            All Cities →
484          </a>
485        </div>
486      </aside>
487    </div>
488
489    <div class="lg:hidden border-t border-black/10 mt-4 pt-6 pb-8 space-y-6">
490
491      
492
493      <div class="grid grid-cols-2 gap-6">
494        <div>
495          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-3">Legislation</p>
496          <div class="space-y-2">
497            <div><span class="text-[12px] font-bold text-black">SB 9</span> <span class="text-[11px] text-black/50">Duplex + lot split</span></div>
498            <div><span class="text-[12px] font-bold text-black">ADU</span> <span class="text-[11px] text-black/50">Up to 1,200 sf</span></div>
499            <div><span class="text-[12px] font-bold text-black">SB 1211</span> <span class="text-[11px] text-black/50">Multiple ADUs</span></div>
500          </div>
501        </div>
502        <div>
503          <p class="text-[10px] text-black font-bold uppercase tracking-[0.2em] mb-3">Cities</p>
504          <div class="space-y-1">
505
506              <a href="/cities/los-angeles" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
507                Los Angeles
508              </a>
509
510              <a href="/cities/san-diego" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
511                San Diego
512              </a>
513
514              <a href="/cities/san-jose" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
515                San Jose
516              </a>
517
518              <a href="/cities/san-francisco" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
519                San Francisco
520              </a>
521
522              <a href="/cities/fresno" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
523                Fresno
524              </a>
525
526              <a href="/cities/sacramento" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
527                Sacramento
528              </a>
529
530              <a href="/cities/long-beach" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
531                Long Beach
532              </a>
533
534              <a href="/cities/oakland" data-phx-link="redirect" data-phx-link-state="push" class="block text-[12px] text-black/55 hover:text-[oklch(45%_0.12_250)] transition-colors">
535                Oakland
536              </a>
537
538            <a href="/cities" data-phx-link="redirect" data-phx-link-state="push" class="block text-[11px] text-[oklch(45%_0.12_250)] font-bold mt-2 hover:underline">All Cities →</a>
539          </div>
540        </div>
541      </div>
542    </div>
543  </div>
544
545  <footer class="border-t-2 border-black mt-4 lg:mt-12">
546    <div class="max-w-6xl mx-auto px-4 sm:px-6 py-4 sm:py-5 flex flex-col sm:flex-row items-center justify-between gap-2">
547      <span class="text-[11px] font-black text-black uppercase tracking-[0.2em]">LotCheck</span>
548      <span class="text-[10px] text-black/35 text-center">Housing development intelligence. Not legal advice.</span>
549    </div>
550  </footer>
551</div>
552
553<script>
554(function(){
555  var inp = document.getElementById('address-input');
556  var btn = document.getElementById('address-submit');
557  var dd = document.getElementById('search-dropdown');
558  var statusEl = document.getElementById('search-status');
559  if(!inp || !dd) return;
560
561  var timer, activeIdx = -1, items = [], sessionToken = null;
562  var US_BOUNDS = { south: 24.5, west: -125.0, north: 49.5, east: -66.5 };
563
564  function esc(s){ return s ? s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;') : ''; }
565  function showStatus(msg){
566    if(statusEl){ statusEl.textContent = msg; statusEl.classList.remove('hidden'); setTimeout(function(){ statusEl.classList.add('hidden'); }, 4000); }
567  }
568
569  async function initGoogle(){
570    try {
571      var lib = await google.maps.importLibrary('places');
572      var AutocompleteSuggestion = lib.AutocompleteSuggestion;
573      var AutocompleteSessionToken = lib.AutocompleteSessionToken;
574      sessionToken = new AutocompleteSessionToken();
575
576      inp.addEventListener('input', function(){
577        var q = inp.value.trim();
578        clearTimeout(timer);
579        activeIdx = -1;
580        if(q.length < 3){ dd.classList.add('hidden'); dd.innerHTML=''; return; }
581        timer = setTimeout(async function(){
582          try {
583            var resp = await AutocompleteSuggestion.fetchAutocompleteSuggestions({
584              input: q,
585              includedRegionCodes: ['us'],
586              includedPrimaryTypes: ['street_address', 'subpremise', 'premise'],
587              locationBias: new google.maps.LatLngBounds(
588                { lat: US_BOUNDS.south, lng: US_BOUNDS.west },
589                { lat: US_BOUNDS.north, lng: US_BOUNDS.east }
590              ),
591              sessionToken: sessionToken
592            });
593            var suggestions = resp.suggestions || [];
594            if(suggestions.length === 0){
595              dd.innerHTML='<div style="padding:12px;font-size:13px;color:#999">No addresses found</div>';
596              dd.classList.remove('hidden'); return;
597            }
598            items = suggestions;
599            dd.innerHTML = suggestions.map(function(s, i){
600              var pred = s.placePrediction;
601              var main = pred.mainText ? pred.mainText.text : '';
602              var secondary = pred.secondaryText ? pred.secondaryText.text : '';
603              return '<div class="ac-item" data-idx="'+i+'" style="display:block;padding:10px 16px;border-bottom:1px solid #f0f0f0;cursor:pointer"'+
604                ' onmouseover="this.style.background=\'#f5f5f5\'" onmouseout="this.style.background=\'white\'">'+
605                '<div style="font-size:14px;font-weight:500;color:#000">'+esc(main)+'</div>'+
606                '<div style="font-size:11px;color:#888;margin-top:2px">'+esc(secondary)+'</div></div>';
607            }).join('');
608            dd.classList.remove('hidden');
609            dd.querySelectorAll('.ac-item').forEach(function(el){
610              el.addEventListener('click', function(){ selectItem(parseInt(el.dataset.idx)); });
611            });
612          } catch(err){ console.warn('Google autocomplete error:', err); }
613        }, 200);
614      });
615      return true;
616    } catch(err){ return false; }
617  }
618
619  async function selectItem(idx){
620    var suggestion = items[idx];
621    if(!suggestion || !suggestion.placePrediction) return;
622
623    showStatus('Looking up parcel…');
624    dd.classList.add('hidden');
625
626    try {
627      var place = suggestion.placePrediction.toPlace();
628      await place.fetchFields({ fields: ['formattedAddress', 'addressComponents', 'location'] });
629
630      var parcelSearchStates = ['CA','TX','FL'];
631      var contentStates = ['CA','FL','TX'];
632      var stateCode = null;
633      (place.addressComponents || []).forEach(function(c){
634        if(c.types && c.types.indexOf('administrative_area_level_1') !== -1) stateCode = c.shortText;
635      });
636      if(!stateCode || contentStates.indexOf(stateCode) === -1){
637        showStatus('LotCheck currently covers CA, FL, and TX. More states coming soon.');
638        return;
639      }
640      if(parcelSearchStates.indexOf(stateCode) === -1){
641        showStatus('Parcel search for ' + stateCode + ' is coming soon.');
642        return;
643      }
644
645      sessionToken = new google.maps.places.AutocompleteSessionToken();
646
647      var streetNumber = '', route = '', city = '';
648      (place.addressComponents || []).forEach(function(c){
649        if(c.types.indexOf('street_number') !== -1) streetNumber = c.longText || c.shortText || '';
650        if(c.types.indexOf('route') !== -1) route = c.longText || c.shortText || '';
651        if(c.types.indexOf('locality') !== -1) city = c.longText || c.shortText || '';
652      });
653      var street = (streetNumber + ' ' + route).trim();
654      var addr = (place.formattedAddress || '').replace(/, USA$/, '');
655      inp.value = addr;
656
657      // TX/FL: lat/lng spatial search
658      if((stateCode === 'TX' || stateCode === 'FL') && place.location){
659        var lat = place.location.lat();
660        var lng = place.location.lng();
661        var r = await fetch('/api/search?lat=' + lat + '&lng=' + lng + '&state=' + stateCode);
662        var d = await r.json();
663        if(d.results && d.results.length > 0){
664          window.location.href = '/parcel/' + d.results[0].object_id;
665          return;
666        }
667        showStatus('No parcel found for this ' + stateCode + ' address. Try a different address.');
668        return;
669      }
670
671      // CA: street/city search
672      if(street && city){
673        var r = await fetch('/api/search?street=' + encodeURIComponent(street) + '&city=' + encodeURIComponent(city));
674        var d = await r.json();
675        if(d.results && d.results.length > 0){
676          window.location.href = '/parcel/' + d.results[0].object_id;
677          return;
678        }
679      }
680      if(street){
681        var r2 = await fetch('/api/search?q=' + encodeURIComponent(street));
682        var d2 = await r2.json();
683        if(d2.results && d2.results.length > 0){
684          window.location.href = '/parcel/' + d2.results[0].object_id;
685          return;
686        }
687      }
688      showStatus('No parcel found for this address. Try a different address.');
689    } catch(err){
690      showStatus('Search error. Please try again.');
691    }
692  }
693
694  inp.addEventListener('keydown', function(e){
695    var divItems = dd.querySelectorAll('.ac-item');
696    if(e.key === 'Escape'){ dd.classList.add('hidden'); activeIdx = -1; return; }
697    if(e.key === 'ArrowDown' || e.key === 'ArrowUp'){
698      e.preventDefault();
699      if(!divItems.length) return;
700      activeIdx = e.key === 'ArrowDown' ? Math.min(activeIdx+1, divItems.length-1) : Math.max(activeIdx-1, 0);
701      divItems.forEach(function(el,i){ el.style.background = i === activeIdx ? '#f0f0f0' : 'white'; });
702      return;
703    }
704    if(e.key === 'Enter'){
705      e.preventDefault();
706      if(activeIdx >= 0 && items[activeIdx]) selectItem(activeIdx);
707      else if(items.length > 0) selectItem(0);
708    }
709  });
710
711  btn.addEventListener('click', function(){
712    if(items.length > 0) selectItem(activeIdx >= 0 ? activeIdx : 0);
713  });
714
715  // Example buttons
716  document.querySelectorAll('.search-example').forEach(function(el){
717    el.addEventListener('click', function(){
718      inp.value = el.dataset.query;
719      inp.dispatchEvent(new Event('input'));
720    });
721  });
722
723  document.addEventListener('click', function(e){
724    if(!document.getElementById('address-search').contains(e.target)) dd.classList.add('hidden');
725  });
726
727  if(window.__GOOGLE_MAPS_KEY){
728    (async function(){ await initGoogle(); })();
729  }
730})();
731</script>
731
732  </body>
733</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.