1<!doctype html> 2 3<!-- Alpine.js state management for navigation drawers --> 4<html lang="en-US" 5 x-data="{ navOpen: false, searchOpen: false }" 6 :class="{ 'overflow-hidden': navOpen || searchOpen }" 7> 8<head> 9 <meta charset="UTF-8">
10<script> 11var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); 12</script>
12 13 14 <meta name="viewport" content="width=device-width, initial-scale=1"> 15 <link rel="profile" href="https://gmpg.org/xfn/11"> 16 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 17 <!-- JSMF Section Colors --> 18 <style> 19 body { 20 /* Global section accent colors that cascade down to all components */ 21 --section-accent-color: var(--color-perennial-teal, var(--color-primary)); 22 --section-accent-color-secondary: var(--color-mint, var(--color-secondary)); 23 } 24 </style> 25 <!-- /JSMF Section Colors --> 26 27 <!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ --> 28 <title>Civic Infrastructure — JSMF</title> 29 <meta name="description" content="Effective civic infrastructure is essential to achieving economic growth at scale." /> 30 <link rel="canonical" href="https://www.jsmf.org/focus-areas/civic-infrastructure/" /> 31 <meta property="og:locale" content="en_US" /> 32 <meta property="og:type" content="article" /> 33 <meta property="og:title" content="Civic Infrastructure — JSMF" /> 34 <meta property="og:description" content="Effective civic infrastructure is essential to achieving economic growth at scale." /> 35 <meta property="og:url" content="https://www.jsmf.org/focus-areas/civic-infrastructure/" /> 36 <meta property="og:site_name" content="JSMF" /> 37 <meta property="article:publisher" content="https://www.facebook.com/JSMFSTL" /> 38 <meta property="article:modified_time" content="2025-09-19T21:31:35+00:00" /> 39 <meta property="og:image" content="https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780.jpg" /> 40 <meta property="og:image:width" content="1920" /> 41 <meta property="og:image:height" content="940" /> 42 <meta property="og:image:type" content="image/jpeg" /> 43 <meta name="twitter:card" content="summary_large_image" /> 44 <meta name="twitter:site" content="@jsmf" /> 45 <meta name="twitter:label1" content="Est. reading time" /> 46 <meta name="twitter:data1" content="1 minute" /> 47
47<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/","url":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/","name":"Civic Infrastructure — JSMF","isPartOf":{"@id":"https:\/\/www.jsmf.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/#primaryimage"},"image":{"@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jsmf.org\/wp-content\/uploads\/2025\/05\/civic-1-1-e1747336004780.jpg","datePublished":"2025-02-06T18:01:29+00:00","dateModified":"2025-09-19T21:31:35+00:00","description":"Effective civic infrastructure is essential to achieving economic growth at scale.","breadcrumb":{"@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/#primaryimage","url":"https:\/\/www.jsmf.org\/wp-content\/uploads\/2025\/05\/civic-1-1-e1747336004780.jpg","contentUrl":"https:\/\/www.jsmf.org\/wp-content\/uploads\/2025\/05\/civic-1-1-e1747336004780.jpg","width":1920,"height":940,"caption":"Five multistory brick homes as seen above a concrete wall with the word GROW written on it."},{"@type":"BreadcrumbList","@id":"https:\/\/www.jsmf.org\/focus-areas\/civic-infrastructure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jsmf.org\/"},{"@type":"ListItem","position":2,"name":"Focus Areas","item":"https:\/\/www.jsmf.org\/focus-areas\/"},{"@type":"ListItem","position":3,"name":"Civic Infrastructure"}]},{"@type":"WebSite","@id":"https:\/\/www.jsmf.org\/#website","url":"https:\/\/www.jsmf.org\/","name":"JSMF","description":"Prosperity that works for St. Louis","publisher":{"@id":"https:\/\/www.jsmf.org\/#organization"},"alternateName":"James S. McDonnell Foundation","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jsmf.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.jsmf.org\/#organization","name":"JSMF","alternateName":"James S. McDonnell Foundation","url":"https:\/\/www.jsmf.org\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jsmf.org\/#\/schema\/logo\/image\/","url":"https:\/\/www.jsmf.org\/wp-content\/uploads\/2025\/02\/favicon.png","contentUrl":"https:\/\/www.jsmf.org\/wp-content\/uploads\/2025\/02\/favicon.png","width":512,"height":512,"caption":"JSMF"},"image":{"@id":"https:\/\/www.jsmf.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/JSMFSTL","https:\/\/x.com\/jsmf","https:\/\/www.instagram.com\/JSMF_STL\/","https:\/\/www.linkedin.com\/company\/jsmf\/","https:\/\/www.youtube.com\/@JSMF_STL"]}]}</script>
47 48 <!-- / Yoast SEO plugin. --> 49 50 51<link rel='dns-prefetch' href='//static.addtoany.com' /> 52<link rel='dns-prefetch' href='//js-na2.hs-scripts.com' /> 53<link rel='dns-prefetch' href='//unpkg.com' /> 54<link rel='dns-prefetch' href='//kit.fontawesome.com' /> 55<link rel='dns-prefetch' href='//cdn.plyr.io' /> 56<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 57<link rel='dns-prefetch' href='//use.typekit.net' /> 58<link rel="alternate" type="application/rss+xml" title="JSMF » Feed" href="https://www.jsmf.org/feed/" /> 59<link rel="alternate" type="application/rss+xml" title="JSMF » Comments Feed" href="https://www.jsmf.org/comments/feed/" /> 60<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.jsmf.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.jsmf.org%2Ffocus-areas%2Fcivic-infrastructure%2F" /> 61<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.jsmf.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.jsmf.org%2Ffocus-areas%2Fcivic-infrastructure%2F&format=xml" /> 62<style id="wp-img-auto-sizes-contain-inline-css"> 63img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 64/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 65</style> 66<style id="wp-emoji-styles-inline-css"> 67 68 img.wp-smiley, img.emoji { 69 display: inline !important; 70 border: none !important; 71 box-shadow: none !important; 72 height: 1em !important; 73 width: 1em !important; 74 margin: 0 0.07em !important; 75 vertical-align: -0.1em !important; 76 background: none !important; 77 padding: 0 !important; 78 } 79/*# sourceURL=wp-emoji-styles-inline-css */ 80</style> 81<style id="wp-block-library-inline-css"> 82:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
82--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 83 84/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 85</style> 86 87<style id="global-styles-inline-css"> 88:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--background: oklch(100% 0 89.88);--wp--preset--color--warm-white: oklch(96.21% 0.01 51.67);--wp--preset--color--foreground: oklch(0% 0 0);--wp--preset--color--gray: oklch(42.02% 0 89.88);--wp--preset--color--primary: oklch(54.4% 0.128657 186.2992);--wp--preset--color--secondary: oklch(69.56% 0.1503 179.9);--wp--preset--color--perennial-teal: oklch(54.4% 0.128657 186.2992);--wp--preset--color--mint: oklch(69.56% 0.1503 179.9);--wp--preset--color--prosperity-green: oklch(61.74% 0.18897787689171064 128.09100425007725);--wp--preset--color--leaf: oklch(77.06% 0.23695977959058181 128.4033905676833);--wp--preset--color--ardent-orange: oklch(68.06% 0.2551 30.86);--wp--preset--color--peach: oklch(79.18% 0.15598978670690522 34.06355771928193);--wp--preset--color--empathic-blue: oklch(64.34% 0.132 262.6);--wp--preset--color--sky: oklch(78.92% 0.1164 259.66);--wp--preset--color--resilient-red: oklch(56.06% 0.25493438435717075 2.083022242389812);--wp--preset--color--berry: oklch(68.46% 0.2402 354.93);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
880) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--x-small: 0.75rem;--wp--preset--font-size--2-xl: 1.75rem;--wp--preset--font-size--3-xl: 2.375rem;--wp--preset--font-size--4-xl: 2.625rem;--wp--preset--font-size--5-xl: 3rem;--wp--preset--font-size--6-xl: 4rem;--wp--preset--font-size--7-xl: 4.5rem;--wp--preset--font-size--8-xl: 5.25rem;--wp--preset--font-family--sans: 'articulat-cf', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';--wp--preset--font-family--serif: 'p22-mackinac-pro', ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 90rem;--wp--style--global--wide-size: 108rem; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-background-color{color: var(--wp--preset--color--background) !important;}.has-warm-white-color{color: var(--wp--preset--color--warm-white) !important;}.has-foreground-color{color: var(--wp--preset--color--foreground) !important;}.has-gray-color{color: var(--wp--preset--color--gray) !important;}.has-primary-color{color: var(--wp--preset--color--primary) !important;}.has-secondary-color{color: var(--wp--preset--color--secondary) !important;}.has-perennial-teal-color{color: var(--wp--preset--color--perennial-teal) !important;}.has-mint-color{color: var(--wp--preset--color--mint) !important;}.has-prosperity-green-color{color: var(--wp--preset--color--prosperity-green) !important;}.has-leaf-color{color: var(--wp--preset--color--leaf) !important;}.has-ardent-orange-color{color: var(--wp--preset--color--ardent-orange) !important;}.has-peach-color{color: var(--wp--preset--color--peach) !important;}.has-empathic-blue-color{color: var(--wp--preset--color--empathic-blue) !important;}.has-sky-color{color: var(--wp--preset--color--sky) !important;}.has-resilient-red-color{color: var(--wp--preset--color--resilient-red) !important;}.has-berry-color{color: var(--wp--preset--color--berry) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-background-background-color{background-color: var(--wp--preset--color--background) !important;}.has-warm-white-background-color{background-color: var(--wp--preset--color--warm-white) !important;}.has-foreground-background-color{background-color: var(--wp--preset--color--foreground) !important;}.has-gray-background-color{background-color: var(--wp--preset--color--gray) !important;}.has-primary-background-color{background-color: var(--wp--preset--color--primary) !important;}.has-secondary-background-color{background-color: var(--wp--preset--color--secondary) !important;}.has-perennial-teal-background-color{background-color: var(--wp--preset--color--perennial-teal) !important;}.has-mint-background-color{background-color: var(--wp--preset--color--mint) !important;}.has-prosperity-green-background-color{background-color: var(--wp--preset--color--prosperity-green) !important;}.has-leaf-background-color{background-color: var(--wp--preset--color--leaf) !important;}.has-ardent-orange-background-color{background-color: var(--wp--preset--color--ardent-orange) !important;}.has-peach-background-color{background-color: var(--wp--preset--color--peach) !important;}.has-empathic-blue-background-color{background-color: var(--wp--preset--color--empathic-blue) !important;}.has-sky-background-color{background-color: var(--wp--preset--color--sky) !important;}.has-resilient-red-background-color{background-color: var(--wp--preset--color--resilient-red) !important;}.has-berry-background-color{background-color: var(--wp--preset--color--berry) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-background-border-color{border-color: var(--wp--preset--color--background) !important;}.has-warm-white-border-color{border-color: var(--wp--preset--color--warm-white) !important;}.has-foreground-border-color{border-color: var(--wp--preset--color--foreground) !important;}.has-gray-border-color{border-color: var(--wp--preset--color--gray) !important;}.has-primary-border-color{border-color: var(--wp--preset--color--primary) !important;}.has-secondary-border-color{border-color: var(--wp--preset--color--secondary) !important;}.has-perennial-teal-border-color{border-color: var(--wp--preset--color--perennial-teal) !important;}.has-mint-border-color{border-color: var(--wp--preset--color--mint) !important;}.has-prosperity-green-border-color{border-color: var(--wp--preset--color--prosperity-green) !important;}.has-leaf-border-color{border-color: var(--wp--preset--color--leaf) !important;}.has-ardent-orange-border-color{border-color: var(--wp--preset--color--ardent-orange) !important;}.has-peach-border-color{border-color: var(--wp--preset--color--peach) !important;}.has-empathic-blue-border-color{border-color: var(--wp--preset--color--empathic-blue) !important;}.has-sky-border-color{border-color: var(--wp--preset--color--sky) !important;}.has-resilient-red-border-color{border-color: var(--wp--preset--color--resilient-red) !important;}.has-berry-border-color{border-color: var(--wp--preset--color--berry) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
88.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-x-small-font-size{font-size: var(--wp--preset--font-size--x-small) !important;}.has-2-xl-font-size{font-size: var(--wp--preset--font-size--2-xl) !important;}.has-3-xl-font-size{font-size: var(--wp--preset--font-size--3-xl) !important;}.has-4-xl-font-size{font-size: var(--wp--preset--font-size--4-xl) !important;}.has-5-xl-font-size{font-size: var(--wp--preset--font-size--5-xl) !important;}.has-6-xl-font-size{font-size: var(--wp--preset--font-size--6-xl) !important;}.has-7-xl-font-size{font-size: var(--wp--preset--font-size--7-xl) !important;}.has-8-xl-font-size{font-size: var(--wp--preset--font-size--8-xl) !important;}.has-sans-font-family{font-family: var(--wp--preset--font-family--sans) !important;}.has-serif-font-family{font-family: var(--wp--preset--font-family--serif) !important;} 89/*# sourceURL=global-styles-inline-css */ 90</style> 91 92<link rel='stylesheet' id='announcer-css-css' href='https://www.jsmf.org/wp-content/plugins/announcer/public/css/style.css?ver=6.4' media='all' /> 93<link rel='stylesheet' id='code_embed_responsive-css' href='https://www.jsmf.org/wp-content/plugins/simple-embed-code/css/video-container.min.css?ver=2.6.4' media='all' /> 94<link rel='stylesheet' id='jsmf-style-css' href='https://www.jsmf.org/wp-content/themes/jsmf/style.css?ver=0.4.15' media='all' /> 95<link rel='stylesheet' id='adobe-fonts-css' href='https://use.typekit.net/dlk0rld.css' media='all' /> 96<link rel='stylesheet' id='plyr-css' href='https://cdn.plyr.io/3.7.8/plyr.css?ver=3.7.8' media='all' /> 97<link rel='stylesheet' id='addtoany-css' href='https://www.jsmf.org/wp-content/plugins/add-to-any/addtoany.min.css?ver=1.16' media='all' />
98<script id="addtoany-core-js-before"> 99window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={}; 100 101//# sourceURL=addtoany-core-js-before 102</script>
vendor: 1 bytes, line 102
102
103<script id="addtoany-core-js" defer src="https://static.addtoany.com/menu/page.js"></script>
vendor: 1 bytes, line 103
103
104<script id="jquery-core-js" src="https://www.jsmf.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 104
104
105<script id="jquery-migrate-js" src="https://www.jsmf.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 105
105
106<script id="addtoany-jquery-js" defer src="https://www.jsmf.org/wp-content/plugins/add-to-any/addtoany.min.js?ver=1.1"></script>
vendor: 1 bytes, line 106
106
107<script async data-wp-strategy="async" id="font-awesome-js" src="https://kit.fontawesome.com/e7c865b2e3.js"></script>
107 108 109<!-- Google tag (gtag.js) snippet added by Site Kit --> 110<!-- Google Analytics snippet added by Site Kit -->
vendor: 80 bytes, lines 110-111
110 111<script id="google_gtagjs-js" src="https://www.googletagmanager.com/gtag/js?id=
111GT-TWZGD4WS
vendor: 18 bytes, line 111
111" async></script>
112<script id="google_gtagjs-js-after"> 113window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);} 114gtag("set","linker",{"domains":["www.jsmf.org"]}); 115gtag("js", new Date()); 116gtag("set", "developer_id.dZTNiMT", true); 117gtag("config", "GT-TWZGD4WS"); 118 window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.throttledEvents = []; window._googlesitekit.gtagEvent = (name, data) => { var key = JSON.stringify( { name, data } ); if ( !! window._googlesitekit.throttledEvents[ key ] ) { return; } window._googlesitekit.throttledEvents[ key ] = true; setTimeout( () => { delete window._googlesitekit.throttledEvents[ key ]; }, 5 ); gtag( "event", name, { ...data, event_source: "site-kit" } ); }; 119//# sourceURL=google_gtagjs-js-after 120</script>
120 121<link rel="https://api.w.org/" href="https://www.jsmf.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.jsmf.org/wp-json/wp/v2/focus-areas/36" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.jsmf.org/xmlrpc.php?rsd" /> 122<link rel='shortlink' href='https://www.jsmf.org/?p=36' />
123<script type="text/javascript" src="https://www.bugherd.com/sidebarv2.js?utm_source=wordpress&apikey=lrmxkot5gcpfhjs9sezlzg" async="true"></script>
123<meta name="generator" content="Site Kit by Google 1.188.0" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.3.75--> 124
124<script class="hsq-set-content-id" data-content-id="blog-post"> 125 var _hsq = _hsq || []; 126 _hsq.push(["setContentType", "blog-post"]); 127 </script>
127 128 <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> 129 <link rel="icon" href="https://www.jsmf.org/wp-content/uploads/2025/02/cropped-favicon-32x32.png" sizes="32x32" /> 130<link rel="icon" href="https://www.jsmf.org/wp-content/uploads/2025/02/cropped-favicon-192x192.png" sizes="192x192" /> 131<link rel="apple-touch-icon" href="https://www.jsmf.org/wp-content/uploads/2025/02/cropped-favicon-180x180.png" /> 132<meta name="msapplication-TileImage" content="https://www.jsmf.org/wp-content/uploads/2025/02/cropped-favicon-270x270.png" /> 133<noscript><style id="rocket-lazyload-nojs-css">.rll-youtube-player, [data-lazy-src]{display:none !important;}</style></noscript><link rel='stylesheet' id='gravity_forms_theme_reset-css' href='https://www.jsmf.org/wp-content/plugins/gravityforms/assets/css/dist/gravity-forms-theme-reset.min.css?ver=3.1.2' media='all' /> 134<link rel='stylesheet' id='gravity_forms_theme_foundation-css' href='https://www.jsmf.org/wp-content/plugins/gravityforms/assets/css/dist/gravity-forms-theme-foundation.min.css?ver=3.1.2' media='all' /> 135<link rel='stylesheet' id='gravity_forms_theme_framework-css' href='https://www.jsmf.org/wp-content/plugins/gravityforms/assets/css/dist/gravity-forms-theme-framework.min.css?ver=3.1.2' media='all' /> 136<link rel='stylesheet' id='gravity_forms_orbital_theme-css' href='https://www.jsmf.org/wp-content/plugins/gravityforms/assets/css/dist/gravity-forms-orbital-theme.min.css?ver=3.1.2' media='all' /> 137 138</head> 139 140<body class="wp-singular focus-areas-template-default single single-focus-areas postid-36 wp-embed-responsive wp-theme-jsmf"> 141 142 143<div id="page"> 144 <!-- Skip link for keyboard navigation --> 145 <a 146 href="#content" 147 class="sr-only focus-visible:not-sr-only !absolute left-3 -top-12 z-[999] bg-white px-4 py-2 transition-all duration-200 focus-visible:top-3 focus-visible:outline-none focus-visible:shadow-[0_0_0_3px_#0b0c0c,_0_0_.4em_0em_#1f1f22] focus-visible:!p-2 text-primary underline rounded font-bold font-sans" 148 data-motion='{"opacity": [0, 1], "duration": 0.3, "easing": "ease-out"}' 149 > 150 Skip to content </a> 151 152 <!-- Absolute header with dynamic background and icon colors --> 153 <header class="absolute top-[var(--wp-admin--admin-bar--height,0px)] left-0 right-0 z-50 bg-transparent text-black fill-black" role="banner"> 154 <div class="wrapper py-1.5 md:py-4 flex justify-between items-center"> 155 <!-- Site logo - SVG with responsive sizing --> 156 <a href="https://www.jsmf.org/" class="site-logo" aria-label="JSMF" data-motion='{"opacity": [0, 1], "duration": 0.6, "easing": "ease-out"}'> 157 <svg class="w-[3.8125rem] md:w-[4.8125rem] h-auto block" viewBox="0 0 77 32" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 158 <g clip-path="url(#clip0_2744_5653)"> 159 <path d="M21.1376 30.2895C22.592 31.4244 24.624 32 27.1746 32C28.4205 32 29.5327 31.8332 30.4738 31.5105C31.415 31.1878 32.2117 30.7359 32.848 30.1711C33.4843 29.6063 33.9602 28.9339 34.2704 28.1755C34.5805 27.4117 34.7356 26.5779 34.7356 25.685C34.7356 23.8077 34.2329 22.3446 33.2437 21.3495C32.2545 20.3543 30.6877 19.6389 28.5809 19.2247L25.8004 18.6599C24.6026 18.4017 23.7577 18.0413 23.2818 17.5895C22.8059 17.1377 22.5653 16.4384 22.5653 15.5132C22.5653 15.142 22.6348 14.7763 22.7738 14.432C22.9129 14.0877 23.1482 13.7758 23.4743 13.5122C23.8005 13.2432 24.2336 13.0334 24.7684 12.8882C25.3031 12.7376 25.9768 12.6623 26.7789 12.6623C28.1799 12.6623 29.2173 12.9528 29.8589 13.5283C30.5006 14.0985 30.9604 14.9914 31.2171 16.1694L34.4201 15.6369V15.6262C34.3078 14.8569 34.0993 14.1039 33.7998 13.3938C33.5004 12.6838 33.0566 12.0437 32.4791 11.5004C31.9016 10.9571 31.1369 10.5107 30.2065 10.1772C29.2761 9.84367 28.105 9.67154 26.7254 9.67154C25.6453 9.67154 24.6293 9.79526 23.7096 10.0427C22.7845 10.2901 21.9771 10.672 21.3087 11.1723C20.635 11.6779 20.1002 12.3127 19.7206 13.0657C19.3356 13.8188 19.1431 14.7117 19.1431 15.723C19.1431 16.7342 19.2821 17.6003 19.5495 18.2995C19.8222 18.9988 20.2286 19.6013 20.7579 20.0854C21.2873 20.5695 21.9557 20.9622 22.7364 21.258C23.5225 21.5539 24.4315 21.8067 25.4314 22.0003L27.9927 22.506C28.6237 22.6243 29.1531 22.7911 29.5648 22.9955C29.9766 23.2052 30.3081 23.4473 30.5487 23.7216C30.7893 23.996 30.9604 24.3026 31.0513 24.6253C31.1423 24.9534 31.1904 25.2869 31.1904 25.6204C31.1904 26.0723 31.1262 26.508 30.9925 26.9114C30.8642 27.3148 30.6343 27.6699 30.3188 27.9657C30.0033 28.2616 29.5755 28.5036 29.0515 28.6811C28.5275 28.8586 27.8751 28.9501 27.1104 28.9501C25.5437 28.9501 24.3459 28.6273 23.5492 27.998C22.7578 27.3686 22.2819 26.3466 22.1322 24.9696L18.71 24.9642C18.8597 27.3633 19.6725 29.1545 21.1269 30.2895H21.1376Z"/> 160 <path d="M58.8305 31.4675V10.2041H54.8469L48.9703 27.1158L43.2648 10.2041H39.1367V31.4675H42.1953V16.0403L47.5105 31.4675H50.2055L55.7185 16.0081V31.4675H58.8305Z"/> 161 <path d="M76.439 19.3108H67.5893V13.3132H77.0004V10.2041H64.1885V31.4675H67.5893V22.4468H76.439V19.3108Z"/> 162 <path d="M77 0H0V3.24357H77V0Z"/> 163 <path d="M14.6086 10.2041H2.42229V13.4476H11.2131V24.0767C11.2131 25.6151 10.919 26.8146 10.3415 27.6376C9.76403 28.466 8.78014 28.8855 7.4166 28.8855C6.70542 28.8855 6.10653 28.7779 5.63062 28.5735C5.15472 28.3638 4.75903 28.0733 4.44889 27.7129C4.1441 27.3471 3.90347 26.9007 3.7484 26.3789C3.58799 25.8571 3.47035 25.26 3.39549 24.6092H0C0.165764 27.1481 0.887639 29.0308 2.13889 30.2195C3.38479 31.4029 5.18146 32.0054 7.47542 32.0054C9.76937 32.0054 11.4056 31.3545 12.6836 30.0743C13.9616 28.7887 14.6086 26.8522 14.6086 24.3241V10.2148V10.2041Z"/> 164 </g> 165 <defs>
166 <clipPath id="clip0_2744_5653"> 167 <rect width="77" height="32"/> 168 </clipPath> 169 </defs> 170 </svg> 171 <!-- Hidden text for screen readers --> 172 <span class="sr-only">JSMF Logo</span> 173 </a> 174 175 <!-- Navigation Controls --> 176 <div class="flex items-center"> 177 <!-- Search Toggle Button --> 178 <button 179 id="search-toggle" 180 @click="$dispatch('toggle-search')" 181 class="hidden md:flex items-center justify-center w-12 h-12 transition-opacity hover:opacity-75" 182 :aria-expanded="searchOpen" 183 aria-controls="search-drawer" 184 role="button" 185 aria-label="Toggle search" 186 data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.1, "easing": "ease-out"}' 187 > 188 <!-- Hidden text for screen readers --> 189 <span class="sr-only">Toggle search</span> 190 <!-- Search icon SVG (hidden from screen readers) --> 191 <svg width="23" height="23" viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> 192 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.25383 1.61308C5.82784 0.561355 7.67838 0 9.57143 0H9.57149C12.1099 0.000161588 14.5443 1.00862 16.3393 2.80357C18.1342 4.59851 19.1427 7.03293 19.1429 9.57136V9.57143C19.1429 11.4645 18.5815 13.315 17.5298 14.889C16.4781 16.463 14.9832 17.6898 13.2343 18.4143C11.4853 19.1387 9.56081 19.3283 7.70414 18.9589C5.84746 18.5896 4.142 17.678 2.80341 16.3394C1.46482 15.0009 0.553232 13.2954 0.183917 11.4387C-0.185399 9.58204 0.00414705 7.65755 0.728586 5.9086C1.45302 4.15965 2.67982 2.6648 4.25383 1.61308ZM9.57137 2C8.0739 2.00001 6.61007 2.44407 5.36497 3.27602C4.11986 4.10797 3.14941 5.29047 2.57634 6.67397C2.00328 8.05746 1.85334 9.57983 2.14549 11.0485C2.43763 12.5173 3.15874 13.8663 4.21762 14.9252C5.27651 15.9841 6.62561 16.7052 8.09432 16.9974C9.56303 17.2895 11.0854 17.1396 12.4689 16.5665C13.8524 15.9934 15.0349 15.023 15.8668 13.7779C16.6988 12.5328 17.1428 11.069 17.1429 9.57149M9.57143 2C11.5795 2.00014 13.5052 2.79789 14.9251 4.21778C16.345 5.63767 17.1427 7.5634 17.1429 9.57143"/> 193 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.2384 14.824L22.4146 21.0001L21.0003 22.4143L14.8242 16.2382L16.2384 14.824Z"/> 194 </svg> 195 </button> 196 197 <!-- Menu Toggle Button --> 198 <button 199 id="menu-toggle" 200 @click="$dispatch('toggle-nav')" 201 class="flex items-center justify-center w-12 h-12 -mr-3 transition-opacity hover:opacity-75" 202 :aria-expanded="navOpen" 203 aria-controls="nav-drawer" 204 aria-label="Toggle menu" 205 data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.2, "easing": "ease-out"}' 206 > 207 <!-- Hidden text for screen readers --> 208 <span class="sr-only">Toggle menu</span> 209 <!-- Hamburger menu icon --> 210 <svg width="24" height="14" viewBox="0 0 24 14" xmlns="http://www.w3.org/2000/svg"> 211 <rect width="24" height="2"/> 212 <rect y="6" width="24" height="2"/> 213 <rect y="12" width="24" height="2"/> 214 </svg> 215 </button> 216 </div> 217 </div> 218 </header> 219 220 <!-- Load navigation components --> 221 222<!-- Navigation Drawer Container --> 223<div 224 x-data="{ 225 // Core state management for the navigation drawer 226 navOpen: false, // Controls visibility of the entire drawer 227 activeSection: 'default', // Current section from page metadata 228 hoverSection: null, // Tracks which section is being hovered (desktop only) 229 activeSubmenu: null, // Tracks which submenu is showing (mobile only) 230 lastActiveSubmenu: null, // Stores the last active submenu for closing animation 231 isMobile: window.innerWidth < 768 // Determines mobile/desktop behavior 232 }" 233 x-init=" 234 // Watch for drawer open/close to manage body scroll and focus 235 $watch('navOpen', value => { 236 if (value) { 237 // Prevent body scroll and make main content inert for accessibility 238 document.body.style.overflow = 'hidden'; 239 document.querySelector('main')?.setAttribute('inert', ''); 240 // Set initial focus for keyboard navigation 241 $nextTick(() => { 242 $refs.firstFocusable?.focus(); 243 }); 244 } else { 245 // Restore body scroll and main content interaction 246 document.body.style.overflow = ''; 247 document.querySelector('main')?.removeAttribute('inert'); 248 } 249 }) 250 251 // Handle window resize to switch between mobile/desktop layouts 252 window.addEventListener('resize', () => { 253 isMobile = window.innerWidth < 768;
254 // Close any open submenu when switching to desktop 255 if (!isMobile) activeSubmenu = null; 256 });" 257 @toggle-nav.window="navOpen = !navOpen" 258 @keydown.escape.window="navOpen = false; $nextTick(() => document.querySelector('[aria-controls=\'nav-drawer\']').focus())" 259 class="fixed inset-0 !top-[var(--ancr-group-height,0px)] z-50 transition-transform duration-300 md:transition-all" 260 :class="{ 'pointer-events-none': !navOpen }" 261> 262 <!-- Main Drawer Content --> 263 <div 264 x-cloak 265 x-show="navOpen" 266 x-transition:enter="transition-transform duration-300 ease-[cubic-bezier(0.25,1,0.5,1)] transform" 267 x-transition:enter-start="max-md:translate-x-full md:translate-y-full" 268 x-transition:enter-end="max-md:translate-x-0 md:translate-y-0 " 269 x-transition:leave="transition-transform duration-300 ease-[cubic-bezier(0.25,1,0.5,1)] transform" 270 x-transition:leave-start="max-md:translate-x-0 md:translate-y-0" 271 x-transition:leave-end="max-md:translate-x-full md:translate-y-full" 272 x-trap="navOpen" 273 x-ref="drawer" 274 tabindex="-1" 275 role="dialog" 276 aria-modal="true" 277 aria-label="Navigation Menu" 278 class="absolute inset-y-0 right-0 w-full h-[calc(100svh-var(--ancr-group-height,0px))] overflow-y-auto transition-colors duration-300 transform md:inset-x-0 md:bottom-0 md:w-auto" 279 :class="{ 280 // Section-specific background colors 281 'bg-white': !hoverSection && activeSection === 'default', 282 'bg-mint': hoverSection === 'focus_areas' || (!hoverSection && activeSection === 'focus_areas'), 283 'bg-peach': hoverSection === 'who_we_are' || (!hoverSection && activeSection === 'who_we_are'), 284 'bg-leaf': hoverSection === 'news_and_ideas' || (!hoverSection && activeSection === 'news_and_ideas'), 285 'bg-sky': hoverSection === 'grants' || (!hoverSection && activeSection === 'grants') 286 }" 287 > 288 <!-- Logo and Controls --> 289 <div class="absolute md:relative md:inset-auto w-full top-0 inset-x-0 z-[999]"> 290 <div class="flex justify-between items-center wrapper py-1.5 md:py-4"> 291 292 <!-- Site Logo --> 293 <a 294 href="https://www.jsmf.org/" 295 class="site-logo" 296 aria-label="JSMF" 297 > 298 <img class="w-[3.8125rem] md:w-[4.8125rem] h-auto block" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="JSMF Logo" data-lazy-src="https://www.jsmf.org/wp-content/themes/jsmf/img/logo.svg"><noscript><img class="w-[3.8125rem] md:w-[4.8125rem] h-auto block" src="https://www.jsmf.org/wp-content/themes/jsmf/img/logo.svg" alt="JSMF Logo"></noscript> 299 </a> 300 301 <!-- Search and Close Buttons --> 302 <div class="flex items-center"> 303 <button 304 @click="$dispatch('toggle-search'); navOpen = false" 305 class="items-center justify-center hidden w-12 h-12 transition-opacity hover:opacity-75 md:flex" 306 aria-expanded="false" 307 aria-controls="search-drawer" 308 > 309 <span class="sr-only">Toggle search</span> 310 <img class="w-[1.400625rem] auto block" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Search icon" data-lazy-src="https://www.jsmf.org/wp-content/themes/jsmf/img/search.svg"><noscript><img class="w-[1.400625rem] auto block" src="https://www.jsmf.org/wp-content/themes/jsmf/img/search.svg" alt="Search icon"></noscript> 311 </button> 312 313 <button 314 @click="navOpen = false" 315 class="flex items-center justify-center w-12 h-12 -mr-3 transition-opacity hover:opacity-75" 316 aria-label="Close menu" 317 > 318 <img class="w-[1.14875rem] h-auto block" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Close icon" data-lazy-src="https://www.jsmf.org/wp-content/themes/jsmf/img/close.svg"><noscript><img class="w-[1.14875rem] h-auto block" src="https://www.jsmf.org/wp-content/themes/jsmf/img/close.svg" alt="Close icon"></noscript> 319 </button> 320 </div> 321 </div> 322 </div> 323 <!-- Drawer Header --> 324 <div class="wrapper flex flex-col pt-33 md:pt-[25vh] pb-4.5"> 325 326 <!-- Two-column Layout Container --> 327 <div id="nav-drawer-content" 328 class="flex flex-col md:grid md:grid-cols-2 md:gap-x-5 md:items-center max-md:flex-1" 329 @mouseleave="hoverSection = null" 330 > 331 <!-- Left Column: Main Navigation --> 332 <nav class="relative z-20" 333 role="navigation" 334 aria-label="Main navigation" 335 @focusout="$event.relatedTarget?.closest('#nav-drawer-content') || (hoverSection = null)" 336 > 337 <ul id="menu-primary" class="flex flex-col gap-y-5 md:gap-y-9 items-start"><button type="button" role="button" aria-expanded="isMobile ? activeSubmenu === 'focus_areas' : hoverSection === 'focus_areas'" aria-haspopup="menu" class="group flex items-center transition-all text-5xl font-serif text-black transition-opacity underline-offset-10 text-left relative pr-8 gap-x-3 menu-item-57" @click.prevent.stop="if(isMobile) { lastActiveSubmenu = null; activeSubmenu = 'focus_areas'; } else { hoverSection = 'focus_areas' }" @mouseenter="!isMobile && (hoverSection = 'focus_areas')" @focus="!isMobile && (hoverSection = 'focus_areas')" x-ref="parent-focus_areas" x-bind:class="{ 338 // Dim other sections when one is hovered (desktop only) 339 'opacity-40': !isMobile && hoverSection && hoverSection !== 'focus_areas' && activeSection !== 'focus_areas', 340 // Underline active/hovered section (desktop only) 341 'underline': !isMobile && (hoverSection === 'focus_areas' || activeSection === 'focus_areas') 342 }">Areas of Focus<svg class="w-2 h-4 md:hidden" viewBox="0 0 8 16" fill="none"><path d="M1 1l6 7-6 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
342<ul class="md:absolute md:left-[calc(100%+1.25rem)] md:top-0 w-full" 343 role="menu" 344 x-show="(!isMobile && (hoverSection === 'focus_areas' || (activeSection === 'focus_areas' && !hoverSection)))" 345 x-ref="submenu-focus_areas" 346 ><a href="https://www.jsmf.org/focus-areas/civic-infrastructure/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-52" aria-current="page">Civic Infrastructure</a></li> 347<a href="https://www.jsmf.org/focus-areas/wealth-building-protection/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-53">Wealth Building & Protection</a></li> 348<a href="https://www.jsmf.org/focus-areas/small-midsize-businesses/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-54">Small & Midsize Businesses</a></li> 349<a href="https://www.jsmf.org/focus-areas/workforce/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-55">Workforce</a></li> 350</ul> 351</li> 352<button type="button" role="button" aria-expanded="isMobile ? activeSubmenu === 'who_we_are' : hoverSection === 'who_we_are'" aria-haspopup="menu" class="group flex items-center transition-all text-5xl font-serif text-black transition-opacity underline-offset-10 text-left relative pr-8 gap-x-3 menu-item-58" @click.prevent.stop="if(isMobile) { lastActiveSubmenu = null; activeSubmenu = 'who_we_are'; } else { hoverSection = 'who_we_are' }" @mouseenter="!isMobile && (hoverSection = 'who_we_are')" @focus="!isMobile && (hoverSection = 'who_we_are')" x-ref="parent-who_we_are" x-bind:class="{ 353 // Dim other sections when one is hovered (desktop only) 354 'opacity-40': !isMobile && hoverSection && hoverSection !== 'who_we_are' && activeSection !== 'who_we_are', 355 // Underline active/hovered section (desktop only) 356 'underline': !isMobile && (hoverSection === 'who_we_are' || activeSection === 'who_we_are') 357 }">Who We Are<svg class="w-2 h-4 md:hidden" viewBox="0 0 8 16" fill="none"><path d="M1 1l6 7-6 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button><ul class="md:absolute md:left-[calc(100%+1.25rem)] md:top-0 w-full" 358 role="menu" 359 x-show="(!isMobile && (hoverSection === 'who_we_are' || (activeSection === 'who_we_are' && !hoverSection)))" 360 x-ref="submenu-who_we_are" 361 ><a href="https://www.jsmf.org/our-mission/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-3029">Our Mission</a></li> 362<a href="https://www.jsmf.org/people/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-63">People</a></li> 363<a href="https://www.jsmf.org/history/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-62">History</a></li> 364<a href="https://apply.workable.com/james-s-mcdonnell-foundation/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-206">Careers</a></li> 365<a href="https://www.jsmf.org/contact/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-60">Contact</a></li> 366</ul> 367</li> 368<button type="button" role="button" aria-expanded="isMobile ? activeSubmenu === 'news_and_ideas' : hoverSection === 'news_and_ideas'" aria-haspopup="menu" class="group flex items-center transition-all text-5xl font-serif text-black transition-opacity underline-offset-10 text-left relative pr-8 gap-x-3 menu-item-65" @click.prevent.stop="if(isMobile) { lastActiveSubmenu = null; activeSubmenu = 'news_and_ideas'; } else { hoverSection = 'news_and_ideas' }" @mouseenter="!isMobile && (hoverSection = 'news_and_ideas')" @focus="!isMobile && (hoverSection = 'news_and_ideas')" x-ref="parent-news_and_ideas" x-bind:class="{ 369 // Dim other sections when one is hovered (desktop only) 370 'opacity-40': !isMobile && hoverSection && hoverSection !== 'news_and_ideas' && activeSection !== 'news_and_ideas', 371 // Underline active/hovered section (desktop only) 372 'underline': !isMobile && (hoverSection === 'news_and_ideas' || activeSection === 'news_and_ideas') 373 }">News & Ideas<svg class="w-2 h-4 md:hidden" viewBox="0 0 8 16" fill="none"><path d="M1 1l6 7-6 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
373<ul class="md:absolute md:left-[calc(100%+1.25rem)] md:top-0 w-full" 374 role="menu" 375 x-show="(!isMobile && (hoverSection === 'news_and_ideas' || (activeSection === 'news_and_ideas' && !hoverSection)))" 376 x-ref="submenu-news_and_ideas" 377 ><a href="https://www.jsmf.org/news-ideas/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-66">View All News & Ideas</a></li> 378<a href="https://www.jsmf.org/category/impact-stories/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-2902">Impact Stories</a></li> 379<a href="https://www.jsmf.org/category/news/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-2903">News</a></li> 380<a href="https://www.jsmf.org/prosperity-that-works-podcast/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-3127">Prosperity That Works Podcast</a></li> 381</ul> 382</li> 383<button type="button" role="button" aria-expanded="isMobile ? activeSubmenu === 'grants' : hoverSection === 'grants'" aria-haspopup="menu" class="group flex items-center transition-all text-5xl font-serif text-black transition-opacity underline-offset-10 text-left relative pr-8 gap-x-3 menu-item-70" @click.prevent.stop="if(isMobile) { lastActiveSubmenu = null; activeSubmenu = 'grants'; } else { hoverSection = 'grants' }" @mouseenter="!isMobile && (hoverSection = 'grants')" @focus="!isMobile && (hoverSection = 'grants')" x-ref="parent-grants" x-bind:class="{ 384 // Dim other sections when one is hovered (desktop only) 385 'opacity-40': !isMobile && hoverSection && hoverSection !== 'grants' && activeSection !== 'grants', 386 // Underline active/hovered section (desktop only) 387 'underline': !isMobile && (hoverSection === 'grants' || activeSection === 'grants') 388 }">Grants<svg class="w-2 h-4 md:hidden" viewBox="0 0 8 16" fill="none"><path d="M1 1l6 7-6 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button><ul class="md:absolute md:left-[calc(100%+1.25rem)] md:top-0 w-full" 389 role="menu" 390 x-show="(!isMobile && (hoverSection === 'grants' || (activeSection === 'grants' && !hoverSection)))" 391 x-ref="submenu-grants" 392 ><a href="https://www.jsmf.org/how-we-work/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-71">How We Work</a></li> 393<a href="https://www.jsmf.org/grants/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-73">Grants Database</a></li> 394<a href="https://www.jsmf.org/proposals/" role="menuitem" class="block text-base text-black font-sans font-bold transition-all mb-5 hover:opacity-40 focus:opacity-40 duration-300 ease-in-out w-full menu-item-2869">Proposals</a></li> 395</ul> 396</li> 397</ul> </nav> 398 399 <!-- Mobile Search Input --> 400 <div class="relative mt-6 md:hidden mb-14 md:mb-0"> 401 <form 402 action="https://www.jsmf.org/" 403 method="get" 404 class="relative" 405 > 406 <input 407 type="search" 408 name="s" 409 placeholder="Search" 410 class="w-full bg-transparent !border-0 !p-3.5 !pl-9 font-serif text-base italic placeholder:text-black focus:!ring-2 focus:!ring-offset-2 focus:!ring-primary !rounded" 411 > 412 <div 413 class="absolute left-0 -translate-y-1/2 pointer-events-none top-1/2" 414 > 415 <svg width="23" height="23" viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg"> 416 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.25383 1.61308C5.82784 0.561355 7.67838 0 9.57143 0H9.57149C12.1099 0.000161588 14.5443 1.00862 16.3393 2.80357C18.1342 4.59851 19.1427 7.03293 19.1429 9.57136V9.57143C19.1429 11.4645 18.5815 13.315 17.5298 14.889C16.4781 16.463 14.9832
41617.6898 13.2343 18.4143C11.4853 19.1387 9.56081 19.3283 7.70414 18.9589C5.84746 18.5896 4.142 17.678 2.80341 16.3394C1.46482 15.0009 0.553232 13.2954 0.183917 11.4387C-0.185399 9.58204 0.00414705 7.65755 0.728586 5.9086C1.45302 4.15965 2.67982 2.6648 4.25383 1.61308ZM9.57137 2C8.0739 2.00001 6.61007 2.44407 5.36497 3.27602C4.11986 4.10797 3.14941 5.29047 2.57634 6.67397C2.00328 8.05746 1.85334 9.57983 2.14549 11.0485C2.43763 12.5173 3.15874 13.8663 4.21762 14.9252C5.27651 15.9841 6.62561 16.7052 8.09432 16.9974C9.56303 17.2895 11.0854 17.1396 12.4689 16.5665C13.8524 15.9934 15.0349 15.023 15.8668 13.7779C16.6988 12.5328 17.1428 11.069 17.1429 9.57149M9.57143 2C11.5795 2.00014 13.5052 2.79789 14.9251 4.21778C16.345 5.63767 17.1427 7.5634 17.1429 9.57143"/> 417 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.2384 14.824L22.4146 21.0001L21.0003 22.4143L14.8242 16.2382L16.2384 14.824Z"/> 418 </svg> 419 </div> 420 </form> 421 </div> 422 423 <!-- Right Column: Newsletter and Social --> 424 <div class="relative max-md:mt-auto"> 425 <!-- Newsletter Form (only shown in default state) --> 426 <div x-show="activeSection === 'default' && !hoverSection"> 427 <div id="nav-newsletter" class="mb-8"> 428 <h2 class="font-sans font-bold text-sm tracking-[.0714em] uppercase mb-4.5"> 429 Sign up for our newsletter </h2> 430 431 <div class='gf_browser_chrome gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital' data-form-theme='orbital' data-form-index='0' id='gform_wrapper_1' ><style>#gform_wrapper_1[data-form-index="0"].gform-theme{--gf-color-primary: #204ce5;--gf-color-primary-rgb: 32, 76, 229;--gf-color-primary-contrast: #fff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #001AB3;--gf-color-primary-lighter: #527EFF;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #204ce5;--gf-color-in-ctrl-primary-rgb: 32, 76, 229;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #001AB3;--gf-color-in-ctrl-primary-lighter: #527EFF;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url("data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-select: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893
431C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-search: url("data:image/svg+xml,%3Csvg width='640' height='640' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-btn-bg-color-hover-tertiary: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}</style><div id='gf_1' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_1' id='gform_1' action='/focus-areas/civic-infrastructure/#gf_1' data-formid='1' novalidate> 432 <div class='gform-body gform_body'><div id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_1_1" class="gfield gfield--type-email gfield--input-type-email field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_1'><span class='gform-field-label__text'>Email</span></label><div class='ginput_container ginput_container_email'> 433 <input name='input_1' id='input_1_1' type='email' value='' class='large' placeholder='Email' aria-invalid="false" /> 434 </div></div></div></div> 435 <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_1' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Sign Up</button> <input type='hidden' name='gform_ajax' value='form_id=1&title=&description=&tabindex=0&theme=orbital&hash=d443ac778972664c43208968009c4658' /> 436 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_1' value='iframe' /> 437 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_1' id='gform_theme_1' value='orbital' /> 438 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_1' id='gform_style_settings_1' value='' /> 439 <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' /> 440 <input type='hidden' class='gform_hidden' name='gform_submit' value='1' /> 441 442 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='yd1mLTZ6ixnoOk0QeAuvo/AN1uGirDbKOpHjmVVMFTs3xtkKMdRd+gx/pNab2lJ8WXXtjQRKjb+vCcmb2JXYWXrr2Y2hl0tX
442dHtPkyztbGxbTGI=' /> 443 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 444 <input type='hidden' class='gform_hidden' name='state_1' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjA4YmQxZDkzNDA5M2QzYzIxYTdhNmMxYjU2MDRjODE5XCIsXCIzMGI1ZWUwNDllNTc4MzBlMjZhYzBhZmY4MDM3ZWRiYVwiLFwiY2FiOWY3YTQxZmI3MDkyY2U2ZmY3NzY4N2ExZTQ3MWFcIl0sXCJnZm9ybV90aGVtZVwiOlwiYWJkMmE3Mzg2YTE0ODRhOTBmOWY2MGZiY2Y5NGU1N2ZcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCJiNzcxMWE3YTQxNTY2NDY3MWU3OWIyOGM3ODNmZjQ1NFwiLFwiZm9ybV9pZFwiOlwiZmI0NmY1Y2Y4MzZkNzY1MGIyMDM3OGIxMDlhNWQyNjRcIixcInVybFwiOlwiNTM4NjNmNjc2MTUyMDM0N2QxZDM2NmM5NGEyYjNiYjJcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiOTI0YzRhZjVhZjI3MGMyODkwNzJiMWZkNTJhMGQzZGRcIn0iLCIzYWYzY2FmYjMwZGQ0OGI3MDE4MzNmNjg5MjA4M2QzZCIsMTc5MDIyNDM4Ml0=' /> 445 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' /> 446 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' /> 447 <input type='hidden' name='gform_field_values' value='' /> 448 449 </div> 450 </form> 451 </div> 452 <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> 453
453<script> 454gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_1').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_1').val();jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 1, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 455</script>
455 456 </div> 457 </div> 458 459 <!-- Social Links (only shown in default state) --> 460 <div x-show="activeSection === 'default' && !hoverSection" class="flex mt-8 gap-x-3 md:mt-24"> 461 <a 462 href="https://www.facebook.com/JSMFSTL/" 463 aria-label="facebook-f" 464 target="_blank" 465 rel="noopener" 466 class="flex items-center justify-center text-xl transition-opacity hover:opacity-40 w-9 h-9" 467 > 468 <i class="fa-brands fa-facebook-f"></i> 469 </a> 470 <a 471 href="https://www.instagram.com/jsmfstl" 472 aria-label="instagram" 473 target="_blank" 474 rel="noopener" 475 class="flex items-center justify-center text-xl transition-opacity hover:opacity-40 w-9 h-9" 476 > 477 <i class="fa-brands fa-instagram"></i> 478 </a> 479 <a 480 href="https://www.linkedin.com/company/jsmf/" 481 aria-label="linkedin-in" 482 target="_blank" 483 rel="noopener" 484 class="flex items-center justify-center text-xl transition-opacity hover:opacity-40 w-9 h-9" 485 > 486 <i class="fa-brands fa-linkedin-in"></i> 487 </a> 488 <a 489 href="https://www.youtube.com/@JSMFSTL" 490 aria-label="youtube" 491 target="_blank" 492 rel="noopener" 493 class="flex items-center justify-center text-xl transition-opacity hover:opacity-40 w-9 h-9" 494 > 495 <i class="fa-brands fa-youtube"></i> 496 </a> 497 </div> 498 </div> 499 </div> 500 </div> 501 502 <!-- Mobile Submenu --> 503 <div 504 x-show="isMobile && activeSubmenu" 505 x-transition:enter="transition-transform duration-300 ease-[cubic-bezier(0.25,1,0.5,1)]" 506 x-transition:enter-start="translate-x-full" 507 x-transition:enter-end="translate-x-0" 508 x-transition:leave="transition-transform duration-300 ease-[cubic-bezier(0.25,1,0.5,1)]" 509 x-transition:leave-start="translate-x-0" 510 x-transition:leave-end="translate-x-full" 511 @click.away="lastActiveSubmenu = activeSubmenu; activeSubmenu = null" 512 class="fixed inset-0 z-40" 513 :class="{ 514 'bg-mint': activeSubmenu === 'focus_areas' || lastActiveSubmenu === 'focus_areas', 515 'bg-peach': activeSubmenu === 'who_we_are' || lastActiveSubmenu === 'who_we_are', 516 'bg-leaf': activeSubmenu === 'news_and_ideas' || lastActiveSubmenu === 'news_and_ideas', 517 'bg-sky': activeSubmenu === 'grants' || lastActiveSubmenu === 'grants' 518 }" 519 > 520 <div class="wrapper py-1.5 md:py-4 pt-33"> 521 <button 522 @click="lastActiveSubmenu = activeSubmenu; activeSubmenu = null" 523 class="flex items-center mb-10 font-serif text-4xl text-black underline transition-opacity hover:opacity-75 gap-x-3 underline-offset-7" 524 aria-label="Back to main menu" 525 > 526 <svg class="w-2 h-4" 527 viewBox="0 0 8 16" 528 fill="none" 529 > 530 <path d="M7 15L1 8l6-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 531 </svg> 532 <span x-text="$refs[`parent-${activeSubmenu}`]?.textContent"></span> 533 </button> 534 535 <div id="mobile-submenu-content" class="px-5"> 536 <div x-html="$refs[`submenu-${activeSubmenu}`]?.innerHTML"></div> 537 </div> 538 </div> 539 </div> 540 </div> 541</div> 542 543<div 544 x-data="{ 545 searchOpen: false, 546 isActive: false, 547 hasContent: false, 548 closeSearch() { 549 this.searchOpen = false; 550 $nextTick(() => { 551 const searchToggle = document.getElementById('search-toggle'); 552 searchToggle?.focus(); 553 }); 554 }, 555 checkActive() { 556 return this.isActive || this.hasContent || $refs.submitButton === document.activeElement; 557 } 558 }" 559 x-init="$nextTick(() => hasContent = $refs.searchInput.value.length > 0)" 560 @toggle-search.window=" 561 searchOpen = !searchOpen; 562 if (searchOpen) { 563 $nextTick(() => { 564 $refs.searchInput.focus(); 565 hasContent = $refs.searchInput.value.length > 0; 566 }); 567 } 568 " 569 @keydown.escape.prevent.stop.window=" 570 if (searchOpen) { 571 closeSearch(); 572 } 573 " 574 class="fixed inset-0 z-50 hidden transition-all duration-300 md:block" 575 :class="{ 'pointer-events-none': !searchOpen }" 576 role="region" 577 aria-label="Search" 578 x-cloak 579> 580 <!-- Semi-transparent backdrop that closes the drawer when clicked. --> 581 <div 582 x-show="searchOpen" 583 x-transition:enter="transition-opacity ease-out duration-300" 584 x-transition:enter-start="opacity-0" 585 x-transition:enter-end="opacity-100" 586 x-transition:leave="transition-opacity ease-in duration-300" 587 x-transition:leave-start="opacity-100" 588 x-transition:leave-end="opacity-0" 589 class="absolute inset-0 bg-black/30" 590 @click="closeSearch()" 591 role="presentation" 592 ></div> 593 594 <!-- Search drawer panel that slides up from bottom. --> 595 <div 596 x-show="searchOpen"
597 x-transition:enter="transition-transform ease-out duration-300" 598 x-transition:enter-start="translate-y-full" 599 x-transition:enter-end="translate-y-0" 600 x-transition:leave="transition-transform ease-in duration-300" 601 x-transition:leave-start="translate-y-0" 602 x-transition:leave-end="translate-y-full" 603 class="absolute inset-x-0 bottom-0 bg-white" 604 role="search" 605 aria-modal="true" 606 > 607 <div class="wrapper py-40"> 608 609<form 610 action="https://www.jsmf.org/" 611 method="get" 612 class="relative max-w-247 xl:pr-21 mx-auto" 613 role="search" 614> 615 <div class="relative"> 616 <label 617 for="search-input" 618 class="absolute left-0 text-black transition- duration-300 ease-out text-5xl origin-bottom-left" 619 :class="{ 620 '-translate-y-full font-sans tracking-[.0714em] uppercase font-bold scale-[29.166667%] top-0 pointer-events-auto': checkActive(), 621 '-translate-y-1/2 font-serif tracking-normal normal-case font-medium scale-100 top-1/2 pointer-events-none': !checkActive() 622 }" 623 > 624 Search </label> 625 626 <input 627 type="search" 628 id="search-input" 629 x-ref="searchInput" 630 @focus="isActive = true" 631 @blur="isActive = false" 632 @input="hasContent = $el.value.length > 0" 633 class="w-full !pl-0 !pr-10 md:!pr-16 py-1.5 md:!py-3 !text-[1.5rem] !leading-[1.08333333] md:!text-5xl md:!leading-[1.05263158] !border-0 !border-b !border-black/40 focus-visible:!border-black focus-visible:outline-none focus-visible:!shadow-none" 634 style="box-shadow: none !important" 635 value="" 636 name="s" 637 required 638 > 639 640 <button 641 type="submit" 642 x-ref="submitButton" 643 :disabled="!hasContent" 644 class="absolute right-0 top-1/2 -translate-y-1/2 btn w-7 h-7 md:w-12 md:h-12 p-0 transition-colors duration-300 fill-white" 645 :class="hasContent ? 'opacity-100 hover:fill-primary focus-visible:fill-primary' : 'opacity-40 cursor-not-allowed hover:!bg-primary hover:!fill-white'" 646 aria-label="Submit search" 647 > 648 <span class="sr-only">Submit search</span> 649 <svg class="hidden md:block" width="23" height="23" viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"> 650 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.25383 1.61308C5.82784 0.561355 7.67838 0 9.57143 0H9.57149C12.1099 0.000161588 14.5443 1.00862 16.3393 2.80357C18.1342 4.59851 19.1427 7.03293 19.1429 9.57136V9.57143C19.1429 11.4645 18.5815 13.315 17.5298 14.889C16.4781 16.463 14.9832 17.6898 13.2343 18.4143C11.4853 19.1387 9.56081 19.3283 7.70414 18.9589C5.84746 18.5896 4.142 17.678 2.80341 16.3394C1.46482 15.0009 0.553232 13.2954 0.183917 11.4387C-0.185399 9.58204 0.00414705 7.65755 0.728586 5.9086C1.45302 4.15965 2.67982 2.6648 4.25383 1.61308ZM9.57137 2C8.0739 2.00001 6.61007 2.44407 5.36497 3.27602C4.11986 4.10797 3.14941 5.29047 2.57634 6.67397C2.00328 8.05746 1.85334 9.57983 2.14549 11.0485C2.43763 12.5173 3.15874 13.8663 4.21762 14.9252C5.27651 15.9841 6.62561 16.7052 8.09432 16.9974C9.56303 17.2895 11.0854 17.1396 12.4689 16.5665C13.8524 15.9934 15.0349 15.023 15.8668 13.7779C16.6988 12.5328 17.1428 11.069 17.1429 9.57149M9.57143 2C11.5795 2.00014 13.5052 2.79789 14.9251 4.21778C16.345 5.63767 17.1427 7.5634 17.1429 9.57143"/> 651 <path fill-rule="evenodd" clip-rule="evenodd" d="M16.2384 14.824L22.4146 21.0001L21.0003 22.4143L14.8242 16.2382L16.2384 14.824Z"/> 652 </svg> 653 <svg class="block md:hidden" width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"> 654 <path fill-rule="evenodd" clip-rule="evenodd" d="M3.20444 1.49953C4.2205 0.820619 5.41506 0.458252 6.63707 0.458252H6.63713C8.27574 0.458356 9.84721 1.10934 11.0059 2.26801C12.1646 3.42668 12.8155 4.99815 12.8156 6.63676V6.63682C12.8156 7.85883 12.4533 9.05339 11.7744 10.0695C11.0955 11.0855 10.1305 11.8774 9.00151 12.3451C7.87252 12.8127 6.63022 12.9351 5.43169 12.6967C4.23317 12.4583 3.13225 11.8698 2.26816 11.0057C1.40407 10.1416 0.81562 9.04073 0.577218 7.8422C0.338817 6.64368 0.461173 5.40137 0.928815 4.27239C1.39646 3.1434 2.18838 2.17844 3.20444 1.49953ZM6.63701 2.45825C5.81059 2.45826 5.00272 2.70333 4.31558 3.16247C3.62842 3.62162 3.09284 4.27422 2.77657 5.03775C2.46031 5.80129 2.37756 6.64146 2.53879 7.45202C2.70002 8.26258 3.09799 9.00713 3.68237 9.59152C4.26676 10.1759 5.01131 10.5739 5.82187 10.7351C6.63243 10.8963 7.47261 10.8136 8.23614 10.4973C8.99967 10.1811 9.65228 9.64547 10.1114 8.95831C10.5706 8.27117 10.8156 7.46331 10.8156 6.63689M6.63707 2.45825C7.74527 2.45834 8.80805 2.89861 9.59167 3.68222C10.3753 4.46584 10.8156 5.52862 10.8156 6.63682" fill="white"/> 655 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.6647 9.25049L14.9559 13.5417L13.5417 14.9559L9.25049 10.6647L10.6647 9.25049Z" fill="white"/> 656 </svg> 657 </button> 658 </div> 659</form> 660 661 <!-- Close button in top-right corner. --> 662 <button 663 @click="closeSearch()" 664 class="absolute w-12 h-12 flex items-center justify-center top-4 right-[var(--global-content-edge-padding)] group" 665 aria-label="Close search" 666 > 667 <img class="w-[1.14875rem] h-auto block opacity-40 group-hover:opacity-100 group-focus-visible:opacity-100 transition-opacity duration-300 ease-in-out" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="Close icon" data-lazy-src="https://www.jsmf.org/wp-content/themes/jsmf/img/close.svg"><noscript><img class="w-[1.14875rem] h-auto block opacity-40 group-hover:opacity-100 group-focus-visible:opacity-100 transition-opacity duration-300 ease-in-out" src="https://www.jsmf.org/wp-content/themes/jsmf/img/close.svg" alt="Close icon"></noscript> 668 </button> 669 </div> 670 </div> 671</div> 672 673 <!-- Main content area -->
674 <main id="content" class="entry-content" tabindex="-1"> 675 676<article id="post-36" class="post-36 focus-areas type-focus-areas status-publish has-post-thumbnail hentry" itemscope itemtype="https://schema.org/Article"> 677 <!-- Hero Section --> 678 <section id="sticky-hero" class="w-full pt-14 md:pt-20 pb-10 md:pb-12" aria-labelledby="focus-area-title"> 679 <div class="wrapper sticky-hero-wrapper"> 680 <div class="flex flex-col items-center lg:flex-row gap-y-8 md:gap-y-12 lg:gap-x-29"> 681 <!-- Text Column --> 682 <div class="w-full lg:w-[60.5%] order-2 lg:order-1 @container"> 683 <!-- Focus Area Name (Overline) --> 684 <h1 class="font-sans font-bold text-sm tracking-[.0714em] uppercase mb-4 md:mb-6" data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}'> 685 Civic Infrastructure </h1> 686 687 <!-- Focus Area Title --> 688 <h2 id="focus-area-title" class="text-[2.375rem] max-md:leading-[1.05263158] md:text-6xl [&>u]:font-sans [&>u]:font-semibold [&>u]:underline-offset-[.15em] [&>u]:decoration-[.0667em] text-resilient-red" data-motion='{"opacity": [0, 1], "duration": 0.8, "delay": 0.1, "easing": "ease-out"}'> 689 Building Capacity for Collaboration </h2> 690 </div> 691 692 <!-- Images Column --> 693 <div id="sticky-hero-images" class="w-full lg:w-[39.5%] order-1 lg:order-2 flex flex-col"> 694 <!-- Featured Image --> 695 <div id="sticky-hero-primary-image" class="aspect-[4/3] overflow-hidden lg:-mr-[1.6875rem] lg:-ml-[4%] -mr-[var(--global-content-edge-padding)] max-lg:w-[calc(100%-27.217%+var(--global-content-edge-padding))] max-lg:self-end"> 696 <img width="1024" height="501" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%20501'%3E%3C/svg%3E" class="w-full h-full object-cover object-center wp-post-image" alt="Five multistory brick homes as seen above a concrete wall with the word GROW written on it." decoding="async" fetchpriority="high" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1024x501.jpg 1024w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-300x147.jpg 300w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-768x376.jpg 768w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1536x752.jpg 1536w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1280x627.jpg 1280w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1706x835.jpg 1706w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-853x418.jpg 853w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780.jpg 1920w" data-lazy-sizes="(max-width: 1024px) 100vw, 1024px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1024x501.jpg" /><noscript><img width="1024" height="501" src="https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1024x501.jpg" class="w-full h-full object-cover object-center wp-post-image" alt="Five multistory brick homes as seen above a concrete wall with the word GROW written on it." decoding="async" fetchpriority="high" srcset="https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1024x501.jpg 1024w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-300x147.jpg 300w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-768x376.jpg 768w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1536x752.jpg 1536w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1280x627.jpg 1280w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-1706x835.jpg 1706w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780-853x418.jpg 853w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-1-1-e1747336004780.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></noscript> </div> 697 698 <!-- Secondary Image --> 699 <div id="sticky-hero-secondary-image" class="aspect-[3/2] overflow-hidden -mt-[3.4375rem] lg:-mt-[1.375rem] max-lg:w-[73.7%] lg:-ml-[5.3125rem]"> 700 <img width="1024" height="683" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%20683'%3E%3C/svg%3E" class="w-full h-full object-cover object-center" alt="A person reading a book in a library." decoding="async" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1024x683.jpg 1024w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-300x200.jpg 300w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-768x512.jpg 768w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1536x1024.jpg 1536w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1280x853.jpg 1280w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1706x1137.jpg 1706w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-853x569.jpg 853w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2.jpg 1920w" data-lazy-sizes="(max-width: 1024px) 100vw, 1024px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1024x683.jpg" /><noscript><img width="1024" height="683" src="https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1024x683.jpg" class="w-full h-full object-cover object-center" alt="A person reading a book in a library." decoding="async" srcset="https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1024x683.jpg 1024w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-300x200.jpg 300w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-768x512.jpg 768w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1536x1024.jpg 1536w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1280x853.jpg 1280w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-1706x1137.jpg 1706w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2-853x569.jpg 853w, https://www.jsmf.org/wp-content/uploads/2025/05/civic-2.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></noscript> </div> 701 </div> 702 </div> 703 </div> 704 </section> 705 706 <!-- Intro Section --> 707 <section id="sticky-hero-intro" class="bg-warm-white relative pt-20 pb-30 md:pt-30 md:pb-32" aria-labelledby="intro-headline"> 708 <div class="wrapper"> 709 <div class="max-w-248 mx-auto lg:pr-21.5"> 710 <h2 id="intro-headline" class="text-3xl" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}'>
711 Effective civic infrastructure is essential to achieving economic growth at scale. </h2> 712 713 <div class="mt-3 md:mt-4 prose" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "delay": 0.1, "easing": "ease-out"}'> 714 <p>We invest in strengthening the region’s capacity for collaboration, shared learning, and collective action. This includes developing leaders, facilitating cross-sector partnerships, and helping to shape our shared understanding of our region’s challenges and opportunities. When the grassroots and “grasstops” can work together effectively, St. Louis will be the region we know it can be.</p> 715 </div> 716 717 <div class="mt-8 md:mt-15" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.2, "easing": "ease-out"}'> 718 <a 719 href="https://www.jsmf.org/proposals/" 720 class="inline-block font-sans text-base font-bold btn-link after:bg-resilient-red" 721 > 722 Start the grant conversation </a> 723 </div> 724 </div> 725 </div> 726 </section> 727 728 <!-- Stats Section --> 729 <section class="pb-30 pt-20 md:py-30 relative z-10 bg-berry" aria-labelledby="stats-headline"> 730 <div class="wrapper"> 731 <div class="flex flex-col md:flex-row gap-x-16 lg:gap-x-[15.2%] gap-y-20"> 732 <div class="w-full max-w-98 shrink-0" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}'> 733 <!-- Focus Area Name (Overline) --> 734 <div class="font-sans font-bold text-sm tracking-[.0714em] uppercase mb-4 md:mb-6"> 735 Civic Infrastructure </div> 736 737 <!-- Stats Headline --> 738 <h2 id="stats-headline" class="text-3xl mb-8 md:mb-10"> 739 Our Commitment </h2> 740 741 <!-- View All Grants Link --> 742 <a 743 href="https://www.jsmf.org/grants/?_focus_area=36" 744 class="inline-block font-sans text-base font-bold btn-link after:bg-black" 745 > 746 View all Civic Infrastructure Grants </a> 747 </div> 748 749 <!-- Stats Grid --> 750 <div class="@container shrink-1 w-full"> 751 <div class="grid grid-cols-1 @xl:grid-cols-2 gap-8 gap-y-11"> 752 <div class="max-w-77" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "delay": 0.1, "easing": "ease-out"}'> 753 <div class="text-8xl md:text-6xl @xl:text-8xl font-serif text-black"> 754 15+ </div> 755 <div class="text-base font-bold font-sans max-w-56"> 756 grants funded since 2023 </div> 757 </div> 758 <div class="max-w-77" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "delay": 0.2, "easing": "ease-out"}'> 759 <div class="text-8xl md:text-6xl @xl:text-8xl font-serif text-black"> 760 Change </div> 761 <div class="text-base font-bold font-sans max-w-56"> 762 for the St. Louis region </div> 763 </div> 764 </div> 765 </div> 766 </div> 767 </div> 768 </section> 769 770 <!-- Impact Stories Section --> 771 <section class="py-20 md:py-30 relative z-10 bg-white" aria-labelledby="impact-stories-heading"> 772 <div class="wrapper"> 773 <div class="flex flex-col gap-y-12 md:gap-y-20"> 774 <div id="impact-story-3163" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.8, "delay": 0, "easing": "ease-out"}'> 775 776<article class="grid grid-cols-1 gap-y-6 md:gap-y-12 lg:grid-cols-12 lg:gap-x-20 xl:gap-x-29" 777 itemscope 778 itemtype="https://schema.org/Article" 779 aria-labelledby="featured-title-3163"> 780 <a 781 href="https://www.jsmf.org/inclusive-prosperity-partnership/" 782 class="relative md:col-span-6 xl:col-span-7 block group overflow-hidden" 783 aria-labelledby="featured-title-3163" 784 data-motion='{"opacity": [0, 1], "duration": 0.8, "easing": "ease-out"}' 785 > 786 <img width="1920" height="1080" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201920%201080'%3E%3C/svg%3E" class="w-full h-auto aspect-[3/2] lg:min-h-122 object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] wp-post-image" alt="Building an Economy that Works: Why We Invested in the Inclusive Prosperity Partnership" itemprop="image" aria-hidden="true" decoding="async" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website.jpeg 1920w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-300x169.jpeg 300w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1024x576.jpeg 1024
786w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-768x432.jpeg 768w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1536x864.jpeg 1536w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1280x720.jpeg 1280w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1706x960.jpeg 1706w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-853x480.jpeg 853w" data-lazy-sizes="(max-width: 1920px) 100vw, 1920px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website.jpeg" /><noscript><img width="1920" height="1080" src="https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website.jpeg" class="w-full h-auto aspect-[3/2] lg:min-h-122 object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] wp-post-image" alt="Building an Economy that Works: Why We Invested in the Inclusive Prosperity Partnership" itemprop="image" aria-hidden="true" decoding="async" srcset="https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website.jpeg 1920w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-300x169.jpeg 300w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1024x576.jpeg 1024w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-768x432.jpeg 768w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1536x864.jpeg 1536w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1280x720.jpeg 1280w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-1706x960.jpeg 1706w, https://www.jsmf.org/wp-content/uploads/2026/04/IPP-website-853x480.jpeg 853w" sizes="(max-width: 1920px) 100vw, 1920px" /></noscript> <div class="bg-resilient-red absolute bottom-0 inset-x-0 w-full transition-all duration-300 ease-in-out opacity-0 h-0 group-hover:h-3 group-hover:opacity-100 group-focus-visible:h-3 group-focus-visible:opacity-100"></div> 787 </a> 788 789 <div class="md:col-span-6 xl:col-span-5 lg:py-6 xl:py-12" data-motion='{"opacity": [0, 1], "duration": 0.8, "delay": 0.1, "easing": "ease-out"}'> 790 791 <h2 class="text-3xl"> 792 <a href="https://www.jsmf.org/inclusive-prosperity-partnership/" 793 id="featured-title-3163" 794 class="hover:text-resilient-red" 795 itemprop="headline"> 796 Building an Economy that Works: Why We Invested in the Inclusive Prosperity Partnership </a> 797 </h2> 798 799 <div class="mt-2 md:mt-4"> 800 <a href="https://www.jsmf.org/category/impact-stories/" 801 class="text-gray hover:text-black text-[1rem] leading-[1.25] font-sans" 802 itemprop="articleSection" 803 aria-label=" 804 Category for Building an Economy that Works: Why We Invested in the Inclusive Prosperity Partnership: Impact Stories "> 805 Impact Stories </a> 806 </div> 807 808 <meta itemprop="datePublished" content="2026-06-04T01:00:20-05:00"> 809 <meta itemprop="author" content="Brittany Krewson"> 810 <meta itemprop="url" content="https://www.jsmf.org/inclusive-prosperity-partnership/"> 811 </div> 812</article> 813 814 </div> 815 <div id="impact-story-3165" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.8, "delay": 0.1, "easing": "ease-out"}'> 816 817<article class="grid grid-cols-1 gap-y-6 md:gap-y-12 lg:grid-cols-12 lg:gap-x-20 xl:gap-x-29" 818 itemscope 819 itemtype="https://schema.org/Article" 820 aria-labelledby="featured-title-3165"> 821 <a 822 href="https://www.jsmf.org/tornado/" 823 class="relative md:col-span-6 xl:col-span-7 block group overflow-hidden" 824 aria-labelledby="featured-title-3165" 825 data-motion='{"opacity": [0, 1], "duration": 0.8, "easing": "ease-out"}' 826 > 827 <img width="1920" height="1080" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201920%201080'%3E%3C/svg%3E" class="w-full h-auto aspect-[3/2] lg:min-h-122 object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] wp-post-image" alt="After the Storm: JSMF Grantee Efforts Since the Tornado" itemprop="image" aria-hidden="true" decoding="async" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage.jpeg 1920w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-300x169.jpeg 300w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1024x576.jpeg 1024
827w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-768x432.jpeg 768w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1536x864.jpeg 1536w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1280x720.jpeg 1280w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1706x960.jpeg 1706w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-853x480.jpeg 853w" data-lazy-sizes="(max-width: 1920px) 100vw, 1920px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage.jpeg" /><noscript><img width="1920" height="1080" src="https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage.jpeg" class="w-full h-auto aspect-[3/2] lg:min-h-122 object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] wp-post-image" alt="After the Storm: JSMF Grantee Efforts Since the Tornado" itemprop="image" aria-hidden="true" decoding="async" srcset="https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage.jpeg 1920w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-300x169.jpeg 300w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1024x576.jpeg 1024w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-768x432.jpeg 768w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1536x864.jpeg 1536w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1280x720.jpeg 1280w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-1706x960.jpeg 1706w, https://www.jsmf.org/wp-content/uploads/2026/04/tornado-damage-853x480.jpeg 853w" sizes="(max-width: 1920px) 100vw, 1920px" /></noscript> <div class="bg-perennial-teal absolute bottom-0 inset-x-0 w-full transition-all duration-300 ease-in-out opacity-0 h-0 group-hover:h-3 group-hover:opacity-100 group-focus-visible:h-3 group-focus-visible:opacity-100"></div> 828 </a> 829 830 <div class="md:col-span-6 xl:col-span-5 lg:py-6 xl:py-12" data-motion='{"opacity": [0, 1], "duration": 0.8, "delay": 0.1, "easing": "ease-out"}'> 831 832 <h2 class="text-3xl"> 833 <a href="https://www.jsmf.org/tornado/" 834 id="featured-title-3165" 835 class="hover:text-perennial-teal" 836 itemprop="headline"> 837 After the Storm: JSMF Grantee Efforts Since the Tornado </a> 838 </h2> 839 840 <div class="mt-2 md:mt-4"> 841 <a href="https://www.jsmf.org/category/impact-stories/" 842 class="text-gray hover:text-black text-[1rem] leading-[1.25] font-sans" 843 itemprop="articleSection" 844 aria-label=" 845 Category for After the Storm: JSMF Grantee Efforts Since the Tornado: Impact Stories "> 846 Impact Stories </a> 847 </div> 848 849 <meta itemprop="datePublished" content="2026-05-15T10:27:20-05:00"> 850 <meta itemprop="author" content="Brittany Krewson"> 851 <meta itemprop="url" content="https://www.jsmf.org/tornado/"> 852 </div> 853</article> 854 855 </div> 856 </div> 857 858 <div class="mt-12 md:mt-20 text-center" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.1, "easing": "ease-out"}'> 859 <a href="https://www.jsmf.org/category/impact-stories/" class="inline-block font-sans text-base font-bold btn-link after:bg-resilient-red"> 860 View More Impact Stories + </a> 861 </div> 862 </div> 863 </section> 864 865 <!-- Related News & Ideas Section --> 866 <section class="pb-20 md:pb-38 bg-white relative z-10 related-posts" aria-labelledby="related-news-heading"> 867 <div class="wrapper"> 868 <!-- Section Header --> 869 <div class="@container"> 870 <div class="flex flex-col items-start @3xl:flex-row @3xl:items-end @3xl:justify-start gap-x-8 gap-y-4 mb-14 md:mb-12"> 871 <h2 id="related-posts-heading" class="text-5xl text-ardent-orange" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}'> 872 The Latest News & Ideas </h2> 873 <a href="https://www.jsmf.org/news-ideas/" 874 class="inline-block font-sans text-base font-bold btn-link after:bg-ardent-orange" 875 aria-label="View all news and ideas" 876 data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.1, "easing": "ease-out"}'> 877 <span aria-hidden="true">View All </span> 878 </a> 879 </div>
880 </div> 881 882 <!-- Related Posts Grid --> 883 <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-12 grid-rows-[auto_auto_auto] posts"> 884 885<article 886 id="post-card-3194" 887 class="@container" 888 itemscope 889 itemtype="https://schema.org/Article" 890 aria-labelledby="post-title-3194" 891 data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}' 892> 893 <style> 894 #post-card-3194 { 895 --card-color: var(--color-berry); 896 } 897 </style> 898 899 <a href="https://www.jsmf.org/spring-2026-grants/" 900 class="block group mb-4 @xl:mb-5" 901 aria-labelledby="post-title-3194"> 902 <div class="aspect-[3/2] w-full overflow-hidden relative"> 903 <img width="1920" height="880" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201920%20880'%3E%3C/svg%3E" class="w-full h-full object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] relative wp-post-image" alt="JSMF Announces Three 2026 Grants Totaling $2.2 Million" itemprop="image" aria-hidden="true" decoding="async" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1.png 1920w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-300x138.png 300w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1024x469.png 1024w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-768x352.png 768w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1536x704.png 1536w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1280x587.png 1280w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1706x782.png 1706w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-853x391.png 853w" data-lazy-sizes="(max-width: 1920px) 100vw, 1920px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1.png" /><noscript><img width="1920" height="880" src="https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1.png" class="w-full h-full object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] relative wp-post-image" alt="JSMF Announces Three 2026 Grants Totaling $2.2 Million" itemprop="image" aria-hidden="true" decoding="async" srcset="https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1.png 1920w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-300x138.png 300w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1024x469.png 1024w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-768x352.png 768w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1536x704.png 1536w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1280x587.png 1280w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-1706x782.png 1706w, https://www.jsmf.org/wp-content/uploads/2026/06/Spring-2026-Grantees-1-853x391.png 853w" sizes="(max-width: 1920px) 100vw, 1920px" /></noscript> <div class="absolute inset-x-0 bottom-0 w-full transition-all duration-300 ease-in-out h-0 opacity-0 origin-bottom group-hover:h-3 group-focus-visible:h-3 group-hover:opacity-100 group-focus-visible:opacity-100 bg-[var(--card-color)] z-10"></div> 904 </div> 905 </a> 906 907 <div> 908 <h2 class="max-w-162 mb-2"> 909 <a 910 href="https://www.jsmf.org/spring-2026-grants/" 911 id="post-title-3194" 912 class="font-sans font-bold inline bg-[linear-gradient(0deg_,transparent,_currentColor)] [background-position:200%_85%] [background-size:200%_0.0625rem] bg-no-repeat hover:[background-position:100%_85%] text-xl @xl:text-2xl" 913 itemprop="headline" 914 > 915 JSMF Announces Three 2026 Grants Totaling $2.2 Million </a> 916 </h2> 917 <a href="https://www.jsmf.org/category/news/" 918 class="block text-gray hover:text-black text-[1rem] leading-[1.25] font-sans" 919 itemprop="articleSection" 920 aria-label="
921 Category for JSMF Announces Three 2026 Grants Totaling $2.2 Million: News "> 922 News </a> 923 </div> 924 925 926 <meta itemprop="datePublished" content="2026-07-28T01:00:38-05:00"> 927 <meta itemprop="author" content="Brittany Krewson"> 928 <meta itemprop="url" content="https://www.jsmf.org/spring-2026-grants/"> 929</article> 930 931<article 932 id="post-card-3074" 933 class="@container" 934 itemscope 935 itemtype="https://schema.org/Article" 936 aria-labelledby="post-title-3074" 937 data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out", "delay": 0.1}' 938> 939 <style> 940 #post-card-3074 { 941 --card-color: var(--color-sky); 942 } 943 </style> 944 945 <a href="https://www.jsmf.org/new-grants-fall-2025/" 946 class="block group mb-4 @xl:mb-5" 947 aria-labelledby="post-title-3074"> 948 <div class="aspect-[3/2] w-full overflow-hidden relative"> 949 <img width="2560" height="1141" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%202560%201141'%3E%3C/svg%3E" class="w-full h-full object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] relative wp-post-image" alt="New Grants Totaling $9 Million Support Workforce Systems, Homeownership, and Civic Dialogue" itemprop="image" aria-hidden="true" decoding="async" data-lazy-srcset="https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-scaled.png 2560w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-300x134.png 300w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1024x456.png 1024w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-768x342.png 768w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1536x685.png 1536w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-2048x913.png 2048w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1280x570.png 1280w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1706x760.png 1706w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-853x380.png 853w" data-lazy-sizes="(max-width: 2560px) 100v
949w, 2560px" data-lazy-src="https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-scaled.png" /><noscript><img width="2560" height="1141" src="https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-scaled.png" class="w-full h-full object-cover object-center transition-transform duration-300 group-hover:scale-[107.38%] group-focus-visible:scale-[107.38%] relative wp-post-image" alt="New Grants Totaling $9 Million Support Workforce Systems, Homeownership, and Civic Dialogue" itemprop="image" aria-hidden="true" decoding="async" srcset="https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-scaled.png 2560w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-300x134.png 300w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1024x456.png 1024w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-768x342.png 768w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1536x685.png 1536w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-2048x913.png 2048w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1280x570.png 1280w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-1706x760.png 1706w, https://www.jsmf.org/wp-content/uploads/2025/10/August-2025-Grantees-Newsletter-2-853x380.png 853w" sizes="(max-width: 2560px) 100v
949w, 2560px" /></noscript> <div class="absolute inset-x-0 bottom-0 w-full transition-all duration-300 ease-in-out h-0 opacity-0 origin-bottom group-hover:h-3 group-focus-visible:h-3 group-hover:opacity-100 group-focus-visible:opacity-100 bg-[var(--card-color)] z-10"></div> 950 </div> 951 </a> 952 953 <div> 954 <h2 class="max-w-162 mb-2"> 955 <a 956 href="https://www.jsmf.org/new-grants-fall-2025/" 957 id="post-title-3074" 958 class="font-sans font-bold inline bg-[linear-gradient(0deg_,transparent,_currentColor)] [background-position:200%_85%] [background-size:200%_0.0625rem] bg-no-repeat hover:[background-position:100%_85%] text-xl @xl:text-2xl" 959 itemprop="headline" 960 > 961 New Grants Totaling $9 Million Support Workforce Systems, Homeownership, and Civic Dialogue </a> 962 </h2> 963 <a href="https://www.jsmf.org/category/news/" 964 class="block text-gray hover:text-black text-[1rem] leading-[1.25] font-sans" 965 itemprop="articleSection" 966 aria-label=" 967 Category for New Grants Totaling $9 Million Support Workforce Systems, Homeownership, and Civic Dialogue: News "> 968 News </a> 969 </div> 970 971 972 <meta itemprop="datePublished" content="2025-10-30T13:13:38-05:00"> 973 <meta itemprop="author" content="Brittany Krewson"> 974 <meta itemprop="url" content="https://www.jsmf.org/new-grants-fall-2025/"> 975</article> 976 </div> 977 </div> 978 </section> 979 </article> 980 981 982 </main><!-- #content --> 983 984 985<footer id="colophon" class="pb-5 md:pb-8 bg-white relative z-10"> 986 <div class="wrapper"> 987 <!-- Main Footer Content - Newsletter, Social, Menu --> 988 <div class="px-4 pt-20 bg-perennial-teal pb-13 md:pb-12 md:pt-34 md:px-12 lg:px-20"> 989 <!-- Newsletter Section - Two Column Layout --> 990 <div class="flex flex-col items-center text-white lg:flex-row gap-y-14 lg:gap-x-16 xl:gap-x-32"> 991 <!-- Left Column - Newsletter Text --> 992 <div class="w-full lg:w-[54%] text-center lg:text-left" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}'> 993 <h2 class="text-[2.75rem] max-md:leading-[1.04545455] md:text-5xl xl:text-7xl font-serif mb-2 md:mb-6">Stay Connected</h2> 994 <p class="mb-8 font-sans text-xl">Sign up for our newsletter to stay updated on the latest JSMF news and funding opportunities.</p> 995 </div> 996 <!-- Right Column - Newsletter Form --> 997 <!-- Uses unique ID for footer-specific form styles --> 998 <div id="footer-newsletter" class="w-full lg:w-[46%]" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "delay": 0.2, "easing": "ease-out"}'> 999 1000 <div class='gf_browser_chrome gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital' data-form-theme='orbital' data-form-index='0' id='gform_wrapper_1' ><style>#gform_wrapper_1[data-form-index="0"].gform-theme{--gf-color-primary: #204ce5;--gf-color-primary-rgb: 32, 76, 229;--gf-color-primary-contrast: #fff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #001AB3;--gf-color-primary-lighter: #527EFF;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #204ce5;--gf-color-in-ctrl-primary-rgb: 32, 76, 229;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #001AB3;--gf-color-in-ctrl-primary-lighter: #527EFF;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url("data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893
1000C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-select: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-icon-ctrl-search: url("data:image/svg+xml,%3Csvg width='640' height='640' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'/%3E%3C/svg%3E");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-btn-bg-color-hover-tertiary: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}</style><div id='gf_1' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_1' id='gform_1' action='/focus-areas/civic-infrastructure/#gf_1' data-formid='1' novalidate> 1001 <div class='gform-body gform_body'><div id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_1_1" class="gfield gfield--type-email gfield--input-type-email field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_1_1'><span class='gform-field-label__text'>Email</span></label><div class='ginput_container ginput_container_email'> 1002 <input name='input_1' id='input_1_1' type='email' value='' class='large' placeholder='Email' aria-invalid="false" /> 1003 </div></div></div></div> 1004 <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_1' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Sign Up</button> <input type='hidden' name='gform_ajax' value='form_id=1&title=&description=&tabindex=0&theme=orbital&hash=d443ac778972664c43208968009c4658' /> 1005 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_1' value='iframe' /> 1006 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_1' id='gform_theme_1' value='orbital' /> 1007 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_1' id='gform_style_settings_1' value='' /> 1008 <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' /> 1009 <input type='hidden' class='gform_hidden' name='gform_submit' value='1' /> 1010 1011 <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='USD' value='sPWcN54lcoRE/ihA10a70mrH/lPVcEsuxv4krdXX4COUmWRXOy7Cd+2iHnBVmeKr3YP7jgBSgvm/zqtHcYvKvbFqeta58wN84nRPLeWrHYWjsfs=' /> 1012 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 1013 <input type='hidden' class='gform_hidden' name='state_1' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcIjA4YmQxZDkzNDA5M2QzYzIxYTdhNmMxYjU2MDRjODE5XCIsXCIzMGI1ZWUwNDllNTc4MzBlMjZhYzBhZmY4MDM3ZWRiYVwiLFwiY2FiOWY3YTQxZmI3MDkyY2U2ZmY3NzY4N2ExZTQ3MWFcIl0sXCJnZm9ybV90aGVtZVwiOlwiYWJkMmE3Mzg2YTE0ODRhOTBmOWY2MGZiY2Y5NGU1N2ZcIixcImdmb3JtX3N0eWxlX3NldHRpbmdzXCI6XCJiNzcxMWE3YTQxNTY2NDY3MWU3OWIyOGM3ODNmZjQ1NFwiLFwiZm9ybV9pZFwiOlwiZmI0NmY1Y2Y4MzZkNzY1MGIyMDM3OGIxMDlhNWQyNjRcIixcInVybFwiOlwiNTM4NjNmNjc2MTUyMDM0N2QxZDM2NmM5NGEyYjNiYjJcIixcInN0YXRlX3RpbWVzdGFtcFwiOlwiOTI0YzRhZjVhZjI3MGMyODkwNzJiMWZkNTJhMGQzZGRcIn0iLCIzYWYzY2FmYjMwZGQ0OGI3MDE4MzNmNjg5MjA4M2QzZCIsMTc5MDIyNDM4Ml0=' /> 1014 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' /> 1015 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' /> 1016 <input type='hidden' name='gform_field_values' value='' /> 1017 1018 </div> 1019 </form> 1020 </div> 1021 <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> 1022
1022<script> 1023gform.initializeOnLoaded( function() {jQuery('#gform_ajax_frame_1').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );var current_page = jQuery('#gform_source_page_number_1').val();jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 1, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 1024</script>
1024 1025 </div> 1026 </div> 1027 1028 <!-- Social Media Links - From ACF Options --> 1029 <!-- Centered grid of icons with hover effects --> 1030 <nav aria-label="Social media links" class="flex items-center justify-center pt-24 gap-x-3 lg:pt-46" data-motion-scroll> 1031 <h2 class="sr-only">Connect with us on social media</h2> 1032 <a href="https://www.facebook.com/JSMFSTL/" 1033 aria-label="Visit our facebook-f page" 1034 target="_blank" 1035 rel="noopener" 1036 class="flex items-center justify-center text-xl text-white transition-opacity hover:opacity-40 focus:opacity-40 w-9 h-9" 1037 data-motion='{"opacity": [0, 1], "duration": 0.5, "delay": 0.1, "easing": "ease-out"}' 1038 > 1039 <i class="fa-brands fa-facebook-f" aria-hidden="true"></i> 1040 </a> 1041 <a href="https://www.instagram.com/jsmfstl" 1042 aria-label="Visit our instagram page" 1043 target="_blank" 1044 rel="noopener" 1045 class="flex items-center justify-center text-xl text-white transition-opacity hover:opacity-40 focus:opacity-40 w-9 h-9" 1046 data-motion='{"opacity": [0, 1], "duration": 0.5, "delay": 0.18, "easing": "ease-out"}' 1047 > 1048 <i class="fa-brands fa-instagram" aria-hidden="true"></i> 1049 </a> 1050 <a href="https://www.linkedin.com/company/jsmf/" 1051 aria-label="Visit our linkedin-in page" 1052 target="_blank" 1053 rel="noopener" 1054 class="flex items-center justify-center text-xl text-white transition-opacity hover:opacity-40 focus:opacity-40 w-9 h-9" 1055 data-motion='{"opacity": [0, 1], "duration": 0.5, "delay": 0.26, "easing": "ease-out"}' 1056 > 1057 <i class="fa-brands fa-linkedin-in" aria-hidden="true"></i> 1058 </a> 1059 <a href="https://www.youtube.com/@JSMFSTL" 1060 aria-label="Visit our youtube page" 1061 target="_blank" 1062 rel="noopener" 1063 class="flex items-center justify-center text-xl text-white transition-opacity hover:opacity-40 focus:opacity-40 w-9 h-9" 1064 data-motion='{"opacity": [0, 1], "duration": 0.5, "delay": 0.34, "easing": "ease-out"}' 1065 > 1066 <i class="fa-brands fa-youtube" aria-hidden="true"></i> 1067 </a> 1068 </nav> 1069 1070 <!-- Footer Menu - Single Level Navigation --> 1071 <!-- Centered menu with consistent spacing and hover effects --> 1072 <nav aria-label="Footer menu" class="pt-6 md:pt-3" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.1, "easing": "ease-out"}'> 1073 <ul id="menu-footer-menu" class="flex flex-wrap justify-center gap-x-4 md:gap-x-6 gap-y-3.5 md:gap-y-4 text-white font-sans text-base font-bold [&>*]:hover:text-white/40 [&>*]:focus:text-white/40"><li id="menu-item-3028" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3028"><a href="https://www.jsmf.org/our-mission/">Our Mission</a></li> 1074<li id="menu-item-74" class="menu-item menu-item-type-post_type_archive menu-item-object-focus-areas menu-item-74"><a href="https://www.jsmf.org/focus-areas/">Areas of Focus</a></li> 1075<li id="menu-item-2820" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2820"><a href="https://www.jsmf.org/people/">Who We Are</a></li> 1076<li id="menu-item-76" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-76"><a href="https://www.jsmf.org/news-ideas/">News & Ideas</a></li> 1077<li id="menu-item-77" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-77"><a href="https://www.jsmf.org/grants/">Grants</a></li> 1078<li id="menu-item-3260" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3260"><a href="/careers">Careers</a></li> 1079<li id="menu-item-78" class="account-login menu-item menu-item-type-custom menu-item-object-custom menu-item-78"><a target="_blank" href="https://jsmf.smartsimple.com/s_Login.jsp">Account Login</a></li> 1080</ul> </nav> 1081 1082 </div> 1083 <!-- Footer Bottom - Logo and Copyright --> 1084 <!-- White background section with centered content --> 1085 <div class="flex flex-col items-center pt-10 bg-white md:pt-12 gap-y-10 md:gap-y-14"> 1086 <!-- Footer Logo - SVG for retina support --> 1087 <a 1088 href="https://www.jsmf.org/" 1089 class="site-logo" 1090 aria-label="JSMF" 1091 data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.7, "easing": "ease-out"}' 1092 > 1093 <img class="block h-auto w-46 md:w-60" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="JSMF James S. McDonnell Foundation Logo" data-lazy-src="https://www.jsmf.org/wp-content/themes/jsmf/img/logo-footer.svg"><noscript><img class="block h-auto w-46 md:w-60" src="https://www.jsmf.org/wp-content/themes/jsmf/img/logo-footer.svg" alt="JSMF James S. McDonnell Foundation Logo"></noscript> 1094 </a> 1095 <!-- Copyright and Privacy Policy --> 1096 <!-- Uses WP core function for privacy policy URL --> 1097 <small class="text-base md:text-[1rem] font-sans text-center" data-motion-scroll data-motion='{"opacity": [0, 1], "duration": 0.6, "delay": 0.1, "easing": "ease-out"}'> 1098 © 2026 James S. McDonnell Foundation. All rights reserved. | <a href="https://www.jsmf.org/privacy-policy/">Privacy Policy</a> 1099 </small> 1100 <button id="scrollToTopBtn" class="scroll-to-top-btn flex font-sans text-base font-bold fixed z-1000 bg-perennial-teal text-white rounded-full px-1.5 py-0.5 shadow-[0_2px_8px_rgba(0,0,0,0.08)] opacity-0 pointer-events-none cursor-pointer outline-none display-flex align-items-center gap-2 border-3 solid border-perennial-teal hover:bg-transparent group transition-all duration-300 ease-in-out focus-visible:opacity-100 right-12.5 bottom-9.5" aria-label="Scroll to top" type="button"> 1101 <svg width="14" height="9" viewBox="0 0 14 9" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-[0.838125rem] h-auto block rotate-180"> 1102 <path fill-rule="evenodd" clip-rule="evenodd" d="M0.292969 1.70718L1.70718 0.292969L7.00008 5.58586L12.293 0.292969L13.7072 1.70718L7.00008 8.41429L0.292969 1.70718Z" class="fill-white group-hover:fill-perennial-teal transition-all duration-300 ease-in-out"/> 1103 </svg> 1104 <span class="group-hover:text-perennial-teal transition-all duration-300 ease-in-out">To Top</span> 1105 </button> 1106 </div> 1107 </div> 1108</footer> 1109 1110</div><!-- #page --> 1111
1112<script type="speculationrules"> 1113{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/jsmf/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1114</script>
vendor: 1 bytes, line 1114
1114
1115<script id="leadin-script-loader-js-js-extra"> 1116var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"11.3.75"}; 1117//# sourceURL=leadin-script-loader-js-js-extra 1118</script>
vendor: 1 bytes, line 1118
1118
1119<script async defer id='hs-script-loader' src="https://js-na2.hs-scripts.com/245068239.js?integration=WordPress&ver=11.3.75"></script>
vendor: 1 bytes, line 1119
1119
1120<script id="jsmf-script-js-extra"> 1121var jsmf_ajax = {"ajax_url":"https://www.jsmf.org/wp-admin/admin-ajax.php","nonce":"3ddab43415"}; 1122var jsmf_ajax = {"ajax_url":"https://www.jsmf.org/wp-admin/admin-ajax.php","nonce":"3ddab43415"}; 1123//# sourceURL=jsmf-script-js-extra 1124</script>
vendor: 1 bytes, line 1124
1124
1125<script id="jsmf-script-js" src="https://www.jsmf.org/wp-content/themes/jsmf/js/script.min.js?ver=0.4.15"></script>
vendor: 1 bytes, line 1125
1125
1126<script id="alpinejs-focus-js" defer src="https://unpkg.com/@alpinejs/[email protected]/dist/cdn.min.js"></script>
vendor: 1 bytes, line 1126
1126
1127<script id="alpinejs-js" defer src="https://unpkg.com/[email protected]/dist/cdn.min.js"></script>
vendor: 1 bytes, line 1127
1127
1128<script id="plyr-js" src="https://cdn.plyr.io/3.7.8/plyr.polyfilled.js?ver=3.7.8"></script>
vendor: 1 bytes, line 1128
1128
1129<script id="export-script-js-extra"> 1130var ajaxurl = "https://www.jsmf.org/wp-admin/admin-ajax.php"; 1131//# sourceURL=export-script-js-extra 1132</script>
vendor: 1 bytes, line 1132
1132
1133<script id="export-script-js" src="https://www.jsmf.org/wp-content/themes/jsmf/js/export.js?ver=1.0.0"></script>
vendor: 1 bytes, line 1133
1133
1134<script id="googlesitekit-events-provider-content-events-js-before"> 1135window._googlesitekit = window._googlesitekit || {}; 1136window._googlesitekit.contentEvents = {"postID":36,"isSinglePost":false,"hasVimeoEmbed":false}; 1137//# sourceURL=googlesitekit-events-provider-content-events-js-before 1138</script>
vendor: 1 bytes, line 1138
1138
1139<script id="googlesitekit-events-provider-content-events-js" src="https://www.jsmf.org/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-content-events-c7172f3fd0e4d5ad62ef.js" defer></script>
vendor: 1 bytes, line 1139
1139
1140<script id="wp-dom-ready-js" src="https://www.jsmf.org/wp-includes/js/dist/dom-ready.min.js?ver=3fe927cab37bf38d6a23"></script>
vendor: 1 bytes, line 1140
1140
1141<script id="wp-hooks-js" src="https://www.jsmf.org/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 1141
1141
1142<script id="wp-i18n-js" src="https://www.jsmf.org/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 1142
1142
1143<script id="wp-i18n-js-after"> 1144wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 1145//# sourceURL=wp-i18n-js-after 1146</script>
vendor: 1 bytes, line 1146
1146
1147<script id="wp-a11y-js" src="https://www.jsmf.org/wp-includes/js/dist/a11y.min.js?ver=31c6cec5a4ff7aff483d"></script>
vendor: 1 bytes, line 1147
1147
1148<script id="gform_json-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 1148
1148
1149<script id="gform_gravityforms-js-extra"> 1150var gform_i18n = {"datepicker":{"wdOffset":1,"helpTextShort":"Press F1 for help","helpText":"Press the arrow keys to navigate by day, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year, or Escape to cancel.","openOnFocusHelpText":"Press Down arrow to browse the calendar, or Escape to close.","tooltipTxt":"Press Escape to cancel","disabledTxt":"Disabled","markedTxt":"Selected","prevTxt":"Previous","nextTxt":"Next","monthTxt":"Month","yearTxt":"Year","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"days":[{"s":"S","l":"Sunday"},{"s":"M","l":"Monday"},{"s":"T","l":"Tuesday"},{"s":"W","l":"Wednesday"},{"s":"T","l":"Thursday"},{"s":"F","l":"Friday"},{"s":"S","l":"Saturday"}]}}; 1151var gf_legacy_multi = []; 1152var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","file_uploaded":"File uploaded","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled","error":"Error","message":"Message"},"vars":{"images_url":"https://www.jsmf.org/wp-content/plugins/gravityforms/images"}}; 1153var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://www.jsmf.org/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"38128d61be2f3b142dda9d864b268f7a","countries":{"AF":"Afghanistan","AX":"\u00c5land Islands","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua and Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Cambodia","CM":"Cameroon","CA":"Canada","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos Islands","CO":"Colombia","KM":"Comoros","CD":"Congo, Democratic Republic of the","CG":"Congo","CK":"Cook Islands","CR":"Costa Rica","CI":"C\u00f4te d'Ivoire","HR":"Croatia","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People's Republic of","KR":"Korea, Republic of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"La
1153o People's Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MK":"North Macedonia","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestine, State of","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","BL":"Saint Barth\u00e9lemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"Saint Kitts and Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre and Miquelon","VC":"Saint Vincent and the Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia and the South Sandwich Islands","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","SD":"Sudan","SR":"Suriname","SJ":"Svalbard and Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syria Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, the United Republic of","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad and Tobago","TN":"Tunisia","TR":"T\u00fcrkiye","TM":"Turkmenistan","TC":"Turks and Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States","UY":"Uruguay","UM":"US Minor Outlying Islands","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","WF":"Wallis and Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"},"strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 1154var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://www.jsmf.org/wp-content/plugins/gravityforms","number_formats":[],"version_hash":"38128d61be2f3b142dda9d864b268f7a","countries":{"AF":"Afghanistan","AX":"\u00c5land Islands","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua and Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Cambodia","CM":"Cameroon","CA":"Canada","KY":"Cayman Islands","CF":"Central African Republic","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos Islands","CO":"Colombia","KM":"Comoros","CD":"Congo, Democratic Republic of the","CG":"Congo","CK":"Cook Islands","CR":"Costa Rica","CI":"C\u00f4te d'Ivoire","HR":"Croatia","CU":"Cuba","CW":"Cura\u00e7ao","CY":"Cyprus","CZ":"Czechia","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands","FO":"Faroe Islands","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"Gambia","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People's Republic of","KR":"Korea, Republic of","KW":"Kuwait","KG":"Kyrgyzstan","LA":"La
1154o People's Democratic Republic","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia","MD":"Moldova","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MK":"North Macedonia","MP":"Northern Mariana Islands","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestine, State of","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RE":"R\u00e9union","RO":"Romania","RU":"Russian Federation","RW":"Rwanda","BL":"Saint Barth\u00e9lemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"Saint Kitts and Nevis","LC":"Saint Lucia","MF":"Saint Martin","PM":"Saint Pierre and Miquelon","VC":"Saint Vincent and the Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia and the South Sandwich Islands","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","SD":"Sudan","SR":"Suriname","SJ":"Svalbard and Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syria Arab Republic","TW":"Taiwan","TJ":"Tajikistan","TZ":"Tanzania, the United Republic of","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad and Tobago","TN":"Tunisia","TR":"T\u00fcrkiye","TM":"Turkmenistan","TC":"Turks and Caicos Islands","TV":"Tuvalu","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States","UY":"Uruguay","UM":"US Minor Outlying Islands","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela","VN":"Viet Nam","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","WF":"Wallis and Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe"},"strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 1155//# sourceURL=gform_gravityforms-js-extra 1156</script>
vendor: 1 bytes, line 1156
1156
1157<script id="gform_gravityforms-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 1157
1157
1158<script id="gform_placeholder-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=3.1.2"></script>
vendor: 1 bytes, line 1158
1158
1159<script id="gform_gravityforms_utils-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=69a9db57304a9f86c3d1a0bea5fd2cf9"></script>
vendor: 1 bytes, line 1159
1159
1160<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=0c901cb641ce64b99c20ea1a4d208cc9"></script>
vendor: 1 bytes, line 1160
1160
1161<script id="gform_gravityforms_theme-js-extra"> 1162var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"38128d61be2f3b142dda9d864b268f7a"},"ajax":{"ajaxurl":"https://www.jsmf.org/wp-admin/admin-ajax.php","ajax_submission_nonce":"1f8f6c78e6","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again.","error_403":"The request was blocked (403 error) for unknown security reasons. Remove any code-like text (scripts or DB queries) and try again."}},"logging":{"is_enabled":true}}},"hmr_dev":"","public_path":"https://www.jsmf.org/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"0b0e34bc30"}; 1163//# sourceURL=gform_gravityforms_theme-js-extra 1164</script>
vendor: 1 bytes, line 1164
1164
1165<script id="gform_gravityforms_theme-js" defer='defer' src="https://www.jsmf.org/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=e27d9712159624c99129c8c208f022ad"></script>
vendor: 1 bytes, line 1165
1165
1166<script id="wp-emoji-settings" type="application/json"> 1167{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.jsmf.org/wp-includes/js/wp-emoji-release.min.js?ver=7.1.1"}} 1168</script>
vendor: 1 bytes, line 1168
1168
1169<script type="module"> 1170/*! This file is auto-generated */ 1171var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 1172//# sourceURL=https://www.jsmf.org/wp-includes/js/wp-emoji-loader.min.js 1173</script>
vendor: 1 bytes, line 1173
1173
1174<script> 1175gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 1) {if(typeof Placeholders != 'undefined'){ 1176 Placeholders.enable(); 1177 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 1178</script>
vendor: 1 bytes, line 1178
1178
1179<script> 1180gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "1", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_1" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_1"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 1, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 1181</script>
vendor: 1 bytes, line 1181
1181
1182<script>window.lazyLoadOptions = [{ 1183 elements_selector: "img[data-lazy-src],.rocket-lazyload", 1184 data_src: "lazy-src", 1185 data_srcset: "lazy-srcset", 1186 data_sizes: "lazy-sizes", 1187 class_loading: "lazyloading", 1188 class_loaded: "lazyloaded", 1189 threshold: 300, 1190 callback_loaded: function(element) { 1191 if ( element.tagName === "IFRAME" && element.dataset.rocketLazyload == "fitvidscompatible" ) { 1192 if (element.classList.contains("lazyloaded") ) { 1193 if (typeof window.jQuery != "undefined") { 1194 if (jQuery.fn.fitVids) { 1195 jQuery(element).parent().fitVids(); 1196 } 1197 } 1198 } 1199 } 1200 }},{ 1201 elements_selector: ".rocket-lazyload", 1202 data_src: "lazy-src", 1203 data_srcset: "lazy-srcset", 1204 data_sizes: "lazy-sizes", 1205 class_loading: "lazyloading", 1206 class_loaded: "lazyloaded", 1207 threshold: 300, 1208 }]; 1209 window.addEventListener('LazyLoad::Initialized', function (e) { 1210 var lazyLoadInstance = e.detail.instance; 1211 1212 if (window.MutationObserver) { 1213 var observer = new MutationObserver(function(mutations) { 1214 var image_count = 0; 1215 var iframe_count = 0; 1216 var rocketlazy_count = 0; 1217 1218 mutations.forEach(function(mutation) { 1219 for (var i = 0; i < mutation.addedNodes.length; i++) { 1220 if (typeof mutation.addedNodes[i].getElementsByTagName !== 'function') { 1221 continue; 1222 } 1223 1224 if (typeof mutation.addedNodes[i].getElementsByClassName !== 'function') { 1225 continue; 1226 } 1227 1228 images = mutation.addedNodes[i].getElementsByTagName('img'); 1229 is_image = mutation.addedNodes[i].tagName == "IMG"; 1230 iframes = mutation.addedNodes[i].getElementsByTagName('iframe'); 1231 is_iframe = mutation.addedNodes[i].tagName == "IFRAME"; 1232 rocket_lazy = mutation.addedNodes[i].getElementsByClassName('rocket-lazyload'); 1233 1234 image_count += images.length; 1235 iframe_count += iframes.length; 1236 rocketlazy_count += rocket_lazy.length; 1237 1238 if(is_image){ 1239 image_count += 1; 1240 } 1241 1242 if(is_iframe){ 1243 iframe_count += 1; 1244 } 1245 } 1246 } ); 1247 1248 if(image_count > 0 || iframe_count > 0 || rocketlazy_count > 0){ 1249 lazyLoadInstance.update(); 1250 } 1251 } ); 1252 1253 var b = document.getElementsByTagName("body")[0]; 1254 var config = { childList: true, subtree: true }; 1255 1256 observer.observe(b, config); 1257 } 1258 }, false);</script>
1258<script data-no-minify="1" async src="https://www.jsmf.org/wp-content/plugins/rocket-lazy-load/assets/js/16.1/lazyload.min.js"></script>
vendor: 1 bytes, line 1258
1258
1259<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a400862f9e4a73db',t:'MTc5MDIzOTY0NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
1259</body> 1260</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.