PageSourceSearch

https://clean-energy.webflow.io/

html clean-energy.webflow.io collected 2026-10-03 12:54:22 UTC 78,876 bytes, 865 lines download raw bytes

1<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Thu Jul 03 2025 18:29:36 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="clean-energy.webflow.io" data-wf-page="6138d6c43a0782193912d841" data-wf-site="6138d6c43a0782018b12d83d"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Clean Energy Conversions Lab</title><meta content="Home of the research lab of Jennifer Wilcox. Our research focuses on minimizing the environmental and climate impacts of our dependence on fossil fuels." name="description"/><meta content="Clean Energy Conversions Lab" property="og:title"/><meta content="Home of the research lab of Jennifer Wilcox. Our research focuses on minimizing the environmental and climate impacts of our dependence on fossil fuels." property="og:description"/><meta content="Clean Energy Conversions Lab" name="twitter:title"/><meta content="Home of the research lab of Jennifer Wilcox. Our research focuses on minimizing the environmental and climate impacts of our dependence on fossil fuels." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/css/clean-energy.webflow.shared.d274f4ab4.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({  google: {    families: ["Open Sans:300,300italic,400,400italic,600,600italic,700,700italic,800,800italic","Roboto:300,300italic,regular,italic,700,700italic","Roboto:regular,500,500italic"]  }});</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/61424dd347c98a3693e20844_Favicon%2032%20%C3%97%2032.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/61424dcfff88e82c704054d4_Favicon%20256%20%C3%97%20256.png" rel="apple-touch-icon"/>
vendor: 66 bytes, line 1
1<script async="" src="https://www.googletagmanager.com/gtag/js?id=
1UA-219951732-1
vendor: 11 bytes, line 1
1"></script>
1<script type="text/javascript">
vendor: 124 bytes, line 1
1window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', '
1UA-219951732-1
vendor: 28 bytes, line 1
1', {'anonymize_ip': false});
1</script>
1<style>
2	.w-nav-overlay {
3		top:0;
4	}
5
6	h6 a {
7		border: 0;
8		top: 0px;
9		bottom: 0px;
10		z-index: 2;
11		display: -webkit-box;
12		display: -ms-flexbox;
13		display: flex;
14
15		display: inline-block;
16		position: relative;
17		-webkit-box-orient: horizontal;
18		-webkit-box-direction: normal;
19			-ms-flex-direction: row;
20				flex-direction: row;
21		-webkit-box-align: center;
22			-ms-flex-align: center;
23				align-items: center;
24		-ms-flex-item-align: end;
25			align-self: flex-end;
26		-webkit-box-pack: end;
27			-ms-flex-pack: end;
28				justify-content: flex-end;
29		background-color: #008651;
30		background-image: url("https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/6138e333148cf86b3b8f2b94_white-arrow.svg");
31		background-position: 89%;
32		background-repeat: no-repeat;
33		-webkit-transition-property: background-color;
34		-o-transition-property: background-color;
35		transition-property: background-color;
36		-webkit-transition-duration: 150ms;
37			 -o-transition-duration: 150ms;
38				transition-duration: 150ms;
39		-webkit-transition-timing-function: ease;
40			 -o-transition-timing-function: ease;
41				transition-timing-function: ease;
42		font-family: open sans, sans-serif;
43
44		padding-top: 15px;
45		padding-right: 65px;
46		padding-bottom: 15px;
47		padding-left: 25px;
48		margin-bottom: 20px;
49
50		-ms-flex-direction: column;
51
52			flex-direction: column;
53		justify-content: flex-end;
54		border-top-style: none;
55		border-right-style: none;
56		border-bottom-style: none;
57		border-left-style: none;
58		border-top-left-radius: 0px;
59		border-top-right-radius: 0px;
60		border-bottom-left-radius: 0px;
61		border-bottom-right-radius: 0px;
62
63		font-size: 16px;
64		font-weight: 400 !important;
65		line-height: 24px;
66		text-decoration: none;
67
68		color: #ffffff !important;
69		text-align: center;
70		text-transform: none;
71	}
72
73	h6 a:hover {
74		color:white !important;
75		background-color: #00653D;
76		text-decoration: none;
77	}
78
79	div[class*="w-slider-arrow-"]:focus div[class*="w-icon-slider-"],
80	.w-dropdown-toggle:focus,
81	.w-dropdown-link:focus {
82		outline-width: 2px;
83		outline-style: solid;
84		outline-color: Highlight;
85		outline-color: -webkit-focus-ring-color;
86	}
87
88	.opus-nav__dropdown-toggle > button {
89		background-color: transparent;
90		padding: 0;
91	}
92
93	.opus-nav a.opus-nav__item.active {
94		text-decoration: underline;
95	}
96
97	/* ——————————————————————————————————————————
98		=Filters
99	—————————————————————————————————————————— */
100	.mixFilters__clear,
101	.filter-by-label,
102	.mixFilters__fieldset {
103		display: none;
104	}
105
106	.mixFilters__form {
107		font-family: 'Open Sans', sans-serif;
108	}
109
110	.mixFilters__form-fields > * {
111		margin: 0 0 28px 0;
112	}
113
114	.mixFilters__dropdown {
115		position: relative;
116	}
117
118	.mixFilters__toggle {
119		background-color: transparent;
120		border: 1px solid #ffffff;
121		color: #FFFFFF;
122		font-size: 16px;
123		padding: 16px 64px 16px 12px;
124		width: 100%;
125		text-align: left;
126		position: relative;
127	}
128
129	.mixFilters__toggle::before,
130	.mixFilters__toggle::after {
131		content: '';
132		width: 52px;
133		top: 1px;
134		right: 1px;
135		bottom: 1px;
136		position: absolute;
137	}
138
139	.mixFilters__toggle::before {
140		border-left: 1px solid #ffffff;
141		background-color: #1a4395;
142	}
143
144	.mixFilters__toggle::after {
145		background-image: url(https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/614c9af035827299ebf6ca5b_caret.svg);
146		background-repeat: no-repeat;
147		background-position: 50% 52%;
148		background-size: 25%;
149		-webkit-transition: .25s ease-in-out;
150		-o-transition: .25s ease-in-out;
151		transition: .25s ease-in-out;
152	}
153
154	.mixFilters__dropdown.open .mixFilters__toggle::after {
155		-webkit-transform: rotate(-180deg);
156			-ms-transform: rotate(-180deg);
157				transform: rotate(-180deg);
158	}
159
160	.mixFilters__fieldset {
161		background-color: #e5f1fa;
162		padding: 20px 12px 4px 12px;
163		position: relative;
164		margin-top: 1px;
165	}
166
167	.mixFilters__fieldset input {
168		display: inline-block;
169		margin: 0 8px 20px 0;
170	}
171
172	.mixFilters__fieldset label {
173		display: inline;
174		font-weight: 400;
175	}
176
177	.mixFilters__fieldset input:hover,
178	.mixFilters__fieldset label:hover {
179		cursor: pointer;
180	}
181
182	.mixFilters__form-conrols {
183		margin-top: 10px;
184	}
185
186	.mixFilters__form-conrols button {
187		padding: 0 0 7px 0;
188		background-color: transparent;
189		font-family: Roboto, sans-serif;
190		color: #00143c;
191		font-size: 16px;
192		color: #ffffff;
193		-webkit-transition: .25s ease-in-out;
194		-o-transition: .25s ease-in-out;
195		transition: .25s ease-in-out;
196		position: relative;
197	}
198
199	.mixFilters__form-conrols button::after {
200		content: '';
201		position: absolute;
202		display: block;
203		width: 100%;
204		height: 1px;
205		bottom: 0;
206		background-coLOR: #5bb2f8;
207		-webkit-transition: .1s ease-in-out;
208		-o-transition: .1s ease-in-out;
209		transition: .1s ease-in-out;
210	}
211
212	.mixFilters__form-conrols button:hover::after {
213		height: 3px;
214	}
215
216	.mixFilters__clear {
217		margin-left: 30px;
218	}
219
220	@media screen and (min-width: 768px) {
221		.mixFilters__form-fields {
222			margin: 0 -20px;
223			display: -webkit-box;
224			display: -ms-flexbox;
225			display: flex;
226			-ms-flex-wrap: wrap;
227				flex-wrap: wrap;
228		}
229
230		.mixFilters__form-fields > * {
231			margin: 0 20px 28px 20px;
232			width: calc(50% - 80px / 2);
233		}
234
235		.mixFilters__fieldset {
236			position: absolute;
237			left: 0;
238			right: 0;
239			top: 100%;
240			z-index: 10;
241			max-height: 40vh;
242			overflow-y: auto;
243		}
244	}
245
246	@media screen and (min-width: 992px) {
247		.mixFilters__form-fields > * {
248			width: auto;
249			-webkit-box-flex: 1;
250				-ms-flex-positive: 1;
251					flex-grow: 1;
252		}
253	}
254</style>
255<head>
256<style>
257 .research-title {
258	-webkit-text-fill-color: transparent !important;
259  -webkit-background-clip: text !important;
260  -webkit-text-stroke: 1.5px #011F5B !important;
261  }
262  </style>
263  </head></head><body class="body"><div data-animation="default" class="navbar w-nav" data-easing2="ease" data-easing="ease" data-collapse="medium" data-w-id="f89ff3ab-a049-60af-0e99-73c0feed815f" role="banner" data-duration="200" data-doc-height="1"><header class="navigation-container"><a id="skip-link" href="#skip-target" class="skip-link">Skip to content</a><div class="nav-items-div"><a href="/" data-w-id="f89ff3ab-a049-60af-0e99-73c0feed8160" aria-current="page" class="brand w-nav-brand w--current"><div data-w-id="62de46bf-c76f-10f9-6255-30941fe7d314" class="logo-text">Clean Energy Conversions Laboratory</div></a><nav role="navigation" class="nav-menu desktop opus-nav opus-nav--desktop w-nav-menu"><div class="nav-wrapper w-dyn-list"><div role="list" class="nav-list w-dyn-items"><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/page/about" class="opus-nav__item level-1">About</a><div class="opus-nav__dropdown-toggle level-1 w-embed"><button aria-label="Open About" aria-expanded="false" aria-haspopup="true">
264	<div class="icon w-icon-dropdown-toggle"></div>
265</button></div><div class="opus-nav__dropdown-list"><a href="https://ceclab.seas.upenn.edu/page/about" class="opus-nav__item level-2">Mission</a><a href="https://ceclab.seas.upenn.edu/page/sponsors-and-friends" class="opus-nav__item level-2">Sponsors</a><a href="https://ceclab.seas.upenn.edu/page/facilities" class="opus-nav__item level-2">Facilities</a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a></div></div></div><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/page/our-team" class="opus-nav__item level-1">Our Team</a><div class="opus-nav__dropdown-toggle level-1 w-condition-invisible w-embed"><button aria-label="Open Our Team" aria-expanded="false" aria-haspopup="true">
266	<div class="icon w-icon-dropdown-toggle"></div>
267</button></div><div class="opus-nav__dropdown-list w-condition-invisible"><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a></div></div></div><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/page/learn-and-explore" class="opus-nav__item level-1">Learn</a><div class="opus-nav__dropdown-toggle level-1 w-embed"><button aria-label="Open Learn" aria-expanded="false" aria-haspopup="true">
268	<div class="icon w-icon-dropdown-toggle"></div>
269</button></div><div class="opus-nav__dropdown-list"><a href="https://ceclab.seas.upenn.edu/page/carbon-management-2-0" class="opus-nav__item level-2">Carbon Management 2.0</a><a href="https://ceclab.seas.upenn.edu/page/carbon-dioxide-removal-cdr-vs-carbon-capture-and-storage-ccs" class="opus-nav__item level-2">CCS vs CDR</a><a href="https://ceclab.seas.upenn.edu/page/mineral-carbonation" class="opus-nav__item level-2">Mineral Carbonation</a><a href="https://ceclab.seas.upenn.edu/page/learn-and-explore" class="opus-nav__item level-2">All Topics</a></div></div></div><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/our-research" class="opus-nav__item level-1">Our Research</a><div class="opus-nav__dropdown-toggle level-1 w-condition-invisible w-embed"><button aria-label="Open Our Research" aria-expanded="false" aria-haspopup="true">
270	<div class="icon w-icon-dropdown-toggle"></div>
271</button></div><div class="opus-nav__dropdown-list w-condition-invisible"><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a></div></div></div><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/page/group-news-and-events" class="opus-nav__item level-1">News</a><div class="opus-nav__dropdown-toggle level-1 w-condition-invisible w-embed"><button aria-label="Open News" aria-expanded="false" aria-haspopup="true">
272	<div class="icon w-icon-dropdown-toggle"></div>
273</button></div><div class="opus-nav__dropdown-list w-condition-invisible"><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a></div></div></div><div role="listitem" class="nav-item w-dyn-item"><div class="opus-nav__dropdown level-1"><a href="https://ceclab.seas.upenn.edu/page/contact" class="opus-nav__item level-1">Contact</a><div class="opus-nav__dropdown-toggle level-1 w-condition-invisible w-embed"><button aria-label="Open Contact" aria-expanded="false" aria-haspopup="true">
274	<div class="icon w-icon-dropdown-toggle"></div>
275</button></div><div class="opus-nav__dropdown-list w-condition-invisible"><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a><a href="#" class="opus-nav__item level-2 w-dyn-bind-empty"></a></div></div></div></div></div><div class="affiliate-div mobile"><div class="affiliate-text">An affiliated lab of the</div><a href="https://kleinmanenergy.upenn.edu/" target="_blank" class="w-inline-block"><img src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/6138e332798cb3dff42bdebd_Kleiman-logo-white.svg" loading="lazy" alt="Kleinman Center for Energy Policy" class="klienman-logo"/></a></div></nav></div><div class="affiliate-div"><div class="affiliate-text">An affiliated lab of the</div><a href="https://kleinmanenergy.upenn.edu/" target="_blank" class="w-inline-block"><img src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/6138e3322a63f4626db8183a_Kleiman-logo.svg" loading="lazy" alt="Kleinman Center for Energy Policy" class="klienman-logo"/></a></div><div class="mobile-menu-icon"><div data-w-id="f89ff3ab-a049-60af-0e99-73c0feed8182" class="menu-button w-nav-button"><div class="menu-icon"><div class="line-1"></div><div class="menu-line-2"></div><div class="line-3"></div></div></div></div></header></div><main><div id="skip-target" class="skip-target"><div class="homepage-hero-wrapper w-dyn-list"><div role="list" class="homepage-hero-list w-dyn-items"><div style="background-image:url(&quot;https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com.jpg&quot;)" role="listitem" class="homepage-hero-item w-dyn-item"><div class="homepage-hero-section"><div class="custom-columns hp-hero"><div class="hp-two-column-div"><h1 class="hp-hero-statement">Mitigating the harmful effects of climate change through research in carbon management. <br/><br/></h1><div class="homepage-hero-image-div"><div class="homepage-hero-image-gradient"></div><img alt="" loading="lazy" src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com.jpg" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com-p-1080.jpeg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com-p-1600.jpeg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com-p-2000.jpeg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com-p-2600.jpeg 2600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com-p-3200.jpeg 3200w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e775ca4d657ad244f9b9f0_nature-cloud-sky-fog-sunrise-sunset-267794-pxhere.com.jpg 5184w" class="homepage-hero-image"/></div><div class="hp-sidebar-div"><div class="factoid-image-div main-factoid"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image.png" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image-p-500.png 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image-p-800.png 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image-p-1080.png 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image-p-1600.png 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/64fca703b43d920ede0c700a_DAC_Factoid_Image.png 1800w" class="factoid-image"/></div><div class="factoid-text-div"><h2 class="hp-h3"><strong>50,000 metric tons of CO<sub>2</sub> per Year and Counting!</strong></h2><p class="body-text">We currently remove 50,000 metric tons of CO<sub>2</sub> from the atmosphere each year. This is definitely a lot, but we still need to remove even more! Check out how <a href="https://ceclab.seas.upenn.edu/page/dac-video">Direct Air Capture</a> can help us meet climate goals!</p><a href="https://clean-energy.webflow.io/our-research" class="button-style w-condition-invisible w-button">Learn about the problem of scale</a></div></div></div></div></div></div></div></div></div><div class="learn-and-explore-section"><div class="custom-columns hp-hero"><div class="hp-two-column-div"><div class="learn-and-explore-div"><div class="two-toned-title-div"><h2 class="hp-h2">Learn &amp;</h2><h2 class="hp-h2 bold">Explore</h2></div><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><div class="two-column-div learn-and-explore"><div class="learn-item"><div class="factoid-image-div learn"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/620baf49817d2a1cca936770_primer.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/620baf49817d2a1cca936770_primer-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/620baf49817d2a1cca936770_primer-p-800.jpeg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/620baf49817d2a1cca936770_primer.jpg 1024w" class="factoid-image"/></div><div data-w-id="ca9859e7-04f5-918e-d0c2-d40a05cfb120" class="title-link-div"><a href="https://cdrprimer.org/" class="hp-h3 white learn w-inline-block"><h3 class="hp-h3 white">CDR Primer</h3><div style="-webkit-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="link-arrow"></div></a></div><div class="hp-white-rich-text w-richtext"><p>Our open source CDR primer represents nearly 40 subject matter experts and addresses the fundamentals of c
275arbon dioxide removal and its role in addressing the climate crisis. <br/>‍<a href="https://link.springer.com/book/10.1007/978-1-4614-2215-0" target="_blank"></a><br/>Learn about CDR in our open source <a href="http://cdrprimer.org" target="_blank">primer</a>.</p><p>Listen to the authors speak on its origins and impacts in this <a href="https://kleinmanenergy.upenn.edu/podcast/a-primer-on-carbon-dioxide-removal/">Kleinman Center Podcast</a>.</p></div></div><div class="learn-item second-item"><div class="factoid-image-div learn"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-800.jpeg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-1080.jpeg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-1600.jpeg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-2000.jpeg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202-p-2600.jpeg 2600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613909ab99ec54bfce197eee_California%20Asbestos%202.jpg 3024w" class="factoid-image"/></div><div data-w-id="5b000806-9587-9c3f-eca0-77955be68afe" class="title-link-div"><a href="https://ceclab.seas.upenn.edu/page/mineral-carbonation" class="hp-h3 white w-inline-block"><h3 class="hp-h3 white">Waste to value: industrial wastes</h3><div style="-webkit-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="link-arrow"></div></a></div><div class="hp-white-rich-text w-richtext"><p>What makes serpentine chrysotile asbestos feedstocks a great option for storing carbon for the long term? Find out more in our 2-page explainer on mineral carbonation. Learn about CCS in Jen&#x27;s <a href="https://link.springer.com/book/10.1007/978-1-4614-2215-0" target="_blank">textbook</a></p><p><a href="https://ceclab.seas.upenn.edu/page/mineral-carbonation"><strong>Learn more</strong></a></p></div></div></div></div></div></div></div><div class="hp-sidebar-div gradient"><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="w-dyn-item"><div class="factoid-text-div space-after second"><div class="factoid-icon-stroke-div"><div class="factoid-icon"></div></div><div class="factoid-text-div-2"><h3 class="hp-h3 factoid-text">Natural Drawdown</h3><p class="body-text factoid-text">Around 90% of the voluntary carbon offset market is tied to improved forest management.</p><a href="https://ceclab.seas.upenn.edu/page/principles-of-high-quality-carbon-removal" class="button-style factoid-button w-button">Learn more about the principles of high quality CDR </a></div></div><div class="factoid-text-div second"><div class="factoid-icon-stroke-div"><div class="factoid-icon _2"></div></div><div class="factoid-text-div-2"><h3 class="hp-h3 factoid-text"><a href="https://ceclab.seas.upenn.edu/page/carbon-management-2-0">Carbon Management 2.0</a></h3><p class="body-text factoid-text">While expensive and immature, engineered CDR like DAC can potentially provide more secure CO₂ storage. Check it out by reading <a href="https://ceclab.seas.upenn.edu/page/carbon-management-2-0">Carbon Management 2.0</a>!</p><a href="#" class="button-style factoid-button w-condition-invisible w-button">Learn more about DAC</a></div></div></div></div></div></div></div></div></div><div class="hp-research-section"><div class="research-section-div"><div class="custom-container"><div class="research-title-and-link"><h2 class="research-title">Research</h2><a href="/our-research" class="button-style navy w-button">Visit our research page</a></div></div></div><div class="featured-research"><div class="custom-container"><div class="main-featured-research-wrapper w-dyn-list"><div role="list" class="main-featured-research-list w-dyn-items"><div role="listitem" class="main-featured-research-item w-dyn-item"><div class="main-research-image"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/679cf4470f15620661424e3e_Ladder-5.avif" loading="lazy" alt="" class="main-research-image image"/></div><div class="research-item main-feature"><div class="research-item-text"><h3 class="hp-h3 navy">U.S. CCS Ladder for Industrial Decarbonization</h3><p class="body-text">CCS has long been scrutinized for enabling fossil fuels, but in some industrial sectors that produce CO2 as a byproduct, CCS may be one of the only options for decarbonization today. Here&#x27;s a look at where CCS should be prioritized as a decarbonization strategy now and for some sectors tomorrow. </p><div class="research-buttons"><a data-w-id="1cb48d8c-5f70-4650-762a-bd37bc9e5498" style="background-color:rgb(0,134,81)" href="#" class="green-button-style pdf w-condition-invisible w-button">Download the PDF</a><a data-w-id="98a277d6-3e33-8162-4991-8d23d96c5f0a" style="background-color:rgb(0,134,81)" href="#" class="green-button-style w-condition-invisible w-button">Watch the Video</a><a href="#" data-w-id="d99a73d7-b9dd-5cca-8fdb-59d1ed5d4fce" style="background-color:rgb(0,134,81)" class="green-button-style presentation w-condition-invisible w-button">Download the Presentation</a>
275<a data-w-id="2e90f764-0dbb-5a40-9d04-d6147870e7ed" style="background-color:rgb(0,134,81)" href="#" class="green-button-style podcast w-condition-invisible w-button">Listen to the Podcast</a><a data-w-id="1f7f4b9a-3f88-054b-e424-36839d839adb" style="background-color:rgb(0,134,81)" href="#" class="green-button-style arrow w-condition-invisible w-dyn-bind-empty w-button"></a></div></div><div class="research-date-and-team"><div class="date-and-authors"><div class="all-caps-title">October 2024</div><div class="blue-divider"></div><div class="small-body">Maxwell Pisciotta,
276Shelvey Swett, Hélène Pilorgé,
277Shrey Patel,
278Jennifer Wilcox</div></div><div class="research-topics"><div class="all-caps-title research-topic">Research topics</div><div class="divider"></div><div class="small-body w-condition-invisible">Hydrogen Production &amp; Storage</div><div class="divider w-condition-invisible"></div><div class="small-body">Carbon Capture, Utilization, &amp; Storage</div><div class="divider"></div><div class="small-body w-condition-invisible">Mineral Carbonization</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Ammonia Production</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Life Cycle Analysis</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Techno-economic Assessment</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Catalysis</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Geographic Information Systems Mapping</div><div class="divider w-condition-invisible"></div><div class="small-body">Carbon Dioxide Removal</div><div class="divider"></div><div class="small-body w-condition-invisible">Direct Air Capture</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Miscellaneous</div></div></div><div class="research-buttons mobile"><a data-w-id="504ca918-2a04-26ce-91e1-a3f9afbe7c55" style="background-color:rgb(0,134,81)" href="#" class="green-button-style pdf w-condition-invisible w-button">Download the PDF</a><a href="#" data-w-id="504ca918-2a04-26ce-91e1-a3f9afbe7c57" style="background-color:rgb(0,134,81)" class="green-button-style presentation w-condition-invisible w-button">Download the Presentation</a><a data-w-id="504ca918-2a04-26ce-91e1-a3f9afbe7c59" style="background-color:rgb(0,134,81)" href="#" class="green-button-style w-condition-invisible w-button">Watch the Video</a><a data-w-id="504ca918-2a04-26ce-91e1-a3f9afbe7c5b" style="background-color:rgb(0,134,81)" href="#" class="green-button-style podcast w-condition-invisible w-button">Listen to the Podcast</a><a data-w-id="504ca918-2a04-26ce-91e1-a3f9afbe7c5d" style="background-color:rgb(0,134,81)" href="#" class="green-button-style arrow w-condition-invisible w-dyn-bind-empty w-button"></a></div></div></div></div></div><div class="secondary-feature-wrapper w-dyn-list"><div role="list" class="secondary-feature-list w-dyn-items"><div role="listitem" class="secondary-feature-item w-dyn-item"><div class="research-item-text"><h3 class="hp-h3 navy">An overview of the status and challenges of CO2 storage in minerals and geological formations</h3><p class="body-text">Since the Industrial Revolution, anthropogenic carbon dioxide (CO2) emissions have grown exponentially, accumulating in the atmosphere and leading to global warming. According to the IPCC (IPCC Special Report 2018), atmospheric warming should be less than 2 ℃ to avoid the most serious consequences associated with climate change. This goal can be achieved in part by reducing CO2 emissions, together with capturing and sequestering CO2 from point sources. The most mature storage technique is sequestration in deep saline aquifers. In addition, CO2 can be mineralized and sequestered in solid form by various techniques: ex-situ, surficial and in situ mineralization. Ex situ and surficial approaches may produce valuable products while mitigating environmental hazards. In-situ mineralization uses ultramafic and mafic geological formations for permanent, solid storage. A portfolio that limits warming to less than 2 ℃ by 2100 will include avoiding CO2 emissions and removal of CO2 from air. Regardless of the specific mix of approaches, it will be essential to permanently sequester tens of billions of tons of CO2. Maximizing the potential of all of these storage technologies will help to meet global climate goals. The research agenda published by the National Academy of Science (NASEM 2019) calls for about $1 billion over a 10-20 year time period to advance deployment of CO2 sequestration in deep sedimentary reservoirs at the GtCO2/yr scale and develop CO2 mineralization at the MtCO2/yr scale.</p><div class="research-buttons"><a data-w-id="d94fed82-2988-3ee4-bd96-e6145175a262" style="background-color:rgb(0,134,81)" href="#" class="green-button-style pdf w-condition-invisible w-button">Download the PDF</a><a data-w-id="d94fed82-2988-3ee4-bd96-e6145175a266" style="background-color:rgb(0,134,81)" href="#" class="green-button-style w-condition-invisible w-button">Watch the Video</a><a href="#" data-w-id="d94fed82-2988-3ee4-bd96-e6145175a264" style="background-color:rgb(0,134,81)" class="green-button-style presentation w-condition-invisible w-button">Download the Presentation</a><a data-w-id="d94fed82-2988-3ee4-bd96-e6145175a268" style="background-color:rgb(0,134,81)" href="#" class="green-button-style arrow w-condition-invisible w-button">Listen to the Podcast</a><a data-w-id="d94fed82-2988-3ee4-bd96-e6145175a26a" style="background-color:rgb(0,134,81)" href="#" class="green-button-style arrow w-condition-invisible w-dyn-bind-empty w-button"></a></div></div><div class="research-date-and-team"><div class="date-and-authors"><div class="all-caps-title">November 2019</div><div class="blue-divider"></div><div class="small-body">Jennifer Wilcox,
279Peter Psarras,
280Helene Pilorge</div></div><div class="research-topics"><div class="all-caps-title research-topic">Research topics</div><div class="divider"></div><div class="small-body w-condition-invisible">Hydrogen Production &amp; Storage</div><div class="divider w-condition-invisible"></div><div class="small-body">Carbon Capture, Utilization, &amp; Storage</div><div class="divider"></div><div class="small-body w-condition-invisible">Mineral Carbonization</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Ammonia Production</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Life Cycle Analysis</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Techno-economic Assessment</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Catalysis</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Geographic Information Systems Mapping</div><div class="divider w-condition-invisible"></div><div class="small-body">Carbon Dioxide Removal</div><div class="divider"></div><div class="small-body w-condition-invisible">Direct Air Capture</div><div class="divider w-condition-invisible"></div><div class="small-body w-condition-invisible">Miscellaneous</div></div></div><div class="research-buttons mobile"><a data-w-id="e39e7bbf-0c11-a966-6da3-42c783328197" style="background-color:rgb(0,134,81)" href="#" class="green-button-style pdf w-condition-invisible w-button">Download the PDF</a><a href="#" data-w-id="e39e7bbf-0c11-a966-6da3-42c783328199" style="background-color:rgb(0,134,81)" class="green-button-style presentation w-condition-invisible w-button">Download the Presentation</a><a data-w-id="e39e7bbf-0c11-a966-6da3-42c78332819b" style="background-color:rgb(0,134,81)" href="#" class="green-button-style w-condition-invisible w-button">Watch the Video</a><a data-w-id="e39e7bbf-0c11-a966-6da3-42c78332819d" style="background-color:rgb(0,134,81)" href="#" class="green-button-style podcast w-condition-invisible w-button">Listen to the Podcast</a><a data-w-id="e39e7bbf-0c11-a966-6da3-42c78332819f" style="background-color:rgb(0,134,81)" href="#" class="green-button-style arrow w-condition-invisible w-dyn-bind-empty w-button"></a></div></div></div></div></div><a href="/our-research" class="button-style navy research w-button">More Research</a></div></div><div class="hp-video-section"><div class="custom-container"><div class="two-column-div"><div class="video-collection-wrapper w-dyn-list"><div role="list" class="video-collection-list w-dyn-items"><div role="listitem" class="video-collection-item w-dyn-item"><div style="padding-top:56.20608899297424%" class="hp-video w-video w-embed"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FyVyEKeKQejA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyVyEKeKQejA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FyVyEKeKQejA%2Fhqdefault.jpg&key=96f1f04c5f4143bcb0f2e68c87d65feb&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></div></div></div></div><div class="video-section-div"><h2 class="all-caps-title space-after">Featured Video</h2><h3 class="hp-h3 navy">Penn Engagement Days</h3><div class="video-collection-wrapper mobile w-dyn-list"><div role="list" class="video-collection-list w-dyn-items"><div role="listitem" class="video-collection-item w-dyn-item"><div style="padding-top:56.20608899297424%" class="hp-video w-video w-embed"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FyVyEKeKQejA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DyVyEKeKQejA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FyVyEKeKQejA%2Fhqdefault.jpg&key=96f1f04c5f4143bcb0f2e68c87d65feb&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen" allowfullscreen="true"></iframe></div></div></div></div><p class="body-text">In the Fall of 2020, CECL moved to our new home in Penn Engineering and the Kleinman Center for Energy Policy. Watch as our team talks through the problem of carbon management, discusses Jennifer&#x27;s interim role with the Department of Energy, and speaks on our experience here at Penn. </p><a href="https://www.youtube.com/channel/UC_OUM8XVDz3HB1cPsf4o3GQ" class="button-style blue w-button">Watch more videos on our Youtube channel </a></div></div></div></div><div class="news-and-team-section"><div class="custom-columns hp-hero"><div class="hp-two-column-div team"><div class="news-div"><div class="two-toned-title-div"><h2 class="hp-h2 blue news">Featured</h2><h2 class="hp-h2 bold blue news">News</h2></div><div class="news-wrapper w-dyn-list"><div role="list" class="news-list w-dyn-items"><div role="listitem" class="news-items w-dyn-item"><div class="news-item-div"><div data-w-id="b09c58b9-fd02-367f-7fe5-ae2cbddfeac5" class="title-link-div"><a href="https://www.energy.gov/fecm/person/dr-jennifer-wilcox" class="hp-h3 link news w-inline-block"><h3 class="hp-h3 link news">Jen is appointed Principal Deputy Assistant Secretary of Fossil Energy and Carbon Management</h3><div style="-webkit-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="link-arrow"></div></a></div><div class="hp-h3 news w-condition-invisible">Jen is appointed Principal Deputy Assistant Secretary of Fossil Energy and Carbon Management</div><p class="body-text">Our own Jennifer Wilcox was appointed Principal Deputy Assistant Secretary of Fossil Energy and Carbon Management in January 2021. In recognition of her endless contributions to climate change research, the Biden Administration has placed Jen near the top of the DOE food chain, leading monumental efforts and managing large budgets to aid in our transition to a less carbon intensive future. Congratulations Jen!</p><div class="news-divider"></div></div><div class="news-item-div"><div data-w-id="ef81409a-44fd-ce89-5cb1-3f5a806d1748" class="title-link-div"><a href="https://gs.llnl.gov/sites/gs/files/2021-08/getting_to_neutral.pdf" class="hp-h3 link news">The Clean Energy Conversions Lab Members are recognized by the DOE with the Secretary&#x27;s Achievement Award for their work on the Getting to Neutral Report!</a><div style="-webkit-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="link-arrow"></div></div><h3 class="hp-h3 news w-condition-invisible">The Clean Energy Conversions Lab Members are recognized by the DOE with the Secretary&#x27;s Achievement Award for their work on the Getting to Neutral Report!</h3><p class="body-text">Dr. Wilcox, Dr. Psarras, Hélène Pilorgé, and Noah McQueen were large contributors to the Getting to Neutral report, which highlighted projected pathways for the state of California to reach carbon neutrality by 2045, if not sooner! Check out the full report!</p><div class="news-divider second"></div></div><div class="news-item-div"><div data-w-id="0819fc56-1a56-5417-724f-9f488602cdae" class="title-link-div third"><a href="https://global.upenn.edu/perryworldhouse/news/geothermal-energy-missing-piece-equitable-energy-transition" class="hp-h3 link news">Max Pisciotta wins the Perry World House Graduate Essay Prize!</a><div style="-webkit-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-moz-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);-ms-transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0);transform:translate3d(0px, 0, 0) scale3d(1, 1, 1) rotateX(0) rotateY(0) rotateZ(0) skew(0, 0)" class="link-arrow"></div></div><h3 class="hp-h3 news w-condition-invisible">Max Pisciotta wins the Perry World House Graduate Essay Prize!</h3><p class="body-text third">Max is awarded the inaugural Perry World House Graduate Essay Prize for their essay submission, which outlines the possibility for using abandoned or retired oil and as wells for geothermal energy systems. Check out the full essay!</p></div></div></div></div><a href="https://ceclab.seas.upenn.edu/page/group-news-and-events" data-w-id="25de7738-7258-cd18-dc8e-17a4815a49b0" style="background-color:rgb(91,178,248);color:rgb(0,20,60)" class="green-button-style blue w-button">View All News</a></div><div class="hp-sidebar-div team"><h2 class="all-caps-title large">Team member spotlight</h2><div class="hp-collection-wrapper team w-dyn-list"><div role="list" class="hp-collection-list team w-dyn-items"><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/66bf6cbdd770a8f409ae160d_IMG_0978_cropped.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/66bf6cbdd770a8f409ae160d_IMG_0978_cropped-p-
280500.jpg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/66bf6cbdd770a8f409ae160d_IMG_0978_cropped-p-800.jpg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/66bf6cbdd770a8f409ae160d_IMG_0978_cropped-p-1080.jpg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/66bf6cbdd770a8f409ae160d_IMG_0978_cropped.jpg 1571w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Abby Lunstrum</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Abby Lunstrum</h3></div><div class="team-title">Research Associate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Abby&#x27;s areas of focus are carbon mineralization, carbon capture and storage, and separations. </p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey-p-500.jpg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey-p-800.jpg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey-p-1080.jpg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey-p-1600.jpg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey-p-2000.jpg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675de289fa6ceb8fdbe7ff6_Shrey.jpg 2181w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Shrey Patel</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Shrey Patel</h3></div><div class="team-title">PhD Candidate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Shrey&#x27;s focus areas are direct air capture, carbon mineralization, carbon capture and storage, process modelling, techno-economic assessment, and low-carbon energy. </p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675ddd44d0970eaf188f46d_a45905ac-073d-486c-bedf-b991f7c0c727(2).jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675ddd44d0970eaf188f46d_a45905ac-073d-486c-bedf-b991f7c0c727(2)-p-500.jpg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675ddd44d0970eaf188f46d_a45905ac-073d-486c-bedf-b991f7c0c727(2)-p-800.jpg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675ddd44d0970eaf188f46d_a45905ac-073d-486c-bedf-b991f7c0c727(2)-p-1080.jpg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/6675ddd44d0970eaf188f46d_a45905ac-073d-486c-bedf-b991f7c0c727(2).jpg 1313w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Aline Uwase</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Aline Uwase</h3></div><div class="team-title">PhD Student</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Aline&#x27;s areas of focus are carbon mineralization, carbon capture and storage, materials characterization, and CO2 adsorption.</p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/65ea08c20de2428f847a006d_Shelvey.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/65ea08c20de2428f847a006d_Shelvey-p-500.jpg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/65ea08c20de2428f847a006d_Shelvey-p-800.jpg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/65ea08c20de2428f847a006d_Shelvey.jpg 936w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Shelvey Swett</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Shelvey Swett</h3></div><div class="team-title">PhD Candidate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Shelvey&#x27;s focus areas are carbon mineralization, separations, carbon capture and storage, and techno-economic assessment.</p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-800.jpeg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-1080.jpeg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-1600.jpeg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-2000.jpeg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-2600.jpeg 2600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy-p-3200.jpeg 3200w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61e48d0ca402dc07f8d588ab_Maxwell_Pisciotta_Photo%20copy.jpg 3395w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Maxwell Pisciotta</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Maxwell Pisciotta</h3></div><div class="team-title">PhD Candidate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Max Pisciotta is a 2nd-year Ph.D. student in Chemical Engineering at the University of Pennsylvania and holds a B.S. and M.S. in Mechanical Engineering from the Colorado School of Mines. Max’s research focuses on point-source carbon capture and direct air carbon capture. </p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029-p-800.jpeg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029-p-1080.jpeg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029-p-1600.jpeg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029-p-2000.jpeg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953f128c4efd37c49ef309_A7302029.jpg 2048w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Dr. Hélène Pilorgé</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Dr. Hélène Pilorgé</h3></div><div class="team-title">Research Associate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Hélène looks at carbon management with a spatial perspective to find local synergies and optimize carbon management strategies, while recognizing the importance for environment c
280onservation and social justice.</p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034.jpg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034-p-800.jpeg 800w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034-p-1080.jpeg 1080w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034-p-1600.jpeg 1600w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034-p-2000.jpeg 2000w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/61953e9ba4bd08fcd54ffd37_A7302034.jpg 2048w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team w-condition-invisible"><a href="#" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Katherine Vaz Gomes</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team"><h3 class="hp-h3 white nolink">Katherine Vaz Gomes</h3></div><div class="team-title">PhD Candidate</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Katherine brings a background in chemical engineering and professional writing with years of experimental research. Her focus is carbon mineralization of mine tailings to permanently store carbon dioxide.</p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div><div role="listitem" class="homepage-collecton-item team w-dyn-item"><div class="factoid-image-div team"><img src="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613f96b0ddc6df4244e7bcf3_Jennifer%20Wilcox%20Photo_042121.jpeg" loading="lazy" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613f96b0ddc6df4244e7bcf3_Jennifer%20Wilcox%20Photo_042121-p-500.jpeg 500w, https://cdn.prod.website-files.com/6138d6c43a0782479d12d84d/613f96b0ddc6df4244e7bcf3_Jennifer%20Wilcox%20Photo_042121.jpeg 669w" class="factoid-image team"/></div><div class="factoid-text-div"><div data-w-id="51ce9585-a134-f272-9bcc-1f2910c6864e" class="title-link-div team"><a href="https://www.energy.gov/fe/person/dr-jennifer-wilcox" class="hp-h3 white team w-inline-block"><h3 class="hp-h3 white text">Jen Wilcox</h3><div class="link-arrow orange"></div></a></div><div data-w-id="45f567f0-7d42-ef76-ce42-cbc036276058" class="title-link-div team w-condition-invisible"><h3 class="hp-h3 white nolink">Jen Wilcox</h3></div><div class="team-title">James H. Manning Chaired Professor</div><div class="team-research-div"><div class="all-caps-title research-topic white">Research Focus:</div><p class="body-text white">Wilcox’s research takes aim at the nexus of energy and the environment, developing both mitigation and adaptation strategies to minimize negative climate impacts associated with society’s dependence on fossil fuels. </p></div><a href="https://ceclab.seas.upenn.edu/page/our-team" class="button-style white w-button">Learn About Our Team</a></div></div></div></div></div></div></div></div></main><footer class="footer"><div class="footer-wrapper w-dyn-list"><div role="list" class="footer-list w-dyn-items"><div role="listitem" class="footer-item w-dyn-item"><div class="custom-container"><div class="footer-div"><div class="footer-text"><div class="footer-text-div"><div class="footer-affiliation-text">An affiliated lab of the</div><a href="https://kleinmanenergy.upenn.edu/" target="_blank" class="klienman-footer-text">Kleinman Center for Energy Policy</a><div class="kleinman-footer-text-line-2">at the University of Pennsylvania</div></div></div><div class="footer-social-and-button">
280<div class="footer-social-div"><div class="social-media"><a href="https://twitter.com/jwilceclab" class="social-link twitter w-inline-block"></a><a href="#" class="social-link instagram w-inline-block w-condition-invisible"></a><a href="#" class="social-link facebook w-inline-block w-condition-invisible"></a><a href="#" class="social-link youtube w-inline-block w-condition-invisible"></a></div><a href="mailto:[email protected]" class="footer-email">[email protected]</a></div><div class="footer-button"><div class="footer-affiliation-text button">Get the latest CECL news:</div><a href="https://kleinmanenergy.upenn.edu/newsletter" data-w-id="a718bb50-e550-1853-d4a6-7d42b2f0871d" class="green-button-style white w-button">Join the Kleinman Center Newsletter</a></div></div></div><div class="footer-copywrite"><div class="copywrite">© <span class="current-year">2021</span> <a href="https://www.upenn.edu/" target="_blank" class="footer-link">University of Pennsylvania</a></div></div></div><div class="bottom-footer"><div class="custom-container"><div class="bottom-footer-div"><a href="https://www.seas.upenn.edu/" target="_blank" class="w-inline-block"><img src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/62057d1ada9cb84a2fbc0334_penn-engineering-one-line-white.svg" loading="lazy" alt="" class="penn-logo"/></a><div class="small-footer-links"><a href="https://www.upenn.edu/about/report-copyright-infringement" class="small-footer-link">Copyright</a><div class="white-divider"></div><a href="https://www.upenn.edu/about/privacy-policy" class="small-footer-link">Privacy</a><div class="white-divider"></div><a href="https://www.upenn.edu/about/disclaimer" class="small-footer-link">Disclaimer</a><div class="white-divider"></div><a href="https://accessibility.web-resources.upenn.edu/get-help" class="small-footer-link">Accessibility</a><div class="white-divider"></div><a href="https://www.publicsafety.upenn.edu/contact/" class="small-footer-link">Emergency Services</a><div class="white-divider w-condition-invisible"></div><a href="#" class="small-footer-link w-dyn-bind-empty"></a></div></div></div></div></div></div></div></footer>
280<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=6138d6c43a0782018b12d83d" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
280<script src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/js/webflow.schunk.36b8fb49256177c8.js" type="text/javascript"></script>
280<script src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/js/webflow.schunk.4df0fd5dd0344b52.js" type="text/javascript"></script>
280<script src="https://cdn.prod.website-files.com/6138d6c43a0782018b12d83d/js/webflow.d49ac792.50ba4fc010306825.js" type="text/javascript"></script>
280<!-- MixItUp Library -->
281<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mixitup/3.3.1/mixitup.min.js"></script>
vendor: 1 bytes, line 281
281
282<script type="text/javascript" src="https://dl.dropbox.com/s/1wl0p4gg6eaitx1/mixitup-multifilter.min.js"></script>
282
283
284<script>
285	$(document).ready(function() {
286		/* ——————————————————————————————————————————
287			A11y Nav
288		—————————————————————————————————————————— */
289		if ($('.opus-nav--desktop').length > 0) {
290			function closeDesktopNav(el) {
291				$(el)
292					.find('.opus-nav__dropdown-list')
293					.hide();
294
295				$(el)
296					.find('.opus-nav__dropdown-toggle > button')
297					.attr('aria-expanded', false)
298			}
299
300			function openDesktopNav(el) {
301				$(el)
302					.find('.opus-nav__dropdown-list')
303					.show();
304
305				$(el)
306					.find('.opus-nav__dropdown-toggle > button')
307					.attr('aria-expanded', true)
308			}
309
310			// Open nav on hover
311			$('.opus-nav--desktop .opus-nav__dropdown').on('mouseenter', function() {
312				openDesktopNav($(this));
313			});
314
315			// Close nav off hover
316			$('.opus-nav--desktop .opus-nav__dropdown').on('mouseleave', function() {
317				closeDesktopNav($(this));
318			});
319
320			// Open nav on toggle button click
321			$('.opus-nav--desktop .opus-nav__dropdown-toggle > button').on('click', function(e) {
322				if ($(this).attr('aria-expanded') === 'true') { // if open then close
323					closeDesktopNav($(this).closest('.opus-nav__dropdown'));
324				} else { // if closed then open
325					openDesktopNav($(this).closest('.opus-nav__dropdown'));
326				}
327			});
328
329			// Close nav when esc key is pressed
330			$('.opus-nav--desktop').on('keyup', function (e) {
331				if (e.keyCode === 27) {
332					closeDesktopNav($('.opus-nav--desktop .opus-nav__dropdown'));
333				}
334			});
335
336			// Close nav after last focusable item (<a> or <button>) has been tabbed past
337			$('.opus-nav--desktop').on('keydown', '.opus-nav__item:not(.level-1), .opus-nav__dropdown-toggle:not(.level-1) > button', function(e) {
338				if (e.keyCode === 9) { // If tabbing
339					if (e.shiftKey === true) { // If shift key is down stop
340						return true;
341					}
342
343					var lastEl = $(this).parents('.opus-nav__dropdown.level-1').find(':visible:last');
344					// console.log(lastEl);
345
346					if ($(this)[0] == lastEl[0]) {
347						closeDesktopNav($(this).parents('.opus-nav__dropdown.level-1'));
348					}
349				}
350			});
351
352			// Close nav after 1st level toggle button has been reversed tabbed away from
353			$('.opus-nav--desktop .opus-nav__dropdown-toggle > button').on('keydown', function(e) {
354				if (e.keyCode === 9) { // If tabbing
355					if (! e.shiftKey === true) { // If shift key is not down stop
356						return true;
357					}
358
359					closeDesktopNav($(this).closest('.opus-nav__dropdown'));
360				}
361			});
362		}
363
364
365		/* ——————————————————————————————————————————
366			Skip Link
367		—————————————————————————————————————————— */
368		if ($('#skip-link').length > 0) {
369			$('#skip-link').click(function(e) {
370				e.preventDefault();
371				$('#skip-target').attr('tabindex', '-1').focus();
372			});
373		}
374
375
376		/* ——————————————————————————————————————————
377			Accordions
378		—————————————————————————————————————————— */
379		if ($('.accordion-trigger').length > 0) {
380			$('.accordion-trigger').unbind('click').click(function() {
381				if ($(this).find('button').attr('aria-expanded') == 'true') {
382					$(this).find('button').attr('aria-expanded', 'false');
383				} else {
384					$(this).find('button').attr('aria-expanded', 'true');
385				}
386			});
387		}
388
389
390		/* ——————————————————————————————————————————
391			Carousel / Sliders
392		—————————————————————————————————————————— */
393		if ($('.slider').length > 0) {
394			// Remove empty carousel slides
395			$('.slide.w-condition-invisible').remove();
396			Webflow.require('slider').redraw();
397		}
398
399
400		/* ——————————————————————————————————————————
401			Add active CSS class to nav items
402		—————————————————————————————————————————— */
403		// $('.w-nav-menu a').each(function() {
404		$('.opus-nav--desktop a').each(function() {
405			var pos = $(this).attr('href').lastIndexOf('/') + 1;
406			var res = $(this).attr('href').substring(pos).replace(/\s+/g, '-');
407			// console.log('Res: ' + res);
408			// console.log('Title: ' + $('h1.heading-1:first-of-type').text().replace(/\s+/g, '-').toLowerCase());
409
410			if ( $('h1.heading-1:first-of-type').text().replace(/\s+/g, '-').toLowerCase() === res ) {
411				$(this).addClass('active');
412			}
413		});
414
415
416		/* ——————————————————————————————————————————
417			Display 1 Person on Homepage Randomly
418		—————————————————————————————————————————— */
419		if ($('.homepage-collecton-item.team').length > 1) {
420			(function() {
421				var teamMember = $('.homepage-collecton-item.team');
422				var teamMembers = [];
423				teamMember.hide();
424
425				teamMember.each(function() {
426					teamMembers.push($(this));
427				});
428
429				var selected = teamMembers[Math.floor(Math.random() * teamMembers.length)];
430
431				selected.show();
432			})()
433		}
434
435
436		/* ——————————————————————————————————————————
437			Filtering
438		—————————————————————————————————————————— */
439		if ($('.mixFilters').length && $('.mix-container').length) {
440			(function() {
441				// Set empty filed options
442				var mediaFilterChoices = [];
443				var topicsFilterChoices = [];
444				var yearsFilterChoices = [];
445				var filterClasses = [];
446
447				// Get field containers
448				var mediaField = $('.mixFilters__fieldset--media');
449				var yearsField = $('.mixFilters__fieldset--years');
450				var topicsField = $('.mixFilters__fieldset--topics');
451				var form = $('.mixFilters__form');
452				var clearBtn = $('.mixFilters__clear');
453				var submitBtn = $('.mixFilters__submit');
454				var filterDropdown = $('.mixFilters__dropdown');
455				var filterToggle = $('.mixFilters__toggle');
456				var filterFieldset = $('.mixFilters__fieldset');
457
458				// Filter Toggle Open
459				function openFilterToggle(el) {
460					closeFilterToggle(filterToggle);
461					el.next(filterFieldset).slideDown('fast');
462					el.attr('aria-expanded', 'true');
463					el.closest(filterDropdown).addClass('open')
464				}
465
466				// Filter Toggle Close
467				function closeFilterToggle(el) {
468					el.next(filterFieldset).slideUp('fast');
469					el.attr('aria-expanded', 'false');
470					el.closest(filterDropdown).removeClass('open')
471				}
472
473				// Filter Toggle Click
474				filterToggle.on('click', function() {
475					var el = $(this);
476
477					if ( el.attr('aria-expanded') === 'false' ) {
478						openFilterToggle(el);
479					} else {
480						closeFilterToggle(el);
481					}
482				});
483
484				// Close toggles when clicking outside
485				$(document).on('click', function(e) {
486					if ( $(filterDropdown).hasClass('open') ) {
487						// If we're not clicking on the toggle button itself, close all toggles
488						if ( $(e.target).closest(filterToggle).length === 0 ) {
489							closeFilterToggle(filterToggle);
490						}
491					}
492				});
493
494				// Close toggles when button has been tabbed past backwards
495				filterToggle.on('keydown', function(e) {
496					if (e.keyCode === 9) { // If tabbing
497						if (e.shiftKey === false || ! $(this).parent(filterDropdown).hasClass('open')) {
498							return;
499						}
500
501						if ($(this).parent(filterDropdown).hasClass('open')) {
502							closeFilterToggle($(this));
503						}
504					}
505				});
506
507				// Close toggles when input has been tabbed past forwards
508				filterFieldset.on('keydown', 'input', function(e) {
509					if (e.keyCode === 9) { // If tabbing
510						var lastEl = $(this).closest(filterFieldset).find('input:visible').last();
511
512						if ( e.shiftKey === true ) {
513							return;
514						}
515
516						if ( $(this)[ 0 ] === lastEl[ 0 ] ) {
517							closeFilterToggle($(this).closest(filterDropdown).find(filterToggle));
518						}
519					}
520				});
521
522				// Close nav when esc key is pressed
523				$(filterDropdown).on('keyup', function(e) {
524					if (e.keyCode === 27) {
525						var parent = $(this).closest(filterDropdown);
526
527						if (! parent.hasClass('open')) {
528							return;
529						}
530
531						closeFilterToggle(parent.find(filterToggle));
532					}
533				});
534
535				// Prevent clicking fields inside toggle fields from closing toggle
536				filterFieldset.on('click', function(e) {
537					e.stopPropagation();
538				});
539
540				// Handle clear buton clicks
541				clearBtn.on('click', function() {
542					setTimeout(function () {
543						submitBtn.click();
544					}, 250);
545				});
546
547				// Update markup to add filter classes to items and set filter field choices
548				$('.mix-container .mix').each(function(i) {
549					filterClasses = [];
550					var el = $(this);
551					var dataJson = el.find('.filterData').text();
552					var dataObj = JSON.parse(dataJson);
553					var mediaObj = dataObj.media;
554					var topicsObj = dataObj.topics;
555					var dateObj = dataObj.date;
556
557					// Loop through media
558					for (var key in mediaObj) {
559						for (var key2 in mediaObj[key]) {
560							if (key2 === 'value' && mediaObj[key][key2]) {
561								filterClasses.push('_' + key);
562								mediaFilterChoices.push({
563									'value': '._' + key,
564									'name': mediaObj[key].name
565								});
566							}
567						}
568					}
569
570					// Loop through topics
571					for (var key in topicsObj) {
572						for (var key2 in topicsObj[key]) {
573							if (key2 === 'value' && topicsObj[key][key2]) {
574								filterClasses.push('_' + key);
575								topicsFilterChoices.push({
576									'value': '._' + key,
577									'name': topicsObj[key]['name']
578								});
579							}
580						}
581					}
582
583					// Format date
584					dateObj = new Date(dateObj);
585					dateObj = dateObj.getFullYear();
586					filterClasses.push('_' + dateObj);
587					yearsFilterChoices.push({
588						'value': '._' + dateObj,
589						'name': dateObj
590					});
591
592					// Add classes
593					filterClasses.forEach(function(item) {
594						el.addClass(item);
595					});
596				});
597
598				// Sort an array of objects asc or desc
599				function sortArrayObjects(array, direction) {
600					if (direction === 'desc') {
601						array.sort(function (a, b) {
602							return a.name < b.name ? 1 : -1;
603						});
604					} else {
605						array.sort(function (a, b) {
606							return a.name > b.name ? 1 : -1;
607						});
608					}
609				}
610
611				// Filter choices
612				mediaFilterChoices = [...new Map(mediaFilterChoices.map(item =>[item['name'], item])).values()];
613				sortArrayObjects(mediaFilterChoices, 'asc');
614
615				topicsFilterChoices = [...new Map(topicsFilterChoices.map(item =>[item['name'], item])).values()];
616				sortArrayObjects(topicsFilterChoices, 'asc');
617
618				yearsFilterChoices = [...new Map(yearsFilterChoices.map(item =>[item['name'], item])).values()];
619				sortArrayObjects(yearsFilterChoices, 'desc');
620
621				// Add media choices
622				mediaFilterChoices.forEach(function(item) {
623					mediaField
624						.append('<input type="checkbox" id="' + item['value'].replace(/^\./, "") + '" value="' + item['value'] + '" data-pills="' + item['value'].replace(/^\./, "") + '"/> <label for="' + item['value'].replace(/^\./, "") + '">' + item['name'] + '</label><br>');
625				});
626
627
628				// Add topics choices
629				topicsFilterChoices.forEach(function(item) {
630					topicsField
631						.append('<input type="checkbox" id="' + item['value'].replace(/^\./, "") + '" value="' + item['value'] + '" data-pills="' + item['value'].replace(/^\./, "") + '"/> <label for="' + item['value'].replace(/^\./, "") + '">' + item['name'] + '</label><br>');
632				});
633
634
635				// Add date choices
636				yearsFilterChoices.forEach(function(item) {
637					yearsField
638						.append('<input type="checkbox" id="' + item['value'].replace(/^\./, "") + '" value="' + item['value'] + '" data-pills="' + item['value'].replace(/^\./, "") + '"/> <label for="' + item['value'].replace(/^\./, "") + '">' + item['name'] + '</label><br>');
639				})
640
641
642				// Get checkbox selections and generate pills
643				function generateFilterPills() {
644					$('.filtered-by-tags').hide().empty();
645
646					$('.mixFilters__fieldset input[type="checkbox"]:checked').each(function(i) {
647						var input = $(this);
648						var label = $(this).next('label');
649
650						$('.filtered-by-tags').append('<a href="#" class="filter-tag" data-value="' + input.attr('id') + '"><div class="body-text">' + label.text() + '</div><div class="clear-link"></div></a>')
651					});
652
653					if ($('.filter-tag').length) {
654						$('.filter-by-label').fadeIn();
655						$('.filtered-by-tags').fadeIn();
656						clearBtn.fadeIn();
657					} else {
658						$('.filter-by-label').fadeOut();
659						clearBtn.fadeOut();
660					}
661				}
662
663				// Remove filter indicators
664				$(document).on('click', '.filter-tag', function(e) {
665					e.preventDefault();
666					var id = '#' + $(this).attr('data-value');
667					$(id).click();
668					submitBtn.click();
669				});
670
671
672				// https://www.bostoen.be/assets/bower_components/mixitup-multifilter/demos/programmatic-filtering-by-url/
673				var containerEl = document.querySelector('.mix-container');
674				var targetSelector = '.mix';
675				var activeHash = '';
676
677				/**
678				 * Deserializes a hash segment (if present) into in an object.
679				 *
680				 * @return {object|null}
681				 */
682				function deserializeHash() {
683					var hash    = window.location.hash.replace(/^#/g, '');
684					var obj     = null;
685					var groups  = [];
686
687					if (!hash) return obj;
688
689					obj = {};
690					groups = hash.split('&');
691
692					groups.forEach(function(group) {
693						var pair = group.split('=');
694						var groupName = pair[0];
695
696						obj[groupName] = pair[1].split(',');
697					});
698
699					return obj;
700				}
701
702				/**
703				 * Serializes a groupsState object into a string.
704				 *
705				 * @param   {object}    groupsState
706				 * @return  {string}
707				 */
708				function serializeGroupsState(groupsState) {
709					var output = '';
710
711					for (var key in groupsState) {
712						var values = groupsState[key];
713
714						if (!values.length) continue;
715
716						output += key + '=';
717						output += values.join(',');
718						output += '&';
719					};
720
721					output = output.replace(/&$/g, '');
722
723					return output;
724				}
725
726				/**
727				 * Constructs a `groupsState` hash object using the
728				 * `getFilterGroupSelectors()` API method.
729				 *
730				 * @return {object}
731				 */
732				function getGroupsState() {
733					// NB: You will need to rename the object keys to match the names of
734					// your project's filter groups –&nbsp;these should match those defined
735					// in your HTML.
736					var groupsState = {
737						media: mixer.getFilterGroupSelectors('media').map(getValueFromSelector),
738						topics: mixer.getFilterGroupSelectors('topics').map(getValueFromSelector),
739						years: mixer.getFilterGroupSelectors('years').map(getValueFromSelector)
740					};
741
742					return groupsState;
743				}
744
745				/**
746				 * Updates the URL hash whenever the current filter changes.
747				 *
748				 * @param   {mixitup.State} state
749				 * @return  {void}
750				 */
751				function setHash(state) {
752					var selector = state.activeFilter.selector;
753
754					// Construct an object representing the current state of each
755					// filter group
756					var groupsState = getGroupsState();
757
758					// Create a URL hash string by serializing the groupsState object
759					var newHash = '#' + serializeGroupsState(groupsState);
760
761					if (selector === targetSelector && window.location.hash) {
762						// Equivalent to filter "all", remove the hash=
763						activeHash = '';
764
765						history.pushState(null, document.title, window.location.pathname); // or `history.replaceState()`
766					} else if (newHash !== window.location.hash && selector !== targetSelector) {
767						// Change the hash
768						activeHash = newHash;
769
770						history.pushState(null, document.title, window.location.pathname + newHash); // or `history.replaceState()`
771					}
772
773					generateFilterPills();
774				}
775
776				/**
777				 * Filters the mixer and updates the multifilter UI using a provided
778				 * groupsState object.
779				 *
780				 * @param  {object|null}    groupsState
781				 * @param  {boolean}        [animate]
782				 * @return {Promise}
783				 */
784				function filterMixerByGroupsState(groupsState, animate) {
785					var media = (groupsState && groupsState.media) ? groupsState.media : [];
786					var topics = (groupsState && groupsState.topics) ? groupsState.topics : [];
787					var years = (groupsState && groupsState.years) ? groupsState.years : [];
788
789					mixer.setFilterGroupSelectors('media', media.map(getSelectorFromValue));
790					mixer.setFilterGroupSelectors('topics', topics.map(getSelectorFromValue));
791					mixer.setFilterGroupSelectors('years', years.map(getSelectorFromValue));
792
793					// Parse the filter groups (passing `false` will perform no animation)
794					return mixer.parseFilterGroups(animate ? true : false);
795				}
796
797				/**
798				 * Converts a selector (e.g. '.green') into a simple value (e.g. 'green').
799				 *
800				 * @param   {string} selector
801				 * @return  {string}
802				 */
803				function getValueFromSelector(selector) {
804					return selector.replace(/^./, '');
805				}
806
807				/**
808				 * Converts a simple value (e.g. 'green') into a selector (e.g. '.green').
809				 *
810				 * @param   {string} selector
811				 * @return  {string}
812				 */
813				function getSelectorFromValue(value) {
814					return '.' + value;
815				}
816
817				var groupsState = deserializeHash();
818
819				// Instantiate MixItUp
820				var mixer = mixitup(containerEl, {
821					multifilter: {
822						enable: true,
823						parseOn: 'submit'
824					},
825					animation: {
826						effects: 'fade translateZ(-100px)'
827					},
828					callbacks: {
829						onMixEnd: setHash // Call the setHash() method at the end of each operation
830					}
831				});
832
833				if (groupsState) {
834					// If a valid groupsState object is present on page load, filter the mixer
835					filterMixerByGroupsState(groupsState);
836				}
837
838				// Add an "onhashchange" handler to keep the mixer in sync as the user goes
839				// back and forward through their history.
840
841				// NB: This may or may not be the desired behavior for your project. If you don't
842				// want MixItUp operations to count as individual history items, simply use
843				// `history.replaceState()` instead of `history.pushState()` within the `setHash()`
844				// function above. In which case this handler would no longer be neccessary.
845				window.onhashchange = function() {
846					var groupsState = deserializeHash();
847					var hash        = window.location.hash;
848
849					// Compare new hash with active hash
850					if (hash === activeHash) return; // no change
851
852					activeHash = hash;
853
854					filterMixerByGroupsState(groupsState, true);
855				};
856			})()
857		} // End Filtering
858	});
859  
860  $(function() {
861  $('.current-year').text(new Date().getFullYear());
862});
863  
864</script>
864
865</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.