PageSourceSearch

https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/

html wral.com collected 2026-10-01 08:33:44 UTC 51,890 bytes, 1,521 lines download raw bytes

1<!doctype html><html lang="en" data-gallery-cover="" data-hero-poster="" data-gallery-media=""><head>
2		<meta charset="utf-8">
3		<!--
4			DEV-1215 · Reserve the chrome's footprint before any JS runs.
5			The wral-header and wral-alerts-bar custom elements ship empty and are
6			upgraded by the deferred core module, so on a slow/cold load first paint
7			happens before upgrade and the page content jumps down. These min-heights
8			hold the space; the components override them via the --wral-* custom
9			properties once they know their real height.
10			Must stay the first rule set in the document head (right after the
11			charset meta) so it is parsed before OneTrust and every other tag.
12		-->
13		<style>
14			wral-header { display: block; min-height: var(--wral-header-height, 44px); }
15			wral-alerts-bar { display: block; min-height: var(--wral-alerts-bar-height, 87px); }
16			@media (min-width: 1024px) {
17				wral-header { min-height: var(--wral-header-height, 108px); }
18			}
19		</style>
20		<!-- OneTrust Cookies Consent Notice start for wral.com -->
21		
21<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="6d068f80-e744-46ab-877e-4847983f3ad4"></script>
21
22		
22<script type="text/javascript">
23		function OptanonWrapper() { }
24		</script>
24
25		<!-- OneTrust Cookies Consent Notice end for wral.com -->
26		<meta name="viewport" content="width=device-width, initial-scale=1">
27		<link rel="preconnect" href="https://web-components.cdn.wral.com" crossorigin="">
28		<link rel="modulepreload" href="https://web-components.cdn.wral.com/core/v0.15/components.es.js">
29		<title>The return to summer heat is brief :: WRAL.com</title>
30		<link rel="icon" type="image/png" href="https://www.wral.com/favicon-48x48.png">
31		
32			
33		
34		
35			
36				<!-- HTL Ad management -->
37				<link rel="stylesheet" type="text/css" href="https://htlbid.com/v3/wral.com/opscobid.css">
38				
38<script async src="https://htlbid.com/v3/wral.com/opscobid.js"></script>
38
39				
39<script>window.opscobid = window.opscobid || {}, opscobid.cmd = opscobid.cmd || [], opscobid.cmd.push(function () { opscobid.setTargeting("is_testing", "no"), opscobid.setTargeting("is_home", "no"), opscobid.setTargeting("category", "story"), opscobid.setTargeting("keywords", "wral-weathercenter,weather-forecast,weather"), opscobid.layout() })</script>
39
40			
41		
42		<meta name="description" content="Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.">
43		<meta name="ad-unit-path" content="wral-v4/weather/forecast-raleigh-durham-fayetteville">
44		<meta name="robots" content="index,follow,max-image-preview:large">
45		<link rel="dns-prefetch" href="//images.wral.com">
46		<link rel="preconnect" href="https://images.wral.com">
47
48		
49			
50		
51
52		<link rel="canonical" href="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/">
53		<link rel="preload" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Condensed:wght@400;500;700&#x26;family=Roboto:wght@400;500;700&#x26;display=swap" as="style">
54		<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Condensed:wght@400;500;700&#x26;family=Roboto:wght@400;500;700&#x26;display=swap">
55		<!--
56			web-components-wral · core library.
57			DEV-1215: pinned to v0.15, which carries the CLS fix for the header and
58			alerts bar. Keep this in lockstep with the modulepreload above and the
59			components.es.js loader below.
60		-->
61		<link rel="stylesheet" href="https://web-components.cdn.wral.com/core/v0.15/styles.css" media="print" onload="this.media=&#x27;all&#x27;">
62
63		<meta property="og:url" content="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/">
64		<meta name="twitter:url" content="https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/">
65		<meta property="og:title" content="The return to summer heat is brief">
66		<meta name="twitter:title" content="The return to summer heat is brief">
67		
68			
69				<meta property="og:description" content="Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.">
70				<meta name="twitter:description" content="Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.">
71			
72
73			
74				<meta property="og:image" content="https://images.wral.com/7f6600f4-310d-4d23-a516-046b73deee02?w=1200&#x26;h=630&#x26;height=630">
75				<meta property="og:image:width" content="1200">
76				<meta property="og:image:height" content="630">
77				<meta property="og:image:alt" content="The return to summer heat is brief">
78				<meta name="twitter:image" content="https://images.wral.com/7f6600f4-310d-4d23-a516-046b73deee02?w=1200&#x26;h=630&#x26;height=630">
79			
80			
81			
82		
83
84		<!-- OG Video (only when a hero video is present) -->
85		
86  		
87    		<!-- og:video / og:video:secure_url -->
88    		<meta property="og:video" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8">
89    		<meta property="og:video:secure_url" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8">
90    		<meta property="og:video:type" content="application/x-mpegURL">
91    		<meta property="og:video:width" content="1920">
92    		<meta property="og:video:height" content="1080">
93
94    		
95  		
96		
97
98		
99  		
100    		<meta name="twitter:player" content="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8">
101    		<meta name="twitter:player:width" content="1280">
102    		<meta name="twitter:player:height" content="720">
103  		
104		
105
106		<meta property="og:type" content="article">
107		<meta property="og:site_name" content="WRAL.com">
108		<meta name="twitter:site" content="@wral">
109		<meta name="twitter:card" content="summary_large_image">
110		<meta name="twitter:creator" content="@wral">
111
112		
112<script type="module" src="https://cdn.wral.com/@wral/search-results/v0.1.14/define.standalone.js"></script>
112
113
114		
115			
116				<meta name="keywords" content="WRAL WeatherCenter, weather-forecast, weather">
117				<meta name="news_keywords" content="WRAL WeatherCenter, weather-forecast, weather">
118			
119			
120				<meta property="article:published_time" content="2025-11-11T15:11:22Z">
121			
122			
123				<meta property="article:modified_time" content="2026-10-01T01:34:19Z">
124			
125			
126				<meta property="article:author" content="WRAL Severe Weather Center">
127				<meta name="author" content="WRAL Severe Weather Center">
128			
129			
130				
131					<meta property="article:tag" content="WRAL WeatherCenter">
132				
133					<meta property="article:tag" content="weather-forecast">
134				
135					<meta property="article:tag" content="weather">
136				
137			
138			
139				
139<script async src="https://imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
139
140				
140<script defer src="https://video-player.cdn.wral.com/v1.0/wralvideo.js"></script>
140
141				
141<script>
142					window.addEventListener('DOMContentLoaded', () => {
143						const players = document.querySelectorAll('video.wral-video');
144						if (!players.length) {
145							return;
146						}
147						const removeHeroPreviewOverlays = () => {
148							document.querySelectorAll('.hero-preview-overlay').forEach((overlay) => {
149								overlay.remove();
150							});
151						};
152						const adUnitPath = document.querySelector('meta[name="ad-unit-path"]')?.content || '';
153						const buildAdTagUrl = () => {
154							const adUnitParams = new URLSearchParams();
155							adUnitParams.set('sz', '576x324');
156							adUnitParams.set('iu', `/6167/${adUnitPath}`);
157							adUnitParams.set('ciu-szs', (['300x250']).join(','));
158							adUnitParams.set('impl', 's');
159							adUnitParams.set('gdfp_req', '1');
160							adUnitParams.set('env', 'vp');
161							adUnitParams.set('output', 'xml_vast3');
162							adUnitParams.set('unviewed_position_start', '1');
163							adUnitParams.set('correlator', `${Date.now()}`);
164							adUnitParams.set('url', window.location.href);
165							adUnitParams.set('description_url', window.location.href);
166							adUnitParams.set('plcmt', 1);
167							adUnitParams.set('vpmute', 1);
168							return `https://pubads.g.doubleclick.net/gampad/ads?${adUnitParams.toString()}`;
169						};
170						players.forEach((videoElement) => {
171							videoElement.getAttributeNames().forEach((name) => {
172								// Keep data-title -- the wralvideo player reads it to render
173								// the overlay headline (DEV-1127). Still drop the legacy
174								// data-video-* attributes from the iOS playback fix.
175								if (name.startsWith('data-video-')) {
176									videoElement.removeAttribute(name);
177								}
178							});
179							const player = wralvideo(videoElement, { adTagUrl: buildAdTagUrl() });
180							player.one('play', () => {
181								// get all hero-preview-overlay classes and remove them
182								removeHeroPreviewOverlays();
183								window.dataLayer = window.dataLayer || [];
184								window.dataLayer.push({
185									event: 'GAEvent',
186									eventAction: 'contentStart',
187									eventCategory: 'video',
188									eventLabel: window.document.title,
189									eventValue: 'HTML Video',
190									id: window.location.href, // current url
191								});
192							});
193						});
194					});
195				</script>
195
196			
197		
198
199		
199<script type="module" src="https://web-components.cdn.wral.com/weather/icon/v0/component.es.js"></script>
199
200		
200<script type="module" async src="https://web-components.cdn.wral.com/core/v0.15/components.es.js"></script>
200
201
202		
203			
204			
205		
206
207		
208			
209			
210		
211
212		
213			
214			
215				<!-- JSON-LD Structured Data for an Article  -->
216				
216<script type="application/ld+json">
217					{"@context":"https://schema.org","@type":"NewsArticle","isAccessibleForFree":true,"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.wral.com/weather/forecast-raleigh-durham-fayetteville/"},"headline":"The return to summer heat is brief","description":"Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.","image":"https://images.wral.com/7f6600f4-310d-4d23-a516-046b73deee02","datePublished":"2025-11-11T15:11:22+00:00","dateModified":"2026-10-01T01:34:19+00:00","publisher":{"@type":"NewsMediaOrganization","name":"WRAL","url":"https://www.wral.com/","logo":{"@type":"ImageObject","url":"https://images.wral.com/4687bfb9-1153-4ec6-b63e-01c2ae696033?w=1200&h=630","width":1200,"height":630}},"author":{"@type":"Person","name":"WRAL Severe Weather Center"}}
218				</script>
218
219			
220		
221
222		<!-- JSON-LD for the hero VideoObject -->
223		
224  		
225    		
225<script type="application/ld+json">
226      		{"@context":"https://schema.org/","@type":"VideoObject","name":"The return to summer heat is brief","description":"Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.","thumbnailUrl":"https://images.wral.com/7f6600f4-310d-4d23-a516-046b73deee02?w=640&height=360","uploadDate":"2025-11-11T15:11:22+00:00","isLiveBroadcast":false,"contentUrl":"https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8","embedUrl":"https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8"}
227    		</script>
227
228  		
229		
230
231		
231<script type="application/ld+json">
232			{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://wral.com/"},{"@type":"ListItem","position":2,"name":"Weather","item":"https://wral.com/weather"},{"@type":"ListItem","position":3,"name":"Forecast raleigh durham fayetteville","item":"https://wral.com/weather/forecast-raleigh-durham-fayetteville"}]}
233		</script>
233
234
235		
236			
237				
237<script type="text/javascript">
238					window._taboola = window._taboola || [];
239					_taboola.push({article:'auto'});
240					!function (e, f, u, i) {
241						if (!document.getElementById(i)){
242							e.async = 1;
243							e.src = u;
244							e.id = i;
245							f.parentNode.insertBefore(e, f);
246						}
247					}(document.createElement('script'),
248					document.getElementsByTagName('script')[0],
249					'//cdn.taboola.com/libtrc/wral-wralnews/loader.js',
250					'tb_loader_script');
251					if(window.performance && typeof window.performance.mark == 'function')
252						{window.performance.mark('tbl_ic');}
253				</script>
253
254
255				
255<script defer src="//s.ntv.io/serve/load.js"></script>
255
256				
256<script defer src="https://ak.sail-horizon.com/spm/spm.v1.min.js"></script>
256
257				
257<script>Sailthru.init({ customerId: '1f6454efcec5f1022e7f7daf14bbbeb4' });</script>
257
258			
259		
260	<style>
261			.timestamp .timestamp-item:not(:first-child)::before {
262				content: "—";
263			}
264
265			.aspect-16x9 {
266				aspect-ratio: 16 / 9;
267			}
268
269			.article-body-video {
270				margin: 1rem 0;
271			}
272
273			.article-body-video .video-container {
274				position: relative;
275				padding-bottom: calc(100% * 9 / 16);
276				width: 100%;
277			}
278
279			.article-body-video .video-container > * {
280				max-width: 100%;
281				width: 100%;
282				height: 100%;
283				position: absolute;
284			}
285
286			.article-hero img {
287				background-color: var(--color-gray-2);
288				color: var(--color-gray-4);
289				font-family: var(--body-font-family);
290				text-shadow: 1px 1px 1px var(--color-white);
291				display: grid;
292				align-content: center;
293				justify-content: center;
294			}
295
296			figcaption,
297			.article-body .image-tool__caption,
298			.article-body media-caption {
299				color: var(--color-gray-4);
300				border-bottom: 0.0625rem solid var(--color-gray-2);
301				padding-bottom: 0.625rem;
302				font-size: 0.8125rem;
303				display: block;
304				font-family: sans-serif;
305				margin: 1rem 0;
306			}
307
308			/* Rights line under an image. Emitted by plexer's content/image
309			   transform for body images, and by the hero figure below. Inline so
310			   it reads as part of the caption: "A caption (© WRAL)". */
311			.image-copyright {
312				white-space: nowrap;
313			}
314
315			.ai-generation-notice {
316				color: var(--color-gray-4);
317				font-style: italic;
318				margin-bottom: 0.5rem;
319			}
320
321			.house-promo {
322				display: flex;
323				width: 300px;
324				min-height: 158px;
325				border-width: .1875rem;
326				--tw-border-opacity: 1;
327				border-color: rgb(231 229 228/var(--tw-border-opacity));
328				padding: .625rem;
329				border-style: solid;
330				box-sizing: border-box;
331				margin: auto;
332			}
333
334			.house-promo:empty {
335
336				border: none;
337			}
338
339			.font-resize-container {
340				margin-left: 0;
341				display: flex;
342				flex-direction: row;
343				gap: .5rem;
344				margin-right: auto;
345				margin-top: 5px;
346				min-height: 37px;
347				align-items: center;
348			}
349
350			.article-tools-container {
351				display: flex;
352				align-items: anchor-center;
353			}
354
355			.small-font p {
356				font-size: 1.125rem;
357			}
358
359			.medium-font p {
360				font-size: 1.5rem;
361			}
362
363			.large-font p {
364				font-size: 1.75rem;
365			}
366			.more-on-this {
367				margin: 0px auto;
368				padding: 0px 1rem;
369			}
370
371			.more-on-this > h3 {
372				margin: 0px 0px 1rem;
373			}
374
375			.more-on-this > .more-on-this-item {
376				align-content: flex-start;
377				align-items: flex-start;
378				flex-flow: row nowrap;
379				border-bottom: 0.0625rem solid #e7e5e4;
380				padding: 0.625rem 0 0.75rem;
381			}
382
383			.related-collection > .more-on-this-item {
384				padding: 0.625rem 0 0.75rem;
385			}
386
387			.more-on-this-item article-asset {
388				display: block;
389			}
390
391			.opscoad-OOP_Adhesion {
392				display: block;
393				width: 100%;
394				min-height: 50px;
395			}
396
397			@media (min-width: 768px) {
398				.opscoad-OOP_Adhesion {
399					min-height: 90px;
400				}
401			}
402
403			.opscoad-OOP_Adhesion iframe,
404			.opscoad-OOP_Adhesion img {
405				width: 100%;
406				height: 100%;
407				object-fit: contain;
408			}
409		</style>
410
411		<!-- Admiral Measure Script -->
412		
412<script type="text/javascript">
413			!(function(Y, _name) {
414				Y[_name] = Y[_name] || function D() { (D.q = D.q || []).push(arguments) };
415				Y[_name].v = Y[_name].v || 2;
416				Y[_name].s = "1";
417			})(window, "admiral");
418			!(function(Y, D, A, U) {
419				A = Y.createElement(D);
420				Y = Y.getElementsByTagName(D)[0];
421				A.async = 1;
422				A.src = "https://websitesdude.com/files/l1mg4m_15klgw-prod.js";
423				(U = 0) && U(A);
424				Y.parentNode.insertBefore(A, Y);
425			})(document, "script");
426		</script>
426
427		
427<script type="text/javascript">
428			!(function(Y, D, A, U, M) {
429				function s(U, M) {
430					try {
431						s = Y.localStorage;
432						(U = JSON.parse(s.getItem(A)).lgk || []) &&
433							(M = Y[D].pubads()) &&
434							U.forEach(function(Y) {
435								Y && Y[0] && M.setTargeting(Y[0], Y[1] || "");
436							});
437					} catch(N) {}
438					var s;
439				}
440				try {
441					(M = Y[D] = Y[D] || {}).cmd = M.cmd || [];
442					typeof M.pubads === U ? s() :
443						typeof M.cmd.unshift === U ? M.cmd.unshift(s) : M.cmd.push(s);
444				} catch(N) {}
445			})(window, "googletag", "_a10Q1zA" + "wNjNeCQzk0MjBD" + "MMDU9OD4YwN0NFMUMtMQ", "function");
446		</script>
446
447	</head>
448
449	<body>
450		<svg xmlns="http://www.w3.org/2000/svg" style="position:absolute;width:0;height:0;overflow:hidden" aria-hidden="true">
451
452			<symbol id="i-text-height" viewBox="0 0 576 512">
453				<path d="M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z"></path>
454			</symbol>
455		</svg>
456		<wral-header style="position: sticky; top: 0; z-index: 99999;"></wral-header>
457		<wral-alerts-bar id="alerts"></wral-alerts-bar>
458		<main>
459			<article class="content-wrapper article">
460			<section class="article-header">
461				<studio-breadcrumbs style="min-height: 25px" metadata="{&#x22;path&#x22;:&#x22;/weather/forecast-raleigh-durham-fayetteville/&#x22;,&#x22;site&#x22;:&#x22;wral.com&#x22;}">
462				</studio-breadcrumbs>
463				<h1>The return to summer heat is brief</h1>
464				
465					<div class="article-abstract">Highs climb into the upper 80s to lower 90s as we approach the weekend. A cold front on the way brings us back to fall-like weather over the weekend.</div>
466				
467				<div class="timestamp">
468					
469						<span class="timestamp-item">
470							Posted
471							<formatted-timestamp iso-date="2025-11-11T15:11:22.872Z">
472								11/11/2025, 3:11:22 PM
473							</formatted-timestamp>
474						</span>
475					
476					
477						<span class="timestamp-item">
478							Updated
479							<formatted-timestamp iso-date="2026-10-01T01:34:19.303Z">
480								10/1/2026, 1:34:19 AM
481							</formatted-timestamp>
482						</span>
483					
484				</div>
485			</section>
486
487			<section class="article-main">
488				
489					<div class="tags">
490						<ul>
491							<li>Related</li>
492							<!-- DEV-537 · Crawlers need the tag links in the server HTML, and
493							     <tag-item> only builds its <a> inside a shadow root after a
494							     client-side fetch. When the embedded tag data carries a clean
495							     href, render a plain light-DOM anchor instead. That data is a
496							     snapshot from when the story was tagged, so a tag can lack an
497							     href even though a page exists now; those keep <tag-item> and
498							     resolve in the browser as before. An href with a query string
499							     is api-tag's /tags/?tag= catchall, not a tag page: component
500							     path too. -->
501							
502								
503								
504									<li><tag-item value="wral-weathercenter">
505											WRAL WeatherCenter
506										</tag-item></li>
507								
508							
509								
510								
511									<li><tag-item value="weather-forecast">
512											weather-forecast
513										</tag-item></li>
514								
515							
516								
517								
518									<li><tag-item value="weather">
519											weather
520										</tag-item></li>
521								
522							
523						</ul>
524					</div>
525				
526				<div class="article-meta">
527					
528						<figure class="article-hero">
529							
530								<div class="video-container">
531									<!--
532										DEV-1239 · The rights holder rides the player's own
533										title overlay (wralvideo renders data-title before play
534										and on pause) instead of a second template overlay
535										stacked on top of it. Same shape as images: "A title
536										(© WRAL)", or "© WRAL" alone. NOTE: no // comments
537										inside attribute expressions — attribute newlines are
538										collapsed, so a line comment swallows the expression.
539									-->
540									<video id="hero-video" class="wral-video" controls data-title="WRAL WeatherCenter Forecast" poster="https://images.wral.com/7f6600f4-310d-4d23-a516-046b73deee02?w=1200&#x26;h=675&#x26;height=675" width="1920" height="1080" style="width: 100%;">
541										
542											<source src="https://media-hls.wral.com/vodhttporigins3/_definst_/smil:amazons3/api-vod-prod-renditions/1af4b231-ab36-5680-b8a4-a2d2d7e772ac-9d119a31fa90/efe5fed4-9346-48e8-b33c-d29b64e08c8c/playlist.smil/playlist.m3u8" type="application/x-mpegURL">
543										
544										
545									</video>
546									
547									<!--
548										DEV-1239 · The hero video's copyright renders in the
549										player's own data-title overlay (see the <video> tag
550										above); this template overlay is for the editorial
551										caption only, so the two never stack.
552									-->
553									
554								</div>
555								<style>
556									.article-hero .video-container {
557										position: relative;
558										padding-bottom: calc(100% * 9 / 16);
559										width: 100%;
560										position: relative;
561									}
562
563									.article-hero .video-container>* {
564										max-width: 100%;
565										width: 100%;
566										height: 100%;
567										position: absolute;
568									}
569
570									.article-hero .caption-overlay {
571										position: absolute;
572										bottom: 0%;
573										background-color: rgba(0, 0, 0, 0.75);
574										display: flex;
575										color: var(--color-white);
576										justify-content: space-around;
577										align-items: center;
578										zindex: 9996;
579										width: 100%;
580										height: 20%;
581										font-size: 1.125rem;
582									}
583
584									.article-hero .live-overlay {
585										position: absolute;
586										bottom: 2%;
587										left: 1%;
588										background-color: var(--color-red);
589										display: flex;
590										color: var(--color-white);
591										justify-content: space-around;
592										display: flex;
593										align-items: center;
594										z-index: 9997;
595										width: 90px;
596										height: 18px;
597										padding: 6px;
598										font-size: 12px;
599										text-transform: uppercase;
600									}
601								</style>
602							
603
604							
605
606							
607						</figure>
608					
609
610					
611						<div class="article-byline">
612							By WRAL Severe Weather Center
613						</div>
614					
615				</div>
616
617				<div class="article-body">
618					<div class="article-tools-container">
619						<div id="font-resize" class="font-resize-container">
620							<button id="small-font-button" aria-label="Small font size" style="border:none;background:0 0">
621								<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa small-buttom-font-svg" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:19.13px;width:17px">
622									<use href="#i-text-height"></use>
623								</svg>
624							</button>
625							<button id="medium-font-button" aria-label="Medium font size" style="border:none;background:0 0">
626								<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:27px;width:21px">
627									<use href="#i-text-height"></use>
628								</svg>
629							</button>
630							<button id="large-font-button" aria-label="Large font size" style="border:none;background:0 0">
631								<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="text-height" class="fa-text-height fa-w-18 svg-inline--fa" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="height:31.5px;width:28px">
632									<use href="#i-text-height"></use>
633								</svg>
634							</button>
635							
635<script>
636								const body = document.getElementsByClassName("article-body")[0],
637									smallFontButton = document.getElementById("small-font-button"),
638									mediumFontButton = document.getElementById("medium-font-button"),
639									largeFontButton = document.getElementById("large-font-button");
640
641								smallFontButton.addEventListener("click", t => {
642									body.classList.add("small-font"),
643									body.classList.remove("medium-font"),
644									body.classList.remove("large-font")
645								}),
646								mediumFontButton.addEventListener("click", t => {
647									body.classList.remove("small-font"),
648									body.classList.add("medium-font"),
649									body.classList.remove("large-font")
650								}),
651								largeFontButton.addEventListener("click", t => {
652									body.classList.remove("small-font"),
653										body.classList.remove("medium-font"),
654										body.classList.add("large-font")
655								})
656							</script>
656
657						</div>
658						<wral-bookmark-button baseurl="https://api.wral.com/user-facts/v1/"></wral-bookmark-button>
659					</div>
660
661						
662							
663							
664							
665							<p>The summer heat is back and sticks around through Friday.</p>
666							
667						
668							
669							
670							
671						
672					
673							
674							
675							
676							<p><b>• Wednesday:</b> Mainly sunny and warm. Breezy too. Highs in the mid to upper 80s. </p>
677							
678						
679							
680								<div class="exco-wrapper" style="aspect-ratio: 16/9;">
681									<p>Other WRAL Top Stories</p>
682									<div class="exco-player" style="width: inherit;" id="d8af3f9c-ad37-4890-8ed5-bb0ce702acdf"></div>
683								</div>
684							
685							
686							
687						
688					
689							
690							
691							
692							<p><b>• Thursday: </b>Mostly sunny with near-record highs in the upper 80s. </p>
693							
694						
695							
696							
697							
698						
699					
700							
701							
702							
703							<p><b>• Friday:</b> Mostly sunny and hot. Highs in the lower 90s. </p>
704							
705						
706							
707							
708							
709						
710					
711							
712							
713							
714							<p><a rel="noopener" target="_new" href="https://www.wral.com/download-wral-apps/">Download the WRAL Weather App</a> | <a rel="noopener" target="_new" href="https://www.wral.com/video/live-dualdoppler5000-radar/">Track rain with the DualDoppler5000</a></p>
715							
716						
717							
718							
719							
720						
721					
722							
723							
724							
725							<h2>Temperatures approach record levels</h2>
726							
727						
728							
729							
730							
731						
732					
733							
734							
735							
736							<p>A southwest breeze boosts temperatures as we approach the weekend. The summer weather is brief. Highs feel more like fall by the weekend. It will REALLY feel like fall next week with highs in the upper 60s Tuesday and Wednesday.</p>
737							
738						
739							
740							
741							
742						
743					
744							
745							
746							
747							<picture><img src="https://images.wral.com/8a1255c8-bea5-4c72-8459-a83167fd56cf" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
748							
749						
750							
751							
752								<div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville">
753								</div>
754								<div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
755							
756							
757						
758					
759							
760							
761							
762							<p>High temperatures will climb slightly each day. Highs peak in the 90s on Friday. We'll be within a few degrees of record highs both Thursday and Friday.</p>
763							
764						
765							
766							
767							
768						
769					
770							
771							
772							
773							<picture><img src="https://images.wral.com/34a03e42-2f5a-4fb7-b1f8-247f14fda833" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
774							
775						
776							
777							
778							
779						
780					
781							
782							
783							
784							<p><a href="https://www.wral.com/video/wral-news-plus/20364185/" target="_blank">Get the latest forecast on WRAL News+</a><b> </b>and <a href="https://www.wral.com/download-wral-apps/5787234/" target="_blank">download the WRAL Weather app</a><b> </b>to get notifications when conditions change.  </p>
785							
786						
787							
788							
789							
790						
791					
792							
793							
794							
795							<p>Ironically enough, those are the first two days of October. It just won't feel like it.<br>It's a warm afternoon Thursday. Highs climb into the mid 80s by noon.</p>
796							
797						
798							
799							
800							
801						
802					
803							
804							
805							
806							<picture><img src="https://images.wral.com/d0a0fb41-be6a-4533-af24-bc406dcd6ae4" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
807							
808						
809							
810							
811							
812						
813					
814							
815							
816							
817							<p>Football Friday is looking good. It will be warm, but rain chances remain quite low. We can't rule out a spotty shower or two in northern counties late Friday evening.</p>
818							
819						
820							
821							
822								<div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville">
823								</div>
824								<div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
825							
826							
827						
828					
829							
830							
831							
832							<picture>
832<img src="https://images.wral.com/40bad941-4743-453e-8963-060a17a919a4" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
833							
834						
835							
836							
837							
838						
839					
840							
841							
842							
843							<h2>The next weather maker brings a rain chance</h2>
844							
845						
846							
847							
848							
849						
850					
851							
852							
853							
854							<p>The next weather maker is a cold front that arrives over the weekend. Storms become possible late in the day on Saturday and it's not as hot. Highs stay in the low 80s. We have a better chance for rain Sunday with highs near 70.</p>
855							
856						
857							
858							
859							
860								<div id="nativo-0001"></div>
861								<div id="nativo-0002"></div>
862								<div id="nativo-0003"></div>
863							
864						
865					
866							
867							
868							
869							<picture><img src="https://images.wral.com/8ddc3c49-3804-42de-87fa-45f4f34f06da" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
870							
871						
872							
873							
874							
875						
876					
877							
878							
879							
880							<p>We desperately need rain for the water supply at some area lakes. </p>
881							
882						
883							
884							
885							
886						
887					
888							
889							
890							
891							<p>Once the weekend front passes, we'll feel the fall vibes through much of next week. Cool mornings, sunshine and comfortably warm afternoons will take us through at least next Thursday. </p>
892							
893						
894							
895							
896								<div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville">
897								</div>
898								<div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
899							
900							
901						
902					
903							
904							
905							
906							<picture><img src="https://images.wral.com/4d1e8536-2d68-4592-82bd-985edc0af081" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
907							
908						
909							
910							
911							
912						
913					
914							
915							
916							
917							<h2>Severe drought creeps back in</h2>
918							
919						
920							
921							
922							
923						
924					
925							
926							
927							
928							<p>The latest drought report released on Sept. 24 added more areas around Wake county to the severe drought. The extreme drought was also expanded to parts of Greene and Lenoir counties.</p>
929							
930						
931							
932							
933							
934						
935					
936							
937							
938							
939							<p>We've gotten some rain, but it's not been enough. We've seen less than half of the normal rainfall at RDU in September.</p>
940							
941						
942							
943							
944							
945						
946					
947							
948							
949							
950							<picture><img src="https://images.wral.com/aa9cfa48-e7a2-4487-a980-c3ebc1803adc" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
951							
952						
953							
954							
955							
956						
957					
958							
959							
960							
961							<p>We likely have not seen any improvements due to lower reservoir levels. Kerr Lake is over eleven feet below full pool, and Falls Lake is almost five feet below full pool.</p>
962							
963						
964							
965							
966								<div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville">
967								</div>
968								<div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
969							
970							
971						
972					
973							
974							
975							
976							<picture><img src="https://images.wral.com/9b7b5c77-2fe0-4f6c-b0d6-33a36891da40" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
977							
978						
979							
980							
981							
982						
983					
984							
985							
986							
987							<h2>What's active in the tropics?</h2>
988							
989						
990							
991							
992							
993						
994					
995							
996							
997							
998							<p>Hanna weakened to a Post-Tropical Cyclone Wednesday.  It will stay out to sea.</p>
999							
1000						
1001							
1002							
1003							
1004						
1005					
1006							
1007							
1008							
1009							<picture><img src="https://images.wral.com/67ba5585-50f1-450d-b8f6-4583a5747d10" alt=""><figcaption><span class="image-copyright">© WRAL</span></figcaption></picture>
1010							
1011						
1012							
1013							
1014							
1015						
1016					
1017							
1018							
1019							
1020							<h2>7-day forecast for central North Carolina.</h2>
1021							
1022						
1023							
1024							
1025							
1026						
1027					
1028							
1029							
1030							
1031							<ul><li><b>Thursday</b>: Mostly sunny with highs in the upper 80s.<ul></ul></li><li><b>Friday</b>: Mostly sunny with highs in the low 90s.<ul></ul></li><li><b>Saturday:</b> Partly cloudy with late-day storms. Highs in the low 80s.<ul></ul></li><li><b>Sunday:</b> Showers are likely with highs near 70.<ul></ul></li><li><b>Monday</b>: Partly cloudy with highs in the low 70s.<ul></ul></li><li><b>Tuesday</b>: Mostly sunny with highs in the upper 60s.<ul></ul></li><li><b>Wednesday</b>: Sunny with highs in the upper 60s.<ul></ul></li></ul>
1032							
1033						
1034							
1035							
1036								<div class="opscoad-Mobile_In_Content" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville">
1037								</div>
1038								<div class="opscoad-article_in_read" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1039							
1040							
1041						
1042					
1043					
1044				</div>
1045
1046
1047				<div class="article-footer">
1048					
1049						<div class="more-on-this section-wrapper">
1050							<h3 class="section-title">More on this</h3>
1051							
1052								<div class="more-on-this-item">
1053									<article-asset title="NC experts discuss drought effects as it worsens across the state" href="https://www.wral.com/video/nc-expert
1053s-discuss-drought-effects-as-it-worsens-across-the-state/22351026/" align-thumbnail="right" thumbnail-stack="">
1054										
1055											<picture slot="thumbnail">
1056												<img class="aspect-16x9" src="https://images.wral.com/asset/weather/2026/04/23/22351028/Drought_Monitor_State_423_1-DMID1-6ar86dvs0-1920x1080.jpg?w=360&#x26;h=200&#x26;f=webp" alt="Asset Thumbnail" width="360" height="200">
1057											</picture>
1058										
1059										
1060										<div slot="excerpt">As drought continues to degrade across the state, a panel of experts curated by NC State will discuss more about this event and its impacts.
1061</div>
1062									</article-asset>
1063								</div>
1064							
1065								<div class="more-on-this-item">
1066									<article-asset title="Ask the Meteorologist: What goes into the creation of the drought monitor?" href="https://www.wral.com/weather/ask-the-meteorologist-creating-drought-monitor-april-2026/" align-thumbnail="right" thumbnail-stack="">
1067										
1068											<picture slot="thumbnail">
1069												<img class="aspect-16x9" src="https://images.wral.com/c1e936d0-1d88-4e7a-9ac8-8128716e6721?w=360&#x26;h=200&#x26;f=webp" alt="Asset Thumbnail" width="360" height="200">
1070											</picture>
1071										
1072										
1073										<div slot="excerpt">When we think about the worsening drought across our area, we typically think about the fact that we have not had much rain. It's not just precipitation, though, that determines if we are in a drought. Let's dive into how the drought monitor is created.</div>
1074									</article-asset>
1075								</div>
1076							
1077								<div class="more-on-this-item">
1078									<article-asset title="Ask the Meteorologist: What would it take to end ongoing drought?" href="https://www.wral.com/video/ask-the-meteorologist-what-would-it-take-to-end-ongoing-drought/22350562/" align-thumbnail="right" thumbnail-stack="">
1079										
1080											<picture slot="thumbnail">
1081												<img class="aspect-16x9" src="https://images.wral.com/asset/weather/2026/04/22/22350563/ericmillerdrought-DMID1-6aqrzr53v-950x713.jpg?w=360&#x26;h=200&#x26;f=webp" alt="Asset Thumbnail" width="360" height="200">
1082											</picture>
1083										
1084										
1085										<div slot="excerpt">At this point, it would either take a tropical system or something called an "upper level low" to help us get rid of the drought.
1086</div>
1087									</article-asset>
1088								</div>
1089							
1090						</div>
1091					
1092
1093					
1094
1095						
1096								<div class="section-wrapper" id="scroll-wrapper">
1097									<h3 class="section-title">Related</h3>
1098									<lazy-wrapper id="related-lazy-wrapper" tag="search-list" props="{
1099											&#x22;image-width&#x22;: &#x22;640&#x22;,
1100											&#x22;image-height&#x22;: &#x22;360&#x22;
1101										}" data-related-primary="{&#x22;paginate&#x22;:false,&#x22;limit&#x22;:3,&#x22;query&#x22;:&#x22;tags.name: \&#x22;drought\&#x22;&#x22;}" data-related-searches="[]">
1102									<div slot="placeholder" aria-hidden="true"></div>
1103								</lazy-wrapper>
1104							</div>
1105						
1106
1107					
1108					
1109					
1110						<div class="article-copyright">
1111							© 2026  Copyright Capitol Broadcasting Company
1112						</div>
1113					
1114				</div>
1115
1116				
1117					<!-- Taboola -->
1118					<div class="section-wrapper">
1119						<div id="taboola-below-article-thumbnails" style="min-height: 1580px;"></div>
1120					</div>
1121					
1121<script type="text/javascript">
1122						window._taboola = window._taboola || [];
1123						_taboola.push({
1124							mode: 'alternating-thumbnails-a',
1125							container: 'taboola-below-article-thumbnails',
1126							placement: 'Below Article Thumbnails',
1127							target_type: 'mix'
1128						});
1129					</script>
1129
1130				
1131			</section>
1132
1133			<section class="article-sidebar">
1134				<div class="sticky-container" style="top: 120px;">
1135					<div class="sticky">
1136						<div class="opscoad-Desktop_Right_Rail_1" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1137						<div id="sidebar-promo" class="house-promo"></div>
1138						
1138<script>
1139							!function () {
1140								const promoUrl = 'https://www-promos.wral.com/content/ads/fetch_promos.php?asset_id=4&ad_position=standard_promo_1';
1141								const getPromos = async () => {
1142									const res = await fetch(promoUrl);
1143									const json = await res.json();
1144									if (res.ok) {
1145										const housePromo = document.getElementById("sidebar-promo");
1146										housePromo.innerHTML = json.markup;
1147										const innerLink = housePromo.getElementsByClassName("h-link")[0];
1148										innerLink.style = "margin: auto; text-decoration: none;"
1149										innerLink.getElementsByClassName("flag-media")[0].style = "display: flex;"
1150										innerLink.querySelector(".flag-media img").style = "margin: auto;"
1151										innerLink.querySelectorAll(".flag-body > *").forEach(elt => {
1152											elt.style = "margin: auto; text-align: center; font-size: 1rem; font-weight: 700; color: black;";
1153										})
1154									} else {
1155										throw new Error(text);
1156									}
1157								};
1158								getPromos();
1159							}();
1160						</script>
1160
1161
1162						<div id="bc_recommend"></div>
1163						<div class="opscoad-Desktop_Right_Rail_2" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1164					</div>
1165				</div>
1166			</section>
1167			</article>
1168		</main>
1169				
1169<script>
1170					(() => {
1171							if (typeof window === 'undefined') return;
1172
1173							const lazyWrapperId = 'related-lazy-wrapper';
1174							let initialized = false;
1175
1176						const normalize = (item) => {
1177							if (!item) return null;
1178							const href = item.uri || item.href || item.url || item.path || '';
1179							const title = item.title || item.headline || item.name || '';
1180							const description = item.description || item.summary || item.deck || '';
1181							const image =
1182								item.image
1183								|| item.image_url
1184								|| item.primaryImage
1185								|| item.teaseImage
1186								|| (Array.isArray(item.images) && item.images[0] && (item.images[0].src || item.images[0]))
1187								|| '';
1188							if (!href || !title) return null;
1189							return { href, title, description, image };
1190						};
1191
1192						const parseConfigs = (lazyWrapper) => {
1193							let primary = null;
1194							let searches = [];
1195							try {
1196								if (lazyWrapper.dataset.relatedPrimary) {
1197									primary = JSON.parse(lazyWrapper.dataset.relatedPrimary);
1198								}
1199							} catch (err) {
1200							}
1201							try {
1202								if (lazyWrapper.dataset.relatedSearches) {
1203									searches = JSON.parse(lazyWrapper.dataset.relatedSearches);
1204								}
1205							} catch (err) {
1206							}
1207							return { primary, searches };
1208						};
1209
1210						const ensureSearchListAttributes = (searchList) => {
1211							if (!searchList.hasAttribute('image-width')) {
1212								searchList.setAttribute('image-width', '640');
1213							}
1214							if (!searchList.hasAttribute('image-height')) {
1215								searchList.setAttribute('image-height', '360');
1216							}
1217						};
1218
1219							const initSearchList = (lazyWrapper, searchList) => {
1220								if (!searchList || initialized) return;
1221								initialized = true;
1222
1223							const { primary, searches } = parseConfigs(lazyWrapper);
1224
1225							const searchConfig = (primary && primary.query)
1226								? primary
1227								: (Array.isArray(searches) ? searches.find(search => search?.query) : null);
1228							if (!searchConfig) {
1229								return;
1230							}
1231
1232							ensureSearchListAttributes(searchList);
1233
1234							const apiBase = 'https://api.wral.com/related/v1/recommendations/search';
1235							const limit = Number.isFinite(+searchConfig.limit) ? +searchConfig.limit : 3;
1236							const paginate = searchConfig.paginate === true;
1237							const baseParams = {
1238								query: searchConfig.query,
1239								limit,
1240								lang: searchConfig.lang || 'en',
1241								sort: searchConfig.sort || 'updated',
1242								paginate,
1243							};
1244
1245							const sentinel = document.createElement('div');
1246							sentinel.setAttribute('aria-hidden', 'true');
1247							sentinel.style.cssText = 'height: 1px; width: 100%;';
1248							searchList.after(sentinel);
1249
1250							let accumulated = [];
1251							let nextToken = null;
1252							let loading = false;
1253							let reachedEnd = false;
1254
1255							const loadPage = async (token = null) => {
1256								if (loading || reachedEnd) return;
1257								loading = true;
1258								searchList.loading = true;
1259
1260								const params = new URLSearchParams();
1261								params.set('query', baseParams.query);
1262								params.set('limit', `${baseParams.limit}`);
1263								params.set('lang', baseParams.lang);
1264								params.set('sort', baseParams.sort);
1265								if (baseParams.paginate) params.set('paginate', 'true');
1266								if (token) params.set('next', token);
1267								const url = `${apiBase}?${params.toString()}`;
1268
1269								try {
1270									const res = await fetch(url);
1271									if (!res.ok) throw new Error(`status ${res.status}`);
1272									const data = await res.json();
1273									const pageItems = Array.isArray(data.items)
1274										? data.items
1275										: (Array.isArray(data.results) ? data.results : []);
1276									const currentUrl = window.location.href.replace(/\/$/, '');
1277									const normalized = pageItems.map(normalize).filter(Boolean)
1278										.filter(item => item.href.replace(/\/$/, '') !== currentUrl);
1279									accumulated.push(...normalized);
1280									searchList.items = accumulated.slice();
1281									nextToken = data.next || null;
1282									reachedEnd = !nextToken;
1283									searchList.error = '';
1284								} catch (err) {
1285									searchList.error = 'Unable to load results.';
1286									reachedEnd = true;
1287								} finally {
1288									loading = false;
1289									searchList.loading = false;
1290									if (!baseParams.paginate || reachedEnd) {
1291										observer?.disconnect();
1292									}
1293								}
1294							};
1295
1296							const observer = baseParams.paginate
1297								? new IntersectionObserver((entries) => {
1298									entries.forEach(entry => {
1299										if (entry.isIntersecting && !reachedEnd && !loading) {
1300											loadPage(nextToken);
1301										}
1302									});
1303								}, {
1304									// Use viewport as the root; shadow DOM + external roots can miss intersections.
1305									root: null,
1306									rootMargin: '200px 0px',
1307								})
1308								: null;
1309
1310							if (observer) {
1311								observer.observe(sentinel);
1312							}
1313
1314								loadPage();
1315							};
1316
1317							const observeSearchList = (lazyWrapper, shadowRoot) => {
1318								const existing = shadowRoot.querySelector('search-list');
1319								if (existing) {
1320									initSearchList(lazyWrapper, existing);
1321									return;
1322							}
1323							const mo = new MutationObserver(() => {
1324									const next = shadowRoot.querySelector('search-list');
1325									if (next) {
1326										mo.disconnect();
1327										initSearchList(lazyWrapper, next);
1328									}
1329								});
1330								mo.observe(shadowRoot, { childList: true, subtree: true });
1331							};
1332
1333							const waitForShadowRoot = (lazyWrapper, timeoutMs = 8000) => new Promise((resolve) => {
1334								const start = performance.now();
1335								const check = () => {
1336								if (lazyWrapper.shadowRoot) {
1337									resolve(lazyWrapper.shadowRoot);
1338									return;
1339								}
1340								if (performance.now() - start >= timeoutMs) {
1341									resolve(null);
1342									return;
1343								}
1344								requestAnimationFrame(check);
1345							};
1346							check();
1347						});
1348
1349							const attachWhenReady = async (lazyWrapper) => {
1350								if (initialized) return;
1351								const shadowRoot = await waitForShadowRoot(lazyWrapper);
1352								if (initialized) return;
1353								if (shadowRoot) {
1354									observeSearchList(lazyWrapper, shadowRoot);
1355								}
1356							};
1357
1358							const bootstrap = () => {
1359								const lazyWrapper = document.getElementById(lazyWrapperId);
1360								if (!lazyWrapper) {
1361									return;
1362								}
1363
1364								if (customElements.get('lazy-wrapper')) {
1365									attachWhenReady(lazyWrapper);
1366								} else {
1367									customElements.whenDefined('lazy-wrapper')
1368										.then(() => attachWhenReady(lazyWrapper));
1369								}
1370							};
1371
1372						if (document.readyState === 'complete' || document.readyState === 'interactive') {
1373							bootstrap();
1374						} else {
1375							document.addEventListener('DOMContentLoaded', bootstrap, { once: true });
1376						}
1377					})();
1378				</script>
1378
1379
1380		<!-- DEV-1087: bottom footer Desktop Leaderboard removed (improves footer viewability) -->
1381
1382		<div class="opscoad-OOP_Leaderboard" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1383		<div class="opscoad-OOP_Pushdown" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1384		
1385			<div class="opscoad-OOP_Adhesion" data-unit="wral-v4/weather/forecast-raleigh-durham-fayetteville/"></div>
1386		
1387
1388		
1388<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-TV2CD7D" onload="window.dataLayer = window.dataLayer || []; window.dataLayer.push({ &#x27;gtm.start&#x27; : new Date().getTime(), event : &#x27;gtm.js&#x27; });">
1389		</script>
1389
1390
1391		
1391<script>
1392			(() => {
1393				if (typeof window === 'undefined') return;
1394
1395				const captionStyleText = `
1396					figcaption,
1397					.image-tool__caption,
1398					media-caption {
1399						color: var(--color-gray-4);
1400						border-bottom: 0.0625rem solid var(--color-gray-2);
1401						padding-bottom: 0.625rem;
1402						font-size: 0.8125rem;
1403						display: block;
1404						font-family: sans-serif;
1405						margin: 1rem 0;
1406					}
1407				`;
1408				const captionSelectors = [
1409					'.image-tool__caption',
1410					'.image-caption',
1411					'media-caption',
1412				].join(',');
1413
1414				const convertToFigcaption = element => {
1415					if (!element || element.tagName?.toLowerCase() === 'figcaption') return;
1416					const figcaption = document.createElement('figcaption');
1417					for (const { name, value } of Array.from(element.attributes)) {
1418						figcaption.setAttribute(name, value);
1419					}
1420					figcaption.innerHTML = element.innerHTML;
1421					element.replaceWith(figcaption);
1422				};
1423
1424				const normalizeCaptions = root => {
1425					if (!root || typeof root.querySelectorAll !== 'function') return;
1426					root.querySelectorAll(captionSelectors).forEach(convertToFigcaption);
1427				};
1428
1429				const ensureShadowCaptionStyles = root => {
1430					if (!root || !('host' in root)) return;
1431					if (root.querySelector('style[data-inline-caption-style]')) return;
1432					const style = document.createElement('style');
1433					style.setAttribute('data-inline-caption-style', 'true');
1434					style.textContent = captionStyleText;
1435					root.prepend(style);
1436				};
1437
1438				const observeCaptions = target => {
1439					if (!target || typeof MutationObserver === 'undefined') return;
1440					const observer = new MutationObserver(() => {
1441						normalizeCaptions(target);
1442					});
1443					observer.observe(target, { childList: true, subtree: true });
1444				};
1445
1446				const init = () => {
1447					document.querySelectorAll('content-block').forEach(block => {
1448						normalizeCaptions(block);
1449						observeCaptions(block);
1450
1451						if (!block.shadowRoot) return;
1452						ensureShadowCaptionStyles(block.shadowRoot);
1453						normalizeCaptions(block.shadowRoot);
1454						observeCaptions(block.shadowRoot);
1455					});
1456				};
1457
1458				if (document.readyState === 'loading') {
1459					document.addEventListener('DOMContentLoaded', init, { once: true });
1460				} else {
1461					init();
1462				}
1463			})();
1464		</script>
1464
1465
1466		
1466<script>
1467			/** DataLayer Events */
1468			window.dataLayer = window.dataLayer || [];
1469			window.dataLayer.push({
1470				'event': 'core-page-view',
1471				'currentPageUrl': window.location.href,
1472				'assetType': 'story',
1473				'template': 'wral-web.story',
1474				'articleTitle': window.document.title,
1475				'articleHeadline': document.querySelector('h1')?.textContent,
1476				'siteVersion': 5,
1477			});
1478		</script>
1478
1479
1480		
1480<script>
1481			(function (d, s, n) {
1482				var js, fjs = d.getElementsByTagName(s)[0];
1483				js = d.createElement(s);
1484				js.className = n;
1485				js.src = "//player.ex.co/player/d8af3f9c-ad37-4890-8ed5-bb0ce702acdf";
1486				fjs.parentNode.insertBefore(js, fjs);
1487			}(document, 'script', 'exco-player'));
1488		</script>
1488
1489
1490		
1490<script id="chartbeat">
1491			(function () {
1492				setTimeout(function () {
1493					var _sf_async_config = window._sf_async_config = (window._sf_async_config || {});
1494					_sf_async_config.uid = 20531;
1495					_sf_async_config.domain = 'wral.com';
1496					_sf_async_config.useCanonical = true;
1497					_sf_async_config.useCanonicalDomain = true;
1498					_sf_async_config.flickerControl = false;
1499					function loadChartbeat() {
1500						var e = document.createElement('script');
1501						var n = document.getElementsByTagName('script')[0];
1502						e.type = 'text/javascript';
1503						e.async = true;
1504						e.src = '//static.chartbeat.com/js/chartbeat.js';
1505						n.parentNode.insertBefore(e, n);
1506					}
1507					loadChartbeat();
1508				}, 100);
1509			})();
1510		</script>
1510
1511		
1511<script async id="chartbeat_mab" src="//static.chartbeat.com/js/chartbeat_mab.js"></script>
1511
1512
1513		<wral-footer></wral-footer>
1514		<my-wral-benefits-modal></my-wral-benefits-modal>
1515		
1515<script type="text/javascript">
1516			window._taboola = window._taboola || [];
1517			_taboola.push({flush: true});
1518		</script>
1518
1519	
1520
1521</body></html>

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