PageSourceSearch

https://mlfa.org/gala/

html mlfa.org collected 2026-10-03 22:11:13 UTC 159,281 bytes, 2,450 lines download raw bytes

1<!doctype html>
2<html lang="en-US">
3
4<head>
5	<meta charset="UTF-8">
6	<meta name="viewport" content="width=device-width, initial-scale=1">
7	<link rel="profile" href="https://gmpg.org/xfn/11">
8	
8<script>
9		var ajaxurl = "https://mlfa.org/wp-admin/admin-ajax.php";
10	</script>
10
11	<!-- here is ajax url -->
12
13	<!-- Global site tag (gtag.js) - Google Ads: 10929386518 -->
vendor: 65 bytes, lines 13-14
13
14	<script async src="https://www.googletagmanager.com/gtag/js?id=
14AW-10929386518
vendor: 13 bytes, lines 14-15
14"></script>
15	
15<script>
16		
vendor: 142 bytes, lines 16-22
16window.dataLayer = window.dataLayer || [];
17
18		function gtag() {
19			dataLayer.push(arguments);
20		}
21		gtag('js', new Date());
22		gtag('config', '
22AW-10929386518
vendor: 5 bytes, lines 22-23
22');
23	
23</script>
23
24
25	<!-- Event snippet for Donation conversion page
26In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. -->
27	
27<script>
28		function gtag_report_conversion(url) {
29			var callback = function() {
30				if (typeof(url) != 'undefined') {
31					window.location = url;
32				}
33			};
34			gtag('event', 'conversion', {
35				'send_to': 'AW-10929386518/NadwCPuT4cMDEJboxNso',
36				'event_callback': callback
37			});
38			return false;
39		}
40	</script>
40
41
42	<!-- Meta Pixel Code -->
43	
43<script>
vendor: 507 bytes, lines 43-62
43
44		! function(f, b, e, v, n, t, s) {
45			if (f.fbq) return;
46			n = f.fbq = function() {
47				n.callMethod ?
48					n.callMethod.apply(n, arguments) : n.queue.push(arguments)
49			};
50			if (!f._fbq) f._fbq = n;
51			n.push = n;
52			n.loaded = !0;
53			n.version = '2.0';
54			n.queue = [];
55			t = b.createElement(e);
56			t.async = !0;
57			t.src = v;
58			s = b.getElementsByTagName(e)[0];
59			s.parentNode.insertBefore(t, s)
60		}(window, document, 'script',
61			'https://connect.facebook.net/en_US/fbevents.js');
62		fbq('init', '
621065750750710416
vendor: 33 bytes, lines 62-64
62');
63		fbq('track', 'PageView');
64	
64</script>
64
65	<!-- End Meta Pixel Code -->
66
67	<meta name="facebook-domain-verification" content="dtve3ggt3vpr3bv2x708l2iflj8dz6" />
68
69		
69<script type="text/javascript">function theChampLoadEvent(e){var t=window.onload;if(typeof window.onload!="function"){window.onload=e}else{window.onload=function(){t();e()}}}</script>
69
70		
70<script type="text/javascript">var theChampDefaultLang = 'en_US', theChampCloseIconPath = 'https://mlfa.org/wp-content/plugins/super-socializer/images/close.png';</script>
70
71		
71<script>var theChampSiteUrl = 'https://mlfa.org', theChampVerified = 0, theChampEmailPopup = 0, heateorSsMoreSharePopupSearchText = 'Search';</script>
71
72			
72<script> var theChampFBKey = '', theChampFBLang = 'en_US', theChampFbLikeMycred = 0, theChampSsga = 0, theChampCommentNotification = 0, theChampHeateorFcmRecentComments = 0, theChampFbIosLogin = 0; </script>
72
73						
73<script type="text/javascript">var theChampFBCommentUrl = 'https://mlfa.org/gala/'; var theChampFBCommentColor = ''; var theChampFBCommentNumPosts = ''; var theChampFBCommentWidth = '100%'; var theChampFBCommentOrderby = ''; var theChampCommentingTabs = "wordpress,facebook,disqus", theChampGpCommentsUrl = 'https://mlfa.org/gala/', theChampDisqusShortname = '', theChampScEnabledTabs = 'wordpress,fb', theChampScLabel = 'Leave a reply', theChampScTabLabels = {"wordpress":"Default Comments (0)","fb":"Facebook Comments","disqus":"Disqus Comments"}, theChampGpCommentsWidth = 0, theChampCommentingId = 'respond'</script>
73
74						
74<script> var theChampSharingAjaxUrl = 'https://mlfa.org/wp-admin/admin-ajax.php', heateorSsFbMessengerAPI = 'fb-messenger://share/?link=%encoded_post_url%',heateorSsWhatsappShareAPI = 'api', heateorSsUrlCountFetched = [], heateorSsSharesText = 'Shares', heateorSsShareText = 'Share', theChampPluginIconPath = 'https://mlfa.org/wp-content/plugins/super-socializer/images/logo.png', theChampSaveSharesLocally = 0, theChampHorizontalSharingCountEnable = 0, theChampVerticalSharingCountEnable = 0, theChampSharingOffset = -10, theChampCounterOffset = -10, theChampMobileStickySharingEnabled = 0, heateorSsCopyLinkMessage = "Link copied.";
75		var heateorSsVerticalSharingShortUrl = "https://mlfa.org/gala/";		</script>
75
76			<style type="text/css">
77						.the_champ_button_instagram span.the_champ_svg,a.the_champ_instagram span.the_champ_svg{background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}
78					.the_champ_horizontal_sharing .the_champ_svg,.heateor_ss_standard_follow_icons_container .the_champ_svg{
79					background-color:transparent!important;background:transparent!important;
80					color: #B4B4B4;
81				border-width: 0px;
82		border-style: solid;
83		border-color: transparent;
84	}
85		.the_champ_horizontal_sharing span.the_champ_svg:hover,.heateor_ss_standard_follow_icons_container span.the_champ_svg:hover{
86					background-color:transparent!important;background:transparent;
87				border-color: transparent;
88	}
89	 div.the_champ_horizontal_sharing span.the_champ_svg svg:hover path:not(.the_champ_no_fill),div.the_champ_horizontal_sharing span.the_champ_svg svg:hover ellipse, div.the_champ_horizontal_sharing span.the_champ_svg svg:hover circle, div.the_champ_horizontal_sharing span.the_champ_svg svg:hover polygon, div.the_champ_horizontal_sharing span.the_champ_svg svg:hover rect:not(.the_champ_no_fill){
90		        fill: #B83D26;
91		    }
92		    div.the_champ_horizontal_sharing span.the_champ_svg svg:hover path.the_champ_svg_stroke, div.the_champ_horizontal_sharing span.the_champ_svg svg:hover rect.the_champ_svg_stroke{
93		    	stroke: #B83D26;
94		    }
95			.the_champ_vertical_sharing span.the_champ_svg,.heateor_ss_floating_follow_icons_container span.the_champ_svg{
96					color: #fff;
97				border-width: 0px;
98		border-style: solid;
99		border-color: transparent;
100	}
101		.the_champ_vertical_sharing span.the_champ_svg:hover,.heateor_ss_floating_follow_icons_container span.the_champ_svg:hover{
102						border-color: transparent;
103		}
104	@media screen and (max-width:783px){.the_champ_vertical_sharing{display:none!important}}</style>
105	<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
106
107	<!-- This site is optimized with the Yoast SEO plugin v28.0 - https://yoast.com/product/yoast-seo-wordpress/ -->
108	<title>MLFA&#039;s 25th Anniversary Gala - MLFA</title>
109	<link rel="canonical" href="https://mlfa.org/gala/" />
110	<meta property="og:locale" content="en_US" />
111	<meta property="og:type" content="article" />
112	<meta property="og:title" content="MLFA&#039;s 25th Anniversary Gala - MLFA" />
113	<meta property="og:url" content="https://mlfa.org/gala/" />
114	<meta property="og:site_name" content="MLFA" />
115	<meta name="twitter:card" content="summary_large_image" />
116	
116<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/mlfa.org\/gala\/","url":"https:\/\/mlfa.org\/gala\/","name":"MLFA's 25th Anniversary Gala - MLFA","isPartOf":{"@id":"https:\/\/mlfa.org\/#website"},"datePublished":"2026-08-07T06:38:57+00:00","breadcrumb":{"@id":"https:\/\/mlfa.org\/gala\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/mlfa.org\/gala\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/mlfa.org\/gala\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/mlfa.org\/"},{"@type":"ListItem","position":2,"name":"MLFA&#8217;s 25th Anniversary Gala"}]},{"@type":"WebSite","@id":"https:\/\/mlfa.org\/#website","url":"https:\/\/mlfa.org\/","name":"MLFA","description":"DEFENDS | PROTECTS | EDUCATES","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/mlfa.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
116
117	<!-- / Yoast SEO plugin. -->
118
119
120<link rel="alternate" type="application/rss+xml" title="MLFA &raquo; Feed" href="https://mlfa.org/feed/" />
121<link rel="alternate" type="application/rss+xml" title="MLFA &raquo; Comments Feed" href="https://mlfa.org/comments/feed/" />
122<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://mlfa.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fmlfa.org%2Fgala%2F" />
123<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://mlfa.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fmlfa.org%2Fgala%2F&#038;format=xml" />
124<style id="wp-img-auto-sizes-contain-inline-css">
125img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
126/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
127</style>
128<style id="wp-emoji-styles-inline-css">
129
130	img.wp-smiley, img.emoji {
131		display: inline !important;
132		border: none !important;
133		box-shadow: none !important;
134		height: 1em !important;
135		width: 1em !important;
136		margin: 0 0.07em !important;
137		vertical-align: -0.1em !important;
138		background: none !important;
139		padding: 0 !important;
140	}
141/*# sourceURL=wp-emoji-styles-inline-css */
142</style>
143<link rel='stylesheet' id='wp-block-library-css' href='https://mlfa.org/wp-includes/css/dist/block-library/style.min.css?ver=7.1.2' media='all' />
144<style id="classic-theme-styles-inline-css">
145/*! This file is auto-generated */
146.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}
147/*# sourceURL=/wp-includes/css/classic-themes.min.css */
148</style>
149<style id="global-styles-inline-css">
150: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,0) 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%);
150--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);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}: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;}
150.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;}
151:root :where(.wp-block-icon svg){width: 24px;}
152:where(.wp-block-gallery.is-layout-flex){gap: var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) );}:where(.wp-block-gallery.is-layout-grid){gap: var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) );}
153:where(.wp-block-latest-posts.is-layout-flex){gap: 1.25em;}:where(.wp-block-latest-posts.is-layout-grid){gap: 1.25em;}
154:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
155:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
156:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
157:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
158/*# sourceURL=global-styles-inline-css */
159</style>
160<link rel='stylesheet' id='contact-form-7-css' href='https://mlfa.org/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.6' media='all' />
161<link rel='stylesheet' id='powertip-css' href='https://mlfa.org/wp-content/plugins/devvn-image-hotspot/frontend/css/jquery.powertip.min.css?ver=1.2.0' media='all' />
162<link rel='stylesheet' id='maps-points-css' href='https://mlfa.org/wp-content/plugins/devvn-image-hotspot/frontend/css/maps_points.css?ver=1.3.0' media='all' />
163<link rel='stylesheet' id='audioigniter-css' href='https://mlfa.org/wp-content/plugins/audioigniter/player/build/style.css?ver=2.0.4' media='all' />
164<link rel='stylesheet' id='mlfa-style-css' href='https://mlfa.org/wp-content/themes/mlfa/style.css?ver=1.0.0' media='all' />
165<link rel='stylesheet' id='font_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/fonts/fonts.css?ver=7.1.2' media='all' />
166<link rel='stylesheet' id='variables_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/variables.css?ver=7.1.2' media='all' />
167<link rel='stylesheet' id='custom_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/custom.css?ver=7.1.2' media='all' />
168<link rel='stylesheet' id='custom_resposive_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/responsive.css?ver=7.1.2' media='all' />
169<link rel='stylesheet' id='bootstrap_grid_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/bootstrap-grid.min.css?ver=7.1.2' media='all' />
170<link rel='stylesheet' id='bootstrap_grid_map_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/bootstrap-grid.min.css.map?ver=7.1.2' media='all' />
171<link rel='stylesheet' id='slider_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/swiper-bundle.min.css?ver=1.0.0' media='all' />
172<link rel='stylesheet' id='slick_styles-css' href='https://mlfa.org/wp-content/themes/mlfa/assets/css/slick.css?ver=1.0.0' media='all' />
173<link rel='stylesheet' id='the_champ_frontend_css-css' href='https://mlfa.org/wp-content/plugins/super-socializer/css/front.css?ver=7.14.5' media='all' />
174<link rel='stylesheet' id='cf7cf-style-css' href='https://mlfa.org/wp-content/plugins/cf7-conditional-fields/style.css?ver=2.7.10' media='all' />
175<link rel='stylesheet' id='elementor-frontend-css' href='https://mlfa.org/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.1.4' media='all' />
176<link rel='stylesheet' id='eael-general-css' href='https://mlfa.org/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/css/view/general.min.css?ver=6.6.11' media='all' />
177<script id="jquery-core-js" src="https://mlfa.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 177
177
178<script id="jquery-migrate-js" src="https://mlfa.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
178
179<link rel="https://api.w.org/" href="https://mlfa.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://mlfa.org/wp-json/wp/v2/pages/26050" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://mlfa.org/xmlrpc.php?rsd" />
180<meta name="generator" content="WordPress 7.1.2" />
181<link rel='shortlink' href='https://mlfa.org/?p=26050' />
182<!-- Fundraise Up -->
183<script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track,openCheckout'
184.split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o
185:function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0],
186j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a+'';
187t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=5;o.h=w.location.href;o.l=[];
188for(i=0;i<8;i++)o[l[i]]=o(l[i]);w[n]=o}
189})(window,document,'script','FundraiseUp','AAMRKAJS');</script>
189
190<!-- End Fundraise Up --><!-- Termly Consent Banner -->
191<script src="https://app.termly.io/resource-blocker/2ba4f340-7327-4c1a-98bb-3173e3ab6807?autoBlock=on"></script>
191
192
193<!-- Mailchimp Popup -->
194<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/3dc4a1c076a35ecb15e01024a/77e251a3733ebb41df199e41e.js");</script>
194
195
196<!-- Google Tag Manager -->
197<script>
vendor: 331 bytes, lines 197-201
197(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
198new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
199j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
200'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
201})(window,document,'script','dataLayer','
201GTM-MJXWK3Z
vendor: 3 bytes, line 201
201');
201</script>
201
202<!-- End Google Tag Manager -->
203
204<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 204-205
204
205<script async src="https://www.googletagmanager.com/gtag/js?id=
205UA-39917155-1
vendor: 13 bytes, line 205
205"></script>
206<script>
207  
vendor: 138 bytes, lines 207-211
207window.dataLayer = window.dataLayer || [];
208  function gtag(){dataLayer.push(arguments);}
209  gtag('js', new Date());
210
211  gtag('config', '
211UA-39917155-1
vendor: 5 bytes, line 211
211');
212</script>
212
213
214<meta name="generator" content="Elementor 4.1.4; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap">
215			<style>
216				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
217				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
218					background-image: none !important;
219				}
220				@media screen and (max-height: 1024px) {
221					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
222					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
223						background-image: none !important;
224					}
225				}
226				@media screen and (max-height: 640px) {
227					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
228					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
229						background-image: none !important;
230					}
231				}
232			</style>
233			<link rel="icon" href="https://mlfa.org/wp-content/uploads/2023/03/Group-25.png" sizes="32x32" />
234<link rel="icon" href="https://mlfa.org/wp-content/uploads/2023/03/Group-25.png" sizes="192x192" />
235<link rel="apple-touch-icon" href="https://mlfa.org/wp-content/uploads/2023/03/Group-25.png" />
236<meta name="msapplication-TileImage" content="https://mlfa.org/wp-content/uploads/2023/03/Group-25.png" />
237<style id="wp-custom-css">
238.page-template-template-financials .logo-inside.d-flex.align-items-center.justify-content-center.m-auto.p-3 a {
239    height: 100% !important;
240}
241.page-template-events-page-template .date-main {
242    display: flex;
243}
244.page-template-events-page-template .event_date {
245    font-size: 24px;
246    font-family: var(--ff-title);
247}
248.page-template-template-financials .logo-inside.d-flex.align-items-center.justify-content-center.m-auto.p-3 img {
249    height: 100%;
250}
251
252.divform label {
253    display: block;
254    text-align: left;
255}
256
257section.divmain {
258    width: 100%;
259    float: left;
260}
261
262.divmain {
263    display: block;
264    width: 100%;
265    float: left;
266}
267
268.divform {
269    width: 100%;
270    float: left;
271}
272
273
274.divform label {
275    display: block;
276    text-align: left;
277	color:#000;
278}
279
280
281
282.divform input{
283	width:100%;
284}
285
286
287
288.divform .secondary-button{
289	    width: auto;
290	height:auto;
291padding: 15px 40px;
292}
293
294
295.divform {
296    width: 100%;
297    float: left;
298    margin-bottom: 20px;
299}
300
301
302.divform input {
303    width: 100%;
304    height: 34px;
305    padding: 15px;
306    border: 1px solid #ccc;
307    border-radius: 10px;
308}
309
310.divform.bgremove input{
311	padding:0;
312	 border: none;
313	    border-radius: 0px;
314}
315
316.new h4 {
317    text-align: center;
318   
319    margin-bottom: 40px;
320	    font-family: var(--ff-title);
321    font-size: var(--fs-xxl);
322    font-weight: 700;
323    text-transform: uppercase;
324    line-height: var(--line-height-xl);
325    letter-spacing: 2px;
326}
327
328
329
330
331
332
333
334.Formmain {
335    position: relative;
336    width: 100%;
337    display: block;
338    max-width: 400px;
339    top: 0;
340    right: 0;
341    left: 34%;
342}
343
344
345
346.Formmain input {
347    width: 100%;
348    height: 46px;
349    padding: 15px;
350    border: 1px solid #ccc;
351    border-radius: 10px;
352    margin-top: 8px;
353}
354
355
356html body .file-remove{
357		padding:0;
358	 border: none;
359	    border-radius: 0px;
360}
361
362
363.Formmain .secondary-button{
364	    width: auto;
365	height:auto;
366padding: 15px 40px;
367}
368
369
370
371
372.p-topp{
373	margin:60px 0;
374}
375
376
377.list-issues-section .title-main-secondary h4{
378	    font-family: var(--ff-title)!important;
379}
380
381
382.about-us-section .subtitle{
383		    font-family: var(--ff-title)!important;
384}
385
386
387.tags-list li a{
388	  font-family: var(--ff-title)!important;
389}
390
391
392/* .description-main p{
393		font-size: 18px;
394} */
395
396.title-description p{
397	font-size: 18px;
398}
399
400.content p{
401		font-size: 18px;
402}
403
404.hero-content-txt p{
405	font-size: 18px;
406}
407
408
409
410.listicon ul {
411    list-style-type: none;
412    display: block;
413    margin: 0 auto;
414    float: left;
415    width: 100%;
416    padding: 0;
417}
418
419.listicon li {
420    float: left;
421    width: 20%;
422    display: flex;
423}
424
425.listicon li img {
426    float: left;
427    width: auto;
428    height: 25px;
429    margin-right: 7px;
430}
431
432.listicon p {
433   
434    font-size: 18px;
435    
436}
437
438.listicon {
439    margin: 0;
440    width: 100%;
441    float: left;
442    padding-left: 100px;
443}
444
445
446.library-section .title-main h5 {
447    text-transform: none;
448    font-size: 18px;
449}
450
451
452
453.book-item .book-post-title a{
454	    font-family: var(--ff-title);
455    font-weight: 600;
456    text-transform: uppercase;
457    font-size: 30px;
458    line-height: 1.2;
459    color: var(--theme-secondary-color);
460    margin-bottom: 10px;
461	    text-decoration: none;
462}
463.title-main-secondary h4 {
464    text-transform: uppercase;
465}
466
467/*********Temp css same added in custom css*************/
468
469.page-id-25 .hero-title-main, .page-id-118 .hero-title-main, .page-id-328 .hero-title-main, .page-id-138 .hero-title-main, .page-id-293 .hero-title-main, .page-id-822 .hero-title-main, .page-id-334 .hero-title-main, .page-id-334 .hero-title-main, .page-id-241 .hero-title-main,
470.page-id-170 .hero-title-main, .single-teams .hero-title-main{
471  display: none !important;
472}
473
474.featured-book .inner .feat-contented {
475    display: none;
476}
477.page-template-our-story-page-template .story-stats-cards-section .row {
478    margin: 0px 18%;
479    vertical-align: middle;
480    width: 100%;
481}
482.join-section .content-main ul li {
483    font-family: 'Avenir LT Std' !important;
484    font-size: 16px;
485}
486@media only screen and (min-width: 992px) {
487	.shop-mobile{
488		display:none;
489	}
490}
491.site-header .site-navigation #menu-item-9146::after{
492	    content: '';
493    width: 34px;
494    height: 34px;
495    background-image: url(https://mlfa.org/wp-content/uploads/2022/11/shop-icon.svg);
496    position: absolute;
497    right: 10px;
498    top: 50%;
499    transform: translateY(-50%);
500}
501.site-header {
502  background: #014438;
503	position:relative !important;
504}
505.home .site-header {
506	position:fixed !important;
507	background: rgba(0, 0, 0, 0.3) !important;}
508.btn-link{
509	text-align:center;
510	padding-top:80px;
511}
512@media screen and (max-width: 1600px){
513.timeline-section {
514    padding-top: 80px !important;
515    padding-bottom: 80px !important;
516}
517}
518 @media(min-width: 1024px) {
519    .width-0 {
520      width: 1px;
521    }
522  }
523
524element.style {
525}
526@media screen and (max-width: 767px){
527
528	.content-wrapper p{
529		text-align:center;
530	}
531.home-hero-section .section-body .swiper-pagination {
532    bottom: -100px;
533}
534	.swiper-button-next, .swiper-rtl .swiper-button-prev {
535    top: 91px!important;
536}
537	.swiper-button-prev, .swiper-rtl .swiper-button-next{
538		top: 91px!important;
539	}
540	.page-template-our-story-page-template .story-stats-cards-section .row {
541    margin: 0px 0%;
542    vertical-align: middle;
543    width: 100%;
544}
545	.cpt-single-post .post-img::before{
546		right: 40px
547	}
548	.cpt-single-post .post-img{
549		text-align:center;
550	}
551}
552
553#wpcf7-f8-o1 .field-wrapper p{
554	margin-bottom:0px !important;
555}
556
557.page-template-template-Hajj-Udhiyah .ramadan-banner-carousel .slick-dots {
558	display:none;
559}
560	.page-template-template-Hajj-Udhiyah .content-wrapper p{
561		font-size:18px;
562		line-height:1.8;
563	}
564.page-template-template-Hajj-Udhiyah .ramadan-banner-carousel{
565	z-index:1 !important;
566}
567
568.page-template-template-Hajj-Udhiyah .defending-muslims {
569    background: #014438;
570    margin-bottom: -1px;
571}
572.home .site-header {
573    position: relative !important;
574    background: #014438 !important;
575}
576.footer-main .donate-btn img{
577	display:none;
578}
579#colophon .copy-right-text a {
580	color:#ffffff;
581}
582</style>
583</head>
584
585<body class="wp-singular page-template page-template-page-mlfa-gala page-template-page-mlfa-gala-php page page-id-26050 wp-theme-mlfa no-sidebar elementor-default elementor-kit-11652 intro-lock">
586	<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 586-587
586
587<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
587GTM-MJXWK3Z
vendor: 85 bytes, lines 587-588
587"
588height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
589<!-- End Google Tag Manager (noscript) -->
590	<main id="page" class="page-wrapper">
591              <div class="global_alert"><div><h3>Gala Tickets Remain! Join Alana Hadid on Oct. 3 in Dallas. <a href="https://mlfa.org/gala">Get Tickets Now</a></h3>
592</div></div>
593    
594		<header id="masthead" class="site-header">
595			<div class="header-wrap wrapper">
596				<div class="flex-container">
597					<div class="header-main header-row">
598						<div class="header-logo header-col">
599
600								<a class="logo-link" href="https://mlfa.org">
601                                                        <img src="https://mlfa.org/wp-content/uploads/2026/02/[email protected]" alt="" class="desktop-logo">
602                                    									  <img src="https://mlfa.org/wp-content/uploads/2026/03/[email protected]" alt="" class="mobile-logo">
603								  							</a>
604
605						</div>
606						<div class="donate-wrap">
607                <div class="donate-header"><ul id="secondary-menu-mobile" class="menu"><li id="menu-item-624" class="shop-menu-item d-none menu-item menu-item-type-custom menu-item-object-custom menu-item-624"><a target="_blank" href="https://www.bonfire.com/store/muslim-legal-fund-of-america/">Shop</a></li>
608<li id="menu-item-23296" class="nav-apply-for-help-btn menu-item menu-item-type-post_type menu-item-object-page menu-item-23296"><a href="https://mlfa.org/application-for-legal-assistance/">Apply for Help</a></li>
609<li id="menu-item-690" class="nav-donate-btn menu-item menu-item-type-custom menu-item-object-custom menu-item-690"><a target="_blank" href="/donate">Donate</a></li>
610</ul></div>
611							<div class="site-navigation header-col">
612								<div class="burger-wrap">
613									<div class="mob-btn">
614										<span class="bars line--top"></span>
615										<span class="bars line--center"></span>
616										<span class="bars line--bottom"></span>
617									</div>
618								</div>
619								<div class="inner-nav">
620									<div class="menu-primary-menu-container"><ul id="primary-menu" class="menu"><li id="menu-item-13" class="has-children menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-13"><a href="#">Who We Are</a>
621<ul class="sub-menu">
622	<li id="menu-item-274" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-274"><a href="https://mlfa.org/our-story/">Story</a></li>
623	<li id="menu-item-275" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-275"><a href="https://mlfa.org/teams/">TEAM</a></li>
624	<li id="menu-item-276" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-276"><a href="https://mlfa.org/join-our-team/">JOIN OUR TEAM</a></li>
625	<li id="menu-item-277" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-277"><a href="https://mlfa.org/our-financials/">Financials</a></li>
626	<li id="menu-item-278" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-278"><a href="https://mlfa.org/frequently-asked-questions/">FAQ</a></li>
627</ul>
628</li>
629<li id="menu-item-14" class="has-children menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-14"><a href="#">What We Do</a>
630<ul class="sub-menu">
631	<li id="menu-item-279" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-279"><a href="https://mlfa.org/missions/">Mission</a></li>
632	<li id="menu-item-9911" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-9911"><a href="https://mlfa.org/our-legal-services/">Services</a></li>
633	<li id="menu-item-281" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-281"><a href="https://mlfa.org/our-cases/">CASES</a></li>
634	<li id="menu-item-282" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-282"><a href="https://mlfa.org/upcoming-events/">Events</a></li>
635	<li id="menu-item-12032" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12032"><a href="https://mlfa.org/upcoming-events#community">MLFA In Your Community</a></li>
636	<li id="menu-item-283" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-283"><a href="https://mlfa.org/apply-for-help/">APPLY FOR HELP</a></li>
637</ul>
638</li>
639<li id="menu-item-16569" class="has-children menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-16569"><a href="https://mlfa.org/issues/">Legal Issues</a>
640<ul class="sub-menu">
641	<li id="menu-item-16573" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16573"><a href="https://mlfa.org/issues/">All Issues</a></li>
642	<li id="menu-item-16570" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16570"><a href="https://mlfa.org/issues-civil/">Civil Litigation</a></li>
643	<li id="menu-item-16571" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16571"><a href="https://mlfa.org/issues-immigration/">Immigration Litigation</a></li>
644	<li id="menu-item-18146" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18146"><a href="https://mlfa.org/issues-non-profit-governance/">Nonprofit Governance</a></li>
645	<li id="menu-item-16572" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16572"><a href="https://mlfa.org/issues-nscdc/">National Security Criminal Defense Center (NSCDC)</a></li>
646</ul>
647</li>
648<li id="menu-item-17" class="has-children menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-17"><a href="#">Resources</a>
649<ul class="sub-menu">
650	<li id="menu-item-678" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-678"><a href="https://mlfa.org/blog-news/">NEWS &#038; COMMENTARY</a></li>
651	<li id="menu-item-286" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-286"><a href="https://mlfa.org/video/">VIDEOS</a></li>
652	<li id="menu-item-288" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-288"><a href="https://mlfa.org/book-club/">BOOK CLUB</a></li>
653	<li id="menu-item-22507" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22507"><a href="https://mlfa.org/amle/">American Muslim Legal Ecosystem</a></li>
654</ul>
655</li>
656<li id="menu-item-18805" class="has-children d-md-none menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-18805"><a href="#">Other Ways to Donate</a>
657<ul class="sub-menu">
658	<li id="menu-item-18815" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18815"><a href="https://support.mlfa.org/campaign/year-end-campaign-2023/c539147">Create a Fundraiser</a></li>
659	<li id="menu-item-18822" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18822"><a href="/double-your-impact/">Double Your Impact</a></li>
660	<li id="menu-item-18823" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18823"><a href="/giving-funds/">Giving Funds</a></li>
661</ul>
662</li>
663</ul></div>								</div>
664							</div>
665						</div>
666						<div class="secondary-navigation header-col">
667							<div class="inner-nav">
668								<div class="menu-secondary-menu-container"><ul id="secondary-menu" class="menu"><li class="shop-menu-item d-none menu-item menu-item-type-custom menu-item-object-custom menu-item-624"><a target="_blank" href="https://www.bonfire.com/store/muslim-legal-fund-of-america/">Shop</a></li>
669<li class="nav-apply-for-help-btn menu-item menu-item-type-post_type menu-item-object-page menu-item-23296"><a href="https://mlfa.org/application-for-legal-assistance/">Apply for Help</a></li>
670<li class="nav-donate-btn menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-690"><a target="_blank" href="/donate">Donate</a>
671<ul class="sub-menu">
672	<li id="menu-item-691" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-691"><a href="/donate">Donate</a></li>
673	<li id="menu-item-25787" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25787"><a href="https://mlfa.org/justice-collective/">Monthly Giving</a></li>
674	<li id="menu-item-692" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-692"><a href="https://support.mlfa.org/campaign/year-end-campaign-2023/c539147">Create a Fundraiser</a></li>
675	<li id="menu-item-693" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-693"><a href="/double-your-impact/">Double Your Impact</a></li>
676	<li id="menu-item-18649" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18649"><a href="https://mlfa.org/giving-funds/">Giving Funds</a></li>
677</ul>
678</li>
679</ul></div>							</div>
680						</div>
681					</div>
682				</div>
683			</div>
684
685		</header><!-- #masthead -->
686<link rel="preconnect" href="https://fonts.googleapis.com">
687<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
688<link href="https://fonts.googleapis.com/css2?family=Newsreader:opsz,[email protected],300;6..72,400;6..72,500;6..72,600;6..72,700&family=Nunito+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
689
690<style>
691
692:root{
693  --green:#014438; --green-2:#0e6b58; --green-lite:#3ea88f; --green-deep:#02120e;
694  --red:#b83d26; --coral:#e8674b; --coral-lite:#ef7558; --coral-deep:#5e1d12;
695  --orange:#c2402a;
696  --gold:#e7c9a0; --gold-2:#cfa564;
697  --tan:#e7dbc2; --navy:#16264a;                 /* tickets section, per client feedback */
698  --paper:#f3efe6; --cream-pink:#f6e6df; --ink:#060605; --maroon:#3a120b;
699  --line:rgba(243,239,230,.14);
700  --ease:cubic-bezier(.22,1,.36,1); --ease-io:cubic-bezier(.65,0,.35,1);
701  --pad:clamp(20px,5vw,84px);
702  --sec-pad:clamp(80px,10vw,150px);        /* shared top/bottom rhythm for standard sections */
703  /* headings: Times-style serif · body: Avenir (Nunito Sans covers non-Apple) */
704  --h-sec:clamp(30px,4.2vw,62px);          /* one size for every section heading */
705  --h3:clamp(22px,2.6vw,38px);             /* one size for every h3 */
706  /* ── page background flow ──────────────────────────────────────────────
707     Every section starts on the colour its neighbour ended on. Hue crossings
708     (green ⇄ coral) always happen down in the darks, where the shift reads as
709     depth instead of mud; the brights are pure MLFA red/coral/teal.          */
710  --bg-night:#0a3529;   --bg-forest:#0f5240;  --bg-teal:#178d73;
711  --bg-plum:#5e1d12;    --bg-ember:#9c3520;   --bg-red:#c2402a;
712  --bg-coral:#ec6b4d;   --bg-cream:#f6e6df;
713  --serif:'Newsreader','Times New Roman',Times,Georgia,serif;
714  --body:'Avenir Next','Avenir','Nunito Sans',system-ui,-apple-system,sans-serif;
715}
716*{box-sizing:border-box;margin:0;padding:0}
717body{background:#16264a;color:#fff;font-family:var(--body);
718  font-size:clamp(15px,1.05vw,17px);font-weight:500;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
719body.intro-lock{overflow:hidden;height:100vh}
720img{max-width:100%;display:block}
721a{color:inherit;text-decoration:none}
722h1,h2,h3,h4{font-family:var(--serif);font-weight:400;line-height:1.02;letter-spacing:-.012em;text-transform:none}
723h3{font-size:var(--h3)}
724.mono{font-family:var(--body);letter-spacing:.08em}
725.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
726.wrap{width:100%;max-width:1500px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
727section{position:relative}
728#flow{position:relative;z-index:1;background-color:#16264a}
729/* Dither, behind the sections. Values hug mid-grey and blend with `overlay`, so the
730   perturbation is about ±1/255 — enough to break an 8-bit contour line, too small
731   to read as grain. Sitting behind the sections keeps photos and cards clean. */
732#flow::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
733  mix-blend-mode:overlay;
734  background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABAAgMAAADXB5lNAAAACVBMVEWEhISAgIB8fHzWL3XqAAAES0lEQVR42gFABL/7A4IDAEFb0pjBH4X19A+dPcwDA84vtc0OICDRQelN9J1JKwNyDwEoDvAAySX1B5fgOaI/AgDuEP
7340a4vhBzD3lmhwmEwwBhBDAABI+bJFgGQCG8gD0mgFiAgI8BOrW2iVF/9+OT6xIBAYZCa7CB/g0Q5gkLk4bN+kCoSWYylj4Cbv4RuQO3dH+BwEk3BhS2syW2wCDAl8D/Sx4A/BI9jhEP2IoI1sOnHHRDRQAZhkYEVAGQCEYQCAKRokARAIvcQj0RaPY9DEpAgDbe4IcA0DMGtf00vGI6wRbDOh0wj4Cy7TNFlIUSPPBHfT4XMfSBAFKXqBg7g+z0W0TwL37NDG/AlfaWvrSdPxrg+/b8vBACxMDsBkL6yTKFehggVzXbgtv5ANiRBEDcSz5RNNUlnJ00ZQJAZnv+YSAzRgff2At//IP1dsDzQS7UN3YvmI8qEjEIvCfawMWSfVTywfwxys+uO705s/xA4iL9alpqobxrv8TKpZiCQYBqf/cxh4wEOENBAysVMOvQABBFBYWEJlqJKKkEGQWCUERAQEUU7noTfyvKBhk//3wdUsCUwwyQaAELxD8x8GuAdSTFQPa8xHIsRoa/087lHxwBRirAUH/5u6G/s4wrFMQs/JMk/8ECboOAwfB4v4S0+rHDHNP8ANb/+sFpCNYACbJyipVArlZAUEY7STs/PDnHUQM1KqArNUDJBw6IgXvtJWtw7jpaxoNxQP06alRhG+97DJoCdvSMd3IAwVl1+MW1f3hJZNTKFG3+tsCGCn2xl/AaHbfOMKTwrz/PwN0zSfg5jSfAF0HGQS3R7JXBBwg6vgn0BAzclD/OcgpKSMC8r7w/JP4cCD2KKELjg8TwQPOar9A8D+FPRQNzPXq75YoAUBoAd0b//F0I+IOOPa+ZqsDYMEXA3sO5CbQBO3+7zbu7AQJtPPhQB3/kEovnYDDu96GAx3w4yBMdRJ2x696xexG4PEBKf9u7pU4U/y1rAUMP9fq9gGR0b5h/9Ex4u4vJWAQ/zsWAvTCgNGBFyYmEBAAVIzvViAEvYSsT8Y48h6+BPtKXn//AANjEytvRMUoBxmXDeMzIWZTAAkJYASoBQSgAqFBEQUWAGkDEEzjRr7x9xZVvM2SFchc3AI17tU84I5g/sjJNAUbQUYCAh0JkcJ+oOVE0xC24MFAgyMDHvMbBoYkzCM+Oh3f+9vSHgGY+vfMPxS6pl2tV5wUiQbxA/U7e29l8K8PKimuG/g4uuEBWBEdoh28BEvRB33/cTXXbwQCoJ/a+RXuAd8Jv+X/IPtxAyhXE/4GPwr4ZRrGcOfKXs0ERAjc7kWRBPYXLKihv6Gg8wFStH4OdEJgWELg4wB74QgAA/FKl/gwshHT43xf+iGbyBQAoUEJEaYaJGGkICEKQZJSqgEBgRTEtwMtBQzIUN4YpvxGA4WhNeMg7XcTmJAEPRRS9L8qUOXbxwAG2AAAAABJRU5ErkJggg==');background-size:64px 64px}
735
736.btn{display:inline-flex;align-items:center;font-family:var(--body);font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:13px;padding:15px 32px;border-radius:100px;cursor:pointer;transition:.3s var(--ease);border:1px solid transparent;white-space:nowrap}
737/* One button rule site-wide, per client (Aug 3): white with navy text, everywhere.
738   Hover inverts to navy with a white keyline so it never vanishes on a navy section. */
739.btn-primary{background:#fff;color:var(--navy)}
740.btn-primary:hover{background:var(--navy);color:#fff;border-color:rgba(255,255,255,.6);transform:translateY(-2px)}
741.btn-ghost{border-color:rgba(255,255,255,.5);color:#fff}
742.btn-ghost:hover{border-color:#fff;background:#fff;color:var(--navy)}
743.btn-white{background:#fff;color:var(--navy)} .btn-white:hover{background:var(--navy);color:#fff;border-color:rgba(255,255,255,.6)}
744/* countdown CTA — black on white, per client feedback */
745#anniversary .btn-primary{background:#fff;color:#000}
746#anniversary .btn-primary:hover{background:#000;color:#fff}
747#archive .btn-ghost:hover{background:#fff;color:var(--navy);border-color:#fff}
748/* redaction line reveal (see lineReveal in the script) — each split line gets a
749   wrapper and a black bar that sweeps across it */
750.block-line-wrapper{position:relative;width:max-content;max-width:100%;display:block}
751.block-line{position:relative;display:block}
752.block-revealer{position:absolute;top:-.06em;left:0;width:101%;height:calc(100% + .12em);pointer-events:none;will-change:transform;z-index:1;background:#faf9f6}
753/* centered copy keeps its centring once lines collapse to max-content */
754.spon-hero .block-line-wrapper{margin:0 auto}
755.rise{opacity:0;transform:translateY(30px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
756/* the line reveal owns the vertical motion once it is running — .rise just fades */
757body.line-reveal .rise{transform:none}
758.rise.in{opacity:1;transform:none}
759
760/* ============ INTRO / OPENING VIDEO ============ */
761#intro{position:fixed;inset:0;z-index:1000;background:#000;overflow:hidden}
762/* cover — full-bleed on every screen. The Aug 3 "too zoomed in" note turned out to be
763   about the HERO clip, not this one; contain here left black pillars on wide windows.
764   The title card is centered, so the phone-portrait crop keeps it readable. */
765#intro video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
766#intro .skip{position:absolute;bottom:30px;right:32px;z-index:4;cursor:pointer;background:none;border:1px solid rgba(255,255,255,.4);color:#fff;font-family:var(--body);font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.1em;padding:11px 20px;border-radius:100px;transition:.3s var(--ease)}
767#intro .skip:hover{background:#fff;border-color:#fff;color:var(--navy)}
768#intro .prog{position:absolute;bottom:0;left:0;height:3px;width:0;background:#fff;z-index:4}
769
770/* ============ HERO ============ */
771#hero{min-height:100svh;display:flex;align-items:center;overflow:hidden;padding:110px 0 70px}
772/* Everything decorative in the hero lives on a masked layer that fades to nothing
773   before the section ends. Painting a scrim over it instead left a plateau, and a
774   plateau meeting the flow's ramp reads as a hard line.
775   No green left on this layer: the wash (top-left teal radial, bottom-right warm
776   radial, diagonal green ramp) is gone, AND the fade-out mask is gone with it in
777   solid mode. The mask was the last source of green — as the navy texture dissolved
778   it revealed the section's flat --green underneath, which read as a tint. The plate
779   now runs full bleed and cuts hard into the countdown, same as every other section
780   boundary in solid mode. */
781#hero::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
782  background:url('https://mlfa.org/wp-content/uploads/2026/08/hero-static.png') center/cover no-repeat}
783/* Legibility scrim under the copy. The texture is busiest exactly where the headline
784   sits, so this pools a near-black behind it and falls off before the video starts.
785   Deliberately blue-black (#01060e), not green and not neutral grey — anything warmer
786   or greener would put a cast back on the section. Sits at z-index 0 so it paints over
787   ::before but stays under .hero-media (z-index 1); the video is never touched. */
788#hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
789  background:
790    radial-gradient(70% 60% at 20% 52%,rgba(1,6,14,.8),rgba(1,6,14,.44) 48%,transparent 74%),
791    linear-gradient(90deg,rgba(1,6,14,.6) 0%,rgba(1,6,14,.26) 34%,transparent 56%)}
792/* gradient-flow mode (?flow) still needs the fade — there the hero hands off to a
793   moving ramp, and a full-bleed layer would meet it as a Mach band. Both the texture
794   and the scrim above it have to fade, or the scrim leaves the plateau on its own. */
795body:not(.solid-bg) #hero::before,body:not(.solid-bg) #hero::after{
796  -webkit-mask:linear-gradient(180deg,#000 54%,rgba(0,0,0,.45) 70%,transparent 82%);
797          mask:linear-gradient(180deg,#000 54%,rgba(0,0,0,.45) 70%,transparent 82%)}
798/* half circle (flat side on the right edge), per client feedback — replaces the old
799   diagonal shard (#heroClip). The box is kept square (aspect-ratio:1/1 on a full-height
800   element) so the 50% radius is identical in both axes — a true semicircle, never a
801   stretched oval. */
802/* The square box is oversized (150% of the section, vertically centred with a negative
803   top — no transform, the hero parallax owns that) so the semicircle is generous: the
804   radius is 75% of the section height, and the section crops its top and bottom. */
805/* Bigger and nudged left, per client feedback (Jul 31): the box grew from 170% to
806   190% of the section and the circle's centre moved off the right edge (100% → 95%),
807   so noticeably more of the clip survives the crop. */
808#hero .hero-media{position:absolute;top:-45%;right:0;height:190%;width:auto;aspect-ratio:1/1;z-index:1;clip-path:circle(50% at 95% 50%);
809  -webkit-mask:linear-gradient(180deg,#000 80%,rgba(0,0,0,.55) 91%,transparent 99%);
810          mask:linear-gradient(180deg,#000 80%,rgba(0,0,0,.55) 91%,transparent 99%)}
811/* contain, not cover — "less zoomed in" (client, Aug 4). The clip renders at the
812   box's width instead of being blown up to its height, so the circle windows far
813   more of the frame; the contain voids at the box's top/bottom fall outside the
814   section crop (box is 190% of the section), so no bars ever show. */
815#hero .hero-media video{width:100%;height:100%;object-fit:contain}
816#hero .hero-content{position:relative;z-index:2;max-width:660px}
817#hero h1{font-size:var(--h-sec);color:#fff}
818#hero h1 .l2{color:#fff}
819#hero .tag{font-family:var(--body);font-weight:700;letter-spacing:0;font-size:clamp(17px,1.6vw,22px);color:#fff;margin-top:22px;line-height:1.4}
820#hero .date{margin-top:20px;font-family:var(--body);font-weight:700;text-transform:uppercase;letter-spacing:.09em;font-size:13px;color:#fff}
821#hero .actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:36px}
822@media(max-width:900px){
823  /* `.hero-media` is a SIBLING of `.wrap`, not a child — so the flex container that
824     `order:-1` acts on is `#hero` itself, which is row-direction. Without the column
825     switch the video became a narrow left-hand column instead of stacking on top. */
826  #hero{padding-top:90px;flex-direction:column;justify-content:center;align-items:stretch}
827  #hero .hero-media{position:relative;width:100%;height:50vw;flex:0 0 auto;order:-1;margin-bottom:28px;
828    clip-path:circle(50vw at 50% 0)}
829  /* phones keep cover: the 2:1 box barely crops the 16:9 clip there, and contain
830     would leave visible side voids instead */
831  #hero .hero-media video{object-fit:cover}
832  #hero .hero-content{max-width:100%}
833  #hero .wrap{display:block}
834  /* the copy sits under the video here, so the scrim pools at the bottom, not the left */
835  #hero::after{background:linear-gradient(180deg,rgba(1,6,14,.14) 0%,rgba(1,6,14,.56) 44%,rgba(1,6,14,.72) 100%)}
836}
837
838/* ============ COUNTER / 25 YEARS — copy first, number second ============ */
839#anniversary{padding:var(--sec-pad) 0;overflow:hidden}
840#anniversary .agrid{display:grid;grid-template-columns:1.35fr .8fr;gap:clamp(34px,5vw,76px);align-items:center;position:relative;z-index:2}
841#anniversary h2{font-size:var(--h-sec);color:#fff}
842#anniversary h2 em{font-style:normal;color:#fff}
843#anniversary .lede{margin-top:24px;max-width:68ch;color:#fff;font-size:clamp(15px,1.15vw,18px)}
844#anniversary .lede p{margin-bottom:13px}
845#anniversary .actions{margin-top:32px}
846/* simple countdown ticker — the floating gem shape was retired at the client's request:
847   "can we do a simple countdown, we could even remove the circle and make it a simple ticker".
848   One tight lockup, no framing rules: kicker → number → flip clock → date line. */
849.ticker{max-width:440px;margin:0 auto;text-align:center}
850.ticker .cap{font-family:var(--body);font-weight:700;text-transform:uppercase;letter-spacing:.2em;font-size:clamp(11px,1vw,13px);color:#fff}
851.ticker .big{font-family:var(--serif);font-weight:400;font-size:clamp(110px,14vw,200px);line-height:.9;color:#fff;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:clamp(14px,1.6vw,24px)}
852/* split-flap clock — hours : minutes : seconds on old-style flip cards */
853.flipclock{display:inline-flex;align-items:center;gap:12px;margin-top:22px}
854.flipclock .colon{font-family:var(--body);font-weight:700;font-size:clamp(20px,1.8vw,28px);color:#fff;opacity:.65}
855.flip{position:relative;width:clamp(62px,5.4vw,84px);height:clamp(68px,6vw,94px);perspective:300px}
856.flip .half,.flip .flap{position:absolute;left:0;right:0;height:50%;overflow:hidden}
857.flip .half.top,.flip .flap-top{top:0;border-radius:9px 9px 0 0;background:linear-gradient(180deg,#24395c,#1d3050)}
858.flip .half.bottom,.flip .flap-bottom{top:50%;border-radius:0 0 9px 9px;background:linear-gradient(180deg,#162742,#122139)}
859.flip .half.top{box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
860/* the seam between the two leaves */
861.flip::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(2,8,18,.85);z-index:4}
862.flip{filter:drop-shadow(0 12px 22px rgba(0,0,0,.38))}
863.flip .digit{position:absolute;left:0;width:100%;height:200%;display:grid;place-items:center;
864  font-family:var(--body);font-weight:700;font-size:clamp(28px,2.6vw,42px);color:#fff;
865  font-variant-numeric:tabular-nums;letter-spacing:.04em}
866.flip .top .digit,.flip .flap-top .digit{top:0}
867.flip .bottom .digit,.flip .flap-bottom .digit{top:-100%}
868.flip .flap{z-index:3;backface-visibility:hidden;-webkit-backface-visibility:hidden;visibility:hidden}
869.flip .flap-top{transform-origin:center bottom}
870.flip .flap-bottom{transform-origin:center top;transform:rotateX(90deg)}
871.flip.flipping .flap{visibility:visible}
872.flip.flipping .flap-top{animation:foldTop .26s ease-in forwards}
873.flip.flipping .flap-bottom{animation:foldBottom .26s ease-out .26s forwards}
874@keyframes foldTop{to{transform:rotateX(-90deg)}}
875@keyframes foldBottom{to{transform:rotateX(0deg)}}
876@media(max-width:900px){#anniversary .agrid{grid-template-columns:1fr;gap:44px}.ticker{max-width:340px}}
877
878/* ============ SPEAKERS — program title / portrait row / speaker copy ============ */
879.spk-pin{height:100svh;min-height:700px;position:relative;overflow:hidden;display:flex;flex-direction:column}
880/* ── program title on top ── */
881/* generous top pad to match the other sections' rhythm, and real clearance under the
882   title — the pop-out portraits rise toward it, so the gap below is load-bearing */
883.spk-head{flex:none;position:relative;z-index:6;padding:clamp(48px,7vh,96px) var(--pad) clamp(18px,3vh,36px)}
884.spk-title{font-size:var(--h-sec);color:#fff;transition:opacity .35s var(--ease)}
885/* ── portrait row in the middle ── */
886.spk-stage{flex:1;position:relative;z-index:2;min-height:0}
887/* circle portraits — every speaker shape is a circle at the client's request.
888   Pop-out (client ask, Jul 31): two copies of the same cutout share one geometry.
889   The copy inside .circ is cropped by the circle; .pop sits on top clipped to its
890   upper half only, so the head rises past the circle's rim while shoulders stay
891   cleanly inside — the layered trick from the retired "The Evening" slider. */
892.spk-card{position:absolute;left:0;bottom:0;transform-origin:left bottom;will-change:transform;   /* bottoms share one line; heads rise into the stage's headroom */
893  aspect-ratio:1/1;
894  transition:transform .75s var(--ease),opacity .5s var(--ease)}
895.spk-card .circ{position:absolute;inset:0;border-radius:50%;overflow:hidden;
896  background:linear-gradient(160deg,#f0e7d3,var(--tan));
897  box-shadow:0 26px 44px rgba(0,0,0,.45)}
898.spk-card img{position:absolute;
898left:50%;bottom:0;height:122%;width:auto;max-width:none;
899  transform:translateX(-50%);object-fit:contain;object-position:center bottom}
900.spk-card .pop{z-index:2;clip-path:inset(0 0 46% 0)}
901/* flat: pre-composed disc fills the circle exactly */
902.spk-card.flat img{left:0;height:100%;width:100%;transform:none;object-fit:cover;object-position:center}
903/* ── speaker copy under the portraits, nav on its right ──
904   The bottom padding also reserves the MENU dock's corner. This section is pinned, so
905   unlike everywhere else the copy would sit *stationary* under the dock for the whole
906   pin — the one place the overlap isn't just a passing scroll artefact. */
907.spk-foot{flex:none;position:relative;z-index:6;padding:clamp(8px,1.4vh,18px) var(--pad) clamp(78px,9vh,96px);
908  display:grid;grid-template-columns:1fr auto;gap:clamp(20px,4vw,60px);align-items:start}
909.spk-info{position:relative;max-width:min(62vw,780px);min-height:140px}   /* JS raises this to the tallest slide */
910.spk-slide{position:absolute;inset:0 0 auto 0;opacity:0;transform:translateY(14px);transition:opacity .45s var(--ease),transform .45s var(--ease);pointer-events:none}
911.spk-slide.active{opacity:1;transform:none;pointer-events:auto}
912.spk-slide h3{color:#fff;line-height:.96}
913.spk-slide .title{font-weight:700;text-transform:uppercase;letter-spacing:.09em;font-size:14px;color:#fff;margin-top:12px}
914.spk-slide .title:first-child{margin-top:0}   /* unannounced keynote: no name above it */
915.spk-slide .bio{margin-top:14px;max-width:62ch;color:#fff;font-size:14px}
916/* ── joined 2-chevron pill ── */
917.nav-pill{display:inline-flex;align-items:stretch;border:1px solid rgba(243,239,230,.34);border-radius:100px;
918  background:rgba(243,239,230,.04);overflow:hidden;backdrop-filter:blur(6px);margin-top:10px}
919.nav-pill button{width:clamp(42px,3.4vw,50px);height:clamp(34px,2.6vw,40px);display:grid;place-items:center;
920  border:0;background:none;color:#fff;cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease),opacity .3s var(--ease)}
921.nav-pill button svg{width:15px;height:15px;transition:transform .3s var(--ease)}
922.nav-pill button:hover:not(:disabled){background:#fff;color:var(--navy)}
923.nav-pill button:hover:not(:disabled).prev svg{transform:translateX(-3px)}
924.nav-pill button:hover:not(:disabled).next svg{transform:translateX(3px)}
925.nav-pill button:disabled{opacity:.28;cursor:not-allowed}
926.nav-pill .sep{width:1px;background:rgba(243,239,230,.26);margin:9px 0}
927@media(max-width:820px){
928  /* not pinned on phones (see NOPIN) — a normal block you scroll past, swiping the
929     row to change speaker. pan-y leaves vertical scrolling to the browser. */
930  .spk-pin{height:auto;min-height:0;padding-bottom:6px}
931  /* one gap value for the whole section on phones: title→portrait above matches
932     bio→arrows below. The height here is only a starting cap — layout() collapses the
933     stage onto the portrait it actually drew (see NOPIN there), so this padding is the
934     entire distance from the title to the top of the head. */
935  .spk-head{padding-bottom:28px}
936  .spk-stage{touch-action:pan-y;height:min(52vh,420px);flex:0 0 auto}
937  /* the nav pill drops below the copy here, so it inherits the dock clearance */
938  .spk-foot{grid-template-columns:1fr;gap:28px;padding-bottom:clamp(84px,11vh,104px)}
939  .spk-info{max-width:100%;min-height:160px}
940  /* the pill is a grid item once the row collapses, and grid items stretch by default —
941     `display:inline-flex` blockifies, so without this it runs the full column width */
942  .nav-pill{margin-top:0;justify-self:start}
943}
944
945/* ── SOLID SECTION COLOURS (default) ──────────────────────────────────────
946   Applied when the page is not in gradient-flow mode. Navy/white only, per
947   client (Aug 3): "we need to stay consistent with our color palette" — every
948   green and orange surface moved to navy.                                   */
949body.solid-bg #flow{background-image:none;background-color:var(--navy)}
950body.solid-bg #flow::before{display:none}
951body.solid-bg{background:var(--navy)}
952body.solid-bg #hero{background-color:var(--navy)}
953/* countdown — navy spotlight plate supplied by the client ("Hero Image 1") */
954body.solid-bg #anniversary{background:#0b1626 url('https://mlfa.org/wp-content/uploads/2026/08/countdown-bg.webp') center/cover no-repeat}
955/* speakers — case-file collage plate supplied by the client (she flagged it may be
956   "too busy"; a left-side scrim keeps the copy readable). The plate lives on the
957   pinned 100svh stage, NOT the tall pinned section — on the section, cover would
958   scale to the full pin distance (huge zoom) and travel during the pin. */
959body.solid-bg #speakers{background:#0c1a33}
960body.solid-bg .spk-pin{background:
961  linear-gradient(90deg,rgba(5,12,26,.72) 0%,rgba(5,12,26,.38) 40%,rgba(5,12,26,.12) 70%),
962  url('https://mlfa.org/wp-content/uploads/2026/08/speakers-bg.webp') center/cover no-repeat}
963body.solid-bg #tickets{background:var(--tan)}   /* tan, per client feedback */
964/* VIP — "Access Granted" vault plate supplied by the client; left scrim holds the copy */
965body.solid-bg #vip{background:
966  linear-gradient(90deg,rgba(4,4,5,.55) 0%,rgba(4,4,5,.25) 45%,rgba(4,4,5,.05) 70%),
967  url('https://mlfa.org/wp-content/uploads/2026/08/vault-access.webp') center/cover no-repeat,#0d0d0f}
968body.solid-bg .spon-hero{background:var(--navy)}
969/* gradient navy, per client (Aug 3) */
970body.solid-bg .spon-acc{background:linear-gradient(180deg,#1d3050 0%,var(--navy) 55%,#0e1a33 100%)}
971body.solid-bg #inkind{background:var(--tan)}   /* same tan as tickets, per client */
972/* sponsor wall — back to navy, so the white logo cards carry the section and the
973   tan in-kind block above it gets a clean edge */
974body.solid-bg #gala-sponsors{background:linear-gradient(180deg,var(--navy) 0%,#0e1a33 100%)}
975
976/* ============ BEHIND THE BLACK BARS ============ */
977/* plate image reads straight through — only the two edges carry colour, so the
978   section still meets the page flow cleanly */
979#reveal{min-height:100svh;display:grid;place-items:center;padding:clamp(70px,10vw,120px) 0;text-align:center;overflow:hidden;
980  background:url('https://mlfa.org/wp-content/uploads/2026/08/blackbars.png') center/cover no-repeat}
981#reveal .wrap{position:relative;z-index:2}
982/* the copy rides its own redaction bars, so the plate stays fully visible around it */
983#reveal .typed-wrap{max-width:74ch;margin:0 auto;text-align:center;min-height:13em}
984/* each typed line rides its own painted bar — an SVG brush stroke stretched to the
985   line's width, so the ends and edges stay ragged instead of reading as a rectangle */
986#reveal .typed{display:inline;font-family:var(--body);font-weight:500;font-size:clamp(16px,1.55vw,22px);
987  line-height:2.5;color:#fff;
988  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 64' preserveAspectRatio='none'><path fill='%23000' d='M1.5 13 C 34 6.5 68 12 101 8.4 C 142 4.2 178 12.6 214 8 C 258 2.6 300 12 334 7.6 C 358 4.6 378 11 398.5 5.5 L 399 51 C 372 58.5 344 50.5 316 55.6 C 276 62.8 236 51.4 196 56.8 C 154 62.4 116 51.6 78 57 C 52 60.7 26 53.4 1 59 Z'/><path fill='%23000' d='M6 2.5 C 30 6 44 3 60 5.5 L 58 9 C 40 7 22 9.5 5 8 Z'/><path fill='%23000' d='M250 57 C 276 60 300 56.5 322 59.5 L 320 62.5 C 296 60 272 63 248 60.5 Z'/></svg>") 0 0/100% 100% no-repeat;
989  padding:.34em .62em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
990#reveal .typed .cursor{display:inline-block;width:.62em;height:1.05em;vertical-align:-.16em;margin-left:.14em;
991  background:#fff;animation:caret 1s steps(1) infinite}
992#reveal .typed.done .cursor{animation:none;opacity:0}
993@keyframes caret{0%,49%{opacity:1}50%,100%{opacity:0}}
994@media(max-width:700px){#reveal .typed-wrap{min-height:22em}}
995
996/* ============ TICKETS ============ */
997#tickets{color:var(--navy);padding:var(--sec-pad) 0}
998#tickets .tgrid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(30px,5vw,70px);align-items:start}
999#tickets .tleft{position:sticky;top:60px}
1000#tickets h2{font-size:var(--h-sec);color:var(--navy);line-height:.94}
1001#tickets .tleft .meta{font-family:var(--body);font-weight:700;text-transform:uppercase;letter-spacing:.09em;font-size:clamp(14px,1.1vw,17px);color:var(--navy);margin-top:20px}
1002#tickets .tleft .actions{margin-top:28px}
1003.tcard{background:#fff;border-radius:18px;padding:clamp(22px,2.4vw,32px) clamp(24px,3vw,40px);margin-bottom:18px;box-shadow:0 20px 50px rgba(10,20,45,.08);position:relative;transition:.35s var(--ease)}
1004.tcard:hover{transform:translateY(-4px);box-shadow:0 30px 70px rgba(10,20,45,.14)}
1005.tcard.feat{background:linear-gradient(160deg,#fff,#e9eef8);outline:2px solid var(--navy)}
1006.tcard .win{font-family:var(--body);font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--navy)}
1007.tcard .row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:8px}
1008.tcard h3{font-family:var(--body);font-weight:700;font-size:clamp(20px,1.9vw,27px);letter-spacing:-.01em;color:var(--navy);max-width:16ch}
1009.tcard .price{text-align:right;flex:none}
1010.tcard .price b{font-family:var(--body);font-weight:700;font-size:clamp(30px,2.9vw,42px);letter-spacing:-.02em;color:var(--navy);line-height:1}
1011.tcard .price small{display:block;font-family:var(--body);font-weight:600;font-size:12px;color:rgba(22,38,74,.66);margin-top:4px}
1012/* white pill, navy text, per client (Aug 3) — the navy keyline keeps it legible where
1013   it overlaps the white card face */
1014.tcard .flag{position:absolute;top:-11px;left:24px;background:#fff;color:var(--navy);border:1.5px solid var(--navy);font-family:var(--body);font-weight:700;font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:5px 12px;border-radius:100px}
1015@media(max-width:820px){#tickets .tgrid{grid-template-columns:1fr}#tickets .tleft{position:static}}
1016
1017/* ============ VIP ============ */
1018#vip{padding:var(--sec-pad) 0;overflow:hidden}
1019#vip .vgrid{display:grid;grid-template-columns:.78fr 1.22fr;gap:clamp(28px,4vw,64px);align-items:center}
1020/* circle photo, per client feedback — replaces the mirrored shard */
1021#vip .vmedia{align-self:center;justify-self:center;margin:0 auto;width:100%;max-width:520px}
1022#vip .vault{position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:50%;
1023  box-shadow:0 30px 70px rgba(0,0,0,.5)}
1024#vip .vault img{width:100%;height:100%;object-fit:cover;object-position:center 42%}
1025#vip .sub{font-family:var(--body);font-weight:700;text-transform:uppercase;letter-spacing:.14em;font-size:clamp(12px,1vw,14px);color:#fff;margin-bottom:14px}
1026#vip .sub-after{margin:16px 0 0}   /* kicker demoted below the heading, per client (Jul 31) */
1027#vip h2{font-size:var(--h-sec);color:#fff}
1028#vip .lede{margin-top:22px;color:#fff}
1029#vip .lede p{margin-bottom:13px}
1030#vip .lede em{font-style:normal;color:#fff;font-weight:700}
1031#vip .lede ul{list-style:none;margin:0 0 13px;display:grid;gap:8px}
1032#vip .lede li{position:relative;padding-left:20px}
1033#vip .lede li::before{content:"";position:absolute;
1033left:0;top:.75em;width:7px;height:1.5px;background:var(--gold)}
1034#vip .actions{margin-top:30px}
1035@media(max-width:860px){#vip .vgrid{grid-template-columns:1fr;gap:40px}
1036  #vip .vmedia{order:-1;max-width:340px}}
1037
1038/* ============ SPONSORS ============ */
1039.spon-hero{min-height:80vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--sec-pad) var(--pad);overflow:hidden;position:relative}
1040/* sharp footage edge to edge — one flat scrim only, enough to hold the type */
1041.spon-hero::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
1042  background:rgba(8,14,28,.46)}
1043.spon-hero .bg{position:absolute;inset:0;z-index:0}
1044.spon-hero .bg video{width:100%;height:100%;object-fit:cover}
1045.spon-hero .inner{position:relative;z-index:3;max-width:860px}
1046/* frosted panel behind the copy — the footage under this block is busy (chairs, tables,
1047   a lit screen), so the type needs a calm bed rather than more scrim. Feathered with a
1048   radial mask so it reads as a soft pool of defocus, not a rectangle: the mask clips the
1049   backdrop-filter result too, which is what kills the hard edge. Sits at z-index -1
1050   inside .inner, so it is above the section scrim (z-index 2) and under the text. */
1051.spon-hero .inner::before{content:"";position:absolute;inset:-14% -10%;z-index:-1;pointer-events:none;
1052  -webkit-backdrop-filter:blur(16px) saturate(.92);backdrop-filter:blur(16px) saturate(.92);
1053  background:rgba(6,16,12,.2);
1054  -webkit-mask:radial-gradient(closest-side,#000 46%,rgba(0,0,0,.6) 74%,transparent 100%);
1055          mask:radial-gradient(closest-side,#000 46%,rgba(0,0,0,.6) 74%,transparent 100%)}
1056.spon-hero h2{font-size:var(--h-sec);color:#fff}
1057.spon-hero p{margin:22px auto 0;max-width:60ch;color:#fff}
1058.spon-hero .actions{margin-top:34px}
1059.spon-hero .screening{margin-top:28px;font-size:14px;color:#fff;display:block}
1060.spon-acc{padding:var(--sec-pad) 0;position:relative;overflow:hidden;
1061  background:radial-gradient(54% 32% at 12% 46%,rgba(122,152,214,.16),transparent 60%)}
1062.spon-acc .h{max-width:1040px;margin:0 auto clamp(28px,4vh,52px);padding:0 var(--pad);position:relative;z-index:2}
1063.spon-acc .h h2{font-size:var(--h-sec);color:#fff}
1064.spon-acc .h .soon{margin-top:12px;color:#fff;font-size:14px}
1065.acc{max-width:1040px;margin:0 auto;padding:0 var(--pad);position:relative;z-index:2}
1066.acc-cta{max-width:1040px;margin:clamp(28px,4vh,46px) auto 0;padding:0 var(--pad);position:relative;z-index:2}
1067.acc-item{border-bottom:1px solid rgba(255,255,255,.32)}
1068.acc-item:first-child{border-top:1px solid rgba(255,255,255,.32)}
1069.acc-btn{width:100%;background:none;border:0;cursor:pointer;color:#fff;display:flex;align-items:center;
1070  justify-content:space-between;gap:24px;padding:clamp(20px,2.4vw,30px) 0;text-align:left;
1071  font-family:var(--serif);font-weight:400;letter-spacing:-.01em;font-size:clamp(21px,2.5vw,36px);
1072  line-height:1.18;transition:color .3s var(--ease)}
1073.acc-btn:hover{color:#fff}
1074.acc-btn .amt{display:block;font-family:var(--body);font-weight:700;text-transform:uppercase;
1075  letter-spacing:.12em;font-size:11px;color:#fff;margin-top:8px}
1076.acc-btn:hover .amt{color:#fff}
1077/* thin ⊕ that becomes ⊖ — the vertical stroke collapses, no spin */
1078.acc-btn .ic{width:clamp(34px,3vw,42px);aspect-ratio:1;border-radius:50%;border:1px solid rgba(255,255,255,.55);
1079  display:grid;place-items:center;flex:none;position:relative;transition:border-color .3s var(--ease),background .3s var(--ease)}
1080.acc-btn:hover .ic{border-color:#fff}
1081.acc-btn .ic::before,.acc-btn .ic::after{content:"";position:absolute;background:#fff;transition:transform .35s var(--ease)}
1082.acc-btn .ic::before{width:13px;height:1.5px}
1083.acc-btn .ic::after{width:1.5px;height:13px}
1084.acc-item.open .acc-btn .ic::after{transform:scaleY(0)}
1085.acc-panel{max-height:0;overflow:hidden;transition:max-height .5s var(--ease)}
1086.acc-panel .pad{padding:0 0 clamp(22px,2.6vw,34px);color:#fff;max-width:62ch}
1087.acc-panel .pad p{font-size:15px}
1088.acc-panel ul{list-style:none;margin-top:14px;display:grid;gap:9px}
1089.acc-panel li{position:relative;padding-left:20px;font-size:14.5px;color:#fff}
1090.acc-panel li::before{content:"";position:absolute;
1090left:0;top:9px;width:7px;height:1.5px;background:var(--gold)}
1091
1092/* ============ IN-KIND ============ */
1093#inkind{padding:var(--sec-pad) 0;overflow:hidden}
1094#inkind .kgrid{display:grid;grid-template-columns:.78fr 1.22fr;gap:clamp(28px,4vw,64px);align-items:center}
1095#inkind h2{font-size:var(--h-sec);color:var(--navy)}
1096#inkind p{margin-top:16px;color:var(--navy)}
1097#inkind .actions{margin-top:26px}
1098/* circle photo, per client feedback (Jul 31) — matches the VIP vault treatment */
1099#inkind .kmedia{align-self:center;justify-self:center;margin:0 auto;width:100%;max-width:520px}
1100#inkind .kart{position:relative;aspect-ratio:1/1;overflow:hidden;border-radius:50%;
1101  box-shadow:0 26px 60px rgba(22,38,74,.28)}   /* navy-tinted, light enough for the tan bg */
1102#inkind .kart img{width:100%;height:100%;object-fit:cover;object-position:center}
1103@media(max-width:820px){
1104  #inkind .kgrid{grid-template-columns:1fr}
1105  #inkind .kmedia{order:-1;max-width:340px}
1106}
1107
1108/* ============ CONFIRMED SPONSORS ============ */
1109/* Client (Ru, Sep 16): confirmed sponsors, grouped by tier. Deliberately reuses
1110   the Sponsorship Tiers row language — same 1040px column, same hairline rules,
1111   same serif tier name on the left — but it is a static list, so there is no
1112   accordion button and no ⊕. The logos take the place the ⊕ occupies there.
1113   The logo set is very mixed: some are dark artwork on transparent, two are light
1114   artwork locked to their own dark tile (Kapture's disc, DAR Coffee's navy
1115   square). A white chip per logo is the one treatment that reads for all of them. */
1116#gala-sponsors{padding:var(--sec-pad) 0;overflow:hidden}
1117#gala-sponsors .h{max-width:1040px;margin:0 auto clamp(28px,4vh,52px);padding:0 var(--pad)}
1118#gala-sponsors .h h2{font-size:var(--h-sec);color:#fff}
1119.spw{max-width:1040px;margin:0 auto;padding:0 var(--pad)}
1120.spw-item{display:flex;align-items:center;justify-content:space-between;gap:clamp(20px,3vw,40px);
1121  padding:clamp(18px,2.2vw,28px) 0;border-bottom:1px solid rgba(255,255,255,.32)}
1122.spw-item:first-child{border-top:1px solid rgba(255,255,255,.32)}
1123/* same face, weight and size as .acc-btn so the two blocks read as one system */
1124.spw-name{font-family:var(--serif);font-weight:400;letter-spacing:-.01em;
1125  font-size:clamp(21px,2.5vw,36px);line-height:1.18;color:#fff}
1126.spw-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;
1127  gap:clamp(10px,1.2vw,16px);flex:none}
1128/* The chip is a fixed box and the logo is pinned to it — inset:0 + 100%/100%
1129   resolves against the chip's padding box, which is definite, and object-fit does
1130   the letterboxing. The breathing room is the img's own padding (border-box), NOT
1131   the chip's: object-fit contains inside the content box, so padding here is what
1132   keeps a logo off the edge. Laid out in flow instead (grid/place-items) the
1133   height percentage stays cyclic and the logo renders at intrinsic size. */
1134.spw-logo{position:relative;background:#fff;border-radius:10px;flex:none;
1135  width:var(--card,150px);height:var(--cardh,84px);
1136  box-shadow:0 10px 24px rgba(4,12,28,.26);
1137  transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
1138.spw-logo:hover{transform:translateY(-3px);box-shadow:0 16px 32px rgba(4,12,28,.36)}
1139.spw-logo img{position:absolute;inset:0;width:100%;height:100%;
1140  padding:8px 12px;box-sizing:border-box;object-fit:contain}
1141/* tier weighting — a small step, since the row itself now carries the hierarchy */
1142.spw-item[data-size="xl"]{--card:176px;--cardh:99px}
1143.spw-item[data-size="lg"]{--card:164px;--cardh:92px}
1144.spw-item[data-size="md"]{--card:154px;--cardh:87px}
1145.spw-item[data-size="sm"]{--card:146px;--cardh:82px}
1146@media(max-width:820px){
1147  /* the row can't hold a 36px serif name and two chips side by side, so it stacks —
1148     name over logos, both left-aligned to the same edge as the tier accordion */
1149  .spw-item{flex-direction:column;align-items:flex-start;gap:16px}
1150  .spw-row{justify-content:flex-start}
1151  .spw-item[data-size]{--card:142px;--cardh:80px}
1152}
1153
1154/* ============ ARCHIVE ============ */
1155#archive{position:fixed;inset:auto 0 0 0;z-index:0;min-height:100svh;display:grid;align-content:center;
1156  padding:var(--sec-pad) 0;text-align:left;overflow:hidden;
1157  background:linear-gradient(90deg,rgba(4,14,32,.82) 0%,rgba(4,14,32,.55) 42%,rgba(4,14,32,.12) 68%),
1158    url('https://mlfa.org/wp-content/uploads/2026/08/archive-bg.webp') center/cover no-repeat,#0a1730}
1159.archive-spacer{height:100svh;position:relative;z-index:-1;pointer-events:none}
1160#archive .wrap{position:relative;z-index:2}
1161#archive h2{font-size:var(--h-sec);color:#fff;max-width:16ch}
1162#archive p{margin:22px 0 40px;max-width:52ch;color:#fff}
1163
1164/* ============ SECTION MENU — draggable dock, bottom-left ============ */
1165/* Ported from ~/Projects/timeline/immersive/nav.js. The dock is fixed to the body,
1166   so it floats over every navy section: closed it is a white pill, open it inverts —
1167   the drawer turns white and the toggler fills navy. Same rule as the buttons. */
1168.nav-drop-zone{position:fixed;left:1.2rem;bottom:1.2rem;z-index:55;width:7.4rem;height:2.9rem;
1169  border:1.5px dashed rgba(255,255,255,.6);border-radius:2rem;opacity:0;pointer-events:none;
1170  transition:opacity .2s ease-out}
1171.nav-dock{position:fixed;left:1.2rem;bottom:1.2rem;z-index:56;touch-action:none;
1172  display:flex;flex-direction:row;align-items:center;gap:.4rem;padding:0;max-width:calc(100vw - 2.4rem);
1173  background:transparent;border-radius:2rem;box-shadow:none;
1174  transition:transform .32s var(--ease),background .3s var(--ease),padding .3s var(--ease),
1175             box-shadow .3s var(--ease),opacity .35s var(--ease)}
1176/* only show the white drawer when open; closed = just the MENU pill */
1177.nav-dock.open{padding:.35rem;background:rgba(255,255,255,.96);box-shadow:0 16px 44px rgba(2,18,14,.34);
1178  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
1179.nav-dock.nav-hidden,body.intro-lock .nav-dock{opacity:0;pointer-events:none}
1180.nav-dock.dragging{transition:none;cursor:grabbing}
1181.nav-toggler{position:relative;height:2.7rem;flex:0 0 auto;border:0;border-radius:1.6rem;
1182  background:#fff;color:var(--navy);cursor:grab;display:inline-flex;align-items:center;gap:.5rem;
1183  padding:0 1.05rem 0 .95rem;box-shadow:0 10px 30px rgba(4,10,24,.3);
1184  transition:background .3s var(--ease),color .3s var(--ease),box-shadow .3s var(--ease)}
1185.nav-dock.open .nav-toggler{background:var(--navy);color:#fff;box-shadow:none}
1186.nav-dock.dragging .nav-toggler{cursor:grabbing}
1187.nav-ico{display:flex;flex-direction:column;justify-content:center;gap:.28rem;width:1.05rem}
1188.nav-ico span{display:block;width:100%;height:.13rem;background:currentColor;border-radius:2px;
1189  transition:transform .3s var(--ease);transform-origin:center}
1190.nav-toggler.close .nav-ico span:nth-child(1){transform:rotate(45deg) translateY(.205rem)}
1191.nav-toggler.close .nav-ico span:nth-child(2){transform:rotate(-45deg) translateY(-.205rem)}
1192.nav-label{font-family:var(--body);font-weight:700;font-size:.78rem;letter-spacing:.14em;
1193  text-transform:uppercase;color:currentColor;user-select:none}
1194.nav-items{display:flex;flex-flow:row nowrap;gap:.24rem;max-width:0;overflow:hidden;opacity:0;margin:0;
1195  transition:max-width .45s var(--ease),opacity .3s var(--ease),margin .45s var(--ease)}
1196.nav-dock.open .nav-items{max-width:min(84vw,1010px);opacity:1;margin-left:.2rem;overflow-x:auto}
1197.nav-items::-webkit-scrollbar{height:0}
1198.nav-item a{display:block;color:var(--navy);background:transparent;border-radius:1.4rem;
1199  padding:.55rem .95rem;font-family:var(--body);font-weight:700;font-size:.76rem;letter-spacing:.06em;
1200  text-transform:uppercase;white-space:nowrap;user-select:none;
1201  transition:background .25s var(--ease),color .25s var(--ease)}
1202.nav-item a:hover{background:var(--navy);color:#fff}
1203.nav-item.here a{background:rgba(22,38,74,.09)}
1204.nav-item.here a:hover{background:var(--navy)}
1205@media(max-width:820px){
1206  .nav-drop-zone,.nav-dock{left:.9rem;bottom:calc(14px + env(safe-area-inset-bottom))}
1207  .nav-dock.open .nav-items{max-width:min(74vw,520px)}
1208}
1209
1210@media(prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.01ms!important}.rise{opacity:1;transform:none}}
1211
1212
1213/* WordPress-only (theme header above hero) */
1214@media (max-width: 820px) {
1215  #hero { min-height: 0; padding-top: 0; justify-content: flex-start; }
1216}
1217</style>
1218
1219
1220<!-- geo shard clip for the slider media — quadratic joins give the corners a radius
1221     that clip-path:polygon() can't. Coordinates are 0–1 of the element's box. -->
1222<svg width="0" height="0" aria-hidden="true" focusable="false" style="position:absolute">
1223  <defs>
1224    <clipPath id="shardClip" clipPathUnits="objectBoundingBox">
1225      <path d="M .757 .098 L .913 .272 Q 1 .37 1 .516 L 1 1 L .177 1 Q .06 1 .039 .904 L .021 .826 Q 0 .73 .088 .634 L .582 .096 Q .67 0 .757 .098 Z"/>
1226    </clipPath>
1227    <clipPath id="gemClip" clipPathUnits="objectBoundingBox">
1228      <!-- irregular five-sided shard, tilted and unevenly weighted rather than a
1229           symmetrical pentagon; every join carries a wide radius -->
1230      <path d="M .5432 .032 L .8968 .168 Q .98 .20 .9608 .3056 L .8792 .7544 Q .86 .86 .7672 .8824
1231               L .3728 .9776 Q .28 1 .2384 .9104 L .0616 .5296 Q .02 .44 .0904 .3696
1232               L .3896 .0704 Q .46 0 .5432 .032 Z"/>
1233    </clipPath>
1234    <clipPath id="heroClip" clipPathUnits="objectBoundingBox">
1235      <path d="M .376 0 L 1 0 L 1 1 L .376 1 Q .33 1 .294 .964 L .13 .80 Q .05 .72 .094 .606 L .310 .050 Q .33 0 .376 0 Z"/>
1236    </clipPath>
1237    <clipPath id="shardClipSm" clipPathUnits="objectBoundingBox">
1238      <path d="M .607 .064 L .893 .236 Q 1 .30 1 .448 L 1 1 L .169 1 Q .05 1 .029 .905 L .022 .875 Q 0 .78 .074 .665 L .426 .115 Q .50 0 .607 .064 Z"/>
1239    </clipPath>
1240  </defs>
1241</svg>
1242
1243<!-- ══════════ INTRO / OPENING VIDEO ══════════ -->
1244<div id="intro">
1245  <video id="introVid" playsinline muted autoplay preload="auto" poster="https://mlfa.org/wp-content/uploads/2026/08/opening-poster.jpg">
1246    <source src="https://mlfa.org/wp-content/uploads/2026/08/opening.mp4" type="video/mp4">
1247  </video>
1248  <button class="skip" id="skipIntro">Skip →</button>
1249  <div class="prog" id="introProg"></div>
1250</div>
1251
1252<!-- One continuous background runs the length of the page (see FLOW in the script).
1253     Sections layer glows and veils on top of it but never their own base colour,
1254     so there is no seam anywhere to mismatch. -->
1255<main id="flow">
1256
1257<!-- ══════════ HERO ══════════ -->
1258<section id="hero">
1259  <div class="hero-media">
1260    <!-- hi-res client clip (Jul 31), fade-to-black tail trimmed so the loop never blanks -->
1261    <video autoplay muted loop playsinline preload="metadata" poster="https://mlfa.org/wp-content/uploads/2026/08/hero-poster.jpg">
1262      <source src="https://mlfa.org/wp-content/uploads/2026/08/hero-loop-2.mp4" type="video/mp4">
1263    </video>
1264  </div>
1265  <div class="wrap">
1266    <div class="hero-content">
1267      <h1>MLFA's 25th<br>Anniversary <span class="l2">Gala</span></h1>
1268      <div class="tag">One Night. A Quarter Century of Impact.<br>The Next Chapter of Justice.</div>
1269      <div class="date">Sat Oct. 3 | 6 PM | Omni Las Colinas Hotel<br>221 Las Colinas Blvd E, Irving, TX 75039 | Black Tie</div>
1270      <div class="actions">
1271        <!-- entry CTAs scroll to their section; the outbound link lives in the section itself -->
1272        <a href="#tickets" class="btn btn-primary">Tickets</a>
1273        <a href="#sponsors" class="btn btn-ghost">Sponsorships</a>
1274      </div>
1275    </div>
1276  </div>
1277</section>
1278
1279<!-- ══════════ COUNTER / 25 YEARS — counter left, copy right ══════════ -->
1280<section id="anniversary">
1281  <div class="wrap agrid">
1282    <div class="rise">
1283      <h2>Celebrating the<br>first <em>25 years</em></h2>
1284      <div class="lede">
1285        <p>For 25 years, Muslim Legal Fund of America (MLFA) has defended constitutional rights, challenged government overreach, and stood in solidarity when others wouldn't.</p>
1286        <p>Some of that work made headlines, much of it never did.</p>
1287      </div>
1288      <div class="actions"><a href="#tickets" class="btn btn-primary">Secure Your Seat</a></div>
1289    </div>
1290    <div class="rise acount">
1291      <div class="ticker">
1292        <div class="cap">Days until MLFA Gala</div>
1293        <div class="big" id="cdDays">—</div>
1294        <div class="flipclock" id="cdClock" role="timer" aria-label="Time remaining">
1295          <span class="flip" id="fH" aria-hidden="true"><span class="half top"><span class="digit"></span></span><span class="half bottom"><span class="digit"></span></span><span class="flap flap-top"><span class="digit"></span></span><span class="flap flap-bottom"><span class="digit"></span></span></span>
1296          <span class="colon" aria-hidden="true">:</span>
1297          <span class="flip" id="fM" aria-hidden="true"><span class="half top"><span class="digit"></span></span><span class="half bottom"><span class="digit"></span></span><span class="flap flap-top"><span class="digit"></span></span><span class="flap flap-bottom"><span class="digit"></span></span></span>
1298          <span class="colon" aria-hidden="true">:</span>
1299          <span class="flip" id="fS" aria-hidden="true"><span class="half top"><span class="digit"></span></span><span class="half bottom"><span class="digit"></span></span><span class="flap flap-top"><span class="digit"></span></span><span class="flap flap-bottom"><span class="digit"></span></span></span>
1300        </div>
1301      </div>
1302    </div>
1303  </div>
1304</section>
1305
1306<!-- ══════════ SPEAKERS ══════════ -->
1307<section id="speakers">
1308  <div class="spk-pin" id="spkPin">
1309    <div class="spk-head"><h2 class="spk-title" id="spkLabel">Keynote Address</h2></div>
1310    <div class="spk-stage" id="spkStage"></div>
1311    <div class="spk-foot">
1312      <div class="spk-info" id="spkInfo"></div>
1313      <div class="nav-pill">
1314        <button class="prev" id="spkPrev" aria-label="Previous speaker">
1315          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 5 8 12 15 19"/></svg>
1316        </button>
1317        <span class="sep" aria-hidden="true"></span>
1318        <button class="next" id="spkNext" aria-label="Next speaker">
1319          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 5 16 12 9 19"/></svg>
1320        </button>
1321      </div>
1322    </div>
1323  </div>
1324</section>
1325
1326
1327<!-- ══════════ BEHIND THE BLACK BARS ══════════ -->
1328<section id="reveal">
1329  <div class="wrap">
1330    <div class="typed-wrap"><p class="typed" id="revealType" data-text="[REDACTED] invites you behind the black bars, to uncover the cases, the people, and the constitutional battles that have defined MLFA's first quarter century. Join us as we reveal what has remained hidden and recommit ourselves to the work that lies ahead."></p></div>
1331  </div>
1332</section>
1333
1334<!-- ══════════ TICKETS ══════════ -->
1335<section id="tickets">
1336  <div class="wrap tgrid">
1337    <div class="tleft">
1338      <h2>Tickets</h2>
1339      <div class="meta">Seats are limited. This moment demands your presence.</div>
1340      <div class="actions"><a href="https://support.mlfa.org/event/the-first-25-years-or-mlfa-gala-2026/e822696" target="_blank" rel="noopener" class="btn btn-primary">Buy Now</a></div>
1341    </div>
1342    <!-- Per client (Jul 31): table gets its own card. Per client (Aug 18): GA prices added. Per client (Sep 9): early-bird cards removed, sales ended Aug 21. -->
1343    <div class="tright">
1344      <div class="tcard rise">
1345        <div class="row"><h3>General Admission</h3><div class="price"><b>$125</b></div></div>
1346      </div>
1347      <div class="tcard rise">
1348        <div class="row"><h3>Table &mdash; General Admission</h3><div class="price"><b>$1,250</b></div></div>
1349      </div>
1350      <div class="tcard feat rise">
1351        <div class="flag">Includes VIP access with speakers</div>
1352        <div class="row"><h3>Benefactor Meet &amp; Greet</h3><div class="price"><b>$250</b></div></div>
1353      </div>
1354    </div>
1355  </div>
1356</section>
1357
1358<!-- ══════════ VIP ══════════ -->
1359<section id="vip">
1360  <div class="wrap vgrid">
1361    <div class="vmedia rise">
1362      <div class="vault"><img src="https://mlfa.org/wp-content/uploads/2026/08/vip-guests.webp" alt="Guests at the MLFA banquet photo booth" loading="lazy"></div>
1363    </div>
1364    <div class="rise">
1365      <!-- Per client (Jul 31): "Access Granted" leads, "Benefactor Meet & Greet" follows -->
1366      <h2>Access Granted</h2>
1367      <div class="sub sub-after">Benefactor Meet &amp; Greet</div>
1368      <div class="lede">
1369        <p><em>Some stories remain untold, until you meet the people who lived them.</em></p>
1370        <p>Your VIP ticket unlocks exclusive early access to an intimate reception, with our featured speakers, MLFA staff and attorneys, photo opportunities, refreshments, and intimate dialogue before our Gala begins.
1370</p>
1371        <p>We hope you choose to experience the evening with us before the official reveal begins.</p>
1372      </div>
1373      <div class="actions"><a href="https://support.mlfa.org/event/the-first-25-years-or-mlfa-gala-2026/e822696" target="_blank" rel="noopener" class="btn btn-primary">Benefactor Meet &amp; Greet</a></div>
1374    </div>
1375  </div>
1376</section>
1377
1378<!-- ══════════ SPONSORS ══════════ -->
1379<section id="sponsors">
1380  <div class="spon-hero">
1381    <div class="bg">
1382      <video autoplay muted loop playsinline preload="none">
1383        <source src="https://mlfa.org/wp-content/uploads/2026/08/sponsor-web.mp4" type="video/mp4">
1384      </video>
1385    </div>
1386    <div class="inner">
1387      <h2>Partner with MLFA</h2>
1388      <p>Support a milestone evening celebrating 25 years of impact while showcasing your organization's commitment to justice. Sponsorship provides meaningful visibility among community leaders, legal professionals, donors, and changemakers.</p>
1389      <div class="actions"><a href="#tiers" class="btn btn-white">Become a Sponsor</a></div>
1390      <span class="screening">All sponsors receive access to a complimentary nonprofit legal screening.</span>
1391    </div>
1392  </div>
1393  <div class="spon-acc" id="tiers">
1394    <div class="h"><h2>Sponsorship Tiers</h2></div>
1395    <!-- Tiers + benefit lists per the updated support.mlfa.org event page (client, Jul 31 —
1396         Silver is the new tier). All start collapsed. -->
1397    <div class="acc" id="acc">
1398      <div class="acc-item">
1399        <button class="acc-btn"><span>Presenting Sponsor<span class="amt">$50,000 · Exclusive</span></span><span class="ic"></span></button>
1400        <div class="acc-panel"><div class="pad">
1401          <ul>
1402            <li>Exclusive Gala naming rights: the 25th Anniversary Gala is presented in partnership with your organization across materials.</li>
1403            <li>Verbal recognition during opening and closing remarks, plus an invitation to offer brief remarks from the podium (subject to program approval).</li>
1404            <li>A two-minute video played during the program.</li>
1405            <li>VIP table for ten guests, including two seats at the Executive Director&rsquo;s table and VIP reception access.</li>
1406            <li>Top-placement logo on all event materials, invitations, signage, and the sponsor page on the MLFA Gala website.</li>
1407            <li>Four dedicated social media posts tagging your organization, plus named recognition in an email to MLFA supporters.</li>
1408          </ul>
1409        </div></div>
1410      </div>
1411      <div class="acc-item">
1412        <button class="acc-btn"><span>Platinum Sponsor<span class="amt">$35,000</span></span><span class="ic"></span></button>
1413        <div class="acc-panel"><div class="pad">
1414          <ul>
1415            <li>Verbal acknowledgment during the Gala program.</li>
1416            <li>A one-minute video played during the program.</li>
1417            <li>VIP table for ten guests and VIP reception access.</li>
1418            <li>Logo on the Gala website sponsor page, printed materials, invitations, signage, and digital program.</li>
1419            <li>Three dedicated social media posts and named recognition in an email to MLFA supporters.</li>
1420          </ul>
1421        </div></div>
1422      </div>
1423      <div class="acc-item">
1424        <button class="acc-btn"><span>Gold Sponsor<span class="amt">$25,000</span></span><span class="ic"></span></button>
1425        <div class="acc-panel"><div class="pad">
1426          <ul>
1427            <li>Verbal acknowledgment during the Gala program.</li>
1428            <li>Priority table for ten guests and VIP reception access.</li>
1429            <li>Logo on the Gala website sponsor page, signage, invitations, and printed program.</li>
1430            <li>Two dedicated social media posts and named recognition in an email to MLFA supporters.</li>
1431          </ul>
1432        </div></div>
1433      </div>
1434      <div class="acc-item">
1435        <button class="acc-btn"><span>Silver Sponsor<span class="amt">$15,000</span></span><span class="ic"></span></button>
1436        <div class="acc-panel"><div class="pad">
1437          <ul>
1438            <li>Verbal acknowledgment during the Gala program.</li>
1439            <li>Reserved table for ten guests and VIP reception access.</li>
1440            <li>Logo on the Gala website sponsor page.</li>
1441            <li>One dedicated social media post and named recognition in an email to MLFA supporters.</li>
1442          </ul>
1443        </div></div>
1444      </div>
1445    </div>
1446    <!-- the outbound link for this section — the hero's "Become a Sponsor" scrolls here.
1447         Deep-links straight to ticket selection, per client (Aug 3). -->
1448    <div class="acc-cta"><a href="https://support.mlfa.org/event/the-first-25-years-or-mlfa-gala-2026/e822696/register/new/select-tickets" target="_blank" rel="noopener" class="btn btn-primary">Become a Sponsor</a></div>
1449  </div>
1450</section>
1451
1452<!-- ══════════ IN-KIND ══════════ -->
1453<section id="inkind">
1454  <div class="wrap kgrid">
1455    <div class="kmedia rise">
1456      <!-- updated photo, per client (Jul 31) -->
1457      <div class="kart"><img src="https://mlfa.org/wp-content/uploads/2026/08/inkind-2.webp" alt="Guests at the MLFA banquet" loading="lazy"></div>
1458    </div>
1459    <div class="kbody rise">
1460        <h2>Become an in-kind sponsor</h2>
1461        <p>Help us create an unforgettable 25th Anniversary Banquet by partnering with MLFA through an in-kind donation. Whether it's products, services, guest gifts, décor, or event support, your contribution will help enhance an evening attended by more than 500 community leaders, attorneys, advocates, and supporters.</p>
1462        <p>As a thank you, participating businesses may receive recognition through different official MLFA outlets. We'd be honored to showcase your generosity while celebrating 25 years of defending justice.</p>
1463        <div class="actions"><a href="https://forms.cloud.microsoft/pages/responsepage.aspx?id=oiB_iSDzkUu20kpWPbd_DoNNqGaj_EJLjNILtIM1V1pUMzlFM01MNzlQSUw2VFhWSzNJNzU3U0lVNi4u&amp;route=shorturl" target="_blank" rel="noopener" class="btn btn-primary">Submit an In-Kind Donation</a></div>
1464    </div>
1465  </div>
1466</section>
1467
1468<!-- ══════════ CONFIRMED SPONSORS ══════════ -->
1469<!-- Client (Ru, Sep 16). Tier order is fixed and must not be re-sorted:
1470       Presenting · Platinum · Gold · Silver · Bronze ·
1471       Community & Strategic Partners · In-Kind
1472     As tiers are confirmed, add a .spw-item row in that order. data-size sets the
1473     chip size, so the weighting stays visible: xl → lg → md → sm.
1474     These six srcs are absolute mlfa.org URLs on purpose: the client uploaded the
1475     logo set straight into uploads/2026/09, which is NOT the month $mlfa_img_base
1476     points at, and they are the client's own files rather than processed assets of
1477     ours. The build only rewrites assets/… refs, so absolute URLs pass through the
1478     template untouched and survive every regeneration. Swap the URL here — never
1479     in the .php — when a logo is re-uploaded. -->
1480<section id="gala-sponsors">
1481  <div class="h rise"><h2>Our Gala Sponsors</h2></div>
1482  <div class="spw">
1483	  	<div class="spw-item rise" data-size="sm">
1484	  <span class="spw-name">Presenting</span>
1485	  <div class="spw-row">
1486		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/ZF-logo-1.jpg" alt="Zakat Foundation" width="632" height="632" loading="lazy" decoding="async"></div>
1487	  </div>
1488	</div>
1489    <div class="spw-item rise" data-size="xl">
1490	  <span class="spw-name">Platinum</span>
1491	  <div class="spw-row">
1492		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/37be6c91-d436-4f21-877a-63a427d4f133.png" alt="American Muslims for Palestine" width="1313" height="985" loading="lazy" decoding="async"></div>
1493	  </div>
1494	</div>
1495	<div class="spw-item rise" data-size="sm">
1496	  <span class="spw-name">Gold</span>
1497	  <div class="spw-row">
1498		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/iacc-logo-1.png" alt="IACC" width="2000" height="2000" loading="lazy" decoding="async"></div>
1499		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/ISF_footer-LOGO-300x110-376w-1.webp" alt="Islamic Scholarship Fund" width="1371" height="1419" loading="lazy" decoding="async"></div>
1500	  </div>
1501	</div>
1502	<div class="spw-item rise" data-size="lg">
1503	  <span class="spw-name">Silver</span>
1504	  <div class="spw-row">
1505		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/baitulmaal_logo-black_letters-yellow_dots-white_square_transparent-backgroung-scaled.png" alt="Baitulmaal" width="2560" height="2560" loading="lazy" decoding="async"></div>
1506		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/Logo-with-White-background-2.png" alt="Tacs" width="2560" height="2560" loading="lazy" decoding="async"></div>
1507	  </div>
1508	</div>
1509	<div class="spw-item rise" data-size="sm">
1510	  <span class="spw-name">Bronze</span>
1511	  <div class="spw-row">
1512		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/HHRD-LOGO-h-01-e1723840761902.png" alt="Helping Hands" width="2000" height="2000" loading="lazy" decoding="async"></div>
1513		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/ICNA-Logo-Updated-01.png" alt="ICNA" width="1371" height="1419" loading="lazy" decoding="async"></div>
1514	  </div>
1515	</div>
1516	<div class="spw-item rise" data-size="md">
1517	  <span class="spw-name">Community Partners</span>
1518	  <div class="spw-row" style="flex: auto;">
1519		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/bgr3u4e3lk2t8y_5_n6fj2qt.webp" alt="Dar Elsalam Islamic Center" width="1440" height="1440" loading="lazy" decoding="async"></div>
1520		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/KAPTURE-LOGO-1.png" alt="Kapture Dallas Photo Booth" width="2000" height="2000" loading="lazy" decoding="async"></div>
1521		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/logo27.webp" alt="DAR Coffee" width="1371" height="1419" loading="lazy" decoding="async"></div>
1522		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/[email protected]" alt="Islamaphoia Studies Center" width="1371" height="1419" loading="lazy" decoding="async"></div>
1523		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/[email protected]" alt="Lee Merritt, Esq" width="1371" height="1419" loading="lazy" decoding="async"></div>
1524		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/AZHAR.png" alt="Azhar" width="1371" height="1419" loading="lazy" decoding="async"></div>
1525		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/BarakahGroup-logo-vertical-blue.png" alt="Barakah" width="1371" height="1419" loading="lazy" decoding="async"></div>
1526		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/everypregnancy-logo.svg" alt="Every Pregnancy" width="1371" height="1419" loading="lazy" decoding="async"></div>
1527		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/Food-International-of-Dallas.webp" alt="FID" width="1371" height="1419" loading="lazy" decoding="async"></div>
1528		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/logohoriz.png" alt="Naser Legal" width="1371" height="1419" loading="lazy" decoding="async"></div>
1529		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/NAML-logo.png" alt="NAML" width="1371" height="1419" loading="lazy" decoding="async"></div>
1530		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/OIP-5.webp" alt="Amana Mutual" width="1371" height="1419" loading="lazy" decoding="async"></div>
1531		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/Stearns-Bank.svg" alt="Stearns Bank" width="1371" height="1419" loading="lazy" decoding="async"></div>
1532		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/AMGLogo2025.webp" alt="AMG Counsel" width="1371" height="1419" loading="lazy" decoding="async"></div>
1533		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/logo6f_2_final_nx6hhs.png" alt="Faiza Rehan" width="1371" height="1419" loading="lazy" decoding="async"></div>
1534		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/logo27-1.webp" alt="DAR Coffee" width="1371" height="1419" loading="lazy" decoding="async"></div>
1535		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/MuhsenLogo_CMYK-2.png" alt="Muhsen" width="1371" height="1419" loading="lazy" decoding="async"></div>
1536		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/Pax-Branding-01-6-scaled.png" alt="Pax Beneficia" width="1371" height="1419" loading="lazy" decoding="async"></div>
1537		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/fetefone-logo-white-on-blue-300x300-1.png" alt="Fetefone" width="1371" height="1419" loading="lazy" decoding="async"></div>
1538	  </div>
1539	</div>
1540	<div class="spw-item rise" data-size="sm">
1541	  <span class="spw-name">Grantees</span>
1542	  <div class="spw-row">
1543		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/IDEA_LOGO_HORIZONTAL_FULL.svg" alt="IDEA" width="2000" height="2000" loading="lazy" decoding="async"></div>
1544		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/logo.webp" alt="Muslim for Just Futures" width="1371" height="1419" loading="lazy" decoding="async"></div>
1545		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/WDN_stacked_logo.jpg" alt="Women Donor Network" width="1371" height="1419" loading="lazy" decoding="async"></div>
1546	  </div>
1547	</div>
1548	<div class="spw-item rise" data-size="sm">
1549	  <span class="spw-name">University Partners</span>
1550	  <div class="spw-row">
1551		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/6742.jpg" alt="Columbia Law School" width="2000" height="2000" loading="lazy" decoding="async"></div>
1552		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/UC-Berkeley-Seal-Logo-scaled.png" alt="University of Berkeley" width="1371" height="1419" loading="lazy" decoding="async"></div>
1553		<div class="spw-logo"><img src="https://mlfa.org/wp-content/uploads/2026/09/University_of_Texas_at_Austin_seal.svg.webp" alt="University of Texas at Austin" width="1371" height="1419" loading="lazy" decoding="async"></div>
1554	  </div>
1555	</div>
1556
1557  </div>
1558</section>
1559
1560</main>
1561
1562<!-- The closing section is pinned behind the page: #flow scrolls up off it like a
1563     curtain lifting, and the spacer below gives the scroll room to do it. -->
1564<section id="archive">
1565  <div class="wrap">
1566    <h2 class="rise">Our first 25 deserves to be seen</h2>
1567    <p class="rise">Before we reveal what's next, look back at the moments that brought us here. A curated collection of photographs from last year's banquet, capturing the people, the mission, and the moments that continue to shape MLFA's story.</p>
1568    <a href="https://mlfa.org/25-years-of-mlfa/" target="_blank" rel="noopener" class="btn btn-ghost rise">Explore the Archive</a>
1569  </div>
1570</section>
1571<div class="archive-spacer" aria-hidden="true"></div>
1572
1573<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js"></script>
vendor: 1 bytes, line 1573
1573
1574<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollTrigger.min.js"></script>
vendor: 1 bytes, line 1574
1574
1575<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/SplitText.min.js"></script>
vendor: 1 bytes, line 1575
1575
1576<script src="https://cdnjs.cloudflare.com/ajax/libs/lenis/1.0.42/lenis.min.js"></script>
vendor: 1 bytes, line 1576
1576
1577<script>
1578const SPEAKERS=[
1579  /* flat: client-supplied disc artwork fills the circle as-is (no pop-out) */
1580  {label:"Keynote Address",name:"Alana Hadid",title:"Creative Director, Human Rights Activist &amp; Film Producer",img:"https://mlfa.org/wp-content/uploads/2026/08/Alana-V1.png",w:800,h:834,flat:true,
1581   bio:"A Palestinian woman, international humanitarian, activist, creative, and one of the leading public voices advocating for Palestinian human rights. With a platform of over 1M followers, she uses her power to move justice forward."},
1582  /* announced (client, Sep 17) — nopop keeps the portrait inside the circle */
1583  {label:"Featured Speaker",name:"Ayman Mohyeldin",title:"MS Now Host & Journalist",nopop:true,
1584   img:"https://mlfa.org/wp-content/uploads/2026/08/ayman-gala-profile-1.png",w:800,h:643,imgH:104, bio:"A longtime journalist and MS NOW anchor, he previously hosted the award-winning and acclaimed MS NOW’s “AYMAN,” a weekly news and perspective show that featured world leaders, politicians, newsmakers and more."},   /* imgH: no headroom in the file — head top just over the rim */
1585  {label:"Featured Speaker",name:"Yusuf Omar",title:"Award-Winning Journalist",img:"https://mlfa.org/wp-content/uploads/2026/08/yusuf-1.webp",w:906,h:1100,
1586   bio:"Former war correspondent and award-winning CNN journalist. Co-founded Seen.TV &amp; Seen.Palestine, a groundbreaking Gen Z News Network with an impressive following of 9 million."},
1587  {label:"Opening Remarks",name:"Dr. Hatem Bazian",title:"MLFA Board Chairman &amp; Leading Scholar in Islamophobia Studies",img:"https://mlfa.org/wp-content/uploads/2026/08/hatem-2.webp",w:884,h:1100,
1588   bio:"Scholar, professor, and co-founder of leading institutions studying Islamophobia, Dr. Bazian has spent decades at the intersection of academia and civil-rights advocacy."},
1589  {label:"Fundraising",name:"Imam Muhammad Abdullah",title:"The Imam of the People | Renowned Khatib | Public Speaker",img:"https://mlfa.org/wp-content/uploads/2026/08/abdullah-2.webp",w:872,h:1100,
1590   bio:"A beloved khatib and public speaker known for moving audiences to action, Imam Muhammad Abdullah leads the evening's call to invest in the next 25 years."},
1591  {label:"From Our CEO's Desk",name:"Arshia Ali-Khan, M.A.",title:"MLFA CEO",img:"https://mlfa.org/wp-content/uploads/2026/08/arshia-4.webp",w:938,h:1100,
1592   bio:"At the helm of MLFA, Arshia Ali-Khan has guided the organization's mission to defend constitutional rights — reflecting on where we've been and where we go next."}
1593];
1594(function build(){
1595  const stage=document.getElementById('spkStage'),info=document.getElementById('spkInfo');
1596  SPEAKERS.forEach((s,i)=>{
1597    const c=document.createElement('div');c.className='spk-card'+(s.flat?' flat':'');c.dataset.i=i;
1598    /* same cutout twice = pop-out; nopop/flat draw only the circle-cropped copy */
1599    c.innerHTML=`<span class="circ"><img class="photo" src="${s.img}" alt="${s.name||''}" width="${s.w}" height="${s.h}"${s.imgH?` style="height:${s.imgH}%"`:''} decoding="async"></span>`+
1600      (s.nopop||s.flat?'':`<img class="pop" src="${s.img}" alt="" aria-hidden="true" width="${s.w}" height="${s.h}" decoding="async">`);
1601    stage.appendChild(c);
1602    const sl=document.createElement('div');sl.className='spk-slide'+(i===0?' active':'');
1603    sl.innerHTML=(s.name?`<h3>${s.name}</h3>`:'')+
1604      (s.title?`<div class="title">${s.title}</div>`:'')+
1605      (s.bio?`<p class="bio">${s.bio}</p>`:'');
1606    info.appendChild(sl);
1607  });
1608})();
1609
1610document.addEventListener('DOMContentLoaded',()=>{
1611  const reduce=window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1612  const params=new URLSearchParams(location.search);
1613  const TO=params.get('to');
1614  const FLAT=params.has('flat');
1615  if(FLAT){
1616    const st=document.createElement('style');
1617    st.textContent='#intro{display:none!important}'+
1618      '#hero{min-height:auto!important;height:760px}.spon-hero{min-height:auto!important}'+
1619      '.spk-pin{height:700px!important;min-height:0!important}'+
1620      '.rise{opacity:1!important;transform:none!important}';
1621    document.head.appendChild(st);
1622    document.body.classList.remove('intro-lock');
1623  }
1624
1625  /* INTRO */
1626  const intro=document.getElementById('intro'),vid=document.getElementById('introVid'),prog=document.getElementById('introProg');
1627  let introDone=false;
1628  /* the intro must always hand off to the TOP of the page — on refresh the browser
1629     restores the last scroll position, which dropped skippers mid-page (client bug
1630     report, Jul 31). Owning restoration + jumping while the curtain still covers
1631     the page makes the seam invisible. */
1632  if('scrollRestoration' in history)history.scrollRestoration='manual';
1633  if(!TO&&!FLAT)window.scrollTo(0,0);
1634  function endIntro(){
1635    if(introDone)return;introDone=true;
1636    window.scrollTo(0,0);
1637    intro.style.transition='clip-path 1.1s var(--ease-io),opacity .5s ease .6s';
1638    intro.style.clipPath='inset(0 0 100% 0)';
1639    document.body.classList.remove('intro-lock');
1640    setTimeout(()=>{intro.style.display='none';window.ScrollTrigger&&ScrollTrigger.refresh();},1200);
1641    try{vid.pause();}catch(e){}
1642  }
1643  if(vid){
1644    vid.playbackRate=1.25;   /* "sped it up a bit" — client note, Jul 31 */
1645    vid.addEventListener('timeupdate',()=>{if(vid.duration)prog.style.width=(vid.currentTime/vid.duration*100)+'%';});
1646    vid.addEventListener('ended',endIntro);
1647    vid.play().catch(()=>{});
1648  }
1649  document.getElementById('skipIntro').addEventListener('click',endIntro);
1650  setTimeout(endIntro,8000);
1651  if(reduce)endIntro();
1652  if(TO||FLAT){introDone=true;intro.style.display='none';document.body.classList.remove('intro-lock');}
1653
1654  /* LENIS */
1655  let lenis=null;
1656  if(!reduce && !TO && !FLAT && window.Lenis){
1657    lenis=new Lenis({lerp:.09,wheelMultiplier:1});
1658    if(window.ScrollTrigger){lenis.on('scroll',ScrollTrigger.update);gsap.ticker.add(t=>lenis.raf(t*1000));gsap.ticker.lagSmoothing(0);}
1659    else{const raf=t=>{lenis.raf(t);requestAnimationFrame(raf);};requestAnimationFrame(raf);}
1660  }
1661  function goTo(t){const el=document.querySelector(t);if(!el)return;if(lenis)lenis.scrollTo(el,{offset:-20});else el.scrollIntoView({behavior:'smooth'});}
1662  /* a bare "#" is a placeholder awaiting a real destination — swallow the click so the
1663     browser doesn't yank the page back to the top */
1664  document.querySelectorAll('a[href^="#"]').forEach(a=>a.addEventListener('click',e=>{
1665    const h=a.getAttribute('href');
1666    e.preventDefault();
1667    if(h.length>1)goTo(h);
1668  }));
1669
1670  /* COUNTDOWN — days lead the block (per the copy doc); split-flap clock under it.
1671     Each card carries two static halves plus two flaps: on change the top flap folds
1672     down over the old value, then the bottom flap lands showing the new one. */
1673  const target=new Date('2026-10-03T18:00:00-05:00').getTime();   /* 6 PM CT, per client (Jul 31) */
1674  const D=document.getElementById('cdDays'),CK=document.getElementById('cdClock');
1675  const FLIPS={h:document.getElementById('fH'),m:document.getElementById('fM'),s:document.getElementById('fS')};
1676  function setFlip(el,v){
1677    if(el.dataset.v===v)return;
1678    const old=el.dataset.v??v;
1679    el.dataset.v=v;
1680    el.querySelector('.half.top .digit').textContent=v;
1681    el.querySelector('.half.bottom .digit').textContent=old;
1682    el.querySelector('.flap-top .digit').textContent=old;
1683    el.querySelector('.flap-bottom .digit').textContent=v;
1684    el.classList.remove('flipping');void el.offsetWidth;el.classList.add('flipping');
1685    clearTimeout(el._t);
1686    el._t=setTimeout(()=>{el.querySelector('.half.bottom .digit').textContent=v;el.classList.remove('flipping');},560);
1687  }
1688  (function tick(){
1689    let d=Math.max(0,target-Date.now());
1690    const days=Math.floor(d/864e5); d-=days*864e5;
1691    const h=Math.floor(d/36e5); d-=h*36e5;
1692    const m=Math.floor(d/6e4); d-=m*6e4;
1693    const sec=Math.floor(d/1e3);
1694    const pad=n=>String(n).padStart(2,'0');
1695    D.textContent=days;
1696    setFlip(FLIPS.h,pad(h));setFlip(FLIPS.m,pad(m));setFlip(FLIPS.s,pad(sec));
1697    CK.setAttribute('aria-label',`${days} days, ${pad(h)} hours ${pad(m)} minutes ${pad(sec)} seconds until the gala`);
1698    setTimeout(tick,1000);
1699  })();
1700
1701  /* REVEAL */
1702  const io=new IntersectionObserver((es)=>{es.forEach(en=>{if(en.isIntersecting){en.target.classList.add('in');io.unobserve(en.target);}});},{threshold:.16});
1703  document.querySelectorAll('.rise').forEach(el=>io.observe(el));
1704  document.querySelectorAll('.tright .tcard').forEach((el,i)=>el.style.transitionDelay=(i*80)+'ms');
1705
1706  /* SPEAKERS — copy band above, carousel band below: lead large left, others peeking right */
1707  const cards=[...document.querySelectorAll('.spk-card')],slides=[...document.querySelectorAll('.spk-slide')],
1708        stageEl=document.getElementById('spkStage'),label=document.getElementById('spkLabel'),
1709        prevBtn=document.getElementById('spkPrev'),nextBtn=document.getElementById('spkNext');
1710  let cur=-1;
1711  /* Phones never pin: the pin hijacks the only scroll axis a thumb has, so the section
1712     stays a normal block you scroll past and you swipe the row to change speaker. */
1713  const NOPIN=window.matchMedia('(max-width:820px)').matches;
1714  function layout(active){
1715    active=Math.max(0,Math.min(SPEAKERS.length-1,active));
1716    if(active===cur)return;cur=active;
1717    const vw=window.innerWidth;
1718    const pad=Math.min(Math.max(vw*.05,20),84);
1719    const smallScale=vw<820?.6:.74;
1720    const gapLead=Math.min(vw*.05,96);
1721    const maxLead=vw*(vw<820?.58:.34);                               // keep the lead from eating the row
1722    /* Phones size the portrait first, then collapse the stage onto it. The lead is
1723       width-capped there (58vw), so a stage that kept its full 52vh left ~150px of dead
1724       air between the section title and the top of the head. 1.22 is exactly the pop-out
1725       rise — the img is 122% of the card, bottom-anchored — so the stage ends where the
1726       tallest head does and .spk-head's 28px bottom padding is the whole gap.
1727       Derived from the viewport, never from clientHeight: reading back a height we just
1728       wrote would shrink the portrait a little on every relayout. */
1729    let h;
1730    if(NOPIN){
1731      h=Math.min(Math.min(window.innerHeight*.52,420)/1.26,maxLead);
1732      stageEl.style.height=Math.round(h*1.22)+'px';
1733    }
1734    /* Desktop keeps taking its lead from the pinned stage box: the circle takes ~80% of
1735       it and sits on its floor, and the remaining ~20% is the headroom the pop-outs rise
1736       into, so a popped head tops out just under the section title. */
1737    else h=stageEl.clientHeight/1.26;
1738    cards.forEach(c=>{c.style.height=h+'px';});                      // widths follow each portrait's own ratio
1739    let w=cards.map(c=>c.offsetWidth);
1740    if(w[active]>maxLead){
1741      h=h*maxLead/w[active];
1742      cards.forEach(c=>{c.style.height=h+'px';});
1743      w=cards.map(c=>c.offsetWidth);
1744    }
1745    /* spread the upcoming portraits across whatever width the lead leaves */
1746    const upcoming=cards.map((c,i)=>i).filter(i=>i>active);
1747    const laneStart=pad+w[active]+gapLead, laneEnd=vw-pad*.5;
1748    const upW=upcoming.reduce((t,i)=>t+w[i]*smallScale,0);
1749    const gap=upcoming.length?Math.min(Math.max((laneEnd-laneStart-upW)/upcoming.length,34),170):0;   /* near-constant rhythm as the row shortens */
1750    let cursor=laneStart;
1751    cards.forEach((c,i)=>{
1752      const d=i-active;
1753      let x,sc,op,z;
1754      if(d<0){ x=pad-w[i]*1.3; sc=.5; op=0; z=1; }               // passed: slide off left
1755      else if(d===0){ x=pad; sc=1; op=1; z=5; }                  // lead
1756      else{ x=cursor; sc=smallScale; op=1; z=4-d; cursor+=w[i]*smallScale+gap; }  // upcoming
1757      c.style.transform=`translate(${x}px,0) scale(${sc})`;
1758      c.style.opacity=op; c.style.zIndex=z;
1759    });
1760    slides.forEach((s,i)=>s.classList.toggle('active',i===active));
1761    label.style.opacity=0;setTimeout(()=>{label.textContent=SPEAKERS[active].label;label.style.opacity=1;},160);
1762    prevBtn.disabled=active===0; nextBtn.disabled=active===SPEAKERS.length-1;
1763  }
1764  /* reserve exactly the tallest slide — no more, so the portraits keep the rest */
1765  const info=document.getElementById('spkInfo');
1766  function sizeInfo(){
1767    info.style.minHeight='0';
1768    const tallest=Math.max(...slides.map(s=>s.getBoundingClientRect().height));
1769    info.style.minHeight=Math.ceil(tallest)+'px';
1770  }
1771  sizeInfo();
1772  layout(0);
1773  const relayout=()=>{sizeInfo();const c=cur;cur=-1;layout(c<0?0:c);};
1774  window.addEventListener('resize',relayout);
1775  window.addEventListener('load',relayout);
1776  cards.forEach(c=>{const im=c.querySelector('img');if(im&&!im.complete)im.addEventListener('load',relayout,{once:true});});
1777  prevBtn.addEventListener('click',()=>jump(cur-1));
1778  nextBtn.addEventListener('click',()=>jump(cur+1));
1779  /* tap a peeking portrait to bring it forward — but not when the tap was really a swipe */
1780  let swiped=false;
1781  cards.forEach((c,i)=>{c.style.cursor='pointer';c.addEventListener('click',()=>{if(!swiped)jump(i);});});
1782  function jump(i){
1783    layout(Math.max(0,Math.min(SPEAKERS.length-1,i)));
1784  }
1785  /* ── swipe the row (phones) ──
1786     `touch-action:pan-y` on the stage leaves vertical panning to the browser, so the
1787     page still scrolls normally; the browser fires pointercancel the moment it claims
1788     the gesture, which is exactly when we want to stop tracking. */
1789  if(NOPIN){
1790    let sx=0,sy=0,tracking=false;
1791    stageEl.addEventListener('pointerdown',e=>{tracking=true;swiped=false;sx=e.clientX;sy=e.clientY;});
1792    stageEl.addEventListener('pointerup',e=>{
1793      if(!tracking)return;tracking=false;
1794      const dx=e.clientX-sx,dy=e.clientY-sy;
1795      if(Math.abs(dx)>40&&Math.abs(dx)>Math.abs(dy)){swiped=true;jump(cur+(dx<0?1:-1));}
1796    });
1797    stageEl.addEventListener('pointercancel',()=>{tracking=false;});
1798  }
1799  /* The speakers no longer pin (client ask, Aug 1): the section scrolls past like any
1800     other, and the arrows / portrait taps / swipes drive the carousel. */
1801  if(!reduce && !TO && !FLAT && window.ScrollTrigger){
1802    gsap.to('#hero .hero-media',{yPercent:10,ease:'none',scrollTrigger:{trigger:'#hero',start:'top top',end:'bottom top',scrub:true}});
1803    ScrollTrigger.refresh();
1804  }
1805
1806  /* ── PAGE BACKGROUND FLOW ────────────────────────────────────────────────
1807     One gradient painted on #flow, its stops pinned to where the sections
1808     actually land. Two rules keep it calm: every colour is either an MLFA
1809     green or an MLFA warm, and each green⇄warm crossing is packed into a
1810     short band at a section edge, so you read it as depth rather than a
1811     muddy midpoint. Re-measured on resize and after ScrollTrigger settles,
1812     which matters because pinning the speakers changes the page height.   */
1813  const FLOW=[
1814    /* Navy-only since the Aug 3 palette change — the flow now just breathes between
1815       lighter and deeper navies at the section edges. Interpolated in oklab. */
1816    ['hero',0,'#1d3050'], ['hero',.72,'#16264a'],
1817    ['anniversary',.5,'#0f1c36'], ['anniversary',1,'#16264a'],
1818    /* speakers hold one flat shade end to end — the one the last speaker sits on — so
1819       paging through the carousel never shifts the backdrop */
1820    ['speakers',.5,'#16264a'], ['speakers',.86,'#16264a'],
1821    ['reveal',1,'#0e1a33'],
1822    ['tickets',.45,'#0f1c36'], ['tickets',1,'#1d3050'],
1823    ['vip',.42,'#16264a'], ['vip',1,'#1d3050'],
1824    ['sponsors',.62,'#16264a'], ['sponsors',1,'#0f1c36'],
1825    ['inkind',.45,'#1d3050'], ['inkind',.78,'#16264a'], ['inkind',1,'#16264a'],
1826    ['gala-sponsors',.5,'#16264a'], ['gala-sponsors',1,'#0e1a33'],
1827  ];
1828  /* Solid section colours are the default now. The gradient flow below is kept intact —
1829     add ?flow to the URL (works alongside ?flat) to switch back to it. */
1830  const FLOW_ON=new URLSearchParams(location.search).has('flow');
1831  const flowEl=document.getElementById('flow');
1832  const OKLAB=window.CSS&&CSS.supports&&CSS.supports('background-image','linear-gradient(in oklab,red,blue)');
1833  function paintFlow(){
1834    if(!flowEl)return;
1835    const total=flowEl.offsetHeight;if(!total)return;
1836    const top=flowEl.getBoundingClientRect().top+window.scrollY;
1837    const stops=[];
1838    for(const [id,at,col] of FLOW){
1839      const el=document.getElementById(id); if(!el)continue;
1840      const r=el.getBoundingClientRect();
1841      const y=(r.top+window.scrollY-top)+r.height*at;
1842      stops.push(`${col} ${(y/total*100).toFixed(2)}%`);
1843    }
1844    flowEl.style.backgroundImage=OKLAB
1845      ? `linear-gradient(180deg in oklab,${stops.join(',')})`
1846      : `linear-gradient(180deg,${stops.join(',')})`;
1847  }
1848  if(FLOW_ON){
1849    paintFlow();
1850    window.addEventListener('resize',paintFlow);
1851    window.addEventListener('load',paintFlow);
1852    if(window.ScrollTrigger)ScrollTrigger.addEventListener('refresh',paintFlow);
1853  }else{
1854    document.body.classList.add('solid-bg');
1855  }
1856
1857
1858  /* REDACTION LINE REVEAL — ported from codegrid-landonorris-text-reveal-animation-nextjs
1859     (components/Copy.jsx). Every line starts hidden; a black bar sweeps in from the
1860     left, the text appears behind it, and the bar sweeps out to the right — the page's
1861     redaction motif applied to the copy itself. The #reveal passage is excluded: it has
1862     its own typewriter and painted bars. */
1863  (function lineReveal(){
1864    if(reduce||!window.gsap||!window.SplitText||!window.ScrollTrigger)return;
1865    gsap.registerPlugin(SplitText,ScrollTrigger);
1866    /* line breaks depend on the loaded faces, so measure only once fonts settle */
1867    if(document.fonts&&document.fonts.status!=='loaded'){document.fonts.ready.then(run);}else{run();}
1868    function run(){
1869    /* Per client feedback (Jul 31): the line reveal stays only where it began —
1870       hero, countdown, speakers, archive. Tickets, VIP, both sponsor blocks, and
1871       in-kind read statically. */
1872    const TARGETS=[
1873      '#hero h1','#hero .tag','#hero .date',
1874      '#anniversary h2','#anniversary .lede p',
1875      '.spk-slide h3','.spk-slide .title','.spk-slide .bio',
1876      '#archive h2','#archive p'
1877    ].join(',');
1878    const DUR=.55,STAG=.12;
1879    document.querySelectorAll(TARGETS).forEach(el=>{
1880      if(el.closest('#reveal'))return;
1881      const split=SplitText.create(el,{type:'lines',linesClass:'block-line',lineThreshold:.1});
1882      if(!split.lines.length)return;
1883      const tls=[];
1884      split.lines.forEach(line=>{
1885        const wrap=document.createElement('div');wrap.className='block-line-wrapper';
1886        line.parentNode.insertBefore(wrap,line);wrap.appendChild(line);
1887        const block=document.createElement('div');block.className='block-revealer';
1888        wrap.appendChild(block);
1889        gsap.set(line,{opacity:0});
1890        gsap.set(block,{scaleX:0,transformOrigin:'left center'});
1891        const tl=gsap.timeline({paused:true});
1892        tl.to(block,{scaleX:1,duration:DUR,ease:'power4.inOut'});
1893        tl.set(line,{opacity:1});
1894        tl.set(block,{transformOrigin:'right center'});
1895        tl.to(block,{scaleX:0,duration:DUR,ease:'power4.inOut'});
1896        tls.push(tl);
1897      });
1898      /* the closing section is position:fixed, so it never travels past a start
1899         marker of its own — trigger it off the spacer that scrolls in its place */
1900      const trigger=el.closest('#archive')?document.querySelector('.archive-spacer'):el;
1901      ScrollTrigger.create({trigger:trigger,start:el.closest('#archive')?'top 65%':'top 85%',once:true,
1902        onEnter:()=>tls.forEach((tl,i)=>gsap.delayedCall(i*STAG,()=>tl.play()))});
1903    });
1904    document.body.classList.add('line-reveal');
1905    ScrollTrigger.refresh();
1906    }
1907  })();
1908
1909  /* REDACTION TYPEWRITER — types once, the first time the passage scrolls in */
1910  (function typer(){
1911    const el=document.getElementById('revealType');if(!el)return;
1912    const text=el.dataset.text||'';
1913    const caret='<span class="cursor" aria-hidden="true"></span>';
1914    el.setAttribute('aria-label',text);
1915    if(reduce){el.textContent=text;el.classList.add('done');return;}
1916    el.innerHTML=caret;
1917    let i=0,timer=null;
1918    const esc=t=>t.replace(/&/g,'&amp;').replace(/</g,'&lt;');
1919    function step(){
1920      i++;
1921      el.innerHTML=esc(text.slice(0,i))+caret;
1922      if(i>=text.length){el.classList.add('done');return;}
1923      /* pause a beat on sentence ends so it reads like a transmission */
1924      const ch=text[i-1];
1925      timer=setTimeout(step,ch==='.'?420:ch===','?120:18+Math.round(Math.random()*22));
1926    }
1927    new IntersectionObserver((es,ob)=>{
1928      if(es[0].isIntersecting){ob.disconnect();step();}
1929    },{threshold:.3}).observe(el);
1930  })();
1931
1932  /* ACCORDION */
1933  const acc=document.getElementById('acc');
1934  acc.querySelectorAll('.acc-item').forEach(item=>{
1935    const btn=item.querySelector('.acc-btn'),panel=item.querySelector('.acc-panel');
1936    if(item.classList.contains('open'))panel.style.maxHeight=panel.scrollHeight+'px';
1937    btn.addEventListener('click',()=>{
1938      const open=item.classList.contains('open');
1939      acc.querySelectorAll('.acc-item').forEach(o=>{o.classList.remove('open');o.querySelector('.acc-panel').style.maxHeight='0';});
1940      if(!open){item.classList.add('open');panel.style.maxHeight=panel.scrollHeight+'px';}
1941      setTimeout(()=>window.ScrollTrigger&&ScrollTrigger.refresh(),520);
1942    });
1943  });
1944
1945  /* ── SECTION MENU — draggable dock ──────────────────────────────────────
1946     Ported from ~/Projects/timeline/immersive/nav.js: a fixed pill drawer with a
1947     hamburger toggler, draggable around the viewport with a snap-back drop zone
1948     at home. Vanilla pointer-drag (no GSAP Draggable); GSAP only drives the item
1949     stagger. Lives inside this handler so it can reuse `lenis`.                */
1950  (function sectionMenu(){
1951    /* 25 Years, The Evening, The Reveal, and Archive were dropped from the menu at
1952       the client's request (The Evening section is gone entirely) */
1953    const SECTIONS=[
1954      {label:'Top',        sel:null, top:true},
1955      {label:'Speakers',   sel:'#speakers'},
1956      {label:'Tickets',    sel:'#tickets'},
1957      {label:'VIP',        sel:'#vip'},
1958      {label:'Sponsorships',sel:'#sponsors'},
1959      {label:'In-Kind',    sel:'#inkind'},
1960      {label:'Our Sponsors',sel:'#gala-sponsors'}
1961    ];
1962
1963    /* drop zone — a separate fixed element that stays at "home" while the dock is
1964       dragged away (the dock carries a transform; this must not) */
1965    const dropZone=document.createElement('div');
1966    dropZone.className='nav-drop-zone';dropZone.setAttribute('aria-hidden','true');
1967    document.body.appendChild(dropZone);
1968
1969    const dock=document.createElement('nav');
1970    dock.id='anchorNav';dock.className='nav-dock';dock.setAttribute('aria-label','Section menu');
1971    dock.innerHTML=
1972      '<button class="nav-toggler" type="button" aria-label="Open section menu" aria-expanded="false">'+
1973        '<span class="nav-ico" aria-hidden="true"><span></span><span></span></span>'+
1974        '<span class="nav-label">Menu</span>'+
1975      '</button>'+
1976      '<div class="nav-items">'+SECTIONS.map((s,i)=>
1977        '<div class="nav-item" data-i="'+i+'"><a href="'+(s.sel||'#')+'">'+s.label+'</a></div>').join('')+
1978      '</div>';
1979    document.body.appendChild(dock);
1980
1981    const toggler=dock.querySelector('.nav-toggler');
1982    const itemEls=[...dock.querySelectorAll('.nav-item')];
1983
1984    /* ---------- open / close ---------- */
1985    let open=false;
1986    function setOpen(v){
1987      open=v;
1988      dock.classList.toggle('open',open);
1989      toggler.classList.toggle('close',open);
1990      toggler.setAttribute('aria-expanded',open?'true':'false');
1991      toggler.setAttribute('aria-label',open?'Close section menu':'Open section menu');
1992      if(window.gsap&&!reduce)gsap.to(itemEls,{opacity:open?1:0,y:open?0:8,scale:open?1:.9,
1993        duration:.3,stagger:{each:.04,from:open?'start':'end'},ease:'power3.out',delay:open?.1:0});
1994    }
1995    if(window.gsap&&!reduce)gsap.set(itemEls,{opacity:0,y:8,scale:.9});
1996
1997    /* ---------- scroll to a section (resolved lazily, so mount order can't bite) ---------- */
1998    itemEls.forEach(item=>{
1999      const s=SECTIONS[+item.dataset.i];
2000      item.querySelector('a').addEventListener('click',e=>{
2001        e.preventDefault();
2002        if(s.top){ lenis?lenis.scrollTo(0):window.scrollTo({top:0,behavior:'smooth'}); }
2003        else{
2004          const el=document.querySelector(s.sel);
2005          if(!el)return;
2006          if(lenis)lenis.scrollTo(el,{offset:0});
2007          else el.scrollIntoView({behavior:'smooth',block:'start'});
2008        }
2009        setOpen(false);
2010      });
2011      if(s.sel&&!document.querySelector(s.sel))item.style.display='none';
2012    });
2013    document.addEventListener('keydown',e=>{if(e.key==='Escape'&&open)setOpen(false);});
2014
2015    /* ---------- toggler: tap = open/close, drag = move the dock ---------- */
2016    const SNAP=170,MOVE=6;
2017    let dragging=false,moved=false,sx=0,sy=0,ox=0,oy=0,tx=0,ty=0;
2018    toggler.addEventListener('pointerdown',e=>{
2019      dragging=true;moved=false;sx=e.clientX;sy=e.clientY;ox=tx;oy=ty;
2020      try{toggler.setPointerCapture(e.pointerId);}catch(_){}
2021    });
2022    toggler.addEventListener('pointermove',e=>{
2023      if(!dragging)return;
2024      const dx=e.clientX-sx,dy=e.clientY-sy;
2025      if(!moved&&Math.abs(dx)+Math.abs(dy)>MOVE){moved=true;dock.classList.add('dragging');}
2026      if(!moved)return;
2027      tx=ox+dx;ty=oy+dy;
2028      dock.style.transform=`translate(${tx}px,${ty}px)`;
2029      dropZone.style.opacity=(Math.abs(tx)<SNAP&&Math.abs(ty)<SNAP)?'1':'0';
2030    });
2031    function endDrag(){
2032      if(!dragging)return;
2033      dragging=false;
2034      dock.classList.remove('dragging');
2035      dropZone.style.opacity='0';
2036      /* released near home → snap back. The CSS transition animates it, because
2037         `.dragging` (which kills the transition) has just come off. */
2038      if(!moved)setOpen(!open);
2039      else if(Math.abs(tx)<SNAP&&Math.abs(ty)<SNAP){tx=0;ty=0;dock.style.transform='';}
2040    }
2041    toggler.addEventListener('pointerup',endDrag);
2042    toggler.addEventListener('pointercancel',endDrag);
2043
2044    /* ---------- visibility + current section ----------
2045       Hidden over the hero only — there is nothing above it to navigate back to.
2046       From the countdown down it stays up on every section; the elements that share
2047       this corner (the slider's controls, the speaker copy) are held clear in CSS
2048       rather than the dock ducking out of the way. */
2049    const hero=document.getElementById('hero');
2050    let raf=null;
2051    function update(){
2052      raf=null;
2053      const vh=window.innerHeight;
2054      const show=hero?hero.getBoundingClientRect().bottom<vh*.6:true;
2055      dock.classList.toggle('nav-hidden',!show);
2056      if(!show&&open)setOpen(false);
2057      /* mark whichever section owns the middle of the viewport */
2058      let here=-1;
2059      itemEls.forEach((item,i)=>{
2060        const s=SECTIONS[i];if(!s.sel)return;
2061        const el=document.querySelector(s.sel);if(!el)return;
2062        const r=el.getBoundingClientRect();
2063        if(r.top<=vh*.5&&r.bottom>vh*.5)here=i;
2064      });
2065      itemEls.forEach((item,i)=>item.classList.toggle('here',i===here));
2066    }
2067    const queue=()=>{if(!raf)raf=requestAnimationFrame(update);};
2068    update();
2069    window.addEventListener('scroll',queue,{passive:true});
2070    window.addEventListener('resize',queue,{passive:true});
2071    if(lenis)lenis.on('scroll',queue);
2072  })();
2073
2074  /* QA scroll target */
2075  if(TO){const el=document.getElementById(TO);if(el){const s=()=>window.scrollTo(0,el.getBoundingClientRect().top+window.pageYOffset);s();setTimeout(s,400);setTimeout(s,900);}}
2076});
2077</script>
2077
2078
2079
2080<footer id="colophon" class="site-footer wrapper">
2081	<div class="flex-container">
2082		<div class="footer-main">
2083			<div class="flex-row">
2084				<div class="columns info-col">
2085					<div class="inner-col">
2086						<div class="footer-logo">
2087							<a href="https://mlfa.org/home/">
2088								<img width="1600" height="364" src="https://mlfa.org/wp-content/uploads/2026/02/[email protected]" class="attachment-full size-full" alt="" decoding="async" srcset="https://mlfa.org/wp-content/uploads/2026/02/[email protected] 1600w, https://mlfa.org/wp-content/uploads/2026/02/[email protected] 300w, https://mlfa.org/wp-content/uploads/2026/02/[email protected] 1024w, https://mlfa.org/wp-content/uploads/2026/02/[email protected] 768w, https://mlfa.org/wp-content/uploads/2026/02/[email protected] 1536w" sizes="(max-width: 1600px) 100vw, 1600px" />							</a>
2089
2090						</div>
2091						<div class="footer-description">
2092							<p>
2093								MLFA is a 501(c)(3) nonprofit organization (EIN: 01-0548371) with top rated standards of transparency and certified zakat eligible. 							</p>
2094						</div>
2095						<div class="certification-logo-main">
2096															<div class="certified-logo-main row">
2097																			<div class="certify-col">
2098
2099											<a href="https://greatnonprofits.org/org/muslim-legal-fund-of-america">
2100
2101												<img width="674" height="650" src="https://mlfa.org/wp-content/uploads/2026/02/2025GreatNon-Profit-2025-Top-Rated-Seal.png" class="attachment-full size-full" alt="" decoding="async" srcset="https://mlfa.org/wp-content/uploads/2026/02/2025GreatNon-Profit-2025-Top-Rated-Seal.png 674w, https://mlfa.org/wp-content/uploads/2026/02/2025GreatNon-Profit-2025-Top-Rated-Seal-300x289.png 300w" sizes="(max-width: 674px) 100vw, 674px" />
2102											</a>
2103
2104										</div>
2105																			<div class="certify-col">
2106
2107											<a href="https://www.charitynavigator.org/ein/010548371">
2108
2109												<img width="1536" height="1536" src="https://mlfa.org/wp-content/uploads/2023/04/3.png" class="attachment-full size-full" alt="3" decoding="async" srcset="https://mlfa.org/wp-content/uploads/2023/04/3.png 1536w, https://mlfa.org/wp-content/uploads/2023/04/3-300x300.png 300w, https://mlfa.org/wp-content/uploads/2023/04/3-1024x1024.png 1024w, https://mlfa.org/wp-content/uploads/2023/04/3-150x150.png 150w, https://mlfa.org/wp-content/uploads/2023/04/3-768x768.png 768w" sizes="(max-width: 1536px) 100vw, 1536px" />
2110											</a>
2111
2112										</div>
2113																			<div class="certify-col">
2114
2115											<a href="https://www.guidestar.org/profile/shared/759e42f7-04b0-4e6d-ae82-66e49348c492">
2116
2117												<img width="676" height="676" src="https://mlfa.org/wp-content/uploads/2026/02/Candid-Seal-2026.png" class="attachment-full size-full" alt="" decoding="async" srcset="https://mlfa.org/wp-content/uploads/2026/02/Candid-Seal-2026.png 676w, https://mlfa.org/wp-content/uploads/2026/02/Candid-Seal-2026-300x300.png 300w, https://mlfa.org/wp-content/uploads/2026/02/Candid-Seal-2026-150x150.png 150w, https://mlfa.org/wp-content/uploads/2026/02/Candid-Seal-2026-560x560.png 560w" sizes="(max-width: 676px) 100vw, 676px" />
2118											</a>
2119
2120										</div>
2121																			<div class="certify-col">
2122
2123											<a href="https://mlfa.org/our-financials/">
2124
2125												<img width="99" height="99" src="https://mlfa.org/wp-content/uploads/2023/04/undefined-Imgur-5.png" class="attachment-full size-full" alt="undefined - Imgur (5)" decoding="async" />
2126											</a>
2127
2128										</div>
2129																			<div class="certify-col">
2130
2131											<a href="https://give.org/charity-reviews/civil-rights/muslim-legal-fund-of-america-in-richardson-tx-9999-21582">
2132
2133												<img width="337" height="325" src="https://mlfa.org/wp-content/uploads/2026/08/2023-AccreditedSeal-WEB-Vertical-White.png" class="attachment-full size-full" alt="" decoding="async" srcset="https://mlfa.org/wp-content/uploads/2026/08/2023-AccreditedSeal-WEB-Vertical-White.png 337w, https://mlfa.org/wp-content/uploads/2026/08/2023-AccreditedSeal-WEB-Vertical-White-300x289.png 300w" sizes="(max-width: 337px) 100v
2133w, 337px" />
2134											</a>
2135
2136										</div>
2137																	</div>
2138													</div>
2139					</div>
2140				</div>
2141				<div class="columns menu-col">
2142					<div class="inner-col">
2143						<div class="row inner-row ">
2144							<div class="col-lg-4">
2145								<div class="footer-menu-main">
2146									<div class="list-title">
2147										<h4>Quick Links</h4>
2148									</div>
2149									<div class="footer-menu-wrap">
2150										<div class="menu-quick-links-container"><ul id="footer-quick-links-menu" class="menu"><li id="menu-item-11860" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-11860"><a href="https://mlfa.org/">Home</a></li>
2151<li id="menu-item-379" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-379"><a href="/our-story/">Our Story</a></li>
2152<li id="menu-item-380" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-380"><a href="/missions/">Our Mission</a></li>
2153<li id="menu-item-9111" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9111"><a href="/our-cases/">Our Cases</a></li>
2154<li id="menu-item-9250" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9250"><a href="/application-for-legal-assistance/">Apply for Help</a></li>
2155</ul></div>									</div>
2156								</div>
2157							</div>
2158							<div class="col-lg-4">
2159								<div class="footer-menu-main">
2160									<div class="list-title">
2161										<h4>Resources</h4>
2162									</div>
2163									<div class="footer-menu-wrap">
2164										<div class="menu-resources-container"><ul id="footer-resources-menu" class="menu"><li id="menu-item-9177" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9177"><a href="https://mlfa.org/blog-news/">News &#038; Commentary</a></li>
2165<li id="menu-item-384" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-384"><a href="https://mlfa.org/video/">Videos</a></li>
2166<li id="menu-item-385" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-385"><a href="https://mlfa.org/book-club/">Bookclub</a></li>
2167<li id="menu-item-18628" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18628"><a href="https://mlfa.org/giving-funds/">Giving Funds</a></li>
2168<li id="menu-item-18630" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18630"><a href="https://mlfa.org/giving-funds#zakat">Zakat Verified</a></li>
2169</ul></div>									</div>
2170								</div>
2171							</div>
2172							<div class="col-lg-4">
2173								<div class="footer-menu-main">
2174									<div class="list-title">
2175										<h4>List of issues</h4>
2176									</div>
2177									<div class="footer-menu-wrap">
2178										<div class="menu-list-out-issues-container"><ul id="footer-issues-menu" class="menu"><li id="menu-item-386" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-386"><a href="https://mlfa.org/issue-no-fly-list/">No Fly Lists</a></li>
2179<li id="menu-item-387" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-387"><a href="https://mlfa.org/issue-fbi-undercover-sting-operations/">FBI Sting Ops.</a></li>
2180<li id="menu-item-388" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-388"><a href="https://mlfa.org/issue-ssss-watchlist/">SSSS/Watchlist</a></li>
2181<li id="menu-item-389" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-389"><a href="https://mlfa.org/issue-federal-court-litigation-for-delayed-denied-applications/">Denied/Delayed Immigration</a></li>
2182<li id="menu-item-390" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-390"><a href="https://mlfa.org/issue-fbi-informants-surveillance/">FBI Informants</a></li>
2183</ul></div>									</div>
2184								</div>
2185							</div>
2186						</div>
2187						<div class="footer-search-main">
2188							<div class="footer-search-box">
2189								<form role="search" method="get" class="search-form" action="https://mlfa.org/">
2190				<label>
2191					<span class="screen-reader-text">Search for:</span>
2192					<input type="search" class="search-field" placeholder="Search &hellip;" value="" name="s" />
2193				</label>
2194				<input type="submit" class="search-submit" value="Search" />
2195			</form>							</div>
2196						</div>
2197					</div>
2198				</div>
2199				<div class="columns contact-col">
2200					<div class="inner-col contact-info-col">
2201						<div class="list-title">
2202							<h4>Contact Us</h4>
2203						</div>
2204													<div class="contact-menu">
2205																	<div class="contact-item">
2206										<div class="contact-icon">
2207											<img src="https://mlfa.org/wp-content/uploads/2022/11/address.svg" class="attachment-full size-full" alt="address" decoding="async" />										</div>
2208										<div class="contact-title">
2209											 Address										</div>
2210										<div class="contact-description">
2211											<a href="https://maps.app.goo.gl/LaK7zCvdeXpTiVh27">
2212												<address>100 N. Central Expy, Suite 1010 Richardson, TX 75080 </address>											</a>
2213										</div>
2214									</div>
2215																	<div class="contact-item">
2216										<div class="contact-icon">
2217											<img src="https://mlfa.org/wp-content/uploads/2022/11/email.svg" class="attachment-full size-full" alt="email" decoding="async" />										</div>
2218										<div class="contact-title">
2219											General Inquiry										</div>
2220										<div class="contact-description">
2221											<a href="/cdn-cgi/l/email-protection#91f8fff7fed1fcfdf7f0bffee3f6">
2222												<span class="__cf_email__" data-cfemail="b5dcdbd3daf5d8d9d3d49bdac7d2">[email&#160;protected]</span>											</a>
2223										</div>
2224									</div>
2225																	<div class="contact-item">
2226										<div class="contact-icon">
2227											<img src="https://mlfa.org/wp-content/uploads/2022/11/email.svg" class="attachment-full size-full" alt="email" decoding="async" />										</div>
2228										<div class="contact-title">
2229											Media Press Inquiries										</div>
2230										<div class="contact-description">
2231											<a href="/cdn-cgi/l/email-protection#0b666e6f626a4b66676d6a2564796c">
2232												<span class="__cf_email__" data-cfemail="ec818988858dac81808a8dc2839e8b">[email&#160;protected]</span>											</a>
2233										</div>
2234									</div>
2235																	<div class="contact-item">
2236										<div class="contact-icon">
2237											<img src="https://mlfa.org/wp-content/uploads/2022/11/email.svg" class="attachment-full size-full" alt="email" decoding="async" />										</div>
2238										<div class="contact-title">
2239											Training &amp; Education										</div>
2240										<div class="contact-description">
2241											<a href="/cdn-cgi/l/email-protection#790d0b18101710171e3914151f1857160b1e">
2242												<span class="__cf_email__" data-cfemail="483c3a29212621262f0825242e2966273a2f">[email&#160;protected]</span>											</a>
2243										</div>
2244									</div>
2245																	<div class="contact-item">
2246										<div class="contact-icon">
2247											<img src="https://mlfa.org/wp-content/uploads/2022/11/Call.svg" class="attachment-full size-full" alt="Call" decoding="async" />										</div>
2248										<div class="contact-title">
2249											Phone										</div>
2250										<div class="contact-description">
2251											<a href="tel:9723319021">
2252												(972) 331-9021											</a>
2253										</div>
2254									</div>
2255															</div>
2256												<div class="footer-donate">
2257															<a class="donate-btn" href="/donate" target="_self">
2258									<span>Donate Today</span> <img src="https://mlfastg.wpengine.com/wp-content/uploads/2022/11/dark-heart-icon.svg" alt="">
2259								</a>
2260													</div>
2261					</div>
2262				</div>
2263			</div>
2264
2265		</div>
2266		<div class="footer-bottom-bar">
2267			<div class="flex-row justify-content-between align-items-center">
2268				<div class="columns">
2269					<div class="inner-col copy-right-text">
2270						<p>Copyright © 2023 MLFA - All Rights Reserved  <span class="px-2">|</span>  <a href="https://mlfa.org/privacy-policy">Privacy</a>  <span class="px-2">|</span>  <a href="https://mlfa.org/terms-and-conditions/">Terms</a>  <span class="px-2">|</span>  <a href="https://mlfa.org/cookie-policy/">Cookies</a>  <span class="px-2">|</span>  <a href="#" class="termly-display-preferences">Preferences</a></p>
2271					</div>
2272				</div>
2273				<div class="columns">
2274					<div class="inner-col">
2275													<ul class="socialmenu">
2276																	<li class="social-item">
2277										<a href="https://www.facebook.com/muslimlegalfund" target="_blank">
2278											<img src="https://mlfa.org/wp-content/uploads/2022/11/facebook.svg" class="attachment-full size-full" alt="facebook" decoding="async" />										</a>
2279									</li>
2280																	<li class="social-item">
2281										<a href="https://twitter.com/MLFA" target="_blank">
2282											<img src="https://mlfa.org/wp-content/uploads/2022/11/twitter.svg" class="attachment-full size-full" alt="twitter" decoding="async" />										</a>
2283									</li>
2284																	<li class="social-item">
2285										<a href="https://www.instagram.com/muslimlegalfund/" target="_blank">
2286											<img src="https://mlfa.org/wp-content/uploads/2022/11/instagram.svg" class="attachment-full size-full" alt="instagram" decoding="async" />										</a>
2287									</li>
2288																	<li class="social-item">
2289										<a href="https://www.youtube.com/mlfavideos" target="_blank">
2290											<img src="https://mlfa.org/wp-content/uploads/2022/11/youtube.svg" class="attachment-full size-full" alt="youtube" decoding="async" />										</a>
2291									</li>
2292															</ul>
2293											</div>
2294				</div>
2295			</div>
2296		</div>
2297	</div>
2298</footer><!-- #colophon -->
2299</main><!-- #page -->
vendor: 110 bytes, lines 2299-2301
2299
2300
2301<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2301<script>
2302	(function(win) {
2303		win.egProps = {
2304			campaigns: [{
2305				campaignId: '476373',
2306				customDomain: 'support.mlfa.org',
2307				donation: {
2308					inline: {
2309						urlParams: {},
2310						elementSelector: '.classy-inline-embed'
2311					}
2312				}
2313			}]
2314		}
2315
2316		win.document.body.appendChild(makeEGScript())
2317
2318		/**
2319		 * Create the embed script
2320		 */
2321		function makeEGScript() {
2322			var egScript = win.document.createElement('script')
2323			egScript.setAttribute('type', 'text/javascript')
2324			egScript.setAttribute('async', 'true')
2325			egScript.setAttribute('src', 'https://sdk.classy.org/embedded-giving.js')
2326
2327			return egScript
2328		}
2329
2330		/**
2331		 * Read URL Params from your website. This could potentially
2332		 * be included in the embed snippet
2333		 */
2334		function readURLParams() {
2335			const searchParams = new URLSearchParams(location.search)
2336
2337			const validUrlParams = ['c_src', 'c_src2']
2338
2339			return validUrlParams.reduce(function toURLParamsMap(urlParamsSoFar, validKey) {
2340				const value = searchParams.get(validKey)
2341				return value === null ? urlParamsSoFar : {
2342					...urlParamsSoFar,
2343					[validKey]: value
2344				}
2345			}, {})
2346		}
2347	})(window)
2348</script>
vendor: 1 bytes, line 2348
2348
2349<script>
2350	jQuery(document).ready(function($) {
2351		$('.count').each(function() {
2352			$(this).prop('Counter', 0).animate({
2353				Counter: $(this).text()
2354			}, {
2355				duration: 8000,
2356				easing: 'swing',
2357				step: function(now) {
2358					$(this).text(Math.ceil(now));
2359				}
2360			});
2361		});
2362	});
2363</script>
vendor: 1 bytes, line 2363
2363
2364<script type="speculationrules">
2365{"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/mlfa/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
2366</script>
2366
2367			
2367<script>
2368				const lazyloadRunObserver = () => {
2369					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
2370					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
2371						entries.forEach( ( entry ) => {
2372							if ( entry.isIntersecting ) {
2373								let lazyloadBackground = entry.target;
2374								if( lazyloadBackground ) {
2375									lazyloadBackground.classList.add( 'e-lazyloaded' );
2376								}
2377								lazyloadBackgroundObserver.unobserve( entry.target );
2378							}
2379						});
2380					}, { rootMargin: '200px 0px 200px 0px' } );
2381					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
2382						lazyloadBackgroundObserver.observe( lazyloadBackground );
2383					} );
2384				};
2385				const events = [
2386					'DOMContentLoaded',
2387					'elementor/lazyload/observe',
2388				];
2389				events.forEach( ( event ) => {
2390					document.addEventListener( event, lazyloadRunObserver );
2391				} );
2392			</script>
2392
2393				<div id="fb-root"></div>
2394	
2394<script id="wp-hooks-js" src="https://mlfa.org/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 2394
2394
2395<script id="wp-i18n-js" src="https://mlfa.org/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 2395
2395
2396<script id="wp-i18n-js-after">
2397wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
2398//# sourceURL=wp-i18n-js-after
2399</script>
vendor: 1 bytes, line 2399
2399
2400<script id="swv-js" src="https://mlfa.org/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.6"></script>
vendor: 1 bytes, line 2400
2400
2401<script id="contact-form-7-js-before">
2402var wpcf7 = {
2403    "api": {
2404        "root": "https:\/\/mlfa.org\/wp-json\/",
2405        "namespace": "contact-form-7\/v1"
2406    },
2407    "cached": 1
2408};
2409//# sourceURL=contact-form-7-js-before
2410</script>
vendor: 1 bytes, line 2410
2410
2411<script id="contact-form-7-js" src="https://mlfa.org/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.6"></script>
vendor: 1 bytes, line 2411
2411
2412<script id="powertip-js" src="https://mlfa.org/wp-content/plugins/devvn-image-hotspot/frontend/js/jquery.powertip.min.js?ver=1.2.0"></script>
vendor: 1 bytes, line 2412
2412
2413<script id="maps-points-js" src="https://mlfa.org/wp-content/plugins/devvn-image-hotspot/frontend/js/maps_points.js?ver=1.3.0"></script>
vendor: 1 bytes, line 2413
2413
2414<script id="audioigniter-js-extra">
2415var aiStrings = {"play_title":"Play %s","pause_title":"Pause %s","previous":"Previous track","next":"Next track","toggle_list_repeat":"Toggle track listing repeat","toggle_track_repeat":"Toggle track repeat","toggle_list_visible":"Toggle track listing visibility","buy_track":"Buy this track","download_track":"Download this track","volume_up":"Volume Up","volume_down":"Volume Down","open_track_lyrics":"Open track lyrics","set_playback_rate":"Set playback rate","skip_forward":"Skip forward","skip_backward":"Skip backward","shuffle":"Shuffle"};
2416var aiStats = {"enabled":"","apiUrl":"https://mlfa.org/wp-json/audioigniter/v1"};
2417//# sourceURL=audioigniter-js-extra
2418</script>
vendor: 1 bytes, line 2418
2418
2419<script id="audioigniter-js" src="https://mlfa.org/wp-content/plugins/audioigniter/player/build/app.js?ver=2.0.4"></script>
vendor: 1 bytes, line 2419
2419
2420<script id="mlfa-navigation-js" src="https://mlfa.org/wp-content/themes/mlfa/js/navigation.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2420
2420
2421<script id="slider_scripts-js" src="https://mlfa.org/wp-content/themes/mlfa/assets/js/swiper-bundle.min.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2421
2421
2422<script id="slick_js-js" src="https://mlfa.org/wp-content/themes/mlfa/assets/js/slick.min.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2422
2422
2423<script id="custom_js-js" src="https://mlfa.org/wp-content/themes/mlfa/assets/js/scripts.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2423
2423
2424<script id="the_champ_ss_general_scripts-js" src="https://mlfa.org/wp-content/plugins/super-socializer/js/front/social_login/general.js?ver=7.14.5"></script>
vendor: 1 bytes, line 2424
2424
2425<script id="the_champ_fb_sdk-js" src="https://mlfa.org/wp-content/plugins/super-socializer/js/front/facebook/sdk.js?ver=7.14.5"></script>
vendor: 1 bytes, line 2425
2425
2426<script id="the_champ_fb_commenting-js" src="https://mlfa.org/wp-content/plugins/super-socializer/js/front/facebook/commenting.js?ver=7.14.5"></script>
vendor: 1 bytes, line 2426
2426
2427<script id="the_champ_share_counts-js" src="https://mlfa.org/wp-content/plugins/super-socializer/js/front/sharing/sharing.js?ver=7.14.5"></script>
vendor: 1 bytes, line 2427
2427
2428<script id="wpcf7cf-scripts-js-extra">
2429var wpcf7cf_global_settings = {"ajaxurl":"https://mlfa.org/wp-admin/admin-ajax.php"};
2430//# sourceURL=wpcf7cf-scripts-js-extra
2431</script>
vendor: 1 bytes, line 2431
2431
2432<script id="wpcf7cf-scripts-js" src="https://mlfa.org/wp-content/plugins/cf7-conditional-fields/js/scripts.js?ver=2.7.10"></script>
vendor: 1 bytes, line 2432
2432
2433<script id="eael-general-js-extra">
2434var localize = {"ajaxurl":"https://mlfa.org/wp-admin/admin-ajax.php","nonce":"52c83b06ef","i18n":{"added":"Added ","compare":"Compare","loading":"Loading..."},"eael_translate_text":{"required_text":"is a required field","invalid_text":"Invalid","billing_text":"Billing","shipping_text":"Shipping","fg_mfp_counter_text":"of"},"page_permalink":"https://mlfa.org/gala/","cart_redirectition":"","cart_page_url":"","el_breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}}};
2435//# sourceURL=eael-general-js-extra
2436</script>
vendor: 1 bytes, line 2436
2436
2437<script id="eael-general-js" src="https://mlfa.org/wp-content/plugins/essential-addons-for-elementor-lite/assets/front-end/js/view/general.min.js?ver=6.6.11"></script>
vendor: 1 bytes, line 2437
2437
2438<script id="wp-emoji-settings" type="application/json">
2439{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://mlfa.org/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
2440</script>
vendor: 1 bytes, line 2440
2440
2441<script type="module">
2442/*! This file is auto-generated */
2443var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
2444//# sourceURL=https://mlfa.org/wp-includes/js/wp-emoji-loader.min.js
2445</script>
2445
2446</body>
2447
2448</html>
2449
2450<!-- Cache served by breeze CACHE - Last modified: Sat, 03 Oct 2026 05:13:50 GMT -->

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.