1<!DOCTYPE html><!-- Last Published: Fri Oct 02 2026 14:56:03 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="jf-staging.webflow.io" data-wf-page="67ae080a89e64a58e21d4eb0" data-wf-site="67ae080a89e64a58e21d4e2d" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Contact Joele Frank | Strategic Communications Advisory</title><meta content="Contact Joele Frank to discuss strategic communications advisory services, including investor relations, activism defense, crisis management, and transactional communications." name="description"/><meta content="Contact Joele Frank" property="og:title"/><meta content="Get in touch to discuss strategic communications advisory needs." property="og:description"/><meta content="Contact Joele Frank" name="twitter:title"/><meta content="Get in touch to discuss strategic communications advisory needs." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="hnt4fWI8XtyR1S6tKBNcKMoxdF-sBBB-YNj1byeTYU0" name="google-site-verification"/><link href="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/css/jf-staging.shared.2cc29602f.min.css" rel="stylesheet" type="text/css" integrity="sha384-LMKWAv27JLsyuVoJC9Z++ROZJEWr8QEjphhlTES+VMmLnwNsexGX5Ucn2UQg3ytU" crossorigin="anonymous"/><style>html.w-mod-js:not(.w-mod-ix3) :is(.take-control-text.hero-heading, [data-wf-component-id="3a5b1ae8-82bf-08ec-9f81-63535f729198"]:is(.page-heading), [data-wf-component-id="3a5b1ae8-82bf-08ec-9f81-63535f729198"] :is(.page-heading)) {visibility: hidden !important;}</style><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({ google: { families: ["Geist Mono:400,500,600,700,800,900","Geist Mono:300,400,500,600,700"] }});</script>
1<script src="https://use.typekit.net/eti5boy.js" type="text/javascript"></script>
1<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/67ae080a89e64a58e21d4e72_favicon-32x32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/67ae080a89e64a58e21d4e6e_webclip-256x256.png" rel="apple-touch-icon"/>
1<script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push.apply(w[g],Array.isArray(i)?i:[i]);})(window,['G-WP7295WCT3'],'google_tags_first_party');</script>
1<script async="" src="/9i1h7htkfq16NjdhZTA4MGE4OWU2NGE1OGUyMWQ0ZTJk/l52nBIiqbTVyv7JgWohqm3YeoOI"></script>
1<script type="text/javascript">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dZGVlNj', true);gtag('set', 'developer_id.dYWYxNW', true);gtag('js', new Date());gtag('config', 'G-WP7295WCT3');</script>
1<!-- Google Tag Manager -->
2<script>
vendor: 327 bytes, lines 2-6
2(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 3new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 4j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 5'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 6})(window,document,'script','dataLayer','
6GTM-NKV98RJP
vendor: 3 bytes, line 6
6');
6</script>
6 7<!-- End Google Tag Manager --> 8 9<meta name="google-site-verification" content="qJz_IW58H6ykZ7wFNBCwPVL67yVGMDhJ_4gOF0fVcCE" /> 10
11<script id="jetboost-script" type="text/javascript"> window.JETBOOST_SITE_ID = "cmah83nrp00020rvk9bcofbh1"; (function(d) { var s = d.createElement("script"); s.src = "https://cdn.jetboost.io/jetboost.js"; s.async = 1; d.getElementsByTagName("head")[0].appendChild(s); })(document); </script>
11 12<style> 13@view-transition { 14 navigation: auto; 15} 16 17::view-transition-old(root) { 18 animation: fade-out 0.4s ease forwards; 19} 20 21::view-transition-new(root) { 22 animation: fade-in 0.4s ease forwards; 23} 24 25@keyframes fade-out { 26 to { opacity: 0; } 27} 28 29@keyframes fade-in { 30 from { opacity: 0; } 31} 32</style></head><body><div class="page-wrapper"><div class="global-styles w-embed"><style> 33 34 html { font-size: 1rem; } 35 @media screen and (max-width:1920px) { html { font-size: 1rem; } } 36 @media screen and (max-width:1279px) { html { font-size: calc(0.1964285714285715rem + 0.8928571428571428vw); } } 37 @media screen and (max-width:991px) { html { font-size: 1rem; } } 38 39 40 41 /* Make text look crisper and more legible in all browsers and stops IOS scroll bounce*/ 42 body { 43 -webkit-font-smoothing: antialiased; 44 -moz-osx-font-smoothing: grayscale; 45 font-smoothing: antialiased; 46 text-rendering: optimizeLegibility; 47 overscroll-behavior: none; 48 overscroll-behavior-y: none; 49 } 50 51 /* Focus state style for keyboard navigation for the focusable elements */ 52 *[tabindex]:focus-visible, 53 input[type="file"]:focus-visible { 54 outline: 0.125rem solid #4d65ff; 55 outline-offset: 0.125rem; 56 } 57 58 /* Set color style to inherit */ 59 .inherit-color * { 60 color: inherit; 61 } 62 63 /* Get rid of top margin on first element in any rich text element */ 64 .w-richtext > :not(div):first-child, .w-richtext > div:first-child > :first-child { 65 margin-top: 0 !important; 66 } 67 68 /* Get rid of bottom margin on last element in any rich text element */ 69 .w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child { 70 margin-bottom: 0 !important; 71 } 72 73 74 /* Make sure containers never lose their center alignment */ 75 .container-medium,.container-small, .container-large { 76 margin-right: auto !important; 77 margin-left: auto !important; 78 } 79 80 /* 81 Make the following elements inherit typography styles from the parent and not have hardcoded values. 82 Important: You will not be able to style for example "All Links" in Designer with this CSS applied. 83 Uncomment this CSS to use it in the project. Leave this message for future hand-off. 84 */ 85 /* 86 a, 87 .w-input, 88 .w-select, 89 .w-tab-link, 90 .w-nav-link, 91 .w-dropdown-btn, 92 .w-dropdown-toggle, 93 .w-dropdown-link { 94 color: inherit; 95 text-decoration: inherit; 96 font-size: inherit; 97 } 98 */ 99 100 /* Apply "..." after 3 lines of text */ 101 .text-style-3lines { 102 display: -webkit-box; 103 overflow: hidden; 104 -webkit-line-clamp: 3; 105 -webkit-box-orient: vertical; 106 } 107 108 /* Apply "..." after 2 lines of text */ 109 .text-style-2lines { 110 display: -webkit-box; 111 overflow: hidden; 112 -webkit-line-clamp: 2; 113 -webkit-box-orient: vertical; 114 } 115 116 /* These classes are never overwritten */ 117 .hide { 118 display: none !important; 119 } 120 121 @media screen and (max-width: 991px) { 122 .hide, .hide-tablet { 123 display: none !important; 124 } 125 } 126 @media screen and (max-width: 767px) { 127 .hide-mobile-landscape{ 128 display: none !important; 129 } 130 } 131 @media screen and (max-width: 479px) { 132 .hide-mobile{ 133 display: none !important; 134 } 135 } 136 137 .margin-0 { 138 margin: 0rem !important; 139 } 140 141 .padding-0 { 142 padding: 0rem !important; 143 } 144 145 .spacing-clean { 146 padding: 0rem !important; 147 margin: 0rem !important; 148 } 149 150 .margin-top { 151 margin-right: 0rem !important; 152 margin-bottom: 0rem !important; 153 margin-left: 0rem !important; 154 } 155 156 .padding-top { 157 padding-right: 0rem !important; 158 padding-bottom: 0rem !important; 159 padding-left: 0rem !important; 160 } 161 162 .margin-right { 163 margin-top: 0rem !important; 164 margin-bottom: 0rem !important; 165 margin-left: 0rem !important; 166 } 167 168 .padding-right { 169 padding-top: 0rem !important; 170 padding-bottom: 0rem !important; 171 padding-left: 0rem !important; 172 } 173 174 .margin-bottom { 175 margin-top: 0rem !important; 176 margin-right: 0rem !important; 177 margin-left: 0rem !important; 178 } 179 180 .padding-bottom { 181 padding-top: 0rem !important; 182 padding-right: 0rem !important; 183 padding-left: 0rem !important; 184 } 185 186 .margin-left { 187 margin-top: 0rem !important; 188 margin-right: 0rem !important; 189 margin-bottom: 0rem !important; 190 } 191 192 .padding-left { 193 padding-top: 0rem !important; 194 padding-right: 0rem !important; 195 padding-bottom: 0rem !important; 196 } 197 198 .margin-horizontal { 199 margin-top: 0rem !important; 200 margin-bottom: 0rem !important; 201 } 202 203 .padding-horizontal { 204 padding-top: 0rem !important; 205 padding-bottom: 0rem !important; 206 } 207 208 .margin-vertical { 209 margin-right: 0rem !important; 210 margin-left: 0rem !important; 211 } 212 213 .padding-vertical { 214 padding-right: 0rem !important; 215 padding-left: 0rem !important; 216 } 217 218 [data-theme="dark"] .page-hero_content h1 { 219 color: white; 220 } 221 222 [data-theme="dark"] .page-hero_content svg { 223 color: white; 224 } 225 226 /* Hide scrollbar for Chrome, Safari and Opera */ 227 [hide-scrollbar]::-webkit-scrollbar {
228 display: none; 229 } 230 231 /* Hide scrollbar for IE, Edge and Firefox */ 232 [hide-scrollbar] { 233 -ms-overflow-style: none; /* IE and Edge */ 234 scrollbar-width: none; /* Firefox */ 235 } 236 237 [data-theme="dark"] .section-header_component h2 { 238 color: var(--text--invert) 239 } 240 241 [data-theme="dark"] .section-header_component .section_subheading { 242 color: var(--text--invert) 243 } 244 245 [data-theme="dark"] .section-header_component { 246 border-color: var(--text--invert) 247 } 248 249 @media (min-width: 2560px) { 250 .home-news_content { 251 justify-content: center; 252 min-height: 70vh; 253 } 254 } 255 256 .button.is-icon:hover .icon-1x1-small { 257 margin-left: 0.25rem; 258 } 259 260 .form_input.is-text-area { 261 resize: vertical; /* Allows resizing only in height */ 262 max-width: 100%; /* Ensures the width doesn't exceed its container */ 263 } 264 265 @media (min-width: 768px) and (max-width: 991px) { 266 .navbar_hamburguer-icon { 267 display: flex !important; 268 opacity: 1 !important; 269 } 270 } 271 272 @media (min-width: 769px) and (max-width: 1200px) { 273 .side-menu_x-icon { 274 margin-bottom: 2rem; 275 margin-left: auto; 276 margin-top: 2rem; 277 } 278 } 279 280 @media only screen and (max-width: 991px) and (orientation: landscape) { 281 .navbar_side-menu { 282 height: 100dvh; 283 overflow: auto; 284 } 285 286 .side-menu_x-icon { 287 margin-left: auto; 288 } 289 290 .page-hero_component, .home-hero_text-mask { 291 padding-bottom: 2rem; 292 } 293 294 .hero-arrow_icon { 295 width: 1.5rem; 296 } 297 } 298 299 @media only screen and (max-width: 991px) and (orientation: landscape) { 300 .section_main-hero { 301 font-size: clamp(4rem, 10vw, 12.5rem); 302 } 303 } 304 305 .jetboost-filter-active:checked + .filter_button-label { 306 font-weight: 700; 307} 308[data-looping-words-list] > * { 309 display: block; 310 width: 100%; 311} 312 313[data-looping-content-list] > * { 314 position: absolute; 315 top: 0; 316 left: 0; 317 width: 100%; 318} 319</style></div><div><code-island data-loader="{"tag":"FEDERATION","val":{"clientModuleUrl":"https://code-components.website-files.com/6abacc52b5e2ade957b367d9%2Fmodule%2Fwf-manifest.json","moduleId":"_6abacc52b5e2ade957b367d9","submoduleId":"Nav","exportPath":"default","serverModuleUrl":"_"}}" data-props="{"logoLabel":"Joele Frank â home","menuLabel":"Menu","closeLabel":"Close menu","showSearch":true,"searchLabel":"Search","searchPlaceholder":"Search siteâ¦","backLabel":"Back","searchPath":"/search","searchParam":"query","theme":"Auto","background":"After hero","solidColor":"White","adaptToDarkSections":true,"heroSwitchPoint":50,"hideOnScroll":true,"hideAfter":50,"lockScroll":true,"closeOnOutsideClick":true,"heroSelector":"main header","darkSectionSelector":"[data-theme=\"dark\"]:not(.sticky-footer)","zIndex":1003,"designerPreviewOpen":false,"elementId":""}" data-slots="["links"]" data-hydrate="true" data-webflow-context="{"mode":"publish","interactive":true,"locale":"en"}" data-interactive="true" style="display:contents"><template shadowrootmode="open"><link rel="stylesheet" type="text/css" href="https://code-components.website-files.com/6abacc52b5e2ade957b367d9%2Fmodule%2Fe7661fce0d8d877984ca.css"/><div data-root="true" style="display:contents"><!--$--><div class="Ojbqa7bJuWUnXKULa8_I" data-theme="light" data-solid-color="white" data-state="closed" style="--nav-z:1003"><div class="rkS8iToPj3mOaCLcdyvM"><div class="Zm7boXwhQZIr9hM5lrKe"><a class="BbhxQP70tkB8_6iDhqes" href="/" aria-label="Joele Frank â home"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 88 42" class="Xw4KfzwyU_PNXtWJrk16" aria-hidden="true" focusable="false">
319<path fill-rule="evenodd" clip-rule="evenodd" d="M-0.000976562 42.0099H87.359V19.374H-0.000976562V42.0099Z" fill="#7AC100"></path><path class="nIJgM4LzafYrYnziOdcz" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M5.81445 23.2607H16.7991V26.2331H8.9876V29.3948H15.8741V32.3709H8.9876V38.1223H5.81445V23.2607ZM27.2966 30.4805C28.9012 30.4805 29.8168 29.6322 29.8168 28.3789V28.3368C29.8168 26.9336 28.8371 26.2116 27.2337 26.2116H23.9664V30.4805H27.2966ZM20.6761 23.2607H27.5124C29.4126 23.2607 30.884 23.7945 31.8687 24.768C32.6999 25.599 33.1476 26.7656 33.1476 28.1675V28.2084C33.1476 30.6098 31.8486 32.117 29.9458 32.818L33.5991 38.1223H29.7521L26.5515 33.3691H23.9672V38.1223H20.6761V23.2607ZM42.6038 27.16L44.5497 31.9467H40.6617L42.6038 27.16ZM44.129 23.2607H41.1641L34.8921 38.1223H38.1758L39.5087 34.8144H45.697L47.0361 38.1223H50.3998L44.129 23.2607ZM51.6929 23.2607H54.6441L61.4592 32.4142V23.2607H64.616V38.1223H61.8936L54.8509 28.6765V38.1223H51.6929V23.2607ZM71.6169 23.2607H68.4912V38.1223H71.6169V33.5808L73.2562 31.7975L77.6602 38.1223H81.4143L75.3686 29.567L81.1491 23.2607H77.3747L71.6169 29.759V23.2607Z"></path><path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M10.1371 15.5077C8.95192 15.5077 7.95426 15.2848 7.15372 14.8331C6.35318 14.3813 5.69328 13.8399 5.17041 13.2162L7.27392 10.8568C7.70905 11.3365 8.14297 11.7119 8.58531 11.9808C9.02765 12.2497 9.51566 12.3841 10.0482 12.3841C10.6852 12.3841 11.1828 12.1855 11.5434 11.7858C11.9065 11.3861 12.0868 10.7406 12.0868 9.85279V0H15.5089V10.0054C15.5089 10.9235 15.3899 11.7168 15.1447 12.3841C14.8995 13.0551 14.5437 13.6231 14.0797 14.0894C13.6181 14.5569 13.0508 14.9094 12.38 15.148C11.7081 15.3902 10.9617 15.5077 10.1371 15.5077ZM27.4831 12.9851C28.1477 12.9851 28.7642 12.8602 29.3264 12.6065C29.8935 12.3541 30.3739 12.004 30.7712 11.5586C31.1685 11.1107 31.4804 10.596 31.7043 10.0058C31.9294 9.4193 32.0414 8.79201 32.0414 8.12017V8.07686C32.0414 7.40626 31.9294 6.77401 31.7043 6.17888C31.4804 5.58375 31.1613 5.0641 30.7507 4.61744C30.3378 4.17203 29.849 3.8194 29.2855 3.55834C28.7196 3.29851 28.1032 3.16736 27.4398 3.16736C26.7595 3.16736 26.1395 3.29232 25.5832 3.54596C25.0258 3.79961 24.5478 4.15099 24.1505 4.59517C23.7508 5.04183 23.439 5.56025 23.215 6.14671C22.9899 6.73442 22.8779 7.36295 22.8779 8.03108V8.07686C22.8779 8.74623 22.9899 9.37724 23.215 9.9736C23.439 10.5687 23.7592 11.0896 24.1698 11.5363C24.5827 11.9805 25.0679 12.3343 25.6254 12.5954C26.1816 12.8552 26.8005 12.9851 27.4831 12.9851ZM27.4406 16.1538C26.2668 16.1538 25.1868 15.9423 24.2031 15.5191C23.2207 15.0972 22.3695 14.5206 21.6531 13.8006C20.9367 13.0792 20.3781 12.2305 19.9796 11.2555C19.5822 10.2817 19.3848 9.23749 19.3848 8.12023V8.07692C19.3848 6.9609 19.5883 5.91664 19.9928 4.94167C20.3985 3.9667 20.9596 3.11051 21.676 2.37433C22.3935 1.63815 23.2436 1.05787 24.238 0.634721C25.2277 0.210337 26.3101 0 27.484 0C28.6579 0 29.7354 0.210337 30.7179 0.634721C31.7003 1.05787 32.5564 1.63196 33.2715 2.35329C33.9879 3.07463 34.5441 3.92216 34.9415 4.89713C35.3388 5.8721 35.5386 6.9176 35.5386 8.03114V8.07692C35.5386 9.19171 35.3364 10.2384 34.9318 11.2122C34.5261 12.1871 33.965 13.0409 33.2487 13.7783C32.5323 14.5145 31.6775 15.0972 30.6866 15.5191C29.6933 15.9423 28.6109 16.1538 27.4406 16.1538ZM50.2928 0H38.7688V15.5077H50.3995V12.4735H42.0908V9.21691H49.3084V6.18146H42.0908V3.03422H50.2928V0ZM54.9224 0H58.288V12.4305H65.907V15.5077H54.9224V0ZM81.262 0H69.7224V15.458H81.3688V12.4335H73.0514V9.18735H80.2738V6.16163H73.0514V3.02449H81.262V0Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" class="Yigy_hMMCaTlQ1YJAALE" aria-hidden="true" focusable="false"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 40H40V0H0V40Z" fill="var(--background--invert, #000)"></path><path fill-rule="evenodd" clip-rule="evenodd" fill="var(--text--invert, #fff)" d="M10.6541 29.9989C9.07791 29.9989 7.7511 29.7115 6.68646 29.1289C5.62182 28.5463 4.7442 27.8481 4.04883 27.0438L6.84632 24.0011C7.425 24.6196 8.00208 25.1038 8.59035 25.4506C9.17862 25.7973 9.82764 25.9707 10.5358 25.9707C11.383 25.9707 12.0448 25.7146 12.5244 25.1991C13.0072 24.6837 13.247 23.8512 13.247 22.7063V10H17.7981V22.9031C17.7981 24.087 17.6398 25.1101 17.3137 25.9707C16.9876 26.836 16.5144 27.5686 15.8974 28.1699C15.2835 28.7728 14.529 29.2273 13.637 29.535C12.7434 29.8474 11.7507 29.9989 10.6541 29.9989Z"></path><path fill-rule="evenodd" clip-rule="evenodd" fill="#7AC100" d="M20.2988 10H34.0481V13.9998H24.2706V18.2546H32.8903V22.2593H24.2706V29.9989H20.2988V10Z"></path></svg></a><button type="button" class="SZOpYZzePxD8aX1wRoge" aria-expanded="false" aria-controls="jf-nav-panel">Menu</button></div></div><aside id="jf-nav-panel" class="TOdV9u8EXH1CDXcTJQvU" role="dialog" aria-modal="true" aria-label="Menu" aria-hidden="true" data-view="menu" data-lenis-prevent=""><button type="button" class="GHHIUYQIO1Rd5hpVz0D2" aria-label="Close menu"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" aria-hidden="true" focusable="false">
319<path d="M8 8L24 24M24 8L8 24" stroke="currentColor" stroke-width="2.5" stroke-linecap="square"></path></svg></button><div class="ybWpM2_uFDc9uqGGFpwB"></div><div class="bFnHHhOtBY2VBfcnJPyu"><nav class="ezotmrySU2YtO8aL2TuN" aria-label="Main"><slot name="links"></slot><button type="button" class="HUg2IVkE9yhKR1vlXfO_" aria-expanded="false" aria-controls="jf-nav-search"><span>Search</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none" aria-hidden="true" focusable="false"><path d="M35 35L27.75 27.75M31.6667 18.3333C31.6667 25.6971 25.6971 31.6667 18.3333 31.6667C10.9695 31.6667 5 25.6971 5 18.3333C5 10.9695 10.9695 5 18.3333 5C25.6971 5 31.6667 10.9695 31.6667 18.3333Z" stroke="currentColor" stroke-width="4" stroke-linecap="square"></path></svg></button></nav><form id="jf-nav-search" class="aR46lopUV3pGeTyfqatt" role="search" aria-hidden="true" action="/search" method="get"><button type="button" class="OhswCxgyTBYubsY4D4wC"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true" focusable="false"><path d="M19 12H5M11 6L5 12L11 18" stroke="currentColor" stroke-width="2" stroke-linecap="square"></path></svg><span>Back</span></button><div class="jfABABW0eQDJmaCCvHxw"><input class="CjOVRsHgoTo34B54bgtU" type="search" placeholder="Search siteâ¦" aria-label="Search" autoComplete="off" required="" tabindex="-1" name="query"/><button type="submit" class="v3PqZqOD47emwKbWMYRr" aria-label="Search" tabindex="-1"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 16" fill="none" aria-hidden="true" focusable="false"><path d="M0 8H38M31 1L38 8L31 15" stroke="currentColor" stroke-width="2" stroke-linecap="square"></path></svg></button></div></form></div></aside></div><!--/$--></div></template><div slot="links"><a href="/" class="side-menu_link">Home</a><link rel="prefetch" href="/"/><a href="/the-jf-difference" class="side-menu_link">The JF Difference</a><link rel="prefetch" href="/the-jf-difference"/><a href="/what-we-do" class="side-menu_link">What We Do</a><link rel="prefetch" href="/what-we-do"/><a href="/our-people" class="side-menu_link">Our People</a><link rel="prerender" href="/our-people"/><a href="/news" class="side-menu_link">News & Insights</a><link rel="prefetch" href="/news"/><a href="/contact-us" aria-current="page" class="side-menu_link w--current">Contact Us</a><link rel="prefetch" href="/contact-us"/></div></code-island></div><main class="main-wrapper"><header data-theme="dark" data-wf--section-hero--variant="base" data-wf-component-id="3a5b1ae8-82bf-08ec-9f81-63535f729198" data-wf-variant-state="base" class="section_page-hero"><div class="padding-global"><div class="container-xlarge"><div class="page-hero_component"><div class="page-hero_content"><h1 class="page-heading">Contact  Us</h1></div></div></div></div><div class="page-hero_img-wrapper"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68128d1c5dd252de8123e9dc_contact-us-hero-v2.webp" loading="eager" width="70" alt="" class="page-hero_background-img"/></div></header><section id="intro" class="section_contact-offices"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-medium bottom-padding-large"><div class="contact-offices_content"><div class="contact-offices_column"><div class="contact-office_heading-wrapper"><h2>New York</h2></div><div class="contact-office_image-wrapper"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6157e32be46e4dff1e_new-york-office-img.webp" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6157e32be46e4dff1e_new-york-office-img-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6157e32be46e4dff1e_new-york-office-img-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6157e32be46e4dff1e_new-york-office-img-p-1080.webp 1080w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6157e32be46e4dff1e_new-york-office-img.webp 1200w" alt="" class="contact-office_image"/></div><div class="contact-office_info-wrapper"><div class="contact-office_address"><p>22 Vanderbilt Avenue, 18th Floor</p><p>New York, NY 10017</p></div><div class="contact-office_phones"><p>Tel: 212.355.4449</p></div><a href="mailto:[email protected]?subject=Contact%20from%20website" class="decoration-none">[email protected]</a></div></div><div class="contact-offices_column"><div class="contact-office_heading-wrapper"><h2>San Francisco</h2></div><div class="contact-office_image-wrapper"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6115045b3eb75d4e22_san-francisco-office-img.webp" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6115045b3eb75d4e22_san-francisco-office-img-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6115045b3eb75d4e22_san-francisco-office-img-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6115045b3eb75d4e22_san-francisco-office-img-p-1080.webp 1080w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/68406b6115045b3eb75d4e22_san-francisco-office-img.webp 1200w" alt="" class="contact-office_image"/></div><div class="contact-office_info-wrapper"><div class="contact-office_address"><p>One California Street, Suite 1800</p><p>San Francisco, CA 94111</p></div><div class="contact-office_phones"><p>Tel: 415.869.3950</p></div><a href="mailto:[email protected]?subject=Contact%20from%20website" class="decoration-none">[email protected]</a></div></div></div></div></div></div></section><section class="section_contact-form"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-medium contact"><div class="contact-form_content"><h2>Get in touch</h2><div class="contact_form-block w-form"><form id="wf-form-Contact-Form" name="wf-form-Contact-Form" data-name="Contact Form" method="get" class="contact_form" data-wf-page-id="67ae080a89e64a58e21d4eb0" data-wf-element-id="84aae46d-eb9a-5e89-0da4-cb478e12d8e4"><div class="form_input-wrapper"><label for="First-Name" class="form_label">First Name</label><input class="form_input w-input" maxlength="256" name="First-Name" data-name="First Name" placeholder="" type="text" id="First-Name" required=""/></div><div class="form_input-wrapper"><label for="Last-Name" class="form_label">Last Name</label><input class="form_input w-input" maxlength="256" name="Last-Name" data-name="Last Name" placeholder="" type="text" id="Last-Name" required=""/></div><div class="form_input-wrapper"><label for="Job-Title" class="form_label">Job Title</label><input class="form_input w-input" maxlength="256" name="Job-Title" data-name="Job Title" placeholder="" type="text" id="Job-Title"/></div><div class="form_input-wrapper"><label for="Organization" class="form_label">Organization</label><input class="form_input w-input" maxlength="256" name="Organization" data-name="Organization" placeholder="" type="text" id="Organization"/></div>
319<div id="w-node-_07bfc662-c401-65c2-6638-7bf1e736a1b9-e21d4eb0" class="form_input-wrapper"><label for="Topic-of-Interest" class="form_label">Topic of Interest</label><input class="form_input w-input" maxlength="256" name="Topic-of-Interest" data-name="Topic of Interest" placeholder="" type="text" id="Topic-of-Interest"/></div><div id="w-node-_08ac00eb-e174-eb58-06da-ad420284b0c7-e21d4eb0" class="form_input-wrapper"><label for="Email" class="form_label">Email</label><input class="form_input w-input" maxlength="256" name="Email" data-name="Email" placeholder="" type="email" id="Email"/></div><div id="w-node-_996db3ce-3932-deef-ac8c-8643425bd3c5-e21d4eb0" class="form_input-wrapper"><label for="Message" class="form_label">Message (Please share any additional details)</label><textarea required="" placeholder="" maxlength="5000" id="Message" name="Message" data-name="Message" class="form_input is-text-area w-input"></textarea></div><input type="submit" data-wait="Please wait..." id="w-node-_84aae46d-eb9a-5e89-0da4-cb478e12d8eb-e21d4eb0" class="button w-button" value="Submit"/></form><div class="success-message w-form-done"><div>Thank you! Your submission has been received!</div></div><div class="w-form-fail"><div>Oops! Something went wrong while submitting the form.</div></div></div></div></div></div></div></section><section class="section_contact-join-our-team"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-medium bottom-padding-large"><div class="contact-join-our-team_content"><div data-wf--section-header--variant="on-dark" class="section-header_component w-variant-b1b8a6d8-ef00-bc15-746c-5efef98f0d6d"><h2 id="w-node-_1480b3ee-dd5f-34bb-120c-9138ce294727-ce294726" class="heading-2">Join  Our  Team</h2><div id="w-node-_1480b3ee-dd5f-34bb-120c-9138ce294729-ce294726" class="subheading_wrapper"><a href="/join-our-team" class="button is-icon left-aligned w-variant-b1b8a6d8-ef00-bc15-746c-5efef98f0d6d w-inline-block"><div>Learn More</div><div class="icon-1x1-small w-embed"><svg aria-hidden="true" fill='currentColor' role="img" viewBox="0 0 20 21" xmlns="http://www.w3.org/2000/svg"><title>Arrow Right</title><polygon points="16.172 9 10.101 2.929 11.515 1.515 20 10 19.293 10.707 11.515 18.485 10.101 17.071 16.172 11 0 11 0 9"/></svg></div></a></div></div><div class="contact-join-our-team_images"><div hide-scrollbar="" class="join-our-team_grid"><div class="image-square join-our-team"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717185d3010e037b5d69_join-our-team-img-1.webp" loading="lazy" sizes="(max-width: 479px) 100vw, 420px" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717185d3010e037b5d69_join-our-team-img-1-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717185d3010e037b5d69_join-our-team-img-1-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717185d3010e037b5d69_join-our-team-img-1.webp 876w" alt="" class="default-image"/></div><div class="image-square join-our-team"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717159433586aa110648_join-our-team-img-2.webp" loading="lazy" sizes="(max-width: 479px) 100vw, 420px" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717159433586aa110648_join-our-team-img-2-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717159433586aa110648_join-our-team-img-2-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717159433586aa110648_join-our-team-img-2.webp 876w" alt="" class="default-image"/></div><div class="image-square join-our-team"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/684071712a0699f1b89f792d_join-our-team-img-3.webp" loading="lazy" sizes="(max-width: 479px) 100vw, 420px" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/684071712a0699f1b89f792d_join-our-team-img-3-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/684071712a0699f1b89f792d_join-our-team-img-3-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/684071712a0699f1b89f792d_join-our-team-img-3.webp 876w" alt="" class="default-image"/></div><div class="image-square join-our-team"><img src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717144f2093e0cf8515a_join-our-team-img-4.webp" loading="lazy" sizes="(max-width: 479px) 100vw, 420px" srcset="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717144f2093e0cf8515a_join-our-team-img-4-p-500.webp 500w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717144f2093e0cf8515a_join-our-team-img-4-p-800.webp 800w, https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/6840717144f2093e0cf8515a_join-our-team-img-4.webp 876w" alt="" class="default-image"/></div></div></div></div></div></div></div></section></main><footer data-theme="dark" class="footer"><div class="padding-global"><div class="container-xlarge"><div class="padding-section-small"><div class="footer_component"><div id="w-node-_7df444d8-7f11-8a15-a637-e2d4a4e881d5-a4e881d1" class="footer_left"><a aria-label="navigate to home" href="/" class="footer_mobile-logo w-inline-block">
319<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 52 35" fill="none" class="monogram_logo"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.4407 34.6422C8.71043 34.6422 6.41213 34.1444 4.56794 33.1352C2.72376 32.1261 1.20356 30.9167 -0.000976562 29.5233L4.84485 24.2528C5.84724 25.3242 6.84687 26.163 7.86587 26.7636C8.88488 27.3642 10.0091 27.6646 11.2358 27.6646C12.7034 27.6646 13.8498 27.2208 14.6805 26.328C15.5167 25.4352 15.9321 23.9931 15.9321 22.0099V0H23.8156V22.3508C23.8156 24.4016 23.5414 26.1738 22.9765 27.6646C22.4116 29.1634 21.592 30.4324 20.5232 31.474C19.4599 32.5184 18.1529 33.3057 16.6077 33.8387C15.0598 34.3798 13.3403 34.6422 11.4407 34.6422Z" fill="white" STYLE="fill:white;fill-opacity:1;"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M28.1475 0H51.964V6.92845H35.0274V14.2986H49.9584V21.2357H35.0274V34.6422H28.1475V0Z" fill="#7AC100" STYLE="fill:#7AC100;fill:color(display-p3 0.4784 0.7569 0.0000);fill-opacity:1;"></path></svg></a><div class="footer_menu"><a href="/" class="footer_link">Home</a><a href="/the-jf-difference" class="footer_link">The JF Difference</a><a href="/what-we-do" class="footer_link">What We Do</a><a href="/our-people" class="footer_link">Our People</a><a href="/news" class="footer_link">News & Insights</a></div><div class="footer_menu"><a href="/join-our-team" class="footer_link">Join Our Team</a><a href="/contact-us" aria-current="page" class="footer_link w--current">Contact Us</a><a href="https://www.linkedin.com/company/joele-frank/" target="_blank" class="footer_link hide">LinkedIn</a><a aria-label="Follow us on LinkedIn" href="https://www.linkedin.com/company/joele-frank/" target="_blank" class="footer_link icon-1x1-medium w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24" fill="none"><path d="M19.039 19.043H16.078V14.4C16.078 13.294 16.055 11.87 14.534 11.87C12.99 11.87 12.754 13.07 12.754 14.319V19.041H9.792V9.50001H12.637V10.8H12.676C12.9609 10.3131 13.3725 9.91263 13.867 9.6411C14.3614 9.36957 14.9203 9.23717 15.484 9.25801C18.484 9.25801 19.04 11.233 19.04 13.804V19.042L19.039 19.043ZM6.447 8.19401C6.1069 8.19381 5.7745 8.09279 5.4918 7.90372C5.2091 7.71465 4.98879 7.44601 4.85874 7.13176C4.72868 6.81751 4.6947 6.47176 4.7611 6.13821C4.8275 5.80465 4.99129 5.49827 5.23178 5.25778C5.47226 5.0173 5.77865 4.8535 6.1122 4.7871C6.44575 4.72071 6.79151 4.75468 7.10575 4.88474C7.42 5.0148 7.68864 5.2351 7.87771 5.5178C8.06678 5.8005 8.1678 6.13291 8.168 6.47301C8.16826 6.69909 8.12393 6.923 8.03753 7.13192C7.95114 7.34084 7.82438 7.53066 7.66452 7.69052C7.50466 7.85039 7.31483 7.97714 7.10591 8.06354C6.89699 8.14993 6.67308 8.19427 6.447 8.19401ZM7.932 19.043H4.963V9.50001H7.932V19.043ZM20.521 2.00001H3.476C3.28445 1.99763 3.0943 2.03302 2.91643 2.10417C2.73856 2.17531 2.57646 2.28081 2.43938 2.41464C2.30231 2.54846 2.19295 2.70799 2.11756 2.8841C2.04217 3.06021 2.00222 3.24945 2 3.44101V20.559C2.00222 20.7506 2.04217 20.9398 2.11756 21.1159C2.19295 21.292 2.30231 21.4515 2.43938 21.5854C2.57646 21.7192 2.73856 21.8247 2.91643 21.8958C3.0943 21.967 3.28445 22.0024 3.476 22H20.518C20.9055 22.0051 21.2792 21.8562 21.5571 21.586C21.8349 21.3159 21.9942 20.9465 22 20.559V3.44101C21.9939 3.05359 21.8346 2.68438 21.5568 2.41427C21.279 2.14416 20.9054 1.99519 20.518 2.00001H20.521Z" fill="currentColor"></path></svg></a></div><div class="footer_menu"><a href="/terms-of-use" class="footer_link">Terms Of Use</a><a href="/privacy-policy" class="footer_link">Privacy Policy</a></div></div><div id="w-node-_7df444d8-7f11-8a15-a637-e2d4a4e881ed-a4e881d1" class="footer_right"><div id="w-node-_7df444d8-7f11-8a15-a637-e2d4a4e881ef-a4e881d1" class="footer_info-content"><div class="footer_info-title">New York</div><div class="text-rich-text text-color-invert-secondary w-richtext"><p>22 Vanderbilt Avenue<br/>18th Floor<br/>New York, NY 10017</p></div></div><div id="w-node-_7df444d8-7f11-8a15-a637-e2d4a4e881f9-a4e881d1" class="footer_info-content"><div class="footer_info-title">San Francisco</div><div class="text-rich-text text-color-invert-secondary w-richtext"><p>One California Street<br/>Suite 1800<br/>San Francisco, CA 94111</p></div></div></div></div><div class="footer_bottom"><a aria-label="navigate to home" href="/" class="footer_logo-wrapper w-inline-block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 88 42" fill="none" class="footer_logo"><path fill-rule="evenodd" clip-rule="evenodd" d="M-0.000976562 42.0099H87.359V19.374H-0.000976562V42.0099Z" fill="#7AC100"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M5.81445 23.2607H16.7991V26.2331H8.9876V29.3948H15.8741V32.3709H8.9876V38.1223H5.81445V23.2607ZM27.2966 30.4805C28.9012 30.4805 29.8168 29.6322 29.8168 28.3789V28.3368C29.8168 26.9336 28.8371 26.2116 27.2337 26.2116H23.9664V30.4805H27.2966ZM20.6761 23.2607H27.5124C29.4126 23.2607 30.884 23.7945 31.8687 24.768C32.6999 25.599 33.1476 26.7656 33.1476 28.1675V28.2084C33.1476 30.6098 31.8486 32.117 29.9458 32.818L33.5991 38.1223H29.7521L26.5515 33.3691H23.9672V38.1223H20.6761V23.2607ZM42.6038 27.16L44.5497 31.9467H40.6617L42.6038 27.16ZM44.129 23.2607H41.164
3191L34.8921 38.1223H38.1758L39.5087 34.8144H45.697L47.0361 38.1223H50.3998L44.129 23.2607ZM51.6929 23.2607H54.6441L61.4592 32.4142V23.2607H64.616V38.1223H61.8936L54.8509 28.6765V38.1223H51.6929V23.2607ZM71.6169 23.2607H68.4912V38.1223H71.6169V33.5808L73.2562 31.7975L77.6602 38.1223H81.4143L75.3686 29.567L81.1491 23.2607H77.3747L71.6169 29.759V23.2607Z" fill="black"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M10.1371 15.5077C8.95192 15.5077 7.95426 15.2848 7.15372 14.8331C6.35318 14.3813 5.69328 13.8399 5.17041 13.2162L7.27392 10.8568C7.70905 11.3365 8.14297 11.7119 8.58531 11.9808C9.02765 12.2497 9.51566 12.3841 10.0482 12.3841C10.6852 12.3841 11.1828 12.1855 11.5434 11.7858C11.9065 11.3861 12.0868 10.7406 12.0868 9.85279V0H15.5089V10.0054C15.5089 10.9235 15.3899 11.7168 15.1447 12.3841C14.8995 13.0551 14.5437 13.6231 14.0797 14.0894C13.6181 14.5569 13.0508 14.9094 12.38 15.148C11.7081 15.3902 10.9617 15.5077 10.1371 15.5077ZM27.4831 12.9851C28.1477 12.9851 28.7642 12.8602 29.3264 12.6065C29.8935 12.3541 30.3739 12.004 30.7712 11.5586C31.1685 11.1107 31.4804 10.596 31.7043 10.0058C31.9294 9.4193 32.0414 8.79201 32.0414 8.12017V8.07686C32.0414 7.40626 31.9294 6.77401 31.7043 6.17888C31.4804 5.58375 31.1613 5.0641 30.7507 4.61744C30.3378 4.17203 29.849 3.8194 29.2855 3.55834C28.7196 3.29851 28.1032 3.16736 27.4398 3.16736C26.7595 3.16736 26.1395 3.29232 25.5832 3.54596C25.0258 3.79961 24.5478 4.15099 24.1505 4.59517C23.7508 5.04183 23.439 5.56025 23.215 6.14671C22.9899 6.73442 22.8779 7.36295 22.8779 8.03108V8.07686C22.8779 8.74623 22.9899 9.37724 23.215 9.9736C23.439 10.5687 23.7592 11.0896 24.1698 11.5363C24.5827 11.9805 25.0679 12.3343 25.6254 12.5954C26.1816 12.8552 26.8005 12.9851 27.4831 12.9851ZM27.4406 16.1538C26.2668 16.1538 25.1868 15.9423 24.2031 15.5191C23.2207 15.0972 22.3695 14.5206 21.6531 13.8006C20.9367 13.0792 20.3781 12.2305 19.9796 11.2555C19.5822 10.2817 19.3848 9.23749 19.3848 8.12023V8.07692C19.3848 6.9609 19.5883 5.91664 19.9928 4.94167C20.3985 3.9667 20.9596 3.11051 21.676 2.37433C22.3935 1.63815 23.2436 1.05787 24.238 0.634721C25.2277 0.210337 26.3101 0 27.484 0C28.6579 0 29.7354 0.210337 30.7179 0.634721C31.7003 1.05787 32.5564 1.63196 33.2715 2.35329C33.9879 3.07463 34.5441 3.92216 34.9415 4.89713C35.3388 5.8721 35.5386 6.9176 35.5386 8.03114V8.07692C35.5386 9.19171 35.3364 10.2384 34.9318 11.2122C34.5261 12.1871 33.965 13.0409 33.2487 13.7783C32.5323 14.5145 31.6775 15.0972 30.6866 15.5191C29.6933 15.9423 28.6109 16.1538 27.4406 16.1538ZM50.2928 0H38.7688V15.5077H50.3995V12.4735H42.0908V9.21691H49.3084V6.18146H42.0908V3.03422H50.2928V0ZM54.9224 0H58.288V12.4305H65.907V15.5077H54.9224V0ZM81.262 0H69.7224V15.458H81.3688V12.4335H73.0514V9.18735H80.2738V6.16163H73.0514V3.02449H81.262V0Z" fill="currentColor"></path></svg></a><div class="copyright-catchphrase"><div class="take-control-footer-text">Take Control.</div><p class="footer_copyright">Joele Frank, Wilkinson Brimmer Katcher ©<span data-current-year="">20??</span></p></div></div></div></div></div></footer></div>
319<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=67ae080a89e64a58e21d4e2d" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
319<script src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/js/jf-staging.schunk.01b56ef8c8bd111c.js" type="text/javascript" integrity="sha384-iYCaTaSJwo7SLv+5Fpais23xfjuXE4ZoLekLYLRLibhpj99yMyQiXSRZk4pg0rtX" crossorigin="anonymous"></script>
319<script src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/js/jf-staging.schunk.68aa3daa3667a7cf.js" type="text/javascript" integrity="sha384-Jht3XbYqtSOzyfUz4OCJ2wBO0lP0WeYDcZQdAEwDB/FoYgd4DdGGC3Rvr4MJ20tr" crossorigin="anonymous"></script>
319<script src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/js/jf-staging.schunk.cbba674e0228ffda.js" type="text/javascript" integrity="sha384-mqOlk4a/FiSVBHtFuuDQBG7kqakEunZKXuXG6Dz03RcQfiK7me2NSozDkzU6xPZ5" crossorigin="anonymous"></script>
319<script src="https://cdn.prod.website-files.com/67ae080a89e64a58e21d4e2d/js/jf-staging.2120f5c2.f04005896ae68972.js" type="text/javascript" integrity="sha384-D5aDrLl6jtAtnE5EpOmqTL84bh9USZKgjnnrI6rSM7+6JJuAUgGHGJUbOl2lcbQv" crossorigin="anonymous"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/gsap.min.js" type="text/javascript"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/Flip.min.js" type="text/javascript"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/ScrollTrigger.min.js" type="text/javascript"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/SplitText.min.js" type="text/javascript"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/Draggable.min.js" type="text/javascript"></script>
319<script src="https://cdn.prod.website-files.com/gsap/3.15.0/InertiaPlugin.min.js" type="text/javascript"></script>
319<script type="text/javascript">gsap.registerPlugin(Flip,ScrollTrigger,SplitText,Draggable,InertiaPlugin);</script>
319<!-- Lenis script --> 320<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/lenis.css">
321<script src="https://unpkg.com/[email protected]/dist/lenis.min.js"></script>
vendor: 1 bytes, line 321
321
322<script> 323let lenis = new Lenis({ 324 lerp: 0.1, 325 wheelMultiplier: 0.7, 326 gestureOrientation: "vertical", 327 normalizeWheel: false, 328 smoothTouch: false, 329}); 330function raf(time) { 331 lenis.raf(time); 332 requestAnimationFrame(raf); 333} 334requestAnimationFrame(raf); 335$("[data-lenis-start]").on("click", function (e) { 336 if (e.target === this) { 337 console.log('Enabling scroll'); 338 lenis.start(); 339 } 340}); 341$("[data-lenis-stop]").on("click", function (e) { 342 if (e.target === this) { 343 console.log('Disabling scroll'); 344 lenis.stop(); 345 } 346}); 347$("[data-lenis-toggle]").on("click", function (e) { 348 if (e.target === this) { 349 $(this).toggleClass("stop-scroll"); 350 if ($(this).hasClass("stop-scroll")) { 351 console.log('toggle stop'); 352 lenis.stop(); 353 } else { 354 console.log('toggle start'); 355 lenis.start(); 356 } 357 } 358}); 359</script>
359 360
361<script> 362 // Ensure GSAP and ScrollTrigger are loaded 363 gsap.registerPlugin(ScrollTrigger); 364 365 // Function to initialize fade-in animations 366 function initFadeInAnimations() { 367 // Select all elements with the `fade-in` attribute 368 document.querySelectorAll('[fade-in]').forEach((el) => { 369 // Create a ScrollTrigger animation for each element 370 gsap.fromTo( 371 el, 372 { opacity: 0, y: 40 }, // Start state: transparent and shifted down 373 { 374 opacity: 1, 375 y: 0, 376 duration: 1, 377 ease: "power2.out", 378 scrollTrigger: { 379 trigger: el, // Use the element as the trigger 380 start: "top 90%", // Start animation when the element enters the viewport 381 toggleActions: "play none none none" // Play animation once 382 } 383 } 384 ); 385 }); 386 } 387 388 // Initialize fade-in animations on page load 389 document.addEventListener('DOMContentLoaded', initFadeInAnimations); 390</script>
390 391
392<script> 393 function initDynamicCurrentYear() { 394 const currentYear = new Date().getFullYear(); 395 const currentYearElements = document.querySelectorAll('[data-current-year]'); 396 currentYearElements.forEach(currentYearElement => { 397 currentYearElement.textContent = currentYear; 398 }); 399} 400 401// Initialize Dynamic Current Year 402document.addEventListener('DOMContentLoaded', () => { 403 initDynamicCurrentYear(); 404}); 405</script>
405 406
407<script> 408//Callout text animation 409//gsap.registerPlugin(ScrollTrigger, SplitText) 410 411function initHighlightText(){ 412 413 let splitHeadingTargets = document.querySelectorAll("[data-highlight-text]") 414 415 splitHeadingTargets.forEach((heading) => { 416 417 // Define your default ScrollTrigger start point 418 const scrollStart = heading.getAttribute("data-highlight-scroll-start") || "top 70%" 419 420 // Default ScrollTrigger end point 421 const scrollEnd = heading.getAttribute("data-highlight-scroll-end") || "center 40%" 422 423 // Opacity of each letter before they start animating 424 const fadedValue = heading.getAttribute("data-highlight-fade") || 0.2 425 426 // Lower value here means a smoother reveal, feel free to test! 427 const staggerValue = heading.getAttribute("data-highlight-stagger") || 0.1 428 429 new SplitText(heading, { 430 type: "words, chars", 431 autoSplit: true, 432 aria: "hidden", 433 onSplit(self) { 434 // use a context to collect up all the animations 435 let ctx = gsap.context(() => { 436 let tl = gsap.timeline({ 437 scrollTrigger: { 438 scrub: true, 439 trigger: heading, 440 start: scrollStart, 441 end: scrollEnd, 442 } 443 }) 444 tl.from(self.chars,{ 445 autoAlpha: fadedValue, 446 stagger: staggerValue, 447 ease: "linear" 448 }) 449 }); 450 return ctx; // return our animations so GSAP can clean them up when onSplit fires 451 } 452 }); 453 }); 454 455} 456 457document.addEventListener("DOMContentLoaded", () =>{ 458 initHighlightText(); 459}); 460</script>
vendor: 1 bytes, line 460
460
461<script> 462// UNIVERSAL NEWS NAVIGATION CODE - FIXED VERSION 463 464(function() { 465 'use strict'; 466 467 // Prevent multiple initializations 468 if (window.newsNavigationInitialized) { 469 return; 470 } 471 window.newsNavigationInitialized = true; 472 473 // Check if we're on the news page 474 const isNewsPage = window.location.pathname.includes('/news') || 475 document.querySelector('[news-page-identifier]') !== null; 476 477 document.addEventListener("DOMContentLoaded", function () { 478 479 if (isNewsPage) { 480 // NEWS PAGE FUNCTIONALITY 481 initializeNewsPageScrolling(); 482 } else { 483 // OTHER PAGES (Home, Bio, etc.) FUNCTIONALITY 484 initializeNewsLinks(); 485 } 486 }); 487 488 function initializeNewsLinks() { 489 let isInitialized = false; 490 491 function setupNewsLinks() { 492 if (isInitialized) return; 493 494 const newsItems = document.querySelectorAll("[news-item]"); 495 if (newsItems.length === 0) return; 496 497 newsItems.forEach(item => { 498 // Check if already has our listener 499 if (item.hasAttribute('data-news-listener')) return; 500 501 item.setAttribute('data-news-listener', 'true'); 502 item.addEventListener("click", handleNewsClick); 503 }); 504 505 isInitialized = true; 506 } 507 508 function handleNewsClick(event) { 509 // Prevent any default behavior that might cause reload 510 event.preventDefault(); 511 event.stopPropagation(); 512 513 try { 514 const newsSlug = this.getAttribute("news-item"); 515 516 if (!newsSlug || newsSlug.trim() === '') { 517 console.warn('News item clicked but no slug found:', this); 518 return false; 519 } 520 521 // Store the slug 522 if (typeof(Storage) !== "undefined") { 523 try { 524 window.localStorage.setItem("searchParamNews", newsSlug); 525 console.log('Stored news slug:', newsSlug); 526 } catch (e) { 527 console.warn('Failed to set localStorage, using URL parameter:', e); 528 window.location.href = `/news?item=${encodeURIComponent(newsSlug)}`; 529 return false; 530 } 531 } else { 532 window.location.href = `/news?item=${encodeURIComponent(newsSlug)}`; 533 return false; 534 } 535 536 // Navigate to news page 537 window.location.href = "/news"; 538 539 } catch (error) { 540 console.error('Error handling news item click:', error); 541 } 542 543 return false; 544 } 545 546 // Initial setup 547 setupNewsLinks(); 548 549 // Handle dynamic content 550 const contentWrapper = document.querySelector("[get-no-of-items]") || document.body; 551 if (window.MutationObserver) { 552 const observer = new MutationObserver(function(mutations) { 553 let hasNewNewsItems = false; 554 555 mutations.forEach(function(mutation) { 556 if (mutation.type === 'childList') { 557 mutation.addedNodes.forEach(function(node) { 558 if (node.nodeType === 1) { 559 if ((node.hasAttribute && node.hasAttribute('news-item')) || 560 (node.querySelector && node.querySelector('[news-item]'))) { 561 hasNewNewsItems = true; 562 } 563 } 564 }); 565 } 566 }); 567 568 if (hasNewNewsItems) { 569 setTimeout(setupNewsLinks, 100); 570 } 571 }); 572 573 observer.observe(contentWrapper, { 574 childList: true, 575 subtree: true 576 }); 577 } 578 } 579 580 function initializeNewsPageScrolling() { 581 let hasProcessedNewsSlug = false;
582 let retryCount = 0; 583 const maxRetries = 30; 584 const retryDelay = 200; 585 let paginationAttempts = 0; 586 const maxPaginationAttempts = 10; 587 588 function getNewsSlugFromStorage() { 589 if (typeof(Storage) === "undefined") return null; 590 591 try { 592 return window.localStorage.getItem("searchParamNews"); 593 } catch (e) { 594 console.warn('Failed to read from localStorage:', e); 595 return null; 596 } 597 } 598 599 function getNewsSlugFromURL() { 600 try { 601 const urlParams = new URLSearchParams(window.location.search); 602 return urlParams.get('item'); 603 } catch (e) { 604 console.warn('Failed to read URL parameters:', e); 605 return null; 606 } 607 } 608 609 function clearStoredNewsSlug() { 610 if (typeof(Storage) === "undefined") return; 611 612 try { 613 window.localStorage.removeItem("searchParamNews"); 614 console.log('Cleared stored news slug'); 615 } catch (e) { 616 console.warn('Failed to clear localStorage:', e); 617 } 618 } 619 620 function scrollToAndOpenNews() { 621 if (hasProcessedNewsSlug) { 622 return; // Already processed 623 } 624 625 const storedNewsSlug = getNewsSlugFromStorage() || getNewsSlugFromURL(); 626 if (!storedNewsSlug) { 627 console.log('No news slug found to process'); 628 return; 629 } 630 631 console.log('Processing news slug:', storedNewsSlug); 632 633 const newsItems = document.querySelectorAll("[news-item]"); 634 635 if (newsItems.length === 0) { 636 if (retryCount < maxRetries) { 637 retryCount++; 638 console.log(`No news items found, retrying... (${retryCount}/${maxRetries})`); 639 setTimeout(scrollToAndOpenNews, retryDelay); 640 } else { 641 console.warn('Max retries reached, news items not found'); 642 clearStoredNewsSlug(); 643 } 644 return; 645 } 646 647 let targetNewsItem = null; 648 newsItems.forEach(newsItem => { 649 if (newsItem.getAttribute("news-item") === storedNewsSlug) { 650 targetNewsItem = newsItem; 651 } 652 }); 653 654 if (!targetNewsItem) { 655 console.log('News item not found on current page, checking pagination...'); 656 handlePaginatedSearch(storedNewsSlug); 657 return; 658 } 659 660 // Mark as processed BEFORE doing anything to prevent loops 661 hasProcessedNewsSlug = true; 662 clearStoredNewsSlug(); 663 664 try { 665 console.log('Found target news item, scrolling...'); 666 667 // Scroll to the item 668 targetNewsItem.scrollIntoView({ 669 behavior: 'smooth', 670 block: 'center', 671 inline: 'nearest' 672 }); 673 674 // Wait for scroll to complete, then trigger click 675 setTimeout(() => { 676 try { 677 console.log('Triggering click on news item...'); 678 679 // Create a proper click event instead of just calling .click() 680 const clickEvent = new MouseEvent('click', { 681 bubbles: true, 682 cancelable: true, 683 view: window 684 }); 685 686 targetNewsItem.dispatchEvent(clickEvent); 687 688 } catch (e) { 689 console.error('Failed to trigger click on news item:', e); 690 } 691 }, 800); // Longer delay to ensure scroll completes 692 693 } catch (error) { 694 console.error('Error processing news item:', error); 695 } 696 } 697 698 function handlePaginatedSearch(newsSlug) { 699 if (paginationAttempts >= maxPaginationAttempts) { 700 console.warn('Max pagination attempts reached, giving up'); 701 clearStoredNewsSlug(); 702 showNewsItemNotFoundMessage(newsSlug); 703 return; 704 } 705 706 paginationAttempts++; 707 console.log(`Searching for news item across pages... (attempt ${paginationAttempts})`); 708 709 // Look for JetBoost pagination controls 710 const nextPageButton = document.querySelector('.jetboost-pagination-next-x1gy') || 711 document.querySelector('[data-jetboost-element="pg-next"]') || 712 document.querySelector('.jetboost-pagination-next') || 713 document.querySelector('[jetboost-pagination="next"]') || 714 document.querySelector('a[aria-label*="next"]') || 715 document.querySelector('.w-pagination-next'); 716
717 const loadMoreButton = document.querySelector('[data-jetboost-element="load-more"]') || 718 document.querySelector('.jetboost-load-more') || 719 document.querySelector('[jetboost-pagination="load-more"]'); 720 721 // Check if we can load more content 722 if (loadMoreButton && !loadMoreButton.disabled && loadMoreButton.style.display !== 'none') { 723 console.log('Found load more button, clicking to load more items...'); 724 725 // Set up observer to watch for new content 726 const observer = new MutationObserver(function(mutations) { 727 let hasNewItems = false; 728 mutations.forEach(function(mutation) { 729 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 730 mutation.addedNodes.forEach(function(node) { 731 if (node.nodeType === 1 && 732 ((node.hasAttribute && node.hasAttribute('news-item')) || 733 (node.querySelector && node.querySelector('[news-item]')))) { 734 hasNewItems = true; 735 } 736 }); 737 } 738 }); 739 740 if (hasNewItems) { 741 observer.disconnect(); 742 // Check if our target item is now available 743 setTimeout(() => { 744 const targetItem = document.querySelector(`[news-item="${newsSlug}"]`); 745 if (targetItem) { 746 console.log('Found target item after loading more content'); 747 hasProcessedNewsSlug = true; 748 clearStoredNewsSlug(); 749 750 targetItem.scrollIntoView({ 751 behavior: 'smooth', 752 block: 'center' 753 }); 754 755 setTimeout(() => { 756 const clickEvent = new MouseEvent('click', { 757 bubbles: true, 758 cancelable: true, 759 view: window 760 }); 761 targetItem.dispatchEvent(clickEvent); 762 }, 800); 763 } else { 764 // Try loading more again if button is still available 765 setTimeout(() => { 766 if (!loadMoreButton.disabled && loadMoreButton.style.display !== 'none') { 767 handlePaginatedSearch(newsSlug); 768 } else { 769 console.warn('News item not found after loading all content'); 770 clearStoredNewsSlug(); 771 } 772 }, 500); 773 } 774 }, 1000); 775 } 776 }); 777 778 const newsWrapper = document.querySelector("[get-no-of-items]") || document.body; 779 observer.observe(newsWrapper, { childList: true, subtree: true }); 780 781 // Click the load more button 782 loadMoreButton.click(); 783 784 } else if (nextPageButton && !nextPageButton.classList.contains('disabled') && 785 !nextPageButton.disabled && nextPageButton.style.display !== 'none') { 786 console.log('Found next page button, navigating to next page...'); 787 788 // Reset flags for the new page 789 hasProcessedNewsSlug = false;
790 retryCount = 0; 791 792 // Set up observer to detect when page content changes 793 const observer = new MutationObserver(function(mutations) { 794 let pageContentChanged = false; 795 mutations.forEach(function(mutation) { 796 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 797 mutation.addedNodes.forEach(function(node) { 798 if (node.nodeType === 1 && 799 ((node.hasAttribute && node.hasAttribute('news-item')) || 800 (node.querySelector && node.querySelector('[news-item]')))) { 801 pageContentChanged = true; 802 } 803 }); 804 } 805 }); 806 807 if (pageContentChanged) { 808 observer.disconnect(); 809 console.log('Page content changed, searching for target item...'); 810 // Wait a bit for content to fully load, then search again 811 setTimeout(() => { 812 scrollToAndOpenNews(); 813 }, 1500); 814 } 815 }); 816 817 const newsWrapper = document.querySelector("[get-no-of-items]") || document.body; 818 observer.observe(newsWrapper, { childList: true, subtree: true }); 819 820 // Also set a fallback timer in case mutation observer doesn't catch the change 821 setTimeout(() => { 822 observer.disconnect(); 823 if (!hasProcessedNewsSlug) { 824 console.log('Fallback: Checking for target item after page navigation...'); 825 scrollToAndOpenNews(); 826 } 827 }, 3000); 828 829 // Click the next page button 830 nextPageButton.click(); 831 832 } else { 833 // No pagination found or no more pages 834 console.warn('News item not found and no pagination options available'); 835 clearStoredNewsSlug(); 836 837 // Optional: Show user message that item wasn't found 838 showNewsItemNotFoundMessage(newsSlug); 839 } 840 } 841 842 function showNewsItemNotFoundMessage(newsSlug) { 843 // Optional: Create a temporary notification to inform the user 844 const notification = document.createElement('div'); 845 notification.style.cssText = ` 846 position: fixed; 847 top: 20px; 848 right: 20px; 849 background: #f44336; 850 color: white; 851 padding: 12px 20px; 852 border-radius: 4px; 853 z-index: 10000; 854 font-family: Arial, sans-serif; 855 font-size: 14px; 856 box-shadow: 0 2px 10px rgba(0,0,0,0.2); 857 `; 858 notification.textContent = 'News item not found. It may have been removed or archived.'; 859 860 document.body.appendChild(notification); 861 862 setTimeout(() => { 863 if (notification.parentNode) { 864 notification.parentNode.removeChild(notification); 865 } 866 }, 5000); 867 } 868 869 // Start the process 870 console.log('Initializing news page scrolling...'); 871 setTimeout(scrollToAndOpenNews, 500); // Initial delay to ensure page is ready 872 873 // Set up observer for dynamically loaded content 874 const newsWrapper = document.querySelector("[get-no-of-items]"); 875 if (newsWrapper && window.MutationObserver && !hasProcessedNewsSlug) { 876 const observer = new MutationObserver(function(mutations) { 877 if (hasProcessedNewsSlug) { 878 observer.disconnect(); 879 return; 880 } 881 882 let hasNewContent = false;
883 mutations.forEach(function(mutation) { 884 if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { 885 mutation.addedNodes.forEach(function(node) { 886 if (node.nodeType === 1) { 887 if ((node.hasAttribute && node.hasAttribute('news-item')) || 888 (node.querySelector && node.querySelector('[news-item]'))) { 889 hasNewContent = true; 890 } 891 } 892 }); 893 } 894 }); 895 896 if (hasNewContent) { 897 setTimeout(scrollToAndOpenNews, 200); 898 } 899 }); 900 901 observer.observe(newsWrapper, { 902 childList: true, 903 subtree: true 904 }); 905 906 // Clean up observer after timeout 907 setTimeout(() => { 908 observer.disconnect(); 909 }, 10000); 910 } 911 } 912 913})(); 914</script>
914 915 916<!-- Google Tag Manager (noscript) --> 917<noscript><iframe src=https://www.googletagmanager.com/ns.html?id=GTM-NKV98RJP 918height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 919<!-- End Google Tag Manager (noscript) --></body></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.