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.