1<!DOCTYPE html> 2<html lang="en" data-theme="light"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <link rel="preload" href="assets/logomark.svg" as="image"> 7
7<script>if(sessionStorage.getItem("ptr_active")){document.documentElement.classList.add("ptr-cover");setTimeout(function(){document.documentElement.classList.remove("ptr-cover");var p=document.querySelector(".ptr__panel");if(p)p.style.transform="translateY(-100%)"},1500)}</script>
7 8 <title>U.S. Energy Security Index â NCEA</title> 9 <meta name="description" content="Using 18 statistical risk indicators, the ESI plots the history of America's energy security from 1970 to 2024 and provides a glimpse into the future to 2035."> 10
10<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
10 11
11<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
11 12 <link rel="stylesheet" href="shared/components.css"> 13 <link rel="stylesheet" href="shared/global-nav.css"> 14 <link rel="stylesheet" href="shared/island-nav.css"> 15 <style> 16 @font-face{font-family:'Signifier';src:url('assets/Signifier_Light-normal-400-100.ttf') format('truetype');font-weight:300;font-display:swap} 17 @font-face{font-family:'Neue Montreal';src:url('assets/PPNeueMontrealArabic-Regular.otf') format('opentype');font-weight:400;font-display:swap} 18 html[data-theme="light"]{--font-display:'Signifier',Georgia,serif;--font-body:'Neue Montreal',-apple-system,sans-serif;--ease:cubic-bezier(0.16,1,0.3,1);--bg:#f8f5e7;--bg-warm:#f0ebe4;--bg-card:#ffffff;--bg-dark:#1F1F23;--text:#1a1a1a;--text-dim:rgba(26,26,26,0.65);--text-muted:rgba(26,26,26,0.4);--text-on-dark:#f8f5e7;--border:rgba(26,26,26,0.1);--border-dark:rgba(26,26,26,0.15);--section-py:clamp(80px,10vw,140px);--section-px:clamp(24px,6vw,120px)} 19 [data-theme="dark"]{--bg:#111;--bg-warm:#1a1a1a;--bg-card:#1e1e1e;--text:#f8f5e7;--text-dim:rgba(248,245,231,0.65);--text-muted:rgba(248,245,231,0.4);--border:rgba(248,245,231,0.1);--border-dark:rgba(248,245,231,0.15);--text-on-dark:#f8f5e7} 20 body{font-family:var(--font-body);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased} 21 22 .pub-hero{background:var(--bg-dark);padding:clamp(140px,16vw,200px) var(--section-px) clamp(60px,8vw,100px);color:var(--text-on-dark)} 23 .pub-hero__inner{max-width:1400px;margin:0 auto} 24 .pub-hero__meta{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:24px} 25 .pub-hero__tag{font-size:11px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;padding:5px 14px;border:1px solid rgba(248,245,231,0.15);color:rgba(248,245,231,0.5)} 26 .pub-hero__title{font-family:var(--font-display);font-size:clamp(36px,5vw,64px);font-weight:300;line-height:1.08;letter-spacing:-0.03em;max-width:900px;margin-bottom:20px} 27 .pub-hero__subtitle{font-size:clamp(16px,1.4vw,19px);line-height:1.65;color:rgba(248,245,231,0.45);max-width:680px;margin-bottom:40px} 28 .pub-hero__authors{font-size:14px;color:rgba(248,245,231,0.35)} 29 .pub-hero__authors strong{color:rgba(248,245,231,0.7);font-weight:500} 30 31 .chart-hero{padding:0 var(--section-px);margin-top:-40px;position:relative;z-index:2} 32 .chart-hero__inner{max-width:1100px;margin:0 auto;background:var(--bg-card);border:1px solid var(--border);padding:clamp(24px,3vw,48px)} 33 .chart-hero__label{font-size:11px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px} 34 .chart-hero__fig-title{font-family:var(--font-display);font-size:clamp(20px,2vw,28px);font-weight:300;letter-spacing:-0.02em;margin-bottom:6px} 35 .chart-hero__fig-note{font-size:13px;color:var(--text-muted);margin-bottom:24px} 36 .chart-hero__img{width:100%} 37 .chart-hero__caption{font-size:13px;color:var(--text-muted);margin-top:16px;line-height:1.5} 38 39 .findings{padding:var(--section-py) var(--section-px);border-bottom:1px solid var(--border)} 40 .findings__inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:0.35fr 1fr;gap:clamp(40px,6vw,100px)} 41 .findings__label{font-size:11px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-muted);position:sticky;top:100px} 42 .findings__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,3vw,40px)} 43 .finding{padding:clamp(20px,2vw,32px);border:1px solid var(--border)} 44 .finding__num{font-family:var(--font-display);font-size:clamp(28px,3vw,40px);font-weight:200;color:var(--text-muted);line-height:1;margin-bottom:12px;letter-spacing:-0.02em} 45 .finding__title{font-family:var(--font-display);font-size:clamp(17px,1.5vw,21px);font-weight:300;line-height:1.3;letter-spacing:-0.01em;margin-bottom:8px} 46 .finding__desc{font-size:14px;line-height:1.6;color:var(--text-dim)} 47 48 .pub-body{padding:var(--section-py) var(--section-px)} 49 .pub-body__inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:200px 1fr;gap:clamp(40px,5vw,80px)} 50 .pub-toc{position:sticky;top:100px;align-self:start} 51 .pub-toc__label{font-size:11px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:16px} 52 .pub-toc__link{display:block;font-size:13px;color:var(--text-muted);padding:6px 0;border-left:2px solid transparent;padding-left:14px;transition:all 0.2s} 53 .pub-toc__link:hover,.pub-toc__link.is-active{color:var(--text);border-color:var(--text)} 54 .pub-toc__actions{margin-top:32px;display:flex;flex-direction:column;gap:10px} 55 .pub-toc__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;font-size:13px;font-weight:500;border:1px solid var(--border-dark);color:var(--text);transition:all 0.3s;justify-content:center} 56 .pub-toc__btn:hover{background:var(--bg-dark);color:var(--text-on-dark)} 57 .pub-toc__btn svg{width:14px;
57height:14px} 58 59 .pub-content h2{font-family:var(--font-display);font-size:clamp(28px,3vw,40px);font-weight:300;line-height:1.1;letter-spacing:-0.025em;margin:clamp(48px,5vw,80px) 0 20px;padding-top:clamp(24px,3vw,40px);border-top:1px solid var(--border)} 60 .pub-content h2:first-child{margin-top:0;border-top:none;padding-top:0} 61 .pub-content h3{font-family:var(--font-display);font-size:clamp(20px,2vw,26px);font-weight:300;line-height:1.2;letter-spacing:-0.01em;margin:32px 0 14px} 62 .pub-content p{font-size:clamp(15px,1.2vw,17px);line-height:1.75;color:var(--text-dim);margin-bottom:20px;max-width:720px} 63 .pub-content .fig{margin:clamp(32px,4vw,56px) 0;background:var(--bg-card);border:1px solid var(--border);padding:clamp(16px,2vw,32px)} 64 .pub-content .fig img{width:100%;margin-bottom:12px} 65 .pub-content .fig-cap{font-size:13px;color:var(--text-muted);line-height:1.5} 66 .pub-content .fig-title{font-family:var(--font-display);font-size:clamp(16px,1.3vw,20px);font-weight:300;margin-bottom:4px;letter-spacing:-0.01em;color:var(--text)} 67 68 .pub-cta{background:var(--bg-dark);padding:var(--section-py) var(--section-px);color:var(--text-on-dark);text-align:center} 69 .pub-cta__inner{max-width:600px;margin:0 auto} 70 .pub-cta__title{font-family:var(--font-display);font-size:clamp(28px,3.5vw,48px);font-weight:300;line-height:1.1;letter-spacing:-0.03em;margin-bottom:16px} 71 .pub-cta__desc{font-size:16px;line-height:1.65;color:rgba(248,245,231,0.45);margin-bottom:32px} 72 .pub-cta__btn{display:inline-flex;align-items:center;gap:10px;padding:16px 32px;background:#fff;color:var(--bg-dark);font-size:15px;font-weight:500;transition:all 0.3s} 73 .pub-cta__btn:hover{opacity:0.85;transform:translateY(-2px)} 74 .pub-cta__btn svg{width:14px;height:14px} 75 76 @media(max-width:900px){ 77 .findings__inner{grid-template-columns:1fr}.findings__label{position:static;margin-bottom:24px}.findings__grid{grid-template-columns:1fr} 78 .pub-body__inner{grid-template-columns:1fr} 79 .pub-toc{position:static;display:flex;gap:12px;flex-wrap:wrap;margin-bottom:32px;border-bottom:1px solid var(--border);padding-bottom:24px} 80 .pub-toc__label{width:100%}.pub-toc__link{padding:6px 12px;border-left:none;border:1px solid var(--border);font-size:12px}.pub-toc__actions{flex-direction:row;width:100%} 81 } 82 </style> 83</head> 84<body> 85 <section class="pub-hero"> 86 <div class="pub-hero__inner"> 87 <div class="pub-hero__meta"><span class="pub-hero__tag">Flagship Report</span><span class="pub-hero__tag">2026</span></div> 88 <h1 class="pub-hero__title">U.S. Energy Security Index</h1> 89 <p class="pub-hero__subtitle">Using 18 statistical risk indicators integrated into a single metric, the ESI plots the history of America’s energy security from 1970 to 2024 and provides a glimpse into the future to 2035.</p> 90 <p class="pub-hero__authors">By <strong>Iddo Wernick</strong> and <strong>Stephen D. Eule</strong> — Preface by <strong>Mark P. Mills</strong></p> 91 </div> 92 </section> 93 94 <div class="chart-hero"> 95 <div class="chart-hero__inner"> 96 <div class="chart-hero__label">Figure 1</div> 97 <div class="chart-hero__fig-title">U.S. Energy Security Index</div> 98 <div class="chart-hero__fig-note">Higher score = higher risk · 1970–2035</div> 99 <img src="assets/esi-figure1-main.png" alt="U.S. Energy Security Index stacked area chart from 1970 to 2035" class="chart-hero__img"> 100 <p class="chart-hero__caption">The reduction in risks in traditional domains—oil and natural gas—have been more than offset by rising vulnerabilities associated with alternative energy technologies.</p> 101 </div> 102 </div> 103 104 <section class="findings"> 105 <div class="findings__inner"> 106 <div class="findings__label">Key Findings</div> 107 <div class="findings__grid"> 108 <div class="finding"><div class="finding__num">01</div><div class="finding__title">Risk is rising</div><p class="finding__desc">From 2020 to 2024, America’s geopolitical energy risk increased nearly 6 points, driven by mineral import dependencies and cybersecurity threats.</p></div> 109 <div class="finding"><div class="finding__num">02</div><div class="finding__title">Shale gains eroding</div><p class="finding__desc">The shale revolution’s historic security gains are being reversed by rising vulnerabilities in uranium, cobalt, lithium, and rare earth supply chains.</p></div> 110 <div class="finding"><div class="finding__num">03</div><div class="finding__title">New risk profile</div><p class="finding__desc">Energy security threats have shifted from oil imports to minerals needed for solar, wind, and battery hardware—plus systemic cyber risks.</p></div> 111 <div class="finding"><div class="finding__num">04</div><div class="finding__title">18 indicators, one score</div><p class="finding__desc">The ESI integrates risk across six categories—
111oil, natural gas, uranium, energy minerals, infrastructure minerals, and systems—into a single metric.</p></div> 112 </div> 113 </div> 114 </section> 115 116 <div class="pub-body"> 117 <div class="pub-body__inner"> 118 <aside class="pub-toc"> 119 <div class="pub-toc__label">Contents</div> 120 <a href="#preface" class="pub-toc__link is-active">Preface</a> 121 <a href="#exec-summary" class="pub-toc__link">Executive Summary</a> 122 <a href="#overview" class="pub-toc__link">Overview</a> 123 <a href="#methodology" class="pub-toc__link">Methodology</a> 124 <a href="#results" class="pub-toc__link">Results</a> 125 <a href="#history" class="pub-toc__link">Historical Context</a> 126 <a href="#conclusion" class="pub-toc__link">Conclusion</a> 127 <div class="pub-toc__actions"> 128 <a class='pub-toc__btn' href='/energy-index'>Explore Dashboard <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a> 129 <a class='pub-toc__btn' href='/research-library'>All Research</a> 130 </div> 131 </aside> 132 133 <article class="pub-content"> 134 <h2 id="preface">Preface</h2> 135 <p>With this report, the National Center for Energy Analytics launches its new Energy Security Index (ESI) to help answer the question: Is our nation’s energy security getting better or worse?</p> 136 <p>Indices are commonly used to provide a proxy for measuring the state and direction of change for complex systems influenced by many factors. The GDP offers a single number widely used to gauge economic activity. We believe it is possible to create a similarly useful metric for the overall state of national energy security.</p> 137 <p>The NCEA’s Energy Security Index is the first such index that can serve as both a gauge of the current risk level in historical context, and also as a leading indicator for the direction of change. All inputs, data sources, assumptions, and weightings are transparently available. We invite commentary and refinements and will be updating the ESI annually.</p> 138 <p style="color:var(--text-muted);font-style:italic">— Mark P. Mills, NCEA Executive Director</p> 139 140 <h2 id="exec-summary">Executive Summary</h2> 141 <p>Energy security has been a critical feature of geopolitics since the dawn of the modern era. The 1973 Arab Oil Embargo re-ignited energy security debates and catalyzed far-reaching Congressional policies. Political anxieties did not abate until the shale revolution of the early 2000s brought the United States back to a position as a net energy exporter for the first time in 70 years. Now the cycle continues—energy security has returned as a concern in the wake of the Russian invasion of Ukraine and the rise of China’s energy minerals dominance.</p> 142 <p>The ESI uses 18 statistical risk indicators integrated into a single overall metric, plotting the history from 1970 to 2024 and providing a glimpse into the future to 2035 based on federal agency forecasts.</p> 143 144 <div class="fig"> 145 <div class="fig-title">Table 2. ESI Indicator Scores for 2024</div> 146 <img src="assets/esi-figure2.png" alt="ESI Indicator Scores table showing 2024 scores, historical averages, highs and lows for all 18 indicators"> 147 <p class="fig-cap">Scores for all 18 risk indicators grouped by category, with historical high, low, and average from 1970–2024. Higher scores indicate higher risk.</p> 148 </div> 149 150 <h2 id="overview">Overview</h2> 151 <p>Since the Arab Oil Embargo of 1973, the energy security of the United States has been a perennial geopolitical concern. Since the early 1970s, the concept generally revolved around the amount and sources of oil imports and the price of gasoline. While still politically potent, such measures no longer suffice for depicting the overall vulnerability of the U.S. energy system to external threats.</p> 152 <p>NCEA developed its Energy Security Index as a data-based tool to measure these threats over time. It focuses on physical supplies of oil, natural gas, and minerals used for energy technologies and infrastru
152cture. The ESI’s numerical score is the sum of the threats affecting imports of fuels and minerals from foreign countries, as well as the vulnerability of energy systems to disruptions in global markets and threats from cyber attacks.</p> 153 154 <div class="fig"> 155 <div class="fig-title">Figure 3. Freedom House Political Freedom Scores</div> 156 <img src="assets/esi-figure3.png" alt="Chart showing political freedom scores for energy-producing nations"> 157 <p class="fig-cap">Political freedom scores for nations supplying critical energy commodities to the United States, weighted by import share.</p> 158 </div> 159 160 <h2 id="methodology">How the ESI Works</h2> 161 <p>The ESI is based on data for 18 different risk indicators grouped into six categories: crude oil, natural gas, uranium, energy technology minerals, energy infrastructure minerals, and systemic factors including cyber security, oil price volatility, and the Strategic Petroleum Reserve.</p> 162 <p>The six indicator groups are weighted and combined to form a single overall measure of U.S. energy security. Import indicators use a weighted average risk score based on the political freedom of supplier countries and the degree of import concentration.</p> 163 164 <div class="fig"> 165 <div class="fig-title">ESI Indicator Category Weights</div> 166 <img src="assets/esi-table1.png" alt="Chart showing ESI indicator category weights"> 167 <p class="fig-cap">Share of the ESI score contributed by each of the six indicator categories over time.</p> 168 </div> 169 170 <h2 id="results">Results</h2> 171 <h3>Oil and Natural Gas Risks Are Getting Better</h3> 172 <p>The shale revolution’s impact on U.S. energy security was arguably the single most consequential reduction in geopolitical energy vulnerabilities in decades. Rapidly growing crude oil production since 2008 allowed the United States to sanction exports from Iran, Russia, and Venezuela with no perceptible move in oil prices.</p> 173 174 <h3>Minerals Risks Are Getting Worse</h3> 175 <p>Risks associated with the demand for energy technology minerals—cobalt, graphite, lithium, manganese, and rare earths—have surged. Many of these minerals are sourced from countries under authoritarian control. China’s dominance of mineral processing represents a concentrated supply chain vulnerability.</p> 176 177 <h3>Systemic Risks Will Persist</h3> 178 <p>Cyber-attacks against energy infrastructures represent a growing threat. Combined with crude oil price volatility and lower SPR inventory levels, systemic risks have effectively replaced earlier vulnerabilities.</p> 179 180 <div class="fig"> 181 <div class="fig-title">Category-Level Risk Trends</div> 182 <img src="assets/esi-figure5.png" alt="Individual risk category trends over time"> 183 <p class="fig-cap">Individual risk trends by category showing the divergence between declining oil/gas risks and rising mineral and systemic risks.</p> 184 </div> 185 186 <h2 id="history">Historical Context</h2> 187 <h3>1970s</h3> 188 <p>The 1973 Arab Oil Embargo triggered the worst U.S. energy security crisis of the post-war era, pushing the ESI to its all-time high of 64.1 in 1977. Congress responded with sweeping legislation including the Energy Policy and Conservation Act, creation of the Strategic Petroleum Reserve, and fuel economy standards.</p> 189 190 <h3>1980s–1990s</h3> 191 <p>The breakup of OPEC pricing discipline and the growth of non-OPEC production steadily reduced oil-related security risks. The collapse of the Soviet Union opened new supply sources and reduced geopolitical tensions around energy.</p> 192 193 <h3>2000s–2010s</h3> 194 <p>The shale revolution, beginning around 2008, transformed the U.S. energy landscape. Domestic oil and gas production surged, net imports fell dramatically, and the U.S. became a net natural gas exporter.</p> 195 196 <h3>2020s</h3> 197 <p>For 2025, the ESI score stands at 44.9—about 3 points below the historical average. From 2020 to 2024, risk increased nearly 6 points, propelled by rising import supply risks for minerals and sharply rising cybersecurity breaches.</p> 198 199 <h2 id="conclusion">Conclusion</h2> 200 <p>Is America’s overall energy security getting better or worse? The answer is nuanced. Some underlying components are getting better while others trend w
200orse. But the bottom line is that U.S. energy risk exposure is rising over the coming decade based on current trends—if those trends continue.</p> 201 <p>The tremendous increase in domestic oil and natural gas production has lessened import risks considerably. But uranium supply risks have increased due to Russia’s dominance of the supply chain, and the surge in demand for energy minerals has created new vulnerabilities that have replaced the earlier oil-centric risks.</p> 202 </article> 203 </div> 204 </div> 205 206 <section class="pub-cta"> 207 <div class="pub-cta__inner"> 208 <h2 class="pub-cta__title">Explore the interactive dashboard</h2> 209 <p class="pub-cta__desc">Dive into the data behind the ESI. Explore individual indicators, compare categories, and see where current policies are headed.</p> 210 <a class='pub-cta__btn' href='/energy-index'>Open Dashboard <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg></a> 211 </div> 212 </section> 213 214 <footer class="footer"> 215 <div class="footer__expertise"><div class="footer__expertise-inner"><h2 class="footer__expertise-title">Our areas of<br>expertise</h2><div class="footer__expertise-grid"> 216 <div class="footer__expertise-col"><h4 class="footer__expertise-heading">Topics <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="7" y1="17" x2="17" y2="7"/><polyline points="7 7 17 7 17 17"/></svg></h4><ul class="footer__expertise-list"><li><a class='footer__expertise-link' href='/topics#grid'>Grid Reliability</a></li><li><a class='footer__expertise-link' href='/topics#nuclear'>Nuclear Energy</a></li><li><a class='footer__expertise-link' href='/topics#oil-gas'>Oil & Gas Policy</a></li><li><a class='footer__expertise-link' href='/topics#economics'>Energy Economics</a></li><li><a class='footer__expertise-link' href='/topics#security'>Energy Security</a></li></ul></div> 217 <div class="footer__expertise-col"><h4 class="footer__expertise-heading">Research <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="7" y1="17" x2="17" y2="7"/><polyline points="7 7 17 7 17 17"/></svg></h4><ul class="footer__expertise-list"><li><a class='footer__expertise-link' href='/research-library'>All Publications</a></li><li><a class='footer__expertise-link' href='/esi-report'>Energy Security Index</a></li><li><a class='footer__expertise-link' href='/research-library'>Policy Analysis</a></li><li><a class='footer__expertise-link' href='/research-library'>Testimony</a></li></ul></div> 218 <div class="footer__expertise-col"><h4 class="footer__expertise-heading">Tools <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="7" y1="17" x2="17" y2="7"/><polyline points="7 7 17 7 17 17"/></svg></h4><ul class="footer__expertise-list"><li><a class='footer__expertise-link' href='/energy-index'>ESI Dashboard</a></li><li><a class='footer__expertise-link' href='/energy-index'>Data Downloads</a></li></ul></div> 219 <div class="footer__expertise-col"><h4 class="footer__expertise-heading">Connect <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="7" y1="17" x2="17" y2="7"/><polyline points="7 7 17 7 17 17"/></svg></h4><ul class="footer__expertise-list"><li><a class='footer__expertise-link' href='/contact'>Contact Us</a></li><li><a class='footer__expertise-link' href='/subscribe'>Newsletter</a></li></ul></div> 220 </div></div></div> 221 <div class="footer__bottom"><div class="footer__bottom-inner"><a class='footer__logo' href='/'><img src="assets/Footer_logo.svg" alt="NCEA"></a><p class="footer__copyright">© 2026 National Center for Energy Analytics. All rights reserved.</p><div class="footer__legal"><a class='footer__legal-link' href='/terms'>Terms & Conditions</a><a class='footer__legal-link' href='/privacy'>Privacy Policy</a></div></div></div> 222 </footer> 223 224
224<script src="shared/components.js"></script>
224 225
225<script src="shared/global-nav.js"></script>
225 226
226<script src="shared/island-nav.js"></script>
226 227
227<script> 228 var savedTheme=localStorage.getItem('ncea-theme');if(savedTheme)document.documentElement.dataset.theme=savedTheme; 229 gsap.registerPlugin(ScrollTrigger); 230 var tocLinks=document.querySelectorAll('.pub-toc__link'); 231 document.querySelectorAll('.pub-content h2[id]').forEach(function(h){ 232 ScrollTrigger.create({trigger:h,start:'top 120px',end:'bottom 120px', 233 onEnter:function(){tocLinks.forEach(function(l){l.classList.toggle('is-active',l.getAttribute('href')==='#'+h.id)})}, 234 onEnterBack:function(){tocLinks.forEach(function(l){l.classList.toggle('is-active',l.getAttribute('href')==='#'+h.id)})} 235 }); 236 }); 237 gsap.from('.pub-hero__inner > *',{y:30,opacity:0,duration:0.8,stagger:0.1,ease:'power2.out'}); 238 gsap.from('.chart-hero__inner',{y:40,opacity:0,duration:0.9,delay:0.3,ease:'power2.out'}); 239 document.querySelectorAll('.finding').forEach(function(el,i){ 240 gsap.fromTo(el,{y:30,opacity:0},{y:0,opacity:1,duration:0.6,delay:i*0.1,ease:'power2.out',scrollTrigger:{trigger:el,start:'top 88%',once:true}}); 241 }); 242 document.querySelectorAll('.pub-content .fig').forEach(function(el){ 243 gsap.fromTo(el,{y:30,opacity:0},{y:0,opacity:1,duration:0.7,ease:'power2.out',scrollTrigger:{trigger:el,start:'top 85%',once:true}}); 244 }); 245 </script>
245 246</body> 247</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.