1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>About | Carter Conlon</title> 7 <link rel="preconnect" href="https://fonts.googleapis.com"> 8 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 9 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Syne:wght@400;500;600;700;800&display=swap" rel="stylesheet"> 10 <link href="https://fonts.cdnfonts.com/css/d-din" rel="stylesheet"> 11
11<script src="https://unpkg.com/@phosphor-icons/[email protected]"></script>
11 12 <link rel="stylesheet" href="/static/css/style.css?v=1790700511"> 13 14 <!-- Google Analytics (GA4) -->
vendor: 68 bytes, lines 14-15
14 15 <script async src="https://www.googletagmanager.com/gtag/js?id=
15G-4NF3B6DDSF
vendor: 16 bytes, lines 15-16
15"></script> 16
16<script> 17
vendor: 151 bytes, lines 17-20
17window.dataLayer = window.dataLayer || []; 18 function gtag(){dataLayer.push(arguments);} 19 gtag('js', new Date()); 20 gtag('config', '
20G-4NF3B6DDSF
vendor: 8 bytes, lines 20-21
20'); 21
21</script>
21 22 23 24</head> 25<body> 26 <!-- Header --> 27 <header class="site-header "> 28 <div class="container"> 29 <a href="/" class="site-logo">Carter Conlon</a> 30 <button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu"> 31 <span></span><span></span><span></span> 32 </button> 33 <nav class="nav-links"> 34 <a href="/about" class="active">About</a> 35 <a href="/sermons" >Sermons</a> 36 <div class="nav-dropdown"> 37 <a href="/podcast" class="nav-dropdown-toggle " aria-haspopup="true">Podcast <svg width="10" height="10" viewBox="0 0 10 10" aria-hidden="true"><path d="M1 3l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></a> 38 <div class="nav-dropdown-menu"> 39 <a href="/dailydevotionals" >Daily Devotionals</a> 40 <a href="/podcast/a-call-to-the-nation" >A Call to the Nation</a> 41 <a href="/podcast/sermons" >Sermons</a> 42 43 </div> 44 </div> 45 <a href="/blog" >Blog</a> 46 <a href="/music" >Music</a> 47 <a href="/books" >Books</a> 48 <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener">Give</a> 49 <a href="javascript:void(0)" class="btn-subscribe" onclick="openSubscribe()">Subscribe</a> 50 </nav> 51 </div> 52 </header> 53 54 55<div class="about-hero"> 56 <div class="container"> 57 <!-- Quote --> 58 <blockquote class="about-quote"> 59 <p>"Prayer is the key to all that Jesus is willing to do. The day and hour demands that those who still know the mercy of Jesus Christ begin to plead for our nation. When prayer turns to a heartfelt cry for freedom and deliverance, God will hear and answer. I believe that God is willing to show His mercy to us once again, in spite of how far we have gotten away from truth as a society."</p> 60 <cite>Pastor Carter Conlon</cite> 61 </blockquote> 62 </div> 63</div> 64 65<!-- Carter Conlon Bio --> 66<section class="section reveal"> 67 <div class="container"> 68 <div class="about-section"> 69 <div class="about-text"> 70 <h2>Carter Conlon</h2> 71 <p>Carter Conlon's life has been marked by a deep commitment to prayer, a passion for spiritual renewal, and a tireless enthusiasm for sharing the gospel of Jesus Christ. Born in Quebec, Canada, Carter's journey in ministry began as a young police officer who cried out to God on May 12, 1978.</p> 72 <p>Today, Carter serves as General Overseer of Times Square Church in New York City. He joined the pastoral staff at TSC as an associate pastor in 1994 at the invitation of founding pastor David Wilkerson and became Senior Pastor from 2001 until 2020.</p> 73 <p>Carter is privileged to serve in ministry alongside his wife, Teresa Conlon, who is the President of Summit International School of Ministry. The Conlon's have three children and nine grandchildren.</p> 74 </div> 75 <div class="about-video-embed"> 76 <p class="about-video-label">Carter Conlon shares his testimony</p> 77 <div class="about-video-wrapper"> 78 <iframe src="https://www.youtube.com/embed/_tUARnowbJg" allowfullscreen allow="autoplay; encrypted-media" loading="lazy"></iframe> 79 </div> 80 </div> 81 </div> 82 </div> 83</section> 84 85<!-- Times Square Church --> 86<section class="section reveal"> 87 <div class="container"> 88 <div class="about-section reverse"> 89 <div class="about-text"> 90 <h2>Times Square Church</h2> 91 <p>Founded in 1987, Times Square Church is a beacon of hope in the heart of New York City. The mission of TSC is simple: to see lives changed through the love of God and His Word.</p> 92 <p>Times Square Church was founded by Pastor David Wilkerson. Pastor David was first called to New York City in 1958 to minister to gang members and drug addicts, as told in the best-selling book The Cross and the Switchblade.</p> 93 <p>Now under the leadership of Senior Pastor Tim Dilena, the passion to pray, disciple believers, build up leaders, and care for the poor is still at the heart of Times Square Church today.</p> 94 <a href="https://www.tsc.nyc" target="_blank" rel="noopener" class="btn-outline" style="margin-top: 16px;">Visit TSC Website</a> 95 </div> 96 <div class="about-image"> 97 <img src="/static/images/about_0_f2577dbfee.jpg" alt="Times Square Church interior" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;"> 98 </div> 99 </div> 100 </div> 101</section> 102 103<!-- It's Time To Pray --> 104<section class="section section--light reveal"> 105 <div class="container"> 106 <div class="about-section"> 107 <div class="about-text"> 108 <h2>It's Time To Pray</h2> 109 <p>In the early 2000s, God prompted Carter to call together the churches of New York City to congregate for one hour of prayer on the streets of Manhattan. As a result, for three consecutive years, Christians from all denominations assembled on Broadway, culminating in a gathering of over 50,000 people in its final year.</p> 110 <p>During this movement, the Lord placed on Carter's heart to begin a weekly worldwide prayer meeting, which today is broadcast weekly from Summit International School of Ministry, the bible school of Times Square Church. Every Wednesday, this powerful service is streamed by churches and individuals in 200+ countries and territories throughout the world.</p> 111 <p>Since its inception, the worldwide prayer meeting has received hundreds of thousands of prayer requests and witnessed innumerable answers to prayer.</p> 112 <div style="display: flex; gap: 12px; flex-wrap: wrap; margin-top: 16px;"> 113 <a href="https://www.youtube.com/playlist?list=PLI_UFfXJJvH9miaXIxnP8jHPWqElqrRcg" target="_blank" rel="noopener" class="btn-outline">Watch Latest Meeting</a> 114 <a href="/contact" class="btn-outline">Pray for Someone</a> 115 <a href="/contact" class="btn-outline">Send Prayer Request</a> 116 </div> 117 </div> 118 <div class="about-video-embed"> 119 <p class="about-video-label">"The Call of the Shipmaster" â a sermon sharing why you and I are called to prayer</p> 120 <div class="about-video-wrapper"> 121 <iframe src="https://www.youtube.com/embed/0vpjC9cwzIk" allowfullscreen allow="autoplay; encrypted-media" loading="lazy"></iframe> 122 </div> 123 </div> 124 </div> 125 </div> 126</section> 127 128<!-- Radio --> 129 130<section class="section reveal"> 131 <div class="container"> 132 <div class="about-section reverse"> 133 <div class="about-text"> 134 <h2>Radio</h2> 135 <p>
135Beyond the pulpit, Carter's one-minute devotional, It's Time to Pray, is heard on Christian radio outlets across the nation. His half-hour radio program, A Call to the Nation, continues to expand its reach throughout the United States.</p> 136 <p>Through these platforms, he encourages believers to embrace the power of prayer in their daily lives.</p> 137 <a href="/podcast" class="btn-outline" style="margin-top: 16px;">Listen to the Podcast</a> 138 </div> 139 <div class="about-image"> 140 <img src="/static/images/about_1_557490f7da.jpg" alt="Carter Conlon in the recording studio" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;"> 141 </div> 142 </div> 143 </div> 144</section> 145 146 147<!-- Compassion Fund --> 148<section class="section section--light reveal"> 149 <div class="container"> 150 <div class="about-section"> 151 <div class="about-text"> 152 <h2>Compassion Fund</h2> 153 <p>As an author, Carter Conlon has authored several impactful books, including The 180-Degree Christian, Fear Not, Unshakable, and his autobiographical book, It's Time to Pray. 100% of the proceeds from his writings benefit the Compassion Fund, a charitable fund through Times Square Church to help those in need.</p> 154 <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener" class="btn-outline" style="margin-top: 16px;">Give to the Compassion Fund</a> 155 </div> 156 <div class="about-image"> 157 <img src="/static/images/about_2_f9f1aa6286.jpg" alt="Compassion fund outreach" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;"> 158 </div> 159 </div> 160 </div> 161</section> 162 163<!-- Summit International School of Ministry --> 164<section class="section reveal"> 165 <div class="container"> 166 <div class="about-section reverse"> 167 <div class="about-text"> 168 <h2>Summit International School of Ministry</h2> 169 <p>Summit International School of Ministry exists to train men and women for ministry through a transformative relationship with Jesus Christ. Summit is a ministry close to Pastor Carter's heart, and where he spends much of his time. "It is a wise generation" he explains, "that invests in light during a time of darkness". Each year, students graduate from Summit and serve in ministries and churches all over the world, making a difference wherever they go. Summit emphasizes truly knowing God, not just learning about Him.</p> 170 </div> 171 <div class="about-image"> 172 <img src="/static/images/about_3_19b0601ce8.png" alt="Summit International School of Ministry campus" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;"> 173 </div> 174 </div> 175 </div> 176</section> 177 178<!-- David Wilkerson Quote --> 179<section class="cta-banner wilkerson-section reveal"> 180 <div class="container"> 181 <div class="wilkerson-layout"> 182 <div class="wilkerson-image"> 183 <img src="/static/images/about_4_6eb0c193cd.jpg" alt="Carter Conlon with David Wilkerson" loading="lazy"> 184 </div> 185 <div class="wilkerson-quote"> 186 <blockquote> 187 "Carter Conlon is a true man of God who lives what he preaches. He has been given a special anointing of the Holy Spirit to deliver the Word of God with straightforwardness and authority yet with mercy and grace. When this man preaches, you know you have truly heard from God's throne." 188 </blockquote> 189 <p class="wilkerson-name">David Wilkerson (1931-2011)</p> 190 <p class="wilkerson-title">Founding Pastor, Times Square Church, New York</p> 191 </div> 192 </div> 193 </div> 194</section> 195 196 197 <!-- Footer --> 198 <footer class="site-footer"> 199 <div class="container"> 200 <div class="footer-top"> 201 <div class="footer-brand"> 202 <div class="footer-logo">Carter Conlon</div> 203 <div class="footer-phone">(212) 541-6300</div> 204 <div class="footer-address"> 205 Times Square Church<br> 206 1657 Broadway<br> 207 New York, NY 10019<br> 208 USA 209 </div> 210 </div> 211 <nav class="footer-nav"> 212 <a href="/about">About</a> 213 <a href="/sermons">Sermons</a> 214 <a href="/dailydevotionals">Daily Devotionals</a> 215 <a href="/podcast">Podcast</a> 216 <a href="/blog">Blog</a> 217 <a href="/music">Music</a> 218 <a href="/books">Books</a> 219 <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener">Give</a> 220 </nav> 221 </div> 222 <div class="footer-bottom">
223 <span class="copyright">© Carter Conlon 2026. All Rights Reserved. <a href="/privacy">Privacy</a> · <a href="/terms">Terms</a></span> 224 <div class="social-links"> 225 <a href="https://www.facebook.com/carterconlon" class="fb" target="_blank" rel="noopener" aria-label="Facebook"> 226 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385h-3.047v-3.47h3.047v-2.642c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953h-1.514c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385c5.738-.9 10.126-5.864 10.126-11.854z"/></svg> 227 </a> 228 <a href="https://twitter.com/carterconlon" class="tw" target="_blank" rel="noopener" aria-label="X"> 229 <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg> 230 </a> 231 <a href="https://www.youtube.com/@CarterConlonOfficial" class="yt" target="_blank" rel="noopener" aria-label="YouTube"> 232 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg> 233 </a> 234 </div> 235 </div> 236 </div> 237 </footer> 238 239 <!-- Subscribe Modal --> 240 <div class="modal-overlay" id="subscribeModal" onclick="if(event.target===this)closeSubscribe()"> 241 <div class="modal-content"> 242 <button class="modal-close" onclick="closeSubscribe()">×</button> 243 <p class="subscribe-tagline">Subscribe now and get daily <em>it's time to pray</em> devotionals in your inbox</p> 244 <form class="subscribe-form" id="subscribeForm" onsubmit="return handleSubscribe(event)"> 245 <div class="subscribe-fields"> 246 <input type="text" id="sub-first" placeholder="First Name" required> 247 <input type="text" id="sub-last" placeholder="Last Name" required> 248 <input type="email" id="sub-email" placeholder="Email" required> 249 </div> 250 <div style="position:absolute; left:-9999px; top:-9999px;" aria-hidden="true"> 251 <label for="sub-website">Website</label> 252 <input type="text" id="sub-website" name="website" tabindex="-1" autocomplete="off"> 253 </div> 254 <button type="submit" class="btn-primary" id="sub-btn" style="width: 100%; margin-top: 12px;">Subscribe Now</button> 255 <p id="sub-msg" style="text-align: center; margin-top: 8px; font-size: 14px; display: none;"></p> 256 </form> 257 </div> 258 </div> 259
259<script> 260 function openSubscribe() { 261 document.getElementById('subscribeModal').classList.add('active'); 262 document.body.style.overflow = 'hidden'; 263 } 264 function closeSubscribe() { 265 document.getElementById('subscribeModal').classList.remove('active'); 266 document.body.style.overflow = ''; 267 } 268 async function handleSubscribe(e) { 269 e.preventDefault(); 270 const btn = document.getElementById('sub-btn'); 271 const msg = document.getElementById('sub-msg'); 272 btn.disabled = true; 273 btn.textContent = 'Subscribing...'; 274 msg.style.display = 'none'; 275 try { 276 const resp = await fetch('/api/subscribe', { 277 method: 'POST', 278 headers: { 'Content-Type': 'application/json' }, 279 body: JSON.stringify({ 280 first_name: document.getElementById('sub-first').value, 281 last_name: document.getElementById('sub-last').value, 282 email: document.getElementById('sub-email').value, 283 website: document.getElementById('sub-website').value, 284 }), 285 }); 286 const data = await resp.json(); 287 if (resp.ok) { 288 msg.textContent = 'Thank you for subscribing!'; 289 msg.style.color = '#4CAF50'; 290 msg.style.display = 'block'; 291 document.getElementById('subscribeForm').reset(); 292 setTimeout(closeSubscribe, 2000); 293 } else { 294 msg.textContent = data.error || 'Something went wrong'; 295 msg.style.color = '#e57373'; 296 msg.style.display = 'block'; 297 } 298 } catch (err) { 299 msg.textContent = 'Network error. Please try again.'; 300 msg.style.color = '#e57373'; 301 msg.style.display = 'block'; 302 } 303 btn.disabled = false; 304 btn.textContent = 'Subscribe Now'; 305 } 306 </script>
306 307 308 <!-- Live Stream Popup (Worldwide Prayer Meeting, Wednesdays 6:55-8:35 PM New York time) --> 309 <div class="modal-overlay" id="liveModal" onclick="if(event.target===this)dismissLive()"> 310 <div class="modal-content live-modal"> 311 <button class="modal-close" onclick="dismissLive()">×</button> 312 <div class="live-badge"><span class="live-dot"></span>Live Now</div> 313 <h3 class="live-title">The Worldwide Prayer Meeting is live</h3> 314 <div class="live-player" id="livePlayer" hidden></div> 315 <div id="liveActions"> 316 <p class="live-text">Join thousands of believers in 200+ countries in worship, the Word and prayer, happening right now.</p> 317 <a href="https://www.youtube.com/@TimesSquareChurch/live" target="_blank" rel="noopener" class="btn-primary" onclick="dismissLive()">Watch Live</a> 318 </div> 319 <a href="https://www.youtube.com/@TimesSquareChurch/live" target="_blank" rel="noopener" class="live-yt-link" id="liveYtLink" hidden>Watch on YouTube ↗</a> 320 </div> 321 </div> 322 <button class="live-pill" id="livePill" onclick="reopenLive()" hidden><span class="live-dot"></span>Live Now — Watch</button> 323
323<script> 324 (function () { 325 var START_MIN = 18 * 60 + 55; // 6:55 PM 326 var END_MIN = 20 * 60 + 35; // 8:35 PM 327 var STORAGE_KEY = 'wwpmLiveDismissed'; 328 var overlay = document.getElementById('liveModal'); 329 var pill = document.getElementById('livePill'); 330 331 function nyNow() { 332 var parts = new Intl.DateTimeFormat('en-US', { 333 timeZone: 'America/New_York', weekday: 'short', 334 year: 'numeric', month: '2-digit', day: '2-digit', 335 hour: '2-digit', minute: '2-digit', hour12: false 336 }).formatToParts(new Date()); 337 var p = {}; 338 parts.forEach(function (x) { p[x.type] = x.value; }); 339 return p; 340 } 341 342 function getDismissed() { 343 try { return localStorage.getItem(STORAGE_KEY); } catch (e) { return null; } 344 } 345 346 var preview = new URLSearchParams(location.search).has('livePreview'); 347 var previewDismissed = false; 348 var playerLoaded = false; 349 var embedBlocked = false; 350 351 // If YouTube refuses to embed the stream (e.g. error 150/151), 352 // fall back to the Watch Live link layout instead of a dead player. 353 window.addEventListener('message', function (e) { 354 if (e.origin.indexOf('youtube') === -1 || typeof e.data !== 'string') return; 355 var d; 356 try { d = JSON.parse(e.data); } catch (err) { return; } 357 if (d.event === 'onError') { 358 embedBlocked = true; 359 unloadPlayer(); 360 } 361 }); 362 363 window.dismissLive = function () { 364 if (preview) { 365 previewDismissed = true; 366 } else { 367 var p = nyNow(); 368 try { localStorage.setItem(STORAGE_KEY, p.year + '-' + p.month + '-' + p.day); } catch (e) {} 369 } 370 update(); 371 }; 372 373 window.reopenLive = function () { 374 previewDismissed = false; 375 try { localStorage.removeItem(STORAGE_KEY); } catch (e) {} 376 update(); 377 }; 378 379 function loadPlayer() { 380 if (playerLoaded || embedBlocked) return; 381 playerLoaded = true; 382 fetch('/api/live-video' + (preview ? '?recent=1' : '')) 383 .then(function (r) { return r.json(); }) 384 .then(function (data) { 385 if (!data.videoId) { playerLoaded = false; return; } // fallback shown; retry on next update() 386 var ifr = document.createElement('iframe'); 387 ifr.src = 'https://www.youtube-nocookie.com/embed/' + data.videoId 388 + '?autoplay=1&mute=1&rel=0&enablejsapi=1&origin=' + encodeURIComponent(location.origin); 389 ifr.allow = 'autoplay; encrypted-media; picture-in-picture'; 390 ifr.allowFullscreen = true; 391 ifr.title = 'Worldwide Prayer Meeting live stream'; 392 ifr.addEventListener('load', function () { 393 try { 394 ifr.contentWindow.postMessage(JSON.stringify({ event: 'listening', id: 'wwpm', channel: 'widget' }), '*'); 395 ifr.contentWindow.postMessage(JSON.stringify({ event: 'command', func: 'addEventListener', args: ['onError'] }), '*'); 396 } catch (e) {} 397 }); 398 var wrap = document.getElementById('livePlayer'); 399 wrap.appendChild(ifr); 400 var unmute = document.createElement('button'); 401 unmute.className = 'live-unmute'; 402 unmute.innerHTML = '🔊 Tap to unmute'; 403 unmute.onclick = function () { 404 ['unMute', 'playVideo'].forEach(function (func) { 405 ifr.contentWindow.postMessage(JSON.stringify({ event: 'command', func: func, args: [] }), '*'); 406 }); 407 unmute.remove(); 408 }; 409 wrap.appendChild(unmute); 410 wrap.hidden = false;
411 document.getElementById('liveActions').hidden = true; 412 document.getElementById('liveYtLink').hidden = false; 413 }) 414 .catch(function () {}); 415 } 416 417 function unloadPlayer() { 418 if (!playerLoaded) return; 419 playerLoaded = false; 420 var wrap = document.getElementById('livePlayer'); 421 wrap.innerHTML = ''; 422 wrap.hidden = true; 423 document.getElementById('liveActions').hidden = false; 424 document.getElementById('liveYtLink').hidden = true; 425 } 426 427 function update() { 428 var p = nyNow(); 429 var mins = (parseInt(p.hour, 10) % 24) * 60 + parseInt(p.minute, 10); 430 var isLive = preview || (p.weekday === 'Wed' && mins >= START_MIN && mins < END_MIN); 431 var dismissed = preview ? previewDismissed 432 : getDismissed() === p.year + '-' + p.month + '-' + p.day; 433 var showModal = isLive && !dismissed; 434 overlay.classList.toggle('active', showModal); 435 pill.hidden = !(isLive && dismissed); 436 if (showModal) { loadPlayer(); } else { unloadPlayer(); } 437 } 438 439 update(); 440 setInterval(update, 60000); 441 })(); 442 </script>
442 443
443<script> 444 // Podcast dropdown: hover opens it on desktop, a click or tap opens it anywhere 445 (function () { 446 document.querySelectorAll('.nav-dropdown-toggle').forEach(function (t) { 447 t.addEventListener('click', function (e) { 448 e.preventDefault(); 449 var d = t.parentElement, open = d.classList.contains('open'); 450 document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); }); 451 if (!open) d.classList.add('open'); 452 }); 453 }); 454 document.addEventListener('click', function (e) { 455 if (!e.target.closest('.nav-dropdown')) document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); }); 456 }); 457 document.addEventListener('keydown', function (e) { 458 if (e.key === 'Escape') document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); }); 459 }); 460 })(); 461 </script>
461 462
463<script> 464const observer = new IntersectionObserver((entries) => { 465 entries.forEach(entry => { 466 if (entry.isIntersecting) { 467 entry.target.classList.add('visible'); 468 } 469 }); 470}, { threshold: 0.1 }); 471 472document.querySelectorAll('.reveal').forEach(el => observer.observe(el)); 473</script>
473 474 475</body> 476</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.