CINXE.COM
Ceres Policy Network | Ceres: Sustainability is the bottom line
<!-- /layout.antlers.html --> <!doctype html> <html lang="en" class="antialiased"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <link rel="preload" as="style" href="https://www.ceres.org/build/assets/site-bc2278b4.css" /><link rel="modulepreload" href="https://www.ceres.org/build/assets/site-f5535cd5.js" /><link rel="stylesheet" href="https://www.ceres.org/build/assets/site-bc2278b4.css" data-navigate-track="reload" /><script type="module" src="https://www.ceres.org/build/assets/site-f5535cd5.js" data-navigate-track="reload"></script> <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/dist/tippy.css" /> <!-- statamic-peak-seo::snippets/_seo.antlers.html --> <title> Ceres Policy Network | Ceres: Sustainability is the bottom line </title> <link rel="canonical" href="https://www.ceres.org/networks/policy"> <meta property="og:site_name" content="Ceres: Sustainability is the bottom line"> <meta property="og:type" content="website"> <meta property="og:locale" content="en_US"> <meta property="og:title" content="Ceres Policy Network"> <meta property="og:image" content="https://assets.ceres.org/cache/containers/social_images/social-media-preview.png/2e2942f777ec2f94bcfb196fcd49af51.png"> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K7574ND');function gtag(){dataLayer.push(arguments);}</script> <script> gtag('consent', 'default', { 'ad_storage': 'denied', 'analytics_storage': 'denied', 'wait_for_update': 500 }); dataLayer.push({ 'event': 'default_consent' }); </script> <!-- End: statamic-peak-seo::snippets/_seo.antlers.html --> <!-- /snippets/_browser_appearance.antlers.html --> <link rel="icon" href="https://assets.ceres.org/images/favicons/ceres_logo.svg" type="image/svg+xml"> <link rel="icon" href="/favicons/default/favicon.ico" type="image/x-icon"> <link rel="icon" href="https://assets.ceres.org/cache/containers/favicons/ceres_logo.png/745e90b115200c251a72efe551a21a93.png" sizes="16x16"> <link rel="icon" href="https://assets.ceres.org/cache/containers/favicons/ceres_logo.png/604ff9f514f749ad9c374c18a9fdfc07.png" sizes="32x32"> <link rel="manifest" href="https://www.ceres.org/site.webmanifest"> <!-- End: /snippets/_browser_appearance.antlers.html --> <script src="https://75fc01f3120645c39e3c70274c82795f.js.ubembed.com" async></script> <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}</style> <script>(function(w,d,s,n,a){if(!w[n]){var l='call,catch,on,once,set,then,track' .split(','),i,o=function(n){return'function'==typeof n?o.l.push([arguments])&&o :function(){return o.l.push([n,arguments])&&o}},t=d.getElementsByTagName(s)[0], j=d.createElement(s);j.async=!0;j.src='https://cdn.fundraiseup.com/widget/'+a+''; t.parentNode.insertBefore(j,t);o.s=Date.now();o.v=4;o.h=w.location.href;o.l=[]; for(i=0;i<7;i++)o[l[i]]=o(l[i]);w[n]=o} })(window,document,'script','FundraiseUp','ADRUXVPU');</script> </head> <body class="overflow-x-hidden"> <!-- statamic-peak-tools::snippets/_noscript.antlers.html --> <noscript> <style> nav.hidden, nav ul [x-cloak], nav ul li ul { display: block !important; } </style> <p class="relative z-50 py-3 px-4 bg-gray-100 border-b border-gray-200 text-center font-bold text-xs text-gray-600">This website requires Javascript for some parts to function properly. Your experience may vary.</p> </noscript> <!-- End: statamic-peak-tools::snippets/_noscript.antlers.html --> <!-- statamic-peak-tools::navigation/_skip_to_content.antlers.html --> <a class="fixed z-50 px-4 py-2 text-sm font-bold text-white -translate-y-24 opacity-0 top-4 left-8 bg-primary focus-visible:translate-y-0 focus-visible:opacity-100 outline-primary motion-safe:transition-transform" href="#content"> Skip to content </a> <!-- End: statamic-peak-tools::navigation/_skip_to_content.antlers.html --> <!-- statamic-peak-tools::components/_toolbar.antlers.html --> <!-- End: statamic-peak-tools::components/_toolbar.antlers.html --> <!-- statamic-peak-seo::components/_consent_banner.antlers.html --> <div x-data="consentBanner" x-show="!$store.consentBanner.getConsent()" x-transition class=" fixed z-[1000] inset-x-[1rem] bottom-[1rem] md:bottom-[2rem] max-h-[calc(100vh-2rem)] md:max-h-[calc(100vh-4rem)] md:w-[21rem] flex flex-col stack-2 p-6 bg-white border border-neutral/10 rounded shadow-lg overflow-auto overscroll-contain md:right-auto md:left-[2rem] " x-cloak > <h2 class="text-2xl font-bold">Cookies 🍪</h2> <p class="text-sm font-bold text-neutral"> This site uses cookies that need consent. </p> <div class="stack-space-4 py-6 flex flex-col gap-4"> <template x-for="type in $store.consentBanner.getConsentTypes()"> <label class="inline-flex"> <template x-if="type.disabled"> <input class="mr-2 w-4 h-4 rounded border-neutral !bg-cw-green-200 focus:border-cw-green-200 opacity-50" type="checkbox" :name="type.handle" checked disabled> </template> <template x-if="!type.disabled"> <input class="mr-2 w-4 h-4 rounded border-neutral checked:!bg-cw-green-200 focus:border-cw-green-200" type="checkbox" :name="type.handle" x-model="type.value"> </template> <span class="flex flex-col gap-0.5"> <span class="font-bold text-xs" x-html="type.title"></span> <span class="text-xs" x-html="type.explanation"></span> </span> </label> </template> </div> <div class="stack-space-4 flex flex-wrap gap-2"> <button @click="$store.consentBanner.acceptAll()" type="button" class="px-2 py-2 rounded text-xs font-bold bg-cw-green-200 text-white outline-primary"> Accept all </button> <button @click="$store.consentBanner.saveConsent()" type="button" class="px-2 py-2 rounded text-xs font-bold bg-neutral/10 text-neutral"> Accept selected </button> <button @click="$store.consentBanner.rejectAll()" type="button" class="px-2 py-2 rounded text-xs font-bold bg-neutral/10 text-neutral"> Reject all </button> </div> <script> let consentData = { "consent": false, "date": null, "consent_api": true, "custom_scripts": false, "types": [ { "value": true, "handle": "functionalCookies", "title": "Functional", "explanation": "First party cookies needed for the website to function. These can't be turned off.", "disabled": true }, { "value": false, "handle": "analyticsStorage", "title": "Analytics", "explanation": "Third party cookies used for analytics.", "consent_api": true, "consent_api_handle": "analytics_storage" }, { "value": false, "handle": "adStorage", "title": "Ads & tracking", "explanation": "Third party cookies used for advertisement.", "consent_api": true, "consent_api_handle": "ad_storage" }, { "value": false, "handle": "adUserData", "title": "Share Ad Data", "explanation": "Share advertising data with Google.", "consent_api": true, "consent_api_handle": "ad_user_data" }, { "value": false, "handle": "adPersonalization", "title": "Personalize Ads", "explanation": "Allow for personalized advertising.", "consent_api": true, "consent_api_handle": "ad_personalization" }, ] } </script> <script> document.addEventListener('alpine:init', () => { Alpine.store('consentBanner', { data: Alpine.$persist(consentData).as('consentBannerDefault'), acceptAll() { this.data.types.forEach((type) => type.value = true) this.saveConsent() }, getConsent() { return this.data.consent }, getConsentAPIValues() { return this.data.types.filter((type) => { return type['consent_api'] === true }).reduce((acc, type) => { acc[type.consent_api_handle] = type.value ? 'granted' : 'denied'; return acc; }, {}); }, getCustomScripts() { return this.data.types.filter((type) => type.hasOwnProperty('script_fragments') && type.value); }, getConsentDate() { return this.data.date }, getConsentTypes() { return this.data.types }, getConsentValue(handle) { return this.data.types.filter((type) => { return type['handle'] === handle })[0]['value'] }, invalidate() { this.data = consentData }, rejectAll() { this.data.types.forEach((type) => type.value = false) this.saveConsent() }, revokeConsent() { this.data.consent = false this.data.date = null }, saveConsent() { this.data.consent = true this.data.date = Math.floor(Date.now() / 1000) }, useConsentAPI() { return this.data.consent_api }, useCustomScripts() { return this.data.custom_scripts }, useEmbeds() { return this.data.embeds } }) Alpine.data('consentBanner', () => { return { data: Alpine.store('consentBanner').data, init() { if (Alpine.store('consentBanner').getConsentDate() < '') { Alpine.store('consentBanner').invalidate() } if (Alpine.store('consentBanner').useConsentAPI() && Alpine.store('consentBanner').getConsent()) { gtag('consent', 'update', Alpine.store('consentBanner').getConsentAPIValues()) } if (Alpine.store('consentBanner').useConsentAPI()) { this.$watch('data.consent', value => value && gtag('consent', 'update', Alpine.store('consentBanner').getConsentAPIValues())) } if (Alpine.store('consentBanner').useCustomScripts() && Alpine.store('consentBanner').getConsent()) { this.runCustomScripts() } if (Alpine.store('consentBanner').useCustomScripts()) { this.$watch('data.consent', value => value ? this.runCustomScripts() : this.removeCustomScripts()) } }, runCustomScripts() { Alpine.store('consentBanner') .getCustomScripts() .flatMap(script => script.script_fragments) .forEach(script => { const tag = document.createElement('script') script.type === 'script_tag' ? tag.src = script.source : tag.text = script.inline_script tag.defer = script.defer tag.async = script.async script.attributes.forEach(attribute => tag.setAttribute(attribute.key, attribute.value)) document.head.appendChild(tag) this.$el.addEventListener(`remove-custom-scripts-${script.category}`, () => tag.remove(), {once: true}) }) }, removeCustomScripts() { Alpine.store('consentBanner') .getCustomScripts() .forEach(script => this.$dispatch(`remove-custom-scripts-${script.handle}`)) } } }) }) </script> </div> <!-- End: statamic-peak-seo::components/_consent_banner.antlers.html --> <section> </section> <nav x-data="{ activeButton: null, activeSubMenu: null, activeSection: null, isMenuOpen: false, closeAllSubMenus: function() { this.activeButton = null; this.activeSubMenu = null; }, isSearchOpen: false, }" @keydown.escape.window="activeButton = null; activeSubMenu = null;" class="overflow-hidden" > <div class="bg-white relative border-b border-b-cw-green-50/40 z-[500]"> <div class="container flex flex-col lg:flex-row justify-between py-5"> <div class="flex xl:flex-row gap-10 justify-between w-full md:w-auto items-center"> <!-- /components/_logo.antlers.html --> <a aria-label="Logo Ceres" href="/" > <img src="/visuals/logo-dark.svg" class="select-none " width="" alt="Ceres"/> </a> <!-- End: /components/_logo.antlers.html --> <div class="flex flex-row items-center gap-5"> <button title="Search" aria-label="Search" class="inline-block lg:hidden" @click="isSearchOpen = !isSearchOpen;"> <svg width="20" height="20" class="cursor-pointer" aria-hidden="true" fill="none" stroke="black" viewBox="-1 -1 21 21"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"/> </svg> </button> <button type="button" class="inline-flex items-center p-2 w-10 h-10 justify-center text-sm text-white rounded-lg lg:hidden focus:outline-none" aria-controls="mega-menu-full" aria-expanded="false" @click="isMenuOpen = !isMenuOpen; closeAllSubMenus()" @keydown.escape.window="isMenuOpen = false; closeAllSubMenus()" x-bind:aria-expanded="isMenuOpen.toString()" > <span class="sr-only">Open main menu</span> <svg class="w-5 h-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="#72c100" viewBox="0 0 17 14"> <path stroke="#9CDD36" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M1 1h15M1 7h15M1 13h15"/> </svg> </button> </div> </div> <div id="mega-menu-full" class="gap-5 items-center justify-between hidden w-full lg:flex lg:w-auto lg:order-1 flex-grow" :class="{ 'hidden': !isMenuOpen }"> <ul id="megaMenuItemList" @click.away=" if (!$event.target.closest('#megaMenuItemList, #megaMenuNavigation')) { activeButton = null; activeSubMenu = null; } " class="flex flex-col mt-4 py-2 font-medium lg:flex-row lg:space-x-8 lg:mt-0"> <li> <button id="mega-menu-button-1" class="flex items-center justify-between w-full py-1 hover:text-black text-black/80 transition-all duration-200 relative group outline-none text-lg font-medium" :class="{ '!text-cw-green-400': activeButton === 'mega-menu-button-1' }" @click="activeButton = activeButton === 'mega-menu-button-1' ? null : 'mega-menu-button-1'; activeSubMenu = activeSubMenu === 'mega-menu-1' ? null : 'mega-menu-1'; activeSection = null" > Our work <span class="absolute w-12 h-0.5 bg-white bottom-0 left-0 group-hover:opacity-100 transition-all duration-200 ease-in-out opacity-0" :class="{ 'opacity-100': activeButton === 'mega-menu-button-1' }"></span> </button> </li> <li> <button id="mega-menu-button-2" class="flex items-center justify-between w-full py-1 hover:text-black text-black/80 transition-all duration-200 relative group outline-none text-lg font-medium" :class="{ '!text-cw-green-400': activeButton === 'mega-menu-button-2' }" @click="activeButton = activeButton === 'mega-menu-button-2' ? null : 'mega-menu-button-2'; activeSubMenu = activeSubMenu === 'mega-menu-2' ? null : 'mega-menu-2'; activeSection = null" > Get involved <span class="absolute w-12 h-0.5 bg-white bottom-0 left-0 group-hover:opacity-100 transition-all duration-200 ease-in-out opacity-0" :class="{ 'opacity-100': activeButton === 'mega-menu-button-2' }"></span> </button> </li> <li> <button id="mega-menu-button-3" class="flex items-center justify-between w-full py-1 hover:text-black text-black/80 transition-all duration-200 relative group outline-none text-lg font-medium" :class="{ '!text-cw-green-400': activeButton === 'mega-menu-button-3' }" @click="activeButton = activeButton === 'mega-menu-button-3' ? null : 'mega-menu-button-3'; activeSubMenu = activeSubMenu === 'mega-menu-3' ? null : 'mega-menu-3'; activeSection = null" > Resources <span class="absolute w-12 h-0.5 bg-white bottom-0 left-0 group-hover:opacity-100 transition-all duration-200 ease-in-out opacity-0" :class="{ 'opacity-100': activeButton === 'mega-menu-button-3' }"></span> </button> </li> <li> <button id="mega-menu-button-4" class="flex items-center justify-between w-full py-1 hover:text-black text-black/80 transition-all duration-200 relative group outline-none text-lg font-medium" :class="{ '!text-cw-green-400': activeButton === 'mega-menu-button-4' }" @click="activeButton = activeButton === 'mega-menu-button-4' ? null : 'mega-menu-button-4'; activeSubMenu = activeSubMenu === 'mega-menu-4' ? null : 'mega-menu-4'; activeSection = null" > About Ceres <span class="absolute w-12 h-0.5 bg-white bottom-0 left-0 group-hover:opacity-100 transition-all duration-200 ease-in-out opacity-0" :class="{ 'opacity-100': activeButton === 'mega-menu-button-4' }"></span> </button> </li> </ul> <div class="flex flex-row items-center gap-6"> <button title="Search" aria-label="Search" class="hidden lg:inline-block" @click=" isSearchOpen = !isSearchOpen; $nextTick(() => { if (isSearchOpen) { requestAnimationFrame(() => { document.getElementById('navSearchField').focus(); }) } }); "> <svg width="20" height="20" class="stroke-black" class="cursor-pointer text-cw-green-400" aria-hidden="true" fill="none" viewBox="-3 -3 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"/> </svg> </button> <!-- /components/_button.antlers.html --> <a class=" cursor-pointer py-3 px-8 rounded-full select-none whitespace-nowrap items-start self-start hidden xl:inline-block bg-cw-green-200 font-bold text-white text-lg [&_svg]:stroke-white [&_svg]:fill-white <!-- Adds extra space for mobile browsers to click on links if button requires it. --> " href="#XLXBXUKE" > <div class="flex flex-row text-center items-center justify-center gap-2" wire:click=""> Donate </div> </a> <!-- End: /components/_button.antlers.html --> <script> <a href="#XLXBXUKE" style="display: none"></a> </script> </div> </div> </div> </div> <div class="w-full bg-white p-5" x-show="isSearchOpen" x-cloak> <div class="container"> <form action="/search" class="" x-data="{ query: '' }"> <label for="nav-search" class="mb-2 text-sm font-medium sr-only">Search</label> <div class="relative flex flex-row gap-2 items-center"> <input id="navSearchField" type="search" name="q" class="bg-transparent border-cw-green-800 w-full focus:border-cw-green-800 rounded-md py-3 px-6" placeholder="Search" autocomplete="off" x-model="query" > <div x-bind:class="{'opacity-50': query.trim() === ''}"> <button type="submit" class="py-3 px-8 rounded-full select-none whitespace-nowrap items-start self-start inline-block bg-cw-green-200 font-bold text-white text-lg" :disabled="query.trim() === ''" x-bind:class="{'cursor-not-allowed opacity-50': query.trim() === ''}" x-bind:aria-disabled="query.trim() === ''" > <div class="flex flex-row text-center items-center justify-center gap-2"> Search </div> </button> </div> </div> </form> </div> </div> <div class="absolute w-full z-[300]"> <div class="lg:container bg-white lg:bg-transparent [&_a]:before:hidden [&_a]:md:before:block [&_a]:relative [&_a]:before:opacity-0 [&_a]:before:transition-opacity hover:[&_a]:before:opacity-100 [&_a]:before:bg-cw-green-150/10 [&_a]:before:w-[calc(100%+1.5rem)] [&_a]:before:h-full [&_a]:before:absolute [&_a]:before:rounded-md [&_a]:before:-left-3"> <div id="megaMenuNavigation" class="container md:max-w-full md:px-0 pb-2 lg:pb-0 overflow-hidden"> <div id="mega-menu-1" class="bg-white hidden" :class="{ 'hidden': activeSubMenu !== 'mega-menu-1' }"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 relative gap-0 col-span-full "> <span class="hidden md:block absolute bg-gradient-to-b from-black/20 to-transparent top-0 w-full h-2 z-50"></span> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 col-span-full md:col-span-8 md:gap-x-4 lg:gap-x-8 xl:gap-x-16 pt-6 md:px-8 lg:py-10 "> <div class="col-span-full md:col-span-4"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'help-our-work-0' ? null : 'help-our-work-0'" class="mb-5 md:mb-0 col-span-full lg:col-span-3 pb-2 border-b-2 border-black text-sm cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed text-base">Issues we work on</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'help-our-work-0' ? 'max-h-[1200px]' : 'max-h-0'" class="transition-all duration-500 ease-in-out col-span-3 overflow-hidden md:overflow-visible md:max-h-full"> <div class="flex flex-col gap-3 md:gap-2"> <a href="/climate" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Climate crisis</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Advancing climate solutions for a zero emissions future.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/nature" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Nature and biodiversity loss</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Restoring and preserving our natural ecosystems.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/water" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Water scarcity and pollution</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Protecting our precious global water resources.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> <div class="col-span-full md:col-span-8"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'know-our-work-0' ? null : 'know-our-work-0'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Sectors we work in</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'know-our-work-0' ? 'max-h-[1200px]' : 'max-h-0'" class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 md:gap-y-2 gap-y-3 lg:gap-x-8 "> <a href="/banking" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Banking</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Financing the transition to a low-carbon economy.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/food" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Food and beverage</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Building a more just and sustainable food system.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/oil-and-gas" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Oil and gas</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Transitioning away from fossil fuels.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/transportation" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Transportation</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Cutting emissions and driving innovation.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/steel" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Steel</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Reducing climate impacts in the built environment.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/electric-power" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Electric power</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Transforming the electric utility landscape.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/accelerator/insurance" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Insurance</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Addressing risk and seizing new opportunities.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/sectors" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">More sectors</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">We work across nearly all sectors of the economy.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> </div> <div class=" gap-0 col-span-full md:col-span-4 relative pb-6 md:px-8 md:pt-6 lg:py-10 md:bg-cw-green-50 " > <div class="relative"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'latest-our-work-0' ? null : 'latest-our-work-0'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Latest resources</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out" :class="activeSection === 'latest-our-work-0' ? 'max-h-[1200px]' : 'max-h-0'"> <div class="flex flex-col gap-1 md:gap-5"> <a href="/resources/reports/ceres-10-point-plan-for-the-insurance-industry" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/istock-2075186172.jpg/19fd11180f4f3bfef44b97eb8984ea78/istock-2075186172.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Ceres 10-Point Plan for the Insurance Industry </h4> </div> </div> </div> </a> <a href="/resources/reports/benchmarking-air-emissions-of-the-100-largest-electric-power-producers-in-the-united-states" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/adobestock_621084085.jpeg/3ffa4a6289808eca93d9fac90b0b0c2d/adobestock_621084085.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Benchmarking Air Emissions of the 100 Largest Electric Power Producers in the United States </h4> </div> </div> </div> </a> </div> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed mb-5 md:mb-0 pb-2 border-b-2 border-black">Quick finds</p> <!-- End: /typography/_p.antlers.html --> <div class="flex flex-row md:flex-col gap-5 md:gap-4 justify-between md:justify-start hover:[&_a]:text-cw-green-250"> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="https://www.ceres.org/support" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Support our work</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/resources/news" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">News and insights</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/events" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Events and webinars</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> </div> </div> </div> </div> <span class="bg-cw-green-200 hidden lg:block absolute left-0 right-0 bottom-0 py-2 text-white"></span> </div> </div> <div id="mega-menu-2" class="bg-white hidden" :class="{ 'hidden': activeSubMenu !== 'mega-menu-2' }"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 relative gap-0 col-span-full "> <span class="hidden md:block absolute bg-gradient-to-b from-black/20 to-transparent top-0 w-full h-2 z-50"></span> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 col-span-full md:col-span-8 md:gap-x-4 lg:gap-x-8 xl:gap-x-16 pt-6 md:px-8 lg:py-10 "> <div class="col-span-full md:col-span-4"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'help-get-involved-1' ? null : 'help-get-involved-1'" class="mb-5 md:mb-0 col-span-full lg:col-span-3 pb-2 border-b-2 border-black text-sm cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed text-base">Who we work with</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'help-get-involved-1' ? 'max-h-[1200px]' : 'max-h-0'" class="transition-all duration-500 ease-in-out col-span-3 overflow-hidden md:overflow-visible md:max-h-full"> <div class="flex flex-col gap-3 md:gap-2"> <a href="/get-involved#investors" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Investors</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">We work with leading asset managers and owners, public pension funds, and more.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/get-involved#companies" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Companies</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">We work with leading companies, including many Fortune 500 companies.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/get-involved#small-to-mid-size-enterprises" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="block py-1 md:py-3 group before:top-1 leading-tight"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Small and midsize enterprises</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">We provide resources to support SMEs on their sustainability journey.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> <div class="col-span-full md:col-span-8"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'know-get-involved-1' ? null : 'know-get-involved-1'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Ways to get involved</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'know-get-involved-1' ? 'max-h-[1200px]' : 'max-h-0'" class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 md:gap-y-2 gap-y-3 lg:gap-x-8 "> <a href="/networks" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Join a network</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Learn more about our powerful investor, company, and policy networks.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/get-involved/initiatives" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Join an initiative</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Explore initiatives, working groups, and advocacy opportunities.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/get-involved/sponsors" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Become a sponsor</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Maximize your impact with premium benefits across the year.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/events" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Attend an event</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Engage with leading business and sustainability experts virtually and in-person.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/support" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Ways to give</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Your donation can help ensure a just and sustainable future.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/subscribe" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-6 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Subscribe</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Sign up for the latest news and updates from Ceres.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> </div> <div class=" gap-0 col-span-full md:col-span-4 relative pb-6 md:px-8 md:pt-6 lg:py-10 md:bg-cw-green-50 " > <div class="relative"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'latest-get-involved-1' ? null : 'latest-get-involved-1'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Latest resources</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out" :class="activeSection === 'latest-get-involved-1' ? 'max-h-[1200px]' : 'max-h-0'"> <div class="flex flex-col gap-1 md:gap-5"> <a href="/resources/reports/ceres-10-point-plan-for-the-insurance-industry" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/istock-2075186172.jpg/19fd11180f4f3bfef44b97eb8984ea78/istock-2075186172.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Ceres 10-Point Plan for the Insurance Industry </h4> </div> </div> </div> </a> <a href="/resources/reports/benchmarking-air-emissions-of-the-100-largest-electric-power-producers-in-the-united-states" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/adobestock_621084085.jpeg/3ffa4a6289808eca93d9fac90b0b0c2d/adobestock_621084085.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Benchmarking Air Emissions of the 100 Largest Electric Power Producers in the United States </h4> </div> </div> </div> </a> </div> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed mb-5 md:mb-0 pb-2 border-b-2 border-black">Quick finds</p> <!-- End: /typography/_p.antlers.html --> <div class="flex flex-row md:flex-col gap-5 md:gap-4 justify-between md:justify-start hover:[&_a]:text-cw-green-250"> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="https://www.ceres.org/support" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Support our work</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/resources/news" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">News and insights</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/events" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Events and webinars</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> </div> </div> </div> </div> <span class="bg-cw-green-200 hidden lg:block absolute left-0 right-0 bottom-0 py-2 text-white"></span> </div> </div> <div id="mega-menu-3" class="bg-white hidden" :class="{ 'hidden': activeSubMenu !== 'mega-menu-3' }"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 relative gap-0 col-span-full "> <span class="hidden md:block absolute bg-gradient-to-b from-black/20 to-transparent top-0 w-full h-2 z-50"></span> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 col-span-full md:col-span-8 md:gap-x-4 lg:gap-x-8 xl:gap-x-16 pt-6 md:px-8 lg:py-10 "> <div class="col-span-full "> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'know-resources-2' ? null : 'know-resources-2'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Select a resource</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'know-resources-2' ? 'max-h-[1200px]' : 'max-h-0'" class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 md:gap-y-2 gap-y-3 lg:gap-x-8 "> <a href="/resources/reports" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Reports</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">View our cutting-edge research and analysis to learn about sustainability risks, opportunities, and solutions.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/resources/assessments" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Benchmarks and assessments</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">See the progress businesses are making toward their sustainability goals.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/events" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Events and webinars</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Hear from leading business and sustainability experts virtually and in-person.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/resources/news" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">News and insights</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Read our latest press releases and statements and expert commentary.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/resources/tools" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Tools</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Use our interactive tools to support your company or investment firm’s sustainability journey.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> <a href="/resources" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="w-fit min-w-24 h-fit py-2 before:top-0.5 hidden md:block"> <div class="flex flex-row items-center gap-3 pb-2 relative after:absolute after:h-0.5 after:w-24 after:bg-cw-green-800 after:bottom-0 mb-4 md:mb-0"> <!-- /typography/_h3.antlers.html --> <h3 class="text-base font-semibold text-nowrap">View all resources</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="w-[10px] h-[10px] inline fill-black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </div> </a> </div> <div class=" gap-0 col-span-full md:col-span-4 relative pb-6 md:px-8 md:pt-6 lg:py-10 md:bg-cw-green-50 " > <div class="relative"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'latest-resources-2' ? null : 'latest-resources-2'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Latest resources</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out" :class="activeSection === 'latest-resources-2' ? 'max-h-[1200px]' : 'max-h-0'"> <div class="flex flex-col gap-1 md:gap-5"> <a href="/resources/reports/ceres-10-point-plan-for-the-insurance-industry" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/istock-2075186172.jpg/19fd11180f4f3bfef44b97eb8984ea78/istock-2075186172.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Ceres 10-Point Plan for the Insurance Industry </h4> </div> </div> </div> </a> <a href="/resources/reports/benchmarking-air-emissions-of-the-100-largest-electric-power-producers-in-the-united-states" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/adobestock_621084085.jpeg/3ffa4a6289808eca93d9fac90b0b0c2d/adobestock_621084085.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Benchmarking Air Emissions of the 100 Largest Electric Power Producers in the United States </h4> </div> </div> </div> </a> </div> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed mb-5 md:mb-0 pb-2 border-b-2 border-black">Quick finds</p> <!-- End: /typography/_p.antlers.html --> <div class="flex flex-row md:flex-col gap-5 md:gap-4 justify-between md:justify-start hover:[&_a]:text-cw-green-250"> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="https://www.ceres.org/support" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Support our work</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/resources/news" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">News and insights</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/events" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Events and webinars</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> </div> </div> </div> </div> <span class="bg-cw-green-200 hidden lg:block absolute left-0 right-0 bottom-0 py-2 text-white"></span> </div> <a href="/resources" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="w-fit visible md:hidden"> <div class="flex flex-row items-center gap-3 pb-3 relative after:absolute after:h-0.5 after:w-24 after:bg-cw-green-800 after:bottom-0 mb-4 md:mb-0"> <!-- /typography/_h3.antlers.html --> <h3 class="text-base font-semibold">View all resources</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="w-[10px] h-[10px] inline fill-black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </div> </a> </div> <div id="mega-menu-4" class="bg-white hidden" :class="{ 'hidden': activeSubMenu !== 'mega-menu-4' }"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 relative gap-0 col-span-full "> <span class="hidden md:block absolute bg-gradient-to-b from-black/20 to-transparent top-0 w-full h-2 z-50"></span> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 col-span-full md:col-span-8 md:gap-x-4 lg:gap-x-8 xl:gap-x-16 pt-6 md:px-8 lg:py-10 "> <div class="col-span-full "> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'know-about-ceres-3' ? null : 'know-about-ceres-3'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Learn more about us</p> <!-- End: /typography/_p.antlers.html --> </div> <div :class="activeSection === 'know-about-ceres-3' ? 'max-h-[1200px]' : 'max-h-0'" class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 md:gap-y-2 gap-y-3 lg:gap-x-8 "> <a href="/about" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Who we are</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Learn about our mission, our history, and our values.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/about/leadership" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Leadership</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Meet our board of directors, president’s council, and leadership staff.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/about/experts" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Experts</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Meet our leading experts with deep subject matter expertise and knowledge.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/networks" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Our members</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Learn more about the investors and companies we work with.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/careers" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Careers</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Join our growing team to help make our mission a reality.</p> <!-- End: /typography/_p.antlers.html --> </a> <a href="/about/annual-report" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="tracking-tight block col-span-full py-1 md:py-3 before:top-1 md:col-span-4 group"> <!-- /typography/_h3.antlers.html --> <h3 class="font-bold mb-2 text-base transition-colors group-hover:text-cw-green-200">Annual Report</h3> <!-- End: /typography/_h3.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed leading-tight">Read about our impact and the progress we’ve made thanks to supporters.</p> <!-- End: /typography/_p.antlers.html --> </a> </div> </div> </div> </div> <a href="/about" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="w-fit min-w-24 h-fit py-2 before:top-0.5 hidden md:block"> <div class="flex flex-row items-center gap-3 pb-2 relative after:absolute after:h-0.5 after:w-24 after:bg-cw-green-800 after:bottom-0 mb-4 md:mb-0"> <!-- /typography/_h3.antlers.html --> <h3 class="text-base font-semibold text-nowrap">See all about Ceres</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="w-[10px] h-[10px] inline fill-black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </div> </a> </div> <div class=" gap-0 col-span-full md:col-span-4 relative pb-6 md:px-8 md:pt-6 lg:py-10 md:bg-cw-green-50 " > <div class="relative"> <div class="flex flex-col gap-0 md:gap-5"> <div @click="activeSection = activeSection === 'latest-about-ceres-3' ? null : 'latest-about-ceres-3'" class="mb-5 md:mb-0 pb-2 border-b-2 border-black cursor-pointer md:cursor-default"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Latest resources</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="md:max-h-full overflow-hidden md:overflow-visible transition-all duration-500 ease-in-out" :class="activeSection === 'latest-about-ceres-3' ? 'max-h-[1200px]' : 'max-h-0'"> <div class="flex flex-col gap-1 md:gap-5"> <a href="/resources/reports/ceres-10-point-plan-for-the-insurance-industry" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/istock-2075186172.jpg/19fd11180f4f3bfef44b97eb8984ea78/istock-2075186172.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Ceres 10-Point Plan for the Insurance Industry </h4> </div> </div> </div> </a> <a href="/resources/reports/benchmarking-air-emissions-of-the-100-largest-electric-power-producers-in-the-united-states" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="py-3 before:top-0"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 mb-5 md:mb-0 "> <div class="col-span-5 relative h-24"> <img src="https://assets.ceres.org/cache/containers/images/adobestock_621084085.jpeg/3ffa4a6289808eca93d9fac90b0b0c2d/adobestock_621084085.webp" alt="" class="w-full h-full object-cover rounded-lg absolute min-h-12"> </div> <div class="flex flex-col col-span-7 gap-2"> <div class="flex flex-col col-span-7 gap-1"> <p class="text-sm uppercase font-semibold text-black/50"> Report </p> <h4 class="leading-tight"> Benchmarking Air Emissions of the 100 Largest Electric Power Producers in the United States </h4> </div> </div> </div> </a> </div> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed mb-5 md:mb-0 pb-2 border-b-2 border-black">Quick finds</p> <!-- End: /typography/_p.antlers.html --> <div class="flex flex-row md:flex-col gap-5 md:gap-4 justify-between md:justify-start hover:[&_a]:text-cw-green-250"> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="https://www.ceres.org/support" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Support our work</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/resources/news" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">News and insights</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> <a class="cursor-pointer py-2 md:py-3 rounded-md w-fit relative before:top-0" href="/events" > <div class="flex flex-row gap-2 items-center relative"> <!-- /typography/_h3.antlers.html --> <h3 class="font-semibold text-base">Events and webinars</h3> <!-- End: /typography/_h3.antlers.html --> </div> </a> </div> </div> </div> </div> <span class="bg-cw-green-200 hidden lg:block absolute left-0 right-0 bottom-0 py-2 text-white"></span> </div> <a href="/about" @click="if ($event.target.href.includes('#')) isMenuOpen = false; closeAllSubMenus();" class="w-fit visible md:hidden"> <div class="flex flex-row items-center gap-3 pb-3 relative after:absolute after:h-0.5 after:w-24 after:bg-cw-green-800 after:bottom-0 mb-4 md:mb-0"> <!-- /typography/_h3.antlers.html --> <h3 class="text-base font-semibold">See all about Ceres</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="w-[10px] h-[10px] inline fill-black" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </div> </a> </div> </div> </div> </div> <span class="fixed w-full top-0 h-full bg-black/50 z-[80] opacity-0 transition-opacity pointer-events-none" :class="activeSubMenu ? 'opacity-100' : null"></span> </nav> <script> let currentOpenMenu; [...document.querySelectorAll("[data-collapse-toggle]")].forEach((button) => { button.addEventListener('click', (event) => { const targetId = event.currentTarget.getAttribute('data-collapse-toggle'); const targetElem = document.getElementById(targetId); // If there is a currently open menu and it's not the one being clicked, hide it if (currentOpenMenu && currentOpenMenu !== targetElem) { currentOpenMenu.classList.add('hidden'); } // If the clicked menu is already open, hide it. Otherwise, show it. if (targetElem === currentOpenMenu) { targetElem.classList.add('hidden'); currentOpenMenu = null; } else if (targetElem) { targetElem.classList.remove('hidden'); currentOpenMenu = targetElem; } }); }); </script> <!-- /default.antlers.html --> <main id="content"> <!-- /page_builder/_hero_banner.antlers.html --> <section class="bg-cw-green-800 text-white overflow-hidden"> <div x-data="{ translateX: 0 }" x-init="() => { function updateTranslate() { let containerWidth = $el.offsetWidth; let containerPaddingRight = parseInt(window.getComputedStyle($el).paddingRight, 10); let screenWidth = window.innerWidth; translateX = (screenWidth - containerWidth) / 2 + containerPaddingRight; } updateTranslate(); window.addEventListener('resize', updateTranslate); return () => window.removeEventListener('resize', updateTranslate); }" class="container relative z-50"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 relative "> <div class="flex flex-col lg:col-span-7 py-12 justify-center col-span-full gap-4 sm:gap-8 z-20"> <h1 class="text-5xl xl:text-[81px] font-bold leading-[107%] [&_p]:inline [&_p_>_span]:font-semibold"> Ceres Policy Network </h1> <div class="flex flex-col gap-8"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed text-xl lg:text-2xl">At more than 80 members strong, the Ceres Policy Network represents some of the most well-known brands in the U.S. that have emerged as leading advocates for climate and clean energy policies and regulations.</p> <!-- End: /typography/_p.antlers.html --> <!-- /components/_button.antlers.html --> <a class=" cursor-pointer inline-flex rounded-full select-none whitespace-nowrap items-start self-start py-2 px-5 bg-cw-green-200 font-bold text-white text-lg [&_svg]:stroke-white [&_svg]:fill-white <!-- Adds extra space for mobile browsers to click on links if button requires it. --> " href="#join" > <div class="flex flex-row text-center items-center justify-center gap-2" wire:click=""> Learn how to join <svg width="14" height="14" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </div> </a> <!-- End: /components/_button.antlers.html --> </div> </div> <div class="col-span-5 absolute min-h-[30dvh] lg:relative w-full h-full md:block"> <div class="absolute right-0 h-full"> <img src="https://assets.ceres.org/cache/containers/images/resource-thumbnails-banners/lead-thumbnail.png/e4de0dcdaedc844c76884221fc182674.webp" alt="Ceres and companies meet with Senator Chuck Schumer" alt="Ceres and companies meet with Senator Chuck Schumer" class="hidden lg:block w-full h-full object-cover opacity-20 lg:opacity-100" :style="{transform: 'translateX(' + translateX + 'px)'}"/> </div> </div> </div> </div> </section> <!-- End: /page_builder/_hero_banner.antlers.html --> <!-- class="absolute bottom-0 -translate-y-[90%] translate-x-1 xl:-translate-y-[130%]" --> <!-- /page_builder/_information_cards.antlers.html --> <section class="relative -z-20 bg-white text-black "> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 container py-16 "> <div class="p-4 md:p-6 rounded flex flex-col gap-3 shadow-cards text-black z-20 col-span-12 md:col-span-6 lg:col-span-4 bg-cw-green-50 text-black "> <div x-data="{ count: 0, // Initialize the count as 0 countText: '', // Initialize the text representation of the count start: 0, // This will be your starting number end: 80, // This will be your ending number duration: 3000, // This represents the duration of the count animation in milliseconds showDecimals: false // This boolean variable determines whether to show decimals or not }" x-intersect.full.once=" () => { count = start; // Assign the starting number to count // Check if both start and end are integers. If either one is not an integer, set showDecimals to true showDecimals = !(Number.isInteger(start) && Number.isInteger(end)); let startTimestamp = null; // This will be used to track the starting timestamp of the animation // Cubic easing function for a smooth count up const easeOutCubic = t => (--t) * t * t + 1; // This function will run for each frame of the animation let step = timestamp => { // Set the start timestamp for the first frame if(!startTimestamp) startTimestamp = timestamp; // Calculate the progress of the animation, capped at 1 const progress = Math.min((timestamp - startTimestamp) / duration, 1); // Update count based on the progress. The count will smoothly increase from start to end count = start + (end - start) * easeOutCubic(progress); // Update the text representation of the count countText = showDecimals ? count.toFixed(1) : Math.round(count); // Request the next frame of the animation if the progress hasn't reached 1 if(progress < 1) requestAnimationFrame(step); }; // Start the animation requestAnimationFrame(step); } "> <h3 class="text-5xl md:text-6xl text-cw-green-200 font-bold"> <span class="font-black"> <span x-text="countText.toLocaleString()"></span>+ </span> </h3> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">members from some of the most recognizable brands in the U.S.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="p-4 md:p-6 rounded flex flex-col gap-3 shadow-cards text-black z-20 col-span-12 md:col-span-6 lg:col-span-4 bg-cw-green-50 text-black "> <div x-data="{ count: 0, // Initialize the count as 0 countText: '', // Initialize the text representation of the count start: 0, // This will be your starting number end: 15, // This will be your ending number duration: 3000, // This represents the duration of the count animation in milliseconds showDecimals: false // This boolean variable determines whether to show decimals or not }" x-intersect.full.once=" () => { count = start; // Assign the starting number to count // Check if both start and end are integers. If either one is not an integer, set showDecimals to true showDecimals = !(Number.isInteger(start) && Number.isInteger(end)); let startTimestamp = null; // This will be used to track the starting timestamp of the animation // Cubic easing function for a smooth count up const easeOutCubic = t => (--t) * t * t + 1; // This function will run for each frame of the animation let step = timestamp => { // Set the start timestamp for the first frame if(!startTimestamp) startTimestamp = timestamp; // Calculate the progress of the animation, capped at 1 const progress = Math.min((timestamp - startTimestamp) / duration, 1); // Update count based on the progress. The count will smoothly increase from start to end count = start + (end - start) * easeOutCubic(progress); // Update the text representation of the count countText = showDecimals ? count.toFixed(1) : Math.round(count); // Request the next frame of the animation if the progress hasn't reached 1 if(progress < 1) requestAnimationFrame(step); }; // Start the animation requestAnimationFrame(step); } "> <h3 class="text-5xl md:text-6xl text-cw-green-200 font-bold"> <span class="font-black"> <span x-text="countText.toLocaleString()"></span>+ </span> </h3> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">years advocating for climate and clean energy policy solutions.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="p-4 md:p-6 rounded flex flex-col gap-3 shadow-cards text-black z-20 col-span-12 md:col-span-6 lg:col-span-4 bg-cw-green-50 text-black "> <div x-data="{ count: 0, // Initialize the count as 0 countText: '', // Initialize the text representation of the count start: 0, // This will be your starting number end: 100, // This will be your ending number duration: 3000, // This represents the duration of the count animation in milliseconds showDecimals: false // This boolean variable determines whether to show decimals or not }" x-intersect.full.once=" () => { count = start; // Assign the starting number to count // Check if both start and end are integers. If either one is not an integer, set showDecimals to true showDecimals = !(Number.isInteger(start) && Number.isInteger(end)); let startTimestamp = null; // This will be used to track the starting timestamp of the animation // Cubic easing function for a smooth count up const easeOutCubic = t => (--t) * t * t + 1; // This function will run for each frame of the animation let step = timestamp => { // Set the start timestamp for the first frame if(!startTimestamp) startTimestamp = timestamp; // Calculate the progress of the animation, capped at 1 const progress = Math.min((timestamp - startTimestamp) / duration, 1); // Update count based on the progress. The count will smoothly increase from start to end count = start + (end - start) * easeOutCubic(progress); // Update the text representation of the count countText = showDecimals ? count.toFixed(1) : Math.round(count); // Request the next frame of the animation if the progress hasn't reached 1 if(progress < 1) requestAnimationFrame(step); }; // Start the animation requestAnimationFrame(step); } "> <h3 class="text-5xl md:text-6xl text-cw-green-200 font-bold"> <span class="font-black"> <span x-text="countText.toLocaleString()"></span>+ </span> </h3> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">policy priorities enacted since 2020.</p> <!-- End: /typography/_p.antlers.html --> </div> </div> </section> <!-- End: /page_builder/_information_cards.antlers.html --> <!-- /page_builder/_wysiwyg.antlers.html --> <section class="bg-white text-black overflow-hidden"> <div id="" class="container "> <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import contents bg-white text-black hover:[&_a]:text-cw-green-800 [&_a]:decoration-cw-green-800 text-xl prose [&_ul_li]:list-disc [&_ul_li]:list-outside " > <!-- /components/_text.antlers.html --> <div class="[&_blockquote]:not-italic [&_blockquote>p]:before:content-none [&_blockquote>p]:after:content-none"> <h2>Our members weigh in where it matters most. </h2><p>Innovative policies and regulations pave the way for how we do business and are essential to achieving a cleaner, more just, and sustainable future. Through the Ceres Policy Network, we convene the most influential companies, equipping them with the necessary tools and knowledge to collectively advocate for policy and regulatory solutions at the state and federal levels. At more than 85 members strong, the Ceres Policy Network represents some of the most well-known brands in the U.S. who have emerged as leading policy advocates. </p><p>Network members are committed to supporting policies that prioritize clean energy technologies and environmental justice to unleash new industries, jobs, and economic growth. Their influential voices are respected across the political spectrum and have been crucial in securing ambitious policy and regulatory wins at all levels of government. Through in-person meetings with policymakers, sign-on advocacy letters, speaking engagements, and op-ed placement, the Ceres Policy Network provides members with numerous opportunities to demonstrate their leadership toward a just and sustainable future. </p> </div> <!-- End: /components/_text.antlers.html --> </article> <!-- End: /typography/_prose.antlers.html --> </div> </section> <!-- End: /page_builder/_wysiwyg.antlers.html --> <!-- /page_builder/_quote_with_image_or_video.antlers.html --> <section class="container py-16"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 "> <div class="md:col-span-6 col-span-full row-span-full md:col-start-1 relative items-center py-8 hidden md:block"> <div class="w-full h-full relative"> <!-- Absolute image to stop container expanding to fit image and creating whitespace. --> <img src="https://assets.ceres.org/images/tonko-meeting-web.jpg" class="w-full h-full object-cover md:absolute" alt="Member meeting at the Senate"> </div> </div> <div class="order-first md:order-2 md:col-span-6 col-span-full md:col-start-7 flex flex-col px-8 md:px-12 xl:px-20 gap-4 py-16 relative shadow-cards-darker rounded-lg"> <blockquote class="sm:text-lg lg:text-2xl xl:text-3xl"> <div> <p>“Nestle is <strong><span class="text-color" style="color: #65a30d">proud to stand with industry partners</span></strong> in the Ceres Policy Network to call for ambitious climate solutions to build a more resilient economy. <strong><span class="text-color" style="color: #65a30d">Smart climate policies</span></strong> are vital to helping us achieve our<span class="text-color" style="color: #65a30d"> <strong>sustainability goals</strong></span>, and we see <span class="text-color" style="color: #000">a tremendous benefit to advocating for critical issues like climate change.”</span></p> </div> </blockquote> <div class="flex gap-8"> <div class="rounded-full border border-white overflow-hidden h-16 w-16 md:h-20 md:w-20 shrink-0"> <img src="https://assets.ceres.org/images/meg-villareal.jpeg" alt="Meg Villarreal" class="w-full h-full object-cover"> </div> <div class="flex flex-col justify-center *:mb-0"> <p class="font-bold"> Meg Villarreal </p> <p> Nestlé </p> </div> </div> </div> </div> </section> <!-- End: /page_builder/_quote_with_image_or_video.antlers.html --> <section class="bg-white text-black " x-data="{ listIsOpen: false, getFullHeight() { return this.$refs.logoContainer.scrollHeight + 'px'; } }" x-ref="section"> <div class="container py-16"> <!-- /typography/_h2.antlers.html --> <h2 class="w-full py-8 border-b-4 border-cw-green-800 font-medium text-4xl">Policy Network Members</h2> <!-- End: /typography/_h2.antlers.html --> <div class="py-12"> <div class="overflow-hidden grid grid-cols-3 md:grid-cols-5 gap-8 transition-all duration-300" :style="listIsOpen ? `max-height: ${getFullHeight()}` : 'max-height: 24rem'" x-ref="logoContainer" > <img src="https://assets.ceres.org/cache/http/images/partner-logos/adobe.png/6e784cd193796a528c03cc4e78f3b94b.webp" alt="Adobe logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/advocate-health-logo.png/f9164b5ffea9afd4784ab4d16db24640.webp" alt="Advocate Health logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/akamai.png/979620df7f8c17177accb53e5ca3d5a0.webp" alt="Akamai logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/alterra.jpeg/d711b12e0f6981146bf46c94156c6fc5.webp" alt="Alterra Mountain Company" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/ao-smith.png/3686a4c9f09ac6b2a597180076adc283.webp" alt="AO Smith logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/autodesk.png/537004c7f781748e818ebdee53845916.webp" alt="Autodesk logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/avocado-green.webp/172342da7437f2427b184f674cb539d0.webp" alt="avocado green brands logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/blab-1.jpg/40bb6d4426a58ce4563cc73a625e5348.webp" alt="B Lab logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/bath-body-works.png/e4b57a559c075cd48215e03ee2ca03a5.webp" alt="Bath & Body Works logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/ben-and-jerry.png/7054c309b3b35518538967f6e684658e.webp" alt="Ben and Jerry's logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/bonterra.png/93f7c42d3564334538d393a16a1cb869.webp" alt="Bonterra Organic Estates logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/burton.png/61f041197c02a191ea6b818b3ed69306.webp" alt="Burton logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/clif.jpg/cd38adfab042f60a6d431fa2ab3f018c.webp" alt="clif bar logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/common-spirit.png/05bd27242f65a794998586dcb7a1e93f.webp" alt="common spirit logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/dsm.png/364cdf10c65eafdf56ef82a6e41d1431.webp" alt="DSM logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/daikin.png/d99641ae0b7d45f4ed4178b1a7b75728.webp" alt="Daikin logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/danone.png/f39d22c40087d5a75813e7e85d98b9c3.webp" alt="Danone North America logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/dhl_group_logo_rgb_bg.png/006397d40759465a0eaab319472ecb49/dhl_group_logo_rgb_bg.webp" alt="DHL Group" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/images/partner-logos/diageo-logo.svg" alt="" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/eastern-bank.png/76cb59192bdaa9510cbc23cedfaa0c22.webp" alt="eastern bank logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/eaton.png/ffcfc43f4b4846aa63335d420a144c80.webp" alt="Eaton logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/ebay.png/6109651d6aa5eeed491f13d5c9e09463.webp" alt="ebay logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/eileen-fisher.png/d2366e6063aeb180e751e4511b0b8811.webp" alt="eileen fisher logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/etsy.png/cfa323833b52292a2bf2f3949c6ed748.webp" alt="Etsy logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/franklin-energy.png/eb52525a4c93d6d82f5f170f958e481b.webp" alt="Franklin Energy logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/gap.png/66a9a49e4d614c37ba2aef8e6185c935.webp" alt="Gap" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/grove.png/bbce057394136451be32a16c048520a7.webp" alt="Grove Collaborative logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/hasi.jpg/812366d9eb3f834712b1d21e03a61ef0.webp" alt="HASI logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/hp.png/926da281a9d146cf633d782ead45b668.webp" alt="HP logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/hackensack-meridian.png/512332e87863fb769192f2340bf3e318.webp" alt="hackensack meridian logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/happy-family.jpg/9257fe2bc0dd91e8f7a29fee3e1d864a.webp" alt="happy family organics logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/holcim.png/e9be28af2a49a772768ad4b89607a563.webp" alt="Holcim logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/honeywell.png/8870ded18f20844c0f7d5585a9693a19.webp" alt="Honeywell logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/ikea.png/f48df60337d97133a53a2c49a72b5f4e.webp" alt="IKEA logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/indigo.jpg/ffbf65d87e3f4b16e583a5f9ec30744d.webp" alt="Indigo Ag logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/jll.png/3e4b3c54dc3b0afda31f3cf4c766d6f6.webp" alt="JLL logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/kaiser-permanente.png/bbc70f64ed53739f07703a0d3c4d8c29.webp" alt="kaiser permanente logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/kb-home.png/9e13a544618336388bc8e75e871252ae.webp" alt="kb home logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/keurig.png/4bb3fc38538f32b90b45eea877c67356.webp" alt="keurig dr. pepper logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/levi-strauss.jpeg/055502b6499858b89fb1943a35da64a2.webp" alt="Levi Strauss & Co logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/linkedin.png/b5ed232de387af3c63a1ddbba2e1bf7c.webp" alt="linkedin logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/logitech.png/f5ccfb0790863386084a465129f8a07c.webp" alt="logitech logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/loreal.jpg/ce3cc72c1fd618de072ba236181fc75a.webp" alt="L'oreal USA logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/lucid.png/4061c5d4c91a15a96e5c86a128d6cd25.webp" alt="lucid logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/124634718_lutron_logo.png/7e3592bbd5a83886c57d2950deade5ab/124634718_lutron_logo.webp" alt="Lutron" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/mars.png/8c652c3564ecf397314a1b3b1878cf24.webp" alt="mars logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/mass-general-brigham.png/33e839c331e146126a9357f9cc06f691.webp" alt="mass general brigham logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/mcdonald%27s.png/946ca966bdf15f28f58cead731178a95.webp" alt="McDonald's logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/aug262024216pmmichelinnorthamerica_124634718_michelin_g_s_nobl_whitebg_rgb_0618.jpg/ec22851e42503423e698cb491ff4c9e3/aug262024216pmmichelinnorthamerica_124634718_michelin_g_s_nobl_whitebg_rgb_0618.webp" alt="Michelin" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/microsoft.png/8c6fde2934f805b02aa0b6ac227bf7d0.webp" alt="Microsoft logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/nsaa.png/5b8200b84eacd361419dd8c84bad48e7.webp" alt="NSAA logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/nestle.png/8fd8a71b61ca2e671635588e8895d4d2.webp" alt="Nestle logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/netflix-logo.png/ed7a6cd098c22147bf2129dba9134e01.webp" alt="Netflix logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/new-belgium.jpg/a8e441a654052881d19260f97aedaed5.webp" alt="New Belgium Brewing logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/nike-logo.png/dd6109706a9734ea6eb21093e6fddabb.webp" alt="Nike logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/north-face.png/29d4227313257a2d37fbb87270fe220a.webp" alt="The North Face logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/nucor_green.jpg/15ca6b6bd8689785592862f5c6a00e35/nucor_green.webp" alt="Nucor" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/outdoor-industry-assocation.png/1e056e5590ba4739445068a11084a8dc.webp" alt="" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/palo-alto.png/8558d0c035ac8b51b35bd9d6d129c64a.webp" alt="Palo Alto logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/images/partner-logos/patagonia.svg" alt="Patagonia logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/rei.jpg/b74b55d90a46cadb0b7d884ca6ebfcda.webp" alt="REI logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/salesforce.png/8991dc686fa91bdcdd231f3a083b09a8.webp" alt="Salesforce logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/san-francisco-airport.png/c0c8b3c1ed9e25762837465bb70a5d23.webp" alt="San Francisco Internal Airport logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/sealed.jpg/a8b2036acbe3ea136fc1eef5b6852f3e.webp" alt="Sealed logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/seventh-gen.jpeg/7ae3c48fcf4797b03c93d7228b18b1b5.webp" alt="Seventh Generation logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/siemens.png/30a22d02d87038884c74775fba47cf19.webp" alt="Siemens logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/sierra-nevada.jpg/93173dce53d2b88b3a738b5eb962f62d.webp" alt="Sierra Nevada logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/sia.jpg/bd79330234aa9f71ee51f941c0a88d04.webp" alt="SIA logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/starbucks.png/53028de50b1e6d62fbe56319076cf902.webp" alt="Starbucks logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/stonyfield.png/1e1b4f09b4cae9ed479b93e681552cac.webp" alt="Stonyfield logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/timberland.png/23474abcc34f173a765446958c4249f2.webp" alt="Timberland logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/trane.jpg/840175b64a6f6b334458b8c46aa7003e.webp" alt="trane logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/trc-logo.jpg/302ed3c024d7878d56abc8470ea1a4b8.webp" alt="TRC logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/unilever.png/c94df8ad4bcebbf877fc9f98d0c3ca2c.webp" alt="Unilever logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/vail-resorts.jpg/4a8f6dff1e10030e80f5a6d99305d05f.webp" alt="Vail Resorts logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/images/partner-logos/vf-corporation.svg" alt="VF corporation logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/workday.png/25235ee7d8f36a95f0efb87e94fcff00.webp" alt="workday logo" class="col-span-1 object-scale-down h-16 w-full" /> <img src="https://assets.ceres.org/cache/http/images/partner-logos/worthen.webp/d94f2f27e78174e0b625908ccb164dd5.webp" alt="Worthen Industries logo" class="col-span-1 object-scale-down h-16 w-full" /> </div> </div> <span class="block mx-auto w-fit" @click="listIsOpen = !listIsOpen; if (!listIsOpen) setTimeout(() => $refs.section.scrollIntoView({ behavior: 'smooth', block: 'center' }), 300);" aria-label="button" aria-roledescription="See more logos"> <button x-text="listIsOpen ? 'See Less' : 'See All'" class="block mx-auto w-fit bg-cw-green-200 font-bold text-white text-lg [&_svg]:stroke-white [&_svg]:fill-white py-3 px-8 rounded-full"></button> </span> </div> </section> <!-- End: /page_builder/_logo_list.antlers.html --> <!-- /page_builder/_text_information_accordion.antlers.html --> <section class="bg-cw-green-50"> <div class="container py-16"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 lg:grid-cols-12 gap-8 "> <div class="flex flex-col col-span-12 lg:col-span-3 gap-6"> <!-- /typography/_h2.antlers.html --> <h2 class="font-bold text-4xl">Member benefits</h2> <!-- End: /typography/_h2.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">The Ceres Policy Network offers members flexible engagement opportunities based on company needs and preferences.</p> <!-- End: /typography/_p.antlers.html --> <!-- /components/_button.antlers.html --> <a class=" cursor-pointer inline-flex py-3 px-8 rounded-full select-none whitespace-nowrap items-start self-start bg-cw-green-200 font-bold text-white text-lg [&_svg]:stroke-white [&_svg]:fill-white <!-- Adds extra space for mobile browsers to click on links if button requires it. --> " href="#join" > <div class="flex flex-row text-center items-center justify-center gap-2" wire:click=""> Learn how to join </div> </a> <!-- End: /components/_button.antlers.html --> </div> <div x-data="{ openAccordion: null }" class="flex flex-col gap-8 col-span-12 lg:col-span-9" > <div :aria-expanded="openAccordion === 0" aria-label="Accordion-0" id="accordion-0" > <div class="flex flex-col bg-white shadow-cards rounded p-6 gap-2"> <div class="relative flex items-center justify-between cursor-pointer" x-on:click="openAccordion === 0 ? openAccordion = null : openAccordion = 0" > <!-- /typography/_h2.antlers.html --> <h2 class="text-[22px] font-bold">Peer connections</h2> <!-- End: /typography/_h2.antlers.html --> <button type="button" class="text-xl transition-all duration-300 ease-in-out" :class="openAccordion === 0 ? 'rotate-45' : 'rotate-0'" aria-controls="Accordion-0" > <svg class="fill-gray-500" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="Group 570"> <rect id="Rectangle 492" x="6" width="4" height="16"/> <rect id="Rectangle 493" x="16" y="6" width="4" height="16" transform="rotate(90 16 6)"/> </g> </svg> </button> </div> <div :class="openAccordion === 0 && '!max-h-[768px] overflow-y-auto hidden-scrollbar'" class="overflow-hidden transition-all duration-500 ease-in-out max-h-14" :aria-hidden="openAccordion !== 0" :aria-labelledby="'accordion-0'" > <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import overflow-y-auto " > <p>Members benefit from unique opportunities to engage their peers on policy issues and work together to support and influence climate and clean energy legislation. </p> </article> <!-- End: /typography/_prose.antlers.html --> </div> </div> </div> <div :aria-expanded="openAccordion === 1" aria-label="Accordion-1" id="accordion-1" > <div class="flex flex-col bg-white shadow-cards rounded p-6 gap-2"> <div class="relative flex items-center justify-between cursor-pointer" x-on:click="openAccordion === 1 ? openAccordion = null : openAccordion = 1" > <!-- /typography/_h2.antlers.html --> <h2 class="text-[22px] font-bold">Advocacy opportunities</h2> <!-- End: /typography/_h2.antlers.html --> <button type="button" class="text-xl transition-all duration-300 ease-in-out" :class="openAccordion === 1 ? 'rotate-45' : 'rotate-0'" aria-controls="Accordion-1" > <svg class="fill-gray-500" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="Group 570"> <rect id="Rectangle 492" x="6" width="4" height="16"/> <rect id="Rectangle 493" x="16" y="6" width="4" height="16" transform="rotate(90 16 6)"/> </g> </svg> </button> </div> <div :class="openAccordion === 1 && '!max-h-[768px] overflow-y-auto hidden-scrollbar'" class="overflow-hidden transition-all duration-500 ease-in-out max-h-14" :aria-hidden="openAccordion !== 1" :aria-labelledby="'accordion-1'" > <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import overflow-y-auto " > <p>Members can participate in public hearings, events, and meetings with state and federal policymakers and gain access to exclusive policy briefings. </p> </article> <!-- End: /typography/_prose.antlers.html --> </div> </div> </div> <div :aria-expanded="openAccordion === 2" aria-label="Accordion-2" id="accordion-2" > <div class="flex flex-col bg-white shadow-cards rounded p-6 gap-2"> <div class="relative flex items-center justify-between cursor-pointer" x-on:click="openAccordion === 2 ? openAccordion = null : openAccordion = 2" > <!-- /typography/_h2.antlers.html --> <h2 class="text-[22px] font-bold">Access to experts</h2> <!-- End: /typography/_h2.antlers.html --> <button type="button" class="text-xl transition-all duration-300 ease-in-out" :class="openAccordion === 2 ? 'rotate-45' : 'rotate-0'" aria-controls="Accordion-2" > <svg class="fill-gray-500" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="Group 570"> <rect id="Rectangle 492" x="6" width="4" height="16"/> <rect id="Rectangle 493" x="16" y="6" width="4" height="16" transform="rotate(90 16 6)"/> </g> </svg> </button> </div> <div :class="openAccordion === 2 && '!max-h-[768px] overflow-y-auto hidden-scrollbar'" class="overflow-hidden transition-all duration-500 ease-in-out max-h-14" :aria-hidden="openAccordion !== 2" :aria-labelledby="'accordion-2'" > <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import overflow-y-auto " > <p>Members have direct access to Ceres in-house experts, who offer timely, reliable information on policy solutions and responsible policy engagement. Members can also take advantage of our annual Policy Outlook, which provides a comprehensive guide on key policy priorities for the year ahead. </p> </article> <!-- End: /typography/_prose.antlers.html --> </div> </div> </div> <div :aria-expanded="openAccordion === 3" aria-label="Accordion-3" id="accordion-3" > <div class="flex flex-col bg-white shadow-cards rounded p-6 gap-2"> <div class="relative flex items-center justify-between cursor-pointer" x-on:click="openAccordion === 3 ? openAccordion = null : openAccordion = 3" > <!-- /typography/_h2.antlers.html --> <h2 class="text-[22px] font-bold">Enhanced visibility</h2> <!-- End: /typography/_h2.antlers.html --> <button type="button" class="text-xl transition-all duration-300 ease-in-out" :class="openAccordion === 3 ? 'rotate-45' : 'rotate-0'" aria-controls="Accordion-3" > <svg class="fill-gray-500" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="Group 570"> <rect id="Rectangle 492" x="6" width="4" height="16"/> <rect id="Rectangle 493" x="16" y="6" width="4" height="16" transform="rotate(90 16 6)"/> </g> </svg> </button> </div> <div :class="openAccordion === 3 && '!max-h-[768px] overflow-y-auto hidden-scrollbar'" class="overflow-hidden transition-all duration-500 ease-in-out max-h-14" :aria-hidden="openAccordion !== 3" :aria-labelledby="'accordion-3'" > <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import overflow-y-auto " > <p>Members enjoy enhanced visibility of their policy leadership through media opportunities, including press events, social media, and op-ed placements. Additionally, they are publicly recognized on the Ceres website and in press and marketing materials. </p> </article> <!-- End: /typography/_prose.antlers.html --> </div> </div> </div> <div :aria-expanded="openAccordion === 4" aria-label="Accordion-4" id="accordion-4" > <div class="flex flex-col bg-white shadow-cards rounded p-6 gap-2"> <div class="relative flex items-center justify-between cursor-pointer" x-on:click="openAccordion === 4 ? openAccordion = null : openAccordion = 4" > <!-- /typography/_h2.antlers.html --> <h2 class="text-[22px] font-bold">Events and communications</h2> <!-- End: /typography/_h2.antlers.html --> <button type="button" class="text-xl transition-all duration-300 ease-in-out" :class="openAccordion === 4 ? 'rotate-45' : 'rotate-0'" aria-controls="Accordion-4" > <svg class="fill-gray-500" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <g id="Group 570"> <rect id="Rectangle 492" x="6" width="4" height="16"/> <rect id="Rectangle 493" x="16" y="6" width="4" height="16" transform="rotate(90 16 6)"/> </g> </svg> </button> </div> <div :class="openAccordion === 4 && '!max-h-[768px] overflow-y-auto hidden-scrollbar'" class="overflow-hidden transition-all duration-500 ease-in-out max-h-14" :aria-hidden="openAccordion !== 4" :aria-labelledby="'accordion-4'" > <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import overflow-y-auto " > <p>Members have opportunities to attend Ceres-hosted events such as Ceres Global, as well as advocacy days like LEAD on a Clean Economy, providing networking and learning opportunities. Members also receive a monthly newsletter that highlights relevant news updates, engagement opportunities, and noteworthy events. </p> </article> <!-- End: /typography/_prose.antlers.html --> </div> </div> </div> </div> </div> </div> </section> <!-- End: /page_builder/_text_information_accordion.antlers.html --> <!-- /page_builder/_featured_resources.antlers.html --> <section class="bg-white text-black "> <div class="container py-16"> <div> <!-- /typography/_h2.antlers.html --> <h2 class="font-bold text-4xl">Explore our policy priorities</h2> <!-- End: /typography/_h2.antlers.html --> <br /> <div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed text-md md:max-w-4xl">Each year, our annual Policy Outlook showcases the opportunities for member companies to push for innovative policies and regulations at both the state and federal levels.</p> <!-- End: /typography/_p.antlers.html --> </div> </div> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" my-8 grid grid-cols-1 lg:grid-cols-3 gap-8 mb-8 "> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden "> <a href="/resources/reports/ceres-2024-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/columns-2024-policy-outlook.png/dc0d08bb0a85e8d570d78fd8694129c8.webp" alt="" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Jan 10, 2024 </div> <div class="text-lg font-bold "> Ceres 2024 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden "> <a href="/resources/reports/ceres-2023-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/policy-outlook-2023-hero.png/d6edbb15bf07153db66cd5e69e3caa56.webp" alt="" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Jan 30, 2023 </div> <div class="text-lg font-bold "> Ceres 2023 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden "> <a href="/resources/reports/ceres-2022-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/policy-outlook-2022-hero.png/ebcc23ce79698c2e590cbe0e3e4f5974.webp" alt="" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Jan 10, 2022 </div> <div class="text-lg font-bold "> Ceres 2022 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden hidden"> <a href="/resources/reports/ceres-2021-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/policy-outlook-2021-hero.png/f455eff7a99825cad3d73a750e6820ae.webp" alt="" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Feb 12, 2021 </div> <div class="text-lg font-bold "> Ceres 2021 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden hidden"> <a href="/resources/reports/2020-ceres-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/2020-outlook-hero.jpeg/7c401a11cbecbfd243fa14dde9292e97.webp" alt="Capitol building with American flag waving in the wind" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Feb 5, 2020 </div> <div class="text-lg font-bold "> Ceres 2020 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> <div class="bg-white flex flex-col transition-all duration-250 hover:shadow-cards-darker rounded-t-lg group resource_card_grid_6 resource_cards_grid text-sm font-semibold shadow-cards overflow-hidden hidden"> <a href="/resources/reports/ceres-bicep-network-2019-policy-outlook" class="h-full flex flex-col"> <img src="https://assets.ceres.org/cache/http/images/resource-thumbnails-banners/2019-policy-hero.jpeg/7c1e89654173fd9f4e95730ab2f6d98a.webp" alt="" class="h-48 w-full object-cover block rounded-t group-hover:scale-105 group-focus:scale-105 origin-bottom transition"> <div class="flex-grow p-2 sm:p-4 flex flex-col justify-between"> <div class="flex flex-col justify-between h-full"> <div class="flex-grow"> <div class="my-4 text-gray-500"> Feb 22, 2019 </div> <div class="text-lg font-bold "> Ceres 2019 Policy Outlook </div> </div> <div class="gap-4 flex flex-col w-full"> </div> </div> </div> </a> </div> </div> <div class="see-more-button-container-6 flex items-center w-full "> <div class="bg-black opacity-30 h-0.5 w-1/2"></div> <!-- /components/_button.antlers.html --> <div class=" cursor-pointer inline-flex py-3 px-8 rounded-full select-none whitespace-nowrap items-start self-start see-more-button-6 mx-1 hover:cursor-pointer text-black border border-black stroke-black fill-black <!-- Adds extra space for mobile browsers to click on links if button requires it. --> " href="/networks/policy" > <div class="flex flex-row text-center items-center justify-center gap-2" wire:click=""> See more </div> </div> <!-- End: /components/_button.antlers.html --> <div class="bg-black opacity-30 h-0.5 w-1/2"></div> </div> <script> const see_more_button_container_6 = document.getElementsByClassName('see-more-button-container-6')[0] const see_more_button_6 = document.getElementsByClassName('see-more-button-6')[0] // These 2 variables are the props that passed from parent view, this syntax can get the props in Antlers const target_class_6 = 'resource_card_grid_6' const load_more_amount_6 = Number('3') // need to convert it to number because it is a string const target_elements_6 = document.getElementsByClassName(target_class_6) const total_number_of_target_elements_6 = Array.from(target_elements_6).length const redirect_url_6 = '/' const getDisplayedItems_6 = () => { let number_of_displayed_items = 0 for(const element of target_elements_6) { if(!element.classList.contains('hidden')) { number_of_displayed_items++ } } return number_of_displayed_items } const loadMore_6 = () => { let displayed_items = getDisplayedItems_6() const redirect_user_to_url = () => { window.location.href = redirect_url_6; } if(displayed_items < total_number_of_target_elements_6 || displayed_items < 9) { for(let i = 0; i < displayed_items + load_more_amount_6; i++) { if(i < total_number_of_target_elements_6) { if(target_elements_6[i].classList.contains('hidden')) { target_elements_6[i].classList.remove('hidden') } } } displayed_items = getDisplayedItems_6() if(displayed_items >= total_number_of_target_elements_6 || displayed_items >= 9) { if(redirect_url_6 == '/') { see_more_button_container_6.classList.add('hidden') } else { see_more_button_6.removeEventListener('click', loadMore_6) see_more_button_6.addEventListener('click', redirect_user_to_url) } } } } const check_button_should_display_6 = () => { const number_of_cards = target_elements_6.length if(number_of_cards <= 3) { see_more_button_container_6.classList.add('hidden') } } see_more_button_6.addEventListener('click', loadMore_6) window.addEventListener('load', check_button_should_display_6) </script> </div> <div id="authFormModal" class="hidden fixed opacity-0 z-50 transition-opacity duration-500 w-full h-full bg-black/50 z-50 top-0 left-0 px-4"> <section class="overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 h-screen flex items-center justify-center bg-black/30"> <div class=" lg:p-4 lg:w-1/2 container py-16"> <div class="relative bg-white rounded-lg shadow dark:bg-gray-700"> <button onclick="closeAuthModal()" type="button" class="absolute top-3 end-2.5 text-gray-400 bg-transparent rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white"> <svg width="32" height="32" class="stroke-gray-400 hover:stroke-cw-green-200" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-circle"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg> <span class="sr-only">Close form</span> </button> <div id="authFormContainer" class="p-6 lg:p-16"> <div class="p-4" id="authMessage"></div> <form id="loginForm"> <div class="flex flex-col max-w-lg mx-auto gap-8"> <div class="flex flex-col items-center gap-2"> <!-- /typography/_h2.antlers.html --> <h2 class="lg:text-2xl text-lg font-medium">Log in to download this report.</h2> <!-- End: /typography/_h2.antlers.html --> <span class="flex flex-row items-center gap-2"> <span class="lg:text-lg text-xs">Don't have an account?</span> <button type="button" id="showRegisterForm"> <span class="lg:text-lg text-xs underline">Sign up for free.</span> </button> </span> </div> <div class="flex flex-col"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 text-black [&_*]:text-center "> <input type="hidden" name="_token" value="STATAMIC_CSRF_TOKEN"> <input type="email" name="email" value="" required="1" placeholder="Email Address" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.email }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-full lg:col-span-6" /> <input type="password" name="password" value="" required="1" placeholder="Password" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.password }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-full lg:col-span-6" /> </div> </div> <div class="flex flex-col gap-4 items-center"> <a href="/forgot-password" class="text-sm underline">Forgot your password?</a> <button type="submit" disabled class="text-white bg-black/40 rounded-full w-fit px-10 py-4 text-md transition-bg duration-300 ease-in-out cursor-not-allowed" background="#FFFFFF" > Log in </button> </div> </div> </form> <form class="hidden" action="/register" method="post" id="registerForm"> <div class="flex flex-col max-w-lg mx-auto gap-8"> <div class="flex flex-col items-center gap-1"> <!-- /typography/_h2.antlers.html --> <h2 class="lg:text-2xl text-lg font-medium">Sign up to unlock our reports.</h2> <!-- End: /typography/_h2.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed lg:text-md text-base">Create your free account to unlock access to all of our reports.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="flex flex-col"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 "> <input type="hidden" name="_token" value="STATAMIC_CSRF_TOKEN"> <input type="text" name="first_name" value="" required="1" placeholder="First Name" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.first_name }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6 text-black" /> <input type="text" name="last_name" value="" required="1" placeholder="Last Name" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.last_name }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6 text-black" /> <input type="email" name="email" value="" required="1" placeholder="Email Address" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.email }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-full lg:col-span-6 text-black" /> <input type="text" name="organisation" value="" required="1" placeholder="Organization" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.organisation }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6 text-black" /> <input type="text" name="zip_code" value="" required="1" placeholder="Zip Code" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.zip_code }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6 text-black" /> <input type="password" name="password" value="" required="1" placeholder="Password - 8 character minimum" minlength="" maxlength="" autocomplete="off" x-model="" x-on:input="" :class="{ '!border-cw-green-150/90': valid.password }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-full lg:col-span-6 text-black" /> <label class="col-span-12 flex items-center gap-2"> <input type="checkbox" name="subscribe" value="on" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6"> <span class="lg:text-lg text-xs">Subscribe to email updates from Ceres.</span> </label> </div> </div> <div class="flex flex-col gap-4 items-center"> <p class="lg:text-lg text-xs [text-wrap:balance] text-center max-w-sm [&_a]:cursor-pointer bg-white text-black [&_a]:font-medium"> By signing up, you agree to our <a class="underline" href="/privacy-policy">privacy policy</a> </p> <button type="submit" disabled class="text-white bg-black/40 rounded-full w-fit px-10 py-4 text-md transition-bg duration-300 ease-in-out cursor-not-allowed" background="#FFFFFF" > Create account </button> <span class="flex flex-row items-center gap-2"> <span class="lg:text-lg text-xs">Already have an account?</span> <button type="button" id="showLoginForm"> <span class="lg:text-lg text-xs underline">Log In</span> </button> </span> </div> </div> </form> </div> <script> document.addEventListener('DOMContentLoaded', () => { let elements = document.querySelectorAll('#authFormModal'); if (elements.length > 1) { for (let i = 0; i < elements.length - 1; i++) { elements[i].remove(); } }else{ const formsIds = ['loginForm', 'registerForm']; const authFormContainer = document.getElementById('authFormContainer'); const messageDiv = document.getElementById('authMessage'); formsIds.forEach(formId => { const form = document.getElementById(formId); if(form) { const submitButton = form.querySelector('button[type="submit"]'); submitButton.addEventListener('click', e => { e.preventDefault(); handleFormSubmit(messageDiv, formId); }); form.addEventListener('input', () => { const isValid = validateFields(form, submitButton); toggleButtonStyling(isValid, submitButton); }); form.addEventListener('keydown', e => { if (e.code === 'Enter' || e.key === 'Enter') { e.preventDefault(); } }) } }); const toggleFormDisplay = (showFormId, hideFormId) => { document.getElementById(showFormId).style.display = 'block'; document.getElementById(hideFormId).style.display = 'none'; } const showLoginFormButton = document.getElementById('showLoginForm'); if(showLoginFormButton) { showLoginFormButton.addEventListener('click', e => { e.preventDefault(); toggleFormDisplay('loginForm', 'registerForm'); }); } const showRegisterFormButton = document.getElementById('showRegisterForm'); if(showRegisterFormButton) { showRegisterFormButton.addEventListener('click', e => { e.preventDefault(); toggleFormDisplay('registerForm', 'loginForm'); }); } authFormContainer.addEventListener('click', event => { if (!event.target.closest('#authFormContainer')) { closeAuthModal(); } }); } }); function handleFormSubmit(messageDiv, formId) { const form = document.getElementById(formId); const submitButton = form.querySelector('button[type="submit"]'); if(formId === 'loginForm') { const _token = form.querySelector('[name="_token"]').value; const email = form.querySelector('[name="email"]').value; const password = form.querySelector('[name="password"]').value; submitButton.classList.remove('cursor-pointer') submitButton.classList.add('cursor-not-allowed'); submitButton.disabled = true; fetch('/fortify/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': _token }, body: JSON.stringify({ email, password }) }) .then(response => { if (!response.ok) { throw new Error(response.status + ' ' + response.statusText); } return response.json(); }) .then(data => { if (data && data.message) { messageDiv.classList.remove('text-red-500'); messageDiv.classList.add('text-green-500'); messageDiv.innerText = data.message; location.reload(); } else { throw new Error('Invalid response format'); } }) .catch(error => { messageDiv.classList.remove('text-green-500'); messageDiv.classList.add('text-red-500'); messageDiv.innerText = 'The username or password is incorrect. For assistance, please contact us at info@ceres.org.'; setTimeout(() => { submitButton.classList.add('cursor-pointer'); submitButton.disabled = false }, 5000); }); } else { const _token = form.querySelector('[name="_token"]').value; const emailInput = form.querySelector('[name="email"]').value; const passwordInput = form.querySelector('[name="password"]').value; const firstNameInput = form.querySelector('[name="first_name"]').value; const lastNameInput = form.querySelector('[name="last_name"]').value; const organisationInput = form.querySelector('[name="organisation"]').value; const zipCodeInput = form.querySelector('[name="zip_code"]').value; const subscribeCheckbox = form.querySelector('[name="subscribe"]').checked ? 'on' : 'off'; submitButton.classList.remove('cursor-pointer'); submitButton.classList.add('cursor-not-allowed'); submitButton.disabled = true; const customErrorMessages = { "The email has already been taken.": "This email is already in use. Please try again with a different email." }; fetch('/register', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': _token }, body: JSON.stringify({ email: emailInput, password: passwordInput, first_name: firstNameInput, last_name: lastNameInput, organisation: organisationInput, zip_code: zipCodeInput, subscribe: subscribeCheckbox, }) }) .then(response => response.json().then(data => ({ status: response.status, body: data }))) // Parse JSON and include status .then(response => { if (response.status === 200) { if (response.body && response.body.message) { messageDiv.classList.remove('text-red-500'); messageDiv.classList.add('text-green-500'); messageDiv.innerText = response.body.message; localStorage.setItem('TOKEN', response.body.token); localStorage.setItem('NeedsVerifyEmail', 'true'); setTimeout(() => { location.reload(); }, 10000); } else { throw new Error('Invalid response format'); } } else if (response.status === 422) { // Validation errors messageDiv.classList.remove('text-green-500'); messageDiv.classList.add('text-red-500'); messageDiv.innerText = ''; // Clear any existing messages for (const [field, messages] of Object.entries(response.body.errors)) { messages.forEach(message => { const errorParagraph = document.createElement('p'); // Use custom message if available, otherwise use the original message errorParagraph.innerText = customErrorMessages[message] || message; messageDiv.appendChild(errorParagraph); }); } } else { throw new Error(response.status + ' ' + response.statusText); } }) .catch(error => { messageDiv.classList.remove('text-green-500'); messageDiv.classList.add('text-red-500'); messageDiv.innerText = 'An unexpected error occurred. Please try again.'; }) .finally(() => { submitButton.classList.add('cursor-pointer'); submitButton.classList.remove('cursor-not-allowed'); submitButton.disabled = false; }); } } function validateFields(form) { const inputs = [...form.querySelectorAll('input:not([type="hidden"])')]; const formValidity = inputs.reduce((valid, element) => { switch (element.type) { case 'email': return valid && /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(element.value); case 'password': return valid && element.value.length >= 8; case 'text': if (element.name === 'zip_code') { return valid && element.value.length >= 2 && element.value.length <= 20; } else if (element.name === 'first_name' || element.name === 'last_name') { return valid && element.value.trim() !== '' && /^[a-zA-Z\s]+$/.test(element.value) && element.value.length <= 40; } else if (element.name === 'organisation') { return valid && element.value.trim() !== '' && element.value.length <= 40; } else { return valid && element.value.trim() !== '' && element.value.trim() !== '' && element.value.length <= 40; } default: return valid; } }, true); const passwordInputs = inputs.filter(input => input.type === 'password'); const passwordsMatch = passwordInputs.length <= 1 || (passwordInputs[0].value === passwordInputs[1].value); return formValidity && passwordsMatch; } function toggleButtonStyling(isValid, submitButton) { if (isValid) { submitButton.disabled = false submitButton.classList.remove('cursor-not-allowed', 'bg-black/40'); submitButton.classList.add('cursor-pointer', 'bg-cw-green-200'); submitButton.disabled = false; } else { submitButton.disabled = true submitButton.classList.add('cursor-not-allowed', 'bg-black/40'); submitButton.classList.remove('cursor-pointer', 'bg-cw-green-200'); submitButton.disabled = true; } } function openAuthModal() { const authModal = document.getElementById('authFormModal'); authModal.classList.remove('hidden'); document.body.style.overflow = 'hidden' setTimeout(() => { authModal.classList.remove('opacity-0'); authModal.classList.add('opacity-100'); }, 30); } function closeAuthModal() { const authModal = document.getElementById('authFormModal'); authModal.classList.remove('opacity-100'); authModal.classList.add('opacity-0'); setTimeout(() => { authModal.classList.add('hidden'); document.body.style.overflow = 'auto'; }, 200); } </script> </div> </div> </section> </div> </section> <!-- End: /page_builder/_featured_resources.antlers.html --> <!-- /page_builder/_4_cards.antlers.html --> <section class="bg-cw-green-50 text-black "> <div class="container py-16 flex flex-col gap-8 "> <!-- /typography/_h2.antlers.html --> <h2 class="font-bold text-4xl">Opportunities to Advocate</h2> <!-- End: /typography/_h2.antlers.html --> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-8 "> <div class="p-4 rounded flex flex-col gap-3 shadow-cards text-black md:p-8 col-span-12 md:col-span-6 bg-white text-black "> <div class="relative"> <a href="/networks/policy/energy-optimization-working-group" class="hover:text-cw-green-800"> <!-- /typography/_h3.antlers.html --> <h3 class="text-2xl font-bold leading-tight pr-6">Energy Optimization Working Group</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="fill-gray-400 absolute top-0 right-0 translate-y-1.5" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16 16H2V2H9V0H2C0.89 0 0 0.9 0 2V16C0 17.1 0.89 18 2 18H16C17.1 18 18 17.1 18 16V9H16V16ZM11 0V2H14.59L4.76 11.83L6.17 13.24L16 3.41V7H18V0H11Z"/> </svg> </a> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed "> The Energy Optimization Working Group builds and supports business engagement on energy optimization policies, such as those that advance energy efficiency, demand response, and building electrification. It comprises members who recognize the need for policies to reduce energy waste and ensure an affordable, rapid, and equitable climate response.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="p-4 rounded flex flex-col gap-3 shadow-cards text-black md:p-8 col-span-12 md:col-span-6 bg-white text-black "> <div class="relative"> <a href="/networks/policy/climate-smart-agriculture-and-healthy-soil-working-group" class="hover:text-cw-green-800"> <!-- /typography/_h3.antlers.html --> <h3 class="text-2xl font-bold leading-tight pr-6">Climate-Smart Agriculture and Healthy Soil Working Group</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="fill-gray-400 absolute top-0 right-0 translate-y-1.5" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16 16H2V2H9V0H2C0.89 0 0 0.9 0 2V16C0 17.1 0.89 18 2 18H16C17.1 18 18 17.1 18 16V9H16V16ZM11 0V2H14.59L4.76 11.83L6.17 13.24L16 3.41V7H18V0H11Z"/> </svg> </a> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed "> The Climate-Smart Agriculture and Healthy Soil Working Group consists of members from the food and apparel industries pushing for policy solutions to tackle emissions from the agriculture sector while protecting water and soil health, biodiversity, and crop resilience.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="p-4 rounded flex flex-col gap-3 shadow-cards text-black md:p-8 col-span-12 md:col-span-6 bg-white text-black "> <div class="relative"> <a href="/networks/policy/environmental-and-climate-justice-working-group" class="hover:text-cw-green-800"> <!-- /typography/_h3.antlers.html --> <h3 class="text-2xl font-bold leading-tight pr-6">Environmental and Climate Justice Working Group</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="fill-gray-400 absolute top-0 right-0 translate-y-1.5" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16 16H2V2H9V0H2C0.89 0 0 0.9 0 2V16C0 17.1 0.89 18 2 18H16C17.1 18 18 17.1 18 16V9H16V16ZM11 0V2H14.59L4.76 11.83L6.17 13.24L16 3.41V7H18V0H11Z"/> </svg> </a> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed "> The Environmental and Climate Justice Working Group brings together members to discuss environmental and climate justice policies, the needs of impacted communities, frontline workers, and policy positions and approaches.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="p-4 rounded flex flex-col gap-3 shadow-cards text-black md:p-8 col-span-12 md:col-span-6 bg-white text-black "> <div class="relative"> <a href="/transportation/corporate-electric-vehicle-alliance" class="hover:text-cw-green-800"> <!-- /typography/_h3.antlers.html --> <h3 class="text-2xl font-bold leading-tight pr-6">Corporate Electric Vehicle Alliance</h3> <!-- End: /typography/_h3.antlers.html --> <svg class="fill-gray-400 absolute top-0 right-0 translate-y-1.5" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16 16H2V2H9V0H2C0.89 0 0 0.9 0 2V16C0 17.1 0.89 18 2 18H16C17.1 18 18 17.1 18 16V9H16V16ZM11 0V2H14.59L4.76 11.83L6.17 13.24L16 3.41V7H18V0H11Z"/> </svg> </a> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed "> The Corporate Electric Vehicle Alliance is a group of companies focused on accelerating the transition to electric vehicles and supporting companies in making and achieving bold commitments to fleet electrification. The Alliance also loosely aggregates corporate demand for EVs to expand the business case for production of a more diverse array of EV models and the charging infrastructure to support them.</p> <!-- End: /typography/_p.antlers.html --> </div> </div> <!-- /components/_button.antlers.html --> <!-- End: /components/_button.antlers.html --> </div> </section> <!-- End: /page_builder/_4_cards.antlers.html --> <!-- /page_builder/_wysiwyg.antlers.html --> <section class="bg-white text-black overflow-hidden"> <div id="join" class="container "> <!-- /typography/_prose.antlers.html --> <article class=" prose prose-a:underline prose-a:decoration-primary prose-a:decoration-2 hover:prose-a:text-primary focus:prose-a:outline-none focus-visible:prose-a:ring focus-visible:prose-a:ring-primary focus-visible:prose-a:rounded-sm prose-figure:my-0 prose-pre:whitespace-pre-wrap max-w-none blockquote-import link-import contents bg-white text-black hover:[&_a]:text-cw-green-800 [&_a]:decoration-cw-green-800 text-xl prose [&_ul_li]:list-disc [&_ul_li]:list-outside " > <!-- /components/_text.antlers.html --> <div class="[&_blockquote]:not-italic [&_blockquote>p]:before:content-none [&_blockquote>p]:after:content-none"> <p><span class="text-color" style="color: #fff">X</span></p><h1><strong>How to join the Ceres Policy Network</strong></h1><p>If your company is interested in joining the Ceres Policy Network, please fill out the form below. To be eligible for membership, your company must meet certain criteria. This includes: </p><ul><li><p>Being publicly committed to reducing the impacts of the climate crisis and supporting policies to achieve a net zero emissions economy. </p></li><li><p>Being headquartered in the U.S. or having a significant U.S. presence. </p></li><li><p>Having an annual revenue threshold of at least $100 million. </p></li><li><p>Having a company representative who can participate in monthly calls. </p></li><li><p>Committing to engage in at least four advocacy opportunities per year at the state or federal level. Engagements can include signing an advocacy letter, participating in a policymaker meeting, speaking at an event, or highlighting your support for policies in the media. </p></li><li><p>Committing to pay annual membership dues ranging from $5,000 - $35,000. Discounts are offered to Ceres Company Network members. </p></li></ul> </div> <!-- End: /components/_text.antlers.html --> </article> <!-- End: /typography/_prose.antlers.html --> </div> </section> <!-- End: /page_builder/_wysiwyg.antlers.html --> <!-- /page_builder/_embed_script_tag.antlers.html --> <section class="text-black "> <div class="container" > <div id="threeblmediadetaillist"></div> <div> <script type="text/javascript" src="https://ceresorg.formstack.com/forms/js.php/policy_network_join_form_website_"></script><noscript><a href="https://ceresorg.formstack.com/forms/policy_network_join_form_website_" title="Online Form">Online Form - Policy Network Join Form</a></noscript> </div> </div> </section> <!-- End: /page_builder/_embed_script_tag.antlers.html --> <!-- /page_builder/_subscribe_to_newsletter_green_banner.antlers.html --> <section class="bg-cw-green-200 text-white "> <div class=" container py-12" > <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-0 gap-y-8 lg:gap-16 "> <div class="flex flex-col col-span-12 lg:col-span-6 gap-2"> <!-- /typography/_h2.antlers.html --> <h2 class="text-3xl font-bold">Never miss an alert</h2> <!-- End: /typography/_h2.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Sign up for the latest news and updates from Ceres.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="flex flex-col justify-center items-center col-span-12 lg:col-span-6"> <div class="w-full" x-data="{ singular_email: '', emailValid: false, emailPattern: /^[a-zA-Z0-9._-]+(\+[a-zA-Z0-9._-]+)*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/, validateEmail() { this.emailValid = this.emailPattern.test(this.singular_email); } }" > <div aria-label="Newsletter Subscription Form"> <div class="relative"> <input class="text-black appearance-none rounded w-full py-3 px-6 !border-cw-green-200 !outline-none !ring-0 " type="email" name="singular_email" placeholder="Email Address" required x-model="singular_email" x-on:input="validateEmail(); $dispatch('email-changed', singular_email)" aria-label="Email Address" aria-required="true" :aria-invalid="!emailValid.toString()" x-on:change="localStorage.setItem('singular_email', singular_email);" > <button class="w-fit rounded-full bg-black/40 text-white font-bold p-2 focus:outline-none focus:shadow-outline absolute right-6 top-[50%] -translate-y-[50%] flex align-center justify-center transition-bg duration-300 ease-in-out" type="submit" :disabled="!emailValid" :aria-disabled="!emailValid.toString()" :class="{ '!bg-cw-green-800 hover:!bg-cw-green-800/75': emailValid, 'cursor-not-allowed': !emailValid }" aria-label="Submit" x-on:click="() => openModal()" > <span> <svg width="14" height="14" class="fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/> </svg> </span> </button> </div> </div> </div> </div> </div> </div> <div id="newsletter-modal" class="hidden fixed opacity-0 z-50 transition-opacity duration-500 w-full h-full bg-black/50 top-0 left-0 px-4"> <div class="w-full h-full flex items-center justify-center text-black"> <div id="modalNewsletterContainer" class="relative bg-cw-green-50 rounded-lg"> <div onclick="closeModal()" id="closeNewsletterModal" class="absolute top-4 right-4 cursor-pointer z-50"> <svg width="32" height="32" class="stroke-gray-400" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-circle"><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg> </div> <!-- /page_builder/_subscribe_to_newsletter_form_full.antlers.html --> <section class="bg-cw-green-50 rounded-lg" @email-changed.window="email_address = $event.detail" x-data="{ first_name: '', last_name: '', organisation: '', zip_code: '', email_address: '', valid: { first_name: false, last_name: false, organisation: false, zip_code: false, email_address: false }, validateFirstName() { this.valid.first_name = this.first_name.length >= 3; }, validateLastName() { this.valid.last_name = this.last_name.length >= 3; }, validateOrganisation() { this.valid.organisation = this.organisation.length >= 3; }, validateZipCode() { this.valid.zip_code = this.zip_code.length >= 5; }, validateEmailAddress() { const pattern = /^[a-zA-Z0-9._-]+(\+[a-zA-Z0-9._-]+)*@[a-zA-Z0-9.-]+\.[a-zA-Z]+$/; this.valid.email_address = pattern.test(this.email_address); }, isFormValid() { return Object.values(this.valid).every(value => value); }, }" x-init="() => { $watch('email_address', () => validateEmailAddress()) if (localStorage.getItem('singular_email')) { email_address = localStorage.getItem('singular_email') || ''; localStorage.removeItem('singular_email'); // remove it from localStorage after fetching setTimeout(() => { document.getElementById('modalNewsletterForm').scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 500); // delay of 500 milliseconds to allow page to render } }" > <div class="relative container py-16"> <form id="modalNewsletterForm" class="transition-all duration-300"> <input type="hidden" name="_token" value="STATAMIC_CSRF_TOKEN"> <div class="flex flex-col max-w-lg mx-auto gap-8"> <div class="flex flex-col items-center gap-1"> <!-- /typography/_h2.antlers.html --> <h2 class="text-4xl font-medium">Never miss an alert</h2> <!-- End: /typography/_h2.antlers.html --> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed text-[17px]">Sign up for the latest news and updates from Ceres.</p> <!-- End: /typography/_p.antlers.html --> </div> <div class="flex flex-col rounded-lg"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 gap-5 rounded-lg "> <input type="text" name="first_name" value="" required="1" placeholder="First name" minlength="3" maxlength="" autocomplete="off" x-model="first_name" x-on:input="validateFirstName()" :class="{ '!border-cw-green-150/90': valid.first_name }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6" /> <input type="text" name="last_name" value="" required="1" placeholder="Last name" minlength="3" maxlength="" autocomplete="off" x-model="last_name" x-on:input="validateLastName()" :class="{ '!border-cw-green-150/90': valid.last_name }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6" /> <input type="text" name="organisation" value="" required="1" placeholder="Organization" minlength="3" maxlength="" autocomplete="off" x-model="organisation" x-on:input="validateOrganisation()" :class="{ '!border-cw-green-150/90': valid.organisation }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6" /> <input type="text" name="zip_code" value="" required="1" placeholder="ZIP Code" minlength="5" maxlength="" autocomplete="off" x-model="zip_code" x-on:input="validateZipCode()" :class="{ '!border-cw-green-150/90': valid.zip_code }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-6" /> <input type="email" name="email_address" value="" required="1" placeholder="Email Address" minlength="" maxlength="" autocomplete="off" x-model="email_address" x-on:input="validateEmailAddress()" :class="{ '!border-cw-green-150/90': valid.email_address }" class="border-2 border-cw-grey-500 rounded-md px-4 py-3 text-sm font-medium focus:!border-cw-green-select !ring-0 !outline-none transition-border duration-200 ease-in-out col-span-12" /> </div> </div> <div class="flex flex-col gap-4 items-center"> <button type="submit" class="text-white bg-black/40 rounded-full w-fit px-10 py-4 text-[17px] transition-bg duration-300 ease-in-out" :class="isFormValid() && 'bg-cw-green-800 text-white rounded-full w-fit px-10 py-4 text-[17px] hover:opacity-90'" :disabled="!isFormValid()" > Sign up </button> <p class="[text-wrap:balance] text-center max-w-sm [&_a]:cursor-pointer [&_a]:text-cw-green-800 [&_a]:font-medium"> By signing up, you agree to our <a class="underline" target="_blank" href="/privacy-policy">Privacy Policy</a> </p> </div> </div> </form> </div> </section> <script> document.addEventListener('DOMContentLoaded', function() { // Due to the script being loaded before these HTML elements are rendered, we need to set them once content has been loaded. successElement = document.getElementById('newsletterSuccessState'); errorElement = document.getElementById('newsletterErrorState'); }); const newsletterModal = document.getElementById('newsletter-modal'); const closeNewsletterModal = document.getElementById('closeNewsletterModal'); const newsletterForm = document.getElementById('modalNewsletterForm'); let successElement let errorElement function submitState(form, stateElement, isSuccess, message) { form.style.opacity = '0'; stateElement.innerHTML = ''; stateElement.style.display = 'flex'; setTimeout(() => { stateElement.style.opacity = '1'; }, 30) let messageContent; if (isSuccess) { messageContent = `<h2 class="text-cw-green-200 text-center">Subscription confirmed!</h2> <p class="text-center">Thanks for signing up. You’ll receive your first email from Ceres soon!</p>`; setTimeout(() => { if (newsletterModal) { cleanupElements(); } else { window.location.href = '/'; } }, 3000); } else { errorElement.style.display = 'flex'; messageContent = `<p class="text-red-600">Error - ${message || 'There was an issue with your submission. Please try again.'}</p>`; } stateElement.innerHTML = messageContent; } function handleSubmitNewsletterForm(event) { event.preventDefault(); errorElement.style.display = 'none'; const form = event.target; const submitButton = form.querySelector('button[type="submit"]'); submitButton.disabled = true; const formData = new FormData(form); const data = {}; formData.forEach((value, key) => { data[key] = value; }); const jsonData = JSON.stringify(data); fetch('/subscribeToNewsletterOnly', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': form.querySelector('input[name="_token"]').value }, body: jsonData }) .then(response => response.json()) .then(data => { console.log('Success:', data); submitState(form, successElement, true); }) .catch((error) => { console.error('Error:', error); submitState(form, errorElement, false); submitButton.disabled = false; }); removeEventListener('submit', handleSubmitNewsletterForm); } function cleanupElements() { const sectionParent = newsletterModal.closest('section'); if (sectionParent) { sectionParent.style.transition = 'opacity 300ms ease-out'; sectionParent.style.opacity = '0'; // Wait for the transition to complete before removing the element sectionParent.addEventListener('transitionend', function() { closeModal(); this.remove(); }); } } newsletterForm.addEventListener('submit', handleSubmitNewsletterForm); </script> <!-- End: /page_builder/_subscribe_to_newsletter_form_full.antlers.html --> <div id="newsletterErrorState" class="hidden px-8 pb-4 [&_p]:text-md"> </div> <div id="newsletterSuccessState" class=" hidden absolute px-8 flex-col gap-4 items-center justify-center top-0 left-0 w-full h-full transition-opacity delay-300 opacity-0 [&_h2]:text-4xl [&_p]:text-lg " ></div> </div> </div> </div> <script> const openModal = () => { newsletterModal.classList.remove('hidden'); document.body.style.overflow = 'hidden'; setTimeout(() => { newsletterModal.classList.remove('opacity-0'); newsletterModal.classList.add('opacity-100'); }, 30); newsletterModal.addEventListener('click', handleClickOutsideModal); newsletterForm.addEventListener('submit', handleSubmitNewsletterForm); } const closeModal = () => { newsletterModal.classList.remove('opacity-100'); newsletterModal.classList.add('opacity-0'); setTimeout(() => { newsletterModal.classList.add('hidden'); document.body.style.overflow = 'auto'; }, 200); newsletterModal.removeEventListener('click', handleClickOutsideModal); newsletterForm.removeEventListener('submit', handleSubmitNewsletterForm); } function handleClickOutsideModal(event) { if (!event.target.closest('#modalNewsletterContainer')) { closeModal(); } } </script> </section> <!-- End: /page_builder/_subscribe_to_newsletter_green_banner.antlers.html --> </main> <!-- End: /default.antlers.html --> <!-- /layout/_footer.antlers.html --> <footer> <div class="container"> <div class="flex flex-col gap-12 lg:gap-24 py-16 border-b border-b-black/25 lg:flex-row"> <div> <!-- /components/_logo.antlers.html --> <a aria-label="Logo Ceres" href="/" > <img src="/visuals/logo-dark.svg" class="select-none " width="108" alt="Ceres"/> </a> <!-- End: /components/_logo.antlers.html --> </div> <div class="flex-grow"> <!-- Grid component for layout of modules. Has default styling but can be changed using the class prop. --> <div class=" grid grid-cols-12 justify-between gap-6 lg:gap-0 gap-y-12 lg:flex lg:flex-row "> <div class="col-span-6 md:col-span-3 "> <a href="#" > <!-- /typography/_h4.antlers.html --> <h4 class="font-bold text-[16px] text-cw-green-250 mb-4">Issues</h4> <!-- End: /typography/_h4.antlers.html --> </a> <ul class="flex flex-col gap-3"> <li> <a href="https://www.ceres.org/climate" > <p class="text-[16px] tracking-tight"> Climate crisis </p> </a> </li> <li> <a href="https://www.ceres.org/water" > <p class="text-[16px] tracking-tight"> Water scarcity and pollution </p> </a> </li> <li> <a href="https://www.ceres.org/nature" > <p class="text-[16px] tracking-tight"> Nature and biodiversity loss </p> </a> </li> </ul> </div> <div class="col-span-6 md:col-span-3 "> <a href="https://www.ceres.org/networks" > <!-- /typography/_h4.antlers.html --> <h4 class="font-bold text-[16px] text-cw-green-250 mb-4">Networks</h4> <!-- End: /typography/_h4.antlers.html --> </a> <ul class="flex flex-col gap-3"> <li> <a href="https://www.ceres.org/networks/investor" > <p class="text-[16px] tracking-tight"> Investor Network </p> </a> </li> <li> <a href="https://www.ceres.org/networks/company" > <p class="text-[16px] tracking-tight"> Company Network </p> </a> </li> <li> <a href="https://www.ceres.org/networks/policy" > <p class="text-[16px] tracking-tight"> Policy Network </p> </a> </li> </ul> </div> <div class="col-span-6 md:col-span-3 "> <a href="https://www.ceres.org/resources" > <!-- /typography/_h4.antlers.html --> <h4 class="font-bold text-[16px] text-cw-green-250 mb-4">Resources</h4> <!-- End: /typography/_h4.antlers.html --> </a> <ul class="flex flex-col gap-3"> <li> <a href="https://www.ceres.org/resources/reports" > <p class="text-[16px] tracking-tight"> Reports </p> </a> </li> <li> <a href="https://www.ceres.org/events" > <p class="text-[16px] tracking-tight"> Events and webinars </p> </a> </li> <li> <a href="https://www.ceres.org/resources/news" > <p class="text-[16px] tracking-tight"> News and insights </p> </a> </li> </ul> </div> <div class="col-span-6 md:col-span-3 "> <a href="#" > <!-- /typography/_h4.antlers.html --> <h4 class="font-bold text-[16px] text-cw-green-250 mb-4">Work with us</h4> <!-- End: /typography/_h4.antlers.html --> </a> <ul class="flex flex-col gap-3"> <li> <a href="https://www.ceres.org/careers" > <p class="text-[16px] tracking-tight"> Careers </p> </a> </li> <li> <a href="https://www.ceres.org/procurement" > <p class="text-[16px] tracking-tight"> Procurement opportunities </p> </a> </li> </ul> </div> </div> </div> </div> <div class="flex flex-col py-10 gap-16 justify-between md:flex-row"> <div class="flex flex-row gap-16 flex-wrap"> <div class="text-[16px]"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed font-bold text-cw-green-250">Headquarters</p> <!-- End: /typography/_p.antlers.html --> <p>99 Chauncy Street, 6th Floor<br>Boston, MA 02111</p> </div> <div class="text-[16px]"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed font-bold text-cw-green-250">California Office</p> <!-- End: /typography/_p.antlers.html --> <p>369 Pine Street, Suite 620<br>San Francisco, CA 94104</p> </div> <div class="text-[16px]"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed font-bold text-cw-green-250">Connect with us</p> <!-- End: /typography/_p.antlers.html --> <p>(617) 247-0700 | <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dfb6b1b9b09fbcbaadbaacf1b0adb8">[email protected]</a><br>For media inquiries, email us at <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="442921202d252d2a35312d362d21370427213621376a2b3623">[email protected]</a>.</p> </div> </div> <div class="flex flex-row h-fit md:self-end"> <a href="https://www.facebook.com/ceres.org/" aria-label="Facebook" target="_blank" rel="noopener noreferrer" class=" px-2 hover:opacity-70 transition-opacity duration-200 ease-in-out"> <svg height="1rem" width="1rem" width="206" height="370" viewBox="0 0 206 370" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M169.4 66.72L205.11 67.65V2.67L152.2 0.809998C102.47 0.809998 62.16 41.12 62.16 90.85V148.4H0.890015V218.02H62.16V369.34H139.21V218.02H193.98L205.12 148.4H139.21V96.91C139.21 80.23 152.73 66.71 169.41 66.71L169.4 66.72Z" fill="#246F00"/> </svg> </a> · <a href="https://twitter.com/CeresNews" aria-label="Twitter" target="_blank" rel="noopener noreferrer" class="fill-cw-green-250 px-2 hover:opacity-70 transition-opacity duration-200 ease-in-out"> <svg height="1rem" width="1rem" width="1200" height="1227" viewBox="0 0 1200 1227" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="current"/> </svg> </a> · <a href="https://www.linkedin.com/company/ceres-org" aria-label="LinkedIn" target="_blank" rel="noopener noreferrer" class="pr-0 px-2 hover:opacity-70 transition-opacity duration-200 ease-in-out"> <svg height="1rem" width="1rem" width="376" height="376" viewBox="0 0 376 376" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M90.57 131.75H13.8V375.08H90.57V131.75Z" fill="#246F00"/> <path d="M62.1239 96.4142C85.9701 91.2454 101.111 67.7241 95.9423 43.8779C90.7735 20.0317 67.2522 4.8907 43.406 10.0595C19.5598 15.2283 4.41882 38.7496 9.58762 62.5958C14.7564 86.442 38.2777 101.583 62.1239 96.4142Z" fill="#246F00"/> <path d="M288.51 124.51C229.12 124.51 212.23 165.07 212.23 165.07V131.76H138.36V375.09H215.13V247.63C215.13 230.25 220.44 191.14 260.03 191.14C299.62 191.14 299.62 237.01 299.62 237.01V375.09H375.42V230.73C375.42 162.17 347.9 124.51 288.51 124.51Z" fill="#246F00"/> </svg> </a> </div> </div> </div> <div class="w-full bg-cw-green-100"> <div class="flex flex-row container justify-between py-4 text-sm flex-wrap gap-6"> <div class="flex flex-row items-center"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed pr-6 border-r border-r-black">©2024 Ceres</p> <!-- End: /typography/_p.antlers.html --> <a href="/privacy-policy" class="px-6 border-r border-r-black"> PRIVACY POLICY </a> <div class="px-6 border-r border-r-black"> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed inline-block">Website by</p> <!-- End: /typography/_p.antlers.html --> <a href="https://brewdigital.com/" target="_blank" rel="noreferrer noopener" class="font-bold text-cw-green-250 hover:text-cw-green-250/75 transition-colors">Brew Digital</a> </div> </div> <!-- /typography/_p.antlers.html --> <p class="mt-0 last:mb-0 leading-relaxed ">Ceres is a 501(c)(3) tax-exempt nonprofit organization registered in the US under EIN 223-053747</p> <!-- End: /typography/_p.antlers.html --> </div> </div> </footer> <!-- End: /layout/_footer.antlers.html --> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script data-navigate-once="true">window.livewireScriptConfig = {"csrf":"STATAMIC_CSRF_TOKEN","uri":"\/livewire\/update","progressBar":"","nonce":""};</script> <script> function smoothScrollToElement(targetId) { const targetElement = document.querySelector(targetId); if (targetElement) { const isMobile = window.innerWidth < 1280; targetElement.scrollIntoView({ behavior: 'smooth', block: isMobile ? 'start' : 'center' }); } } function handleLoadEvent() { const hash = window.location.hash; if (hash) { smoothScrollToElement(hash); } // Remove the event listener after it has executed window.removeEventListener('load', handleLoadEvent); } // Attach the load event listener window.addEventListener('load', handleLoadEvent); // Handle click events for jump links on the page document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const targetId = this.getAttribute('href'); smoothScrollToElement(targetId); // Update the URL without reloading the page history.pushState(null, '', targetId); }); }); </script> <script type="text/javascript">(function() { var els = document.getElementsByClassName('nocache'); var map = {}; for (var i = 0; i < els.length; i++) { var section = els[i].getAttribute('data-nocache'); map[section] = els[i]; } fetch('/!/nocache', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: window.location.href.split('#')[0], sections: Object.keys(map) }) }) .then((response) => response.json()) .then((data) => { const regions = data.regions; for (var key in regions) { if (map[key]) map[key].outerHTML = regions[key]; } for (const input of document.querySelectorAll('input[value="STATAMIC_CSRF_TOKEN"]')) { input.value = data.csrf; } for (const meta of document.querySelectorAll('meta[content="STATAMIC_CSRF_TOKEN"]')) { meta.content = data.csrf; } for (const input of document.querySelectorAll('script[data-csrf="STATAMIC_CSRF_TOKEN"]')) { input.setAttribute('data-csrf', data.csrf); } if (window.hasOwnProperty('livewire_token')) { window.livewire_token = data.csrf } if (window.hasOwnProperty('livewireScriptConfig')) { window.livewireScriptConfig.csrf = data.csrf } document.dispatchEvent(new CustomEvent('statamic:nocache.replaced', { detail: data })); }); })();</script></body> </html> <!-- End: /layout.antlers.html -->