51³Ô¹ÏÍø

(a literal px value that does NOT // change when the primary row collapses). The collapsed bar then // simply overlays the content like any fixed header rather than // resizing the document on scroll. Non-toc-bar pages keep using the // live offsetHeight (their masthead height never changes on scroll). if (hasTocBar) { var fullMastheadHeight = parseFloat( getComputedStyle(document.body).getPropertyValue('--wdg-masthead-height') ); document.body.style.paddingTop = (fullMastheadHeight > 0 ? fullMastheadHeight : header.offsetHeight) + 'px'; } else { document.body.style.paddingTop = header.offsetHeight + 'px'; } } updateHeaderState(); // Attach the scroll listener for hero pages (transparent/solid toggle) and // for any page with the in-masthead submenu bar (so it still collapses to // the toc-bar on scroll even though it stays solid). if (isHero || hasTocBar) { window.addEventListener('scroll', updateHeaderState, { passive: true }); // Safety re-sync: a fast/programmatic jump to the top (browser scroll // restoration on back-nav, a "scroll to top" action, anchor jumps, // etc.) can land with coalesced scroll events so the final handler // run reflects a stale position, leaving the logo/transparency out of // sync with the resting scrollY. `scrollend` fires once the scroll has // settled, guaranteeing one final correct update. Harmlessly ignored // by browsers that don't support it. window.addEventListener('scrollend', updateHeaderState, { passive: true }); } window.addEventListener('resize', updateHeaderState); // Marquee + in-masthead TOC: sticky-toc.js dispatches this when the // active TOC item changes so we can flip into / out of the forced // is-solid state immediately on click rather than waiting for the // next scroll/resize. window.addEventListener('wdg:toc-section-change', updateHeaderState); var searchOpenClass = 'is-search-open'; var searchModal = document.getElementById('search-modal'); function openSearchModal() { if (typeof window._searchModalOpen === 'function') { window._searchModalOpen(); } document.querySelectorAll('.js-search-toggle').forEach(function(btn) { btn.classList.add(searchOpenClass); btn.setAttribute('aria-expanded', 'true'); }); } function closeSearchModal() { if (typeof window._searchModalClose === 'function') { window._searchModalClose(); } document.querySelectorAll('.js-search-toggle').forEach(function(btn) { btn.classList.remove(searchOpenClass); btn.setAttribute('aria-expanded', 'false'); }); } document.querySelectorAll('.js-search-toggle').forEach(function(btn) { btn.addEventListener('click', function(e) { e.preventDefault(); if (searchModal && searchModal.classList.contains('is-open')) { closeSearchModal(); } else { openSearchModal(); } }); }); var mobileSearchBtn = document.querySelector('.js-mobile-search-open'); if (mobileSearchBtn) { mobileSearchBtn.addEventListener('click', function(e) { e.preventDefault(); var mobileOverlay = document.getElementById('mobile-menu'); if (mobileOverlay) { mobileOverlay.setAttribute('aria-hidden', 'true'); mobileOverlay.classList.remove('is-open'); } openSearchModal(); }); } function updateAdminBarState() { var ab = document.getElementById('wpadminbar'); if (!ab) return; var rect = ab.getBoundingClientRect(); var hidden = rect.bottom <= 0; document.body.classList.toggle('adminbar-hidden', hidden); } updateAdminBarState(); window.addEventListener('scroll', updateAdminBarState, { passive: true }); window.addEventListener('resize', updateAdminBarState); })();

Economic Data and Growth

Consumer Confidence Improves as Outlook Brightens Despite a Softer Present View

Consumer confidence inched up 0.6 points in April to 92.8. Among its components, the Present Situation Index contracted while the Expectations Index improved as customers’ concerns regarding the present situation worsened and concerns about the future eased. The Present Situation Index, reflecting current business and labor market conditions, edged down 0.3 points to 123.8. Meanwhile, …

Texas Factory Output Rebounds as Production and Shipments Strengthen

In April, Texas factory activity expanded at a faster pace after weakening the prior month. The production index increased from 6.8 to 19.0, climbing well above the series average of 9.6. The new orders index stepped up 3.8 points to 9.9, while the capacity utilization index jumped 12.6 points to 19.8, both above the series …

Manufacturing PMI Climbs Amid Middle East Disruptions

The S&P Global Manufacturing PMI was 54.5 in April, up from the March reading of 52.3. New orders grew at the fastest pace in four years in April, but exports declined for the 11th consecutive month as tariffs and the conflict in the Middle East drove up costs and hindered foreign demand. Meanwhile, input and …

Fed Holds Rates Amid Rare Four-Way Dissent and Powell’s Final Presser

As anticipated, the Federal Open Market Committee maintained its interest rate target range at 3.50%–3.75% at its April meeting. On the other hand, one FOMC member—Stephen Miran—dissented from the action, preferring to lower the target range by 25 basis points. In a change to its previous statement, the FOMC noted that inflation remains elevated, in …

First-Quarter GDP Picks Up as Investment Leads Growth

Real GDP increased at an annual rate of 2.0% in the first quarter of 2026, up from a 0.5% rise in the fourth quarter but slightly below consensus expectations. The increase in GDP during the first quarter mostly reflected increases in investment, consumer spending on services, exports and government spending, which were partially offset by …

Flash Manufacturing PMI Hits a Four-Year High as Domestic Demand Strenghtens

The S&P Global Flash U.S. Manufacturing PMI increased from 52.3 to 54.0 in April, a 47-month high. This continues the trend of nine consecutive months of growth. Factory production and new order growth improved in April, with both experiencing their strongest expansion since 2022. Meanwhile, export orders declined after stagnating the prior month as a …

' + document.title + ''); // Mark stylesheet with id for callback printWindow.document.write( `` ); printWindow.document.write('

51³Ô¹ÏÍø

'); printWindow.document.write(postArea.innerHTML); printWindow.document.write( `