PageSourceSearch

https://sfyimby.org/sf-yimby-in-the-news/

html sfyimby.org collected 2026-09-28 13:55:05 UTC 51,866 bytes, 1,331 lines download raw bytes

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&amp;sc=guest_opinion&amp;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&#160;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&amp;sa=D&amp;sntz=1&amp;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&amp;sa=D&amp;sntz=1&amp;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.