1 2 3 4 5 6<!DOCTYPE html> 7<html> 8 <head> 9 <title> 10 11 12 In The News 13 14 15 </title> 16 <meta property="og:site_name" content="San Francisco YIMBY"> 17 <meta property="og:locale" content="en_US"> 18 <meta property="og:title" name="title" content="In The News"> 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">San Francisco YIMBY</span> 92 93 94 95 96 97 98 99 <img class="w-auto h-12 sm:h-16" src="https://d38cycikt2ca4e.cloudfront.net/images/SF_YIMBY_W_1.height-100.png" alt="San Francisco YIMBY"> 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="/blog/" 118 class="text-base font-medium text-white animate-underline-on-hover" 119>Blog</a> 120 121 122 123 124 125 126 <a 127 href="/endorsements/" 128 class="text-base font-medium text-white animate-underline-on-hover" 129>Endorsements</a> 130 131 132 133 134 135 136 <a 137 href="/events/" 138 class="text-base font-medium text-white animate-underline-on-hover" 139>Events</a> 140 141 142 143 144 145 146 <a 147 href="/resources/" 148 class="text-base font-medium text-white animate-underline-on-hover" 149>Resources</a> 150 151 152 153 154 155 156 <a 157 href="/our-platform/" 158 class="text-base font-medium text-white animate-underline-on-hover" 159>Platform</a> 160 161 162 163 164 165 166 <a 167 href="/sf-yimby-in-the-news/" 168 class="text-base font-medium text-white animate-underline-on-hover" 169>In The News</a> 170 171 172 173 174 </nav> 175 176 </div> 177 178 <div class="flex-1 hidden xl:flex items-center justify-end "> 179 180 <div class="flex gap-4 relative"> 181 182 <div 183 class="flex items-center h-12 rounded-full shadow-sm ring-1 ring-inset ring-gray-300 overflow-visible" 184 x-data="{ open: false }" 185 > 186 <button 187 type="button" 188 class=" 189 flex 190 items-center 191 justify-center 192 size-12 193 bg-transparent 194 border-2 border-white rounded-full 195 text-white hover:text-teal-500 196 focus:outline-none 197 transition-colors 198 duration-200 199 " 200 x-on:click="open = true; $nextTick(() => $refs.searchInput.focus())" 201 > 202 <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"> 203 <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"/> 204</svg> 205 206 </button> 207 208 <form 209 action="/search/" 210 method="get" 211 class="absolute overflow-hidden inset-0 right-[100%] focus-within:right-0 transition-all transition-500 ease-in-out" 212 x-on:click.outside="open = false" 213 > 214 <input 215 type="search" 216 name="query" 217 autocomplete="off" 218 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" 219 placeholder="Search the site..." 220 aria-label="Search site" 221 x-cloak 222 x-ref="searchInput" 223 x-on:keydown.escape="open = false" 224 x-on:blur="open = false" 225 x-on:keydown.enter.prevent="$event.target.form.submit()" 226 x-on:click.stop 227 /> 228 </form> 229 </div> 230 231 232 233 234<a href="/join" target="_blank"> 235 <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=""> 236 Join 237 </button> 238</a> 239 240 241 242 243 244 245 246<a href="?form=donate" id="sm-16806992058514868-1"> 247 <button type="submit" 248 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 " 249 > 250 Donate 251 </button> 252</a> 253 254 255 256 257 </div> 258 259 </div> 260 261 <div id="mobileMenuToggle" class="flex-1 flex justify-end items-center xl:hidden"> 262 263 <button 264 id="open-navbar" 265 type="button" 266 class="relative inline-flex items-center justify-center text-white" 267 aria-expanded="false" 268 x-on:click="openMenu()" 269 >
270 <span class="sr-only">Open menu</span> 271 272 <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"> 273 <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"/> 274</svg> 275 276 277 278 <span class="absolute -inset-2"></span> 279 </button> 280 281 </div> 282 </div> 283 </header> 284 285 <div 286 id="mobile-menu" 287 role="dialog" 288 aria-modal="true" 289 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" 290 x-bind:data-open="open ? 'true' : 'false'" 291 x-on:keydown.escape.prevent.stop="open = false" 292 x-id="['modal-title']" 293 :aria-labelledby="$id('modal-title')" 294 > 295 <div class="top-menu-content flex items-center justify-between"> 296 <a href="/" class="flex bg-indigo-500 rounded-md text-slate-300 hover:text-white"> 297 <span class="sr-only">San Francisco YIMBY</span> 298 299 300 301 302 303 304 <img class="w-auto h-12 sm:h-16" src="https://d38cycikt2ca4e.cloudfront.net/images/SF_YIMBY_W_1.height-100.png" alt="San Francisco YIMBY"> 305 306 307 308 </a> 309 310 <button 311 id="close-navbar" 312 type="button" 313 class="relative inline-flex items-center justify-center text-white" 314 aria-expanded="false" 315 x-on:click="closeMenu()" 316 > 317 <span class="sr-only">Close menu</span> 318 319 <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"> 320 <path stroke-linecap="round" d="M4,4 20,20 M20,4 4,20"/> 321</svg> 322 323 324 325 <span class="absolute -inset-2"></span> 326 </button> 327 </div> 328 329 <div class="footer-menu-content flex flex-col gap-6"> 330 <div> 331 332 <nav 333 class="flex flex-col mt-2 transition-all delay-500 duration-500 ease-in-out" 334 :class="open ? 'opacity-100' : 'opacity-0'" 335 > 336 337 338 339 340 341 <a 342 href="/blog/" 343 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 344>Blog</a> 345 346 347 348 349 350 351 <a 352 href="/endorsements/" 353 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 354>Endorsements</a> 355 356 357 358 359 360 361 <a 362 href="/events/" 363 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 364>Events</a> 365 366 367 368 369 370 371 <a 372 href="/resources/" 373 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 374>Resources</a> 375 376 377 378 379 380 381 <a 382 href="/our-platform/" 383 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 384>Platform</a> 385 386 387 388 389 390 391 <a 392 href="/sf-yimby-in-the-news/" 393 class="py-3 text-2xl leading-none font-medium text-slate-300 hover:text-white transition-all" 394>In The News</a> 395 396 397 398 399 </nav> 400 401 </div> 402 403 <div class="flex flex-col gap-6"> 404 405 406 <form action="/search/" method="get" class="relative"> 407 <input 408 type="search" name="query" placeholder="Search the site..." 409 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" 410 aria-label="Search site" 411 x-on:keydown.enter.prevent="$event.target.form.submit()" 412 > 413 <button 414 type="submit" 415 class="absolute inset-y-0 right-0 flex items-center pr-5 text-gray-500 hover:text-teal-600 transition-colors duration-200" 416 aria-label="Submit search" 417 > 418 <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"> 419 <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"/> 420</svg> 421 422 </button> 423 </form> 424 425 426 <div class="action-buttons flex flex-row gap-4"> 427 428 429 430<a href="?form=donate" id="sm-16806992058514868-1"> 431 <button type="submit" 432 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 " 433 > 434 Donate 435 </button> 436</a> 437 438 439 440 441 442 443 444<a href="/join" target="_blank"> 445 <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=""> 446 Join 447 </button> 448</a> 449 450 451 452 </div> 453 454 </div> 455 </div> 456 </div> 457</div> 458
459<script> 460 /* makes the header navigation disappear when the user scrolls down, and reappear temporarily when they scroll up */ 461 var headerEventPrevScrollPosition = window.scrollY; 462 var headerEventDirection = 0; 463 var headerEventFixed = false; 464 var headerEventThreshold = screen.availHeight; // don't start fixing the scrollbar until the user has scrolled past one screen height 465 var headerEl = document.getElementById("header"); 466 467 function fixHeader() { 468 headerEl.classList.add("fixed", "bg-gray-900", "-translate-y-32"); 469 headerEl.classList.remove("absolute"); 470 } 471 472 function unfixHeader() { 473 headerEl.classList.remove("fixed", "bg-gray-900", "-translate-y-32", "transition-transform"); 474 headerEl.classList.add("absolute"); 475 } 476 477 function showHeader() { 478 headerEl.classList.add("translate-y-0", "transition-transform") 479 headerEl.classList.remove("-translate-y-32") 480 } 481 482 function hideHeader() { 483 headerEl.classList.remove("translate-y-0") 484 headerEl.classList.add("-translate-y-32") 485 } 486 487 if (headerEl) { 488 document.addEventListener("scroll", (event) => { 489 if (window.scrollY > headerEventThreshold && !headerEventFixed) { 490 fixHeader(); 491 headerEventFixed = true; 492 } else if (window.scrollY < headerEventThreshold && headerEventFixed) { 493 unfixHeader(); 494 headerEventFixed = false; 495 } 496 if (headerEventPrevScrollPosition > window.scrollY) { 497 if (headerEventDirection != -1) { 498 showHeader(); 499 headerEventDirection = -1; 500 } 501 } else if (window.scrollY > headerEventThreshold) { 502 if (headerEventDirection != 1) { 503 hideHeader(); 504 headerEventDirection = 1; 505 } 506 } 507 headerEventPrevScrollPosition = window.scrollY; 508 509 }); 510 } 511</script>
511 512 513 514 515 516 517 518 519 <div class="mx-auto min-h-screen z-0"> 520 521 522 523 524 525 526 527<div class="hero pt-24 lg:pt-28 relative isolate overflow-hidden bg-gray-900 text-white "> 528 529 530 <div class="absolute inset-x-0 top-[-10rem] sm:top-[-20rem] -z-10 transform-gpu overflow-hidden blur-3xl"> 531 <svg 532 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]" 533 viewBox="0 0 1155 678" 534 > 535 <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" /> 536 <defs> 537 <linearGradient id="45de2b6b-92d5-4d68-a6a0-9b9b2abad533" x1="1155.49" x2="-78.208" y1=".177" y2="474.645" gradientUnits="userSpaceOnUse"> 538 <stop stop-color="#9089FC" /> 539 <stop offset="1" stop-color="#FF80B5" /> 540 </linearGradient> 541 </defs> 542 </svg> 543</div> 544<div class="absolute inset-x-0 top-[calc(100%-13rem)] sm:top-[calc(100%-30rem)] -z-10 transform-gpu overflow-hidden blur-3xl"> 545 <svg 546 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]" 547 viewBox="0 0 1155 678" 548 > 549 <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"/> 550 <defs> 551 <linearGradient id="ecb5b0c9-546c-4772-8c71-4d3f06d544bc" x1="1155.49" x2="-78.208" y1=".177" y2="474.645" gradientUnits="userSpaceOnUse"> 552 <stop stop-color="#9089FC"/> 553 <stop offset="1" stop-color="#FF80B5"/> 554 </linearGradient> 555 </defs> 556 </svg> 557</div> 558 559 560 561 562 <img 563 src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2023-10-20_at_10.38.47_AM.width-1600.png" 564 class=" 565 absolute 566 inset-0 567 -z-10 568 w-full 569 h-full 570 object-cover 571 572 brightness-50 573 " 574 alt="" 575> 576 577 578 579 580 <div class="px-6 lg:px-0 max-w-full md:max-w-[52.5rem] mx-auto"> 581 <div class="py-16 lg:py-40 min-h-[33vh] flex flex-col justify-center min-w-0 w-full"> 582 583 584 585 586 587 <h1 class="sm:text-4xl md:text-6xl font-bold tracking-tight text-white leading-relaxed mb-10 break-words w-full"> 588 In The News 589 </h1> 590 591 592 593 594 <h2 class="leading-normal text-2xl text-white-important normal-case mt-6 min-w-0 max-w-prose break-words w-full"> 595 All the SF YIMBY news that's fit to print 596 </h2> 597 598 599 600 601 602 603 </div> 604 </div> 605 606</div> 607 608 609 610 <div class="relative body-content "> 611 <div class="relative z-0 index-page"> 612 613 <div class="bg-gray-100 pb-16 relative"> 614 <div class="mx-auto max-w-[52.5rem] px-6 lg:px-0 relative z-5"> 615 616 <div class="mx-auto"> 617 <div class="flex flex-wrap my-12 content-center"> 618 619 620<section class="bg-white py-6 w-full sm:py-6 mt-10"> 621 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 622 <div class="flex-grow"> 623 <div class="text-base"> 624 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 625 <a href="https://www.sfchronicle.com/opinion/article/daniel-lurie-san-francisco-zoning-map-20257146.php">Daniel Lurieâs new housing rezoning map is a winner. Letâs make sure it stays that way</a> 626 </h2> 627 <div class="mt-1 text-gray-500"> 628 San Francisco Chronicle ⢠April 5, 2025 629 </div> 630 </div> 631 632 633 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 634 <p>âRezoning is not just a bureaucratic exercise,â Lurie told the editorial board. âItâs about making San Francisco an inclusive city with thriving neighborhoods where future generations can afford to live.â</p> 635 </blockquote> 636 637 </div> 638 639 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 640 <img alt="Screenshot 2025-04-07 at 11.59.50â¯AM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-07_at_11.59.50A.2e16d0ba.fill-500x500.png" width="500"> 641 </div> 642 643 </div> 644</section> 645 646 647 648<section class="bg-white py-6 w-full sm:py-6 mt-10"> 649 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 650 <div class="flex-grow"> 651 <div class="text-base"> 652 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 653 <a href="https://www.sfchronicle.com/sf/article/lurie-housing-rezoning-plan-20255343.php">Mayor Lurieâs âfamily zoningâ plan could reshape S.F. neighborhoods, add 36,000 new homes</a> 654 </h2> 655 <div class="mt-1 text-gray-500"> 656 San Francisco Chronicle ⢠April 3, 2025 657 </div> 658 </div> 659 660 661 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 662 <p>The latest proposal â Lurie calls it âfamily zoningâ rather than âupzoningâ â focuses on âhigh resourceâ parts of the city that have typically resisted change and have seen few housing units added since the 1960s.</p> 663 </blockquote> 664 665 </div> 666 667 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 668 <img alt="Screenshot 2025-04-04 at 3.04.36â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-04_at_3.04.36PM.2e16d0ba.fill-500x500.png" width="500"> 669 </div> 670 671 </div> 672</section> 673 674 675 676<section class="bg-white py-6 w-full sm:py-6 mt-10"> 677 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 678 <div class="flex-grow"> 679 <div class="text-base"> 680 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 681 <a href="https://www.sfexaminer.com/news/housing/sf-upzoning-map-focuses-housing-density-in-west-and-north/article_18b02b00-851e-469a-9cc8-099fa3ec7c5e.html">Thereâs a new proposal to upzone SF and YIMBYs love it</a> 682 </h2> 683 <div class="mt-1 text-gray-500"> 684 San Francisco Examiner ⢠April 3, 2025 685 </div> 686 </div> 687 688 689 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 690 <p>San Francisco planning officials have released a new draft zoning map that lays the battle lines for The Cityâs next round of housing fights.</p> 691 </blockquote> 692 693 </div> 694 695 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 696 <img alt="sf-skyline-painted-ladies" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-04_at_2.51.35PM.2e16d0ba.fill-500x500.png" width="500"> 697 </div> 698 699 </div> 700</section> 701 702 703 704<section class="bg-white py-6 w-full sm:py-6 mt-10"> 705 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 706 <div class="flex-grow"> 707 <div class="text-base"> 708 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 709 <a href="https://therealdeal.com/san-francisco/2025/03/05/yimbys-press-lurie-on-sf-zoning/">YIMBYs press Lurie on SF zoning</a> 710 </h2> 711 <div class="mt-1 text-gray-500"> 712 The Real Deal ⢠March 5, 2025 713 </div> 714 </div> 715 716 717 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 718 <p>The pro-development, yes-in-my-backyard folks are advocating for the Levi Strauss heir to urge home building ahead of an updated state-mandated rezoning plan for more than 82,000 homes by 2031</p> 719 </blockquote> 720 721 </div> 722 723 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 724 <img alt="Screenshot 2025-04-04 at 3.08.09â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-04_at_3.08.09PM.2e16d0ba.fill-500x500.png" width="500"> 725 </div> 726 727 </div> 728</section> 729 730 731 732<section class="bg-white py-6 w-full sm:py-6 mt-10"> 733 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 734 <div class="flex-grow"> 735 <div class="text-base"> 736 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 737 <a href="https://www.sfchronicle.com/sf/article/north-beach-historic-district-20136630.php">Plan to turn this S.F. neighborhood into a historic district is sparking conflict: âAbsolutely abusiveâ</a> 738 </h2> 739 <div class="mt-1 text-gray-500"> 740 San Francisco Chronicle ⢠Feb. 5, 2025 741 </div> 742 </div> 743 744 745 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 746 <p>Housing activists say making the neighborhood a historic district will hamper the ability to build more housing there at a time when San Francisco needs to permit 82,000 homes over eight years. So far itâs approved only a fraction of that state mandate.</p> 747 </blockquote> 748 749 </div> 750 751 </div> 752</section> 753 754 755 756<section class="bg-white py-6 w-full sm:py-6 mt-10"> 757 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 758 <div class="flex-grow"> 759 <div class="text-base"> 760 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 761 <a href="https://sfstandard.com/opinion/2025/02/03/sf-nimbys-abuse-this-law-to-block-development/">For just $763, you can make a lot sit empty for 5 years!</a> 762 </h2> 763 <div class="mt-1 text-gray-500"> 764 The San Francisco Standard ⢠Feb. 3, 2025 765 </div> 766 </div> 767 768 769 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 770 <p>San Franciscans are tired of delays, inaction, and obstructionism â especially when that obstructionism helps create a food desert in the heart of our city. To bring both housing and essential retail services to the city, we need to get out of our own way.</p> 771 </blockquote> 772 773 </div> 774 775 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 776 <img alt="Screenshot 2025-04-07 at 12.10.12â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-07_at_12.10.12P.2e16d0ba.fill-500x500.png" width="500"> 777 </div> 778 779 </div> 780</section> 781 782 783 784<section class="bg-white py-6 w-full sm:py-6 mt-10"> 785 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 786 <div class="flex-grow"> 787 <div class="text-base"> 788 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 789 <a href="https://sfstandard.com/2024/07/01/san-francisco-housing-permit-sb423-development/">YIMBY dreams come true as state bill eliminates housing red tape</a> 790 </h2> 791 <div class="mt-1 text-gray-500"> 792 The San Francisco Standard ⢠July 1, 2024 793 </div> 794 </div> 795 796 797 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 798 <p>The new rules are a major win for the cityâs YIMBYs, who have complained for years about the bureaucratic barriers in getting projects through the arduous permitting process, which can include additional review by critics of a particular project, a mechanism known as discretionary review.</p> 799 </blockquote> 800 801 </div> 802 803 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 804 <img alt="Screenshot 2025-04-07 at 12.14.10â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-07_at_12.14.10P.2e16d0ba.fill-500x500.png" width="500"> 805 </div> 806 807 </div> 808</section> 809 810 811 812<section class="bg-white py-6 w-full sm:py-6 mt-10"> 813 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 814 <div class="flex-grow"> 815 <div class="text-base"> 816 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 817 <a href="https://www.sfexaminer.com/news/politics/sf-yimby-coalition-
817power-grows-ahead-of-november-election/article_c6e855b4-3417-11ef-ac4f-67fd0dd1c80c.html">SF YIMBYs hope to win big in November as political influence grows</a> 818 </h2> 819 <div class="mt-1 text-gray-500"> 820 San Francisco Examiner ⢠June 30, 2024 821 </div> 822 </div> 823 824 825 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 826 <p>âThis might be the first cycle that I really remember where we have a variety of races where we have multiple candidates that are giving good, strong YIMBY talking points about the need for more housingâ</p> 827 </blockquote> 828 829 </div> 830 831 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 832 <img alt="Screenshot 2025-04-07 at 12.15.16â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-07_at_12.15.16P.2e16d0ba.fill-500x500.png" width="500"> 833 </div> 834 835 </div> 836</section> 837 838 839 840<section class="bg-white py-6 w-full sm:py-6 mt-10"> 841 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 842 <div class="flex-grow"> 843 <div class="text-base"> 844 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 845 <a href="https://sfstandard.com/opinion/2024/03/06/san-francisco-nimbys-block-housing/">NIMBYs still block housing in San Francisco. Theyâve just updated their language</a> 846 </h2> 847 <div class="mt-1 text-gray-500"> 848 The San Francisco Standard ⢠March 6, 2024 849 </div> 850 </div> 851 852 853 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 854 <p>Itâs time to stop giving credulity to people who reflexively say no to all new housing. The fact is they donât want new housing in San Francisco. They want to throw up a giant âno vacancyâ sign atop Telegraph Hill, and let everyone scramble for whatever houses remain.</p> 855 </blockquote> 856 857 </div> 858 859 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 860 <img alt="Screenshot 2025-04-07 at 12.22.13â¯PM" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/Screenshot_2025-04-07_at_12.22.13P.2e16d0ba.fill-500x500.png" width="500"> 861 </div> 862 863 </div> 864</section> 865 866 867 868<section class="bg-white py-6 w-full sm:py-6 mt-10"> 869 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 870 <div class="flex-grow"> 871 <div class="text-base"> 872 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 873 <a href="https://www.ebar.com/story.php?ch=opinion&sc=guest_opinion&id=330789">Guest Opinion: San Francisco needs more housing</a> 874 </h2> 875 <div class="mt-1 text-gray-500"> 876 The Bay Area Reporter ⢠Jan. 10, 2024 877 </div> 878 </div> 879 880 881 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 882 <p>San Francisco has a notoriously difficult permitting process exacerbated by NIMBYs (not in my backyard), and bans on apartments and triplexes prevents any homes from being added. Consequently, very little, if anything, gets built.</p> 883 </blockquote> 884 885 </div> 886 887 </div> 888</section> 889 890 891 892<section class="bg-white py-6 w-full sm:py-6 mt-10"> 893 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 894 <div class="flex-grow"> 895 <div class="text-base"> 896 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 897 <a href="https://fortune.com/2023/10/26/california-san-francisco-war-housing-policy-affluent-nimbys/">San Franciscoâs âaffluent NIMBYsâ arenât only breaking the law, theyâre responsible for Californiaâs housing crisis, state claims</a> 898 </h2> 899 <div class="mt-1 text-gray-500"> 900 Fortune ⢠Oct. 26, 2023 901 </div> 902 </div> 903 904 905 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 906 <p>âFor decades, San Francisco has flouted state laws regulating housing projects,â the pro-development advocacy organization San Francisco YIMBY said in a statement. âThis report will obliterate local obstructionism in San Francisco...</p> 907 </blockquote> 908 909 </div> 910 911 </div> 912</section> 913 914 915 916<section class="bg-white py-6 w-full sm:py-6 mt-10"> 917 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 918 <div class="flex-grow"> 919 <div class="text-base"> 920 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 921 <a href="https://sfstandard.com/2023/10/16/yimby-winning-san-francisco-housing-war/">Are YIMBYs on the Verge of Winning San Franciscoâs Housing War?</a> 922 </h2> 923 <div class="mt-1 text-gray-500"> 924 The San Francisco Standard ⢠Oct. 16, 2023 925 </div> 926 </div> 927 928 929 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 930 <p>âIâm glad YIMBYs were patient and stayed focused on the goal: Make dense housing easier and faster to build in places that need it,â Fryman said. âActivism is successful when you achieve enough system changes to make yourself irrelevant.</p> 931 </blockquote> 932 933 </div> 934 935 </div> 936</section> 937 938 939 940<section class="bg-white py-6 w-full sm:py-6 mt-10"> 941 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 942 <div class="flex-grow"> 943 <div class="text-base"> 944 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 945 <a href="https://www.sfchronicle.com/opinion/openforum/article/sf-supervisors-housing-nimby-wiener-18383235.php">Why S.F. NIMBYs are about to lose all their power to stop new housing</a> 946 </h2> 947 <div class="mt-1 text-gray-500"> 948 San Francisco Chronicle ⢠Sept. 25, 2023 949 </div> 950 </div> 951 952 953 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 954 <p>Once SB423 goes into effect in the spring, and San Francisco flunks its state assessment, getting new housing approved will be much more like getting your license renewed at the DMV...</p> 955 </blockquote> 956 957 </div> 958 959 </div> 960</section> 961 962 963 964<section class="bg-white py-6 w-full sm:py-6 mt-10"> 965 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 966 <div class="flex-grow"> 967 <div class="text-base"> 968 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 969 <a href="https://www.sfchronicle.com/opinion/openforum/article/sfusd-school-housing-sf-18376023.php">How new housing can save S.F. schools from financial freefall</a> 970 </h2> 971 <div class="mt-1 text-gray-500"> 972 San Francisco Chronicle ⢠Sept. 21, 2023 973 </div> 974 </div> 975 976 977 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 978 <p>New housing development on school district land could provide funding streams it could use to close its deficit, pay teachers competitively and create schools attractive enough that those with privilege decide to remain in a public education setting.</p> 979 </blockquote> 980 981 </div> 982 983 <div class="absolute inset-0 h-full w-full rounded-2xl bg-gray-50 object-cover relative aspect-square lg:w-64 lg:shrink-0"> 984 <img alt="sfusd housing" height="500" src="https://d38cycikt2ca4e.cloudfront.net/images/sfusd_housingjpg.2e16d0ba.fill-500x500.jpg" width="500"> 985 </div> 986 987 </div> 988</section> 989 990 991 992<section class="bg-white py-6 w-full sm:py-6 mt-10"> 993 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 994 <div class="flex-grow"> 995 <div class="text-base"> 996 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 997 <a href="https://sfstandard.com/2023/09/19/san-francisco-lawmakers-punt-housing-bill-after-pushback-changes/">San Francisco Lawmakers Punt Housing Bill After Pushback, Changes</a> 998 </h2> 999 <div class="mt-1 text-gray-500"> 1000 The San Francisco Standard ⢠Sept. 19, 2023 1001 </div> 1002 </div> 1003 1004 1005 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 1006 <p>âA lot of these decisions are decisions you already made,â said Jane Natoli, a director at the pro-housing group YIMBY Action and an airport commissioner. âWe are going to lose millions of dollars in affordable housing and transportation funds ⦠We know [the state is] paying attention to what we do.</p> 1007 </blockquote> 1008 1009 </div> 1010 1011 </div> 1012</section> 1013 1014 1015 1016<section class="bg-white py-6 w-full sm:py-6 mt-10"> 1017 <div class="px-6 lg:px-8 w-full items-center flex flex-col gap-8 lg:flex-row justify-between"> 1018 <div class="flex-grow"> 1019 <div class="text-base"> 1020 <h2 class="font-semibold text-gray-900 underline decoration-teal-500 mb-2"> 1021 <a href="https://sfstandard.com/opinion/2022/05/12/perspective-lets-topple-the-housing-monuments-of-our-racist-past-starting-with-st-francis-wood/">Letâs topple the housing monuments of our racist past, starting with St. Francis Wood</a> 1022 </h2> 1023 <div class="mt-1 text-gray-500"> 1024 The San Francisco Standard ⢠May 12, 2022 1025 </div> 1026 </div> 1027 1028 1029 <blockquote class="text-lg mt-2 italic leading-8 text-gray-900"> 1030 <p>Using a loophole in a hard-fought state housing law, St. Francis Wood is hoping to stay exclusive and unchanged. A group of homeowners calling themselves the St. Francis Homes Association has filed for historic designation status with the National Register of Historic Places</p> 1031 </blockquote> 1032 1033 </div> 1034 1035 </div> 1036</section> 1037 1038 1039 </div> 1040</div> 1041 </div> 1042 </div> 1043 1044 </div> 1045 1046 </div> 1047 1048 </div> 1049 1050
1050<script type="text/javascript" src="/static/js/runtime.6d35197a.570e63a74845.js" ></script>
vendor: 1 bytes, line 1050
1050
1051<script type="text/javascript" src="/static/js/759.5cffa57f.89b59a060036.js" ></script>
vendor: 1 bytes, line 1051
1051
1052<script type="text/javascript" src="/static/js/app.426d8e0d.42e0e88a16ff.js" ></script>
1052 1053 1054 1055 1056 1057 1058 1059<footer class="bg-gray-900 relative z-10" aria-labelledby="footer-heading"> 1060 <h2 id="footer-heading" class="sr-only">Footer</h2> 1061 1062 1063 1064 <div class="mx-auto px-6 lg:px-20 pb-8 pt-20 sm:pt-24 md:px-12 lg:pt-16"> 1065 <div class="flex items-center"> 1066 <a href="/" class="flex bg-indigo-500 rounded-md"> 1067 1068 <img class="h-12 w-auto sm:h-16 mr-4" src="https://d38cycikt2ca4e.cloudfront.net/images/SF_YIMBY_W_1.height-100.png" alt="San Francisco YIMBY"> 1069 1070 </a> 1071 <div class="uppercase prose text-white-important font-bold"> 1072 <a href="/" class="no-underline">San Francisco YIMBY</a> 1073 </div> 1074 </div> 1075 <h4 class="font-semibold text-white text-lg mt-6"> 1076 We're a part of the nation-wide <a class="underline" href="https://yimbyaction.org">YIMBY movement</a>. 1077 </h4> 1078 1079 <p class="text-white mt-2"> 1080 Contact us at <a class="underline" href="/cdn-cgi/l/email-protection#c7afae87b4a1beaeaaa5bee9a8b5a0"><span class="__cf_email__" data-cfemail="dcb4b59cafbaa5b5b1bea5f2b3aebb">[email protected]</span></a>. 1081 </p> 1082 1083 <div class="xl:grid xl:grid-cols-3 xl:gap-8 pt-12"> 1084 <div class="grid grid-cols-3 gap-8 xl:col-span-full"> 1085 <div> 1086 <h3 class="font-semibold text-white">Resources</h3> 1087 <ul role="list" class="space-y-2 "> 1088 <li> 1089 <a href="/projectsupport" 1090 class="leading-6 text-gray-300 hover:text-white">Request Support for Housing Proposal</a> 1091 </li> 1092 </ul> 1093 </div> 1094 </div> 1095 </div> 1096 <div class="max-w-xl mt-12"> 1097 <div class="columns-3 gap-8"> 1098 <ul> 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 </ul> 1113 </div> 1114 </div> 1115 <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"> 1116 <div class="flex space-x-6 md:order-2"> 1117 1118 <a href="https://www.google.com/url?q=http%3A%2F%2Ffacebook.com%2Fsfyimbyparty&sa=D&sntz=1&usg=AOvVaw2hOEc9ATXspxM5Ngt7MMaQ" target="_blank" class="text-gray-500 hover:text-gray-400"> 1119 <span class="sr-only">Facebook</span> 1120 <svg class="h-6 w-6" 1121 fill="currentColor"
1122 viewBox="0 0 24 24" 1123 aria-hidden="true"> 1124 <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" /> 1125 </svg> 1126 </a> 1127 1128 1129 <a href="https://www.instagram.com/sf.yimby/" 1130 target="_blank" 1131 class="text-gray-500 hover:text-gray-400"> 1132 <span class="sr-only">Instagram</span> 1133 <svg class="h-6 w-6" 1134 fill="currentColor" 1135 viewBox="0 0 24 24" 1136 aria-hidden="true"> 1137 <path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd" /> 1138 </svg> 1139 </a> 1140 1141 1142 <a href="https://www.google.com/url?q=http%3A%2F%2Ftwitter.com%2FSFyimby&sa=D&sntz=1&usg=AOvVaw0QwECpko6MMCRnz8YP9vOn" target="_blank" class="text-gray-500 hover:text-gray-400"> 1143 <span class="sr-only">Twitter</span> 1144 <svg class="h-6 w-6" 1145 fill="currentColor"
1146 viewBox="0 0 24 24" 1147 aria-hidden="true"> 1148 <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" /> 1149 </svg> 1150 </a> 1151 1152 1153 1154 </div> 1155 <p class="mt-8 text-xs leading-5 text-gray-400 md:order-1 md:mt-0"> 1156 San Francisco YIMBY is a chapter of 1157 YIMBY Action (EIN 81-514-0915), a 501(c)(4) nonprofit organization. 1158 </p> 1159 </div> 1160 </div> 1161 1162</footer> 1163 1164 1165 1166 1167 1168 1169 1170 <!-- Fundraise Up: the new standard for online giving -->
vendor: 115 bytes, lines 1170-1171
1170 1171 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1171<script> 1172 (function (w, d, s, n, a) { 1173 if (!w[n]) { 1174 var l = 'call,catch,on,once,set,then,track' 1175 .split(','), 1176 i, o = function (n) { 1177 return 'function' == typeof n ? o.l.push([arguments]) && o : 1178 function () { 1179 return o.l.push([n, arguments]) && o 1180 } 1181 }, 1182 t = d.getElementsByTagName(s)[0], 1183 j = d.createElement(s) 1184 j.async = !0 1185 j.src = 'https://cdn.fundraiseup.com/widget/' + a 1186 t.parentNode.insertBefore(j, t) 1187 o.s = Date.now() 1188 o.v = 4 1189 o.h = w.location.href 1190 o.l = [] 1191 for (i = 0; i < 7; i++) o[l[i]] = o(l[i]) 1192 w[n] = o 1193 } 1194 })(window, document, 'script', 'FundraiseUp', 'ARRDGTDL') 1195 </script>
1195 1196 <!-- End Fundraise Up --> 1197
1197<script> 1198 const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)); 1199 1200 async function animateSubscribeSuccess() { 1201 const block = document.getElementById('subscribe-block'); 1202 const title = document.getElementById('subscribe-title'); 1203 const subtitle = document.getElementById('subscribe-subtitle'); 1204 const form = document.getElementById('subscribe-form'); 1205 const donate = document.getElementById('subscribe-donate'); 1206 if (donate) { 1207 donate.classList.remove('hidden'); 1208 } 1209 1210 if (block) { 1211 block.style.height = block.offsetHeight + 'px'; 1212 } 1213 1214 const staggerTime = 100; // Time between each element 1215 const animationDuration = 500; 1216 1217 if (block && title && subtitle && form && donate) { 1218 1219 // Fade out 1220 title.classList.add('opacity-0', '-translate-y-2'); 1221 await sleep(staggerTime); 1222 subtitle.classList.add('opacity-0', '-translate-y-2'); 1223 await sleep(staggerTime); 1224 1225 form.remove(); 1226 await sleep(animationDuration); 1227 1228 // Change content 1229 block.classList.remove('bg-gradient-to-t', 'from-lime-300', 'to-sky', 'bg-lime-300'); 1230 block.classList.add('bg-[#A7F3D0]'); 1231 1232 title.textContent = "Thanks for subscribing! Support our work"; 1233 subtitle.textContent = "How your donation supports our ongoing work"; 1234 1235 title.classList.remove('-translate-y-2'); 1236 subtitle.classList.remove('-translate-y-2'); 1237 1238 // Prepare fade in 1239 title.classList.add('opacity-0', 'translate-y-2'); 1240 subtitle.classList.add('opacity-0', 'translate-y-2'); 1241 await sleep(50); 1242 1243 block.style.height = ''; 1244 1245 // Fade in 1246 title.classList.remove('opacity-0', 'translate-y-2'); 1247 await sleep(staggerTime); 1248 subtitle.classList.remove('opacity-0', 'translate-y-2'); 1249 await sleep(staggerTime); 1250 1251 donate.classList.remove('opacity-0', 'translate-y-2'); 1252 } else if (block) { 1253 block.style.height = ''; 1254 } 1255 } 1256 1257 window.formSubmit = async function(webhookUrl, element, successText) { 1258 var formData = new FormData(element); 1259 var request = new XMLHttpRequest(); 1260 request.open("POST", webhookUrl); 1261 1262 try { 1263 request.send(formData); 1264 try { 1265 await animateSubscribeSuccess(); 1266 } catch (animationError) { 1267 console.error("Animation error:", animationError); 1268 } 1269 } catch (e) { 1270 element.innerHTML = "<div><span class='text-4xl font-bold tracking-tight block italic'>Something went wrong.<span></div>"; 1271 } 1272 1273 return false; 1274 } 1275 1276 var forms = document.getElementsByTagName("form"); 1277 for (var i = 0; i < forms.length; i++) { 1278 forms[i].onkeydown = function(e) { 1279 // Allow forms with the 'allow-enter-submit' class to use 'Enter' 1280 if (this.classList.contains('allow-enter-submit')) { 1281 return true; 1282 } 1283 1284 var key = e.charCode || e.keyCode || 0; 1285 if (key == 13) { 1286 e.preventDefault(); 1287 } 1288 } 1289 } 1290 </script>
1290 1291 1292 <!-- Google tag (gtag.js) -->
vendor: 70 bytes, lines 1292-1293
1292 1293 <script async src="https://www.googletagmanager.com/gtag/js?id=
1293G-MK77V04MG5
vendor: 18 bytes, lines 1293-1294
1293"></script> 1294
1294<script> 1295
vendor: 186 bytes, lines 1295-1302
1295window.dataLayer = window.dataLayer || []; 1296 1297 function gtag() { 1298 dataLayer.push(arguments); 1299 } 1300 gtag('js', new Date()); 1301 1302 gtag('config', '
1302G-MK77V04MG5
vendor: 10 bytes, lines 1302-1303
1302'); 1303
1303</script>
1303 1304 1305 <!-- recaptcha -->
vendor: 90 bytes, lines 1305-1308
1305 1306 <script src="https://www.google.com/recaptcha/api.js" async defer></script> 1307 1308
1308<!-- linkedin ad conversion tracking --> 1309
1309<script type="text/javascript"> 1310 _linkedin_partner_id = "7396380"; 1311 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 1312 window._linkedin_data_partner_ids.push(_linkedin_partner_id); 1313 </script>
1313 1314
1314<script type="text/javascript"> 1315 (function(l) { 1316 if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; 1317 window.lintrk.q=[]} 1318 var s = document.getElementsByTagName("script")[0]; 1319 var b = document.createElement("script"); 1320 b.type = "text/javascript"; 1321 b.async = true; 1322 b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; 1323 s.parentNode.insertBefore(b, s);})(window.lintrk); 1324 </script>
1324 1325 <noscript> 1326 <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=7396380&fmt=gif" /> 1327 </noscript> 1328 1329
1329<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"96462f5863d14b1399f9ca3646aeabfd","r":1,"spa":2}' crossorigin="anonymous"></script>
1329 1330</body> 1331</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.