PageSourceSearch

https://growtherichmond.com/take-action/

html growtherichmond.com collected 2026-09-29 10:13:51 UTC 35,224 bytes, 1,048 lines download raw bytes

1
2
3
4
5
6<!DOCTYPE html>
7<html>
8  <head>
9    <title>
10      
11        
12          Take Action!
13        
14      
15    </title>
16    <meta property="og:site_name" content="Grow the Richmond">
17    <meta property="og:locale" content="en_US">
18    <meta property="og:title" name="title" content="Take Action!">
19    <meta property="og:description" name="description"
20          content="" />
21    <meta name="viewport" content="width=device-width, initial-scale=1">
22    
23    <link rel="shortcut icon" href="/static/core/images/yimby-action-no-text-green.svg" type="image/x-icon">
24    <link type="text/css" href="/static/css/app.23dc2ba477228d2194cd.30d24bb0202c.css" rel="stylesheet" />
25
26    <!-- Google Tag Manager -->
27    
27<script>
28      (function (w, d, s, l, i) {
29        w[l] = w[l] || []
30        w[l].push({
31          'gtm.start':
32            new Date().getTime(), event: 'gtm.js'
33        })
34        var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''
35        j.async = true
36        j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl
37        f.parentNode.insertBefore(j, f)
38      })(window, document, 'script', 'dataLayer', 'GTM-PBC9645')
39    </script>
39
40    <!-- End Google Tag Manager -->
41  </head>
42  <body class="min-h-screen bg-themeGray" id="body">
43    
44      
45    
46
47    
48      
49        
50
51
52
53
54
55
56
57
58  
59
60
61<script>
62  window.navbar = function () {
63    return {
64      open: false,
65      init () { },
66      openMenu () {
67        this.open = true
68        document.getElementById('body').style['overflow'] = 'hidden'
69      },
70      closeMenu () {
71        this.open = false
72        document.getElementById('body').style['overflow'] = 'scroll'
73      }
74    }
75  }
76</script>
76
77
78<div x-data="navbar()">
79  <header
80    id="header"
81    class="
82      
83        absolute top-0 z-40
84      
85      w-screen
86    "
87  >
88    <div class="flex items-center justify-stretch p-6">
89      <div class="flex-1 flex items-center justify-start space-x-4 ">
90        <a href="/" class="flex bg-indigo-500 rounded-md text-white">
91          <span class="sr-only">Grow the Richmond</span>
92
93          
94            
95
96
97
98
99  <img class="w-auto h-12 sm:h-16" src="https://d38cycikt2ca4e.cloudfront.net/images/white_horz.height-100.png" alt="Grow the Richmond">
100
101
102          
103        </a>
104
105        
106      </div>
107
108      <div class="hidden xl:flex items-center justify-center ">
109        
110          <nav class="flex gap-10">
111            
112  
113    
114      
115
116      <a
117  href="/upcoming-events/"
118  class="text-base font-medium text-white animate-underline-on-hover"
119>Upcoming Events</a>
120
121    
122  
123    
124      
125
126      <a
127  href="/in-the-media/"
128  class="text-base font-medium text-white animate-underline-on-hover"
129>In the Media</a>
130
131    
132  
133    
134      
135
136      <a
137  href="/take-action/"
138  class="text-base font-medium text-white animate-underline-on-hover"
139>Take Action!</a>
140
141    
142  
143
144          </nav>
145        
146      </div>
147
148      <div class="flex-1 hidden xl:flex items-center justify-end ">
149        
150          <div class="flex gap-4 relative">
151            
152              <div
153                class="flex items-center h-12 rounded-full shadow-sm ring-1 ring-inset ring-gray-300 overflow-visible"
154                x-data="{ open: false }"
155              >
156                <button
157                  type="button"
158                  class="
159                    flex
160                    items-center
161                    justify-center
162                    size-12
163                    bg-transparent
164                    border-2 border-white rounded-full
165                    text-white hover:text-teal-500
166                    focus:outline-none
167                    transition-colors
168                    duration-200
169                  "
170                  x-on:click="open = true; $nextTick(() => $refs.searchInput.focus())"
171                >
172                  <svg width="0.75em" height="0.75em" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" aria-hidden="true" class="size-5" xmlns="http://www.w3.org/2000/svg">
173    <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"/>
174</svg>
175
176                </button>
177
178                <form
179                  action="/search/"
180                  method="get"
181                  class="absolute overflow-hidden inset-0 right-[100%] focus-within:right-0 transition-all transition-500 ease-in-out"
182                  x-on:click.outside="open = false"
183                >
184                  <input
185                    type="search"
186                    name="query"
187                    autocomplete="off"
188                    class="w-full h-12 rounded-l-full rounded-r-full border-0 bg-white py-0 text-base leading-tight text-gray-900 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-teal-600 focus:outline-none"
189                    placeholder="Search the site..."
190                    aria-label="Search site"
191                    x-cloak
192                    x-ref="searchInput"
193                    x-on:keydown.escape="open = false"
194                    x-on:blur="open = false"
195                    x-on:keydown.enter.prevent="$event.target.form.submit()"
196                    x-on:click.stop
197                  />
198                </form>
199              </div>
200            
201
202            
203              
204<a href="/join" target="_blank">
205  <button type="submit" class="text-lg leading-none whitespace-nowrap font-semibold text-center px-2 border-2 rounded-full h-12 px-5 py-2.5 text-white border-white hover:transition hover:text-gray-900 hover:bg-white hover:border-white  " id="">
206        Join
207    </button>
208</a>
209
210
211            
212
213            
214              
215    
216<a href="?form=donate" id="sm-16806992058514868-1">
217    <button type="submit"
218            class="hover:brightness-90 hover:transition-all text-lg leading-none rounded-full bg-white h-12 px-8 py-2.5 text-center font-semibold  text-gray-900 "
219    >
220        Donate
221    </button>
222</a>
223
224
225
226            
227          </div>
228        
229      </div>
230
231      <div id="mobileMenuToggle" class="flex-1 flex justify-end items-center xl:hidden">
232        
233          <button
234            id="open-navbar"
235            type="button"
236            class="relative inline-flex items-center justify-center text-white"
237            aria-expanded="false"
238            x-on:click="openMenu()"
239          >
240            <span class="sr-only">Open menu</span>
241
242            <svg width="0.75em" height="0.75em" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" class="size-8" aria-hidden="true" xmlns="http://www.w3.org/2000/svg">
243    <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"/>
244</svg>
245
246
247            
248            <span class="absolute -inset-2"></span>
249          </button>
250        
251      </div>
252    </div>
253  </header>
254
255  <div
256    id="mobile-menu"
257    role="dialog"
258    aria-modal="true"
259    class="fixed inset-0 -translate-y-full data-[open=true]:translate-y-0 z-50  p-6 flex flex-col gap-6 bg-gray-900 overflow-auto transition-all duration-500"
260    x-bind:data-open="open ? 'true' : 'false'"
261    x-on:keydown.escape.prevent.stop="open = false"
262    x-id="['modal-title']"
263    :aria-labelledby="$id('modal-title')"
264  >
265    <div class="top-menu-content flex items-center justify-between">
266      <a href="/" class="flex bg-indigo-500 rounded-md text-slate-300 hover:text-white">
267        <span class="sr-only">Grow the Richmond</span>
268        
269          
270
271
272
273
274  <img class="w-auto h-12 sm:h-16" src="https://d38cycikt2ca4e.cloudfront.net/images/white_horz.height-100.png" alt="Grow the Richmond">
275
276
277        
278      </a>
279
280      <button
281        id="close-navbar"
282        type="button"
283        class="relative inline-flex items-center justify-center text-white"
284        aria-expanded="false"
285        x-on:click="closeMenu()"
286      >
287        <span class="sr-only">Close menu</span>
288
289        <svg width="0.75em" height="0.75em" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" class="size-8 p-1 stroke-2" xmlns="http://www.w3.org/2000/svg">
290    <path stroke-linecap="round" d="M4,4 20,20 M20,4 4,20"/>
291</svg>
292
293
294        
295        <span class="absolute -inset-2"></span>
296      </button>
297    </div>
298
299    <div class="footer-menu-content flex flex-col gap-6">
300      <div>
301        
302          <nav
303            class="flex flex-col mt-2 transition-all delay-500 duration-500 ease-in-out"
304            :class="open ? 'opacity-100' : 'opacity-0'"
305          >
306            
307  
308    
309      
310
311      <a
312  href="/upcoming-events/"
313  class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all"
314>Upcoming Events</a>
315
316    
317  
318    
319      
320
321      <a
322  href="/in-the-media/"
323  class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all"
324>In the Media</a>
325
326    
327  
328    
329      
330
331      <a
332  href="/take-action/"
333  class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all"
334>Take Action!</a>
335
336    
337  
338
339          </nav>
340        
341      </div>
342
343      <div class="flex flex-col gap-6">
344        
345          
346            <form action="/search/" method="get" class="relative">
347              <input
348                type="search" name="query" placeholder="Search the site..."
349                class="block w-full rounded-full border-0 bg-white py-3 pl-5 pr-14 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-teal-600 sm:text-lg sm:leading-8"
350                aria-label="Search site"
351                x-on:keydown.enter.prevent="$event.target.form.submit()"
352              >
353              <button
354                type="submit"
355                class="absolute inset-y-0 right-0 flex items-center pr-5 text-gray-500 hover:text-teal-600 transition-colors duration-200"
356                aria-label="Submit search"
357              >
358                <svg width="0.75em" height="0.75em" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" aria-hidden="true" class="size-6" xmlns="http://www.w3.org/2000/svg">
359    <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"/>
360</svg>
361
362              </button>
363            </form>
364          
365
366          <div class="action-buttons flex flex-row gap-4">
367            
368              
369    
370<a href="?form=donate" id="sm-16806992058514868-1">
371    <button type="submit"
372            class="hover:brightness-90 hover:transition-all text-lg leading-none rounded-full bg-white h-12 px-8 py-2.5 text-center font-semibold  text-gray-900 "
373    >
374        Donate
375    </button>
376</a>
377
378
379
380            
381
382            
383              
384<a href="/join" target="_blank">
385  <button type="submit" class="text-lg leading-none whitespace-nowrap font-semibold text-center px-2 border-2 rounded-full h-12 px-5 py-2.5 text-white border-white hover:transition hover:text-gray-900 hover:bg-white hover:border-white  " id="">
386        Join
387    </button>
388</a>
389
390
391            
392          </div>
393        
394      </div>
395    </div>
396  </div>
397</div>
398
399<script>
400    /* makes the header navigation disappear when the user scrolls down, and reappear temporarily when they scroll up */
401    var headerEventPrevScrollPosition = window.scrollY;
402    var headerEventDirection = 0;
403    var headerEventFixed = false;
404    var headerEventThreshold = screen.availHeight; // don't start fixing the scrollbar until the user has scrolled past one screen height
405    var headerEl = document.getElementById("header");
406
407    function fixHeader() {
408        headerEl.classList.add("fixed", "bg-gray-900", "-translate-y-32");
409        headerEl.classList.remove("absolute");
410    }
411
412    function unfixHeader() {
413        headerEl.classList.remove("fixed", "bg-gray-900", "-translate-y-32", "transition-transform");
414        headerEl.classList.add("absolute");
415    }
416
417    function showHeader() {
418        headerEl.classList.add("translate-y-0", "transition-transform")
419        headerEl.classList.remove("-translate-y-32")
420    }
421
422    function hideHeader() {
423        headerEl.classList.remove("translate-y-0")
424        headerEl.classList.add("-translate-y-32")
425    }
426
427    if (headerEl) {
428      document.addEventListener("scroll", (event) => {
429        if (window.scrollY > headerEventThreshold && !headerEventFixed) {
430          fixHeader();
431          headerEventFixed = true;
432        } else if (window.scrollY < headerEventThreshold && headerEventFixed) {
433          unfixHeader();
434          headerEventFixed = false;
435        }
436        if (headerEventPrevScrollPosition > window.scrollY) {
437          if (headerEventDirection != -1) {
438            showHeader();
439            headerEventDirection = -1;
440          }
441        } else if (window.scrollY > headerEventThreshold) {
442          if (headerEventDirection != 1) {
443            hideHeader();
444            headerEventDirection = 1;
445          }
446        }
447        headerEventPrevScrollPosition = window.scrollY;
448
449      });
450    }
451</script>
451
452
453
454
455
456      
457    
458
459    <div class="mx-auto min-h-screen z-0">
460      
461  
462    
463      
464
465
466
467<div class="hero pt-24 lg:pt-28 relative isolate overflow-hidden bg-gray-900 text-white ">
468  
469
470  <div class="absolute inset-x-0 top-[-10rem] sm:top-[-20rem] -z-10 transform-gpu overflow-hidden blur-3xl">
471  <svg
472    class="relative left-[calc(50%-11rem)] -z-10 h-[21.1875rem] max-w-none -translate-x-1/2 rotate-[30deg] sm:left-[calc(50%-30rem)] sm:h-[42.375rem]"
473    viewBox="0 0 1155 678"
474  >
475    <path fill="url(#45de2b6b-92d5-4d68-a6a0-9b9b2abad533)" fill-opacity=".2" d="M317.219 518.975L203.852 678 0 438.341l317.219 80.634 204.172-286.402c1.307 132.337 45.083 346.658 209.733 145.248C936.936 126.058 882.053-94.234 1031.02 41.331c119.18 108.451 130.68 295.337 121.53 375.223L855 299l21.173 362.054-558.954-142.079z" />
476    <defs>
477      <linearGradient id="45de2b6b-92d5-4d68-a6a0-9b9b2abad533" x1="1155.49" x2="-78.208" y1=".177" y2="474.645" gradientUnits="userSpaceOnUse">
478        <stop stop-color="#9089FC" />
479        <stop offset="1" stop-color="#FF80B5" />
480      </linearGradient>
481    </defs>
482  </svg>
483</div>
484<div class="absolute inset-x-0 top-[calc(100%-13rem)] sm:top-[calc(100%-30rem)] -z-10 transform-gpu overflow-hidden blur-3xl">
485  <svg
486    class="relative left-[calc(50%+3rem)] h-[21.1875rem] max-w-none -translate-x-1/2 sm:left-[calc(50%+36rem)] sm:h-[42.375rem]"
487    viewBox="0 0 1155 678"
488  >
489    <path fill="url(#ecb5b0c9-546c-4772-8c71-4d3f06d544bc)" fill-opacity=".2" d="M317.219 518.975L203.852 678 0 438.341l317.219 80.634 204.172-286.402c1.307 132.337 45.083 346.658 209.733 145.248C936.936 126.058 882.053-94.234 1031.02 41.331c119.18 108.451 130.68 295.337 121.53 375.223L855 299l21.173 362.054-558.954-142.079z"/>
490    <defs>
491      <linearGradient id="ecb5b0c9-546c-4772-8c71-4d3f06d544bc" x1="1155.49" x2="-78.208" y1=".177" y2="474.645" gradientUnits="userSpaceOnUse">
492        <stop stop-color="#9089FC"/>
493        <stop offset="1" stop-color="#FF80B5"/>
494      </linearGradient>
495    </defs>
496  </svg>
497</div>
498
499
500  
501    <img
502  src="/static/core/images/kids-playing-in-front-of-new-affordable-housing-complex.jpg"
503  class="
504    absolute
505    inset-0
506    -z-10
507    w-full
508    h-full
509    object-cover
510    
511      object-top
512    
513    brightness-50
514  "
515  alt=""
516>
517
518  
519
520  
521    <div class="px-6 lg:px-0 max-w-full md:max-w-[52.5rem] mx-auto">
522      <div class="py-16 lg:py-40 min-h-[33vh] flex flex-col justify-center  min-w-0 w-full">
523        
524          
525        
526
527        
528          <h1 class="sm:text-4xl md:text-6xl font-bold tracking-tight text-white leading-relaxed mb-10 break-words w-full">
529            Take Action!
530          </h1>
531        
532
533        
534          
535
536          
537
538          
539        
540      </div>
541    </div>
542  
543</div>
544
545    
546  
547  <div class="relative body-content ">
548    <div class="relative z-0 index-page">
549      
550
551  
552
553  <div id="action-list" class="calendar-section relative w-full bg-white">
554    <div class="calendar-container mx-auto max-w-7xl px-6 w-full py-20">
555      <div class="tab-content-container flex flex-col sm:flex-row mt-8 lg:mt-12">
556        
557
558        <div class="flex-1 ">
559          
560            <div class="action-list space-y-20 lg:space-y-20">
561              
562                
563                  
564
565
566
567<article class="relative isolate flex flex-col gap-8 lg:flex-row lg:min-h-full">
568  <div class="relative aspect-square overflow-hidden w-full sm:w-64 lg:w-80 flex items-center justify-center lg:h-auto lg:self-stretch ">
569    
570      <img alt="850_LaPlaya" class="absolute object-center object-cover h-full w-full" height="415" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-11-18_112926.max-750x750.png" width="697">
571    
572  </div>
573
574  <div class="flex-1 flex flex-col justify-between max-w-xl">
575    <div class="flex items-center gap-x-4 text-base">
576      <time class="text-gray-900">
577        
578      </time>
579    </div>
580
581    <div class="flex-1 group relative mt-3">
582      
583
584      <h3 class="text-xl font-bold leading-6 text-gray-900 group-hover:text-gray-600">
585        <a href="https://growtherichmond.com/take-action/support-new-homes-and-expanded-grocery-850laplaya/" >Support new homes and an expanded grocery store at 850 La Playa!</a>
586      </h3>
587
588      
589        <p class="mt-2 text-sm leading-6 text-gray-600">Sign the petition and say YES to more homes and an expanded grocery store in the Outer Richmond</p>
590      
591
592      
593        <a href="https://growtherichmond.com/take-action/support-new-homes-and-expanded-grocery-850laplaya/" >
594          <p class="mt-5 text-sm leading-6 text-gray-600 animate-underline-on-hover dark-underline">
595            Sign Petition
596            
597          </p>
598        </a>
599      
600    </div>
601  </div>
602</article>
603                
604              
605            </div>
606          
607        </div>
608      </div>
609    </div>
610  </div>
611  
612
613
614
615<div id="subscribe-block" class="bg-lime-300 p-6 lg:px-16 relative  transition-colors duration-500 ease-in-out">
616  <div class="padded-content mx-auto px-6 lg:px-0 max-w-[52.5rem] lg:max-w-[100%] relative z-10">
617    <div class="subscribe-section md:flex flex-wrap lg:flex-nowrap">
618      <div class="subscribe-left min-w-[20em] md:mr-4 lg:mr-8">
619
620        <h3 id="subscribe-title" class="text-4xl font-bold uppercase transform transition-all duration-500 ease-in-out">
621          
622            Subscribe
623          
624        </h3>
625
626        <p id="subscribe-subtitle" class="text-3xl pb-4 transform transition-all duration-500 ease-in-out">
627          
628            Learn about the pro-housing movement and how you can make housing more affordable near you!
629          
630        </p>
631
632        
633          <div id="subscribe-donate" class="hidden mb-4 transform transition-all duration-500 ease-in-out opacity-0 translate-y-2">
634            
635              
636<a href="/?form=donate" id="sm-16806992058514868-1">
637    <button type="submit"
638            class="hover:brightness-90 hover:transition-all text-lg leading-none rounded-full bg-teal-500 h-12 px-8 py-2.5 text-center font-semibold  text-white "
639    >
640        Donate
641    </button>
642</a>
643
644            
645          </div>
646        
647
648        <div class="flex space-x-4 ">
649  
650    
651      <a href="https://twitter.com/growtherichmond" target="_blank" class="">
652  <div class="bg-white w-10 h-10 rounded-full flex items-center justify-center hover:scale-110 transition-all">
653    <span class="sr-only">twitter</span>
654    <svg id="icon--twitter"
655     fill="rgb(54, 179, 168)"
656     
657     
658     viewBox="0 0 24 24"
659     class="h-6 w-6"
660     aria-hidden="true">
661  
662  <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84">
663  </path>
664</svg>
665
666  </div>
667</a>
668
669    
670    
671    
672      <a href="https://www.facebook.com/growtherichmond" target="_blank" class="">
673  <div class="bg-white w-10 h-10 rounded-full flex items-center justify-center hover:scale-110 transition-all">
674    <span class="sr-only">facebook</span>
675    <svg id="icon--facebook"
676     fill="rgb(54, 179, 168)"
677     
678     
679     viewBox="0 0 24 24"
680     class="h-6 w-6"
681     aria-hidden="true">
682  
683  <path fill-rule="evenodd" d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987
683h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z" clip-rule="evenodd">
684  </path>
685</svg>
686
687  </div>
688</a>
689
690    
691    
692    
693      <a href="https://bsky.app/profile/growtherichmond.bsky.social" target="_blank" class="">
694  <div class="bg-white w-10 h-10 rounded-full flex items-center justify-center hover:scale-110 transition-all">
695    <span class="sr-only">bluesky</span>
696    <svg id="icon--bluesky"
697     fill="rgb(54, 179, 168)"
698     
699     
700     viewBox="-5 -9 74 74"
701     class="h-6 w-6"
702     aria-hidden="true">
703  
704  <path fill-rule="evenodd" clip-rule="evenodd" d="M13.873 3.805C21.21 9.332 29.103 20.537 32 26.55v15.882c0-.338-.13.044-.41.867-1.512 4.456-7.418 21.847-20.923 7.944-7.111-7.32-3.819-14.64 9.125-16.85-7.405 1.264-15.73-.825-18.014-9.015C1.12 23.022 0 8.51 0 6.55 0-3.268 8.579-.182 13.873 3.805zm36.254 0C42.79 9.332 34.897 20.537 32 26.55v15.882c0-.338.13.044.41.867 1.512 4.456 7.418 21.847 20.923 7.944 7.111-7.32 3.819-14.64-9.125-16.85 7.405 1.264 15.73-.825 18.014-9.015C62.88 23.022 64 8.51 64 6.55c0-9.818-8.578-6.732-13.873-2.745z"/>
705</svg>
706
707  </div>
708</a>
709
710    
711  
712</div>
713      </div>
714
715      <div id="subscribe-form" class="mailing-list-form mt-12 transform transition-all duration-500 ease-in-out">
716      
717
718
719<form class="w-full lg:col-span-5 lg:pt-2 z-1"
720      onsubmit="event.preventDefault(); return formSubmit('/email_subscribe/', this, 'Thanks for subscribing!');"
721      name="Subscribe Form">
722      <input type="hidden" name="csrfmiddlewaretoken" value="7uY91Oifyd4nxtYy8CG3YyPNo9SGETHb9jKdcE8UyRp0Z6M0xlh3zeW6pWNlg4pv">
723       <div class="flex flex-wrap">
724              <input type="hidden"
725                     name="referrer_title"
726                     value="Grow the Richmond">
727              <label for="email-address" class="sr-only">Email address</label>
728              <input id="email-address"
729                     name="email"
730                     type="email"
731                     autocomplete="email"
732                     required
733                     class="mr-2 mb-2 min-w-[16em] flex-auto rounded-full border border-gray-900/10 h-12 px-6 py-2 text-lg leading-none text-gray-900 placeholder-gray-500 shadow-sm"
734                     placeholder="Email">
735              <label for="zip" class="sr-only">Zipcode</label>
736              <input id="zip"
737                     name="zipcode"
738                     type="number"
739                     required
740                     class="md:mt-0 min-w-[7em] md:mt-0 mb-2 mr-4 min-w-0 w-[8em] flex-auto rounded-full border border-gray-900/10 px-6 h-12 py-2 text-lg leading-none text-gray-900 placeholder-gray-500 shadow-sm"
741                     placeholder="Zipcode">
742              <div class="g-recaptcha hidden" data-sitekey="6LcH1-0nAAAAAGU4GZ8xvmRw9fxiZhJr8uJP-cZV"></div>
743              
744<a href="" id="">
745    <button type="submit"
746            class="hover:brightness-90 hover:transition-all text-lg leading-none rounded-full bg-teal-500 h-12 px-8 py-2.5 text-center font-semibold  text-white "
747    >
748        Subscribe
749    </button>
750</a>
751
752       </div>
753</form>
754      </div>
755    </div>
756    <p class="text-xl pt-6 pb-4 border-t-1 border-sky">Have a housing proposal that needs our support? <a class="underline" href="/projectsupport">Tell us about it!</a></p>
757  </div>
758</div>
759<script type="text/javascript" src="/static/js/runtime.6d35197a.570e63a74845.js" ></script>
vendor: 1 bytes, line 759
759
760<script type="text/javascript" src="/static/js/subscriptionForm.4f45702a.ffd44a7c4303.js" ></script>
760
761
762
763    </div>
764    
765  </div>
766
767    </div>
768
769    
769<script type="text/javascript" src="/static/js/runtime.6d35197a.570e63a74845.js" ></script>
vendor: 1 bytes, line 769
769
770<script type="text/javascript" src="/static/js/759.5cffa57f.89b59a060036.js" ></script>
vendor: 1 bytes, line 770
770
771<script type="text/javascript" src="/static/js/app.426d8e0d.42e0e88a16ff.js" ></script>
771
772
773    
774      
775        
776
777
778<footer class="bg-gray-900 relative z-10" aria-labelledby="footer-heading">
779  <h2 id="footer-heading" class="sr-only">Footer</h2>
780  
781    
782    
783    <div class="mx-auto px-6 lg:px-20 pb-8 pt-20 sm:pt-24 md:px-12 lg:pt-16">
784      <div class="flex items-center">
785        <a href="/" class="flex bg-indigo-500 rounded-md">
786          
787          <img class="h-12 w-auto sm:h-16 mr-4" src="https://d38cycikt2ca4e.cloudfront.net/images/white_horz.height-100.png" alt="Grow the Richmond">
788          
789        </a>
790        <div class="uppercase prose text-white-important font-bold">
791          <a href="/" class="no-underline">Grow the Richmond</a>
792        </div>
793      </div>
794      <h4 class="font-semibold text-white text-lg mt-6">
795        We're a part of the nation-wide <a class="underline" href="https://yimbyaction.org">YIMBY movement</a>.
796      </h4>
797      
798        <p class="text-white mt-2">
799          Contact us at <a class="underline"
800    href="mailto:[email protected]">[email protected]</a>.
801        </p>
802      
803      <div class="xl:grid xl:grid-cols-3 xl:gap-8 pt-12">
804        <div class="grid grid-cols-3 gap-8 xl:col-span-full">
805          <div>
806            <h3 class="font-semibold text-white">Resources</h3>
807            <ul role="list" class="space-y-2 ">
808              <li>
809                <a href="/projectsupport"
810                   class="leading-6 text-gray-300 hover:text-white">Request Support for Housing Proposal</a>
811              </li>
812            </ul>
813          </div>
814        </div>
815      </div>
816      <div class="max-w-xl mt-12">
817        <div class="columns-3 gap-8">
818          <ul>
819            
820              
821            
822              
823            
824              
825            
826          </ul>
827        </div>
828      </div>
829      <div class="mt-16 border-t border-white/10 pt-8 sm:mt-20 md:flex md:items-center md:justify-between lg:mt-24">
830        <div class="flex space-x-6 md:order-2">
831          
832            <a href="https://www.facebook.com/growtherichmond"
833               target="_blank"
834               class="text-gray-500 hover:text-gray-400">
835              <span class="sr-only">Facebook</span>
836              <svg class="h-6 w-6"
837                   fill="currentColor"
838                   viewBox="0 0 24 24"
839                   aria-hidden="true">
840                <path fill-rule="evenodd" d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z" clip-rule="evenodd" />
841              </svg>
842            </a>
843          
844          
845          
846            <a href="https://twitter.com/growtherichmond"
847               target="_blank"
848               class="text-gray-500 hover:text-gray-400">
849              <span class="sr-only">Twitter</span>
850              <svg class="h-6 w-6"
851                   fill="currentColor"
852                   viewBox="0 0 24 24"
853                   aria-hidden="true">
854                <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
855              </svg>
856            </a>
857          
858          
859          
860            <a href="https://bsky.app/profile/growtherichmond.bsky.social"
861                target="_blank"
862                class="text-gray-500 hover:text-gray-400">
863              <span class="sr-only">Bluesky</span>
864              <svg class="h-6 w-6"
865                  fill="currentColor"
866                  viewBox="0 0 24 24"
867                  aria-hidden="true">
868                <path fill-rule="evenodd" clip-rule="evenodd" d="M6.92 2C4.12 2 2 4.42 2 7.44c0 1.47.6 2.78 1.57 3.73C2.6 12.12 2 13.43 2 14.9 2 17.92 4.12 20.34 6.92 20.34c1.47 0 2.78-.6 3.73-1.57.95.97 2.26 1.57 3.73 1.57 2.8 0 4.92-2.42 4.92-5.44 0-1.47-.6-2.78-1.57-3.73.97-.95 1.57-2.26 1.57-3.73C22 4.42 19.88 2 17.08 2c-1.47 0-2.78.6-3.73 1.57C11.7 2.6 10.39 2 8.92 2H6.92z" />
869              </svg>
870            </a>
871          
872        </div>
873        <p class="mt-8 text-xs leading-5 text-gray-400 md:order-1 md:mt-0">
874          Grow the Richmond is a chapter of
875          YIMBY Action (EIN 81-514-0915), a 501(c)(4) nonprofit organization.
876        </p>
877      </div>
878    </div>
879  
880</footer>
881
882      
883    
884
885    
886
887    
888      <!-- Fundraise Up: the new standard for online giving -->
889      
889<script>
890        (function (w, d, s, n, a) {
891          if (!w[n]) {
892            var l = 'call,catch,on,once,set,then,track'
893              .split(','),
894              i, o = function (n) {
895                return 'function' == typeof n ? o.l.push([arguments]) && o :
896                  function () {
897                    return o.l.push([n, arguments]) && o
898                  }
899              },
900              t = d.getElementsByTagName(s)[0],
901              j = d.createElement(s)
902            j.async = !0
903            j.src = 'https://cdn.fundraiseup.com/widget/' + a
904            t.parentNode.insertBefore(j, t)
905            o.s = Date.now()
906            o.v = 4
907            o.h = w.location.href
908            o.l = []
909            for (i = 0; i < 7; i++) o[l[i]] = o(l[i])
910            w[n] = o
911          }
912        })(window, document, 'script', 'FundraiseUp', 'AQUMVBBW')
913      </script>
913
914      <!-- End Fundraise Up -->
915      
915<script>
916          const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
917
918          async function animateSubscribeSuccess() {
919              const block = document.getElementById('subscribe-block');
920              const title = document.getElementById('subscribe-title');
921              const subtitle = document.getElementById('subscribe-subtitle');
922              const form = document.getElementById('subscribe-form');
923              const donate = document.getElementById('subscribe-donate');
924              if (donate) {
925                  donate.classList.remove('hidden');
926              }
927
928              if (block) {
929                  block.style.height = block.offsetHeight + 'px';
930              }
931
932              const staggerTime = 100; // Time between each element
933              const animationDuration = 500;
934
935              if (block && title && subtitle && form && donate) {
936
937                  // Fade out
938                  title.classList.add('opacity-0', '-translate-y-2');
939                  await sleep(staggerTime);
940                  subtitle.classList.add('opacity-0', '-translate-y-2');
941                  await sleep(staggerTime);
942
943                  form.remove();
944                  await sleep(animationDuration);
945
946                  // Change content
947                  block.classList.remove('bg-gradient-to-t', 'from-lime-300', 'to-sky', 'bg-lime-300');
948                  block.classList.add('bg-[#A7F3D0]');
949
950                  title.textContent = "Thanks for subscribing! Support our work";
951                  subtitle.textContent = "How your donation supports our ongoing work";
952
953                  title.classList.remove('-translate-y-2');
954                  subtitle.classList.remove('-translate-y-2');
955
956                  // Prepare fade in
957                  title.classList.add('opacity-0', 'translate-y-2');
958                  subtitle.classList.add('opacity-0', 'translate-y-2');
959                  await sleep(50);
960
961                  block.style.height = '';
962
963                  // Fade in
964                  title.classList.remove('opacity-0', 'translate-y-2');
965                  await sleep(staggerTime);
966                  subtitle.classList.remove('opacity-0', 'translate-y-2');
967                  await sleep(staggerTime);
968
969                  donate.classList.remove('opacity-0', 'translate-y-2');
970              } else if (block) {
971                  block.style.height = '';
972              }
973          }
974
975          window.formSubmit = async function(webhookUrl, element, successText) {
976              var formData = new FormData(element);
977              var request = new XMLHttpRequest();
978              request.open("POST", webhookUrl);
979
980              try {
981                  request.send(formData);
982                  try {
983                      await animateSubscribeSuccess();
984                  } catch (animationError) {
985                      console.error("Animation error:", animationError);
986                  }
987              } catch (e) {
988                  element.innerHTML = "<div><span class='text-4xl font-bold tracking-tight block italic'>Something went wrong.<span></div>";
989              }
990
991              return false;
992          }
993
994          var forms = document.getElementsByTagName("form");
995          for (var i = 0; i < forms.length; i++) {
996              forms[i].onkeydown = function(e) {
997                  // Allow forms with the 'allow-enter-submit' class to use 'Enter'
998                  if (this.classList.contains('allow-enter-submit')) {
999                      return true;
1000                  }
1001
1002                  var key = e.charCode || e.keyCode || 0;
1003                  if (key == 13) {
1004                      e.preventDefault();
1005                  }
1006              }
1007          }
1008      </script>
1008
1009
1010      <!-- Google tag (gtag.js) -->
vendor: 70 bytes, lines 1010-1011
1010
1011      <script async src="https://www.googletagmanager.com/gtag/js?id=
1011G-MK77V04MG5
vendor: 18 bytes, lines 1011-1012
1011"></script>
1012      
1012<script>
1013          
vendor: 186 bytes, lines 1013-1020
1013window.dataLayer = window.dataLayer || [];
1014
1015          function gtag() {
1016              dataLayer.push(arguments);
1017          }
1018          gtag('js', new Date());
1019
1020          gtag('config', '
1020G-MK77V04MG5
vendor: 10 bytes, lines 1020-1021
1020');
1021      
1021</script>
1021
1022
1023      <!-- recaptcha -->
vendor: 90 bytes, lines 1023-1026
1023
1024      <script src="https://www.google.com/recaptcha/api.js" async defer></script>
1025
1026      
1026<!-- linkedin ad conversion tracking -->
1027      
1027<script type="text/javascript">
1028        _linkedin_partner_id = "7396380";
1029        window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
1030        window._linkedin_data_partner_ids.push(_linkedin_partner_id);
1031      </script>
1031
1032      
1032<script type="text/javascript">
1033        (function(l) {
1034        if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])};
1035        window.lintrk.q=[]}
1036        var s = document.getElementsByTagName("script")[0];
1037        var b = document.createElement("script");
1038        b.type = "text/javascript";
1039        b.async = true;
1040        b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
1041        s.parentNode.insertBefore(b, s);})(window.lintrk);
1042      </script>
1042
1043      <noscript>
1044        <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=7396380&fmt=gif" />
1045      </noscript>
1046    
1047  </body>
1048</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.