1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8"/> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <link rel="pingback" href="https://www.vai.org/xmlrpc.php"/> 7 <style> 8 [x-cloak] { 9 display: none !important; 10 } 11 </style> 12 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 13 14<!-- Google Tag Manager for WordPress by gtm4wp.com -->
15<script data-cfasync="false" data-pagespeed-no-defer> 16 var gtm4wp_datalayer_name = "dataLayer"; 17 var dataLayer = dataLayer || []; 18 (function(){function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dNGJiYT', true);})(); 19</script>
19 20<!-- End Google Tag Manager for WordPress by gtm4wp.com --> 21 <!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https://yoast.com/product/yoast-seo-premium-wordpress/ --> 22 <title>Publications – Van Andel Institute</title> 23 <meta name="description" content="Check out Van Andel Institutes most recent annual reports, seasonal highlights and more!" /> 24 <link rel="canonical" href="https://www.vai.org/news/publications/" /> 25 <meta property="og:locale" content="en_US" /> 26 <meta property="og:type" content="article" /> 27 <meta property="og:title" content="Publications" /> 28 <meta property="og:description" content="Learn more about at Van Andel Institute. Explore our in-depth resources and latest articles." /> 29 <meta property="og:url" content="https://www.vai.org/news/publications/" /> 30 <meta property="og:site_name" content="Van Andel Institute" /> 31 <meta property="article:publisher" content="https://www.facebook.com/VanAndelInstitute/" /> 32 <meta property="article:modified_time" content="2026-09-30T17:50:43+00:00" /> 33 <meta property="og:image" content="https://www.vai.org/wp-content/uploads/2023/05/Van-Andel-Institute.png" /> 34 <meta property="og:image:width" content="1200" /> 35 <meta property="og:image:height" content="675" /> 36 <meta property="og:image:type" content="image/png" /> 37 <meta name="twitter:card" content="summary_large_image" /> 38 <meta name="twitter:site" content="@VAInstitute" /> 39 <meta name="twitter:label1" content="Est. reading time" /> 40 <meta name="twitter:data1" content="2 minutes" /> 41
41<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vai.org\/news\/publications\/","url":"https:\/\/www.vai.org\/news\/publications\/","name":"Publications – Van Andel Institute","isPartOf":{"@id":"https:\/\/www.vai.org\/#website"},"datePublished":"2022-09-29T13:12:25+00:00","dateModified":"2026-09-30T17:50:43+00:00","description":"Check out Van Andel Institutes most recent annual reports, seasonal highlights and more!","breadcrumb":{"@id":"https:\/\/www.vai.org\/news\/publications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vai.org\/news\/publications\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.vai.org\/news\/publications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"News","item":"https:\/\/www.vai.org\/news\/"},{"@type":"ListItem","position":2,"name":"Publications"}]},{"@type":"WebSite","@id":"https:\/\/www.vai.org\/#website","url":"https:\/\/www.vai.org\/","name":"Van Andel Institute","description":"Van Andel Institute transforms human health through groundbreaking biomedical research and cutting-edge science education.","publisher":{"@id":"https:\/\/www.vai.org\/#organization"},"alternateName":"VAI","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vai.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vai.org\/#organization","name":"Van Andel Institute","alternateName":"VAI","url":"https:\/\/www.vai.org\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vai.org\/#\/schema\/logo\/image\/","url":"https:\/\/www.vai.org\/wp-content\/uploads\/2022\/11\/VAI-logo-2line-19_2C_.jpg","contentUrl":"https:\/\/www.vai.org\/wp-content\/uploads\/2022\/11\/VAI-logo-2line-19_2C_.jpg","width":901,"height":291,"caption":"Van Andel Institute"},"image":{"@id":"https:\/\/www.vai.org\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/VanAndelInstitute\/","https:\/\/x.com\/VAInstitute","https:\/\/www.linkedin.com\/company\/van-andel-institute"],"description":"Van Andel Institute is an independent research facility devoted to improving human health through biomedical research and science education.","email":"[email protected]","telephone":"616.234.5000","legalName":"Van Andel Research Institute","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"501","maxValue":"1000"}}]}</script>
41 42 <!-- / Yoast SEO Premium plugin. --> 43 44 45<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' /> 46<link rel="alternate" type="application/rss+xml" title="Van Andel Institute » Feed" href="https://www.vai.org/feed/" /> 47<link rel="alternate" type="application/rss+xml" title="Van Andel Institute » Comments Feed" href="https://www.vai.org/comments/feed/" /> 48<link rel="alternate" type="text/calendar" title="Van Andel Institute » iCal Feed" href="https://www.vai.org/events/?ical=1" /> 49<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.vai.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.vai.org%2Fnews%2Fpublications%2F" /> 50<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.vai.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.vai.org%2Fnews%2Fpublications%2F&format=xml" /> 51<style id="wp-img-auto-sizes-contain-inline-css"> 52img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 53/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 54</style> 55<link rel='stylesheet' id='tribe-events-pro-mini-calendar-block-styles-css' href='https://www.vai.org/wp-content/plugins/events-calendar-pro/build/css/tribe-events-pro-mini-calendar-block.css?ver=7.8.3' media='all' /> 56<link rel='stylesheet' id='sb-elementor-shared-style-css' href='https://www.vai.org/wp-content/plugins/youtube-feed-pro/vendor/smashballoon/framework/Packages/Blocks/css/sb-elementor.css?ver=1.0.0' media='all' /> 57<link rel='stylesheet' id='tec-variables-skeleton-css' href='https://www.vai.org/wp-content/plugins/the-events-calendar/common/build/css/variables-skeleton.css?ver=6.12.4.1' media='all' /> 58<link rel='stylesheet' id='tec-variables-full-css' href='https://www.vai.org/wp-content/plugins/the-events-calendar/common/build/css/variables-full.css?ver=6.12.4.1' media='all' /> 59<link rel='stylesheet' id='tribe-events-v2-virtual-single-block-css' href='https://www.vai.org/wp-content/plugins/events-calendar-pro/build/css/events-virtual-single-block.css?ver=7.8.3' media='all' /> 60<style id="wp-emoji-styles-inline-css"> 61 62 img.wp-smiley, img.emoji { 63 display: inline !important; 64 border: none !important; 65 box-shadow: none !important; 66 height: 1em !important; 67 width: 1em !important; 68 margin: 0 0.07em !important; 69 vertical-align: -0.1em !important; 70 background: none !important; 71 padding: 0 !important; 72 } 73/*# sourceURL=wp-emoji-styles-inline-css */ 74</style> 75<style id="classic-theme-styles-inline-css"> 76/*! This file is auto-generated */ 77.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 78/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 79</style> 80<style id="safe-svg-svg-icon-style-inline-css"> 81.wp-block-safe-svg-svg-icon a{align-self:center}.safe-svg-cover{text-align:center}.safe-svg-cover .safe-svg-inside{display:inline-block;max-width:100%}.safe-svg-cover svg{fill:currentColor;height:100%;max-height:100%;max-width:100%;width:100%} 82 83/*# sourceURL=https://www.vai.org/wp-content/plugins/safe-svg/dist/safe-svg-block-frontend.css */ 84</style> 85<link rel='stylesheet' id='cptui-extended-style-css' href='https://www.vai.org/wp-content/plugins/cptui-extended/inc/../build/style-index.css?ver=1756437668' media='all' /> 86<style id="global-styles-inline-css"> 87: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--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,
870) 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--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);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}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-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-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-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;}
87.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;} 88:root :where(.wp-block-icon svg){width: 24px;} 89:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} 90:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;} 91:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} 92:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} 93/*# sourceURL=global-styles-inline-css */ 94</style> 95<link rel='stylesheet' id='tribe-events-v2-single-skeleton-css' href='https://www.vai.org/wp-content/plugins/the-events-calendar/build/css/tribe-events-single-skeleton.css?ver=6.17.5.1' media='all' /> 96<link rel='stylesheet' id='tribe-events-v2-single-skeleton-full-css' href='https://www.vai.org/wp-content/plugins/the-events-calendar/build/css/tribe-events-single-full.css?ver=6.17.5.1' media='all' /> 97<link rel='stylesheet' id='tec-events-elementor-widgets-base-styles-css' href='https://www.vai.org/wp-content/plugins/the-events-calendar/build/css/integrations/plugins/elementor/widgets/widget-base.css?ver=6.17.5.1' media='all' /> 98<link rel='stylesheet' id='timberland-style-css' href='https://www.vai.org/wp-content/themes/timberland/theme/assets/build/app.05012024v1.2.css?id=6e26346b16951646ab98' media='all' /> 99<link rel='stylesheet' id='elementor-frontend-css' href='https://www.vai.org/wp-content/uploads/elementor/css/custom-frontend.min.css?ver=1790874468' media='all' /> 100<link rel='stylesheet' id='elementor-post-30881-css' href='https://www.vai.org/wp-content/uploads/elementor/css/post-30881.css?ver=1790874468' media='all' /> 101<link rel='stylesheet' id='sby_common_styles-css' href='https://www.vai.org/wp-content/plugins/youtube-feed-pro/public/build/css/sb-youtube-common.css?ver=2.10.0' media='all' /> 102<link rel='stylesheet' id='sby_styles-css' href='https://www.vai.org/wp-content/plugins/youtube-feed-pro/public/build/css/sb-youtube.css?ver=2.10.0' media='all' /> 103<link rel='stylesheet' id='widget-breadcrumbs-css' href='https://www.vai.org/wp-content/plugins/elementor-pro/assets/css/widget-breadcrumbs.min.css?ver=4.3.0' media='all' /> 104<link rel='stylesheet' id='widget-heading-css' href='https://www.vai.org/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=4.3.2' media='all' /> 105<link rel='stylesheet' id='widget-divider-css' href='https://www.vai.org/wp-content/plugins/elementor/assets/css/widget-divider.min.css?ver=4.3.2' media='all' /> 106<link rel='stylesheet' id='widget-nested-accordion-css' href='https://www.vai.org/wp-content/plugins/elementor/assets/css/widget-nested-accordion.min.css?ver=4.3.2' media='all' /> 107<link rel='stylesheet' id='elementor-post-22246-css' href='https://www.vai.org/wp-content/uploads/elementor/css/post-22246.css?ver=1790875214' media='all' /> 108<link rel='stylesheet' id='tablepress-default-css' href='https://www.vai.org/wp-content/plugins/tablepress/css/build/default.css?ver=3.4' media='all' /> 109<link rel='stylesheet' id='relevanssi-live-search-css' href='https://www.vai.org/wp-content/plugins/relevanssi-live-ajax-search/assets/styles/style.css?ver=2.5' media='all' /> 110<style id="elementor-pro-custom-fonts-inline-css"> 111@font-face { 112 font-family: 'Monument Extended'; 113 font-style: normal; 114 font-weight: normal; 115 font-display: auto; 116 src: url('https://www.vai.org/wp-content/uploads/2025/05/PPMonumentExtended-Regular.woff') format('woff'); 117} 118@font-face { 119 font-family: 'Monument Extended'; 120 font-style: normal; 121 font-weight: 700; 122 font-display: auto; 123 src: url('https://www.vai.org/wp-content/uploads/2025/05/PPMonumentExtended-Bold.woff2') format('woff2'); 124} 125 126@font-face { 127 font-family: 'Larken'; 128 font-style: normal; 129 font-weight: normal; 130 font-display: auto; 131 src: url('https://www.vai.org/wp-content/uploads/2025/05/larken-regular.woff') format('woff'); 132} 133@font-face { 134 font-family: 'Larken'; 135 font-style: normal; 136 font-weight: 500; 137 font-display: auto; 138 src: url('https://www.vai.org/wp-content/uploads/2025/05/larken-medium.woff') format('woff'); 139} 140@font-face { 141 font-family: 'Larken'; 142 font-style: normal; 143 font-weight: 300; 144 font-display: auto; 145 src: url('https://www.vai.org/wp-content/uploads/2025/05/larken-light.woff') format('woff'); 146} 147@font-face { 148 font-family: 'Larken'; 149 font-style: normal; 150 font-weight: 700; 151 font-display: auto; 152 src: url('https://www.vai.org/wp-content/uploads/2025/05/larken-bold.woff') format('woff'); 153} 154@font-face { 155 font-family: 'Larken'; 156 font-style: normal; 157 font-weight: 800; 158 font-display: auto; 159 src: url('https://www.vai.org/wp-content/uploads/2025/05/larken-extrabold.woff') format('woff'); 160} 161 162@font-face { 163 font-family: 'Apercu Regular'; 164 font-style: normal; 165 font-weight: normal; 166 font-display: auto; 167 src: url('https://www.vai.org/wp-content/uploads/2025/05/Apercu
167-Regular-Pro.woff') format('woff'); 168} 169 170@font-face { 171 font-family: 'Apercu Mono'; 172 font-style: normal; 173 font-weight: normal; 174 font-display: auto; 175 src: url('https://www.vai.org/wp-content/uploads/2025/05/ApercuMono-Regular-Pro.woff') format('woff'); 176} 177 178/*# sourceURL=elementor-pro-custom-fonts-inline-css */ 179</style>
180<script id="jquery-core-js" src="https://www.vai.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 180
180
181<script id="jquery-migrate-js" src="https://www.vai.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 181
181
182<script id="facebook-signal-js-extra"> 183var facebookSignalConfig = {"cookieName":"wc_facebook_signals_state","ajaxUrl":"https://www.vai.org/wp-admin/admin-ajax.php","signalsAction":"fbpix_set_pixel_signals","signalsNonce":"6500789da4"}; 184//# sourceURL=facebook-signal-js-extra 185</script>
vendor: 1 bytes, line 185
185
186<script id="facebook-signal-js" src="https://www.vai.org/wp-content/plugins/official-facebook-pixel/core/../js/facebook_signal.js?ver=5.2.2"></script>
186 187<link rel="https://api.w.org/" href="https://www.vai.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.vai.org/wp-json/wp/v2/pages/22246" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.vai.org/xmlrpc.php?rsd" /> 188<link rel='shortlink' href='https://www.vai.org/?p=22246' /> 189<!-- HFCM by 99 Robots - Snippet # 1: TVSquared Tracking Code --> 190<!-- Begin TVSquared Page Visits Tracking Code -->
191<script type="text/javascript"> 192 var _tvq = window._tvq = window._tvq || []; 193 (function() { 194 var u = (("https:" == document.location.protocol) ? 195 "https://collector-8995.tvsquared.com/" 196 : 197 "http://collector-8995.tvsquared.com/"); 198 _tvq.push(['setSiteId', "TV-18090945-1"]); 199 _tvq.push(['setTrackerUrl', u + 'tv2track.php']); 200 _tvq.push([function() { 201 this.deleteCustomVariable(5, 'page') 202 }]); 203 _tvq.push(['trackPageView']); 204 var d = document, 205 g = d.createElement('script'), 206 s = d.getElementsByTagName('script')[0]; 207 g.type = 'text/javascript'; 208 g.defer = true; 209 g.async = true; 210 g.src = u + 'tv2track.js'; 211 s.parentNode.insertBefore(g, s); 212 })(); 213</script>
213 214<!-- End TVSquared Tracking Code --> 215 216<!-- /end HFCM by 99 Robots --> 217<!-- HFCM by 99 Robots - Snippet # 2: Image Alignment Fix --> 218<style type="text/css"> 219 220.alignleft { 221 display: inline; 222 float: left!important; 223 margin-right: 1rem; 224 margin-left: 0!important; 225} 226 227.aligncenter { 228 clear: both; 229 display:block; 230 margin-left:auto!important; 231 margin-right:auto!important; 232} 233 234.alignright { 235 display: inline; 236 float: right!important; 237 margin-left: 1rem!important; 238} 239 240</style> 241<!-- /end HFCM by 99 Robots --> 242<!-- HFCM by 99 Robots - Snippet # 3: Prevent right click on images only desktop -->
243<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
243 244
245<script> 246 247$(document).ready(function () { 248 249 $("img").on("contextmenu",function(e){ 250 251 return false; 252 253 }); 254 255}); 256 257</script>
257 258<!-- /end HFCM by 99 Robots --> 259<!-- HFCM by 99 Robots - Snippet # 4: Prevent Webkit Touch on Mobile from saving images --> 260<style type="text/css"> 261img { 262 263 -webkit-touch-callout:none; 264 265} 266</style> 267<!-- /end HFCM by 99 Robots --> 268<!-- HFCM by 99 Robots - Snippet # 5: Google Tag Manager --> 269<meta name="google-site-verification" content="5z5n8aDYBZFL8YW-r8IjcxGbCM5Bb5i7kcX_CFUVfVc" /> 270<!-- /end HFCM by 99 Robots --> 271<!-- HFCM by 99 Robots - Snippet # 6: VAI Universal Pixel -->
272<script src="https://js.ipredictive.com/viant_universal_pixel.js" type="text/javascript"></script>
vendor: 2 bytes, line 272
272
273<script type="text/javascript"> 274 new ViantUniversalPixel(112271, 'https://ad.ipredictive.com/d/track/event', 275 { 276 "ps": "0" 277}).fire(); 278</script>
278 279<noscript> 280 <img src="https://ad.ipredictive.com/d/track/event?upid=112271&url=[url]&cache_buster=[timestamp]&ps=1" alt="event tracking" height="1" width="1" style="display:none" /> 281</noscript> 282<!-- /end HFCM by 99 Robots --> 283
283<script type="text/javascript"> 284 (function(c, l, a, r, i, t, y) { 285 c[a] = c[a] || function() { 286 (c[a].q = c[a].q || []).push(arguments) 287 }; 288 t = l.createElement(r); 289 t.async = 1; 290 t.src = "https://www.clarity.ms/tag/" + i + "?ref=wordpress"; 291 y = l.getElementsByTagName(r)[0]; 292 y.parentNode.insertBefore(t, y); 293 })(window, document, "clarity", "script", "r8p0dt7014"); 294 </script>
294 295 <meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://www.vai.org"><link rel="alternate" href="https://www.vai.org/wp-json/tribe/events/v1/" /><meta name="et-api-version" content="v1"><meta name="et-api-origin" content="https://www.vai.org"><link rel="https://theeventscalendar.com/" href="https://www.vai.org/wp-json/tribe/tickets/v1/" /> 296 <!-- CPT UI Extended Customizer CSS --> 297 <style type="text/css" id="cpt-ui-extended-css"> 298 </style> 299 <!-- /CPT UI Extended Customizer CSS --> 300 301 302<!-- Google Tag Manager for WordPress by gtm4wp.com --> 303<!-- GTM Container placement set to automatic -->
304<script data-cfasync="false" data-pagespeed-no-defer> 305 var dataLayer_content = {"siteID":1,"siteName":"Van Andel Institute","pageTitle":"Publications \u0026#8211; Van Andel Institute","pagePostType":"page","pagePostType2":"single-page","pagePostAuthor":"rcorwin"}; 306 dataLayer.push( dataLayer_content ); 307</script>
vendor: 1 bytes, line 307
307
308<script data-cfasync="false" data-pagespeed-no-defer>
vendor: 322 bytes, lines 308-313
308 309(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 310new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 311j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 312'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 313})(window,document,'script','dataLayer','
313GTM-NHQKHZ5
vendor: 4 bytes, line 313
313');
314</script>
314 315<!-- End Google Tag Manager for WordPress by gtm4wp.com --><meta name="generator" content="Elementor 4.3.2; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap">
316<script> 317document.addEventListener('DOMContentLoaded', function() { 318 window.addEventListener('elementor/frontend/init', function() { 319 320 /** 321 * 1. Helper: Get the tab ID specifically from the 'tabUrl' query parameter 322 */ 323 function getTabIdFromQuery() { 324 const urlParams = new URLSearchParams(window.location.search); 325 return urlParams.get('tabUrl'); 326 } 327 328 /** 329 * 2. Helper: Update the URL Query Parameter when a tab is clicked 330 */ 331 function updateUrlOnTabClick(event) { 332 // Find the closest tab title element 333 const tabTitle = event.target.closest('.e-n-tab-title'); 334 335 // If a tab title with an ID was clicked 336 if (tabTitle && tabTitle.id) { 337 const currentUrl = new URL(window.location); 338 const currentTabParam = currentUrl.searchParams.get('tabUrl'); 339 340 // Only update history if the tab is different from what is already in the URL 341 if (currentTabParam !== tabTitle.id) { 342 currentUrl.searchParams.set('tabUrl', tabTitle.id); 343 344 // Update URL without reloading 345 history.pushState(null, '', currentUrl); 346 } 347 } 348 } 349 350 /** 351 * 3. Main Logic: Open the tab and scroll to it 352 */ 353 function openAndScrollToTab() { 354 const targetId = getTabIdFromQuery(); 355 356 if (!targetId) { 357 return; // No tabUrl parameter found 358 } 359 360 const tabButton = document.getElementById(targetId); 361 362 // Ensure the button exists and is a valid Elementor tab title 363 if (tabButton && tabButton.classList.contains('e-n-tab-title')) { 364 365 // Click the tab to open content 366 // (This will implicitly trigger updateUrlOnTabClick, ensuring URL consistency) 367 tabButton.click(); 368 369 // --- SCROLL LOGIC --- 370 const tabsWidget = tabButton.closest('.e-n-tabs'); 371 if (!tabsWidget) { 372 return; 373 } 374 375 const headerOffset = 120; // Adjust for your sticky header 376 const widgetTop = tabsWidget.getBoundingClientRect().top + window.pageYOffset; 377 const targetScrollPosition = widgetTop - headerOffset; 378 379 window.scrollTo({ 380 top: targetScrollPosition, 381 behavior: 'smooth' 382 }); 383 } 384 } 385 386 // --- INITIALIZATION --- 387 388 // 1. Run on load (delayed slightly to ensure Elementor is ready) 389 setTimeout(openAndScrollToTab, 300); 390 391 // 2. Listen for clicks to update the URL parameter 392 document.addEventListener('click', updateUrlOnTabClick); 393 394 // 3. Listen for browser "Back/Forward" buttons 395 // Since we are changing history states, we need to detect when the user hits 'Back' 396 window.addEventListener('popstate', openAndScrollToTab); 397 }); 398}); 399</script>
vendor: 1 bytes, line 399
399
400<script> 401document.addEventListener('DOMContentLoaded', () => { 402 403 // SELECTORS 404 const triggerClass = '.popup-trigger-btn'; 405 const popupClass = '.person-popup'; 406 const closeClass = '.close-popup-btn'; 407 408 // 1. Create the Backdrop Div (Only one exists for the whole page) 409 const backdrop = document.createElement('div'); 410 backdrop.classList.add('popup-backdrop'); 411 document.body.appendChild(backdrop); 412 413 // 2. Event Delegation (The Performance Key) 414 document.body.addEventListener('click', (e) => { 415 416 // --- CASE A: OPENING THE POPUP --- 417 const trigger = e.target.closest(triggerClass); 418 if (trigger) { 419 e.preventDefault(); 420 421 // Find the parent loop item for this specific button 422 const loopItem = trigger.closest('.e-loop-item'); 423 if (!loopItem) return; 424 425 // Find the specific popup living inside that loop item 426 const targetPopup = loopItem.querySelector(popupClass); 427 if (targetPopup) { 428 targetPopup.classList.add('is-active'); 429 backdrop.classList.add('is-active'); 430 document.body.classList.add('no-scroll'); 431 } 432 return; 433 } 434 435 // --- CASE B: CLOSING THE POPUP --- 436 // Close if clicking the "X" button OR the Backdrop 437 if (e.target.closest(closeClass) || e.target.closest('.popup-backdrop')) { 438 e.preventDefault(); 439 closeAll(); 440 } 441 }); 442 443 // 3. Close on ESC Key 444 document.addEventListener('keydown', (e) => { 445 if (e.key === 'Escape') closeAll(); 446 }); 447 448 // Helper function to reset state 449 function closeAll() { 450 const activePopups = document.querySelectorAll(popupClass + '.is-active'); 451 activePopups.forEach(el => el.classList.remove('is-active')); 452 453 backdrop.classList.remove('is-active'); 454 document.body.classList.remove('no-scroll'); 455 } 456 457}); 458</script>
vendor: 1 bytes, line 458
458
459<script> 460document.addEventListener('DOMContentLoaded', function () { 461 // Select both types of tab systems 462 const tabContainers = document.querySelectorAll('.sticky-tab-interface, .dropdown-tab-interface'); 463 464 if (tabContainers.length > 0) { 465 // Universal Breakpoint for Tablet and Mobile (Standard Elementor Tablet width) 466 const responsiveBreakpoint = 1024; 467 468 // Offset for desktop sticky bar (if applicable) 469 const topOffset = 0; 470 471 // --- 1. Dropdown Logic (Shared) --- 472 const createCustomDropdown = (widget) => { 473 if (widget.querySelector('.custom-tabs-dropdown-wrapper')) return; 474 475 const tabsHeading = widget.querySelector('.e-n-tabs-heading'); 476 const tabTitles = widget.querySelectorAll('.e-n-tab-title'); 477 const tabContentWrapper = widget.querySelector('.e-n-tabs-content'); 478 479 if (!tabsHeading || tabTitles.length === 0) return; 480 481 const dropdownWrapper = document.createElement('div'); 482 dropdownWrapper.className = 'custom-tabs-dropdown-wrapper'; 483 484 const activeButton = document.createElement('button'); 485 activeButton.className = 'dropdown-active-title'; 486 activeButton.setAttribute('aria-haspopup', 'true'); 487 activeButton.setAttribute('aria-expanded', 'false'); 488 489 const optionsList = document.createElement('div'); 490 optionsList.className = 'dropdown-options-list'; 491 optionsList.setAttribute('role', 'listbox'); 492 493 let activeTabTitle = '';
494 tabTitles.forEach(titleButton => { 495 const titleText = titleButton.querySelector('.e-n-tab-title-text').textContent.trim(); 496 const tabIndex = titleButton.getAttribute('data-tab-index'); 497 498 if (titleButton.getAttribute('aria-selected') === 'true') { 499 activeTabTitle = titleText; 500 } 501 502 const optionItem = document.createElement('button'); 503 optionItem.className = 'dropdown-option-item'; 504 optionItem.textContent = titleText; 505 optionItem.setAttribute('data-tab-index', tabIndex); 506 optionItem.setAttribute('role', 'option'); 507 508 optionItem.addEventListener('click', () => { 509 const originalTab = widget.querySelector(`.e-n-tab-title[data-tab-index="${tabIndex}"]`); 510 if (originalTab) originalTab.click(); 511 activeButton.textContent = titleText; 512 optionsList.classList.remove('is-open'); 513 activeButton.setAttribute('aria-expanded', 'false'); 514 515 // Scroll back to the top of the widget when switching tabs 516 const offsetPosition = widget.getBoundingClientRect().top + window.scrollY - 50; 517 window.scrollTo({ top: offsetPosition, behavior: "smooth" }); 518 }); 519 520 optionsList.appendChild(optionItem); 521 }); 522 523 activeButton.textContent = activeTabTitle; 524 525 activeButton.addEventListener('click', () => { 526 const isExpanded = optionsList.classList.toggle('is-open'); 527 activeButton.setAttribute('aria-expanded', isExpanded); 528 }); 529 530 document.addEventListener('click', (event) => { 531 if (!dropdownWrapper.contains(event.target)) { 532 optionsList.classList.remove('is-open'); 533 activeButton.setAttribute('aria-expanded', 'false'); 534 } 535 }); 536 537 dropdownWrapper.appendChild(activeButton); 538 dropdownWrapper.appendChild(optionsList); 539 widget.querySelector('.e-n-tabs').insertBefore(dropdownWrapper, tabContentWrapper); 540 tabsHeading.style.display = 'none'; 541 }; 542 543 const restoreOriginalTabs = (widget) => { 544 const dropdown = widget.querySelector('.custom-tabs-dropdown-wrapper'); 545 const tabsHeading = widget.querySelector('.e-n-tabs-heading'); 546 if (dropdown) dropdown.remove(); 547 if (tabsHeading) tabsHeading.style.display = ''; 548 }; 549 550 // --- 2. Desktop Sticky Logic (Only for .sticky-tab-interface) --- 551 const handleDesktopSticky = () => { 552 // Exit if screen is tablet/mobile 553 if (window.innerWidth <= responsiveBreakpoint) return; 554 555 tabContainers.forEach(container => { 556 // Ignore the non-sticky variant 557 if (container.classList.contains('dropdown-tab-interface')) return; 558 559 const widget = container.querySelector('.elementor-widget-n-tabs'); 560 if (!widget) return; 561 562 const heading = widget.querySelector('.e-n-tabs-heading'); 563 let placeholder = widget.querySelector('.sticky-placeholder'); 564 565 if (!heading) return; 566 567 const trackingElement = placeholder || heading; 568 const rect = trackingElement.getBoundingClientRect(); 569 570 if (rect.top <= topOffset) { 571 if (!heading.classList.contains('js-is-sticky')) { 572 if (!placeholder) { 573 placeholder = document.createElement('div'); 574 placeholder.className = 'sticky-placeholder'; 575 placeholder.style.height = heading.offsetHeight + 'px'; 576 placeholder.style.marginBottom = window.getComputedStyle(heading).marginBottom; 577 heading.parentNode.insertBefore(placeholder, heading); 578 } 579 heading.classList.add('js-is-sticky'); 580 heading.style.width = widget.offsetWidth + 'px'; 581 heading.style.top = topOffset + 'px'; 582 } 583 } else { 584 if (heading.classList.contains('js-is-sticky')) { 585 heading.classList.remove('js-is-sticky'); 586 heading.style.width = ''; 587 heading.style.top = ''; 588 if (placeholder) placeholder.remove(); 589 } 590 } 591 }); 592 }; 593 594 // --- 3. Initialization --- 595 const handleResize = () => {
596 tabContainers.forEach(container => { 597 const widget = container.querySelector('.elementor-widget-n-tabs'); 598 if (widget) { 599 if (window.innerWidth <= responsiveBreakpoint) { 600 createCustomDropdown(widget); 601 // Clean up desktop sticky artifacts if present 602 const heading = widget.querySelector('.e-n-tabs-heading'); 603 const placeholder = widget.querySelector('.sticky-placeholder'); 604 if (heading) { 605 heading.classList.remove('js-is-sticky'); 606 heading.style.width = ''; 607 heading.style.top = ''; 608 } 609 if (placeholder) placeholder.remove(); 610 } else { 611 restoreOriginalTabs(widget); 612 } 613 } 614 }); 615 }; 616 617 handleResize(); 618 window.addEventListener('resize', handleResize); 619 window.addEventListener('scroll', handleDesktopSticky); 620 } 621}); 622</script>
622 623 624<style> 625/* --- Desktop Sticky Styles (Applied ONLY to .sticky-tab-interface) --- */ 626@media (min-width: 1025px) { 627 .sticky-tab-interface .e-n-tabs-heading.js-is-sticky { 628 position: fixed !important; 629 left: auto; 630 z-index: 10; 631 background-color: #ffffff; 632 box-shadow: 0 4px 10px rgba(0,0,0,0.05); 633 border-bottom: 1px solid #e0e0e0; 634 margin-top: 8rem !important; 635 margin-bottom: 0 !important; 636 padding-top: 15px; 637 padding-bottom: 0px; 638 } 639} 640 641/* --- Dropdown Styles (Applied to BOTH on Tablet/Mobile) --- */ 642@media (max-width: 1024px) { 643 /* Only .sticky-tab-interface gets a sticky dropdown */ 644 .sticky-tab-interface .custom-tabs-dropdown-wrapper { 645 position: -webkit-sticky; 646 position: sticky; 647 top: 5rem; 648 z-index: 10; 649 } 650 651 /* .dropdown-tab-interface stays static (scrolling naturally) */ 652 .dropdown-tab-interface .custom-tabs-dropdown-wrapper { 653 position: relative; 654 z-index: 10; 655 } 656 657 /* Shared Dropdown Appearance */ 658 .custom-tabs-dropdown-wrapper { 659 background-color: #ffffff; 660 box-shadow: 0 4px 6px rgba(0,0,0,0.1); 661 } 662 663 .dropdown-active-title { 664 display: flex; 665 justify-content: space-between; 666 align-items: center; 667 width: 100%; 668 padding: 15px 20px; 669 font-size: 20px; 670 font-weight: 600; 671 text-align: left; 672 color: #1a1a1a; 673 background-color: #ffffff; 674 border: none; 675 border-bottom: 2px solid #f0f0f0; 676 cursor: pointer; 677 } 678 679 .dropdown-active-title::after { 680 content: ''; 681 border: solid #333; 682 border-width: 0 2px 2px 0; 683 display: inline-block; 684 padding: 4px; 685 transform: rotate(45deg); 686 transition: transform 0.3s ease; 687 } 688 689 .dropdown-active-title[aria-expanded="true"]::after { 690 transform: rotate(-135deg); 691 } 692 693 .dropdown-options-list { 694 display: none; 695 position: absolute; 696 top: 100%; 697 left: 0; 698 width: 100%; 699 background-color: #ffffff; 700 box-shadow: 0 8px 16px rgba(0,0,0,0.15); 701 z-index: 1000; 702 } 703 704 .dropdown-options-list.is-open { 705 display: block; 706 } 707 708 .dropdown-option-item { 709 display: block; 710 width: 100%; 711 padding: 15px 20px; 712 font-size: 16px; 713 text-align: left; 714 background-color: #fff; 715 border: none; 716 border-top: 1px solid #f0f0f0; 717 cursor: pointer; 718 color: black; 719 } 720} 721</style>
722<script> 723document.addEventListener('DOMContentLoaded', function () { 724 const subNavContainers = document.querySelectorAll('.sub-navigation-interface'); 725 726 if (subNavContainers.length > 0) { 727 const tabletBreakpoint = 1024; 728 729 const createSubNavDropdown = (container) => { 730 const navWidget = container.querySelector('.elementor-widget-nav-menu'); 731 if (!navWidget || container.querySelector('.sub-nav-active-button')) { 732 return; 733 } 734 735 const mainMenu = navWidget.querySelector('.elementor-nav-menu--main'); 736 const defaultToggle = navWidget.querySelector('.elementor-menu-toggle'); 737 const topLevelMenuItems = mainMenu.querySelectorAll(':scope > ul > li.menu-item'); 738 739 if (topLevelMenuItems.length === 0) return; 740 741 const activeButton = document.createElement('button'); 742 activeButton.className = 'sub-nav-active-button'; 743 activeButton.setAttribute('aria-haspopup', 'true'); 744 activeButton.setAttribute('aria-expanded', 'false'); 745 746 const optionsPanel = document.createElement('div'); 747 optionsPanel.className = 'sub-nav-options-panel'; 748 optionsPanel.setAttribute('role', 'menu'); 749 750 const activeItem = mainMenu.querySelector('.current-menu-item > a, .current-menu-ancestor > a'); 751 const activeItemText = activeItem ? activeItem.textContent.trim() : topLevelMenuItems[0].querySelector('a').textContent.trim(); 752 753 const buttonLabel = document.createElement('span'); 754 buttonLabel.className = 'sub-nav-button-label'; 755 buttonLabel.textContent = activeItemText; 756 activeButton.appendChild(buttonLabel); 757 758 // --- REBUILT LOGIC FOR NESTED ITEMS --- 759 topLevelMenuItems.forEach(item => { 760 const mainLink = item.querySelector(':scope > a'); 761 const subMenu = item.querySelector(':scope > .sub-menu'); 762 763 // Case 1: Item has a sub-menu (create a toggle) 764 if (subMenu) { 765 const group = document.createElement('div'); 766 group.className = 'sub-nav-item-group'; 767 768 const toggleButton = document.createElement('button'); 769 toggleButton.className = 'sub-nav-item-toggle'; 770 toggleButton.innerHTML = `<span>${mainLink.textContent.trim()}</span>`; 771 772 const nestedList = document.createElement('div'); 773 nestedList.className = 'sub-nav-nested-list'; 774 775 subMenu.querySelectorAll('a.elementor-sub-item').forEach(subLink => { 776 const newLink = document.createElement('a'); 777 newLink.href = subLink.href; 778 newLink.textContent = subLink.textContent.trim(); 779 newLink.className = `sub-nav-option-item is-sub-item ${subLink.closest('li.menu-item').className} ${subLink.className}`; 780 nestedList.appendChild(newLink); 781 }); 782 783 toggleButton.addEventListener('click', (e) => { 784 e.stopPropagation(); 785 group.classList.toggle('is-open'); 786 }); 787 788 group.appendChild(toggleButton); 789 group.appendChild(nestedList); 790 optionsPanel.appendChild(group); 791 792 } 793 // Case 2: Item is a simple link 794 else { 795 const newLink = document.createElement('a'); 796 newLink.href = mainLink.href; 797 newLink.textContent = mainLink.textContent.trim(); 798 newLink.className = `sub-nav-option-item ${item.className} ${mainLink.className}`; 799 optionsPanel.appendChild(newLink); 800 } 801 }); 802 803 activeButton.addEventListener('click', (e) => { 804 e.stopPropagation(); 805 const isExpanded = optionsPanel.classList.toggle('is-open'); 806 activeButton.setAttribute('aria-expanded', isExpanded); 807 }); 808 809 document.addEventListener('click', () => { 810 if (optionsPanel.classList.contains('is-open')) { 811 optionsPanel.classList.remove('is-open'); 812 activeButton.setAttribute('aria-expanded', 'false'); 813 } 814 }); 815 816 navWidget.querySelector('.elementor-widget-container').appendChild(activeButton); 817 container.appendChild(optionsPanel); 818 mainMenu.style.display = 'none'; 819 if (defaultToggle) defaultToggle.style.display = 'none'; 820 }; 821 822 const restoreOriginalNav = (container) => { 823 const button = container.querySelector('.sub-nav-active-button'); 824 const panel = container.querySelector('.sub-nav-options-panel'); 825 if (button) button.remove(); 826 if (panel) panel.remove(); 827 828 const navWidget = container.querySelector('.elementor-widget-nav-menu'); 829 if (navWidget) { 830 const mainMenu = navWidget.querySelector('.elementor-nav-menu--main'); 831 const defaultToggle = navWidget.querySelector('.elementor-menu-toggle'); 832 if (mainMenu) mainMenu.style.display = ''; 833 if (defaultToggle) defaultToggle.style.display = ''; 834 } 835 }; 836 837 const handleResize = () => {
838 subNavContainers.forEach(container => { 839 if (window.innerWidth <= tabletBreakpoint) { 840 createSubNavDropdown(container); 841 } else { 842 restoreOriginalNav(container); 843 } 844 }); 845 }; 846 847 handleResize(); 848 window.addEventListener('resize', handleResize); 849 } 850}); 851</script>
851 852<style> 853/* Apply these styles only on tablet and mobile (1024px and below) */ 854@media (max-width: 1024px) { 855 .sub-navigation-interface { 856 position: relative; 857 z-index: 10; 858 margin-bottom: 20px; 859 } 860 861 .sub-navigation-interface .e-con-inner { 862 align-items: center; 863 } 864 865 .sub-nav-active-button { 866 display: flex; 867 justify-content: flex-end; 868 align-items: center; 869 width: auto; 870 margin-left: auto; 871 padding: 10px 0; 872 background-color: transparent; 873 border: none; 874 cursor: pointer; 875 } 876 877 .sub-nav-button-label { 878 display: none; 879 } 880 881 .sub-nav-active-button::after { 882 content: ''; 883 border: solid #333; 884 border-width: 0 2px 2px 0; 885 display: inline-block; 886 padding: 4px; 887 transform: rotate(45deg); 888 transition: transform 0.3s ease; 889 } 890 891 .sub-nav-active-button[aria-expanded="true"]::after { 892 transform: rotate(-135deg); 893 } 894 895 .sub-nav-options-panel { 896 position: absolute; 897 top: 100%; 898 left: 0; 899 width: 100%; 900 background-color: #ffffff; 901 box-shadow: 0 10px 25px rgba(0,0,0,0.1); 902 border: 1px solid #f0f0f0; 903 opacity: 0; 904 transform: translateY(-10px); 905 pointer-events: none; 906 transition: opacity 0.3s ease, transform 0.3s ease; 907 } 908 909 .sub-nav-options-panel.is-open { 910 opacity: 1; 911 transform: translateY(0); 912 pointer-events: auto; 913 } 914 915 .sub-nav-option-item, 916 .sub-nav-item-toggle { 917 display: block; 918 width: 100%; 919 padding: 12px 20px; 920 font-size: 15px; 921 color: #333; 922 text-decoration: none; 923 text-align: left; 924/* border-bottom: 1px solid #f0f0f0; */ 925 background: transparent; 926 border-left: none; 927 border-right: none; 928 border-top: none; 929 } 930 .sub-nav-options-panel > *:last-child > .sub-nav-item-toggle, 931 .sub-nav-options-panel > .sub-nav-option-item:last-child { 932 border-bottom: none; 933 } 934 935 .sub-nav-option-item:hover, 936 .sub-nav-item-toggle:hover { 937 background-color: #f9f9f9; 938 } 939 940 /* REVISED: Accordion toggle button */ 941 .sub-nav-item-toggle { 942 display: flex; /* Changed from 'flex' */ 943 align-items: center; 944 font-weight: bold; 945 cursor: pointer; 946 } 947 948 /* REVISED: The chevron icon for the toggle */ 949 .sub-nav-item-toggle::after { 950 content: ''; 951 display: inline-block; 952 margin-left: 8px; /* Space between text and icon */ 953 border: solid #555; 954 border-width: 0 2px 2px 0; 955 padding: 3px; 956 transform: rotate(45deg); /* Downward pointing */ 957 transition: transform 0.3s ease; 958 } 959 960 /* REVISED: Rotate chevron up when open */ 961 .sub-nav-item-group.is-open > .sub-nav-item-toggle::after { 962 transform: rotate(-135deg); /* Upward pointing */ 963 } 964 965 /* The nested list that gets revealed */ 966 .sub-nav-nested-list { 967 max-height: 0; 968 overflow: hidden; 969 transition: max-height 0.4s ease-in-out; 970 background-color: #fafafa; 971 } 972 .sub-nav-item-group.is-open > .sub-nav-nested-list { 973 max-height: 500px; 974 } 975 976 /* Indented styling for sub-items */ 977 .is-sub-item { 978 padding-left: 35px; 979 } 980} 981</style> 982 983<!-- Meta Pixel Code -->
984<script type='text/javascript'> 985!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? 986n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; 987n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; 988t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, 989document,'script','https://connect.facebook.net/en_US/fbevents.js'); 990</script>
990 991<!-- End Meta Pixel Code -->
992<script type='text/javascript'>FacebookSignal.init({"held":false,"ajaxUrl":"https:\/\/www.vai.org\/wp-admin\/admin-ajax.php","releaseAction":"fbpix_release_signals","pixelId":"384101625410649","attribution":{},"capig":"1"});FacebookSignal.initPixel("384101625410649",{},{"agent":"wordpress_0-7.0.5-5.2.2","includeCapiIntegration":true});</script>
992<script type='text/javascript'> 993 fbq('track', 'PageView', []); 994 </script>
994 <style> 995 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 996 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 997 background-image: none !important; 998 } 999 @media screen and (max-height: 1024px) { 1000 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 1001 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 1002 background-image: none !important; 1003 } 1004 } 1005 @media screen and (max-height: 640px) { 1006 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 1007 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 1008 background-image: none !important; 1009 } 1010 } 1011 </style> 1012 <link rel="icon" href="https://www.vai.org/wp-content/uploads/2022/06/cropped-vai-fav-32x32.png" sizes="32x32" /> 1013<link rel="icon" href="https://www.vai.org/wp-content/uploads/2022/06/cropped-vai-fav-192x192.png" sizes="192x192" /> 1014<link rel="apple-touch-icon" href="https://www.vai.org/wp-content/uploads/2022/06/cropped-vai-fav-180x180.png" /> 1015<meta name="msapplication-TileImage" content="https://www.vai.org/wp-content/uploads/2022/06/cropped-vai-fav-270x270.png" /> 1016<style id="wp-custom-css"> 1017 1018.gform_wrapper.gravity-theme .ginput_complex input, .gform_wrapper.gravity-them { 1019 margin-top: 1.125rem 1020} 1021.max-h-24 {max-height: 6rem;} 1022 1023 .gallery{-moz-column-gap:var(--space-4xs);column-gap:var(--space-4xs);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding-bottom:var(--space-xl);row-gap:var(--space-4xs)}@media (min-width:940px){.gallery{-moz-column-gap:var(--space-m);column-gap:var(--space-m);row-gap:var(--space-m)}}.gallery-icon img{bottom:0;height:100%;left:0;-o-object-fit:cover;object-fit:cover;right:0;top:0;width:100%} 1024 1025.page-id-21779 .two-up, .page-id-21779 .four-up { 1026 padding-bottom: var(--space-3xl); 1027 padding-top: var(--space-3xl); 1028} 1029 1030 1031 .article-wysiwyg .wysiwyg div[id^=attachment_], .article-wysiwyg .wysiwyg figure[id^=attachment_] { 1032 max-width: 100% !important; 1033 } 1034 1035 1036@media (min-width:940px) { 1037 .page-id-21779 .two-up, .page-id-21779 .four-up { 1038 padding-bottom: var(--space-7xl); 1039 padding-top: var(--space-7xl); 1040 } 1041} 1042 1043@media (min-width:940px) { 1044.page-id-18435 #filtered-people, .page-id-18435 .three-up, .page-id-18435 .impact-callout > div { 1045 padding-bottom: var(--space-7xl); 1046 padding-top: var(--space-7xl); 1047} 1048} 1049 1050.page-id-17989 .three-up { 1051 padding-bottom: var(--space-3xl); 1052 padding-top: var(--space-3xl); 1053} 1054 1055.page-id-17989 .three-up .image-cover img { 1056 object-fit: contain !important; 1057 } 1058 1059 .page-id-17989 .three-up.remove_top_padding { 1060padding-top: 0 !important; 1061 } 1062 1063@media (min-width:940px) { 1064 .md\:mr-f-5 { 1065 margin-right: var(--space-m); 1066} 1067 1068 .article-wysiwyg .wysiwyg div[id^=attachment_], .article-wysiwyg .wysiwyg figure[id^=attachment_] { 1069 min-width: 225px !important; 1070 } 1071 1072 .page-id-17989 .three-up { 1073 padding-bottom: var(--space-7xl) !important; 1074 padding-top: var(--space-7xl) !important; 1075 } 1076 1077 .page-id-17989 .three-up.remove_top_padding { 1078padding-top: 0 !important; 1079 } 1080} 1081 1082.page-id-22990 .image-cover.pb-7\.5\/10 { 1083 padding-bottom: 45%; 1084} 1085 1086#filtered-people img { 1087 object-position: top; 1088} 1089 1090.contact-us-gf-form_wrapper button, .contact-us-gf-form_wrapper input, .contact-us-gf-form_wrapper optgroup, .contact-us-gf-form_wrapper select, .contact-us-gf-form_wrapper textarea { 1091color: #121416; 1092} 1093body #gform_wrapper_8 .gform_body .gform_fields .gfield textarea { 1094 border: 2px solid black 1095} 1096 1097 1098.alignright { 1099 display: inline; 1100 float: right!important; 1101 margin-left: 1rem!important; 1102 margin-bottom: 1rem!important; 1103} 1104.bio-modal .image-cover > img { 1105 object-position: top !important; 1106} 1107 1108.sponsors .tertiary-list .image-cover img { 1109 width: 75% !important; 1110} 1111.custom-divider { 1112 border: none; 1113 border-top: 2px solid #878a8f; 1114 margin: 5px 0; 1115} 1116.article-highlights { 1117 margin: 2rem 0; 1118 padding: 1.5rem; 1119 border-left: 10px solid #555; 1120 background-color: #f5f5f5; 1121} 1122 1123.article-highlights h4 { 1124 margin: 0 0 0.25 rem; 1125 font-size: 1.25rem; 1126} 1127 1128.article-highlights ul { 1129 margin: 0; 1130 padding-left: 1.25rem; 1131} 1132 1133.article-highlights li + li { 1134 margin-top: 0.5rem; 1135} 1136.about-trial-table { 1137 width: 42%; 1138 height: 100%; 1139 border: 5px solid #005596; 1140} 1141.about-trial-table td { 1142 padding: 8px; 1143} 1144/* Full width on phones and small tablets */ 1145@media screen and (max-width: 768px) { 1146 .about-trial-table { 1147 width: 100% !important; 1148 height: auto !important; 1149 float: none !important; 1150 margin: 0 0 20px 0 !important; 1151 display: table; 1152 } 1153} 1154</style> 1155 1156 <style> 1157 :root { 1158 --pageBG: #121416; 1159 --pageText: #ffffff; 1160 1161 } 1162 1163 1164 .delay-75 { 1165 transition-delay: 75ms; 1166 } 1167 .delay-100ms { 1168 transition-delay: 100ms; 1169 } 1170 .delay-200 { 1171 transition-delay: 200ms; 1172 } 1173 .delay-300 { 1174 transition-delay: 300ms; 1175 } 1176 .delay-400 { 1177 transition-delay: 400ms; 1178 } 1179 .delay-500 { 1180 transition-delay: 500ms; 1181 } 1182 .delay-600 { 1183 transition-delay: 600ms; 1184 } 1185 .delay-700 { 1186 transition-delay: 700ms; 1187 } 1188 .delay-1000 { 1189 transition-delay: 1000ms; 1190 } 1191 1192 .pb-5\.5\/10 { 1193 padding-bottom: 55%; 1194 } 1195 1196 .pb-6\.5\/10 { 1197 padding-bottom: 65%; 1198 } 1199.alignright { 1200 display: inline; 1201 float: right!important; 1202 margin-left: 1rem!important; 1203} 1204 </style> 1205 </head> 1206 1207 <body class="wp-singular page-template-default page page-id-22246 page-child parent-pageid-16805 wp-theme-timberlandtheme eio-default tribe-no-js tec-no-tickets-on-recurring tec-no-rsvp-on-recurring timberland/theme elementor-default elementor-page elementor-page-22246 tribe-theme-timberlandtheme bg-pageBG text-pageText" data-template="base.twig" :class="{ 'prevent-scroll': showMobileMenu, 'prevent-scroll': showDesktopMenu, 'prevent-scroll': showPopupForm}" x-data="{ showDesktopMenu: false, showMobileMenu: false, showSubscribeModal: false, showSearchModal: false, showPopupForm: false }"> 1208 <header class="fixed top-0 left-0 right-0 w-full header z-90"> 1209 <a class="mr-auto site-logo" href="https://www.vai.org/">
1210 <svg class="w-40 h-auto sm:w-60" width="155" height="50" viewbox="0 0 155 50" fill="none" id="vai-nav" xmlns="http://www.w3.org/2000/svg"> 1211 <g clip-path="url(#clip0_4153_30951)"> 1212 <path id="vai-nav-logo" class="fill-pageText" d="M12.043 4.76935C12.043 2.11102 13.1378 0 14.5064 0C15.8749 0 16.9697 2.11102 16.9697 4.76935C16.9697 7.38858 15.8749 9.5387 14.5064 9.5387C13.1378 9.5387 12.043 7.38858 12.043 4.76935ZM17.5171 13.7217C18.0254 14.4253 18.4164 15.3245 18.651 16.2627C19.2766 18.7647 19.0811 19.742 18.7292 22.4785C18.7292 22.4785 21.349 8.48319 28.8563 2.18921C22.1701 4.41751 17.5171 13.7217 17.5171 13.7217ZM0 2.18921C7.50733 8.48319 10.1271 22.4785 10.1271 22.4785C9.81427 19.742 9.57967 18.7647 10.2053 16.2627C10.4399 15.2854 10.8309 14.4253 11.3392 13.7217C11.3783 13.7217 6.72532 4.41751 0 2.18921ZM14.5064 12.8616H14.4673H14.4282C13.1769 12.8616 12.3949 14.7381 11.9648 17.24C10.4399 26.2705 14.4673 49.9609 14.4673 49.9609C14.4673 49.9609 18.4946 26.2705 16.9697 17.24C16.5396 14.7381 15.7576 12.8616 14.5064 12.8616Z"/> 1213 <path id="vai-nav-text" class="fill-pageText" d="M46.6085 8.32837L39.2575 24.4738H38.9056L31.5547 8.32837H34.6827L39.1793 18.9226L43.6368 8.32837H46.6085ZM57.2047 24.2392L55.6798 20.6036H49.3846L47.8597 24.2392H45.0444L52.3954 8.09381H52.7864L60.0591 24.2392H57.2047ZM54.7414 18.4535L52.4736 13.1368L50.2057 18.4535H54.7414ZM64.4384 14.036L74.4091 24.552L74.7219 24.4738V8.32837H71.9848V18.3753L62.1705 8.01562L61.7404 8.09381V24.2392H64.4384V14.036ZM84.3406 24.2392H81.5254L88.8763 8.09381H89.2673L96.6183 24.2392H93.7639L92.239 20.6036H85.9438L84.3406 24.2392ZM86.7649 18.4535H91.3006L89.0327 13.1368L86.7649 18.4535ZM101.193 14.036L111.164 24.552L111.477 24.4738V8.32837H108.739V18.3753L98.9252 8.01562L98.4951 8.09381V24.2392H101.193V14.036ZM119.766 24.3565C118.045 24.3565 116.794 24.2392 115.191 24.0829V8.44565C116.716 8.28928 118.045 8.172 119.609 8.172C125.905 8.172 129.033 11.8077 129.033 16.1079C129.033 20.6036 126.1 24.3565 119.766 24.3565ZM117.928 21.8155C118.593 21.9327 119.179 21.9327 120.196 21.9327C124.302 21.9327 126.139 19.4699 126.139 16.1079C126.139 12.785 124.028 10.5567 119.961 10.5567C119.179 10.5567 118.476 10.5958 117.928 10.674V21.8155ZM141.701 21.7764H134.702V17.3589H141.037V14.9742H134.702V10.7912H141.701V8.32837H131.965V24.2392H141.701V21.7764ZM147.84 21.7764V8.32837H145.142V24.2392H154.839V21.7764H147.84ZM34.3308 45.975H37.0679V30.0641H34.3308V45.975ZM51.1441 40.111L41.2908 29.7514L40.8607 29.8295V45.975H43.5977V35.7717L53.5684 46.2877L53.8812 46.2095V30.0641H51.1832V40.111H51.1441ZM62.5615 36.749C60.5674 35.889 59.7854 35.2635 59.7854 34.1689C59.7854 33.1134 60.5674 32.1751 62.2487 32.1751C63.3436 32.1751 64.5948 32.7224 65.455 33.3088L66.3152 30.9241C65.3768 30.2987 63.8519 29.7904 62.3269 29.7904C59.0034 29.7904 57.0874 31.9406 57.0874 34.2471C57.0874 36.1626 58.1041 37.6091 60.8802 38.7818C63.4218 39.8374 63.891 40.541 63.891 41.6356C63.891 42.7302 63.1481 43.7076 61.4667 43.7076C60.0982 43.7076 58.5733 43.1603 57.3221 42.222L56.3836 44.6458C57.7913 45.5449 59.5899 46.2095 61.3885 46.2095C64.673 46.2095 66.6671 44.0203 66.6671 41.4402C66.628 39.4073 65.7287 38.1173 62.5615 36.749ZM68.2702 32.527H73.3533V45.975H76.0904V32.527H81.1344V30.0641H68.3093V32.527H68.2702ZM83.715 45.975H86.4521V30.0641H83.715V45.975ZM89.0327 32.527H94.1158V45.975H96.8529V32.527H101.897V30.0641H89.0718V32.527H89.0327ZM114.214 39.681C114.214 42.4175 112.845 43.7858 110.577 43.7858C108.27 43.7858 106.941 42.4566 106.941 39.681V30.0641H104.243V39.8765C104.243 44.0203 106.589 46.2486 110.577 46.2486C114.487 46.2486 116.99 43.9421 116.99 39.8765V30.0641H114.253V39.681H114.214ZM119.258 32.527H124.341V45.975H127.039V32.527H132.083V30.0641H119.258V32.527ZM134.585 45.975H144.282V43.5121H137.283V39.0946H143.617V36.7099H137.283V32.527H144.282V30.0641H134.546V45.975H134.585ZM152.962 32.6442C152.962 34.1298 151.789 35.3417 150.304 35.3417C148.818 35.3417 147.645 34.1298 147.645 32.6442C147.645 31.1587 148.818 29.9077 150.304 29.9077C151.75 29.9468 152.962 31.1587 152.962 32.6442ZM152.454 32.6442C152.454 31.3933 151.477 30.3768 150.264 30.3768C149.091 30.3768 148.075 31.3933 148.075 32.6442C148.075 33.8952 149.052 34.9116 150.264 34.9116C151.477 34.9116 152.454 33.8561 152.454 32.6442ZM150.773 32.9179L151.477 33.9734H150.89L150.304 33.0352C150.225 33.0352 150.147 33.0352 150.147 33.0352C150.108 33.0352 150.069 33.0352 149.952 33.0352V33.9734H149.443V31.3542C149.678 31.3151 149.913 31.3151 150.186 31.3151C150.929 31.3151 151.281 31.706 151.281 32.1751C151.281 32.4488 151.086 32.7615 150.773 32.9179ZM150.734 32.136C150.734 31.9015 150.538 31.706 150.186 31.706C150.069 31.706 149.991 31.706 149.913 31.706V32.5661C150.03 32.5661 150.069 32.5661 150.147 32.5661C150.538 32.6052 150.734 32.4488 150.734 32.136Z" fill="white"/> 1214 </g> 1215 <defs> 1216 <clipPath id="clip0_4153_30951"> 1217 <rect width="154.839" height="50" fill="black"/> 1218 </clipPath> 1219 </defs> 1220 </svg> 1221 <span class="sr-only">Home</span> 1222</a> 1223 1224<div id="menu-wrapper" class="fixed top-0 bottom-0 left-0 block w-full overflow-scroll transform menu-desktop bg-blue z-80 md:px-f-9 md:py-f-6 no-scrollbar" :class="showDesktopMenu ? 'is-open' : 'translate-x-0'" x-cloak> 1225 <div id="menu-wrapper-interfaces" class="fixed top-0 left-0 flex items-center justify-end w-full col-start-1 lg:hidden grid-item col-span-16 text-pageText"> 1226 <button 1227 id="menu-trigger-close" 1228 x-on:click="showDesktopMenu = ! showDesktopMenu" 1229 class="block w-16 h-16 transition-colors duration-300 md:bg-white nav-trigger z-80 is-open" 1230> 1231 <span class="lines"> 1232 <span class="line"></span> 1233 <span class="line"></span> 1234 <span class="line"></span> 1235 <span class="line"></span> 1236 </span> 1237 <span class="sr-only">Close Desktop Menu</span> 1238</button> 1239 <a id="menu-logo-white" class="col-start-1 mr-auto site-logo" href="https://www.vai.org">
1240 <img class="relative w-40 h-auto sm:w-60 z-80" src="https://www.vai.org/wp-content/themes/timberland/theme/assets/images/vai-logo-white.svg" alt="Van Andel Institute"/> 1241 <span class="sr-only">Home</span> 1242</a> 1243 </div> 1244 <nav class="flex flex-col mx-auto header-nav max-w-9xl px-f-5" 1245 x-data="{ 1246 openItems: [], 1247 init() { 1248 this.$watch('openItems', (value) => { 1249 }); 1250 }, 1251 toggleMenuItem(id) { 1252 if (this.openItems.includes(id)) { 1253 this.closeMenuItem(id); 1254 } else { 1255 this.openMenuItem(id); 1256 } 1257 }, 1258 openMenuItem(id) { 1259 if (!this.openItems.includes(id)) { 1260 this.openItems.push(id); 1261 } 1262 }, 1263 closeMenuItem(id) { 1264 this.openItems = this.openItems.filter(item => item !== id); 1265 }, 1266 handleBlur(id, event) { 1267 setTimeout(() => { 1268 if (this.$refs[`menu-${id}`] && !this.$refs[`menu-${id}`].contains(document.activeElement) && !this.$el.querySelector(`#button-${id}`).contains(document.activeElement) ) { 1269 this.closeMenuItem(id); 1270 } 1271 }, 0); 1272 1273 } 1274 }" 1275 > 1276 <span class="sr-only">Main Navigation</span> 1277 <ul> 1278 1279 <li class="relative mb-f-8 group menu-level-1" role="presentation"> 1280 <button 1281 @click="toggleMenuItem('18116-1')" 1282 class="text-left is-h2 is-display menu-item-level-1" 1283 aria-expanded="false" 1284 aria-controls="menu-18116-1" 1285 id="button-18116-1" 1286 @keydown.escape.prevent="closeMenuItem('18116-1')" 1287 @keydown.enter.prevent="toggleMenuItem('18116-1')" 1288 @keydown.space.prevent="toggleMenuItem('18116-1')" 1289 @blur="handleBlur('18116-1', $event)" 1290 > 1291 About Us 1292 </button> 1293 1294 <ul class="nav-dropdown" 1295 x-collapse 1296 x-show="openItems.includes('18116-1')" 1297 role="group" 1298 aria-labelledby="button-18116-1" 1299 id="menu-18116-1" 1300 > 1301 1302 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1303 <a 1304 href="https://www.vai.org/about/" 1305 class="p1 menu-item-level-2" 1306 role="menuitem" 1307 > 1308 About VAI 1309 </a> 1310 </li> 1311 1312 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1313 <a 1314 href="https://www.vai.org/about/accolades/" 1315 class="p1 menu-item-level-2" 1316 role="menuitem" 1317 > 1318 Accolades 1319 </a> 1320 </li> 1321 1322 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1323 <a 1324 href="https://www.vai.org/careers/" 1325 class="p1 menu-item-level-2" 1326 role="menuitem" 1327 > 1328 Careers 1329 </a> 1330 </li> 1331 1332 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1333 <a 1334 href="https://www.vai.org/about/leadership/" 1335 class="p1 menu-item-level-2" 1336 role="menuitem" 1337 > 1338 Leadership 1339 </a> 1340 </li> 1341 1342 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1343 <a 1344 href="https://www.vai.org/about/institute-faqs/" 1345 class="p1 menu-item-level-2" 1346 role="menuitem" 1347 > 1348 Institute FAQs 1349 </a> 1350 </li> 1351 1352 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1353 <a 1354 href="https://www.vai.org/institute-trustees/" 1355 class="p1 menu-item-level-2" 1356 role="menuitem" 1357 > 1358 Institute Trustees 1359 </a> 1360 </li> 1361 1362 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1363 <a 1364 href="https://www.vai.org/about/history-legacy/" 1365 class="p1 menu-item-level-2" 1366 role="menuitem" 1367 > 1368 History & Legacy 1369 </a> 1370 </li> 1371 1372 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1373 <a 1374 href="https://www.vai.org/about/facilities/" 1375 class="p1 menu-item-level-2" 1376 role="menuitem" 1377 > 1378 Facilities 1379 </a> 1380 </li> 1381 1382 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1383 <a 1384 href="https://www.vai.org/people/" 1385 class="p1 menu-item-level-2" 1386 role="menuitem" 1387 > 1388 Our People 1389 </a> 1390 </li> 1391 1392 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1393 <a 1394 href="https://www.vai.org/news/publications/" 1395 class="p1 menu-item-level-2" 1396 role="menuitem" 1397 > 1398 Publications 1399 </a> 1400 </li> 1401 1402 </ul> 1403 </li> 1404 1405 <li class="relative mb-f-8 group menu-level-1" role="presentation"> 1406 <button 1407 @click="toggleMenuItem('18122-1')" 1408 class="text-left is-h2 is-display menu-item-level-1" 1409 aria-expanded="false" 1410 aria-controls="menu-18122-1" 1411 id="button-18122-1" 1412 @keydown.escape.prevent="closeMenuItem('18122-1')" 1413 @keydown.enter.prevent="toggleMenuItem('18122-1')" 1414 @keydown.space.prevent="toggleMenuItem('18122-1')" 1415 @blur="handleBlur('18122-1', $event)" 1416 > 1417 Research 1418 </button> 1419 1420 <ul class="nav-dropdown" 1421 x-collapse 1422 x-show="openItems.includes('18122-1')" 1423 role="group" 1424 aria-labelledby="button-18122-1" 1425 id="menu-18122-1" 1426 > 1427 1428 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1429 <a 1430 href="https://www.vai.org/research/" 1431 class="p1 menu-item-level-2" 1432 role="menuitem" 1433 > 1434 About Research 1435 </a> 1436 </li> 1437 1438 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1439 <a 1440 href="https://www.vai.org/research/research-areas/" 1441 class="p1 menu-item-level-2" 1442 role="menuitem" 1443 > 1444 Research Areas 1445 </a> 1446 </li> 1447 1448 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1449 <a 1450 href="https://www.vai.org/research/research-departments/" 1451 class="p1 menu-item-level-2" 1452 role="menuitem" 1453 > 1454 Research Departments 1455 </a> 1456 </li> 1457 1458 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1459 <a 1460 href="https://www.vai.org/people/?tabUrl=Research&searchTermsUrl=532" 1461 class="p1 menu-item-level-2" 1462 role="menuitem" 1463 > 1464 Research Faculty 1465 </a> 1466 </li> 1467 1468 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1469 <a 1470 href="https://www.vai.org/research/core-services/" 1471 class="p1 menu-item-level-2" 1472 role="menuitem" 1473 > 1474 Core Technologies and Services 1475 </a> 1476 </li> 1477 1478 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1479 <a 1480 href="https://www.vai.org/research/postdoctoral-programs/" 1481 class="p1 menu-item-level-2" 1482 role="menuitem" 1483 > 1484 Postdoctoral Program 1485 </a> 1486 </li> 1487 1488 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1489 <a 1490 href="https://www.vai.org/research/collaborations/" 1491 class="p1 menu-item-level-2" 1492 role="menuitem" 1493 > 1494 Collaborations 1495 </a> 1496 </li> 1497 1498 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1499 <a 1500 href="https://www.vai.org/research/technologies-and-tools/" 1501 class="p1 menu-item-level-2" 1502 role="menuitem" 1503 > 1504 Technologies and Tools 1505 </a> 1506 </li> 1507 1508 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1509 <a 1510 href="https://www.vai.org/graduate-school/research-internships/?tabUrl=research-internships" 1511 class="p1 menu-item-level-2" 1512 role="menuitem" 1513 > 1514 Research Internships 1515 </a> 1516 </li> 1517 1518 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1519 <a 1520 href="https://www.vai.org/research/vai-board-of-trustees-external-scientific-advisory-board/" 1521 class="p1 menu-item-level-2" 1522 role="menuitem" 1523 >
1524 Research Board of Trustees & External Scientific Advisory Board 1525 </a> 1526 </li> 1527 1528 </ul> 1529 </li> 1530 1531 <li class="relative mb-f-8 group menu-level-1" role="presentation"> 1532 <button 1533 @click="toggleMenuItem('18133-1')" 1534 class="text-left is-h2 is-display menu-item-level-1" 1535 aria-expanded="false" 1536 aria-controls="menu-18133-1" 1537 id="button-18133-1" 1538 @keydown.escape.prevent="closeMenuItem('18133-1')" 1539 @keydown.enter.prevent="toggleMenuItem('18133-1')" 1540 @keydown.space.prevent="toggleMenuItem('18133-1')" 1541 @blur="handleBlur('18133-1', $event)" 1542 > 1543 Graduate School 1544 </button> 1545 1546 <ul class="nav-dropdown" 1547 x-collapse 1548 x-show="openItems.includes('18133-1')" 1549 role="group" 1550 aria-labelledby="button-18133-1" 1551 id="menu-18133-1" 1552 > 1553 1554 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1555 <a 1556 href="https://www.vai.org/graduate-school/" 1557 class="p1 menu-item-level-2" 1558 role="menuitem" 1559 > 1560 About the Graduate School 1561 </a> 1562 </li> 1563 1564 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1565 <a 1566 href="https://www.vai.org/graduate-school/van-andel-institute-graduate-school-board-of-directors/" 1567 class="p1 menu-item-level-2" 1568 role="menuitem" 1569 > 1570 VAI Graduate School Board of Directors 1571 </a> 1572 </li> 1573 1574 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1575 <a 1576 href="https://www.vai.org/graduate-school/doctoral-program/" 1577 class="p1 menu-item-level-2" 1578 role="menuitem" 1579 > 1580 Doctoral Program 1581 </a> 1582 </li> 1583 1584 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1585 <a 1586 href="https://www.vai.org/graduate-school/admissions/" 1587 class="p1 menu-item-level-2" 1588 role="menuitem" 1589 > 1590 Admissions 1591 </a> 1592 </li> 1593 1594 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1595 <a 1596 href="https://www.vai.org/graduate-school/leadership-and-staff/" 1597 class="p1 menu-item-level-2" 1598 role="menuitem" 1599 > 1600 Leadership and Staff 1601 </a> 1602 </li> 1603 1604 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1605 <a 1606 href="https://www.vai.org/graduate-school/faculty/" 1607 class="p1 menu-item-level-2" 1608 role="menuitem" 1609 > 1610 Faculty 1611 </a> 1612 </li> 1613 1614 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1615 <a 1616 href="https://www.vai.org/graduate-school/student-life/?tabUrl=tab-2" 1617 class="p1 menu-item-level-2" 1618 role="menuitem" 1619 > 1620 Current Students 1621 </a> 1622 </li> 1623 1624 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1625 <a 1626 href="https://www.vai.org/graduate-school/student-life/" 1627 class="p1 menu-item-level-2" 1628 role="menuitem" 1629 > 1630 Student Life 1631 </a> 1632 </li> 1633 1634 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1635 <a 1636 href="https://www.vai.org/graduate-school/alumni-association/" 1637 class="p1 menu-item-level-2" 1638 role="menuitem" 1639 > 1640 Alumni 1641 </a> 1642 </li> 1643 1644 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1645 <a 1646 href="https://www.vai.org/graduate-school/outcome-data/" 1647 class="p1 menu-item-level-2" 1648 role="menuitem" 1649 > 1650 Outcome Data 1651 </a> 1652 </li> 1653 1654 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1655 <a 1656 href="https://www.vai.org/graduate-school/research-internships/?tabUrl=research-internships" 1657 class="p1 menu-item-level-2" 1658 role="menuitem" 1659 > 1660 Research Internships 1661 </a> 1662 </li> 1663 1664 </ul> 1665 </li> 1666 1667 <li class="relative mb-f-8 group menu-level-1" role="presentation"> 1668 <button 1669 @click="toggleMenuItem('30228-1')" 1670 class="text-left is-h2 is-display menu-item-level-1" 1671 aria-expanded="false" 1672 aria-controls="menu-30228-1" 1673 id="button-30228-1" 1674 @keydown.escape.prevent="closeMenuItem('30228-1')" 1675 @keydown.enter.prevent="toggleMenuItem('30228-1')" 1676 @keydown.space.prevent="toggleMenuItem('30228-1')" 1677 @blur="handleBlur('30228-1', $event)" 1678 > 1679 K-12 Education 1680 </button> 1681 1682 <ul class="nav-dropdown" 1683 x-collapse 1684 x-show="openItems.includes('30228-1')" 1685 role="group" 1686 aria-labelledby="button-30228-1" 1687 id="menu-30228-1" 1688 > 1689 1690 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1691 <a 1692 href="https://www.vai.org/k-12-education/" 1693 class="p1 menu-item-level-2" 1694 role="menuitem" 1695 > 1696 About K-12 Education 1697 </a> 1698 </li> 1699 1700 </ul> 1701 </li> 1702 1703 <li class="relative mb-f-8 group menu-level-1" role="presentation"> 1704 <button 1705 @click="toggleMenuItem('18145-1')" 1706 class="text-left is-h2 is-display menu-item-level-1" 1707 aria-expanded="false" 1708 aria-controls="menu-18145-1" 1709 id="button-18145-1" 1710 @keydown.escape.prevent="closeMenuItem('18145-1')" 1711 @keydown.enter.prevent="toggleMenuItem('18145-1')" 1712 @keydown.space.prevent="toggleMenuItem('18145-1')" 1713 @blur="handleBlur('18145-1', $event)" 1714 > 1715 Support Us 1716 </button> 1717 1718 <ul class="nav-dropdown" 1719 x-collapse 1720 x-show="openItems.includes('18145-1')" 1721 role="group" 1722 aria-labelledby="button-18145-1" 1723 id="menu-18145-1" 1724 > 1725 1726 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1727 <a 1728 href="https://www.vai.org/support/" 1729 class="p1 menu-item-level-2" 1730 role="menuitem" 1731 > 1732 About Support 1733 </a> 1734 </li> 1735 1736 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1737 <a 1738 href="https://www.vai.org/support/why-vai/" 1739 class="p1 menu-item-level-2" 1740 role="menuitem" 1741 > 1742 Why VAI 1743 </a> 1744 </li> 1745 1746 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1747 <a 1748 href="https://www.vai.org/support/ways-to-give/" 1749 class="p1 menu-item-level-2" 1750 role="menuitem" 1751 > 1752 Ways to Give 1753 </a> 1754 </li> 1755 1756 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1757 <a 1758 href="https://www.vai.org/support/ways-to-engage/" 1759 class="p1 menu-item-level-2" 1760 role="menuitem" 1761 > 1762 Ways to Support 1763 </a> 1764 </li> 1765 1766 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1767 <a 1768 href="https://www.vai.org/support/ways-to-engage/purple-community/" 1769 class="p1 menu-item-level-2" 1770 role="menuitem" 1771 > 1772 Purple Community 1773 </a> 1774 </li> 1775 1776 <li class="relative mb-f-8 group menu-level-2" role="presentation"> 1777 <a 1778 href="https://www.vai.org/support/donor-stories/" 1779 class="p1 menu-item-level-2" 1780 role="menuitem" 1781 > 1782 Donor Stories 1783 </a> 1784 </li> 1785 1786 </ul> 1787 </li> 1788 1789 1790 </ul> 1791 </nav> 1792 <nav 1793 class="relative flex text-pageText secondary-nav" 1794 > 1795 <ul class="relative flex items-center justify-end "> 1796 <li 1797 class="relative group menu-level-1" role="presentation" 1798 > 1799 <a 1800 href="https://support.vai.org/campaign/821456/donate" 1801 target="_blank" 1802 class="text-left is-display donate-button in-header" 1803 aria-expanded="false" 1804 > 1805 Donate 1806 </a> 1807 </li> 1808 <li 1809 class="relative group menu-level-1" 1810 role="presentation" 1811 > 1812 <a 1813 href="https://www.vai.org/news/"
1814 class="nav-link text-pageBg cta in-header"> 1815 News 1816 </a> 1817 </li> 1818 <li 1819 class="relative group menu-level-1" 1820 role="presentation" 1821 > 1822 <a 1823 href="https://www.vai.org/vai-events/all/" 1824 class="nav-link text-pageBg cta in-header"> 1825 Events 1826 </a> 1827 </li> 1828 <li 1829 class="relative group menu-level-1" 1830 role="presentation" 1831 > 1832 <a 1833 href="https://www.vai.org/contact/" 1834 class="nav-link text-pageBg cta in-header"> 1835 Contact 1836 </a> 1837 </li> 1838 <li 1839 class="relative group menu-level-1" role="presentation" 1840 > 1841 <button 1842 x-on:click="showSubscribeModal = true" 1843 type="button" 1844 id="subscribe-desktop"
1845 class="nav-link text-pageBg cta in-header"> 1846 Subscribe 1847 </button> 1848 </li> 1849 </ul> 1850 </nav> 1851</div> <button 1852 x-on:click="showDesktopMenu = ! showDesktopMenu" 1853 x-init="$watch('showDesktopMenu', value => { 1854 document.body.classList.toggle('overflow-hidden', value); 1855 document.body.classList.toggle('overflow-auto', !value); 1856 });" 1857 class="absolute right-0 block w-16 h-16 transition-colors duration-300 md:relative sm:hidden nav-trigger nav-trigger--menu z-70" 1858> 1859 <span class="lines"> 1860 <span class="line"></span> 1861 <span class="line"></span> 1862 <span class="line"></span> 1863 <span class="line"></span> 1864 </span> 1865 <span class="sr-only">Open Desktop Menu</span> 1866</button> <button 1867 class="pt-f-2 md:pt-0 z-80" 1868 id="search-modal-icon" 1869 x-on:click="showSearchModal = true; $nextTick(() => { $refs.searchInput.focus(); });" 1870 x-init="$watch('showSearchModal', value => { 1871 document.body.classList.toggle('overflow-hidden', value); 1872 document.body.classList.toggle('overflow-auto', !value); 1873 });" 1874> 1875 <span class="sr-only">Toggle Search</span> 1876 <svg class="w-6 h-auto" width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1877 <path id="vai-search" class="fill-white md:fill-current" d="M9.5 3C11.2239 3 12.8772 3.68482 14.0962 4.90381C15.3152 6.12279 16 7.77609 16 9.5C16 11.11 15.41 12.59 14.44 13.73L14.71 14H15.5L20.5 19L19 20.5L14 15.5V14.71L13.73 14.44C12.59 15.41 11.11 16 9.5 16C7.77609 16 6.12279 15.3152 4.90381 14.0962C3.68482 12.8772 3 11.2239 3 9.5C3 7.77609 3.68482 6.12279 4.90381 4.90381C6.12279 3.68482 7.77609 3 9.5 3ZM9.5 5C7 5 5 7 5 9.5C5 12 7 14 9.5 14C12 14 14 12 14 9.5C14 7 12 5 9.5 5Z"/> 1878 </svg> 1879</button> <div x-cloak x-show="showSubscribeModal" x-on:keydown.escape.prevent.stop="showSubscribeModal = false" role="dialog" aria-modal="true" class="fixed inset-0 bg-black pointer-events-auto z-90"> 1880 <div class="absolute top-0 flex justify-end w-full md:px-f-9 md:py-f-6"> 1881 <button 1882 x-on:click="showSubscribeModal = ! showSubscribeModal" 1883 x-init="$watch('showSubscribeModal', value => { 1884 document.body.classList.toggle('overflow-hidden', value); 1885 document.body.classList.toggle('overflow-auto', !value); 1886 });" 1887 class="w-16 h-16 transition-colors duration-300 bg-black sm:block nav-trigger nav-trigger--subscribe z-80 is-open" 1888> 1889 <span class="lines"> 1890 <span class="line"></span> 1891 <span class="line"></span> 1892 <span class="line"></span> 1893 <span class="line"></span> 1894 </span> 1895 <span class="sr-only">
1895Close Modal</span> 1896</button> 1897 </div> 1898 1899 <!-- Overlay --> 1900 <div x-show="showSubscribeModal" x-transition.opacity class="fixed inset-0 bg-black bg-opacity-50"></div> 1901 1902 <!-- Panel --> 1903 <div x-show="showSubscribeModal" x-transition x-on:click="showSubscribeModal = false" class="relative flex flex-col items-center justify-center min-h-screen p-4"> 1904 <h2 class="font-serif text-2xl leading-snug text-white mb-f-14">Get the latest stories right in your inbox.</h2> 1905 <div x-on:click.stop x-trap.noscroll.inert="showSubscribeModal" class="relative w-full max-w-6xl overflow-y-auto bg-white border border-black rounded-lg px-f-8 pb-f-14 pt-f-10"> 1906 <!-- FULLY INLINED STATE WITH DIRECT DOM MANIPULATION --> 1907 <div x-data="{ 1908 validationError: {}, 1909 isSubmitting: false, 1910 submit: function() { 1911 // Prevent double submissions 1912 if (this.isSubmitting) return; 1913 this.isSubmitting = true; 1914 1915 var formElement = this.$refs.form; 1916 var successElement = this.$refs.successMessage; 1917 var submitBtn = this.$refs.submitBtnContainer; 1918 var actionUrl = formElement.action || ''; 1919 var methodType = formElement.method || 'POST'; 1920 var formData = new FormData(formElement); 1921 var component = this; 1922 1923 if (typeof grecaptcha !== 'undefined') { 1924 grecaptcha.ready(function() { 1925 grecaptcha.execute('6LdhG-YpAAAAACLjgnQ42Bj4dtqYXSJm7H-rtRjr', { action: 'submit' }).then(function(token) { 1926 // Use .set() to ensure we overwrite rather than duplicate the token 1927 formData.set('g-recaptcha-response', token); 1928 1929 fetch(actionUrl, { method: methodType, body: formData }) 1930 .then(function(response) { 1931 return response.json(); 1932 }) 1933 .then(function(data) { 1934 if (data && data.is_valid) { 1935 // DIRECTLY AND FORCEFULLY UPDATE THE DOM 1936 formElement.style.setProperty('display', 'none', 'important'); 1937 successElement.style.setProperty('display', 'block', 'important'); 1938 1939 // Hide the button explicitly in case the browser kicked it out of the form tag 1940 if (submitBtn) { 1941 submitBtn.style.setProperty('display', 'none', 'important'); 1942 } 1943 1944 formElement.reset(); 1945 } else if (data && data.validation_messages) { 1946 var err = {}; 1947 Object.keys(data.validation_messages).forEach(function(key) { 1948 err['input_' + key] = data.validation_messages[key]; 1949 }); 1950 component.validationError = err; 1951 } 1952 component.isSubmitting = false; 1953 }) 1954 .catch(function(err) { 1955 console.log('Submission error:', err); 1956 component.isSubmitting = false; 1957 }); 1958 }); 1959 }); 1960 } else { 1961 console.log('reCAPTCHA failed to load.'); 1962 component.isSubmitting = false; 1963 } 1964 } 1965 }"> 1966 <form action="https://forms.vai.org/wp-json/gf/v2/forms/103/submissions" x-ref="form" @submit.prevent="submit" method="post"> 1967 <div :class="{'has-error' : validationError['input_3']}" class="flex flex-col justify-between w-full lg:flex-row"> 1968 <div class="flex flex-col flex-1 px-f-4" :class="{'has-error': validationError['input_1']}"> 1969 <input class="leading-relaxed text-black border-b-2 border-black text-body" id="input_1" type="text" name="input_1"> 1970 <label class="leading-relaxed text-left text-darkgray text-body pt-f-3" for="input_1">First Name</label> 1971 </div> 1972 <div class="flex flex-col flex-1 px-f-4" :class="{'has-error': validationError['input_2']}"> 1973 <input class="leading-relaxed text-black border-b-2 border-black text-body" id="input_2" type="text" name="input_2"> 1974 <label class="leading-relaxed text-left text-darkgray text-body pt-f-3" for="input_2">Last Name</label> 1975 </div> 1976 <div class="flex flex-col flex-1 px-f-4" :class="{'has-error': validationError['input_4']}"> 1977 <input class="leading-relaxed text-black border-b-2 border-black text-body" id="input_4" type="email" name="input_4" required> 1978 <label class="leading-relaxed text-left text-darkgray text-body pt-f-3" for="input_4">Email Address</label> 1979 </div> 1980 </div> 1981 </div> <!-- Because of this extra div, the browser likely pushes the button container outside the form tag --> 1982 <div class="flex flex-row justify-center pt-f-14" x-ref="submitBtnContainer"> 1983 <button class="btn is-blue" type="submit">Sign Me Up</button> 1984 </div> 1985 </form> 1986 1987 <!-- FORCED SUCCESS MESSAGE VISIBILITY --> 1988 <div x-ref="successMessage" id="header-form-thank-you" class="font-sans text-center text-black text-body" style="display: none !important;">
1989 Thank you for signing up to our newsletter! 1990 </div> 1991 </div> 1992 </div> 1993 </div> 1994</div>
vendor: 62 bytes, lines 1994-1996
1994 1995 1996<script src="https://www.google.com/recaptcha/api.js?render=
19966LdhG-YpAAAAACLjgnQ42Bj4dtqYXSJm7H-rtRjr
vendor: 35 bytes, line 1996
1996" async defer></script>
1996<div 1997 x-cloak 1998 x-on:keydown.escape.prevent.stop="showSearchModal = false" 1999 role="dialog" 2000 aria-modal="true" 2001 id="search-modal" 2002 class="fixed inset-0 transform search-modal z-90" 2003 :class="showSearchModal ? 'is-open' : 'translate-y-0'" 2004> 2005 <div class="absolute top-0 w-full "> 2006 <div class="flex items-center justify-between bg-black md:px-f-9 py-f-2 md:py-f-6"> 2007 <div class="w-full pr-f-2 md:pr-f-10 z-90"> 2008 <form role="search" method="get" id="searchform" class="searchform" action="https://vai.org"> 2009 <input x-ref="searchInput" id="search-modal-input" class="w-full font-serif leading-tight text-white bg-black z-90 text-body md:text-xl p-f-5 caret-white" type="text" value="" name="s" id="s" placeholder="Search Van Andel Institute" data-rlvlive="true" data-rlvparentel="#rlvlive" data-rlvconfig="default"/> 2010 <input class="sr-only" type="submit" id="searchsubmit"/> 2011 <div id="rlvlive"></div> 2012 <input name="searchblogs" type="hidden" value="1,2,4"> 2013 </form> 2014 </div> 2015 <button 2016 x-on:click="showSearchModal = ! showSearchModal" 2017 class="flex-shrink-0 block w-16 h-16 transition-colors duration-300 bg-black nav-trigger nav-trigger--subscribe z-80 is-open" 2018> 2019 <span class="lines"> 2020 <span class="line"></span> 2021 <span class="line"></span> 2022 <span class="line"></span> 2023 <span class="line"></span> 2024 </span> 2025 <span class="sr-only">
2025Close Modal</span> 2026</button> 2027 </div> 2028 </div> 2029</div> 2030 <div :class="showSearchModal ? 'visible opacity-70' : 'opacity-0 invisible'" class="fixed inset-0 z-50 w-full h-full transition-opacity duration-300 ease-out delay-500 bg-black"></div></header> 2031 <main class="relative z-auto data-scroll-container"> 2032 2033 2034<section class="hero--sm md:px-f-5 overflow-hidden relative flex flex-col justify-center sm:min-h-600"> 2035 <picture> 2036 <source class="absolute inset-0 w-full h-full object-cover object-center z-0" 2037 srcset="https://www.vai.org/wp-content/uploads/2022/09/neuronsbanner.webp" 2038 type="image/webp" /> 2039 <img class="absolute inset-0 w-full h-full object-cover object-center" 2040 alt="" 2041 data-src="https://www.vai.org/wp-content/uploads/2022/09/neuronsbanner.jpg" 2042 srcset="https://www.vai.org/wp-content/uploads/2022/09/neuronsbanner-800x0-c-default.jpg 800w, https://www.vai.org/wp-content/uploads/2022/09/neuronsbanner-1000x0-c-default.jpg 1000w, https://www.vai.org/wp-content/uploads/2022/09/neuronsbanner-1600x0-c-default.jpg 1600w" 2043 type="image/jpeg" /> 2044 </picture> 2045 <div class="w-full max-w-9xl mx-auto px-f-5 md:grid-cols-8 relative z-10"> 2046 <div class="md:col-start-1 md:col-span-8"> 2047 <nav class="breadcrumbs text-sm font-mono tracking-extraWide uppercase animate delay-100" data-js-animate><span><span><a href="https://www.vai.org/news/">News</a></span></span></nav> 2048 <h1 class="font-display text-2xl sm:text-4xl md:text-5xl text-bold leading-base tracking-wide mt-f-4 uppercase animate delay-200" 2049 data-js-animate> 2050 Publications 2051 </h1> 2052 </div> 2053 </div> 2054</section> 2055 2056<section class="primary-callout relative px-f-5 md:px-f-10 text-black bg-white "> 2057 <div class="md:grid md:grid-cols-8 max-w-9xl mx-auto relative z-10 py-f-9 md:py-f-14"> 2058 <div class="md:col-start-2 md:col-span-6 flex flex-col items-center md:-mx-f-12"> 2059 <p class="font-serif text-center text-xl px-f-1 animate delay-200 md:w-3/4" data-js-animate> 2060 Explore Science and Community Stories Through VAIâs Publications 2061 </p> 2062 <div class="fc primary-callout__copy font-sans text-body leading-relaxed mt-f-4 text-center md:px-f-5 animate delay-300 wysiwyg wysiwyg--200" 2063 data-js-animate> 2064 <p>The Publications page serves as a hub for research news, donor stories, signature events and more. These publications reflect our commitment to advancing knowledge in <a href="https://www.vai.org/research/research-areas/cancer/">cancer</a>, neuroscience, <a href="https://www.vai.org/research/research-areas/epigenetics-in-health-and-disease/">epigenetics</a> and other <a href="https://www.vai.org/research/research-areas/">research areas</a> â showcasing the latest news and discoveries from VAI labs. It also features stories from the VAI community, highlighting sponsors, families, individuals and philanthropists who share why they support the Institute. By showcasing VAIâs work alongside the stories of those who help make it happen, we foster a collaborative, powerful and passionate community â and shape the future for the better.</p> 2065<p><em>Highlights of Hope</em> is VAIâs donor newsletter, published twice a year. It features the latest in research and education, while also spotlighting stories from the VAI community and the Instituteâs <a href="https://www.vai.org/vai-events/?tabUrl=philanthropic-events">signature events</a>. The <em>Annual Report</em> covers VAIâs achievements from each calendar year, highlighting science, education and philanthropic efforts. </p> 2066 2067 </div> 2068 </div> 2069 </div> 2070</section> 2071 <section class="text-black bg-white"> 2072 <div id="" 2073 class="max-w-9xl mx-auto px-f-5 md:grid md:grid-cols-8 py-f-9 md:py-f-14"> 2074 <div class="md:col-start-2 md:col-span-6 md:px-f-5 stack--md"> 2075 <div> 2076 <div class="wysiwyg wysiwyg--200"> 2077 <h3>2026 HIGHLIGHTS OF HOPE | SPRING/SUMMER ISSUE</h3> 2078<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%;" data-page-width="480" data-page-height="640"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.yumpu.com/en/embed/view/J9LBngxdGN71IXmz" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2079 2080 </div>
2081 </div> 2082 <div> 2083 <div class="section-title mb-f-5 md:mb-f-9 md:flex md:justify-between md:items-center"> 2084 <h3 class="font-display font-bold uppercase leading-none tracking-widest pb-f-2 md:pb-0 md:pr-f-5 border-b border-black border-solid md:border-0"> 2085 Featured 2086 </h3> 2087 <div class="primary-title-line flex-grow bg-transparent hidden md:inline-block md:bg-black"></div> 2088 </div> 2089 <div class="wysiwyg wysiwyg--200"> 2090 <p><style>.embed-container { position: relative; padding-bottom:56.25%; height:0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%;}</style> 2091</p> 2092<div style="position: relative; padding-bottom: 33.25%; height: 0; overflow: hidden; max-width: 100%;" data-page-width="480" data-page-height="640"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.yumpu.com/en/embed/view/PynRI8lJbM2OTxVS" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2093 2094 </div> 2095 </div> 2096 </div> 2097 </div> 2098</section> 2099 <section class="bg-white text-black scroll-m-14 pt-f-5 pb-f-5"> 2100 <div id="" class="max-w-9xl mx-auto px-f-5 md:grid md:grid-cols-8"> 2101 <div class="md:col-start-2 md:col-span-6 md:px-f-5"> 2102 <h3 class="w-full font-serif text-xl leading-snug text-black"> 2103 Past Publications 2104 </h3> 2105 <div x-data="{ active: null }" class="pt-f-5 accordion-container "> 2106 <div x-data="{id: 1,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2107 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2108 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2109 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2110 </span> 2111 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2112 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2113 </span> 2114 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2025</span> 2115 </button> 2116 <div x-show="expanded" x-collapse> 2117 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><div style="position: relative; overflow: hidden; height: 458px; max-width: 100%;" data-page-width="480" data-page-height="640"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.yumpu.com/en/embed/view/KVJNdHSIpvaAQzB4" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2118</div> 2119 </div> 2120 </div> 2121 <div x-data="{id: 2,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2122 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2123 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2124 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2125 </span> 2126 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2127 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2128 </span> 2129 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2024</span> 2130 </button> 2131 <div x-show="expanded" x-collapse> 2132 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><div style="position: relative; overflow: hidden; height: 458px; max-width: 100%;" data-page-width="480" data-page-height="640"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.yumpu.com/en/embed/view/t5vXejWgDOdZJPrC" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2133</div> 2134 </div> 2135 </div> 2136 <div x-data="{id: 3,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2137 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2138 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2139 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2140 </span> 2141 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2142 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2143 </span> 2144 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2023</span> 2145 </button> 2146 <div x-show="expanded" x-collapse> 2147 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><div style="position: relative; padding-bottom: 33.25%; height: 0; overflow: hidden; max-width: 100%;" data-page-width="480" data-page-height="640"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" src="https://www.yumpu.com/en/embed/view/t8U75gjLzZcYSMn0" frameborder="0" allowfullscreen="allowfullscreen"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span></iframe></div> 2148</div> 2149 </div> 2150 </div> 2151 <div x-data="{id: 4,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2152 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2153 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2154 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2155 </span> 2156 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2157 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2158 </span> 2159 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2022</span> 2160 </button> 2161 <div x-show="expanded" x-collapse> 2162 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><p><style>.embed-container { position: relative; padding-bottom:33.25%; height:0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%;}</style> 2163</p> 2164<div id="ypembedcontainer" class="embed-container" data-page-width="480" data-page-height="640"><iframe src="https://www.yumpu.com/en/embed/view/uUy3DwK25ibvhZme" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2165<p>
2165<script src='https://players.yumpu.com/modules/embed/yp_r_iframe.js' ></script>
2165</p> 2166</div> 2167 </div> 2168 </div> 2169 <div x-data="{id: 5,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2170 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2171 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2172 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2173 </span> 2174 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2175 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2176 </span> 2177 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2021</span> 2178 </button> 2179 <div x-show="expanded" x-collapse> 2180 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><p><style>.embed-container { position: relative; padding-bottom:33.25%; height:0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%;}</style> 2181</p> 2182<div id="ypembedcontainer" class="embed-container" data-page-width="480" data-page-height="640"><iframe src="https://www.yumpu.com/en/embed/view/ke5f4lU6XVLKPCwg" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2183<p>
2183<script src='https://players.yumpu.com/modules/embed/yp_r_iframe.js' ></script>
2183</p> 2184</div> 2185 </div> 2186 </div> 2187 <div x-data="{id: 6,get expanded() {return this.active === this.id}, set expanded(value) {this.active = value ? this.id : null},}" role="region" class="border-t border-solid border-white"> 2188 <button x-on:click="expanded = !expanded" :aria-expanded="expanded" class="flex items-center justify-start w-full py-f-5 border-t border-l-0 border-r-0 border-b-0 border-solid border-black"> 2189 <span x-show="expanded" aria-hidden="true" class="flex-none"> 2190 <img class="transform rotate-180" src="/wp-content/themes/timberland/theme/assets/images/icons/minus-icon.svg" alt="carat up"> 2191 </span> 2192 <span x-show="!expanded" aria-hidden="true" class="flex-none"> 2193 <img src="/wp-content/themes/timberland/theme/assets/images/icons/plus-icon.svg" alt="carat down"> 2194 </span> 2195 <span class=" font-sans font-bold text-lg md:text-body leading-relaxed text-blue text-left md:w-full pl-f-5">2020 and earlier</span> 2196 </button> 2197 <div x-show="expanded" x-collapse> 2198 <div class="pb-f-5 text-base text-black leading-relaxed accordion-wysiwyg wysiwyg wysiwyg--200"><p><style>.embed-container { position: relative; padding-bottom:33.25%; height:0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%;}</style> 2199</p> 2200<div id="ypembedcontainer" class="embed-container" data-page-width="480" data-page-height="640"><iframe src="https://www.yumpu.com/en/embed/view/GvtULo6ROrN9DcX2" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> 2201<p>
2201<script src='https://players.yumpu.com/modules/embed/yp_r_iframe.js' ></script>
2201</p> 2202</div> 2203 </div> 2204 </div> 2205 </div> 2206 </div> 2207 </div> 2208</section> 2209 2210 2211 </main> 2212 2213 <footer id="footer" class="footer text-white px-5 py-f-9 md:py-f-14 bg-black"> 2214 <div class="max-w-9xl mx-auto px-f-5"> 2215 <div class="footer-top md:grid md:grid-cols-8 sm:pb-f-9"> 2216 <div class="md:col-start-1 md:col-span-8 md:px-f-5 lg:flex lg:justify-between"> 2217 <div class="grid-item col-start-2 col-span-3"> 2218 <h2 class="font-serif leading-snug text-2xl text-center sm:text-left mb-f-4"> 2219 Stay Informed 2220 2221 </h2> 2222 <p class="font-sans text-body leading-relaxed mb-f-9 md:mb-0 pl-f-1.5 sm:pl-0 text-center sm:text-left"> 2223 Fill out the form below to stay up to date with the Institute, 2224 <br class="hidden lg:block" />including research breakthroughs, exciting events and more! 2225 </p> 2226 </div> 2227 <div class="bg-vai-blue grid-item md:w-1/2 lg:w-1/3" x-data="wpForm()"> 2228 <form class="mt-f-5 mb-f-10 lg:ml-f-5" form action="https://forms.vai.org/wp-json/gf/v2/forms/102/submissions" x-ref="form" @submit.prevent="submit" method="post"> 2229 <div :class="{'has-error': validationError['input_5']}"> 2230 <div :class="{'hidden': isSuccess }" class="flex flex-col md:flex-row"> 2231 <label for="input_5" class="sr-only">Email Address</label> 2232 <input id="input_5" name="input_5" class="form-input rounded-lg md:rounded-l-lg md:rounded-r-none px-f-7 py-f-4 bg-darkdarkgray w-full" type="text" placeholder="Email Address"> 2233 <button class="rounded-lg md:rounded-r-lg md:rounded-l-none bg-blue mt-f-2 md:mt-0 px-f-7 py-f-4 md:px-f-12" type="submit" value="Submit" name="Subscribe" id="" class="">Submit</button> 2234 </div> 2235 <div class="form-input-hint" x-show="validationError['input_5']" x-text="validationError['input_5']" x-cloak></div> 2236 <div id="footer-form-thank-you" class="font-sans text-white text-body" x-show="isSuccess" x-cloak> 2237 Thank you for signing up to our newsletter! 2238 </div> 2239 </div> 2240 </form> 2241</div> 2242 </div> 2243 </div> 2244 <div class="md:grid md:grid-cols-8 md:px-f-5"> 2245 <div class="grid-item md:col-start-1 col-span-8 flex flex-col sm:flex-row justify-between sm:py-f-9 sm:border-b border-t border-solid border-darkgray"> 2246 <div class="social-nav is-footer order-3 sm:order-1 sm:w-1/2 lg:w-1/4 pb-f-7 sm:pb-0"> 2247 <div class="font-sans flex sm:flex-col justify-center sm:justify-between grid-item sm:col-start-2 sm:col-span-3 sm:order-1 h-full"> 2248 <img class="hidden sm:block sm:w-60" 2249 src="/wp-content/themes/timberland/theme/assets/images/vai-logo.svg" 2250 alt="Van Andel Institute" /> 2251 <ul class="flex"> 2252 <li class="list-item"> 2253 <a href="https://www.facebook.com/VanAndelInstitute/" target="_blank" class="p2 p2--lh"> 2254 <span class="sr-only">Facebook</span> 2255 <img alt="" 2256 class="w-8" 2257 src="/wp-content/themes/timberland/theme/assets/images/icons/new-facebook.png" /> 2258 </a> 2259 </li> 2260 <li class="list-item"> 2261 <a href="https://bsky.app/profile/vai.org" target="_blank" class="p2 p2--lh"> 2262 <span class="sr-only">Bluesky</span> 2263 <img alt="" 2264 class="w-8" 2265 src="/wp-content/themes/timberland/theme/assets/images/icons/new-bluesky.png" /> 2266 </a> 2267 </li> 2268 <li class="list-item"> 2269 <a href="https://x.com/VAInstitute/" target="_blank" class="p2 p2--lh"> 2270 <span class="sr-only">Twitter</span> 2271 <img alt="" 2272 class="w-8" 2273 src="/wp-content/themes/timberland/theme/assets/images/icons/new-twitter.png" /> 2274 </a> 2275 </li> 2276 <li class="list-item"> 2277 <a href="https://www.youtube.com/c/vanandelinstitute" target="_blank" class="p2 p2--lh"> 2278 <span class="sr-only">Youtube</span> 2279 <img alt="" 2280 class="w-8" 2281 src="/wp-content/themes/timberland/theme/assets/images/icons/new-youtube.png" /> 2282 </a> 2283 </li> 2284 <li class="list-item"> 2285 <a href="https://www.linkedin.com/company/van-andel-institute/" target="_blank" class="p2 p2--lh"> 2286 <span class="sr-only">Linkedin</span> 2287 <img alt="" 2288 class="w-8" 2289 src="/wp-content/themes/timberland/theme/assets/images/icons/new-linkedin.png" /> 2290 </a> 2291 </li> 2292 <li class="list-item"> 2293 <a href="https://www.instagram.com/vainstitute/" target="_blank" class="p2 p2--lh"> 2294 <span class="sr-only">Instagram</span> 2295 <img alt="" 2296 class="w-8" 2297 src="/wp-content/themes/timberland/theme/assets/images/icons/new-instagram.png" /> 2298 </a> 2299 </li> 2300 </ul> 2301 </div>
2302 </div> 2303 2304 <div class="footer-nav sm:hidden md:w-3/8 sm:order-2 lg:block"> 2305 <ul class="flex justify-between flex-wrap grid-item sm:col-start-5 col-span-3"> 2306 <li class="flex-auto w-1/2"><a href="https://support.vai.org/campaign/821456/donate" class="p1 p1--lh">Donate</a></li> 2307 <li class="flex-auto w-1/2"><a href="https://www.vai.org/mandatory-disclosures/" class="p1 p1--lh">Mandatory Disclosures</a></li> 2308 <li class="flex-auto w-1/2"><a href="https://www.vai.org/careers/" class="p1 p1--lh">Careers</a></li> 2309 <li class="flex-auto w-1/2"><a href="https://www.vai.org/intranet/" class="p1 p1--lh">Intranet</a></li> 2310 <li class="flex-auto w-1/2"><a href="https://www.vai.org/for-suppliers/" class="p1 p1--lh">For Suppliers</a></li> 2311 <li class="flex-auto w-1/2"><a href="https://secure.ethicspoint.com/domain/media/en/gui/25544/index.html" class="p1 p1--lh">EthicsPoint</a></li> 2312 </ul> 2313 </div> 2314 2315 <div class="sm:order-3 contact-nav grid-item col-start-9 col-span-2 sm:-ml-14 sm::block"> 2316 2317 <ul class=""> 2318 <li class="list-item"> 2319 <a href="https://goo.gl/maps/nNR7gG9KhxXueL7i6" target="_blank" class="p1 p1--lh"> 2320 <svg class="" 2321 width="24" 2322 height="24" 2323 viewbox="0 0 24 24" 2324 fill="none" 2325 xmlns="http://www.w3.org/2000/svg" 2326 alt="Map Pin"> 2327 <path d="M12 11C11.337 11 10.7011 10.7366 10.2322 10.2678C9.76339 9.79893 9.5 9.16304 9.5 8.5C9.5 7.83696 9.76339 7.20107 10.2322 6.73223C10.7011 6.26339 11.337 6 12 6C12.663 6 13.2989 6.26339 13.7678 6.73223C14.2366 7.20107 14.5 7.83696 14.5 8.5C14.5 8.8283 14.4353 9.15339 14.3097 9.45671C14.1841 9.76002 13.9999 10.0356 13.7678 10.2678C13.5356 10.4999 13.26 10.6841 12.9567 10.8097C12.6534 10.9353 12.3283 11 12 11V11ZM12 1.5C10.1435 1.5 8.36301 2.2375 7.05025 3.55025C5.7375 4.86301 5 6.64348 5 8.5C5 13.75 12 21.5 12 21.5C12 21.5 19 13.75 19 8.5C19 6.64348 18.2625 4.86301 16.9497 3.55025C15.637 2.2375 13.8565 1.5 12 1.5V1.5Z" 2328 fill="currentColor" /> 2329 </svg> 2330 <span>333 Bostwick Ave. NE<br /> 2331Grand Rapids, MI 49503</span> 2332 </a> 2333 </li> 2334 <li class="list-item"> 2335 <a href="tel:616.234.5000" class="p1 p1--lh"> 2336 <svg width="18" 2337 height="18" 2338 viewbox="0 0 18 18" 2339 fill="none" 2340 xmlns="http://www.w3.org/2000/svg" 2341 alt="Phone"> 2342 <path d="M3.62 7.79C5.06 10.62 7.38 12.94 10.21 14.38L12.41 12.18C12.69 11.9 13.08 11.82 13.43 11.93C14.55 12.3 15.75 12.5 17 12.5C17.2652 12.5 17.5196 12.6054 17.7071 12.7929C17.8946 12.9804 18 13.2348 18 13.5V17C18 17.2652 17.8946 17.5196 17.7071 17.7071C17.5196 17.8946 17.2652 18 17 18C12.4913 18 8.1673 16.2089 4.97918 13.0208C1.79107 9.8327 0 5.50868 0 1C0 0.734784 0.105357 0.48043 0.292893 0.292893C0.48043 0.105357 0.734784 0 1 0H4.5C4.76522 0 5.01957 0.105357 5.20711 0.292893C5.39464 0.48043 5.5 0.734784 5.5 1C5.5 2.25 5.7 3.45 6.07 4.57C6.18 4.92 6.1 5.31 5.82 5.59L3.62 7.79Z" 2343 fill="currentColor" /> 2344 </svg> 2345 <span>616.234.5000</span> 2346 </a> 2347 </li> 2348 <li class="list-item"> 2349 <a href="tel:616.234.5001" class="p1 p1--lh"> 2350 <svg width="24" 2351 height="24" 2352 viewbox="0 0 24 24" 2353 fill="none" 2354 xmlns="http://www.w3.org/2000/svg" 2355 alt="Fax Machine"> 2356 <path d="M11 6H16V8H11V6ZM8 9V3H19V9C19.7956 9 20.5587 9.31607 21.1213 9.87868C21.6839 10.4413 22 11.2044 22 12V18H19V21H8V18H7V9H8ZM10 5V9H17V5H10ZM10 15V19H17V15H10ZM19 11C18.7348 11 18.4804 11.1054 18.2929 11.2929C18.1054 11.4804 18 11.7348 18 12C18 12.2652 18.1054 12.5196 18.2929 12.7071C18.4804 12.8946 18.7348 13 19 13C19.2652 13 19.5196 12.8946 19.7071 12.7071C19.8946 12.5196 20 12.2652 20 12C20 11.7348 19.8946 11.4804 19.7071 11.2929C19.5196 11.1054 19.2652 11 19 11ZM4 9H5C5.26522 9 5.51957 9.10536 5.70711 9.29289C5.89464 9.48043 6 9.73478 6 10V17C6 17.2652 5.89464 17.5196 5.70711 17.7071C5.51957 17.8946 5.26522 18 5 18H4C3.46957 18 2.96086 17.7893 2.58579 17.4142C2.21071 17.0391 2 16.5304 2 16V11C2 10.4696 2.21071 9.96086 2.58579 9.58579C2.96086 9.21071 3.46957 9 4 9V9Z" 2357 fill="currentColor" /> 2358 </svg> 2359 <span>616.234.5001</span> 2360 </a> 2361 </li> 2362 <li class="list-item"> 2363 <a href="/cdn-cgi/l/email-protection#751c1b131a3503141c5b1a0712" class="p1 p1--lh"> 2364 <svg width="24" 2365 height="24" 2366 viewbox="0 0 24 24" 2367 fill="none" 2368 xmlns="http://www.w3.org/2000/svg"> 2369 <path d="M20 8L12 13L4 8V6L12 11L20 6V8ZM20 4H4C2.89 4 2 4.89 2 6V18C2 18.5304 2.21071 19.0391 2.58579 19.4142C2.96086 19.7893 3.46957 20 4 20H20C20.5304 20 21.0391 19.7893 21.4142 19.4142C21.7893 19.0391 22 18.5304 22 18V6C22 4.89 21.1 4 20 4Z" 2370 fill="currentColor" /> 2371 </svg> 2372 <span><span class="__cf_email__" data-cfemail="b8d1d6ded7f8ced9d196d7cadf">[email protected]</span></span> 2373 </a> 2374 </li> 2375 </ul>
2376 </div> 2377 </div> 2378 </div> 2379 2380 <div class="colophon md:grid md:grid-cols-8 sm:pt-f-9"> 2381 <div class="flex flex-col md:flex-row justify-between items-center md:col-start-1 md:col-span-8 md:px-f-5"> 2382 <span class="text-sm sm:text-base tracking-wide leading-none mb-f-7 md:mb-0"> 2383 © 2384 2026 2385 Van Andel Institute 2386 </span> 2387 <div class="flex w-full md:w-auto justify-between md:justify-end"> 2388 <a href="https://www.vai.org/privacy-policy/" class="text-sm sm:text-base tracking-wide leading-none sm:first:mr-f-14"> 2389 Privacy Policy 2390 </a> 2391 <a href="https://www.vai.org/terms-of-use/" class="text-sm sm:text-base tracking-wide leading-none sm:first:mr-f-14"> 2392 Terms 2393 </a> 2394 </div> 2395 </div> 2396 </div> 2397 </div> 2398</footer> 2399 <!-- Meta Pixel Event Code -->
vendor: 117 bytes, lines 2399-2400
2399 2400 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2400<script type='text/javascript'> 2401 (function () { 2402 function runPixelCode( response ) { 2403 if ( ! response || ! response.data || ! response.data.fb_pxl_code ) { 2404 return; 2405 } 2406 2407 try { 2408 new Function( response.data.fb_pxl_code )(); 2409 } catch ( e ) { 2410 console && console.warn 2411 && console.warn( 'Meta Pixel response parsing failed. Please check if your pixel is connected.', e ); 2412 } 2413 } 2414 2415 var radio = window.nfRadio 2416 || ( window.Backbone && window.Backbone.Radio ); 2417 if ( radio && radio.channel ) { 2418 radio.channel( 'forms' ).on( 'submit:response', runPixelCode ); 2419 } 2420 2421 if ( window.jQuery ) { 2422 window.jQuery( document ).on( 2423 'nfFormSubmitResponse', 2424 function ( event, data ) { 2425 if ( data && data.response ) { 2426 runPixelCode( data.response ); 2427 } 2428 } 2429 ); 2430 } 2431 })(); 2432 </script>
2432 2433 <!-- End Meta Pixel Event Code --> 2434 <!-- Meta Pixel Event Code --> 2435
2435<script type='text/javascript'> 2436 (function ( $ ) { 2437 if ( ! $ || typeof document === 'undefined' ) { 2438 return; 2439 } 2440 // WPForms triggers this jQuery event and passes the AJAX response object. 2441 $( document ).on( 'wpformsAjaxSubmitSuccess', function ( event, data ) { 2442 if ( data && data.data && data.data.fb_pxl_code ) { 2443 try { 2444 new Function( data.data.fb_pxl_code )(); 2445 } catch ( e ) { 2446 console && console.warn && console.warn( 'Meta Pixel eval failed', e ); 2447 } 2448 } 2449 } ); 2450 })( window.jQuery ); 2451 </script>
2451 2452 <!-- End Meta Pixel Event Code --> 2453
2453<script type="speculationrules"> 2454{"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/timberland/theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2455</script>
vendor: 1 bytes, line 2455
2455
2456<script> 2457 var relevanssi_rt_regex = /(&|\?)_(rt|rt_nonce)=(\w+)/g 2458 var newUrl = window.location.search.replace(relevanssi_rt_regex, '') 2459 history.replaceState(null, null, window.location.pathname + newUrl + window.location.hash) 2460</script>
2460 2461
2461<script> 2462 ( function ( body ) { 2463 'use strict'; 2464 body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' ); 2465 } )( document.body ); 2466 </script>
2466 2467 <!-- Meta Pixel Event Code --> 2468
2468<script type='text/javascript'> 2469 document.addEventListener( 'wpcf7mailsent', function( event ) { 2470 if( "fb_pxl_code" in event.detail.apiResponse){ 2471 eval(event.detail.apiResponse.fb_pxl_code); 2472 } 2473 }, false ); 2474 </script>
2474 2475 <!-- End Meta Pixel Event Code --> 2476 <div id="fb-pxl-ajax-code"></div><!-- YouTube Feeds JS -->
2477<script type="text/javascript"> 2478 2479</script>
2479 2480 <style type="text/css"> 2481 .relevanssi-live-search-results { 2482 opacity: 0; 2483 transition: opacity .25s ease-in-out; 2484 -moz-transition: opacity .25s ease-in-out; 2485 -webkit-transition: opacity .25s ease-in-out; 2486 height: 0; 2487 overflow: hidden; 2488 z-index: 9999995; /* Exceed SearchWP Modal Search Form overlay. */ 2489 position: absolute; 2490 display: none; 2491 } 2492 2493 .relevanssi-live-search-results-showing { 2494 display: block; 2495 opacity: 1; 2496 height: auto; 2497 overflow: auto; 2498 } 2499 2500 .relevanssi-live-search-no-results, .relevanssi-live-search-didyoumean { 2501 padding: 0 1em; 2502 } 2503 </style> 2504
2504<script> /* <![CDATA[ */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"},"registration_prompt":"There is unsaved attendee information. Are you sure you want to continue?"};/* ]]> */ </script>
2504
2504<script> 2505 ( () => { 2506 const lazyloadRunObserver = () => { 2507 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 2508 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 2509 entries.forEach( ( entry ) => { 2510 if ( entry.isIntersecting ) { 2511 let lazyloadBackground = entry.target; 2512 if( lazyloadBackground ) { 2513 lazyloadBackground.classList.add( 'e-lazyloaded' ); 2514 } 2515 lazyloadBackgroundObserver.unobserve( entry.target ); 2516 } 2517 }); 2518 }, { rootMargin: '200px 0px 200px 0px' } ); 2519 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 2520 lazyloadBackgroundObserver.observe( lazyloadBackground ); 2521 } ); 2522 }; 2523 const events = [ 2524 'DOMContentLoaded', 2525 'elementor/lazyload/observe', 2526 ]; 2527 events.forEach( ( event ) => { 2528 document.addEventListener( event, lazyloadRunObserver ); 2529 } ); 2530 } )(); 2531 </script>
2531 2532
2532<script id="tec-user-agent-js" src="https://www.vai.org/wp-content/plugins/the-events-calendar/common/build/js/user-agent.js?ver=da75d0bdea6dde3898df"></script>
vendor: 1 bytes, line 2532
2532
2533<script id="gtm4wp-client-device-data-js-before"> 2534var gtm4wp_clientdevice_config = {"browser":false,"os":false,"device":true}; 2535//# sourceURL=gtm4wp-client-device-data-js-before 2536</script>
vendor: 1 bytes, line 2536
2536
2537<script data-wp-strategy="defer" defer id="gtm4wp-client-device-data-js" src="https://www.vai.org/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-client-device-data.js?ver=2.0.4"></script>
vendor: 1 bytes, line 2537
2537
2538<script data-wp-strategy="defer" defer id="gtm4wp-media-gate-js" src="https://www.vai.org/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-media-gate.js?ver=2.0.4"></script>
vendor: 1 bytes, line 2538
2538
2539<script id="gtm4wp-youtube-js-before"> 2540window.gtm4wp_media_gate_expected = true; 2541//# sourceURL=gtm4wp-youtube-js-before 2542</script>
vendor: 1 bytes, line 2542
2542
2543<script data-wp-strategy="defer" defer id="gtm4wp-youtube-js" src="https://www.vai.org/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-youtube.js?ver=2.0.4"></script>
vendor: 1 bytes, line 2543
2543
2544<script id="gtm4wp-vimeo-js-before"> 2545window.gtm4wp_media_gate_expected = true; 2546//# sourceURL=gtm4wp-vimeo-js-before 2547</script>
vendor: 1 bytes, line 2547
2547
2548<script data-wp-strategy="defer" defer id="gtm4wp-vimeo-js" src="https://www.vai.org/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-vimeo.js?ver=2.0.4"></script>
vendor: 1 bytes, line 2548
2548
2549<script id="rocket-browser-checker-js-after"> 2550"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); 2551//# sourceURL=rocket-browser-checker-js-after 2552</script>
vendor: 1 bytes, line 2552
2552
2553<script id="rocket-preload-links-js-extra"> 2554var RocketPreloadLinksConfig = {"excludeUris":"/(?:.+/)?feed(?:/(?:.+/?)?)?$|/(?:.+/)?embed/|/(index.php/)?(.*)wp-json(/.*|$)|/refer/|/go/|/recommend/|/recommends/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https://www.vai.org","onHoverDelay":"100","rateThrottle":"3"}; 2555//# sourceURL=rocket-preload-links-js-extra 2556</script>
vendor: 1 bytes, line 2556
2556
2557<script id="rocket-preload-links-js-after"> 2558(function() { 2559"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); 2560}()); 2561 2562//# sourceURL=rocket-preload-links-js-after 2563</script>
vendor: 1 bytes, line 2563
2563
2564<script id="timberland-app-js" src="https://www.vai.org/wp-content/themes/timberland/theme/assets/build/app.12022024v1.1.js?id=e1d67df8f78965e609f0"></script>
vendor: 1 bytes, line 2564
2564
2565<script id="elementor-webpack-runtime-js" src="https://www.vai.org/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 2565
2565
2566<script id="elementor-frontend-modules-js" src="https://www.vai.org/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 2566
2566
2567<script id="jquery-ui-core-js" src="https://www.vai.org/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3"></script>
vendor: 1 bytes, line 2567
2567
2568<script id="elementor-frontend-js" src="https://www.vai.org/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.3.2"></script>
vendor: 1 bytes, line 2568
2568
2569<script id="relevanssi-live-search-client-js-extra"> 2570var relevanssi_live_search_params = []; 2571relevanssi_live_search_params = {"ajaxurl":"https:\/\/www.vai.org\/wp-admin\/admin-ajax.php","config":{"default":{"input":{"delay":300,"min_chars":3},"results":{"position":"bottom","width":"auto","offset":{"x":0,"y":5},"static_offset":true}}},"msg_no_config_found":"No valid Relevanssi Live Search configuration found!","msg_loading_results":"Loading search results.","messages_template":"<div class=\"live-ajax-messages\">\n\t<div id=\"relevanssi-live-ajax-search-spinner\"><\/div>\n<\/div>\n"};; 2572//# sourceURL=relevanssi-live-search-client-js-extra 2573</script>
vendor: 1 bytes, line 2573
2573
2574<script id="relevanssi-live-search-client-js" src="https://www.vai.org/wp-content/plugins/relevanssi-live-ajax-search/assets/javascript/dist/script.min.js?ver=2.5"></script>
2574 2575
2575<script type="text/javascript"> 2576 var visualizerUserInteractionEvents = [ 2577 "scroll", 2578 "mouseover", 2579 "keydown", 2580 "touchmove", 2581 "touchstart" 2582 ]; 2583 2584 visualizerUserInteractionEvents.forEach(function(event) { 2585 window.addEventListener(event, visualizerTriggerScriptLoader, { passive: true }); 2586 }); 2587 2588 function visualizerTriggerScriptLoader() { 2589 visualizerLoadScripts(); 2590 visualizerUserInteractionEvents.forEach(function(event) { 2591 window.removeEventListener(event, visualizerTriggerScriptLoader, { passive: true }); 2592 }); 2593 } 2594 2595 function visualizerLoadScripts() { 2596 document.querySelectorAll("script[data-visualizer-script]").forEach(function(elem) { 2597 // Replace the placeholder with a real script tag using async=false: 2598 // scripts download in parallel but execute in insertion order, which 2599 // preserves the WordPress dependency order. Parallel jQuery.getScript 2600 // calls could execute render-facade.js before the chart renderer had 2601 // registered its render event listener, leaving charts blank. 2602 var script = document.createElement("script"); 2603 script.src = elem.getAttribute("data-visualizer-script"); 2604 script.async = false; 2605 script.onload = function() { 2606 setTimeout( function() { 2607 visualizerRefreshChart(); 2608 } ); 2609 }; 2610 elem.parentNode.replaceChild(script, elem); 2611 }); 2612 } 2613 2614 function visualizerRefreshChart() { 2615 jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize(); 2616 if ( jQuery( 'div.viz-facade-loaded:not(.visualizer-lazy):empty' ).length > 0 ) { 2617 visualizerUserInteractionEvents.forEach( function( event ) { 2618 window.addEventListener( event, function() { 2619 jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize(); 2620 }, { passive: true } ); 2621 } ); 2622 } 2623 } 2624 </script>
2624 2625
2625<script> 2626 2627document.addEventListener('DOMContentLoaded', function() { 2628 // Custom Dates 2629 const dateElements = document.querySelectorAll('.custom-event-date span'); 2630 2631 const monthMap = { 2632 'January': 'Jan.', 2633 'February': 'Feb.', 2634 'March': 'Mar.', 2635 'April': 'Apr.', 2636 'May': 'May', 2637 'June': 'Jun.', 2638 'July': 'Jul.', 2639 'August': 'Aug.', 2640 'September': 'Sep.', 2641 'October': 'Oct.', 2642 'November': 'Nov.', 2643 'December': 'Dec.' 2644 }; 2645 2646 dateElements.forEach(function(elem) { 2647 const originalDate = elem.textContent.trim(); 2648 const dateParts = originalDate.replace(/,/g, '').split(' '); // [Month, Day, Year] 2649 2650 if (dateParts.length === 3) { 2651 const month = dateParts[0]; 2652 const day = dateParts[1]; 2653 const year = dateParts[2]; 2654 2655 if (monthMap[month]) { 2656 elem.textContent = `${monthMap[month]} ${day}, ${year}`; 2657 } 2658 } 2659 }); 2660 2661// Custom Terms 2662 const termElements = document.querySelectorAll('.custom-event-terms h2'); 2663 2664 termElements.forEach(function(elem) { 2665 const originalTerms = elem.textContent.trim(); 2666 const firstTerm = originalTerms.split(',')[0]; 2667 elem.textContent = firstTerm; 2668 }); 2669}); 2670</script>
2670 2671 2672 </body> 2673
2673<script> 2674 document.addEventListener("DOMContentLoaded", function() { 2675 // Wait for the DOM to load 2676 const dateltems = document.querySelectorAll("[data-twig-date]"); // Find all elements with a specific data-attribute 2677 2678 if (!dateltems) return; 2679 2680 for (let i = 0; i < dateltems.length; i++) { 2681 let element = dateltems[i]; 2682 2683 // Check if the element contains a specific string 2684 if (element.textContent.includes("May.")) { 2685 // Use regex to remove the period character 2686 const updatedText = element.textContent.replace(/May\./g, "May"); 2687 element.textContent = updatedText; 2688 } 2689 } 2690 }); 2691 </script>
2691 2692</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.